From 23fc7c84f6d1692518986af69fdadd9331890f73 Mon Sep 17 00:00:00 2001 From: iOS Date: Sun, 2 Oct 2022 22:30:23 +0200 Subject: [PATCH] sunday blues --- .obsidian/community-plugins.json | 3 +- .obsidian/graph.json | 2 +- .obsidian/plugins/buttons/main.js | 1481 ++-- .obsidian/plugins/buttons/manifest.json | 2 +- .../plugins/multi-column-markdown/main.js | 296 +- .../multi-column-markdown/manifest.json | 2 +- .../plugins/multi-column-markdown/styles.css | 3 + .../obsidian-activity-history/data.json | 14 +- .../plugins/obsidian-advanced-uri/main.js | 16 +- .../obsidian-advanced-uri/manifest.json | 2 +- .obsidian/plugins/obsidian-camera/main.js | 55 +- .../plugins/obsidian-camera/manifest.json | 2 +- .obsidian/plugins/obsidian-commits/data.json | 514 +- .../plugins/obsidian-dice-roller/main.js | 26 +- .../obsidian-dice-roller/manifest.json | 2 +- .obsidian/plugins/obsidian-kanban/main.js | 98 +- .../plugins/obsidian-kanban/manifest.json | 2 +- .obsidian/plugins/obsidian-kanban/styles.css | 2 +- .obsidian/plugins/obsidian-map-view/main.js | 6634 ++++++++++++----- .../plugins/obsidian-map-view/manifest.json | 2 +- .../obsidian-reminder-plugin/data.json | 48 +- .../plugins/obsidian-style-settings/main.js | 9 +- .../obsidian-style-settings/manifest.json | 2 +- .../plugins/obsidian-tasks-plugin/main.js | 39 +- .../obsidian-tasks-plugin/manifest.json | 2 +- .../plugins/obsidian-tasks-plugin/styles.css | 5 + .obsidian/plugins/podnotes/data.json | 25 +- .obsidian/plugins/simple-time-tracker/main.js | 274 + .../plugins/simple-time-tracker/manifest.json | 10 + .../plugins/simple-time-tracker/styles.css | 55 + .obsidian/workspace | 26 +- ....md => 2022-08-31 Toulouse - PSG (0-3).md} | 3 + .../2022-09-06 PSG - Juventus (2-1).md | 3 + ...> 2022-09-14 Maccabi Haifa - PSG (1-3).md} | 2 + 00.01 Admin/Calendars/2022-09-30.md | 6 +- .../2022-10-01 PSG - 0GC Nice (2-1).md | 13 + 00.01 Admin/Calendars/2022-10-01.md | 116 + 00.01 Admin/Calendars/2022-10-02.md | 115 + .../2022-10-16 Paris SG - Marseille.md | 13 + 00.01 Admin/Test Sheet 2.md | 21 + 00.01 Admin/URL table.md | 187 + ...s We Can Still Save From Climate Change.md | 4 +- 00.03 News/A Crime Beyond Belief.md | 4 +- ...ctor. Google Flagged Him as a Criminal..md | 2 - ... How It All Led to Kentucky Derby Glory.md | 2 +- ... supremacist killer - Los Angeles Times.md | 2 +- 00.03 News/A view from across the river.md | 4 +- 00.03 News/After Christendom.md | 2 - ...FBI, Three Amateurs Made a Breakthrough.md | 2 +- ...us The philosopher who resisted despair.md | 2 +- ...went viral unpacking the war in Ukraine.md | 3 +- .../American Graffiti New Beverly Cinema.md | 2 +- ...merican Racism and the Buffalo Shooting.md | 2 +- ...eal the liberating power of metaphysics.md | 2 +- ... Than the Old Masters — Evolve Artist.md | 2 +- ... Global Tennis Stars Among These Tweens.md | 4 +- ...ies to street gangs - Los Angeles Times.md | 2 +- ...ck in homes even when they want to move.md | 2 +- ...out oligarchs’ secret finances - ICIJ.md | 2 +- ...yle Brunson Is Still Bluffing. Or Is He.md | 2 +- ...ted in Florida, divides LGBTQ community.md | 2 +- ...lla, the YouTuber Exposing Crypto Scams.md | 2 +- ...ife Turned into a Nightmare The Walrus.md | 2 +- ...nt Towards A Solution For Both Diseases.md | 2 +- ...paid $2.4M over cheerleader allegations.md | 2 +- ...ity in Turkey found in man’s basement.md | 2 +- ...e Enabled by the Texans and a Spa Owner.md | 2 +- .../Dianne Feinstein, the Institutionalist.md | 2 +- ...e Gold These Treasure Hunters Think So..md | 4 +- 00.03 News/Disaster at 18,200 feet.md | 2 +- ...ican Intelligence’s Years of Conflict.md | 2 +- ...nald Trump and the Sweepstakes Scammers.md | 2 +- 00.03 News/Down the Hatch.md | 2 +- ...ilt their own online shopping ecosystem.md | 4 +- ... Legend of Genghis Khan - Farnam Street.md | 2 - ...usk Got Twitter Because He Gets Twitter.md | 4 +- .../For the West, the Worst Is Yet to Come.md | 2 +- ... 39 years. His wife never left his side.md | 2 +- 00.03 News/Google Search Is Dying.md | 2 +- ...An Unlikely Soccer Power Rises in Texas.md | 4 +- ...y devolved into “Lord of the Flies”.md | 2 +- ...t. It Changed His Best Friend’s Life..md | 2 +- ...He spent 25 years infiltrating the Klan.md | 2 +- ...aron saved thousands of Jewish refugees.md | 2 +- ...en Boys Went Weird Los Angeles Magazine.md | 2 +- ...est New Restaurant in the United States.md | 2 +- ...had to ‘nanny him’ through lockdown.md | 2 +- .../How Putin’s Oligarchs Bought London.md | 4 +- ...How The Inca Used Knots To Tell Stories.md | 4 +- ...club came to dominate the public square.md | 4 +- ... League School Turned Against a Student.md | 4 +- ...p in the Middle Ages - Medievalists.net.md | 4 +- ...d the Michael K. Williams Overdose Case.md | 2 +- ... be locked away in Germany Aeon Essays.md | 2 +- ... get the excitement back Psyche Guides.md | 4 +- ...ar’ Captures the Panic of Modern Work.md | 2 +- ...or women, the real Amazons Aeon Essays.md | 2 +- ...ailing Yeshivas Flush With Public Money.md | 2 +- ...bones with spirituality — and science.md | 2 +- 00.03 News/Inside a $4-billion family feud.md | 2 +- ...de the Silent ADHD Epidemic Among Women.md | 2 +- ...ce Again) the Vanguards of a Revolution.md | 2 +- ...List’ and its tactics are resurfacing.md | 2 +- ... Know Where Your Cat Is Hakai Magazine.md | 2 +- 00.03 News/Jackass Oral Hostory.md | 2 +- 00.03 News/Javanka in Exile.md | 2 +- .../Jeff Bezos’s Next Monopoly The Press.md | 2 +- ...dal Inside the CNN President's Downfall.md | 2 +- ...n, a Rare Cello and an Enduring Mystery.md | 2 +- .../Kerouac at 100 - The American Scholar.md | 4 +- ... and shares them with a grateful public.md | 2 +- ...the hard way that Britain is not the US.md | 57 + 00.03 News/Louisiana Girls.md | 4 +- ...okyo’s imperial archives Aeon Essays.md | 2 +- ...é de la presse face au secret bancaire.md | 2 +- ...emics hunted down a Syrian war criminal.md | 2 +- ... Unelectable Elected Official Defector.md | 2 +- ...Union’s Guerrilla Bid to Make History.md | 4 +- 00.03 News/Meghan of Montecito.md | 2 +- ...my, so they made their own delivery app.md | 2 +- ...formative first trip to Japan · Part 4.md | 2 +- ...acked Him. So He Took Down Its Internet.md | 4 +- ...ve Finally Learned What They’re Worth.md | 2 +- ...and-writing letters you’ll never send.md | 2 +- ...nal Instinct Is a Myth That Men Created.md | 2 +- ...anctions That Could Actually Stop Putin.md | 2 +- .../PM to fill out party questionnaire.md | 2 +- 00.03 News/Putin’s New Iron Curtain.md | 2 +- ... of Ambiguity’ in prison Aeon Essays.md | 2 +- ...l Russell The Greatest Winner in Sports.md | 2 +- ...s Unexpectedly Fantastic Elizabeth Line.md | 2 +- ...otels. These are the disastrous results.md | 4 +- 00.03 News/Saint Peter’s Is a Miracle.md | 4 +- ...n ’Smart City’ Faces Major Setbacks.md | 2 +- ...rom an Open Marriage - The Paris Review.md | 2 +- ...buse How Mormon officials let it happen.md | 2 +- ...tone Cover Story on Notorious Punk Band.md | 4 +- 00.03 News/Slow sex, long life.md | 2 +- ... Research, Potential Benefits, and More.md | 2 +- ...lomun, the D.J. Who Keeps Ibiza Dancing.md | 241 + 00.03 News/Tech and War.md | 4 +- ...e’s what its third year can teach us..md | 2 +- ...edia Since Cable Is Happening Right Now.md | 2 +- 00.03 News/The Bullet and the Ballplayer.md | 4 +- .../The Clockwork Orgasm - Common Reader.md | 4 +- 00.03 News/The Cowboy and Queen Elizabeth.md | 2 +- .../The Deacon and the Dog City Journal.md | 2 +- 00.03 News/The Follower.md | 2 +- ...w the Ukrainians Outwitted Putin's Army.md | 2 +- ...Jody Harris, Con Artist Extraordinaire..md | 2 +- 00.03 News/The Making of Vladimir Putin.md | 2 +- ...hereum Is Worried About Crypto's Future.md | 4 +- .../The Miseducation of Maria Montessori.md | 4 +- .../The Most Surveilled Place in America.md | 2 +- .../The Richest Black Girl in America.md | 4 +- .../The Second Elizabethan Age Has Ended.md | 2 +- 00.03 News/The Shaming-Industrial Complex.md | 4 +- ... Sordid Saga of Hunter Biden’s Laptop.md | 2 +- ...Taliban Confront the Realities of Power.md | 2 +- ...uth So Many Experts Missed About Russia.md | 4 +- ...-Owned Outdoors Retailer in the Country.md | 2 +- ...avelling of an Expert on Serial Killers.md | 2 - ...rs of Those Who Kill Via Remote Control.md | 4 +- ...f the White House’s Record Collection.md | 2 +- .../The Victim Who Became the Accused.md | 2 +- ...e Women Who Ran Genghis Khan’s Empire.md | 2 +- ... Worst Boyfriend on the Upper East Side.md | 4 +- ...t who became the king of bank robberies.md | 2 +- ... cells that can give you super-immunity.md | 2 +- ... we need to plan for the great upheaval.md | 2 +- .../The dark side of Discord for teens.md | 2 +- .../The death spiral of an American family.md | 4 +- ...y that built a ballpark nachos monopoly.md | 210 + ...e endless heroism of Volodymyr Zelensky.md | 2 +- 00.03 News/The making of Prince William.md | 2 +- .../The man who paid for America's fear.md | 2 +- ...sday cult isn’t to blame Marina Hyde.md | 2 +- ...s that survived civilisation's collapse.md | 2 +- .../The metamorphosis of J.K. Rowling.md | 2 +- 00.03 News/The real Mission Impossible.md | 4 +- 00.03 News/The rise of the Strangler.md | 2 +- ...wisted mind of a serial romance scammer.md | 2 - 00.03 News/The twitching generation.md | 2 +- ...y turned history upside down - VTDigger.md | 2 +- ...ash on groupies, feuds, divorce and ego.md | 4 +- .../This Whole Thing Has F---ed Me Up’.md | 4 +- ...o pay another $100K or lose their homes.md | 141 + 00.03 News/Three Bodies in Texas.md | 2 +- ... Majury Discovers the Dark Side of Fame.md | 2 +- ...ok’s Oscar Moment Didn’t Come Cheap.md | 2 - .../To Live and Love with a Dying World.md | 2 +- .../Tortilla de Harina A Moon of Mystery.md | 2 +- 00.03 News/Twitter is becoming a lost city.md | 2 +- ...Shooter. Will Politicians Pay Attention.md | 2 +- ...Elizabeth II. It still came as a shock..md | 2 +- ...ry long on morale but short on weaponry.md | 4 +- ...lage of Demydiv to Keep Russians at Bay.md | 2 +- ...s Is The Secret To A Happy Relationship.md | 2 +- ...visionist History of Russia and Ukraine.md | 2 +- ...ief defends delay in confronting gunman.md | 2 +- 00.03 News/Was King Arthur a Real Person.md | 2 +- ... Gogh Color Blind It Sure Looks Like It.md | 2 +- ...Gambling Help Americans Cope With Covid.md | 4 +- .../Welcome to Philip K. Dick’s dystopia.md | 2 +- ...nner's Guide to Tech's Latest Obsession.md | 2 +- .../What Makes Brain Fog So Unforgiving.md | 2 +- ...nts team up with scientists to find out.md | 2 +- ... How a progressive company lost its way.md | 4 +- .../What i learnt during my 3 days offline.md | 2 +- ...s in a Black name 400 years of context..md | 4 +- ...hat’s the Matter with American Cities.md | 2 +- ...ling with themselves again Marina Hyde.md | 2 +- .../Why Are Black Families Leaving Cities.md | 2 +- ...Why Are Letters Shaped the Way They Are.md | 2 +- ... From Excellence & Embracing Mediocrity.md | 2 +- ...ies are ditching English-only education.md | 2 +- ...s on Parking Lots Is a Smart Green Move.md | 2 +- ...Music With Lyrics We Don’t Understand.md | 4 +- ...ove someone who doesn’t love you back.md | 2 +- ...he Bush Dynasty Die With George P. Bush.md | 2 +- ...XX-Files Who Torched the Pornhub Palace.md | 2 +- ... Jay Penske. And He’s Fine With That..md | 2 +- ...illion in Royalties for 2 Men, IRS Says.md | 2 +- ...d Calls Reveal Russian Army in Disarray.md | 2 +- ...ured All Before Her’ Darryl Pinckney.md | 117 + ... Rings” a tale of old v new Hollywood.md | 2 +- .../“Republicans Buy Sneakers Too”.md | 2 +- ...amera observes elusive deep sea animals.md | 4 +- 00.08 Bookmarks/Bookmarks - Obsidian.md | 11 + 00.08 Bookmarks/Bookmarks - Work.md | 75 + 01.02 Home/Household.md | 5 +- 01.02 Home/MRCK.md | 18 - 02.02 Paris/Early June.md | 108 + 02.02 Paris/Paris SG.md | 20 +- 02.03 Zürich/Dar.md | 2 +- 03.02 Travels/Skiing in Switzerland.md | 60 + 03.04 Cinematheque/@Cinematheque.md | 2 +- 05.01 Computer setup/Email & Communication.md | 6 + 05.02 Networks/Configuring UFW.md | 11 +- 239 files changed, 8245 insertions(+), 3418 deletions(-) create mode 100644 .obsidian/plugins/simple-time-tracker/main.js create mode 100644 .obsidian/plugins/simple-time-tracker/manifest.json create mode 100644 .obsidian/plugins/simple-time-tracker/styles.css rename 00.01 Admin/Calendars/{2022-08-31 Toulouse - Paris SG (0-3).md => 2022-08-31 Toulouse - PSG (0-3).md} (68%) rename 00.01 Admin/Calendars/{2022-09-14 Maccabi Haifa - Paris SG (1-3).md => 2022-09-14 Maccabi Haifa - PSG (1-3).md} (88%) create mode 100644 00.01 Admin/Calendars/2022-10-01 PSG - 0GC Nice (2-1).md create mode 100644 00.01 Admin/Calendars/2022-10-01.md create mode 100644 00.01 Admin/Calendars/2022-10-02.md create mode 100644 00.01 Admin/Calendars/2022-10-16 Paris SG - Marseille.md create mode 100644 00.01 Admin/URL table.md create mode 100644 00.03 News/Liz Truss learns the hard way that Britain is not the US.md create mode 100644 00.03 News/Solomun, the D.J. Who Keeps Ibiza Dancing.md create mode 100644 00.03 News/The family that built a ballpark nachos monopoly.md create mode 100644 00.03 News/This developer sold pre-construction townhouses for $400,000. Three years later, they told their buyers to pay another $100K or lose their homes.md create mode 100644 00.03 News/‘She Captured All Before Her’ Darryl Pinckney.md create mode 100644 00.08 Bookmarks/Bookmarks - Work.md create mode 100644 02.02 Paris/Early June.md diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index 6b7b0276..52bcb394 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -64,5 +64,6 @@ "plugins-galore", "obsidian-3d-graph", "obsidian-rich-links", - "auto-card-link" + "auto-card-link", + "simple-time-tracker" ] \ No newline at end of file diff --git a/.obsidian/graph.json b/.obsidian/graph.json index 20c96787..91f1f322 100644 --- a/.obsidian/graph.json +++ b/.obsidian/graph.json @@ -95,6 +95,6 @@ "repelStrength": 10, "linkStrength": 1, "linkDistance": 250, - "scale": 0.7669322418900221, + "scale": 0.44698753838274824, "close": true } \ No newline at end of file diff --git a/.obsidian/plugins/buttons/main.js b/.obsidian/plugins/buttons/main.js index 28db9f20..fff3d7c5 100644 --- a/.obsidian/plugins/buttons/main.js +++ b/.obsidian/plugins/buttons/main.js @@ -331,6 +331,9 @@ Mexp.math = { }, toRadian: function (x) { return x * Math.PI / 180 + }, + and: function (a, b) { + return a & b } }; Mexp.Exception = function (message) { @@ -338,584 +341,511 @@ Mexp.Exception = function (message) { }; var math_function = Mexp; -function inc (arr, val) { - for (var i = 0; i < arr.length; i++) { - arr[i] += val; - } - return arr +function inc(arr, val) { + for (var i = 0; i < arr.length; i++) { + arr[i] += val; + } + return arr } -var token = [ - 'sin', - 'cos', - 'tan', - 'pi', - '(', - ')', - 'P', - 'C', - ' ', - 'asin', - 'acos', - 'atan', - '7', - '8', - '9', - 'int', - 'cosh', - 'acosh', - 'ln', - '^', - 'root', - '4', - '5', - '6', - '/', - '!', - 'tanh', - 'atanh', - 'Mod', - '1', - '2', - '3', - '*', - 'sinh', - 'asinh', - 'e', - 'log', - '0', - '.', - '+', - '-', - ',', - 'Sigma', - 'n', - 'Pi', - 'pow' -]; -var show = [ - 'sin', - 'cos', - 'tan', - 'π', - '(', - ')', - 'P', - 'C', - ' ', - 'asin', - 'acos', - 'atan', - '7', - '8', - '9', - 'Int', - 'cosh', - 'acosh', - ' ln', - '^', - 'root', - '4', - '5', - '6', - '÷', - '!', - 'tanh', - 'atanh', - ' Mod ', - '1', - '2', - '3', - '×', - 'sinh', - 'asinh', - 'e', - ' log', - '0', - '.', - '+', - '-', - ',', - 'Σ', - 'n', - 'Π', - 'pow' -]; -var eva = [ - math_function.math.sin, - math_function.math.cos, - math_function.math.tan, - 'PI', - '(', - ')', - math_function.math.P, - math_function.math.C, - ' '.anchor, - math_function.math.asin, - math_function.math.acos, - math_function.math.atan, - '7', - '8', - '9', - Math.floor, - math_function.math.cosh, - math_function.math.acosh, - Math.log, - Math.pow, - Math.sqrt, - '4', - '5', - '6', - math_function.math.div, - math_function.math.fact, - math_function.math.tanh, - math_function.math.atanh, - math_function.math.mod, - '1', - '2', - '3', - math_function.math.mul, - math_function.math.sinh, - math_function.math.asinh, - 'E', - math_function.math.log, - '0', - '.', - math_function.math.add, - math_function.math.sub, - ',', - math_function.math.sigma, - 'n', - math_function.math.Pi, - Math.pow +var tokens = [ + { token: 'sin', show: 'sin', type: 0, value: math_function.math.sin }, + { token: 'cos', show: 'cos', type: 0, value: math_function.math.cos }, + { token: 'tan', show: 'tan', type: 0, value: math_function.math.tan }, + { token: 'pi', show: 'π', type: 3, value: 'PI' }, + { token: '(', show: '(', type: 4, value: '(' }, + { token: ')', show: ')', type: 5, value: ')' }, + { token: 'P', show: 'P', type: 10, value: math_function.math.P }, + { token: 'C', show: 'C', type: 10, value: math_function.math.C }, + { token: ' ', show: ' ', type: 14, value: ' '.anchor }, + { token: 'asin', show: 'asin', type: 0, value: math_function.math.asin }, + { token: 'acos', show: 'acos', type: 0, value: math_function.math.acos }, + { token: 'atan', show: 'atan', type: 0, value: math_function.math.atan }, + { token: '7', show: '7', type: 1, value: '7' }, + { token: '8', show: '8', type: 1, value: '8' }, + { token: '9', show: '9', type: 1, value: '9' }, + { token: 'int', show: 'Int', type: 0, value: Math.floor }, + { token: 'cosh', show: 'cosh', type: 0, value: math_function.math.cosh }, + { token: 'acosh', show: 'acosh', type: 0, value: math_function.math.acosh }, + { token: 'ln', show: ' ln', type: 0, value: Math.log }, + { token: '^', show: '^', type: 10, value: Math.pow }, + { token: 'root', show: 'root', type: 0, value: Math.sqrt }, + { token: '4', show: '4', type: 1, value: '4' }, + { token: '5', show: '5', type: 1, value: '5' }, + { token: '6', show: '6', type: 1, value: '6' }, + { token: '/', show: '÷', type: 2, value: math_function.math.div }, + { token: '!', show: '!', type: 7, value: math_function.math.fact }, + { token: 'tanh', show: 'tanh', type: 0, value: math_function.math.tanh }, + { token: 'atanh', show: 'atanh', type: 0, value: math_function.math.atanh }, + { token: 'Mod', show: ' Mod ', type: 2, value: math_function.math.mod }, + { token: '1', show: '1', type: 1, value: '1' }, + { token: '2', show: '2', type: 1, value: '2' }, + { token: '3', show: '3', type: 1, value: '3' }, + { token: '*', show: '×', type: 2, value: math_function.math.mul }, + { token: 'sinh', show: 'sinh', type: 0, value: math_function.math.sinh }, + { token: 'asinh', show: 'asinh', type: 0, value: math_function.math.asinh }, + { token: 'e', show: 'e', type: 3, value: 'E' }, + { token: 'log', show: ' log', type: 0, value: math_function.math.log }, + { token: '0', show: '0', type: 1, value: '0' }, + { token: '.', show: '.', type: 6, value: '.' }, + { token: '+', show: '+', type: 9, value: math_function.math.add }, + { token: '-', show: '-', type: 9, value: math_function.math.sub }, + { token: ',', show: ',', type: 11, value: ',' }, + { token: 'Sigma', show: 'Σ', type: 12, value: math_function.math.sigma }, + { token: 'n', show: 'n', type: 13, value: 'n' }, + { token: 'Pi', show: 'Π', type: 12, value: math_function.math.Pi }, + { token: 'pow', show: 'pow', type: 8, value: Math.pow, numberOfArguments: 2 }, + { token: '&', show: '&', type: 9, value: math_function.math.and }, ]; var preced = { - 0: 11, - 1: 0, - 2: 3, - 3: 0, - 4: 0, - 5: 0, - 6: 0, - 7: 11, - 8: 11, - 9: 1, - 10: 10, - 11: 0, - 12: 11, - 13: 0, - 14: -1 // will be filtered after lexer + 0: 11, + 1: 0, + 2: 3, + 3: 0, + 4: 0, + 5: 0, + 6: 0, + 7: 11, + 8: 11, + 9: 1, + 10: 10, + 11: 0, + 12: 11, + 13: 0, + 14: -1, + 15: 11, // will be filtered after lexer }; // stores precedence by types -var type = [ - 0, 0, 0, 3, 4, 5, 10, 10, 14, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 10, 0, 1, 1, 1, 2, 7, 0, 0, 2, 1, 1, - 1, 2, 0, 0, 3, 0, 1, 6, 9, 9, 11, 12, 13, 12, 8 -]; -/* -0 : function with syntax function_name(Maths_exp) -1 : numbers -2 : binary operators like * / Mod left associate and same precedence -3 : Math constant values like e,pi,Cruncher ans -4 : opening bracket -5 : closing bracket -6 : decimal -7 : function with syntax (Math_exp)function_name -8: function with syntax function_name(Math_exp1,Math_exp2) -9 : binary operator like +,- -10: binary operator like P C or ^ -11: , -12: function with , seperated three parameters and third parameter is a string that will be mexp string -13: variable of Sigma function -*/ +for (var i = 0; i < tokens.length; i++) { + tokens[i].precedence = preced[tokens[i].type]; +} var type0 = { - 0: true, - 1: true, - 3: true, - 4: true, - 6: true, - 8: true, - 9: true, - 12: true, - 13: true, - 14: true + 0: true, + 1: true, + 3: true, + 4: true, + 6: true, + 8: true, + 9: true, + 12: true, + 13: true, + 14: true, + 15: true, }; // type2:true,type4:true,type9:true,type11:true,type21:true,type22 var type1 = { - 0: true, - 1: true, - 2: true, - 3: true, - 4: true, - 5: true, - 6: true, - 7: true, - 8: true, - 9: true, - 10: true, - 11: true, - 12: true, - 13: true + 0: true, + 1: true, + 2: true, + 3: true, + 4: true, + 5: true, + 6: true, + 7: true, + 8: true, + 9: true, + 10: true, + 11: true, + 12: true, + 13: true, + 15: true, }; // type3:true,type5:true,type7:true,type23 var type1Asterick = { - 0: true, - 3: true, - 4: true, - 8: true, - 12: true, - 13: true + 0: true, + 3: true, + 4: true, + 8: true, + 12: true, + 13: true, + 15: true, }; var empty = {}; var type3Asterick = { - 0: true, - 1: true, - 3: true, - 4: true, - 6: true, - 8: true, - 12: true, - 13: true + 0: true, + 1: true, + 3: true, + 4: true, + 6: true, + 8: true, + 12: true, + 13: true, + 15: true, }; // type_5:true,type_7:true,type_23 var type6 = { - 1: true + 1: true, }; var newAr = [ - [], - [ - '1', - '2', - '3', - '7', - '8', - '9', - '4', - '5', - '6', - '+', - '-', - '*', - '/', - '(', - ')', - '^', - '!', - 'P', - 'C', - 'e', - '0', - '.', - ',', - 'n', - ' ' - ], - ['pi', 'ln', 'Pi'], - ['sin', 'cos', 'tan', 'Del', 'int', 'Mod', 'log', 'pow'], - ['asin', 'acos', 'atan', 'cosh', 'root', 'tanh', 'sinh'], - ['acosh', 'atanh', 'asinh', 'Sigma'] + [], + [ + '1', + '2', + '3', + '7', + '8', + '9', + '4', + '5', + '6', + '+', + '-', + '*', + '/', + '(', + ')', + '^', + '!', + 'P', + 'C', + 'e', + '0', + '.', + ',', + 'n', + ' ', + '&', + ], + ['pi', 'ln', 'Pi'], + ['sin', 'cos', 'tan', 'Del', 'int', 'Mod', 'log', 'pow'], + ['asin', 'acos', 'atan', 'cosh', 'root', 'tanh', 'sinh'], + ['acosh', 'atanh', 'asinh', 'Sigma'], ]; -function match (str1, str2, i, x) { - for (var f = 0; f < x; f++) { - if (str1[i + f] !== str2[f]) { - return false - } - } - return true +function match(str1, str2, i, x) { + for (var f = 0; f < x; f++) { + if (str1[i + f] !== str2[f]) { + return false + } + } + return true } -math_function.addToken = function (tokens) { - for (var i = 0; i < tokens.length; i++) { - var x = tokens[i].token.length; - var temp = -1; +math_function.tokenTypes = { + FUNCTION_WITH_ONE_ARG: 0, + NUMBER: 1, + BINARY_OPERATOR_HIGH_PRECENDENCE: 2, + CONSTANT: 3, + OPENING_PARENTHESIS: 4, + CLOSING_PARENTHESIS: 5, + DECIMAL: 6, + POSTFIX_FUNCTION_WITH_ONE_ARG: 7, + FUNCTION_WITH_N_ARGS: 8, + BINARY_OPERATOR_LOW_PRECENDENCE: 9, + BINARY_OPERATOR_PERMUTATION: 10, + COMMA: 11, + EVALUATED_FUNCTION: 12, + EVALUATED_FUNCTION_PARAMETER: 13, + SPACE: 14, +}; +/** + + 0 : function with syntax function_name(Maths_exp) + 1 : numbers + 2 : binary operators like * / Mod left associate and same precedence + 3 : Math constant values like e,pi,Cruncher ans + 4 : opening bracket + 5 : closing bracket + 6 : decimal + 7 : function with syntax (Math_exp)function_name + 8: function with syntax function_name(Math_exp1,Math_exp2) + 9 : binary operator like +,- + 10: binary operator like P C or ^ + 11: , + 12: function with , seperated three parameters and third parameter is a string that will be mexp string + 13: variable of Sigma function + */ +math_function.addToken = function (newTokens) { + for (var i = 0; i < newTokens.length; i++) { + var x = newTokens[i].token.length; + var temp = -1; + if (newTokens[i].type === math_function.tokenTypes.FUNCTION_WITH_N_ARGS && newTokens[i].numberOfArguments === undefined) { + newTokens[i].numberOfArguments = 2; + } - // newAr is a specially designed data structure index of 1d array = length of tokens - newAr[x] = newAr[x] || []; - for (var y = 0; y < newAr[x].length; y++) { - if (tokens[i].token === newAr[x][y]) { - temp = token.indexOf(newAr[x][y]); - break - } - } - if (temp === -1) { - token.push(tokens[i].token); - type.push(tokens[i].type); - if (newAr.length <= tokens[i].token.length) { - newAr[tokens[i].token.length] = []; - } - newAr[tokens[i].token.length].push(tokens[i].token); - eva.push(tokens[i].value); - show.push(tokens[i].show); - } else { - // overwrite - token[temp] = tokens[i].token; - type[temp] = tokens[i].type; - eva[temp] = tokens[i].value; - show[temp] = tokens[i].show; - } - } + // newAr is a specially designed data structure index of 1d array = length of tokens + newAr[x] = newAr[x] || []; + for (var y = 0; y < newAr[x].length; y++) { + if (newTokens[i].token === newAr[x][y]) { + temp = indexOfToken(newAr[x][y], tokens); + break + } + } + if (temp === -1) { + tokens.push(newTokens[i]); + newTokens[i].precedence = preced[newTokens[i].type]; + if (newAr.length <= newTokens[i].token.length) { + newAr[newTokens[i].token.length] = []; + } + newAr[newTokens[i].token.length].push(newTokens[i].token); + } else { + // overwrite + tokens[temp] = newTokens[i]; + newTokens[i].precedence = preced[newTokens[i].type]; + } + } }; -function tokenize (string) { - var nodes = []; - var length = string.length; - var key, x, y; - for (var i = 0; i < length; i++) { - if (i < length - 1 && string[i] === ' ' && string[i + 1] === ' ') { - continue - } - key = ''; - for ( - x = string.length - i > newAr.length - 2 ? newAr.length - 1 : string.length - i; - x > 0; - x-- - ) { - if (newAr[x] === undefined) continue - for (y = 0; y < newAr[x].length; y++) { - if (match(string, newAr[x][y], i, x)) { - key = newAr[x][y]; - y = newAr[x].length; - x = 0; - } - } - } - i += key.length - 1; - if (key === '') { - throw new math_function.Exception("Can't understand after " + string.slice(i)) - } - var index = token.indexOf(key); - nodes.push({ - index: index, - token: key, - type: type[index], - eval: eva[index], - precedence: preced[type[index]], - show: show[index] - }); - } - return nodes +function indexOfToken(key, tokens) { + for (var search = 0; search < tokens.length; search++) { + if (tokens[search].token === key) return search + } + return -1 +} +function tokenize(string) { + var nodes = []; + var length = string.length; + var key, x, y; + for (var i = 0; i < length; i++) { + if (i < length - 1 && string[i] === ' ' && string[i + 1] === ' ') { + continue + } + key = ''; + for (x = string.length - i > newAr.length - 2 ? newAr.length - 1 : string.length - i; x > 0; x--) { + if (newAr[x] === undefined) continue + for (y = 0; y < newAr[x].length; y++) { + if (match(string, newAr[x][y], i, x)) { + key = newAr[x][y]; + y = newAr[x].length; + x = 0; + } + } + } + i += key.length - 1; + if (key === '') { + throw new math_function.Exception("Can't understand after " + string.slice(i)) + } + nodes.push(tokens[indexOfToken(key, tokens)]); + } + return nodes } +var changeSignObj = { + value: math_function.math.changeSign, + type: 0, + pre: 21, + show: '-', +}; +var closingParObj = { + value: ')', + show: ')', + type: 5, + pre: 0, +}; +var openingParObj = { + value: '(', + type: 4, + pre: 0, + show: '(', +}; math_function.lex = function (inp, tokens) { - var changeSignObj = { - value: math_function.math.changeSign, - type: 0, - pre: 21, - show: '-' - }; - var closingParObj = { - value: ')', - show: ')', - type: 5, - pre: 0 - }; - var openingParObj = { - value: '(', - type: 4, - pre: 0, - show: '(' - }; - var str = [openingParObj]; + var str = [openingParObj]; - var ptc = []; // Parenthesis to close at the beginning is after one token - var inpStr = inp; - var allowed = type0; - var bracToClose = 0; - var asterick = empty; - var prevKey = ''; - var i; - if (typeof tokens !== 'undefined') { - math_function.addToken(tokens); - } - var obj = {}; - var nodes = tokenize(inpStr); - for (i = 0; i < nodes.length; i++) { - var node = nodes[i]; - if (node.type === 14) { - if ( - i > 0 && - i < nodes.length - 1 && - nodes[i + 1].type === 1 && - (nodes[i - 1].type === 1 || nodes[i - 1].type === 6) - ) { throw new math_function.Exception('Unexpected Space') } - continue - } - var cToken = node.token; - var cType = node.type; - var cEv = node.eval; - var cPre = node.precedence; - var cShow = node.show; - var pre = str[str.length - 1]; - var j; - for (j = ptc.length; j--;) { - // loop over ptc - if (ptc[j] === 0) { - if ([0, 2, 3, 4, 5, 9, 11, 12, 13].indexOf(cType) !== -1) { - if (allowed[cType] !== true) { - throw new math_function.Exception(cToken + ' is not allowed after ' + prevKey) - } - str.push(closingParObj); - allowed = type1; - asterick = type3Asterick; - inc(ptc, -1).pop(); - } - } else break - } - if (allowed[cType] !== true) { - throw new math_function.Exception(cToken + ' is not allowed after ' + prevKey) - } - if (asterick[cType] === true) { - cType = 2; - cEv = math_function.math.mul; - cShow = '×'; - cPre = 3; - i = i - 1; - } - obj = { - value: cEv, - type: cType, - pre: cPre, - show: cShow - }; - if (cType === 0) { - allowed = type0; - asterick = empty; - inc(ptc, 2).push(2); - str.push(obj); - str.push(openingParObj); - } else if (cType === 1) { - if (pre.type === 1) { - pre.value += cEv; - inc(ptc, 1); - } else { - str.push(obj); - } - allowed = type1; - asterick = type1Asterick; - } else if (cType === 2) { - allowed = type0; - asterick = empty; - inc(ptc, 2); - str.push(obj); - } else if (cType === 3) { - // constant - str.push(obj); - allowed = type1; - asterick = type3Asterick; - } else if (cType === 4) { - inc(ptc, 1); - bracToClose++; - allowed = type0; - asterick = empty; - str.push(obj); - } else if (cType === 5) { - if (!bracToClose) { - throw new math_function.Exception('Closing parenthesis are more than opening one, wait What!!!') - } - bracToClose--; - allowed = type1; - asterick = type3Asterick; - str.push(obj); - inc(ptc, 1); - } else if (cType === 6) { - if (pre.hasDec) { - throw new math_function.Exception('Two decimals are not allowed in one number') - } - if (pre.type !== 1) { - pre = { - value: 0, - type: 1, - pre: 0 - }; // pre needs to be changed as it will the last value now to be safe in later code - str.push(pre); - inc(ptc, -1); - } - allowed = type6; - inc(ptc, 1); - asterick = empty; - pre.value += cEv; - pre.hasDec = true; - } else if (cType === 7) { - allowed = type1; - asterick = type3Asterick; - inc(ptc, 1); - str.push(obj); - } - if (cType === 8) { - allowed = type0; - asterick = empty; - inc(ptc, 4).push(4); - str.push(obj); - str.push(openingParObj); - } else if (cType === 9) { - if (pre.type === 9) { - if (pre.value === math_function.math.add) { - pre.value = cEv; - pre.show = cShow; - inc(ptc, 1); - } else if (pre.value === math_function.math.sub && cShow === '-') { - pre.value = math_function.math.add; - pre.show = '+'; - inc(ptc, 1); - } - } else if ( - pre.type !== 5 && - pre.type !== 7 && - pre.type !== 1 && - pre.type !== 3 && - pre.type !== 13 - ) { - // changesign only when negative is found - if (cToken === '-') { - // do nothing for + token - // don't add with the above if statement as that will run the else statement of parent if on Ctoken + - allowed = type0; - asterick = empty; - inc(ptc, 2).push(2); - str.push(changeSignObj); - str.push(openingParObj); - } - } else { - str.push(obj); - inc(ptc, 2); - } - allowed = type0; - asterick = empty; - } else if (cType === 10) { - allowed = type0; - asterick = empty; - inc(ptc, 2); - str.push(obj); - } else if (cType === 11) { - allowed = type0; - asterick = empty; - str.push(obj); - } else if (cType === 12) { - allowed = type0; - asterick = empty; - inc(ptc, 6).push(6); - str.push(obj); - str.push(openingParObj); - } else if (cType === 13) { - allowed = type1; - asterick = type3Asterick; - str.push(obj); - } - inc(ptc, -1); - prevKey = cToken; - } - for (j = ptc.length; j--;) { - // loop over ptc - if (ptc[j] === 0) { - str.push(closingParObj); - inc(ptc, -1).pop(); - } else break // if it is not zero so before ptc also cant be zero - } - if (allowed[5] !== true) { - throw new math_function.Exception('complete the expression') - } - while (bracToClose--) { - str.push(closingParObj); - } + var ptc = []; // Parenthesis to close at the beginning is after one token + var inpStr = inp; + var allowed = type0; + var bracToClose = 0; + var asterick = empty; + var prevKey = ''; + var i; + if (typeof tokens !== 'undefined') { + math_function.addToken(tokens); + } + var obj = {}; + var nodes = tokenize(inpStr); + for (i = 0; i < nodes.length; i++) { + var node = nodes[i]; + if (node.type === 14) { + if ( + i > 0 && + i < nodes.length - 1 && + nodes[i + 1].type === 1 && + (nodes[i - 1].type === 1 || nodes[i - 1].type === 6) + ) { + throw new math_function.Exception('Unexpected Space') + } + continue + } + var cToken = node.token; + var cType = node.type; + var cEv = node.value; + var cPre = node.precedence; + var cShow = node.show; + var pre = str[str.length - 1]; + var j; + for (j = ptc.length; j--; ) { + // loop over ptc + if (ptc[j] === 0) { + if ([0, 2, 3, 4, 5, 9, 11, 12, 13].indexOf(cType) !== -1) { + if (allowed[cType] !== true) { + throw new math_function.Exception(cToken + ' is not allowed after ' + prevKey) + } + str.push(closingParObj); + allowed = type1; + asterick = type3Asterick; + ptc.pop(); + } + } else break + } + if (allowed[cType] !== true) { + throw new math_function.Exception(cToken + ' is not allowed after ' + prevKey) + } + if (asterick[cType] === true) { + cType = 2; + cEv = math_function.math.mul; + cShow = '×'; + cPre = 3; + i = i - 1; + } + obj = { + value: cEv, + type: cType, + pre: cPre, + show: cShow, + numberOfArguments: node.numberOfArguments, + }; + if (cType === 0) { + allowed = type0; + asterick = empty; + inc(ptc, 2); + str.push(obj); + if (nodes[i + 1].type !== 4) { + str.push(openingParObj); + ptc.push(2); + } + // bracToClose++ + } else if (cType === 1) { + if (pre.type === 1) { + pre.value += cEv; + inc(ptc, 1); + } else { + str.push(obj); + } + allowed = type1; + asterick = type1Asterick; + } else if (cType === 2) { + allowed = type0; + asterick = empty; + inc(ptc, 2); + str.push(obj); + } else if (cType === 3) { + // constant + str.push(obj); + allowed = type1; + asterick = type3Asterick; + } else if (cType === 4) { + inc(ptc, 1); + bracToClose++; + allowed = type0; + asterick = empty; + str.push(obj); + } else if (cType === 5) { + if (!bracToClose) { + throw new math_function.Exception('Closing parenthesis are more than opening one, wait What!!!') + } + bracToClose--; + allowed = type1; + asterick = type3Asterick; + str.push(obj); + inc(ptc, 1); + } else if (cType === 6) { + if (pre.hasDec) { + throw new math_function.Exception('Two decimals are not allowed in one number') + } + if (pre.type !== 1) { + pre = { + value: 0, + type: 1, + pre: 0, + }; // pre needs to be changed as it will the last value now to be safe in later code + str.push(pre); + // inc(ptc, 1) + } + allowed = type6; + inc(ptc, 1); + asterick = empty; + pre.value += cEv; + pre.hasDec = true; + } else if (cType === 7) { + allowed = type1; + asterick = type3Asterick; + inc(ptc, 1); + str.push(obj); + } + if (cType === 8) { + allowed = type0; + asterick = empty; + inc(ptc, node.numberOfArguments + 2); + str.push(obj); + // str.push(openingParObj) + if (nodes[i + 1].type !== 4) { + str.push(openingParObj); + ptc.push(node.numberOfArguments + 2); + } + } else if (cType === 9) { + if (pre.type === 9) { + if (pre.value === math_function.math.add) { + pre.value = cEv; + pre.show = cShow; + inc(ptc, 1); + } else if (pre.value === math_function.math.sub && cShow === '-') { + pre.value = math_function.math.add; + pre.show = '+'; + inc(ptc, 1); + } + } else if (pre.type !== 5 && pre.type !== 7 && pre.type !== 1 && pre.type !== 3 && pre.type !== 13) { + // changesign only when negative is found + if (cToken === '-') { + // do nothing for + token + // don't add with the above if statement as that will run the else statement of parent if on Ctoken + + allowed = type0; + asterick = empty; + inc(ptc, 2).push(2); + str.push(changeSignObj); + str.push(openingParObj); + } + } else { + str.push(obj); + inc(ptc, 2); + } + allowed = type0; + asterick = empty; + } else if (cType === 10) { + allowed = type0; + asterick = empty; + inc(ptc, 2); + str.push(obj); + } else if (cType === 11) { + allowed = type0; + asterick = empty; + str.push(obj); + } else if (cType === 12) { + allowed = type0; + asterick = empty; + inc(ptc, 6); + str.push(obj); + if (nodes[i + 1].type !== 4) { + str.push(openingParObj); + ptc.push(6); + } + } else if (cType === 13) { + allowed = type1; + asterick = type3Asterick; + str.push(obj); + } + + inc(ptc, -1); + prevKey = cToken; + } + for (j = ptc.length; j--; ) { + // loop over ptc + str.push(closingParObj); + } + if (allowed[5] !== true) { + throw new math_function.Exception('complete the expression') + } + while (bracToClose--) { + str.push(closingParObj); + } - str.push(closingParObj); - // console.log(str); - return new math_function(str) + str.push(closingParObj); + // console.log(str); + return new math_function(str) }; var lexer = math_function; @@ -967,105 +897,90 @@ lexer.prototype.toPostfix = function () { var postfix = lexer; postfix.prototype.postfixEval = function (UserDefined) { - UserDefined=UserDefined||{}; - UserDefined.PI=Math.PI; - UserDefined.E=Math.E; - var stack=[],pop1,pop2,pop3; - var arr=this.value; - var bool=(typeof UserDefined.n!=="undefined"); - for(var i=0;i1) { - throw(new postfix.Exception("Uncaught Syntax error")); + if (stack.length > 1) { + throw new postfix.Exception('Uncaught Syntax error') } - return stack[0].value>1000000000000000?"Infinity":parseFloat(stack[0].value.toFixed(15)); + return stack[0].value > 1000000000000000 ? 'Infinity' : parseFloat(stack[0].value.toFixed(15)) }; -postfix.eval=function(str,tokens,obj){ - if (typeof tokens==="undefined") { - return this.lex(str).toPostfix().postfixEval(); - } - else if (typeof obj==="undefined") { - if (typeof tokens.length!=="undefined") - return this.lex(str,tokens).toPostfix().postfixEval(); - else - return this.lex(str).toPostfix().postfixEval(tokens); - } - else - return this.lex(str,tokens).toPostfix().postfixEval(obj); +postfix.eval = function (str, tokens, obj) { + if (typeof tokens === 'undefined') { + return this.lex(str).toPostfix().postfixEval() + } else if (typeof obj === 'undefined') { + if (typeof tokens.length !== 'undefined') return this.lex(str, tokens).toPostfix().postfixEval() + else return this.lex(str).toPostfix().postfixEval(tokens) + } else return this.lex(str, tokens).toPostfix().postfixEval(obj) }; -var postfix_evaluator=postfix; +var postfix_evaluator = postfix; postfix_evaluator.prototype.formulaEval = function () { var pop1,pop2,pop3; @@ -1310,7 +1225,6 @@ const findNumber = async (app, lineNumber) => { }; const calculate = async (app, { action }, position) => { - console.log('running calculate button'); let equation = action; const variables = action.match(/\$[0-9]*/g); if (variables) { @@ -1771,31 +1685,61 @@ function getBasePlacement(placement) { return placement.split('-')[0]; } -var round$1 = Math.round; -function getBoundingClientRect(element, includeScale) { +var max = Math.max; +var min = Math.min; +var round = Math.round; + +function getUAString() { + var uaData = navigator.userAgentData; + + if (uaData != null && uaData.brands) { + return uaData.brands.map(function (item) { + return item.brand + "/" + item.version; + }).join(' '); + } + + return navigator.userAgent; +} + +function isLayoutViewport() { + return !/^((?!chrome|android).)*safari/i.test(getUAString()); +} + +function getBoundingClientRect(element, includeScale, isFixedStrategy) { if (includeScale === void 0) { includeScale = false; } - var rect = element.getBoundingClientRect(); + if (isFixedStrategy === void 0) { + isFixedStrategy = false; + } + + var clientRect = element.getBoundingClientRect(); var scaleX = 1; var scaleY = 1; - if (isHTMLElement(element) && includeScale) { - // Fallback to 1 in case both values are `0` - scaleX = rect.width / element.offsetWidth || 1; - scaleY = rect.height / element.offsetHeight || 1; + if (includeScale && isHTMLElement(element)) { + scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1; + scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1; } + var _ref = isElement(element) ? getWindow(element) : window, + visualViewport = _ref.visualViewport; + + var addVisualOffsets = !isLayoutViewport() && isFixedStrategy; + var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; + var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; + var width = clientRect.width / scaleX; + var height = clientRect.height / scaleY; return { - width: round$1(rect.width / scaleX), - height: round$1(rect.height / scaleY), - top: round$1(rect.top / scaleY), - right: round$1(rect.right / scaleX), - bottom: round$1(rect.bottom / scaleY), - left: round$1(rect.left / scaleX), - x: round$1(rect.left / scaleX), - y: round$1(rect.top / scaleY) + width: width, + height: height, + top: y, + right: x + width, + bottom: y + height, + left: x, + x: x, + y: y }; } @@ -1890,8 +1834,8 @@ function getTrueOffsetParent(element) { function getContainingBlock(element) { - var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; - var isIE = navigator.userAgent.indexOf('Trident') !== -1; + var isFirefox = /firefox/i.test(getUAString()); + var isIE = /Trident/i.test(getUAString()); if (isIE && isHTMLElement(element)) { // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport @@ -1904,6 +1848,10 @@ function getContainingBlock(element) { var currentNode = getParentNode(element); + if (isShadowRoot(currentNode)) { + currentNode = currentNode.host; + } + while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that // create a containing block. @@ -1940,13 +1888,13 @@ function getMainAxisFromPlacement(placement) { return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; } -var max = Math.max; -var min = Math.min; -var round = Math.round; - function within(min$1, value, max$1) { return max(min$1, min(value, max$1)); } +function withinMaxClamp(min, value, max) { + var v = within(min, value, max); + return v > max ? max : v; +} function getFreshSideObject() { return { @@ -2059,6 +2007,10 @@ var arrow$1 = { requiresIfExists: ['preventOverflow'] }; +function getVariation(placement) { + return placement.split('-')[1]; +} + var unsetSides = { top: 'auto', right: 'auto', @@ -2074,8 +2026,8 @@ function roundOffsetsByDPR(_ref) { var win = window; var dpr = win.devicePixelRatio || 1; return { - x: round(round(x * dpr) / dpr) || 0, - y: round(round(y * dpr) / dpr) || 0 + x: round(x * dpr) / dpr || 0, + y: round(y * dpr) / dpr || 0 }; } @@ -2085,18 +2037,28 @@ function mapToStyles(_ref2) { var popper = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, + variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, - roundOffsets = _ref2.roundOffsets; - - var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets, - _ref3$x = _ref3.x, - x = _ref3$x === void 0 ? 0 : _ref3$x, - _ref3$y = _ref3.y, - y = _ref3$y === void 0 ? 0 : _ref3$y; + roundOffsets = _ref2.roundOffsets, + isFixed = _ref2.isFixed; + var _offsets$x = offsets.x, + x = _offsets$x === void 0 ? 0 : _offsets$x, + _offsets$y = offsets.y, + y = _offsets$y === void 0 ? 0 : _offsets$y; + + var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ + x: x, + y: y + }) : { + x: x, + y: y + }; + x = _ref3.x; + y = _ref3.y; var hasX = offsets.hasOwnProperty('x'); var hasY = offsets.hasOwnProperty('y'); var sideX = left; @@ -2111,7 +2073,7 @@ function mapToStyles(_ref2) { if (offsetParent === getWindow(popper)) { offsetParent = getDocumentElement(popper); - if (getComputedStyle(offsetParent).position !== 'static') { + if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') { heightProp = 'scrollHeight'; widthProp = 'scrollWidth'; } @@ -2120,17 +2082,19 @@ function mapToStyles(_ref2) { offsetParent = offsetParent; - if (placement === top) { - sideY = bottom; // $FlowFixMe[prop-missing] - - y -= offsetParent[heightProp] - popperRect.height; + if (placement === top || (placement === left || placement === right) && variation === end) { + sideY = bottom; + var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] + offsetParent[heightProp]; + y -= offsetY - popperRect.height; y *= gpuAcceleration ? 1 : -1; } - if (placement === left) { - sideX = right; // $FlowFixMe[prop-missing] - - x -= offsetParent[widthProp] - popperRect.width; + if (placement === left || (placement === top || placement === bottom) && variation === end) { + sideX = right; + var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] + offsetParent[widthProp]; + x -= offsetX - popperRect.width; x *= gpuAcceleration ? 1 : -1; } } @@ -2139,18 +2103,29 @@ function mapToStyles(_ref2) { position: position }, adaptive && unsetSides); + var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ + x: x, + y: y + }) : { + x: x, + y: y + }; + + x = _ref4.x; + y = _ref4.y; + if (gpuAcceleration) { var _Object$assign; - return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); } return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); } -function computeStyles(_ref4) { - var state = _ref4.state, - options = _ref4.options; +function computeStyles(_ref5) { + var state = _ref5.state, + options = _ref5.options; var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, @@ -2170,9 +2145,11 @@ function computeStyles(_ref4) { var commonStyles = { placement: getBasePlacement(state.placement), + variation: getVariation(state.placement), popper: state.elements.popper, popperRect: state.rects.popper, - gpuAcceleration: gpuAcceleration + gpuAcceleration: gpuAcceleration, + isFixed: state.options.strategy === 'fixed' }; if (state.modifiersData.popperOffsets != null) { @@ -2298,31 +2275,21 @@ function getWindowScrollBarX(element) { return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; } -function getViewportRect(element) { +function getViewportRect(element, strategy) { var win = getWindow(element); var html = getDocumentElement(element); var visualViewport = win.visualViewport; var width = html.clientWidth; var height = html.clientHeight; var x = 0; - var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper - // can be obscured underneath it. - // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even - // if it isn't open, so if this isn't available, the popper will be detected - // to overflow the bottom of the screen too early. + var y = 0; if (visualViewport) { width = visualViewport.width; - height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) - // In Chrome, it returns a value very close to 0 (+/-) but contains rounding - // errors due to floating point numbers, so we need to check precision. - // Safari returns a number <= 0, usually < -1 when pinch-zoomed - // Feature detection fails in mobile emulation mode in Chrome. - // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < - // 0.001 - // Fallback here: "Not Safari" userAgent - - if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + height = visualViewport.height; + var layoutViewport = isLayoutViewport(); + + if (layoutViewport || !layoutViewport && strategy === 'fixed') { x = visualViewport.offsetLeft; y = visualViewport.offsetTop; } @@ -2416,8 +2383,8 @@ function rectToClientRect(rect) { }); } -function getInnerBoundingClientRect(element) { - var rect = getBoundingClientRect(element); +function getInnerBoundingClientRect(element, strategy) { + var rect = getBoundingClientRect(element, false, strategy === 'fixed'); rect.top = rect.top + element.clientTop; rect.left = rect.left + element.clientLeft; rect.bottom = rect.top + element.clientHeight; @@ -2429,8 +2396,8 @@ function getInnerBoundingClientRect(element) { return rect; } -function getClientRectFromMixedType(element, clippingParent) { - return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); +function getClientRectFromMixedType(element, clippingParent, strategy) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element))); } // A "clipping parent" is an overflowable container with the characteristic of // clipping (or hiding) overflowing elements with a position different from // `initial` @@ -2453,18 +2420,18 @@ function getClippingParents(element) { // clipping parents -function getClippingRect(element, boundary, rootBoundary) { +function getClippingRect(element, boundary, rootBoundary, strategy) { var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); var clippingParents = [].concat(mainClippingParents, [rootBoundary]); var firstClippingParent = clippingParents[0]; var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { - var rect = getClientRectFromMixedType(element, clippingParent); + var rect = getClientRectFromMixedType(element, clippingParent, strategy); accRect.top = max(rect.top, accRect.top); accRect.right = min(rect.right, accRect.right); accRect.bottom = min(rect.bottom, accRect.bottom); accRect.left = max(rect.left, accRect.left); return accRect; - }, getClientRectFromMixedType(element, firstClippingParent)); + }, getClientRectFromMixedType(element, firstClippingParent, strategy)); clippingRect.width = clippingRect.right - clippingRect.left; clippingRect.height = clippingRect.bottom - clippingRect.top; clippingRect.x = clippingRect.left; @@ -2472,10 +2439,6 @@ function getClippingRect(element, boundary, rootBoundary) { return clippingRect; } -function getVariation(placement) { - return placement.split('-')[1]; -} - function computeOffsets(_ref) { var reference = _ref.reference, element = _ref.element, @@ -2549,6 +2512,8 @@ function detectOverflow(state, options) { var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, + _options$strategy = _options.strategy, + strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, @@ -2561,11 +2526,10 @@ function detectOverflow(state, options) { padding = _options$padding === void 0 ? 0 : _options$padding; var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); var altContext = elementContext === popper ? reference : popper; - var referenceElement = state.elements.reference; var popperRect = state.rects.popper; var element = state.elements[altBoundary ? altContext : elementContext]; - var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); - var referenceClientRect = getBoundingClientRect(referenceElement); + var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy); + var referenceClientRect = getBoundingClientRect(state.elements.reference); var popperOffsets = computeOffsets({ reference: referenceClientRect, element: popperRect, @@ -2952,6 +2916,14 @@ function preventOverflow(_ref) { var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { placement: state.placement })) : tetherOffset; + var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { + mainAxis: tetherOffsetValue, + altAxis: tetherOffsetValue + } : Object.assign({ + mainAxis: 0, + altAxis: 0 + }, tetherOffsetValue); + var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; var data = { x: 0, y: 0 @@ -2961,13 +2933,15 @@ function preventOverflow(_ref) { return; } - if (checkMainAxis || checkAltAxis) { + if (checkMainAxis) { + var _offsetModifierState$; + var mainSide = mainAxis === 'y' ? top : left; var altSide = mainAxis === 'y' ? bottom : right; var len = mainAxis === 'y' ? 'height' : 'width'; var offset = popperOffsets[mainAxis]; - var min$1 = popperOffsets[mainAxis] + overflow[mainSide]; - var max$1 = popperOffsets[mainAxis] - overflow[altSide]; + var min$1 = offset + overflow[mainSide]; + var max$1 = offset - overflow[altSide]; var additive = tether ? -popperRect[len] / 2 : 0; var minLen = variation === start ? referenceRect[len] : popperRect[len]; var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go @@ -2987,36 +2961,45 @@ function preventOverflow(_ref) { // width or height) var arrowLen = within(0, referenceRect[len], arrowRect[len]); - var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue; - var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue; + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; - var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0; - var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset; - var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue; + var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; + var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; + var tetherMax = offset + maxOffset - offsetModifierValue; + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } - if (checkMainAxis) { - var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); - popperOffsets[mainAxis] = preventedOffset; - data[mainAxis] = preventedOffset - offset; - } + if (checkAltAxis) { + var _offsetModifierState$2; - if (checkAltAxis) { - var _mainSide = mainAxis === 'x' ? top : left; + var _mainSide = mainAxis === 'x' ? top : left; - var _altSide = mainAxis === 'x' ? bottom : right; + var _altSide = mainAxis === 'x' ? bottom : right; - var _offset = popperOffsets[altAxis]; + var _offset = popperOffsets[altAxis]; - var _min = _offset + overflow[_mainSide]; + var _len = altAxis === 'y' ? 'height' : 'width'; - var _max = _offset - overflow[_altSide]; + var _min = _offset + overflow[_mainSide]; - var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max); + var _max = _offset - overflow[_altSide]; - popperOffsets[altAxis] = _preventedOffset; - data[altAxis] = _preventedOffset - _offset; - } + var isOriginSide = [top, left].indexOf(basePlacement) !== -1; + + var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; + + var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; + + var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; + + var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); + + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; } state.modifiersData[name] = data; @@ -3048,8 +3031,8 @@ function getNodeScroll(node) { function isElementScaled(element) { var rect = element.getBoundingClientRect(); - var scaleX = rect.width / element.offsetWidth || 1; - var scaleY = rect.height / element.offsetHeight || 1; + var scaleX = round(rect.width) / element.offsetWidth || 1; + var scaleY = round(rect.height) / element.offsetHeight || 1; return scaleX !== 1 || scaleY !== 1; } // Returns the composite rect of an element relative to its offsetParent. // Composite means it takes into account transforms as well as layout. @@ -3063,7 +3046,7 @@ function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { var isOffsetParentAnElement = isHTMLElement(offsetParent); var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent); var documentElement = getDocumentElement(offsetParent); - var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled); + var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed); var scroll = { scrollLeft: 0, scrollTop: 0 @@ -3170,7 +3153,10 @@ var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" mo var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; function validateModifiers(modifiers) { modifiers.forEach(function (modifier) { - Object.keys(modifier).forEach(function (key) { + [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)` + .filter(function (value, index, self) { + return self.indexOf(value) === index; + }).forEach(function (key) { switch (key) { case 'name': if (typeof modifier.name !== 'string') { @@ -3184,6 +3170,8 @@ function validateModifiers(modifiers) { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); } + break; + case 'phase': if (modifierPhases.indexOf(modifier.phase) < 0) { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); @@ -3199,14 +3187,14 @@ function validateModifiers(modifiers) { break; case 'effect': - if (typeof modifier.effect !== 'function') { + if (modifier.effect != null && typeof modifier.effect !== 'function') { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); } break; case 'requires': - if (!Array.isArray(modifier.requires)) { + if (modifier.requires != null && !Array.isArray(modifier.requires)) { console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); } @@ -3316,7 +3304,8 @@ function popperGenerator(generatorOptions) { var isDestroyed = false; var instance = { state: state, - setOptions: function setOptions(options) { + setOptions: function setOptions(setOptionsAction) { + var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; cleanupModifierEffects(); state.options = Object.assign({}, defaultOptions, state.options, options); state.scrollParents = { @@ -4240,17 +4229,17 @@ class ButtonsPlugin extends obsidian.Plugin { name: "Insert Inline Button", callback: () => new InlineButtonModal(this.app).open(), }); - this.registerMarkdownCodeBlockProcessor("button", async (source, el) => { + this.registerMarkdownCodeBlockProcessor("button", async (source, el, ctx) => { // create an object out of the arguments - const activeView = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView); - if (activeView) { - addButtonToStore(this.app, activeView.file); - let args = createArgumentObject(source); - const storeArgs = await getButtonFromStore(this.app, args); - args = storeArgs ? storeArgs.args : args; - const id = storeArgs && storeArgs.id; - createButton({ app: this.app, el, args, inline: false, id }); - } + const file = this.app.vault + .getFiles() + .find((f) => f.path === ctx.sourcePath); + addButtonToStore(this.app, file); + let args = createArgumentObject(source); + const storeArgs = await getButtonFromStore(this.app, args); + args = storeArgs ? storeArgs.args : args; + const id = storeArgs && storeArgs.id; + createButton({ app: this.app, el, args, inline: false, id }); }); this.registerMarkdownPostProcessor(async (el, ctx) => { // Search for blocks inside this element; for each one, look for things of the form ` @@ -4307,4 +4296,4 @@ class InlineButton extends obsidian.MarkdownRenderChild { } module.exports = ButtonsPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsic3JjL2J1dHRvblN0b3JlLnRzIiwic3JjL3V0aWxzLnRzIiwic3JjL2V2ZW50cy50cyIsIm5vZGVfbW9kdWxlcy9tYXRoLWV4cHJlc3Npb24tZXZhbHVhdG9yL3NyYy9tYXRoX2Z1bmN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL21hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3Ivc3JjL2xleGVyLmpzIiwibm9kZV9tb2R1bGVzL21hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3Ivc3JjL3Bvc3RmaXguanMiLCJub2RlX21vZHVsZXMvbWF0aC1leHByZXNzaW9uLWV2YWx1YXRvci9zcmMvcG9zdGZpeF9ldmFsdWF0b3IuanMiLCJub2RlX21vZHVsZXMvbWF0aC1leHByZXNzaW9uLWV2YWx1YXRvci9zcmMvZm9ybXVsYV9ldmFsdWF0b3IuanMiLCJzcmMvaGFuZGxlcnMudHMiLCJzcmMvcGFyc2VyLnRzIiwic3JjL2J1dHRvblR5cGVzLnRzIiwic3JjL2J1dHRvbi50cyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZW51bXMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlTmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2luc3RhbmNlT2YuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcHBseVN0eWxlcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldExheW91dFJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1RhYmxlRWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFBhcmVudE5vZGUuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWF0aC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvd2l0aGluLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXJyb3cuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvd1Njcm9sbEJhclguanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRWaWV3cG9ydFJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudFJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1Njcm9sbFBhcmVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFNjcm9sbFBhcmVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9yZWN0VG9DbGllbnRSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRWYXJpYXRpb24uanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZXRlY3RPdmVyZmxvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9mbGlwLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvaGlkZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL29mZnNldC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEFsdEF4aXMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRIVE1MRWxlbWVudFNjcm9sbC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVTY3JvbGwuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9vcmRlck1vZGlmaWVycy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGVib3VuY2UuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2Zvcm1hdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdmFsaWRhdGVNb2RpZmllcnMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VuaXF1ZUJ5LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZUJ5TmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvY3JlYXRlUG9wcGVyLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXIuanMiLCJzcmMvc3VnZ2VzdC50cyIsInNyYy9tb2RhbC50cyIsInNyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHAsIFRGaWxlLCBDYWNoZWRNZXRhZGF0YSwgRXZlbnRzIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBFeHRlbmRlZEJsb2NrQ2FjaGUsIEFyZ3VtZW50cyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBjcmVhdGVBcmd1bWVudE9iamVjdCB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmxldCBidXR0b25TdG9yZTogRXh0ZW5kZWRCbG9ja0NhY2hlW107XG5cbmV4cG9ydCBjb25zdCBnZXRTdG9yZSA9IChpc01vYmlsZTogYm9vbGVhbik6IEV4dGVuZGVkQmxvY2tDYWNoZVtdID0+XG4gIGlzTW9iaWxlID8gYnV0dG9uU3RvcmUgOiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnV0dG9uc1wiKSk7XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsaXplQnV0dG9uU3RvcmUgPSAoYXBwOiBBcHAsIHN0b3JlRXZlbnRzOiBFdmVudHMpOiB2b2lkID0+IHtcbiAgY29uc3QgZmlsZXMgPSBhcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpO1xuICBjb25zdCBibG9ja3NBcnIgPSBmaWxlc1xuICAgIC5tYXAoKGZpbGUpID0+IHtcbiAgICAgIGNvbnN0IGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xuICAgICAgcmV0dXJuIGJ1aWxkQnV0dG9uQXJyYXkoY2FjaGUsIGZpbGUpO1xuICAgIH0pXG4gICAgLmZpbHRlcigoYXJyKSA9PiBhcnIgIT09IHVuZGVmaW5lZClcbiAgICAuZmxhdCgpO1xuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImJ1dHRvbnNcIiwgSlNPTi5zdHJpbmdpZnkoYmxvY2tzQXJyKSk7XG4gIGJ1dHRvblN0b3JlID0gYmxvY2tzQXJyO1xuICBzdG9yZUV2ZW50cy50cmlnZ2VyKCdpbmRleC1jb21wbGV0ZScpXG59O1xuXG5leHBvcnQgY29uc3QgYWRkQnV0dG9uVG9TdG9yZSA9IChhcHA6IEFwcCwgZmlsZTogVEZpbGUpOiB2b2lkID0+IHtcbiAgY29uc3QgY2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gIGNvbnN0IGJ1dHRvbnMgPSBidWlsZEJ1dHRvbkFycmF5KGNhY2hlLCBmaWxlKTtcbiAgY29uc3Qgc3RvcmUgPSBnZXRTdG9yZShhcHAuaXNNb2JpbGUpO1xuICBjb25zdCBuZXdTdG9yZSA9XG4gICAgYnV0dG9ucyAmJiBzdG9yZVxuICAgICAgPyByZW1vdmVEdXBsaWNhdGVzKFsuLi5idXR0b25zLCAuLi5zdG9yZV0pXG4gICAgICA6IHN0b3JlXG4gICAgICA/IHJlbW92ZUR1cGxpY2F0ZXMoc3RvcmUpXG4gICAgICA6IGJ1dHRvbnNcbiAgICAgID8gcmVtb3ZlRHVwbGljYXRlcyhidXR0b25zKVxuICAgICAgOiBbXTtcbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJidXR0b25zXCIsIEpTT04uc3RyaW5naWZ5KG5ld1N0b3JlKSk7XG4gIGJ1dHRvblN0b3JlID0gbmV3U3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QnV0dG9uRnJvbVN0b3JlID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgYXJnczogQXJndW1lbnRzXG4pOiBQcm9taXNlPHsgYXJnczogQXJndW1lbnRzOyBpZDogc3RyaW5nIH0+IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRTdG9yZShhcHAuaXNNb2JpbGUpO1xuICBhcmdzLmlkO1xuICBpZiAoYXJncy5pZCkge1xuICAgIGNvbnN0IHN0b3JlZEJ1dHRvbiA9XG4gICAgICBzdG9yZSAmJlxuICAgICAgc3RvcmUuZmlsdGVyKFxuICAgICAgICAoaXRlbTogRXh0ZW5kZWRCbG9ja0NhY2hlKSA9PiBgYnV0dG9uLSR7YXJncy5pZH1gID09PSBpdGVtLmlkXG4gICAgICApWzBdO1xuICAgIGlmIChzdG9yZWRCdXR0b24pIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHN0b3JlZEJ1dHRvbi5wYXRoKTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQuY2FjaGVkUmVhZChmaWxlIGFzIFRGaWxlKTtcbiAgICAgIGNvbnN0IGNvbnRlbnRBcnJheSA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIik7XG4gICAgICBjb25zdCBidXR0b24gPSBjb250ZW50QXJyYXlcbiAgICAgICAgLnNsaWNlKFxuICAgICAgICAgIHN0b3JlZEJ1dHRvbi5wb3NpdGlvbi5zdGFydC5saW5lICsgMSxcbiAgICAgICAgICBzdG9yZWRCdXR0b24ucG9zaXRpb24uZW5kLmxpbmVcbiAgICAgICAgKVxuICAgICAgICAuam9pbihcIlxcblwiKTtcbiAgICAgIGNvbnN0IHN0b3JlZEFyZ3MgPSBjcmVhdGVBcmd1bWVudE9iamVjdChidXR0b24pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXJnczogeyAuLi5zdG9yZWRBcmdzLCAuLi5hcmdzIH0sXG4gICAgICAgIGlkOiBzdG9yZWRCdXR0b24uaWQuc3BsaXQoXCJidXR0b24tXCIpWzFdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCdXR0b25CeUlkID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgaWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxBcmd1bWVudHM+ID0+IHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRTdG9yZShhcHAuaXNNb2JpbGUpO1xuICBjb25zdCBzdG9yZWRCdXR0b24gPSBzdG9yZS5maWx0ZXIoXG4gICAgKGl0ZW06IEV4dGVuZGVkQmxvY2tDYWNoZSkgPT4gYGJ1dHRvbi0ke2lkfWAgPT09IGl0ZW0uaWRcbiAgKVswXTtcbiAgaWYgKHN0b3JlZEJ1dHRvbikge1xuICAgIGNvbnN0IGZpbGUgPSBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHN0b3JlZEJ1dHRvbi5wYXRoKTtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSBhcyBURmlsZSk7XG4gICAgY29uc3QgY29udGVudEFycmF5ID0gY29udGVudC5zcGxpdChcIlxcblwiKTtcbiAgICBjb25zdCBidXR0b24gPSBjb250ZW50QXJyYXlcbiAgICAgIC5zbGljZShcbiAgICAgICAgc3RvcmVkQnV0dG9uLnBvc2l0aW9uLnN0YXJ0LmxpbmUgKyAxLFxuICAgICAgICBzdG9yZWRCdXR0b24ucG9zaXRpb24uZW5kLmxpbmVcbiAgICAgIClcbiAgICAgIC5qb2luKFwiXFxuXCIpO1xuICAgIHJldHVybiBjcmVhdGVBcmd1bWVudE9iamVjdChidXR0b24pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QnV0dG9uU3dhcEJ5SWQgPSBhc3luYyAoXG4gIGFwcDogQXBwLFxuICBpZDogc3RyaW5nXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCBzdG9yZSA9IGdldFN0b3JlKGFwcC5pc01vYmlsZSk7XG4gIGNvbnN0IHN0b3JlZEJ1dHRvbiA9IHN0b3JlLmZpbHRlcihcbiAgICAoaXRlbTogRXh0ZW5kZWRCbG9ja0NhY2hlKSA9PiBgYnV0dG9uLSR7aWR9YCA9PT0gaXRlbS5pZFxuICApWzBdO1xuICBpZiAoc3RvcmVkQnV0dG9uKSB7XG4gICAgcmV0dXJuIHN0b3JlZEJ1dHRvbi5zd2FwO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0QnV0dG9uU3dhcEJ5SWQgPSBhc3luYyAoXG4gIGFwcDogQXBwLFxuICBpZDogc3RyaW5nLFxuICBuZXdTd2FwOiBudW1iZXJcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBzdG9yZSA9IGdldFN0b3JlKGFwcC5pc01vYmlsZSk7XG4gIGNvbnN0IHN0b3JlZEJ1dHRvbiA9IHN0b3JlLmZpbHRlcihcbiAgICAoaXRlbTogRXh0ZW5kZWRCbG9ja0NhY2hlKSA9PiBgYnV0dG9uLSR7aWR9YCA9PT0gaXRlbS5pZFxuICApWzBdO1xuICBpZiAoc3RvcmVkQnV0dG9uKSB7XG4gICAgc3RvcmVkQnV0dG9uLnN3YXAgPSBuZXdTd2FwO1xuICAgIGNvbnN0IG5ld1N0b3JlID0gcmVtb3ZlRHVwbGljYXRlcyhbLi4uc3RvcmUsIHN0b3JlZEJ1dHRvbl0pO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiYnV0dG9uc1wiLCBKU09OLnN0cmluZ2lmeShuZXdTdG9yZSkpO1xuICAgIGJ1dHRvblN0b3JlID0gbmV3U3RvcmU7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZEJ1dHRvbkFycmF5ID0gKFxuICBjYWNoZTogQ2FjaGVkTWV0YWRhdGEsXG4gIGZpbGU6IFRGaWxlXG4pOiBFeHRlbmRlZEJsb2NrQ2FjaGVbXSA9PiB7XG4gIGNvbnN0IGJsb2NrcyA9IGNhY2hlICYmIGNhY2hlLmJsb2NrcztcbiAgaWYgKGJsb2Nrcykge1xuICAgIGNvbnN0IGJsb2NrS2V5cyA9IEFycmF5LmZyb20oT2JqZWN0LmtleXMoYmxvY2tzKSk7XG4gICAgY29uc3QgYmxvY2tBcnJheTogRXh0ZW5kZWRCbG9ja0NhY2hlW10gPSBibG9ja0tleXNcbiAgICAgIC5tYXAoKGtleSkgPT4gYmxvY2tzW2tleV0pXG4gICAgICAubWFwKChvYmo6IEV4dGVuZGVkQmxvY2tDYWNoZSkgPT4ge1xuICAgICAgICBvYmpbXCJwYXRoXCJdID0gZmlsZS5wYXRoO1xuICAgICAgICBvYmpbXCJzd2FwXCJdID0gMDtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChibG9jaykgPT4gYmxvY2suaWQuaW5jbHVkZXMoXCJidXR0b25cIikpO1xuICAgIHJldHVybiBibG9ja0FycmF5O1xuICB9XG59O1xuXG5mdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVzKGFycjogRXh0ZW5kZWRCbG9ja0NhY2hlW10pIHtcbiAgcmV0dXJuIGFyciAmJiBhcnJbMF1cbiAgICA/IGFyci5maWx0ZXIoXG4gICAgICAgICh2LCBpLCBhKSA9PlxuICAgICAgICAgIGEuZmluZEluZGV4KFxuICAgICAgICAgICAgKHQpID0+XG4gICAgICAgICAgICAgIHQuaWQgPT09IHYuaWQgfHxcbiAgICAgICAgICAgICAgKHQucGF0aCA9PT0gdi5wYXRoICYmXG4gICAgICAgICAgICAgICAgdC5wb3NpdGlvbi5zdGFydC5saW5lID09PSB2LnBvc2l0aW9uLnN0YXJ0LmxpbmUgJiZcbiAgICAgICAgICAgICAgICB0LnBvc2l0aW9uLmVuZC5saW5lID09PSB2LnBvc2l0aW9uLmVuZC5saW5lKVxuICAgICAgICAgICkgPT09IGlcbiAgICAgIClcbiAgICA6IGFycjtcbn1cbiIsImltcG9ydCB7IE1hcmtkb3duVmlldywgQXBwLCBOb3RpY2UsIFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBBcmd1bWVudHMsIFBvc2l0aW9uIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGFkZEJ1dHRvblRvU3RvcmUgfSBmcm9tIFwiLi9idXR0b25TdG9yZVwiO1xuXG5mdW5jdGlvbiBuYW5vaWQobnVtOiBudW1iZXIpIHtcbiAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gIGNvbnN0IGNoYXJhY3RlcnMgPSBcImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiO1xuICBjb25zdCBjaGFyYWN0ZXJzTGVuZ3RoID0gY2hhcmFjdGVycy5sZW5ndGg7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtOyBpKyspIHtcbiAgICByZXN1bHQgKz0gY2hhcmFjdGVycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVyc0xlbmd0aCkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmludGVyZmFjZSBPdXRwdXRPYmplY3Qge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgYWN0aW9uOiBzdHJpbmc7XG4gIHN3YXA6IHN0cmluZztcbiAgcmVtb3ZlOiBzdHJpbmc7XG4gIHJlcGxhY2U6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgdGVtcGxhdGVyOiBib29sZWFuO1xuICBjbGFzczogc3RyaW5nO1xuICBjb2xvcjogc3RyaW5nO1xuICBibG9ja0lkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRCdXR0b24gPSAoYXBwOiBBcHAsIG91dHB1dE9iamVjdDogT3V0cHV0T2JqZWN0KTogdm9pZCA9PiB7XG4gIGNvbnN0IGJ1dHRvbkFyciA9IFtdO1xuICBidXR0b25BcnIucHVzaChcImBgYGJ1dHRvblwiKTtcbiAgb3V0cHV0T2JqZWN0Lm5hbWUgJiYgYnV0dG9uQXJyLnB1c2goYG5hbWUgJHtvdXRwdXRPYmplY3QubmFtZX1gKTtcbiAgb3V0cHV0T2JqZWN0LnR5cGUgJiYgYnV0dG9uQXJyLnB1c2goYHR5cGUgJHtvdXRwdXRPYmplY3QudHlwZX1gKTtcbiAgb3V0cHV0T2JqZWN0LmFjdGlvbiAmJiBidXR0b25BcnIucHVzaChgYWN0aW9uICR7b3V0cHV0T2JqZWN0LmFjdGlvbn1gKTtcbiAgb3V0cHV0T2JqZWN0LmlkICYmIGJ1dHRvbkFyci5wdXNoKGBpZCAke291dHB1dE9iamVjdC5pZH1gKTtcbiAgb3V0cHV0T2JqZWN0LnN3YXAgJiYgYnV0dG9uQXJyLnB1c2goYHN3YXAgJHtvdXRwdXRPYmplY3Quc3dhcH1gKTtcbiAgb3V0cHV0T2JqZWN0LnJlbW92ZSAmJiBidXR0b25BcnIucHVzaChgcmVtb3ZlICR7b3V0cHV0T2JqZWN0LnJlbW92ZX1gKTtcbiAgb3V0cHV0T2JqZWN0LnJlcGxhY2UgJiYgYnV0dG9uQXJyLnB1c2goYHJlcGxhY2UgJHtvdXRwdXRPYmplY3QucmVwbGFjZX1gKTtcbiAgb3V0cHV0T2JqZWN0LnRlbXBsYXRlciA9PT0gdHJ1ZSAmJlxuICAgIGJ1dHRvbkFyci5wdXNoKGB0ZW1wbGF0ZXIgJHtvdXRwdXRPYmplY3QudGVtcGxhdGVyfWApO1xuICBvdXRwdXRPYmplY3QuY29sb3IgJiYgYnV0dG9uQXJyLnB1c2goYGNvbG9yICR7b3V0cHV0T2JqZWN0LmNvbG9yfWApO1xuICBvdXRwdXRPYmplY3QuY2xhc3MgJiYgYnV0dG9uQXJyLnB1c2goYGNsYXNzICR7b3V0cHV0T2JqZWN0LmNsYXNzfWApO1xuICBidXR0b25BcnIucHVzaChcImBgYFwiKTtcbiAgb3V0cHV0T2JqZWN0LmJsb2NrSWRcbiAgICA/IGJ1dHRvbkFyci5wdXNoKGBeYnV0dG9uLSR7b3V0cHV0T2JqZWN0LmJsb2NrSWR9YClcbiAgICA6IGJ1dHRvbkFyci5wdXNoKGBeYnV0dG9uLSR7bmFub2lkKDQpfWApO1xuICBjb25zdCBwYWdlID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gIGNvbnN0IGVkaXRvciA9IHBhZ2UuZWRpdG9yO1xuICBlZGl0b3IucmVwbGFjZVNlbGVjdGlvbihidXR0b25BcnIuam9pbihcIlxcblwiKSk7XG4gIGFkZEJ1dHRvblRvU3RvcmUoYXBwLCBwYWdlLmZpbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydElubGluZUJ1dHRvbiA9IChhcHA6IEFwcCwgaWQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuICBjb25zdCBwYWdlID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gIGNvbnN0IGVkaXRvciA9IHBhZ2UuZWRpdG9yO1xuICBlZGl0b3IucmVwbGFjZVNlbGVjdGlvbihgXFxgYnV0dG9uLSR7aWR9XFxgYCk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQXJndW1lbnRPYmplY3QgPSAoc291cmNlOiBzdHJpbmcpOiBBcmd1bWVudHMgPT5cbiAgc291cmNlLnNwbGl0KFwiXFxuXCIpLnJlZHVjZSgoYWNjOiBBcmd1bWVudHMsIGk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHNwbGl0OiBzdHJpbmdbXSA9IGkuc3BsaXQoXCIgXCIpO1xuICAgIGNvbnN0IGtleTogc3RyaW5nID0gc3BsaXRbMF0udG9Mb3dlckNhc2UoKTtcbiAgICBhY2Nba2V5XSA9IHNwbGl0LmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gc3BsaXRbMF0pLmpvaW4oXCIgXCIpLnRyaW0oKTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb250ZW50QXJyYXkgPSBhc3luYyAoXG4gIGFwcDogQXBwXG4pOiBQcm9taXNlPHsgY29udGVudEFycmF5OiBzdHJpbmdbXTsgZmlsZTogVEZpbGUgfT4gPT4ge1xuICBjb25zdCBhY3RpdmVWaWV3ID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gIGlmIChhY3RpdmVWaWV3KSB7XG4gICAgY29uc3QgZmlsZSA9IGFjdGl2ZVZpZXcuZmlsZTtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gICAgcmV0dXJuIHsgY29udGVudEFycmF5OiBjb250ZW50LnNwbGl0KFwiXFxuXCIpLCBmaWxlIH07XG4gIH1cbiAgbmV3IE5vdGljZShcIkNvdWxkIG5vdCBnZXQgQWN0aXZlIFZpZXdcIiwgMTAwMCk7XG4gIGNvbnNvbGUuZXJyb3IoXCJjb3VsZCBub3QgZ2V0IGFjdGl2ZSB2aWV3XCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVZhbHVlQXJyYXkgPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIGNhbGxiYWNrOiAoYXJnQXJyYXk6IHN0cmluZ1tdKSA9PiB2b2lkXG4pOiB2b2lkID0+IHtcbiAgaWYgKHZhbHVlLmluY2x1ZGVzKFwiW1wiKSAmJiB2YWx1ZS5pbmNsdWRlcyhcIl1cIikpIHtcbiAgICBjb25zdCBhcmdzID0gdmFsdWUubWF0Y2goL1xcWyguKilcXF0vKTtcbiAgICBpZiAoYXJnc1sxXSkge1xuICAgICAgY29uc3QgYXJnQXJyYXkgPSBhcmdzWzFdLnNwbGl0KC8sXFxzPy8pO1xuICAgICAgaWYgKGFyZ0FycmF5WzBdKSB7XG4gICAgICAgIGNhbGxiYWNrKGFyZ0FycmF5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXdBcmdzKFxuICBhcHA6IEFwcCxcbiAgcG9zaXRpb246IFBvc2l0aW9uXG4pOiBQcm9taXNlPHsgYXJnczogQXJndW1lbnRzOyBjb250ZW50OiBzdHJpbmcgfT4ge1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSBhcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcbiAgICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHRcbiAgICAgICAgLmNhY2hlZFJlYWQoYWN0aXZlVmlldy5maWxlKVxuICAgICAgICAudGhlbigoY29udGVudDogc3RyaW5nKSA9PiBjb250ZW50LnNwbGl0KFwiXFxuXCIpKTtcbiAgICAgIGNvbnN0IG5ld0J1dHRvbiA9IG5ld0NvbnRlbnRcbiAgICAgICAgLnNwbGljZShwb3NpdGlvbi5saW5lU3RhcnQsIHBvc2l0aW9uLmxpbmVFbmQgLSBwb3NpdGlvbi5saW5lU3RhcnQpXG4gICAgICAgIC5qb2luKFwiXFxuXCIpXG4gICAgICAgIC5yZXBsYWNlKFwiYGBgYnV0dG9uXCIsIFwiXCIpXG4gICAgICAgIC5yZXBsYWNlKFwiYGBgXCIsIFwiXCIpO1xuICAgICAgcmVzb2x2ZSh7IGFyZ3M6IGNyZWF0ZUFyZ3VtZW50T2JqZWN0KG5ld0J1dHRvbikgfSk7XG4gICAgfSwgMTUwKTtcbiAgfSk7XG4gIHJldHVybiBwcm9taXNlIGFzIFByb21pc2U8eyBhcmdzOiBBcmd1bWVudHM7IGNvbnRlbnQ6IHN0cmluZyB9Pjtcbn1cblxuZXhwb3J0IGNvbnN0IHdyYXBBcm91bmQgPSAodmFsdWU6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuICgodmFsdWUgJSBzaXplKSArIHNpemUpICUgc2l6ZTtcbn07XG4iLCJpbXBvcnQgeyBBcHAsIEV2ZW50UmVmLCBURmlsZSwgRXZlbnRzIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmV4cG9ydCBjb25zdCBidXR0b25FdmVudExpc3RlbmVyID0gKFxuICBhcHA6IEFwcCxcbiAgY2FsbGJhY2s6IChhcHA6IEFwcCwgZmlsZTogVEZpbGUpID0+IHZvaWRcbik6IEV2ZW50UmVmID0+IHtcbiAgcmV0dXJuIGFwcC5tZXRhZGF0YUNhY2hlLm9uKFwiY2hhbmdlZFwiLCAoZmlsZTogVEZpbGUpID0+IHtcbiAgICBjYWxsYmFjayhhcHAsIGZpbGUpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsaXplTGlzdGVuZXIgPSAoXG4gIGFwcDogQXBwLFxuICBjYWxsYmFjazogKGFwcDogQXBwKSA9PiB2b2lkXG4pOiBFdmVudFJlZiA9PiB7XG4gIHJldHVybiBhcHAubWV0YWRhdGFDYWNoZS5vbihcInJlc29sdmVkXCIsICgpID0+IHtcbiAgICBjYWxsYmFjayhhcHApO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBvcGVuRmlsZUxpc3RlbmVyID0gKFxuICBhcHA6IEFwcCxcbiAgc3RvcmVFdmVudHM6IEV2ZW50cyxcbiAgY2FsbGJhY2s6IChhcHA6IEFwcCwgc3RvcmVFdmVudHM6IEV2ZW50cykgPT4gdm9pZFxuKTogRXZlbnRSZWYgPT4ge1xuICByZXR1cm4gYXBwLndvcmtzcGFjZS5vbihcImZpbGUtb3BlblwiLCAoKSA9PiB7XG4gICAgY2FsbGJhY2soYXBwLCBzdG9yZUV2ZW50cyk7XG4gIH0pO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgTWV4cCA9IGZ1bmN0aW9uIChwYXJzZWQpIHtcclxuICB0aGlzLnZhbHVlID0gcGFyc2VkXHJcbn1cclxuXHJcbk1leHAubWF0aCA9IHtcclxuICBpc0RlZ3JlZTogdHJ1ZSwgLy8gbW9kZSBvZiBjYWxjdWxhdG9yXHJcbiAgYWNvczogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiAoTWV4cC5tYXRoLmlzRGVncmVlID8gMTgwIC8gTWF0aC5QSSAqIE1hdGguYWNvcyh4KSA6IE1hdGguYWNvcyh4KSlcclxuICB9LFxyXG4gIGFkZDogZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgIHJldHVybiBhICsgYlxyXG4gIH0sXHJcbiAgYXNpbjogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiAoTWV4cC5tYXRoLmlzRGVncmVlID8gMTgwIC8gTWF0aC5QSSAqIE1hdGguYXNpbih4KSA6IE1hdGguYXNpbih4KSlcclxuICB9LFxyXG4gIGF0YW46IGZ1bmN0aW9uICh4KSB7XHJcbiAgICByZXR1cm4gKE1leHAubWF0aC5pc0RlZ3JlZSA/IDE4MCAvIE1hdGguUEkgKiBNYXRoLmF0YW4oeCkgOiBNYXRoLmF0YW4oeCkpXHJcbiAgfSxcclxuICBhY29zaDogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiBNYXRoLmxvZyh4ICsgTWF0aC5zcXJ0KHggKiB4IC0gMSkpXHJcbiAgfSxcclxuICBhc2luaDogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiBNYXRoLmxvZyh4ICsgTWF0aC5zcXJ0KHggKiB4ICsgMSkpXHJcbiAgfSxcclxuICBhdGFuaDogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiBNYXRoLmxvZygoMSArIHgpIC8gKDEgLSB4KSlcclxuICB9LFxyXG4gIEM6IGZ1bmN0aW9uIChuLCByKSB7XHJcbiAgICB2YXIgcHJvID0gMVxyXG4gICAgdmFyIG90aGVyID0gbiAtIHJcclxuICAgIHZhciBjaG9pY2UgPSByXHJcbiAgICBpZiAoY2hvaWNlIDwgb3RoZXIpIHtcclxuICAgICAgY2hvaWNlID0gb3RoZXJcclxuICAgICAgb3RoZXIgPSByXHJcbiAgICB9XHJcbiAgICBmb3IgKHZhciBpID0gY2hvaWNlICsgMTsgaSA8PSBuOyBpKyspIHtcclxuICAgICAgcHJvICo9IGlcclxuICAgIH1cclxuICAgIHJldHVybiBwcm8gLyBNZXhwLm1hdGguZmFjdChvdGhlcilcclxuICB9LFxyXG4gIGNoYW5nZVNpZ246IGZ1bmN0aW9uICh4KSB7XHJcbiAgICByZXR1cm4gLXhcclxuICB9LFxyXG4gIGNvczogZnVuY3Rpb24gKHgpIHtcclxuICAgIGlmIChNZXhwLm1hdGguaXNEZWdyZWUpIHggPSBNZXhwLm1hdGgudG9SYWRpYW4oeClcclxuICAgIHJldHVybiBNYXRoLmNvcyh4KVxyXG4gIH0sXHJcbiAgY29zaDogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiAoTWF0aC5wb3coTWF0aC5FLCB4KSArIE1hdGgucG93KE1hdGguRSwgLTEgKiB4KSkgLyAyXHJcbiAgfSxcclxuICBkaXY6IGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICByZXR1cm4gYSAvIGJcclxuICB9LFxyXG4gIGZhY3Q6IGZ1bmN0aW9uIChuKSB7XHJcbiAgICBpZiAobiAlIDEgIT09IDApIHJldHVybiAnTmFOJ1xyXG4gICAgdmFyIHBybyA9IDFcclxuICAgIGZvciAodmFyIGkgPSAyOyBpIDw9IG47IGkrKykge1xyXG4gICAgICBwcm8gKj0gaVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb1xyXG4gIH0sXHJcbiAgaW52ZXJzZTogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiAxIC8geFxyXG4gIH0sXHJcbiAgbG9nOiBmdW5jdGlvbiAoaSkge1xyXG4gICAgcmV0dXJuIE1hdGgubG9nKGkpIC8gTWF0aC5sb2coMTApXHJcbiAgfSxcclxuICBtb2Q6IGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICByZXR1cm4gYSAlIGJcclxuICB9LFxyXG4gIG11bDogZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgIHJldHVybiBhICogYlxyXG4gIH0sXHJcbiAgUDogZnVuY3Rpb24gKG4sIHIpIHtcclxuICAgIHZhciBwcm8gPSAxXHJcbiAgICBmb3IgKHZhciBpID0gTWF0aC5mbG9vcihuKSAtIE1hdGguZmxvb3IocikgKyAxOyBpIDw9IE1hdGguZmxvb3Iobik7IGkrKykge1xyXG4gICAgICBwcm8gKj0gaVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb1xyXG4gIH0sXHJcbiAgUGk6IGZ1bmN0aW9uIChsb3csIGhpZ2gsIGV4KSB7XHJcbiAgICB2YXIgcHJvID0gMVxyXG4gICAgZm9yICh2YXIgaSA9IGxvdzsgaSA8PSBoaWdoOyBpKyspIHtcclxuICAgICAgcHJvICo9IE51bWJlcihleC5wb3N0Zml4RXZhbCh7XHJcbiAgICAgICAgbjogaVxyXG4gICAgICB9KSlcclxuICAgIH1cclxuICAgIHJldHVybiBwcm9cclxuICB9LFxyXG4gIHBvdzEweDogZnVuY3Rpb24gKGUpIHtcclxuICAgIHZhciB4ID0gMVxyXG4gICAgd2hpbGUgKGUtLSkge1xyXG4gICAgICB4ICo9IDEwXHJcbiAgICB9XHJcbiAgICByZXR1cm4geFxyXG4gIH0sXHJcbiAgc2lnbWE6IGZ1bmN0aW9uIChsb3csIGhpZ2gsIGV4KSB7XHJcbiAgICB2YXIgc3VtID0gMFxyXG4gICAgZm9yICh2YXIgaSA9IGxvdzsgaSA8PSBoaWdoOyBpKyspIHtcclxuICAgICAgc3VtICs9IE51bWJlcihleC5wb3N0Zml4RXZhbCh7XHJcbiAgICAgICAgbjogaVxyXG4gICAgICB9KSlcclxuICAgIH1cclxuICAgIHJldHVybiBzdW1cclxuICB9LFxyXG4gIHNpbjogZnVuY3Rpb24gKHgpIHtcclxuICAgIGlmIChNZXhwLm1hdGguaXNEZWdyZWUpIHggPSBNZXhwLm1hdGgudG9SYWRpYW4oeClcclxuICAgIHJldHVybiBNYXRoLnNpbih4KVxyXG4gIH0sXHJcbiAgc2luaDogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiAoTWF0aC5wb3coTWF0aC5FLCB4KSAtIE1hdGgucG93KE1hdGguRSwgLTEgKiB4KSkgLyAyXHJcbiAgfSxcclxuICBzdWI6IGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICByZXR1cm4gYSAtIGJcclxuICB9LFxyXG4gIHRhbjogZnVuY3Rpb24gKHgpIHtcclxuICAgIGlmIChNZXhwLm1hdGguaXNEZWdyZWUpIHggPSBNZXhwLm1hdGgudG9SYWRpYW4oeClcclxuICAgIHJldHVybiBNYXRoLnRhbih4KVxyXG4gIH0sXHJcbiAgdGFuaDogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiBNZXhwLnNpbmhhKHgpIC8gTWV4cC5jb3NoYSh4KVxyXG4gIH0sXHJcbiAgdG9SYWRpYW46IGZ1bmN0aW9uICh4KSB7XHJcbiAgICByZXR1cm4geCAqIE1hdGguUEkgLyAxODBcclxuICB9XHJcbn1cclxuTWV4cC5FeGNlcHRpb24gPSBmdW5jdGlvbiAobWVzc2FnZSkge1xyXG4gIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2VcclxufVxyXG5tb2R1bGUuZXhwb3J0cyA9IE1leHBcclxuIiwiJ3VzZSBzdHJpY3QnXHJcbnZhciBNZXhwID0gcmVxdWlyZSgnLi9tYXRoX2Z1bmN0aW9uLmpzJylcclxuZnVuY3Rpb24gaW5jIChhcnIsIHZhbCkge1xyXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBhcnJbaV0gKz0gdmFsXHJcbiAgfVxyXG4gIHJldHVybiBhcnJcclxufVxyXG52YXIgdG9rZW4gPSBbXHJcbiAgJ3NpbicsXHJcbiAgJ2NvcycsXHJcbiAgJ3RhbicsXHJcbiAgJ3BpJyxcclxuICAnKCcsXHJcbiAgJyknLFxyXG4gICdQJyxcclxuICAnQycsXHJcbiAgJyAnLFxyXG4gICdhc2luJyxcclxuICAnYWNvcycsXHJcbiAgJ2F0YW4nLFxyXG4gICc3JyxcclxuICAnOCcsXHJcbiAgJzknLFxyXG4gICdpbnQnLFxyXG4gICdjb3NoJyxcclxuICAnYWNvc2gnLFxyXG4gICdsbicsXHJcbiAgJ14nLFxyXG4gICdyb290JyxcclxuICAnNCcsXHJcbiAgJzUnLFxyXG4gICc2JyxcclxuICAnLycsXHJcbiAgJyEnLFxyXG4gICd0YW5oJyxcclxuICAnYXRhbmgnLFxyXG4gICdNb2QnLFxyXG4gICcxJyxcclxuICAnMicsXHJcbiAgJzMnLFxyXG4gICcqJyxcclxuICAnc2luaCcsXHJcbiAgJ2FzaW5oJyxcclxuICAnZScsXHJcbiAgJ2xvZycsXHJcbiAgJzAnLFxyXG4gICcuJyxcclxuICAnKycsXHJcbiAgJy0nLFxyXG4gICcsJyxcclxuICAnU2lnbWEnLFxyXG4gICduJyxcclxuICAnUGknLFxyXG4gICdwb3cnXHJcbl1cclxudmFyIHNob3cgPSBbXHJcbiAgJ3NpbicsXHJcbiAgJ2NvcycsXHJcbiAgJ3RhbicsXHJcbiAgJyZwaTsnLFxyXG4gICcoJyxcclxuICAnKScsXHJcbiAgJ1AnLFxyXG4gICdDJyxcclxuICAnICcsXHJcbiAgJ2FzaW4nLFxyXG4gICdhY29zJyxcclxuICAnYXRhbicsXHJcbiAgJzcnLFxyXG4gICc4JyxcclxuICAnOScsXHJcbiAgJ0ludCcsXHJcbiAgJ2Nvc2gnLFxyXG4gICdhY29zaCcsXHJcbiAgJyBsbicsXHJcbiAgJ14nLFxyXG4gICdyb290JyxcclxuICAnNCcsXHJcbiAgJzUnLFxyXG4gICc2JyxcclxuICAnJmRpdmlkZTsnLFxyXG4gICchJyxcclxuICAndGFuaCcsXHJcbiAgJ2F0YW5oJyxcclxuICAnIE1vZCAnLFxyXG4gICcxJyxcclxuICAnMicsXHJcbiAgJzMnLFxyXG4gICcmdGltZXM7JyxcclxuICAnc2luaCcsXHJcbiAgJ2FzaW5oJyxcclxuICAnZScsXHJcbiAgJyBsb2cnLFxyXG4gICcwJyxcclxuICAnLicsXHJcbiAgJysnLFxyXG4gICctJyxcclxuICAnLCcsXHJcbiAgJyZTaWdtYTsnLFxyXG4gICduJyxcclxuICAnJlBpOycsXHJcbiAgJ3BvdydcclxuXVxyXG52YXIgZXZhID0gW1xyXG4gIE1leHAubWF0aC5zaW4sXHJcbiAgTWV4cC5tYXRoLmNvcyxcclxuICBNZXhwLm1hdGgudGFuLFxyXG4gICdQSScsXHJcbiAgJygnLFxyXG4gICcpJyxcclxuICBNZXhwLm1hdGguUCxcclxuICBNZXhwLm1hdGguQyxcclxuICAnICcuYW5jaG9yLFxyXG4gIE1leHAubWF0aC5hc2luLFxyXG4gIE1leHAubWF0aC5hY29zLFxyXG4gIE1leHAubWF0aC5hdGFuLFxyXG4gICc3JyxcclxuICAnOCcsXHJcbiAgJzknLFxyXG4gIE1hdGguZmxvb3IsXHJcbiAgTWV4cC5tYXRoLmNvc2gsXHJcbiAgTWV4cC5tYXRoLmFjb3NoLFxyXG4gIE1hdGgubG9nLFxyXG4gIE1hdGgucG93LFxyXG4gIE1hdGguc3FydCxcclxuICAnNCcsXHJcbiAgJzUnLFxyXG4gICc2JyxcclxuICBNZXhwLm1hdGguZGl2LFxyXG4gIE1leHAubWF0aC5mYWN0LFxyXG4gIE1leHAubWF0aC50YW5oLFxyXG4gIE1leHAubWF0aC5hdGFuaCxcclxuICBNZXhwLm1hdGgubW9kLFxyXG4gICcxJyxcclxuICAnMicsXHJcbiAgJzMnLFxyXG4gIE1leHAubWF0aC5tdWwsXHJcbiAgTWV4cC5tYXRoLnNpbmgsXHJcbiAgTWV4cC5tYXRoLmFzaW5oLFxyXG4gICdFJyxcclxuICBNZXhwLm1hdGgubG9nLFxyXG4gICcwJyxcclxuICAnLicsXHJcbiAgTWV4cC5tYXRoLmFkZCxcclxuICBNZXhwLm1hdGguc3ViLFxyXG4gICcsJyxcclxuICBNZXhwLm1hdGguc2lnbWEsXHJcbiAgJ24nLFxyXG4gIE1leHAubWF0aC5QaSxcclxuICBNYXRoLnBvd1xyXG5dXHJcbnZhciBwcmVjZWQgPSB7XHJcbiAgMDogMTEsXHJcbiAgMTogMCxcclxuICAyOiAzLFxyXG4gIDM6IDAsXHJcbiAgNDogMCxcclxuICA1OiAwLFxyXG4gIDY6IDAsXHJcbiAgNzogMTEsXHJcbiAgODogMTEsXHJcbiAgOTogMSxcclxuICAxMDogMTAsXHJcbiAgMTE6IDAsXHJcbiAgMTI6IDExLFxyXG4gIDEzOiAwLFxyXG4gIDE0OiAtMSAvLyB3aWxsIGJlIGZpbHRlcmVkIGFmdGVyIGxleGVyXHJcbn0gLy8gc3RvcmVzIHByZWNlZGVuY2UgYnkgdHlwZXNcclxudmFyIHR5cGUgPSBbXHJcbiAgMCwgMCwgMCwgMywgNCwgNSwgMTAsIDEwLCAxNCwgMCwgMCwgMCwgMSwgMSwgMSwgMCwgMCwgMCwgMCwgMTAsIDAsIDEsIDEsIDEsIDIsIDcsIDAsIDAsIDIsIDEsIDEsXHJcbiAgMSwgMiwgMCwgMCwgMywgMCwgMSwgNiwgOSwgOSwgMTEsIDEyLCAxMywgMTIsIDhcclxuXVxyXG4vKlxyXG4wIDogZnVuY3Rpb24gd2l0aCBzeW50YXggZnVuY3Rpb25fbmFtZShNYXRoc19leHApXHJcbjEgOiBudW1iZXJzXHJcbjIgOiBiaW5hcnkgb3BlcmF0b3JzIGxpa2UgKiAvIE1vZCBsZWZ0IGFzc29jaWF0ZSBhbmQgc2FtZSBwcmVjZWRlbmNlXHJcbjMgOiBNYXRoIGNvbnN0YW50IHZhbHVlcyBsaWtlIGUscGksQ3J1bmNoZXIgYW5zXHJcbjQgOiBvcGVuaW5nIGJyYWNrZXRcclxuNSA6IGNsb3NpbmcgYnJhY2tldFxyXG42IDogZGVjaW1hbFxyXG43IDogZnVuY3Rpb24gd2l0aCBzeW50YXggKE1hdGhfZXhwKWZ1bmN0aW9uX25hbWVcclxuODogZnVuY3Rpb24gd2l0aCBzeW50YXggZnVuY3Rpb25fbmFtZShNYXRoX2V4cDEsTWF0aF9leHAyKVxyXG45IDogYmluYXJ5IG9wZXJhdG9yIGxpa2UgKywtXHJcbjEwOiBiaW5hcnkgb3BlcmF0b3IgbGlrZSBQIEMgb3IgXlxyXG4xMTogLFxyXG4xMjogZnVuY3Rpb24gd2l0aCAsIHNlcGVyYXRlZCB0aHJlZSBwYXJhbWV0ZXJzIGFuZCB0aGlyZCBwYXJhbWV0ZXIgaXMgYSBzdHJpbmcgdGhhdCB3aWxsIGJlIG1leHAgc3RyaW5nXHJcbjEzOiB2YXJpYWJsZSBvZiBTaWdtYSBmdW5jdGlvblxyXG4qL1xyXG52YXIgdHlwZTAgPSB7XHJcbiAgMDogdHJ1ZSxcclxuICAxOiB0cnVlLFxyXG4gIDM6IHRydWUsXHJcbiAgNDogdHJ1ZSxcclxuICA2OiB0cnVlLFxyXG4gIDg6IHRydWUsXHJcbiAgOTogdHJ1ZSxcclxuICAxMjogdHJ1ZSxcclxuICAxMzogdHJ1ZSxcclxuICAxNDogdHJ1ZVxyXG59IC8vIHR5cGUyOnRydWUsdHlwZTQ6dHJ1ZSx0eXBlOTp0cnVlLHR5cGUxMTp0cnVlLHR5cGUyMTp0cnVlLHR5cGUyMlxyXG52YXIgdHlwZTEgPSB7XHJcbiAgMDogdHJ1ZSxcclxuICAxOiB0cnVlLFxyXG4gIDI6IHRydWUsXHJcbiAgMzogdHJ1ZSxcclxuICA0OiB0cnVlLFxyXG4gIDU6IHRydWUsXHJcbiAgNjogdHJ1ZSxcclxuICA3OiB0cnVlLFxyXG4gIDg6IHRydWUsXHJcbiAgOTogdHJ1ZSxcclxuICAxMDogdHJ1ZSxcclxuICAxMTogdHJ1ZSxcclxuICAxMjogdHJ1ZSxcclxuICAxMzogdHJ1ZVxyXG59IC8vIHR5cGUzOnRydWUsdHlwZTU6dHJ1ZSx0eXBlNzp0cnVlLHR5cGUyM1xyXG52YXIgdHlwZTFBc3RlcmljayA9IHtcclxuICAwOiB0cnVlLFxyXG4gIDM6IHRydWUsXHJcbiAgNDogdHJ1ZSxcclxuICA4OiB0cnVlLFxyXG4gIDEyOiB0cnVlLFxyXG4gIDEzOiB0cnVlXHJcbn1cclxudmFyIGVtcHR5ID0ge31cclxudmFyIHR5cGUzQXN0ZXJpY2sgPSB7XHJcbiAgMDogdHJ1ZSxcclxuICAxOiB0cnVlLFxyXG4gIDM6IHRydWUsXHJcbiAgNDogdHJ1ZSxcclxuICA2OiB0cnVlLFxyXG4gIDg6IHRydWUsXHJcbiAgMTI6IHRydWUsXHJcbiAgMTM6IHRydWVcclxufSAvLyB0eXBlXzU6dHJ1ZSx0eXBlXzc6dHJ1ZSx0eXBlXzIzXHJcbnZhciB0eXBlNiA9IHtcclxuICAxOiB0cnVlXHJcbn1cclxudmFyIG5ld0FyID0gW1xyXG4gIFtdLFxyXG4gIFtcclxuICAgICcxJyxcclxuICAgICcyJyxcclxuICAgICczJyxcclxuICAgICc3JyxcclxuICAgICc4JyxcclxuICAgICc5JyxcclxuICAgICc0JyxcclxuICAgICc1JyxcclxuICAgICc2JyxcclxuICAgICcrJyxcclxuICAgICctJyxcclxuICAgICcqJyxcclxuICAgICcvJyxcclxuICAgICcoJyxcclxuICAgICcpJyxcclxuICAgICdeJyxcclxuICAgICchJyxcclxuICAgICdQJyxcclxuICAgICdDJyxcclxuICAgICdlJyxcclxuICAgICcwJyxcclxuICAgICcuJyxcclxuICAgICcsJyxcclxuICAgICduJyxcclxuICAgICcgJ1xyXG4gIF0sXHJcbiAgWydwaScsICdsbicsICdQaSddLFxyXG4gIFsnc2luJywgJ2NvcycsICd0YW4nLCAnRGVsJywgJ2ludCcsICdNb2QnLCAnbG9nJywgJ3BvdyddLFxyXG4gIFsnYXNpbicsICdhY29zJywgJ2F0YW4nLCAnY29zaCcsICdyb290JywgJ3RhbmgnLCAnc2luaCddLFxyXG4gIFsnYWNvc2gnLCAnYXRhbmgnLCAnYXNpbmgnLCAnU2lnbWEnXVxyXG5dXHJcblxyXG5mdW5jdGlvbiBtYXRjaCAoc3RyMSwgc3RyMiwgaSwgeCkge1xyXG4gIGZvciAodmFyIGYgPSAwOyBmIDwgeDsgZisrKSB7XHJcbiAgICBpZiAoc3RyMVtpICsgZl0gIT09IHN0cjJbZl0pIHtcclxuICAgICAgcmV0dXJuIGZhbHNlXHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiB0cnVlXHJcbn1cclxuTWV4cC5hZGRUb2tlbiA9IGZ1bmN0aW9uICh0b2tlbnMpIHtcclxuICBmb3IgKHZhciBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xyXG4gICAgdmFyIHggPSB0b2tlbnNbaV0udG9rZW4ubGVuZ3RoXHJcbiAgICB2YXIgdGVtcCA9IC0xXHJcblxyXG4gICAgLy8gbmV3QXIgaXMgYSBzcGVjaWFsbHkgZGVzaWduZWQgZGF0YSBzdHJ1Y3R1cmUgaW5kZXggb2YgMWQgYXJyYXkgPSBsZW5ndGggb2YgdG9rZW5zXHJcbiAgICBuZXdBclt4XSA9IG5ld0FyW3hdIHx8IFtdXHJcbiAgICBmb3IgKHZhciB5ID0gMDsgeSA8IG5ld0FyW3hdLmxlbmd0aDsgeSsrKSB7XHJcbiAgICAgIGlmICh0b2tlbnNbaV0udG9rZW4gPT09IG5ld0FyW3hdW3ldKSB7XHJcbiAgICAgICAgdGVtcCA9IHRva2VuLmluZGV4T2YobmV3QXJbeF1beV0pXHJcbiAgICAgICAgYnJlYWtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRlbXAgPT09IC0xKSB7XHJcbiAgICAgIHRva2VuLnB1c2godG9rZW5zW2ldLnRva2VuKVxyXG4gICAgICB0eXBlLnB1c2godG9rZW5zW2ldLnR5cGUpXHJcbiAgICAgIGlmIChuZXdBci5sZW5ndGggPD0gdG9rZW5zW2ldLnRva2VuLmxlbmd0aCkge1xyXG4gICAgICAgIG5ld0FyW3Rva2Vuc1tpXS50b2tlbi5sZW5ndGhdID0gW11cclxuICAgICAgfVxyXG4gICAgICBuZXdBclt0b2tlbnNbaV0udG9rZW4ubGVuZ3RoXS5wdXNoKHRva2Vuc1tpXS50b2tlbilcclxuICAgICAgZXZhLnB1c2godG9rZW5zW2ldLnZhbHVlKVxyXG4gICAgICBzaG93LnB1c2godG9rZW5zW2ldLnNob3cpXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBvdmVyd3JpdGVcclxuICAgICAgdG9rZW5bdGVtcF0gPSB0b2tlbnNbaV0udG9rZW5cclxuICAgICAgdHlwZVt0ZW1wXSA9IHRva2Vuc1tpXS50eXBlXHJcbiAgICAgIGV2YVt0ZW1wXSA9IHRva2Vuc1tpXS52YWx1ZVxyXG4gICAgICBzaG93W3RlbXBdID0gdG9rZW5zW2ldLnNob3dcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRva2VuaXplIChzdHJpbmcpIHtcclxuICB2YXIgbm9kZXMgPSBbXVxyXG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoXHJcbiAgdmFyIGtleSwgeCwgeVxyXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgIGlmIChpIDwgbGVuZ3RoIC0gMSAmJiBzdHJpbmdbaV0gPT09ICcgJyAmJiBzdHJpbmdbaSArIDFdID09PSAnICcpIHtcclxuICAgICAgY29udGludWVcclxuICAgIH1cclxuICAgIGtleSA9ICcnXHJcbiAgICBmb3IgKFxyXG4gICAgICB4ID0gc3RyaW5nLmxlbmd0aCAtIGkgPiBuZXdBci5sZW5ndGggLSAyID8gbmV3QXIubGVuZ3RoIC0gMSA6IHN0cmluZy5sZW5ndGggLSBpO1xyXG4gICAgICB4ID4gMDtcclxuICAgICAgeC0tXHJcbiAgICApIHtcclxuICAgICAgaWYgKG5ld0FyW3hdID09PSB1bmRlZmluZWQpIGNvbnRpbnVlXHJcbiAgICAgIGZvciAoeSA9IDA7IHkgPCBuZXdBclt4XS5sZW5ndGg7IHkrKykge1xyXG4gICAgICAgIGlmIChtYXRjaChzdHJpbmcsIG5ld0FyW3hdW3ldLCBpLCB4KSkge1xyXG4gICAgICAgICAga2V5ID0gbmV3QXJbeF1beV1cclxuICAgICAgICAgIHkgPSBuZXdBclt4XS5sZW5ndGhcclxuICAgICAgICAgIHggPSAwXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpICs9IGtleS5sZW5ndGggLSAxXHJcbiAgICBpZiAoa2V5ID09PSAnJykge1xyXG4gICAgICB0aHJvdyBuZXcgTWV4cC5FeGNlcHRpb24oXCJDYW4ndCB1bmRlcnN0YW5kIGFmdGVyIFwiICsgc3RyaW5nLnNsaWNlKGkpKVxyXG4gICAgfVxyXG4gICAgdmFyIGluZGV4ID0gdG9rZW4uaW5kZXhPZihrZXkpXHJcbiAgICBub2Rlcy5wdXNoKHtcclxuICAgICAgaW5kZXg6IGluZGV4LFxyXG4gICAgICB0b2tlbjoga2V5LFxyXG4gICAgICB0eXBlOiB0eXBlW2luZGV4XSxcclxuICAgICAgZXZhbDogZXZhW2luZGV4XSxcclxuICAgICAgcHJlY2VkZW5jZTogcHJlY2VkW3R5cGVbaW5kZXhdXSxcclxuICAgICAgc2hvdzogc2hvd1tpbmRleF1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHJldHVybiBub2Rlc1xyXG59XHJcblxyXG5NZXhwLmxleCA9IGZ1bmN0aW9uIChpbnAsIHRva2Vucykge1xyXG4gICd1c2Ugc3RyaWN0J1xyXG5cclxuICB2YXIgY2hhbmdlU2lnbk9iaiA9IHtcclxuICAgIHZhbHVlOiBNZXhwLm1hdGguY2hhbmdlU2lnbixcclxuICAgIHR5cGU6IDAsXHJcbiAgICBwcmU6IDIxLFxyXG4gICAgc2hvdzogJy0nXHJcbiAgfVxyXG4gIHZhciBjbG9zaW5nUGFyT2JqID0ge1xyXG4gICAgdmFsdWU6ICcpJyxcclxuICAgIHNob3c6ICcpJyxcclxuICAgIHR5cGU6IDUsXHJcbiAgICBwcmU6IDBcclxuICB9XHJcbiAgdmFyIG9wZW5pbmdQYXJPYmogPSB7XHJcbiAgICB2YWx1ZTogJygnLFxyXG4gICAgdHlwZTogNCxcclxuICAgIHByZTogMCxcclxuICAgIHNob3c6ICcoJ1xyXG4gIH1cclxuICB2YXIgc3RyID0gW29wZW5pbmdQYXJPYmpdXHJcblxyXG4gIHZhciBwdGMgPSBbXSAvLyBQYXJlbnRoZXNpcyB0byBjbG9zZSBhdCB0aGUgYmVnaW5uaW5nIGlzIGFmdGVyIG9uZSB0b2tlblxyXG4gIHZhciBpbnBTdHIgPSBpbnBcclxuICB2YXIgYWxsb3dlZCA9IHR5cGUwXHJcbiAgdmFyIGJyYWNUb0Nsb3NlID0gMFxyXG4gIHZhciBhc3RlcmljayA9IGVtcHR5XHJcbiAgdmFyIHByZXZLZXkgPSAnJ1xyXG4gIHZhciBpXHJcbiAgaWYgKHR5cGVvZiB0b2tlbnMgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICBNZXhwLmFkZFRva2VuKHRva2VucylcclxuICB9XHJcbiAgdmFyIG9iaiA9IHt9XHJcbiAgdmFyIG5vZGVzID0gdG9rZW5pemUoaW5wU3RyKVxyXG4gIGZvciAoaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgdmFyIG5vZGUgPSBub2Rlc1tpXVxyXG4gICAgaWYgKG5vZGUudHlwZSA9PT0gMTQpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGkgPiAwICYmXHJcbiAgICAgICAgaSA8IG5vZGVzLmxlbmd0aCAtIDEgJiZcclxuICAgICAgICBub2Rlc1tpICsgMV0udHlwZSA9PT0gMSAmJlxyXG4gICAgICAgIChub2Rlc1tpIC0gMV0udHlwZSA9PT0gMSB8fCBub2Rlc1tpIC0gMV0udHlwZSA9PT0gNilcclxuICAgICAgKSB7IHRocm93IG5ldyBNZXhwLkV4Y2VwdGlvbignVW5leHBlY3RlZCBTcGFjZScpIH1cclxuICAgICAgY29udGludWVcclxuICAgIH1cclxuICAgIHZhciBjVG9rZW4gPSBub2RlLnRva2VuXHJcbiAgICB2YXIgY1R5cGUgPSBub2RlLnR5cGVcclxuICAgIHZhciBjRXYgPSBub2RlLmV2YWxcclxuICAgIHZhciBjUHJlID0gbm9kZS5wcmVjZWRlbmNlXHJcbiAgICB2YXIgY1Nob3cgPSBub2RlLnNob3dcclxuICAgIHZhciBwcmUgPSBzdHJbc3RyLmxlbmd0aCAtIDFdXHJcbiAgICB2YXIgalxyXG4gICAgZm9yIChqID0gcHRjLmxlbmd0aDsgai0tOykge1xyXG4gICAgICAvLyBsb29wIG92ZXIgcHRjXHJcbiAgICAgIGlmIChwdGNbal0gPT09IDApIHtcclxuICAgICAgICBpZiAoWzAsIDIsIDMsIDQsIDUsIDksIDExLCAxMiwgMTNdLmluZGV4T2YoY1R5cGUpICE9PSAtMSkge1xyXG4gICAgICAgICAgaWYgKGFsbG93ZWRbY1R5cGVdICE9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBNZXhwLkV4Y2VwdGlvbihjVG9rZW4gKyAnIGlzIG5vdCBhbGxvd2VkIGFmdGVyICcgKyBwcmV2S2V5KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgc3RyLnB1c2goY2xvc2luZ1Bhck9iailcclxuICAgICAgICAgIGFsbG93ZWQgPSB0eXBlMVxyXG4gICAgICAgICAgYXN0ZXJpY2sgPSB0eXBlM0FzdGVyaWNrXHJcbiAgICAgICAgICBpbmMocHRjLCAtMSkucG9wKClcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBicmVha1xyXG4gICAgfVxyXG4gICAgaWYgKGFsbG93ZWRbY1R5cGVdICE9PSB0cnVlKSB7XHJcbiAgICAgIHRocm93IG5ldyBNZXhwLkV4Y2VwdGlvbihjVG9rZW4gKyAnIGlzIG5vdCBhbGxvd2VkIGFmdGVyICcgKyBwcmV2S2V5KVxyXG4gICAgfVxyXG4gICAgaWYgKGFzdGVyaWNrW2NUeXBlXSA9PT0gdHJ1ZSkge1xyXG4gICAgICBjVHlwZSA9IDJcclxuICAgICAgY0V2ID0gTWV4cC5tYXRoLm11bFxyXG4gICAgICBjU2hvdyA9ICcmdGltZXM7J1xyXG4gICAgICBjUHJlID0gM1xyXG4gICAgICBpID0gaSAtIDFcclxuICAgIH1cclxuICAgIG9iaiA9IHtcclxuICAgICAgdmFsdWU6IGNFdixcclxuICAgICAgdHlwZTogY1R5cGUsXHJcbiAgICAgIHByZTogY1ByZSxcclxuICAgICAgc2hvdzogY1Nob3dcclxuICAgIH1cclxuICAgIGlmIChjVHlwZSA9PT0gMCkge1xyXG4gICAgICBhbGxvd2VkID0gdHlwZTBcclxuICAgICAgYXN0ZXJpY2sgPSBlbXB0eVxyXG4gICAgICBpbmMocHRjLCAyKS5wdXNoKDIpXHJcbiAgICAgIHN0ci5wdXNoKG9iailcclxuICAgICAgc3RyLnB1c2gob3BlbmluZ1Bhck9iailcclxuICAgIH0gZWxzZSBpZiAoY1R5cGUgPT09IDEpIHtcclxuICAgICAgaWYgKHByZS50eXBlID09PSAxKSB7XHJcbiAgICAgICAgcHJlLnZhbHVlICs9IGNFdlxyXG4gICAgICAgIGluYyhwdGMsIDEpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RyLnB1c2gob2JqKVxyXG4gICAgICB9XHJcbiAgICAgIGFsbG93ZWQgPSB0eXBlMVxyXG4gICAgICBhc3RlcmljayA9IHR5cGUxQXN0ZXJpY2tcclxuICAgIH0gZWxzZSBpZiAoY1R5cGUgPT09IDIpIHtcclxuICAgICAgYWxsb3dlZCA9IHR5cGUwXHJcbiAgICAgIGFzdGVyaWNrID0gZW1wdHlcclxuICAgICAgaW5jKHB0YywgMilcclxuICAgICAgc3RyLnB1c2gob2JqKVxyXG4gICAgfSBlbHNlIGlmIChjVHlwZSA9PT0gMykge1xyXG4gICAgICAvLyBjb25zdGFudFxyXG4gICAgICBzdHIucHVzaChvYmopXHJcbiAgICAgIGFsbG93ZWQgPSB0eXBlMVxyXG4gICAgICBhc3RlcmljayA9IHR5cGUzQXN0ZXJpY2tcclxuICAgIH0gZWxzZSBpZiAoY1R5cGUgPT09IDQpIHtcclxuICAgICAgaW5jKHB0YywgMSlcclxuICAgICAgYnJhY1RvQ2xvc2UrK1xyXG4gICAgICBhbGxvd2VkID0gdHlwZTBcclxuICAgICAgYXN0ZXJpY2sgPSBlbXB0eVxyXG4gICAgICBzdHIucHVzaChvYmopXHJcbiAgICB9IGVsc2UgaWYgKGNUeXBlID09PSA1KSB7XHJcbiAgICAgIGlmICghYnJhY1RvQ2xvc2UpIHtcclxuICAgICAgICB0aHJvdyBuZXcgTWV4cC5FeGNlcHRpb24oJ0Nsb3NpbmcgcGFyZW50aGVzaXMgYXJlIG1vcmUgdGhhbiBvcGVuaW5nIG9uZSwgd2FpdCBXaGF0ISEhJylcclxuICAgICAgfVxyXG4gICAgICBicmFjVG9DbG9zZS0tXHJcbiAgICAgIGFsbG93ZWQgPSB0eXBlMVxyXG4gICAgICBhc3RlcmljayA9IHR5cGUzQXN0ZXJpY2tcclxuICAgICAgc3RyLnB1c2gob2JqKVxyXG4gICAgICBpbmMocHRjLCAxKVxyXG4gICAgfSBlbHNlIGlmIChjVHlwZSA9PT0gNikge1xyXG4gICAgICBpZiAocHJlLmhhc0RlYykge1xyXG4gICAgICAgIHRocm93IG5ldyBNZXhwLkV4Y2VwdGlvbignVHdvIGRlY2ltYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBvbmUgbnVtYmVyJylcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJlLnR5cGUgIT09IDEpIHtcclxuICAgICAgICBwcmUgPSB7XHJcbiAgICAgICAgICB2YWx1ZTogMCxcclxuICAgICAgICAgIHR5cGU6IDEsXHJcbiAgICAgICAgICBwcmU6IDBcclxuICAgICAgICB9IC8vIHByZSBuZWVkcyB0byBiZSBjaGFuZ2VkIGFzIGl0IHdpbGwgdGhlIGxhc3QgdmFsdWUgbm93IHRvIGJlIHNhZmUgaW4gbGF0ZXIgY29kZVxyXG4gICAgICAgIHN0ci5wdXNoKHByZSlcclxuICAgICAgICBpbmMocHRjLCAtMSlcclxuICAgICAgfVxyXG4gICAgICBhbGxvd2VkID0gdHlwZTZcclxuICAgICAgaW5jKHB0YywgMSlcclxuICAgICAgYXN0ZXJpY2sgPSBlbXB0eVxyXG4gICAgICBwcmUudmFsdWUgKz0gY0V2XHJcbiAgICAgIHByZS5oYXNEZWMgPSB0cnVlXHJcbiAgICB9IGVsc2UgaWYgKGNUeXBlID09PSA3KSB7XHJcbiAgICAgIGFsbG93ZWQgPSB0eXBlMVxyXG4gICAgICBhc3RlcmljayA9IHR5cGUzQXN0ZXJpY2tcclxuICAgICAgaW5jKHB0YywgMSlcclxuICAgICAgc3RyLnB1c2gob2JqKVxyXG4gICAgfVxyXG4gICAgaWYgKGNUeXBlID09PSA4KSB7XHJcbiAgICAgIGFsbG93ZWQgPSB0eXBlMFxyXG4gICAgICBhc3RlcmljayA9IGVtcHR5XHJcbiAgICAgIGluYyhwdGMsIDQpLnB1c2goNClcclxuICAgICAgc3RyLnB1c2gob2JqKVxyXG4gICAgICBzdHIucHVzaChvcGVuaW5nUGFyT2JqKVxyXG4gICAgfSBlbHNlIGlmIChjVHlwZSA9PT0gOSkge1xyXG4gICAgICBpZiAocHJlLnR5cGUgPT09IDkpIHtcclxuICAgICAgICBpZiAocHJlLnZhbHVlID09PSBNZXhwLm1hdGguYWRkKSB7XHJcbiAgICAgICAgICBwcmUudmFsdWUgPSBjRXZcclxuICAgICAgICAgIHByZS5zaG93ID0gY1Nob3dcclxuICAgICAgICAgIGluYyhwdGMsIDEpXHJcbiAgICAgICAgfSBlbHNlIGlmIChwcmUudmFsdWUgPT09IE1leHAubWF0aC5zdWIgJiYgY1Nob3cgPT09ICctJykge1xyXG4gICAgICAgICAgcHJlLnZhbHVlID0gTWV4cC5tYXRoLmFkZFxyXG4gICAgICAgICAgcHJlLnNob3cgPSAnKydcclxuICAgICAgICAgIGluYyhwdGMsIDEpXHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHByZS50eXBlICE9PSA1ICYmXHJcbiAgICAgICAgcHJlLnR5cGUgIT09IDcgJiZcclxuICAgICAgICBwcmUudHlwZSAhPT0gMSAmJlxyXG4gICAgICAgIHByZS50eXBlICE9PSAzICYmXHJcbiAgICAgICAgcHJlLnR5cGUgIT09IDEzXHJcbiAgICAgICkge1xyXG4gICAgICAgIC8vIGNoYW5nZXNpZ24gb25seSB3aGVuIG5lZ2F0aXZlIGlzIGZvdW5kXHJcbiAgICAgICAgaWYgKGNUb2tlbiA9PT0gJy0nKSB7XHJcbiAgICAgICAgICAvLyBkbyBub3RoaW5nIGZvciArIHRva2VuXHJcbiAgICAgICAgICAvLyBkb24ndCBhZGQgd2l0aCB0aGUgYWJvdmUgaWYgc3RhdGVtZW50IGFzIHRoYXQgd2lsbCBydW4gdGhlIGVsc2Ugc3RhdGVtZW50IG9mIHBhcmVudCBpZiBvbiBDdG9rZW4gK1xyXG4gICAgICAgICAgYWxsb3dlZCA9IHR5cGUwXHJcbiAgICAgICAgICBhc3RlcmljayA9IGVtcHR5XHJcbiAgICAgICAgICBpbmMocHRjLCAyKS5wdXNoKDIpXHJcbiAgICAgICAgICBzdHIucHVzaChjaGFuZ2VTaWduT2JqKVxyXG4gICAgICAgICAgc3RyLnB1c2gob3BlbmluZ1Bhck9iailcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgc3RyLnB1c2gob2JqKVxyXG4gICAgICAgIGluYyhwdGMsIDIpXHJcbiAgICAgIH1cclxuICAgICAgYWxsb3dlZCA9IHR5cGUwXHJcbiAgICAgIGFzdGVyaWNrID0gZW1wdHlcclxuICAgIH0gZWxzZSBpZiAoY1R5cGUgPT09IDEwKSB7XHJcbiAgICAgIGFsbG93ZWQgPSB0eXBlMFxyXG4gICAgICBhc3RlcmljayA9IGVtcHR5XHJcbiAgICAgIGluYyhwdGMsIDIpXHJcbiAgICAgIHN0ci5wdXNoKG9iailcclxuICAgIH0gZWxzZSBpZiAoY1R5cGUgPT09IDExKSB7XHJcbiAgICAgIGFsbG93ZWQgPSB0eXBlMFxyXG4gICAgICBhc3RlcmljayA9IGVtcHR5XHJcbiAgICAgIHN0ci5wdXNoKG9iailcclxuICAgIH0gZWxzZSBpZiAoY1R5cGUgPT09IDEyKSB7XHJcbiAgICAgIGFsbG93ZWQgPSB0eXBlMFxyXG4gICAgICBhc3RlcmljayA9IGVtcHR5XHJcbiAgICAgIGluYyhwdGMsIDYpLnB1c2goNilcclxuICAgICAgc3RyLnB1c2gob2JqKVxyXG4gICAgICBzdHIucHVzaChvcGVuaW5nUGFyT2JqKVxyXG4gICAgfSBlbHNlIGlmIChjVHlwZSA9PT0gMTMpIHtcclxuICAgICAgYWxsb3dlZCA9IHR5cGUxXHJcbiAgICAgIGFzdGVyaWNrID0gdHlwZTNBc3Rlcmlja1xyXG4gICAgICBzdHIucHVzaChvYmopXHJcbiAgICB9XHJcbiAgICBpbmMocHRjLCAtMSlcclxuICAgIHByZXZLZXkgPSBjVG9rZW5cclxuICB9XHJcbiAgZm9yIChqID0gcHRjLmxlbmd0aDsgai0tOykge1xyXG4gICAgLy8gbG9vcCBvdmVyIHB0Y1xyXG4gICAgaWYgKHB0Y1tqXSA9PT0gMCkge1xyXG4gICAgICBzdHIucHVzaChjbG9zaW5nUGFyT2JqKVxyXG4gICAgICBpbmMocHRjLCAtMSkucG9wKClcclxuICAgIH0gZWxzZSBicmVhayAvLyBpZiBpdCBpcyBub3QgemVybyBzbyBiZWZvcmUgcHRjIGFsc28gY2FudCBiZSB6ZXJvXHJcbiAgfVxyXG4gIGlmIChhbGxvd2VkWzVdICE9PSB0cnVlKSB7XHJcbiAgICB0aHJvdyBuZXcgTWV4cC5FeGNlcHRpb24oJ2NvbXBsZXRlIHRoZSBleHByZXNzaW9uJylcclxuICB9XHJcbiAgd2hpbGUgKGJyYWNUb0Nsb3NlLS0pIHtcclxuICAgIHN0ci5wdXNoKGNsb3NpbmdQYXJPYmopXHJcbiAgfVxyXG5cclxuICBzdHIucHVzaChjbG9zaW5nUGFyT2JqKVxyXG4gIC8vICAgICAgICBjb25zb2xlLmxvZyhzdHIpO1xyXG4gIHJldHVybiBuZXcgTWV4cChzdHIpXHJcbn1cclxubW9kdWxlLmV4cG9ydHMgPSBNZXhwXHJcbiIsIlxyXG52YXIgTWV4cCA9IHJlcXVpcmUoJy4vbGV4ZXIuanMnKTtcclxuXHJcbk1leHAucHJvdG90eXBlLnRvUG9zdGZpeCA9IGZ1bmN0aW9uICgpIHtcclxuXHQndXNlIHN0cmljdCc7XHJcblx0dmFyIHBvc3QgPSBbXSwgZWxlbSwgcG9wcGVkLCBwcmVwLCBwcmUsIGVsZTtcclxuXHR2YXIgc3RhY2sgPSBbeyB2YWx1ZTogXCIoXCIsIHR5cGU6IDQsIHByZTogMCB9XTtcclxuXHR2YXIgYXJyID0gdGhpcy52YWx1ZTtcclxuXHRmb3IgKHZhciBpID0gMTsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG5cdFx0aWYgKGFycltpXS50eXBlID09PSAxIHx8IGFycltpXS50eXBlID09PSAzIHx8IGFycltpXS50eXBlID09PSAxMykge1x0Ly9pZiB0b2tlbiBpcyBudW1iZXIsY29uc3RhbnQsb3Igbih3aGljaCBpcyBhbHNvIGEgc3BlY2lhbCBjb25zdGFudCBpbiBvdXIgY2FzZSlcclxuXHRcdFx0aWYgKGFycltpXS50eXBlID09PSAxKVxyXG5cdFx0XHRcdGFycltpXS52YWx1ZSA9IE51bWJlcihhcnJbaV0udmFsdWUpO1xyXG5cdFx0XHRwb3N0LnB1c2goYXJyW2ldKTtcclxuXHRcdH1cclxuXHRcdGVsc2UgaWYgKGFycltpXS50eXBlID09PSA0KSB7XHJcblx0XHRcdHN0YWNrLnB1c2goYXJyW2ldKTtcclxuXHRcdH1cclxuXHRcdGVsc2UgaWYgKGFycltpXS50eXBlID09PSA1KSB7XHJcblx0XHRcdHdoaWxlICgocG9wcGVkID0gc3RhY2sucG9wKCkpLnR5cGUgIT09IDQpIHtcclxuXHRcdFx0XHRwb3N0LnB1c2gocG9wcGVkKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0ZWxzZSBpZiAoYXJyW2ldLnR5cGUgPT09IDExKSB7XHJcblx0XHRcdHdoaWxlICgocG9wcGVkID0gc3RhY2sucG9wKCkpLnR5cGUgIT09IDQpIHtcclxuXHRcdFx0XHRwb3N0LnB1c2gocG9wcGVkKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRzdGFjay5wdXNoKHBvcHBlZCk7XHJcblx0XHR9XHJcblx0XHRlbHNlIHtcclxuXHRcdFx0ZWxlbSA9IGFycltpXTtcclxuXHRcdFx0cHJlID0gZWxlbS5wcmU7XHJcblx0XHRcdGVsZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRwcmVwID0gZWxlLnByZTtcclxuXHRcdFx0dmFyIGZsYWcgPSBlbGUudmFsdWUgPT0gJ01hdGgucG93JyAmJiBlbGVtLnZhbHVlID09ICdNYXRoLnBvdyc7XHJcblx0XHRcdGlmIChwcmUgPiBwcmVwKSBzdGFjay5wdXNoKGVsZW0pO1xyXG5cdFx0XHRlbHNlIHtcclxuXHRcdFx0XHR3aGlsZSAocHJlcCA+PSBwcmUgJiYgIWZsYWcgfHwgZmxhZyAmJiBwcmUgPCBwcmVwKSB7XHJcblx0XHRcdFx0XHRwb3BwZWQgPSBzdGFjay5wb3AoKTtcclxuXHRcdFx0XHRcdGVsZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xyXG5cdFx0XHRcdFx0cG9zdC5wdXNoKHBvcHBlZCk7XHJcblx0XHRcdFx0XHRwcmVwID0gZWxlLnByZTtcclxuXHRcdFx0XHRcdGZsYWcgPSBlbGVtLnZhbHVlID09ICdNYXRoLnBvdycgJiYgZWxlLnZhbHVlID09ICdNYXRoLnBvdyc7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHN0YWNrLnB1c2goZWxlbSk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIG5ldyBNZXhwKHBvc3QpO1xyXG59O1xyXG5tb2R1bGUuZXhwb3J0cyA9IE1leHA7IiwidmFyIE1leHA9cmVxdWlyZSgnLi9wb3N0Zml4LmpzJyk7XHJcbk1leHAucHJvdG90eXBlLnBvc3RmaXhFdmFsID0gZnVuY3Rpb24gKFVzZXJEZWZpbmVkKSB7XHJcblx0J3VzZSBzdHJpY3QnO1xyXG5cdFVzZXJEZWZpbmVkPVVzZXJEZWZpbmVkfHx7fTtcclxuXHRVc2VyRGVmaW5lZC5QST1NYXRoLlBJO1xyXG5cdFVzZXJEZWZpbmVkLkU9TWF0aC5FO1xyXG5cdHZhciBzdGFjaz1bXSxwb3AxLHBvcDIscG9wMztcclxuXHR2YXIgZGlzcD1bXTtcclxuXHR2YXIgdGVtcD0nJztcclxuXHR2YXIgYXJyPXRoaXMudmFsdWU7XHJcblx0dmFyIGJvb2w9KHR5cGVvZiBVc2VyRGVmaW5lZC5uIT09XCJ1bmRlZmluZWRcIik7XHJcblx0Zm9yKHZhciBpPTA7aTxhcnIubGVuZ3RoO2krKyl7XHJcblx0XHRpZihhcnJbaV0udHlwZT09PTEpe1xyXG5cdFx0XHRzdGFjay5wdXNoKHt2YWx1ZTphcnJbaV0udmFsdWUsdHlwZToxfSk7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmKGFycltpXS50eXBlPT09Myl7XHJcblx0XHRcdHN0YWNrLnB1c2goe3ZhbHVlOlVzZXJEZWZpbmVkW2FycltpXS52YWx1ZV0sdHlwZToxfSk7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmKGFycltpXS50eXBlPT09MCl7XHJcblx0XHRcdGlmKHR5cGVvZiBzdGFja1tzdGFjay5sZW5ndGgtMV0udHlwZT09PVwidW5kZWZpbmVkXCIpe1xyXG5cdFx0XHRcdHN0YWNrW3N0YWNrLmxlbmd0aC0xXS52YWx1ZS5wdXNoKGFycltpXSk7XHJcblx0XHRcdH1cclxuXHRcdFx0ZWxzZSBzdGFja1tzdGFjay5sZW5ndGgtMV0udmFsdWU9YXJyW2ldLnZhbHVlKHN0YWNrW3N0YWNrLmxlbmd0aC0xXS52YWx1ZSk7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmKGFycltpXS50eXBlPT09Nyl7XHJcblx0XHRcdGlmKHR5cGVvZiBzdGFja1tzdGFjay5sZW5ndGgtMV0udHlwZT09PVwidW5kZWZpbmVkXCIpe1xyXG5cdFx0XHRcdHN0YWNrW3N0YWNrLmxlbmd0aC0xXS52YWx1ZS5wdXNoKGFycltpXSk7XHJcblx0XHRcdH1cclxuXHRcdFx0ZWxzZSBzdGFja1tzdGFjay5sZW5ndGgtMV0udmFsdWU9YXJyW2ldLnZhbHVlKHN0YWNrW3N0YWNrLmxlbmd0aC0xXS52YWx1ZSk7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmKGFycltpXS50eXBlPT09OCl7XHJcblx0XHRcdHBvcDE9c3RhY2sucG9wKCk7XHJcblx0XHRcdHBvcDI9c3RhY2sucG9wKCk7XHJcblx0XHRcdHN0YWNrLnB1c2goe3R5cGU6MSx2YWx1ZTphcnJbaV0udmFsdWUocG9wMi52YWx1ZSxwb3AxLnZhbHVlKX0pO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSBpZihhcnJbaV0udHlwZT09PTEwKXtcclxuXHRcdFx0cG9wMT1zdGFjay5wb3AoKTtcclxuXHRcdFx0cG9wMj1zdGFjay5wb3AoKTtcclxuXHRcdFx0aWYodHlwZW9mIHBvcDIudHlwZT09PVwidW5kZWZpbmVkXCIpe1xyXG5cdFx0XHRcdHBvcDIudmFsdWU9cG9wMi5jb25jYXQocG9wMSk7XHJcblx0XHRcdFx0cG9wMi52YWx1ZS5wdXNoKGFycltpXSk7XHJcblx0XHRcdFx0c3RhY2sucHVzaChwb3AyKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRlbHNlIGlmICh0eXBlb2YgcG9wMS50eXBlPT09XCJ1bmRlZmluZWRcIikge1xyXG5cdFx0XHRcdHBvcDEudW5zaGlmdChwb3AyKTtcclxuXHRcdFx0XHRwb3AxLnB1c2goYXJyW2ldKTtcclxuXHRcdFx0XHRzdGFjay5wdXNoKHBvcDEpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2V7XHJcblx0XHRcdFx0c3RhY2sucHVzaCh7dHlwZToxLHZhbHVlOmFycltpXS52YWx1ZShwb3AyLnZhbHVlLHBvcDEudmFsdWUpfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHRcdH1cclxuXHRcdGVsc2UgaWYoYXJyW2ldLnR5cGU9PT0yfHxhcnJbaV0udHlwZT09PTkpe1xyXG5cdFx0XHRwb3AxPXN0YWNrLnBvcCgpO1xyXG5cdFx0XHRwb3AyPXN0YWNrLnBvcCgpO1xyXG5cdFx0XHRpZih0eXBlb2YgcG9wMi50eXBlPT09XCJ1bmRlZmluZWRcIil7XHJcblx0XHRcdFx0cG9wMj1wb3AyLmNvbmNhdChwb3AxKTtcclxuXHRcdFx0XHRwb3AyLnB1c2goYXJyW2ldKTtcclxuXHRcdFx0XHRzdGFjay5wdXNoKHBvcDIpO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2UgaWYgKHR5cGVvZiBwb3AxLnR5cGU9PT1cInVuZGVmaW5lZFwiKSB7XHJcblx0XHRcdFx0cG9wMS51bnNoaWZ0KHBvcDIpO1xyXG5cdFx0XHRcdHBvcDEucHVzaChhcnJbaV0pO1xyXG5cdFx0XHRcdHN0YWNrLnB1c2gocG9wMSk7XHJcblx0XHRcdH1cclxuXHRcdFx0ZWxzZXtcclxuXHRcdFx0XHRzdGFjay5wdXNoKHt0eXBlOjEsdmFsdWU6YXJyW2ldLnZhbHVlKHBvcDIudmFsdWUscG9wMS52YWx1ZSl9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0ZWxzZSBpZihhcnJbaV0udHlwZT09PTEyKXtcclxuXHRcdFx0cG9wMT1zdGFjay5wb3AoKTtcclxuXHRcdFx0aWYgKHR5cGVvZiBwb3AxLnR5cGUhPT1cInVuZGVmaW5lZFwiKSB7XHJcblx0XHRcdFx0cG9wMT1bcG9wMV07XHJcblx0XHRcdH1cclxuXHRcdFx0cG9wMj1zdGFjay5wb3AoKTtcclxuXHRcdFx0cG9wMz1zdGFjay5wb3AoKTtcclxuXHRcdFx0c3RhY2sucHVzaCh7dHlwZToxLHZhbHVlOmFycltpXS52YWx1ZShwb3AzLnZhbHVlLHBvcDIudmFsdWUsbmV3IE1leHAocG9wMSkpfSk7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmKGFycltpXS50eXBlPT09MTMpe1xyXG5cdFx0XHRpZihib29sKXtcclxuXHRcdFx0XHRzdGFjay5wdXNoKHt2YWx1ZTpVc2VyRGVmaW5lZFthcnJbaV0udmFsdWVdLHR5cGU6M30pO1xyXG5cdFx0XHR9XHJcblx0XHRcdGVsc2Ugc3RhY2sucHVzaChbYXJyW2ldXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cdGlmIChzdGFjay5sZW5ndGg+MSkge1xyXG5cdFx0dGhyb3cobmV3IE1leHAuRXhjZXB0aW9uKFwiVW5jYXVnaHQgU3ludGF4IGVycm9yXCIpKTtcclxuXHR9XHJcblx0cmV0dXJuIHN0YWNrWzBdLnZhbHVlPjEwMDAwMDAwMDAwMDAwMDA/XCJJbmZpbml0eVwiOnBhcnNlRmxvYXQoc3RhY2tbMF0udmFsdWUudG9GaXhlZCgxNSkpO1xyXG59O1xyXG5NZXhwLmV2YWw9ZnVuY3Rpb24oc3RyLHRva2VucyxvYmope1xyXG5cdGlmICh0eXBlb2YgdG9rZW5zPT09XCJ1bmRlZmluZWRcIikge1xyXG5cdFx0cmV0dXJuIHRoaXMubGV4KHN0cikudG9Qb3N0Zml4KCkucG9zdGZpeEV2YWwoKTtcclxuXHR9XHJcblx0ZWxzZSBpZiAodHlwZW9mIG9iaj09PVwidW5kZWZpbmVkXCIpIHtcclxuXHRcdGlmICh0eXBlb2YgdG9rZW5zLmxlbmd0aCE9PVwidW5kZWZpbmVkXCIpIFxyXG5cdFx0XHRyZXR1cm4gdGhpcy5sZXgoc3RyLHRva2VucykudG9Qb3N0Zml4KCkucG9zdGZpeEV2YWwoKTtcclxuXHRcdGVsc2VcclxuXHRcdFx0cmV0dXJuIHRoaXMubGV4KHN0cikudG9Qb3N0Zml4KCkucG9zdGZpeEV2YWwodG9rZW5zKTtcclxuXHR9XHJcblx0ZWxzZVxyXG5cdFx0cmV0dXJuIHRoaXMubGV4KHN0cix0b2tlbnMpLnRvUG9zdGZpeCgpLnBvc3RmaXhFdmFsKG9iaik7XHJcbn07XHJcbm1vZHVsZS5leHBvcnRzPU1leHA7IiwidmFyIE1leHA9cmVxdWlyZSgnLi9wb3N0Zml4X2V2YWx1YXRvci5qcycpO1xyXG5NZXhwLnByb3RvdHlwZS5mb3JtdWxhRXZhbCA9IGZ1bmN0aW9uICgpIHtcclxuXHRcInVzZSBzdHJpY3RcIjtcclxuXHR2YXIgc3RhY2s9W10scG9wMSxwb3AyLHBvcDM7XHJcblx0dmFyIGRpc3A9W107XHJcblx0dmFyIHRlbXA9Jyc7XHJcblx0dmFyIGFycj10aGlzLnZhbHVlO1xyXG5cdGZvcih2YXIgaT0wO2k8YXJyLmxlbmd0aDtpKyspe1xyXG5cdFx0aWYoYXJyW2ldLnR5cGU9PT0xfHxhcnJbaV0udHlwZT09PTMpe1xyXG5cdFx0XHRkaXNwLnB1c2goe3ZhbHVlOmFycltpXS50eXBlPT09Mz9hcnJbaV0uc2hvdzphcnJbaV0udmFsdWUsdHlwZToxfSk7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmKGFycltpXS50eXBlPT09MTMpe1xyXG5cdFx0XHRkaXNwLnB1c2goe3ZhbHVlOmFycltpXS5zaG93LHR5cGU6MX0pO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSBpZihhcnJbaV0udHlwZT09PTApe1xyXG5cdFx0XHRkaXNwW2Rpc3AubGVuZ3RoLTFdPXt2YWx1ZTphcnJbaV0uc2hvdysoYXJyW2ldLnNob3chPVwiLVwiP1wiKFwiOlwiXCIpK2Rpc3BbZGlzcC5sZW5ndGgtMV0udmFsdWUrKGFycltpXS5zaG93IT1cIi1cIj9cIilcIjpcIlwiKSx0eXBlOjB9O1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSBpZihhcnJbaV0udHlwZT09PTcpe1xyXG5cdFx0XHRkaXNwW2Rpc3AubGVuZ3RoLTFdPXt2YWx1ZTooZGlzcFtkaXNwLmxlbmd0aC0xXS50eXBlIT0xP1wiKFwiOlwiXCIpK2Rpc3BbZGlzcC5sZW5ndGgtMV0udmFsdWUrKGRpc3BbZGlzcC5sZW5ndGgtMV0udHlwZSE9MT9cIilcIjpcIlwiKSthcnJbaV0uc2hvdyx0eXBlOjd9O1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSBpZihhcnJbaV0udHlwZT09PTEwKXtcclxuXHRcdFx0cG9wMT1kaXNwLnBvcCgpO1xyXG5cdFx0XHRwb3AyPWRpc3AucG9wKCk7XHJcblx0XHRcdGlmKGFycltpXS5zaG93PT09J1AnfHxhcnJbaV0uc2hvdz09PSdDJylkaXNwLnB1c2goe3ZhbHVlOlwiPHN1cD5cIitwb3AyLnZhbHVlK1wiPC9zdXA+XCIrYXJyW2ldLnNob3crXCI8c3ViPlwiK3BvcDEudmFsdWUrXCI8L3N1Yj5cIix0eXBlOjEwfSk7XHJcblx0XHRcdGVsc2UgZGlzcC5wdXNoKHt2YWx1ZToocG9wMi50eXBlIT0xP1wiKFwiOlwiXCIpK3BvcDIudmFsdWUrKHBvcDIudHlwZSE9MT9cIilcIjpcIlwiKStcIjxzdXA+XCIrcG9wMS52YWx1ZStcIjwvc3VwPlwiLHR5cGU6MX0pO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSBpZihhcnJbaV0udHlwZT09PTJ8fGFycltpXS50eXBlPT09OSl7XHJcblx0XHRcdHBvcDE9ZGlzcC5wb3AoKTtcclxuXHRcdFx0cG9wMj1kaXNwLnBvcCgpO1xyXG5cdFx0XHRkaXNwLnB1c2goe3ZhbHVlOihwb3AyLnR5cGUhPTE/XCIoXCI6XCJcIikrcG9wMi52YWx1ZSsocG9wMi50eXBlIT0xP1wiKVwiOlwiXCIpK2FycltpXS5zaG93Kyhwb3AxLnR5cGUhPTE/XCIoXCI6XCJcIikrcG9wMS52YWx1ZSsocG9wMS50eXBlIT0xP1wiKVwiOlwiXCIpLHR5cGU6YXJyW2ldLnR5cGV9KTtcclxuXHRcdH1cclxuXHRcdGVsc2UgaWYoYXJyW2ldLnR5cGU9PT0xMil7XHJcblx0XHRcdHBvcDE9ZGlzcC5wb3AoKTtcclxuXHRcdFx0cG9wMj1kaXNwLnBvcCgpO1xyXG5cdFx0XHRwb3AzPWRpc3AucG9wKCk7XHJcblx0XHRcdGRpc3AucHVzaCh7dmFsdWU6YXJyW2ldLnNob3crXCIoXCIrcG9wMy52YWx1ZStcIixcIitwb3AyLnZhbHVlK1wiLFwiK3BvcDEudmFsdWUrXCIpXCIsdHlwZToxMn0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHRyZXR1cm4gZGlzcFswXS52YWx1ZTtcclxufTtcclxubW9kdWxlLmV4cG9ydHM9TWV4cDsiLCJpbXBvcnQgeyBNYXJrZG93blZpZXcsIEFwcCwgTm90aWNlLCBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgRXh0ZW5kZWRCbG9ja0NhY2hlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGdldFN0b3JlIH0gZnJvbSBcIi4vYnV0dG9uU3RvcmVcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRlbnRBcnJheSwgaGFuZGxlVmFsdWVBcnJheSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCByZW1vdmVCdXR0b24gPSBhc3luYyAoXG4gIGFwcDogQXBwLFxuICByZW1vdmU6IHN0cmluZyxcbiAgbGluZVN0YXJ0OiBudW1iZXIsXG4gIGxpbmVFbmQ6IG51bWJlclxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHsgY29udGVudEFycmF5LCBmaWxlIH0gPSBhd2FpdCBjcmVhdGVDb250ZW50QXJyYXkoYXBwKTtcbiAgY29uc3Qgc3RvcmUgPSBnZXRTdG9yZShhcHAuaXNNb2JpbGUpO1xuICBpZiAocmVtb3ZlID09PSBcInRydWVcIikge1xuICAgIGNvbnN0IG51bWJlck9mSXRlbXMgPSBsaW5lRW5kIC0gbGluZVN0YXJ0O1xuICAgIGNvbnRlbnRBcnJheS5zcGxpY2UobGluZVN0YXJ0LCBudW1iZXJPZkl0ZW1zICsgMSk7XG4gICAgaWYgKFxuICAgICAgY29udGVudEFycmF5W2xpbmVTdGFydF0gJiZcbiAgICAgIGNvbnRlbnRBcnJheVtsaW5lU3RhcnRdLmluY2x1ZGVzKFwiXmJ1dHRvbi1cIilcbiAgICApIHtcbiAgICAgIGNvbnRlbnRBcnJheS5zcGxpY2UobGluZVN0YXJ0LCAxKTtcbiAgICB9XG4gICAgY29uc3QgY29udGVudCA9IGNvbnRlbnRBcnJheS5qb2luKFwiXFxuXCIpO1xuICAgIGF3YWl0IGFwcC52YXVsdC5tb2RpZnkoZmlsZSwgY29udGVudCk7XG4gIH1cbiAgaWYgKGxpbmVTdGFydCA9PT0gbGluZUVuZCkge1xuICAgIGNvbnRlbnRBcnJheS5zcGxpY2UobGluZVN0YXJ0LCAxKTtcbiAgICBjb25zdCBjb250ZW50ID0gY29udGVudEFycmF5LmpvaW4oXCJcXG5cIik7XG4gICAgYXdhaXQgYXBwLnZhdWx0Lm1vZGlmeShmaWxlLCBjb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBoYW5kbGVWYWx1ZUFycmF5KHJlbW92ZSwgYXN5bmMgKGFyZ0FycmF5KSA9PiB7XG4gICAgICBjb25zdCBidXR0b25zID1cbiAgICAgICAgc3RvcmUgJiZcbiAgICAgICAgc3RvcmUuZmlsdGVyKChpdGVtOiBFeHRlbmRlZEJsb2NrQ2FjaGUpID0+IHtcbiAgICAgICAgICBsZXQgZXhpc3RzO1xuICAgICAgICAgIGFyZ0FycmF5LmZvckVhY2goKGFyZykgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IGBidXR0b24tJHthcmd9YCAmJiBpdGVtLnBhdGggPT09IGZpbGUucGF0aCkge1xuICAgICAgICAgICAgICBleGlzdHMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiBleGlzdHM7XG4gICAgICAgIH0pO1xuICAgICAgaWYgKGJ1dHRvbnNbMF0pIHtcbiAgICAgICAgbGV0IG9mZnNldCA9IDA7XG4gICAgICAgIGJ1dHRvbnMuZm9yRWFjaCgoYnV0dG9uOiBFeHRlbmRlZEJsb2NrQ2FjaGUpID0+IHtcbiAgICAgICAgICBjb25zdCBzdGFydCA9IGJ1dHRvbi5wb3NpdGlvbi5zdGFydC5saW5lIC0gb2Zmc2V0O1xuICAgICAgICAgIGNvbnN0IG51bUxpbmVzID1cbiAgICAgICAgICAgIGJ1dHRvbi5wb3NpdGlvbi5lbmQubGluZSAtIGJ1dHRvbi5wb3NpdGlvbi5zdGFydC5saW5lO1xuICAgICAgICAgIGNvbnRlbnRBcnJheS5zcGxpY2Uoc3RhcnQsIG51bUxpbmVzICsgMik7XG4gICAgICAgICAgb2Zmc2V0ICs9IG51bUxpbmVzICsgMjtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBjb250ZW50QXJyYXkuam9pbihcIlxcblwiKTtcbiAgICAgICAgYXdhaXQgYXBwLnZhdWx0Lm1vZGlmeShmaWxlLCBjb250ZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVNlY3Rpb24gPSBhc3luYyAoXG4gIGFwcDogQXBwLFxuICBzZWN0aW9uOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCB7IGNvbnRlbnRBcnJheSwgZmlsZSB9ID0gYXdhaXQgY3JlYXRlQ29udGVudEFycmF5KGFwcCk7XG4gIGlmIChzZWN0aW9uLmluY2x1ZGVzKFwiW1wiKSAmJiBzZWN0aW9uLmluY2x1ZGVzKFwiXVwiKSkge1xuICAgIGNvbnN0IGFyZ3MgPSBzZWN0aW9uLm1hdGNoKC9cXFsoLiopXFxdLyk7XG4gICAgaWYgKGFyZ3NbMV0pIHtcbiAgICAgIGNvbnN0IGFyZ0FycmF5ID0gYXJnc1sxXS5zcGxpdCgvLFxccz8vKTtcbiAgICAgIGlmIChhcmdBcnJheVswXSkge1xuICAgICAgICBjb25zdCBzdGFydCA9IHBhcnNlSW50KGFyZ0FycmF5WzBdKSAtIDE7XG4gICAgICAgIGNvbnN0IGVuZCA9IHBhcnNlSW50KGFyZ0FycmF5WzFdKTtcbiAgICAgICAgY29uc3QgbnVtTGluZXMgPSBlbmQgLSBzdGFydDtcbiAgICAgICAgY29udGVudEFycmF5LnNwbGljZShzdGFydCwgbnVtTGluZXMpO1xuICAgICAgICBjb25zdCBjb250ZW50ID0gY29udGVudEFycmF5LmpvaW4oXCJcXG5cIik7XG4gICAgICAgIGF3YWl0IGFwcC52YXVsdC5tb2RpZnkoZmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcHJlcGVuZENvbnRlbnQgPSBhc3luYyAoXG4gIGFwcDogQXBwLFxuICBpbnNlcnQ6IHN0cmluZyxcbiAgbGluZVN0YXJ0OiBudW1iZXJcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBhY3RpdmVWaWV3ID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gIGlmIChhY3RpdmVWaWV3KSB7XG4gICAgY29uc3QgZmlsZSA9IGFjdGl2ZVZpZXcuZmlsZTtcbiAgICBsZXQgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICAgIGNvbnN0IGNvbnRlbnRBcnJheSA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIik7XG4gICAgY29udGVudEFycmF5LnNwbGljZShsaW5lU3RhcnQsIDAsIGluc2VydCk7XG4gICAgY29udGVudCA9IGNvbnRlbnRBcnJheS5qb2luKFwiXFxuXCIpO1xuICAgIGF3YWl0IGFwcC52YXVsdC5tb2RpZnkoZmlsZSwgY29udGVudCk7XG4gIH0gZWxzZSB7XG4gICAgbmV3IE5vdGljZShcIlRoZXJlIHdhcyBhbiBpc3N1ZSBwcmVwZW5kaW5nIGNvbnRlbnQsIHBsZWFzZSB0cnkgYWdhaW5cIiwgMjAwMCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhcHBlbmRDb250ZW50ID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgaW5zZXJ0OiBzdHJpbmcsXG4gIGxpbmVFbmQ6IG51bWJlclxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGFjdGl2ZVZpZXcgPSBhcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcbiAgaWYgKGFjdGl2ZVZpZXcpIHtcbiAgICBjb25zdCBmaWxlID0gYWN0aXZlVmlldy5maWxlO1xuICAgIGxldCBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gICAgY29uc3QgY29udGVudEFycmF5ID0gY29udGVudC5zcGxpdChcIlxcblwiKTtcbiAgICBsZXQgaW5zZXJ0aW9uUG9pbnQ7XG4gICAgaWYgKFxuICAgICAgY29udGVudEFycmF5W2xpbmVFbmQgKyAxXSAmJlxuICAgICAgY29udGVudEFycmF5W2xpbmVFbmQgKyAxXS5pbmNsdWRlcyhcIl5idXR0b25cIilcbiAgICApIHtcbiAgICAgIGluc2VydGlvblBvaW50ID0gbGluZUVuZCArIDI7XG4gICAgICBpbnNlcnQgPSBgXFxuJHtpbnNlcnR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgaW5zZXJ0aW9uUG9pbnQgPSBsaW5lRW5kICsgMTtcbiAgICB9XG4gICAgY29udGVudEFycmF5LnNwbGljZShpbnNlcnRpb25Qb2ludCwgMCwgYCR7aW5zZXJ0fWApO1xuICAgIGNvbnRlbnQgPSBjb250ZW50QXJyYXkuam9pbihcIlxcblwiKTtcbiAgICBhd2FpdCBhcHAudmF1bHQubW9kaWZ5KGZpbGUsIGNvbnRlbnQpO1xuICB9IGVsc2Uge1xuICAgIG5ldyBOb3RpY2UoXCJUaGVyZSB3YXMgYW4gaXNzdWUgYXBwZW5kaW5nIGNvbnRlbnQsIHBsZWFzZSB0cnkgYWdhaW5cIiwgMjAwMCk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhZGRDb250ZW50QXRMaW5lID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgaW5zZXJ0OiBzdHJpbmcsXG4gIHR5cGU6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IGxpbmVOdW1iZXIgPSB0eXBlLm1hdGNoKC8oXFxkKykvZyk7XG4gIGlmIChsaW5lTnVtYmVyWzBdKSB7XG4gICAgY29uc3QgaW5zZXJ0aW9uUG9pbnQgPSBwYXJzZUludChsaW5lTnVtYmVyWzBdKSAtIDE7XG4gICAgY29uc3QgYWN0aXZlVmlldyA9IGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpO1xuICAgIGlmIChhY3RpdmVWaWV3KSB7XG4gICAgICBjb25zdCBmaWxlID0gYWN0aXZlVmlldy5maWxlO1xuICAgICAgbGV0IGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICAgIGNvbnN0IGNvbnRlbnRBcnJheSA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIik7XG4gICAgICBjb250ZW50QXJyYXkuc3BsaWNlKGluc2VydGlvblBvaW50LCAwLCBgJHtpbnNlcnR9YCk7XG4gICAgICBjb250ZW50ID0gY29udGVudEFycmF5LmpvaW4oXCJcXG5cIik7XG4gICAgICBhd2FpdCBhcHAudmF1bHQubW9kaWZ5KGZpbGUsIGNvbnRlbnQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBuZXcgTm90aWNlKFwiVGhlcmUgd2FzIGFuIGlzc3VlIGFkZGluZyBjb250ZW50LCBwbGVhc2UgdHJ5IGFnYWluXCIsIDIwMDApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTm90ZSA9IGFzeW5jIChcbiAgYXBwOiBBcHAsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgdHlwZTogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcGF0aCA9IHR5cGUubWF0Y2goL1xcKChbXFxzXFxTXSo/KSw/XFxzPyhzcGxpdCk/XFwpLyk7XG4gIGlmIChwYXRoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGUoYCR7cGF0aFsxXX0ubWRgLCBjb250ZW50KTtcbiAgICAgIGNvbnN0IGZpbGUgPSBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKGAke3BhdGhbMV19Lm1kYCkgYXMgVEZpbGU7XG4gICAgICBpZiAocGF0aFsyXSkge1xuICAgICAgICBhd2FpdCBhcHAud29ya3NwYWNlLnNwbGl0QWN0aXZlTGVhZigpLm9wZW5GaWxlKGZpbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXBwLndvcmtzcGFjZS5hY3RpdmVMZWFmLm9wZW5GaWxlKGZpbGUpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIG5ldyBOb3RpY2UoXCJUaGVyZSB3YXMgYW4gZXJyb3IhIE1heWJlIHRoZSBmaWxlIGFscmVhZHkgZXhpc3RzP1wiLCAyMDAwKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbmV3IE5vdGljZShgY291bGRuJ3QgcGFyc2UgdGhlIHBhdGghYCwgMjAwMCk7XG4gIH1cbn07XG4iLCJpbXBvcnQgeyBBcHAgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IEFyZ3VtZW50cywgUG9zaXRpb24gfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGVudEFycmF5IH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IGdldEJ1dHRvblBvc2l0aW9uID0gKFxuICBjb250ZW50OiBzdHJpbmcsXG4gIGFyZ3M6IEFyZ3VtZW50c1xuKTogUG9zaXRpb24gPT4ge1xuICBsZXQgZmluYWxQb3NpdGlvbjogUG9zaXRpb247XG4gIGNvbnN0IHBvc3NpYmxlUG9zaXRpb25zOiBQb3NpdGlvbltdID0gW107XG4gIGxldCBwb3NzaWJsZVBvc2l0aW9uOiBQb3NpdGlvbiA9IHsgbGluZVN0YXJ0OiAwLCBsaW5lRW5kOiAwIH07XG4gIGNvbnN0IGNvbnRlbnRBcnJheSA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIik7XG4gIGxldCBvcGVuID0gZmFsc2U7XG4gIGNvbnRlbnRBcnJheS5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgIGlmIChpdGVtLmluY2x1ZGVzKFwiYGBgXCIpKSB7XG4gICAgICBpZiAob3BlbiA9PT0gZmFsc2UpIHtcbiAgICAgICAgcG9zc2libGVQb3NpdGlvbi5saW5lU3RhcnQgPSBpbmRleDtcbiAgICAgICAgb3BlbiA9IHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3NzaWJsZVBvc2l0aW9uLmxpbmVFbmQgPSBpbmRleDtcbiAgICAgICAgcG9zc2libGVQb3NpdGlvbnMucHVzaChwb3NzaWJsZVBvc2l0aW9uKTtcbiAgICAgICAgcG9zc2libGVQb3NpdGlvbiA9IHsgbGluZVN0YXJ0OiAwLCBsaW5lRW5kOiAwIH07XG4gICAgICAgIG9wZW4gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBwb3NzaWJsZVBvc2l0aW9ucy5mb3JFYWNoKChwb3NpdGlvbikgPT4ge1xuICAgIGNvbnN0IGNvZGVibG9jayA9IGNvbnRlbnRBcnJheVxuICAgICAgLnNsaWNlKHBvc2l0aW9uLmxpbmVTdGFydCwgcG9zaXRpb24ubGluZUVuZCArIDEpXG4gICAgICAuam9pbihcIlxcblwiKTtcbiAgICBpZiAoY29kZWJsb2NrLmluY2x1ZGVzKFwiYnV0dG9uXCIpICYmIGNvZGVibG9jay5pbmNsdWRlcyhhcmdzLm5hbWUpKSB7XG4gICAgICBmaW5hbFBvc2l0aW9uID0gcG9zaXRpb247XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGZpbmFsUG9zaXRpb247XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SW5saW5lQnV0dG9uUG9zaXRpb24gPSBhc3luYyAoXG4gIGFwcDogQXBwLFxuICBpZDogc3RyaW5nXG4pOiBQcm9taXNlPFBvc2l0aW9uPiA9PiB7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBjcmVhdGVDb250ZW50QXJyYXkoYXBwKTtcbiAgY29uc3QgcG9zaXRpb24gPSB7IGxpbmVTdGFydDogMCwgbGluZUVuZDogMCB9O1xuICBjb250ZW50LmNvbnRlbnRBcnJheVxuICAgIC5tYXAoKGxpbmU6IHN0cmluZykgPT4gbGluZS5zcGxpdChcIiBcIikpXG4gICAgLmZvckVhY2goKHdvcmRzLCBpbmRleCkgPT4ge1xuICAgICAgd29yZHMuZm9yRWFjaCgod29yZCkgPT4ge1xuICAgICAgICBpZiAod29yZC5zdGFydHNXaXRoKFwiYGJ1dHRvblwiKSkge1xuICAgICAgICAgIGlmICh3b3JkID09PSBgXFxgYnV0dG9uLSR7aWR9XFxgYCkge1xuICAgICAgICAgICAgcG9zaXRpb24ubGluZVN0YXJ0ID0gaW5kZXg7XG4gICAgICAgICAgICBwb3NpdGlvbi5saW5lRW5kID0gaW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgcmV0dXJuIHBvc2l0aW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmROdW1iZXIgPSBhc3luYyAoXG4gIGFwcDogQXBwLFxuICBsaW5lTnVtYmVyOiBudW1iZXJcbik6IFByb21pc2U8c3RyaW5nW10+ID0+IHtcbiAgY29uc3QgY29udGVudCA9IGF3YWl0IGNyZWF0ZUNvbnRlbnRBcnJheShhcHApO1xuICBjb25zdCB2YWx1ZTogc3RyaW5nW10gPSBbXTtcbiAgY29udGVudC5jb250ZW50QXJyYXkuZm9yRWFjaCgobGluZTogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgaWYgKGluZGV4ID09PSBsaW5lTnVtYmVyIC0gMSkge1xuICAgICAgdmFsdWUucHVzaChsaW5lKTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBjb252ZXJ0V29yZHMgPSB2YWx1ZVxuICAgIC5qb2luKFwiXCIpXG4gICAgLnJlcGxhY2UoXCJwbHVzXCIsIFwiK1wiKVxuICAgIC5yZXBsYWNlKFwibWludXNcIiwgXCItXCIpXG4gICAgLnJlcGxhY2UoXCJ0aW1lc1wiLCBcIipcIilcbiAgICAucmVwbGFjZSgvZGl2aWRlKGQpPyhcXHNieSk/L2csIFwiL1wiKTtcbiAgY29uc3QgbnVtYmVycyA9IGNvbnZlcnRXb3Jkcy5yZXBsYWNlKC9cXHMvZywgXCJcIikubWF0Y2goL1teXFx3Ol0qP1xcZCs/L2cpO1xuICByZXR1cm4gbnVtYmVycztcbn07XG4iLCJpbXBvcnQgeyBBcHAsIE1hcmtkb3duVmlldywgTm90aWNlLCBURmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IG1leHAgZnJvbSBcIm1hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3JcIjtcblxuaW1wb3J0IHsgQXJndW1lbnRzLCBQb3NpdGlvbiB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQge1xuICBhcHBlbmRDb250ZW50LFxuICBjcmVhdGVOb3RlLFxuICBwcmVwZW5kQ29udGVudCxcbiAgYWRkQ29udGVudEF0TGluZSxcbiAgcmVtb3ZlQnV0dG9uLFxuICByZW1vdmVTZWN0aW9uLFxufSBmcm9tIFwiLi9oYW5kbGVyc1wiO1xuaW1wb3J0IHtcbiAgZ2V0QnV0dG9uUG9zaXRpb24sXG4gIGdldElubGluZUJ1dHRvblBvc2l0aW9uLFxuICBmaW5kTnVtYmVyLFxufSBmcm9tIFwiLi9wYXJzZXJcIjtcbmltcG9ydCB7IGhhbmRsZVZhbHVlQXJyYXksIGdldE5ld0FyZ3MgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHtcbiAgZ2V0QnV0dG9uU3dhcEJ5SWQsXG4gIHNldEJ1dHRvblN3YXBCeUlkLFxuICBnZXRCdXR0b25CeUlkLFxufSBmcm9tIFwiLi9idXR0b25TdG9yZVwiO1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgeyBhY3Rpb24gfTogQXJndW1lbnRzLFxuICBwb3NpdGlvbjogUG9zaXRpb25cbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zb2xlLmxvZygncnVubmluZyBjYWxjdWxhdGUgYnV0dG9uJylcbiAgbGV0IGVxdWF0aW9uID0gYWN0aW9uO1xuICBjb25zdCB2YXJpYWJsZXMgPSBhY3Rpb24ubWF0Y2goL1xcJFswLTldKi9nKTtcbiAgaWYgKHZhcmlhYmxlcykge1xuICAgIGNvbnN0IG91dHB1dCA9IHZhcmlhYmxlcy5tYXAoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBhY3RpdmVWaWV3ID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gICAgICBpZiAoYWN0aXZlVmlldykge1xuICAgICAgICBjb25zdCBsaW5lTnVtYmVyID0gcGFyc2VJbnQodmFsdWUuc3Vic3RyaW5nKDEpKTtcbiAgICAgICAgY29uc3QgbnVtYmVycyA9IGF3YWl0IGZpbmROdW1iZXIoYXBwLCBsaW5lTnVtYmVyKTtcbiAgICAgICAgcmV0dXJuIHsgdmFyaWFibGU6IHZhbHVlLCBudW1iZXJzIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXcgTm90aWNlKGBjb3VsZG4ndCByZWFkIGZpbGVgLCAyMDAwKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IFByb21pc2UuYWxsKG91dHB1dCk7XG4gICAgcmVzb2x2ZWQuZm9yRWFjaCgodGVybTogeyB2YXJpYWJsZTogc3RyaW5nOyBudW1iZXJzOiBzdHJpbmdbXSB9KSA9PiB7XG4gICAgICBpZiAodGVybS5udW1iZXJzKSB7XG4gICAgICAgIGVxdWF0aW9uID0gZXF1YXRpb24ucmVwbGFjZSh0ZXJtLnZhcmlhYmxlLCB0ZXJtLm51bWJlcnMuam9pbihcIlwiKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXcgTm90aWNlKFwiQ2hlY2sgdGhlIGxpbmUgbnVtYmVyIGluIHlvdXIgY2FsY3VsYXRlIGJ1dHRvblwiLCAzMDAwKTtcbiAgICAgICAgZXF1YXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgZnVuID0gZXF1YXRpb24gJiYgbWV4cC5ldmFsKGVxdWF0aW9uKTtcbiAgZnVuICYmIGFwcGVuZENvbnRlbnQoYXBwLCBgUmVzdWx0OiAke2Z1bn1gLCBwb3NpdGlvbi5saW5lRW5kKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmUgPSAoXG4gIGFwcDogQXBwLFxuICB7IHJlbW92ZSB9OiBBcmd1bWVudHMsXG4gIHsgbGluZVN0YXJ0LCBsaW5lRW5kIH06IHsgbGluZVN0YXJ0OiBudW1iZXI7IGxpbmVFbmQ6IG51bWJlciB9XG4pOiB2b2lkID0+IHtcbiAgc2V0VGltZW91dCgoKSA9PiByZW1vdmVCdXR0b24oYXBwLCByZW1vdmUsIGxpbmVTdGFydCwgbGluZUVuZCksIDEwMDApO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlcGxhY2UgPSAoYXBwOiBBcHAsIHsgcmVwbGFjZSB9OiBBcmd1bWVudHMpOiB2b2lkID0+IHtcbiAgcmVtb3ZlU2VjdGlvbihhcHAsIHJlcGxhY2UpO1xufTtcbmV4cG9ydCBjb25zdCB0ZXh0ID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgYXJnczogQXJndW1lbnRzLFxuICBwb3NpdGlvbjogUG9zaXRpb25cbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAvLyBwcmVwZW5kIHRlbXBsYXRlIGFib3ZlIHRoZSBidXR0b25cbiAgaWYgKGFyZ3MudHlwZS5pbmNsdWRlcyhcInByZXBlbmRcIikpIHtcbiAgICBwcmVwZW5kQ29udGVudChhcHAsIGFyZ3MuYWN0aW9uLCBwb3NpdGlvbi5saW5lU3RhcnQpO1xuICB9XG4gIC8vIGFwcGVuZCB0ZW1wbGF0ZSBiZWxvdyB0aGUgYnV0dG9uXG4gIGlmIChhcmdzLnR5cGUuaW5jbHVkZXMoXCJhcHBlbmRcIikpIHtcbiAgICBhcHBlbmRDb250ZW50KGFwcCwgYXJncy5hY3Rpb24sIHBvc2l0aW9uLmxpbmVFbmQpO1xuICB9XG4gIGlmIChhcmdzLnR5cGUuaW5jbHVkZXMoXCJub3RlXCIpKSB7XG4gICAgY3JlYXRlTm90ZShhcHAsIGFyZ3MuYWN0aW9uLCBhcmdzLnR5cGUpO1xuICB9XG4gIGlmIChhcmdzLnR5cGUuaW5jbHVkZXMoXCJsaW5lXCIpKSB7XG4gICAgYWRkQ29udGVudEF0TGluZShhcHAsIGFyZ3MuYWN0aW9uLCBhcmdzLnR5cGUpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdGVtcGxhdGUgPSBhc3luYyAoXG4gIGFwcDogQXBwLFxuICBhcmdzOiBBcmd1bWVudHMsXG4gIHBvc2l0aW9uOiBQb3NpdGlvblxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHRlbXBsYXRlc0VuYWJsZWQgPSBhcHAuaW50ZXJuYWxQbHVnaW5zLnBsdWdpbnMudGVtcGxhdGVzLmVuYWJsZWQ7XG4gIGNvbnN0IHRlbXBsYXRlclBsdWdpbkVuYWJsZWQgPVxuICAgIGFwcC5wbHVnaW5zLnBsdWdpbnNbXCJ0ZW1wbGF0ZXItb2JzaWRpYW5cIl07XG5cbiAgLy8gb25seSBydW4gaWYgdGVtcGxhdGVzIHBsdWdpbiBpcyBlbmFibGVkXG4gIGlmICh0ZW1wbGF0ZXNFbmFibGVkIHx8IHRlbXBsYXRlclBsdWdpbkVuYWJsZWQpIHtcbiAgICBjb25zdCBmb2xkZXJzOiBzdHJpbmdbXSA9IFtcbiAgICAgIHRlbXBsYXRlc0VuYWJsZWQgJiYgYXBwLmludGVybmFsUGx1Z2lucy5wbHVnaW5zLnRlbXBsYXRlcy5pbnN0YW5jZS5vcHRpb25zLmZvbGRlcj8udG9Mb3dlckNhc2UoKSxcbiAgICAgIHRlbXBsYXRlclBsdWdpbkVuYWJsZWQgJiYgYXBwLnBsdWdpbnM/LnBsdWdpbnNbXG4gICAgICAgIFwidGVtcGxhdGVyLW9ic2lkaWFuXCJcbiAgICAgIF0/LnNldHRpbmdzLnRlbXBsYXRlX2ZvbGRlcj8udG9Mb3dlckNhc2UoKSxcbiAgICAgIHRlbXBsYXRlclBsdWdpbkVuYWJsZWQgJiYgYXBwLnBsdWdpbnM/LnBsdWdpbnNbXG4gICAgICAgIFwidGVtcGxhdGVyLW9ic2lkaWFuXCJcbiAgICAgIF0/LnNldHRpbmdzLnRlbXBsYXRlc19mb2xkZXI/LnRvTG93ZXJDYXNlKCksXG4gICAgXS5maWx0ZXIoKGZvbGRlcikgPT4gZm9sZGVyKTtcbiAgICBjb25zdCB0ZW1wbGF0ZUZpbGUgPSBhcmdzLmFjdGlvbi50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGFsbEZpbGVzID0gYXBwLnZhdWx0LmdldEZpbGVzKCk7XG4gICAgY29uc3QgZmlsZTogVEZpbGUgPSBhbGxGaWxlcy5maWx0ZXIoKGZpbGUpID0+IHtcbiAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgZm9sZGVyc1swXSAmJlxuICAgICAgICBmb2xkZXJzLmZvckVhY2goKGZvbGRlcikgPT4ge1xuICAgICAgICAgIGlmIChmaWxlLnBhdGgudG9Mb3dlckNhc2UoKSA9PT0gYCR7Zm9sZGVyfS8ke3RlbXBsYXRlRmlsZX0ubWRgKSB7XG4gICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9KVswXTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICAgICAgLy8gcHJlcGVuZCB0ZW1wbGF0ZSBhYm92ZSB0aGUgYnV0dG9uXG4gICAgICBpZiAoYXJncy50eXBlLmluY2x1ZGVzKFwicHJlcGVuZFwiKSkge1xuICAgICAgICBwcmVwZW5kQ29udGVudChhcHAsIGNvbnRlbnQsIHBvc2l0aW9uLmxpbmVTdGFydCk7XG4gICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIGFwcC5jb21tYW5kcy5leGVjdXRlQ29tbWFuZEJ5SWQoXG4gICAgICAgICAgICAgIFwidGVtcGxhdGVyLW9ic2lkaWFuOnJlcGxhY2UtaW4tZmlsZS10ZW1wbGF0ZXJcIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAxMDBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIC8vIGFwcGVuZCB0ZW1wbGF0ZSBiZWxvdyB0aGUgYnV0dG9uXG4gICAgICBpZiAoYXJncy50eXBlLmluY2x1ZGVzKFwiYXBwZW5kXCIpKSB7XG4gICAgICAgIGFwcGVuZENvbnRlbnQoYXBwLCBjb250ZW50LCBwb3NpdGlvbi5saW5lRW5kKTtcbiAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgYXBwLmNvbW1hbmRzLmV4ZWN1dGVDb21tYW5kQnlJZChcbiAgICAgICAgICAgICAgXCJ0ZW1wbGF0ZXItb2JzaWRpYW46cmVwbGFjZS1pbi1maWxlLXRlbXBsYXRlclwiXG4gICAgICAgICAgICApLFxuICAgICAgICAgIDEwMFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3MudHlwZS5pbmNsdWRlcyhcIm5vdGVcIikpIHtcbiAgICAgICAgY3JlYXRlTm90ZShhcHAsIGNvbnRlbnQsIGFyZ3MudHlwZSk7XG4gICAgICB9XG4gICAgICBpZiAoYXJncy50eXBlLmluY2x1ZGVzKFwibGluZVwiKSkge1xuICAgICAgICBhZGRDb250ZW50QXRMaW5lKGFwcCwgY29udGVudCwgYXJncy50eXBlKTtcbiAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgYXBwLmNvbW1hbmRzLmV4ZWN1dGVDb21tYW5kQnlJZChcbiAgICAgICAgICAgICAgXCJ0ZW1wbGF0ZXItb2JzaWRpYW46cmVwbGFjZS1pbi1maWxlLXRlbXBsYXRlclwiXG4gICAgICAgICAgICApLFxuICAgICAgICAgIDEwMFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXcgTm90aWNlKFxuICAgICAgICBgQ291bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWVkIHRlbXBsYXRlLCBwbGVhc2UgY2hlY2sgYW5kIHRyeSBhZ2FpbmAsXG4gICAgICAgIDIwMDBcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5ldyBOb3RpY2UoXG4gICAgICBcIllvdSBuZWVkIHRvIGhhdmUgdGhlIFRlbXBsYXRlcyBvciBUZW1wbGF0ZXIgcGx1Z2luIGVuYWJsZWQgYW5kIFRlbXBsYXRlIGZvbGRlciBkZWZpbmVkXCIsXG4gICAgICAyMDAwXG4gICAgKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGxpbmsgPSAoeyBhY3Rpb24gfTogQXJndW1lbnRzKTogdm9pZCA9PiB7XG4gIGNvbnN0IGxpbmsgPSBhY3Rpb24udHJpbSgpO1xuICB3aW5kb3cub3BlbihsaW5rKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tYW5kID0gKGFwcDogQXBwLCB7IGFjdGlvbiB9OiBBcmd1bWVudHMpOiB2b2lkID0+IHtcbiAgY29uc3QgYWxsQ29tbWFuZHMgPSBhcHAuY29tbWFuZHMubGlzdENvbW1hbmRzKCk7XG4gIGNvbnN0IGNvbW1hbmQgPSBhbGxDb21tYW5kcy5maWx0ZXIoXG4gICAgKGNvbW1hbmQpID0+IGNvbW1hbmQubmFtZS50b1VwcGVyQ2FzZSgpID09PSBhY3Rpb24udG9VcHBlckNhc2UoKS50cmltKClcbiAgKVswXTtcbiAgYXBwLmNvbW1hbmRzLmV4ZWN1dGVDb21tYW5kQnlJZChjb21tYW5kLmlkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzd2FwID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgc3dhcDogc3RyaW5nLFxuICBpZDogc3RyaW5nLFxuICBpbmxpbmU6IGJvb2xlYW4sXG4gIGZpbGU6IFRGaWxlXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgaGFuZGxlVmFsdWVBcnJheShzd2FwLCBhc3luYyAoYXJnQXJyYXkpID0+IHtcbiAgICBjb25zdCBzd2FwID0gYXdhaXQgZ2V0QnV0dG9uU3dhcEJ5SWQoYXBwLCBpZCk7XG4gICAgY29uc3QgbmV3U3dhcCA9IHN3YXAgKyAxID4gYXJnQXJyYXkubGVuZ3RoIC0gMSA/IDAgOiBzd2FwICsgMTtcbiAgICBzZXRCdXR0b25Td2FwQnlJZChhcHAsIGlkLCBuZXdTd2FwKTtcbiAgICBsZXQgYXJncyA9IGF3YWl0IGdldEJ1dHRvbkJ5SWQoYXBwLCBhcmdBcnJheVtzd2FwXSk7XG4gICAgbGV0IHBvc2l0aW9uO1xuICAgIGxldCBjb250ZW50O1xuICAgIGlmIChhcmdzKSB7XG4gICAgICBpZiAoYXJncy50ZW1wbGF0ZXIpIHtcbiAgICAgICAgYXJncyA9IGF3YWl0IHRlbXBsYXRlcihhcHAsIHBvc2l0aW9uKTtcbiAgICAgICAgaWYgKGlubGluZSkge1xuICAgICAgICAgIG5ldyBOb3RpY2UoXCJ0ZW1wbGF0ZXIgYXJncyBkb24ndCB3b3JrIHdpdGggaW5saW5lIGJ1dHRvbnMgeWV0XCIsIDIwMDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoYXJncy5yZXBsYWNlKSB7XG4gICAgICAgIHJlcGxhY2UoYXBwLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmdzLnR5cGUgPT09IFwiY29tbWFuZFwiKSB7XG4gICAgICAgIGNvbW1hbmQoYXBwLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIC8vIGhhbmRsZSBsaW5rIGJ1dHRvbnNcbiAgICAgIGlmIChhcmdzLnR5cGUgPT09IFwibGlua1wiKSB7XG4gICAgICAgIGxpbmsoYXJncyk7XG4gICAgICB9XG4gICAgICAvLyBoYW5kbGUgdGVtcGxhdGUgYnV0dG9uc1xuICAgICAgaWYgKGFyZ3MudHlwZSAmJiBhcmdzLnR5cGUuaW5jbHVkZXMoXCJ0ZW1wbGF0ZVwiKSkge1xuICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gICAgICAgICAgcG9zaXRpb24gPSBpbmxpbmVcbiAgICAgICAgICAgID8gYXdhaXQgZ2V0SW5saW5lQnV0dG9uUG9zaXRpb24oYXBwLCBpZClcbiAgICAgICAgICAgIDogZ2V0QnV0dG9uUG9zaXRpb24oY29udGVudCwgYXJncyk7XG4gICAgICAgICAgdGVtcGxhdGUoYXBwLCBhcmdzLCBwb3NpdGlvbik7XG4gICAgICAgIH0sIDUwKTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmdzLnR5cGUgPT09IFwiY2FsY3VsYXRlXCIpIHtcbiAgICAgICAgY2FsY3VsYXRlKGFwcCwgYXJncywgcG9zaXRpb24pO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3MudHlwZSAmJiBhcmdzLnR5cGUuaW5jbHVkZXMoXCJ0ZXh0XCIpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICAgICAgICBwb3NpdGlvbiA9IGlubGluZVxuICAgICAgICAgICAgPyBhd2FpdCBnZXRJbmxpbmVCdXR0b25Qb3NpdGlvbihhcHAsIGlkKVxuICAgICAgICAgICAgOiBnZXRCdXR0b25Qb3NpdGlvbihjb250ZW50LCBhcmdzKTtcbiAgICAgICAgICB0ZXh0KGFwcCwgYXJncywgcG9zaXRpb24pO1xuICAgICAgICB9LCA1MCk7XG4gICAgICB9XG4gICAgICAvLyBoYW5kbGUgcmVtb3ZpbmcgdGhlIGJ1dHRvblxuICAgICAgaWYgKGFyZ3MucmVtb3ZlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICAgICAgICBwb3NpdGlvbiA9IGlubGluZVxuICAgICAgICAgICAgPyBhd2FpdCBnZXRJbmxpbmVCdXR0b25Qb3NpdGlvbihhcHAsIGlkKVxuICAgICAgICAgICAgOiBnZXRCdXR0b25Qb3NpdGlvbihjb250ZW50LCBhcmdzKTtcbiAgICAgICAgICByZW1vdmUoYXBwLCBhcmdzLCBwb3NpdGlvbik7XG4gICAgICAgIH0sIDc1KTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmdzLnJlcGxhY2UpIHtcbiAgICAgICAgcmVwbGFjZShhcHAsIGFyZ3MpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdGVtcGxhdGVyID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgcG9zaXRpb246IFBvc2l0aW9uXG4pOiBQcm9taXNlPEFyZ3VtZW50cz4gPT4ge1xuICBhcHAuY29tbWFuZHMuZXhlY3V0ZUNvbW1hbmRCeUlkKFwiZWRpdG9yOnNhdmUtZmlsZVwiKTtcbiAgY29uc3QgYWN0aXZlVmlldyA9IGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpO1xuICBpZiAoYWN0aXZlVmlldykge1xuICAgIGNvbnN0IGZpbGUgPSBhY3RpdmVWaWV3LmZpbGU7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5jYWNoZWRSZWFkKGZpbGUpO1xuICAgIGFwcC5jb21tYW5kcy5leGVjdXRlQ29tbWFuZEJ5SWQoXG4gICAgICBcInRlbXBsYXRlci1vYnNpZGlhbjpyZXBsYWNlLWluLWZpbGUtdGVtcGxhdGVyXCJcbiAgICApO1xuICAgIGNvbnN0IHsgYXJncyB9ID0gYXdhaXQgZ2V0TmV3QXJncyhhcHAsIHBvc2l0aW9uKTtcbiAgICBjb25zdCBjYWNoZWREYXRhOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNhY2hlQ2hhbmdlID0gYXBwLnZhdWx0Lm9uKFwibW9kaWZ5XCIsIChmaWxlKSA9PiB7XG4gICAgICBjYWNoZWREYXRhLnB1c2goZmlsZS51bnNhZmVDYWNoZWREYXRhKTtcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IGNvbnRlbnRcbiAgICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgIC5zcGxpY2UocG9zaXRpb24ubGluZVN0YXJ0LCBwb3NpdGlvbi5saW5lRW5kIC0gcG9zaXRpb24ubGluZVN0YXJ0ICsgMilcbiAgICAgICAgLmpvaW4oXCJcXG5cIik7XG4gICAgICBsZXQgZmluYWxDb250ZW50O1xuICAgICAgaWYgKGNhY2hlZERhdGFbMF0pIHtcbiAgICAgICAgY29uc3QgY2FjaGVkQ29udGVudCA9IGNhY2hlZERhdGFbY2FjaGVkRGF0YS5sZW5ndGggLSAxXS5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgbGV0IGFkZE9uZSA9IGZhbHNlO1xuICAgICAgICBpZiAoYXJncy50eXBlLmluY2x1ZGVzKFwicHJlcGVuZFwiKSkge1xuICAgICAgICAgIGFkZE9uZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoYXJncy50eXBlLmluY2x1ZGVzKFwibGluZVwiKSkge1xuICAgICAgICAgIGNvbnN0IGxpbmVOdW1iZXIgPSBhcmdzLnR5cGUubWF0Y2goLyhcXGQrKS9nKTtcbiAgICAgICAgICBpZiAobGluZU51bWJlclswXSkge1xuICAgICAgICAgICAgY29uc3QgbGluZSA9IHBhcnNlSW50KGxpbmVOdW1iZXJbMF0pIC0gMTtcbiAgICAgICAgICAgIGlmIChsaW5lIDwgcG9zaXRpb24ubGluZVN0YXJ0ICYmICFhcmdzLnJlcGxhY2UpIHtcbiAgICAgICAgICAgICAgYWRkT25lID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFkZE9uZSkge1xuICAgICAgICAgIGNhY2hlZENvbnRlbnQuc3BsaWNlKFxuICAgICAgICAgICAgcG9zaXRpb24ubGluZVN0YXJ0ICsgMSxcbiAgICAgICAgICAgIHBvc2l0aW9uLmxpbmVFbmQgLSBwb3NpdGlvbi5saW5lU3RhcnQgKyAyLFxuICAgICAgICAgICAgYnV0dG9uXG4gICAgICAgICAgKTtcbiAgICAgICAgfSAgZWxzZSB7XG4gICAgICAgICAgY2FjaGVkQ29udGVudC5zcGxpY2UoXG4gICAgICAgICAgICBwb3NpdGlvbi5saW5lU3RhcnQsXG4gICAgICAgICAgICBwb3NpdGlvbi5saW5lRW5kIC0gcG9zaXRpb24ubGluZVN0YXJ0ICsgMixcbiAgICAgICAgICAgIGJ1dHRvblxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxDb250ZW50ID0gY2FjaGVkQ29udGVudC5qb2luKFwiXFxuXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmluYWxDb250ZW50ID0gY29udGVudDtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcC52YXVsdC5tb2RpZnkoZmlsZSwgZmluYWxDb250ZW50KTtcbiAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLm9mZnJlZihjYWNoZUNoYW5nZSk7XG4gICAgfSwgMjAwKTtcbiAgICByZXR1cm4gYXJncztcbiAgfVxufTtcbiIsImltcG9ydCB7IEFwcCwgTm90aWNlLCBNYXJrZG93blZpZXd9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgQXJndW1lbnRzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7XG4gIGNhbGN1bGF0ZSxcbiAgcmVtb3ZlLFxuICByZXBsYWNlLFxuICB0ZW1wbGF0ZSxcbiAgbGluayxcbiAgY29tbWFuZCxcbiAgc3dhcCxcbiAgdGVtcGxhdGVyLFxuICB0ZXh0LFxufSBmcm9tIFwiLi9idXR0b25UeXBlc1wiO1xuaW1wb3J0IHsgZ2V0QnV0dG9uUG9zaXRpb24sIGdldElubGluZUJ1dHRvblBvc2l0aW9uIH0gZnJvbSBcIi4vcGFyc2VyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uIHtcbiAgYXBwPzogQXBwO1xuICBlbD86IEhUTUxFbGVtZW50O1xuICBhcmdzPzogQXJndW1lbnRzO1xuICBpbmxpbmU/OiBib29sZWFuO1xuICBpZD86IHN0cmluZztcbiAgY2xpY2tPdmVycmlkZT86IHtcbiAgICBwYXJhbXM6IGFueVtdO1xuICAgIGNsaWNrOiAoLi4ucGFyYW1zOiBhbnlbXSkgPT4gdm9pZDtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUJ1dHRvbiA9ICh7XG4gIGFwcCxcbiAgZWwsXG4gIGFyZ3MsXG4gIGlubGluZSxcbiAgaWQsXG4gIGNsaWNrT3ZlcnJpZGUsXG59OiBCdXR0b24pOiBIVE1MRWxlbWVudCA9PiB7XG4gIC8vY3JlYXRlIHRoZSBidXR0b24gZWxlbWVudFxuICBjb25zdCBidXR0b24gPSBlbC5jcmVhdGVFbChcImJ1dHRvblwiLCB7XG4gICAgY2xzOiBhcmdzLmNsYXNzXG4gICAgICA/IGAke2FyZ3MuY2xhc3N9ICR7YXJncy5jb2xvcn1gXG4gICAgICA6IGBidXR0b24tZGVmYXVsdCAke2FyZ3MuY29sb3IgPyBhcmdzLmNvbG9yIDogXCJcIn1gLFxuICB9KTtcbiAgYnV0dG9uLmlubmVySFRNTCA9IGFyZ3MubmFtZTtcbiAgYXJncy5pZCA/IGJ1dHRvbi5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBhcmdzLmlkKSA6IFwiXCI7XG4gIGJ1dHRvbi5vbihcImNsaWNrXCIsIFwiYnV0dG9uXCIsICgpID0+IHtcbiAgICBjbGlja092ZXJyaWRlXG4gICAgICA/IGNsaWNrT3ZlcnJpZGUuY2xpY2soLi4uY2xpY2tPdmVycmlkZS5wYXJhbXMpXG4gICAgICA6IGNsaWNrSGFuZGxlcihhcHAsIGFyZ3MsIGlubGluZSwgaWQpO1xuICB9KTtcbiAgcmV0dXJuIGJ1dHRvbjtcbn07XG5cbmNvbnN0IGNsaWNrSGFuZGxlciA9IGFzeW5jIChcbiAgYXBwOiBBcHAsXG4gIGFyZ3M6IEFyZ3VtZW50cyxcbiAgaW5saW5lOiBib29sZWFuLFxuICBpZDogc3RyaW5nXG4pID0+IHtcbiAgY29uc3QgYWN0aXZlVmlldyA9IGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpO1xuICBsZXQgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGFjdGl2ZVZpZXcuZmlsZSk7XG4gIGxldCBwb3NpdGlvbiA9IGlubGluZVxuICAgID8gYXdhaXQgZ2V0SW5saW5lQnV0dG9uUG9zaXRpb24oYXBwLCBpZClcbiAgICA6IGdldEJ1dHRvblBvc2l0aW9uKGNvbnRlbnQsIGFyZ3MpO1xuICAvLyBoYW5kbGUgY29tbWFuZCBidXR0b25zXG4gIGlmIChhcmdzLnRlbXBsYXRlcikge1xuICAgIGFyZ3MgPSBhd2FpdCB0ZW1wbGF0ZXIoYXBwLCBwb3NpdGlvbik7XG4gICAgaWYgKGlubGluZSkge1xuICAgICAgbmV3IE5vdGljZShcInRlbXBsYXRlciBhcmdzIGRvbid0IHdvcmsgd2l0aCBpbmxpbmUgYnV0dG9ucyB5ZXRcIiwgMjAwMCk7XG4gICAgfVxuICB9XG4gIGlmIChhcmdzLnJlcGxhY2UpIHtcbiAgICByZXBsYWNlKGFwcCwgYXJncyk7XG4gIH1cbiAgaWYgKGFyZ3MudHlwZSA9PT0gXCJjb21tYW5kXCIpIHtcbiAgICBjb21tYW5kKGFwcCwgYXJncyk7XG4gIH1cbiAgLy8gaGFuZGxlIGxpbmsgYnV0dG9uc1xuICBpZiAoYXJncy50eXBlID09PSBcImxpbmtcIikge1xuICAgIGxpbmsoYXJncyk7XG4gIH1cbiAgLy8gaGFuZGxlIHRlbXBsYXRlIGJ1dHRvbnNcbiAgaWYgKGFyZ3MudHlwZSAmJiBhcmdzLnR5cGUuaW5jbHVkZXMoXCJ0ZW1wbGF0ZVwiKSkge1xuICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGFjdGl2ZVZpZXcuZmlsZSk7XG4gICAgICBwb3NpdGlvbiA9IGlubGluZVxuICAgICAgICA/IGF3YWl0IGdldElubGluZUJ1dHRvblBvc2l0aW9uKGFwcCwgaWQpXG4gICAgICAgIDogZ2V0QnV0dG9uUG9zaXRpb24oY29udGVudCwgYXJncyk7XG4gICAgICB0ZW1wbGF0ZShhcHAsIGFyZ3MsIHBvc2l0aW9uKTtcbiAgICB9LCA1MCk7XG4gIH1cbiAgaWYgKGFyZ3MudHlwZSA9PT0gXCJjYWxjdWxhdGVcIikge1xuICAgIGNhbGN1bGF0ZShhcHAsIGFyZ3MsIHBvc2l0aW9uKTtcbiAgfVxuICBpZiAoYXJncy50eXBlICYmIGFyZ3MudHlwZS5pbmNsdWRlcyhcInRleHRcIikpIHtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChhY3RpdmVWaWV3LmZpbGUpO1xuICAgICAgcG9zaXRpb24gPSBpbmxpbmVcbiAgICAgICAgPyBhd2FpdCBnZXRJbmxpbmVCdXR0b25Qb3NpdGlvbihhcHAsIGlkKVxuICAgICAgICA6IGdldEJ1dHRvblBvc2l0aW9uKGNvbnRlbnQsIGFyZ3MpO1xuICAgICAgdGV4dChhcHAsIGFyZ3MsIHBvc2l0aW9uKTtcbiAgICB9LCA1MCk7XG4gIH1cbiAgLy8gaGFuZGxlIHJlbW92aW5nIHRoZSBidXR0b25cbiAgaWYgKGFyZ3MucmVtb3ZlKSB7XG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoYWN0aXZlVmlldy5maWxlKTtcbiAgICAgIHBvc2l0aW9uID0gaW5saW5lXG4gICAgICAgID8gYXdhaXQgZ2V0SW5saW5lQnV0dG9uUG9zaXRpb24oYXBwLCBpZClcbiAgICAgICAgOiBnZXRCdXR0b25Qb3NpdGlvbihjb250ZW50LCBhcmdzKTtcbiAgICAgIHJlbW92ZShhcHAsIGFyZ3MsIHBvc2l0aW9uKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuICBpZiAoYXJncy5zd2FwKSB7XG4gICAgaWYgKCFpbmxpbmUpIHtcbiAgICAgIG5ldyBOb3RpY2UoXCJzd2FwIGFyZ3Mgb25seSB3b3JrIGluIGlubGluZSBidXR0b25zIGZvciBub3dcIiwgMjAwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3YXAoYXBwLCBhcmdzLnN3YXAsIGlkLCBpbmxpbmUsIGFjdGl2ZVZpZXcuZmlsZSk7XG4gICAgfVxuICB9XG59O1xuIiwiZXhwb3J0IHZhciB0b3AgPSAndG9wJztcbmV4cG9ydCB2YXIgYm90dG9tID0gJ2JvdHRvbSc7XG5leHBvcnQgdmFyIHJpZ2h0ID0gJ3JpZ2h0JztcbmV4cG9ydCB2YXIgbGVmdCA9ICdsZWZ0JztcbmV4cG9ydCB2YXIgYXV0byA9ICdhdXRvJztcbmV4cG9ydCB2YXIgYmFzZVBsYWNlbWVudHMgPSBbdG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0XTtcbmV4cG9ydCB2YXIgc3RhcnQgPSAnc3RhcnQnO1xuZXhwb3J0IHZhciBlbmQgPSAnZW5kJztcbmV4cG9ydCB2YXIgY2xpcHBpbmdQYXJlbnRzID0gJ2NsaXBwaW5nUGFyZW50cyc7XG5leHBvcnQgdmFyIHZpZXdwb3J0ID0gJ3ZpZXdwb3J0JztcbmV4cG9ydCB2YXIgcG9wcGVyID0gJ3BvcHBlcic7XG5leHBvcnQgdmFyIHJlZmVyZW5jZSA9ICdyZWZlcmVuY2UnO1xuZXhwb3J0IHZhciB2YXJpYXRpb25QbGFjZW1lbnRzID0gLyojX19QVVJFX18qL2Jhc2VQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7XG5leHBvcnQgdmFyIHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovW10uY29uY2F0KGJhc2VQbGFjZW1lbnRzLCBbYXV0b10pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCwgcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTsgLy8gbW9kaWZpZXJzIHRoYXQgbmVlZCB0byByZWFkIHRoZSBET01cblxuZXhwb3J0IHZhciBiZWZvcmVSZWFkID0gJ2JlZm9yZVJlYWQnO1xuZXhwb3J0IHZhciByZWFkID0gJ3JlYWQnO1xuZXhwb3J0IHZhciBhZnRlclJlYWQgPSAnYWZ0ZXJSZWFkJzsgLy8gcHVyZS1sb2dpYyBtb2RpZmllcnNcblxuZXhwb3J0IHZhciBiZWZvcmVNYWluID0gJ2JlZm9yZU1haW4nO1xuZXhwb3J0IHZhciBtYWluID0gJ21haW4nO1xuZXhwb3J0IHZhciBhZnRlck1haW4gPSAnYWZ0ZXJNYWluJzsgLy8gbW9kaWZpZXIgd2l0aCB0aGUgcHVycG9zZSB0byB3cml0ZSB0byB0aGUgRE9NIChvciB3cml0ZSBpbnRvIGEgZnJhbWV3b3JrIHN0YXRlKVxuXG5leHBvcnQgdmFyIGJlZm9yZVdyaXRlID0gJ2JlZm9yZVdyaXRlJztcbmV4cG9ydCB2YXIgd3JpdGUgPSAnd3JpdGUnO1xuZXhwb3J0IHZhciBhZnRlcldyaXRlID0gJ2FmdGVyV3JpdGUnO1xuZXhwb3J0IHZhciBtb2RpZmllclBoYXNlcyA9IFtiZWZvcmVSZWFkLCByZWFkLCBhZnRlclJlYWQsIGJlZm9yZU1haW4sIG1haW4sIGFmdGVyTWFpbiwgYmVmb3JlV3JpdGUsIHdyaXRlLCBhZnRlcldyaXRlXTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlTmFtZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID8gKGVsZW1lbnQubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIGlmIChub2RlID09IG51bGwpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgaWYgKG5vZGUudG9TdHJpbmcoKSAhPT0gJ1tvYmplY3QgV2luZG93XScpIHtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICByZXR1cm4gb3duZXJEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93IDogd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcblxuZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuSFRNTEVsZW1lbnQ7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdChub2RlKSB7XG4gIC8vIElFIDExIGhhcyBubyBTaGFkb3dSb290XG4gIGlmICh0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5TaGFkb3dSb290O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q7XG59XG5cbmV4cG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH07IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gVGhpcyBtb2RpZmllciB0YWtlcyB0aGUgc3R5bGVzIHByZXBhcmVkIGJ5IHRoZSBgY29tcHV0ZVN0eWxlc2AgbW9kaWZpZXJcbi8vIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIEhUTUxFbGVtZW50cyBzdWNoIGFzIHBvcHBlciBhbmQgYXJyb3dcblxuZnVuY3Rpb24gYXBwbHlTdHlsZXMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlO1xuICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBzdHlsZSA9IHN0YXRlLnN0eWxlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBGbG93IGRvZXNuJ3Qgc3VwcG9ydCB0byBleHRlbmQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0J3MgdGhlIG1vc3RcbiAgICAvLyBlZmZlY3RpdmUgd2F5IHRvIGFwcGx5IHN0eWxlcyB0byBhbiBIVE1MRWxlbWVudFxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuXG5cbiAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUgPT09IHRydWUgPyAnJyA6IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZTtcbiAgdmFyIGluaXRpYWxTdHlsZXMgPSB7XG4gICAgcG9wcGVyOiB7XG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnLFxuICAgICAgbWFyZ2luOiAnMCdcbiAgICB9LFxuICAgIGFycm93OiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgIH0sXG4gICAgcmVmZXJlbmNlOiB7fVxuICB9O1xuICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLnBvcHBlci5zdHlsZSwgaW5pdGlhbFN0eWxlcy5wb3BwZXIpO1xuICBzdGF0ZS5zdHlsZXMgPSBpbml0aWFsU3R5bGVzO1xuXG4gIGlmIChzdGF0ZS5lbGVtZW50cy5hcnJvdykge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMuYXJyb3cuc3R5bGUsIGluaXRpYWxTdHlsZXMuYXJyb3cpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICAgIHZhciBzdHlsZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzdGF0ZS5zdHlsZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBzdGF0ZS5zdHlsZXNbbmFtZV0gOiBpbml0aWFsU3R5bGVzW25hbWVdKTsgLy8gU2V0IGFsbCB2YWx1ZXMgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIHVuc2V0IHRoZW1cblxuICAgICAgdmFyIHN0eWxlID0gc3R5bGVQcm9wZXJ0aWVzLnJlZHVjZShmdW5jdGlvbiAoc3R5bGUsIHByb3BlcnR5KSB7XG4gICAgICAgIHN0eWxlW3Byb3BlcnR5XSA9ICcnO1xuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9LCB7fSk7IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXBwbHlTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGFwcGx5U3R5bGVzLFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsnY29tcHV0ZVN0eWxlcyddXG59OyIsImltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn0iLCJpbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xudmFyIHJvdW5kID0gTWF0aC5yb3VuZDtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUpIHtcbiAgaWYgKGluY2x1ZGVTY2FsZSA9PT0gdm9pZCAwKSB7XG4gICAgaW5jbHVkZVNjYWxlID0gZmFsc2U7XG4gIH1cblxuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaXNIVE1MRWxlbWVudChlbGVtZW50KSAmJiBpbmNsdWRlU2NhbGUpIHtcbiAgICAvLyBGYWxsYmFjayB0byAxIGluIGNhc2UgYm90aCB2YWx1ZXMgYXJlIGAwYFxuICAgIHNjYWxlWCA9IHJlY3Qud2lkdGggLyBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IDE7XG4gICAgc2NhbGVZID0gcmVjdC5oZWlnaHQgLyBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCAxO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogcm91bmQocmVjdC53aWR0aCAvIHNjYWxlWCksXG4gICAgaGVpZ2h0OiByb3VuZChyZWN0LmhlaWdodCAvIHNjYWxlWSksXG4gICAgdG9wOiByb3VuZChyZWN0LnRvcCAvIHNjYWxlWSksXG4gICAgcmlnaHQ6IHJvdW5kKHJlY3QucmlnaHQgLyBzY2FsZVgpLFxuICAgIGJvdHRvbTogcm91bmQocmVjdC5ib3R0b20gLyBzY2FsZVkpLFxuICAgIGxlZnQ6IHJvdW5kKHJlY3QubGVmdCAvIHNjYWxlWCksXG4gICAgeDogcm91bmQocmVjdC5sZWZ0IC8gc2NhbGVYKSxcbiAgICB5OiByb3VuZChyZWN0LnRvcCAvIHNjYWxlWSlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiOyAvLyBSZXR1cm5zIHRoZSBsYXlvdXQgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuIExheW91dFxuLy8gbWVhbnMgaXQgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB0cmFuc2Zvcm1zLlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRMYXlvdXRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIGNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCk7IC8vIFVzZSB0aGUgY2xpZW50UmVjdCBzaXplcyBpZiBpdCdzIG5vdCBiZWVuIHRyYW5zZm9ybWVkLlxuICAvLyBGaXhlcyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzEyMjNcblxuICB2YXIgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3Qud2lkdGggLSB3aWR0aCkgPD0gMSkge1xuICAgIHdpZHRoID0gY2xpZW50UmVjdC53aWR0aDtcbiAgfVxuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LmhlaWdodCAtIGhlaWdodCkgPD0gMSkge1xuICAgIGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBlbGVtZW50Lm9mZnNldExlZnQsXG4gICAgeTogZWxlbWVudC5vZmZzZXRUb3AsXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0XG4gIH07XG59IiwiaW1wb3J0IHsgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29udGFpbnMocGFyZW50LCBjaGlsZCkge1xuICB2YXIgcm9vdE5vZGUgPSBjaGlsZC5nZXRSb290Tm9kZSAmJiBjaGlsZC5nZXRSb290Tm9kZSgpOyAvLyBGaXJzdCwgYXR0ZW1wdCB3aXRoIGZhc3RlciBuYXRpdmUgbWV0aG9kXG5cbiAgaWYgKHBhcmVudC5jb250YWlucyhjaGlsZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyB0aGVuIGZhbGxiYWNrIHRvIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB3aXRoIFNoYWRvdyBET00gc3VwcG9ydFxuICBlbHNlIGlmIChyb290Tm9kZSAmJiBpc1NoYWRvd1Jvb3Qocm9vdE5vZGUpKSB7XG4gICAgICB2YXIgbmV4dCA9IGNoaWxkO1xuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChuZXh0ICYmIHBhcmVudC5pc1NhbWVOb2RlKG5leHQpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddOiBuZWVkIGEgYmV0dGVyIHdheSB0byBoYW5kbGUgdGhpcy4uLlxuXG5cbiAgICAgICAgbmV4dCA9IG5leHQucGFyZW50Tm9kZSB8fCBuZXh0Lmhvc3Q7XG4gICAgICB9IHdoaWxlIChuZXh0KTtcbiAgICB9IC8vIEdpdmUgdXAsIHRoZSByZXN1bHQgaXMgZmFsc2VcblxuXG4gIHJldHVybiBmYWxzZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsndGFibGUnLCAndGQnLCAndGgnXS5pbmRleE9mKGdldE5vZGVOYW1lKGVsZW1lbnQpKSA+PSAwO1xufSIsImltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSB7XG4gIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgcmV0dXJuICgoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5vd25lckRvY3VtZW50IDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gIGVsZW1lbnQuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50O1xufSIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZWxlbWVudCkge1xuICBpZiAoZ2V0Tm9kZU5hbWUoZWxlbWVudCkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuICgvLyB0aGlzIGlzIGEgcXVpY2tlciAoYnV0IGxlc3MgdHlwZSBzYWZlKSB3YXkgdG8gc2F2ZSBxdWl0ZSBzb21lIGJ5dGVzIGZyb20gdGhlIGJ1bmRsZVxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cbiAgICAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICBlbGVtZW50LmFzc2lnbmVkU2xvdCB8fCAvLyBzdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZVxuICAgIGVsZW1lbnQucGFyZW50Tm9kZSB8fCAoIC8vIERPTSBFbGVtZW50IGRldGVjdGVkXG4gICAgaXNTaGFkb3dSb290KGVsZW1lbnQpID8gZWxlbWVudC5ob3N0IDogbnVsbCkgfHwgLy8gU2hhZG93Um9vdCBkZXRlY3RlZFxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBIVE1MRWxlbWVudCBpcyBhIE5vZGVcbiAgICBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgLy8gZmFsbGJhY2tcblxuICApO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgaXNUYWJsZUVsZW1lbnQgZnJvbSBcIi4vaXNUYWJsZUVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzgzN1xuICBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG59IC8vIGAub2Zmc2V0UGFyZW50YCByZXBvcnRzIGBudWxsYCBmb3IgZml4ZWQgZWxlbWVudHMsIHdoaWxlIGFic29sdXRlIGVsZW1lbnRzXG4vLyByZXR1cm4gdGhlIGNvbnRhaW5pbmcgYmxvY2tcblxuXG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICB2YXIgaXNGaXJlZm94ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2ZpcmVmb3gnKSAhPT0gLTE7XG4gIHZhciBpc0lFID0gbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdUcmlkZW50JykgIT09IC0xO1xuXG4gIGlmIChpc0lFICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAvLyBJbiBJRSA5LCAxMCBhbmQgMTEgZml4ZWQgZWxlbWVudHMgY29udGFpbmluZyBibG9jayBpcyBhbHdheXMgZXN0YWJsaXNoZWQgYnkgdGhlIHZpZXdwb3J0XG4gICAgdmFyIGVsZW1lbnRDc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXG4gICAgaWYgKGVsZW1lbnRDc3MucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG5cbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmIFsnaHRtbCcsICdib2R5J10uaW5kZXhPZihnZXROb2RlTmFtZShjdXJyZW50Tm9kZSkpIDwgMCkge1xuICAgIHZhciBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTsgLy8gVGhpcyBpcyBub24tZXhoYXVzdGl2ZSBidXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBDU1MgcHJvcGVydGllcyB0aGF0XG4gICAgLy8gY3JlYXRlIGEgY29udGFpbmluZyBibG9jay5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuXG4gICAgaWYgKGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCBjc3MuY29udGFpbiA9PT0gJ3BhaW50JyB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZSddLmluZGV4T2YoY3NzLndpbGxDaGFuZ2UpICE9PSAtMSB8fCBpc0ZpcmVmb3ggJiYgY3NzLndpbGxDaGFuZ2UgPT09ICdmaWx0ZXInIHx8IGlzRmlyZWZveCAmJiBjc3MuZmlsdGVyICYmIGNzcy5maWx0ZXIgIT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59IC8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCk7XG4gIH1cblxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBbJ3RvcCcsICdib3R0b20nXS5pbmRleE9mKHBsYWNlbWVudCkgPj0gMCA/ICd4JyA6ICd5Jztcbn0iLCJleHBvcnQgdmFyIG1heCA9IE1hdGgubWF4O1xuZXhwb3J0IHZhciBtaW4gPSBNYXRoLm1pbjtcbmV4cG9ydCB2YXIgcm91bmQgPSBNYXRoLnJvdW5kOyIsImltcG9ydCB7IG1heCBhcyBtYXRoTWF4LCBtaW4gYXMgbWF0aE1pbiB9IGZyb20gXCIuL21hdGguanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpIHtcbiAgcmV0dXJuIG1hdGhNYXgobWluLCBtYXRoTWluKHZhbHVlLCBtYXgpKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwiaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlUGFkZGluZ09iamVjdChwYWRkaW5nT2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBnZXRGcmVzaFNpZGVPYmplY3QoKSwgcGFkZGluZ09iamVjdCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZXhwYW5kVG9IYXNoTWFwKHZhbHVlLCBrZXlzKSB7XG4gIHJldHVybiBrZXlzLnJlZHVjZShmdW5jdGlvbiAoaGFzaE1hcCwga2V5KSB7XG4gICAgaGFzaE1hcFtrZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIGhhc2hNYXA7XG4gIH0sIHt9KTtcbn0iLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4uL2RvbS11dGlscy9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgd2l0aGluIGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4uL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi4vdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzXCI7XG5pbXBvcnQgeyBsZWZ0LCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHRvcCwgYm90dG9tIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHRvUGFkZGluZ09iamVjdCA9IGZ1bmN0aW9uIHRvUGFkZGluZ09iamVjdChwYWRkaW5nLCBzdGF0ZSkge1xuICBwYWRkaW5nID0gdHlwZW9mIHBhZGRpbmcgPT09ICdmdW5jdGlvbicgPyBwYWRkaW5nKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogcGFkZGluZztcbiAgcmV0dXJuIG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG59O1xuXG5mdW5jdGlvbiBhcnJvdyhfcmVmKSB7XG4gIHZhciBfc3RhdGUkbW9kaWZpZXJzRGF0YSQ7XG5cbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBpc1ZlcnRpY2FsID0gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDA7XG4gIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gIGlmICghYXJyb3dFbGVtZW50IHx8ICFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHBhZGRpbmdPYmplY3QgPSB0b1BhZGRpbmdPYmplY3Qob3B0aW9ucy5wYWRkaW5nLCBzdGF0ZSk7XG4gIHZhciBhcnJvd1JlY3QgPSBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCk7XG4gIHZhciBtaW5Qcm9wID0gYXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgdmFyIG1heFByb3AgPSBheGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgdmFyIGVuZERpZmYgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbbGVuXSArIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5wb3BwZXJbbGVuXTtcbiAgdmFyIHN0YXJ0RGlmZiA9IHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gIHZhciBhcnJvd09mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChhcnJvd0VsZW1lbnQpO1xuICB2YXIgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50SGVpZ2h0IHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRXaWR0aCB8fCAwIDogMDtcbiAgdmFyIGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyOyAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIHBvcHBlciBpZiB0aGUgY2VudGVyIHBvaW50IGlzXG4gIC8vIG91dHNpZGUgb2YgdGhlIHBvcHBlciBib3VuZHNcblxuICB2YXIgbWluID0gcGFkZGluZ09iamVjdFttaW5Qcm9wXTtcbiAgdmFyIG1heCA9IGNsaWVudFNpemUgLSBhcnJvd1JlY3RbbGVuXSAtIHBhZGRpbmdPYmplY3RbbWF4UHJvcF07XG4gIHZhciBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93UmVjdFtsZW5dIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICB2YXIgb2Zmc2V0ID0gd2l0aGluKG1pbiwgY2VudGVyLCBtYXgpOyAvLyBQcmV2ZW50cyBicmVha2luZyBzeW50YXggaGlnaGxpZ2h0aW5nLi4uXG5cbiAgdmFyIGF4aXNQcm9wID0gYXhpcztcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IChfc3RhdGUkbW9kaWZpZXJzRGF0YSQgPSB7fSwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkW2F4aXNQcm9wXSA9IG9mZnNldCwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkLmNlbnRlck9mZnNldCA9IG9mZnNldCAtIGNlbnRlciwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkKTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRlbGVtZW50ID0gb3B0aW9ucy5lbGVtZW50LFxuICAgICAgYXJyb3dFbGVtZW50ID0gX29wdGlvbnMkZWxlbWVudCA9PT0gdm9pZCAwID8gJ1tkYXRhLXBvcHBlci1hcnJvd10nIDogX29wdGlvbnMkZWxlbWVudDtcblxuICBpZiAoYXJyb3dFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gQ1NTIHNlbGVjdG9yXG5cblxuICBpZiAodHlwZW9mIGFycm93RWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5wb3BwZXIucXVlcnlTZWxlY3RvcihhcnJvd0VsZW1lbnQpO1xuXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgaWYgKCFpc0hUTUxFbGVtZW50KGFycm93RWxlbWVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBlbGVtZW50IG11c3QgYmUgYW4gSFRNTEVsZW1lbnQgKG5vdCBhbiBTVkdFbGVtZW50KS4nLCAnVG8gdXNlIGFuIFNWRyBhcnJvdywgd3JhcCBpdCBpbiBhbiBIVE1MRWxlbWVudCB0aGF0IHdpbGwgYmUgdXNlZCBhcycsICd0aGUgYXJyb3cuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbnRhaW5zKHN0YXRlLmVsZW1lbnRzLnBvcHBlciwgYXJyb3dFbGVtZW50KSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBtb2RpZmllclxcJ3MgYGVsZW1lbnRgIG11c3QgYmUgYSBjaGlsZCBvZiB0aGUgcG9wcGVyJywgJ2VsZW1lbnQuJ10uam9pbignICcpKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0ZS5lbGVtZW50cy5hcnJvdyA9IGFycm93RWxlbWVudDtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IGFycm93LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddXG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB1bnNldFNpZGVzID0ge1xuICB0b3A6ICdhdXRvJyxcbiAgcmlnaHQ6ICdhdXRvJyxcbiAgYm90dG9tOiAnYXV0bycsXG4gIGxlZnQ6ICdhdXRvJ1xufTsgLy8gUm91bmQgdGhlIG9mZnNldHMgdG8gdGhlIG5lYXJlc3Qgc3VpdGFibGUgc3VicGl4ZWwgYmFzZWQgb24gdGhlIERQUi5cbi8vIFpvb21pbmcgY2FuIGNoYW5nZSB0aGUgRFBSLCBidXQgaXQgc2VlbXMgdG8gcmVwb3J0IGEgdmFsdWUgdGhhdCB3aWxsXG4vLyBjbGVhbmx5IGRpdmlkZSB0aGUgdmFsdWVzIGludG8gdGhlIGFwcHJvcHJpYXRlIHN1YnBpeGVscy5cblxuZnVuY3Rpb24gcm91bmRPZmZzZXRzQnlEUFIoX3JlZikge1xuICB2YXIgeCA9IF9yZWYueCxcbiAgICAgIHkgPSBfcmVmLnk7XG4gIHZhciB3aW4gPSB3aW5kb3c7XG4gIHZhciBkcHIgPSB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuICByZXR1cm4ge1xuICAgIHg6IHJvdW5kKHJvdW5kKHggKiBkcHIpIC8gZHByKSB8fCAwLFxuICAgIHk6IHJvdW5kKHJvdW5kKHkgKiBkcHIpIC8gZHByKSB8fCAwXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBUb1N0eWxlcyhfcmVmMikge1xuICB2YXIgX09iamVjdCRhc3NpZ24yO1xuXG4gIHZhciBwb3BwZXIgPSBfcmVmMi5wb3BwZXIsXG4gICAgICBwb3BwZXJSZWN0ID0gX3JlZjIucG9wcGVyUmVjdCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYyLnBsYWNlbWVudCxcbiAgICAgIG9mZnNldHMgPSBfcmVmMi5vZmZzZXRzLFxuICAgICAgcG9zaXRpb24gPSBfcmVmMi5wb3NpdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9yZWYyLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGFkYXB0aXZlID0gX3JlZjIuYWRhcHRpdmUsXG4gICAgICByb3VuZE9mZnNldHMgPSBfcmVmMi5yb3VuZE9mZnNldHM7XG5cbiAgdmFyIF9yZWYzID0gcm91bmRPZmZzZXRzID09PSB0cnVlID8gcm91bmRPZmZzZXRzQnlEUFIob2Zmc2V0cykgOiB0eXBlb2Ygcm91bmRPZmZzZXRzID09PSAnZnVuY3Rpb24nID8gcm91bmRPZmZzZXRzKG9mZnNldHMpIDogb2Zmc2V0cyxcbiAgICAgIF9yZWYzJHggPSBfcmVmMy54LFxuICAgICAgeCA9IF9yZWYzJHggPT09IHZvaWQgMCA/IDAgOiBfcmVmMyR4LFxuICAgICAgX3JlZjMkeSA9IF9yZWYzLnksXG4gICAgICB5ID0gX3JlZjMkeSA9PT0gdm9pZCAwID8gMCA6IF9yZWYzJHk7XG5cbiAgdmFyIGhhc1ggPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd4Jyk7XG4gIHZhciBoYXNZID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneScpO1xuICB2YXIgc2lkZVggPSBsZWZ0O1xuICB2YXIgc2lkZVkgPSB0b3A7XG4gIHZhciB3aW4gPSB3aW5kb3c7XG5cbiAgaWYgKGFkYXB0aXZlKSB7XG4gICAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChwb3BwZXIpO1xuICAgIHZhciBoZWlnaHRQcm9wID0gJ2NsaWVudEhlaWdodCc7XG4gICAgdmFyIHdpZHRoUHJvcCA9ICdjbGllbnRXaWR0aCc7XG5cbiAgICBpZiAob2Zmc2V0UGFyZW50ID09PSBnZXRXaW5kb3cocG9wcGVyKSkge1xuICAgICAgb2Zmc2V0UGFyZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KHBvcHBlcik7XG5cbiAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gIT09ICdzdGF0aWMnKSB7XG4gICAgICAgIGhlaWdodFByb3AgPSAnc2Nyb2xsSGVpZ2h0JztcbiAgICAgICAgd2lkdGhQcm9wID0gJ3Njcm9sbFdpZHRoJztcbiAgICAgIH1cbiAgICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhc3RdOiBmb3JjZSB0eXBlIHJlZmluZW1lbnQsIHdlIGNvbXBhcmUgb2Zmc2V0UGFyZW50IHdpdGggd2luZG93IGFib3ZlLCBidXQgRmxvdyBkb2Vzbid0IGRldGVjdCBpdFxuXG5cbiAgICBvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQ7XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSB0b3ApIHtcbiAgICAgIHNpZGVZID0gYm90dG9tOyAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cblxuICAgICAgeSAtPSBvZmZzZXRQYXJlbnRbaGVpZ2h0UHJvcF0gLSBwb3BwZXJSZWN0LmhlaWdodDtcbiAgICAgIHkgKj0gZ3B1QWNjZWxlcmF0aW9uID8gMSA6IC0xO1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQgPT09IGxlZnQpIHtcbiAgICAgIHNpZGVYID0gcmlnaHQ7IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuXG4gICAgICB4IC09IG9mZnNldFBhcmVudFt3aWR0aFByb3BdIC0gcG9wcGVyUmVjdC53aWR0aDtcbiAgICAgIHggKj0gZ3B1QWNjZWxlcmF0aW9uID8gMSA6IC0xO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb21tb25TdHlsZXMgPSBPYmplY3QuYXNzaWduKHtcbiAgICBwb3NpdGlvbjogcG9zaXRpb25cbiAgfSwgYWRhcHRpdmUgJiYgdW5zZXRTaWRlcyk7XG5cbiAgaWYgKGdwdUFjY2VsZXJhdGlvbikge1xuICAgIHZhciBfT2JqZWN0JGFzc2lnbjtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbiA9IHt9LCBfT2JqZWN0JGFzc2lnbltzaWRlWV0gPSBoYXNZID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduW3NpZGVYXSA9IGhhc1ggPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ24udHJhbnNmb3JtID0gKHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpIDwgMiA/IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIgOiBcInRyYW5zbGF0ZTNkKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgsIDApXCIsIF9PYmplY3QkYXNzaWduKSk7XG4gIH1cblxuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24yID0ge30sIF9PYmplY3QkYXNzaWduMltzaWRlWV0gPSBoYXNZID8geSArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjJbc2lkZVhdID0gaGFzWCA/IHggKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yLnRyYW5zZm9ybSA9ICcnLCBfT2JqZWN0JGFzc2lnbjIpKTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZVN0eWxlcyhfcmVmNCkge1xuICB2YXIgc3RhdGUgPSBfcmVmNC5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmNC5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID0gb3B0aW9ucy5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRncHVBY2NlbGVyYXQsXG4gICAgICBfb3B0aW9ucyRhZGFwdGl2ZSA9IG9wdGlvbnMuYWRhcHRpdmUsXG4gICAgICBhZGFwdGl2ZSA9IF9vcHRpb25zJGFkYXB0aXZlID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkYWRhcHRpdmUsXG4gICAgICBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPSBvcHRpb25zLnJvdW5kT2Zmc2V0cyxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJvdW5kT2Zmc2V0cztcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgdmFyIHRyYW5zaXRpb25Qcm9wZXJ0eSA9IGdldENvbXB1dGVkU3R5bGUoc3RhdGUuZWxlbWVudHMucG9wcGVyKS50cmFuc2l0aW9uUHJvcGVydHkgfHwgJyc7XG5cbiAgICBpZiAoYWRhcHRpdmUgJiYgWyd0cmFuc2Zvcm0nLCAndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J10uc29tZShmdW5jdGlvbiAocHJvcGVydHkpIHtcbiAgICAgIHJldHVybiB0cmFuc2l0aW9uUHJvcGVydHkuaW5kZXhPZihwcm9wZXJ0eSkgPj0gMDtcbiAgICB9KSkge1xuICAgICAgY29uc29sZS53YXJuKFsnUG9wcGVyOiBEZXRlY3RlZCBDU1MgdHJhbnNpdGlvbnMgb24gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmcnLCAnQ1NTIHByb3BlcnRpZXM6IFwidHJhbnNmb3JtXCIsIFwidG9wXCIsIFwicmlnaHRcIiwgXCJib3R0b21cIiwgXCJsZWZ0XCIuJywgJ1xcblxcbicsICdEaXNhYmxlIHRoZSBcImNvbXB1dGVTdHlsZXNcIiBtb2RpZmllclxcJ3MgYGFkYXB0aXZlYCBvcHRpb24gdG8gYWxsb3cnLCAnZm9yIHNtb290aCB0cmFuc2l0aW9ucywgb3IgcmVtb3ZlIHRoZXNlIHByb3BlcnRpZXMgZnJvbSB0aGUgQ1NTJywgJ3RyYW5zaXRpb24gZGVjbGFyYXRpb24gb24gdGhlIHBvcHBlciBlbGVtZW50IGlmIG9ubHkgdHJhbnNpdGlvbmluZycsICdvcGFjaXR5IG9yIGJhY2tncm91bmQtY29sb3IgZm9yIGV4YW1wbGUuJywgJ1xcblxcbicsICdXZSByZWNvbW1lbmQgdXNpbmcgdGhlIHBvcHBlciBlbGVtZW50IGFzIGEgd3JhcHBlciBhcm91bmQgYW4gaW5uZXInLCAnZWxlbWVudCB0aGF0IGNhbiBoYXZlIGFueSBDU1MgcHJvcGVydHkgdHJhbnNpdGlvbmVkIGZvciBhbmltYXRpb25zLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNvbW1vblN0eWxlcyA9IHtcbiAgICBwbGFjZW1lbnQ6IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KSxcbiAgICBwb3BwZXI6IHN0YXRlLmVsZW1lbnRzLnBvcHBlcixcbiAgICBwb3BwZXJSZWN0OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgZ3B1QWNjZWxlcmF0aW9uOiBncHVBY2NlbGVyYXRpb25cbiAgfTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLnBvcHBlciwgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMsXG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGFkYXB0aXZlOiBhZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93ICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMuYXJyb3cgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMuYXJyb3csIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgYWRhcHRpdmU6IGZhbHNlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1wbGFjZW1lbnQnOiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdjb21wdXRlU3R5bGVzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdiZWZvcmVXcml0ZScsXG4gIGZuOiBjb21wdXRlU3R5bGVzLFxuICBkYXRhOiB7fVxufTsiLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHBhc3NpdmUgPSB7XG4gIHBhc3NpdmU6IHRydWVcbn07XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBpbnN0YW5jZSA9IF9yZWYuaW5zdGFuY2UsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkc2Nyb2xsID0gb3B0aW9ucy5zY3JvbGwsXG4gICAgICBzY3JvbGwgPSBfb3B0aW9ucyRzY3JvbGwgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRzY3JvbGwsXG4gICAgICBfb3B0aW9ucyRyZXNpemUgPSBvcHRpb25zLnJlc2l6ZSxcbiAgICAgIHJlc2l6ZSA9IF9vcHRpb25zJHJlc2l6ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJlc2l6ZTtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIpO1xuICB2YXIgc2Nyb2xsUGFyZW50cyA9IFtdLmNvbmNhdChzdGF0ZS5zY3JvbGxQYXJlbnRzLnJlZmVyZW5jZSwgc3RhdGUuc2Nyb2xsUGFyZW50cy5wb3BwZXIpO1xuXG4gIGlmIChzY3JvbGwpIHtcbiAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgc2Nyb2xsUGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAocmVzaXplKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmIChzY3JvbGwpIHtcbiAgICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICAgIHNjcm9sbFBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc2l6ZSkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfVxuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZXZlbnRMaXN0ZW5lcnMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGZ1bmN0aW9uIGZuKCkge30sXG4gIGVmZmVjdDogZWZmZWN0LFxuICBkYXRhOiB7fVxufTsiLCJ2YXIgaGFzaCA9IHtcbiAgbGVmdDogJ3JpZ2h0JyxcbiAgcmlnaHQ6ICdsZWZ0JyxcbiAgYm90dG9tOiAndG9wJyxcbiAgdG9wOiAnYm90dG9tJ1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL2xlZnR8cmlnaHR8Ym90dG9tfHRvcC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCJ2YXIgaGFzaCA9IHtcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbChub2RlKSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3cobm9kZSk7XG4gIHZhciBzY3JvbGxMZWZ0ID0gd2luLnBhZ2VYT2Zmc2V0O1xuICB2YXIgc2Nyb2xsVG9wID0gd2luLnBhZ2VZT2Zmc2V0O1xuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IHNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBzY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpIHtcbiAgLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuICAvLyBpbmNvcnJlY3QgZm9yIFJUTC5cbiAgLy8gUG9wcGVyIDEgaXMgYnJva2VuIGluIHRoaXMgY2FzZSBhbmQgbmV2ZXIgaGFkIGEgYnVnIHJlcG9ydCBzbyBsZXQncyBhc3N1bWVcbiAgLy8gaXQncyBub3QgYW4gaXNzdWUuIEkgZG9uJ3QgdGhpbmsgYW55b25lIGV2ZXIgc3BlY2lmaWVzIHdpZHRoIG9uIDxodG1sPlxuICAvLyBhbnl3YXkuXG4gIC8vIEJyb3dzZXJzIHdoZXJlIHRoZSBsZWZ0IHNjcm9sbGJhciBkb2Vzbid0IGNhdXNlIGFuIGlzc3VlIHJlcG9ydCBgMGAgZm9yXG4gIC8vIHRoaXMgKGUuZy4gRWRnZSAyMDE5LCBJRTExLCBTYWZhcmkpXG4gIHJldHVybiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKS5sZWZ0ICsgZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICB2YXIgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIHZhciB4ID0gMDtcbiAgdmFyIHkgPSAwOyAvLyBOQjogVGhpcyBpc24ndCBzdXBwb3J0ZWQgb24gaU9TIDw9IDEyLiBJZiB0aGUga2V5Ym9hcmQgaXMgb3BlbiwgdGhlIHBvcHBlclxuICAvLyBjYW4gYmUgb2JzY3VyZWQgdW5kZXJuZWF0aCBpdC5cbiAgLy8gQWxzbywgYGh0bWwuY2xpZW50SGVpZ2h0YCBhZGRzIHRoZSBib3R0b20gYmFyIGhlaWdodCBpbiBTYWZhcmkgaU9TLCBldmVuXG4gIC8vIGlmIGl0IGlzbid0IG9wZW4sIHNvIGlmIHRoaXMgaXNuJ3QgYXZhaWxhYmxlLCB0aGUgcG9wcGVyIHdpbGwgYmUgZGV0ZWN0ZWRcbiAgLy8gdG8gb3ZlcmZsb3cgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuIHRvbyBlYXJseS5cblxuICBpZiAodmlzdWFsVmlld3BvcnQpIHtcbiAgICB3aWR0aCA9IHZpc3VhbFZpZXdwb3J0LndpZHRoO1xuICAgIGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0LmhlaWdodDsgLy8gVXNlcyBMYXlvdXQgVmlld3BvcnQgKGxpa2UgQ2hyb21lOyBTYWZhcmkgZG9lcyBub3QgY3VycmVudGx5KVxuICAgIC8vIEluIENocm9tZSwgaXQgcmV0dXJucyBhIHZhbHVlIHZlcnkgY2xvc2UgdG8gMCAoKy8tKSBidXQgY29udGFpbnMgcm91bmRpbmdcbiAgICAvLyBlcnJvcnMgZHVlIHRvIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIHNvIHdlIG5lZWQgdG8gY2hlY2sgcHJlY2lzaW9uLlxuICAgIC8vIFNhZmFyaSByZXR1cm5zIGEgbnVtYmVyIDw9IDAsIHVzdWFsbHkgPCAtMSB3aGVuIHBpbmNoLXpvb21lZFxuICAgIC8vIEZlYXR1cmUgZGV0ZWN0aW9uIGZhaWxzIGluIG1vYmlsZSBlbXVsYXRpb24gbW9kZSBpbiBDaHJvbWUuXG4gICAgLy8gTWF0aC5hYnMod2luLmlubmVyV2lkdGggLyB2aXN1YWxWaWV3cG9ydC5zY2FsZSAtIHZpc3VhbFZpZXdwb3J0LndpZHRoKSA8XG4gICAgLy8gMC4wMDFcbiAgICAvLyBGYWxsYmFjayBoZXJlOiBcIk5vdCBTYWZhcmlcIiB1c2VyQWdlbnRcblxuICAgIGlmICghL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KSkge1xuICAgICAgeCA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQ7XG4gICAgICB5ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0VG9wO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHggKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpLFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCB7IG1heCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7IC8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGVcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHdpblNjcm9sbCA9IGdldFdpbmRvd1Njcm9sbChlbGVtZW50KTtcbiAgdmFyIGJvZHkgPSAoX2VsZW1lbnQkb3duZXJEb2N1bWVuID0gZWxlbWVudC5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX2VsZW1lbnQkb3duZXJEb2N1bWVuLmJvZHk7XG4gIHZhciB3aWR0aCA9IG1heChodG1sLnNjcm9sbFdpZHRoLCBodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5zY3JvbGxXaWR0aCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCk7XG4gIHZhciBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5ID8gYm9keS5zY3JvbGxIZWlnaHQgOiAwLCBib2R5ID8gYm9keS5jbGllbnRIZWlnaHQgOiAwKTtcbiAgdmFyIHggPSAtd2luU2Nyb2xsLnNjcm9sbExlZnQgKyBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpO1xuICB2YXIgeSA9IC13aW5TY3JvbGwuc2Nyb2xsVG9wO1xuXG4gIGlmIChnZXRDb21wdXRlZFN0eWxlKGJvZHkgfHwgaHRtbCkuZGlyZWN0aW9uID09PSAncnRsJykge1xuICAgIHggKz0gbWF4KGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LmNsaWVudFdpZHRoIDogMCkgLSB3aWR0aDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0LFxuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xufSIsImltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzU2Nyb2xsUGFyZW50KGVsZW1lbnQpIHtcbiAgLy8gRmlyZWZveCB3YW50cyB1cyB0byBjaGVjayBgLXhgIGFuZCBgLXlgIHZhcmlhdGlvbnMgYXMgd2VsbFxuICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLFxuICAgICAgb3ZlcmZsb3cgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvdyxcbiAgICAgIG92ZXJmbG93WCA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93WCxcbiAgICAgIG92ZXJmbG93WSA9IF9nZXRDb21wdXRlZFN0eWxlLm92ZXJmbG93WTtcblxuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVuLy50ZXN0KG92ZXJmbG93ICsgb3ZlcmZsb3dZICsgb3ZlcmZsb3dYKTtcbn0iLCJpbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgaXNTY3JvbGxQYXJlbnQgZnJvbSBcIi4vaXNTY3JvbGxQYXJlbnQuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFNjcm9sbFBhcmVudChub2RlKSB7XG4gIGlmIChbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmRleE9mKGdldE5vZGVOYW1lKG5vZGUpKSA+PSAwKSB7XG4gICAgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogYXNzdW1lIGJvZHkgaXMgYWx3YXlzIGF2YWlsYWJsZVxuICAgIHJldHVybiBub2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuXG4gIGlmIChpc0hUTUxFbGVtZW50KG5vZGUpICYmIGlzU2Nyb2xsUGFyZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICByZXR1cm4gZ2V0U2Nyb2xsUGFyZW50KGdldFBhcmVudE5vZGUobm9kZSkpO1xufSIsImltcG9ydCBnZXRTY3JvbGxQYXJlbnQgZnJvbSBcIi4vZ2V0U2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG4vKlxuZ2l2ZW4gYSBET00gZWxlbWVudCwgcmV0dXJuIHRoZSBsaXN0IG9mIGFsbCBzY3JvbGwgcGFyZW50cywgdXAgdGhlIGxpc3Qgb2YgYW5jZXNvcnNcbnVudGlsIHdlIGdldCB0byB0aGUgdG9wIHdpbmRvdyBvYmplY3QuIFRoaXMgbGlzdCBpcyB3aGF0IHdlIGF0dGFjaCBzY3JvbGwgbGlzdGVuZXJzXG50bywgYmVjYXVzZSBpZiBhbnkgb2YgdGhlc2UgcGFyZW50IGVsZW1lbnRzIHNjcm9sbCwgd2UnbGwgbmVlZCB0byByZS1jYWxjdWxhdGUgdGhlXG5yZWZlcmVuY2UgZWxlbWVudCdzIHBvc2l0aW9uLlxuKi9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGlzdFNjcm9sbFBhcmVudHMoZWxlbWVudCwgbGlzdCkge1xuICB2YXIgX2VsZW1lbnQkb3duZXJEb2N1bWVuO1xuXG4gIGlmIChsaXN0ID09PSB2b2lkIDApIHtcbiAgICBsaXN0ID0gW107XG4gIH1cblxuICB2YXIgc2Nyb2xsUGFyZW50ID0gZ2V0U2Nyb2xsUGFyZW50KGVsZW1lbnQpO1xuICB2YXIgaXNCb2R5ID0gc2Nyb2xsUGFyZW50ID09PSAoKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5KTtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhzY3JvbGxQYXJlbnQpO1xuICB2YXIgdGFyZ2V0ID0gaXNCb2R5ID8gW3dpbl0uY29uY2F0KHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNTY3JvbGxQYXJlbnQoc2Nyb2xsUGFyZW50KSA/IHNjcm9sbFBhcmVudCA6IFtdKSA6IHNjcm9sbFBhcmVudDtcbiAgdmFyIHVwZGF0ZWRMaXN0ID0gbGlzdC5jb25jYXQodGFyZ2V0KTtcbiAgcmV0dXJuIGlzQm9keSA/IHVwZGF0ZWRMaXN0IDogLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FsbF06IGlzQm9keSB0ZWxscyB1cyB0YXJnZXQgd2lsbCBiZSBhbiBIVE1MRWxlbWVudCBoZXJlXG4gIHVwZGF0ZWRMaXN0LmNvbmNhdChsaXN0U2Nyb2xsUGFyZW50cyhnZXRQYXJlbnROb2RlKHRhcmdldCkpKTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZWN0VG9DbGllbnRSZWN0KHJlY3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHJlY3QsIHtcbiAgICBsZWZ0OiByZWN0LngsXG4gICAgdG9wOiByZWN0LnksXG4gICAgcmlnaHQ6IHJlY3QueCArIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiByZWN0LnkgKyByZWN0LmhlaWdodFxuICB9KTtcbn0iLCJpbXBvcnQgeyB2aWV3cG9ydCB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZpZXdwb3J0UmVjdCBmcm9tIFwiLi9nZXRWaWV3cG9ydFJlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudFJlY3QgZnJvbSBcIi4vZ2V0RG9jdW1lbnRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vbGlzdFNjcm9sbFBhcmVudHMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4vZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi9jb250YWlucy5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgcmVjdFRvQ2xpZW50UmVjdCBmcm9tIFwiLi4vdXRpbHMvcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgbWF4LCBtaW4gfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50KSB7XG4gIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQpO1xuICByZWN0LnRvcCA9IHJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIHJlY3QubGVmdCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50TGVmdDtcbiAgcmVjdC5ib3R0b20gPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnJpZ2h0ID0gcmVjdC5sZWZ0ICsgZWxlbWVudC5jbGllbnRXaWR0aDtcbiAgcmVjdC53aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3QuaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gIHJlY3QueCA9IHJlY3QubGVmdDtcbiAgcmVjdC55ID0gcmVjdC50b3A7XG4gIHJldHVybiByZWN0O1xufVxuXG5mdW5jdGlvbiBnZXRDbGllbnRSZWN0RnJvbU1peGVkVHlwZShlbGVtZW50LCBjbGlwcGluZ1BhcmVudCkge1xuICByZXR1cm4gY2xpcHBpbmdQYXJlbnQgPT09IHZpZXdwb3J0ID8gcmVjdFRvQ2xpZW50UmVjdChnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCkpIDogaXNIVE1MRWxlbWVudChjbGlwcGluZ1BhcmVudCkgPyBnZXRJbm5lckJvdW5kaW5nQ2xpZW50UmVjdChjbGlwcGluZ1BhcmVudCkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnkpIHtcbiAgdmFyIG1haW5DbGlwcGluZ1BhcmVudHMgPSBib3VuZGFyeSA9PT0gJ2NsaXBwaW5nUGFyZW50cycgPyBnZXRDbGlwcGluZ1BhcmVudHMoZWxlbWVudCkgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICB2YXIgY2xpcHBpbmdQYXJlbnRzID0gW10uY29uY2F0KG1haW5DbGlwcGluZ1BhcmVudHMsIFtyb290Qm91bmRhcnldKTtcbiAgdmFyIGZpcnN0Q2xpcHBpbmdQYXJlbnQgPSBjbGlwcGluZ1BhcmVudHNbMF07XG4gIHZhciBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ1BhcmVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2NSZWN0LCBjbGlwcGluZ1BhcmVudCkge1xuICAgIHZhciByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQpO1xuICAgIGFjY1JlY3QudG9wID0gbWF4KHJlY3QudG9wLCBhY2NSZWN0LnRvcCk7XG4gICAgYWNjUmVjdC5yaWdodCA9IG1pbihyZWN0LnJpZ2h0LCBhY2NSZWN0LnJpZ2h0KTtcbiAgICBhY2NSZWN0LmJvdHRvbSA9IG1pbihyZWN0LmJvdHRvbSwgYWNjUmVjdC5ib3R0b20pO1xuICAgIGFjY1JlY3QubGVmdCA9IG1heChyZWN0LmxlZnQsIGFjY1JlY3QubGVmdCk7XG4gICAgcmV0dXJuIGFjY1JlY3Q7XG4gIH0sIGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGZpcnN0Q2xpcHBpbmdQYXJlbnQpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zJGJvdW5kYXJ5ID09PSB2b2lkIDAgPyBjbGlwcGluZ1BhcmVudHMgOiBfb3B0aW9ucyRib3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zJHJvb3RCb3VuZGFyeSA9PT0gdm9pZCAwID8gdmlld3BvcnQgOiBfb3B0aW9ucyRyb290Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRlbGVtZW50Q29udGUgPSBfb3B0aW9ucy5lbGVtZW50Q29udGV4dCxcbiAgICAgIGVsZW1lbnRDb250ZXh0ID0gX29wdGlvbnMkZWxlbWVudENvbnRlID09PSB2b2lkIDAgPyBwb3BwZXIgOiBfb3B0aW9ucyRlbGVtZW50Q29udGUsXG4gICAgICBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9IF9vcHRpb25zLmFsdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnkgPSBfb3B0aW9ucyRhbHRCb3VuZGFyeSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zJHBhZGRpbmcgPT09IHZvaWQgMCA/IDAgOiBfb3B0aW9ucyRwYWRkaW5nO1xuICB2YXIgcGFkZGluZ09iamVjdCA9IG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG4gIHZhciBhbHRDb250ZXh0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHJlZmVyZW5jZSA6IHBvcHBlcjtcbiAgdmFyIHJlZmVyZW5jZUVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgZWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgdmFyIGNsaXBwaW5nQ2xpZW50UmVjdCA9IGdldENsaXBwaW5nUmVjdChpc0VsZW1lbnQoZWxlbWVudCkgPyBlbGVtZW50IDogZWxlbWVudC5jb250ZXh0RWxlbWVudCB8fCBnZXREb2N1bWVudEVsZW1lbnQoc3RhdGUuZWxlbWVudHMucG9wcGVyKSwgYm91bmRhcnksIHJvb3RCb3VuZGFyeSk7XG4gIHZhciByZWZlcmVuY2VDbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHJlZmVyZW5jZUVsZW1lbnQpO1xuICB2YXIgcG9wcGVyT2Zmc2V0cyA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHJlZmVyZW5jZUNsaWVudFJlY3QsXG4gICAgZWxlbWVudDogcG9wcGVyUmVjdCxcbiAgICBzdHJhdGVneTogJ2Fic29sdXRlJyxcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KTtcbiAgdmFyIHBvcHBlckNsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KE9iamVjdC5hc3NpZ24oe30sIHBvcHBlclJlY3QsIHBvcHBlck9mZnNldHMpKTtcbiAgdmFyIGVsZW1lbnRDbGllbnRSZWN0ID0gZWxlbWVudENvbnRleHQgPT09IHBvcHBlciA/IHBvcHBlckNsaWVudFJlY3QgOiByZWZlcmVuY2VDbGllbnRSZWN0OyAvLyBwb3NpdGl2ZSA9IG92ZXJmbG93aW5nIHRoZSBjbGlwcGluZyByZWN0XG4gIC8vIDAgb3IgbmVnYXRpdmUgPSB3aXRoaW4gdGhlIGNsaXBwaW5nIHJlY3RcblxuICB2YXIgb3ZlcmZsb3dPZmZzZXRzID0ge1xuICAgIHRvcDogY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wLFxuICAgIGJvdHRvbTogZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tLFxuICAgIGxlZnQ6IGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCxcbiAgICByaWdodDogZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0XG4gIH07XG4gIHZhciBvZmZzZXREYXRhID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQ7IC8vIE9mZnNldHMgY2FuIGJlIGFwcGxpZWQgb25seSB0byB0aGUgcG9wcGVyIGVsZW1lbnRcblxuICBpZiAoZWxlbWVudENvbnRleHQgPT09IHBvcHBlciAmJiBvZmZzZXREYXRhKSB7XG4gICAgdmFyIG9mZnNldCA9IG9mZnNldERhdGFbcGxhY2VtZW50XTtcbiAgICBPYmplY3Qua2V5cyhvdmVyZmxvd09mZnNldHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIG11bHRpcGx5ID0gW3JpZ2h0LCBib3R0b21dLmluZGV4T2Yoa2V5KSA+PSAwID8gMSA6IC0xO1xuICAgICAgdmFyIGF4aXMgPSBbdG9wLCBib3R0b21dLmluZGV4T2Yoa2V5KSA+PSAwID8gJ3knIDogJ3gnO1xuICAgICAgb3ZlcmZsb3dPZmZzZXRzW2tleV0gKz0gb2Zmc2V0W2F4aXNdICogbXVsdGlwbHk7XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gb3ZlcmZsb3dPZmZzZXRzO1xufSIsImltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgeyB2YXJpYXRpb25QbGFjZW1lbnRzLCBiYXNlUGxhY2VtZW50cywgcGxhY2VtZW50cyBhcyBhbGxQbGFjZW1lbnRzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4vZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVBdXRvUGxhY2VtZW50KHN0YXRlLCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX29wdGlvbnMgPSBvcHRpb25zLFxuICAgICAgcGxhY2VtZW50ID0gX29wdGlvbnMucGxhY2VtZW50LFxuICAgICAgYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeSA9IF9vcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmcgPSBfb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucy5mbGlwVmFyaWF0aW9ucyxcbiAgICAgIF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9IF9vcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50cyA9IF9vcHRpb25zJGFsbG93ZWRBdXRvUCA9PT0gdm9pZCAwID8gYWxsUGxhY2VtZW50cyA6IF9vcHRpb25zJGFsbG93ZWRBdXRvUDtcbiAgdmFyIHZhcmlhdGlvbiA9IGdldFZhcmlhdGlvbihwbGFjZW1lbnQpO1xuICB2YXIgcGxhY2VtZW50cyA9IHZhcmlhdGlvbiA/IGZsaXBWYXJpYXRpb25zID8gdmFyaWF0aW9uUGxhY2VtZW50cyA6IHZhcmlhdGlvblBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHZhcmlhdGlvbjtcbiAgfSkgOiBiYXNlUGxhY2VtZW50cztcbiAgdmFyIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBhbGxvd2VkQXV0b1BsYWNlbWVudHMuaW5kZXhPZihwbGFjZW1lbnQpID49IDA7XG4gIH0pO1xuXG4gIGlmIChhbGxvd2VkUGxhY2VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHM7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBUaGUgYGFsbG93ZWRBdXRvUGxhY2VtZW50c2Agb3B0aW9uIGRpZCBub3QgYWxsb3cgYW55JywgJ3BsYWNlbWVudHMuIEVuc3VyZSB0aGUgYHBsYWNlbWVudGAgb3B0aW9uIG1hdGNoZXMgdGhlIHZhcmlhdGlvbicsICdvZiB0aGUgYWxsb3dlZCBwbGFjZW1lbnRzLicsICdGb3IgZXhhbXBsZSwgXCJhdXRvXCIgY2Fubm90IGJlIHVzZWQgdG8gYWxsb3cgXCJib3R0b20tc3RhcnRcIi4nLCAnVXNlIFwiYXV0by1zdGFydFwiIGluc3RlYWQuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdHlwZV06IEZsb3cgc2VlbXMgdG8gaGF2ZSBwcm9ibGVtcyB3aXRoIHR3byBhcnJheSB1bmlvbnMuLi5cblxuXG4gIHZhciBvdmVyZmxvd3MgPSBhbGxvd2VkUGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgYWNjW3BsYWNlbWVudF0gPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmdcbiAgICB9KVtnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCldO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG92ZXJmbG93cykuc29ydChmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBvdmVyZmxvd3NbYV0gLSBvdmVyZmxvd3NbYl07XG4gIH0pO1xufSIsImltcG9ydCBnZXRPcHBvc2l0ZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0T3Bwb3NpdGVQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgY29tcHV0ZUF1dG9QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2NvbXB1dGVBdXRvUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyBib3R0b20sIHRvcCwgc3RhcnQsIHJpZ2h0LCBsZWZ0LCBhdXRvIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5mdW5jdGlvbiBnZXRFeHBhbmRlZEZhbGxiYWNrUGxhY2VtZW50cyhwbGFjZW1lbnQpIHtcbiAgaWYgKGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gYXV0bykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIHZhciBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5cbmZ1bmN0aW9uIGZsaXAoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0uX3NraXApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFsdEF4aXMsXG4gICAgICBzcGVjaWZpZWRGYWxsYmFja1BsYWNlbWVudHMgPSBvcHRpb25zLmZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcsXG4gICAgICBib3VuZGFyeSA9IG9wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBvcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGZsaXBWYXJpYXRpbyA9IG9wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zJGZsaXBWYXJpYXRpbyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGZsaXBWYXJpYXRpbyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50cyA9IG9wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzO1xuICB2YXIgcHJlZmVycmVkUGxhY2VtZW50ID0gc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQ7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpO1xuICB2YXIgaXNCYXNlUGxhY2VtZW50ID0gYmFzZVBsYWNlbWVudCA9PT0gcHJlZmVycmVkUGxhY2VtZW50O1xuICB2YXIgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBWYXJpYXRpb25zID8gW2dldE9wcG9zaXRlUGxhY2VtZW50KHByZWZlcnJlZFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocHJlZmVycmVkUGxhY2VtZW50KSk7XG4gIHZhciBwbGFjZW1lbnRzID0gW3ByZWZlcnJlZFBsYWNlbWVudF0uY29uY2F0KGZhbGxiYWNrUGxhY2VtZW50cykucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIHJldHVybiBhY2MuY29uY2F0KGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gYXV0byA/IGNvbXB1dGVBdXRvUGxhY2VtZW50KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zOiBmbGlwVmFyaWF0aW9ucyxcbiAgICAgIGFsbG93ZWRBdXRvUGxhY2VtZW50czogYWxsb3dlZEF1dG9QbGFjZW1lbnRzXG4gICAgfSkgOiBwbGFjZW1lbnQpO1xuICB9LCBbXSk7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGNoZWNrc01hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIG1ha2VGYWxsYmFja0NoZWNrcyA9IHRydWU7XG4gIHZhciBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBwbGFjZW1lbnRzWzBdO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcGxhY2VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwbGFjZW1lbnQgPSBwbGFjZW1lbnRzW2ldO1xuXG4gICAgdmFyIF9iYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuXG4gICAgdmFyIGlzU3RhcnRWYXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gc3RhcnQ7XG4gICAgdmFyIGlzVmVydGljYWwgPSBbdG9wLCBib3R0b21dLmluZGV4T2YoX2Jhc2VQbGFjZW1lbnQpID49IDA7XG4gICAgdmFyIGxlbiA9IGlzVmVydGljYWwgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSk7XG4gICAgdmFyIG1haW5WYXJpYXRpb25TaWRlID0gaXNWZXJ0aWNhbCA/IGlzU3RhcnRWYXJpYXRpb24gPyByaWdodCA6IGxlZnQgOiBpc1N0YXJ0VmFyaWF0aW9uID8gYm90dG9tIDogdG9wO1xuXG4gICAgaWYgKHJlZmVyZW5jZVJlY3RbbGVuXSA+IHBvcHBlclJlY3RbbGVuXSkge1xuICAgICAgbWFpblZhcmlhdGlvblNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluVmFyaWF0aW9uU2lkZSk7XG4gICAgfVxuXG4gICAgdmFyIGFsdFZhcmlhdGlvblNpZGUgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChtYWluVmFyaWF0aW9uU2lkZSk7XG4gICAgdmFyIGNoZWNrcyA9IFtdO1xuXG4gICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgIGNoZWNrcy5wdXNoKG92ZXJmbG93W19iYXNlUGxhY2VtZW50XSA8PSAwKTtcbiAgICB9XG5cbiAgICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1ttYWluVmFyaWF0aW9uU2lkZV0gPD0gMCwgb3ZlcmZsb3dbYWx0VmFyaWF0aW9uU2lkZV0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrcy5ldmVyeShmdW5jdGlvbiAoY2hlY2spIHtcbiAgICAgIHJldHVybiBjaGVjaztcbiAgICB9KSkge1xuICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50O1xuICAgICAgbWFrZUZhbGxiYWNrQ2hlY2tzID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjaGVja3NNYXAuc2V0KHBsYWNlbWVudCwgY2hlY2tzKTtcbiAgfVxuXG4gIGlmIChtYWtlRmFsbGJhY2tDaGVja3MpIHtcbiAgICAvLyBgMmAgbWF5IGJlIGRlc2lyZWQgaW4gc29tZSBjYXNlcyDigJMgcmVzZWFyY2ggbGF0ZXJcbiAgICB2YXIgbnVtYmVyT2ZDaGVja3MgPSBmbGlwVmFyaWF0aW9ucyA/IDMgOiAxO1xuXG4gICAgdmFyIF9sb29wID0gZnVuY3Rpb24gX2xvb3AoX2kpIHtcbiAgICAgIHZhciBmaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50cy5maW5kKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICAgICAgdmFyIGNoZWNrcyA9IGNoZWNrc01hcC5nZXQocGxhY2VtZW50KTtcblxuICAgICAgICBpZiAoY2hlY2tzKSB7XG4gICAgICAgICAgcmV0dXJuIGNoZWNrcy5zbGljZSgwLCBfaSkuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICAgICAgICByZXR1cm4gY2hlY2s7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAoZml0dGluZ1BsYWNlbWVudCkge1xuICAgICAgICBmaXJzdEZpdHRpbmdQbGFjZW1lbnQgPSBmaXR0aW5nUGxhY2VtZW50O1xuICAgICAgICByZXR1cm4gXCJicmVha1wiO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBmb3IgKHZhciBfaSA9IG51bWJlck9mQ2hlY2tzOyBfaSA+IDA7IF9pLS0pIHtcbiAgICAgIHZhciBfcmV0ID0gX2xvb3AoX2kpO1xuXG4gICAgICBpZiAoX3JldCA9PT0gXCJicmVha1wiKSBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoc3RhdGUucGxhY2VtZW50ICE9PSBmaXJzdEZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwID0gdHJ1ZTtcbiAgICBzdGF0ZS5wbGFjZW1lbnQgPSBmaXJzdEZpdHRpbmdQbGFjZW1lbnQ7XG4gICAgc3RhdGUucmVzZXQgPSB0cnVlO1xuICB9XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdmbGlwJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IGZsaXAsXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsnb2Zmc2V0J10sXG4gIGRhdGE6IHtcbiAgICBfc2tpcDogZmFsc2VcbiAgfVxufTsiLCJpbXBvcnQgeyB0b3AsIGJvdHRvbSwgbGVmdCwgcmlnaHQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcblxuZnVuY3Rpb24gZ2V0U2lkZU9mZnNldHMob3ZlcmZsb3csIHJlY3QsIHByZXZlbnRlZE9mZnNldHMpIHtcbiAgaWYgKHByZXZlbnRlZE9mZnNldHMgPT09IHZvaWQgMCkge1xuICAgIHByZXZlbnRlZE9mZnNldHMgPSB7XG4gICAgICB4OiAwLFxuICAgICAgeTogMFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQgLSBwcmV2ZW50ZWRPZmZzZXRzLnksXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCArIHByZXZlbnRlZE9mZnNldHMueCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0ICsgcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoIC0gcHJldmVudGVkT2Zmc2V0cy54XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChvdmVyZmxvdykge1xuICByZXR1cm4gW3RvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdF0uc29tZShmdW5jdGlvbiAoc2lkZSkge1xuICAgIHJldHVybiBvdmVyZmxvd1tzaWRlXSA+PSAwO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGlkZShfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBwcmV2ZW50ZWRPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wcmV2ZW50T3ZlcmZsb3c7XG4gIHZhciByZWZlcmVuY2VPdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gIH0pO1xuICB2YXIgcG9wcGVyQWx0T3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGFsdEJvdW5kYXJ5OiB0cnVlXG4gIH0pO1xuICB2YXIgcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzID0gZ2V0U2lkZU9mZnNldHMocmVmZXJlbmNlT3ZlcmZsb3csIHJlZmVyZW5jZVJlY3QpO1xuICB2YXIgcG9wcGVyRXNjYXBlT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHBvcHBlckFsdE92ZXJmbG93LCBwb3BwZXJSZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKTtcbiAgdmFyIGlzUmVmZXJlbmNlSGlkZGVuID0gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyk7XG4gIHZhciBoYXNQb3BwZXJFc2NhcGVkID0gaXNBbnlTaWRlRnVsbHlDbGlwcGVkKHBvcHBlckVzY2FwZU9mZnNldHMpO1xuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0ge1xuICAgIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0czogcmVmZXJlbmNlQ2xpcHBpbmdPZmZzZXRzLFxuICAgIHBvcHBlckVzY2FwZU9mZnNldHM6IHBvcHBlckVzY2FwZU9mZnNldHMsXG4gICAgaXNSZWZlcmVuY2VIaWRkZW46IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgIGhhc1BvcHBlckVzY2FwZWQ6IGhhc1BvcHBlckVzY2FwZWRcbiAgfTtcbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1yZWZlcmVuY2UtaGlkZGVuJzogaXNSZWZlcmVuY2VIaWRkZW4sXG4gICAgJ2RhdGEtcG9wcGVyLWVzY2FwZWQnOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnaGlkZScsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J10sXG4gIGZuOiBoaWRlXG59OyIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBwbGFjZW1lbnRzIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gZGlzdGFuY2VBbmRTa2lkZGluZ1RvWFkocGxhY2VtZW50LCByZWN0cywgb2Zmc2V0KSB7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICB2YXIgaW52ZXJ0RGlzdGFuY2UgPSBbbGVmdCwgdG9wXS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyAtMSA6IDE7XG5cbiAgdmFyIF9yZWYgPSB0eXBlb2Ygb2Zmc2V0ID09PSAnZnVuY3Rpb24nID8gb2Zmc2V0KE9iamVjdC5hc3NpZ24oe30sIHJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSkpIDogb2Zmc2V0LFxuICAgICAgc2tpZGRpbmcgPSBfcmVmWzBdLFxuICAgICAgZGlzdGFuY2UgPSBfcmVmWzFdO1xuXG4gIHNraWRkaW5nID0gc2tpZGRpbmcgfHwgMDtcbiAgZGlzdGFuY2UgPSAoZGlzdGFuY2UgfHwgMCkgKiBpbnZlcnREaXN0YW5jZTtcbiAgcmV0dXJuIFtsZWZ0LCByaWdodF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSA+PSAwID8ge1xuICAgIHg6IGRpc3RhbmNlLFxuICAgIHk6IHNraWRkaW5nXG4gIH0gOiB7XG4gICAgeDogc2tpZGRpbmcsXG4gICAgeTogZGlzdGFuY2VcbiAgfTtcbn1cblxuZnVuY3Rpb24gb2Zmc2V0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZjIubmFtZTtcbiAgdmFyIF9vcHRpb25zJG9mZnNldCA9IG9wdGlvbnMub2Zmc2V0LFxuICAgICAgb2Zmc2V0ID0gX29wdGlvbnMkb2Zmc2V0ID09PSB2b2lkIDAgPyBbMCwgMF0gOiBfb3B0aW9ucyRvZmZzZXQ7XG4gIHZhciBkYXRhID0gcGxhY2VtZW50cy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGxhY2VtZW50KSB7XG4gICAgYWNjW3BsYWNlbWVudF0gPSBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHN0YXRlLnJlY3RzLCBvZmZzZXQpO1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbiAgdmFyIF9kYXRhJHN0YXRlJHBsYWNlbWVudCA9IGRhdGFbc3RhdGUucGxhY2VtZW50XSxcbiAgICAgIHggPSBfZGF0YSRzdGF0ZSRwbGFjZW1lbnQueCxcbiAgICAgIHkgPSBfZGF0YSRzdGF0ZSRwbGFjZW1lbnQueTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICE9IG51bGwpIHtcbiAgICBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMueCArPSB4O1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy55ICs9IHk7XG4gIH1cblxuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gZGF0YTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ29mZnNldCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIHJlcXVpcmVzOiBbJ3BvcHBlck9mZnNldHMnXSxcbiAgZm46IG9mZnNldFxufTsiLCJpbXBvcnQgY29tcHV0ZU9mZnNldHMgZnJvbSBcIi4uL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzXCI7XG5cbmZ1bmN0aW9uIHBvcHBlck9mZnNldHMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgLy8gT2Zmc2V0cyBhcmUgdGhlIGFjdHVhbCBwb3NpdGlvbiB0aGUgcG9wcGVyIG5lZWRzIHRvIGhhdmUgdG8gYmVcbiAgLy8gcHJvcGVybHkgcG9zaXRpb25lZCBuZWFyIGl0cyByZWZlcmVuY2UgZWxlbWVudFxuICAvLyBUaGlzIGlzIHRoZSBtb3N0IGJhc2ljIHBsYWNlbWVudCwgYW5kIHdpbGwgYmUgYWRqdXN0ZWQgYnlcbiAgLy8gdGhlIG1vZGlmaWVycyBpbiB0aGUgbmV4dCBzdGVwXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiBzdGF0ZS5yZWN0cy5yZWZlcmVuY2UsXG4gICAgZWxlbWVudDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIHN0cmF0ZWd5OiAnYWJzb2x1dGUnLFxuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncG9wcGVyT2Zmc2V0cycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAncmVhZCcsXG4gIGZuOiBwb3BwZXJPZmZzZXRzLFxuICBkYXRhOiB7fVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRBbHRBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn0iLCJpbXBvcnQgeyB0b3AsIGxlZnQsIHJpZ2h0LCBib3R0b20sIHN0YXJ0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QWx0QXhpcyBmcm9tIFwiLi4vdXRpbHMvZ2V0QWx0QXhpcy5qc1wiO1xuaW1wb3J0IHdpdGhpbiBmcm9tIFwiLi4vdXRpbHMvd2l0aGluLmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi4vdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi4vdXRpbHMvZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5pbXBvcnQgeyBtYXggYXMgbWF0aE1heCwgbWluIGFzIG1hdGhNaW4gfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBwcmV2ZW50T3ZlcmZsb3coX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWU7XG4gIHZhciBfb3B0aW9ucyRtYWluQXhpcyA9IG9wdGlvbnMubWFpbkF4aXMsXG4gICAgICBjaGVja01haW5BeGlzID0gX29wdGlvbnMkbWFpbkF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRtYWluQXhpcyxcbiAgICAgIF9vcHRpb25zJGFsdEF4aXMgPSBvcHRpb25zLmFsdEF4aXMsXG4gICAgICBjaGVja0FsdEF4aXMgPSBfb3B0aW9ucyRhbHRBeGlzID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEF4aXMsXG4gICAgICBib3VuZGFyeSA9IG9wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBvcHRpb25zLnJvb3RCb3VuZGFyeSxcbiAgICAgIGFsdEJvdW5kYXJ5ID0gb3B0aW9ucy5hbHRCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmcgPSBvcHRpb25zLnBhZGRpbmcsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXIgPSBvcHRpb25zLnRldGhlcixcbiAgICAgIHRldGhlciA9IF9vcHRpb25zJHRldGhlciA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHRldGhlcixcbiAgICAgIF9vcHRpb25zJHRldGhlck9mZnNldCA9IG9wdGlvbnMudGV0aGVyT2Zmc2V0LFxuICAgICAgdGV0aGVyT2Zmc2V0ID0gX29wdGlvbnMkdGV0aGVyT2Zmc2V0ID09PSB2b2lkIDAgPyAwIDogX29wdGlvbnMkdGV0aGVyT2Zmc2V0O1xuICB2YXIgb3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICBwYWRkaW5nOiBwYWRkaW5nLFxuICAgIGFsdEJvdW5kYXJ5OiBhbHRCb3VuZGFyeVxuICB9KTtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9ICF2YXJpYXRpb247XG4gIHZhciBtYWluQXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KTtcbiAgdmFyIGFsdEF4aXMgPSBnZXRBbHRBeGlzKG1haW5BeGlzKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHM7XG4gIHZhciByZWZlcmVuY2VSZWN0ID0gc3RhdGUucmVjdHMucmVmZXJlbmNlO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIHRldGhlck9mZnNldFZhbHVlID0gdHlwZW9mIHRldGhlck9mZnNldCA9PT0gJ2Z1bmN0aW9uJyA/IHRldGhlck9mZnNldChPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5yZWN0cywge1xuICAgIHBsYWNlbWVudDogc3RhdGUucGxhY2VtZW50XG4gIH0pKSA6IHRldGhlck9mZnNldDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMgfHwgY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBwb3BwZXJPZmZzZXRzW21haW5BeGlzXSArIG92ZXJmbG93W21haW5TaWRlXTtcbiAgICB2YXIgbWF4ID0gcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gLSBvdmVyZmxvd1thbHRTaWRlXTtcbiAgICB2YXIgYWRkaXRpdmUgPSB0ZXRoZXIgPyAtcG9wcGVyUmVjdFtsZW5dIC8gMiA6IDA7XG4gICAgdmFyIG1pbkxlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gOiBwb3BwZXJSZWN0W2xlbl07XG4gICAgdmFyIG1heExlbiA9IHZhcmlhdGlvbiA9PT0gc3RhcnQgPyAtcG9wcGVyUmVjdFtsZW5dIDogLXJlZmVyZW5jZVJlY3RbbGVuXTsgLy8gV2UgbmVlZCB0byBpbmNsdWRlIHRoZSBhcnJvdyBpbiB0aGUgY2FsY3VsYXRpb24gc28gdGhlIGFycm93IGRvZXNuJ3QgZ29cbiAgICAvLyBvdXRzaWRlIHRoZSByZWZlcmVuY2UgYm91bmRzXG5cbiAgICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gICAgdmFyIGFycm93UmVjdCA9IHRldGhlciAmJiBhcnJvd0VsZW1lbnQgPyBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCkgOiB7XG4gICAgICB3aWR0aDogMCxcbiAgICAgIGhlaWdodDogMFxuICAgIH07XG4gICAgdmFyIGFycm93UGFkZGluZ09iamVjdCA9IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXSA/IHN0YXRlLm1vZGlmaWVyc0RhdGFbJ2Fycm93I3BlcnNpc3RlbnQnXS5wYWRkaW5nIDogZ2V0RnJlc2hTaWRlT2JqZWN0KCk7XG4gICAgdmFyIGFycm93UGFkZGluZ01pbiA9IGFycm93UGFkZGluZ09iamVjdFttYWluU2lkZV07XG4gICAgdmFyIGFycm93UGFkZGluZ01heCA9IGFycm93UGFkZGluZ09iamVjdFthbHRTaWRlXTsgLy8gSWYgdGhlIHJlZmVyZW5jZSBsZW5ndGggaXMgc21hbGxlciB0aGFuIHRoZSBhcnJvdyBsZW5ndGgsIHdlIGRvbid0IHdhbnRcbiAgICAvLyB0byBpbmNsdWRlIGl0cyBmdWxsIHNpemUgaW4gdGhlIGNhbGN1bGF0aW9uLiBJZiB0aGUgcmVmZXJlbmNlIGlzIHNtYWxsXG4gICAgLy8gYW5kIG5lYXIgdGhlIGVkZ2Ugb2YgYSBib3VuZGFyeSwgdGhlIHBvcHBlciBjYW4gb3ZlcmZsb3cgZXZlbiBpZiB0aGVcbiAgICAvLyByZWZlcmVuY2UgaXMgbm90IG92ZXJmbG93aW5nIGFzIHdlbGwgKGUuZy4gdmlydHVhbCBlbGVtZW50cyB3aXRoIG5vXG4gICAgLy8gd2lkdGggb3IgaGVpZ2h0KVxuXG4gICAgdmFyIGFycm93TGVuID0gd2l0aGluKDAsIHJlZmVyZW5jZVJlY3RbbGVuXSwgYXJyb3dSZWN0W2xlbl0pO1xuICAgIHZhciBtaW5PZmZzZXQgPSBpc0Jhc2VQbGFjZW1lbnQgPyByZWZlcmVuY2VSZWN0W2xlbl0gLyAyIC0gYWRkaXRpdmUgLSBhcnJvd0xlbiAtIGFycm93UGFkZGluZ01pbiAtIHRldGhlck9mZnNldFZhbHVlIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSB0ZXRoZXJPZmZzZXRWYWx1ZTtcbiAgICB2YXIgbWF4T2Zmc2V0ID0gaXNCYXNlUGxhY2VtZW50ID8gLXJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgKyBhZGRpdGl2ZSArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgdGV0aGVyT2Zmc2V0VmFsdWUgOiBtYXhMZW4gKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIHRldGhlck9mZnNldFZhbHVlO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0ID8gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXRbc3RhdGUucGxhY2VtZW50XVttYWluQXhpc10gOiAwO1xuICAgIHZhciB0ZXRoZXJNaW4gPSBwb3BwZXJPZmZzZXRzW21haW5BeGlzXSArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdICsgbWF4T2Zmc2V0IC0gb2Zmc2V0TW9kaWZpZXJWYWx1ZTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICB2YXIgcHJldmVudGVkT2Zmc2V0ID0gd2l0aGluKHRldGhlciA/IG1hdGhNaW4obWluLCB0ZXRoZXJNaW4pIDogbWluLCBvZmZzZXQsIHRldGhlciA/IG1hdGhNYXgobWF4LCB0ZXRoZXJNYXgpIDogbWF4KTtcbiAgICAgIHBvcHBlck9mZnNldHNbbWFpbkF4aXNdID0gcHJldmVudGVkT2Zmc2V0O1xuICAgICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgdmFyIF9tYWluU2lkZSA9IG1haW5BeGlzID09PSAneCcgPyB0b3AgOiBsZWZ0O1xuXG4gICAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICAgIHZhciBfb2Zmc2V0ID0gcG9wcGVyT2Zmc2V0c1thbHRBeGlzXTtcblxuICAgICAgdmFyIF9taW4gPSBfb2Zmc2V0ICsgb3ZlcmZsb3dbX21haW5TaWRlXTtcblxuICAgICAgdmFyIF9tYXggPSBfb2Zmc2V0IC0gb3ZlcmZsb3dbX2FsdFNpZGVdO1xuXG4gICAgICB2YXIgX3ByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKF9taW4sIHRldGhlck1pbikgOiBfbWluLCBfb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KF9tYXgsIHRldGhlck1heCkgOiBfbWF4KTtcblxuICAgICAgcG9wcGVyT2Zmc2V0c1thbHRBeGlzXSA9IF9wcmV2ZW50ZWRPZmZzZXQ7XG4gICAgICBkYXRhW2FsdEF4aXNdID0gX3ByZXZlbnRlZE9mZnNldCAtIF9vZmZzZXQ7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGRhdGE7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwcmV2ZW50T3ZlcmZsb3cnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogcHJldmVudE92ZXJmbG93LFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddXG59OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEhUTUxFbGVtZW50U2Nyb2xsKGVsZW1lbnQpIHtcbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRIVE1MRWxlbWVudFNjcm9sbCBmcm9tIFwiLi9nZXRIVE1MRWxlbWVudFNjcm9sbC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChub2RlKSB7XG4gIGlmIChub2RlID09PSBnZXRXaW5kb3cobm9kZSkgfHwgIWlzSFRNTEVsZW1lbnQobm9kZSkpIHtcbiAgICByZXR1cm4gZ2V0V2luZG93U2Nyb2xsKG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBnZXRIVE1MRWxlbWVudFNjcm9sbChub2RlKTtcbiAgfVxufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZVNjcm9sbCBmcm9tIFwiLi9nZXROb2RlU2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5cbmZ1bmN0aW9uIGlzRWxlbWVudFNjYWxlZChlbGVtZW50KSB7XG4gIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IHJlY3Qud2lkdGggLyBlbGVtZW50Lm9mZnNldFdpZHRoIHx8IDE7XG4gIHZhciBzY2FsZVkgPSByZWN0LmhlaWdodCAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChzdHIpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChhcmdzKS5yZWR1Y2UoZnVuY3Rpb24gKHAsIGMpIHtcbiAgICByZXR1cm4gcC5yZXBsYWNlKC8lcy8sIGMpO1xuICB9LCBzdHIpO1xufSIsImltcG9ydCBmb3JtYXQgZnJvbSBcIi4vZm9ybWF0LmpzXCI7XG5pbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfTU9ESUZJRVJfRVJST1IgPSAnUG9wcGVyOiBtb2RpZmllciBcIiVzXCIgcHJvdmlkZWQgYW4gaW52YWxpZCAlcyBwcm9wZXJ0eSwgZXhwZWN0ZWQgJXMgYnV0IGdvdCAlcyc7XG52YXIgTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHJlcXVpcmVzIFwiJXNcIiwgYnV0IFwiJXNcIiBtb2RpZmllciBpcyBub3QgYXZhaWxhYmxlJztcbnZhciBWQUxJRF9QUk9QRVJUSUVTID0gWyduYW1lJywgJ2VuYWJsZWQnLCAncGhhc2UnLCAnZm4nLCAnZWZmZWN0JywgJ3JlcXVpcmVzJywgJ29wdGlvbnMnXTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBPYmplY3Qua2V5cyhtb2RpZmllcikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICBpZiAodHlwZW9mIG1vZGlmaWVyLm5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksICdcIm5hbWVcIicsICdcInN0cmluZ1wiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIubmFtZSkgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VuYWJsZWQnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIuZW5hYmxlZCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJlbmFibGVkXCInLCAnXCJib29sZWFuXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5lbmFibGVkKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ3BoYXNlJzpcbiAgICAgICAgICBpZiAobW9kaWZpZXJQaGFzZXMuaW5kZXhPZihtb2RpZmllci5waGFzZSkgPCAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJwaGFzZVwiJywgXCJlaXRoZXIgXCIgKyBtb2RpZmllclBoYXNlcy5qb2luKCcsICcpLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5waGFzZSkgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2ZuJzpcbiAgICAgICAgICBpZiAodHlwZW9mIG1vZGlmaWVyLmZuICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGZvcm1hdChJTlZBTElEX01PRElGSUVSX0VSUk9SLCBtb2RpZmllci5uYW1lLCAnXCJmblwiJywgJ1wiZnVuY3Rpb25cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmZuKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZWZmZWN0JzpcbiAgICAgICAgICBpZiAodHlwZW9mIG1vZGlmaWVyLmVmZmVjdCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wiZWZmZWN0XCInLCAnXCJmdW5jdGlvblwiJywgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIuZm4pICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdyZXF1aXJlcyc6XG4gICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG1vZGlmaWVyLnJlcXVpcmVzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlcykgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzSWZFeGlzdHMnOlxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNJZkV4aXN0c1wiJywgJ1wiYXJyYXlcIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdvcHRpb25zJzpcbiAgICAgICAgY2FzZSAnZGF0YSc6XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUG9wcGVySlM6IGFuIGludmFsaWQgcHJvcGVydHkgaGFzIGJlZW4gcHJvdmlkZWQgdG8gdGhlIFxcXCJcIiArIG1vZGlmaWVyLm5hbWUgKyBcIlxcXCIgbW9kaWZpZXIsIHZhbGlkIHByb3BlcnRpZXMgYXJlIFwiICsgVkFMSURfUFJPUEVSVElFUy5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlxcXCJcIiArIHMgKyBcIlxcXCJcIjtcbiAgICAgICAgICB9KS5qb2luKCcsICcpICsgXCI7IGJ1dCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgd2FzIHByb3ZpZGVkLlwiKTtcbiAgICAgIH1cblxuICAgICAgbW9kaWZpZXIucmVxdWlyZXMgJiYgbW9kaWZpZXIucmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAocmVxdWlyZW1lbnQpIHtcbiAgICAgICAgaWYgKG1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChtb2QpIHtcbiAgICAgICAgICByZXR1cm4gbW9kLm5hbWUgPT09IHJlcXVpcmVtZW50O1xuICAgICAgICB9KSA9PSBudWxsKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksIHJlcXVpcmVtZW50LCByZXF1aXJlbWVudCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5pcXVlQnkoYXJyLCBmbikge1xuICB2YXIgaWRlbnRpZmllcnMgPSBuZXcgU2V0KCk7XG4gIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBmbihpdGVtKTtcblxuICAgIGlmICghaWRlbnRpZmllcnMuaGFzKGlkZW50aWZpZXIpKSB7XG4gICAgICBpZGVudGlmaWVycy5hZGQoaWRlbnRpZmllcik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsImltcG9ydCBnZXRDb21wb3NpdGVSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IG9yZGVyTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcIi4vdXRpbHMvZGVib3VuY2UuanNcIjtcbmltcG9ydCB2YWxpZGF0ZU1vZGlmaWVycyBmcm9tIFwiLi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qc1wiO1xuaW1wb3J0IHVuaXF1ZUJ5IGZyb20gXCIuL3V0aWxzL3VuaXF1ZUJ5LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgbWVyZ2VCeU5hbWUgZnJvbSBcIi4vdXRpbHMvbWVyZ2VCeU5hbWUuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfRUxFTUVOVF9FUlJPUiA9ICdQb3BwZXI6IEludmFsaWQgcmVmZXJlbmNlIG9yIHBvcHBlciBhcmd1bWVudCBwcm92aWRlZC4gVGhleSBtdXN0IGJlIGVpdGhlciBhIERPTSBlbGVtZW50IG9yIHZpcnR1YWwgZWxlbWVudC4nO1xudmFyIElORklOSVRFX0xPT1BfRVJST1IgPSAnUG9wcGVyOiBBbiBpbmZpbml0ZSBsb29wIGluIHRoZSBtb2RpZmllcnMgY3ljbGUgaGFzIGJlZW4gZGV0ZWN0ZWQhIFRoZSBjeWNsZSBoYXMgYmVlbiBpbnRlcnJ1cHRlZCB0byBwcmV2ZW50IGEgYnJvd3NlciBjcmFzaC4nO1xudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbW9kaWZpZXJzOiBbXSxcbiAgc3RyYXRlZ3k6ICdhYnNvbHV0ZSdcbn07XG5cbmZ1bmN0aW9uIGFyZVZhbGlkRWxlbWVudHMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gIWFyZ3Muc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiAhKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3BwZXJHZW5lcmF0b3IoZ2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoZ2VuZXJhdG9yT3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgZ2VuZXJhdG9yT3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9nZW5lcmF0b3JPcHRpb25zID0gZ2VuZXJhdG9yT3B0aW9ucyxcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRNb2RpZmllcnMsXG4gICAgICBkZWZhdWx0TW9kaWZpZXJzID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmID09PSB2b2lkIDAgPyBbXSA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZixcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIGRlZmF1bHRPcHRpb25zID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9PT0gdm9pZCAwID8gREVGQVVMVF9PUFRJT05TIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmMjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZVBvcHBlcihyZWZlcmVuY2UsIHBvcHBlciwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucztcbiAgICB9XG5cbiAgICB2YXIgc3RhdGUgPSB7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgb3JkZXJlZE1vZGlmaWVyczogW10sXG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIGRlZmF1bHRPcHRpb25zKSxcbiAgICAgIG1vZGlmaWVyc0RhdGE6IHt9LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlOiByZWZlcmVuY2UsXG4gICAgICAgIHBvcHBlcjogcG9wcGVyXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBzdHlsZXM6IHt9XG4gICAgfTtcbiAgICB2YXIgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIHZhciBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHZhciBpbnN0YW5jZSA9IHtcbiAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgIHNldE9wdGlvbnM6IGZ1bmN0aW9uIHNldE9wdGlvbnMob3B0aW9ucykge1xuICAgICAgICBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHN0YXRlLm9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0T3B0aW9ucywgc3RhdGUub3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICAgIHN0YXRlLnNjcm9sbFBhcmVudHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBpc0VsZW1lbnQocmVmZXJlbmNlKSA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZSkgOiByZWZlcmVuY2UuY29udGV4dEVsZW1lbnQgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIDogW10sXG4gICAgICAgICAgcG9wcGVyOiBsaXN0U2Nyb2xsUGFyZW50cyhwb3BwZXIpXG4gICAgICAgIH07IC8vIE9yZGVycyB0aGUgbW9kaWZpZXJzIGJhc2VkIG9uIHRoZWlyIGRlcGVuZGVuY2llcyBhbmQgYHBoYXNlYFxuICAgICAgICAvLyBwcm9wZXJ0aWVzXG5cbiAgICAgICAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlck1vZGlmaWVycyhtZXJnZUJ5TmFtZShbXS5jb25jYXQoZGVmYXVsdE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpKSk7IC8vIFN0cmlwIG91dCBkaXNhYmxlZCBtb2RpZmllcnNcblxuICAgICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG0pIHtcbiAgICAgICAgICByZXR1cm4gbS5lbmFibGVkO1xuICAgICAgICB9KTsgLy8gVmFsaWRhdGUgdGhlIHByb3ZpZGVkIG1vZGlmaWVycyBzbyB0aGF0IHRoZSBjb25zdW1lciB3aWxsIGdldCB3YXJuZWRcbiAgICAgICAgLy8gaWYgb25lIG9mIHRoZSBtb2RpZmllcnMgaXMgaW52YWxpZCBmb3IgYW55IHJlYXNvblxuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICB2YXIgbW9kaWZpZXJzID0gdW5pcXVlQnkoW10uY29uY2F0KG9yZGVyZWRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSwgZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZi5uYW1lO1xuICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdmFsaWRhdGVNb2RpZmllcnMobW9kaWZpZXJzKTtcblxuICAgICAgICAgIGlmIChnZXRCYXNlUGxhY2VtZW50KHN0YXRlLm9wdGlvbnMucGxhY2VtZW50KSA9PT0gYXV0bykge1xuICAgICAgICAgICAgdmFyIGZsaXBNb2RpZmllciA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZmluZChmdW5jdGlvbiAoX3JlZjIpIHtcbiAgICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmMi5uYW1lO1xuICAgICAgICAgICAgICByZXR1cm4gbmFtZSA9PT0gJ2ZsaXAnO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmICghZmxpcE1vZGlmaWVyKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXV0b1wiIHBsYWNlbWVudHMgcmVxdWlyZSB0aGUgXCJmbGlwXCIgbW9kaWZpZXIgYmUnLCAncHJlc2VudCBhbmQgZW5hYmxlZCB0byB3b3JrLiddLmpvaW4oJyAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShwb3BwZXIpLFxuICAgICAgICAgICAgICBtYXJnaW5Ub3AgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5Ub3AsXG4gICAgICAgICAgICAgIG1hcmdpblJpZ2h0ID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luUmlnaHQsXG4gICAgICAgICAgICAgIG1hcmdpbkJvdHRvbSA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpbkJvdHRvbSxcbiAgICAgICAgICAgICAgbWFyZ2luTGVmdCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpbkxlZnQ7IC8vIFdlIG5vIGxvbmdlciB0YWtlIGludG8gYWNjb3VudCBgbWFyZ2luc2Agb24gdGhlIHBvcHBlciwgYW5kIGl0IGNhblxuICAgICAgICAgIC8vIGNhdXNlIGJ1Z3Mgd2l0aCBwb3NpdGlvbmluZywgc28gd2UnbGwgd2FybiB0aGUgY29uc3VtZXJcblxuXG4gICAgICAgICAgaWYgKFttYXJnaW5Ub3AsIG1hcmdpblJpZ2h0LCBtYXJnaW5Cb3R0b20sIG1hcmdpbkxlZnRdLnNvbWUoZnVuY3Rpb24gKG1hcmdpbikge1xuICAgICAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQobWFyZ2luKTtcbiAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKFsnUG9wcGVyOiBDU1MgXCJtYXJnaW5cIiBzdHlsZXMgY2Fubm90IGJlIHVzZWQgdG8gYXBwbHkgcGFkZGluZycsICdiZXR3ZWVuIHRoZSBwb3BwZXIgYW5kIGl0cyByZWZlcmVuY2UgZWxlbWVudCBvciBib3VuZGFyeS4nLCAnVG8gcmVwbGljYXRlIG1hcmdpbiwgdXNlIHRoZSBgb2Zmc2V0YCBtb2RpZmllciwgYXMgd2VsbCBhcycsICd0aGUgYHBhZGRpbmdgIG9wdGlvbiBpbiB0aGUgYHByZXZlbnRPdmVyZmxvd2AgYW5kIGBmbGlwYCcsICdtb2RpZmllcnMuJ10uam9pbignICcpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBydW5Nb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnVwZGF0ZSgpO1xuICAgICAgfSxcbiAgICAgIC8vIFN5bmMgdXBkYXRlIOKAkyBpdCB3aWxsIGFsd2F5cyBiZSBleGVjdXRlZCwgZXZlbiBpZiBub3QgbmVjZXNzYXJ5LiBUaGlzXG4gICAgICAvLyBpcyB1c2VmdWwgZm9yIGxvdyBmcmVxdWVuY3kgdXBkYXRlcyB3aGVyZSBzeW5jIGJlaGF2aW9yIHNpbXBsaWZpZXMgdGhlXG4gICAgICAvLyBsb2dpYy5cbiAgICAgIC8vIEZvciBoaWdoIGZyZXF1ZW5jeSB1cGRhdGVzIChlLmcuIGByZXNpemVgIGFuZCBgc2Nyb2xsYCBldmVudHMpLCBhbHdheXNcbiAgICAgIC8vIHByZWZlciB0aGUgYXN5bmMgUG9wcGVyI3VwZGF0ZSBtZXRob2RcbiAgICAgIGZvcmNlVXBkYXRlOiBmdW5jdGlvbiBmb3JjZVVwZGF0ZSgpIHtcbiAgICAgICAgaWYgKGlzRGVzdHJveWVkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIF9zdGF0ZSRlbGVtZW50cyA9IHN0YXRlLmVsZW1lbnRzLFxuICAgICAgICAgICAgcmVmZXJlbmNlID0gX3N0YXRlJGVsZW1lbnRzLnJlZmVyZW5jZSxcbiAgICAgICAgICAgIHBvcHBlciA9IF9zdGF0ZSRlbGVtZW50cy5wb3BwZXI7IC8vIERvbid0IHByb2NlZWQgaWYgYHJlZmVyZW5jZWAgb3IgYHBvcHBlcmAgYXJlIG5vdCB2YWxpZCBlbGVtZW50c1xuICAgICAgICAvLyBhbnltb3JlXG5cbiAgICAgICAgaWYgKCFhcmVWYWxpZEVsZW1lbnRzKHJlZmVyZW5jZSwgcG9wcGVyKSkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSU5WQUxJRF9FTEVNRU5UX0VSUk9SKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gU3RvcmUgdGhlIHJlZmVyZW5jZSBhbmQgcG9wcGVyIHJlY3RzIHRvIGJlIHJlYWQgYnkgbW9kaWZpZXJzXG5cblxuICAgICAgICBzdGF0ZS5yZWN0cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGdldENvbXBvc2l0ZVJlY3QocmVmZXJlbmNlLCBnZXRPZmZzZXRQYXJlbnQocG9wcGVyKSwgc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJyksXG4gICAgICAgICAgcG9wcGVyOiBnZXRMYXlvdXRSZWN0KHBvcHBlcilcbiAgICAgICAgfTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gcmVzZXQgdGhlIGN1cnJlbnQgdXBkYXRlIGN5Y2xlLiBUaGVcbiAgICAgICAgLy8gbW9zdCBjb21tb24gdXNlIGNhc2UgZm9yIHRoaXMgaXMgdGhlIGBmbGlwYCBtb2RpZmllciBjaGFuZ2luZyB0aGVcbiAgICAgICAgLy8gcGxhY2VtZW50LCB3aGljaCB0aGVuIG5lZWRzIHRvIHJlLXJ1biBhbGwgdGhlIG1vZGlmaWVycywgYmVjYXVzZSB0aGVcbiAgICAgICAgLy8gbG9naWMgd2FzIHByZXZpb3VzbHkgcmFuIGZvciB0aGUgcHJldmlvdXMgcGxhY2VtZW50IGFuZCBpcyB0aGVyZWZvcmVcbiAgICAgICAgLy8gc3RhbGUvaW5jb3JyZWN0XG5cbiAgICAgICAgc3RhdGUucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgc3RhdGUucGxhY2VtZW50ID0gc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQ7IC8vIE9uIGVhY2ggdXBkYXRlIGN5Y2xlLCB0aGUgYG1vZGlmaWVyc0RhdGFgIHByb3BlcnR5IGZvciBlYWNoIG1vZGlmaWVyXG4gICAgICAgIC8vIGlzIGZpbGxlZCB3aXRoIHRoZSBpbml0aWFsIGRhdGEgc3BlY2lmaWVkIGJ5IHRoZSBtb2RpZmllci4gVGhpcyBtZWFuc1xuICAgICAgICAvLyBpdCBkb2Vzbid0IHBlcnNpc3QgYW5kIGlzIGZyZXNoIG9uIGVhY2ggdXBkYXRlLlxuICAgICAgICAvLyBUbyBlbnN1cmUgcGVyc2lzdGVudCBkYXRhLCB1c2UgYCR7bmFtZX0jcGVyc2lzdGVudGBcblxuICAgICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlLm1vZGlmaWVyc0RhdGFbbW9kaWZpZXIubmFtZV0gPSBPYmplY3QuYXNzaWduKHt9LCBtb2RpZmllci5kYXRhKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHZhciBfX2RlYnVnX2xvb3BzX18gPSAwO1xuXG4gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgICAgIF9fZGVidWdfbG9vcHNfXyArPSAxO1xuXG4gICAgICAgICAgICBpZiAoX19kZWJ1Z19sb29wc19fID4gMTAwKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSU5GSU5JVEVfTE9PUF9FUlJPUik7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXNldCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgc3RhdGUucmVzZXQgPSBmYWxzZTtcbiAgICAgICAgICAgIGluZGV4ID0gLTE7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX3N0YXRlJG9yZGVyZWRNb2RpZmllID0gc3RhdGUub3JkZXJlZE1vZGlmaWVyc1tpbmRleF0sXG4gICAgICAgICAgICAgIGZuID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLmZuLFxuICAgICAgICAgICAgICBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLm9wdGlvbnMsXG4gICAgICAgICAgICAgIF9vcHRpb25zID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9PT0gdm9pZCAwID8ge30gOiBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyLFxuICAgICAgICAgICAgICBuYW1lID0gX3N0YXRlJG9yZGVyZWRNb2RpZmllLm5hbWU7XG5cbiAgICAgICAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBzdGF0ZSA9IGZuKHtcbiAgICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgICBvcHRpb25zOiBfb3B0aW9ucyxcbiAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlXG4gICAgICAgICAgICB9KSB8fCBzdGF0ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICAvLyBBc3luYyBhbmQgb3B0aW1pc3RpY2FsbHkgb3B0aW1pemVkIHVwZGF0ZSDigJMgaXQgd2lsbCBub3QgYmUgZXhlY3V0ZWQgaWZcbiAgICAgIC8vIG5vdCBuZWNlc3NhcnkgKGRlYm91bmNlZCB0byBydW4gYXQgbW9zdCBvbmNlLXBlci10aWNrKVxuICAgICAgdXBkYXRlOiBkZWJvdW5jZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgICAgICAgIGluc3RhbmNlLmZvcmNlVXBkYXRlKCk7XG4gICAgICAgICAgcmVzb2x2ZShzdGF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSksXG4gICAgICBkZXN0cm95OiBmdW5jdGlvbiBkZXN0cm95KCkge1xuICAgICAgICBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIGlzRGVzdHJveWVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKCFhcmVWYWxpZEVsZW1lbnRzKHJlZmVyZW5jZSwgcG9wcGVyKSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICBjb25zb2xlLmVycm9yKElOVkFMSURfRUxFTUVOVF9FUlJPUik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICB9XG5cbiAgICBpbnN0YW5jZS5zZXRPcHRpb25zKG9wdGlvbnMpLnRoZW4oZnVuY3Rpb24gKHN0YXRlKSB7XG4gICAgICBpZiAoIWlzRGVzdHJveWVkICYmIG9wdGlvbnMub25GaXJzdFVwZGF0ZSkge1xuICAgICAgICBvcHRpb25zLm9uRmlyc3RVcGRhdGUoc3RhdGUpO1xuICAgICAgfVxuICAgIH0pOyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byBleGVjdXRlIGFyYml0cmFyeSBjb2RlIGJlZm9yZSB0aGUgZmlyc3RcbiAgICAvLyB1cGRhdGUgY3ljbGUgcnVucy4gVGhleSB3aWxsIGJlIGV4ZWN1dGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSB1cGRhdGVcbiAgICAvLyBjeWNsZS4gVGhpcyBpcyB1c2VmdWwgd2hlbiBhIG1vZGlmaWVyIGFkZHMgc29tZSBwZXJzaXN0ZW50IGRhdGEgdGhhdFxuICAgIC8vIG90aGVyIG1vZGlmaWVycyBuZWVkIHRvIHVzZSwgYnV0IHRoZSBtb2RpZmllciBpcyBydW4gYWZ0ZXIgdGhlIGRlcGVuZGVudFxuICAgIC8vIG9uZS5cblxuICAgIGZ1bmN0aW9uIHJ1bk1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAoX3JlZjMpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBfcmVmMy5uYW1lLFxuICAgICAgICAgICAgX3JlZjMkb3B0aW9ucyA9IF9yZWYzLm9wdGlvbnMsXG4gICAgICAgICAgICBvcHRpb25zID0gX3JlZjMkb3B0aW9ucyA9PT0gdm9pZCAwID8ge30gOiBfcmVmMyRvcHRpb25zLFxuICAgICAgICAgICAgZWZmZWN0ID0gX3JlZjMuZWZmZWN0O1xuXG4gICAgICAgIGlmICh0eXBlb2YgZWZmZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgdmFyIGNsZWFudXBGbiA9IGVmZmVjdCh7XG4gICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgaW5zdGFuY2U6IGluc3RhbmNlLFxuICAgICAgICAgICAgb3B0aW9uczogb3B0aW9uc1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdmFyIG5vb3BGbiA9IGZ1bmN0aW9uIG5vb3BGbigpIHt9O1xuXG4gICAgICAgICAgZWZmZWN0Q2xlYW51cEZucy5wdXNoKGNsZWFudXBGbiB8fCBub29wRm4pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbGVhbnVwTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgZWZmZWN0Q2xlYW51cEZucy5mb3JFYWNoKGZ1bmN0aW9uIChmbikge1xuICAgICAgICByZXR1cm4gZm4oKTtcbiAgICAgIH0pO1xuICAgICAgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcbn1cbmV4cG9ydCB2YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcigpOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGRldGVjdE92ZXJmbG93IH07IiwiaW1wb3J0IHsgcG9wcGVyR2VuZXJhdG9yLCBkZXRlY3RPdmVyZmxvdyB9IGZyb20gXCIuL2NyZWF0ZVBvcHBlci5qc1wiO1xuaW1wb3J0IGV2ZW50TGlzdGVuZXJzIGZyb20gXCIuL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qc1wiO1xuaW1wb3J0IHBvcHBlck9mZnNldHMgZnJvbSBcIi4vbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanNcIjtcbmltcG9ydCBjb21wdXRlU3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9jb21wdXRlU3R5bGVzLmpzXCI7XG5pbXBvcnQgYXBwbHlTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzXCI7XG5pbXBvcnQgb2Zmc2V0IGZyb20gXCIuL21vZGlmaWVycy9vZmZzZXQuanNcIjtcbmltcG9ydCBmbGlwIGZyb20gXCIuL21vZGlmaWVycy9mbGlwLmpzXCI7XG5pbXBvcnQgcHJldmVudE92ZXJmbG93IGZyb20gXCIuL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanNcIjtcbmltcG9ydCBhcnJvdyBmcm9tIFwiLi9tb2RpZmllcnMvYXJyb3cuanNcIjtcbmltcG9ydCBoaWRlIGZyb20gXCIuL21vZGlmaWVycy9oaWRlLmpzXCI7XG52YXIgZGVmYXVsdE1vZGlmaWVycyA9IFtldmVudExpc3RlbmVycywgcG9wcGVyT2Zmc2V0cywgY29tcHV0ZVN0eWxlcywgYXBwbHlTdHlsZXMsIG9mZnNldCwgZmxpcCwgcHJldmVudE92ZXJmbG93LCBhcnJvdywgaGlkZV07XG52YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcih7XG4gIGRlZmF1bHRNb2RpZmllcnM6IGRlZmF1bHRNb2RpZmllcnNcbn0pOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGNyZWF0ZVBvcHBlciwgcG9wcGVyR2VuZXJhdG9yLCBkZWZhdWx0TW9kaWZpZXJzLCBkZXRlY3RPdmVyZmxvdyB9OyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGNyZWF0ZVBvcHBlciBhcyBjcmVhdGVQb3BwZXJMaXRlIH0gZnJvbSBcIi4vcG9wcGVyLWxpdGUuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgKiBmcm9tIFwiLi9tb2RpZmllcnMvaW5kZXguanNcIjsiLCIvLyBTdG9sZSBBbGwgdGhpcyBmcm9tIExpYW0ncyBQZXJpb2RpYyBOb3RlcyBQbHVnaW46IGh0dHBzOi8vZ2l0aHViLmNvbS9saWFtY2Fpbi9vYnNpZGlhbi1wZXJpb2RpYy1ub3Rlc1xuXG5pbXBvcnQgeyBBcHAsIElTdWdnZXN0T3duZXIsIFNjb3BlLCBURmlsZSwgVEFic3RyYWN0RmlsZSB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgY3JlYXRlUG9wcGVyLCBJbnN0YW5jZSBhcyBQb3BwZXJJbnN0YW5jZSB9IGZyb20gXCJAcG9wcGVyanMvY29yZVwiO1xuaW1wb3J0IHsgRXh0ZW5kZWRCbG9ja0NhY2hlIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGdldFN0b3JlIH0gZnJvbSBcIi4vYnV0dG9uU3RvcmVcIjtcblxuaW1wb3J0IHsgd3JhcEFyb3VuZCB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNsYXNzIFN1Z2dlc3Q8VD4ge1xuICBwcml2YXRlIG93bmVyOiBJU3VnZ2VzdE93bmVyPFQ+O1xuICBwcml2YXRlIHZhbHVlczogVFtdO1xuICBwcml2YXRlIHN1Z2dlc3Rpb25zOiBIVE1MRGl2RWxlbWVudFtdO1xuICBwcml2YXRlIHNlbGVjdGVkSXRlbTogbnVtYmVyO1xuICBwcml2YXRlIGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3Rvcihvd25lcjogSVN1Z2dlc3RPd25lcjxUPiwgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50LCBzY29wZTogU2NvcGUpIHtcbiAgICB0aGlzLm93bmVyID0gb3duZXI7XG4gICAgdGhpcy5jb250YWluZXJFbCA9IGNvbnRhaW5lckVsO1xuXG4gICAgY29udGFpbmVyRWwub24oXG4gICAgICBcImNsaWNrXCIsXG4gICAgICBcIi5zdWdnZXN0aW9uLWl0ZW1cIixcbiAgICAgIHRoaXMub25TdWdnZXN0aW9uQ2xpY2suYmluZCh0aGlzKVxuICAgICk7XG4gICAgY29udGFpbmVyRWwub24oXG4gICAgICBcIm1vdXNlbW92ZVwiLFxuICAgICAgXCIuc3VnZ2VzdGlvbi1pdGVtXCIsXG4gICAgICB0aGlzLm9uU3VnZ2VzdGlvbk1vdXNlb3Zlci5iaW5kKHRoaXMpXG4gICAgKTtcblxuICAgIHNjb3BlLnJlZ2lzdGVyKFtdLCBcIkFycm93VXBcIiwgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoIWV2ZW50LmlzQ29tcG9zaW5nKSB7XG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRJdGVtKHRoaXMuc2VsZWN0ZWRJdGVtIC0gMSwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHNjb3BlLnJlZ2lzdGVyKFtdLCBcIkFycm93RG93blwiLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmICghZXZlbnQuaXNDb21wb3NpbmcpIHtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW0odGhpcy5zZWxlY3RlZEl0ZW0gKyAxLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2NvcGUucmVnaXN0ZXIoW10sIFwiRW50ZXJcIiwgKGV2ZW50KSA9PiB7XG4gICAgICBpZiAoIWV2ZW50LmlzQ29tcG9zaW5nKSB7XG4gICAgICAgIHRoaXMudXNlU2VsZWN0ZWRJdGVtKGV2ZW50KTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25TdWdnZXN0aW9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQsIGVsOiBIVE1MRGl2RWxlbWVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBpdGVtID0gdGhpcy5zdWdnZXN0aW9ucy5pbmRleE9mKGVsKTtcbiAgICB0aGlzLnNldFNlbGVjdGVkSXRlbShpdGVtLCBmYWxzZSk7XG4gICAgdGhpcy51c2VTZWxlY3RlZEl0ZW0oZXZlbnQpO1xuICB9XG5cbiAgb25TdWdnZXN0aW9uTW91c2VvdmVyKF9ldmVudDogTW91c2VFdmVudCwgZWw6IEhUTUxEaXZFbGVtZW50KTogdm9pZCB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuc3VnZ2VzdGlvbnMuaW5kZXhPZihlbCk7XG4gICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW0oaXRlbSwgZmFsc2UpO1xuICB9XG5cbiAgc2V0U3VnZ2VzdGlvbnModmFsdWVzOiBUW10pIHtcbiAgICB0aGlzLmNvbnRhaW5lckVsLmVtcHR5KCk7XG4gICAgY29uc3Qgc3VnZ2VzdGlvbkVsczogSFRNTERpdkVsZW1lbnRbXSA9IFtdO1xuXG4gICAgdmFsdWVzLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBzdWdnZXN0aW9uRWwgPSB0aGlzLmNvbnRhaW5lckVsLmNyZWF0ZURpdihcInN1Z2dlc3Rpb24taXRlbVwiKTtcbiAgICAgIHRoaXMub3duZXIucmVuZGVyU3VnZ2VzdGlvbih2YWx1ZSwgc3VnZ2VzdGlvbkVsKTtcbiAgICAgIHN1Z2dlc3Rpb25FbHMucHVzaChzdWdnZXN0aW9uRWwpO1xuICAgIH0pO1xuXG4gICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7XG4gICAgdGhpcy5zdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25FbHM7XG4gICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW0oMCwgZmFsc2UpO1xuICB9XG5cbiAgdXNlU2VsZWN0ZWRJdGVtKGV2ZW50OiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMudmFsdWVzW3RoaXMuc2VsZWN0ZWRJdGVtXTtcbiAgICBpZiAoY3VycmVudFZhbHVlKSB7XG4gICAgICB0aGlzLm93bmVyLnNlbGVjdFN1Z2dlc3Rpb24oY3VycmVudFZhbHVlLCBldmVudCk7XG4gICAgfVxuICB9XG5cbiAgc2V0U2VsZWN0ZWRJdGVtKHNlbGVjdGVkSW5kZXg6IG51bWJlciwgc2Nyb2xsSW50b1ZpZXc6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBub3JtYWxpemVkSW5kZXggPSB3cmFwQXJvdW5kKHNlbGVjdGVkSW5kZXgsIHRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoKTtcbiAgICBjb25zdCBwcmV2U2VsZWN0ZWRTdWdnZXN0aW9uID0gdGhpcy5zdWdnZXN0aW9uc1t0aGlzLnNlbGVjdGVkSXRlbV07XG4gICAgY29uc3Qgc2VsZWN0ZWRTdWdnZXN0aW9uID0gdGhpcy5zdWdnZXN0aW9uc1tub3JtYWxpemVkSW5kZXhdO1xuXG4gICAgcHJldlNlbGVjdGVkU3VnZ2VzdGlvbj8ucmVtb3ZlQ2xhc3MoXCJpcy1zZWxlY3RlZFwiKTtcbiAgICBzZWxlY3RlZFN1Z2dlc3Rpb24/LmFkZENsYXNzKFwiaXMtc2VsZWN0ZWRcIik7XG5cbiAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IG5vcm1hbGl6ZWRJbmRleDtcblxuICAgIGlmIChzY3JvbGxJbnRvVmlldykge1xuICAgICAgc2VsZWN0ZWRTdWdnZXN0aW9uLnNjcm9sbEludG9WaWV3KGZhbHNlKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRleHRJbnB1dFN1Z2dlc3Q8VD4gaW1wbGVtZW50cyBJU3VnZ2VzdE93bmVyPFQ+IHtcbiAgcHJvdGVjdGVkIGFwcDogQXBwO1xuICBwcm90ZWN0ZWQgaW5wdXRFbDogSFRNTElucHV0RWxlbWVudDtcblxuICBwcml2YXRlIHBvcHBlcjogUG9wcGVySW5zdGFuY2U7XG4gIHByaXZhdGUgc2NvcGU6IFNjb3BlO1xuICBwcml2YXRlIHN1Z2dlc3RFbDogSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgc3VnZ2VzdDogU3VnZ2VzdDxUPjtcblxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgaW5wdXRFbDogSFRNTElucHV0RWxlbWVudCkge1xuICAgIHRoaXMuYXBwID0gYXBwO1xuICAgIHRoaXMuaW5wdXRFbCA9IGlucHV0RWw7XG4gICAgdGhpcy5zY29wZSA9IG5ldyBTY29wZSgpO1xuXG4gICAgdGhpcy5zdWdnZXN0RWwgPSBjcmVhdGVEaXYoXCJzdWdnZXN0aW9uLWNvbnRhaW5lclwiKTtcbiAgICBjb25zdCBzdWdnZXN0aW9uID0gdGhpcy5zdWdnZXN0RWwuY3JlYXRlRGl2KFwic3VnZ2VzdGlvblwiKTtcbiAgICB0aGlzLnN1Z2dlc3QgPSBuZXcgU3VnZ2VzdCh0aGlzLCBzdWdnZXN0aW9uLCB0aGlzLnNjb3BlKTtcblxuICAgIHRoaXMuc2NvcGUucmVnaXN0ZXIoW10sIFwiRXNjYXBlXCIsIHRoaXMuY2xvc2UuYmluZCh0aGlzKSk7XG5cbiAgICB0aGlzLmlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcihcImlucHV0XCIsIHRoaXMub25JbnB1dENoYW5nZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5pbnB1dEVsLmFkZEV2ZW50TGlzdGVuZXIoXCJmb2N1c1wiLCB0aGlzLm9uSW5wdXRDaGFuZ2VkLmJpbmQodGhpcykpO1xuICAgIHRoaXMuaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCB0aGlzLmNsb3NlLmJpbmQodGhpcykpO1xuICAgIHRoaXMuc3VnZ2VzdEVsLm9uKFxuICAgICAgXCJtb3VzZWRvd25cIixcbiAgICAgIFwiLnN1Z2dlc3Rpb24tY29udGFpbmVyXCIsXG4gICAgICAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgb25JbnB1dENoYW5nZWQoKTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXRTdHIgPSB0aGlzLmlucHV0RWwudmFsdWU7XG4gICAgY29uc3Qgc3VnZ2VzdGlvbnMgPSB0aGlzLmdldFN1Z2dlc3Rpb25zKGlucHV0U3RyKTtcblxuICAgIGlmIChzdWdnZXN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnN1Z2dlc3Quc2V0U3VnZ2VzdGlvbnMoc3VnZ2VzdGlvbnMpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgIHRoaXMub3BlbigoPGFueT50aGlzLmFwcCkuZG9tLmFwcENvbnRhaW5lckVsLCB0aGlzLmlucHV0RWwpO1xuICAgIH1cbiAgfVxuXG4gIG9wZW4oY29udGFpbmVyOiBIVE1MRWxlbWVudCwgaW5wdXRFbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICg8YW55PnRoaXMuYXBwKS5rZXltYXAucHVzaFNjb3BlKHRoaXMuc2NvcGUpO1xuXG4gICAgY29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuc3VnZ2VzdEVsKTtcbiAgICB0aGlzLnBvcHBlciA9IGNyZWF0ZVBvcHBlcihpbnB1dEVsLCB0aGlzLnN1Z2dlc3RFbCwge1xuICAgICAgcGxhY2VtZW50OiBcImJvdHRvbS1zdGFydFwiLFxuICAgICAgbW9kaWZpZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcInNhbWVXaWR0aFwiLFxuICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgZm46ICh7IHN0YXRlLCBpbnN0YW5jZSB9KSA9PiB7XG4gICAgICAgICAgICAvLyBOb3RlOiBwb3NpdGlvbmluZyBuZWVkcyB0byBiZSBjYWxjdWxhdGVkIHR3aWNlIC1cbiAgICAgICAgICAgIC8vIGZpcnN0IHBhc3MgLSBwb3NpdGlvbmluZyBpdCBhY2NvcmRpbmcgdG8gdGhlIHdpZHRoIG9mIHRoZSBwb3BwZXJcbiAgICAgICAgICAgIC8vIHNlY29uZCBwYXNzIC0gcG9zaXRpb24gaXQgd2l0aCB0aGUgd2lkdGggYm91bmQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50XG4gICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGVhcmx5IGV4aXQgdG8gYXZvaWQgYW4gaW5maW5pdGUgbG9vcFxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0V2lkdGggPSBgJHtzdGF0ZS5yZWN0cy5yZWZlcmVuY2Uud2lkdGh9cHhgO1xuICAgICAgICAgICAgaWYgKHN0YXRlLnN0eWxlcy5wb3BwZXIud2lkdGggPT09IHRhcmdldFdpZHRoKSB7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN0YXRlLnN0eWxlcy5wb3BwZXIud2lkdGggPSB0YXJnZXRXaWR0aDtcbiAgICAgICAgICAgIGluc3RhbmNlLnVwZGF0ZSgpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcGhhc2U6IFwiYmVmb3JlV3JpdGVcIixcbiAgICAgICAgICByZXF1aXJlczogW1wiY29tcHV0ZVN0eWxlc1wiXSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICg8YW55PnRoaXMuYXBwKS5rZXltYXAucG9wU2NvcGUodGhpcy5zY29wZSk7XG5cbiAgICB0aGlzLnN1Z2dlc3Quc2V0U3VnZ2VzdGlvbnMoW10pO1xuICAgIHRoaXMucG9wcGVyICYmIHRoaXMucG9wcGVyLmRlc3Ryb3koKTtcbiAgICB0aGlzLnN1Z2dlc3RFbC5kZXRhY2goKTtcbiAgfVxuXG4gIGFic3RyYWN0IGdldFN1Z2dlc3Rpb25zKGlucHV0U3RyOiBzdHJpbmcpOiBUW107XG4gIGFic3RyYWN0IHJlbmRlclN1Z2dlc3Rpb24oaXRlbTogVCwgZWw6IEhUTUxFbGVtZW50KTogdm9pZDtcbiAgYWJzdHJhY3Qgc2VsZWN0U3VnZ2VzdGlvbihpdGVtOiBUKTogdm9pZDtcbn1cblxuaW50ZXJmYWNlIENvbW1hbmQge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDb21tYW5kU3VnZ2VzdCBleHRlbmRzIFRleHRJbnB1dFN1Z2dlc3Q8Q29tbWFuZD4ge1xuICBnZXRTdWdnZXN0aW9ucyhpbnB1dFN0cjogc3RyaW5nKTogQ29tbWFuZFtdIHtcbiAgICBjb25zdCBjb21tYW5kcyA9IHRoaXMuYXBwLmNvbW1hbmRzLmNvbW1hbmRzO1xuICAgIGNvbnN0IGNvbW1hbmROYW1lczogQ29tbWFuZFtdID0gW107XG4gICAgY29uc3QgaW5wdXRMb3dlckNhc2UgPSBpbnB1dFN0ci50b0xvd2VyQ2FzZSgpO1xuXG4gICAgZm9yIChjb25zdCBjb21tYW5kIGluIGNvbW1hbmRzKSB7XG4gICAgICBjb25zdCBjb21tYW5kT2JqID0gY29tbWFuZHNbY29tbWFuZF07XG4gICAgICBpZiAoY29tbWFuZE9iai5uYW1lLnRvTG93ZXJDYXNlKCkuY29udGFpbnMoaW5wdXRMb3dlckNhc2UpKSB7XG4gICAgICAgIGNvbW1hbmROYW1lcy5wdXNoKGNvbW1hbmRPYmopO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29tbWFuZE5hbWVzO1xuICB9XG5cbiAgcmVuZGVyU3VnZ2VzdGlvbihjb21tYW5kOiBDb21tYW5kLCBlbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBlbC5zZXRUZXh0KGNvbW1hbmQubmFtZSk7XG4gIH1cblxuICBzZWxlY3RTdWdnZXN0aW9uKGNvbW1hbmQ6IENvbW1hbmQpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0RWwudmFsdWUgPSBjb21tYW5kLm5hbWU7XG4gICAgdGhpcy5pbnB1dEVsLnRyaWdnZXIoXCJpbnB1dFwiKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlU3VnZ2VzdCBleHRlbmRzIFRleHRJbnB1dFN1Z2dlc3Q8VEZpbGU+IHtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZXNFbmFibGVkID0gdGhpcy5hcHAuaW50ZXJuYWxQbHVnaW5zLnBsdWdpbnMudGVtcGxhdGVzLmVuYWJsZWQ7XG4gIHByaXZhdGUgdGVtcGxhdGVyUGx1Z2luID0gdGhpcy5hcHAucGx1Z2lucy5wbHVnaW5zW1widGVtcGxhdGVyLW9ic2lkaWFuXCJdO1xuICAvLyBvbmx5IHJ1biBpZiB0ZW1wbGF0ZXMgcGx1Z2luIGlzIGVuYWJsZWRcbiAgcHJpdmF0ZSBmb2xkZXIgPSAoKTogc3RyaW5nW10gPT4ge1xuICAgIGNvbnN0IGZvbGRlcnMgPSBbXTtcbiAgICBpZiAodGhpcy50ZW1wbGF0ZXNFbmFibGVkKSB7XG4gICAgICBjb25zdCBmb2xkZXIgPSB0aGlzLmFwcC5pbnRlcm5hbFBsdWdpbnMucGx1Z2lucy50ZW1wbGF0ZXMuaW5zdGFuY2Uub3B0aW9uc1xuICAgICAgICAuZm9sZGVyO1xuICAgICAgaWYgKGZvbGRlcikge1xuICAgICAgICBmb2xkZXJzLnB1c2goZm9sZGVyLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudGVtcGxhdGVyUGx1Z2luKSB7XG4gICAgICAgIGNvbnN0IGZvbGRlciA9IHRoaXMudGVtcGxhdGVyUGx1Z2luLnNldHRpbmdzLnRlbXBsYXRlX2ZvbGRlcjtcbiAgICAgICAgaWYgKGZvbGRlcikge1xuICAgICAgICAgIGZvbGRlcnMucHVzaChmb2xkZXIudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZvbGRlcnNbMF0gPyBmb2xkZXJzIDogdW5kZWZpbmVkO1xuICB9O1xuXG4gIGdldFN1Z2dlc3Rpb25zKGlucHV0U3RyOiBzdHJpbmcpOiBURmlsZVtdIHtcbiAgICBjb25zdCBhYnN0cmFjdEZpbGVzID0gdGhpcy5hcHAudmF1bHQuZ2V0QWxsTG9hZGVkRmlsZXMoKTtcbiAgICBjb25zdCBmaWxlczogVEZpbGVbXSA9IFtdO1xuICAgIGNvbnN0IGxvd2VyQ2FzZUlucHV0U3RyID0gaW5wdXRTdHIudG9Mb3dlckNhc2UoKTtcbiAgICBjb25zdCBmb2xkZXJzID0gdGhpcy5mb2xkZXIoKTtcblxuICAgIGFic3RyYWN0RmlsZXMuZm9yRWFjaCgoZmlsZTogVEFic3RyYWN0RmlsZSkgPT4ge1xuICAgICAgbGV0IGV4aXN0cyA9IGZhbHNlO1xuICAgICAgZm9sZGVycyAmJlxuICAgICAgICBmb2xkZXJzLmZvckVhY2goKGZvbGRlcikgPT4ge1xuICAgICAgICAgIGlmIChmaWxlLnBhdGgudG9Mb3dlckNhc2UoKS5jb250YWlucyhgJHtmb2xkZXJ9L2ApKSB7XG4gICAgICAgICAgICBleGlzdHMgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICBpZiAoXG4gICAgICAgIGZpbGUgaW5zdGFuY2VvZiBURmlsZSAmJlxuICAgICAgICBmaWxlLmV4dGVuc2lvbiA9PT0gXCJtZFwiICYmXG4gICAgICAgIGV4aXN0cyAmJlxuICAgICAgICBmaWxlLnBhdGgudG9Mb3dlckNhc2UoKS5jb250YWlucyhsb3dlckNhc2VJbnB1dFN0cilcbiAgICAgICkge1xuICAgICAgICBmaWxlcy5wdXNoKGZpbGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpbGVzO1xuICB9XG5cbiAgcmVuZGVyU3VnZ2VzdGlvbihmaWxlOiBURmlsZSwgZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgZWwuc2V0VGV4dChmaWxlLm5hbWUuc3BsaXQoXCIuXCIpWzBdKTtcbiAgfVxuXG4gIHNlbGVjdFN1Z2dlc3Rpb24oZmlsZTogVEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0RWwudmFsdWUgPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpWzBdO1xuICAgIHRoaXMuaW5wdXRFbC50cmlnZ2VyKFwiaW5wdXRcIik7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCdXR0b25TdWdnZXN0IGV4dGVuZHMgVGV4dElucHV0U3VnZ2VzdDxzdHJpbmc+IHtcbiAgZ2V0U3VnZ2VzdGlvbnMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGJ1dHRvblN0b3JlID0gZ2V0U3RvcmUodGhpcy5hcHAuaXNNb2JpbGUpO1xuICAgIGNvbnN0IGJ1dHRvbnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBidXR0b25TdG9yZS5mb3JFYWNoKChidXR0b246IEV4dGVuZGVkQmxvY2tDYWNoZSkgPT4ge1xuICAgICAgY29uc3QgdHJpbW1lZCA9IGJ1dHRvbi5pZC5zcGxpdChcIi1cIilbMV07XG4gICAgICBidXR0b25zLnB1c2godHJpbW1lZCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYnV0dG9ucztcbiAgfVxuXG4gIHJlbmRlclN1Z2dlc3Rpb24oYnV0dG9uOiBzdHJpbmcsIGVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGVsLnNldFRleHQoYnV0dG9uKTtcbiAgfVxuXG4gIHNlbGVjdFN1Z2dlc3Rpb24oYnV0dG9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmlucHV0RWwudmFsdWUgPSB0aGlzLmlucHV0RWwudmFsdWUgKyBidXR0b247XG4gICAgdGhpcy5pbnB1dEVsLnRyaWdnZXIoXCJpbnB1dFwiKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbn1cbiIsImltcG9ydCB7IE1vZGFsLCBBcHAsIFNldHRpbmcsIE1hcmtkb3duVmlldywgRWRpdG9yIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBjcmVhdGVCdXR0b24gfSBmcm9tIFwiLi9idXR0b25cIjtcbmltcG9ydCB7IENvbW1hbmRTdWdnZXN0LCBUZW1wbGF0ZVN1Z2dlc3QsIEJ1dHRvblN1Z2dlc3QgfSBmcm9tIFwiLi9zdWdnZXN0XCI7XG5pbXBvcnQgeyBpbnNlcnRCdXR0b24sIGluc2VydElubGluZUJ1dHRvbiB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBjbGFzcyBCdXR0b25Nb2RhbCBleHRlbmRzIE1vZGFsIHtcbiAgYWN0aXZlVmlldzogTWFya2Rvd25WaWV3O1xuICBhY3RpdmVFZGl0b3I6IEVkaXRvcjtcbiAgYWN0aXZlQ3Vyc29yOiBDb2RlTWlycm9yLlBvc2l0aW9uO1xuICBhY3Rpb25JbnRlcnZhbDogVGltZW91dDtcbiAgYnV0dG9uUHJldmlld0VsOiBIVE1MRWxlbWVudCA9IGNyZWF0ZUVsKFwicFwiKTtcbiAgY29tbWFuZFN1Z2dlc3RFbDogSFRNTElucHV0RWxlbWVudCA9IGNyZWF0ZUVsKFwiaW5wdXRcIiwgeyB0eXBlOiBcInRleHRcIiB9KTtcbiAgZmlsZVN1Z2dlc3RFbDogSFRNTElucHV0RWxlbWVudCA9IGNyZWF0ZUVsKFwiaW5wdXRcIiwgeyB0eXBlOiBcInRleHRcIiB9KTtcbiAgcmVtb3ZlU3VnZ2VzdEVsOiBIVE1MSW5wdXRFbGVtZW50ID0gY3JlYXRlRWwoXCJpbnB1dFwiLCB7IHR5cGU6IFwidGV4dFwiIH0pO1xuICBzd2FwU3VnZ2VzdEVsOiBIVE1MSW5wdXRFbGVtZW50ID0gY3JlYXRlRWwoXCJpbnB1dFwiLCB7IHR5cGU6IFwidGV4dFwiIH0pO1xuICBpZFN1Z2dlc3RFbDogSFRNTElucHV0RWxlbWVudCA9IGNyZWF0ZUVsKFwiaW5wdXRcIiwgeyB0eXBlOiBcInRleHRcIiB9KTtcbiAgcmVtb3ZlU3VnZ2VzdDtcbiAgc3dhcFN1Z2dlc3Q7XG4gIGlkU3VnZ2VzdDtcbiAgY29tbWFuZFN1Z2dlc3Q7XG4gIGZpbGVTdWdnZXN0O1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwKSB7XG4gICAgc3VwZXIoYXBwKTtcbiAgICB0aGlzLmNvbW1hbmRTdWdnZXN0ID0gbmV3IENvbW1hbmRTdWdnZXN0KHRoaXMuYXBwLCB0aGlzLmNvbW1hbmRTdWdnZXN0RWwpO1xuICAgIHRoaXMuY29tbWFuZFN1Z2dlc3RFbC5wbGFjZWhvbGRlciA9IFwiVG9nZ2xlIFBpblwiO1xuICAgIHRoaXMuY29tbWFuZFN1Z2dlc3RFbC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIChlOiBFdmVudCkgPT4ge1xuICAgICAgdGhpcy5vdXRwdXRPYmplY3QuYWN0aW9uID0gKDxIVE1MSW5wdXRFbGVtZW50PmUudGFyZ2V0KS52YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLmNvbW1hbmRTdWdnZXN0RWwuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgKGU6IEV2ZW50KSA9PiB7XG4gICAgICB0aGlzLm91dHB1dE9iamVjdC5hY3Rpb24gPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZS50YXJnZXQpLnZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMuZmlsZVN1Z2dlc3QgPSBuZXcgVGVtcGxhdGVTdWdnZXN0KHRoaXMuYXBwLCB0aGlzLmZpbGVTdWdnZXN0RWwpO1xuICAgIHRoaXMuZmlsZVN1Z2dlc3RFbC5wbGFjZWhvbGRlciA9IFwiTXkgVGVtcGxhdGVcIjtcbiAgICB0aGlzLmZpbGVTdWdnZXN0RWwuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoZSkgPT4ge1xuICAgICAgdGhpcy5vdXRwdXRPYmplY3QuYWN0aW9uID0gKDxIVE1MSW5wdXRFbGVtZW50PmUudGFyZ2V0KS52YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLmZpbGVTdWdnZXN0RWwuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgKGUpID0+IHtcbiAgICAgIHRoaXMub3V0cHV0T2JqZWN0LmFjdGlvbiA9ICg8SFRNTElucHV0RWxlbWVudD5lLnRhcmdldCkudmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy5yZW1vdmVTdWdnZXN0ID0gbmV3IEJ1dHRvblN1Z2dlc3QodGhpcy5hcHAsIHRoaXMucmVtb3ZlU3VnZ2VzdEVsKTtcbiAgICB0aGlzLnJlbW92ZVN1Z2dlc3RFbC52YWx1ZSA9IFwidHJ1ZVwiO1xuICAgIHRoaXMucmVtb3ZlU3VnZ2VzdEVsLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgKGUpID0+IHtcbiAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnJlbW92ZSA9ICg8SFRNTElucHV0RWxlbWVudD5lLnRhcmdldCkudmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy5yZW1vdmVTdWdnZXN0RWwuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgKGUpID0+IHtcbiAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnJlbW92ZSA9ICg8SFRNTElucHV0RWxlbWVudD5lLnRhcmdldCkudmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy5zd2FwU3VnZ2VzdCA9IG5ldyBCdXR0b25TdWdnZXN0KHRoaXMuYXBwLCB0aGlzLnN3YXBTdWdnZXN0RWwpO1xuICAgIHRoaXMuc3dhcFN1Z2dlc3RFbC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIChlKSA9PiB7XG4gICAgICB0aGlzLm91dHB1dE9iamVjdC5zd2FwID0gKDxIVE1MSW5wdXRFbGVtZW50PmUudGFyZ2V0KS52YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLnN3YXBTdWdnZXN0RWwuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgKGUpID0+IHtcbiAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnN3YXAgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZS50YXJnZXQpLnZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMuaWRTdWdnZXN0ID0gbmV3IEJ1dHRvblN1Z2dlc3QodGhpcy5hcHAsIHRoaXMuaWRTdWdnZXN0RWwpO1xuICAgIHRoaXMuaWRTdWdnZXN0RWwuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoZSkgPT4ge1xuICAgICAgdGhpcy5vdXRwdXRPYmplY3QuaWQgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZS50YXJnZXQpLnZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMuaWRTdWdnZXN0RWwuYWRkRXZlbnRMaXN0ZW5lcihcImJsdXJcIiwgKGUpID0+IHtcbiAgICAgIHRoaXMub3V0cHV0T2JqZWN0LmlkID0gKDxIVE1MSW5wdXRFbGVtZW50PmUudGFyZ2V0KS52YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLnN3YXBTdWdnZXN0RWwucGxhY2Vob2xkZXIgPSBcIltpZE9uZSwgaWRUd29dXCI7XG4gIH1cblxuICBwcml2YXRlIG91dHB1dE9iamVjdCA9IHtcbiAgICBuYW1lOiBcIlwiLFxuICAgIHR5cGU6IFwiXCIsXG4gICAgYWN0aW9uOiBcIlwiLFxuICAgIHN3YXA6IFwiXCIsXG4gICAgcmVtb3ZlOiBcIlwiLFxuICAgIHJlcGxhY2U6IFwiXCIsXG4gICAgaWQ6IFwiXCIsXG4gICAgdGVtcGxhdGVyOiBmYWxzZSxcbiAgICBjbGFzczogXCJcIixcbiAgICBjb2xvcjogXCJcIixcbiAgICBibG9ja0lkOiBcIlwiLFxuICB9O1xuXG4gIG9uT3BlbigpOiB2b2lkIHtcbiAgICBjb25zdCB7IHRpdGxlRWwsIGNvbnRlbnRFbCB9ID0gdGhpcztcbiAgICB0aXRsZUVsLnNldFRleHQoXCJCdXR0b24gTWFrZXJcIik7XG4gICAgY29udGVudEVsLmFkZENsYXNzKFwiYnV0dG9uLW1ha2VyXCIpO1xuICAgIGNvbnRlbnRFbC5jcmVhdGVFbChcImZvcm1cIiwge30sIChmb3JtRWwpID0+IHtcbiAgICAgIG5ldyBTZXR0aW5nKGZvcm1FbClcbiAgICAgICAgLnNldE5hbWUoXCJCdXR0b24gTmFtZVwiKVxuICAgICAgICAuc2V0RGVzYyhcIldoYXQgd291bGQgeW91IGxpa2UgdG8gY2FsbCB0aGlzIGJ1dHRvbj9cIilcbiAgICAgICAgLmFkZFRleHQoKHRleHRFbCkgPT4ge1xuICAgICAgICAgIHRleHRFbC5zZXRQbGFjZWhvbGRlcihcIk15IEF3ZXNvbWUgQnV0dG9uXCIpO1xuICAgICAgICAgIHRleHRFbC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uUHJldmlld0VsLnNldFRleHQodmFsdWUpO1xuICAgICAgICAgICAgdGhpcy5vdXRwdXRPYmplY3QubmFtZSA9IHZhbHVlO1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4gdGV4dEVsLmlucHV0RWwuZm9jdXMoKSwgMTApO1xuICAgICAgICB9KTtcbiAgICAgIGNvbnN0IHR5cGVDb250YWluZXIgPSBjcmVhdGVFbChcImRpdlwiKTtcbiAgICAgIGNvbnN0IHR5cGVUaXRsZSA9IGNyZWF0ZUVsKFwic3BhblwiLCB7IGNsczogXCJzZXR0aW5nLWl0ZW0tdGl0bGVcIiB9KTtcbiAgICAgIHR5cGVUaXRsZS5zZXRUZXh0KFwiQnV0dG9uIFR5cGVcIik7XG4gICAgICBjb25zdCB0eXBlRGVzYyA9IGNyZWF0ZUVsKFwiZGl2XCIsIHsgY2xzOiBcInNldHRpbmctaXRlbS1kZXNjcmlwdGlvblwiIH0pO1xuICAgICAgdHlwZURlc2Muc2V0VGV4dChcIldoYXQgdHlwZSBvZiBidXR0b24gYXJlIHlvdSBtYWtpbmc/XCIpO1xuICAgICAgZm9ybUVsLmFwcGVuZENoaWxkKHR5cGVDb250YWluZXIpO1xuICAgICAgdHlwZUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0eXBlVGl0bGUpO1xuICAgICAgdHlwZUNvbnRhaW5lci5hcHBlbmRDaGlsZCh0eXBlRGVzYyk7XG4gICAgICBuZXcgU2V0dGluZyh0eXBlRGVzYykuYWRkRHJvcGRvd24oKGRyb3ApID0+IHtcbiAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJwcmVcIiwgXCJTZWxlY3QgYSBCdXR0b24gVHlwZVwiKTtcbiAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJjb21tYW5kXCIsIFwiQ29tbWFuZCAtIHJ1biBhIGNvbW1hbmQgcHJvbXB0IGNvbW1hbmRcIik7XG4gICAgICAgIGRyb3AuYWRkT3B0aW9uKFwibGlua1wiLCBcIkxpbmsgLSBvcGVuIGEgdXJsIG9yIHVyaVwiKTtcbiAgICAgICAgZHJvcC5hZGRPcHRpb24oXG4gICAgICAgICAgXCJ0ZW1wbGF0ZVwiLFxuICAgICAgICAgIFwiVGVtcGxhdGUgLSBpbnNlcnQgb3IgY3JlYXRlIG5vdGVzIGZyb20gdGVtcGxhdGVzXCJcbiAgICAgICAgKTtcbiAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJ0ZXh0XCIsIFwiVGV4dCAtIGluc2VydCBvciBjcmVhdGUgbm90ZXMgd2l0aCB0ZXh0XCIpO1xuICAgICAgICBkcm9wLmFkZE9wdGlvbihcbiAgICAgICAgICBcImNhbGN1bGF0ZVwiLFxuICAgICAgICAgIFwiQ2FsY3VsYXRlIC0gcnVuIGEgbWF0aGVtYXRpY2FsIGNhbGN1bGF0aW9uXCJcbiAgICAgICAgKTtcbiAgICAgICAgZHJvcC5hZGRPcHRpb24oXG4gICAgICAgICAgXCJzd2FwXCIsXG4gICAgICAgICAgXCJTd2FwIC0gQ3JlYXRlIGEgbXVsdGktcHVycG9zZSBJbmxpbmUgQnV0dG9uIGZyb20gb3RoZXIgQnV0dG9uc1wiXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGFjdGlvbiA9IGZvcm1FbC5jcmVhdGVFbChcImRpdlwiKTtcbiAgICAgICAgZHJvcC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gdmFsdWU7XG4gICAgICAgICAgaWYgKHZhbHVlID09PSBcImxpbmtcIikge1xuICAgICAgICAgICAgYWN0aW9uLmVtcHR5KCk7XG4gICAgICAgICAgICBuZXcgU2V0dGluZyhhY3Rpb24pXG4gICAgICAgICAgICAgIC5zZXROYW1lKFwiTGlua1wiKVxuICAgICAgICAgICAgICAuc2V0RGVzYyhcIkVudGVyIGEgbGluayB0byBvcGVuXCIpXG4gICAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0RWwpID0+IHtcbiAgICAgICAgICAgICAgICB0ZXh0RWwuc2V0UGxhY2Vob2xkZXIoXCJodHRwczovL29ic2lkaWFuLm1kXCIpO1xuICAgICAgICAgICAgICAgIHRleHRFbC5vbkNoYW5nZSgodmFsdWUpID0+ICh0aGlzLm91dHB1dE9iamVjdC5hY3Rpb24gPSB2YWx1ZSkpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhbHVlID09PSBcImNvbW1hbmRcIikge1xuICAgICAgICAgICAgYWN0aW9uLmVtcHR5KCk7XG4gICAgICAgICAgICBuZXcgU2V0dGluZyhhY3Rpb24pXG4gICAgICAgICAgICAgIC5zZXROYW1lKFwiQ29tbWFuZFwiKVxuICAgICAgICAgICAgICAuc2V0RGVzYyhcIkVudGVyIGEgY29tbWFuZCB0byBydW5cIilcbiAgICAgICAgICAgICAgLmFkZFRleHQoKHRleHRFbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRleHRFbC5pbnB1dEVsLnJlcGxhY2VXaXRoKHRoaXMuY29tbWFuZFN1Z2dlc3RFbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsdWUuaW5jbHVkZXMoXCJ0ZW1wbGF0ZVwiKSkge1xuICAgICAgICAgICAgYWN0aW9uLmVtcHR5KCk7XG4gICAgICAgICAgICBuZXcgU2V0dGluZyhhY3Rpb24pXG4gICAgICAgICAgICAgIC5zZXROYW1lKFwiVGVtcGxhdGVcIilcbiAgICAgICAgICAgICAgLnNldERlc2MoXCJTZWxlY3QgYSB0ZW1wbGF0ZSBub3RlIGFuZCB3aGF0IHNob3VsZCBoYXBwZW5cIilcbiAgICAgICAgICAgICAgLmFkZERyb3Bkb3duKChkcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJwcmVcIiwgXCJEbyB0aGlzLi4uXCIpO1xuICAgICAgICAgICAgICAgIGRyb3AuYWRkT3B0aW9uKFwicHJlcGVuZCB0ZW1wbGF0ZVwiLCBcIlByZXBlbmRcIik7XG4gICAgICAgICAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJhcHBlbmQgdGVtcGxhdGVcIiwgXCJBcHBlbmRcIik7XG4gICAgICAgICAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJsaW5lIHRlbXBsYXRlXCIsIFwiTGluZVwiKTtcbiAgICAgICAgICAgICAgICBkcm9wLmFkZE9wdGlvbihcIm5vdGUgdGVtcGxhdGVcIiwgXCJOb3RlXCIpO1xuICAgICAgICAgICAgICAgIGRyb3Aub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gXCJsaW5lIHRlbXBsYXRlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3IFNldHRpbmcoYWN0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgIC5zZXROYW1lKFwiTGluZSBOdW1iZXJcIilcbiAgICAgICAgICAgICAgICAgICAgICAuc2V0RGVzYyhcIkF0IHdoaWNoIGxpbmUgc2hvdWxkIHRoZSB0ZW1wbGF0ZSBiZSBpbnNlcnRlZD9cIilcbiAgICAgICAgICAgICAgICAgICAgICAuYWRkVGV4dCgodGV4dEVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RWwuc2V0UGxhY2Vob2xkZXIoXCI2OVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRPYmplY3QudHlwZSA9IGBsaW5lKCR7dmFsdWV9KSB0ZW1wbGF0ZWA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBcIm5vdGUgdGVtcGxhdGVcIikge1xuICAgICAgICAgICAgICAgICAgICBuZXcgU2V0dGluZyhhY3Rpb24pXG4gICAgICAgICAgICAgICAgICAgICAgLnNldE5hbWUoXCJOb3RlIE5hbWVcIilcbiAgICAgICAgICAgICAgICAgICAgICAuc2V0RGVzYyhcIldoYXQgc2hvdWxkIHRoZSBuZXcgbm90ZSBiZSBuYW1lZD9cIilcbiAgICAgICAgICAgICAgICAgICAgICAuYWRkVGV4dCgodGV4dEVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RWwuc2V0UGxhY2Vob2xkZXIoXCJNeSBOZXcgTm90ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTZXR0aW5nKGFjdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldE5hbWUoXCJTcGxpdFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0RGVzYyhcIlNob3VsZCB0aGUgbmV3IG5vdGUgb3BlbiBpbiBhIHNwbGl0IHBhbmU/XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZUVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRPYmplY3QudHlwZSA9IGBub3RlKCR7dGV4dEVsLmdldFZhbHVlfSkgdGVtcGxhdGVgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbC5vbkNoYW5nZSgodGV4dFZhbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9nZ2xlVmFsID0gdG9nZ2xlRWwuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2dnbGVWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRPYmplY3QudHlwZSA9IGBub3RlKCR7dGV4dFZhbH0sIHNwbGl0KSB0ZW1wbGF0ZWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRvZ2dsZVZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gYG5vdGUoJHt0ZXh0VmFsfSkgdGVtcGxhdGVgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUVsLm9uQ2hhbmdlKCh0b2dnbGVWYWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRWYWwgPSB0ZXh0RWwuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2dnbGVWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRPYmplY3QudHlwZSA9IGBub3RlKCR7dGV4dFZhbH0sIHNwbGl0KSB0ZW1wbGF0ZWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRvZ2dsZVZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gYG5vdGUoJHt0ZXh0VmFsfSkgdGVtcGxhdGVgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmFkZFRleHQoKHRleHRFbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRleHRFbC5pbnB1dEVsLnJlcGxhY2VXaXRoKHRoaXMuZmlsZVN1Z2dlc3RFbCk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsdWUuaW5jbHVkZXMoXCJ0ZXh0XCIpKSB7XG4gICAgICAgICAgICBhY3Rpb24uZW1wdHkoKTtcbiAgICAgICAgICAgIG5ldyBTZXR0aW5nKGFjdGlvbilcbiAgICAgICAgICAgICAgLnNldE5hbWUoXCJUZXh0XCIpXG4gICAgICAgICAgICAgIC5zZXREZXNjKFwiV2hhdCB0ZXh0IGFuZCB3aGVyZSBzaG91bGQgaXQgZ28/XCIpXG4gICAgICAgICAgICAgIC5hZGREcm9wZG93bigoZHJvcCkgPT4ge1xuICAgICAgICAgICAgICAgIGRyb3AuYWRkT3B0aW9uKFwicHJlXCIsIFwiRG8gdGhpcy4uLlwiKTtcbiAgICAgICAgICAgICAgICBkcm9wLmFkZE9wdGlvbihcInByZXBlbmQgdGV4dFwiLCBcIlByZXBlbmRcIik7XG4gICAgICAgICAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJhcHBlbmQgdGV4dFwiLCBcIkFwcGVuZFwiKTtcbiAgICAgICAgICAgICAgICBkcm9wLmFkZE9wdGlvbihcImxpbmUgdGV4dFwiLCBcIkxpbmVcIik7XG4gICAgICAgICAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJub3RlIHRleHRcIiwgXCJOb3RlXCIpO1xuICAgICAgICAgICAgICAgIGRyb3Aub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gXCJsaW5lIHRleHRcIikge1xuICAgICAgICAgICAgICAgICAgICBuZXcgU2V0dGluZyhhY3Rpb24pXG4gICAgICAgICAgICAgICAgICAgICAgLnNldE5hbWUoXCJMaW5lIE51bWJlclwiKVxuICAgICAgICAgICAgICAgICAgICAgIC5zZXREZXNjKFwiQXQgd2hpY2ggbGluZSBzaG91bGQgdGhlIHRlbXBsYXRlIGJlIGluc2VydGVkP1wiKVxuICAgICAgICAgICAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0RWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbC5zZXRQbGFjZWhvbGRlcihcIjY5XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVsLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gYGxpbmUoJHt2YWx1ZX0pIHRleHRgO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gXCJub3RlIHRleHRcIikge1xuICAgICAgICAgICAgICAgICAgICBuZXcgU2V0dGluZyhhY3Rpb24pXG4gICAgICAgICAgICAgICAgICAgICAgLnNldE5hbWUoXCJOb3RlIE5hbWVcIilcbiAgICAgICAgICAgICAgICAgICAgICAuc2V0RGVzYyhcIldoYXQgc2hvdWxkIHRoZSBuZXcgbm90ZSBiZSBuYW1lZD9cIilcbiAgICAgICAgICAgICAgICAgICAgICAuYWRkVGV4dCgodGV4dEVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RWwuc2V0UGxhY2Vob2xkZXIoXCJNeSBOZXcgTm90ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTZXR0aW5nKGFjdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLnNldE5hbWUoXCJTcGxpdFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0RGVzYyhcIlNob3VsZCB0aGUgbmV3IG5vdGUgb3BlbiBpbiBhIHNwbGl0IHBhbmU/XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZUVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRPYmplY3QudHlwZSA9IGBub3RlKCR7dGV4dEVsLmdldFZhbHVlfSkgdGV4dGA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVsLm9uQ2hhbmdlKCh0ZXh0VmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGVWYWwgPSB0b2dnbGVFbC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvZ2dsZVZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gYG5vdGUoJHt0ZXh0VmFsfSwgc3BsaXQpIHRleHRgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0b2dnbGVWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRPYmplY3QudHlwZSA9IGBub3RlKCR7dGV4dFZhbH0pIHRleHRgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUVsLm9uQ2hhbmdlKCh0b2dnbGVWYWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRleHRWYWwgPSB0ZXh0RWwuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2dnbGVWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRPYmplY3QudHlwZSA9IGBub3RlKCR7dGV4dFZhbH0sIHNwbGl0KSB0ZXh0YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdG9nZ2xlVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnR5cGUgPSBgbm90ZSgke3RleHRWYWx9KSB0ZXh0YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0RWwpID0+IHtcbiAgICAgICAgICAgICAgICB0ZXh0RWwuc2V0UGxhY2Vob2xkZXIoXCJNeSBUZXh0IHRvIEluc2VydFwiKTtcbiAgICAgICAgICAgICAgICB0ZXh0RWwub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC5hY3Rpb24gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gXCJjYWxjdWxhdGVcIikge1xuICAgICAgICAgICAgYWN0aW9uLmVtcHR5KCk7XG4gICAgICAgICAgICBuZXcgU2V0dGluZyhhY3Rpb24pXG4gICAgICAgICAgICAgIC5zZXROYW1lKFwiQ2FsY3VsYXRlXCIpXG4gICAgICAgICAgICAgIC5zZXREZXNjKFxuICAgICAgICAgICAgICAgIFwiRW50ZXIgYSBjYWxjdWxhdGlvbiwgeW91IGNhbiByZWZlcmVuY2UgYSBsaW5lIG51bWJlciB3aXRoICRMaW5lTnVtYmVyXCJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuYWRkVGV4dCgodGV4dEVsKSA9PiB7XG4gICAgICAgICAgICAgICAgdGV4dEVsLnNldFBsYWNlaG9sZGVyKFwiMiskMTBcIik7XG4gICAgICAgICAgICAgICAgdGV4dEVsLm9uQ2hhbmdlKCh2YWx1ZSkgPT4gKHRoaXMub3V0cHV0T2JqZWN0LmFjdGlvbiA9IHZhbHVlKSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsdWUgPT09IFwic3dhcFwiKSB7XG4gICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gXCJcIjtcbiAgICAgICAgICAgIGFjdGlvbi5lbXB0eSgpO1xuICAgICAgICAgICAgbmV3IFNldHRpbmcoYWN0aW9uKVxuICAgICAgICAgICAgICAuc2V0TmFtZShcIlN3YXBcIilcbiAgICAgICAgICAgICAgLnNldERlc2MoXG4gICAgICAgICAgICAgICAgXCJjaG9vc2UgYnV0dG9ucyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgSW5saW5lIFN3YXAgQnV0dG9uXCJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAuYWRkVGV4dCgodGV4dEVsKSA9PiB7XG4gICAgICAgICAgICAgICAgdGV4dEVsLmlucHV0RWwucmVwbGFjZVdpdGgodGhpcy5zd2FwU3VnZ2VzdEVsKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgbmV3IFNldHRpbmcoZm9ybUVsKVxuICAgICAgICAuc2V0TmFtZShcIkJ1dHRvbiBCbG9jayBJRFwiKVxuICAgICAgICAuc2V0RGVzYyhcIlByb3ZpZGUgYSBjdXN0b20gYnV0dG9uLWJsb2NrLWlkXCIpXG4gICAgICAgIC5hZGRUZXh0KCh0ZXh0RWwpID0+IHtcbiAgICAgICAgICB0ZXh0RWwuc2V0UGxhY2Vob2xkZXIoXCJidXR0b25JZFwiKTtcbiAgICAgICAgICB0ZXh0RWwub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC5ibG9ja0lkID0gdmFsdWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgbmV3IFNldHRpbmcoZm9ybUVsKVxuICAgICAgICAuc2V0TmFtZShcIlJlbW92ZVwiKVxuICAgICAgICAuc2V0RGVzYyhcbiAgICAgICAgICBcIldvdWxkIHlvdSBsaWtlIHRvIHJlbW92ZSB0aGlzIGJ1dHRvbiAob3Igb3RoZXIgYnV0dG9ucykgYWZ0ZXIgY2xpY2tpbmc/XCJcbiAgICAgICAgKVxuICAgICAgICAuYWRkVG9nZ2xlKCh0b2dnbGVFbCkgPT4ge1xuICAgICAgICAgIHRvZ2dsZUVsLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgIG5ldyBTZXR0aW5nKHJlbW92ZSlcbiAgICAgICAgICAgICAgICAuc2V0TmFtZShcIlNlbGVjdCBSZW1vdmVcIilcbiAgICAgICAgICAgICAgICAuc2V0RGVzYyhcbiAgICAgICAgICAgICAgICAgIFwiVXNlIHRydWUgdG8gcmVtb3ZlIHRoaXMgYnV0dG9uLCBvciBzdXBwbHkgYW4gW2FycmF5XSBvZiBidXR0b24gYmxvY2staWRzXCJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmFkZFRleHQoKHRleHRFbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGV4dEVsLmlucHV0RWwucmVwbGFjZVdpdGgodGhpcy5yZW1vdmVTdWdnZXN0RWwpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC5yZW1vdmUgPSBcIlwiO1xuICAgICAgICAgICAgICByZW1vdmUuZW1wdHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICBjb25zdCByZW1vdmUgPSBmb3JtRWwuY3JlYXRlRWwoXCJkaXZcIik7XG4gICAgICBuZXcgU2V0dGluZyhmb3JtRWwpXG4gICAgICAgIC5zZXROYW1lKFwiUmVwbGFjZVwiKVxuICAgICAgICAuc2V0RGVzYyhcIldvdWxkIHlvdSBsaWtlIHRvIHJlcGxhY2UgbGluZXMgaW4gdGhlIG5vdGUgYWZ0ZXIgY2xpY2tpbmc/XCIpXG4gICAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZUVsKSA9PiB7XG4gICAgICAgICAgdG9nZ2xlRWwub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgbmV3IFNldHRpbmcocmVwbGFjZSlcbiAgICAgICAgICAgICAgICAuc2V0TmFtZShcIlNlbGVjdCBMaW5lc1wiKVxuICAgICAgICAgICAgICAgIC5zZXREZXNjKFxuICAgICAgICAgICAgICAgICAgXCJTdXBwbHkgYW4gYXJyYXkgb2YgW3N0YXJ0aW5nTGluZSwgZW5kaW5nTGluZV0gdG8gYmUgcmVwbGFjZWRcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYWRkVGV4dCgodGV4dEVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0ZXh0RWwuc2V0VmFsdWUoXCJbXVwiKTtcbiAgICAgICAgICAgICAgICAgIHRleHRFbC5vbkNoYW5nZShcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlKSA9PiAodGhpcy5vdXRwdXRPYmplY3QucmVwbGFjZSA9IHZhbHVlKVxuICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgcmVwbGFjZS5lbXB0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIGNvbnN0IHJlcGxhY2UgPSBmb3JtRWwuY3JlYXRlRWwoXCJkaXZcIik7XG4gICAgICBuZXcgU2V0dGluZyhmb3JtRWwpXG4gICAgICAgIC5zZXROYW1lKFwiSW5oZXJpdFwiKVxuICAgICAgICAuc2V0RGVzYyhcbiAgICAgICAgICBcIldvdWxkIHlvdSBsaWtlIHRvIGluaGVyaXQgYXJncyBieSBhZGRpbmcgYW4gZXhpc3RpbmcgYnV0dG9uIGJsb2NrLWlkP1wiXG4gICAgICAgIClcbiAgICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlRWwpID0+IHtcbiAgICAgICAgICB0b2dnbGVFbC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICBuZXcgU2V0dGluZyhpZClcbiAgICAgICAgICAgICAgICAuc2V0TmFtZShcImlkXCIpXG4gICAgICAgICAgICAgICAgLnNldERlc2MoXG4gICAgICAgICAgICAgICAgICBcImluaGVyaXQgZnJvbSBvdGhlciBCdXR0b25zIGJ5IGFkZGluZyB0aGVpciBidXR0b24gYmxvY2staWRcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYWRkVGV4dCgodGV4dEVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0ZXh0RWwuaW5wdXRFbC5yZXBsYWNlV2l0aCh0aGlzLmlkU3VnZ2VzdEVsKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5vdXRwdXRPYmplY3QucmVwbGFjZSA9IFwiXCI7XG4gICAgICAgICAgICAgIGlkLmVtcHR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgY29uc3QgaWQgPSBmb3JtRWwuY3JlYXRlRWwoXCJkaXZcIik7XG4gICAgICBuZXcgU2V0dGluZyhmb3JtRWwpXG4gICAgICAgIC5zZXROYW1lKFwiVGVtcGxhdGVyXCIpXG4gICAgICAgIC5zZXREZXNjKFxuICAgICAgICAgIFwiRG8geW91IHdhbnQgdG8gY29udmVydCBhIHRlbXBsYXRlciBjb21tYW5kIGluc2lkZSB5b3VyIEJ1dHRvbiBvbiBlYWNoIGNsaWNrP1wiXG4gICAgICAgIClcbiAgICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlRWwpID0+IHtcbiAgICAgICAgICB0b2dnbGVFbC5zZXRUb29sdGlwKFwiRG8gbm90IHVzZSBmb3IgaW5saW5lIEJ1dHRvblwiKTtcbiAgICAgICAgICB0b2dnbGVFbC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnRlbXBsYXRlciA9IHZhbHVlO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIG5ldyBTZXR0aW5nKGZvcm1FbClcbiAgICAgICAgLnNldE5hbWUoXCJDdXN0b20gQ2xhc3NcIilcbiAgICAgICAgLnNldERlc2MoXCJBZGQgYSBjdXN0b20gY2xhc3MgZm9yIGJ1dHRvbiBzdHlsaW5nXCIpXG4gICAgICAgIC5hZGRUZXh0KCh0ZXh0RWwpID0+IHtcbiAgICAgICAgICB0ZXh0RWwub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmJ1dHRvblByZXZpZXdFbC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCB2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC5jbGFzcyA9IHZhbHVlO1xuICAgICAgICAgICAgaWYgKHZhbHVlID09PSBcIlwiKSB7XG4gICAgICAgICAgICAgIHRoaXMuYnV0dG9uUHJldmlld0VsLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIFwiYnV0dG9uLWRlZmF1bHRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgbmV3IFNldHRpbmcoZm9ybUVsKVxuICAgICAgICAuc2V0TmFtZShcIkNvbG9yXCIpXG4gICAgICAgIC5zZXREZXNjKFwiV2hhdCBjb2xvciB3b3VsZCB5b3UgbGlrZSB5b3VyIGJ1dHRvbiB0byBiZT9cIilcbiAgICAgICAgLmFkZERyb3Bkb3duKChkcm9wKSA9PiB7XG4gICAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJkZWZhdWx0XCIsIFwiRGVmYXVsdCBDb2xvclwiKTtcbiAgICAgICAgICBkcm9wLmFkZE9wdGlvbihcImJsdWVcIiwgXCJCbHVlXCIpO1xuICAgICAgICAgIGRyb3AuYWRkT3B0aW9uKFwicmVkXCIsIFwiUmVkXCIpO1xuICAgICAgICAgIGRyb3AuYWRkT3B0aW9uKFwiZ3JlZW5cIiwgXCJHcmVlblwiKTtcbiAgICAgICAgICBkcm9wLmFkZE9wdGlvbihcInllbGxvd1wiLCBcIlllbGxvd1wiKTtcbiAgICAgICAgICBkcm9wLmFkZE9wdGlvbihcInB1cnBsZVwiLCBcIlB1cnBsZVwiKTtcbiAgICAgICAgICBkcm9wLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vdXRwdXRPYmplY3QuY29sb3IgPSB2YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGJ1dHRvbkNsYXNzID0gdGhpcy5idXR0b25QcmV2aWV3RWxcbiAgICAgICAgICAgICAgLmdldEF0dHJpYnV0ZShcImNsYXNzXCIpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKFwiIGJsdWVcIiwgXCJcIilcbiAgICAgICAgICAgICAgLnJlcGxhY2UoXCIgcmVkXCIsIFwiXCIpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKFwiIGdyZWVuXCIsIFwiXCIpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKFwiIHllbGxvd1wiLCBcIlwiKVxuICAgICAgICAgICAgICAucmVwbGFjZShcIiBwdXJwbGVcIiwgXCJcIik7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IFwiZGVmYXVsdFwiKSB7XG4gICAgICAgICAgICAgIHRoaXMuYnV0dG9uUHJldmlld0VsLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICBcImNsYXNzXCIsXG4gICAgICAgICAgICAgICAgYCR7YnV0dG9uQ2xhc3N9ICR7dmFsdWV9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IFwiYmx1ZVwiKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSBcIiM3NmIzZmFcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IFwicHVycGxlXCIpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IFwiIzcyNTU4NVwiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMuYnV0dG9uUHJldmlld0VsLnNldEF0dHJpYnV0ZShcbiAgICAgICAgICAgICAgICBcInN0eWxlXCIsXG4gICAgICAgICAgICAgICAgYGJhY2tncm91bmQ6ICR7dmFsdWV9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5idXR0b25QcmV2aWV3RWwuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgYCR7YnV0dG9uQ2xhc3N9YCk7XG4gICAgICAgICAgICAgIHRoaXMuYnV0dG9uUHJldmlld0VsLnJlbW92ZUF0dHJpYnV0ZShcInN0eWxlXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIGZvcm1FbC5jcmVhdGVEaXYoXCJtb2RhbC1idXR0b24tY29udGFpbmVyXCIsIChidXR0b25Db250YWluZXJFbCkgPT4ge1xuICAgICAgICBidXR0b25Db250YWluZXJFbFxuICAgICAgICAgIC5jcmVhdGVFbChcImJ1dHRvblwiLCB7XG4gICAgICAgICAgICBhdHRyOiB7IHR5cGU6IFwiYnV0dG9uXCIgfSxcbiAgICAgICAgICAgIGNsczogXCJidXR0b24tZGVmYXVsdFwiLFxuICAgICAgICAgICAgdGV4dDogXCJDYW5jZWxcIixcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgKCkgPT4gdGhpcy5jbG9zZSgpKTtcbiAgICAgICAgYnV0dG9uQ29udGFpbmVyRWwuY3JlYXRlRWwoXCJidXR0b25cIiwge1xuICAgICAgICAgIGF0dHI6IHsgdHlwZTogXCJzdWJtaXRcIiB9LFxuICAgICAgICAgIGNsczogXCJidXR0b24tZGVmYXVsdCBtb2QtY3RhXCIsXG4gICAgICAgICAgdGV4dDogXCJJbnNlcnQgQnV0dG9uXCIsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGZvcm1FbC5hZGRFdmVudExpc3RlbmVyKFwic3VibWl0XCIsIChlOiBFdmVudCkgPT4ge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGluc2VydEJ1dHRvbih0aGlzLmFwcCwgdGhpcy5vdXRwdXRPYmplY3QpO1xuICAgICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBjb250ZW50RWwuY3JlYXRlRWwoXCJwXCIpLnNldFRleHQoXCJCdXR0b24gUHJldmlld1wiKTtcbiAgICB0aGlzLmJ1dHRvblByZXZpZXdFbCA9IGNyZWF0ZUJ1dHRvbih7XG4gICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgZWw6IGNvbnRlbnRFbCxcbiAgICAgIGFyZ3M6IHsgbmFtZTogXCJNeSBBd2Vzb21lIEJ1dHRvblwiIH0sXG4gICAgfSk7XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbmxpbmVCdXR0b25Nb2RhbCBleHRlbmRzIE1vZGFsIHtcbiAgYnV0dG9uU3VnZ2VzdEVsOiBIVE1MSW5wdXRFbGVtZW50ID0gY3JlYXRlRWwoXCJpbnB1dFwiLCB7IHR5cGU6IFwidGV4dFwiIH0pO1xuICBidXR0b25TdWdnZXN0O1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwKSB7XG4gICAgc3VwZXIoYXBwKTtcbiAgICB0aGlzLmJ1dHRvblN1Z2dlc3QgPSBuZXcgQnV0dG9uU3VnZ2VzdCh0aGlzLmFwcCwgdGhpcy5idXR0b25TdWdnZXN0RWwpO1xuICAgIHRoaXMuYnV0dG9uU3VnZ2VzdEVsLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsIFwid2lkdGg6IDEwMCU7IGhlaWdodDogNDBweFwiKTtcbiAgfVxuXG4gIG9uT3BlbigpIHtcbiAgICBjb25zdCB7IHRpdGxlRWwsIGNvbnRlbnRFbCB9ID0gdGhpcztcbiAgICB0aXRsZUVsLnNldFRleHQoXCJJbnNlcnQgSW5saW5lIEJ1dHRvblwiKTtcbiAgICBjb250ZW50RWwuY3JlYXRlRWwoXCJmb3JtXCIsIHt9LCAoZm9ybUVsKSA9PiB7XG4gICAgICBmb3JtRWwuYXBwZW5kQ2hpbGQodGhpcy5idXR0b25TdWdnZXN0RWwpO1xuICAgICAgZm9ybUVsLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaW5zZXJ0SW5saW5lQnV0dG9uKHRoaXMuYXBwLCB0aGlzLmJ1dHRvblN1Z2dlc3RFbC52YWx1ZSk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgb25DbG9zZSgpIHtcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcbiAgICBjb250ZW50RWwuZW1wdHkoKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgQXBwLFxuICBQbHVnaW4sXG4gIEV2ZW50UmVmLFxuICBFdmVudHMsXG4gIE1hcmtkb3duVmlldyxcbiAgTWFya2Rvd25SZW5kZXJDaGlsZCxcbn0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBjcmVhdGVBcmd1bWVudE9iamVjdCB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQge1xuICBpbml0aWFsaXplQnV0dG9uU3RvcmUsXG4gIGFkZEJ1dHRvblRvU3RvcmUsXG4gIGdldEJ1dHRvbkZyb21TdG9yZSxcbiAgZ2V0QnV0dG9uQnlJZCxcbiAgZ2V0U3RvcmUsXG59IGZyb20gXCIuL2J1dHRvblN0b3JlXCI7XG5pbXBvcnQgeyBidXR0b25FdmVudExpc3RlbmVyLCBvcGVuRmlsZUxpc3RlbmVyIH0gZnJvbSBcIi4vZXZlbnRzXCI7XG5pbXBvcnQgeyBBcmd1bWVudHMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgQnV0dG9uTW9kYWwsIElubGluZUJ1dHRvbk1vZGFsIH0gZnJvbSBcIi4vbW9kYWxcIjtcbmltcG9ydCB7IGNyZWF0ZUJ1dHRvbiwgQnV0dG9uIH0gZnJvbSBcIi4vYnV0dG9uXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1dHRvbnNQbHVnaW4gZXh0ZW5kcyBQbHVnaW4ge1xuICBwcml2YXRlIGJ1dHRvbkV2ZW50czogRXZlbnRSZWY7XG4gIHByaXZhdGUgY2xvc2VkRmlsZTogRXZlbnRSZWY7XG4gIHByaXZhdGUgYnV0dG9uRWRpdDogRXZlbnRSZWY7XG4gIHByaXZhdGUgY3JlYXRlQnV0dG9uOiBCdXR0b247XG4gIHByaXZhdGUgc3RvcmVFdmVudHMgPSBuZXcgRXZlbnRzKCk7XG4gIHByaXZhdGUgaW5kZXhDb3VudCA9IDA7XG4gIHByaXZhdGUgc3RvcmVFdmVudHNSZWY6IEV2ZW50UmVmXG5cbiAgcHJpdmF0ZSBhc3luYyBhZGRCdXR0b25JbkVkaXQoYXBwOiBBcHApIHtcbiAgICBsZXQgd2lkZ2V0OiBDb2RlTWlycm9yLkxpbmVXaWRnZXQ7XG4gICAgaWYgKHdpZGdldCkge1xuICAgICAgd2lkZ2V0LmNsZWFyKCk7XG4gICAgfVxuICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSBhcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcbiAgICBpZiAoYWN0aXZlVmlldykge1xuICAgICAgY29uc3Qgc3RvcmUgPSBnZXRTdG9yZShhcHAuaXNNb2JpbGUpO1xuICAgICAgY29uc3QgYnV0dG9uc0luRmlsZSA9IHN0b3JlLmZpbHRlcihcbiAgICAgICAgKGJ1dHRvbikgPT4gYnV0dG9uLnBhdGggPT09IGFjdGl2ZVZpZXcuZmlsZS5wYXRoXG4gICAgICApO1xuICAgICAgdGhpcy5yZWdpc3RlckNvZGVNaXJyb3IoKGNtOiBDb2RlTWlycm9yLkVkaXRvcikgPT4ge1xuICAgICAgICBidXR0b25zSW5GaWxlLmZvckVhY2goYXN5bmMgKGJ1dHRvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHdpZGdldEVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICBjb25zdCBzdG9yZUJ1dHRvbiA9IGF3YWl0IGdldEJ1dHRvbkZyb21TdG9yZShhcHAsIHtcbiAgICAgICAgICAgIGlkOiBidXR0b24uaWQuc3BsaXQoXCItXCIpWzFdLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFhcHAuaXNNb2JpbGUgJiZcbiAgICAgICAgICAgIHN0b3JlQnV0dG9uICYmXG4gICAgICAgICAgICBzdG9yZUJ1dHRvbj8uYXJncy5lZGl0dmlldyA9PT0gXCJ0cnVlXCJcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdpZGdldCA9IGNtLmFkZExpbmVXaWRnZXQoXG4gICAgICAgICAgICAgIGJ1dHRvbi5wb3NpdGlvbi5lbmQubGluZSArIDEsXG4gICAgICAgICAgICAgIGNyZWF0ZUJ1dHRvbih7XG4gICAgICAgICAgICAgICAgYXBwLFxuICAgICAgICAgICAgICAgIGVsOiB3aWRnZXRFbCxcbiAgICAgICAgICAgICAgICBhcmdzOiBzdG9yZUJ1dHRvbi5hcmdzLFxuICAgICAgICAgICAgICAgIGlubGluZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgaWQ6IGJ1dHRvbi5pZCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBhc3luYyBvbmxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdGhpcy5idXR0b25FdmVudHMgPSBidXR0b25FdmVudExpc3RlbmVyKHRoaXMuYXBwLCBhZGRCdXR0b25Ub1N0b3JlKTtcbiAgICB0aGlzLmNsb3NlZEZpbGUgPSBvcGVuRmlsZUxpc3RlbmVyKHRoaXMuYXBwLCB0aGlzLnN0b3JlRXZlbnRzLCBpbml0aWFsaXplQnV0dG9uU3RvcmUpO1xuICAgIHRoaXMuY3JlYXRlQnV0dG9uID0gY3JlYXRlQnV0dG9uIGFzIEJ1dHRvbjtcbiAgICB0aGlzLnN0b3JlRXZlbnRzUmVmID0gdGhpcy5zdG9yZUV2ZW50cy5vbignaW5kZXgtY29tcGxldGUnLCAoKSA9PiB7IFxuICAgICAgdGhpcy5pbmRleENvdW50Kys7XG4gICAgfSlcbiAgICAgICAgaW5pdGlhbGl6ZUJ1dHRvblN0b3JlKHRoaXMuYXBwLCB0aGlzLnN0b3JlRXZlbnRzKTtcblxuICAgIHRoaXMuYnV0dG9uRWRpdCA9IG9wZW5GaWxlTGlzdGVuZXIoXG4gICAgICB0aGlzLmFwcCxcbiAgICAgIHRoaXMuc3RvcmVFdmVudHMsXG4gICAgICB0aGlzLmFkZEJ1dHRvbkluRWRpdC5iaW5kKHRoaXMpXG4gICAgKTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJidXR0b24tbWFrZXJcIixcbiAgICAgIG5hbWU6IFwiQnV0dG9uIE1ha2VyXCIsXG4gICAgICBjYWxsYmFjazogKCkgPT4gbmV3IEJ1dHRvbk1vZGFsKHRoaXMuYXBwKS5vcGVuKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiaW5saW5lLWJ1dHRvblwiLFxuICAgICAgbmFtZTogXCJJbnNlcnQgSW5saW5lIEJ1dHRvblwiLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IG5ldyBJbmxpbmVCdXR0b25Nb2RhbCh0aGlzLmFwcCkub3BlbigpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yZWdpc3Rlck1hcmtkb3duQ29kZUJsb2NrUHJvY2Vzc29yKFwiYnV0dG9uXCIsIGFzeW5jIChzb3VyY2UsIGVsKSA9PiB7XG4gICAgICAvLyBjcmVhdGUgYW4gb2JqZWN0IG91dCBvZiB0aGUgYXJndW1lbnRzXG4gICAgICBjb25zdCBhY3RpdmVWaWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcbiAgICAgIGlmIChhY3RpdmVWaWV3KSB7XG4gICAgICAgIGFkZEJ1dHRvblRvU3RvcmUodGhpcy5hcHAsIGFjdGl2ZVZpZXcuZmlsZSk7XG4gICAgICAgIGxldCBhcmdzID0gY3JlYXRlQXJndW1lbnRPYmplY3Qoc291cmNlKTtcbiAgICAgICAgY29uc3Qgc3RvcmVBcmdzID0gYXdhaXQgZ2V0QnV0dG9uRnJvbVN0b3JlKHRoaXMuYXBwLCBhcmdzKTtcbiAgICAgICAgYXJncyA9IHN0b3JlQXJncyA/IHN0b3JlQXJncy5hcmdzIDogYXJncztcbiAgICAgICAgY29uc3QgaWQgPSBzdG9yZUFyZ3MgJiYgc3RvcmVBcmdzLmlkO1xuICAgICAgICBjcmVhdGVCdXR0b24oeyBhcHA6IHRoaXMuYXBwLCBlbCwgYXJncywgaW5saW5lOiBmYWxzZSwgaWQgfSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyTWFya2Rvd25Qb3N0UHJvY2Vzc29yKGFzeW5jIChlbCwgY3R4KSA9PiB7XG4gICAgICAvLyBTZWFyY2ggZm9yIDxjb2RlPiBibG9ja3MgaW5zaWRlIHRoaXMgZWxlbWVudDsgZm9yIGVhY2ggb25lLCBsb29rIGZvciB0aGluZ3Mgb2YgdGhlIGZvcm0gYFxuICAgICAgY29uc3QgY29kZWJsb2NrcyA9IGVsLnF1ZXJ5U2VsZWN0b3JBbGwoXCJjb2RlXCIpO1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGNvZGVibG9ja3MubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGNvZGVibG9jayA9IGNvZGVibG9ja3MuaXRlbShpbmRleCk7XG4gICAgICAgIGNvbnN0IHRleHQgPSBjb2RlYmxvY2suaW5uZXJUZXh0LnRyaW0oKTtcbiAgICAgICAgaWYgKHRleHQuc3RhcnRzV2l0aChcImJ1dHRvblwiKSkge1xuICAgICAgICAgIGNvbnN0IGlkID0gdGV4dC5zcGxpdChcImJ1dHRvbi1cIilbMV0udHJpbSgpO1xuICAgICAgICAgIGlmICh0aGlzLmluZGV4Q291bnQgPCAyKSB7XG4gICAgICAgICAgdGhpcy5zdG9yZUV2ZW50c1JlZiA9IHRoaXMuc3RvcmVFdmVudHMub24oJ2luZGV4LWNvbXBsZXRlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW5kZXhDb3VudCsrO1xuICAgICAgICAgIGNvbnN0IGFyZ3MgPSBhd2FpdCBnZXRCdXR0b25CeUlkKHRoaXMuYXBwLCBpZCk7XG4gICAgICAgICAgaWYgKGFyZ3MpIHtcbiAgICAgICAgICAgIGN0eC5hZGRDaGlsZChuZXcgSW5saW5lQnV0dG9uKGNvZGVibG9jaywgdGhpcy5hcHAsIGFyZ3MsIGlkKSlcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG5cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBhd2FpdCBnZXRCdXR0b25CeUlkKHRoaXMuYXBwLCBpZCk7XG4gICAgICAgIGlmIChhcmdzKSB7XG4gICAgICAgICAgY3R4LmFkZENoaWxkKG5ldyBJbmxpbmVCdXR0b24oY29kZWJsb2NrLCB0aGlzLmFwcCwgYXJncywgaWQpKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICBvbnVubG9hZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLm9mZnJlZih0aGlzLmJ1dHRvbkV2ZW50cyk7XG4gICAgdGhpcy5hcHAud29ya3NwYWNlLm9mZnJlZih0aGlzLmNsb3NlZEZpbGUpO1xuICAgIHRoaXMuYXBwLndvcmtzcGFjZS5vZmZyZWYodGhpcy5idXR0b25FZGl0KTtcbiAgICB0aGlzLnN0b3JlRXZlbnRzLm9mZnJlZih0aGlzLnN0b3JlRXZlbnRzUmVmKTtcbiAgfVxufVxuXG5jbGFzcyBJbmxpbmVCdXR0b24gZXh0ZW5kcyBNYXJrZG93blJlbmRlckNoaWxkIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsOiBIVE1MRWxlbWVudCxcbiAgICBwdWJsaWMgYXBwOiBBcHAsXG4gICAgcHVibGljIGFyZ3M6IEFyZ3VtZW50cyxcbiAgICBwdWJsaWMgaWQ6IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihlbCk7XG4gIH1cbiAgYXN5bmMgb25sb2FkKCkge1xuICAgIGNvbnN0IGJ1dHRvbiA9IGNyZWF0ZUJ1dHRvbih7XG4gICAgICBhcHA6IHRoaXMuYXBwLFxuICAgICAgZWw6IHRoaXMuZWwsXG4gICAgICBhcmdzOiB0aGlzLmFyZ3MsXG4gICAgICBpbmxpbmU6IHRydWUsXG4gICAgICBpZDogdGhpcy5pZCxcbiAgICB9KTtcbiAgICB0aGlzLmVsLnJlcGxhY2VXaXRoKGJ1dHRvbik7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJNYXJrZG93blZpZXciLCJOb3RpY2UiLCJNZXhwIiwibWV4cCIsImVmZmVjdCIsInJvdW5kIiwibWluIiwibWF4IiwibWF0aE1heCIsIm1hdGhNaW4iLCJoYXNoIiwiYWxsUGxhY2VtZW50cyIsInBsYWNlbWVudHMiLCJwb3BwZXJPZmZzZXRzIiwiY29tcHV0ZVN0eWxlcyIsImFwcGx5U3R5bGVzIiwib2Zmc2V0IiwiZmxpcCIsInByZXZlbnRPdmVyZmxvdyIsImFycm93IiwiaGlkZSIsIlNjb3BlIiwiVEZpbGUiLCJNb2RhbCIsIlNldHRpbmciLCJQbHVnaW4iLCJFdmVudHMiLCJNYXJrZG93blJlbmRlckNoaWxkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFJQSxJQUFJLFdBQWlDLENBQUM7QUFFL0IsTUFBTSxRQUFRLEdBQUcsQ0FBQyxRQUFpQixLQUN4QyxRQUFRLEdBQUcsV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0FBRWhFLE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxHQUFRLEVBQUUsV0FBbUI7SUFDakUsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzNDLE1BQU0sU0FBUyxHQUFHLEtBQUs7U0FDcEIsR0FBRyxDQUFDLENBQUMsSUFBSTtRQUNSLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3RDLENBQUM7U0FDRCxNQUFNLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxLQUFLLFNBQVMsQ0FBQztTQUNsQyxJQUFJLEVBQUUsQ0FBQztJQUNWLFlBQVksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUMzRCxXQUFXLEdBQUcsU0FBUyxDQUFDO0lBQ3hCLFdBQVcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtBQUN2QyxDQUFDLENBQUM7QUFFSyxNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBUSxFQUFFLElBQVc7SUFDcEQsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkQsTUFBTSxPQUFPLEdBQUcsZ0JBQWdC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QSxJQUFJLENBQUMsSUFBSSxHQUFHO0FBQ1osRUFBRSxRQUFRLEVBQUUsSUFBSTtBQUNoQixFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRTtBQUNyQixJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFLEdBQUc7QUFDSCxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDdkIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRTtBQUNyQixJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFLEdBQUc7QUFDSCxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRTtBQUNyQixJQUFJLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdFLEdBQUc7QUFDSCxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRTtBQUN0QixJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdDLEdBQUc7QUFDSCxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsRUFBRTtBQUN0QixJ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LEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLE1BQU07QUFDUixFQUFFLE9BQU87QUFDVCxFQUFFLEtBQUs7QUFDUCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLE1BQU07QUFDUixFQUFFLE9BQU87QUFDVCxFQUFFLEdBQUc7QUFDTCxFQUFFLEtBQUs7QUFDUCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLE9BQU87QUFDVCxFQUFFLEdBQUc7QUFDTCxFQUFFLElBQUk7QUFDTixFQUFFLEtBQUs7QUFDUCxFQUFDO0FBQ0QsSUFBSSxJQUFJLEdBQUc7QUFDWCxFQUFFLEtBQUs7QUFDUCxFQUFFLEtBQUs7QUFDUCxFQUFFLEtBQUs7QUFDUCxFQUFFLE1BQU07QUFDUixFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLE1BQU07QUFDUixFQUFFLE1BQU07QUFDUixFQUFFLE1BQU07QUFDUixFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEtBQUs7QUFDUCxFQUFFLE1BQU07QUFDUixFQUFFLE9BQU87QUFDVCxFQUFFLEtBQUs7QUFDUCxFQUFFLEdBQUc7QUFDTCxFQUFFLE1BQU07QUFDUixFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLFVBQVU7QUFDWixFQUFFLEdBQUc7QUFDTCxFQUFFLE1BQU07QUFDUixFQUFFLE9BQU87QUFDVCxFQUFFLE9BQU87QUFDVCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLEdBQUc7QUFDTCxFQUFFLFNBQVM7QUFDWCxFQUFFLE1BQU07QUFDUixFQUFF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QUFDUixFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ1AsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1IsRUFBQztBQUNELElBQUksSUFBSSxHQUFHO0FBQ1gsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ2pHLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2pELEVBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksS0FBSyxHQUFHO0FBQ1osRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsRUFBRSxFQUFFLElBQUk7QUFDVixFQUFFLEVBQUUsRUFBRSxJQUFJO0FBQ1YsRUFBRSxFQUFFLEVBQUUsSUFBSTtBQUNWLEVBQUM7QUFDRCxJQUFJLEtBQUssR0FBRztBQUNaLEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLEVBQUUsRUFBRSxJQUFJO0FBQ1YsRUFBRSxFQUFFLEVBQUUsSUFBSTtBQUNWLEVBQUUsRUFBRSxFQUFFLElBQUk7QUFDVixFQUFFLEVBQUUsRUFBRSxJQUFJO0FBQ1YsRUFBQztBQUNELElBQUksYUFBYSxHQUFHO0FBQ3BCLEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLEVBQUUsRUFBRSxJQUFJO0FBQ1YsRUFBRSxFQUFFLEVBQUUsSUFBSTtBQUNWLEVBQUM7QUFDRCxJQUFJLEtBQUssR0FBRyxHQUFFO0FBQ2QsSUFBSSxhQUFhLEdBQUc7QUFDcEIsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxDQUFDLEVBQUUsSUFBSTtBQUNULEVBQUUsQ0FBQyxFQUFFLElBQUk7QUFDVCxFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBRSxFQUFFLEVBQUUsSUFBSTtBQUNWLEVBQUUsRUFBRSxFQUFFLElBQUk7QUFDVixFQUFDO0FBQ0QsSUFBSSxLQUFLLEdBQUc7QUFDWixFQUFFLENBQUMsRUFBRSxJQUFJO0FBQ1QsRUFBQztBQUNELElBQUksS0FBSyxHQUFHO0FBQ1osRUFBRSxFQUFFO0FBQ0osRUFBRTtBQUNGLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLElBQUksR0FBRztBQUNQLEdBQUc7QUFDSCxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7QUFDcEIsRUFBRSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDMUQsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQztBQUMxRCxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDO0FBQ3RDLEVBQUM7QUFDRDtBQUNBLFNBQVMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNsQyxFQUFFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDOUIsSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLEdBQUcs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QyxTQUFTLENBQUMsU0FBUyxHQUFHLFlBQVk7QUFFdkMsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUM3QyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0MsQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3RCLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdEMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO0FBQ3BFLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDeEIsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLEdBQUc7QUFDSCxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDOUIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLEdBQUc7QUFDSCxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElB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QUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDckIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0MsR0FBRztBQUNILE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUMxQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxHQUFHO0FBQ0gsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLEdBQUcsR0FBRyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7QUFDdEQsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLElBQUk7QUFDSixRQUFRLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzlFLEdBQUc7QUFDSCxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDMUIsR0FBRyxHQUFHLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztBQUN0RCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0MsSUFBSTtBQUNKLFFBQVEsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUUsR0FBRztBQUNILE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUMxQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDcEIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLEdBQUc7QUFDSCxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7QUFDM0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQixHQUFHLEdBQUcsT0FBTyxJQUFJLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztBQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQixJQUFJO0FBQ0osUUFBUSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLEVBQUU7QUFDNUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckIsSUFBSTtBQUNKLFFBQU87QUFDUCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxhQUFhO0FBQ2IsR0FBRztBQUNILE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUMzQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDcEIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLEdBQUcsR0FBRyxPQUFPLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO0FBQ3JDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDM0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQixJQUFJO0FBQ0osUUFBUSxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLEVBQUU7QUFDNUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckIsSUFBSTtBQUNKLFFBQU87QUFDUCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuRSxJQUFJO0FBQ0osR0FBRztBQUNILE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUMzQixHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDcEIsR0FBRyxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLEVBQUU7QUFDdkMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQixJQUFJO0FBQ0osR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNwQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJ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QUMsQ0FBQyxDQUFDO0FBQ3RFLEdBQUc7QUFDSCxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7QUFDM0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsR0FBRztBQUNILE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUMxQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hJLEdBQUc7QUFDSCxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDMUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEosR0FBRztBQUNILE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUMzQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDbkIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25CLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxSSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNySCxHQUFHO0FBQ0gsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDbkIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDakssR0FBRztBQUNILE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUMzQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDbkIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25CLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEtB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsic3JjL2J1dHRvblN0b3JlLnRzIiwic3JjL3V0aWxzLnRzIiwic3JjL2V2ZW50cy50cyIsIm5vZGVfbW9kdWxlcy9tYXRoLWV4cHJlc3Npb24tZXZhbHVhdG9yL3NyYy9tYXRoX2Z1bmN0aW9uLmpzIiwibm9kZV9tb2R1bGVzL21hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3Ivc3JjL2xleGVyLmpzIiwibm9kZV9tb2R1bGVzL21hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3Ivc3JjL3Bvc3RmaXguanMiLCJub2RlX21vZHVsZXMvbWF0aC1leHByZXNzaW9uLWV2YWx1YXRvci9zcmMvcG9zdGZpeF9ldmFsdWF0b3IuanMiLCJub2RlX21vZHVsZXMvbWF0aC1leHByZXNzaW9uLWV2YWx1YXRvci9zcmMvZm9ybXVsYV9ldmFsdWF0b3IuanMiLCJzcmMvaGFuZGxlcnMudHMiLCJzcmMvcGFyc2VyLnRzIiwic3JjL2J1dHRvblR5cGVzLnRzIiwic3JjL2J1dHRvbi50cyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZW51bXMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXROb2RlTmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2luc3RhbmNlT2YuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9hcHBseVN0eWxlcy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWF0aC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdXNlckFnZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNMYXlvdXRWaWV3cG9ydC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldExheW91dFJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pc1RhYmxlRWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50RWxlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFBhcmVudE5vZGUuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvd2l0aGluLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRGcmVzaFNpZGVPYmplY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvYXJyb3cuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldFZhcmlhdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9ldmVudExpc3RlbmVycy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVQbGFjZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsQmFyWC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFZpZXdwb3J0UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldERvY3VtZW50UmVjdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzU2Nyb2xsUGFyZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0U2Nyb2xsUGFyZW50LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2NvbXB1dGVPZmZzZXRzLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9kZXRlY3RPdmVyZmxvdy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9mbGlwLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvaGlkZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL29mZnNldC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3BvcHBlck9mZnNldHMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEFsdEF4aXMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wcmV2ZW50T3ZlcmZsb3cuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRIVE1MRWxlbWVudFNjcm9sbC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldE5vZGVTY3JvbGwuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9vcmRlck1vZGlmaWVycy5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGVib3VuY2UuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2Zvcm1hdC5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvdmFsaWRhdGVNb2RpZmllcnMuanMiLCJub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VuaXF1ZUJ5LmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZUJ5TmFtZS5qcyIsIm5vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvY3JlYXRlUG9wcGVyLmpzIiwibm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9wb3BwZXIuanMiLCJzcmMvc3VnZ2VzdC50cyIsInNyYy9tb2RhbC50cyIsInNyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHAsIFRGaWxlLCBDYWNoZWRNZXRhZGF0YSwgRXZlbnRzIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBFeHRlbmRlZEJsb2NrQ2FjaGUsIEFyZ3VtZW50cyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBjcmVhdGVBcmd1bWVudE9iamVjdCB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmxldCBidXR0b25TdG9yZTogRXh0ZW5kZWRCbG9ja0NhY2hlW107XG5cbmV4cG9ydCBjb25zdCBnZXRTdG9yZSA9IChpc01vYmlsZTogYm9vbGVhbik6IEV4dGVuZGVkQmxvY2tDYWNoZVtdID0+XG4gIGlzTW9iaWxlID8gYnV0dG9uU3RvcmUgOiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiYnV0dG9uc1wiKSk7XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsaXplQnV0dG9uU3RvcmUgPSAoYXBwOiBBcHAsIHN0b3JlRXZlbnRzOiBFdmVudHMpOiB2b2lkID0+IHtcbiAgY29uc3QgZmlsZXMgPSBhcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpO1xuICBjb25zdCBibG9ja3NBcnIgPSBmaWxlc1xuICAgIC5tYXAoKGZpbGUpID0+IHtcbiAgICAgIGNvbnN0IGNhY2hlID0gYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0RmlsZUNhY2hlKGZpbGUpO1xuICAgICAgcmV0dXJuIGJ1aWxkQnV0dG9uQXJyYXkoY2FjaGUsIGZpbGUpO1xuICAgIH0pXG4gICAgLmZpbHRlcigoYXJyKSA9PiBhcnIgIT09IHVuZGVmaW5lZClcbiAgICAuZmxhdCgpO1xuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImJ1dHRvbnNcIiwgSlNPTi5zdHJpbmdpZnkoYmxvY2tzQXJyKSk7XG4gIGJ1dHRvblN0b3JlID0gYmxvY2tzQXJyO1xuICBzdG9yZUV2ZW50cy50cmlnZ2VyKCdpbmRleC1jb21wbGV0ZScpXG59O1xuXG5leHBvcnQgY29uc3QgYWRkQnV0dG9uVG9TdG9yZSA9IChhcHA6IEFwcCwgZmlsZTogVEZpbGUpOiB2b2lkID0+IHtcbiAgY29uc3QgY2FjaGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gIGNvbnN0IGJ1dHRvbnMgPSBidWlsZEJ1dHRvbkFycmF5KGNhY2hlLCBmaWxlKTtcbiAgY29uc3Qgc3RvcmUgPSBnZXRTdG9yZShhcHAuaXNNb2JpbGUpO1xuICBjb25zdCBuZXdTdG9yZSA9XG4gICAgYnV0dG9ucyAmJiBzdG9yZVxuICAgICAgPyByZW1vdmVEdXBsaWNhdGVzKFsuLi5idXR0b25zLCAuLi5zdG9yZV0pXG4gICAgICA6IHN0b3JlXG4gICAgICA/IHJlbW92ZUR1cGxpY2F0ZXMoc3RvcmUpXG4gICAgICA6IGJ1dHRvbnNcbiAgICAgID8gcmVtb3ZlRHVwbGljYXRlcyhidXR0b25zKVxuICAgICAgOiBbXTtcbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJidXR0b25zXCIsIEpTT04uc3RyaW5naWZ5KG5ld1N0b3JlKSk7XG4gIGJ1dHRvblN0b3JlID0gbmV3U3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QnV0dG9uRnJvbVN0b3JlID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgYXJnczogQXJndW1lbnRzXG4pOiBQcm9taXNlPHsgYXJnczogQXJndW1lbnRzOyBpZDogc3RyaW5nIH0+IHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRTdG9yZShhcHAuaXNNb2JpbGUpO1xuICBhcmdzLmlkO1xuICBpZiAoYXJncy5pZCkge1xuICAgIGNvbnN0IHN0b3JlZEJ1dHRvbiA9XG4gICAgICBzdG9yZSAmJlxuICAgICAgc3RvcmUuZmlsdGVyKFxuICAgICAgICAoaXRlbTogRXh0ZW5kZWRCbG9ja0NhY2hlKSA9PiBgYnV0dG9uLSR7YXJncy5pZH1gID09PSBpdGVtLmlkXG4gICAgICApWzBdO1xuICAgIGlmIChzdG9yZWRCdXR0b24pIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHN0b3JlZEJ1dHRvbi5wYXRoKTtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQuY2FjaGVkUmVhZChmaWxlIGFzIFRGaWxlKTtcbiAgICAgIGNvbnN0IGNvbnRlbnRBcnJheSA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIik7XG4gICAgICBjb25zdCBidXR0b24gPSBjb250ZW50QXJyYXlcbiAgICAgICAgLnNsaWNlKFxuICAgICAgICAgIHN0b3JlZEJ1dHRvbi5wb3NpdGlvbi5zdGFydC5saW5lICsgMSxcbiAgICAgICAgICBzdG9yZWRCdXR0b24ucG9zaXRpb24uZW5kLmxpbmVcbiAgICAgICAgKVxuICAgICAgICAuam9pbihcIlxcblwiKTtcbiAgICAgIGNvbnN0IHN0b3JlZEFyZ3MgPSBjcmVhdGVBcmd1bWVudE9iamVjdChidXR0b24pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXJnczogeyAuLi5zdG9yZWRBcmdzLCAuLi5hcmdzIH0sXG4gICAgICAgIGlkOiBzdG9yZWRCdXR0b24uaWQuc3BsaXQoXCJidXR0b24tXCIpWzFdLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRCdXR0b25CeUlkID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgaWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxBcmd1bWVudHM+ID0+IHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRTdG9yZShhcHAuaXNNb2JpbGUpO1xuICBjb25zdCBzdG9yZWRCdXR0b24gPSBzdG9yZS5maWx0ZXIoXG4gICAgKGl0ZW06IEV4dGVuZGVkQmxvY2tDYWNoZSkgPT4gYGJ1dHRvbi0ke2lkfWAgPT09IGl0ZW0uaWRcbiAgKVswXTtcbiAgaWYgKHN0b3JlZEJ1dHRvbikge1xuICAgIGNvbnN0IGZpbGUgPSBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHN0b3JlZEJ1dHRvbi5wYXRoKTtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LmNhY2hlZFJlYWQoZmlsZSBhcyBURmlsZSk7XG4gICAgY29uc3QgY29udGVudEFycmF5ID0gY29udGVudC5zcGxpdChcIlxcblwiKTtcbiAgICBjb25zdCBidXR0b24gPSBjb250ZW50QXJyYXlcbiAgICAgIC5zbGljZShcbiAgICAgICAgc3RvcmVkQnV0dG9uLnBvc2l0aW9uLnN0YXJ0LmxpbmUgKyAxLFxuICAgICAgICBzdG9yZWRCdXR0b24ucG9zaXRpb24uZW5kLmxpbmVcbiAgICAgIClcbiAgICAgIC5qb2luKFwiXFxuXCIpO1xuICAgIHJldHVybiBjcmVhdGVBcmd1bWVudE9iamVjdChidXR0b24pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QnV0dG9uU3dhcEJ5SWQgPSBhc3luYyAoXG4gIGFwcDogQXBwLFxuICBpZDogc3RyaW5nXG4pOiBQcm9taXNlPG51bWJlcj4gPT4ge1xuICBjb25zdCBzdG9yZSA9IGdldFN0b3JlKGFwcC5pc01vYmlsZSk7XG4gIGNvbnN0IHN0b3JlZEJ1dHRvbiA9IHN0b3JlLmZpbHRlcihcbiAgICAoaXRlbTogRXh0ZW5kZWRCbG9ja0NhY2hlKSA9PiBgYnV0dG9uLSR7aWR9YCA9PT0gaXRlbS5pZFxuICApWzBdO1xuICBpZiAoc3RvcmVkQnV0dG9uKSB7XG4gICAgcmV0dXJuIHN0b3JlZEJ1dHRvbi5zd2FwO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0QnV0dG9uU3dhcEJ5SWQgPSBhc3luYyAoXG4gIGFwcDogQXBwLFxuICBpZDogc3RyaW5nLFxuICBuZXdTd2FwOiBudW1iZXJcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBzdG9yZSA9IGdldFN0b3JlKGFwcC5pc01vYmlsZSk7XG4gIGNvbnN0IHN0b3JlZEJ1dHRvbiA9IHN0b3JlLmZpbHRlcihcbiAgICAoaXRlbTogRXh0ZW5kZWRCbG9ja0NhY2hlKSA9PiBgYnV0dG9uLSR7aWR9YCA9PT0gaXRlbS5pZFxuICApWzBdO1xuICBpZiAoc3RvcmVkQnV0dG9uKSB7XG4gICAgc3RvcmVkQnV0dG9uLnN3YXAgPSBuZXdTd2FwO1xuICAgIGNvbnN0IG5ld1N0b3JlID0gcmVtb3ZlRHVwbGljYXRlcyhbLi4uc3RvcmUsIHN0b3JlZEJ1dHRvbl0pO1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwiYnV0dG9uc1wiLCBKU09OLnN0cmluZ2lmeShuZXdTdG9yZSkpO1xuICAgIGJ1dHRvblN0b3JlID0gbmV3U3RvcmU7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZEJ1dHRvbkFycmF5ID0gKFxuICBjYWNoZTogQ2FjaGVkTWV0YWRhdGEsXG4gIGZpbGU6IFRGaWxlXG4pOiBFeHRlbmRlZEJsb2NrQ2FjaGVbXSA9PiB7XG4gIGNvbnN0IGJsb2NrcyA9IGNhY2hlICYmIGNhY2hlLmJsb2NrcztcbiAgaWYgKGJsb2Nrcykge1xuICAgIGNvbnN0IGJsb2NrS2V5cyA9IEFycmF5LmZyb20oT2JqZWN0LmtleXMoYmxvY2tzKSk7XG4gICAgY29uc3QgYmxvY2tBcnJheTogRXh0ZW5kZWRCbG9ja0NhY2hlW10gPSBibG9ja0tleXNcbiAgICAgIC5tYXAoKGtleSkgPT4gYmxvY2tzW2tleV0pXG4gICAgICAubWFwKChvYmo6IEV4dGVuZGVkQmxvY2tDYWNoZSkgPT4ge1xuICAgICAgICBvYmpbXCJwYXRoXCJdID0gZmlsZS5wYXRoO1xuICAgICAgICBvYmpbXCJzd2FwXCJdID0gMDtcbiAgICAgICAgcmV0dXJuIG9iajtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChibG9jaykgPT4gYmxvY2suaWQuaW5jbHVkZXMoXCJidXR0b25cIikpO1xuICAgIHJldHVybiBibG9ja0FycmF5O1xuICB9XG59O1xuXG5mdW5jdGlvbiByZW1vdmVEdXBsaWNhdGVzKGFycjogRXh0ZW5kZWRCbG9ja0NhY2hlW10pIHtcbiAgcmV0dXJuIGFyciAmJiBhcnJbMF1cbiAgICA/IGFyci5maWx0ZXIoXG4gICAgICAgICh2LCBpLCBhKSA9PlxuICAgICAgICAgIGEuZmluZEluZGV4KFxuICAgICAgICAgICAgKHQpID0+XG4gICAgICAgICAgICAgIHQuaWQgPT09IHYuaWQgfHxcbiAgICAgICAgICAgICAgKHQucGF0aCA9PT0gdi5wYXRoICYmXG4gICAgICAgICAgICAgICAgdC5wb3NpdGlvbi5zdGFydC5saW5lID09PSB2LnBvc2l0aW9uLnN0YXJ0LmxpbmUgJiZcbiAgICAgICAgICAgICAgICB0LnBvc2l0aW9uLmVuZC5saW5lID09PSB2LnBvc2l0aW9uLmVuZC5saW5lKVxuICAgICAgICAgICkgPT09IGlcbiAgICAgIClcbiAgICA6IGFycjtcbn1cbiIsImltcG9ydCB7IE1hcmtkb3duVmlldywgQXBwLCBOb3RpY2UsIFRGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBBcmd1bWVudHMsIFBvc2l0aW9uIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGFkZEJ1dHRvblRvU3RvcmUgfSBmcm9tIFwiLi9idXR0b25TdG9yZVwiO1xuXG5mdW5jdGlvbiBuYW5vaWQobnVtOiBudW1iZXIpIHtcbiAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gIGNvbnN0IGNoYXJhY3RlcnMgPSBcImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiO1xuICBjb25zdCBjaGFyYWN0ZXJzTGVuZ3RoID0gY2hhcmFjdGVycy5sZW5ndGg7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtOyBpKyspIHtcbiAgICByZXN1bHQgKz0gY2hhcmFjdGVycy5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhcmFjdGVyc0xlbmd0aCkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmludGVyZmFjZSBPdXRwdXRPYmplY3Qge1xuICBuYW1lOiBzdHJpbmc7XG4gIHR5cGU6IHN0cmluZztcbiAgYWN0aW9uOiBzdHJpbmc7XG4gIHN3YXA6IHN0cmluZztcbiAgcmVtb3ZlOiBzdHJpbmc7XG4gIHJlcGxhY2U6IHN0cmluZztcbiAgaWQ6IHN0cmluZztcbiAgdGVtcGxhdGVyOiBib29sZWFuO1xuICBjbGFzczogc3RyaW5nO1xuICBjb2xvcjogc3RyaW5nO1xuICBibG9ja0lkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBpbnNlcnRCdXR0b24gPSAoYXBwOiBBcHAsIG91dHB1dE9iamVjdDogT3V0cHV0T2JqZWN0KTogdm9pZCA9PiB7XG4gIGNvbnN0IGJ1dHRvbkFyciA9IFtdO1xuICBidXR0b25BcnIucHVzaChcImBgYGJ1dHRvblwiKTtcbiAgb3V0cHV0T2JqZWN0Lm5hbWUgJiYgYnV0dG9uQXJyLnB1c2goYG5hbWUgJHtvdXRwdXRPYmplY3QubmFtZX1gKTtcbiAgb3V0cHV0T2JqZWN0LnR5cGUgJiYgYnV0dG9uQXJyLnB1c2goYHR5cGUgJHtvdXRwdXRPYmplY3QudHlwZX1gKTtcbiAgb3V0cHV0T2JqZWN0LmFjdGlvbiAmJiBidXR0b25BcnIucHVzaChgYWN0aW9uICR7b3V0cHV0T2JqZWN0LmFjdGlvbn1gKTtcbiAgb3V0cHV0T2JqZWN0LmlkICYmIGJ1dHRvbkFyci5wdXNoKGBpZCAke291dHB1dE9iamVjdC5pZH1gKTtcbiAgb3V0cHV0T2JqZWN0LnN3YXAgJiYgYnV0dG9uQXJyLnB1c2goYHN3YXAgJHtvdXRwdXRPYmplY3Quc3dhcH1gKTtcbiAgb3V0cHV0T2JqZWN0LnJlbW92ZSAmJiBidXR0b25BcnIucHVzaChgcmVtb3ZlICR7b3V0cHV0T2JqZWN0LnJlbW92ZX1gKTtcbiAgb3V0cHV0T2JqZWN0LnJlcGxhY2UgJiYgYnV0dG9uQXJyLnB1c2goYHJlcGxhY2UgJHtvdXRwdXRPYmplY3QucmVwbGFjZX1gKTtcbiAgb3V0cHV0T2JqZWN0LnRlbXBsYXRlciA9PT0gdHJ1ZSAmJlxuICAgIGJ1dHRvbkFyci5wdXNoKGB0ZW1wbGF0ZXIgJHtvdXRwdXRPYmplY3QudGVtcGxhdGVyfWApO1xuICBvdXRwdXRPYmplY3QuY29sb3IgJiYgYnV0dG9uQXJyLnB1c2goYGNvbG9yICR7b3V0cHV0T2JqZWN0LmNvbG9yfWApO1xuICBvdXRwdXRPYmplY3QuY2xhc3MgJiYgYnV0dG9uQXJyLnB1c2goYGNsYXNzICR7b3V0cHV0T2JqZWN0LmNsYXNzfWApO1xuICBidXR0b25BcnIucHVzaChcImBgYFwiKTtcbiAgb3V0cHV0T2JqZWN0LmJsb2NrSWRcbiAgICA/IGJ1dHRvbkFyci5wdXNoKGBeYnV0dG9uLSR7b3V0cHV0T2JqZWN0LmJsb2NrSWR9YClcbiAgICA6IGJ1dHRvbkFyci5wdXNoKGBeYnV0dG9uLSR7bmFub2lkKDQpfWApO1xuICBjb25zdCBwYWdlID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gIGNvbnN0IGVkaXRvciA9IHBhZ2UuZWRpdG9yO1xuICBlZGl0b3IucmVwbGFjZVNlbGVjdGlvbihidXR0b25BcnIuam9pbihcIlxcblwiKSk7XG4gIGFkZEJ1dHRvblRvU3RvcmUoYXBwLCBwYWdlLmZpbGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGluc2VydElubGluZUJ1dHRvbiA9IChhcHA6IEFwcCwgaWQ6IHN0cmluZyk6IHZvaWQgPT4ge1xuICBjb25zdCBwYWdlID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gIGNvbnN0IGVkaXRvciA9IHBhZ2UuZWRpdG9yO1xuICBlZGl0b3IucmVwbGFjZVNlbGVjdGlvbihgXFxgYnV0dG9uLSR7aWR9XFxgYCk7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlQXJndW1lbnRPYmplY3QgPSAoc291cmNlOiBzdHJpbmcpOiBBcmd1bWVudHMgPT5cbiAgc291cmNlLnNwbGl0KFwiXFxuXCIpLnJlZHVjZSgoYWNjOiBBcmd1bWVudHMsIGk6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHNwbGl0OiBzdHJpbmdbXSA9IGkuc3BsaXQoXCIgXCIpO1xuICAgIGNvbnN0IGtleTogc3RyaW5nID0gc3BsaXRbMF0udG9Mb3dlckNhc2UoKTtcbiAgICBhY2Nba2V5XSA9IHNwbGl0LmZpbHRlcigoaXRlbSkgPT4gaXRlbSAhPT0gc3BsaXRbMF0pLmpvaW4oXCIgXCIpLnRyaW0oKTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVDb250ZW50QXJyYXkgPSBhc3luYyAoXG4gIGFwcDogQXBwXG4pOiBQcm9taXNlPHsgY29udGVudEFycmF5OiBzdHJpbmdbXTsgZmlsZTogVEZpbGUgfT4gPT4ge1xuICBjb25zdCBhY3RpdmVWaWV3ID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gIGlmIChhY3RpdmVWaWV3KSB7XG4gICAgY29uc3QgZmlsZSA9IGFjdGl2ZVZpZXcuZmlsZTtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gICAgcmV0dXJuIHsgY29udGVudEFycmF5OiBjb250ZW50LnNwbGl0KFwiXFxuXCIpLCBmaWxlIH07XG4gIH1cbiAgbmV3IE5vdGljZShcIkNvdWxkIG5vdCBnZXQgQWN0aXZlIFZpZXdcIiwgMTAwMCk7XG4gIGNvbnNvbGUuZXJyb3IoXCJjb3VsZCBub3QgZ2V0IGFjdGl2ZSB2aWV3XCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZVZhbHVlQXJyYXkgPSAoXG4gIHZhbHVlOiBzdHJpbmcsXG4gIGNhbGxiYWNrOiAoYXJnQXJyYXk6IHN0cmluZ1tdKSA9PiB2b2lkXG4pOiB2b2lkID0+IHtcbiAgaWYgKHZhbHVlLmluY2x1ZGVzKFwiW1wiKSAmJiB2YWx1ZS5pbmNsdWRlcyhcIl1cIikpIHtcbiAgICBjb25zdCBhcmdzID0gdmFsdWUubWF0Y2goL1xcWyguKilcXF0vKTtcbiAgICBpZiAoYXJnc1sxXSkge1xuICAgICAgY29uc3QgYXJnQXJyYXkgPSBhcmdzWzFdLnNwbGl0KC8sXFxzPy8pO1xuICAgICAgaWYgKGFyZ0FycmF5WzBdKSB7XG4gICAgICAgIGNhbGxiYWNrKGFyZ0FycmF5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROZXdBcmdzKFxuICBhcHA6IEFwcCxcbiAgcG9zaXRpb246IFBvc2l0aW9uXG4pOiBQcm9taXNlPHsgYXJnczogQXJndW1lbnRzOyBjb250ZW50OiBzdHJpbmcgfT4ge1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSBhcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcbiAgICAgIGNvbnN0IG5ld0NvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHRcbiAgICAgICAgLmNhY2hlZFJlYWQoYWN0aXZlVmlldy5maWxlKVxuICAgICAgICAudGhlbigoY29udGVudDogc3RyaW5nKSA9PiBjb250ZW50LnNwbGl0KFwiXFxuXCIpKTtcbiAgICAgIGNvbnN0IG5ld0J1dHRvbiA9IG5ld0NvbnRlbnRcbiAgICAgICAgLnNwbGljZShwb3NpdGlvbi5saW5lU3RhcnQsIHBvc2l0aW9uLmxpbmVFbmQgLSBwb3NpdGlvbi5saW5lU3RhcnQpXG4gICAgICAgIC5qb2luKFwiXFxuXCIpXG4gICAgICAgIC5yZXBsYWNlKFwiYGBgYnV0dG9uXCIsIFwiXCIpXG4gICAgICAgIC5yZXBsYWNlKFwiYGBgXCIsIFwiXCIpO1xuICAgICAgcmVzb2x2ZSh7IGFyZ3M6IGNyZWF0ZUFyZ3VtZW50T2JqZWN0KG5ld0J1dHRvbikgfSk7XG4gICAgfSwgMTUwKTtcbiAgfSk7XG4gIHJldHVybiBwcm9taXNlIGFzIFByb21pc2U8eyBhcmdzOiBBcmd1bWVudHM7IGNvbnRlbnQ6IHN0cmluZyB9Pjtcbn1cblxuZXhwb3J0IGNvbnN0IHdyYXBBcm91bmQgPSAodmFsdWU6IG51bWJlciwgc2l6ZTogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuICgodmFsdWUgJSBzaXplKSArIHNpemUpICUgc2l6ZTtcbn07XG4iLCJpbXBvcnQgeyBBcHAsIEV2ZW50UmVmLCBURmlsZSwgRXZlbnRzIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmV4cG9ydCBjb25zdCBidXR0b25FdmVudExpc3RlbmVyID0gKFxuICBhcHA6IEFwcCxcbiAgY2FsbGJhY2s6IChhcHA6IEFwcCwgZmlsZTogVEZpbGUpID0+IHZvaWRcbik6IEV2ZW50UmVmID0+IHtcbiAgcmV0dXJuIGFwcC5tZXRhZGF0YUNhY2hlLm9uKFwiY2hhbmdlZFwiLCAoZmlsZTogVEZpbGUpID0+IHtcbiAgICBjYWxsYmFjayhhcHAsIGZpbGUpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBpbml0aWFsaXplTGlzdGVuZXIgPSAoXG4gIGFwcDogQXBwLFxuICBjYWxsYmFjazogKGFwcDogQXBwKSA9PiB2b2lkXG4pOiBFdmVudFJlZiA9PiB7XG4gIHJldHVybiBhcHAubWV0YWRhdGFDYWNoZS5vbihcInJlc29sdmVkXCIsICgpID0+IHtcbiAgICBjYWxsYmFjayhhcHApO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBvcGVuRmlsZUxpc3RlbmVyID0gKFxuICBhcHA6IEFwcCxcbiAgc3RvcmVFdmVudHM6IEV2ZW50cyxcbiAgY2FsbGJhY2s6IChhcHA6IEFwcCwgc3RvcmVFdmVudHM6IEV2ZW50cykgPT4gdm9pZFxuKTogRXZlbnRSZWYgPT4ge1xuICByZXR1cm4gYXBwLndvcmtzcGFjZS5vbihcImZpbGUtb3BlblwiLCAoKSA9PiB7XG4gICAgY2FsbGJhY2soYXBwLCBzdG9yZUV2ZW50cyk7XG4gIH0pO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgTWV4cCA9IGZ1bmN0aW9uIChwYXJzZWQpIHtcclxuICB0aGlzLnZhbHVlID0gcGFyc2VkXHJcbn1cclxuXHJcbk1leHAubWF0aCA9IHtcclxuICBpc0RlZ3JlZTogdHJ1ZSwgLy8gbW9kZSBvZiBjYWxjdWxhdG9yXHJcbiAgYWNvczogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiAoTWV4cC5tYXRoLmlzRGVncmVlID8gMTgwIC8gTWF0aC5QSSAqIE1hdGguYWNvcyh4KSA6IE1hdGguYWNvcyh4KSlcclxuICB9LFxyXG4gIGFkZDogZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgIHJldHVybiBhICsgYlxyXG4gIH0sXHJcbiAgYXNpbjogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiAoTWV4cC5tYXRoLmlzRGVncmVlID8gMTgwIC8gTWF0aC5QSSAqIE1hdGguYXNpbih4KSA6IE1hdGguYXNpbih4KSlcclxuICB9LFxyXG4gIGF0YW46IGZ1bmN0aW9uICh4KSB7XHJcbiAgICByZXR1cm4gKE1leHAubWF0aC5pc0RlZ3JlZSA/IDE4MCAvIE1hdGguUEkgKiBNYXRoLmF0YW4oeCkgOiBNYXRoLmF0YW4oeCkpXHJcbiAgfSxcclxuICBhY29zaDogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiBNYXRoLmxvZyh4ICsgTWF0aC5zcXJ0KHggKiB4IC0gMSkpXHJcbiAgfSxcclxuICBhc2luaDogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiBNYXRoLmxvZyh4ICsgTWF0aC5zcXJ0KHggKiB4ICsgMSkpXHJcbiAgfSxcclxuICBhdGFuaDogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiBNYXRoLmxvZygoMSArIHgpIC8gKDEgLSB4KSlcclxuICB9LFxyXG4gIEM6IGZ1bmN0aW9uIChuLCByKSB7XHJcbiAgICB2YXIgcHJvID0gMVxyXG4gICAgdmFyIG90aGVyID0gbiAtIHJcclxuICAgIHZhciBjaG9pY2UgPSByXHJcbiAgICBpZiAoY2hvaWNlIDwgb3RoZXIpIHtcclxuICAgICAgY2hvaWNlID0gb3RoZXJcclxuICAgICAgb3RoZXIgPSByXHJcbiAgICB9XHJcbiAgICBmb3IgKHZhciBpID0gY2hvaWNlICsgMTsgaSA8PSBuOyBpKyspIHtcclxuICAgICAgcHJvICo9IGlcclxuICAgIH1cclxuICAgIHJldHVybiBwcm8gLyBNZXhwLm1hdGguZmFjdChvdGhlcilcclxuICB9LFxyXG4gIGNoYW5nZVNpZ246IGZ1bmN0aW9uICh4KSB7XHJcbiAgICByZXR1cm4gLXhcclxuICB9LFxyXG4gIGNvczogZnVuY3Rpb24gKHgpIHtcclxuICAgIGlmIChNZXhwLm1hdGguaXNEZWdyZWUpIHggPSBNZXhwLm1hdGgudG9SYWRpYW4oeClcclxuICAgIHJldHVybiBNYXRoLmNvcyh4KVxyXG4gIH0sXHJcbiAgY29zaDogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiAoTWF0aC5wb3coTWF0aC5FLCB4KSArIE1hdGgucG93KE1hdGguRSwgLTEgKiB4KSkgLyAyXHJcbiAgfSxcclxuICBkaXY6IGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICByZXR1cm4gYSAvIGJcclxuICB9LFxyXG4gIGZhY3Q6IGZ1bmN0aW9uIChuKSB7XHJcbiAgICBpZiAobiAlIDEgIT09IDApIHJldHVybiAnTmFOJ1xyXG4gICAgdmFyIHBybyA9IDFcclxuICAgIGZvciAodmFyIGkgPSAyOyBpIDw9IG47IGkrKykge1xyXG4gICAgICBwcm8gKj0gaVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb1xyXG4gIH0sXHJcbiAgaW52ZXJzZTogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiAxIC8geFxyXG4gIH0sXHJcbiAgbG9nOiBmdW5jdGlvbiAoaSkge1xyXG4gICAgcmV0dXJuIE1hdGgubG9nKGkpIC8gTWF0aC5sb2coMTApXHJcbiAgfSxcclxuICBtb2Q6IGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICByZXR1cm4gYSAlIGJcclxuICB9LFxyXG4gIG11bDogZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgIHJldHVybiBhICogYlxyXG4gIH0sXHJcbiAgUDogZnVuY3Rpb24gKG4sIHIpIHtcclxuICAgIHZhciBwcm8gPSAxXHJcbiAgICBmb3IgKHZhciBpID0gTWF0aC5mbG9vcihuKSAtIE1hdGguZmxvb3IocikgKyAxOyBpIDw9IE1hdGguZmxvb3Iobik7IGkrKykge1xyXG4gICAgICBwcm8gKj0gaVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByb1xyXG4gIH0sXHJcbiAgUGk6IGZ1bmN0aW9uIChsb3csIGhpZ2gsIGV4KSB7XHJcbiAgICB2YXIgcHJvID0gMVxyXG4gICAgZm9yICh2YXIgaSA9IGxvdzsgaSA8PSBoaWdoOyBpKyspIHtcclxuICAgICAgcHJvICo9IE51bWJlcihleC5wb3N0Zml4RXZhbCh7XHJcbiAgICAgICAgbjogaVxyXG4gICAgICB9KSlcclxuICAgIH1cclxuICAgIHJldHVybiBwcm9cclxuICB9LFxyXG4gIHBvdzEweDogZnVuY3Rpb24gKGUpIHtcclxuICAgIHZhciB4ID0gMVxyXG4gICAgd2hpbGUgKGUtLSkge1xyXG4gICAgICB4ICo9IDEwXHJcbiAgICB9XHJcbiAgICByZXR1cm4geFxyXG4gIH0sXHJcbiAgc2lnbWE6IGZ1bmN0aW9uIChsb3csIGhpZ2gsIGV4KSB7XHJcbiAgICB2YXIgc3VtID0gMFxyXG4gICAgZm9yICh2YXIgaSA9IGxvdzsgaSA8PSBoaWdoOyBpKyspIHtcclxuICAgICAgc3VtICs9IE51bWJlcihleC5wb3N0Zml4RXZhbCh7XHJcbiAgICAgICAgbjogaVxyXG4gICAgICB9KSlcclxuICAgIH1cclxuICAgIHJldHVybiBzdW1cclxuICB9LFxyXG4gIHNpbjogZnVuY3Rpb24gKHgpIHtcclxuICAgIGlmIChNZXhwLm1hdGguaXNEZWdyZWUpIHggPSBNZXhwLm1hdGgudG9SYWRpYW4oeClcclxuICAgIHJldHVybiBNYXRoLnNpbih4KVxyXG4gIH0sXHJcbiAgc2luaDogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiAoTWF0aC5wb3coTWF0aC5FLCB4KSAtIE1hdGgucG93KE1hdGguRSwgLTEgKiB4KSkgLyAyXHJcbiAgfSxcclxuICBzdWI6IGZ1bmN0aW9uIChhLCBiKSB7XHJcbiAgICByZXR1cm4gYSAtIGJcclxuICB9LFxyXG4gIHRhbjogZnVuY3Rpb24gKHgpIHtcclxuICAgIGlmIChNZXhwLm1hdGguaXNEZWdyZWUpIHggPSBNZXhwLm1hdGgudG9SYWRpYW4oeClcclxuICAgIHJldHVybiBNYXRoLnRhbih4KVxyXG4gIH0sXHJcbiAgdGFuaDogZnVuY3Rpb24gKHgpIHtcclxuICAgIHJldHVybiBNZXhwLnNpbmhhKHgpIC8gTWV4cC5jb3NoYSh4KVxyXG4gIH0sXHJcbiAgdG9SYWRpYW46IGZ1bmN0aW9uICh4KSB7XHJcbiAgICByZXR1cm4geCAqIE1hdGguUEkgLyAxODBcclxuICB9LFxyXG4gIGFuZDogZnVuY3Rpb24gKGEsIGIpIHtcclxuICAgIHJldHVybiBhICYgYlxyXG4gIH1cclxufVxyXG5NZXhwLkV4Y2VwdGlvbiA9IGZ1bmN0aW9uIChtZXNzYWdlKSB7XHJcbiAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZVxyXG59XHJcbm1vZHVsZS5leHBvcnRzID0gTWV4cFxyXG4iLCIndXNlIHN0cmljdCdcclxudmFyIE1leHAgPSByZXF1aXJlKCcuL21hdGhfZnVuY3Rpb24uanMnKVxyXG5mdW5jdGlvbiBpbmMoYXJyLCB2YWwpIHtcclxuXHRmb3IgKHZhciBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG5cdFx0YXJyW2ldICs9IHZhbFxyXG5cdH1cclxuXHRyZXR1cm4gYXJyXHJcbn1cclxudmFyIHRva2VucyA9IFtcclxuXHR7IHRva2VuOiAnc2luJywgc2hvdzogJ3NpbicsIHR5cGU6IDAsIHZhbHVlOiBNZXhwLm1hdGguc2luIH0sXHJcblx0eyB0b2tlbjogJ2NvcycsIHNob3c6ICdjb3MnLCB0eXBlOiAwLCB2YWx1ZTogTWV4cC5tYXRoLmNvcyB9LFxyXG5cdHsgdG9rZW46ICd0YW4nLCBzaG93OiAndGFuJywgdHlwZTogMCwgdmFsdWU6IE1leHAubWF0aC50YW4gfSxcclxuXHR7IHRva2VuOiAncGknLCBzaG93OiAnJnBpOycsIHR5cGU6IDMsIHZhbHVlOiAnUEknIH0sXHJcblx0eyB0b2tlbjogJygnLCBzaG93OiAnKCcsIHR5cGU6IDQsIHZhbHVlOiAnKCcgfSxcclxuXHR7IHRva2VuOiAnKScsIHNob3c6ICcpJywgdHlwZTogNSwgdmFsdWU6ICcpJyB9LFxyXG5cdHsgdG9rZW46ICdQJywgc2hvdzogJ1AnLCB0eXBlOiAxMCwgdmFsdWU6IE1leHAubWF0aC5QIH0sXHJcblx0eyB0b2tlbjogJ0MnLCBzaG93OiAnQycsIHR5cGU6IDEwLCB2YWx1ZTogTWV4cC5tYXRoLkMgfSxcclxuXHR7IHRva2VuOiAnICcsIHNob3c6ICcgJywgdHlwZTogMTQsIHZhbHVlOiAnICcuYW5jaG9yIH0sXHJcblx0eyB0b2tlbjogJ2FzaW4nLCBzaG93OiAnYXNpbicsIHR5cGU6IDAsIHZhbHVlOiBNZXhwLm1hdGguYXNpbiB9LFxyXG5cdHsgdG9rZW46ICdhY29zJywgc2hvdzogJ2Fjb3MnLCB0eXBlOiAwLCB2YWx1ZTogTWV4cC5tYXRoLmFjb3MgfSxcclxuXHR7IHRva2VuOiAnYXRhbicsIHNob3c6ICdhdGFuJywgdHlwZTogMCwgdmFsdWU6IE1leHAubWF0aC5hdGFuIH0sXHJcblx0eyB0b2tlbjogJzcnLCBzaG93OiAnNycsIHR5cGU6IDEsIHZhbHVlOiAnNycgfSxcclxuXHR7IHRva2VuOiAnOCcsIHNob3c6ICc4JywgdHlwZTogMSwgdmFsdWU6ICc4JyB9LFxyXG5cdHsgdG9rZW46ICc5Jywgc2hvdzogJzknLCB0eXBlOiAxLCB2YWx1ZTogJzknIH0sXHJcblx0eyB0b2tlbjogJ2ludCcsIHNob3c6ICdJbnQnLCB0eXBlOiAwLCB2YWx1ZTogTWF0aC5mbG9vciB9LFxyXG5cdHsgdG9rZW46ICdjb3NoJywgc2hvdzogJ2Nvc2gnLCB0eXBlOiAwLCB2YWx1ZTogTWV4cC5tYXRoLmNvc2ggfSxcclxuXHR7IHRva2VuOiAnYWNvc2gnLCBzaG93OiAnYWNvc2gnLCB0eXBlOiAwLCB2YWx1ZTogTWV4cC5tYXRoLmFjb3NoIH0sXHJcblx0eyB0b2tlbjogJ2xuJywgc2hvdzogJyBsbicsIHR5cGU6IDAsIHZhbHVlOiBNYXRoLmxvZyB9LFxyXG5cdHsgdG9rZW46ICdeJywgc2hvdzogJ14nLCB0eXBlOiAxMCwgdmFsdWU6IE1hdGgucG93IH0sXHJcblx0eyB0b2tlbjogJ3Jvb3QnLCBzaG93OiAncm9vdCcsIHR5cGU6IDAsIHZhbHVlOiBNYXRoLnNxcnQgfSxcclxuXHR7IHRva2VuOiAnNCcsIHNob3c6ICc0JywgdHlwZTogMSwgdmFsdWU6ICc0JyB9LFxyXG5cdHsgdG9rZW46ICc1Jywgc2hvdzogJzUnLCB0eXBlOiAxLCB2YWx1ZTogJzUnIH0sXHJcblx0eyB0b2tlbjogJzYnLCBzaG93OiAnNicsIHR5cGU6IDEsIHZhbHVlOiAnNicgfSxcclxuXHR7IHRva2VuOiAnLycsIHNob3c6ICcmZGl2aWRlOycsIHR5cGU6IDIsIHZhbHVlOiBNZXhwLm1hdGguZGl2IH0sXHJcblx0eyB0b2tlbjogJyEnLCBzaG93OiAnIScsIHR5cGU6IDcsIHZhbHVlOiBNZXhwLm1hdGguZmFjdCB9LFxyXG5cdHsgdG9rZW46ICd0YW5oJywgc2hvdzogJ3RhbmgnLCB0eXBlOiAwLCB2YWx1ZTogTWV4cC5tYXRoLnRhbmggfSxcclxuXHR7IHRva2VuOiAnYXRhbmgnLCBzaG93OiAnYXRhbmgnLCB0eXBlOiAwLCB2YWx1ZTogTWV4cC5tYXRoLmF0YW5oIH0sXHJcblx0eyB0b2tlbjogJ01vZCcsIHNob3c6ICcgTW9kICcsIHR5cGU6IDIsIHZhbHVlOiBNZXhwLm1hdGgubW9kIH0sXHJcblx0eyB0b2tlbjogJzEnLCBzaG93OiAnMScsIHR5cGU6IDEsIHZhbHVlOiAnMScgfSxcclxuXHR7IHRva2VuOiAnMicsIHNob3c6ICcyJywgdHlwZTogMSwgdmFsdWU6ICcyJyB9LFxyXG5cdHsgdG9rZW46ICczJywgc2hvdzogJzMnLCB0eXBlOiAxLCB2YWx1ZTogJzMnIH0sXHJcblx0eyB0b2tlbjogJyonLCBzaG93OiAnJnRpbWVzOycsIHR5cGU6IDIsIHZhbHVlOiBNZXhwLm1hdGgubXVsIH0sXHJcblx0eyB0b2tlbjogJ3NpbmgnLCBzaG93OiAnc2luaCcsIHR5cGU6IDAsIHZhbHVlOiBNZXhwLm1hdGguc2luaCB9LFxyXG5cdHsgdG9rZW46ICdhc2luaCcsIHNob3c6ICdhc2luaCcsIHR5cGU6IDAsIHZhbHVlOiBNZXhwLm1hdGguYXNpbmggfSxcclxuXHR7IHRva2VuOiAnZScsIHNob3c6ICdlJywgdHlwZTogMywgdmFsdWU6ICdFJyB9LFxyXG5cdHsgdG9rZW46ICdsb2cnLCBzaG93OiAnIGxvZycsIHR5cGU6IDAsIHZhbHVlOiBNZXhwLm1hdGgubG9nIH0sXHJcblx0eyB0b2tlbjogJzAnLCBzaG93OiAnMCcsIHR5cGU6IDEsIHZhbHVlOiAnMCcgfSxcclxuXHR7IHRva2VuOiAnLicsIHNob3c6ICcuJywgdHlwZTogNiwgdmFsdWU6ICcuJyB9LFxyXG5cdHsgdG9rZW46ICcrJywgc2hvdzogJysnLCB0eXBlOiA5LCB2YWx1ZTogTWV4cC5tYXRoLmFkZCB9LFxyXG5cdHsgdG9rZW46ICctJywgc2hvdzogJy0nLCB0eXBlOiA5LCB2YWx1ZTogTWV4cC5tYXRoLnN1YiB9LFxyXG5cdHsgdG9rZW46ICcsJywgc2hvdzogJywnLCB0eXBlOiAxMSwgdmFsdWU6ICcsJyB9LFxyXG5cdHsgdG9rZW46ICdTaWdtYScsIHNob3c6ICcmU2lnbWE7JywgdHlwZTogMTIsIHZhbHVlOiBNZXhwLm1hdGguc2lnbWEgfSxcclxuXHR7IHRva2VuOiAnbicsIHNob3c6ICduJywgdHlwZTogMTMsIHZhbHVlOiAnbicgfSxcclxuXHR7IHRva2VuOiAnUGknLCBzaG93OiAnJlBpOycsIHR5cGU6IDEyLCB2YWx1ZTogTWV4cC5tYXRoLlBpIH0sXHJcblx0eyB0b2tlbjogJ3BvdycsIHNob3c6ICdwb3cnLCB0eXBlOiA4LCB2YWx1ZTogTWF0aC5wb3csIG51bWJlck9mQXJndW1lbnRzOiAyIH0sXHJcblx0eyB0b2tlbjogJyYnLCBzaG93OiAnJicsIHR5cGU6IDksIHZhbHVlOiBNZXhwLm1hdGguYW5kIH0sXHJcbl1cclxudmFyIHByZWNlZCA9IHtcclxuXHQwOiAxMSxcclxuXHQxOiAwLFxyXG5cdDI6IDMsXHJcblx0MzogMCxcclxuXHQ0OiAwLFxyXG5cdDU6IDAsXHJcblx0NjogMCxcclxuXHQ3OiAxMSxcclxuXHQ4OiAxMSxcclxuXHQ5OiAxLFxyXG5cdDEwOiAxMCxcclxuXHQxMTogMCxcclxuXHQxMjogMTEsXHJcblx0MTM6IDAsXHJcblx0MTQ6IC0xLFxyXG5cdDE1OiAxMSwgLy8gd2lsbCBiZSBmaWx0ZXJlZCBhZnRlciBsZXhlclxyXG59IC8vIHN0b3JlcyBwcmVjZWRlbmNlIGJ5IHR5cGVzXHJcbmZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XHJcblx0dG9rZW5zW2ldLnByZWNlZGVuY2UgPSBwcmVjZWRbdG9rZW5zW2ldLnR5cGVdXHJcbn1cclxudmFyIHR5cGUwID0ge1xyXG5cdDA6IHRydWUsXHJcblx0MTogdHJ1ZSxcclxuXHQzOiB0cnVlLFxyXG5cdDQ6IHRydWUsXHJcblx0NjogdHJ1ZSxcclxuXHQ4OiB0cnVlLFxyXG5cdDk6IHRydWUsXHJcblx0MTI6IHRydWUsXHJcblx0MTM6IHRydWUsXHJcblx0MTQ6IHRydWUsXHJcblx0MTU6IHRydWUsXHJcbn0gLy8gdHlwZTI6dHJ1ZSx0eXBlNDp0cnVlLHR5cGU5OnRydWUsdHlwZTExOnRydWUsdHlwZTIxOnRydWUsdHlwZTIyXHJcbnZhciB0eXBlMSA9IHtcclxuXHQwOiB0cnVlLFxyXG5cdDE6IHRydWUsXHJcblx0MjogdHJ1ZSxcclxuXHQzOiB0cnVlLFxyXG5cdDQ6IHRydWUsXHJcblx0NTogdHJ1ZSxcclxuXHQ2OiB0cnVlLFxyXG5cdDc6IHRydWUsXHJcblx0ODogdHJ1ZSxcclxuXHQ5OiB0cnVlLFxyXG5cdDEwOiB0cnVlLFxyXG5cdDExOiB0cnVlLFxyXG5cdDEyOiB0cnVlLFxyXG5cdDEzOiB0cnVlLFxyXG5cdDE1OiB0cnVlLFxyXG59IC8vIHR5cGUzOnRydWUsdHlwZTU6dHJ1ZSx0eXBlNzp0cnVlLHR5cGUyM1xyXG52YXIgdHlwZTFBc3RlcmljayA9IHtcclxuXHQwOiB0cnVlLFxyXG5cdDM6IHRydWUsXHJcblx0NDogdHJ1ZSxcclxuXHQ4OiB0cnVlLFxyXG5cdDEyOiB0cnVlLFxyXG5cdDEzOiB0cnVlLFxyXG5cdDE1OiB0cnVlLFxyXG59XHJcbnZhciBlbXB0eSA9IHt9XHJcbnZhciB0eXBlM0FzdGVyaWNrID0ge1xyXG5cdDA6IHRydWUsXHJcblx0MTogdHJ1ZSxcclxuXHQzOiB0cnVlLFxyXG5cdDQ6IHRydWUsXHJcblx0NjogdHJ1ZSxcclxuXHQ4OiB0cnVlLFxyXG5cdDEyOiB0cnVlLFxyXG5cdDEzOiB0cnVlLFxyXG5cdDE1OiB0cnVlLFxyXG59IC8vIHR5cGVfNTp0cnVlLHR5cGVfNzp0cnVlLHR5cGVfMjNcclxudmFyIHR5cGU2ID0ge1xyXG5cdDE6IHRydWUsXHJcbn1cclxudmFyIG5ld0FyID0gW1xyXG5cdFtdLFxyXG5cdFtcclxuXHRcdCcxJyxcclxuXHRcdCcyJyxcclxuXHRcdCczJyxcclxuXHRcdCc3JyxcclxuXHRcdCc4JyxcclxuXHRcdCc5JyxcclxuXHRcdCc0JyxcclxuXHRcdCc1JyxcclxuXHRcdCc2JyxcclxuXHRcdCcrJyxcclxuXHRcdCctJyxcclxuXHRcdCcqJyxcclxuXHRcdCcvJyxcclxuXHRcdCcoJyxcclxuXHRcdCcpJyxcclxuXHRcdCdeJyxcclxuXHRcdCchJyxcclxuXHRcdCdQJyxcclxuXHRcdCdDJyxcclxuXHRcdCdlJyxcclxuXHRcdCcwJyxcclxuXHRcdCcuJyxcclxuXHRcdCcsJyxcclxuXHRcdCduJyxcclxuXHRcdCcgJyxcclxuXHRcdCcmJyxcclxuXHRdLFxyXG5cdFsncGknLCAnbG4nLCAnUGknXSxcclxuXHRbJ3NpbicsICdjb3MnLCAndGFuJywgJ0RlbCcsICdpbnQnLCAnTW9kJywgJ2xvZycsICdwb3cnXSxcclxuXHRbJ2FzaW4nLCAnYWNvcycsICdhdGFuJywgJ2Nvc2gnLCAncm9vdCcsICd0YW5oJywgJ3NpbmgnXSxcclxuXHRbJ2Fjb3NoJywgJ2F0YW5oJywgJ2FzaW5oJywgJ1NpZ21hJ10sXHJcbl1cclxuXHJcbmZ1bmN0aW9uIG1hdGNoKHN0cjEsIHN0cjIsIGksIHgpIHtcclxuXHRmb3IgKHZhciBmID0gMDsgZiA8IHg7IGYrKykge1xyXG5cdFx0aWYgKHN0cjFbaSArIGZdICE9PSBzdHIyW2ZdKSB7XHJcblx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0fVxyXG5cdH1cclxuXHRyZXR1cm4gdHJ1ZVxyXG59XHJcbk1leHAudG9rZW5UeXBlcyA9IHtcclxuXHRGVU5DVElPTl9XSVRIX09ORV9BUkc6IDAsXHJcblx0TlVNQkVSOiAxLFxyXG5cdEJJTkFSWV9PUEVSQVRPUl9ISUdIX1BSRUNFTkRFTkNFOiAyLFxyXG5cdENPTlNUQU5UOiAzLFxyXG5cdE9QRU5JTkdfUEFSRU5USEVTSVM6IDQsXHJcblx0Q0xPU0lOR19QQVJFTlRIRVNJUzogNSxcclxuXHRERUNJTUFMOiA2LFxyXG5cdFBPU1RGSVhfRlVOQ1RJT05fV0lUSF9PTkVfQVJHOiA3LFxyXG5cdEZVTkNUSU9OX1dJVEhfTl9BUkdTOiA4LFxyXG5cdEJJTkFSWV9PUEVSQVRPUl9MT1dfUFJFQ0VOREVOQ0U6IDksXHJcblx0QklOQVJZX09QRVJBVE9SX1BFUk1VVEFUSU9OOiAxMCxcclxuXHRDT01NQTogMTEsXHJcblx0RVZBTFVBVEVEX0ZVTkNUSU9OOiAxMixcclxuXHRFVkFMVUFURURfRlVOQ1RJT05fUEFSQU1FVEVSOiAxMyxcclxuXHRTUEFDRTogMTQsXHJcbn1cclxuLyoqXHJcbiAgXHJcbiAgMCA6IGZ1bmN0aW9uIHdpdGggc3ludGF4IGZ1bmN0aW9uX25hbWUoTWF0aHNfZXhwKVxyXG4gIDEgOiBudW1iZXJzXHJcbiAgMiA6IGJpbmFyeSBvcGVyYXRvcnMgbGlrZSAqIC8gTW9kIGxlZnQgYXNzb2NpYXRlIGFuZCBzYW1lIHByZWNlZGVuY2VcclxuICAzIDogTWF0aCBjb25zdGFudCB2YWx1ZXMgbGlrZSBlLHBpLENydW5jaGVyIGFuc1xyXG4gIDQgOiBvcGVuaW5nIGJyYWNrZXRcclxuICA1IDogY2xvc2luZyBicmFja2V0XHJcbiAgNiA6IGRlY2ltYWxcclxuICA3IDogZnVuY3Rpb24gd2l0aCBzeW50YXggKE1hdGhfZXhwKWZ1bmN0aW9uX25hbWVcclxuICA4OiBmdW5jdGlvbiB3aXRoIHN5bnRheCBmdW5jdGlvbl9uYW1lKE1hdGhfZXhwMSxNYXRoX2V4cDIpXHJcbiAgOSA6IGJpbmFyeSBvcGVyYXRvciBsaWtlICssLVxyXG4gIDEwOiBiaW5hcnkgb3BlcmF0b3IgbGlrZSBQIEMgb3IgXlxyXG4gIDExOiAsXHJcbiAgMTI6IGZ1bmN0aW9uIHdpdGggLCBzZXBlcmF0ZWQgdGhyZWUgcGFyYW1ldGVycyBhbmQgdGhpcmQgcGFyYW1ldGVyIGlzIGEgc3RyaW5nIHRoYXQgd2lsbCBiZSBtZXhwIHN0cmluZ1xyXG4gIDEzOiB2YXJpYWJsZSBvZiBTaWdtYSBmdW5jdGlvblxyXG4gKi9cclxuTWV4cC5hZGRUb2tlbiA9IGZ1bmN0aW9uIChuZXdUb2tlbnMpIHtcclxuXHRmb3IgKHZhciBpID0gMDsgaSA8IG5ld1Rva2Vucy5sZW5ndGg7IGkrKykge1xyXG5cdFx0dmFyIHggPSBuZXdUb2tlbnNbaV0udG9rZW4ubGVuZ3RoXHJcblx0XHR2YXIgdGVtcCA9IC0xXHJcblx0XHRpZiAobmV3VG9rZW5zW2ldLnR5cGUgPT09IE1leHAudG9rZW5UeXBlcy5GVU5DVElPTl9XSVRIX05fQVJHUyAmJiBuZXdUb2tlbnNbaV0ubnVtYmVyT2ZBcmd1bWVudHMgPT09IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRuZXdUb2tlbnNbaV0ubnVtYmVyT2ZBcmd1bWVudHMgPSAyXHJcblx0XHR9XHJcblxyXG5cdFx0Ly8gbmV3QXIgaXMgYSBzcGVjaWFsbHkgZGVzaWduZWQgZGF0YSBzdHJ1Y3R1cmUgaW5kZXggb2YgMWQgYXJyYXkgPSBsZW5ndGggb2YgdG9rZW5zXHJcblx0XHRuZXdBclt4XSA9IG5ld0FyW3hdIHx8IFtdXHJcblx0XHRmb3IgKHZhciB5ID0gMDsgeSA8IG5ld0FyW3hdLmxlbmd0aDsgeSsrKSB7XHJcblx0XHRcdGlmIChuZXdUb2tlbnNbaV0udG9rZW4gPT09IG5ld0FyW3hdW3ldKSB7XHJcblx0XHRcdFx0dGVtcCA9IGluZGV4T2ZUb2tlbihuZXdBclt4XVt5XSwgdG9rZW5zKVxyXG5cdFx0XHRcdGJyZWFrXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGlmICh0ZW1wID09PSAtMSkge1xyXG5cdFx0XHR0b2tlbnMucHVzaChuZXdUb2tlbnNbaV0pXHJcblx0XHRcdG5ld1Rva2Vuc1tpXS5wcmVjZWRlbmNlID0gcHJlY2VkW25ld1Rva2Vuc1tpXS50eXBlXVxyXG5cdFx0XHRpZiAobmV3QXIubGVuZ3RoIDw9IG5ld1Rva2Vuc1tpXS50b2tlbi5sZW5ndGgpIHtcclxuXHRcdFx0XHRuZXdBcltuZXdUb2tlbnNbaV0udG9rZW4ubGVuZ3RoXSA9IFtdXHJcblx0XHRcdH1cclxuXHRcdFx0bmV3QXJbbmV3VG9rZW5zW2ldLnRva2VuLmxlbmd0aF0ucHVzaChuZXdUb2tlbnNbaV0udG9rZW4pXHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQvLyBvdmVyd3JpdGVcclxuXHRcdFx0dG9rZW5zW3RlbXBdID0gbmV3VG9rZW5zW2ldXHJcblx0XHRcdG5ld1Rva2Vuc1tpXS5wcmVjZWRlbmNlID0gcHJlY2VkW25ld1Rva2Vuc1tpXS50eXBlXVxyXG5cdFx0fVxyXG5cdH1cclxufVxyXG5cclxuZnVuY3Rpb24gaW5kZXhPZlRva2VuKGtleSwgdG9rZW5zKSB7XHJcblx0Zm9yICh2YXIgc2VhcmNoID0gMDsgc2VhcmNoIDwgdG9rZW5zLmxlbmd0aDsgc2VhcmNoKyspIHtcclxuXHRcdGlmICh0b2tlbnNbc2VhcmNoXS50b2tlbiA9PT0ga2V5KSByZXR1cm4gc2VhcmNoXHJcblx0fVxyXG5cdHJldHVybiAtMVxyXG59XHJcbmZ1bmN0aW9uIHRva2VuaXplKHN0cmluZykge1xyXG5cdHZhciBub2RlcyA9IFtdXHJcblx0dmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGhcclxuXHR2YXIga2V5LCB4LCB5XHJcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG5cdFx0aWYgKGkgPCBsZW5ndGggLSAxICYmIHN0cmluZ1tpXSA9PT0gJyAnICYmIHN0cmluZ1tpICsgMV0gPT09ICcgJykge1xyXG5cdFx0XHRjb250aW51ZVxyXG5cdFx0fVxyXG5cdFx0a2V5ID0gJydcclxuXHRcdGZvciAoeCA9IHN0cmluZy5sZW5ndGggLSBpID4gbmV3QXIubGVuZ3RoIC0gMiA/IG5ld0FyLmxlbmd0aCAtIDEgOiBzdHJpbmcubGVuZ3RoIC0gaTsgeCA+IDA7IHgtLSkge1xyXG5cdFx0XHRpZiAobmV3QXJbeF0gPT09IHVuZGVmaW5lZCkgY29udGludWVcclxuXHRcdFx0Zm9yICh5ID0gMDsgeSA8IG5ld0FyW3hdLmxlbmd0aDsgeSsrKSB7XHJcblx0XHRcdFx0aWYgKG1hdGNoKHN0cmluZywgbmV3QXJbeF1beV0sIGksIHgpKSB7XHJcblx0XHRcdFx0XHRrZXkgPSBuZXdBclt4XVt5XVxyXG5cdFx0XHRcdFx0eSA9IG5ld0FyW3hdLmxlbmd0aFxyXG5cdFx0XHRcdFx0eCA9IDBcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGkgKz0ga2V5Lmxlbmd0aCAtIDFcclxuXHRcdGlmIChrZXkgPT09ICcnKSB7XHJcblx0XHRcdHRocm93IG5ldyBNZXhwLkV4Y2VwdGlvbihcIkNhbid0IHVuZGVyc3RhbmQgYWZ0ZXIgXCIgKyBzdHJpbmcuc2xpY2UoaSkpXHJcblx0XHR9XHJcblx0XHRub2Rlcy5wdXNoKHRva2Vuc1tpbmRleE9mVG9rZW4oa2V5LCB0b2tlbnMpXSlcclxuXHR9XHJcblx0cmV0dXJuIG5vZGVzXHJcbn1cclxuXHJcbnZhciBjaGFuZ2VTaWduT2JqID0ge1xyXG5cdHZhbHVlOiBNZXhwLm1hdGguY2hhbmdlU2lnbixcclxuXHR0eXBlOiAwLFxyXG5cdHByZTogMjEsXHJcblx0c2hvdzogJy0nLFxyXG59XHJcbnZhciBjbG9zaW5nUGFyT2JqID0ge1xyXG5cdHZhbHVlOiAnKScsXHJcblx0c2hvdzogJyknLFxyXG5cdHR5cGU6IDUsXHJcblx0cHJlOiAwLFxyXG59XHJcbnZhciBvcGVuaW5nUGFyT2JqID0ge1xyXG5cdHZhbHVlOiAnKCcsXHJcblx0dHlwZTogNCxcclxuXHRwcmU6IDAsXHJcblx0c2hvdzogJygnLFxyXG59XHJcbk1leHAubGV4ID0gZnVuY3Rpb24gKGlucCwgdG9rZW5zKSB7XHJcblx0J3VzZSBzdHJpY3QnXHJcblxyXG5cdHZhciBzdHIgPSBbb3BlbmluZ1Bhck9ial1cclxuXHJcblx0dmFyIHB0YyA9IFtdIC8vIFBhcmVudGhlc2lzIHRvIGNsb3NlIGF0IHRoZSBiZWdpbm5pbmcgaXMgYWZ0ZXIgb25lIHRva2VuXHJcblx0dmFyIGlucFN0ciA9IGlucFxyXG5cdHZhciBhbGxvd2VkID0gdHlwZTBcclxuXHR2YXIgYnJhY1RvQ2xvc2UgPSAwXHJcblx0dmFyIGFzdGVyaWNrID0gZW1wdHlcclxuXHR2YXIgcHJldktleSA9ICcnXHJcblx0dmFyIGlcclxuXHRpZiAodHlwZW9mIHRva2VucyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuXHRcdE1leHAuYWRkVG9rZW4odG9rZW5zKVxyXG5cdH1cclxuXHR2YXIgb2JqID0ge31cclxuXHR2YXIgbm9kZXMgPSB0b2tlbml6ZShpbnBTdHIpXHJcblx0Zm9yIChpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHR2YXIgbm9kZSA9IG5vZGVzW2ldXHJcblx0XHRpZiAobm9kZS50eXBlID09PSAxNCkge1xyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0aSA+IDAgJiZcclxuXHRcdFx0XHRpIDwgbm9kZXMubGVuZ3RoIC0gMSAmJlxyXG5cdFx0XHRcdG5vZGVzW2kgKyAxXS50eXBlID09PSAxICYmXHJcblx0XHRcdFx0KG5vZGVzW2kgLSAxXS50eXBlID09PSAxIHx8IG5vZGVzW2kgLSAxXS50eXBlID09PSA2KVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHR0aHJvdyBuZXcgTWV4cC5FeGNlcHRpb24oJ1VuZXhwZWN0ZWQgU3BhY2UnKVxyXG5cdFx0XHR9XHJcblx0XHRcdGNvbnRpbnVlXHJcblx0XHR9XHJcblx0XHR2YXIgY1Rva2VuID0gbm9kZS50b2tlblxyXG5cdFx0dmFyIGNUeXBlID0gbm9kZS50eXBlXHJcblx0XHR2YXIgY0V2ID0gbm9kZS52YWx1ZVxyXG5cdFx0dmFyIGNQcmUgPSBub2RlLnByZWNlZGVuY2VcclxuXHRcdHZhciBjU2hvdyA9IG5vZGUuc2hvd1xyXG5cdFx0dmFyIHByZSA9IHN0cltzdHIubGVuZ3RoIC0gMV1cclxuXHRcdHZhciBqXHJcblx0XHRmb3IgKGogPSBwdGMubGVuZ3RoOyBqLS07ICkge1xyXG5cdFx0XHQvLyBsb29wIG92ZXIgcHRjXHJcblx0XHRcdGlmIChwdGNbal0gPT09IDApIHtcclxuXHRcdFx0XHRpZiAoWzAsIDIsIDMsIDQsIDUsIDksIDExLCAxMiwgMTNdLmluZGV4T2YoY1R5cGUpICE9PSAtMSkge1xyXG5cdFx0XHRcdFx0aWYgKGFsbG93ZWRbY1R5cGVdICE9PSB0cnVlKSB7XHJcblx0XHRcdFx0XHRcdHRocm93IG5ldyBNZXhwLkV4Y2VwdGlvbihjVG9rZW4gKyAnIGlzIG5vdCBhbGxvd2VkIGFmdGVyICcgKyBwcmV2S2V5KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0c3RyLnB1c2goY2xvc2luZ1Bhck9iailcclxuXHRcdFx0XHRcdGFsbG93ZWQgPSB0eXBlMVxyXG5cdFx0XHRcdFx0YXN0ZXJpY2sgPSB0eXBlM0FzdGVyaWNrXHJcblx0XHRcdFx0XHRwdGMucG9wKClcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSBicmVha1xyXG5cdFx0fVxyXG5cdFx0aWYgKGFsbG93ZWRbY1R5cGVdICE9PSB0cnVlKSB7XHJcblx0XHRcdHRocm93IG5ldyBNZXhwLkV4Y2VwdGlvbihjVG9rZW4gKyAnIGlzIG5vdCBhbGxvd2VkIGFmdGVyICcgKyBwcmV2S2V5KVxyXG5cdFx0fVxyXG5cdFx0aWYgKGFzdGVyaWNrW2NUeXBlXSA9PT0gdHJ1ZSkge1xyXG5cdFx0XHRjVHlwZSA9IDJcclxuXHRcdFx0Y0V2ID0gTWV4cC5tYXRoLm11bFxyXG5cdFx0XHRjU2hvdyA9ICcmdGltZXM7J1xyXG5cdFx0XHRjUHJlID0gM1xyXG5cdFx0XHRpID0gaSAtIDFcclxuXHRcdH1cclxuXHRcdG9iaiA9IHtcclxuXHRcdFx0dmFsdWU6IGNFdixcclxuXHRcdFx0dHlwZTogY1R5cGUsXHJcblx0XHRcdHByZTogY1ByZSxcclxuXHRcdFx0c2hvdzogY1Nob3csXHJcblx0XHRcdG51bWJlck9mQXJndW1lbnRzOiBub2RlLm51bWJlck9mQXJndW1lbnRzLFxyXG5cdFx0fVxyXG5cdFx0aWYgKGNUeXBlID09PSAwKSB7XHJcblx0XHRcdGFsbG93ZWQgPSB0eXBlMFxyXG5cdFx0XHRhc3RlcmljayA9IGVtcHR5XHJcblx0XHRcdGluYyhwdGMsIDIpXHJcblx0XHRcdHN0ci5wdXNoKG9iailcclxuXHRcdFx0aWYgKG5vZGVzW2kgKyAxXS50eXBlICE9PSA0KSB7XHJcblx0XHRcdFx0c3RyLnB1c2gob3BlbmluZ1Bhck9iailcclxuXHRcdFx0XHRwdGMucHVzaCgyKVxyXG5cdFx0XHR9XHJcblx0XHRcdC8vIGJyYWNUb0Nsb3NlKytcclxuXHRcdH0gZWxzZSBpZiAoY1R5cGUgPT09IDEpIHtcclxuXHRcdFx0aWYgKHByZS50eXBlID09PSAxKSB7XHJcblx0XHRcdFx0cHJlLnZhbHVlICs9IGNFdlxyXG5cdFx0XHRcdGluYyhwdGMsIDEpXHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0c3RyLnB1c2gob2JqKVxyXG5cdFx0XHR9XHJcblx0XHRcdGFsbG93ZWQgPSB0eXBlMVxyXG5cdFx0XHRhc3RlcmljayA9IHR5cGUxQXN0ZXJpY2tcclxuXHRcdH0gZWxzZSBpZiAoY1R5cGUgPT09IDIpIHtcclxuXHRcdFx0YWxsb3dlZCA9IHR5cGUwXHJcblx0XHRcdGFzdGVyaWNrID0gZW1wdHlcclxuXHRcdFx0aW5jKHB0YywgMilcclxuXHRcdFx0c3RyLnB1c2gob2JqKVxyXG5cdFx0fSBlbHNlIGlmIChjVHlwZSA9PT0gMykge1xyXG5cdFx0XHQvLyBjb25zdGFudFxyXG5cdFx0XHRzdHIucHVzaChvYmopXHJcblx0XHRcdGFsbG93ZWQgPSB0eXBlMVxyXG5cdFx0XHRhc3RlcmljayA9IHR5cGUzQXN0ZXJpY2tcclxuXHRcdH0gZWxzZSBpZiAoY1R5cGUgPT09IDQpIHtcclxuXHRcdFx0aW5jKHB0YywgMSlcclxuXHRcdFx0YnJhY1RvQ2xvc2UrK1xyXG5cdFx0XHRhbGxvd2VkID0gdHlwZTBcclxuXHRcdFx0YXN0ZXJpY2sgPSBlbXB0eVxyXG5cdFx0XHRzdHIucHVzaChvYmopXHJcblx0XHR9IGVsc2UgaWYgKGNUeXBlID09PSA1KSB7XHJcblx0XHRcdGlmICghYnJhY1RvQ2xvc2UpIHtcclxuXHRcdFx0XHR0aHJvdyBuZXcgTWV4cC5FeGNlcHRpb24oJ0Nsb3NpbmcgcGFyZW50aGVzaXMgYXJlIG1vcmUgdGhhbiBvcGVuaW5nIG9uZSwgd2FpdCBXaGF0ISEhJylcclxuXHRcdFx0fVxyXG5cdFx0XHRicmFjVG9DbG9zZS0tXHJcblx0XHRcdGFsbG93ZWQgPSB0eXBlMVxyXG5cdFx0XHRhc3RlcmljayA9IHR5cGUzQXN0ZXJpY2tcclxuXHRcdFx0c3RyLnB1c2gob2JqKVxyXG5cdFx0XHRpbmMocHRjLCAxKVxyXG5cdFx0fSBlbHNlIGlmIChjVHlwZSA9PT0gNikge1xyXG5cdFx0XHRpZiAocHJlLmhhc0RlYykge1xyXG5cdFx0XHRcdHRocm93IG5ldyBNZXhwLkV4Y2VwdGlvbignVHdvIGRlY2ltYWxzIGFyZSBub3QgYWxsb3dlZCBpbiBvbmUgbnVtYmVyJylcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAocHJlLnR5cGUgIT09IDEpIHtcclxuXHRcdFx0XHRwcmUgPSB7XHJcblx0XHRcdFx0XHR2YWx1ZTogMCxcclxuXHRcdFx0XHRcdHR5cGU6IDEsXHJcblx0XHRcdFx0XHRwcmU6IDAsXHJcblx0XHRcdFx0fSAvLyBwcmUgbmVlZHMgdG8gYmUgY2hhbmdlZCBhcyBpdCB3aWxsIHRoZSBsYXN0IHZhbHVlIG5vdyB0byBiZSBzYWZlIGluIGxhdGVyIGNvZGVcclxuXHRcdFx0XHRzdHIucHVzaChwcmUpXHJcblx0XHRcdFx0Ly8gaW5jKHB0YywgMSlcclxuXHRcdFx0fVxyXG5cdFx0XHRhbGxvd2VkID0gdHlwZTZcclxuXHRcdFx0aW5jKHB0YywgMSlcclxuXHRcdFx0YXN0ZXJpY2sgPSBlbXB0eVxyXG5cdFx0XHRwcmUudmFsdWUgKz0gY0V2XHJcblx0XHRcdHByZS5oYXNEZWMgPSB0cnVlXHJcblx0XHR9IGVsc2UgaWYgKGNUeXBlID09PSA3KSB7XHJcblx0XHRcdGFsbG93ZWQgPSB0eXBlMVxyXG5cdFx0XHRhc3RlcmljayA9IHR5cGUzQXN0ZXJpY2tcclxuXHRcdFx0aW5jKHB0YywgMSlcclxuXHRcdFx0c3RyLnB1c2gob2JqKVxyXG5cdFx0fVxyXG5cdFx0aWYgKGNUeXBlID09PSA4KSB7XHJcblx0XHRcdGFsbG93ZWQgPSB0eXBlMFxyXG5cdFx0XHRhc3RlcmljayA9IGVtcHR5XHJcblx0XHRcdGluYyhwdGMsIG5vZGUubnVtYmVyT2ZBcmd1bWVudHMgKyAyKVxyXG5cdFx0XHRzdHIucHVzaChvYmopXHJcblx0XHRcdC8vIHN0ci5wdXNoKG9wZW5pbmdQYXJPYmopXHJcblx0XHRcdGlmIChub2Rlc1tpICsgMV0udHlwZSAhPT0gNCkge1xyXG5cdFx0XHRcdHN0ci5wdXNoKG9wZW5pbmdQYXJPYmopXHJcblx0XHRcdFx0cHRjLnB1c2gobm9kZS5udW1iZXJPZkFyZ3VtZW50cyArIDIpXHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAoY1R5cGUgPT09IDkpIHtcclxuXHRcdFx0aWYgKHByZS50eXBlID09PSA5KSB7XHJcblx0XHRcdFx0aWYgKHByZS52YWx1ZSA9PT0gTWV4cC5tYXRoLmFkZCkge1xyXG5cdFx0XHRcdFx0cHJlLnZhbHVlID0gY0V2XHJcblx0XHRcdFx0XHRwcmUuc2hvdyA9IGNTaG93XHJcblx0XHRcdFx0XHRpbmMocHRjLCAxKVxyXG5cdFx0XHRcdH0gZWxzZSBpZiAocHJlLnZhbHVlID09PSBNZXhwLm1hdGguc3ViICYmIGNTaG93ID09PSAnLScpIHtcclxuXHRcdFx0XHRcdHByZS52YWx1ZSA9IE1leHAubWF0aC5hZGRcclxuXHRcdFx0XHRcdHByZS5zaG93ID0gJysnXHJcblx0XHRcdFx0XHRpbmMocHRjLCAxKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIGlmIChwcmUudHlwZSAhPT0gNSAmJiBwcmUudHlwZSAhPT0gNyAmJiBwcmUudHlwZSAhPT0gMSAmJiBwcmUudHlwZSAhPT0gMyAmJiBwcmUudHlwZSAhPT0gMTMpIHtcclxuXHRcdFx0XHQvLyBjaGFuZ2VzaWduIG9ubHkgd2hlbiBuZWdhdGl2ZSBpcyBmb3VuZFxyXG5cdFx0XHRcdGlmIChjVG9rZW4gPT09ICctJykge1xyXG5cdFx0XHRcdFx0Ly8gZG8gbm90aGluZyBmb3IgKyB0b2tlblxyXG5cdFx0XHRcdFx0Ly8gZG9uJ3QgYWRkIHdpdGggdGhlIGFib3ZlIGlmIHN0YXRlbWVudCBhcyB0aGF0IHdpbGwgcnVuIHRoZSBlbHNlIHN0YXRlbWVudCBvZiBwYXJlbnQgaWYgb24gQ3Rva2VuICtcclxuXHRcdFx0XHRcdGFsbG93ZWQgPSB0eXBlMFxyXG5cdFx0XHRcdFx0YXN0ZXJpY2sgPSBlbXB0eVxyXG5cdFx0XHRcdFx0aW5jKHB0YywgMikucHVzaCgyKVxyXG5cdFx0XHRcdFx0c3RyLnB1c2goY2hhbmdlU2lnbk9iailcclxuXHRcdFx0XHRcdHN0ci5wdXNoKG9wZW5pbmdQYXJPYmopXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdHN0ci5wdXNoKG9iailcclxuXHRcdFx0XHRpbmMocHRjLCAyKVxyXG5cdFx0XHR9XHJcblx0XHRcdGFsbG93ZWQgPSB0eXBlMFxyXG5cdFx0XHRhc3RlcmljayA9IGVtcHR5XHJcblx0XHR9IGVsc2UgaWYgKGNUeXBlID09PSAxMCkge1xyXG5cdFx0XHRhbGxvd2VkID0gdHlwZTBcclxuXHRcdFx0YXN0ZXJpY2sgPSBlbXB0eVxyXG5cdFx0XHRpbmMocHRjLCAyKVxyXG5cdFx0XHRzdHIucHVzaChvYmopXHJcblx0XHR9IGVsc2UgaWYgKGNUeXBlID09PSAxMSkge1xyXG5cdFx0XHRhbGxvd2VkID0gdHlwZTBcclxuXHRcdFx0YXN0ZXJpY2sgPSBlbXB0eVxyXG5cdFx0XHRzdHIucHVzaChvYmopXHJcblx0XHR9IGVsc2UgaWYgKGNUeXBlID09PSAxMikge1xyXG5cdFx0XHRhbGxvd2VkID0gdHlwZTBcclxuXHRcdFx0YXN0ZXJpY2sgPSBlbXB0eVxyXG5cdFx0XHRpbmMocHRjLCA2KVxyXG5cdFx0XHRzdHIucHVzaChvYmopXHJcblx0XHRcdGlmIChub2Rlc1tpICsgMV0udHlwZSAhPT0gNCkge1xyXG5cdFx0XHRcdHN0ci5wdXNoKG9wZW5pbmdQYXJPYmopXHJcblx0XHRcdFx0cHRjLnB1c2goNilcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmIChjVHlwZSA9PT0gMTMpIHtcclxuXHRcdFx0YWxsb3dlZCA9IHR5cGUxXHJcblx0XHRcdGFzdGVyaWNrID0gdHlwZTNBc3Rlcmlja1xyXG5cdFx0XHRzdHIucHVzaChvYmopXHJcblx0XHR9XHJcblxyXG5cdFx0aW5jKHB0YywgLTEpXHJcblx0XHRwcmV2S2V5ID0gY1Rva2VuXHJcblx0fVxyXG5cdGZvciAoaiA9IHB0Yy5sZW5ndGg7IGotLTsgKSB7XHJcblx0XHQvLyBsb29wIG92ZXIgcHRjXHJcblx0XHRzdHIucHVzaChjbG9zaW5nUGFyT2JqKVxyXG5cdH1cclxuXHRpZiAoYWxsb3dlZFs1XSAhPT0gdHJ1ZSkge1xyXG5cdFx0dGhyb3cgbmV3IE1leHAuRXhjZXB0aW9uKCdjb21wbGV0ZSB0aGUgZXhwcmVzc2lvbicpXHJcblx0fVxyXG5cdHdoaWxlIChicmFjVG9DbG9zZS0tKSB7XHJcblx0XHRzdHIucHVzaChjbG9zaW5nUGFyT2JqKVxyXG5cdH1cclxuXHJcblx0c3RyLnB1c2goY2xvc2luZ1Bhck9iailcclxuXHQvLyAgICAgICAgY29uc29sZS5sb2coc3RyKTtcclxuXHRyZXR1cm4gbmV3IE1leHAoc3RyKVxyXG59XHJcbm1vZHVsZS5leHBvcnRzID0gTWV4cFxyXG4iLCJcclxudmFyIE1leHAgPSByZXF1aXJlKCcuL2xleGVyLmpzJyk7XHJcblxyXG5NZXhwLnByb3RvdHlwZS50b1Bvc3RmaXggPSBmdW5jdGlvbiAoKSB7XHJcblx0J3VzZSBzdHJpY3QnO1xyXG5cdHZhciBwb3N0ID0gW10sIGVsZW0sIHBvcHBlZCwgcHJlcCwgcHJlLCBlbGU7XHJcblx0dmFyIHN0YWNrID0gW3sgdmFsdWU6IFwiKFwiLCB0eXBlOiA0LCBwcmU6IDAgfV07XHJcblx0dmFyIGFyciA9IHRoaXMudmFsdWU7XHJcblx0Zm9yICh2YXIgaSA9IDE7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuXHRcdGlmIChhcnJbaV0udHlwZSA9PT0gMSB8fCBhcnJbaV0udHlwZSA9PT0gMyB8fCBhcnJbaV0udHlwZSA9PT0gMTMpIHtcdC8vaWYgdG9rZW4gaXMgbnVtYmVyLGNvbnN0YW50LG9yIG4od2hpY2ggaXMgYWxzbyBhIHNwZWNpYWwgY29uc3RhbnQgaW4gb3VyIGNhc2UpXHJcblx0XHRcdGlmIChhcnJbaV0udHlwZSA9PT0gMSlcclxuXHRcdFx0XHRhcnJbaV0udmFsdWUgPSBOdW1iZXIoYXJyW2ldLnZhbHVlKTtcclxuXHRcdFx0cG9zdC5wdXNoKGFycltpXSk7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmIChhcnJbaV0udHlwZSA9PT0gNCkge1xyXG5cdFx0XHRzdGFjay5wdXNoKGFycltpXSk7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmIChhcnJbaV0udHlwZSA9PT0gNSkge1xyXG5cdFx0XHR3aGlsZSAoKHBvcHBlZCA9IHN0YWNrLnBvcCgpKS50eXBlICE9PSA0KSB7XHJcblx0XHRcdFx0cG9zdC5wdXNoKHBvcHBlZCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGVsc2UgaWYgKGFycltpXS50eXBlID09PSAxMSkge1xyXG5cdFx0XHR3aGlsZSAoKHBvcHBlZCA9IHN0YWNrLnBvcCgpKS50eXBlICE9PSA0KSB7XHJcblx0XHRcdFx0cG9zdC5wdXNoKHBvcHBlZCk7XHJcblx0XHRcdH1cclxuXHRcdFx0c3RhY2sucHVzaChwb3BwZWQpO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSB7XHJcblx0XHRcdGVsZW0gPSBhcnJbaV07XHJcblx0XHRcdHByZSA9IGVsZW0ucHJlO1xyXG5cdFx0XHRlbGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcclxuXHRcdFx0cHJlcCA9IGVsZS5wcmU7XHJcblx0XHRcdHZhciBmbGFnID0gZWxlLnZhbHVlID09ICdNYXRoLnBvdycgJiYgZWxlbS52YWx1ZSA9PSAnTWF0aC5wb3cnO1xyXG5cdFx0XHRpZiAocHJlID4gcHJlcCkgc3RhY2sucHVzaChlbGVtKTtcclxuXHRcdFx0ZWxzZSB7XHJcblx0XHRcdFx0d2hpbGUgKHByZXAgPj0gcHJlICYmICFmbGFnIHx8IGZsYWcgJiYgcHJlIDwgcHJlcCkge1xyXG5cdFx0XHRcdFx0cG9wcGVkID0gc3RhY2sucG9wKCk7XHJcblx0XHRcdFx0XHRlbGUgPSBzdGFja1tzdGFjay5sZW5ndGggLSAxXTtcclxuXHRcdFx0XHRcdHBvc3QucHVzaChwb3BwZWQpO1xyXG5cdFx0XHRcdFx0cHJlcCA9IGVsZS5wcmU7XHJcblx0XHRcdFx0XHRmbGFnID0gZWxlbS52YWx1ZSA9PSAnTWF0aC5wb3cnICYmIGVsZS52YWx1ZSA9PSAnTWF0aC5wb3cnO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRzdGFjay5wdXNoKGVsZW0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cdHJldHVybiBuZXcgTWV4cChwb3N0KTtcclxufTtcclxubW9kdWxlLmV4cG9ydHMgPSBNZXhwOyIsInZhciBNZXhwID0gcmVxdWlyZSgnLi9wb3N0Zml4LmpzJylcclxuTWV4cC5wcm90b3R5cGUucG9zdGZpeEV2YWwgPSBmdW5jdGlvbiAoVXNlckRlZmluZWQpIHtcclxuXHQndXNlIHN0cmljdCdcclxuXHRVc2VyRGVmaW5lZCA9IFVzZXJEZWZpbmVkIHx8IHt9XHJcblx0VXNlckRlZmluZWQuUEkgPSBNYXRoLlBJXHJcblx0VXNlckRlZmluZWQuRSA9IE1hdGguRVxyXG5cdHZhciBzdGFjayA9IFtdLFxyXG5cdFx0cG9wMSxcclxuXHRcdHBvcDIsXHJcblx0XHRwb3AzXHJcblx0dmFyIGRpc3AgPSBbXVxyXG5cdHZhciB0ZW1wID0gJydcclxuXHR2YXIgYXJyID0gdGhpcy52YWx1ZVxyXG5cdHZhciBib29sID0gdHlwZW9mIFVzZXJEZWZpbmVkLm4gIT09ICd1bmRlZmluZWQnXHJcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuXHRcdGlmIChhcnJbaV0udHlwZSA9PT0gMSkge1xyXG5cdFx0XHRzdGFjay5wdXNoKHsgdmFsdWU6IGFycltpXS52YWx1ZSwgdHlwZTogMSB9KVxyXG5cdFx0fSBlbHNlIGlmIChhcnJbaV0udHlwZSA9PT0gMykge1xyXG5cdFx0XHRzdGFjay5wdXNoKHsgdmFsdWU6IFVzZXJEZWZpbmVkW2FycltpXS52YWx1ZV0sIHR5cGU6IDEgfSlcclxuXHRcdH0gZWxzZSBpZiAoYXJyW2ldLnR5cGUgPT09IDApIHtcclxuXHRcdFx0aWYgKHR5cGVvZiBzdGFja1tzdGFjay5sZW5ndGggLSAxXS50eXBlID09PSAndW5kZWZpbmVkJykge1xyXG5cdFx0XHRcdHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdLnZhbHVlLnB1c2goYXJyW2ldKVxyXG5cdFx0XHR9IGVsc2Ugc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0udmFsdWUgPSBhcnJbaV0udmFsdWUoc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0udmFsdWUpXHJcblx0XHR9IGVsc2UgaWYgKGFycltpXS50eXBlID09PSA3KSB7XHJcblx0XHRcdGlmICh0eXBlb2Ygc3RhY2tbc3RhY2subGVuZ3RoIC0gMV0udHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuXHRcdFx0XHRzdGFja1tzdGFjay5sZW5ndGggLSAxXS52YWx1ZS5wdXNoKGFycltpXSlcclxuXHRcdFx0fSBlbHNlIHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdLnZhbHVlID0gYXJyW2ldLnZhbHVlKHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdLnZhbHVlKVxyXG5cdFx0fSBlbHNlIGlmIChhcnJbaV0udHlwZSA9PT0gOCkge1xyXG5cdFx0XHR2YXIgcG9wcGVkID0gW11cclxuXHRcdFx0Zm9yICh2YXIgeCA9IDA7IHggPCBhcnJbaV0ubnVtYmVyT2ZBcmd1bWVudHM7IHgrKykge1xyXG5cdFx0XHRcdHBvcHBlZC5wdXNoKHN0YWNrLnBvcCgpLnZhbHVlKVxyXG5cdFx0XHR9XHJcblx0XHRcdHN0YWNrLnB1c2goeyB0eXBlOiAxLCB2YWx1ZTogYXJyW2ldLnZhbHVlLmFwcGx5KGFycltpXSwgcG9wcGVkLnJldmVyc2UoKSkgfSlcclxuXHRcdH0gZWxzZSBpZiAoYXJyW2ldLnR5cGUgPT09IDEwKSB7XHJcblx0XHRcdHBvcDEgPSBzdGFjay5wb3AoKVxyXG5cdFx0XHRwb3AyID0gc3RhY2sucG9wKClcclxuXHRcdFx0aWYgKHR5cGVvZiBwb3AyLnR5cGUgPT09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdFx0cG9wMi52YWx1ZSA9IHBvcDIuY29uY2F0KHBvcDEpXHJcblx0XHRcdFx0cG9wMi52YWx1ZS5wdXNoKGFycltpXSlcclxuXHRcdFx0XHRzdGFjay5wdXNoKHBvcDIpXHJcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBvcDEudHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuXHRcdFx0XHRwb3AxLnVuc2hpZnQocG9wMilcclxuXHRcdFx0XHRwb3AxLnB1c2goYXJyW2ldKVxyXG5cdFx0XHRcdHN0YWNrLnB1c2gocG9wMSlcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRzdGFjay5wdXNoKHsgdHlwZTogMSwgdmFsdWU6IGFycltpXS52YWx1ZShwb3AyLnZhbHVlLCBwb3AxLnZhbHVlKSB9KVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKGFycltpXS50eXBlID09PSAyIHx8IGFycltpXS50eXBlID09PSA5KSB7XHJcblx0XHRcdHBvcDEgPSBzdGFjay5wb3AoKVxyXG5cdFx0XHRwb3AyID0gc3RhY2sucG9wKClcclxuXHRcdFx0aWYgKHR5cGVvZiBwb3AyLnR5cGUgPT09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdFx0cG9wMiA9IHBvcDIuY29uY2F0KHBvcDEpXHJcblx0XHRcdFx0cG9wMi5wdXNoKGFycltpXSlcclxuXHRcdFx0XHRzdGFjay5wdXNoKHBvcDIpXHJcblx0XHRcdH0gZWxzZSBpZiAodHlwZW9mIHBvcDEudHlwZSA9PT0gJ3VuZGVmaW5lZCcpIHtcclxuXHRcdFx0XHRwb3AxLnVuc2hpZnQocG9wMilcclxuXHRcdFx0XHRwb3AxLnB1c2goYXJyW2ldKVxyXG5cdFx0XHRcdHN0YWNrLnB1c2gocG9wMSlcclxuXHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRzdGFjay5wdXNoKHsgdHlwZTogMSwgdmFsdWU6IGFycltpXS52YWx1ZShwb3AyLnZhbHVlLCBwb3AxLnZhbHVlKSB9KVxyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2UgaWYgKGFycltpXS50eXBlID09PSAxMikge1xyXG5cdFx0XHRwb3AxID0gc3RhY2sucG9wKClcclxuXHRcdFx0aWYgKHR5cGVvZiBwb3AxLnR5cGUgIT09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdFx0cG9wMSA9IFtwb3AxXVxyXG5cdFx0XHR9XHJcblx0XHRcdHBvcDIgPSBzdGFjay5wb3AoKVxyXG5cdFx0XHRwb3AzID0gc3RhY2sucG9wKClcclxuXHRcdFx0c3RhY2sucHVzaCh7IHR5cGU6IDEsIHZhbHVlOiBhcnJbaV0udmFsdWUocG9wMy52YWx1ZSwgcG9wMi52YWx1ZSwgbmV3IE1leHAocG9wMSkpIH0pXHJcblx0XHR9IGVsc2UgaWYgKGFycltpXS50eXBlID09PSAxMykge1xyXG5cdFx0XHRpZiAoYm9vbCkge1xyXG5cdFx0XHRcdHN0YWNrLnB1c2goeyB2YWx1ZTogVXNlckRlZmluZWRbYXJyW2ldLnZhbHVlXSwgdHlwZTogMyB9KVxyXG5cdFx0XHR9IGVsc2Ugc3RhY2sucHVzaChbYXJyW2ldXSlcclxuXHRcdH1cclxuXHR9XHJcblx0aWYgKHN0YWNrLmxlbmd0aCA+IDEpIHtcclxuXHRcdHRocm93IG5ldyBNZXhwLkV4Y2VwdGlvbignVW5jYXVnaHQgU3ludGF4IGVycm9yJylcclxuXHR9XHJcblx0cmV0dXJuIHN0YWNrWzBdLnZhbHVlID4gMTAwMDAwMDAwMDAwMDAwMCA/ICdJbmZpbml0eScgOiBwYXJzZUZsb2F0KHN0YWNrWzBdLnZhbHVlLnRvRml4ZWQoMTUpKVxyXG59XHJcbk1leHAuZXZhbCA9IGZ1bmN0aW9uIChzdHIsIHRva2Vucywgb2JqKSB7XHJcblx0aWYgKHR5cGVvZiB0b2tlbnMgPT09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRyZXR1cm4gdGhpcy5sZXgoc3RyKS50b1Bvc3RmaXgoKS5wb3N0Zml4RXZhbCgpXHJcblx0fSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAndW5kZWZpbmVkJykge1xyXG5cdFx0aWYgKHR5cGVvZiB0b2tlbnMubGVuZ3RoICE9PSAndW5kZWZpbmVkJykgcmV0dXJuIHRoaXMubGV4KHN0ciwgdG9rZW5zKS50b1Bvc3RmaXgoKS5wb3N0Zml4RXZhbCgpXHJcblx0XHRlbHNlIHJldHVybiB0aGlzLmxleChzdHIpLnRvUG9zdGZpeCgpLnBvc3RmaXhFdmFsKHRva2VucylcclxuXHR9IGVsc2UgcmV0dXJuIHRoaXMubGV4KHN0ciwgdG9rZW5zKS50b1Bvc3RmaXgoKS5wb3N0Zml4RXZhbChvYmopXHJcbn1cclxubW9kdWxlLmV4cG9ydHMgPSBNZXhwXHJcbiIsInZhciBNZXhwPXJlcXVpcmUoJy4vcG9zdGZpeF9ldmFsdWF0b3IuanMnKTtcclxuTWV4cC5wcm90b3R5cGUuZm9ybXVsYUV2YWwgPSBmdW5jdGlvbiAoKSB7XHJcblx0XCJ1c2Ugc3RyaWN0XCI7XHJcblx0dmFyIHN0YWNrPVtdLHBvcDEscG9wMixwb3AzO1xyXG5cdHZhciBkaXNwPVtdO1xyXG5cdHZhciB0ZW1wPScnO1xyXG5cdHZhciBhcnI9dGhpcy52YWx1ZTtcclxuXHRmb3IodmFyIGk9MDtpPGFyci5sZW5ndGg7aSsrKXtcclxuXHRcdGlmKGFycltpXS50eXBlPT09MXx8YXJyW2ldLnR5cGU9PT0zKXtcclxuXHRcdFx0ZGlzcC5wdXNoKHt2YWx1ZTphcnJbaV0udHlwZT09PTM/YXJyW2ldLnNob3c6YXJyW2ldLnZhbHVlLHR5cGU6MX0pO1xyXG5cdFx0fVxyXG5cdFx0ZWxzZSBpZihhcnJbaV0udHlwZT09PTEzKXtcclxuXHRcdFx0ZGlzcC5wdXNoKHt2YWx1ZTphcnJbaV0uc2hvdyx0eXBlOjF9KTtcclxuXHRcdH1cclxuXHRcdGVsc2UgaWYoYXJyW2ldLnR5cGU9PT0wKXtcclxuXHRcdFx0ZGlzcFtkaXNwLmxlbmd0aC0xXT17dmFsdWU6YXJyW2ldLnNob3crKGFycltpXS5zaG93IT1cIi1cIj9cIihcIjpcIlwiKStkaXNwW2Rpc3AubGVuZ3RoLTFdLnZhbHVlKyhhcnJbaV0uc2hvdyE9XCItXCI/XCIpXCI6XCJcIiksdHlwZTowfTtcclxuXHRcdH1cclxuXHRcdGVsc2UgaWYoYXJyW2ldLnR5cGU9PT03KXtcclxuXHRcdFx0ZGlzcFtkaXNwLmxlbmd0aC0xXT17dmFsdWU6KGRpc3BbZGlzcC5sZW5ndGgtMV0udHlwZSE9MT9cIihcIjpcIlwiKStkaXNwW2Rpc3AubGVuZ3RoLTFdLnZhbHVlKyhkaXNwW2Rpc3AubGVuZ3RoLTFdLnR5cGUhPTE/XCIpXCI6XCJcIikrYXJyW2ldLnNob3csdHlwZTo3fTtcclxuXHRcdH1cclxuXHRcdGVsc2UgaWYoYXJyW2ldLnR5cGU9PT0xMCl7XHJcblx0XHRcdHBvcDE9ZGlzcC5wb3AoKTtcclxuXHRcdFx0cG9wMj1kaXNwLnBvcCgpO1xyXG5cdFx0XHRpZihhcnJbaV0uc2hvdz09PSdQJ3x8YXJyW2ldLnNob3c9PT0nQycpZGlzcC5wdXNoKHt2YWx1ZTpcIjxzdXA+XCIrcG9wMi52YWx1ZStcIjwvc3VwPlwiK2FycltpXS5zaG93K1wiPHN1Yj5cIitwb3AxLnZhbHVlK1wiPC9zdWI+XCIsdHlwZToxMH0pO1xyXG5cdFx0XHRlbHNlIGRpc3AucHVzaCh7dmFsdWU6KHBvcDIudHlwZSE9MT9cIihcIjpcIlwiKStwb3AyLnZhbHVlKyhwb3AyLnR5cGUhPTE/XCIpXCI6XCJcIikrXCI8c3VwPlwiK3BvcDEudmFsdWUrXCI8L3N1cD5cIix0eXBlOjF9KTtcclxuXHRcdH1cclxuXHRcdGVsc2UgaWYoYXJyW2ldLnR5cGU9PT0yfHxhcnJbaV0udHlwZT09PTkpe1xyXG5cdFx0XHRwb3AxPWRpc3AucG9wKCk7XHJcblx0XHRcdHBvcDI9ZGlzcC5wb3AoKTtcclxuXHRcdFx0ZGlzcC5wdXNoKHt2YWx1ZToocG9wMi50eXBlIT0xP1wiKFwiOlwiXCIpK3BvcDIudmFsdWUrKHBvcDIudHlwZSE9MT9cIilcIjpcIlwiKSthcnJbaV0uc2hvdysocG9wMS50eXBlIT0xP1wiKFwiOlwiXCIpK3BvcDEudmFsdWUrKHBvcDEudHlwZSE9MT9cIilcIjpcIlwiKSx0eXBlOmFycltpXS50eXBlfSk7XHJcblx0XHR9XHJcblx0XHRlbHNlIGlmKGFycltpXS50eXBlPT09MTIpe1xyXG5cdFx0XHRwb3AxPWRpc3AucG9wKCk7XHJcblx0XHRcdHBvcDI9ZGlzcC5wb3AoKTtcclxuXHRcdFx0cG9wMz1kaXNwLnBvcCgpO1xyXG5cdFx0XHRkaXNwLnB1c2goe3ZhbHVlOmFycltpXS5zaG93K1wiKFwiK3BvcDMudmFsdWUrXCIsXCIrcG9wMi52YWx1ZStcIixcIitwb3AxLnZhbHVlK1wiKVwiLHR5cGU6MTJ9KTtcclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIGRpc3BbMF0udmFsdWU7XHJcbn07XHJcbm1vZHVsZS5leHBvcnRzPU1leHA7IiwiaW1wb3J0IHsgTWFya2Rvd25WaWV3LCBBcHAsIE5vdGljZSwgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IEV4dGVuZGVkQmxvY2tDYWNoZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBnZXRTdG9yZSB9IGZyb20gXCIuL2J1dHRvblN0b3JlXCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZW50QXJyYXksIGhhbmRsZVZhbHVlQXJyYXkgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5leHBvcnQgY29uc3QgcmVtb3ZlQnV0dG9uID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgcmVtb3ZlOiBzdHJpbmcsXG4gIGxpbmVTdGFydDogbnVtYmVyLFxuICBsaW5lRW5kOiBudW1iZXJcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCB7IGNvbnRlbnRBcnJheSwgZmlsZSB9ID0gYXdhaXQgY3JlYXRlQ29udGVudEFycmF5KGFwcCk7XG4gIGNvbnN0IHN0b3JlID0gZ2V0U3RvcmUoYXBwLmlzTW9iaWxlKTtcbiAgaWYgKHJlbW92ZSA9PT0gXCJ0cnVlXCIpIHtcbiAgICBjb25zdCBudW1iZXJPZkl0ZW1zID0gbGluZUVuZCAtIGxpbmVTdGFydDtcbiAgICBjb250ZW50QXJyYXkuc3BsaWNlKGxpbmVTdGFydCwgbnVtYmVyT2ZJdGVtcyArIDEpO1xuICAgIGlmIChcbiAgICAgIGNvbnRlbnRBcnJheVtsaW5lU3RhcnRdICYmXG4gICAgICBjb250ZW50QXJyYXlbbGluZVN0YXJ0XS5pbmNsdWRlcyhcIl5idXR0b24tXCIpXG4gICAgKSB7XG4gICAgICBjb250ZW50QXJyYXkuc3BsaWNlKGxpbmVTdGFydCwgMSk7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRlbnQgPSBjb250ZW50QXJyYXkuam9pbihcIlxcblwiKTtcbiAgICBhd2FpdCBhcHAudmF1bHQubW9kaWZ5KGZpbGUsIGNvbnRlbnQpO1xuICB9XG4gIGlmIChsaW5lU3RhcnQgPT09IGxpbmVFbmQpIHtcbiAgICBjb250ZW50QXJyYXkuc3BsaWNlKGxpbmVTdGFydCwgMSk7XG4gICAgY29uc3QgY29udGVudCA9IGNvbnRlbnRBcnJheS5qb2luKFwiXFxuXCIpO1xuICAgIGF3YWl0IGFwcC52YXVsdC5tb2RpZnkoZmlsZSwgY29udGVudCk7XG4gIH0gZWxzZSB7XG4gICAgaGFuZGxlVmFsdWVBcnJheShyZW1vdmUsIGFzeW5jIChhcmdBcnJheSkgPT4ge1xuICAgICAgY29uc3QgYnV0dG9ucyA9XG4gICAgICAgIHN0b3JlICYmXG4gICAgICAgIHN0b3JlLmZpbHRlcigoaXRlbTogRXh0ZW5kZWRCbG9ja0NhY2hlKSA9PiB7XG4gICAgICAgICAgbGV0IGV4aXN0cztcbiAgICAgICAgICBhcmdBcnJheS5mb3JFYWNoKChhcmcpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSBgYnV0dG9uLSR7YXJnfWAgJiYgaXRlbS5wYXRoID09PSBmaWxlLnBhdGgpIHtcbiAgICAgICAgICAgICAgZXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm4gZXhpc3RzO1xuICAgICAgICB9KTtcbiAgICAgIGlmIChidXR0b25zWzBdKSB7XG4gICAgICAgIGxldCBvZmZzZXQgPSAwO1xuICAgICAgICBidXR0b25zLmZvckVhY2goKGJ1dHRvbjogRXh0ZW5kZWRCbG9ja0NhY2hlKSA9PiB7XG4gICAgICAgICAgY29uc3Qgc3RhcnQgPSBidXR0b24ucG9zaXRpb24uc3RhcnQubGluZSAtIG9mZnNldDtcbiAgICAgICAgICBjb25zdCBudW1MaW5lcyA9XG4gICAgICAgICAgICBidXR0b24ucG9zaXRpb24uZW5kLmxpbmUgLSBidXR0b24ucG9zaXRpb24uc3RhcnQubGluZTtcbiAgICAgICAgICBjb250ZW50QXJyYXkuc3BsaWNlKHN0YXJ0LCBudW1MaW5lcyArIDIpO1xuICAgICAgICAgIG9mZnNldCArPSBudW1MaW5lcyArIDI7XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBjb250ZW50ID0gY29udGVudEFycmF5LmpvaW4oXCJcXG5cIik7XG4gICAgICAgIGF3YWl0IGFwcC52YXVsdC5tb2RpZnkoZmlsZSwgY29udGVudCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVTZWN0aW9uID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgc2VjdGlvbjogc3RyaW5nXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgeyBjb250ZW50QXJyYXksIGZpbGUgfSA9IGF3YWl0IGNyZWF0ZUNvbnRlbnRBcnJheShhcHApO1xuICBpZiAoc2VjdGlvbi5pbmNsdWRlcyhcIltcIikgJiYgc2VjdGlvbi5pbmNsdWRlcyhcIl1cIikpIHtcbiAgICBjb25zdCBhcmdzID0gc2VjdGlvbi5tYXRjaCgvXFxbKC4qKVxcXS8pO1xuICAgIGlmIChhcmdzWzFdKSB7XG4gICAgICBjb25zdCBhcmdBcnJheSA9IGFyZ3NbMV0uc3BsaXQoLyxcXHM/Lyk7XG4gICAgICBpZiAoYXJnQXJyYXlbMF0pIHtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBwYXJzZUludChhcmdBcnJheVswXSkgLSAxO1xuICAgICAgICBjb25zdCBlbmQgPSBwYXJzZUludChhcmdBcnJheVsxXSk7XG4gICAgICAgIGNvbnN0IG51bUxpbmVzID0gZW5kIC0gc3RhcnQ7XG4gICAgICAgIGNvbnRlbnRBcnJheS5zcGxpY2Uoc3RhcnQsIG51bUxpbmVzKTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGNvbnRlbnRBcnJheS5qb2luKFwiXFxuXCIpO1xuICAgICAgICBhd2FpdCBhcHAudmF1bHQubW9kaWZ5KGZpbGUsIGNvbnRlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHByZXBlbmRDb250ZW50ID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgaW5zZXJ0OiBzdHJpbmcsXG4gIGxpbmVTdGFydDogbnVtYmVyXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgYWN0aXZlVmlldyA9IGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpO1xuICBpZiAoYWN0aXZlVmlldykge1xuICAgIGNvbnN0IGZpbGUgPSBhY3RpdmVWaWV3LmZpbGU7XG4gICAgbGV0IGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICBjb25zdCBjb250ZW50QXJyYXkgPSBjb250ZW50LnNwbGl0KFwiXFxuXCIpO1xuICAgIGNvbnRlbnRBcnJheS5zcGxpY2UobGluZVN0YXJ0LCAwLCBpbnNlcnQpO1xuICAgIGNvbnRlbnQgPSBjb250ZW50QXJyYXkuam9pbihcIlxcblwiKTtcbiAgICBhd2FpdCBhcHAudmF1bHQubW9kaWZ5KGZpbGUsIGNvbnRlbnQpO1xuICB9IGVsc2Uge1xuICAgIG5ldyBOb3RpY2UoXCJUaGVyZSB3YXMgYW4gaXNzdWUgcHJlcGVuZGluZyBjb250ZW50LCBwbGVhc2UgdHJ5IGFnYWluXCIsIDIwMDApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYXBwZW5kQ29udGVudCA9IGFzeW5jIChcbiAgYXBwOiBBcHAsXG4gIGluc2VydDogc3RyaW5nLFxuICBsaW5lRW5kOiBudW1iZXJcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBhY3RpdmVWaWV3ID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gIGlmIChhY3RpdmVWaWV3KSB7XG4gICAgY29uc3QgZmlsZSA9IGFjdGl2ZVZpZXcuZmlsZTtcbiAgICBsZXQgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICAgIGNvbnN0IGNvbnRlbnRBcnJheSA9IGNvbnRlbnQuc3BsaXQoXCJcXG5cIik7XG4gICAgbGV0IGluc2VydGlvblBvaW50O1xuICAgIGlmIChcbiAgICAgIGNvbnRlbnRBcnJheVtsaW5lRW5kICsgMV0gJiZcbiAgICAgIGNvbnRlbnRBcnJheVtsaW5lRW5kICsgMV0uaW5jbHVkZXMoXCJeYnV0dG9uXCIpXG4gICAgKSB7XG4gICAgICBpbnNlcnRpb25Qb2ludCA9IGxpbmVFbmQgKyAyO1xuICAgICAgaW5zZXJ0ID0gYFxcbiR7aW5zZXJ0fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluc2VydGlvblBvaW50ID0gbGluZUVuZCArIDE7XG4gICAgfVxuICAgIGNvbnRlbnRBcnJheS5zcGxpY2UoaW5zZXJ0aW9uUG9pbnQsIDAsIGAke2luc2VydH1gKTtcbiAgICBjb250ZW50ID0gY29udGVudEFycmF5LmpvaW4oXCJcXG5cIik7XG4gICAgYXdhaXQgYXBwLnZhdWx0Lm1vZGlmeShmaWxlLCBjb250ZW50KTtcbiAgfSBlbHNlIHtcbiAgICBuZXcgTm90aWNlKFwiVGhlcmUgd2FzIGFuIGlzc3VlIGFwcGVuZGluZyBjb250ZW50LCBwbGVhc2UgdHJ5IGFnYWluXCIsIDIwMDApO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYWRkQ29udGVudEF0TGluZSA9IGFzeW5jIChcbiAgYXBwOiBBcHAsXG4gIGluc2VydDogc3RyaW5nLFxuICB0eXBlOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICBjb25zdCBsaW5lTnVtYmVyID0gdHlwZS5tYXRjaCgvKFxcZCspL2cpO1xuICBpZiAobGluZU51bWJlclswXSkge1xuICAgIGNvbnN0IGluc2VydGlvblBvaW50ID0gcGFyc2VJbnQobGluZU51bWJlclswXSkgLSAxO1xuICAgIGNvbnN0IGFjdGl2ZVZpZXcgPSBhcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcbiAgICBpZiAoYWN0aXZlVmlldykge1xuICAgICAgY29uc3QgZmlsZSA9IGFjdGl2ZVZpZXcuZmlsZTtcbiAgICAgIGxldCBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gICAgICBjb25zdCBjb250ZW50QXJyYXkgPSBjb250ZW50LnNwbGl0KFwiXFxuXCIpO1xuICAgICAgY29udGVudEFycmF5LnNwbGljZShpbnNlcnRpb25Qb2ludCwgMCwgYCR7aW5zZXJ0fWApO1xuICAgICAgY29udGVudCA9IGNvbnRlbnRBcnJheS5qb2luKFwiXFxuXCIpO1xuICAgICAgYXdhaXQgYXBwLnZhdWx0Lm1vZGlmeShmaWxlLCBjb250ZW50KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbmV3IE5vdGljZShcIlRoZXJlIHdhcyBhbiBpc3N1ZSBhZGRpbmcgY29udGVudCwgcGxlYXNlIHRyeSBhZ2FpblwiLCAyMDAwKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU5vdGUgPSBhc3luYyAoXG4gIGFwcDogQXBwLFxuICBjb250ZW50OiBzdHJpbmcsXG4gIHR5cGU6IHN0cmluZ1xuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHBhdGggPSB0eXBlLm1hdGNoKC9cXCgoW1xcc1xcU10qPyksP1xccz8oc3BsaXQpP1xcKS8pO1xuICBpZiAocGF0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBhcHAudmF1bHQuY3JlYXRlKGAke3BhdGhbMV19Lm1kYCwgY29udGVudCk7XG4gICAgICBjb25zdCBmaWxlID0gYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChgJHtwYXRoWzFdfS5tZGApIGFzIFRGaWxlO1xuICAgICAgaWYgKHBhdGhbMl0pIHtcbiAgICAgICAgYXdhaXQgYXBwLndvcmtzcGFjZS5zcGxpdEFjdGl2ZUxlYWYoKS5vcGVuRmlsZShmaWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZi5vcGVuRmlsZShmaWxlKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBuZXcgTm90aWNlKFwiVGhlcmUgd2FzIGFuIGVycm9yISBNYXliZSB0aGUgZmlsZSBhbHJlYWR5IGV4aXN0cz9cIiwgMjAwMCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5ldyBOb3RpY2UoYGNvdWxkbid0IHBhcnNlIHRoZSBwYXRoIWAsIDIwMDApO1xuICB9XG59O1xuIiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBBcmd1bWVudHMsIFBvc2l0aW9uIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRlbnRBcnJheSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRCdXR0b25Qb3NpdGlvbiA9IChcbiAgY29udGVudDogc3RyaW5nLFxuICBhcmdzOiBBcmd1bWVudHNcbik6IFBvc2l0aW9uID0+IHtcbiAgbGV0IGZpbmFsUG9zaXRpb246IFBvc2l0aW9uO1xuICBjb25zdCBwb3NzaWJsZVBvc2l0aW9uczogUG9zaXRpb25bXSA9IFtdO1xuICBsZXQgcG9zc2libGVQb3NpdGlvbjogUG9zaXRpb24gPSB7IGxpbmVTdGFydDogMCwgbGluZUVuZDogMCB9O1xuICBjb25zdCBjb250ZW50QXJyYXkgPSBjb250ZW50LnNwbGl0KFwiXFxuXCIpO1xuICBsZXQgb3BlbiA9IGZhbHNlO1xuICBjb250ZW50QXJyYXkuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICBpZiAoaXRlbS5pbmNsdWRlcyhcImBgYFwiKSkge1xuICAgICAgaWYgKG9wZW4gPT09IGZhbHNlKSB7XG4gICAgICAgIHBvc3NpYmxlUG9zaXRpb24ubGluZVN0YXJ0ID0gaW5kZXg7XG4gICAgICAgIG9wZW4gPSB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcG9zc2libGVQb3NpdGlvbi5saW5lRW5kID0gaW5kZXg7XG4gICAgICAgIHBvc3NpYmxlUG9zaXRpb25zLnB1c2gocG9zc2libGVQb3NpdGlvbik7XG4gICAgICAgIHBvc3NpYmxlUG9zaXRpb24gPSB7IGxpbmVTdGFydDogMCwgbGluZUVuZDogMCB9O1xuICAgICAgICBvcGVuID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgcG9zc2libGVQb3NpdGlvbnMuZm9yRWFjaCgocG9zaXRpb24pID0+IHtcbiAgICBjb25zdCBjb2RlYmxvY2sgPSBjb250ZW50QXJyYXlcbiAgICAgIC5zbGljZShwb3NpdGlvbi5saW5lU3RhcnQsIHBvc2l0aW9uLmxpbmVFbmQgKyAxKVxuICAgICAgLmpvaW4oXCJcXG5cIik7XG4gICAgaWYgKGNvZGVibG9jay5pbmNsdWRlcyhcImJ1dHRvblwiKSAmJiBjb2RlYmxvY2suaW5jbHVkZXMoYXJncy5uYW1lKSkge1xuICAgICAgZmluYWxQb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBmaW5hbFBvc2l0aW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldElubGluZUJ1dHRvblBvc2l0aW9uID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgaWQ6IHN0cmluZ1xuKTogUHJvbWlzZTxQb3NpdGlvbj4gPT4ge1xuICBjb25zdCBjb250ZW50ID0gYXdhaXQgY3JlYXRlQ29udGVudEFycmF5KGFwcCk7XG4gIGNvbnN0IHBvc2l0aW9uID0geyBsaW5lU3RhcnQ6IDAsIGxpbmVFbmQ6IDAgfTtcbiAgY29udGVudC5jb250ZW50QXJyYXlcbiAgICAubWFwKChsaW5lOiBzdHJpbmcpID0+IGxpbmUuc3BsaXQoXCIgXCIpKVxuICAgIC5mb3JFYWNoKCh3b3JkcywgaW5kZXgpID0+IHtcbiAgICAgIHdvcmRzLmZvckVhY2goKHdvcmQpID0+IHtcbiAgICAgICAgaWYgKHdvcmQuc3RhcnRzV2l0aChcImBidXR0b25cIikpIHtcbiAgICAgICAgICBpZiAod29yZCA9PT0gYFxcYGJ1dHRvbi0ke2lkfVxcYGApIHtcbiAgICAgICAgICAgIHBvc2l0aW9uLmxpbmVTdGFydCA9IGluZGV4O1xuICAgICAgICAgICAgcG9zaXRpb24ubGluZUVuZCA9IGluZGV4O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIHJldHVybiBwb3NpdGlvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kTnVtYmVyID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgbGluZU51bWJlcjogbnVtYmVyXG4pOiBQcm9taXNlPHN0cmluZ1tdPiA9PiB7XG4gIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBjcmVhdGVDb250ZW50QXJyYXkoYXBwKTtcbiAgY29uc3QgdmFsdWU6IHN0cmluZ1tdID0gW107XG4gIGNvbnRlbnQuY29udGVudEFycmF5LmZvckVhY2goKGxpbmU6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGlmIChpbmRleCA9PT0gbGluZU51bWJlciAtIDEpIHtcbiAgICAgIHZhbHVlLnB1c2gobGluZSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgY29udmVydFdvcmRzID0gdmFsdWVcbiAgICAuam9pbihcIlwiKVxuICAgIC5yZXBsYWNlKFwicGx1c1wiLCBcIitcIilcbiAgICAucmVwbGFjZShcIm1pbnVzXCIsIFwiLVwiKVxuICAgIC5yZXBsYWNlKFwidGltZXNcIiwgXCIqXCIpXG4gICAgLnJlcGxhY2UoL2RpdmlkZShkKT8oXFxzYnkpPy9nLCBcIi9cIik7XG4gIGNvbnN0IG51bWJlcnMgPSBjb252ZXJ0V29yZHMucmVwbGFjZSgvXFxzL2csIFwiXCIpLm1hdGNoKC9bXlxcdzpdKj9cXGQrPy9nKTtcbiAgcmV0dXJuIG51bWJlcnM7XG59O1xuIiwiaW1wb3J0IHsgQXBwLCBNYXJrZG93blZpZXcsIE5vdGljZSwgVEZpbGUgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBtZXhwIGZyb20gXCJtYXRoLWV4cHJlc3Npb24tZXZhbHVhdG9yXCI7XG5cbmltcG9ydCB7IEFyZ3VtZW50cywgUG9zaXRpb24gfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHtcbiAgYXBwZW5kQ29udGVudCxcbiAgY3JlYXRlTm90ZSxcbiAgcHJlcGVuZENvbnRlbnQsXG4gIGFkZENvbnRlbnRBdExpbmUsXG4gIHJlbW92ZUJ1dHRvbixcbiAgcmVtb3ZlU2VjdGlvbixcbn0gZnJvbSBcIi4vaGFuZGxlcnNcIjtcbmltcG9ydCB7XG4gIGdldEJ1dHRvblBvc2l0aW9uLFxuICBnZXRJbmxpbmVCdXR0b25Qb3NpdGlvbixcbiAgZmluZE51bWJlcixcbn0gZnJvbSBcIi4vcGFyc2VyXCI7XG5pbXBvcnQgeyBoYW5kbGVWYWx1ZUFycmF5LCBnZXROZXdBcmdzIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7XG4gIGdldEJ1dHRvblN3YXBCeUlkLFxuICBzZXRCdXR0b25Td2FwQnlJZCxcbiAgZ2V0QnV0dG9uQnlJZCxcbn0gZnJvbSBcIi4vYnV0dG9uU3RvcmVcIjtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZSA9IGFzeW5jIChcbiAgYXBwOiBBcHAsXG4gIHsgYWN0aW9uIH06IEFyZ3VtZW50cyxcbiAgcG9zaXRpb246IFBvc2l0aW9uXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgbGV0IGVxdWF0aW9uID0gYWN0aW9uO1xuICBjb25zdCB2YXJpYWJsZXMgPSBhY3Rpb24ubWF0Y2goL1xcJFswLTldKi9nKTtcbiAgaWYgKHZhcmlhYmxlcykge1xuICAgIGNvbnN0IG91dHB1dCA9IHZhcmlhYmxlcy5tYXAoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICBjb25zdCBhY3RpdmVWaWV3ID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gICAgICBpZiAoYWN0aXZlVmlldykge1xuICAgICAgICBjb25zdCBsaW5lTnVtYmVyID0gcGFyc2VJbnQodmFsdWUuc3Vic3RyaW5nKDEpKTtcbiAgICAgICAgY29uc3QgbnVtYmVycyA9IGF3YWl0IGZpbmROdW1iZXIoYXBwLCBsaW5lTnVtYmVyKTtcbiAgICAgICAgcmV0dXJuIHsgdmFyaWFibGU6IHZhbHVlLCBudW1iZXJzIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXcgTm90aWNlKGBjb3VsZG4ndCByZWFkIGZpbGVgLCAyMDAwKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCByZXNvbHZlZCA9IGF3YWl0IFByb21pc2UuYWxsKG91dHB1dCk7XG4gICAgcmVzb2x2ZWQuZm9yRWFjaCgodGVybTogeyB2YXJpYWJsZTogc3RyaW5nOyBudW1iZXJzOiBzdHJpbmdbXSB9KSA9PiB7XG4gICAgICBpZiAodGVybS5udW1iZXJzKSB7XG4gICAgICAgIGVxdWF0aW9uID0gZXF1YXRpb24ucmVwbGFjZSh0ZXJtLnZhcmlhYmxlLCB0ZXJtLm51bWJlcnMuam9pbihcIlwiKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXcgTm90aWNlKFwiQ2hlY2sgdGhlIGxpbmUgbnVtYmVyIGluIHlvdXIgY2FsY3VsYXRlIGJ1dHRvblwiLCAzMDAwKTtcbiAgICAgICAgZXF1YXRpb24gPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgY29uc3QgZnVuID0gZXF1YXRpb24gJiYgbWV4cC5ldmFsKGVxdWF0aW9uKTtcbiAgZnVuICYmIGFwcGVuZENvbnRlbnQoYXBwLCBgUmVzdWx0OiAke2Z1bn1gLCBwb3NpdGlvbi5saW5lRW5kKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZW1vdmUgPSAoXG4gIGFwcDogQXBwLFxuICB7IHJlbW92ZSB9OiBBcmd1bWVudHMsXG4gIHsgbGluZVN0YXJ0LCBsaW5lRW5kIH06IHsgbGluZVN0YXJ0OiBudW1iZXI7IGxpbmVFbmQ6IG51bWJlciB9XG4pOiB2b2lkID0+IHtcbiAgc2V0VGltZW91dCgoKSA9PiByZW1vdmVCdXR0b24oYXBwLCByZW1vdmUsIGxpbmVTdGFydCwgbGluZUVuZCksIDEwMDApO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlcGxhY2UgPSAoYXBwOiBBcHAsIHsgcmVwbGFjZSB9OiBBcmd1bWVudHMpOiB2b2lkID0+IHtcbiAgcmVtb3ZlU2VjdGlvbihhcHAsIHJlcGxhY2UpO1xufTtcbmV4cG9ydCBjb25zdCB0ZXh0ID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgYXJnczogQXJndW1lbnRzLFxuICBwb3NpdGlvbjogUG9zaXRpb25cbik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAvLyBwcmVwZW5kIHRlbXBsYXRlIGFib3ZlIHRoZSBidXR0b25cbiAgaWYgKGFyZ3MudHlwZS5pbmNsdWRlcyhcInByZXBlbmRcIikpIHtcbiAgICBwcmVwZW5kQ29udGVudChhcHAsIGFyZ3MuYWN0aW9uLCBwb3NpdGlvbi5saW5lU3RhcnQpO1xuICB9XG4gIC8vIGFwcGVuZCB0ZW1wbGF0ZSBiZWxvdyB0aGUgYnV0dG9uXG4gIGlmIChhcmdzLnR5cGUuaW5jbHVkZXMoXCJhcHBlbmRcIikpIHtcbiAgICBhcHBlbmRDb250ZW50KGFwcCwgYXJncy5hY3Rpb24sIHBvc2l0aW9uLmxpbmVFbmQpO1xuICB9XG4gIGlmIChhcmdzLnR5cGUuaW5jbHVkZXMoXCJub3RlXCIpKSB7XG4gICAgY3JlYXRlTm90ZShhcHAsIGFyZ3MuYWN0aW9uLCBhcmdzLnR5cGUpO1xuICB9XG4gIGlmIChhcmdzLnR5cGUuaW5jbHVkZXMoXCJsaW5lXCIpKSB7XG4gICAgYWRkQ29udGVudEF0TGluZShhcHAsIGFyZ3MuYWN0aW9uLCBhcmdzLnR5cGUpO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdGVtcGxhdGUgPSBhc3luYyAoXG4gIGFwcDogQXBwLFxuICBhcmdzOiBBcmd1bWVudHMsXG4gIHBvc2l0aW9uOiBQb3NpdGlvblxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHRlbXBsYXRlc0VuYWJsZWQgPSBhcHAuaW50ZXJuYWxQbHVnaW5zLnBsdWdpbnMudGVtcGxhdGVzLmVuYWJsZWQ7XG4gIGNvbnN0IHRlbXBsYXRlclBsdWdpbkVuYWJsZWQgPVxuICAgIGFwcC5wbHVnaW5zLnBsdWdpbnNbXCJ0ZW1wbGF0ZXItb2JzaWRpYW5cIl07XG5cbiAgLy8gb25seSBydW4gaWYgdGVtcGxhdGVzIHBsdWdpbiBpcyBlbmFibGVkXG4gIGlmICh0ZW1wbGF0ZXNFbmFibGVkIHx8IHRlbXBsYXRlclBsdWdpbkVuYWJsZWQpIHtcbiAgICBjb25zdCBmb2xkZXJzOiBzdHJpbmdbXSA9IFtcbiAgICAgIHRlbXBsYXRlc0VuYWJsZWQgJiYgYXBwLmludGVybmFsUGx1Z2lucy5wbHVnaW5zLnRlbXBsYXRlcy5pbnN0YW5jZS5vcHRpb25zLmZvbGRlcj8udG9Mb3dlckNhc2UoKSxcbiAgICAgIHRlbXBsYXRlclBsdWdpbkVuYWJsZWQgJiYgYXBwLnBsdWdpbnM/LnBsdWdpbnNbXG4gICAgICAgIFwidGVtcGxhdGVyLW9ic2lkaWFuXCJcbiAgICAgIF0/LnNldHRpbmdzLnRlbXBsYXRlX2ZvbGRlcj8udG9Mb3dlckNhc2UoKSxcbiAgICAgIHRlbXBsYXRlclBsdWdpbkVuYWJsZWQgJiYgYXBwLnBsdWdpbnM/LnBsdWdpbnNbXG4gICAgICAgIFwidGVtcGxhdGVyLW9ic2lkaWFuXCJcbiAgICAgIF0/LnNldHRpbmdzLnRlbXBsYXRlc19mb2xkZXI/LnRvTG93ZXJDYXNlKCksXG4gICAgXS5maWx0ZXIoKGZvbGRlcikgPT4gZm9sZGVyKTtcbiAgICBjb25zdCB0ZW1wbGF0ZUZpbGUgPSBhcmdzLmFjdGlvbi50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGFsbEZpbGVzID0gYXBwLnZhdWx0LmdldEZpbGVzKCk7XG4gICAgY29uc3QgZmlsZTogVEZpbGUgPSBhbGxGaWxlcy5maWx0ZXIoKGZpbGUpID0+IHtcbiAgICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgICAgZm9sZGVyc1swXSAmJlxuICAgICAgICBmb2xkZXJzLmZvckVhY2goKGZvbGRlcikgPT4ge1xuICAgICAgICAgIGlmIChmaWxlLnBhdGgudG9Mb3dlckNhc2UoKSA9PT0gYCR7Zm9sZGVyfS8ke3RlbXBsYXRlRmlsZX0ubWRgKSB7XG4gICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIHJldHVybiBmb3VuZDtcbiAgICB9KVswXTtcbiAgICBpZiAoZmlsZSkge1xuICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICAgICAgLy8gcHJlcGVuZCB0ZW1wbGF0ZSBhYm92ZSB0aGUgYnV0dG9uXG4gICAgICBpZiAoYXJncy50eXBlLmluY2x1ZGVzKFwicHJlcGVuZFwiKSkge1xuICAgICAgICBwcmVwZW5kQ29udGVudChhcHAsIGNvbnRlbnQsIHBvc2l0aW9uLmxpbmVTdGFydCk7XG4gICAgICAgIHNldFRpbWVvdXQoXG4gICAgICAgICAgKCkgPT5cbiAgICAgICAgICAgIGFwcC5jb21tYW5kcy5leGVjdXRlQ29tbWFuZEJ5SWQoXG4gICAgICAgICAgICAgIFwidGVtcGxhdGVyLW9ic2lkaWFuOnJlcGxhY2UtaW4tZmlsZS10ZW1wbGF0ZXJcIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAxMDBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIC8vIGFwcGVuZCB0ZW1wbGF0ZSBiZWxvdyB0aGUgYnV0dG9uXG4gICAgICBpZiAoYXJncy50eXBlLmluY2x1ZGVzKFwiYXBwZW5kXCIpKSB7XG4gICAgICAgIGFwcGVuZENvbnRlbnQoYXBwLCBjb250ZW50LCBwb3NpdGlvbi5saW5lRW5kKTtcbiAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgYXBwLmNvbW1hbmRzLmV4ZWN1dGVDb21tYW5kQnlJZChcbiAgICAgICAgICAgICAgXCJ0ZW1wbGF0ZXItb2JzaWRpYW46cmVwbGFjZS1pbi1maWxlLXRlbXBsYXRlclwiXG4gICAgICAgICAgICApLFxuICAgICAgICAgIDEwMFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3MudHlwZS5pbmNsdWRlcyhcIm5vdGVcIikpIHtcbiAgICAgICAgY3JlYXRlTm90ZShhcHAsIGNvbnRlbnQsIGFyZ3MudHlwZSk7XG4gICAgICB9XG4gICAgICBpZiAoYXJncy50eXBlLmluY2x1ZGVzKFwibGluZVwiKSkge1xuICAgICAgICBhZGRDb250ZW50QXRMaW5lKGFwcCwgY29udGVudCwgYXJncy50eXBlKTtcbiAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAoKSA9PlxuICAgICAgICAgICAgYXBwLmNvbW1hbmRzLmV4ZWN1dGVDb21tYW5kQnlJZChcbiAgICAgICAgICAgICAgXCJ0ZW1wbGF0ZXItb2JzaWRpYW46cmVwbGFjZS1pbi1maWxlLXRlbXBsYXRlclwiXG4gICAgICAgICAgICApLFxuICAgICAgICAgIDEwMFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBuZXcgTm90aWNlKFxuICAgICAgICBgQ291bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWVkIHRlbXBsYXRlLCBwbGVhc2UgY2hlY2sgYW5kIHRyeSBhZ2FpbmAsXG4gICAgICAgIDIwMDBcbiAgICAgICk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5ldyBOb3RpY2UoXG4gICAgICBcIllvdSBuZWVkIHRvIGhhdmUgdGhlIFRlbXBsYXRlcyBvciBUZW1wbGF0ZXIgcGx1Z2luIGVuYWJsZWQgYW5kIFRlbXBsYXRlIGZvbGRlciBkZWZpbmVkXCIsXG4gICAgICAyMDAwXG4gICAgKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGxpbmsgPSAoeyBhY3Rpb24gfTogQXJndW1lbnRzKTogdm9pZCA9PiB7XG4gIGNvbnN0IGxpbmsgPSBhY3Rpb24udHJpbSgpO1xuICB3aW5kb3cub3BlbihsaW5rKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjb21tYW5kID0gKGFwcDogQXBwLCB7IGFjdGlvbiB9OiBBcmd1bWVudHMpOiB2b2lkID0+IHtcbiAgY29uc3QgYWxsQ29tbWFuZHMgPSBhcHAuY29tbWFuZHMubGlzdENvbW1hbmRzKCk7XG4gIGNvbnN0IGNvbW1hbmQgPSBhbGxDb21tYW5kcy5maWx0ZXIoXG4gICAgKGNvbW1hbmQpID0+IGNvbW1hbmQubmFtZS50b1VwcGVyQ2FzZSgpID09PSBhY3Rpb24udG9VcHBlckNhc2UoKS50cmltKClcbiAgKVswXTtcbiAgYXBwLmNvbW1hbmRzLmV4ZWN1dGVDb21tYW5kQnlJZChjb21tYW5kLmlkKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzd2FwID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgc3dhcDogc3RyaW5nLFxuICBpZDogc3RyaW5nLFxuICBpbmxpbmU6IGJvb2xlYW4sXG4gIGZpbGU6IFRGaWxlXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgaGFuZGxlVmFsdWVBcnJheShzd2FwLCBhc3luYyAoYXJnQXJyYXkpID0+IHtcbiAgICBjb25zdCBzd2FwID0gYXdhaXQgZ2V0QnV0dG9uU3dhcEJ5SWQoYXBwLCBpZCk7XG4gICAgY29uc3QgbmV3U3dhcCA9IHN3YXAgKyAxID4gYXJnQXJyYXkubGVuZ3RoIC0gMSA/IDAgOiBzd2FwICsgMTtcbiAgICBzZXRCdXR0b25Td2FwQnlJZChhcHAsIGlkLCBuZXdTd2FwKTtcbiAgICBsZXQgYXJncyA9IGF3YWl0IGdldEJ1dHRvbkJ5SWQoYXBwLCBhcmdBcnJheVtzd2FwXSk7XG4gICAgbGV0IHBvc2l0aW9uO1xuICAgIGxldCBjb250ZW50O1xuICAgIGlmIChhcmdzKSB7XG4gICAgICBpZiAoYXJncy50ZW1wbGF0ZXIpIHtcbiAgICAgICAgYXJncyA9IGF3YWl0IHRlbXBsYXRlcihhcHAsIHBvc2l0aW9uKTtcbiAgICAgICAgaWYgKGlubGluZSkge1xuICAgICAgICAgIG5ldyBOb3RpY2UoXCJ0ZW1wbGF0ZXIgYXJncyBkb24ndCB3b3JrIHdpdGggaW5saW5lIGJ1dHRvbnMgeWV0XCIsIDIwMDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoYXJncy5yZXBsYWNlKSB7XG4gICAgICAgIHJlcGxhY2UoYXBwLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmdzLnR5cGUgPT09IFwiY29tbWFuZFwiKSB7XG4gICAgICAgIGNvbW1hbmQoYXBwLCBhcmdzKTtcbiAgICAgIH1cbiAgICAgIC8vIGhhbmRsZSBsaW5rIGJ1dHRvbnNcbiAgICAgIGlmIChhcmdzLnR5cGUgPT09IFwibGlua1wiKSB7XG4gICAgICAgIGxpbmsoYXJncyk7XG4gICAgICB9XG4gICAgICAvLyBoYW5kbGUgdGVtcGxhdGUgYnV0dG9uc1xuICAgICAgaWYgKGFyZ3MudHlwZSAmJiBhcmdzLnR5cGUuaW5jbHVkZXMoXCJ0ZW1wbGF0ZVwiKSkge1xuICAgICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gICAgICAgICAgcG9zaXRpb24gPSBpbmxpbmVcbiAgICAgICAgICAgID8gYXdhaXQgZ2V0SW5saW5lQnV0dG9uUG9zaXRpb24oYXBwLCBpZClcbiAgICAgICAgICAgIDogZ2V0QnV0dG9uUG9zaXRpb24oY29udGVudCwgYXJncyk7XG4gICAgICAgICAgdGVtcGxhdGUoYXBwLCBhcmdzLCBwb3NpdGlvbik7XG4gICAgICAgIH0sIDUwKTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmdzLnR5cGUgPT09IFwiY2FsY3VsYXRlXCIpIHtcbiAgICAgICAgY2FsY3VsYXRlKGFwcCwgYXJncywgcG9zaXRpb24pO1xuICAgICAgfVxuICAgICAgaWYgKGFyZ3MudHlwZSAmJiBhcmdzLnR5cGUuaW5jbHVkZXMoXCJ0ZXh0XCIpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICAgICAgICBwb3NpdGlvbiA9IGlubGluZVxuICAgICAgICAgICAgPyBhd2FpdCBnZXRJbmxpbmVCdXR0b25Qb3NpdGlvbihhcHAsIGlkKVxuICAgICAgICAgICAgOiBnZXRCdXR0b25Qb3NpdGlvbihjb250ZW50LCBhcmdzKTtcbiAgICAgICAgICB0ZXh0KGFwcCwgYXJncywgcG9zaXRpb24pO1xuICAgICAgICB9LCA1MCk7XG4gICAgICB9XG4gICAgICAvLyBoYW5kbGUgcmVtb3ZpbmcgdGhlIGJ1dHRvblxuICAgICAgaWYgKGFyZ3MucmVtb3ZlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICAgICAgICBwb3NpdGlvbiA9IGlubGluZVxuICAgICAgICAgICAgPyBhd2FpdCBnZXRJbmxpbmVCdXR0b25Qb3NpdGlvbihhcHAsIGlkKVxuICAgICAgICAgICAgOiBnZXRCdXR0b25Qb3NpdGlvbihjb250ZW50LCBhcmdzKTtcbiAgICAgICAgICByZW1vdmUoYXBwLCBhcmdzLCBwb3NpdGlvbik7XG4gICAgICAgIH0sIDc1KTtcbiAgICAgIH1cbiAgICAgIGlmIChhcmdzLnJlcGxhY2UpIHtcbiAgICAgICAgcmVwbGFjZShhcHAsIGFyZ3MpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgdGVtcGxhdGVyID0gYXN5bmMgKFxuICBhcHA6IEFwcCxcbiAgcG9zaXRpb246IFBvc2l0aW9uXG4pOiBQcm9taXNlPEFyZ3VtZW50cz4gPT4ge1xuICBhcHAuY29tbWFuZHMuZXhlY3V0ZUNvbW1hbmRCeUlkKFwiZWRpdG9yOnNhdmUtZmlsZVwiKTtcbiAgY29uc3QgYWN0aXZlVmlldyA9IGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpO1xuICBpZiAoYWN0aXZlVmlldykge1xuICAgIGNvbnN0IGZpbGUgPSBhY3RpdmVWaWV3LmZpbGU7XG4gICAgY29uc3QgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5jYWNoZWRSZWFkKGZpbGUpO1xuICAgIGFwcC5jb21tYW5kcy5leGVjdXRlQ29tbWFuZEJ5SWQoXG4gICAgICBcInRlbXBsYXRlci1vYnNpZGlhbjpyZXBsYWNlLWluLWZpbGUtdGVtcGxhdGVyXCJcbiAgICApO1xuICAgIGNvbnN0IHsgYXJncyB9ID0gYXdhaXQgZ2V0TmV3QXJncyhhcHAsIHBvc2l0aW9uKTtcbiAgICBjb25zdCBjYWNoZWREYXRhOiBzdHJpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGNhY2hlQ2hhbmdlID0gYXBwLnZhdWx0Lm9uKFwibW9kaWZ5XCIsIChmaWxlKSA9PiB7XG4gICAgICBjYWNoZWREYXRhLnB1c2goZmlsZS51bnNhZmVDYWNoZWREYXRhKTtcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IGNvbnRlbnRcbiAgICAgICAgLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgIC5zcGxpY2UocG9zaXRpb24ubGluZVN0YXJ0LCBwb3NpdGlvbi5saW5lRW5kIC0gcG9zaXRpb24ubGluZVN0YXJ0ICsgMilcbiAgICAgICAgLmpvaW4oXCJcXG5cIik7XG4gICAgICBsZXQgZmluYWxDb250ZW50O1xuICAgICAgaWYgKGNhY2hlZERhdGFbMF0pIHtcbiAgICAgICAgY29uc3QgY2FjaGVkQ29udGVudCA9IGNhY2hlZERhdGFbY2FjaGVkRGF0YS5sZW5ndGggLSAxXS5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgbGV0IGFkZE9uZSA9IGZhbHNlO1xuICAgICAgICBpZiAoYXJncy50eXBlLmluY2x1ZGVzKFwicHJlcGVuZFwiKSkge1xuICAgICAgICAgIGFkZE9uZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAoYXJncy50eXBlLmluY2x1ZGVzKFwibGluZVwiKSkge1xuICAgICAgICAgIGNvbnN0IGxpbmVOdW1iZXIgPSBhcmdzLnR5cGUubWF0Y2goLyhcXGQrKS9nKTtcbiAgICAgICAgICBpZiAobGluZU51bWJlclswXSkge1xuICAgICAgICAgICAgY29uc3QgbGluZSA9IHBhcnNlSW50KGxpbmVOdW1iZXJbMF0pIC0gMTtcbiAgICAgICAgICAgIGlmIChsaW5lIDwgcG9zaXRpb24ubGluZVN0YXJ0ICYmICFhcmdzLnJlcGxhY2UpIHtcbiAgICAgICAgICAgICAgYWRkT25lID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGFkZE9uZSkge1xuICAgICAgICAgIGNhY2hlZENvbnRlbnQuc3BsaWNlKFxuICAgICAgICAgICAgcG9zaXRpb24ubGluZVN0YXJ0ICsgMSxcbiAgICAgICAgICAgIHBvc2l0aW9uLmxpbmVFbmQgLSBwb3NpdGlvbi5saW5lU3RhcnQgKyAyLFxuICAgICAgICAgICAgYnV0dG9uXG4gICAgICAgICAgKTtcbiAgICAgICAgfSAgZWxzZSB7XG4gICAgICAgICAgY2FjaGVkQ29udGVudC5zcGxpY2UoXG4gICAgICAgICAgICBwb3NpdGlvbi5saW5lU3RhcnQsXG4gICAgICAgICAgICBwb3NpdGlvbi5saW5lRW5kIC0gcG9zaXRpb24ubGluZVN0YXJ0ICsgMixcbiAgICAgICAgICAgIGJ1dHRvblxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgZmluYWxDb250ZW50ID0gY2FjaGVkQ29udGVudC5qb2luKFwiXFxuXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZmluYWxDb250ZW50ID0gY29udGVudDtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcC52YXVsdC5tb2RpZnkoZmlsZSwgZmluYWxDb250ZW50KTtcbiAgICAgIGFwcC5tZXRhZGF0YUNhY2hlLm9mZnJlZihjYWNoZUNoYW5nZSk7XG4gICAgfSwgMjAwKTtcbiAgICByZXR1cm4gYXJncztcbiAgfVxufTtcbiIsImltcG9ydCB7IEFwcCwgTm90aWNlLCBNYXJrZG93blZpZXd9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgQXJndW1lbnRzIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7XG4gIGNhbGN1bGF0ZSxcbiAgcmVtb3ZlLFxuICByZXBsYWNlLFxuICB0ZW1wbGF0ZSxcbiAgbGluayxcbiAgY29tbWFuZCxcbiAgc3dhcCxcbiAgdGVtcGxhdGVyLFxuICB0ZXh0LFxufSBmcm9tIFwiLi9idXR0b25UeXBlc1wiO1xuaW1wb3J0IHsgZ2V0QnV0dG9uUG9zaXRpb24sIGdldElubGluZUJ1dHRvblBvc2l0aW9uIH0gZnJvbSBcIi4vcGFyc2VyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uIHtcbiAgYXBwPzogQXBwO1xuICBlbD86IEhUTUxFbGVtZW50O1xuICBhcmdzPzogQXJndW1lbnRzO1xuICBpbmxpbmU/OiBib29sZWFuO1xuICBpZD86IHN0cmluZztcbiAgY2xpY2tPdmVycmlkZT86IHtcbiAgICBwYXJhbXM6IGFueVtdO1xuICAgIGNsaWNrOiAoLi4ucGFyYW1zOiBhbnlbXSkgPT4gdm9pZDtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUJ1dHRvbiA9ICh7XG4gIGFwcCxcbiAgZWwsXG4gIGFyZ3MsXG4gIGlubGluZSxcbiAgaWQsXG4gIGNsaWNrT3ZlcnJpZGUsXG59OiBCdXR0b24pOiBIVE1MRWxlbWVudCA9PiB7XG4gIC8vY3JlYXRlIHRoZSBidXR0b24gZWxlbWVudFxuICBjb25zdCBidXR0b24gPSBlbC5jcmVhdGVFbChcImJ1dHRvblwiLCB7XG4gICAgY2xzOiBhcmdzLmNsYXNzXG4gICAgICA/IGAke2FyZ3MuY2xhc3N9ICR7YXJncy5jb2xvcn1gXG4gICAgICA6IGBidXR0b24tZGVmYXVsdCAke2FyZ3MuY29sb3IgPyBhcmdzLmNvbG9yIDogXCJcIn1gLFxuICB9KTtcbiAgYnV0dG9uLmlubmVySFRNTCA9IGFyZ3MubmFtZTtcbiAgYXJncy5pZCA/IGJ1dHRvbi5zZXRBdHRyaWJ1dGUoXCJpZFwiLCBhcmdzLmlkKSA6IFwiXCI7XG4gIGJ1dHRvbi5vbihcImNsaWNrXCIsIFwiYnV0dG9uXCIsICgpID0+IHtcbiAgICBjbGlja092ZXJyaWRlXG4gICAgICA/IGNsaWNrT3ZlcnJpZGUuY2xpY2soLi4uY2xpY2tPdmVycmlkZS5wYXJhbXMpXG4gICAgICA6IGNsaWNrSGFuZGxlcihhcHAsIGFyZ3MsIGlubGluZSwgaWQpO1xuICB9KTtcbiAgcmV0dXJuIGJ1dHRvbjtcbn07XG5cbmNvbnN0IGNsaWNrSGFuZGxlciA9IGFzeW5jIChcbiAgYXBwOiBBcHAsXG4gIGFyZ3M6IEFyZ3VtZW50cyxcbiAgaW5saW5lOiBib29sZWFuLFxuICBpZDogc3RyaW5nXG4pID0+IHtcbiAgY29uc3QgYWN0aXZlVmlldyA9IGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpO1xuICBsZXQgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGFjdGl2ZVZpZXcuZmlsZSk7XG4gIGxldCBwb3NpdGlvbiA9IGlubGluZVxuICAgID8gYXdhaXQgZ2V0SW5saW5lQnV0dG9uUG9zaXRpb24oYXBwLCBpZClcbiAgICA6IGdldEJ1dHRvblBvc2l0aW9uKGNvbnRlbnQsIGFyZ3MpO1xuICAvLyBoYW5kbGUgY29tbWFuZCBidXR0b25zXG4gIGlmIChhcmdzLnRlbXBsYXRlcikge1xuICAgIGFyZ3MgPSBhd2FpdCB0ZW1wbGF0ZXIoYXBwLCBwb3NpdGlvbik7XG4gICAgaWYgKGlubGluZSkge1xuICAgICAgbmV3IE5vdGljZShcInRlbXBsYXRlciBhcmdzIGRvbid0IHdvcmsgd2l0aCBpbmxpbmUgYnV0dG9ucyB5ZXRcIiwgMjAwMCk7XG4gICAgfVxuICB9XG4gIGlmIChhcmdzLnJlcGxhY2UpIHtcbiAgICByZXBsYWNlKGFwcCwgYXJncyk7XG4gIH1cbiAgaWYgKGFyZ3MudHlwZSA9PT0gXCJjb21tYW5kXCIpIHtcbiAgICBjb21tYW5kKGFwcCwgYXJncyk7XG4gIH1cbiAgLy8gaGFuZGxlIGxpbmsgYnV0dG9uc1xuICBpZiAoYXJncy50eXBlID09PSBcImxpbmtcIikge1xuICAgIGxpbmsoYXJncyk7XG4gIH1cbiAgLy8gaGFuZGxlIHRlbXBsYXRlIGJ1dHRvbnNcbiAgaWYgKGFyZ3MudHlwZSAmJiBhcmdzLnR5cGUuaW5jbHVkZXMoXCJ0ZW1wbGF0ZVwiKSkge1xuICAgIHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29udGVudCA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGFjdGl2ZVZpZXcuZmlsZSk7XG4gICAgICBwb3NpdGlvbiA9IGlubGluZVxuICAgICAgICA/IGF3YWl0IGdldElubGluZUJ1dHRvblBvc2l0aW9uKGFwcCwgaWQpXG4gICAgICAgIDogZ2V0QnV0dG9uUG9zaXRpb24oY29udGVudCwgYXJncyk7XG4gICAgICB0ZW1wbGF0ZShhcHAsIGFyZ3MsIHBvc2l0aW9uKTtcbiAgICB9LCA1MCk7XG4gIH1cbiAgaWYgKGFyZ3MudHlwZSA9PT0gXCJjYWxjdWxhdGVcIikge1xuICAgIGNhbGN1bGF0ZShhcHAsIGFyZ3MsIHBvc2l0aW9uKTtcbiAgfVxuICBpZiAoYXJncy50eXBlICYmIGFyZ3MudHlwZS5pbmNsdWRlcyhcInRleHRcIikpIHtcbiAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnRlbnQgPSBhd2FpdCBhcHAudmF1bHQucmVhZChhY3RpdmVWaWV3LmZpbGUpO1xuICAgICAgcG9zaXRpb24gPSBpbmxpbmVcbiAgICAgICAgPyBhd2FpdCBnZXRJbmxpbmVCdXR0b25Qb3NpdGlvbihhcHAsIGlkKVxuICAgICAgICA6IGdldEJ1dHRvblBvc2l0aW9uKGNvbnRlbnQsIGFyZ3MpO1xuICAgICAgdGV4dChhcHAsIGFyZ3MsIHBvc2l0aW9uKTtcbiAgICB9LCA1MCk7XG4gIH1cbiAgLy8gaGFuZGxlIHJlbW92aW5nIHRoZSBidXR0b25cbiAgaWYgKGFyZ3MucmVtb3ZlKSB7XG4gICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICBjb250ZW50ID0gYXdhaXQgYXBwLnZhdWx0LnJlYWQoYWN0aXZlVmlldy5maWxlKTtcbiAgICAgIHBvc2l0aW9uID0gaW5saW5lXG4gICAgICAgID8gYXdhaXQgZ2V0SW5saW5lQnV0dG9uUG9zaXRpb24oYXBwLCBpZClcbiAgICAgICAgOiBnZXRCdXR0b25Qb3NpdGlvbihjb250ZW50LCBhcmdzKTtcbiAgICAgIHJlbW92ZShhcHAsIGFyZ3MsIHBvc2l0aW9uKTtcbiAgICB9LCAxMDAwKTtcbiAgfVxuICBpZiAoYXJncy5zd2FwKSB7XG4gICAgaWYgKCFpbmxpbmUpIHtcbiAgICAgIG5ldyBOb3RpY2UoXCJzd2FwIGFyZ3Mgb25seSB3b3JrIGluIGlubGluZSBidXR0b25zIGZvciBub3dcIiwgMjAwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3YXAoYXBwLCBhcmdzLnN3YXAsIGlkLCBpbmxpbmUsIGFjdGl2ZVZpZXcuZmlsZSk7XG4gICAgfVxuICB9XG59O1xuIiwiZXhwb3J0IHZhciB0b3AgPSAndG9wJztcbmV4cG9ydCB2YXIgYm90dG9tID0gJ2JvdHRvbSc7XG5leHBvcnQgdmFyIHJpZ2h0ID0gJ3JpZ2h0JztcbmV4cG9ydCB2YXIgbGVmdCA9ICdsZWZ0JztcbmV4cG9ydCB2YXIgYXV0byA9ICdhdXRvJztcbmV4cG9ydCB2YXIgYmFzZVBsYWNlbWVudHMgPSBbdG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0XTtcbmV4cG9ydCB2YXIgc3RhcnQgPSAnc3RhcnQnO1xuZXhwb3J0IHZhciBlbmQgPSAnZW5kJztcbmV4cG9ydCB2YXIgY2xpcHBpbmdQYXJlbnRzID0gJ2NsaXBwaW5nUGFyZW50cyc7XG5leHBvcnQgdmFyIHZpZXdwb3J0ID0gJ3ZpZXdwb3J0JztcbmV4cG9ydCB2YXIgcG9wcGVyID0gJ3BvcHBlcic7XG5leHBvcnQgdmFyIHJlZmVyZW5jZSA9ICdyZWZlcmVuY2UnO1xuZXhwb3J0IHZhciB2YXJpYXRpb25QbGFjZW1lbnRzID0gLyojX19QVVJFX18qL2Jhc2VQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7XG5leHBvcnQgdmFyIHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovW10uY29uY2F0KGJhc2VQbGFjZW1lbnRzLCBbYXV0b10pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCwgcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTsgLy8gbW9kaWZpZXJzIHRoYXQgbmVlZCB0byByZWFkIHRoZSBET01cblxuZXhwb3J0IHZhciBiZWZvcmVSZWFkID0gJ2JlZm9yZVJlYWQnO1xuZXhwb3J0IHZhciByZWFkID0gJ3JlYWQnO1xuZXhwb3J0IHZhciBhZnRlclJlYWQgPSAnYWZ0ZXJSZWFkJzsgLy8gcHVyZS1sb2dpYyBtb2RpZmllcnNcblxuZXhwb3J0IHZhciBiZWZvcmVNYWluID0gJ2JlZm9yZU1haW4nO1xuZXhwb3J0IHZhciBtYWluID0gJ21haW4nO1xuZXhwb3J0IHZhciBhZnRlck1haW4gPSAnYWZ0ZXJNYWluJzsgLy8gbW9kaWZpZXIgd2l0aCB0aGUgcHVycG9zZSB0byB3cml0ZSB0byB0aGUgRE9NIChvciB3cml0ZSBpbnRvIGEgZnJhbWV3b3JrIHN0YXRlKVxuXG5leHBvcnQgdmFyIGJlZm9yZVdyaXRlID0gJ2JlZm9yZVdyaXRlJztcbmV4cG9ydCB2YXIgd3JpdGUgPSAnd3JpdGUnO1xuZXhwb3J0IHZhciBhZnRlcldyaXRlID0gJ2FmdGVyV3JpdGUnO1xuZXhwb3J0IHZhciBtb2RpZmllclBoYXNlcyA9IFtiZWZvcmVSZWFkLCByZWFkLCBhZnRlclJlYWQsIGJlZm9yZU1haW4sIG1haW4sIGFmdGVyTWFpbiwgYmVmb3JlV3JpdGUsIHdyaXRlLCBhZnRlcldyaXRlXTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlTmFtZShlbGVtZW50KSB7XG4gIHJldHVybiBlbGVtZW50ID8gKGVsZW1lbnQubm9kZU5hbWUgfHwgJycpLnRvTG93ZXJDYXNlKCkgOiBudWxsO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIGlmIChub2RlID09IG51bGwpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgaWYgKG5vZGUudG9TdHJpbmcoKSAhPT0gJ1tvYmplY3QgV2luZG93XScpIHtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICByZXR1cm4gb3duZXJEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93IDogd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcblxuZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuSFRNTEVsZW1lbnQ7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdChub2RlKSB7XG4gIC8vIElFIDExIGhhcyBubyBTaGFkb3dSb290XG4gIGlmICh0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5TaGFkb3dSb290O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q7XG59XG5cbmV4cG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH07IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gVGhpcyBtb2RpZmllciB0YWtlcyB0aGUgc3R5bGVzIHByZXBhcmVkIGJ5IHRoZSBgY29tcHV0ZVN0eWxlc2AgbW9kaWZpZXJcbi8vIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIEhUTUxFbGVtZW50cyBzdWNoIGFzIHBvcHBlciBhbmQgYXJyb3dcblxuZnVuY3Rpb24gYXBwbHlTdHlsZXMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlO1xuICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBzdHlsZSA9IHN0YXRlLnN0eWxlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBGbG93IGRvZXNuJ3Qgc3VwcG9ydCB0byBleHRlbmQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0J3MgdGhlIG1vc3RcbiAgICAvLyBlZmZlY3RpdmUgd2F5IHRvIGFwcGx5IHN0eWxlcyB0byBhbiBIVE1MRWxlbWVudFxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuXG5cbiAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUgPT09IHRydWUgPyAnJyA6IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZTtcbiAgdmFyIGluaXRpYWxTdHlsZXMgPSB7XG4gICAgcG9wcGVyOiB7XG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnLFxuICAgICAgbWFyZ2luOiAnMCdcbiAgICB9LFxuICAgIGFycm93OiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgIH0sXG4gICAgcmVmZXJlbmNlOiB7fVxuICB9O1xuICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLnBvcHBlci5zdHlsZSwgaW5pdGlhbFN0eWxlcy5wb3BwZXIpO1xuICBzdGF0ZS5zdHlsZXMgPSBpbml0aWFsU3R5bGVzO1xuXG4gIGlmIChzdGF0ZS5lbGVtZW50cy5hcnJvdykge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMuYXJyb3cuc3R5bGUsIGluaXRpYWxTdHlsZXMuYXJyb3cpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICAgIHZhciBzdHlsZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzdGF0ZS5zdHlsZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBzdGF0ZS5zdHlsZXNbbmFtZV0gOiBpbml0aWFsU3R5bGVzW25hbWVdKTsgLy8gU2V0IGFsbCB2YWx1ZXMgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIHVuc2V0IHRoZW1cblxuICAgICAgdmFyIHN0eWxlID0gc3R5bGVQcm9wZXJ0aWVzLnJlZHVjZShmdW5jdGlvbiAoc3R5bGUsIHByb3BlcnR5KSB7XG4gICAgICAgIHN0eWxlW3Byb3BlcnR5XSA9ICcnO1xuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9LCB7fSk7IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXBwbHlTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGFwcGx5U3R5bGVzLFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsnY29tcHV0ZVN0eWxlcyddXG59OyIsImltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn0iLCJleHBvcnQgdmFyIG1heCA9IE1hdGgubWF4O1xuZXhwb3J0IHZhciBtaW4gPSBNYXRoLm1pbjtcbmV4cG9ydCB2YXIgcm91bmQgPSBNYXRoLnJvdW5kOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFVBU3RyaW5nKCkge1xuICB2YXIgdWFEYXRhID0gbmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7XG5cbiAgaWYgKHVhRGF0YSAhPSBudWxsICYmIHVhRGF0YS5icmFuZHMpIHtcbiAgICByZXR1cm4gdWFEYXRhLmJyYW5kcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtLmJyYW5kICsgXCIvXCIgKyBpdGVtLnZlcnNpb247XG4gICAgfSkuam9pbignICcpO1xuICB9XG5cbiAgcmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQ7XG59IiwiaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTGF5b3V0Vmlld3BvcnQoKSB7XG4gIHJldHVybiAhL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChnZXRVQVN0cmluZygpKTtcbn0iLCJpbXBvcnQgeyBpc0VsZW1lbnQsIGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGlzTGF5b3V0Vmlld3BvcnQgZnJvbSBcIi4vaXNMYXlvdXRWaWV3cG9ydC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQsIGluY2x1ZGVTY2FsZSwgaXNGaXhlZFN0cmF0ZWd5KSB7XG4gIGlmIChpbmNsdWRlU2NhbGUgPT09IHZvaWQgMCkge1xuICAgIGluY2x1ZGVTY2FsZSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzRml4ZWRTdHJhdGVneSA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZFN0cmF0ZWd5ID0gZmFsc2U7XG4gIH1cblxuICB2YXIgY2xpZW50UmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSAxO1xuICB2YXIgc2NhbGVZID0gMTtcblxuICBpZiAoaW5jbHVkZVNjYWxlICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICBzY2FsZVggPSBlbGVtZW50Lm9mZnNldFdpZHRoID4gMCA/IHJvdW5kKGNsaWVudFJlY3Qud2lkdGgpIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxIDogMTtcbiAgICBzY2FsZVkgPSBlbGVtZW50Lm9mZnNldEhlaWdodCA+IDAgPyByb3VuZChjbGllbnRSZWN0LmhlaWdodCkgLyBlbGVtZW50Lm9mZnNldEhlaWdodCB8fCAxIDogMTtcbiAgfVxuXG4gIHZhciBfcmVmID0gaXNFbGVtZW50KGVsZW1lbnQpID8gZ2V0V2luZG93KGVsZW1lbnQpIDogd2luZG93LFxuICAgICAgdmlzdWFsVmlld3BvcnQgPSBfcmVmLnZpc3VhbFZpZXdwb3J0O1xuXG4gIHZhciBhZGRWaXN1YWxPZmZzZXRzID0gIWlzTGF5b3V0Vmlld3BvcnQoKSAmJiBpc0ZpeGVkU3RyYXRlZ3k7XG4gIHZhciB4ID0gKGNsaWVudFJlY3QubGVmdCArIChhZGRWaXN1YWxPZmZzZXRzICYmIHZpc3VhbFZpZXdwb3J0ID8gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdCA6IDApKSAvIHNjYWxlWDtcbiAgdmFyIHkgPSAoY2xpZW50UmVjdC50b3AgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcCA6IDApKSAvIHNjYWxlWTtcbiAgdmFyIHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlWDtcbiAgdmFyIGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0IC8gc2NhbGVZO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB0b3A6IHksXG4gICAgcmlnaHQ6IHggKyB3aWR0aCxcbiAgICBib3R0b206IHkgKyBoZWlnaHQsXG4gICAgbGVmdDogeCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiOyAvLyBSZXR1cm5zIHRoZSBsYXlvdXQgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuIExheW91dFxuLy8gbWVhbnMgaXQgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB0cmFuc2Zvcm1zLlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRMYXlvdXRSZWN0KGVsZW1lbnQpIHtcbiAgdmFyIGNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCk7IC8vIFVzZSB0aGUgY2xpZW50UmVjdCBzaXplcyBpZiBpdCdzIG5vdCBiZWVuIHRyYW5zZm9ybWVkLlxuICAvLyBGaXhlcyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzEyMjNcblxuICB2YXIgd2lkdGggPSBlbGVtZW50Lm9mZnNldFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgaWYgKE1hdGguYWJzKGNsaWVudFJlY3Qud2lkdGggLSB3aWR0aCkgPD0gMSkge1xuICAgIHdpZHRoID0gY2xpZW50UmVjdC53aWR0aDtcbiAgfVxuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LmhlaWdodCAtIGhlaWdodCkgPD0gMSkge1xuICAgIGhlaWdodCA9IGNsaWVudFJlY3QuaGVpZ2h0O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiBlbGVtZW50Lm9mZnNldExlZnQsXG4gICAgeTogZWxlbWVudC5vZmZzZXRUb3AsXG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0XG4gIH07XG59IiwiaW1wb3J0IHsgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29udGFpbnMocGFyZW50LCBjaGlsZCkge1xuICB2YXIgcm9vdE5vZGUgPSBjaGlsZC5nZXRSb290Tm9kZSAmJiBjaGlsZC5nZXRSb290Tm9kZSgpOyAvLyBGaXJzdCwgYXR0ZW1wdCB3aXRoIGZhc3RlciBuYXRpdmUgbWV0aG9kXG5cbiAgaWYgKHBhcmVudC5jb250YWlucyhjaGlsZCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyB0aGVuIGZhbGxiYWNrIHRvIGN1c3RvbSBpbXBsZW1lbnRhdGlvbiB3aXRoIFNoYWRvdyBET00gc3VwcG9ydFxuICBlbHNlIGlmIChyb290Tm9kZSAmJiBpc1NoYWRvd1Jvb3Qocm9vdE5vZGUpKSB7XG4gICAgICB2YXIgbmV4dCA9IGNoaWxkO1xuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChuZXh0ICYmIHBhcmVudC5pc1NhbWVOb2RlKG5leHQpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddOiBuZWVkIGEgYmV0dGVyIHdheSB0byBoYW5kbGUgdGhpcy4uLlxuXG5cbiAgICAgICAgbmV4dCA9IG5leHQucGFyZW50Tm9kZSB8fCBuZXh0Lmhvc3Q7XG4gICAgICB9IHdoaWxlIChuZXh0KTtcbiAgICB9IC8vIEdpdmUgdXAsIHRoZSByZXN1bHQgaXMgZmFsc2VcblxuXG4gIHJldHVybiBmYWxzZTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSB7XG4gIHJldHVybiBnZXRXaW5kb3coZWxlbWVudCkuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcbn0iLCJpbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzVGFibGVFbGVtZW50KGVsZW1lbnQpIHtcbiAgcmV0dXJuIFsndGFibGUnLCAndGQnLCAndGgnXS5pbmRleE9mKGdldE5vZGVOYW1lKGVsZW1lbnQpKSA+PSAwO1xufSIsImltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSB7XG4gIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgcmV0dXJuICgoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5vd25lckRvY3VtZW50IDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gIGVsZW1lbnQuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50O1xufSIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZWxlbWVudCkge1xuICBpZiAoZ2V0Tm9kZU5hbWUoZWxlbWVudCkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuICgvLyB0aGlzIGlzIGEgcXVpY2tlciAoYnV0IGxlc3MgdHlwZSBzYWZlKSB3YXkgdG8gc2F2ZSBxdWl0ZSBzb21lIGJ5dGVzIGZyb20gdGhlIGJ1bmRsZVxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cbiAgICAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICBlbGVtZW50LmFzc2lnbmVkU2xvdCB8fCAvLyBzdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZVxuICAgIGVsZW1lbnQucGFyZW50Tm9kZSB8fCAoIC8vIERPTSBFbGVtZW50IGRldGVjdGVkXG4gICAgaXNTaGFkb3dSb290KGVsZW1lbnQpID8gZWxlbWVudC5ob3N0IDogbnVsbCkgfHwgLy8gU2hhZG93Um9vdCBkZXRlY3RlZFxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBIVE1MRWxlbWVudCBpcyBhIE5vZGVcbiAgICBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgLy8gZmFsbGJhY2tcblxuICApO1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQsIGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBpc1RhYmxlRWxlbWVudCBmcm9tIFwiLi9pc1RhYmxlRWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcblxuZnVuY3Rpb24gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCAvLyBodHRwczovL2dpdGh1Yi5jb20vcG9wcGVyanMvcG9wcGVyLWNvcmUvaXNzdWVzLzgzN1xuICBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5vZmZzZXRQYXJlbnQ7XG59IC8vIGAub2Zmc2V0UGFyZW50YCByZXBvcnRzIGBudWxsYCBmb3IgZml4ZWQgZWxlbWVudHMsIHdoaWxlIGFic29sdXRlIGVsZW1lbnRzXG4vLyByZXR1cm4gdGhlIGNvbnRhaW5pbmcgYmxvY2tcblxuXG5mdW5jdGlvbiBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkge1xuICB2YXIgaXNGaXJlZm94ID0gL2ZpcmVmb3gvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xuICB2YXIgaXNJRSA9IC9UcmlkZW50L2kudGVzdChnZXRVQVN0cmluZygpKTtcblxuICBpZiAoaXNJRSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgLy8gSW4gSUUgOSwgMTAgYW5kIDExIGZpeGVkIGVsZW1lbnRzIGNvbnRhaW5pbmcgYmxvY2sgaXMgYWx3YXlzIGVzdGFibGlzaGVkIGJ5IHRoZSB2aWV3cG9ydFxuICAgIHZhciBlbGVtZW50Q3NzID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KTtcblxuICAgIGlmIChlbGVtZW50Q3NzLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICB2YXIgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGVsZW1lbnQpO1xuXG4gIGlmIChpc1NoYWRvd1Jvb3QoY3VycmVudE5vZGUpKSB7XG4gICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5ob3N0O1xuICB9XG5cbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmIFsnaHRtbCcsICdib2R5J10uaW5kZXhPZihnZXROb2RlTmFtZShjdXJyZW50Tm9kZSkpIDwgMCkge1xuICAgIHZhciBjc3MgPSBnZXRDb21wdXRlZFN0eWxlKGN1cnJlbnROb2RlKTsgLy8gVGhpcyBpcyBub24tZXhoYXVzdGl2ZSBidXQgY292ZXJzIHRoZSBtb3N0IGNvbW1vbiBDU1MgcHJvcGVydGllcyB0aGF0XG4gICAgLy8gY3JlYXRlIGEgY29udGFpbmluZyBibG9jay5cbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ29udGFpbmluZ19ibG9jayNpZGVudGlmeWluZ190aGVfY29udGFpbmluZ19ibG9ja1xuXG4gICAgaWYgKGNzcy50cmFuc2Zvcm0gIT09ICdub25lJyB8fCBjc3MucGVyc3BlY3RpdmUgIT09ICdub25lJyB8fCBjc3MuY29udGFpbiA9PT0gJ3BhaW50JyB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZSddLmluZGV4T2YoY3NzLndpbGxDaGFuZ2UpICE9PSAtMSB8fCBpc0ZpcmVmb3ggJiYgY3NzLndpbGxDaGFuZ2UgPT09ICdmaWx0ZXInIHx8IGlzRmlyZWZveCAmJiBjc3MuZmlsdGVyICYmIGNzcy5maWx0ZXIgIT09ICdub25lJykge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLnBhcmVudE5vZGU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59IC8vIEdldHMgdGhlIGNsb3Nlc3QgYW5jZXN0b3IgcG9zaXRpb25lZCBlbGVtZW50LiBIYW5kbGVzIHNvbWUgZWRnZSBjYXNlcyxcbi8vIHN1Y2ggYXMgdGFibGUgYW5jZXN0b3JzIGFuZCBjcm9zcyBicm93c2VyIGJ1Z3MuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCk7XG5cbiAgd2hpbGUgKG9mZnNldFBhcmVudCAmJiBpc1RhYmxlRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpIHtcbiAgICBvZmZzZXRQYXJlbnQgPSBnZXRUcnVlT2Zmc2V0UGFyZW50KG9mZnNldFBhcmVudCk7XG4gIH1cblxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiA9PT0gJ3N0YXRpYycpKSB7XG4gICAgcmV0dXJuIHdpbmRvdztcbiAgfVxuXG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBbJ3RvcCcsICdib3R0b20nXS5pbmRleE9mKHBsYWNlbWVudCkgPj0gMCA/ICd4JyA6ICd5Jztcbn0iLCJpbXBvcnQgeyBtYXggYXMgbWF0aE1heCwgbWluIGFzIG1hdGhNaW4gfSBmcm9tIFwiLi9tYXRoLmpzXCI7XG5leHBvcnQgZnVuY3Rpb24gd2l0aGluKG1pbiwgdmFsdWUsIG1heCkge1xuICByZXR1cm4gbWF0aE1heChtaW4sIG1hdGhNaW4odmFsdWUsIG1heCkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbk1heENsYW1wKG1pbiwgdmFsdWUsIG1heCkge1xuICB2YXIgdiA9IHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpO1xuICByZXR1cm4gdiA+IG1heCA/IG1heCA6IHY7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0RnJlc2hTaWRlT2JqZWN0KCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMFxuICB9O1xufSIsImltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4vZ2V0RnJlc2hTaWRlT2JqZWN0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtZXJnZVBhZGRpbmdPYmplY3QocGFkZGluZ09iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgZ2V0RnJlc2hTaWRlT2JqZWN0KCksIHBhZGRpbmdPYmplY3QpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGV4cGFuZFRvSGFzaE1hcCh2YWx1ZSwga2V5cykge1xuICByZXR1cm4ga2V5cy5yZWR1Y2UoZnVuY3Rpb24gKGhhc2hNYXAsIGtleSkge1xuICAgIGhhc2hNYXBba2V5XSA9IHZhbHVlO1xuICAgIHJldHVybiBoYXNoTWFwO1xuICB9LCB7fSk7XG59IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGNvbnRhaW5zIGZyb20gXCIuLi9kb20tdXRpbHMvY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgd2l0aGluIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi4vdXRpbHMvbWVyZ2VQYWRkaW5nT2JqZWN0LmpzXCI7XG5pbXBvcnQgZXhwYW5kVG9IYXNoTWFwIGZyb20gXCIuLi91dGlscy9leHBhbmRUb0hhc2hNYXAuanNcIjtcbmltcG9ydCB7IGxlZnQsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdG9wLCBib3R0b20gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdG9QYWRkaW5nT2JqZWN0ID0gZnVuY3Rpb24gdG9QYWRkaW5nT2JqZWN0KHBhZGRpbmcsIHN0YXRlKSB7XG4gIHBhZGRpbmcgPSB0eXBlb2YgcGFkZGluZyA9PT0gJ2Z1bmN0aW9uJyA/IHBhZGRpbmcoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiBwYWRkaW5nO1xuICByZXR1cm4gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbn07XG5cbmZ1bmN0aW9uIGFycm93KF9yZWYpIHtcbiAgdmFyIF9zdGF0ZSRtb2RpZmllcnNEYXRhJDtcblxuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHM7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KTtcbiAgdmFyIGlzVmVydGljYWwgPSBbbGVmdCwgcmlnaHRdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMDtcbiAgdmFyIGxlbiA9IGlzVmVydGljYWwgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG5cbiAgaWYgKCFhcnJvd0VsZW1lbnQgfHwgIXBvcHBlck9mZnNldHMpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgcGFkZGluZ09iamVjdCA9IHRvUGFkZGluZ09iamVjdChvcHRpb25zLnBhZGRpbmcsIHN0YXRlKTtcbiAgdmFyIGFycm93UmVjdCA9IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KTtcbiAgdmFyIG1pblByb3AgPSBheGlzID09PSAneScgPyB0b3AgOiBsZWZ0O1xuICB2YXIgbWF4UHJvcCA9IGF4aXMgPT09ICd5JyA/IGJvdHRvbSA6IHJpZ2h0O1xuICB2YXIgZW5kRGlmZiA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtsZW5dICsgc3RhdGUucmVjdHMucmVmZXJlbmNlW2F4aXNdIC0gcG9wcGVyT2Zmc2V0c1theGlzXSAtIHN0YXRlLnJlY3RzLnBvcHBlcltsZW5dO1xuICB2YXIgc3RhcnREaWZmID0gcG9wcGVyT2Zmc2V0c1theGlzXSAtIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXTtcbiAgdmFyIGFycm93T2Zmc2V0UGFyZW50ID0gZ2V0T2Zmc2V0UGFyZW50KGFycm93RWxlbWVudCk7XG4gIHZhciBjbGllbnRTaXplID0gYXJyb3dPZmZzZXRQYXJlbnQgPyBheGlzID09PSAneScgPyBhcnJvd09mZnNldFBhcmVudC5jbGllbnRIZWlnaHQgfHwgMCA6IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFdpZHRoIHx8IDAgOiAwO1xuICB2YXIgY2VudGVyVG9SZWZlcmVuY2UgPSBlbmREaWZmIC8gMiAtIHN0YXJ0RGlmZiAvIDI7IC8vIE1ha2Ugc3VyZSB0aGUgYXJyb3cgZG9lc24ndCBvdmVyZmxvdyB0aGUgcG9wcGVyIGlmIHRoZSBjZW50ZXIgcG9pbnQgaXNcbiAgLy8gb3V0c2lkZSBvZiB0aGUgcG9wcGVyIGJvdW5kc1xuXG4gIHZhciBtaW4gPSBwYWRkaW5nT2JqZWN0W21pblByb3BdO1xuICB2YXIgbWF4ID0gY2xpZW50U2l6ZSAtIGFycm93UmVjdFtsZW5dIC0gcGFkZGluZ09iamVjdFttYXhQcm9wXTtcbiAgdmFyIGNlbnRlciA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dSZWN0W2xlbl0gLyAyICsgY2VudGVyVG9SZWZlcmVuY2U7XG4gIHZhciBvZmZzZXQgPSB3aXRoaW4obWluLCBjZW50ZXIsIG1heCk7IC8vIFByZXZlbnRzIGJyZWFraW5nIHN5bnRheCBoaWdobGlnaHRpbmcuLi5cblxuICB2YXIgYXhpc1Byb3AgPSBheGlzO1xuICBzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdID0gKF9zdGF0ZSRtb2RpZmllcnNEYXRhJCA9IHt9LCBfc3RhdGUkbW9kaWZpZXJzRGF0YSRbYXhpc1Byb3BdID0gb2Zmc2V0LCBfc3RhdGUkbW9kaWZpZXJzRGF0YSQuY2VudGVyT2Zmc2V0ID0gb2Zmc2V0IC0gY2VudGVyLCBfc3RhdGUkbW9kaWZpZXJzRGF0YSQpO1xufVxuXG5mdW5jdGlvbiBlZmZlY3QoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGVsZW1lbnQgPSBvcHRpb25zLmVsZW1lbnQsXG4gICAgICBhcnJvd0VsZW1lbnQgPSBfb3B0aW9ucyRlbGVtZW50ID09PSB2b2lkIDAgPyAnW2RhdGEtcG9wcGVyLWFycm93XScgOiBfb3B0aW9ucyRlbGVtZW50O1xuXG4gIGlmIChhcnJvd0VsZW1lbnQgPT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfSAvLyBDU1Mgc2VsZWN0b3JcblxuXG4gIGlmICh0eXBlb2YgYXJyb3dFbGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgIGFycm93RWxlbWVudCA9IHN0YXRlLmVsZW1lbnRzLnBvcHBlci5xdWVyeVNlbGVjdG9yKGFycm93RWxlbWVudCk7XG5cbiAgICBpZiAoIWFycm93RWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoYXJyb3dFbGVtZW50KSkge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhcnJvd1wiIGVsZW1lbnQgbXVzdCBiZSBhbiBIVE1MRWxlbWVudCAobm90IGFuIFNWR0VsZW1lbnQpLicsICdUbyB1c2UgYW4gU1ZHIGFycm93LCB3cmFwIGl0IGluIGFuIEhUTUxFbGVtZW50IHRoYXQgd2lsbCBiZSB1c2VkIGFzJywgJ3RoZSBhcnJvdy4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIGlmICghY29udGFpbnMoc3RhdGUuZWxlbWVudHMucG9wcGVyLCBhcnJvd0VsZW1lbnQpKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhcnJvd1wiIG1vZGlmaWVyXFwncyBgZWxlbWVudGAgbXVzdCBiZSBhIGNoaWxkIG9mIHRoZSBwb3BwZXInLCAnZWxlbWVudC4nXS5qb2luKCcgJykpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0YXRlLmVsZW1lbnRzLmFycm93ID0gYXJyb3dFbGVtZW50O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXJyb3cnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICBmbjogYXJyb3csXG4gIGVmZmVjdDogZWZmZWN0LFxuICByZXF1aXJlczogWydwb3BwZXJPZmZzZXRzJ10sXG4gIHJlcXVpcmVzSWZFeGlzdHM6IFsncHJldmVudE92ZXJmbG93J11cbn07IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMV07XG59IiwiaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgYm90dG9tLCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRPZmZzZXRQYXJlbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4uL3V0aWxzL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbnZhciB1bnNldFNpZGVzID0ge1xuICB0b3A6ICdhdXRvJyxcbiAgcmlnaHQ6ICdhdXRvJyxcbiAgYm90dG9tOiAnYXV0bycsXG4gIGxlZnQ6ICdhdXRvJ1xufTsgLy8gUm91bmQgdGhlIG9mZnNldHMgdG8gdGhlIG5lYXJlc3Qgc3VpdGFibGUgc3VicGl4ZWwgYmFzZWQgb24gdGhlIERQUi5cbi8vIFpvb21pbmcgY2FuIGNoYW5nZSB0aGUgRFBSLCBidXQgaXQgc2VlbXMgdG8gcmVwb3J0IGEgdmFsdWUgdGhhdCB3aWxsXG4vLyBjbGVhbmx5IGRpdmlkZSB0aGUgdmFsdWVzIGludG8gdGhlIGFwcHJvcHJpYXRlIHN1YnBpeGVscy5cblxuZnVuY3Rpb24gcm91bmRPZmZzZXRzQnlEUFIoX3JlZikge1xuICB2YXIgeCA9IF9yZWYueCxcbiAgICAgIHkgPSBfcmVmLnk7XG4gIHZhciB3aW4gPSB3aW5kb3c7XG4gIHZhciBkcHIgPSB3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxO1xuICByZXR1cm4ge1xuICAgIHg6IHJvdW5kKHggKiBkcHIpIC8gZHByIHx8IDAsXG4gICAgeTogcm91bmQoeSAqIGRwcikgLyBkcHIgfHwgMFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwVG9TdHlsZXMoX3JlZjIpIHtcbiAgdmFyIF9PYmplY3QkYXNzaWduMjtcblxuICB2YXIgcG9wcGVyID0gX3JlZjIucG9wcGVyLFxuICAgICAgcG9wcGVyUmVjdCA9IF9yZWYyLnBvcHBlclJlY3QsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmMi5wbGFjZW1lbnQsXG4gICAgICB2YXJpYXRpb24gPSBfcmVmMi52YXJpYXRpb24sXG4gICAgICBvZmZzZXRzID0gX3JlZjIub2Zmc2V0cyxcbiAgICAgIHBvc2l0aW9uID0gX3JlZjIucG9zaXRpb24sXG4gICAgICBncHVBY2NlbGVyYXRpb24gPSBfcmVmMi5ncHVBY2NlbGVyYXRpb24sXG4gICAgICBhZGFwdGl2ZSA9IF9yZWYyLmFkYXB0aXZlLFxuICAgICAgcm91bmRPZmZzZXRzID0gX3JlZjIucm91bmRPZmZzZXRzLFxuICAgICAgaXNGaXhlZCA9IF9yZWYyLmlzRml4ZWQ7XG4gIHZhciBfb2Zmc2V0cyR4ID0gb2Zmc2V0cy54LFxuICAgICAgeCA9IF9vZmZzZXRzJHggPT09IHZvaWQgMCA/IDAgOiBfb2Zmc2V0cyR4LFxuICAgICAgX29mZnNldHMkeSA9IG9mZnNldHMueSxcbiAgICAgIHkgPSBfb2Zmc2V0cyR5ID09PSB2b2lkIDAgPyAwIDogX29mZnNldHMkeTtcblxuICB2YXIgX3JlZjMgPSB0eXBlb2Ygcm91bmRPZmZzZXRzID09PSAnZnVuY3Rpb24nID8gcm91bmRPZmZzZXRzKHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfSkgOiB7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG5cbiAgeCA9IF9yZWYzLng7XG4gIHkgPSBfcmVmMy55O1xuICB2YXIgaGFzWCA9IG9mZnNldHMuaGFzT3duUHJvcGVydHkoJ3gnKTtcbiAgdmFyIGhhc1kgPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd5Jyk7XG4gIHZhciBzaWRlWCA9IGxlZnQ7XG4gIHZhciBzaWRlWSA9IHRvcDtcbiAgdmFyIHdpbiA9IHdpbmRvdztcblxuICBpZiAoYWRhcHRpdmUpIHtcbiAgICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0T2Zmc2V0UGFyZW50KHBvcHBlcik7XG4gICAgdmFyIGhlaWdodFByb3AgPSAnY2xpZW50SGVpZ2h0JztcbiAgICB2YXIgd2lkdGhQcm9wID0gJ2NsaWVudFdpZHRoJztcblxuICAgIGlmIChvZmZzZXRQYXJlbnQgPT09IGdldFdpbmRvdyhwb3BwZXIpKSB7XG4gICAgICBvZmZzZXRQYXJlbnQgPSBnZXREb2N1bWVudEVsZW1lbnQocG9wcGVyKTtcblxuICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUob2Zmc2V0UGFyZW50KS5wb3NpdGlvbiAhPT0gJ3N0YXRpYycgJiYgcG9zaXRpb24gPT09ICdhYnNvbHV0ZScpIHtcbiAgICAgICAgaGVpZ2h0UHJvcCA9ICdzY3JvbGxIZWlnaHQnO1xuICAgICAgICB3aWR0aFByb3AgPSAnc2Nyb2xsV2lkdGgnO1xuICAgICAgfVxuICAgIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtY2FzdF06IGZvcmNlIHR5cGUgcmVmaW5lbWVudCwgd2UgY29tcGFyZSBvZmZzZXRQYXJlbnQgd2l0aCB3aW5kb3cgYWJvdmUsIGJ1dCBGbG93IGRvZXNuJ3QgZGV0ZWN0IGl0XG5cblxuICAgIG9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudDtcblxuICAgIGlmIChwbGFjZW1lbnQgPT09IHRvcCB8fCAocGxhY2VtZW50ID09PSBsZWZ0IHx8IHBsYWNlbWVudCA9PT0gcmlnaHQpICYmIHZhcmlhdGlvbiA9PT0gZW5kKSB7XG4gICAgICBzaWRlWSA9IGJvdHRvbTtcbiAgICAgIHZhciBvZmZzZXRZID0gaXNGaXhlZCAmJiBvZmZzZXRQYXJlbnQgPT09IHdpbiAmJiB3aW4udmlzdWFsVmlld3BvcnQgPyB3aW4udmlzdWFsVmlld3BvcnQuaGVpZ2h0IDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbaGVpZ2h0UHJvcF07XG4gICAgICB5IC09IG9mZnNldFkgLSBwb3BwZXJSZWN0LmhlaWdodDtcbiAgICAgIHkgKj0gZ3B1QWNjZWxlcmF0aW9uID8gMSA6IC0xO1xuICAgIH1cblxuICAgIGlmIChwbGFjZW1lbnQgPT09IGxlZnQgfHwgKHBsYWNlbWVudCA9PT0gdG9wIHx8IHBsYWNlbWVudCA9PT0gYm90dG9tKSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVggPSByaWdodDtcbiAgICAgIHZhciBvZmZzZXRYID0gaXNGaXhlZCAmJiBvZmZzZXRQYXJlbnQgPT09IHdpbiAmJiB3aW4udmlzdWFsVmlld3BvcnQgPyB3aW4udmlzdWFsVmlld3BvcnQud2lkdGggOiAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICAgIG9mZnNldFBhcmVudFt3aWR0aFByb3BdO1xuICAgICAgeCAtPSBvZmZzZXRYIC0gcG9wcGVyUmVjdC53aWR0aDtcbiAgICAgIHggKj0gZ3B1QWNjZWxlcmF0aW9uID8gMSA6IC0xO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb21tb25TdHlsZXMgPSBPYmplY3QuYXNzaWduKHtcbiAgICBwb3NpdGlvbjogcG9zaXRpb25cbiAgfSwgYWRhcHRpdmUgJiYgdW5zZXRTaWRlcyk7XG5cbiAgdmFyIF9yZWY0ID0gcm91bmRPZmZzZXRzID09PSB0cnVlID8gcm91bmRPZmZzZXRzQnlEUFIoe1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9KSA6IHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcblxuICB4ID0gX3JlZjQueDtcbiAgeSA9IF9yZWY0Lnk7XG5cbiAgaWYgKGdwdUFjY2VsZXJhdGlvbikge1xuICAgIHZhciBfT2JqZWN0JGFzc2lnbjtcblxuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbiA9IHt9LCBfT2JqZWN0JGFzc2lnbltzaWRlWV0gPSBoYXNZID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduW3NpZGVYXSA9IGhhc1ggPyAnMCcgOiAnJywgX09iamVjdCRhc3NpZ24udHJhbnNmb3JtID0gKHdpbi5kZXZpY2VQaXhlbFJhdGlvIHx8IDEpIDw9IDEgPyBcInRyYW5zbGF0ZShcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4KVwiIDogXCJ0cmFuc2xhdGUzZChcIiArIHggKyBcInB4LCBcIiArIHkgKyBcInB4LCAwKVwiLCBfT2JqZWN0JGFzc2lnbikpO1xuICB9XG5cbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywgKF9PYmplY3QkYXNzaWduMiA9IHt9LCBfT2JqZWN0JGFzc2lnbjJbc2lkZVldID0gaGFzWSA/IHkgKyBcInB4XCIgOiAnJywgX09iamVjdCRhc3NpZ24yW3NpZGVYXSA9IGhhc1ggPyB4ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMi50cmFuc2Zvcm0gPSAnJywgX09iamVjdCRhc3NpZ24yKSk7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVTdHlsZXMoX3JlZjUpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjUuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjUub3B0aW9ucztcbiAgdmFyIF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9IG9wdGlvbnMuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX29wdGlvbnMkZ3B1QWNjZWxlcmF0ID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkZ3B1QWNjZWxlcmF0LFxuICAgICAgX29wdGlvbnMkYWRhcHRpdmUgPSBvcHRpb25zLmFkYXB0aXZlLFxuICAgICAgYWRhcHRpdmUgPSBfb3B0aW9ucyRhZGFwdGl2ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGFkYXB0aXZlLFxuICAgICAgX29wdGlvbnMkcm91bmRPZmZzZXRzID0gb3B0aW9ucy5yb3VuZE9mZnNldHMsXG4gICAgICByb3VuZE9mZnNldHMgPSBfb3B0aW9ucyRyb3VuZE9mZnNldHMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRyb3VuZE9mZnNldHM7XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgIHZhciB0cmFuc2l0aW9uUHJvcGVydHkgPSBnZXRDb21wdXRlZFN0eWxlKHN0YXRlLmVsZW1lbnRzLnBvcHBlcikudHJhbnNpdGlvblByb3BlcnR5IHx8ICcnO1xuXG4gICAgaWYgKGFkYXB0aXZlICYmIFsndHJhbnNmb3JtJywgJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLnNvbWUoZnVuY3Rpb24gKHByb3BlcnR5KSB7XG4gICAgICByZXR1cm4gdHJhbnNpdGlvblByb3BlcnR5LmluZGV4T2YocHJvcGVydHkpID49IDA7XG4gICAgfSkpIHtcbiAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogRGV0ZWN0ZWQgQ1NTIHRyYW5zaXRpb25zIG9uIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nJywgJ0NTUyBwcm9wZXJ0aWVzOiBcInRyYW5zZm9ybVwiLCBcInRvcFwiLCBcInJpZ2h0XCIsIFwiYm90dG9tXCIsIFwibGVmdFwiLicsICdcXG5cXG4nLCAnRGlzYWJsZSB0aGUgXCJjb21wdXRlU3R5bGVzXCIgbW9kaWZpZXJcXCdzIGBhZGFwdGl2ZWAgb3B0aW9uIHRvIGFsbG93JywgJ2ZvciBzbW9vdGggdHJhbnNpdGlvbnMsIG9yIHJlbW92ZSB0aGVzZSBwcm9wZXJ0aWVzIGZyb20gdGhlIENTUycsICd0cmFuc2l0aW9uIGRlY2xhcmF0aW9uIG9uIHRoZSBwb3BwZXIgZWxlbWVudCBpZiBvbmx5IHRyYW5zaXRpb25pbmcnLCAnb3BhY2l0eSBvciBiYWNrZ3JvdW5kLWNvbG9yIGZvciBleGFtcGxlLicsICdcXG5cXG4nLCAnV2UgcmVjb21tZW5kIHVzaW5nIHRoZSBwb3BwZXIgZWxlbWVudCBhcyBhIHdyYXBwZXIgYXJvdW5kIGFuIGlubmVyJywgJ2VsZW1lbnQgdGhhdCBjYW4gaGF2ZSBhbnkgQ1NTIHByb3BlcnR5IHRyYW5zaXRpb25lZCBmb3IgYW5pbWF0aW9ucy4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb21tb25TdHlsZXMgPSB7XG4gICAgcGxhY2VtZW50OiBnZXRCYXNlUGxhY2VtZW50KHN0YXRlLnBsYWNlbWVudCksXG4gICAgdmFyaWF0aW9uOiBnZXRWYXJpYXRpb24oc3RhdGUucGxhY2VtZW50KSxcbiAgICBwb3BwZXI6IHN0YXRlLmVsZW1lbnRzLnBvcHBlcixcbiAgICBwb3BwZXJSZWN0OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgZ3B1QWNjZWxlcmF0aW9uOiBncHVBY2NlbGVyYXRpb24sXG4gICAgaXNGaXhlZDogc3RhdGUub3B0aW9ucy5zdHJhdGVneSA9PT0gJ2ZpeGVkJ1xuICB9O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMucG9wcGVyLCBtYXBUb1N0eWxlcyhPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIHtcbiAgICAgIG9mZnNldHM6IHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cyxcbiAgICAgIHBvc2l0aW9uOiBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5LFxuICAgICAgYWRhcHRpdmU6IGFkYXB0aXZlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgaWYgKHN0YXRlLm1vZGlmaWVyc0RhdGEuYXJyb3cgIT0gbnVsbCkge1xuICAgIHN0YXRlLnN0eWxlcy5hcnJvdyA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnN0eWxlcy5hcnJvdywgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93LFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICBhZGFwdGl2ZTogZmFsc2UsXG4gICAgICByb3VuZE9mZnNldHM6IHJvdW5kT2Zmc2V0c1xuICAgIH0pKSk7XG4gIH1cblxuICBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciA9IE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyLCB7XG4gICAgJ2RhdGEtcG9wcGVyLXBsYWNlbWVudCc6IHN0YXRlLnBsYWNlbWVudFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2NvbXB1dGVTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ2JlZm9yZVdyaXRlJyxcbiAgZm46IGNvbXB1dGVTdHlsZXMsXG4gIGRhdGE6IHt9XG59OyIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRXaW5kb3cuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgcGFzc2l2ZSA9IHtcbiAgcGFzc2l2ZTogdHJ1ZVxufTtcblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIGluc3RhbmNlID0gX3JlZi5pbnN0YW5jZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRzY3JvbGwgPSBvcHRpb25zLnNjcm9sbCxcbiAgICAgIHNjcm9sbCA9IF9vcHRpb25zJHNjcm9sbCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHNjcm9sbCxcbiAgICAgIF9vcHRpb25zJHJlc2l6ZSA9IG9wdGlvbnMucmVzaXplLFxuICAgICAgcmVzaXplID0gX29wdGlvbnMkcmVzaXplID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcmVzaXplO1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KHN0YXRlLmVsZW1lbnRzLnBvcHBlcik7XG4gIHZhciBzY3JvbGxQYXJlbnRzID0gW10uY29uY2F0KHN0YXRlLnNjcm9sbFBhcmVudHMucmVmZXJlbmNlLCBzdGF0ZS5zY3JvbGxQYXJlbnRzLnBvcHBlcik7XG5cbiAgaWYgKHNjcm9sbCkge1xuICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICBzY3JvbGxQYXJlbnQuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChyZXNpemUpIHtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHNjcm9sbCkge1xuICAgICAgc2Nyb2xsUGFyZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChzY3JvbGxQYXJlbnQpIHtcbiAgICAgICAgc2Nyb2xsUGFyZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzaXplKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaW5zdGFuY2UudXBkYXRlLCBwYXNzaXZlKTtcbiAgICB9XG4gIH07XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdldmVudExpc3RlbmVycycsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnd3JpdGUnLFxuICBmbjogZnVuY3Rpb24gZm4oKSB7fSxcbiAgZWZmZWN0OiBlZmZlY3QsXG4gIGRhdGE6IHt9XG59OyIsInZhciBoYXNoID0ge1xuICBsZWZ0OiAncmlnaHQnLFxuICByaWdodDogJ2xlZnQnLFxuICBib3R0b206ICd0b3AnLFxuICB0b3A6ICdib3R0b20nXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsInZhciBoYXNoID0ge1xuICBzdGFydDogJ2VuZCcsXG4gIGVuZDogJ3N0YXJ0J1xufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnJlcGxhY2UoL3N0YXJ0fGVuZC9nLCBmdW5jdGlvbiAobWF0Y2hlZCkge1xuICAgIHJldHVybiBoYXNoW21hdGNoZWRdO1xuICB9KTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0V2luZG93U2Nyb2xsKG5vZGUpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhub2RlKTtcbiAgdmFyIHNjcm9sbExlZnQgPSB3aW4ucGFnZVhPZmZzZXQ7XG4gIHZhciBzY3JvbGxUb3AgPSB3aW4ucGFnZVlPZmZzZXQ7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IHNjcm9sbFRvcFxuICB9O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCkge1xuICAvLyBJZiA8aHRtbD4gaGFzIGEgQ1NTIHdpZHRoIGdyZWF0ZXIgdGhhbiB0aGUgdmlld3BvcnQsIHRoZW4gdGhpcyB3aWxsIGJlXG4gIC8vIGluY29ycmVjdCBmb3IgUlRMLlxuICAvLyBQb3BwZXIgMSBpcyBicm9rZW4gaW4gdGhpcyBjYXNlIGFuZCBuZXZlciBoYWQgYSBidWcgcmVwb3J0IHNvIGxldCdzIGFzc3VtZVxuICAvLyBpdCdzIG5vdCBhbiBpc3N1ZS4gSSBkb24ndCB0aGluayBhbnlvbmUgZXZlciBzcGVjaWZpZXMgd2lkdGggb24gPGh0bWw+XG4gIC8vIGFueXdheS5cbiAgLy8gQnJvd3NlcnMgd2hlcmUgdGhlIGxlZnQgc2Nyb2xsYmFyIGRvZXNuJ3QgY2F1c2UgYW4gaXNzdWUgcmVwb3J0IGAwYCBmb3JcbiAgLy8gdGhpcyAoZS5nLiBFZGdlIDIwMTksIElFMTEsIFNhZmFyaSlcbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCkuc2Nyb2xsTGVmdDtcbn0iLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuL2dldFdpbmRvdy5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBpc0xheW91dFZpZXdwb3J0IGZyb20gXCIuL2lzTGF5b3V0Vmlld3BvcnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkge1xuICB2YXIgd2luID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgdmFyIHZpc3VhbFZpZXdwb3J0ID0gd2luLnZpc3VhbFZpZXdwb3J0O1xuICB2YXIgd2lkdGggPSBodG1sLmNsaWVudFdpZHRoO1xuICB2YXIgaGVpZ2h0ID0gaHRtbC5jbGllbnRIZWlnaHQ7XG4gIHZhciB4ID0gMDtcbiAgdmFyIHkgPSAwO1xuXG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIHZhciBsYXlvdXRWaWV3cG9ydCA9IGlzTGF5b3V0Vmlld3BvcnQoKTtcblxuICAgIGlmIChsYXlvdXRWaWV3cG9ydCB8fCAhbGF5b3V0Vmlld3BvcnQgJiYgc3RyYXRlZ3kgPT09ICdmaXhlZCcpIHtcbiAgICAgIHggPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRMZWZ0O1xuICAgICAgeSA9IHZpc3VhbFZpZXdwb3J0Lm9mZnNldFRvcDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KSxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGxCYXJYIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbEJhclguanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5pbXBvcnQgeyBtYXggfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiOyAvLyBHZXRzIHRoZSBlbnRpcmUgc2l6ZSBvZiB0aGUgc2Nyb2xsYWJsZSBkb2N1bWVudCBhcmVhLCBldmVuIGV4dGVuZGluZyBvdXRzaWRlXG4vLyBvZiB0aGUgYDxodG1sPmAgYW5kIGA8Ym9keT5gIHJlY3QgYm91bmRzIGlmIGhvcml6b250YWxseSBzY3JvbGxhYmxlXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50UmVjdChlbGVtZW50KSB7XG4gIHZhciBfZWxlbWVudCRvd25lckRvY3VtZW47XG5cbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB3aW5TY3JvbGwgPSBnZXRXaW5kb3dTY3JvbGwoZWxlbWVudCk7XG4gIHZhciBib2R5ID0gKF9lbGVtZW50JG93bmVyRG9jdW1lbiA9IGVsZW1lbnQub3duZXJEb2N1bWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9lbGVtZW50JG93bmVyRG9jdW1lbi5ib2R5O1xuICB2YXIgd2lkdGggPSBtYXgoaHRtbC5zY3JvbGxXaWR0aCwgaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuc2Nyb2xsV2lkdGggOiAwLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApO1xuICB2YXIgaGVpZ2h0ID0gbWF4KGh0bWwuc2Nyb2xsSGVpZ2h0LCBodG1sLmNsaWVudEhlaWdodCwgYm9keSA/IGJvZHkuc2Nyb2xsSGVpZ2h0IDogMCwgYm9keSA/IGJvZHkuY2xpZW50SGVpZ2h0IDogMCk7XG4gIHZhciB4ID0gLXdpblNjcm9sbC5zY3JvbGxMZWZ0ICsgZ2V0V2luZG93U2Nyb2xsQmFyWChlbGVtZW50KTtcbiAgdmFyIHkgPSAtd2luU2Nyb2xsLnNjcm9sbFRvcDtcblxuICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShib2R5IHx8IGh0bWwpLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICB4ICs9IG1heChodG1sLmNsaWVudFdpZHRoLCBib2R5ID8gYm9keS5jbGllbnRXaWR0aCA6IDApIC0gd2lkdGg7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodCxcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRTY3JvbGxQYXJlbnQobm9kZSkge1xuICBpZiAoWydodG1sJywgJ2JvZHknLCAnI2RvY3VtZW50J10uaW5kZXhPZihnZXROb2RlTmFtZShub2RlKSkgPj0gMCkge1xuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgICByZXR1cm4gbm9kZS5vd25lckRvY3VtZW50LmJvZHk7XG4gIH1cblxuICBpZiAoaXNIVE1MRWxlbWVudChub2RlKSAmJiBpc1Njcm9sbFBhcmVudChub2RlKSkge1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgcmV0dXJuIGdldFNjcm9sbFBhcmVudChnZXRQYXJlbnROb2RlKG5vZGUpKTtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCByZWN0LCB7XG4gICAgbGVmdDogcmVjdC54LFxuICAgIHRvcDogcmVjdC55LFxuICAgIHJpZ2h0OiByZWN0LnggKyByZWN0LndpZHRoLFxuICAgIGJvdHRvbTogcmVjdC55ICsgcmVjdC5oZWlnaHRcbiAgfSk7XG59IiwiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgZmFsc2UsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkpIDogaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSA/IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgZmlyc3RDbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRWYXJpYXRpb24gZnJvbSBcIi4vZ2V0VmFyaWF0aW9uLmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0LCBzdGFydCwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciByZWZlcmVuY2UgPSBfcmVmLnJlZmVyZW5jZSxcbiAgICAgIGVsZW1lbnQgPSBfcmVmLmVsZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfcmVmLnBsYWNlbWVudDtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBwbGFjZW1lbnQgPyBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgdmFyaWF0aW9uID0gcGxhY2VtZW50ID8gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgOiBudWxsO1xuICB2YXIgY29tbW9uWCA9IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoIC8gMiAtIGVsZW1lbnQud2lkdGggLyAyO1xuICB2YXIgY29tbW9uWSA9IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodCAvIDIgLSBlbGVtZW50LmhlaWdodCAvIDI7XG4gIHZhciBvZmZzZXRzO1xuXG4gIHN3aXRjaCAoYmFzZVBsYWNlbWVudCkge1xuICAgIGNhc2UgdG9wOlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgLSBlbGVtZW50LmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBib3R0b206XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSArIHJlZmVyZW5jZS5oZWlnaHRcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgcmlnaHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSBsZWZ0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLnggLSBlbGVtZW50LndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBkZWZhdWx0OlxuICAgICAgb2Zmc2V0cyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG5cbiAgdmFyIG1haW5BeGlzID0gYmFzZVBsYWNlbWVudCA/IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChiYXNlUGxhY2VtZW50KSA6IG51bGw7XG5cbiAgaWYgKG1haW5BeGlzICE9IG51bGwpIHtcbiAgICB2YXIgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHN3aXRjaCAodmFyaWF0aW9uKSB7XG4gICAgICBjYXNlIHN0YXJ0OlxuICAgICAgICBvZmZzZXRzW21haW5BeGlzXSA9IG9mZnNldHNbbWFpbkF4aXNdIC0gKHJlZmVyZW5jZVtsZW5dIC8gMiAtIGVsZW1lbnRbbGVuXSAvIDIpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSBlbmQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gKyAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvZmZzZXRzO1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJHN0cmF0ZWd5ID0gX29wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBzdHJhdGVneSA9IF9vcHRpb25zJHN0cmF0ZWd5ID09PSB2b2lkIDAgPyBzdGF0ZS5zdHJhdGVneSA6IF9vcHRpb25zJHN0cmF0ZWd5LFxuICAgICAgX29wdGlvbnMkYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMkYm91bmRhcnkgPT09IHZvaWQgMCA/IGNsaXBwaW5nUGFyZW50cyA6IF9vcHRpb25zJGJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyB2aWV3cG9ydCA6IF9vcHRpb25zJHJvb3RCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGVsZW1lbnRDb250ZSA9IF9vcHRpb25zLmVsZW1lbnRDb250ZXh0LFxuICAgICAgZWxlbWVudENvbnRleHQgPSBfb3B0aW9ucyRlbGVtZW50Q29udGUgPT09IHZvaWQgMCA/IHBvcHBlciA6IF9vcHRpb25zJGVsZW1lbnRDb250ZSxcbiAgICAgIF9vcHRpb25zJGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IF9vcHRpb25zJGFsdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMkcGFkZGluZyA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHBhZGRpbmc7XG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbiAgdmFyIGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcmVmZXJlbmNlIDogcG9wcGVyO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIHZhciBjbGlwcGluZ0NsaWVudFJlY3QgPSBnZXRDbGlwcGluZ1JlY3QoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgZ2V0RG9jdW1lbnRFbGVtZW50KHN0YXRlLmVsZW1lbnRzLnBvcHBlciksIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJpbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuL2dldFZhcmlhdGlvbi5qc1wiO1xuaW1wb3J0IHsgdmFyaWF0aW9uUGxhY2VtZW50cywgYmFzZVBsYWNlbWVudHMsIHBsYWNlbWVudHMgYXMgYWxsUGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9vcHRpb25zID0gb3B0aW9ucyxcbiAgICAgIHBsYWNlbWVudCA9IF9vcHRpb25zLnBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMuYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnkgPSBfb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMucGFkZGluZyxcbiAgICAgIGZsaXBWYXJpYXRpb25zID0gX29wdGlvbnMuZmxpcFZhcmlhdGlvbnMsXG4gICAgICBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPSBfb3B0aW9ucy5hbGxvd2VkQXV0b1BsYWNlbWVudHMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBfb3B0aW9ucyRhbGxvd2VkQXV0b1AgPT09IHZvaWQgMCA/IGFsbFBsYWNlbWVudHMgOiBfb3B0aW9ucyRhbGxvd2VkQXV0b1A7XG4gIHZhciB2YXJpYXRpb24gPSBnZXRWYXJpYXRpb24ocGxhY2VtZW50KTtcbiAgdmFyIHBsYWNlbWVudHMgPSB2YXJpYXRpb24gPyBmbGlwVmFyaWF0aW9ucyA/IHZhcmlhdGlvblBsYWNlbWVudHMgOiB2YXJpYXRpb25QbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpID09PSB2YXJpYXRpb247XG4gIH0pIDogYmFzZVBsYWNlbWVudHM7XG4gIHZhciBhbGxvd2VkUGxhY2VtZW50cyA9IHBsYWNlbWVudHMuZmlsdGVyKGZ1bmN0aW9uIChwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWxsb3dlZEF1dG9QbGFjZW1lbnRzLmluZGV4T2YocGxhY2VtZW50KSA+PSAwO1xuICB9KTtcblxuICBpZiAoYWxsb3dlZFBsYWNlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogVGhlIGBhbGxvd2VkQXV0b1BsYWNlbWVudHNgIG9wdGlvbiBkaWQgbm90IGFsbG93IGFueScsICdwbGFjZW1lbnRzLiBFbnN1cmUgdGhlIGBwbGFjZW1lbnRgIG9wdGlvbiBtYXRjaGVzIHRoZSB2YXJpYXRpb24nLCAnb2YgdGhlIGFsbG93ZWQgcGxhY2VtZW50cy4nLCAnRm9yIGV4YW1wbGUsIFwiYXV0b1wiIGNhbm5vdCBiZSB1c2VkIHRvIGFsbG93IFwiYm90dG9tLXN0YXJ0XCIuJywgJ1VzZSBcImF1dG8tc3RhcnRcIiBpbnN0ZWFkLiddLmpvaW4oJyAnKSk7XG4gICAgfVxuICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXR5cGVdOiBGbG93IHNlZW1zIHRvIGhhdmUgcHJvYmxlbXMgd2l0aCB0d28gYXJyYXkgdW5pb25zLi4uXG5cblxuICB2YXIgb3ZlcmZsb3dzID0gYWxsb3dlZFBsYWNlbWVudHMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBsYWNlbWVudCkge1xuICAgIGFjY1twbGFjZW1lbnRdID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICAgIHBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgICBwYWRkaW5nOiBwYWRkaW5nXG4gICAgfSlbZ2V0QmFzZVBsYWNlbWVudChwbGFjZW1lbnQpXTtcbiAgICByZXR1cm4gYWNjO1xuICB9LCB7fSk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvdmVyZmxvd3MpLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dzW2FdIC0gb3ZlcmZsb3dzW2JdO1xuICB9KTtcbn0iLCJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZU9mZnNldHMuanNcIjtcblxuZnVuY3Rpb24gcG9wcGVyT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICAvLyBPZmZzZXRzIGFyZSB0aGUgYWN0dWFsIHBvc2l0aW9uIHRoZSBwb3BwZXIgbmVlZHMgdG8gaGF2ZSB0byBiZVxuICAvLyBwcm9wZXJseSBwb3NpdGlvbmVkIG5lYXIgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRoaXMgaXMgdGhlIG1vc3QgYmFzaWMgcGxhY2VtZW50LCBhbmQgd2lsbCBiZSBhZGp1c3RlZCBieVxuICAvLyB0aGUgbW9kaWZpZXJzIGluIHRoZSBuZXh0IHN0ZXBcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHN0YXRlLnJlY3RzLnJlZmVyZW5jZSxcbiAgICBlbGVtZW50OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufSIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRIVE1MRWxlbWVudFNjcm9sbChlbGVtZW50KSB7XG4gIHJldHVybiB7XG4gICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5zY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0SFRNTEVsZW1lbnRTY3JvbGwgZnJvbSBcIi4vZ2V0SFRNTEVsZW1lbnRTY3JvbGwuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVTY3JvbGwobm9kZSkge1xuICBpZiAobm9kZSA9PT0gZ2V0V2luZG93KG5vZGUpIHx8ICFpc0hUTUxFbGVtZW50KG5vZGUpKSB7XG4gICAgcmV0dXJuIGdldFdpbmRvd1Njcm9sbChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZ2V0SFRNTEVsZW1lbnRTY3JvbGwobm9kZSk7XG4gIH1cbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldE5vZGVTY3JvbGwgZnJvbSBcIi4vZ2V0Tm9kZVNjcm9sbC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldFdpbmRvd1Njcm9sbEJhclggZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsQmFyWC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuXG5mdW5jdGlvbiBpc0VsZW1lbnRTY2FsZWQoZWxlbWVudCkge1xuICB2YXIgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIHZhciBzY2FsZVggPSByb3VuZChyZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMTtcbiAgdmFyIHNjYWxlWSA9IHJvdW5kKHJlY3QuaGVpZ2h0KSAvIGVsZW1lbnQub2Zmc2V0SGVpZ2h0IHx8IDE7XG4gIHJldHVybiBzY2FsZVggIT09IDEgfHwgc2NhbGVZICE9PSAxO1xufSAvLyBSZXR1cm5zIHRoZSBjb21wb3NpdGUgcmVjdCBvZiBhbiBlbGVtZW50IHJlbGF0aXZlIHRvIGl0cyBvZmZzZXRQYXJlbnQuXG4vLyBDb21wb3NpdGUgbWVhbnMgaXQgdGFrZXMgaW50byBhY2NvdW50IHRyYW5zZm9ybXMgYXMgd2VsbCBhcyBsYXlvdXQuXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q29tcG9zaXRlUmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50LCBpc0ZpeGVkKSB7XG4gIGlmIChpc0ZpeGVkID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkID0gZmFsc2U7XG4gIH1cblxuICB2YXIgaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgPSBpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciBvZmZzZXRQYXJlbnRJc1NjYWxlZCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSAmJiBpc0VsZW1lbnRTY2FsZWQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIGRvY3VtZW50RWxlbWVudCA9IGdldERvY3VtZW50RWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICB2YXIgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50T3JWaXJ0dWFsRWxlbWVudCwgb2Zmc2V0UGFyZW50SXNTY2FsZWQsIGlzRml4ZWQpO1xuICB2YXIgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIHZhciBvZmZzZXRzID0ge1xuICAgIHg6IDAsXG4gICAgeTogMFxuICB9O1xuXG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvMTA3OFxuICAgIGlzU2Nyb2xsUGFyZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICBvZmZzZXRzID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KG9mZnNldFBhcmVudCwgdHJ1ZSk7XG4gICAgICBvZmZzZXRzLnggKz0gb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgKz0gb2Zmc2V0UGFyZW50LmNsaWVudFRvcDtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50RWxlbWVudCkge1xuICAgICAgb2Zmc2V0cy54ID0gZ2V0V2luZG93U2Nyb2xsQmFyWChkb2N1bWVudEVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogcmVjdC5sZWZ0ICsgc2Nyb2xsLnNjcm9sbExlZnQgLSBvZmZzZXRzLngsXG4gICAgeTogcmVjdC50b3AgKyBzY3JvbGwuc2Nyb2xsVG9wIC0gb2Zmc2V0cy55LFxuICAgIHdpZHRoOiByZWN0LndpZHRoLFxuICAgIGhlaWdodDogcmVjdC5oZWlnaHRcbiAgfTtcbn0iLCJpbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBzb3VyY2U6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ5ODc1MjU1XG5cbmZ1bmN0aW9uIG9yZGVyKG1vZGlmaWVycykge1xuICB2YXIgbWFwID0gbmV3IE1hcCgpO1xuICB2YXIgdmlzaXRlZCA9IG5ldyBTZXQoKTtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBtYXAuc2V0KG1vZGlmaWVyLm5hbWUsIG1vZGlmaWVyKTtcbiAgfSk7IC8vIE9uIHZpc2l0aW5nIG9iamVjdCwgY2hlY2sgZm9yIGl0cyBkZXBlbmRlbmNpZXMgYW5kIHZpc2l0IHRoZW0gcmVjdXJzaXZlbHlcblxuICBmdW5jdGlvbiBzb3J0KG1vZGlmaWVyKSB7XG4gICAgdmlzaXRlZC5hZGQobW9kaWZpZXIubmFtZSk7XG4gICAgdmFyIHJlcXVpcmVzID0gW10uY29uY2F0KG1vZGlmaWVyLnJlcXVpcmVzIHx8IFtdLCBtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzIHx8IFtdKTtcbiAgICByZXF1aXJlcy5mb3JFYWNoKGZ1bmN0aW9uIChkZXApIHtcbiAgICAgIGlmICghdmlzaXRlZC5oYXMoZGVwKSkge1xuICAgICAgICB2YXIgZGVwTW9kaWZpZXIgPSBtYXAuZ2V0KGRlcCk7XG5cbiAgICAgICAgaWYgKGRlcE1vZGlmaWVyKSB7XG4gICAgICAgICAgc29ydChkZXBNb2RpZmllcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXN1bHQucHVzaChtb2RpZmllcik7XG4gIH1cblxuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBpZiAoIXZpc2l0ZWQuaGFzKG1vZGlmaWVyLm5hbWUpKSB7XG4gICAgICAvLyBjaGVjayBmb3IgdmlzaXRlZCBvYmplY3RcbiAgICAgIHNvcnQobW9kaWZpZXIpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG9yZGVyTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICAvLyBvcmRlciBiYXNlZCBvbiBkZXBlbmRlbmNpZXNcbiAgdmFyIG9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcihtb2RpZmllcnMpOyAvLyBvcmRlciBiYXNlZCBvbiBwaGFzZVxuXG4gIHJldHVybiBtb2RpZmllclBoYXNlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgcGhhc2UpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgIHJldHVybiBtb2RpZmllci5waGFzZSA9PT0gcGhhc2U7XG4gICAgfSkpO1xuICB9LCBbXSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChzdHIpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChhcmdzKS5yZWR1Y2UoZnVuY3Rpb24gKHAsIGMpIHtcbiAgICByZXR1cm4gcC5yZXBsYWNlKC8lcy8sIGMpO1xuICB9LCBzdHIpO1xufSIsImltcG9ydCBmb3JtYXQgZnJvbSBcIi4vZm9ybWF0LmpzXCI7XG5pbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfTU9ESUZJRVJfRVJST1IgPSAnUG9wcGVyOiBtb2RpZmllciBcIiVzXCIgcHJvdmlkZWQgYW4gaW52YWxpZCAlcyBwcm9wZXJ0eSwgZXhwZWN0ZWQgJXMgYnV0IGdvdCAlcyc7XG52YXIgTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHJlcXVpcmVzIFwiJXNcIiwgYnV0IFwiJXNcIiBtb2RpZmllciBpcyBub3QgYXZhaWxhYmxlJztcbnZhciBWQUxJRF9QUk9QRVJUSUVTID0gWyduYW1lJywgJ2VuYWJsZWQnLCAncGhhc2UnLCAnZm4nLCAnZWZmZWN0JywgJ3JlcXVpcmVzJywgJ29wdGlvbnMnXTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBbXS5jb25jYXQoT2JqZWN0LmtleXMobW9kaWZpZXIpLCBWQUxJRF9QUk9QRVJUSUVTKSAvLyBJRTExLWNvbXBhdGlibGUgcmVwbGFjZW1lbnQgZm9yIGBuZXcgU2V0KGl0ZXJhYmxlKWBcbiAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIHNlbGYpIHtcbiAgICAgIHJldHVybiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDtcbiAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIubmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIFN0cmluZyhtb2RpZmllci5uYW1lKSwgJ1wibmFtZVwiJywgJ1wic3RyaW5nXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5uYW1lKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZW5hYmxlZCc6XG4gICAgICAgICAgaWYgKHR5cGVvZiBtb2RpZmllci5lbmFibGVkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImVuYWJsZWRcIicsICdcImJvb2xlYW5cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmVuYWJsZWQpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdwaGFzZSc6XG4gICAgICAgICAgaWYgKG1vZGlmaWVyUGhhc2VzLmluZGV4T2YobW9kaWZpZXIucGhhc2UpIDwgMCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicGhhc2VcIicsIFwiZWl0aGVyIFwiICsgbW9kaWZpZXJQaGFzZXMuam9pbignLCAnKSwgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIucGhhc2UpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdmbic6XG4gICAgICAgICAgaWYgKHR5cGVvZiBtb2RpZmllci5mbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wiZm5cIicsICdcImZ1bmN0aW9uXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5mbikgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VmZmVjdCc6XG4gICAgICAgICAgaWYgKG1vZGlmaWVyLmVmZmVjdCAhPSBudWxsICYmIHR5cGVvZiBtb2RpZmllci5lZmZlY3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImVmZmVjdFwiJywgJ1wiZnVuY3Rpb25cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmZuKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmVxdWlyZXMnOlxuICAgICAgICAgIGlmIChtb2RpZmllci5yZXF1aXJlcyAhPSBudWxsICYmICFBcnJheS5pc0FycmF5KG1vZGlmaWVyLnJlcXVpcmVzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlcykgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzSWZFeGlzdHMnOlxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNJZkV4aXN0c1wiJywgJ1wiYXJyYXlcIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdvcHRpb25zJzpcbiAgICAgICAgY2FzZSAnZGF0YSc6XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUG9wcGVySlM6IGFuIGludmFsaWQgcHJvcGVydHkgaGFzIGJlZW4gcHJvdmlkZWQgdG8gdGhlIFxcXCJcIiArIG1vZGlmaWVyLm5hbWUgKyBcIlxcXCIgbW9kaWZpZXIsIHZhbGlkIHByb3BlcnRpZXMgYXJlIFwiICsgVkFMSURfUFJPUEVSVElFUy5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlxcXCJcIiArIHMgKyBcIlxcXCJcIjtcbiAgICAgICAgICB9KS5qb2luKCcsICcpICsgXCI7IGJ1dCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgd2FzIHByb3ZpZGVkLlwiKTtcbiAgICAgIH1cblxuICAgICAgbW9kaWZpZXIucmVxdWlyZXMgJiYgbW9kaWZpZXIucmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAocmVxdWlyZW1lbnQpIHtcbiAgICAgICAgaWYgKG1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChtb2QpIHtcbiAgICAgICAgICByZXR1cm4gbW9kLm5hbWUgPT09IHJlcXVpcmVtZW50O1xuICAgICAgICB9KSA9PSBudWxsKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksIHJlcXVpcmVtZW50LCByZXF1aXJlbWVudCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5pcXVlQnkoYXJyLCBmbikge1xuICB2YXIgaWRlbnRpZmllcnMgPSBuZXcgU2V0KCk7XG4gIHJldHVybiBhcnIuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBmbihpdGVtKTtcblxuICAgIGlmICghaWRlbnRpZmllcnMuaGFzKGlkZW50aWZpZXIpKSB7XG4gICAgICBpZGVudGlmaWVycy5hZGQoaWRlbnRpZmllcik7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlQnlOYW1lKG1vZGlmaWVycykge1xuICB2YXIgbWVyZ2VkID0gbW9kaWZpZXJzLnJlZHVjZShmdW5jdGlvbiAobWVyZ2VkLCBjdXJyZW50KSB7XG4gICAgdmFyIGV4aXN0aW5nID0gbWVyZ2VkW2N1cnJlbnQubmFtZV07XG4gICAgbWVyZ2VkW2N1cnJlbnQubmFtZV0gPSBleGlzdGluZyA/IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLCBjdXJyZW50LCB7XG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5vcHRpb25zLCBjdXJyZW50Lm9wdGlvbnMpLFxuICAgICAgZGF0YTogT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcuZGF0YSwgY3VycmVudC5kYXRhKVxuICAgIH0pIDogY3VycmVudDtcbiAgICByZXR1cm4gbWVyZ2VkO1xuICB9LCB7fSk7IC8vIElFMTEgZG9lcyBub3Qgc3VwcG9ydCBPYmplY3QudmFsdWVzXG5cbiAgcmV0dXJuIE9iamVjdC5rZXlzKG1lcmdlZCkubWFwKGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gbWVyZ2VkW2tleV07XG4gIH0pO1xufSIsImltcG9ydCBnZXRDb21wb3NpdGVSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wb3NpdGVSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0TGF5b3V0UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2RvbS11dGlscy9saXN0U2Nyb2xsUGFyZW50cy5qc1wiO1xuaW1wb3J0IGdldE9mZnNldFBhcmVudCBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IG9yZGVyTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL29yZGVyTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcIi4vdXRpbHMvZGVib3VuY2UuanNcIjtcbmltcG9ydCB2YWxpZGF0ZU1vZGlmaWVycyBmcm9tIFwiLi91dGlscy92YWxpZGF0ZU1vZGlmaWVycy5qc1wiO1xuaW1wb3J0IHVuaXF1ZUJ5IGZyb20gXCIuL3V0aWxzL3VuaXF1ZUJ5LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgbWVyZ2VCeU5hbWUgZnJvbSBcIi4vdXRpbHMvbWVyZ2VCeU5hbWUuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IHsgaXNFbGVtZW50IH0gZnJvbSBcIi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfRUxFTUVOVF9FUlJPUiA9ICdQb3BwZXI6IEludmFsaWQgcmVmZXJlbmNlIG9yIHBvcHBlciBhcmd1bWVudCBwcm92aWRlZC4gVGhleSBtdXN0IGJlIGVpdGhlciBhIERPTSBlbGVtZW50IG9yIHZpcnR1YWwgZWxlbWVudC4nO1xudmFyIElORklOSVRFX0xPT1BfRVJST1IgPSAnUG9wcGVyOiBBbiBpbmZpbml0ZSBsb29wIGluIHRoZSBtb2RpZmllcnMgY3ljbGUgaGFzIGJlZW4gZGV0ZWN0ZWQhIFRoZSBjeWNsZSBoYXMgYmVlbiBpbnRlcnJ1cHRlZCB0byBwcmV2ZW50IGEgYnJvd3NlciBjcmFzaC4nO1xudmFyIERFRkFVTFRfT1BUSU9OUyA9IHtcbiAgcGxhY2VtZW50OiAnYm90dG9tJyxcbiAgbW9kaWZpZXJzOiBbXSxcbiAgc3RyYXRlZ3k6ICdhYnNvbHV0ZSdcbn07XG5cbmZ1bmN0aW9uIGFyZVZhbGlkRWxlbWVudHMoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gIH1cblxuICByZXR1cm4gIWFyZ3Muc29tZShmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHJldHVybiAhKGVsZW1lbnQgJiYgdHlwZW9mIGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwb3BwZXJHZW5lcmF0b3IoZ2VuZXJhdG9yT3B0aW9ucykge1xuICBpZiAoZ2VuZXJhdG9yT3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgZ2VuZXJhdG9yT3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgdmFyIF9nZW5lcmF0b3JPcHRpb25zID0gZ2VuZXJhdG9yT3B0aW9ucyxcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRNb2RpZmllcnMsXG4gICAgICBkZWZhdWx0TW9kaWZpZXJzID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmID09PSB2b2lkIDAgPyBbXSA6IF9nZW5lcmF0b3JPcHRpb25zJGRlZixcbiAgICAgIF9nZW5lcmF0b3JPcHRpb25zJGRlZjIgPSBfZ2VuZXJhdG9yT3B0aW9ucy5kZWZhdWx0T3B0aW9ucyxcbiAgICAgIGRlZmF1bHRPcHRpb25zID0gX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9PT0gdm9pZCAwID8gREVGQVVMVF9PUFRJT05TIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmMjtcbiAgcmV0dXJuIGZ1bmN0aW9uIGNyZWF0ZVBvcHBlcihyZWZlcmVuY2UsIHBvcHBlciwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICAgIG9wdGlvbnMgPSBkZWZhdWx0T3B0aW9ucztcbiAgICB9XG5cbiAgICB2YXIgc3RhdGUgPSB7XG4gICAgICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICAgICAgb3JkZXJlZE1vZGlmaWVyczogW10sXG4gICAgICBvcHRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX09QVElPTlMsIGRlZmF1bHRPcHRpb25zKSxcbiAgICAgIG1vZGlmaWVyc0RhdGE6IHt9LFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlOiByZWZlcmVuY2UsXG4gICAgICAgIHBvcHBlcjogcG9wcGVyXG4gICAgICB9LFxuICAgICAgYXR0cmlidXRlczoge30sXG4gICAgICBzdHlsZXM6IHt9XG4gICAgfTtcbiAgICB2YXIgZWZmZWN0Q2xlYW51cEZucyA9IFtdO1xuICAgIHZhciBpc0Rlc3Ryb3llZCA9IGZhbHNlO1xuICAgIHZhciBpbnN0YW5jZSA9IHtcbiAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgIHNldE9wdGlvbnM6IGZ1bmN0aW9uIHNldE9wdGlvbnMoc2V0T3B0aW9uc0FjdGlvbikge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHR5cGVvZiBzZXRPcHRpb25zQWN0aW9uID09PSAnZnVuY3Rpb24nID8gc2V0T3B0aW9uc0FjdGlvbihzdGF0ZS5vcHRpb25zKSA6IHNldE9wdGlvbnNBY3Rpb247XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgc3RhdGUub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRPcHRpb25zLCBzdGF0ZS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICAgICAgc3RhdGUuc2Nyb2xsUGFyZW50cyA9IHtcbiAgICAgICAgICByZWZlcmVuY2U6IGlzRWxlbWVudChyZWZlcmVuY2UpID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlKSA6IHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCA/IGxpc3RTY3JvbGxQYXJlbnRzKHJlZmVyZW5jZS5jb250ZXh0RWxlbWVudCkgOiBbXSxcbiAgICAgICAgICBwb3BwZXI6IGxpc3RTY3JvbGxQYXJlbnRzKHBvcHBlcilcbiAgICAgICAgfTsgLy8gT3JkZXJzIHRoZSBtb2RpZmllcnMgYmFzZWQgb24gdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCBgcGhhc2VgXG4gICAgICAgIC8vIHByb3BlcnRpZXNcblxuICAgICAgICB2YXIgb3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyTW9kaWZpZXJzKG1lcmdlQnlOYW1lKFtdLmNvbmNhdChkZWZhdWx0TW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycykpKTsgLy8gU3RyaXAgb3V0IGRpc2FibGVkIG1vZGlmaWVyc1xuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMgPSBvcmRlcmVkTW9kaWZpZXJzLmZpbHRlcihmdW5jdGlvbiAobSkge1xuICAgICAgICAgIHJldHVybiBtLmVuYWJsZWQ7XG4gICAgICAgIH0pOyAvLyBWYWxpZGF0ZSB0aGUgcHJvdmlkZWQgbW9kaWZpZXJzIHNvIHRoYXQgdGhlIGNvbnN1bWVyIHdpbGwgZ2V0IHdhcm5lZFxuICAgICAgICAvLyBpZiBvbmUgb2YgdGhlIG1vZGlmaWVycyBpcyBpbnZhbGlkIGZvciBhbnkgcmVhc29uXG5cbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgIHZhciBtb2RpZmllcnMgPSB1bmlxdWVCeShbXS5jb25jYXQob3JkZXJlZE1vZGlmaWVycywgc3RhdGUub3B0aW9ucy5tb2RpZmllcnMpLCBmdW5jdGlvbiAoX3JlZikge1xuICAgICAgICAgICAgdmFyIG5hbWUgPSBfcmVmLm5hbWU7XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB2YWxpZGF0ZU1vZGlmaWVycyhtb2RpZmllcnMpO1xuXG4gICAgICAgICAgaWYgKGdldEJhc2VQbGFjZW1lbnQoc3RhdGUub3B0aW9ucy5wbGFjZW1lbnQpID09PSBhdXRvKSB7XG4gICAgICAgICAgICB2YXIgZmxpcE1vZGlmaWVyID0gc3RhdGUub3JkZXJlZE1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChfcmVmMikge1xuICAgICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYyLm5hbWU7XG4gICAgICAgICAgICAgIHJldHVybiBuYW1lID09PSAnZmxpcCc7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFmbGlwTW9kaWZpZXIpIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihbJ1BvcHBlcjogXCJhdXRvXCIgcGxhY2VtZW50cyByZXF1aXJlIHRoZSBcImZsaXBcIiBtb2RpZmllciBiZScsICdwcmVzZW50IGFuZCBlbmFibGVkIHRvIHdvcmsuJ10uam9pbignICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgX2dldENvbXB1dGVkU3R5bGUgPSBnZXRDb21wdXRlZFN0eWxlKHBvcHBlciksXG4gICAgICAgICAgICAgIG1hcmdpblRvcCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblRvcCxcbiAgICAgICAgICAgICAgbWFyZ2luUmlnaHQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5SaWdodCxcbiAgICAgICAgICAgICAgbWFyZ2luQm90dG9tID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luQm90dG9tLFxuICAgICAgICAgICAgICBtYXJnaW5MZWZ0ID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luTGVmdDsgLy8gV2Ugbm8gbG9uZ2VyIHRha2UgaW50byBhY2NvdW50IGBtYXJnaW5zYCBvbiB0aGUgcG9wcGVyLCBhbmQgaXQgY2FuXG4gICAgICAgICAgLy8gY2F1c2UgYnVncyB3aXRoIHBvc2l0aW9uaW5nLCBzbyB3ZSdsbCB3YXJuIHRoZSBjb25zdW1lclxuXG5cbiAgICAgICAgICBpZiAoW21hcmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdF0uc29tZShmdW5jdGlvbiAobWFyZ2luKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VGbG9hdChtYXJnaW4pO1xuICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oWydQb3BwZXI6IENTUyBcIm1hcmdpblwiIHN0eWxlcyBjYW5ub3QgYmUgdXNlZCB0byBhcHBseSBwYWRkaW5nJywgJ2JldHdlZW4gdGhlIHBvcHBlciBhbmQgaXRzIHJlZmVyZW5jZSBlbGVtZW50IG9yIGJvdW5kYXJ5LicsICdUbyByZXBsaWNhdGUgbWFyZ2luLCB1c2UgdGhlIGBvZmZzZXRgIG1vZGlmaWVyLCBhcyB3ZWxsIGFzJywgJ3RoZSBgcGFkZGluZ2Agb3B0aW9uIGluIHRoZSBgcHJldmVudE92ZXJmbG93YCBhbmQgYGZsaXBgJywgJ21vZGlmaWVycy4nXS5qb2luKCcgJykpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJ1bk1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICByZXR1cm4gaW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICB9LFxuICAgICAgLy8gU3luYyB1cGRhdGUg4oCTIGl0IHdpbGwgYWx3YXlzIGJlIGV4ZWN1dGVkLCBldmVuIGlmIG5vdCBuZWNlc3NhcnkuIFRoaXNcbiAgICAgIC8vIGlzIHVzZWZ1bCBmb3IgbG93IGZyZXF1ZW5jeSB1cGRhdGVzIHdoZXJlIHN5bmMgYmVoYXZpb3Igc2ltcGxpZmllcyB0aGVcbiAgICAgIC8vIGxvZ2ljLlxuICAgICAgLy8gRm9yIGhpZ2ggZnJlcXVlbmN5IHVwZGF0ZXMgKGUuZy4gYHJlc2l6ZWAgYW5kIGBzY3JvbGxgIGV2ZW50cyksIGFsd2F5c1xuICAgICAgLy8gcHJlZmVyIHRoZSBhc3luYyBQb3BwZXIjdXBkYXRlIG1ldGhvZFxuICAgICAgZm9yY2VVcGRhdGU6IGZ1bmN0aW9uIGZvcmNlVXBkYXRlKCkge1xuICAgICAgICBpZiAoaXNEZXN0cm95ZWQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgX3N0YXRlJGVsZW1lbnRzID0gc3RhdGUuZWxlbWVudHMsXG4gICAgICAgICAgICByZWZlcmVuY2UgPSBfc3RhdGUkZWxlbWVudHMucmVmZXJlbmNlLFxuICAgICAgICAgICAgcG9wcGVyID0gX3N0YXRlJGVsZW1lbnRzLnBvcHBlcjsgLy8gRG9uJ3QgcHJvY2VlZCBpZiBgcmVmZXJlbmNlYCBvciBgcG9wcGVyYCBhcmUgbm90IHZhbGlkIGVsZW1lbnRzXG4gICAgICAgIC8vIGFueW1vcmVcblxuICAgICAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSAvLyBTdG9yZSB0aGUgcmVmZXJlbmNlIGFuZCBwb3BwZXIgcmVjdHMgdG8gYmUgcmVhZCBieSBtb2RpZmllcnNcblxuXG4gICAgICAgIHN0YXRlLnJlY3RzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogZ2V0Q29tcG9zaXRlUmVjdChyZWZlcmVuY2UsIGdldE9mZnNldFBhcmVudChwb3BwZXIpLCBzdGF0ZS5vcHRpb25zLnN0cmF0ZWd5ID09PSAnZml4ZWQnKSxcbiAgICAgICAgICBwb3BwZXI6IGdldExheW91dFJlY3QocG9wcGVyKVxuICAgICAgICB9OyAvLyBNb2RpZmllcnMgaGF2ZSB0aGUgYWJpbGl0eSB0byByZXNldCB0aGUgY3VycmVudCB1cGRhdGUgY3ljbGUuIFRoZVxuICAgICAgICAvLyBtb3N0IGNvbW1vbiB1c2UgY2FzZSBmb3IgdGhpcyBpcyB0aGUgYGZsaXBgIG1vZGlmaWVyIGNoYW5naW5nIHRoZVxuICAgICAgICAvLyBwbGFjZW1lbnQsIHdoaWNoIHRoZW4gbmVlZHMgdG8gcmUtcnVuIGFsbCB0aGUgbW9kaWZpZXJzLCBiZWNhdXNlIHRoZVxuICAgICAgICAvLyBsb2dpYyB3YXMgcHJldmlvdXNseSByYW4gZm9yIHRoZSBwcmV2aW91cyBwbGFjZW1lbnQgYW5kIGlzIHRoZXJlZm9yZVxuICAgICAgICAvLyBzdGFsZS9pbmNvcnJlY3RcblxuICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICBzdGF0ZS5wbGFjZW1lbnQgPSBzdGF0ZS5vcHRpb25zLnBsYWNlbWVudDsgLy8gT24gZWFjaCB1cGRhdGUgY3ljbGUsIHRoZSBgbW9kaWZpZXJzRGF0YWAgcHJvcGVydHkgZm9yIGVhY2ggbW9kaWZpZXJcbiAgICAgICAgLy8gaXMgZmlsbGVkIHdpdGggdGhlIGluaXRpYWwgZGF0YSBzcGVjaWZpZWQgYnkgdGhlIG1vZGlmaWVyLiBUaGlzIG1lYW5zXG4gICAgICAgIC8vIGl0IGRvZXNuJ3QgcGVyc2lzdCBhbmQgaXMgZnJlc2ggb24gZWFjaCB1cGRhdGUuXG4gICAgICAgIC8vIFRvIGVuc3VyZSBwZXJzaXN0ZW50IGRhdGEsIHVzZSBgJHtuYW1lfSNwZXJzaXN0ZW50YFxuXG4gICAgICAgIHN0YXRlLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGUubW9kaWZpZXJzRGF0YVttb2RpZmllci5uYW1lXSA9IE9iamVjdC5hc3NpZ24oe30sIG1vZGlmaWVyLmRhdGEpO1xuICAgICAgICB9KTtcbiAgICAgICAgdmFyIF9fZGVidWdfbG9vcHNfXyA9IDA7XG5cbiAgICAgICAgZm9yICh2YXIgaW5kZXggPSAwOyBpbmRleCA8IHN0YXRlLm9yZGVyZWRNb2RpZmllcnMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgX19kZWJ1Z19sb29wc19fICs9IDE7XG5cbiAgICAgICAgICAgIGlmIChfX2RlYnVnX2xvb3BzX18gPiAxMDApIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihJTkZJTklURV9MT09QX0VSUk9SKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHN0YXRlLnJlc2V0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBzdGF0ZS5yZXNldCA9IGZhbHNlO1xuICAgICAgICAgICAgaW5kZXggPSAtMTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfc3RhdGUkb3JkZXJlZE1vZGlmaWUgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzW2luZGV4XSxcbiAgICAgICAgICAgICAgZm4gPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUuZm4sXG4gICAgICAgICAgICAgIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUub3B0aW9ucyxcbiAgICAgICAgICAgICAgX29wdGlvbnMgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUyID09PSB2b2lkIDAgPyB7fSA6IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIsXG4gICAgICAgICAgICAgIG5hbWUgPSBfc3RhdGUkb3JkZXJlZE1vZGlmaWUubmFtZTtcblxuICAgICAgICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHN0YXRlID0gZm4oe1xuICAgICAgICAgICAgICBzdGF0ZTogc3RhdGUsXG4gICAgICAgICAgICAgIG9wdGlvbnM6IF9vcHRpb25zLFxuICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2VcbiAgICAgICAgICAgIH0pIHx8IHN0YXRlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIC8vIEFzeW5jIGFuZCBvcHRpbWlzdGljYWxseSBvcHRpbWl6ZWQgdXBkYXRlIOKAkyBpdCB3aWxsIG5vdCBiZSBleGVjdXRlZCBpZlxuICAgICAgLy8gbm90IG5lY2Vzc2FyeSAoZGVib3VuY2VkIHRvIHJ1biBhdCBtb3N0IG9uY2UtcGVyLXRpY2spXG4gICAgICB1cGRhdGU6IGRlYm91bmNlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgaW5zdGFuY2UuZm9yY2VVcGRhdGUoKTtcbiAgICAgICAgICByZXNvbHZlKHN0YXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9KSxcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uIGRlc3Ryb3koKSB7XG4gICAgICAgIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKTtcbiAgICAgICAgaXNEZXN0cm95ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAoIWFyZVZhbGlkRWxlbWVudHMocmVmZXJlbmNlLCBwb3BwZXIpKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoSU5WQUxJRF9FTEVNRU5UX0VSUk9SKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgIH1cblxuICAgIGluc3RhbmNlLnNldE9wdGlvbnMob3B0aW9ucykudGhlbihmdW5jdGlvbiAoc3RhdGUpIHtcbiAgICAgIGlmICghaXNEZXN0cm95ZWQgJiYgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKSB7XG4gICAgICAgIG9wdGlvbnMub25GaXJzdFVwZGF0ZShzdGF0ZSk7XG4gICAgICB9XG4gICAgfSk7IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgYXJiaXRyYXJ5IGNvZGUgYmVmb3JlIHRoZSBmaXJzdFxuICAgIC8vIHVwZGF0ZSBjeWNsZSBydW5zLiBUaGV5IHdpbGwgYmUgZXhlY3V0ZWQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHVwZGF0ZVxuICAgIC8vIGN5Y2xlLiBUaGlzIGlzIHVzZWZ1bCB3aGVuIGEgbW9kaWZpZXIgYWRkcyBzb21lIHBlcnNpc3RlbnQgZGF0YSB0aGF0XG4gICAgLy8gb3RoZXIgbW9kaWZpZXJzIG5lZWQgdG8gdXNlLCBidXQgdGhlIG1vZGlmaWVyIGlzIHJ1biBhZnRlciB0aGUgZGVwZW5kZW50XG4gICAgLy8gb25lLlxuXG4gICAgZnVuY3Rpb24gcnVuTW9kaWZpZXJFZmZlY3RzKCkge1xuICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmMykge1xuICAgICAgICB2YXIgbmFtZSA9IF9yZWYzLm5hbWUsXG4gICAgICAgICAgICBfcmVmMyRvcHRpb25zID0gX3JlZjMub3B0aW9ucyxcbiAgICAgICAgICAgIG9wdGlvbnMgPSBfcmVmMyRvcHRpb25zID09PSB2b2lkIDAgPyB7fSA6IF9yZWYzJG9wdGlvbnMsXG4gICAgICAgICAgICBlZmZlY3QgPSBfcmVmMy5lZmZlY3Q7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBlZmZlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICB2YXIgY2xlYW51cEZuID0gZWZmZWN0KHtcbiAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgICAgICAgICBvcHRpb25zOiBvcHRpb25zXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB2YXIgbm9vcEZuID0gZnVuY3Rpb24gbm9vcEZuKCkge307XG5cbiAgICAgICAgICBlZmZlY3RDbGVhbnVwRm5zLnB1c2goY2xlYW51cEZuIHx8IG5vb3BGbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNsZWFudXBNb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgICAgfSk7XG4gICAgICBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xufVxuZXhwb3J0IHZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKCk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgZGV0ZWN0T3ZlcmZsb3cgfTsiLCJpbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IsIGRldGVjdE92ZXJmbG93IH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSBcIi4vbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5pbXBvcnQgcG9wcGVyT2Zmc2V0cyBmcm9tIFwiLi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanNcIjtcbmltcG9ydCBhcHBseVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanNcIjtcbmltcG9ydCBvZmZzZXQgZnJvbSBcIi4vbW9kaWZpZXJzL29mZnNldC5qc1wiO1xuaW1wb3J0IGZsaXAgZnJvbSBcIi4vbW9kaWZpZXJzL2ZsaXAuanNcIjtcbmltcG9ydCBwcmV2ZW50T3ZlcmZsb3cgZnJvbSBcIi4vbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGFycm93IGZyb20gXCIuL21vZGlmaWVycy9hcnJvdy5qc1wiO1xuaW1wb3J0IGhpZGUgZnJvbSBcIi4vbW9kaWZpZXJzL2hpZGUuanNcIjtcbnZhciBkZWZhdWx0TW9kaWZpZXJzID0gW2V2ZW50TGlzdGVuZXJzLCBwb3BwZXJPZmZzZXRzLCBjb21wdXRlU3R5bGVzLCBhcHBseVN0eWxlcywgb2Zmc2V0LCBmbGlwLCBwcmV2ZW50T3ZlcmZsb3csIGFycm93LCBoaWRlXTtcbnZhciBjcmVhdGVQb3BwZXIgPSAvKiNfX1BVUkVfXyovcG9wcGVyR2VuZXJhdG9yKHtcbiAgZGVmYXVsdE1vZGlmaWVyczogZGVmYXVsdE1vZGlmaWVyc1xufSk7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyLCBwb3BwZXJHZW5lcmF0b3IsIGRlZmF1bHRNb2RpZmllcnMsIGRldGVjdE92ZXJmbG93IH07IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgY3JlYXRlUG9wcGVyIGFzIGNyZWF0ZVBvcHBlckxpdGUgfSBmcm9tIFwiLi9wb3BwZXItbGl0ZS5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCAqIGZyb20gXCIuL21vZGlmaWVycy9pbmRleC5qc1wiOyIsIi8vIFN0b2xlIEFsbCB0aGlzIGZyb20gTGlhbSdzIFBlcmlvZGljIE5vdGVzIFBsdWdpbjogaHR0cHM6Ly9naXRodWIuY29tL2xpYW1jYWluL29ic2lkaWFuLXBlcmlvZGljLW5vdGVzXG5cbmltcG9ydCB7IEFwcCwgSVN1Z2dlc3RPd25lciwgU2NvcGUsIFRGaWxlLCBUQWJzdHJhY3RGaWxlIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3BwZXIsIEluc3RhbmNlIGFzIFBvcHBlckluc3RhbmNlIH0gZnJvbSBcIkBwb3BwZXJqcy9jb3JlXCI7XG5pbXBvcnQgeyBFeHRlbmRlZEJsb2NrQ2FjaGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgZ2V0U3RvcmUgfSBmcm9tIFwiLi9idXR0b25TdG9yZVwiO1xuXG5pbXBvcnQgeyB3cmFwQXJvdW5kIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY2xhc3MgU3VnZ2VzdDxUPiB7XG4gIHByaXZhdGUgb3duZXI6IElTdWdnZXN0T3duZXI8VD47XG4gIHByaXZhdGUgdmFsdWVzOiBUW107XG4gIHByaXZhdGUgc3VnZ2VzdGlvbnM6IEhUTUxEaXZFbGVtZW50W107XG4gIHByaXZhdGUgc2VsZWN0ZWRJdGVtOiBudW1iZXI7XG4gIHByaXZhdGUgY29udGFpbmVyRWw6IEhUTUxFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKG93bmVyOiBJU3VnZ2VzdE93bmVyPFQ+LCBjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIHNjb3BlOiBTY29wZSkge1xuICAgIHRoaXMub3duZXIgPSBvd25lcjtcbiAgICB0aGlzLmNvbnRhaW5lckVsID0gY29udGFpbmVyRWw7XG5cbiAgICBjb250YWluZXJFbC5vbihcbiAgICAgIFwiY2xpY2tcIixcbiAgICAgIFwiLnN1Z2dlc3Rpb24taXRlbVwiLFxuICAgICAgdGhpcy5vblN1Z2dlc3Rpb25DbGljay5iaW5kKHRoaXMpXG4gICAgKTtcbiAgICBjb250YWluZXJFbC5vbihcbiAgICAgIFwibW91c2Vtb3ZlXCIsXG4gICAgICBcIi5zdWdnZXN0aW9uLWl0ZW1cIixcbiAgICAgIHRoaXMub25TdWdnZXN0aW9uTW91c2VvdmVyLmJpbmQodGhpcylcbiAgICApO1xuXG4gICAgc2NvcGUucmVnaXN0ZXIoW10sIFwiQXJyb3dVcFwiLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmICghZXZlbnQuaXNDb21wb3NpbmcpIHtcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEl0ZW0odGhpcy5zZWxlY3RlZEl0ZW0gLSAxLCB0cnVlKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc2NvcGUucmVnaXN0ZXIoW10sIFwiQXJyb3dEb3duXCIsIChldmVudCkgPT4ge1xuICAgICAgaWYgKCFldmVudC5pc0NvbXBvc2luZykge1xuICAgICAgICB0aGlzLnNldFNlbGVjdGVkSXRlbSh0aGlzLnNlbGVjdGVkSXRlbSArIDEsIHRydWUpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBzY29wZS5yZWdpc3RlcihbXSwgXCJFbnRlclwiLCAoZXZlbnQpID0+IHtcbiAgICAgIGlmICghZXZlbnQuaXNDb21wb3NpbmcpIHtcbiAgICAgICAgdGhpcy51c2VTZWxlY3RlZEl0ZW0oZXZlbnQpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvblN1Z2dlc3Rpb25DbGljayhldmVudDogTW91c2VFdmVudCwgZWw6IEhUTUxEaXZFbGVtZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnN1Z2dlc3Rpb25zLmluZGV4T2YoZWwpO1xuICAgIHRoaXMuc2V0U2VsZWN0ZWRJdGVtKGl0ZW0sIGZhbHNlKTtcbiAgICB0aGlzLnVzZVNlbGVjdGVkSXRlbShldmVudCk7XG4gIH1cblxuICBvblN1Z2dlc3Rpb25Nb3VzZW92ZXIoX2V2ZW50OiBNb3VzZUV2ZW50LCBlbDogSFRNTERpdkVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5zdWdnZXN0aW9ucy5pbmRleE9mKGVsKTtcbiAgICB0aGlzLnNldFNlbGVjdGVkSXRlbShpdGVtLCBmYWxzZSk7XG4gIH1cblxuICBzZXRTdWdnZXN0aW9ucyh2YWx1ZXM6IFRbXSkge1xuICAgIHRoaXMuY29udGFpbmVyRWwuZW1wdHkoKTtcbiAgICBjb25zdCBzdWdnZXN0aW9uRWxzOiBIVE1MRGl2RWxlbWVudFtdID0gW107XG5cbiAgICB2YWx1ZXMuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHN1Z2dlc3Rpb25FbCA9IHRoaXMuY29udGFpbmVyRWwuY3JlYXRlRGl2KFwic3VnZ2VzdGlvbi1pdGVtXCIpO1xuICAgICAgdGhpcy5vd25lci5yZW5kZXJTdWdnZXN0aW9uKHZhbHVlLCBzdWdnZXN0aW9uRWwpO1xuICAgICAgc3VnZ2VzdGlvbkVscy5wdXNoKHN1Z2dlc3Rpb25FbCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnZhbHVlcyA9IHZhbHVlcztcbiAgICB0aGlzLnN1Z2dlc3Rpb25zID0gc3VnZ2VzdGlvbkVscztcbiAgICB0aGlzLnNldFNlbGVjdGVkSXRlbSgwLCBmYWxzZSk7XG4gIH1cblxuICB1c2VTZWxlY3RlZEl0ZW0oZXZlbnQ6IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy52YWx1ZXNbdGhpcy5zZWxlY3RlZEl0ZW1dO1xuICAgIGlmIChjdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMub3duZXIuc2VsZWN0U3VnZ2VzdGlvbihjdXJyZW50VmFsdWUsIGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICBzZXRTZWxlY3RlZEl0ZW0oc2VsZWN0ZWRJbmRleDogbnVtYmVyLCBzY3JvbGxJbnRvVmlldzogYm9vbGVhbikge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRJbmRleCA9IHdyYXBBcm91bmQoc2VsZWN0ZWRJbmRleCwgdGhpcy5zdWdnZXN0aW9ucy5sZW5ndGgpO1xuICAgIGNvbnN0IHByZXZTZWxlY3RlZFN1Z2dlc3Rpb24gPSB0aGlzLnN1Z2dlc3Rpb25zW3RoaXMuc2VsZWN0ZWRJdGVtXTtcbiAgICBjb25zdCBzZWxlY3RlZFN1Z2dlc3Rpb24gPSB0aGlzLnN1Z2dlc3Rpb25zW25vcm1hbGl6ZWRJbmRleF07XG5cbiAgICBwcmV2U2VsZWN0ZWRTdWdnZXN0aW9uPy5yZW1vdmVDbGFzcyhcImlzLXNlbGVjdGVkXCIpO1xuICAgIHNlbGVjdGVkU3VnZ2VzdGlvbj8uYWRkQ2xhc3MoXCJpcy1zZWxlY3RlZFwiKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtID0gbm9ybWFsaXplZEluZGV4O1xuXG4gICAgaWYgKHNjcm9sbEludG9WaWV3KSB7XG4gICAgICBzZWxlY3RlZFN1Z2dlc3Rpb24uc2Nyb2xsSW50b1ZpZXcoZmFsc2UpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVGV4dElucHV0U3VnZ2VzdDxUPiBpbXBsZW1lbnRzIElTdWdnZXN0T3duZXI8VD4ge1xuICBwcm90ZWN0ZWQgYXBwOiBBcHA7XG4gIHByb3RlY3RlZCBpbnB1dEVsOiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gIHByaXZhdGUgcG9wcGVyOiBQb3BwZXJJbnN0YW5jZTtcbiAgcHJpdmF0ZSBzY29wZTogU2NvcGU7XG4gIHByaXZhdGUgc3VnZ2VzdEVsOiBIVE1MRWxlbWVudDtcbiAgcHJpdmF0ZSBzdWdnZXN0OiBTdWdnZXN0PFQ+O1xuXG4gIGNvbnN0cnVjdG9yKGFwcDogQXBwLCBpbnB1dEVsOiBIVE1MSW5wdXRFbGVtZW50KSB7XG4gICAgdGhpcy5hcHAgPSBhcHA7XG4gICAgdGhpcy5pbnB1dEVsID0gaW5wdXRFbDtcbiAgICB0aGlzLnNjb3BlID0gbmV3IFNjb3BlKCk7XG5cbiAgICB0aGlzLnN1Z2dlc3RFbCA9IGNyZWF0ZURpdihcInN1Z2dlc3Rpb24tY29udGFpbmVyXCIpO1xuICAgIGNvbnN0IHN1Z2dlc3Rpb24gPSB0aGlzLnN1Z2dlc3RFbC5jcmVhdGVEaXYoXCJzdWdnZXN0aW9uXCIpO1xuICAgIHRoaXMuc3VnZ2VzdCA9IG5ldyBTdWdnZXN0KHRoaXMsIHN1Z2dlc3Rpb24sIHRoaXMuc2NvcGUpO1xuXG4gICAgdGhpcy5zY29wZS5yZWdpc3RlcihbXSwgXCJFc2NhcGVcIiwgdGhpcy5jbG9zZS5iaW5kKHRoaXMpKTtcblxuICAgIHRoaXMuaW5wdXRFbC5hZGRFdmVudExpc3RlbmVyKFwiaW5wdXRcIiwgdGhpcy5vbklucHV0Q2hhbmdlZC5iaW5kKHRoaXMpKTtcbiAgICB0aGlzLmlucHV0RWwuYWRkRXZlbnRMaXN0ZW5lcihcImZvY3VzXCIsIHRoaXMub25JbnB1dENoYW5nZWQuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5pbnB1dEVsLmFkZEV2ZW50TGlzdGVuZXIoXCJibHVyXCIsIHRoaXMuY2xvc2UuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5zdWdnZXN0RWwub24oXG4gICAgICBcIm1vdXNlZG93blwiLFxuICAgICAgXCIuc3VnZ2VzdGlvbi1jb250YWluZXJcIixcbiAgICAgIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBvbklucHV0Q2hhbmdlZCgpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dFN0ciA9IHRoaXMuaW5wdXRFbC52YWx1ZTtcbiAgICBjb25zdCBzdWdnZXN0aW9ucyA9IHRoaXMuZ2V0U3VnZ2VzdGlvbnMoaW5wdXRTdHIpO1xuXG4gICAgaWYgKHN1Z2dlc3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuc3VnZ2VzdC5zZXRTdWdnZXN0aW9ucyhzdWdnZXN0aW9ucyk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgdGhpcy5vcGVuKCg8YW55PnRoaXMuYXBwKS5kb20uYXBwQ29udGFpbmVyRWwsIHRoaXMuaW5wdXRFbCk7XG4gICAgfVxuICB9XG5cbiAgb3Blbihjb250YWluZXI6IEhUTUxFbGVtZW50LCBpbnB1dEVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgKDxhbnk+dGhpcy5hcHApLmtleW1hcC5wdXNoU2NvcGUodGhpcy5zY29wZSk7XG5cbiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQodGhpcy5zdWdnZXN0RWwpO1xuICAgIHRoaXMucG9wcGVyID0gY3JlYXRlUG9wcGVyKGlucHV0RWwsIHRoaXMuc3VnZ2VzdEVsLCB7XG4gICAgICBwbGFjZW1lbnQ6IFwiYm90dG9tLXN0YXJ0XCIsXG4gICAgICBtb2RpZmllcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwic2FtZVdpZHRoXCIsXG4gICAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgICBmbjogKHsgc3RhdGUsIGluc3RhbmNlIH0pID0+IHtcbiAgICAgICAgICAgIC8vIE5vdGU6IHBvc2l0aW9uaW5nIG5lZWRzIHRvIGJlIGNhbGN1bGF0ZWQgdHdpY2UgLVxuICAgICAgICAgICAgLy8gZmlyc3QgcGFzcyAtIHBvc2l0aW9uaW5nIGl0IGFjY29yZGluZyB0byB0aGUgd2lkdGggb2YgdGhlIHBvcHBlclxuICAgICAgICAgICAgLy8gc2Vjb25kIHBhc3MgLSBwb3NpdGlvbiBpdCB3aXRoIHRoZSB3aWR0aCBib3VuZCB0byB0aGUgcmVmZXJlbmNlIGVsZW1lbnRcbiAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gZWFybHkgZXhpdCB0byBhdm9pZCBhbiBpbmZpbml0ZSBsb29wXG4gICAgICAgICAgICBjb25zdCB0YXJnZXRXaWR0aCA9IGAke3N0YXRlLnJlY3RzLnJlZmVyZW5jZS53aWR0aH1weGA7XG4gICAgICAgICAgICBpZiAoc3RhdGUuc3R5bGVzLnBvcHBlci53aWR0aCA9PT0gdGFyZ2V0V2lkdGgpIHtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RhdGUuc3R5bGVzLnBvcHBlci53aWR0aCA9IHRhcmdldFdpZHRoO1xuICAgICAgICAgICAgaW5zdGFuY2UudXBkYXRlKCk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaGFzZTogXCJiZWZvcmVXcml0ZVwiLFxuICAgICAgICAgIHJlcXVpcmVzOiBbXCJjb21wdXRlU3R5bGVzXCJdLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgKDxhbnk+dGhpcy5hcHApLmtleW1hcC5wb3BTY29wZSh0aGlzLnNjb3BlKTtcblxuICAgIHRoaXMuc3VnZ2VzdC5zZXRTdWdnZXN0aW9ucyhbXSk7XG4gICAgdGhpcy5wb3BwZXIgJiYgdGhpcy5wb3BwZXIuZGVzdHJveSgpO1xuICAgIHRoaXMuc3VnZ2VzdEVsLmRldGFjaCgpO1xuICB9XG5cbiAgYWJzdHJhY3QgZ2V0U3VnZ2VzdGlvbnMoaW5wdXRTdHI6IHN0cmluZyk6IFRbXTtcbiAgYWJzdHJhY3QgcmVuZGVyU3VnZ2VzdGlvbihpdGVtOiBULCBlbDogSFRNTEVsZW1lbnQpOiB2b2lkO1xuICBhYnN0cmFjdCBzZWxlY3RTdWdnZXN0aW9uKGl0ZW06IFQpOiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgQ29tbWFuZCB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIENvbW1hbmRTdWdnZXN0IGV4dGVuZHMgVGV4dElucHV0U3VnZ2VzdDxDb21tYW5kPiB7XG4gIGdldFN1Z2dlc3Rpb25zKGlucHV0U3RyOiBzdHJpbmcpOiBDb21tYW5kW10ge1xuICAgIGNvbnN0IGNvbW1hbmRzID0gdGhpcy5hcHAuY29tbWFuZHMuY29tbWFuZHM7XG4gICAgY29uc3QgY29tbWFuZE5hbWVzOiBDb21tYW5kW10gPSBbXTtcbiAgICBjb25zdCBpbnB1dExvd2VyQ2FzZSA9IGlucHV0U3RyLnRvTG93ZXJDYXNlKCk7XG5cbiAgICBmb3IgKGNvbnN0IGNvbW1hbmQgaW4gY29tbWFuZHMpIHtcbiAgICAgIGNvbnN0IGNvbW1hbmRPYmogPSBjb21tYW5kc1tjb21tYW5kXTtcbiAgICAgIGlmIChjb21tYW5kT2JqLm5hbWUudG9Mb3dlckNhc2UoKS5jb250YWlucyhpbnB1dExvd2VyQ2FzZSkpIHtcbiAgICAgICAgY29tbWFuZE5hbWVzLnB1c2goY29tbWFuZE9iaik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb21tYW5kTmFtZXM7XG4gIH1cblxuICByZW5kZXJTdWdnZXN0aW9uKGNvbW1hbmQ6IENvbW1hbmQsIGVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGVsLnNldFRleHQoY29tbWFuZC5uYW1lKTtcbiAgfVxuXG4gIHNlbGVjdFN1Z2dlc3Rpb24oY29tbWFuZDogQ29tbWFuZCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRFbC52YWx1ZSA9IGNvbW1hbmQubmFtZTtcbiAgICB0aGlzLmlucHV0RWwudHJpZ2dlcihcImlucHV0XCIpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVTdWdnZXN0IGV4dGVuZHMgVGV4dElucHV0U3VnZ2VzdDxURmlsZT4ge1xuICBwcml2YXRlIHRlbXBsYXRlc0VuYWJsZWQgPSB0aGlzLmFwcC5pbnRlcm5hbFBsdWdpbnMucGx1Z2lucy50ZW1wbGF0ZXMuZW5hYmxlZDtcbiAgcHJpdmF0ZSB0ZW1wbGF0ZXJQbHVnaW4gPSB0aGlzLmFwcC5wbHVnaW5zLnBsdWdpbnNbXCJ0ZW1wbGF0ZXItb2JzaWRpYW5cIl07XG4gIC8vIG9ubHkgcnVuIGlmIHRlbXBsYXRlcyBwbHVnaW4gaXMgZW5hYmxlZFxuICBwcml2YXRlIGZvbGRlciA9ICgpOiBzdHJpbmdbXSA9PiB7XG4gICAgY29uc3QgZm9sZGVycyA9IFtdO1xuICAgIGlmICh0aGlzLnRlbXBsYXRlc0VuYWJsZWQpIHtcbiAgICAgIGNvbnN0IGZvbGRlciA9IHRoaXMuYXBwLmludGVybmFsUGx1Z2lucy5wbHVnaW5zLnRlbXBsYXRlcy5pbnN0YW5jZS5vcHRpb25zXG4gICAgICAgIC5mb2xkZXI7XG4gICAgICBpZiAoZm9sZGVyKSB7XG4gICAgICAgIGZvbGRlcnMucHVzaChmb2xkZXIudG9Mb3dlckNhc2UoKSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy50ZW1wbGF0ZXJQbHVnaW4pIHtcbiAgICAgICAgY29uc3QgZm9sZGVyID0gdGhpcy50ZW1wbGF0ZXJQbHVnaW4uc2V0dGluZ3MudGVtcGxhdGVfZm9sZGVyO1xuICAgICAgICBpZiAoZm9sZGVyKSB7XG4gICAgICAgICAgZm9sZGVycy5wdXNoKGZvbGRlci50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9sZGVyc1swXSA/IGZvbGRlcnMgOiB1bmRlZmluZWQ7XG4gIH07XG5cbiAgZ2V0U3VnZ2VzdGlvbnMoaW5wdXRTdHI6IHN0cmluZyk6IFRGaWxlW10ge1xuICAgIGNvbnN0IGFic3RyYWN0RmlsZXMgPSB0aGlzLmFwcC52YXVsdC5nZXRBbGxMb2FkZWRGaWxlcygpO1xuICAgIGNvbnN0IGZpbGVzOiBURmlsZVtdID0gW107XG4gICAgY29uc3QgbG93ZXJDYXNlSW5wdXRTdHIgPSBpbnB1dFN0ci50b0xvd2VyQ2FzZSgpO1xuICAgIGNvbnN0IGZvbGRlcnMgPSB0aGlzLmZvbGRlcigpO1xuXG4gICAgYWJzdHJhY3RGaWxlcy5mb3JFYWNoKChmaWxlOiBUQWJzdHJhY3RGaWxlKSA9PiB7XG4gICAgICBsZXQgZXhpc3RzID0gZmFsc2U7XG4gICAgICBmb2xkZXJzICYmXG4gICAgICAgIGZvbGRlcnMuZm9yRWFjaCgoZm9sZGVyKSA9PiB7XG4gICAgICAgICAgaWYgKGZpbGUucGF0aC50b0xvd2VyQ2FzZSgpLmNvbnRhaW5zKGAke2ZvbGRlcn0vYCkpIHtcbiAgICAgICAgICAgIGV4aXN0cyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIGlmIChcbiAgICAgICAgZmlsZSBpbnN0YW5jZW9mIFRGaWxlICYmXG4gICAgICAgIGZpbGUuZXh0ZW5zaW9uID09PSBcIm1kXCIgJiZcbiAgICAgICAgZXhpc3RzICYmXG4gICAgICAgIGZpbGUucGF0aC50b0xvd2VyQ2FzZSgpLmNvbnRhaW5zKGxvd2VyQ2FzZUlucHV0U3RyKVxuICAgICAgKSB7XG4gICAgICAgIGZpbGVzLnB1c2goZmlsZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gZmlsZXM7XG4gIH1cblxuICByZW5kZXJTdWdnZXN0aW9uKGZpbGU6IFRGaWxlLCBlbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBlbC5zZXRUZXh0KGZpbGUubmFtZS5zcGxpdChcIi5cIilbMF0pO1xuICB9XG5cbiAgc2VsZWN0U3VnZ2VzdGlvbihmaWxlOiBURmlsZSk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRFbC52YWx1ZSA9IGZpbGUubmFtZS5zcGxpdChcIi5cIilbMF07XG4gICAgdGhpcy5pbnB1dEVsLnRyaWdnZXIoXCJpbnB1dFwiKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJ1dHRvblN1Z2dlc3QgZXh0ZW5kcyBUZXh0SW5wdXRTdWdnZXN0PHN0cmluZz4ge1xuICBnZXRTdWdnZXN0aW9ucygpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYnV0dG9uU3RvcmUgPSBnZXRTdG9yZSh0aGlzLmFwcC5pc01vYmlsZSk7XG4gICAgY29uc3QgYnV0dG9uczogc3RyaW5nW10gPSBbXTtcblxuICAgIGJ1dHRvblN0b3JlLmZvckVhY2goKGJ1dHRvbjogRXh0ZW5kZWRCbG9ja0NhY2hlKSA9PiB7XG4gICAgICBjb25zdCB0cmltbWVkID0gYnV0dG9uLmlkLnNwbGl0KFwiLVwiKVsxXTtcbiAgICAgIGJ1dHRvbnMucHVzaCh0cmltbWVkKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBidXR0b25zO1xuICB9XG5cbiAgcmVuZGVyU3VnZ2VzdGlvbihidXR0b246IHN0cmluZywgZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgZWwuc2V0VGV4dChidXR0b24pO1xuICB9XG5cbiAgc2VsZWN0U3VnZ2VzdGlvbihidXR0b246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXRFbC52YWx1ZSA9IHRoaXMuaW5wdXRFbC52YWx1ZSArIGJ1dHRvbjtcbiAgICB0aGlzLmlucHV0RWwudHJpZ2dlcihcImlucHV0XCIpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgTW9kYWwsIEFwcCwgU2V0dGluZywgTWFya2Rvd25WaWV3LCBFZGl0b3IgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGNyZWF0ZUJ1dHRvbiB9IGZyb20gXCIuL2J1dHRvblwiO1xuaW1wb3J0IHsgQ29tbWFuZFN1Z2dlc3QsIFRlbXBsYXRlU3VnZ2VzdCwgQnV0dG9uU3VnZ2VzdCB9IGZyb20gXCIuL3N1Z2dlc3RcIjtcbmltcG9ydCB7IGluc2VydEJ1dHRvbiwgaW5zZXJ0SW5saW5lQnV0dG9uIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuZXhwb3J0IGNsYXNzIEJ1dHRvbk1vZGFsIGV4dGVuZHMgTW9kYWwge1xuICBhY3RpdmVWaWV3OiBNYXJrZG93blZpZXc7XG4gIGFjdGl2ZUVkaXRvcjogRWRpdG9yO1xuICBhY3RpdmVDdXJzb3I6IENvZGVNaXJyb3IuUG9zaXRpb247XG4gIGFjdGlvbkludGVydmFsOiBUaW1lb3V0O1xuICBidXR0b25QcmV2aWV3RWw6IEhUTUxFbGVtZW50ID0gY3JlYXRlRWwoXCJwXCIpO1xuICBjb21tYW5kU3VnZ2VzdEVsOiBIVE1MSW5wdXRFbGVtZW50ID0gY3JlYXRlRWwoXCJpbnB1dFwiLCB7IHR5cGU6IFwidGV4dFwiIH0pO1xuICBmaWxlU3VnZ2VzdEVsOiBIVE1MSW5wdXRFbGVtZW50ID0gY3JlYXRlRWwoXCJpbnB1dFwiLCB7IHR5cGU6IFwidGV4dFwiIH0pO1xuICByZW1vdmVTdWdnZXN0RWw6IEhUTUxJbnB1dEVsZW1lbnQgPSBjcmVhdGVFbChcImlucHV0XCIsIHsgdHlwZTogXCJ0ZXh0XCIgfSk7XG4gIHN3YXBTdWdnZXN0RWw6IEhUTUxJbnB1dEVsZW1lbnQgPSBjcmVhdGVFbChcImlucHV0XCIsIHsgdHlwZTogXCJ0ZXh0XCIgfSk7XG4gIGlkU3VnZ2VzdEVsOiBIVE1MSW5wdXRFbGVtZW50ID0gY3JlYXRlRWwoXCJpbnB1dFwiLCB7IHR5cGU6IFwidGV4dFwiIH0pO1xuICByZW1vdmVTdWdnZXN0O1xuICBzd2FwU3VnZ2VzdDtcbiAgaWRTdWdnZXN0O1xuICBjb21tYW5kU3VnZ2VzdDtcbiAgZmlsZVN1Z2dlc3Q7XG5cbiAgY29uc3RydWN0b3IoYXBwOiBBcHApIHtcbiAgICBzdXBlcihhcHApO1xuICAgIHRoaXMuY29tbWFuZFN1Z2dlc3QgPSBuZXcgQ29tbWFuZFN1Z2dlc3QodGhpcy5hcHAsIHRoaXMuY29tbWFuZFN1Z2dlc3RFbCk7XG4gICAgdGhpcy5jb21tYW5kU3VnZ2VzdEVsLnBsYWNlaG9sZGVyID0gXCJUb2dnbGUgUGluXCI7XG4gICAgdGhpcy5jb21tYW5kU3VnZ2VzdEVsLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgKGU6IEV2ZW50KSA9PiB7XG4gICAgICB0aGlzLm91dHB1dE9iamVjdC5hY3Rpb24gPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZS50YXJnZXQpLnZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMuY29tbWFuZFN1Z2dlc3RFbC5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCAoZTogRXZlbnQpID0+IHtcbiAgICAgIHRoaXMub3V0cHV0T2JqZWN0LmFjdGlvbiA9ICg8SFRNTElucHV0RWxlbWVudD5lLnRhcmdldCkudmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy5maWxlU3VnZ2VzdCA9IG5ldyBUZW1wbGF0ZVN1Z2dlc3QodGhpcy5hcHAsIHRoaXMuZmlsZVN1Z2dlc3RFbCk7XG4gICAgdGhpcy5maWxlU3VnZ2VzdEVsLnBsYWNlaG9sZGVyID0gXCJNeSBUZW1wbGF0ZVwiO1xuICAgIHRoaXMuZmlsZVN1Z2dlc3RFbC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIChlKSA9PiB7XG4gICAgICB0aGlzLm91dHB1dE9iamVjdC5hY3Rpb24gPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZS50YXJnZXQpLnZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMuZmlsZVN1Z2dlc3RFbC5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCAoZSkgPT4ge1xuICAgICAgdGhpcy5vdXRwdXRPYmplY3QuYWN0aW9uID0gKDxIVE1MSW5wdXRFbGVtZW50PmUudGFyZ2V0KS52YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLnJlbW92ZVN1Z2dlc3QgPSBuZXcgQnV0dG9uU3VnZ2VzdCh0aGlzLmFwcCwgdGhpcy5yZW1vdmVTdWdnZXN0RWwpO1xuICAgIHRoaXMucmVtb3ZlU3VnZ2VzdEVsLnZhbHVlID0gXCJ0cnVlXCI7XG4gICAgdGhpcy5yZW1vdmVTdWdnZXN0RWwuYWRkRXZlbnRMaXN0ZW5lcihcImNoYW5nZVwiLCAoZSkgPT4ge1xuICAgICAgdGhpcy5vdXRwdXRPYmplY3QucmVtb3ZlID0gKDxIVE1MSW5wdXRFbGVtZW50PmUudGFyZ2V0KS52YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLnJlbW92ZVN1Z2dlc3RFbC5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCAoZSkgPT4ge1xuICAgICAgdGhpcy5vdXRwdXRPYmplY3QucmVtb3ZlID0gKDxIVE1MSW5wdXRFbGVtZW50PmUudGFyZ2V0KS52YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLnN3YXBTdWdnZXN0ID0gbmV3IEJ1dHRvblN1Z2dlc3QodGhpcy5hcHAsIHRoaXMuc3dhcFN1Z2dlc3RFbCk7XG4gICAgdGhpcy5zd2FwU3VnZ2VzdEVsLmFkZEV2ZW50TGlzdGVuZXIoXCJjaGFuZ2VcIiwgKGUpID0+IHtcbiAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnN3YXAgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZS50YXJnZXQpLnZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMuc3dhcFN1Z2dlc3RFbC5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCAoZSkgPT4ge1xuICAgICAgdGhpcy5vdXRwdXRPYmplY3Quc3dhcCA9ICg8SFRNTElucHV0RWxlbWVudD5lLnRhcmdldCkudmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy5pZFN1Z2dlc3QgPSBuZXcgQnV0dG9uU3VnZ2VzdCh0aGlzLmFwcCwgdGhpcy5pZFN1Z2dlc3RFbCk7XG4gICAgdGhpcy5pZFN1Z2dlc3RFbC5hZGRFdmVudExpc3RlbmVyKFwiY2hhbmdlXCIsIChlKSA9PiB7XG4gICAgICB0aGlzLm91dHB1dE9iamVjdC5pZCA9ICg8SFRNTElucHV0RWxlbWVudD5lLnRhcmdldCkudmFsdWU7XG4gICAgfSk7XG4gICAgdGhpcy5pZFN1Z2dlc3RFbC5hZGRFdmVudExpc3RlbmVyKFwiYmx1clwiLCAoZSkgPT4ge1xuICAgICAgdGhpcy5vdXRwdXRPYmplY3QuaWQgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZS50YXJnZXQpLnZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMuc3dhcFN1Z2dlc3RFbC5wbGFjZWhvbGRlciA9IFwiW2lkT25lLCBpZFR3b11cIjtcbiAgfVxuXG4gIHByaXZhdGUgb3V0cHV0T2JqZWN0ID0ge1xuICAgIG5hbWU6IFwiXCIsXG4gICAgdHlwZTogXCJcIixcbiAgICBhY3Rpb246IFwiXCIsXG4gICAgc3dhcDogXCJcIixcbiAgICByZW1vdmU6IFwiXCIsXG4gICAgcmVwbGFjZTogXCJcIixcbiAgICBpZDogXCJcIixcbiAgICB0ZW1wbGF0ZXI6IGZhbHNlLFxuICAgIGNsYXNzOiBcIlwiLFxuICAgIGNvbG9yOiBcIlwiLFxuICAgIGJsb2NrSWQ6IFwiXCIsXG4gIH07XG5cbiAgb25PcGVuKCk6IHZvaWQge1xuICAgIGNvbnN0IHsgdGl0bGVFbCwgY29udGVudEVsIH0gPSB0aGlzO1xuICAgIHRpdGxlRWwuc2V0VGV4dChcIkJ1dHRvbiBNYWtlclwiKTtcbiAgICBjb250ZW50RWwuYWRkQ2xhc3MoXCJidXR0b24tbWFrZXJcIik7XG4gICAgY29udGVudEVsLmNyZWF0ZUVsKFwiZm9ybVwiLCB7fSwgKGZvcm1FbCkgPT4ge1xuICAgICAgbmV3IFNldHRpbmcoZm9ybUVsKVxuICAgICAgICAuc2V0TmFtZShcIkJ1dHRvbiBOYW1lXCIpXG4gICAgICAgIC5zZXREZXNjKFwiV2hhdCB3b3VsZCB5b3UgbGlrZSB0byBjYWxsIHRoaXMgYnV0dG9uP1wiKVxuICAgICAgICAuYWRkVGV4dCgodGV4dEVsKSA9PiB7XG4gICAgICAgICAgdGV4dEVsLnNldFBsYWNlaG9sZGVyKFwiTXkgQXdlc29tZSBCdXR0b25cIik7XG4gICAgICAgICAgdGV4dEVsLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5idXR0b25QcmV2aWV3RWwuc2V0VGV4dCh2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC5uYW1lID0gdmFsdWU7XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB0ZXh0RWwuaW5wdXRFbC5mb2N1cygpLCAxMCk7XG4gICAgICAgIH0pO1xuICAgICAgY29uc3QgdHlwZUNvbnRhaW5lciA9IGNyZWF0ZUVsKFwiZGl2XCIpO1xuICAgICAgY29uc3QgdHlwZVRpdGxlID0gY3JlYXRlRWwoXCJzcGFuXCIsIHsgY2xzOiBcInNldHRpbmctaXRlbS10aXRsZVwiIH0pO1xuICAgICAgdHlwZVRpdGxlLnNldFRleHQoXCJCdXR0b24gVHlwZVwiKTtcbiAgICAgIGNvbnN0IHR5cGVEZXNjID0gY3JlYXRlRWwoXCJkaXZcIiwgeyBjbHM6IFwic2V0dGluZy1pdGVtLWRlc2NyaXB0aW9uXCIgfSk7XG4gICAgICB0eXBlRGVzYy5zZXRUZXh0KFwiV2hhdCB0eXBlIG9mIGJ1dHRvbiBhcmUgeW91IG1ha2luZz9cIik7XG4gICAgICBmb3JtRWwuYXBwZW5kQ2hpbGQodHlwZUNvbnRhaW5lcik7XG4gICAgICB0eXBlQ29udGFpbmVyLmFwcGVuZENoaWxkKHR5cGVUaXRsZSk7XG4gICAgICB0eXBlQ29udGFpbmVyLmFwcGVuZENoaWxkKHR5cGVEZXNjKTtcbiAgICAgIG5ldyBTZXR0aW5nKHR5cGVEZXNjKS5hZGREcm9wZG93bigoZHJvcCkgPT4ge1xuICAgICAgICBkcm9wLmFkZE9wdGlvbihcInByZVwiLCBcIlNlbGVjdCBhIEJ1dHRvbiBUeXBlXCIpO1xuICAgICAgICBkcm9wLmFkZE9wdGlvbihcImNvbW1hbmRcIiwgXCJDb21tYW5kIC0gcnVuIGEgY29tbWFuZCBwcm9tcHQgY29tbWFuZFwiKTtcbiAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJsaW5rXCIsIFwiTGluayAtIG9wZW4gYSB1cmwgb3IgdXJpXCIpO1xuICAgICAgICBkcm9wLmFkZE9wdGlvbihcbiAgICAgICAgICBcInRlbXBsYXRlXCIsXG4gICAgICAgICAgXCJUZW1wbGF0ZSAtIGluc2VydCBvciBjcmVhdGUgbm90ZXMgZnJvbSB0ZW1wbGF0ZXNcIlxuICAgICAgICApO1xuICAgICAgICBkcm9wLmFkZE9wdGlvbihcInRleHRcIiwgXCJUZXh0IC0gaW5zZXJ0IG9yIGNyZWF0ZSBub3RlcyB3aXRoIHRleHRcIik7XG4gICAgICAgIGRyb3AuYWRkT3B0aW9uKFxuICAgICAgICAgIFwiY2FsY3VsYXRlXCIsXG4gICAgICAgICAgXCJDYWxjdWxhdGUgLSBydW4gYSBtYXRoZW1hdGljYWwgY2FsY3VsYXRpb25cIlxuICAgICAgICApO1xuICAgICAgICBkcm9wLmFkZE9wdGlvbihcbiAgICAgICAgICBcInN3YXBcIixcbiAgICAgICAgICBcIlN3YXAgLSBDcmVhdGUgYSBtdWx0aS1wdXJwb3NlIElubGluZSBCdXR0b24gZnJvbSBvdGhlciBCdXR0b25zXCJcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgYWN0aW9uID0gZm9ybUVsLmNyZWF0ZUVsKFwiZGl2XCIpO1xuICAgICAgICBkcm9wLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnR5cGUgPSB2YWx1ZTtcbiAgICAgICAgICBpZiAodmFsdWUgPT09IFwibGlua1wiKSB7XG4gICAgICAgICAgICBhY3Rpb24uZW1wdHkoKTtcbiAgICAgICAgICAgIG5ldyBTZXR0aW5nKGFjdGlvbilcbiAgICAgICAgICAgICAgLnNldE5hbWUoXCJMaW5rXCIpXG4gICAgICAgICAgICAgIC5zZXREZXNjKFwiRW50ZXIgYSBsaW5rIHRvIG9wZW5cIilcbiAgICAgICAgICAgICAgLmFkZFRleHQoKHRleHRFbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRleHRFbC5zZXRQbGFjZWhvbGRlcihcImh0dHBzOi8vb2JzaWRpYW4ubWRcIik7XG4gICAgICAgICAgICAgICAgdGV4dEVsLm9uQ2hhbmdlKCh2YWx1ZSkgPT4gKHRoaXMub3V0cHV0T2JqZWN0LmFjdGlvbiA9IHZhbHVlKSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsdWUgPT09IFwiY29tbWFuZFwiKSB7XG4gICAgICAgICAgICBhY3Rpb24uZW1wdHkoKTtcbiAgICAgICAgICAgIG5ldyBTZXR0aW5nKGFjdGlvbilcbiAgICAgICAgICAgICAgLnNldE5hbWUoXCJDb21tYW5kXCIpXG4gICAgICAgICAgICAgIC5zZXREZXNjKFwiRW50ZXIgYSBjb21tYW5kIHRvIHJ1blwiKVxuICAgICAgICAgICAgICAuYWRkVGV4dCgodGV4dEVsKSA9PiB7XG4gICAgICAgICAgICAgICAgdGV4dEVsLmlucHV0RWwucmVwbGFjZVdpdGgodGhpcy5jb21tYW5kU3VnZ2VzdEVsKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcyhcInRlbXBsYXRlXCIpKSB7XG4gICAgICAgICAgICBhY3Rpb24uZW1wdHkoKTtcbiAgICAgICAgICAgIG5ldyBTZXR0aW5nKGFjdGlvbilcbiAgICAgICAgICAgICAgLnNldE5hbWUoXCJUZW1wbGF0ZVwiKVxuICAgICAgICAgICAgICAuc2V0RGVzYyhcIlNlbGVjdCBhIHRlbXBsYXRlIG5vdGUgYW5kIHdoYXQgc2hvdWxkIGhhcHBlblwiKVxuICAgICAgICAgICAgICAuYWRkRHJvcGRvd24oKGRyb3ApID0+IHtcbiAgICAgICAgICAgICAgICBkcm9wLmFkZE9wdGlvbihcInByZVwiLCBcIkRvIHRoaXMuLi5cIik7XG4gICAgICAgICAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJwcmVwZW5kIHRlbXBsYXRlXCIsIFwiUHJlcGVuZFwiKTtcbiAgICAgICAgICAgICAgICBkcm9wLmFkZE9wdGlvbihcImFwcGVuZCB0ZW1wbGF0ZVwiLCBcIkFwcGVuZFwiKTtcbiAgICAgICAgICAgICAgICBkcm9wLmFkZE9wdGlvbihcImxpbmUgdGVtcGxhdGVcIiwgXCJMaW5lXCIpO1xuICAgICAgICAgICAgICAgIGRyb3AuYWRkT3B0aW9uKFwibm90ZSB0ZW1wbGF0ZVwiLCBcIk5vdGVcIik7XG4gICAgICAgICAgICAgICAgZHJvcC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnR5cGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBcImxpbmUgdGVtcGxhdGVcIikge1xuICAgICAgICAgICAgICAgICAgICBuZXcgU2V0dGluZyhhY3Rpb24pXG4gICAgICAgICAgICAgICAgICAgICAgLnNldE5hbWUoXCJMaW5lIE51bWJlclwiKVxuICAgICAgICAgICAgICAgICAgICAgIC5zZXREZXNjKFwiQXQgd2hpY2ggbGluZSBzaG91bGQgdGhlIHRlbXBsYXRlIGJlIGluc2VydGVkP1wiKVxuICAgICAgICAgICAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0RWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbC5zZXRQbGFjZWhvbGRlcihcIjY5XCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVsLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gYGxpbmUoJHt2YWx1ZX0pIHRlbXBsYXRlYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IFwibm90ZSB0ZW1wbGF0ZVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBTZXR0aW5nKGFjdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAuc2V0TmFtZShcIk5vdGUgTmFtZVwiKVxuICAgICAgICAgICAgICAgICAgICAgIC5zZXREZXNjKFwiV2hhdCBzaG91bGQgdGhlIG5ldyBub3RlIGJlIG5hbWVkP1wiKVxuICAgICAgICAgICAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0RWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbC5zZXRQbGFjZWhvbGRlcihcIk15IE5ldyBOb3RlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFNldHRpbmcoYWN0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0TmFtZShcIlNwbGl0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXREZXNjKFwiU2hvdWxkIHRoZSBuZXcgbm90ZSBvcGVuIGluIGEgc3BsaXQgcGFuZT9cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlRWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gYG5vdGUoJHt0ZXh0RWwuZ2V0VmFsdWV9KSB0ZW1wbGF0ZWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVsLm9uQ2hhbmdlKCh0ZXh0VmFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGVWYWwgPSB0b2dnbGVFbC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvZ2dsZVZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gYG5vdGUoJHt0ZXh0VmFsfSwgc3BsaXQpIHRlbXBsYXRlYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdG9nZ2xlVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnR5cGUgPSBgbm90ZSgke3RleHRWYWx9KSB0ZW1wbGF0ZWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRWwub25DaGFuZ2UoKHRvZ2dsZVZhbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGV4dFZhbCA9IHRleHRFbC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvZ2dsZVZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gYG5vdGUoJHt0ZXh0VmFsfSwgc3BsaXQpIHRlbXBsYXRlYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdG9nZ2xlVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnR5cGUgPSBgbm90ZSgke3RleHRWYWx9KSB0ZW1wbGF0ZWA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAuYWRkVGV4dCgodGV4dEVsKSA9PiB7XG4gICAgICAgICAgICAgICAgdGV4dEVsLmlucHV0RWwucmVwbGFjZVdpdGgodGhpcy5maWxlU3VnZ2VzdEVsKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YWx1ZS5pbmNsdWRlcyhcInRleHRcIikpIHtcbiAgICAgICAgICAgIGFjdGlvbi5lbXB0eSgpO1xuICAgICAgICAgICAgbmV3IFNldHRpbmcoYWN0aW9uKVxuICAgICAgICAgICAgICAuc2V0TmFtZShcIlRleHRcIilcbiAgICAgICAgICAgICAgLnNldERlc2MoXCJXaGF0IHRleHQgYW5kIHdoZXJlIHNob3VsZCBpdCBnbz9cIilcbiAgICAgICAgICAgICAgLmFkZERyb3Bkb3duKChkcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJwcmVcIiwgXCJEbyB0aGlzLi4uXCIpO1xuICAgICAgICAgICAgICAgIGRyb3AuYWRkT3B0aW9uKFwicHJlcGVuZCB0ZXh0XCIsIFwiUHJlcGVuZFwiKTtcbiAgICAgICAgICAgICAgICBkcm9wLmFkZE9wdGlvbihcImFwcGVuZCB0ZXh0XCIsIFwiQXBwZW5kXCIpO1xuICAgICAgICAgICAgICAgIGRyb3AuYWRkT3B0aW9uKFwibGluZSB0ZXh0XCIsIFwiTGluZVwiKTtcbiAgICAgICAgICAgICAgICBkcm9wLmFkZE9wdGlvbihcIm5vdGUgdGV4dFwiLCBcIk5vdGVcIik7XG4gICAgICAgICAgICAgICAgZHJvcC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnR5cGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBcImxpbmUgdGV4dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBTZXR0aW5nKGFjdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAuc2V0TmFtZShcIkxpbmUgTnVtYmVyXCIpXG4gICAgICAgICAgICAgICAgICAgICAgLnNldERlc2MoXCJBdCB3aGljaCBsaW5lIHNob3VsZCB0aGUgdGVtcGxhdGUgYmUgaW5zZXJ0ZWQ/XCIpXG4gICAgICAgICAgICAgICAgICAgICAgLmFkZFRleHQoKHRleHRFbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEVsLnNldFBsYWNlaG9sZGVyKFwiNjlcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RWwub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnR5cGUgPSBgbGluZSgke3ZhbHVlfSkgdGV4dGA7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBcIm5vdGUgdGV4dFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBTZXR0aW5nKGFjdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAuc2V0TmFtZShcIk5vdGUgTmFtZVwiKVxuICAgICAgICAgICAgICAgICAgICAgIC5zZXREZXNjKFwiV2hhdCBzaG91bGQgdGhlIG5ldyBub3RlIGJlIG5hbWVkP1wiKVxuICAgICAgICAgICAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0RWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRFbC5zZXRQbGFjZWhvbGRlcihcIk15IE5ldyBOb3RlXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFNldHRpbmcoYWN0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAuc2V0TmFtZShcIlNwbGl0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC5zZXREZXNjKFwiU2hvdWxkIHRoZSBuZXcgbm90ZSBvcGVuIGluIGEgc3BsaXQgcGFuZT9cIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlRWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gYG5vdGUoJHt0ZXh0RWwuZ2V0VmFsdWV9KSB0ZXh0YDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RWwub25DaGFuZ2UoKHRleHRWYWwpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRvZ2dsZVZhbCA9IHRvZ2dsZUVsLmdldFZhbHVlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9nZ2xlVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnR5cGUgPSBgbm90ZSgke3RleHRWYWx9LCBzcGxpdCkgdGV4dGA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRvZ2dsZVZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gYG5vdGUoJHt0ZXh0VmFsfSkgdGV4dGA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRWwub25DaGFuZ2UoKHRvZ2dsZVZhbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGV4dFZhbCA9IHRleHRFbC5nZXRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvZ2dsZVZhbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC50eXBlID0gYG5vdGUoJHt0ZXh0VmFsfSwgc3BsaXQpIHRleHRgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0b2dnbGVWYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vdXRwdXRPYmplY3QudHlwZSA9IGBub3RlKCR7dGV4dFZhbH0pIHRleHRgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmFkZFRleHQoKHRleHRFbCkgPT4ge1xuICAgICAgICAgICAgICAgIHRleHRFbC5zZXRQbGFjZWhvbGRlcihcIk15IFRleHQgdG8gSW5zZXJ0XCIpO1xuICAgICAgICAgICAgICAgIHRleHRFbC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LmFjdGlvbiA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhbHVlID09PSBcImNhbGN1bGF0ZVwiKSB7XG4gICAgICAgICAgICBhY3Rpb24uZW1wdHkoKTtcbiAgICAgICAgICAgIG5ldyBTZXR0aW5nKGFjdGlvbilcbiAgICAgICAgICAgICAgLnNldE5hbWUoXCJDYWxjdWxhdGVcIilcbiAgICAgICAgICAgICAgLnNldERlc2MoXG4gICAgICAgICAgICAgICAgXCJFbnRlciBhIGNhbGN1bGF0aW9uLCB5b3UgY2FuIHJlZmVyZW5jZSBhIGxpbmUgbnVtYmVyIHdpdGggJExpbmVOdW1iZXJcIlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0RWwpID0+IHtcbiAgICAgICAgICAgICAgICB0ZXh0RWwuc2V0UGxhY2Vob2xkZXIoXCIyKyQxMFwiKTtcbiAgICAgICAgICAgICAgICB0ZXh0RWwub25DaGFuZ2UoKHZhbHVlKSA9PiAodGhpcy5vdXRwdXRPYmplY3QuYWN0aW9uID0gdmFsdWUpKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YWx1ZSA9PT0gXCJzd2FwXCIpIHtcbiAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnR5cGUgPSBcIlwiO1xuICAgICAgICAgICAgYWN0aW9uLmVtcHR5KCk7XG4gICAgICAgICAgICBuZXcgU2V0dGluZyhhY3Rpb24pXG4gICAgICAgICAgICAgIC5zZXROYW1lKFwiU3dhcFwiKVxuICAgICAgICAgICAgICAuc2V0RGVzYyhcbiAgICAgICAgICAgICAgICBcImNob29zZSBidXR0b25zIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBJbmxpbmUgU3dhcCBCdXR0b25cIlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0RWwpID0+IHtcbiAgICAgICAgICAgICAgICB0ZXh0RWwuaW5wdXRFbC5yZXBsYWNlV2l0aCh0aGlzLnN3YXBTdWdnZXN0RWwpO1xuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBuZXcgU2V0dGluZyhmb3JtRWwpXG4gICAgICAgIC5zZXROYW1lKFwiQnV0dG9uIEJsb2NrIElEXCIpXG4gICAgICAgIC5zZXREZXNjKFwiUHJvdmlkZSBhIGN1c3RvbSBidXR0b24tYmxvY2staWRcIilcbiAgICAgICAgLmFkZFRleHQoKHRleHRFbCkgPT4ge1xuICAgICAgICAgIHRleHRFbC5zZXRQbGFjZWhvbGRlcihcImJ1dHRvbklkXCIpO1xuICAgICAgICAgIHRleHRFbC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LmJsb2NrSWQgPSB2YWx1ZTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICBuZXcgU2V0dGluZyhmb3JtRWwpXG4gICAgICAgIC5zZXROYW1lKFwiUmVtb3ZlXCIpXG4gICAgICAgIC5zZXREZXNjKFxuICAgICAgICAgIFwiV291bGQgeW91IGxpa2UgdG8gcmVtb3ZlIHRoaXMgYnV0dG9uIChvciBvdGhlciBidXR0b25zKSBhZnRlciBjbGlja2luZz9cIlxuICAgICAgICApXG4gICAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZUVsKSA9PiB7XG4gICAgICAgICAgdG9nZ2xlRWwub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgbmV3IFNldHRpbmcocmVtb3ZlKVxuICAgICAgICAgICAgICAgIC5zZXROYW1lKFwiU2VsZWN0IFJlbW92ZVwiKVxuICAgICAgICAgICAgICAgIC5zZXREZXNjKFxuICAgICAgICAgICAgICAgICAgXCJVc2UgdHJ1ZSB0byByZW1vdmUgdGhpcyBidXR0b24sIG9yIHN1cHBseSBhbiBbYXJyYXldIG9mIGJ1dHRvbiBibG9jay1pZHNcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYWRkVGV4dCgodGV4dEVsKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0ZXh0RWwuaW5wdXRFbC5yZXBsYWNlV2l0aCh0aGlzLnJlbW92ZVN1Z2dlc3RFbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LnJlbW92ZSA9IFwiXCI7XG4gICAgICAgICAgICAgIHJlbW92ZS5lbXB0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIGNvbnN0IHJlbW92ZSA9IGZvcm1FbC5jcmVhdGVFbChcImRpdlwiKTtcbiAgICAgIG5ldyBTZXR0aW5nKGZvcm1FbClcbiAgICAgICAgLnNldE5hbWUoXCJSZXBsYWNlXCIpXG4gICAgICAgIC5zZXREZXNjKFwiV291bGQgeW91IGxpa2UgdG8gcmVwbGFjZSBsaW5lcyBpbiB0aGUgbm90ZSBhZnRlciBjbGlja2luZz9cIilcbiAgICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlRWwpID0+IHtcbiAgICAgICAgICB0b2dnbGVFbC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICBuZXcgU2V0dGluZyhyZXBsYWNlKVxuICAgICAgICAgICAgICAgIC5zZXROYW1lKFwiU2VsZWN0IExpbmVzXCIpXG4gICAgICAgICAgICAgICAgLnNldERlc2MoXG4gICAgICAgICAgICAgICAgICBcIlN1cHBseSBhbiBhcnJheSBvZiBbc3RhcnRpbmdMaW5lLCBlbmRpbmdMaW5lXSB0byBiZSByZXBsYWNlZFwiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0RWwpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRleHRFbC5zZXRWYWx1ZShcIltdXCIpO1xuICAgICAgICAgICAgICAgICAgdGV4dEVsLm9uQ2hhbmdlKFxuICAgICAgICAgICAgICAgICAgICAodmFsdWUpID0+ICh0aGlzLm91dHB1dE9iamVjdC5yZXBsYWNlID0gdmFsdWUpXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICByZXBsYWNlLmVtcHR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgY29uc3QgcmVwbGFjZSA9IGZvcm1FbC5jcmVhdGVFbChcImRpdlwiKTtcbiAgICAgIG5ldyBTZXR0aW5nKGZvcm1FbClcbiAgICAgICAgLnNldE5hbWUoXCJJbmhlcml0XCIpXG4gICAgICAgIC5zZXREZXNjKFxuICAgICAgICAgIFwiV291bGQgeW91IGxpa2UgdG8gaW5oZXJpdCBhcmdzIGJ5IGFkZGluZyBhbiBleGlzdGluZyBidXR0b24gYmxvY2staWQ/XCJcbiAgICAgICAgKVxuICAgICAgICAuYWRkVG9nZ2xlKCh0b2dnbGVFbCkgPT4ge1xuICAgICAgICAgIHRvZ2dsZUVsLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgIG5ldyBTZXR0aW5nKGlkKVxuICAgICAgICAgICAgICAgIC5zZXROYW1lKFwiaWRcIilcbiAgICAgICAgICAgICAgICAuc2V0RGVzYyhcbiAgICAgICAgICAgICAgICAgIFwiaW5oZXJpdCBmcm9tIG90aGVyIEJ1dHRvbnMgYnkgYWRkaW5nIHRoZWlyIGJ1dHRvbiBibG9jay1pZFwiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hZGRUZXh0KCh0ZXh0RWwpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRleHRFbC5pbnB1dEVsLnJlcGxhY2VXaXRoKHRoaXMuaWRTdWdnZXN0RWwpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC5yZXBsYWNlID0gXCJcIjtcbiAgICAgICAgICAgICAgaWQuZW1wdHkoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICBjb25zdCBpZCA9IGZvcm1FbC5jcmVhdGVFbChcImRpdlwiKTtcbiAgICAgIG5ldyBTZXR0aW5nKGZvcm1FbClcbiAgICAgICAgLnNldE5hbWUoXCJUZW1wbGF0ZXJcIilcbiAgICAgICAgLnNldERlc2MoXG4gICAgICAgICAgXCJEbyB5b3Ugd2FudCB0byBjb252ZXJ0IGEgdGVtcGxhdGVyIGNvbW1hbmQgaW5zaWRlIHlvdXIgQnV0dG9uIG9uIGVhY2ggY2xpY2s/XCJcbiAgICAgICAgKVxuICAgICAgICAuYWRkVG9nZ2xlKCh0b2dnbGVFbCkgPT4ge1xuICAgICAgICAgIHRvZ2dsZUVsLnNldFRvb2x0aXAoXCJEbyBub3QgdXNlIGZvciBpbmxpbmUgQnV0dG9uXCIpO1xuICAgICAgICAgIHRvZ2dsZUVsLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vdXRwdXRPYmplY3QudGVtcGxhdGVyID0gdmFsdWU7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgbmV3IFNldHRpbmcoZm9ybUVsKVxuICAgICAgICAuc2V0TmFtZShcIkN1c3RvbSBDbGFzc1wiKVxuICAgICAgICAuc2V0RGVzYyhcIkFkZCBhIGN1c3RvbSBjbGFzcyBmb3IgYnV0dG9uIHN0eWxpbmdcIilcbiAgICAgICAgLmFkZFRleHQoKHRleHRFbCkgPT4ge1xuICAgICAgICAgIHRleHRFbC5vbkNoYW5nZSgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uUHJldmlld0VsLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsIHZhbHVlKTtcbiAgICAgICAgICAgIHRoaXMub3V0cHV0T2JqZWN0LmNsYXNzID0gdmFsdWU7XG4gICAgICAgICAgICBpZiAodmFsdWUgPT09IFwiXCIpIHtcbiAgICAgICAgICAgICAgdGhpcy5idXR0b25QcmV2aWV3RWwuc2V0QXR0cmlidXRlKFwiY2xhc3NcIiwgXCJidXR0b24tZGVmYXVsdFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICBuZXcgU2V0dGluZyhmb3JtRWwpXG4gICAgICAgIC5zZXROYW1lKFwiQ29sb3JcIilcbiAgICAgICAgLnNldERlc2MoXCJXaGF0IGNvbG9yIHdvdWxkIHlvdSBsaWtlIHlvdXIgYnV0dG9uIHRvIGJlP1wiKVxuICAgICAgICAuYWRkRHJvcGRvd24oKGRyb3ApID0+IHtcbiAgICAgICAgICBkcm9wLmFkZE9wdGlvbihcImRlZmF1bHRcIiwgXCJEZWZhdWx0IENvbG9yXCIpO1xuICAgICAgICAgIGRyb3AuYWRkT3B0aW9uKFwiYmx1ZVwiLCBcIkJsdWVcIik7XG4gICAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJyZWRcIiwgXCJSZWRcIik7XG4gICAgICAgICAgZHJvcC5hZGRPcHRpb24oXCJncmVlblwiLCBcIkdyZWVuXCIpO1xuICAgICAgICAgIGRyb3AuYWRkT3B0aW9uKFwieWVsbG93XCIsIFwiWWVsbG93XCIpO1xuICAgICAgICAgIGRyb3AuYWRkT3B0aW9uKFwicHVycGxlXCIsIFwiUHVycGxlXCIpO1xuICAgICAgICAgIGRyb3Aub25DaGFuZ2UoKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm91dHB1dE9iamVjdC5jb2xvciA9IHZhbHVlO1xuICAgICAgICAgICAgY29uc3QgYnV0dG9uQ2xhc3MgPSB0aGlzLmJ1dHRvblByZXZpZXdFbFxuICAgICAgICAgICAgICAuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIilcbiAgICAgICAgICAgICAgLnJlcGxhY2UoXCIgYmx1ZVwiLCBcIlwiKVxuICAgICAgICAgICAgICAucmVwbGFjZShcIiByZWRcIiwgXCJcIilcbiAgICAgICAgICAgICAgLnJlcGxhY2UoXCIgZ3JlZW5cIiwgXCJcIilcbiAgICAgICAgICAgICAgLnJlcGxhY2UoXCIgeWVsbG93XCIsIFwiXCIpXG4gICAgICAgICAgICAgIC5yZXBsYWNlKFwiIHB1cnBsZVwiLCBcIlwiKTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gXCJkZWZhdWx0XCIpIHtcbiAgICAgICAgICAgICAgdGhpcy5idXR0b25QcmV2aWV3RWwuc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgICAgIFwiY2xhc3NcIixcbiAgICAgICAgICAgICAgICBgJHtidXR0b25DbGFzc30gJHt2YWx1ZX1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gXCJibHVlXCIpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IFwiIzc2YjNmYVwiO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gXCJwdXJwbGVcIikge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gXCIjNzI1NTg1XCI7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdGhpcy5idXR0b25QcmV2aWV3RWwuc2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgICAgIFwic3R5bGVcIixcbiAgICAgICAgICAgICAgICBgYmFja2dyb3VuZDogJHt2YWx1ZX1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmJ1dHRvblByZXZpZXdFbC5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLCBgJHtidXR0b25DbGFzc31gKTtcbiAgICAgICAgICAgICAgdGhpcy5idXR0b25QcmV2aWV3RWwucmVtb3ZlQXR0cmlidXRlKFwic3R5bGVcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgZm9ybUVsLmNyZWF0ZURpdihcIm1vZGFsLWJ1dHRvbi1jb250YWluZXJcIiwgKGJ1dHRvbkNvbnRhaW5lckVsKSA9PiB7XG4gICAgICAgIGJ1dHRvbkNvbnRhaW5lckVsXG4gICAgICAgICAgLmNyZWF0ZUVsKFwiYnV0dG9uXCIsIHtcbiAgICAgICAgICAgIGF0dHI6IHsgdHlwZTogXCJidXR0b25cIiB9LFxuICAgICAgICAgICAgY2xzOiBcImJ1dHRvbi1kZWZhdWx0XCIsXG4gICAgICAgICAgICB0ZXh0OiBcIkNhbmNlbFwiLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCAoKSA9PiB0aGlzLmNsb3NlKCkpO1xuICAgICAgICBidXR0b25Db250YWluZXJFbC5jcmVhdGVFbChcImJ1dHRvblwiLCB7XG4gICAgICAgICAgYXR0cjogeyB0eXBlOiBcInN1Ym1pdFwiIH0sXG4gICAgICAgICAgY2xzOiBcImJ1dHRvbi1kZWZhdWx0IG1vZC1jdGFcIixcbiAgICAgICAgICB0ZXh0OiBcIkluc2VydCBCdXR0b25cIixcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZm9ybUVsLmFkZEV2ZW50TGlzdGVuZXIoXCJzdWJtaXRcIiwgKGU6IEV2ZW50KSA9PiB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaW5zZXJ0QnV0dG9uKHRoaXMuYXBwLCB0aGlzLm91dHB1dE9iamVjdCk7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnRlbnRFbC5jcmVhdGVFbChcInBcIikuc2V0VGV4dChcIkJ1dHRvbiBQcmV2aWV3XCIpO1xuICAgIHRoaXMuYnV0dG9uUHJldmlld0VsID0gY3JlYXRlQnV0dG9uKHtcbiAgICAgIGFwcDogdGhpcy5hcHAsXG4gICAgICBlbDogY29udGVudEVsLFxuICAgICAgYXJnczogeyBuYW1lOiBcIk15IEF3ZXNvbWUgQnV0dG9uXCIgfSxcbiAgICB9KTtcbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG4gICAgY29udGVudEVsLmVtcHR5KCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIElubGluZUJ1dHRvbk1vZGFsIGV4dGVuZHMgTW9kYWwge1xuICBidXR0b25TdWdnZXN0RWw6IEhUTUxJbnB1dEVsZW1lbnQgPSBjcmVhdGVFbChcImlucHV0XCIsIHsgdHlwZTogXCJ0ZXh0XCIgfSk7XG4gIGJ1dHRvblN1Z2dlc3Q7XG5cbiAgY29uc3RydWN0b3IoYXBwOiBBcHApIHtcbiAgICBzdXBlcihhcHApO1xuICAgIHRoaXMuYnV0dG9uU3VnZ2VzdCA9IG5ldyBCdXR0b25TdWdnZXN0KHRoaXMuYXBwLCB0aGlzLmJ1dHRvblN1Z2dlc3RFbCk7XG4gICAgdGhpcy5idXR0b25TdWdnZXN0RWwuc2V0QXR0cmlidXRlKFwic3R5bGVcIiwgXCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiA0MHB4XCIpO1xuICB9XG5cbiAgb25PcGVuKCkge1xuICAgIGNvbnN0IHsgdGl0bGVFbCwgY29udGVudEVsIH0gPSB0aGlzO1xuICAgIHRpdGxlRWwuc2V0VGV4dChcIkluc2VydCBJbmxpbmUgQnV0dG9uXCIpO1xuICAgIGNvbnRlbnRFbC5jcmVhdGVFbChcImZvcm1cIiwge30sIChmb3JtRWwpID0+IHtcbiAgICAgIGZvcm1FbC5hcHBlbmRDaGlsZCh0aGlzLmJ1dHRvblN1Z2dlc3RFbCk7XG4gICAgICBmb3JtRWwuYWRkRXZlbnRMaXN0ZW5lcihcInN1Ym1pdFwiLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpbnNlcnRJbmxpbmVCdXR0b24odGhpcy5hcHAsIHRoaXMuYnV0dG9uU3VnZ2VzdEVsLnZhbHVlKTtcbiAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBBcHAsXG4gIFBsdWdpbixcbiAgRXZlbnRSZWYsXG4gIEV2ZW50cyxcbiAgTWFya2Rvd25WaWV3LFxuICBNYXJrZG93blJlbmRlckNoaWxkLFxufSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGNyZWF0ZUFyZ3VtZW50T2JqZWN0IH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7XG4gIGluaXRpYWxpemVCdXR0b25TdG9yZSxcbiAgYWRkQnV0dG9uVG9TdG9yZSxcbiAgZ2V0QnV0dG9uRnJvbVN0b3JlLFxuICBnZXRCdXR0b25CeUlkLFxuICBnZXRTdG9yZSxcbn0gZnJvbSBcIi4vYnV0dG9uU3RvcmVcIjtcbmltcG9ydCB7IGJ1dHRvbkV2ZW50TGlzdGVuZXIsIG9wZW5GaWxlTGlzdGVuZXIgfSBmcm9tIFwiLi9ldmVudHNcIjtcbmltcG9ydCB7IEFyZ3VtZW50cyB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBCdXR0b25Nb2RhbCwgSW5saW5lQnV0dG9uTW9kYWwgfSBmcm9tIFwiLi9tb2RhbFwiO1xuaW1wb3J0IHsgY3JlYXRlQnV0dG9uLCBCdXR0b24gfSBmcm9tIFwiLi9idXR0b25cIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnV0dG9uc1BsdWdpbiBleHRlbmRzIFBsdWdpbiB7XG4gIHByaXZhdGUgYnV0dG9uRXZlbnRzOiBFdmVudFJlZjtcbiAgcHJpdmF0ZSBjbG9zZWRGaWxlOiBFdmVudFJlZjtcbiAgcHJpdmF0ZSBidXR0b25FZGl0OiBFdmVudFJlZjtcbiAgcHJpdmF0ZSBjcmVhdGVCdXR0b246IEJ1dHRvbjtcbiAgcHJpdmF0ZSBzdG9yZUV2ZW50cyA9IG5ldyBFdmVudHMoKTtcbiAgcHJpdmF0ZSBpbmRleENvdW50ID0gMDtcbiAgcHJpdmF0ZSBzdG9yZUV2ZW50c1JlZjogRXZlbnRSZWZcblxuICBwcml2YXRlIGFzeW5jIGFkZEJ1dHRvbkluRWRpdChhcHA6IEFwcCkge1xuICAgIGxldCB3aWRnZXQ6IENvZGVNaXJyb3IuTGluZVdpZGdldDtcbiAgICBpZiAod2lkZ2V0KSB7XG4gICAgICB3aWRnZXQuY2xlYXIoKTtcbiAgICB9XG4gICAgY29uc3QgYWN0aXZlVmlldyA9IGFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpO1xuICAgIGlmIChhY3RpdmVWaWV3KSB7XG4gICAgICBjb25zdCBzdG9yZSA9IGdldFN0b3JlKGFwcC5pc01vYmlsZSk7XG4gICAgICBjb25zdCBidXR0b25zSW5GaWxlID0gc3RvcmUuZmlsdGVyKFxuICAgICAgICAoYnV0dG9uKSA9PiBidXR0b24ucGF0aCA9PT0gYWN0aXZlVmlldy5maWxlLnBhdGhcbiAgICAgICk7XG4gICAgICB0aGlzLnJlZ2lzdGVyQ29kZU1pcnJvcigoY206IENvZGVNaXJyb3IuRWRpdG9yKSA9PiB7XG4gICAgICAgIGJ1dHRvbnNJbkZpbGUuZm9yRWFjaChhc3luYyAoYnV0dG9uKSA9PiB7XG4gICAgICAgICAgY29uc3Qgd2lkZ2V0RWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICAgIGNvbnN0IHN0b3JlQnV0dG9uID0gYXdhaXQgZ2V0QnV0dG9uRnJvbVN0b3JlKGFwcCwge1xuICAgICAgICAgICAgaWQ6IGJ1dHRvbi5pZC5zcGxpdChcIi1cIilbMV0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIWFwcC5pc01vYmlsZSAmJlxuICAgICAgICAgICAgc3RvcmVCdXR0b24gJiZcbiAgICAgICAgICAgIHN0b3JlQnV0dG9uPy5hcmdzLmVkaXR2aWV3ID09PSBcInRydWVcIlxuICAgICAgICAgICkge1xuICAgICAgICAgICAgd2lkZ2V0ID0gY20uYWRkTGluZVdpZGdldChcbiAgICAgICAgICAgICAgYnV0dG9uLnBvc2l0aW9uLmVuZC5saW5lICsgMSxcbiAgICAgICAgICAgICAgY3JlYXRlQnV0dG9uKHtcbiAgICAgICAgICAgICAgICBhcHAsXG4gICAgICAgICAgICAgICAgZWw6IHdpZGdldEVsLFxuICAgICAgICAgICAgICAgIGFyZ3M6IHN0b3JlQnV0dG9uLmFyZ3MsXG4gICAgICAgICAgICAgICAgaW5saW5lOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpZDogYnV0dG9uLmlkLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGFzeW5jIG9ubG9hZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmJ1dHRvbkV2ZW50cyA9IGJ1dHRvbkV2ZW50TGlzdGVuZXIodGhpcy5hcHAsIGFkZEJ1dHRvblRvU3RvcmUpO1xuICAgIHRoaXMuY2xvc2VkRmlsZSA9IG9wZW5GaWxlTGlzdGVuZXIodGhpcy5hcHAsIHRoaXMuc3RvcmVFdmVudHMsIGluaXRpYWxpemVCdXR0b25TdG9yZSk7XG4gICAgdGhpcy5jcmVhdGVCdXR0b24gPSBjcmVhdGVCdXR0b24gYXMgQnV0dG9uO1xuICAgIHRoaXMuc3RvcmVFdmVudHNSZWYgPSB0aGlzLnN0b3JlRXZlbnRzLm9uKCdpbmRleC1jb21wbGV0ZScsICgpID0+IHsgXG4gICAgICB0aGlzLmluZGV4Q291bnQrKztcbiAgICB9KVxuICAgICAgICBpbml0aWFsaXplQnV0dG9uU3RvcmUodGhpcy5hcHAsIHRoaXMuc3RvcmVFdmVudHMpO1xuXG4gICAgdGhpcy5idXR0b25FZGl0ID0gb3BlbkZpbGVMaXN0ZW5lcihcbiAgICAgIHRoaXMuYXBwLFxuICAgICAgdGhpcy5zdG9yZUV2ZW50cyxcbiAgICAgIHRoaXMuYWRkQnV0dG9uSW5FZGl0LmJpbmQodGhpcylcbiAgICApO1xuXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgIGlkOiBcImJ1dHRvbi1tYWtlclwiLFxuICAgICAgbmFtZTogXCJCdXR0b24gTWFrZXJcIixcbiAgICAgIGNhbGxiYWNrOiAoKSA9PiBuZXcgQnV0dG9uTW9kYWwodGhpcy5hcHApLm9wZW4oKSxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICBpZDogXCJpbmxpbmUtYnV0dG9uXCIsXG4gICAgICBuYW1lOiBcIkluc2VydCBJbmxpbmUgQnV0dG9uXCIsXG4gICAgICBjYWxsYmFjazogKCkgPT4gbmV3IElubGluZUJ1dHRvbk1vZGFsKHRoaXMuYXBwKS5vcGVuKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3IoXG4gICAgICBcImJ1dHRvblwiLFxuICAgICAgYXN5bmMgKHNvdXJjZSwgZWwsIGN0eCkgPT4ge1xuICAgICAgICAvLyBjcmVhdGUgYW4gb2JqZWN0IG91dCBvZiB0aGUgYXJndW1lbnRzXG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmFwcC52YXVsdFxuICAgICAgICAgIC5nZXRGaWxlcygpXG4gICAgICAgICAgLmZpbmQoKGYpID0+IGYucGF0aCA9PT0gY3R4LnNvdXJjZVBhdGgpO1xuICAgICAgICBhZGRCdXR0b25Ub1N0b3JlKHRoaXMuYXBwLCBmaWxlKTtcbiAgICAgICAgbGV0IGFyZ3MgPSBjcmVhdGVBcmd1bWVudE9iamVjdChzb3VyY2UpO1xuICAgICAgICBjb25zdCBzdG9yZUFyZ3MgPSBhd2FpdCBnZXRCdXR0b25Gcm9tU3RvcmUodGhpcy5hcHAsIGFyZ3MpO1xuICAgICAgICBhcmdzID0gc3RvcmVBcmdzID8gc3RvcmVBcmdzLmFyZ3MgOiBhcmdzO1xuICAgICAgICBjb25zdCBpZCA9IHN0b3JlQXJncyAmJiBzdG9yZUFyZ3MuaWQ7XG4gICAgICAgIGNyZWF0ZUJ1dHRvbih7IGFwcDogdGhpcy5hcHAsIGVsLCBhcmdzLCBpbmxpbmU6IGZhbHNlLCBpZCB9KTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy5yZWdpc3Rlck1hcmtkb3duUG9zdFByb2Nlc3Nvcihhc3luYyAoZWwsIGN0eCkgPT4ge1xuICAgICAgLy8gU2VhcmNoIGZvciA8Y29kZT4gYmxvY2tzIGluc2lkZSB0aGlzIGVsZW1lbnQ7IGZvciBlYWNoIG9uZSwgbG9vayBmb3IgdGhpbmdzIG9mIHRoZSBmb3JtIGBcbiAgICAgIGNvbnN0IGNvZGVibG9ja3MgPSBlbC5xdWVyeVNlbGVjdG9yQWxsKFwiY29kZVwiKTtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBjb2RlYmxvY2tzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCBjb2RlYmxvY2sgPSBjb2RlYmxvY2tzLml0ZW0oaW5kZXgpO1xuICAgICAgICBjb25zdCB0ZXh0ID0gY29kZWJsb2NrLmlubmVyVGV4dC50cmltKCk7XG4gICAgICAgIGlmICh0ZXh0LnN0YXJ0c1dpdGgoXCJidXR0b25cIikpIHtcbiAgICAgICAgICBjb25zdCBpZCA9IHRleHQuc3BsaXQoXCJidXR0b24tXCIpWzFdLnRyaW0oKTtcbiAgICAgICAgICBpZiAodGhpcy5pbmRleENvdW50IDwgMikge1xuICAgICAgICAgIHRoaXMuc3RvcmVFdmVudHNSZWYgPSB0aGlzLnN0b3JlRXZlbnRzLm9uKCdpbmRleC1jb21wbGV0ZScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0aGlzLmluZGV4Q291bnQrKztcbiAgICAgICAgICBjb25zdCBhcmdzID0gYXdhaXQgZ2V0QnV0dG9uQnlJZCh0aGlzLmFwcCwgaWQpO1xuICAgICAgICAgIGlmIChhcmdzKSB7XG4gICAgICAgICAgICBjdHguYWRkQ2hpbGQobmV3IElubGluZUJ1dHRvbihjb2RlYmxvY2ssIHRoaXMuYXBwLCBhcmdzLCBpZCkpXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBhcmdzID0gYXdhaXQgZ2V0QnV0dG9uQnlJZCh0aGlzLmFwcCwgaWQpO1xuICAgICAgICBpZiAoYXJncykge1xuICAgICAgICAgIGN0eC5hZGRDaGlsZChuZXcgSW5saW5lQnV0dG9uKGNvZGVibG9jaywgdGhpcy5hcHAsIGFyZ3MsIGlkKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbiAgb251bmxvYWQoKTogdm9pZCB7XG4gICAgdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5vZmZyZWYodGhpcy5idXR0b25FdmVudHMpO1xuICAgIHRoaXMuYXBwLndvcmtzcGFjZS5vZmZyZWYodGhpcy5jbG9zZWRGaWxlKTtcbiAgICB0aGlzLmFwcC53b3Jrc3BhY2Uub2ZmcmVmKHRoaXMuYnV0dG9uRWRpdCk7XG4gICAgdGhpcy5zdG9yZUV2ZW50cy5vZmZyZWYodGhpcy5zdG9yZUV2ZW50c1JlZik7XG4gIH1cbn1cblxuY2xhc3MgSW5saW5lQnV0dG9uIGV4dGVuZHMgTWFya2Rvd25SZW5kZXJDaGlsZCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBlbDogSFRNTEVsZW1lbnQsXG4gICAgcHVibGljIGFwcDogQXBwLFxuICAgIHB1YmxpYyBhcmdzOiBBcmd1bWVudHMsXG4gICAgcHVibGljIGlkOiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIoZWwpO1xuICB9XG4gIGFzeW5jIG9ubG9hZCgpIHtcbiAgICBjb25zdCBidXR0b24gPSBjcmVhdGVCdXR0b24oe1xuICAgICAgYXBwOiB0aGlzLmFwcCxcbiAgICAgIGVsOiB0aGlzLmVsLFxuICAgICAgYXJnczogdGhpcy5hcmdzLFxuICAgICAgaW5saW5lOiB0cnVlLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgfSk7XG4gICAgdGhpcy5lbC5yZXBsYWNlV2l0aChidXR0b24pO1xuICB9XG59XG4iXSwibmFtZXMiOlsiTWFya2Rvd25WaWV3IiwiTm90aWNlIiwiTWV4cCIsIm1leHAiLCJlZmZlY3QiLCJtaW4iLCJtYXgiLCJtYXRoTWF4IiwibWF0aE1pbiIsImhhc2giLCJhbGxQbGFjZW1lbnRzIiwicGxhY2VtZW50cyIsInBvcHBlck9mZnNldHMiLCJjb21wdXRlU3R5bGVzIiwiYXBwbHlTdHlsZXMiLCJvZmZzZXQiLCJmbGlwIiwicHJldmVudE92ZXJmbG93IiwiYXJyb3ciLCJoaWRlIiwiU2NvcGUiLCJURmlsZSIsIk1vZGFsIiwiU2V0dGluZyIsIlBsdWdpbiIsIkV2ZW50cyIsIk1hcmtkb3duUmVuZGVyQ2hpbGQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUlBLElBQUksV0FBaUMsQ0FBQztBQUUvQixNQUFNLFFBQVEsR0FBRyxDQUFDLFFBQWlCLEtBQ3hDLFFBQVEsR0FBRyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFNBQVMs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QUNILEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN2QixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDaEIsR0FBRztBQUNILEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFO0FBQ3JCLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0UsR0FBRztBQUNILEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxFQUFFO0FBQ3JCLElBQUksUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0UsR0FBRztBQUNILEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFO0FBQ3RCLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsR0FBRztBQUNILEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFO0FBQ3RCLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDN0MsR0FBRztBQUNILEVBQUUsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUFFO0FBQ3RCLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdEMsR0FBRztBQUNI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RSxHQUFHLEVBQUUsVUFBVSxDQUFDLEVBQUU7QUFDcEIsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUM7QUFDckQsSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLEdBQUc7QUFDSCxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsRUFBRTtBQUNyQixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDL0QsR0FBRztBQUNILEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN2QixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUM7QUFDaEIsR0FBRztBQUNILEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUFFO0FBQ3BCLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFDO0FBQ3JELElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN0QixHQUFHO0FBQ0gsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLEVBQUU7QUFDckIsSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDeEMsR0FBRztBQUNILEVBQUUsUUFBUSxFQUFFLFVBQVUsQ0FBQyxFQUFFO0FBQ3pCLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHO0FBQzVCLEdBQUc7QUFDSCxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDdkIsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDO0FBQ2hCLEdBQUc7QUFDSCxFQUFDO0FBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLE9BQU8sRUFBRTtBQUNwQyxFQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBTztBQUN4QixFQUFDO0FBQ0QsaUJBQWMsR0FBRzs7QUNuSWpCLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDdkIsQ0FBQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN0QyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFHO0FBQ2YsRUFBRTtBQUNGLENBQUMsT0FBTyxHQUFHO0FBQ1gsQ0FBQztBQUNELElBQUksTUFBTSxHQUFHO0FBQ2IsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRUUsYUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDN0QsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRUEsYUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDN0QsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRUEsYUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDN0QsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7QUFDcEQsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDL0MsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDL0MsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRUEsYUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDeEQsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRUEsYUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDeEQsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFO0FBQ3ZELENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUVBLGFBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ2hFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUVBLGFBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ2hFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUVBLGFBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ2hFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQy9DLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQy9DLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFO0FBQy9DLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtBQUMxRCxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtBQUNoRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNuRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDdkQsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ3JELENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtBQUMzRCxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMvQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMvQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMvQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNoRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtBQUMxRCxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtBQUNoRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNuRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUMvRCxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMvQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMvQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMvQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUMvRCxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtBQUNoRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtBQUNuRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMvQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUM5RCxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMvQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUMvQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUN6RCxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUN6RCxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNoRCxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtBQUN0RSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNoRCxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFQSxhQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUM3RCxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxFQUFFO0FBQzlFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUVBLGFBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO0FBQ3pELEVBQUM7QUFDRCxJQUFJLE1BQU0sR0FBRztBQUNiLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDTixDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDTCxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNMLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDTCxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ04sQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNOLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDTCxDQUFDLEVBQUUsRUFBRSxFQUFFO0FBQ1AsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNOLENBQUMsRUFBRSxFQUFFLEVBQUU7QUFDUCxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ04sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxFQUFFLEVBQUUsRUFBRTtBQUNQLEVBQUM7QUFDRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN4QyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUM7QUFDOUMsQ0FBQztBQUNELElBQUksS0FBSyxHQUFHO0FBQ1osQ0FBQyxDQUFDLEVBQUUsSUFBSTtBQUNSLENBQUMsQ0FBQyxFQUFFLElBQUk7QUFDUixDQUFDLENBQUMsRUFBRSxJQUFJO0FBQ1IsQ0FBQyxDQUFDLEVBQUUsSUFBSTtBQUNSLENBQUMsQ0FBQyxFQUFFLElBQUk7QUFDUixDQUFDLENBQUMsRUFBRSxJQUFJO0FBQ1IsQ0FBQyxDQUFDLEVBQUUsSUFBSTtBQUNSLENBQUMsRUFBRSxFQUFFLElBQUk7QUFDVCxDQUFDLEVBQUUsRUFBRSxJQUFJO0FBQ1QsQ0FBQyxFQUFFLEVBQUUsSUFBSTtBQUNULENBQUMsRUFBRSxFQUFFLElBQUk7QUFDVCxFQUFDO0FBQ0QsSUFBSSxLQUFLLEdBQUc7QUFDWixDQUFDLENBQUMsRUFBRSxJQUFJO0FBQ1IsQ0FBQyxDQUFDLEVBQUUsSUFBSTtBQUNSLENBQUMsQ0FBQyxFQUFFLElBQUk7QUFDUixDQUFDLENBQUMsRUFBRSxJQUFJO0FBQ1IsQ0FBQyxDQUFDLEVBQUUsSUFBSTtBQUNSLENBQUMsQ0FBQyxFQUFFLElBQUk7QUFDUixDQUFDLENBQUMsRUFBRSxJQUFJO0FBQ1IsQ0FBQyxDQUFDLEVBQUUsSUFBSTtBQUNSLENBQUMsQ0FBQyxFQUFFLElBQUk7QUFDUixDQUFDLENBQUMsRUFBRSxJQUFJO0FBQ1IsQ0FBQyxFQUFFLEVBQUUsSUFBSTtBQUNULENBQUMsRUFBRSxFQUFFLElBQUk7QUFDVCxDQUFDLEVBQUUsRUFBRSxJQUFJO0FBQ1QsQ0FBQyxFQUFFLEVBQUUsSUFBSTtBQUNULENBQUMsRUFBRSxFQUFFLElBQUk7QUFDVCxFQUFDO0FBQ0QsSUFBSSxhQUFhLEdBQUc7QUFDcEIsQ0FBQyxDQUFDLEVBQUUsSUFBSTtBQUNSLENBQUMsQ0FBQyxFQUFFLElBQUk7QUFDUixDQUFDLENBQUMsRUFBRSxJQUFJO0FBQ1IsQ0FBQyxDQUFDLEVBQUUsSUFBSTtBQUNSLENBQUMsRUFBRSxFQUFFLElBQUk7QUFDVCxDQUFDLEVBQUUsRUFBRSxJQUFJO0FBQ1QsQ0FBQyxFQUFFLEVBQUUsSUFBSTtBQUNULEVBQUM7QUFDRCxJQUFJLEtBQUssR0FBRyxHQUFFO0FBQ2QsSUFBSSxhQUFhLEdBQUc7QUFDcEIsQ0FBQyxDQUFDLEVBQUUsSUFBSTtBQUNSLENBQUMsQ0FBQyxFQUFFLElBQUk7QUFDUixDQUFDLENBQUMsRUFBRSxJQUFJO0FBQ1IsQ0FBQyxDQUFDLEVBQUUsSUFBSTtBQUNSLENB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QztBQUNkLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNsQyxFQUFFLElBQUksQ0FBQyxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtBQUNwRSxHQUFHLFFBQVE7QUFDWCxHQUFHO0FBQ0gsRUFBRSxHQUFHLEdBQUcsR0FBRTtBQUNWLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNwRyxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsRUFBRSxRQUFRO0FBQ3ZDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLElBQUksSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDMUMsS0FBSyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQztBQUN0QixLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTTtBQUN4QixLQUFLLENBQUMsR0FBRyxFQUFDO0FBQ1YsS0FBSztBQUNMLElBQUk7QUFDSixHQUFHO0FBQ0gsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFDO0FBQ3JC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QUFDLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDL0MsQ0FBQyxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ3RCLENBQUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDdEMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO0FBQ3BFLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDeEIsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JCLEdBQUc7QUFDSCxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDOUIsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RCLEdBQUc7QUFDSCxPQUFPLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDOUIsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsRUFBRSxJQUFJLEtBQUssQ0FBQyxFQUFFO0FBQzdDLElBQUksSUFBSSxDQUFDLElBQUks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Qy9DLEdBQUcsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO0FBQ2hDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBQztBQUM1RCxHQUFHLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtBQUNoQyxHQUFHLElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO0FBQzVELElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFDOUMsSUFBSSxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQztBQUNyRixHQUFHLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtBQUNoQyxHQUFHLElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssV0FBVyxFQUFFO0FBQzVELElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFDOUMsSUFBSSxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQztBQUNyRixHQUFHLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtBQUNoQyxHQUFHLElBQUksTUFBTSxHQUFHLEdBQUU7QUFDbEIsR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3RELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFDO0FBQ2xDLElBQUk7QUFDSixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBQztBQUMvRSxHQUFHLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRTtBQUNqQyxHQUFHLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxHQUFFO0FBQ3JCLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUU7QUFDckIsR0FBRyxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7QUFDekMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFDO0FBQ2xDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDO0FBQzNCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUM7QUFDcEIsSUFBSSxNQUFNLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtBQUNoRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFDO0FBQ3RCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFDckIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQztBQUNwQixJQUFJLE1BQU07QUFDVixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUM7QUFDeEUsSUFBSTtBQUNKLEdBQUcsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO0FBQ3JELEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUU7QUFDckIsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRTtBQUNyQixHQUFHLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtBQUN6QyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBQztBQUM1QixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDO0FBQ3JCLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUM7QUFDcEIsSUFBSSxNQUFNLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsRUFBRTtBQUNoRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFDO0FBQ3RCLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFDckIsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQztBQUNwQixJQUFJLE1BQU07QUFDVixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUM7QUFDeEUsSUFBSTtBQUNKLEdBQUcsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO0FBQ2pDLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUU7QUFDckIsR0FBRyxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7QUFDekMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUM7QUFDakIsSUFBSTtBQUNKLEdBQUcsSUFBSSxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUU7QUFDckIsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsR0FBRTtBQUNyQixHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJQSxPQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFDO0FBQ3ZGLEdBQUcsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO0FBQ2pDLEdBQUcsSUFBSSxJQUFJLEVBQUU7QUFDYixJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQUM7QUFDN0QsSUFBSSxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQztBQUM5QixHQUFHO0FBQ0gsRUFBRTtBQUNGLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUN2QixFQUFFLE1BQU0sSUFBSUEsT0FBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQztBQUNuRCxFQUFFO0FBQ0YsQ0FBQyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsZ0JBQWdCLEdBQUcsVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMvRixFQUFDO0FBQ0RBLE9BQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRTtBQUN4QyxDQUFDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO0FBQ3BDLEVBQUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsRUFBRTtBQUNoRCxFQUFFLE1BQU0sSUFBSSxPQUFPLEdBQUcsS0FBSyxXQUFXLEVBQUU7QUFDeEMsRUFBRSxJQUFJLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxXQUFXLEVBQUUsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLEVBQUU7QUFDbEcsT0FBTyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztBQUMzRCxFQUFFLE1BQU0sT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO0FBQ2pFLEVBQUM7QUFDRCxxQkFBYyxHQUFHQTs7QUN2RmpCQSxpQkFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsWUFBWTtBQUV6QyxLQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSztBQUM3QixDQUFDLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUViLENBQUMsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztBQUNwQixDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzlCLEVBQUUsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUN0QyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RFLEdBQUc7QUFDSCxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7QUFDM0IsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsR0FBRztBQUNILE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztBQUMxQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hJLEdBQUc7QUFDSCxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7QUFDMUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEosR0FBRztBQUNILE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUMzQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDbkIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ25CLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxSSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNySCxHQUFHO0FBQ0gsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNuQixHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDbkIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxH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 diff --git a/.obsidian/plugins/buttons/manifest.json b/.obsidian/plugins/buttons/manifest.json index b830e5c1..bd3be2ef 100644 --- a/.obsidian/plugins/buttons/manifest.json +++ b/.obsidian/plugins/buttons/manifest.json @@ -2,7 +2,7 @@ "id": "buttons", "name": "Buttons", "description": "Create Buttons in your Obsidian notes to run commands, open links, and insert templates", - "version": "0.4.16", + "version": "0.4.17", "author": "shabegom", "authorUrl": "https://shbgm.ca", "isDesktopOnly": false, diff --git a/.obsidian/plugins/multi-column-markdown/main.js b/.obsidian/plugins/multi-column-markdown/main.js index 8a7c2707..14f3e98b 100644 --- a/.obsidian/plugins/multi-column-markdown/main.js +++ b/.obsidian/plugins/multi-column-markdown/main.js @@ -77,6 +77,7 @@ var SingleColumnSize; SingleColumnSize[SingleColumnSize["small"] = 0] = "small"; SingleColumnSize[SingleColumnSize["medium"] = 1] = "medium"; SingleColumnSize[SingleColumnSize["large"] = 2] = "large"; + SingleColumnSize[SingleColumnSize["full"] = 3] = "full"; })(SingleColumnSize || (SingleColumnSize = {})); var ContentOverflowType; (function (ContentOverflowType) { @@ -383,6 +384,9 @@ function parseForSingleColumnSize(sizeString) { case "large": case "lg": return SingleColumnSize.large; + case "full": + case "full size": + return SingleColumnSize.full; } return SingleColumnSize.medium; } @@ -451,15 +455,24 @@ for (let i = 0; i < END_REGEX_STRS.length; i++) { END_REGEX_ARR.push(new RegExp(END_REGEX_STRS[i])); } function findEndTag(text) { + // We want to find the first end tag in the text. + // So here we loop backwards, slicing off the tail until + // there are no more end tags available + let lastValidData = getEndTagData(text); + let workingRegexData = lastValidData; + while (workingRegexData.found === true) { + lastValidData = workingRegexData; + text = text.slice(0, workingRegexData.startPosition); + workingRegexData = getEndTagData(text); + } + return lastValidData; +} +function containsEndTag(text) { + return findEndTag(text).found; +} +function getEndTagData(text) { let found = false; let startPosition = -1; - for (let i = 0; i < END_REGEX_ARR.length; i++) { - if (END_REGEX_ARR[i].test(text)) { - found = true; - startPosition = text.search(END_REGEX_STRS[i]); - break; - } - } let endPosition = -1; let matchLength = 0; for (let i = 0; i < END_REGEX_ARR.length; i++) { @@ -474,9 +487,6 @@ function findEndTag(text) { endPosition = startPosition + matchLength; return { found, startPosition, endPosition, matchLength }; } -function containsEndTag(text) { - return findEndTag(text).found; -} const COL_REGEX_STRS = ["=== *column-end *===", "=== *end-column *===", "=== *column-break *===", @@ -503,13 +513,14 @@ const COL_ELEMENT_INNER_TEXT_REGEX_STRS = ["= *column-end *=", "= *end-column *=", "= *column-break *=", "= *break-column *="]; +const COL_ELEMENT_INNER_TEXT_REGEX_ARR = []; for (let i = 0; i < COL_ELEMENT_INNER_TEXT_REGEX_STRS.length; i++) { - COL_REGEX_ARR.push(new RegExp(COL_ELEMENT_INNER_TEXT_REGEX_STRS[i])); + COL_ELEMENT_INNER_TEXT_REGEX_ARR.push(new RegExp(COL_ELEMENT_INNER_TEXT_REGEX_STRS[i])); } function elInnerTextContainsColEndTag(text) { let found = false; - for (let i = 0; i < COL_REGEX_ARR.length; i++) { - if (COL_REGEX_ARR[i].test(text)) { + for (let i = 0; i < COL_ELEMENT_INNER_TEXT_REGEX_ARR.length; i++) { + if (COL_ELEMENT_INNER_TEXT_REGEX_ARR[i].test(text)) { found = true; break; } @@ -1051,6 +1062,7 @@ function getHeadingCollapseElement(element) { * * Copyright (c) 2022 Cameron Robinson */ +const UPDATE_TIMES = [250, 20000]; var DOMObjectTag; (function (DOMObjectTag) { DOMObjectTag[DOMObjectTag["none"] = 0] = "none"; @@ -1065,6 +1077,10 @@ class DOMObject { this.elementType = ElementRenderType.undefined; this.elementContainer = null; this.elementRenderedHeight = 0; + this.canvasElementUpdateTime = Date.now(); + this.canvasTimerIndex = 0; + this.lastClonedElementUpdateTime = Date.now(); + this.updateTimerIndex = 0; this.nodeKey = element.innerText.trim(); this.originalElement = element; this.UID = randomID; @@ -1079,6 +1095,27 @@ class DOMObject { this.originalElement = domElement; this.usingOriginalElement = true; } + clonedElementReadyForUpdate() { + let deltaTime = Date.now() - this.lastClonedElementUpdateTime; + if (deltaTime > UPDATE_TIMES[this.updateTimerIndex]) { + return true; + } + return false; + } + canvasReadyForUpdate() { + let deltaTime = Date.now() - this.canvasElementUpdateTime; + if (deltaTime > UPDATE_TIMES[this.canvasTimerIndex]) { + this.canvasElementUpdateTime = Date.now(); + this.canvasTimerIndex = Math.clamp(this.canvasTimerIndex + 1, 0, UPDATE_TIMES.length - 1); + return true; + } + return false; + } + updateClonedElement(newClonedElement) { + this.clonedElement = newClonedElement; + this.lastClonedElementUpdateTime = Date.now(); + this.updateTimerIndex = Math.clamp(this.updateTimerIndex + 1, 0, UPDATE_TIMES.length - 1); + } setDomObjectTag() { let elementTextSpaced = this.linesOfElement.reduce((prev, curr) => { return prev + "\n" + curr; @@ -1151,6 +1188,7 @@ var MultiColumnLayoutCSS; MultiColumnLayoutCSS["SingleColumnSmall"] = "mcm-single-column-small"; MultiColumnLayoutCSS["SingleColumnMed"] = "mcm-single-column-medium"; MultiColumnLayoutCSS["SingleColumnLarge"] = "mcm-single-column-large"; + MultiColumnLayoutCSS["SingleColumnFull"] = "mcm-single-column-full"; MultiColumnLayoutCSS["SingleColumnLeftLayout"] = "mcm-singlecol-layout-left"; MultiColumnLayoutCSS["SingleColumnCenterLayout"] = "mcm-singlecol-layout-center"; MultiColumnLayoutCSS["SingleColumnRightLayout"] = "mcm-singlecol-layout-right"; @@ -1213,14 +1251,30 @@ class RegionManager { }; } addObject(siblingsAbove, siblingsBelow, obj) { - let prevObj = siblingsAbove.children[siblingsAbove.children.length - 1]; let nextObj = siblingsBelow.children[0]; let addAtIndex = siblingsAbove.children.length; - if (prevObj !== undefined) { - prevObj.innerText; + if (siblingsAbove.children.length > 0) { + /** + * We want to find the first sibling withouth "" for an inner text so we can use that to anchor our + * element into the domList. For most items the first element before our new element will have the proper + * innerText. Sometimes other elements are empty and were causing issues. + * + * Now we loop back through the previous siblings looking for the first one with a valid inner text and using that + * as the anchor and offsetting our addAtIndex by the number of empty string elements we found. + */ + let prevSiblingInnerText = ""; + let prevSiblingOffset = 0; + for (let i = siblingsAbove.children.length - 1; i >= 0; i--) { + let obj = siblingsAbove.children[i]; + if (obj.innerText !== "") { + prevSiblingInnerText = obj.innerText; + break; + } + prevSiblingOffset++; + } for (let i = this.domList.length - 1; i >= 0; i--) { - if (this.domList[i].nodeKey === prevObj.innerText) { - addAtIndex = i + 1; + if (this.domList[i].nodeKey === prevSiblingInnerText) { + addAtIndex = i + 1 + prevSiblingOffset; break; } } @@ -1235,7 +1289,7 @@ class RegionManager { } } } - // console.log(" Prev: ", siblingsAbove.children[siblingsAbove.children.length - 1], "Adding: ", obj.element, " Next: ", siblingsBelow.children[0], "Overwriting:", this.domList.slice(addAtIndex, nextElIndex)); + // console.log(" Prev: ", Array.from(siblingsAbove.children).slice(-3), "Adding: ", obj.originalElement, " Next: ", siblingsBelow.children[0], "Overwriting:", this.domList.slice(addAtIndex, nextElIndex)); this.domList.splice(addAtIndex, nextElIndex - addAtIndex, obj); this.domObjectMap.set(obj.UID, obj); // /** @@ -1438,24 +1492,17 @@ class RegionManager { * refreshed. This can occur when elements are updated by other plugins, * such as Dataview. */ - if (clonedElement === null || - clonedElementHeight !== originalElementHeight) { + if ((clonedElement === null || + Math.abs(clonedElementHeight - originalElementHeight) > 10 || + domElement.clonedElementReadyForUpdate() === true) && + domElement.elementType !== ElementRenderType.canvasRenderElement) { + // console.log("Updating Cloned Element.", clonedElementHeight, originalElementHeight) // Update clone and reference. - domElement.clonedElement = originalElement.cloneNode(true); - clonedElement = domElement.clonedElement; - /** - * If we updated the cloned element, we want to also update the - * element rendered in the parent container. - */ - for (let i = containerElement.children.length - 1; i >= 0; i--) { - containerElement.children[i].detach(); - } - // Update CSS, we add cloned class and remove classes from originalElement that do not apply. - clonedElement.addClass(MultiColumnLayoutCSS.ClonedElementType); - clonedElement.removeClasses([MultiColumnStyleCSS.RegionContent, MultiColumnLayoutCSS.OriginalElementType]); - containerElement.appendChild(clonedElement); + cloneElement(); } - if (domElement.elementType === ElementRenderType.canvasRenderElement) { + if (domElement.elementType === ElementRenderType.canvasRenderElement && + domElement.canvasReadyForUpdate()) { + // console.log("Updating canvas re-render") containerElement.appendChild(originalElement); function cloneCanvas(originalCanvas) { //create a new canvas @@ -1476,6 +1523,11 @@ class RegionManager { } let canvas = searchChildrenForNodeType(originalElement, "canvas"); if (canvas !== null) { + domElement.updateClonedElement(originalElement.cloneNode(true)); + clonedElement = domElement.clonedElement; + clonedElement.addClass(MultiColumnLayoutCSS.ClonedElementType); + clonedElement.removeClasses([MultiColumnStyleCSS.RegionContent, MultiColumnLayoutCSS.OriginalElementType]); + containerElement.appendChild(clonedElement); for (let i = clonedElement.children.length - 1; i >= 0; i--) { clonedElement.children[i].detach(); } @@ -1490,7 +1542,8 @@ class RegionManager { * as specialSingleElementRender so we ignore those elements here. */ if (domElement.elementContainer.children.length < 2 && - domElement.elementType !== ElementRenderType.specialSingleElementRender) { + domElement.elementType !== ElementRenderType.specialSingleElementRender && + domElement.elementType !== ElementRenderType.canvasRenderElement) { // console.log("Updating dual rendering.", domElement, domElement.originalElement.parentElement, domElement.originalElement.parentElement?.childElementCount); // Make sure our CSS is up to date. originalElement.addClass(MultiColumnLayoutCSS.OriginalElementType); @@ -1502,6 +1555,21 @@ class RegionManager { containerElement.appendChild(originalElement); containerElement.appendChild(clonedElement); } + function cloneElement() { + domElement.updateClonedElement(originalElement.cloneNode(true)); + clonedElement = domElement.clonedElement; + /** + * If we updated the cloned element, we want to also update the + * element rendered in the parent container. + */ + for (let i = containerElement.children.length - 1; i >= 0; i--) { + containerElement.children[i].detach(); + } + // Update CSS, we add cloned class and remove classes from originalElement that do not apply. + clonedElement.addClass(MultiColumnLayoutCSS.ClonedElementType); + clonedElement.removeClasses([MultiColumnStyleCSS.RegionContent, MultiColumnLayoutCSS.OriginalElementType]); + containerElement.appendChild(clonedElement); + } } /** * Sets up the CSS classes and the number of columns based on the passed settings. @@ -1861,6 +1929,9 @@ class SingleColumnRegionManager extends RegionManager { else if (this.regionalSettings.columnSize === SingleColumnSize.large) { contentDiv.addClass(`${MultiColumnLayoutCSS.SingleColumnLarge}`); } + else if (this.regionalSettings.columnSize === SingleColumnSize.full) { + contentDiv.addClass(`${MultiColumnLayoutCSS.SingleColumnFull}`); + } else { contentDiv.addClass(`${MultiColumnLayoutCSS.SingleColumnMed}`); } @@ -2156,19 +2227,19 @@ class RegionManagerContainer { this.region.setRegionalSettings(regionalSettings); if (regionalSettings.numberOfColumns === 1) { if (this.region instanceof SingleColumnRegionManager === false) { - console.debug("Converting region to single column."); + // console.debug("Converting region to single column.") this.convertToSingleColumn(); } } else if (regionalSettings.autoLayout === true) { if (this.region instanceof AutoLayoutRegionManager === false) { - console.debug("Converting region to auto layout."); + // console.debug("Converting region to auto layout.") this.convertToAutoLayout(); } } else if (regionalSettings.numberOfColumns >= 2) { if (this.region instanceof StandardMultiColumnRegionManager === false) { - console.debug("Converting region to standard multi-column"); + // console.debug("Converting region to standard multi-column") this.convertToStandardMultiColumn(); } } @@ -2326,7 +2397,8 @@ class MultiColumnMarkdown_LivePreview_Widget extends view.WidgetType { // take all elements, in order, and create our DOM list. let arr = Array.from(this.tempParent.children); for (let i = 0; i < arr.length; i++) { - this.domList.push(new DOMObject(arr[i], [""])); + let el = this.fixElementRender(arr[i]); + this.domList.push(new DOMObject(el, [""])); } // Set up the region manager data before then creating our region manager. let regionData = { @@ -2350,6 +2422,10 @@ class MultiColumnMarkdown_LivePreview_Widget extends view.WidgetType { this.regionManager = new StandardMultiColumnRegionManager(regionData); } } + fixElementRender(el) { + let fixedEl = fixImageRender(el); + return fixedEl; + } toDOM() { // Create our element to hold all of the live preview elements. let el = document.createElement("div"); @@ -2386,7 +2462,6 @@ class MultiColumnMarkdown_DefinedSettings_LivePreview_Widget extends view.Widget this.contentData = contentData; } toDOM() { - console.log("Rendering settings block"); // Create our element to hold all of the live preview elements. let el = document.createElement("div"); el.className = "mcm-cm-settings-preview"; @@ -2404,6 +2479,50 @@ class MultiColumnMarkdown_DefinedSettings_LivePreview_Widget extends view.Widget return el; } } +function fixImageRender(el) { + let fixedEl = el; + let items = el.getElementsByClassName("internal-embed"); + if (items.length === 1) { + let embed = items[0]; + let alt = embed.getAttr("alt"); + let src = embed.getAttr("src"); + let aTFiles = app.vault.getAllLoadedFiles(); + let resourcePath = ""; + for (let i = 0; i < aTFiles.length; i++) { + let abstractFile = aTFiles[i]; + if (abstractFile instanceof obsidian.TFile === false) { + continue; + } + let file = abstractFile; + if (file.name === src && hasImageExtension(file.extension) === true) { + resourcePath = app.vault.getResourcePath(file); + break; + } + } + if (alt === src && resourcePath !== "") { + fixedEl = createDiv({ + cls: "internal-embed image-embed is-loaded", + }); + fixedEl.setAttr("alt", alt); + let image = fixedEl.createEl("img"); + image.setAttr("src", resourcePath); + } + } + return fixedEl; +} +function hasImageExtension(extension) { + extension = extension.toLowerCase(); + switch (extension) { + case "png": + case "jpg": + case "jpeg": + case "gif": + case "bmp": + case "svg": + return true; + } + return false; +} /* * Filename: multi-column-markdown/src/live_preview/cm6_livePreview.ts @@ -2427,13 +2546,8 @@ const multiColumnMarkdown_StateField = state.StateField.define({ if (generated === true) { return; } - let markdownLeaves = app.workspace.getLeavesOfType("markdown"); - if (markdownLeaves.length === 0) { - return; - } - // TODO: Check other ways to get if source is live preview? editorLivePreviewField - if (markdownLeaves[0].getViewState().state.source === true) { - console.debug("User disabled live preview."); + if (isEditorInLivePreview(transaction.state) === true) { + // console.debug("User disabled live preview.") return; } // We want to run on the whole file so we dont just look for a single token. @@ -2448,7 +2562,7 @@ const multiColumnMarkdown_StateField = state.StateField.define({ let docLength = transaction.state.doc.length; let docText = transaction.state.doc.sliceString(0, docLength); if (containsRegionStart(docText) === false) { - console.debug("No start tag in document."); + // console.debug("No start tag in document.") return; } // We want to know where the user's cursor is, it can be @@ -2457,20 +2571,38 @@ const multiColumnMarkdown_StateField = state.StateField.define({ let ranges = getCursorLineLocations(); // Setup our loop to render the regions as MCM. let workingFileText = docText; - let startTagData = findStartTag(workingFileText); - if (startTagData.found === false) { - startTagData = findStartCodeblock(workingFileText); - } - let endTagData = findEndTag(workingFileText); let loopIndex = 0; let startIndexOffset = 0; - while (startTagData.found === true && endTagData.found === true) { + while (true) { + // If there are multiple kinds of start blocks, the old way of parsing would cause issues. + // Now search for both kinds and determine what to do after search. + let startTagData_codeblockStart = findStartCodeblock(workingFileText); + let startTagData_depreciatedStart = findStartTag(workingFileText); + // Default to codeblock Style. Then check, if codeblock was not found and depreciated Start was, set startTag to depreciated. + let startTagData = startTagData_codeblockStart; + if (startTagData_codeblockStart.found === false && startTagData_depreciatedStart.found === true) { + startTagData = startTagData_depreciatedStart; + } + else if (startTagData_codeblockStart.found === true && startTagData_depreciatedStart.found === true) { + // If both kinds were found we want to start with the one closer to the top of the document as CM6 requires we work in order. + if (startTagData_codeblockStart.startPosition > startTagData_depreciatedStart.startPosition) { + startTagData = startTagData_depreciatedStart; + } + } + if (startTagData.found === false) { + break; + } + // Search for the first end tag after a start block. (No recursive columns.) + let endTagData = findEndTag(workingFileText.slice(startTagData.startPosition)); + if (endTagData.found === false) { + break; + } /** * For the region we found get the start and end position of the tags so we * can slice it out of the document. */ let startIndex = startIndexOffset + startTagData.startPosition; - let endIndex = startIndexOffset + endTagData.startPosition + endTagData.matchLength; // Without the matchLength will leave the end tag on the screen. + let endIndex = startIndex + endTagData.startPosition + endTagData.matchLength; // Without the matchLength will leave the end tag on the screen. // This text is the entire region data including the start and end tags. let elementText = docText.slice(startIndex, endIndex); /** @@ -2503,20 +2635,15 @@ const multiColumnMarkdown_StateField = state.StateField.define({ } } } - // At this point if the cursor isnt in the region we pass the data to the - // element to be rendered. - if (cursorInRegion === false) { + else { + // At this point if the cursor isnt in the region we pass the data to the + // element to be rendered. builder.add(startIndex, endIndex, view.Decoration.replace({ widget: new MultiColumnMarkdown_LivePreview_Widget(elementText), })); } generated = true; - // ReCalculate additional start tags if there are more in document. - startTagData = findStartTag(workingFileText); - if (startTagData.found === false) { - startTagData = findStartCodeblock(workingFileText); - } - endTagData = findEndTag(workingFileText); + // Infinite loop protection. loopIndex++; if (loopIndex > 100) { console.warn("Potential issue with rendering Multi-Column Markdown live preview regions. If problem persists please file a bug report with developer."); @@ -2552,43 +2679,48 @@ const multiColumnMarkdown_StateField = state.StateField.define({ return false; } function checkCursorInRegion(startIndex, endIndex, ranges) { - let cursorInRegion = false; for (let i = 0; i < ranges.length; i++) { // TODO: Maybe look into limiting this to the second and second to last line // of the region as clicking right at the top or bottom of the region // swaps it to unrendered. let range = ranges[i]; if (valueIsInRange(range.position, startIndex, endIndex) === true) { - cursorInRegion = true; - break; + return true; } } - if (cursorInRegion === false && transaction.selection) { - for (let i = 0; i < transaction.selection.ranges.length; i++) { - let range = transaction.selection.ranges[i]; + if (transaction.state.selection) { + for (let i = 0; i < transaction.state.selection.ranges.length; i++) { + let range = transaction.state.selection.ranges[i]; // If either the start or end of the selection is within the // region range we do not render live preview. if (valueIsInRange(range.from, startIndex, endIndex) || valueIsInRange(range.to, startIndex, endIndex)) { - cursorInRegion = true; - break; + return true; } - // Or if the entire region is within the selection range + // // Or if the entire region is within the selection range // we do not render the live preview. if (valueIsInRange(startIndex, range.from, range.to) && valueIsInRange(endIndex, range.from, range.to)) { - cursorInRegion = true; - break; + return true; } } } - return cursorInRegion; + return false; } }, provide(field) { return view.EditorView.decorations.from(field); }, }); +function isEditorInLivePreview(state) { + let mdView = state.field(obsidian.editorViewField); + let viewState = mdView.leaf.getViewState(); + let stateData = null; + if (viewState.state) { + stateData = viewState.state; + } + return (stateData && stateData.mode == "source" && stateData.source == true); +} /* * File: multi-column-markdown/src/main.ts @@ -3043,7 +3175,9 @@ ${editor.getDoc().getSelection()}`); } } childrenToRemove.forEach(child => { - el.removeChild(child); + if (child.parentElement === el) { + el.removeChild(child); + } }); }); } @@ -3082,7 +3216,7 @@ ${editor.getDoc().getSelection()}`); } } if (this.globalManager === null || this.globalManager === undefined) { - console.log("Global manager is undefined?"); + // console.log("Global manager is undefined?"); return; } let fileDOMManager = this.globalManager.getFileManager(sourcePath); @@ -3151,7 +3285,7 @@ ${editor.getDoc().getSelection()}`); // if the file is being removed from view. elementMarkdownRenderer.onunload = () => { if (fileDOMManager && fileStillInView(sourcePath) === false) { - console.debug("File not in any markdown leaf. Removing region from dom manager."); + // console.debug("File not in any markdown leaf. Removing region from dom manager.") fileDOMManager.removeRegion(regionKey); } }; @@ -3182,4 +3316,4 @@ function renderMarkdownFromLines(mdLines, sourcePath) { } module.exports = MultiColumnMarkdown; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9yZWdpb25TZXR0aW5ncy50cyIsInNyYy91dGlsaXRpZXMvc2V0dGluZ3NQYXJzZXIudHMiLCJzcmMvdXRpbGl0aWVzL3RleHRQYXJzZXIudHMiLCJzcmMvdXRpbGl0aWVzL3V0aWxzLnRzIiwic3JjL3V0aWxpdGllcy9lbGVtZW50UmVuZGVyVHlwZVBhcnNlci50cyIsInNyYy9kb21fbWFuYWdlci9kb21PYmplY3QudHMiLCJzcmMvdXRpbGl0aWVzL2Nzc0RlZmluaXRpb25zLnRzIiwic3JjL2RvbV9tYW5hZ2VyL3JlZ2lvbmFsX21hbmFnZXJzL3JlZ2lvbk1hbmFnZXIudHMiLCJzcmMvZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvc3RhbmRhcmRNdWx0aUNvbHVtblJlZ2lvbk1hbmFnZXIudHMiLCJzcmMvZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvc2luZ2xlQ29sdW1uUmVnaW9uTWFuYWdlci50cyIsInNyYy9kb21fbWFuYWdlci9yZWdpb25hbF9tYW5hZ2Vycy9hdXRvTGF5b3V0UmVnaW9uTWFuYWdlci50cyIsInNyYy9kb21fbWFuYWdlci9yZWdpb25hbF9tYW5hZ2Vycy9yZWdpb25NYW5hZ2VyQ29udGFpbmVyLnRzIiwic3JjL2RvbV9tYW5hZ2VyL2RvbU1hbmFnZXIudHMiLCJzcmMvbGl2ZV9wcmV2aWV3L21jbV9saXZlUHJldmlld193aWRnZXQudHMiLCJzcmMvbGl2ZV9wcmV2aWV3L2NtNl9saXZlUHJldmlldy50cyIsInNyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xyXG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcclxuICAgICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xyXG4gICAgfVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcclxuICAgIGlmIChyZWNlaXZlciA9PT0gbnVsbCB8fCAodHlwZW9mIHJlY2VpdmVyICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiByZWNlaXZlciAhPT0gXCJmdW5jdGlvblwiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO1xyXG4gICAgcmV0dXJuIHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgPT09IHN0YXRlIDogc3RhdGUuaGFzKHJlY2VpdmVyKTtcclxufVxyXG4iLCIvKlxuICogRmlsZW5hbWU6IG11bHRpLWNvbHVtbi1tYXJrZG93bi9zcmMvcmVnaW9uU2V0dGluZ3MudHNcbiAqIENyZWF0ZWQgRGF0ZTogVHVlc2RheSwgRmVicnVhcnkgMXN0IDIwMjIsIDEyOjIzOjUzIHBtXG4gKiBBdXRob3I6IENhbWVyb24gUm9iaW5zb25cbiAqIFxuICogQ29weXJpZ2h0IChjKSAyMDIyIENhbWVyb24gUm9iaW5zb25cbiAqL1xuXG5leHBvcnQgZW51bSBCb3JkZXJPcHRpb24ge1xuICAgIGVuYWJsZWQsXG4gICAgb24sXG4gICAgdHJ1ZSxcbiAgICBkaXNhYmxlZCxcbiAgICBvZmYsXG4gICAgZmFsc2Vcbn1cblxuZXhwb3J0IGVudW0gU2hhZG93T3B0aW9uIHtcbiAgICBlbmFibGVkLFxuICAgIG9uLFxuICAgIHRydWUsXG4gICAgZGlzYWJsZWQsXG4gICAgb2ZmLFxuICAgIGZhbHNlXG59XG5cbmV4cG9ydCBlbnVtIENvbHVtbkxheW91dCB7IFxuICAgIHN0YW5kYXJkLFxuICAgIGxlZnQsXG4gICAgZmlyc3QsXG4gICAgY2VudGVyLFxuICAgIG1pZGRsZSxcbiAgICBzZWNvbmQsXG4gICAgcmlnaHQsXG4gICAgdGhpcmQsXG4gICAgbGFzdFxufTtcblxuZXhwb3J0IGVudW0gU2luZ2xlQ29sdW1uU2l6ZSB7XG4gICAgc21hbGwsXG4gICAgbWVkaXVtLFxuICAgIGxhcmdlXG59XG5cbmV4cG9ydCBlbnVtIENvbnRlbnRPdmVyZmxvd1R5cGUge1xuICAgIHNjcm9sbCxcbiAgICBoaWRkZW5cbn1cblxuZXhwb3J0IHR5cGUgTXVsdGlDb2x1bW5TZXR0aW5ncyA9IHtcbiAgICBudW1iZXJPZkNvbHVtbnM6IG51bWJlcixcbiAgICBjb2x1bW5MYXlvdXQ6IENvbHVtbkxheW91dCxcbiAgICBkcmF3Qm9yZGVyOiBib29sZWFuLFxuICAgIGRyYXdTaGFkb3c6IGJvb2xlYW4sXG4gICAgYXV0b0xheW91dDogYm9vbGVhblxuICAgIGNvbHVtblNpemU6IFNpbmdsZUNvbHVtblNpemUsXG4gICAgY29sdW1uUG9zaXRpb246IENvbHVtbkxheW91dCxcbiAgICBjb2x1bW5TcGFjaW5nOiBzdHJpbmcsXG4gICAgY29udGVudE92ZXJmbG93OiBDb250ZW50T3ZlcmZsb3dUeXBlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0TXVsdGlDb2x1bW5TZXR0aW5ncygpOiBNdWx0aUNvbHVtblNldHRpbmdzIHtcblxuICAgIHJldHVybiB7XG4gICAgICAgIG51bWJlck9mQ29sdW1uczogMixcbiAgICAgICAgY29sdW1uTGF5b3V0OiBDb2x1bW5MYXlvdXQuc3RhbmRhcmQsXG4gICAgICAgIGRyYXdCb3JkZXI6IHRydWUsXG4gICAgICAgIGRyYXdTaGFkb3c6IHRydWUsXG4gICAgICAgIGF1dG9MYXlvdXQ6IGZhbHNlLFxuICAgICAgICBjb2x1bW5TaXplOiBTaW5nbGVDb2x1bW5TaXplLm1lZGl1bSxcbiAgICAgICAgY29sdW1uUG9zaXRpb246IENvbHVtbkxheW91dC5zdGFuZGFyZCxcbiAgICAgICAgY29sdW1uU3BhY2luZzogXCJcIixcbiAgICAgICAgY29udGVudE92ZXJmbG93OiBDb250ZW50T3ZlcmZsb3dUeXBlLnNjcm9sbFxuICAgIH1cbn0iLCIvKipcbiAqIEZpbGU6IC9zcmMvdXRpbGl0aWVzL3NldHRpbmdzUGFyc2VyLnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAqIENyZWF0ZWQgRGF0ZTogRnJpZGF5LCBKdW5lIDNyZCAyMDIyLCA4OjE2IHBtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAqIEF1dGhvcjogQ2FtZXJvbiBSb2JpbnNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAqIENvcHlyaWdodCAoYykgMjAyMiBDYW1lcm9uIFJvYmluc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAqL1xuXG5pbXBvcnQgeyBNdWx0aUNvbHVtblNldHRpbmdzLCBDb2x1bW5MYXlvdXQsIEJvcmRlck9wdGlvbiwgU2hhZG93T3B0aW9uLCBnZXREZWZhdWx0TXVsdGlDb2x1bW5TZXR0aW5ncywgU2luZ2xlQ29sdW1uU2l6ZSwgQ29udGVudE92ZXJmbG93VHlwZSB9IGZyb20gXCIuLi9yZWdpb25TZXR0aW5nc1wiO1xuXG4vKipcbiAqIEhlcmUgd2UgZGVmaW5lIGFsbCBvZiB0aGUgdmFsaWQgc2V0dGluZ3Mgc3RyaW5ncyB0aGF0IHRoZSB1c2VyIGNhbiBlbnRlciBmb3IgZWFjaCBzZXR0aW5nIHR5cGUuXG4gKiBUaGUgc3RyaW5ncyBhcmUgdGhlbiBtYXBwZWQgdHdpY2UsIGZpcnN0IHRvIGEgdmFsaWQgcmVnZXggc3RyaW5nIHRoYXQgc2VhcmNoZXMgZm9yIHRoZSBzZXR0aW5nXG4gKiBuYW1lLCBpZ25vcmluZyBhbGwgZXh0cmEgc3BhY2VzIGFuZCBsZXR0ZXIgY2FzZSwgYW5kIHRoZW4gbWFwZWQgdG8gYSBSZWdFeCBvYmplY3QgdG8gYmUgdXNlZCBcbiAqIHdoZW4gcGFyc2luZy5cbiAqL1xuY29uc3QgQ09MX1BPU0lUSU9OX09QVElPTl9TVFJTOiBzdHJpbmdbXSA9IFtcbiAgICBcImNvbHVtbiBwb3NpdGlvblwiLFxuICAgIFwiY29sIHBvc2l0aW9uXCIsXG4gICAgXCJjb2x1bW4gbG9jYXRpb25cIixcbiAgICBcImNvbCBsb2NhdGlvblwiLFxuICAgIFwic2luZ2xlIGNvbHVtbiBsb2NhdGlvblwiLFxuICAgIFwic2luZ2xlIGNvbHVtbiBwb3NpdGlvblwiLFxuXTtcbmNvbnN0IENPTF9QT1NJVElPTl9SRUdFWF9BUlI6IFJlZ0V4cFtdID0gQ09MX1BPU0lUSU9OX09QVElPTl9TVFJTLm1hcChjb252ZXJ0U3RyaW5nVG9TZXR0aW5nc1JlZ2V4KS5tYXAoKHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAodmFsdWUsIFwiaVwiKTtcbn0pO1xuXG5jb25zdCBDT0xfU0laRV9PUFRJT05fU1RSUzogc3RyaW5nW10gPSBbXG4gICAgXCJjb2x1bW4gc2l6ZVwiLFxuICAgIFwiY29sdW1uIHdpZHRoXCIsXG4gICAgXCJjb2wgc2l6ZVwiLFxuICAgIFwiY29sIHdpZHRoXCIsXG4gICAgXCJzaW5nbGUgY29sdW1uIHNpemVcIixcbiAgICBcInNpbmdsZSBjb2wgc2l6ZVwiLFxuICAgIFwic2luZ2xlIGNvbHVtbiB3aWR0aFwiLFxuICAgIFwic2luZ2xlIGNvbCB3aWR0aFwiXG5dO1xuY29uc3QgQ09MX1NJWkVfT1BUSU9OX1JFR0VYX0FSUjogUmVnRXhwW10gPSBDT0xfU0laRV9PUFRJT05fU1RSUy5tYXAoY29udmVydFN0cmluZ1RvU2V0dGluZ3NSZWdleCkubWFwKCh2YWx1ZSkgPT4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbHVlLCBcImlcIik7XG59KTtcblxuY29uc3QgTlVNQkVSX09GX0NPTFVNTlNfU1RSUyA9IFtcbiAgICBcIm51bWJlciBvZiBjb2x1bW5zXCJcbl1cbmNvbnN0IE5VTUJFUl9PRl9DT0xVTU5TX1JFR0VYX0FSUjogUmVnRXhwW10gPSBOVU1CRVJfT0ZfQ09MVU1OU19TVFJTLm1hcChjb252ZXJ0U3RyaW5nVG9TZXR0aW5nc1JlZ2V4KS5tYXAoKHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAodmFsdWUsIFwiaVwiKTtcbn0pO1xuXG5jb25zdCBMQVJHRVNUX0NPTFVNTl9TVFJTID0gW1xuICAgIFwibGFyZ2VzdCBjb2x1bW5cIlxuXVxuY29uc3QgTEFSR0VTVF9DT0xVTU5fUkVHRVhfQVJSOiBSZWdFeHBbXSA9IExBUkdFU1RfQ09MVU1OX1NUUlMubWFwKGNvbnZlcnRTdHJpbmdUb1NldHRpbmdzUmVnZXgpLm1hcCgodmFsdWUpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cCh2YWx1ZSwgXCJpXCIpO1xufSk7XG5cbmNvbnN0IERSQVdfQk9SREVSX1NUUlMgPSBbXG4gICAgXCJib3JkZXJcIlxuXVxuY29uc3QgRFJBV19CT1JERVJfUkVHRVhfQVJSOiBSZWdFeHBbXSA9IERSQVdfQk9SREVSX1NUUlMubWFwKGNvbnZlcnRTdHJpbmdUb1NldHRpbmdzUmVnZXgpLm1hcCgodmFsdWUpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cCh2YWx1ZSwgXCJpXCIpO1xufSk7XG5cbmNvbnN0IERSQVdfU0hBRE9XX1NUUlMgPSBbXG4gICAgXCJzaGFkb3dcIlxuXVxuY29uc3QgRFJBV19TSEFET1dfUkVHRVhfQVJSOiBSZWdFeHBbXSA9IERSQVdfU0hBRE9XX1NUUlMubWFwKGNvbnZlcnRTdHJpbmdUb1NldHRpbmdzUmVnZXgpLm1hcCgodmFsdWUpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cCh2YWx1ZSwgXCJpXCIpO1xufSk7XG5cbmNvbnN0IEFVVE9fTEFZT1VUX1NFVFRJTkdfU1RSUyA9IFtcbiAgICBcImF1dG8gbGF5b3V0XCJcbl1cbmNvbnN0IEFVVE9fTEFZT1VUX1JFR0VYX0FSUjogUmVnRXhwW10gPSBBVVRPX0xBWU9VVF9TRVRUSU5HX1NUUlMubWFwKGNvbnZlcnRTdHJpbmdUb1NldHRpbmdzUmVnZXgpLm1hcCgodmFsdWUpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cCh2YWx1ZSwgXCJpXCIpO1xufSk7XG5cbmNvbnN0IENPTFVNTl9TUEFDSU5HX1JFR0VYX0FSUjogUmVnRXhwW10gPSBbXG4gICAgXCJjb2x1bW4gc3BhY2luZ1wiLFxuXS5tYXAoKHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAoY29udmVydFN0cmluZ1RvU2V0dGluZ3NSZWdleCh2YWx1ZSksIFwiaVwiKTtcbn0pO1xuXG5jb25zdCBDT05URU5UX09WRVJGTE9XX1JFR0VYX0FSUjogUmVnRXhwW10gPSBbXG4gICAgXCJvdmVyZmxvd1wiLFxuICAgIFwiY29udGVudCBvdmVyZmxvd1wiXG5dLm1hcCgodmFsdWUpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChjb252ZXJ0U3RyaW5nVG9TZXR0aW5nc1JlZ2V4KHZhbHVlKSwgXCJpXCIpXG59KVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gc2VhcmNoZXMgdGhlIHNldHRpbmdzIHN0cmluZyB0aHJvdWdoIGVhY2ggcmVnZXggb3B0aW9uLiBJZiBvbmUgb2YgdGhlIHJlZ2V4XG4gKiB2YWx1ZXMgbWF0Y2gsIGl0IHJldHVybnMgdGhlIGZpcnN0IGdyb3VwIGZvdW5kIGJ5IHRoZSByZWdleC4gVGhpcyBpcyBkZXBlbmRlZCBvbiBwcm9wZXJcbiAqIHJlZ2V4IGZvcm1hdHRpbmcgd2hpY2ggaXMgZG9uZSBieSB0aGUgY29udmVydFN0cmluZ1RvU2V0dGluZ3NSZWdleCBmdW5jdGlvbiBkZWZpbmVkIGJlbG93LlxuICogXG4gKiBAcGFyYW0gc2V0dGluZ3NTdHJpbmcgVGhlIHZhbHVlIHRoYXQgbWF5IG1hdGNoIG9uZSBvZiB0aGUgc2V0dGluZyBvcHRpb25zLlxuICogQHBhcmFtIHZhbGlkU2V0dGluZ0Zvcm1hdFJlZ0V4IFRoZSBzZXR0aW5ncyBvcHRpb25zIHRocm91Z2ggd2hpY2ggdG8gY2hlY2sgYWxsIG9wdGlvbnMuIElmIG9uZSBvZiB0aGVzZSByZWdleCBcbiAqIHZhbHVlcyBtYXRjaCBvbiB0aGUgc3RyaW5nIHdlIGJyZWFrIGZyb20gdGhlIGxvb3AgcmV0dXJuaW5nIHRoZSBmb3VuZCB2YWx1ZS5cbiAqIFxuICogQHJldHVybnMgdGhlIHVzZXIgZW50ZXJlZCBkYXRhIGlmIHRoZSBzZXR0aW5nIGlzIGEgbWF0Y2gsIG9yIG51bGwgaWYgbm9uIG9mIHRoZSBvcHRpb25zIG1hdGNoZWQuXG4gKi9cbmZ1bmN0aW9uIGdldFNldHRpbmdzRGF0YUZyb21LZXlzKHNldHRpbmdzU3RyaW5nOiBzdHJpbmcsIHZhbGlkU2V0dGluZ0Zvcm1hdFJlZ0V4OiBSZWdFeHBbXSk6IHN0cmluZyB8IG51bGwge1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWxpZFNldHRpbmdGb3JtYXRSZWdFeC5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgIGxldCByZWdleFNlYXJjaERhdGEgPSB2YWxpZFNldHRpbmdGb3JtYXRSZWdFeFtpXS5leGVjKHNldHRpbmdzU3RyaW5nKVxuICAgICAgICBpZihyZWdleFNlYXJjaERhdGEgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiByZWdleFNlYXJjaERhdGFbMV0udHJpbSgpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2luZ2xlQ29sdW1uU2V0dGluZ3Moc2V0dGluZ3NTdHI6IHN0cmluZywgb3JpZ2luYWxTZXR0aW5nczogTXVsdGlDb2x1bW5TZXR0aW5ncyk6IE11bHRpQ29sdW1uU2V0dGluZ3Mge1xuXG4gICAgbGV0IHNldHRpbmdzTGluZXMgPSBzZXR0aW5nc1N0ci5zcGxpdChcIlxcblwiKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNldHRpbmdzTGluZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICBsZXQgc2V0dGluZ3NMaW5lID0gc2V0dGluZ3NMaW5lc1tpXTtcbiAgICAgICAgbGV0IHNldHRpbmdzRGF0YSA9IGdldFNldHRpbmdzRGF0YUZyb21LZXlzKHNldHRpbmdzTGluZSwgQ09MX1BPU0lUSU9OX1JFR0VYX0FSUik7XG4gICAgICAgIGlmIChzZXR0aW5nc0RhdGEgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgb3JpZ2luYWxTZXR0aW5ncy5jb2x1bW5Qb3NpdGlvbiA9IHBhcnNlRm9yU2luZ2xlQ29sdW1uTG9jYXRpb24oc2V0dGluZ3NEYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldHRpbmdzRGF0YSA9IGdldFNldHRpbmdzRGF0YUZyb21LZXlzKHNldHRpbmdzTGluZSwgQ09MX1NJWkVfT1BUSU9OX1JFR0VYX0FSUik7XG4gICAgICAgIGlmIChzZXR0aW5nc0RhdGEgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgb3JpZ2luYWxTZXR0aW5ncy5jb2x1bW5TaXplID0gcGFyc2VGb3JTaW5nbGVDb2x1bW5TaXplKHNldHRpbmdzRGF0YSlcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBvcmlnaW5hbFNldHRpbmdzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb2x1bW5TZXR0aW5ncyhzZXR0aW5nc1N0cjogc3RyaW5nKTogTXVsdGlDb2x1bW5TZXR0aW5ncyB7XG5cbiAgICBsZXQgcGFyc2VkU2V0dGluZ3MgPSBnZXREZWZhdWx0TXVsdGlDb2x1bW5TZXR0aW5ncygpO1xuXG4gICAgbGV0IHNldHRpbmdzTGluZXMgPSBzZXR0aW5nc1N0ci5zcGxpdChcIlxcblwiKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dGluZ3NMaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgc2V0dGluZ3NMaW5lID0gc2V0dGluZ3NMaW5lc1tpXTtcblxuICAgICAgICBsZXQgc2V0dGluZ3NEYXRhID0gZ2V0U2V0dGluZ3NEYXRhRnJvbUtleXMoc2V0dGluZ3NMaW5lLCBOVU1CRVJfT0ZfQ09MVU1OU19SRUdFWF9BUlIpO1xuICAgICAgICBpZiAoc2V0dGluZ3NEYXRhICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIGxldCBudW1PZkNvbHMgPSBwYXJzZUludChzZXR0aW5nc0RhdGEpXG4gICAgICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKG51bU9mQ29scykgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKG51bU9mQ29scyA+PSAxICYmIG51bU9mQ29scyA8PSAzKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZFNldHRpbmdzLm51bWJlck9mQ29sdW1ucyA9IG51bU9mQ29scztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXR0aW5nc0RhdGEgPSBnZXRTZXR0aW5nc0RhdGFGcm9tS2V5cyhzZXR0aW5nc0xpbmUsIExBUkdFU1RfQ09MVU1OX1JFR0VYX0FSUilcbiAgICAgICAgaWYgKHNldHRpbmdzRGF0YSAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICBsZXQgdXNlckRlZkxheW91dDogQ29sdW1uTGF5b3V0ID0gKDxhbnk+Q29sdW1uTGF5b3V0KVtzZXR0aW5nc0RhdGFdO1xuICAgICAgICAgICAgaWYgKHVzZXJEZWZMYXlvdXQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHBhcnNlZFNldHRpbmdzLmNvbHVtbkxheW91dCA9IHVzZXJEZWZMYXlvdXQ7XG4gICAgICAgICAgICAgICAgcGFyc2VkU2V0dGluZ3MuY29sdW1uUG9zaXRpb24gPSB1c2VyRGVmTGF5b3V0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0dGluZ3NEYXRhID0gZ2V0U2V0dGluZ3NEYXRhRnJvbUtleXMoc2V0dGluZ3NMaW5lLCBEUkFXX0JPUkRFUl9SRUdFWF9BUlIpXG4gICAgICAgIGlmIChzZXR0aW5nc0RhdGEgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgbGV0IGlzQm9yZGVyRHJhd246IEJvcmRlck9wdGlvbiA9ICg8YW55PkJvcmRlck9wdGlvbilbc2V0dGluZ3NEYXRhXTtcbiAgICAgICAgICAgIGlmIChpc0JvcmRlckRyYXduICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGlzQm9yZGVyRHJhd24pIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAoQm9yZGVyT3B0aW9uLmRpc2FibGVkKTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAoQm9yZGVyT3B0aW9uLm9mZik6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgKEJvcmRlck9wdGlvbi5mYWxzZSk6XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZWRTZXR0aW5ncy5kcmF3Qm9yZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXR0aW5nc0RhdGEgPSBnZXRTZXR0aW5nc0RhdGFGcm9tS2V5cyhzZXR0aW5nc0xpbmUsIERSQVdfU0hBRE9XX1JFR0VYX0FSUilcbiAgICAgICAgaWYgKHNldHRpbmdzRGF0YSAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICBsZXQgaXNTaGFkb3dEcmF3bjogU2hhZG93T3B0aW9uID0gKDxhbnk+U2hhZG93T3B0aW9uKVtzZXR0aW5nc0RhdGFdO1xuICAgICAgICAgICAgaWYgKGlzU2hhZG93RHJhd24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoaXNTaGFkb3dEcmF3bikge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIChTaGFkb3dPcHRpb24uZGlzYWJsZWQpOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIChTaGFkb3dPcHRpb24ub2ZmKTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAoU2hhZG93T3B0aW9uLmZhbHNlKTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFNldHRpbmdzLmRyYXdTaGFkb3cgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNldHRpbmdzRGF0YSA9IGdldFNldHRpbmdzRGF0YUZyb21LZXlzKHNldHRpbmdzTGluZSwgQVVUT19MQVlPVVRfUkVHRVhfQVJSKVxuICAgICAgICBpZiAoc2V0dGluZ3NEYXRhICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIGlmKHNldHRpbmdzRGF0YSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICBwYXJzZWRTZXR0aW5ncy5hdXRvTGF5b3V0ID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0dGluZ3NEYXRhID0gZ2V0U2V0dGluZ3NEYXRhRnJvbUtleXMoc2V0dGluZ3NMaW5lLCBDT0xVTU5fU1BBQ0lOR19SRUdFWF9BUlIpO1xuICAgICAgICBpZihzZXR0aW5nc0RhdGEgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgbGV0IHBhcnNlZCA9IGdldExlbmd0aFVuaXQoc2V0dGluZ3NEYXRhLnRyaW0oKSk7XG4gICAgICAgICAgICBsZXQgc3BhY2luZ1N0ciA9IFwiXCI7XG5cbiAgICAgICAgICAgIGlmKHBhcnNlZC5pc1ZhbGlkKSB7XG5cbiAgICAgICAgICAgICAgICBsZXQgbm9Vbml0c1N0ciA9IHNldHRpbmdzRGF0YS5yZXBsYWNlKHBhcnNlZC51bml0U3RyLCBcIlwiKS50cmltKCk7XG4gICAgICAgICAgICAgICAgbGV0IG5vVW5pdHNOdW0gPSBwYXJzZUludChub1VuaXRzU3RyKTtcbiAgICAgICAgICAgICAgICBpZihpc05hTihub1VuaXRzTnVtKSA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgICAgICAgICBzcGFjaW5nU3RyID0gYCR7bm9Vbml0c1N0cn0ke3BhcnNlZC51bml0U3RyfWBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICBsZXQgbm9Vbml0c051bSA9IHBhcnNlSW50KHNldHRpbmdzRGF0YS50cmltKCkpO1xuICAgICAgICAgICAgICAgIGlmKGlzTmFOKG5vVW5pdHNOdW0pID09PSBmYWxzZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHNwYWNpbmdTdHIgPSBgJHtub1VuaXRzTnVtfXB0YFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyc2VkU2V0dGluZ3MuY29sdW1uU3BhY2luZyA9IHNwYWNpbmdTdHI7XG4gICAgICAgIH1cblxuICAgICAgICBzZXR0aW5nc0RhdGEgPSBnZXRTZXR0aW5nc0RhdGFGcm9tS2V5cyhzZXR0aW5nc0xpbmUsIENPTlRFTlRfT1ZFUkZMT1dfUkVHRVhfQVJSKTtcbiAgICAgICAgaWYoc2V0dGluZ3NEYXRhICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIGxldCBvdmVyZmxvd1R5cGUgPSBDb250ZW50T3ZlcmZsb3dUeXBlLnNjcm9sbDtcblxuICAgICAgICAgICAgc2V0dGluZ3NEYXRhID0gc2V0dGluZ3NEYXRhLnRvTG93ZXJDYXNlKCkudHJpbSgpO1xuICAgICAgICAgICAgaWYoc2V0dGluZ3NEYXRhID09PSBcImhpZGRlblwiKSB7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3dUeXBlID0gQ29udGVudE92ZXJmbG93VHlwZS5oaWRkZW47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHBhcnNlZFNldHRpbmdzLmNvbnRlbnRPdmVyZmxvdyA9IG92ZXJmbG93VHlwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBwYXJzZWRTZXR0aW5ncztcbn1cblxuZnVuY3Rpb24gZ2V0TGVuZ3RoVW5pdChsZW5ndGhTdHI6IHN0cmluZyk6IHsgaXNWYWxpZDogYm9vbGVhbiwgdW5pdFN0cjogc3RyaW5nIH0ge1xuXG4gICAgbGV0IGxhc3RDaGFyID0gbGVuZ3RoU3RyLnNsaWNlKGxlbmd0aFN0ci5sZW5ndGggLSAxKTtcbiAgICBsZXQgbGFzdFR3b0NoYXJzID0gbGVuZ3RoU3RyLnNsaWNlKGxlbmd0aFN0ci5sZW5ndGggLSAyKTtcblxuICAgIGxldCB1bml0U3RyID0gXCJcIlxuICAgIGxldCBpc1ZhbGlkID0gZmFsc2U7XG4gICAgaWYobGFzdENoYXIgPT09IFwiJVwiKSB7XG4gICAgICAgIHVuaXRTdHIgPSBsYXN0Q2hhcjtcbiAgICAgICAgaXNWYWxpZCA9IHRydWU7XG4gICAgfVxuICAgIGVsc2UgaWYobGFzdFR3b0NoYXJzID09PSBcImNtXCIgfHxcbiAgICAgICAgICAgIGxhc3RUd29DaGFycyA9PT0gXCJtbVwiIHx8XG4gICAgICAgICAgICBsYXN0VHdvQ2hhcnMgPT09IFwiaW5cIiB8fFxuICAgICAgICAgICAgbGFzdFR3b0NoYXJzID09PSBcInB4XCIgfHxcbiAgICAgICAgICAgIGxhc3RUd29DaGFycyA9PT0gXCJwdFwiIHx8XG4gICAgICAgICAgICBsYXN0VHdvQ2hhcnMgPT09IFwicGNcIiB8fFxuICAgICAgICAgICAgbGFzdFR3b0NoYXJzID09PSBcImVtXCIgfHxcbiAgICAgICAgICAgIGxhc3RUd29DaGFycyA9PT0gXCJleFwiIHx8XG4gICAgICAgICAgICBsYXN0VHdvQ2hhcnMgPT09IFwiY2hcIiB8fFxuICAgICAgICAgICAgbGFzdFR3b0NoYXJzID09PSBcInZ3XCIgfHxcbiAgICAgICAgICAgIGxhc3RUd29DaGFycyA9PT0gXCJ2aFwiICkge1xuICAgICAgICB1bml0U3RyID0gbGFzdFR3b0NoYXJzO1xuICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBpc1ZhbGlkOiBpc1ZhbGlkLCB1bml0U3RyOiB1bml0U3RyIH1cbn1cblxuY29uc3QgQ09ERUJMT0NLX1JFR0lPTl9JRF9SRUdFWF9TVFJTID0gW1xuICAgIFwiaWRcIixcbiAgICBcInJlZ2lvbiBpZFwiXG5dXG5jb25zdCBDT0RFQkxPQ0tfUkVHSU9OX0lEX1JFR0VYX0FSUjogUmVnRXhwW10gPSBDT0RFQkxPQ0tfUkVHSU9OX0lEX1JFR0VYX1NUUlMubWFwKGNvbnZlcnRTdHJpbmdUb1NldHRpbmdzUmVnZXgpLm1hcCgodmFsdWUpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cCh2YWx1ZSwgXCJpXCIpO1xufSk7XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdGFydFJlZ2lvbkNvZGVCbG9ja0lEKHNldHRpbmdzU3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuXG4gICAgbGV0IGNvZGVCbG9ja1JlZ2lvbklEID0gXCJcIlxuICAgIGxldCBzZXR0aW5nc0xpbmVzID0gc2V0dGluZ3NTdHIuc3BsaXQoXCJcXG5cIik7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNldHRpbmdzTGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IHNldHRpbmdzTGluZSA9IHNldHRpbmdzTGluZXNbaV07XG5cbiAgICAgICAgbGV0IHNldHRpbmdzRGF0YSA9IGdldFNldHRpbmdzRGF0YUZyb21LZXlzKHNldHRpbmdzTGluZSwgQ09ERUJMT0NLX1JFR0lPTl9JRF9SRUdFWF9BUlIpO1xuICAgICAgICBpZiAoc2V0dGluZ3NEYXRhICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIGNvZGVCbG9ja1JlZ2lvbklEID0gc2V0dGluZ3NEYXRhXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29kZUJsb2NrUmVnaW9uSUQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlRm9yU2luZ2xlQ29sdW1uTG9jYXRpb24obG9jYXRpb25TdHJpbmc6IHN0cmluZyk6IENvbHVtbkxheW91dHtcblxuICAgIHN3aXRjaCAobG9jYXRpb25TdHJpbmcudG9Mb3dlckNhc2UoKS50cmltKCkucmVwbGFjZShcIiBcIiwgXCJcIikpIHtcbiAgICAgICAgY2FzZSBcImxlZnRcIjpcbiAgICAgICAgY2FzZSBcImxlZnRzaWRlXCI6XG4gICAgICAgIGNhc2UgXCJsZWZ0bWFyZ2luXCI6XG4gICAgICAgIGNhc2UgXCJsZWZ0YWxpZ25cIjpcbiAgICAgICAgY2FzZSBcImxlZnRhbGlnbmVkXCI6XG4gICAgICAgIGNhc2UgXCJsZWZ0YWxpZ25lbWVudFwiOlxuICAgICAgICBjYXNlIFwiZmlyc3RcIjpcbiAgICAgICAgY2FzZSBcInN0YXJ0XCI6XG4gICAgICAgIGNhc2UgXCJiZWdpbm5pbmdcIjpcbiAgICAgICAgICAgIHJldHVybiBDb2x1bW5MYXlvdXQubGVmdFxuICAgICAgICBjYXNlIFwibWlkZGxlXCI6XG4gICAgICAgIGNhc2UgXCJtaWRkbGVhbGlnbmVkXCI6XG4gICAgICAgIGNhc2UgXCJtaWRkbGVhbGlnbm1lbnRcIjpcbiAgICAgICAgY2FzZSBcImNlbnRlclwiOlxuICAgICAgICBjYXNlIFwiY2VudGVyYWxpZ25lZFwiOlxuICAgICAgICBjYXNlIFwiY2VudGVyYWxpZ25tZW50XCI6XG4gICAgICAgIGNhc2UgXCJjZW50ZXJlZFwiOlxuICAgICAgICBjYXNlIFwic3RhbmRhcmRcIjpcbiAgICAgICAgICAgIHJldHVybiBDb2x1bW5MYXlvdXQuY2VudGVyXG4gICAgICAgIGNhc2UgXCJyaWdodFwiOlxuICAgICAgICBjYXNlIFwicmlnaHRzaWRlXCI6XG4gICAgICAgIGNhc2UgXCJyaWdodG1hcmdpblwiOlxuICAgICAgICBjYXNlIFwicmlnaHRhbGlnblwiOlxuICAgICAgICBjYXNlIFwicmlnaHRhbGlnbmVkXCI6XG4gICAgICAgIGNhc2UgXCJyaWdodGFsaWdubWVudFwiOlxuICAgICAgICBjYXNlIFwibGFzdFwiOlxuICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICByZXR1cm4gQ29sdW1uTGF5b3V0LnJpZ2h0XG4gICAgfVxuXG4gICAgcmV0dXJuIENvbHVtbkxheW91dC5jZW50ZXJcbn1cblxuZnVuY3Rpb24gcGFyc2VGb3JTaW5nbGVDb2x1bW5TaXplKHNpemVTdHJpbmc6IHN0cmluZyk6IFNpbmdsZUNvbHVtblNpemUge1xuXG4gICAgc3dpdGNoIChzaXplU3RyaW5nID0gc2l6ZVN0cmluZy50b0xvd2VyQ2FzZSgpLnRyaW0oKS5yZXBsYWNlKFwiIFwiLCBcIlwiKSkge1xuICAgICAgICBjYXNlIFwic21hbGxcIjpcbiAgICAgICAgY2FzZSBcInNtXCI6XG4gICAgICAgICAgICByZXR1cm4gU2luZ2xlQ29sdW1uU2l6ZS5zbWFsbDtcbiAgICAgICAgY2FzZSBcIm1lZGl1bVwiOlxuICAgICAgICBjYXNlIFwibWVkXCI6XG4gICAgICAgICAgICByZXR1cm4gU2luZ2xlQ29sdW1uU2l6ZS5tZWRpdW07XG4gICAgICAgIGNhc2UgXCJsYXJnZVwiOlxuICAgICAgICBjYXNlIFwibGdcIjpcbiAgICAgICAgICAgIHJldHVybiBTaW5nbGVDb2x1bW5TaXplLmxhcmdlO1xuICAgIH1cblxuICAgIHJldHVybiBTaW5nbGVDb2x1bW5TaXplLm1lZGl1bVxufVxuXG5mdW5jdGlvbiBjb252ZXJ0U3RyaW5nVG9TZXR0aW5nc1JlZ2V4KG9yaWdpbmFsU3RyaW5nOiBTdHJpbmcpOiBzdHJpbmcge1xuXG4gICAgb3JpZ2luYWxTdHJpbmcgPSBvcmlnaW5hbFN0cmluZy5yZXBsYWNlKFwiIFwiLCBcIiAqXCIpO1xuICAgIFxuICAgIGxldCByZWdleFN0cmluZyA9IGAoPzoke29yaWdpbmFsU3RyaW5nfSAqOiAqKSguKilgO1xuICAgIHJldHVybiByZWdleFN0cmluZztcbn0iLCIvKlxuICogRmlsZTogbXVsdGktY29sdW1uLW1hcmtkb3duL3NyYy9NdWx0aUNvbHVtblBhcnNlci50c1xuICogQ3JlYXRlZCBEYXRlOiBTYXR1cmRheSwgSmFudWFyeSAyMm5kIDIwMjIsIDY6MDI6NDYgcG1cbiAqIEF1dGhvcjogQ2FtZXJvbiBSb2JpbnNvblxuICogXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgQ2FtZXJvbiBSb2JpbnNvblxuICovXG5cbmltcG9ydCB7IHBhcnNlU3RhcnRSZWdpb25Db2RlQmxvY2tJRCB9IGZyb20gXCIuL3NldHRpbmdzUGFyc2VyXCI7XG5cbmNvbnN0IFNUQVJUX1JFR0VYX1NUUlMgPSBbXCI9PT0gKnN0YXJ0LW11bHRpLWNvbHVtbig6P1thLXpBLVowLTktX1xcXFxzXSopP1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIj09PSAqbXVsdGktY29sdW1uLXN0YXJ0KDo/W2EtekEtWjAtOS1fXFxcXHNdKik/XCJdXG5jb25zdCBTVEFSVF9SRUdFWF9BUlI6IFJlZ0V4cFtdID0gW107XG5mb3IobGV0IGkgPSAwOyBpIDwgU1RBUlRfUkVHRVhfU1RSUy5sZW5ndGg7IGkrKykge1xuICAgIFNUQVJUX1JFR0VYX0FSUi5wdXNoKG5ldyBSZWdFeHAoU1RBUlRfUkVHRVhfU1RSU1tpXSkpO1xufVxuXG5jb25zdCBTVEFSVF9SRUdFWF9TVFJTX1dIT0xFX0xJTkUgPSBbXCJePT09ICpzdGFydC1tdWx0aS1jb2x1bW4oOj9bYS16QS1aMC05LV9cXFxcc10qKT8kXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJePT09ICptdWx0aS1jb2x1bW4tc3RhcnQoOj9bYS16QS1aMC05LV9cXFxcc10qKT8kXCJdXG5jb25zdCBTVEFSVF9SRUdFWF9BUlJfV0hPTEVfTElORTogUmVnRXhwW10gPSBbXTtcbmZvcihsZXQgaSA9IDA7IGkgPCBTVEFSVF9SRUdFWF9TVFJTX1dIT0xFX0xJTkUubGVuZ3RoOyBpKyspIHtcbiAgICBTVEFSVF9SRUdFWF9BUlJfV0hPTEVfTElORS5wdXNoKG5ldyBSZWdFeHAoU1RBUlRfUkVHRVhfU1RSU19XSE9MRV9MSU5FW2ldKSk7XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRTdGFydFRhZyh0ZXh0OiBzdHJpbmcpOiB7IGZvdW5kOiBib29sZWFuLCBzdGFydFBvc2l0aW9uOiBudW1iZXIsIGVuZFBvc2l0aW9uOiBudW1iZXIsIG1hdGNoTGVuZ3RoOiBudW1iZXIgfSB7XG5cbiAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICBsZXQgc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgIGxldCBtYXRjaExlbmd0aCA9IDA7XG4gICAgZm9yKGxldCBpID0gMDsgaTwgU1RBUlRfUkVHRVhfQVJSLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgbGV0IHJlZ2V4RGF0YSA9IFNUQVJUX1JFR0VYX0FSUltpXS5leGVjKHRleHQpXG4gICAgICAgIGlmKHJlZ2V4RGF0YSAhPT0gbnVsbCAmJiByZWdleERhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHJlZ2V4RGF0YS5pbmRleFxuICAgICAgICAgICAgbWF0Y2hMZW5ndGggPSByZWdleERhdGFbMF0ubGVuZ3RoO1xuXG4gICAgICAgICAgICBsZXQgbGluZSA9IHRleHQuc2xpY2Uoc3RhcnRQb3NpdGlvbiwgc3RhcnRQb3NpdGlvbiArIG1hdGNoTGVuZ3RoKTtcbiAgICAgICAgICAgIGlmKFNUQVJUX1JFR0VYX0FSUl9XSE9MRV9MSU5FW2ldLnRlc3QobGluZSkpIHtcbiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgbGV0IGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiArIG1hdGNoTGVuZ3RoO1xuXG4gICAgcmV0dXJuIHsgZm91bmQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBtYXRjaExlbmd0aCB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zU3RhcnRUYWcodGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpbmRTdGFydFRhZyh0ZXh0KS5mb3VuZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTdGFydFRhZ1dpdGhJRCh0ZXh0OiBzdHJpbmcpOiB7aXNTdGFydFRhZzogYm9vbGVhbiwgaGFzS2V5OiBib29sZWFufSB7XG5cbiAgICBsZXQgc3RhcnRUYWdEYXRhID0gZmluZFN0YXJ0VGFnKHRleHQpO1xuICAgIGlmKHN0YXJ0VGFnRGF0YS5mb3VuZCA9PT0gdHJ1ZSkge1xuXG4gICAgICAgIGxldCBrZXkgPSBnZXRTdGFydFRhZ0tleSh0ZXh0KVxuICAgICAgICBpZihrZXkgPT09IG51bGwgfHwga2V5ID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4ge2lzU3RhcnRUYWc6IHRydWUsIGhhc0tleTogZmFsc2V9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7aXNTdGFydFRhZzogdHJ1ZSwgaGFzS2V5OiB0cnVlfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge2lzU3RhcnRUYWc6IGZhbHNlLCBoYXNLZXk6IGZhbHNlfTtcbn1cblxuY29uc3QgRU5EX1JFR0VYX1NUUlMgPSBbXCI9PT0gKmVuZC1tdWx0aS1jb2x1bW5cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiPT09ICptdWx0aS1jb2x1bW4tZW5kXCJdXG5jb25zdCBFTkRfUkVHRVhfQVJSOiBSZWdFeHBbXSA9IFtdO1xuZm9yKGxldCBpID0gMDsgaSA8IEVORF9SRUdFWF9TVFJTLmxlbmd0aDsgaSsrKSB7XG4gICAgRU5EX1JFR0VYX0FSUi5wdXNoKG5ldyBSZWdFeHAoRU5EX1JFR0VYX1NUUlNbaV0pKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRW5kVGFnKHRleHQ6IHN0cmluZyk6IHsgZm91bmQ6IGJvb2xlYW4sIHN0YXJ0UG9zaXRpb246IG51bWJlciwgZW5kUG9zaXRpb246IG51bWJlciwgbWF0Y2hMZW5ndGg6IG51bWJlciB9IHtcblxuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGxldCBzdGFydFBvc2l0aW9uID0gLTE7XG4gICAgZm9yKGxldCBpID0gMDsgaTwgRU5EX1JFR0VYX0FSUi5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgIGlmKEVORF9SRUdFWF9BUlJbaV0udGVzdCh0ZXh0KSkge1xuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHRleHQuc2VhcmNoKEVORF9SRUdFWF9TVFJTW2ldKVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgZW5kUG9zaXRpb24gPSAtMVxuICAgIGxldCBtYXRjaExlbmd0aCA9IDA7XG4gICAgZm9yKGxldCBpID0gMDsgaTwgRU5EX1JFR0VYX0FSUi5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgIGxldCByZWdleERhdGEgPSBFTkRfUkVHRVhfQVJSW2ldLmV4ZWModGV4dClcbiAgICAgICAgaWYocmVnZXhEYXRhICE9PSBudWxsICYmIHJlZ2V4RGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gcmVnZXhEYXRhLmluZGV4XG4gICAgICAgICAgICBtYXRjaExlbmd0aCA9IHJlZ2V4RGF0YVswXS5sZW5ndGg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyBtYXRjaExlbmd0aDtcblxuICAgIHJldHVybiB7IGZvdW5kLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgbWF0Y2hMZW5ndGggfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc0VuZFRhZyh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmluZEVuZFRhZyh0ZXh0KS5mb3VuZFxufVxuXG5jb25zdCBDT0xfUkVHRVhfU1RSUzogc3RyaW5nW10gPSBbXCI9PT0gKmNvbHVtbi1lbmQgKj09PVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPT09ICplbmQtY29sdW1uICo9PT1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj09PSAqY29sdW1uLWJyZWFrICo9PT1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj09PSAqYnJlYWstY29sdW1uICo9PT1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi0tLSAqY29sdW1uLWVuZCAqLS0tXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCItLS0gKmVuZC1jb2x1bW4gKi0tLVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiLS0tICpjb2x1bW4tYnJlYWsgKi0tLVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiLS0tICpicmVhay1jb2x1bW4gKi0tLVwiXTtcbmNvbnN0IENPTF9SRUdFWF9BUlI6IFJlZ0V4cFtdID0gW107XG5mb3IobGV0IGkgPSAwOyBpIDwgQ09MX1JFR0VYX1NUUlMubGVuZ3RoOyBpKyspIHtcbiAgICBDT0xfUkVHRVhfQVJSLnB1c2gobmV3IFJlZ0V4cChDT0xfUkVHRVhfU1RSU1tpXSkpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zQ29sRW5kVGFnKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgZm9yKGxldCBpID0gMDsgaTwgQ09MX1JFR0VYX0FSUi5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgIGlmKENPTF9SRUdFWF9BUlJbaV0udGVzdCh0ZXh0KSkge1xuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG59XG5cbmNvbnN0IENPTF9FTEVNRU5UX0lOTkVSX1RFWFRfUkVHRVhfU1RSUzogc3RyaW5nW10gPSBbXCI9ICpjb2x1bW4tZW5kICo9XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI9ICplbmQtY29sdW1uICo9XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI9ICpjb2x1bW4tYnJlYWsgKj1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj0gKmJyZWFrLWNvbHVtbiAqPVwiXVxuY29uc3QgQ09MX0VMRU1FTlRfSU5ORVJfVEVYVF9SRUdFWF9BUlI6IFJlZ0V4cFtdID0gW107XG5mb3IobGV0IGkgPSAwOyBpIDwgQ09MX0VMRU1FTlRfSU5ORVJfVEVYVF9SRUdFWF9TVFJTLmxlbmd0aDsgaSsrKSB7XG4gICAgQ09MX1JFR0VYX0FSUi5wdXNoKG5ldyBSZWdFeHAoQ09MX0VMRU1FTlRfSU5ORVJfVEVYVF9SRUdFWF9TVFJTW2ldKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZWxJbm5lclRleHRDb250YWluc0NvbEVuZFRhZyh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGZvcihsZXQgaSA9IDA7IGk8IENPTF9SRUdFWF9BUlIubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICBpZihDT0xfUkVHRVhfQVJSW2ldLnRlc3QodGV4dCkpIHtcbiAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xufVxuXG5jb25zdCBDT0xfU0VUVElOR1NfUkVHRVhfU1RSUyA9IFtcImBgYHNldHRpbmdzXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImBgYGNvbHVtbi1zZXR0aW5nc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJgYGBtdWx0aS1jb2x1bW4tc2V0dGluZ3NcIl07XG5jb25zdCBDT0xfU0VUVElOR1NfUkVHRVhfQVJSOiBSZWdFeHBbXSA9IFtdO1xuZm9yKGxldCBpID0gMDsgaSA8IENPTF9TRVRUSU5HU19SRUdFWF9TVFJTLmxlbmd0aDsgaSsrKSB7XG4gICAgQ09MX1NFVFRJTkdTX1JFR0VYX0FSUi5wdXNoKG5ldyBSZWdFeHAoQ09MX1NFVFRJTkdTX1JFR0VYX1NUUlNbaV0pKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc0NvbFNldHRpbmdzVGFnKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgZm9yKGxldCBpID0gMDsgaTwgQ09MX1NFVFRJTkdTX1JFR0VYX0FSUi5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgIGlmKENPTF9TRVRUSU5HU19SRUdFWF9BUlJbaV0udGVzdCh0ZXh0KSkge1xuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaW5kU2V0dGluZ3NDb2RlYmxvY2sodGV4dDogc3RyaW5nKTogeyBmb3VuZDogYm9vbGVhbiwgc3RhcnRQb3NpdGlvbjogbnVtYmVyLCBlbmRQb3NpdGlvbjogbnVtYmVyLCBtYXRjaExlbmd0aDogbnVtYmVyIH0ge1xuXG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgbGV0IHN0YXJ0UG9zaXRpb24gPSAtMTtcbiAgICBsZXQgZW5kUG9zaXRpb24gPSAtMVxuICAgIGxldCBtYXRjaExlbmd0aCA9IDA7XG4gICAgZm9yKGxldCBpID0gMDsgaTwgQ09MX1NFVFRJTkdTX1JFR0VYX0FSUi5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgIGxldCByZWdleERhdGEgPSBDT0xfU0VUVElOR1NfUkVHRVhfQVJSW2ldLmV4ZWModGV4dClcbiAgICAgICAgaWYocmVnZXhEYXRhICE9PSBudWxsICYmIHJlZ2V4RGF0YS5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSByZWdleERhdGEuaW5kZXhcbiAgICAgICAgICAgIG1hdGNoTGVuZ3RoID0gcmVnZXhEYXRhWzBdLmxlbmd0aDtcbiAgICAgICAgICAgIGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiArIG1hdGNoTGVuZ3RoO1xuXG4gICAgICAgICAgICBsZXQgcmVtYWluaW5nVGV4dCA9IHRleHQuc2xpY2UoZW5kUG9zaXRpb24pXG4gICAgICAgICAgICByZWdleERhdGEgPSBDT0RFQkxPQ0tfRU5EX1JFR0VYLmV4ZWMocmVtYWluaW5nVGV4dClcbiAgICAgICAgICAgIGlmKHJlZ2V4RGF0YSAhPT0gbnVsbCAmJiByZWdleERhdGEubGVuZ3RoID4gMCkge1xuXG4gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGVuZFBvc2l0aW9uICs9IHJlZ2V4RGF0YS5pbmRleCArIHJlZ2V4RGF0YVswXS5sZW5ndGggXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGZvdW5kLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgbWF0Y2hMZW5ndGggfTtcbn1cblxuY29uc3QgU1RBUlRfQ09ERUJMT0NLX1JFR0VYX0FSUjogUmVnRXhwW10gPSBbXG5cImBgYG11bHRpLWNvbHVtbi1zdGFydFwiLFxuXCJgYGBzdGFydC1tdWx0aS1jb2x1bW5cIlxuXS5tYXAoKHZhbCkgPT4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbCk7XG59KVxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRTdGFydENvZGVibG9jayh0ZXh0OiBzdHJpbmcpOiB7IGZvdW5kOiBib29sZWFuLCBzdGFydFBvc2l0aW9uOiBudW1iZXIsIGVuZFBvc2l0aW9uOiBudW1iZXIsIG1hdGNoTGVuZ3RoOiBudW1iZXIgfSB7XG5cbiAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICBsZXQgc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgIGxldCBlbmRQb3NpdGlvbiA9IC0xXG4gICAgbGV0IG1hdGNoTGVuZ3RoID0gMDtcbiAgICBmb3IobGV0IGkgPSAwOyBpPCBTVEFSVF9DT0RFQkxPQ0tfUkVHRVhfQVJSLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgbGV0IHJlZ2V4RGF0YSA9IFNUQVJUX0NPREVCTE9DS19SRUdFWF9BUlJbaV0uZXhlYyh0ZXh0KVxuICAgICAgICBpZihyZWdleERhdGEgIT09IG51bGwgJiYgcmVnZXhEYXRhLmxlbmd0aCA+IDApIHtcblxuICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHJlZ2V4RGF0YS5pbmRleFxuICAgICAgICAgICAgbWF0Y2hMZW5ndGggPSByZWdleERhdGFbMF0ubGVuZ3RoO1xuICAgICAgICAgICAgZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgbWF0Y2hMZW5ndGg7XG5cbiAgICAgICAgICAgIGxldCByZW1haW5pbmdUZXh0ID0gdGV4dC5zbGljZShlbmRQb3NpdGlvbilcbiAgICAgICAgICAgIHJlZ2V4RGF0YSA9IENPREVCTE9DS19FTkRfUkVHRVguZXhlYyhyZW1haW5pbmdUZXh0KVxuICAgICAgICAgICAgaWYocmVnZXhEYXRhICE9PSBudWxsICYmIHJlZ2V4RGF0YS5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgZW5kUG9zaXRpb24gKz0gcmVnZXhEYXRhLmluZGV4ICsgcmVnZXhEYXRhWzBdLmxlbmd0aCBcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBmb3VuZCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIG1hdGNoTGVuZ3RoIH07XG59XG5leHBvcnQgZnVuY3Rpb24gY29udGFpbnNTdGFydENvZGVCbG9jayh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmluZFN0YXJ0Q29kZWJsb2NrKHRleHQpLmZvdW5kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc1JlZ2lvblN0YXJ0KHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBjb250YWluc1N0YXJ0Q29kZUJsb2NrKHRleHQpIHx8IGNvbnRhaW5zU3RhcnRUYWcodGV4dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb3VudFN0YXJ0VGFncyhpbml0aWFsVGV4dDogc3RyaW5nKTogeyBudW1iZXJPZlRhZ3M6IG51bWJlciwga2V5czogc3RyaW5nW10gfSB7XG5cbiAgICBsZXQga2V5czogc3RyaW5nW10gPSBbXTtcbiAgICBsZXQgdGV4dCA9IGluaXRpYWxUZXh0XG4gICAgbGV0IHN0YXJ0VGFnRGF0YSA9IGZpbmRTdGFydFRhZyh0ZXh0KTtcbiAgICB3aGlsZShzdGFydFRhZ0RhdGEuZm91bmQpIHtcbiAgICAgICAgXG4gICAgICAgIC8vIFNsaWNlIG9mZiBldmVyeXRoaW5nIGJlZm9yZSB0aGUgdGFnXG4gICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKHN0YXJ0VGFnRGF0YS5zdGFydFBvc2l0aW9uKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogR2V0IGp1c3QgdGhlIHN0YXJ0IHRhZyBsaW5lIGFuZCB0aGVuIHNldCB0ZXh0IHRvIGV2ZXJ5dGhpbmcganVzdFxuICAgICAgICAgKiBhZnRlciB0aGUgc3RhcnQgdGFnLlxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IHRhZyA9IHRleHQuc3BsaXQoXCJcXG5cIilbMF07XG4gICAgICAgIHRleHQgPSB0ZXh0LnNsaWNlKDEpOyAvLyBUaGlzIG1vdmVzIHRoZSB0ZXh0IDEgY2hhcmFjdGVyIHNvIHdlIGRvbnQgbWF0Y2ggdGhlIHNhbWUgdGFnLlxuXG4gICAgICAgIC8vIFBhcnNlIG91dCB0aGUga2V5IGFuZCBhcHBlbmQgdG8gdGhlIGxpc3QuXG4gICAgICAgIGxldCBrZXkgPSBnZXRTdGFydFRhZ0tleSh0YWcpO1xuICAgICAgICBpZihrZXkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGtleSA9IFwiXCJcbiAgICAgICAgfVxuICAgICAgICBrZXlzLnB1c2goa2V5KTtcblxuICAgICAgICAvLyBTZWFyY2ggYWdhaW4gZm9yIGFub3RoZXIgdGFnIGJlZm9yZSBsb29waW5nLlxuICAgICAgICBzdGFydFRhZ0RhdGEgPSBmaW5kU3RhcnRUYWcodGV4dCk7XG4gICAgfVxuXG4gICAgdGV4dCA9IGluaXRpYWxUZXh0O1xuICAgIHN0YXJ0VGFnRGF0YSA9IGZpbmRTdGFydENvZGVibG9jayh0ZXh0KTtcbiAgICB3aGlsZShzdGFydFRhZ0RhdGEuZm91bmQpIHtcbiAgICAgICAgXG4gICAgICAgIGxldCBzZXR0aW5nc1RleHQgPSB0ZXh0LnNsaWNlKHN0YXJ0VGFnRGF0YS5zdGFydFBvc2l0aW9uLCBzdGFydFRhZ0RhdGEuZW5kUG9zaXRpb24pO1xuICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZShzdGFydFRhZ0RhdGEuZW5kUG9zaXRpb24pO1xuXG4gICAgICAgIGxldCBrZXkgPSBwYXJzZVN0YXJ0UmVnaW9uQ29kZUJsb2NrSUQoc2V0dGluZ3NUZXh0KTtcbiAgICAgICAgaWYoa2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICBrZXkgPSBcIlwiXG4gICAgICAgIH1cbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG5cbiAgICAgICAgLy8gU2VhcmNoIGFnYWluIGZvciBhbm90aGVyIHRhZyBiZWZvcmUgbG9vcGluZy5cbiAgICAgICAgc3RhcnRUYWdEYXRhID0gZmluZFN0YXJ0Q29kZWJsb2NrKHRleHQpO1xuICAgIH1cblxuICAgIHJldHVybiB7IG51bWJlck9mVGFnczoga2V5cy5sZW5ndGgsIGtleXMgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXJ0QmxvY2tPckNvZGVibG9ja0Fib3ZlTGluZShsaW5lc0Fib3ZlQXJyYXk6IHN0cmluZ1tdKTogeyBcbnN0YXJ0QmxvY2tLZXk6IHN0cmluZywgXG5saW5lc0Fib3ZlQXJyYXk6IHN0cmluZ1tdIH0gfCBudWxsIHtcblxuICAgIGxldCBzdGFydEJsb2NrID0gZ2V0U3RhcnRCbG9ja0Fib3ZlTGluZShsaW5lc0Fib3ZlQXJyYXkpO1xuICAgIGlmKHN0YXJ0QmxvY2sgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIHN0YXJ0QmxvY2s7XG4gICAgfVxuXG4gICAgbGV0IGNvZGVCbG9jayA9IGdldFN0YXJ0Q29kZUJsb2NrQWJvdmVMaW5lKGxpbmVzQWJvdmVBcnJheSlcbiAgICBpZihjb2RlQmxvY2sgIT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGNvZGVCbG9jaztcbiAgICB9XG4gICAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHdpbGwgZmlsdGVyIGEgc2V0IG9mIHN0cmluZ3MsIHJldHVybmluZyBhbGwgaXRlbXMgc3RhcnRpbmdcbiAqIGZyb20gdGhlIGNsb3Nlc3Qgb3BlbiBzdGFydCB0YWcgdGhyb3VnaCB0aGUgbGFzdCBpdGVtIGluIHRoZSBzZXQuIFxuICogXG4gKiBUaGUgZnVuY3Rpb24gZmlsdGVycyBvdXQgYWxsIGVuZCB0YWdzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBzdGFydCB0YWcgd2UgXG4gKiBmaW5kIGlzIHRoZSBwcm9wZXIgc3RhcnQgdGFnIGZvciB0aGUgbGlzdCBzZW50LiBcbiAqIEBwYXJhbSBsaW5lc0Fib3ZlQXJyYXkgXG4gKiBAcmV0dXJucyBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXJ0QmxvY2tBYm92ZUxpbmUobGluZXNBYm92ZUFycmF5OiBzdHJpbmdbXSk6IHsgc3RhcnRCbG9ja0tleTogc3RyaW5nLCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNBYm92ZUFycmF5OiBzdHJpbmdbXSB9IHwgbnVsbCB7XG5cbiAgICAvLyBSZWR1Y2UgdGhlIGFycmF5IGRvd24gaW50byBhIHNpbmdsZSBzdHJpbmcgc28gdGhhdCB3ZSBjYW5cbiAgICAvLyBlYXNpbHkgUmVnRXggb3ZlciB0aGUgc3RyaW5nIGFuZCBmaW5kIHRoZSBpbmRpY2llcyB3ZSdyZSBsb29raW5nIGZvci5cbiAgICBsZXQgbGluZXNBYm92ZVN0ciA9IGxpbmVzQWJvdmVBcnJheS5yZWR1Y2UoKHByZXYsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHByZXYgKyBcIlxcblwiICArIGN1cnJlbnQ7XG4gICAgfSwgXCJcIik7XG5cbiAgICAvKlxuICAgICAgICAqIEZpcnN0IHRoaW5nIHdlIG5lZWQgdG8gZG8gaXMgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBlbmQgdGFncyBpbiB0aGVcbiAgICAgICAgKiBzZXQgb2Ygc3RyaW5ncyAod2hpY2ggbG9naWNhbGx5IHdvdWxkIGNsb3NlIHN0YXJ0IHRhZ3MgYW5kIHRoZXJlZm9yZVxuICAgICAgICAqIHRoZSBzdGFydCB0YWcgaXQgY2xvc2VzIGlzIG5vdCB3aGF0IHdlIHdhbnQpLiBJZiB0aGVyZSBhcmUgd2Ugd2FudCB0byBcbiAgICAgICAgKiBzbG93bHkgbmFycm93IGRvd24gb3VyIHNldCBvZiBzdHJpbmdzIHVudGlsIHRoZSBsYXN0IGVuZCB0YWcgaXMgXG4gICAgICAgICogcmVtb3ZlZC4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gZmluZCB0aGUgY2xvc2VzdCBvcGVuIHN0YXJ0IHRhZyBcbiAgICAgICAgKiBpbiB0aGUgZGF0YS5cbiAgICAgICAgKi9cbiAgICBsZXQgZW5kVGFnU2VyYWNoRGF0YSA9IGZpbmRFbmRUYWcobGluZXNBYm92ZVN0cik7XG4gICAgd2hpbGUoZW5kVGFnU2VyYWNoRGF0YS5mb3VuZCA9PT0gdHJ1ZSkge1xuXG4gICAgICAgIC8vIEdldCB0aGUgaW5kZXggb2Ygd2hlcmUgdGhlIGZpcnN0IHJlZ2V4IG1hdGNoIGluIHRoZVxuICAgICAgICAvLyBzdHJpbmcgaXMuIHRoZW4gd2Ugc2xpY2UgZnJvbSAwIHRvIGluZGV4IG9mZiBvZiB0aGUgc3RyaW5nXG4gICAgICAgIC8vIHNwbGl0IGl0IGJ5IG5ld2xpbmUsIGN1dCBvZmYgdGhlIGZpcnN0IGxpbmUgKHdoaWNoIGFjdHVhbGx5XG4gICAgICAgIC8vIGNvbnRhaW5zIHRoZSByZWdleCkgdGhlbiByZWR1Y2UgYmFjayBkb3duIHRvIGEgc2luZ2xlIHN0cmluZy5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVE9ETzogVGhpcyBjb3VsZCBiZSBzaW1wbGlmaWVkIGlmIHdlIGp1c3Qgc2xpY2UgdGhlIHRleHQgYWZ0ZXJcbiAgICAgICAgLy8gdGhlIGVuZCB0YWcgaW5zdGVhZCBvZiB0aGUgYmVnaW5pbmcuXG4gICAgICAgIGxldCBpbmRleE9mUmVnZXggPSBlbmRUYWdTZXJhY2hEYXRhLnN0YXJ0UG9zaXRpb247XG4gICAgICAgIGxpbmVzQWJvdmVBcnJheSA9IGxpbmVzQWJvdmVTdHIuc2xpY2UoaW5kZXhPZlJlZ2V4KS5zcGxpdChcIlxcblwiKS5zcGxpY2UoMSlcbiAgICAgICAgbGluZXNBYm92ZVN0ciA9IGxpbmVzQWJvdmVBcnJheS5yZWR1Y2UoKHByZXYsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcmV2ICsgXCJcXG5cIiAgKyBjdXJyZW50O1xuICAgICAgICB9LCBcIlwiKTtcbiAgICAgICAgZW5kVGFnU2VyYWNoRGF0YSA9IGZpbmRFbmRUYWcobGluZXNBYm92ZVN0cik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTm93IHdlIGhhdmUgdGhlIHNldCBvZiBsaW5lcyBhZnRlciBhbGwgb3RoZXIgZW5kIHRhZ3MuIFdlIG5vd1xuICAgICAqIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgaXMgc3RpbGwgYSBzdGFydCB0YWcgbGVmdCBpbiB0aGUgZGF0YS4gSWYgXG4gICAgICogdGhlcmUgaXMgbm8gc3RhcnQgdGFnIHRoZW4gd2Ugd2FudCB0byByZXR1cm4gYW4gZW1wdHkgYXJyYXkgYW5kIGVtcHR5IFxuICAgICAqIGtleS5cbiAgICAgKi8gXG4gICAgbGV0IHN0YXJ0QmxvY2tLZXkgPSBcIlwiO1xuICAgIGxldCBzdGFydFRhZ1NlYXJjaERhdGEgPSBmaW5kU3RhcnRUYWcobGluZXNBYm92ZVN0cik7XG4gICAgaWYoc3RhcnRUYWdTZWFyY2hEYXRhLmZvdW5kID09PSBmYWxzZSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgZWxzZSB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIE5vdyB3ZSBrbm93IHRoZXJlIGlzIGF0IGxlYXN0IDEgc3RhcnQga2V5IGxlZnQsIGhvd2V2ZXIgdGhlcmVcbiAgICAgICAgICogbWF5IGJlIG11bHRpcGxlIHN0YXJ0IGtleXMgaWYgdGhlIHVzZXIgaXMgbm90IGNsb3NpbmcgdGhlaXJcbiAgICAgICAgICogYmxvY2tzLiBXZSBjdXJyZW50bHkgZG9udCBhbGxvdyByZWN1c2l2ZSBzcGxpdHRpbmcgc28gd2UgXG4gICAgICAgICAqIHdhbnQgdG8gZ2V0IHRoZSBsYXN0IGtleSBpbiBvdXIgcmVtYWluaW5nIHNldC4gU2FtZSBpZGVhIGFzXG4gICAgICAgICAqIGFib3ZlLlxuICAgICAgICAgKi9cbiAgICAgICAgd2hpbGUoc3RhcnRUYWdTZWFyY2hEYXRhLmZvdW5kID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIC8vIEdldCB0aGUgaW5kZXggb2Ygd2hlcmUgdGhlIGZpcnN0IHJlZ2V4IG1hdGNoIGluIHRoZVxuICAgICAgICAgICAgLy8gc3RyaW5nIGlzLiB0aGVuIHdlIHNsaWNlIGZyb20gMCB0byBpbmRleCBvZmYgb2YgdGhlIHN0cmluZ1xuICAgICAgICAgICAgLy8gc3BsaXQgaXQgYnkgbmV3bGluZSwgY3V0IG9mZiB0aGUgZmlyc3QgbGluZSAod2hpY2ggYWN0dWFsbHlcbiAgICAgICAgICAgIC8vIGNvbnRhaW5zIHRoZSByZWdleCkgdGhlbiByZWR1Y2UgYmFjayBkb3duIHRvIGEgc2luZ2xlIHN0cmluZy5cbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyBUT0RPOiBUaGlzIGNvdWxkIGJlIHNpbXBsaWZpZWQgaWYgd2UganVzdCBzbGljZSB0aGUgdGV4dCBhZnRlclxuICAgICAgICAgICAgLy8gdGhlIGVuZCB0YWcgaW5zdGVhZCBvZiB0aGUgYmVnaW5pbmcuXG4gICAgICAgICAgICBsZXQgc3RhcnRJbmRleCA9IHN0YXJ0VGFnU2VhcmNoRGF0YS5zdGFydFBvc2l0aW9uO1xuXG4gICAgICAgICAgICBsaW5lc0Fib3ZlQXJyYXkgPSBsaW5lc0Fib3ZlU3RyLnNsaWNlKHN0YXJ0SW5kZXgpLnNwbGl0KFwiXFxuXCIpXG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBzdGFydFRhZyA9IGxpbmVzQWJvdmVBcnJheVswXTtcbiAgICAgICAgICAgIGxldCBrZXkgPSBnZXRTdGFydFRhZ0tleShzdGFydFRhZyk7XG4gICAgICAgICAgICBpZihrZXkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBzdGFydEJsb2NrS2V5ID0ga2V5O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsaW5lc0Fib3ZlQXJyYXkgPSBsaW5lc0Fib3ZlQXJyYXkuc3BsaWNlKDEpXG4gICAgICAgICAgICBsaW5lc0Fib3ZlU3RyID0gbGluZXNBYm92ZUFycmF5LnJlZHVjZSgocHJldiwgY3VycmVudCkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2ICsgXCJcXG5cIiAgKyBjdXJyZW50O1xuICAgICAgICAgICAgfSwgXCJcIik7XG5cbiAgICAgICAgICAgIHN0YXJ0VGFnU2VhcmNoRGF0YSA9IGZpbmRTdGFydFRhZyhsaW5lc0Fib3ZlU3RyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmKHN0YXJ0QmxvY2tLZXkgPT09IFwiXCIpIHtcblxuICAgICAgICBsZXQgY29kZUJsb2NrRGF0YSA9IHBhcnNlQ29kZUJsb2NrU3RhcnQobGluZXNBYm92ZUFycmF5KVxuICAgICAgICBpZihjb2RlQmxvY2tEYXRhICE9PSBudWxsKSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIHN0YXJ0QmxvY2tLZXkgPSBjb2RlQmxvY2tEYXRhLmlkO1xuXG4gICAgICAgICAgICBpZihjb2RlQmxvY2tEYXRhLmluZGV4ID4gMCkge1xuICAgICAgICAgICAgICAgIGxpbmVzQWJvdmVBcnJheSA9IGxpbmVzQWJvdmVBcnJheS5zbGljZShjb2RlQmxvY2tEYXRhLmluZGV4ICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGFydEJsb2NrS2V5LCBsaW5lc0Fib3ZlQXJyYXkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXJ0Q29kZUJsb2NrQWJvdmVMaW5lKGxpbmVzQWJvdmVBcnJheTogc3RyaW5nW10pOiB7IFxuICAgIHN0YXJ0QmxvY2tLZXk6IHN0cmluZywgXG4gICAgbGluZXNBYm92ZUFycmF5OiBzdHJpbmdbXSB9IHwgbnVsbCB7XG4gICAgXG4gICAgbGV0IGxpbmVzQWJvdmVTdHIgPSBsaW5lc0Fib3ZlQXJyYXkucmVkdWNlKChwcmV2LCBjdXJyZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBwcmV2ICsgXCJcXG5cIiAgKyBjdXJyZW50O1xuICAgIH0sIFwiXCIpO1xuXG4gICAgLypcbiAgICAgKiBGaXJzdCB0aGluZyB3ZSBuZWVkIHRvIGRvIGlzIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgZW5kIHRhZ3MgaW4gdGhlXG4gICAgICogc2V0IG9mIHN0cmluZ3MgKHdoaWNoIGxvZ2ljYWxseSB3b3VsZCBjbG9zZSBzdGFydCB0YWdzIGFuZCB0aGVyZWZvcmVcbiAgICAgKiB0aGUgc3RhcnQgdGFnIGl0IGNsb3NlcyBpcyBub3Qgd2hhdCB3ZSB3YW50KS4gSWYgdGhlcmUgYXJlIHdlIHdhbnQgdG8gXG4gICAgICogc2xvd2x5IG5hcnJvdyBkb3duIG91ciBzZXQgb2Ygc3RyaW5ncyB1bnRpbCB0aGUgbGFzdCBlbmQgdGFnIGlzIFxuICAgICAqIHJlbW92ZWQuIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIGZpbmQgdGhlIGNsb3Nlc3Qgb3BlbiBzdGFydCB0YWcgXG4gICAgICogaW4gdGhlIGRhdGEuXG4gICAgICovXG4gICAgbGV0IGVuZFRhZ1NlcmFjaERhdGEgPSBmaW5kRW5kVGFnKGxpbmVzQWJvdmVTdHIpO1xuICAgIHdoaWxlKGVuZFRhZ1NlcmFjaERhdGEuZm91bmQgPT09IHRydWUpIHtcblxuICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHdoZXJlIHRoZSBmaXJzdCByZWdleCBtYXRjaCBpbiB0aGVcbiAgICAgICAgLy8gc3RyaW5nIGlzLiB0aGVuIHdlIHNsaWNlIGZyb20gMCB0byBpbmRleCBvZmYgb2YgdGhlIHN0cmluZ1xuICAgICAgICAvLyBzcGxpdCBpdCBieSBuZXdsaW5lLCBjdXQgb2ZmIHRoZSBmaXJzdCBsaW5lICh3aGljaCBhY3R1YWxseVxuICAgICAgICAvLyBjb250YWlucyB0aGUgcmVnZXgpIHRoZW4gcmVkdWNlIGJhY2sgZG93biB0byBhIHNpbmdsZSBzdHJpbmcuXG4gICAgICAgIGxpbmVzQWJvdmVTdHIgPSBsaW5lc0Fib3ZlU3RyLnNsaWNlKGVuZFRhZ1NlcmFjaERhdGEuZW5kUG9zaXRpb24pO1xuICAgICAgICBlbmRUYWdTZXJhY2hEYXRhID0gZmluZEVuZFRhZyhsaW5lc0Fib3ZlU3RyKTtcbiAgICB9XG5cbiAgICBsZXQgc3RhcnRDb2RlQmxvY2tEYXRhID0gZmluZFN0YXJ0Q29kZWJsb2NrKGxpbmVzQWJvdmVTdHIpO1xuICAgIGxldCBjb2RlQmxvY2tUZXh0ID0gbGluZXNBYm92ZVN0ci5zbGljZShzdGFydENvZGVCbG9ja0RhdGEuc3RhcnRQb3NpdGlvbiwgc3RhcnRDb2RlQmxvY2tEYXRhLmVuZFBvc2l0aW9uKVxuXG4gICAgbGV0IHN0YXJ0QmxvY2tLZXkgPSBcIlwiICAgIFxuICAgIGlmKHN0YXJ0Q29kZUJsb2NrRGF0YS5mb3VuZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOb3cgd2Uga25vdyB0aGVyZSBpcyBhdCBsZWFzdCAxIHN0YXJ0IGtleSBsZWZ0LCBob3dldmVyIHRoZXJlXG4gICAgICAgICAqIG1heSBiZSBtdWx0aXBsZSBzdGFydCBrZXlzIGlmIHRoZSB1c2VyIGlzIG5vdCBjbG9zaW5nIHRoZWlyXG4gICAgICAgICAqIGJsb2Nrcy4gV2UgY3VycmVudGx5IGRvbnQgYWxsb3cgcmVjdXNpdmUgc3BsaXR0aW5nIHNvIHdlIFxuICAgICAgICAgKiB3YW50IHRvIGdldCB0aGUgbGFzdCBrZXkgaW4gb3VyIHJlbWFpbmluZyBzZXQuIFNhbWUgaWRlYSBhc1xuICAgICAgICAgKiBhYm92ZS5cbiAgICAgICAgICovXG4gICAgICAgIHdoaWxlKHN0YXJ0Q29kZUJsb2NrRGF0YS5mb3VuZCA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHdoZXJlIHRoZSBmaXJzdCByZWdleCBtYXRjaCBpbiB0aGVcbiAgICAgICAgICAgIC8vIHN0cmluZyBpcy4gdGhlbiB3ZSBzbGljZSBmcm9tIDAgdG8gaW5kZXggb2ZmIG9mIHRoZSBzdHJpbmdcbiAgICAgICAgICAgIC8vIHNwbGl0IGl0IGJ5IG5ld2xpbmUsIGN1dCBvZmYgdGhlIGZpcnN0IGxpbmUgKHdoaWNoIGFjdHVhbGx5XG4gICAgICAgICAgICAvLyBjb250YWlucyB0aGUgcmVnZXgpIHRoZW4gcmVkdWNlIGJhY2sgZG93biB0byBhIHNpbmdsZSBzdHJpbmcuXG5cbiAgICAgICAgICAgIGNvZGVCbG9ja1RleHQgPSBsaW5lc0Fib3ZlU3RyLnNsaWNlKHN0YXJ0Q29kZUJsb2NrRGF0YS5zdGFydFBvc2l0aW9uLCBzdGFydENvZGVCbG9ja0RhdGEuZW5kUG9zaXRpb24pXG4gICAgICAgICAgICBzdGFydEJsb2NrS2V5ID0gcGFyc2VTdGFydFJlZ2lvbkNvZGVCbG9ja0lEKGNvZGVCbG9ja1RleHQpXG5cbiAgICAgICAgICAgIGxpbmVzQWJvdmVTdHIgPSBsaW5lc0Fib3ZlU3RyLnNsaWNlKHN0YXJ0Q29kZUJsb2NrRGF0YS5lbmRQb3NpdGlvbik7XG4gICAgICAgICAgICBzdGFydENvZGVCbG9ja0RhdGEgPSBmaW5kU3RhcnRDb2RlYmxvY2sobGluZXNBYm92ZVN0cik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgcmV0TGluZXNBYm92ZUFycmF5ID0gbGluZXNBYm92ZVN0ci5zcGxpdChcIlxcblwiKTtcbiAgICByZXR1cm4geyBzdGFydEJsb2NrS2V5LCBsaW5lc0Fib3ZlQXJyYXk6IHJldExpbmVzQWJvdmVBcnJheSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW5kQmxvY2tCZWxvdyhsaW5lc0JlbG93OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcblxuICAgIC8vIFJlZHVjZSB0aGUgYXJyYXkgZG93biBpbnRvIGEgc2luZ2xlIHN0cmluZyBzbyB0aGF0IHdlIGNhblxuICAgIC8vIGVhc2lseSBSZWdFeCBvdmVyIHRoZSBzdHJpbmcgYW5kIGZpbmQgdGhlIGluZGljaWVzIHdlJ3JlIGxvb2tpbmcgZm9yLlxuICAgIGxldCBsaW5lc0JlbG93U3RyID0gbGluZXNCZWxvdy5yZWR1Y2UoKHByZXYsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHByZXYgKyBcIlxcblwiICArIGN1cnJlbnQ7XG4gICAgfSwgXCJcIik7XG4gICAgbGV0IGVuZFRhZ1NlcmFjaERhdGEgPSBmaW5kRW5kVGFnKGxpbmVzQmVsb3dTdHIpO1xuICAgIGxldCBzdGFydFRhZ1NlYXJjaERhdGEgPSBmaW5kU3RhcnRUYWcobGluZXNCZWxvd1N0cik7XG5cbiAgICBsZXQgc2xpY2VFbmRJbmRleCA9IC0xOyAvLyBJZiBuZWl0aGVyIHN0YXJ0IG9yIGVuZCBmb3VuZCB3ZSByZXR1cm4gdGhlIGVudGlyZSBhcnJheS5cbiAgICBpZihlbmRUYWdTZXJhY2hEYXRhLmZvdW5kID09PSB0cnVlICYmIHN0YXJ0VGFnU2VhcmNoRGF0YS5mb3VuZCA9PT0gZmFsc2UpIHtcblxuICAgICAgICBzbGljZUVuZEluZGV4ID0gZW5kVGFnU2VyYWNoRGF0YS5zdGFydFBvc2l0aW9uO1xuICAgIH1cbiAgICBlbHNlIGlmKGVuZFRhZ1NlcmFjaERhdGEuZm91bmQgPT09IGZhbHNlICYmIHN0YXJ0VGFnU2VhcmNoRGF0YS5mb3VuZCA9PT0gdHJ1ZSkge1xuXG4gICAgICAgIHNsaWNlRW5kSW5kZXggPSBzdGFydFRhZ1NlYXJjaERhdGEuc3RhcnRQb3NpdGlvbjtcbiAgICB9XG4gICAgZWxzZSBpZihlbmRUYWdTZXJhY2hEYXRhLmZvdW5kID09PSB0cnVlICYmIHN0YXJ0VGFnU2VhcmNoRGF0YS5mb3VuZCA9PT0gdHJ1ZSkge1xuXG4gICAgICAgIHNsaWNlRW5kSW5kZXggPSBlbmRUYWdTZXJhY2hEYXRhLnN0YXJ0UG9zaXRpb247XG4gICAgICAgIGlmKHN0YXJ0VGFnU2VhcmNoRGF0YS5zdGFydFBvc2l0aW9uIDwgZW5kVGFnU2VyYWNoRGF0YS5zdGFydFBvc2l0aW9uKSB7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSWYgd2UgZm91bmQgYSBzdGFydCB0YWcgYmVmb3JlIGFuIGVuZCB0YWcgd2Ugd2FudCB0byB1c2UgdGhlIHN0YXJ0IHRhZ1xuICAgICAgICAgICAgICogb3VyIGN1cnJlbnQgYmxvY2sgaXMgbm90IHByb3Blcmx5IGVuZGVkIGFuZCB3ZSB1c2UgdGhlIG5leHQgc3RhcnQgdGFnIFxuICAgICAgICAgICAgICogYXMgb3VyIGxpbWl0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHNsaWNlRW5kSW5kZXggPSBzdGFydFRhZ1NlYXJjaERhdGEuc3RhcnRQb3NpdGlvbjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lc0JlbG93LnNsaWNlKDAsIHNsaWNlRW5kSW5kZXgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhcnRUYWdLZXkoc3RhcnRUYWc6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuXG4gICAgbGV0IGtleVNwbGl0ID0gc3RhcnRUYWcuc3BsaXQoXCI6XCIpO1xuICAgIGlmKGtleVNwbGl0Lmxlbmd0aCA+IDEpe1xuICAgICAgICByZXR1cm4ga2V5U3BsaXRbMV0ucmVwbGFjZShcIiBcIiwgXCJcIilcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuXG5jb25zdCBUQUJfSEVBREVSX0VORF9SRUdFWF9TVFIgPSBcIl5gYGAkXCI7XG5jb25zdCBUQUJfSEVBREVSX0VORF9SRUdFWDogUmVnRXhwID0gbmV3IFJlZ0V4cChUQUJfSEVBREVSX0VORF9SRUdFWF9TVFIpO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29kZUJsb2NrU3RhcnQoY29kZUJsb2NrTGluZXM6IHN0cmluZ1tdKTogeyBpZDogc3RyaW5nLCBpbmRleDogbnVtYmVyfSB8IG51bGwge1xuXG4gICAgbGV0IGlkID0gbnVsbDtcbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgY29kZUJsb2NrTGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGxpbmUgPSBjb2RlQmxvY2tMaW5lc1tpXTtcblxuICAgICAgICBpZihpZCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgbGV0IGtleSA9IGxpbmUuc3BsaXQoXCI6XCIpWzBdO1xuICAgICAgICAgICAgaWYoa2V5LnRvTG93ZXJDYXNlKCkgPT09IFwicmVnaW9uIGlkXCIpIHtcbiAgICAgICAgICAgICAgICBpZCA9IGxpbmUuc3BsaXQoXCI6XCIpWzFdLnRyaW0oKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYoVEFCX0hFQURFUl9FTkRfUkVHRVgudGVzdChsaW5lKSkge1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBpbmRleDogaSB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYoaWQgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4geyBpZDogaWQsIGluZGV4OiAtMSB9XG4gICAgfVxufVxuY29uc3QgQ09ERUJMT0NLX0VORF9SRUdFWF9TVFIgPSBcImBgYFwiO1xuY29uc3QgQ09ERUJMT0NLX0VORF9SRUdFWDogUmVnRXhwID0gbmV3IFJlZ0V4cChDT0RFQkxPQ0tfRU5EX1JFR0VYX1NUUik7XG5leHBvcnQgZnVuY3Rpb24gZmluZEVuZE9mQ29kZUJsb2NrKHRleHQ6IHN0cmluZyk6IHsgZm91bmQ6IGJvb2xlYW4sIHN0YXJ0UG9zaXRpb246IG51bWJlciwgZW5kUG9zaXRpb246IG51bWJlciwgbWF0Y2hMZW5ndGg6IG51bWJlciB9IHtcblxuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGxldCBzdGFydFBvc2l0aW9uID0gLTE7XG4gICAgbGV0IG1hdGNoTGVuZ3RoID0gMDtcbiAgICBsZXQgZW5kUG9zaXRpb24gPSAtMTtcblxuICAgIGxldCByZWdleERhdGEgPSBDT0RFQkxPQ0tfRU5EX1JFR0VYLmV4ZWModGV4dClcbiAgICBpZihyZWdleERhdGEgIT09IG51bGwgJiYgcmVnZXhEYXRhLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICBzdGFydFBvc2l0aW9uID0gcmVnZXhEYXRhLmluZGV4XG4gICAgICAgIG1hdGNoTGVuZ3RoID0gcmVnZXhEYXRhWzBdLmxlbmd0aFxuICAgIH1cbiAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyBtYXRjaExlbmd0aDtcblxuICAgIHJldHVybiB7IGZvdW5kLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgbWF0Y2hMZW5ndGggfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQ29kZUJsb2NrU2V0dGluZ3MoY29kZUJsb2NrTGluZXM6IHN0cmluZ1tdKTogc3RyaW5nIHtcblxuICAgIGxldCBzZXR0aW5nc0xpbmVzID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IGNvZGVCbG9ja0xpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBsaW5lID0gY29kZUJsb2NrTGluZXNbaV07XG5cbiAgICAgICAgbGV0IGtleSA9IGxpbmUuc3BsaXQoXCI6XCIpWzBdO1xuICAgICAgICBpZihrZXkudG9Mb3dlckNhc2UoKSAhPT0gXCJyZWdpb24gaWRcIikge1xuICAgICAgICAgICAgc2V0dGluZ3NMaW5lcy5wdXNoKGxpbmUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHNldHRpbmdzTGluZXMuam9pbihcIlxcblwiKTtcbn0iLCIvKlxuICogRmlsZW5hbWU6IG11bHRpLWNvbHVtbi1tYXJrZG93bi9zcmMvdXRpbGl0aWVzL3V0aWxzLnRzXG4gKiBDcmVhdGVkIERhdGU6IFR1ZXNkYXksIEphbnVhcnkgMzB0aCAyMDIyLCA0OjAyOjE5IHBtXG4gKiBBdXRob3I6IENhbWVyb24gUm9iaW5zb25cbiAqIFxuICogQ29weXJpZ2h0IChjKSAyMDIyIENhbWVyb24gUm9iaW5zb25cbiAqL1xuXG5pbXBvcnQgeyBXb3Jrc3BhY2VMZWFmIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRVSUQobGVuZ3RoOiBudW1iZXIgPSAxMCk6IHN0cmluZyB7XG5cbiAgICBpZihsZW5ndGggPiAxMCkge1xuICAgICAgICBsZW5ndGggPSAxMDtcbiAgICB9XG4gICAgbGV0IFVJRCA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtcbiAgICBVSUQgPSBVSUQuc2xpY2UoMCwgbGVuZ3RoKTtcbiAgICBcbiAgICByZXR1cm4gVUlEO1xufVxuXG4vKipcbiAqIEJGUyBvbiB0aGUgY2hpbGQgbm9kZXMgb2YgdGhlIHBhc3NlZCBlbGVtZW50IHNlYXJjaGluZyBmb3IgdGhlIGZpcnN0IGluc3RhbmNlIG9mIHRoZVxuICogbm9kZSB0eXBlIHBhc3NlZC4gUmV0dXJuaW5nIHRoZSBlbGVtZW50IGZvdW5kIG9yIG51bGwgaWYgbm9uZSBmb3VuZC5cbiAqIFxuICogQHBhcmFtIHJvb3QgXG4gKiBAcGFyYW0gbm9kZVR5cGVOYW1lXG4gKiBAcmV0dXJucyBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlYXJjaENoaWxkcmVuRm9yTm9kZVR5cGUocm9vdDogSFRNTEVsZW1lbnQsIG5vZGVUeXBlTmFtZTogc3RyaW5nKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcblxuICAgIG5vZGVUeXBlTmFtZSA9IG5vZGVUeXBlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIFxuICAgIGxldCBxdWV1ZTogSFRNTEVsZW1lbnRbXSA9IFtyb290XVxuICAgIHdoaWxlKHF1ZXVlLmxlbmd0aCA+IDApe1xuICAgICAgICBcbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIGxldCBub2RlID0gcXVldWUuc2hpZnQoKVxuXG4gICAgICAgICAgICBsZXQgbm9kZU5hbWUgPSBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgIGlmKG5vZGVOYW1lID09PSBub2RlVHlwZU5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBxdWV1ZS5wdXNoKG5vZGUuY2hpbGRyZW5baV0gYXMgSFRNTEVsZW1lbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVTb3VyY2VNb2RlKHNvdXJjZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBsZXQgZmlsZUxlYWYgPSBnZXRGaWxlTGVhZihzb3VyY2VQYXRoKTtcbiAgICBpZihmaWxlTGVhZiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICB9XG4gICAgcmV0dXJuIGZpbGVMZWFmLmdldFZpZXdTdGF0ZSgpLnN0YXRlLm1vZGU7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0TGVhZlNvdXJjZU1vZGUoZmlsZUxlYWY6IFdvcmtzcGFjZUxlYWYpOiBzdHJpbmcge1xuXG4gICAgcmV0dXJuIGZpbGVMZWFmLmdldFZpZXdTdGF0ZSgpLnN0YXRlLm1vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlU3RpbGxJblZpZXcoc291cmNlUGF0aDogc3RyaW5nKTpib29sZWFuIHtcblxuICAgIGxldCBmaWxlTGVhZiA9IGdldEZpbGVMZWFmKHNvdXJjZVBhdGgpO1xuICAgIGlmKGZpbGVMZWFmID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlTGVhZihzb3VyY2VQYXRoOiBzdHJpbmcpOiBXb3Jrc3BhY2VMZWFmIHwgbnVsbCB7XG5cbiAgICBsZXQgbWFya2Rvd25MZWF2ZXMgPSBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShcIm1hcmtkb3duXCIpO1xuICAgIGlmKG1hcmtkb3duTGVhdmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBmb3IobGV0IGkgPSAwOyBpIDwgbWFya2Rvd25MZWF2ZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICBpZihtYXJrZG93bkxlYXZlc1tpXS5nZXRWaWV3U3RhdGUoKS5zdGF0ZS5maWxlID09PSBzb3VyY2VQYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFya2Rvd25MZWF2ZXNbaV07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbn0iLCJpbXBvcnQgeyBzZWFyY2hDaGlsZHJlbkZvck5vZGVUeXBlIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuZXhwb3J0IGVudW0gRWxlbWVudFJlbmRlclR5cGUge1xuICAgIHVuZGVmaW5lZCxcbiAgICBub3JtYWxSZW5kZXIsXG4gICAgc3BlY2lhbFJlbmRlcixcbiAgICBzcGVjaWFsU2luZ2xlRWxlbWVudFJlbmRlcixcbiAgICBjYW52YXNSZW5kZXJFbGVtZW50LFxuICAgIHVuUmVuZGVyZWRcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVsZW1lbnRSZW5kZXJUeXBlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogRWxlbWVudFJlbmRlclR5cGUge1xuXG4gICAgLyoqXG4gICAgICogVGhlIERhdGF2aWV3IHBsdWdpbiBuZWVkcyB0byBiZSBjb25zdGFudGx5IGNoZWNrZWQgaWYgdGhlIGNsb25lIHNob3VsZCBiZVxuICAgICAqIHVwZGF0ZWQgYnV0IHNob3VsZCBub3QgYWx3YXlzIHVwZGF0ZSB0aGUgXCJkdWFsIHJlbmRlclwiIGFzcGVjdCwgc28gd2UgYWRkXG4gICAgICogYSBzcGVjaWFsIGNhc2UgZm9yIHRoYXQgcGx1Z2luIGFuZCBtYXliZSBvdGhlcnMgaW4gdGhlIGZ1dHVyZS5cbiAgICAgKi9cbiAgICBpZihoYXNEYXRhdmlldyhlbGVtZW50KSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gRWxlbWVudFJlbmRlclR5cGUuc3BlY2lhbFNpbmdsZUVsZW1lbnRSZW5kZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU29tZSB0eXBlcyBvZiBjb250ZW50IGFyZSByZW5kZXJlZCBpbiBjYW52YXNlcyB3aGljaCBhcmUgbm90IHJlbmRlcmVkIHByb3Blcmx5XG4gICAgICogd2hlbiB3ZSBjbG9uZSB0aGUgb3JpZ2luYWwgbm9kZS4gSGVyZSB3ZSBhcmUgZmxhZ2dpbmcgdGhlIGVsZW1lbnQgYXMgYSBjYW52YXNcbiAgICAgKiBlbGVtZW50IHNvIHdlIGNhbiBjbG9uZSB0aGUgY2FudmFzIHRvIGEgY29weSBlbGVtZW50IHdpdGhpbiB0aGUgcmVnaW9uLlxuICAgICAqIFxuICAgICAqL1xuICAgIGlmKCBoYXNEYXRhdmlld0pTKGVsZW1lbnQpID09PSB0cnVlKSB7XG4gICAgICAgIHJldHVybiBFbGVtZW50UmVuZGVyVHlwZS5jYW52YXNSZW5kZXJFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvb2sgZm9yIHNwZWNpZmljIGtpbmRzIG9mIGVsZW1lbnRzIGJ5IHRoZWlyIENTUyBjbGFzcyBuYW1lcyBoZXJlLiBUaGVzZSBcbiAgICAgKiBhcmUgZ29pbmcgdG8gYmUgYnJpdHRsZSBsaW5rcyBhcyB0aGV5IHJlbHkgb24gb3RoZXIgcGx1Z2luIGRlZmluaXRpb25zIGJ1dFxuICAgICAqIGFzIHRoaXMgaXMgb25seSBhZGRpbmcgaW4gZXh0cmEgY29tcGF0YWJpbGl0eSB0byB0aGUgcGx1Z2lucyBkZWZpbmVkIGhlcmUgXG4gICAgICogaXQgc2hvdWxkIGJlIG9rLlxuICAgICAqIFxuICAgICAqIFRoZXNlIG1heSBiZSBjbGFzc2VzIG9uIG9uZSBvZiB0aGUgc2ltcGxlIGVsZW1lbnRzIChzdWNoIGFzIGEgcGFyYWdyYXBoKVxuICAgICAqIHRoYXQgd2Ugc2VhcmNoIGZvciBiZWxvdyBzbyBuZWVkIHRvIGxvb2sgZm9yIHRoZXNlIGZpcnN0LlxuICAgICAqL1xuICAgIGlmKGhhc0RpY2VSb2xsZXIoZWxlbWVudCkgPT09IHRydWUgfHxcbiAgICAgICBoYXNDb3B5QnV0dG9uKGVsZW1lbnQpID09PSB0cnVlIHx8XG4gICAgICAgaGFzQWRtb25pdGlvbkZvbGQoZWxlbWVudCkgPT09IHRydWUpIHtcblxuICAgICAgICByZXR1cm4gRWxlbWVudFJlbmRlclR5cGUuc3BlY2lhbFJlbmRlclxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoaXMgY2hlY2tzIGZvciBzcGVjaWFsIHR5cGVzIG9mIGVsZW1lbnRzIHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIG5vcm1hbGx5LiBJc1xuICAgICAqIHNsaWdodGx5IHJlZHVuZGFudCB3aXRoIG5leHQgY2hlY2sgYnV0IGRpZmZlcmVudGlhdGVzIGJldHdlZW4gdHlwZXMgb2YgZW1lbnRzIFxuICAgICAqIGJlaW5nIGNoZWNrZWQuXG4gICAgICovXG4gICAgaWYoaGFzQWRtb25pdGlvbihlbGVtZW50KSA9PT0gdHJ1ZSB8fFxuICAgICAgIGlzSUZyYW1lKGVsZW1lbnQpID09PSB0cnVlKSB7XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gRWxlbWVudFJlbmRlclR5cGUubm9ybWFsUmVuZGVyXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSWYgd2UgZGlkbnQgZmluZCBhIHNwZWNpYWwgZWxlbWVudCB3ZSB3YW50IHRvIGNoZWNrIGZvciBzaW1wbGUgZWxlbWVudHNcbiAgICAgKiBzdWNoIGFzIHBhcmFncmFwaHMgb3IgbGlzdHMuIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHdlIG9ubHkgc2V0IHVwXG4gICAgICogdGhlIHNwZWNpYWwgY2FzZSBmb3IgXCJzcGVjaWFsUmVuZGVyXCIgZWxlbWVudHMgc28gdGhpcyAqc2hvdWxkKiBiZSBzYXZpbmdcbiAgICAgKiBzb21lIHJlbmRlcmluZyB0aW1lIGJ5IHNldHRpbmcgdGhlc2UgdGFncyBwcm9wZXJseS5cbiAgICAgKi9cbiAgICBpZihoYXNQYXJhZ3JhcGgoZWxlbWVudCkgfHwgXG4gICAgICAgaGFzSGVhZGVyKGVsZW1lbnQpICAgIHx8XG4gICAgICAgaGFzTGlzdChlbGVtZW50KSB8fFxuICAgICAgIGlzSG9yaXpvbnRhbFJ1bGUoZWxlbWVudCkgfHxcbiAgICAgICBpc1RhYmxlKGVsZW1lbnQpKSB7XG5cbiAgICAgICAgcmV0dXJuIEVsZW1lbnRSZW5kZXJUeXBlLm5vcm1hbFJlbmRlcjtcbiAgICB9XG5cbiAgICAvLyBJZiBzdGlsbCBub3RoaW5nIGZvdW5kIHdlIHJldHVybiBvdGhlciBhcyB0aGUgZGVmYXVsdCByZXNwb25zZSBpZiBub3RoaW5nIGVsc2UgZm91bmQuXG4gICAgcmV0dXJuIEVsZW1lbnRSZW5kZXJUeXBlLnNwZWNpYWxSZW5kZXI7XG59XG5cbmZ1bmN0aW9uIGhhc1BhcmFncmFwaChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50LmlubmVySFRNTC5zdGFydHNXaXRoKFwiPHBcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBoYXNIZWFkZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcblxuICAgIGlmKGVsZW1lbnQuaW5uZXJIVE1MLnN0YXJ0c1dpdGgoXCI8aDFcIikgfHwgXG4gICAgICAgZWxlbWVudC5pbm5lckhUTUwuc3RhcnRzV2l0aChcIjxoMlwiKSB8fCBcbiAgICAgICBlbGVtZW50LmlubmVySFRNTC5zdGFydHNXaXRoKFwiPGgzXCIpIHx8IFxuICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MLnN0YXJ0c1dpdGgoXCI8aDRcIikgfHxcbiAgICAgICBlbGVtZW50LmlubmVySFRNTC5zdGFydHNXaXRoKFwiPGg1XCIpIHx8XG4gICAgICAgZWxlbWVudC5pbm5lckhUTUwuc3RhcnRzV2l0aChcIjxoNlwiKSkge1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gaGFzTGlzdChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIFxuICAgIGlmKGVsZW1lbnQuaW5uZXJIVE1MLnN0YXJ0c1dpdGgoXCI8dWxcIikgfHwgXG4gICAgICAgZWxlbWVudC5pbm5lckhUTUwuc3RhcnRzV2l0aChcIjxvbFwiKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGhhc0NvcHlCdXR0b24oZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiY29weS1jb2RlLWJ1dHRvblwiKS5sZW5ndGggIT09IDAgfHwgXG4gICAgICAgICAgICBlbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhZG1vbml0aW9uLWNvbnRlbnQtY29weVwiKS5sZW5ndGggIT09IDA7XG59XG5cbmZ1bmN0aW9uIGhhc0RpY2VSb2xsZXIoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiZGljZS1yb2xsZXJcIikubGVuZ3RoICE9PSAwO1xufVxuXG5mdW5jdGlvbiBoYXNBZG1vbml0aW9uKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImFkbW9uaXRpb25cIikubGVuZ3RoICE9PSAwO1xufVxuXG5mdW5jdGlvbiBpc0lGcmFtZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuXG4gICAgaWYoZWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuZmlyc3RDaGlsZC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSBcImlmcmFtZVwiO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBpc0hvcml6b250YWxSdWxlKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVsZW1lbnQuaW5uZXJIVE1MLnN0YXJ0c1dpdGgoXCI8aHJcIilcbn1cblxuZnVuY3Rpb24gaXNUYWJsZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50LmlubmVySFRNTC5zdGFydHNXaXRoKFwiPHRhYmxlXCIpXG59XG5cbmZ1bmN0aW9uIGhhc0FkbW9uaXRpb25Gb2xkKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNhbGxvdXQtZm9sZFwiKS5sZW5ndGggIT09IDA7XG59XG5cbmZ1bmN0aW9uIGhhc0RhdGF2aWV3KGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG5cbiAgICBsZXQgaXNEYXRhdmlldyA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImRhdGF2aWV3XCIpLmxlbmd0aCAhPT0gMDtcbiAgICByZXR1cm4gaXNEYXRhdmlldztcbn1cblxuZnVuY3Rpb24gaGFzRGF0YXZpZXdKUyhlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuXG4gICAgbGV0IGlzRGF0YXZpZXdKUyA9IGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImJsb2NrLWxhbmd1YWdlLWRhdGF2aWV3anNcIikubGVuZ3RoICE9PSAwO1xuICAgIGxldCBjYW52YXMgPSBzZWFyY2hDaGlsZHJlbkZvck5vZGVUeXBlKGVsZW1lbnQsIFwiY2FudmFzXCIpO1xuXG4gICAgLyoqXG4gICAgICogVGhpcyBtZWFucyBvbmx5IGRhdGF2aWV3SlMgY2hhcnQgY2FudmFzIGVsZW1lbnRzIHNob3VsZCBiZSByZW5kZXJlZCBwcm9wZXJseS4gT3RoZXIgY2FudmFzZXMgd2lsbCBcbiAgICAgKiBuZWVkIHRoaWVyIG93biBjYXNlIHB1dCBpbiBvciB0aGUgcmVzdHJpY3Rpb24gcmVtb3ZlZCBhZnRlciB0ZXN0aW5nLlxuICAgICAqL1xuICAgIHJldHVybiBjYW52YXMgIT09IG51bGwgJiYgaXNEYXRhdmlld0pTIFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SGVhZGluZ0NvbGxhcHNlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IEVsZW1lbnQgfCBudWxsIHtcblxuICAgIGlmKGVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IGNoaWxkRWxlbWVudHMgPSBlbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJoZWFkaW5nLWNvbGxhcHNlLWluZGljYXRvclwiKVxuICAgIGlmKGNoaWxkRWxlbWVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHJldHVybiBjaGlsZEVsZW1lbnRzWzBdO1xuICAgIH1cbiAgICBpZihjaGlsZEVsZW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZyhcIkZvdW5kIG11bHRpcGxlIGhlYWRpbmcgY29sbGFwc2UgaW5kaWNhdG9ycyBpbiBlbGVtZW50LlwiKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn0iLCIvKlxuICogRmlsZW5hbWU6IG11bHRpLWNvbHVtbi1tYXJrZG93bi9zcmMvZG9tT2JqZWN0LnRzXG4gKiBDcmVhdGVkIERhdGU6IFR1ZXNkYXksIEZlYnJ1YXJ5IDFzdCAyMDIyLCAxMjowNDowMCBwbVxuICogQXV0aG9yOiBDYW1lcm9uIFJvYmluc29uXG4gKiBcbiAqIENvcHlyaWdodCAoYykgMjAyMiBDYW1lcm9uIFJvYmluc29uXG4gKi9cblxuaW1wb3J0IHsgZ2V0VUlEIH0gZnJvbSBcIi4uL3V0aWxpdGllcy91dGlsc1wiO1xuaW1wb3J0IHsgRWxlbWVudFJlbmRlclR5cGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2VsZW1lbnRSZW5kZXJUeXBlUGFyc2VyXCI7XG5pbXBvcnQgeyBjb250YWluc0NvbEVuZFRhZywgY29udGFpbnNDb2xTZXR0aW5nc1RhZywgY29udGFpbnNFbmRUYWcsIGNvbnRhaW5zU3RhcnRUYWcsIGVsSW5uZXJUZXh0Q29udGFpbnNDb2xFbmRUYWcgfSBmcm9tIFwic3JjL3V0aWxpdGllcy90ZXh0UGFyc2VyXCI7XG5cbmV4cG9ydCBlbnVtIERPTU9iamVjdFRhZyB7XG4gICAgbm9uZSxcbiAgICBzdGFydFJlZ2lvbixcbiAgICByZWdpb25TZXR0aW5ncyxcbiAgICBjb2x1bW5CcmVhayxcbiAgICBlbmRSZWdpb25cbn1cblxuZXhwb3J0IGNsYXNzIERPTU9iamVjdCB7XG4gICAgbm9kZUtleTogc3RyaW5nO1xuICAgIG9yaWdpbmFsRWxlbWVudDogSFRNTEVsZW1lbnQ7XG4gICAgY2xvbmVkRWxlbWVudDogSFRNTEVsZW1lbnQgPSBudWxsO1xuICAgIFVJRDogc3RyaW5nO1xuICAgIHRhZzogRE9NT2JqZWN0VGFnO1xuICAgIHVzaW5nT3JpZ2luYWxFbGVtZW50OiBib29sZWFuXG4gICAgZWxlbWVudFR5cGU6IEVsZW1lbnRSZW5kZXJUeXBlID0gRWxlbWVudFJlbmRlclR5cGUudW5kZWZpbmVkO1xuICAgIGVsZW1lbnRDb250YWluZXI6IEhUTUxEaXZFbGVtZW50ID0gbnVsbDtcbiAgICBlbGVtZW50UmVuZGVyZWRIZWlnaHQgPSAwO1xuICAgIGxpbmVzT2ZFbGVtZW50OiBzdHJpbmdbXVxuXG4gICAgY29uc3RydWN0b3IoZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgbGluZXNPZkVsZW1lbnQ6IHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgIHJhbmRvbUlEOnN0cmluZyA9IGdldFVJRCgpLCBcbiAgICAgICAgICAgICAgICB0YWc6IERPTU9iamVjdFRhZyA9IERPTU9iamVjdFRhZy5ub25lICkge1xuICAgICAgICB0aGlzLm5vZGVLZXkgPSBlbGVtZW50LmlubmVyVGV4dC50cmltKCk7XG4gICAgICAgIHRoaXMub3JpZ2luYWxFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5VSUQgPSByYW5kb21JRDtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMudXNpbmdPcmlnaW5hbEVsZW1lbnQgPSBmYWxzZVxuICAgICAgICB0aGlzLmxpbmVzT2ZFbGVtZW50ID0gbGluZXNPZkVsZW1lbnQ7XG5cbiAgICAgICAgaWYodGhpcy50YWcgPT09IERPTU9iamVjdFRhZy5ub25lKSB7XG4gICAgICAgICAgICB0aGlzLnNldERvbU9iamVjdFRhZygpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRNYWluRE9NRWxlbWVudChkb21FbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICB0aGlzLm9yaWdpbmFsRWxlbWVudCA9IGRvbUVsZW1lbnQ7XG4gICAgICAgIHRoaXMudXNpbmdPcmlnaW5hbEVsZW1lbnQgPSB0cnVlXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXREb21PYmplY3RUYWcoKSB7XG5cbiAgICAgICAgbGV0IGVsZW1lbnRUZXh0U3BhY2VkID0gdGhpcy5saW5lc09mRWxlbWVudC5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwcmV2ICsgXCJcXG5cIiArIGN1cnI7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmKGNvbnRhaW5zRW5kVGFnKHRoaXMub3JpZ2luYWxFbGVtZW50LnRleHRDb250ZW50KSA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRUeXBlID0gRWxlbWVudFJlbmRlclR5cGUudW5SZW5kZXJlZDtcbiAgICAgICAgICAgIHRoaXMudGFnID0gRE9NT2JqZWN0VGFnLmVuZFJlZ2lvbjtcbiAgICAgICAgICAgIC8vIGVsLmFkZENsYXNzKE11bHRpQ29sdW1uU3R5bGVDU1MuUmVnaW9uRW5kVGFnKVxuICAgICAgICAgICAgLy8gcmVnaW9uYWxNYW5hZ2VyLnVwZGF0ZUVsZW1lbnRUYWcoY3VycmVudE9iamVjdC5VSUQsIERPTU9iamVjdFRhZy5lbmRSZWdpb24pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoY29udGFpbnNDb2xFbmRUYWcodGhpcy5vcmlnaW5hbEVsZW1lbnQudGV4dENvbnRlbnQpID09PSB0cnVlIHx8IFxuICAgICAgICAodGhpcy5vcmlnaW5hbEVsZW1lbnQuaW5uZXJIVE1MLnN0YXJ0c1dpdGgoXCI8bWFyaz5cIikpICYmIGVsSW5uZXJUZXh0Q29udGFpbnNDb2xFbmRUYWcodGhpcy5vcmlnaW5hbEVsZW1lbnQudGV4dENvbnRlbnQpKSB7XG5cbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFR5cGUgPSBFbGVtZW50UmVuZGVyVHlwZS51blJlbmRlcmVkXG4gICAgICAgICAgICB0aGlzLnRhZyA9IERPTU9iamVjdFRhZy5jb2x1bW5CcmVhaztcbiAgICAgICAgICAgIC8vIGVsLmFkZENsYXNzKE11bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uRW5kVGFnKVxuICAgICAgICAgICAgLy8gcmVnaW9uYWxNYW5hZ2VyLnVwZGF0ZUVsZW1lbnRUYWcoY3VycmVudE9iamVjdC5VSUQsIERPTU9iamVjdFRhZy5jb2x1bW5CcmVhayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihjb250YWluc1N0YXJ0VGFnKHRoaXMub3JpZ2luYWxFbGVtZW50LnRleHRDb250ZW50KSA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRUeXBlID0gRWxlbWVudFJlbmRlclR5cGUudW5SZW5kZXJlZFxuICAgICAgICAgICAgdGhpcy50YWcgPSBET01PYmplY3RUYWcuc3RhcnRSZWdpb247XG4gICAgICAgICAgICAvLyBlbC5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkVuZFRhZylcbiAgICAgICAgICAgIC8vIHJlZ2lvbmFsTWFuYWdlci51cGRhdGVFbGVtZW50VGFnKGN1cnJlbnRPYmplY3QuVUlELCBET01PYmplY3RUYWcuY29sdW1uQnJlYWspO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoY29udGFpbnNDb2xTZXR0aW5nc1RhZyhlbGVtZW50VGV4dFNwYWNlZCkgPT09IHRydWUpIHtcblxuICAgICAgICAgICAgdGhpcy5lbGVtZW50VHlwZSA9IEVsZW1lbnRSZW5kZXJUeXBlLnVuUmVuZGVyZWRcbiAgICAgICAgICAgIC8vIGVsLmFkZENsYXNzKE11bHRpQ29sdW1uU3R5bGVDU1MuUmVnaW9uU2V0dGluZ3MpXG4gICAgICAgICAgICAvLyByZWdpb25hbE1hbmFnZXIgPSByZWdpb25hbENvbnRhaW5lci5zZXRSZWdpb25TZXR0aW5ncyhlbGVtZW50VGV4dFNwYWNlZClcbiAgICAgICAgICAgIC8vIHJlZ2lvbmFsTWFuYWdlci51cGRhdGVFbGVtZW50VGFnKGN1cnJlbnRPYmplY3QuVUlELCBET01PYmplY3RUYWcucmVnaW9uU2V0dGluZ3MpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgRE9NU3RhcnRSZWdpb25PYmplY3QgZXh0ZW5kcyBET01PYmplY3Qge1xuXG4gICAgcmVnaW9uRWxlbWVudDogSFRNTEVsZW1lbnQ7XG5cbiAgICBjb25zdHJ1Y3RvcihiYXNlRE9NT2JqZWN0OiBET01PYmplY3QsIHJlZ2lvbkVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG5cbiAgICAgICAgc3VwZXIoYmFzZURPTU9iamVjdC5vcmlnaW5hbEVsZW1lbnQsIGJhc2VET01PYmplY3QubGluZXNPZkVsZW1lbnQsIGJhc2VET01PYmplY3QuVUlELCBET01PYmplY3RUYWcuc3RhcnRSZWdpb24pO1xuICAgICAgICB0aGlzLnJlZ2lvbkVsZW1lbnQgPSByZWdpb25FbGVtZW50O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRhc2tMaXN0RE9NT2JqZWN0IGV4dGVuZHMgRE9NT2JqZWN0IHtcblxuICAgIG9yaWdpbmFsQ2hlY2tib3hlczogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoYmFzZURPTU9iamVjdDogRE9NT2JqZWN0KSB7XG5cbiAgICAgICAgc3VwZXIoYmFzZURPTU9iamVjdC5vcmlnaW5hbEVsZW1lbnQsIGJhc2VET01PYmplY3QubGluZXNPZkVsZW1lbnQsIGJhc2VET01PYmplY3QuVUlELCBET01PYmplY3RUYWcubm9uZSk7XG4gICAgfVxuXG4gICAgY2hlY2tib3hDbGlja2VkKGluZGV4OiBudW1iZXIpIHtcblxuICAgICAgICBpZihpbmRleCA8IHRoaXMub3JpZ2luYWxDaGVja2JveGVzLmxlbmd0aCkge1xuXG4gICAgICAgICAgICBsZXQgb3JpZ2luYWxJbnB1dCA9IHRoaXMub3JpZ2luYWxDaGVja2JveGVzW2luZGV4XS5maXJzdENoaWxkIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICBvcmlnaW5hbElucHV0LmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzdGF0aWMgY2hlY2tGb3JUYXNrTGlzdEVsZW1lbnQoZG9tRWxlbWVudDogRE9NT2JqZWN0KSB7XG5cbiAgICAgICAgaWYoZG9tRWxlbWVudC5vcmlnaW5hbEVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRhc2stbGlzdC1pdGVtXCIpLmxlbmd0aCA+IDAgKSB7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgVGFza0xpc3RET01PYmplY3QoZG9tRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZG9tRWxlbWVudDtcbiAgICB9XG59IiwiLypcbiAqIEZpbGU6IG11bHRpLWNvbHVtbi1tYXJrZG93bi9zcmMvdXRpbGl0aWVzL2Nzc0RlZmluaXRpb25zLnRzXG4gKiBDcmVhdGVkIERhdGU6IFdlZG5lc2RheSwgRmVicnVhcnkgMTZ0aCAyMDIyLCAxMTowOTowNiBhbVxuICogQXV0aG9yOiBDYW1lcm9uIFJvYmluc29uXG4gKiBcbiAqIENvcHlyaWdodCAoYykgMjAyMiBDYW1lcm9uIFJvYmluc29uXG4gKi9cblxuZXhwb3J0IGVudW0gTXVsdGlDb2x1bW5MYXlvdXRDU1Mge1xuXG4gICAgUmVnaW9uUm9vdENvbnRhaW5lckRpdiA9IFwibWNtLWNvbHVtbi1yb290LWNvbnRhaW5lclwiLFxuICAgIFJlZ2lvbkVycm9yQ29udGFpbmVyRGl2ID0gXCJtY20tY29sdW1uLWVycm9yLXJlZ2lvbi13cmFwcGVyXCIsXG4gICAgUmVnaW9uQ29udGVudENvbnRhaW5lckRpdiA9IFwibWNtLWNvbHVtbi1yZWdpb24td3JhcHBlclwiLFxuICAgIFJlZ2lvbkNvbHVtbkNvbnRhaW5lckRpdiA9IFwibWNtLWNvbHVtbi1wYXJlbnQtY29udGFpbmVyXCIsXG4gICAgQ29sdW1uRHVhbEVsZW1lbnRDb250YWluZXIgPSBcIm1jbS1jb2x1bW4tZWxlbWVudC13cmFwcGVyXCIsXG4gICAgT3JpZ2luYWxFbGVtZW50VHlwZSA9IFwibWNtLW9yaWdpbmFsLWNvbHVtbi1lbGVtZW50XCIsXG4gICAgQ2xvbmVkRWxlbWVudFR5cGUgPSBcIm1jbS1jbG9uZWQtY29sdW1uLWVsZW1lbnRcIixcblxuICAgIENvbnRlbnRPdmVyZmxvd0F1dG9TY3JvbGwgPSBcIm1jbS1jb250ZW50LW92ZXJmbG93LWF1dG8tc2Nyb2xsXCIsXG4gICAgQ29udGVudE92ZXJmbG93SGlkZGVuID0gXCJtY20tY29udGVudC1vdmVyZmxvdy1oaWRkZW5cIixcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvL1xuXG4gICAgU2luZ2xlQ29sdW1uU21hbGwgPSBcIm1jbS1zaW5nbGUtY29sdW1uLXNtYWxsXCIsXG4gICAgU2luZ2xlQ29sdW1uTWVkID0gXCJtY20tc2luZ2xlLWNvbHVtbi1tZWRpdW1cIixcbiAgICBTaW5nbGVDb2x1bW5MYXJnZSA9IFwibWNtLXNpbmdsZS1jb2x1bW4tbGFyZ2VcIixcblxuICAgIFNpbmdsZUNvbHVtbkxlZnRMYXlvdXQgPSBcIm1jbS1zaW5nbGVjb2wtbGF5b3V0LWxlZnRcIixcbiAgICBTaW5nbGVDb2x1bW5DZW50ZXJMYXlvdXQgPSBcIm1jbS1zaW5nbGVjb2wtbGF5b3V0LWNlbnRlclwiLFxuICAgIFNpbmdsZUNvbHVtblJpZ2h0TGF5b3V0ID0gXCJtY20tc2luZ2xlY29sLWxheW91dC1yaWdodFwiLFxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbiAgICBUd29FcXVhbENvbHVtbnMgPSBcIm1jbS10d28tZXF1YWwtY29sdW1uc1wiLFxuXG4gICAgVHdvQ29sdW1uU21hbGwgPSBcIm1jbS10d28tY29sdW1uLXNtYWxsXCIsXG4gICAgVHdvQ29sdW1uTGFyZ2UgPSBcIm1jbS10d28tY29sdW1uLWxhcmdlXCIsXG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuICAgIFRocmVlRXF1YWxDb2x1bW5zID0gXCJtY20tdGhyZWUtZXF1YWwtY29sdW1uc1wiLFxuXG4gICAgVGhyZWVDb2x1bW5fTGFyZ2UgPSBcIm1jbS10aHJlZS1jb2x1bW4tbGFyZ2VcIixcbiAgICBUaHJlZUNvbHVtbl9TbWFsbCA9IFwibWNtLXRocmVlLWNvbHVtbi1zbWFsbFwiLFxufVxuXG5leHBvcnQgZW51bSBNdWx0aUNvbHVtblN0eWxlQ1NTIHtcblxuICAgIFJlZ2lvbkVycm9yTWVzc2FnZSA9IFwibWNtLWNvbHVtbi1lcnJvci1tZXNzYWdlXCIsXG4gICAgUmVnaW9uU2V0dGluZ3MgPSBcIm1jbS1jb2x1bW4tc2V0dGluZ3Mtd3JhcHBlclwiLFxuICAgIFJlZ2lvbkNvbnRlbnQgPSBcIm1jbS1jb2x1bW4tY29udGVudC13cmFwcGVyXCIsXG4gICAgUmVnaW9uRW5kVGFnID0gXCJtY20tY29sdW1uLWVuZC10YWctd3JhcHBlclwiLFxuICAgIENvbHVtbkVuZFRhZyA9IFwibWNtLWNvbHVtbi1icmVhay10YWctd3JhcHBlclwiLFxuICAgIFJlZ2lvblNoYWRvdyA9IFwibWNtLXJlZ2lvbi1zaGFkb3dcIixcbiAgICBDb2x1bW5TaGFkb3cgPSBcIm1jbS1jb2x1bW4tc2hhZG93XCIsXG4gICAgQ29sdW1uQm9yZGVyID0gXCJtY20tY29sdW1uLWJvcmRlclwiLFxuICAgIENvbHVtbkNvbnRlbnQgPSBcIm1jbS1jb2x1bW4tZGl2XCJcbn0iLCIvKipcbiAqIEZpbGU6IC9zcmMvZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvUmVnaW9uTWFuYWdlci50cyAgICAgICAgICAgICAgICAgICAqXG4gKiBDcmVhdGVkIERhdGU6IFN1bmRheSwgTWF5IDIybmQgMjAyMiwgNzo0OSBwbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICogQXV0aG9yOiBDYW1lcm9uIFJvYmluc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgQ2FtZXJvbiBSb2JpbnNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICovXG5cbmltcG9ydCB7IERPTU9iamVjdCwgRE9NT2JqZWN0VGFnLCBUYXNrTGlzdERPTU9iamVjdCB9IGZyb20gJy4uL2RvbU9iamVjdCc7XG5pbXBvcnQgeyBNdWx0aUNvbHVtblNldHRpbmdzLCBDb2x1bW5MYXlvdXQsIGdldERlZmF1bHRNdWx0aUNvbHVtblNldHRpbmdzIH0gZnJvbSBcIi4uLy4uL3JlZ2lvblNldHRpbmdzXCI7XG5pbXBvcnQgeyBNdWx0aUNvbHVtbkxheW91dENTUywgTXVsdGlDb2x1bW5TdHlsZUNTUyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jc3NEZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBGaWxlRE9NTWFuYWdlciB9IGZyb20gJy4uL2RvbU1hbmFnZXInO1xuaW1wb3J0IHsgRWxlbWVudFJlbmRlclR5cGUsIGdldEVsZW1lbnRSZW5kZXJUeXBlIH0gZnJvbSAnc3JjL3V0aWxpdGllcy9lbGVtZW50UmVuZGVyVHlwZVBhcnNlcic7XG5pbXBvcnQgeyBSZWdpb25NYW5hZ2VyRGF0YSB9IGZyb20gJy4vcmVnaW9uTWFuYWdlckNvbnRhaW5lcic7XG5pbXBvcnQgeyBzZWFyY2hDaGlsZHJlbkZvck5vZGVUeXBlIH0gZnJvbSAnc3JjL3V0aWxpdGllcy91dGlscyc7XG5cbmV4cG9ydCB0eXBlIE11bHRpQ29sdW1uUmVuZGVyRGF0YSA9IHsgXG4gICAgcGFyZW50UmVuZGVyRWxlbWVudDogSFRNTEVsZW1lbnQsIFxuICAgIHBhcmVudFJlbmRlclNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzLFxuICAgIGRvbU9iamVjdHM6IERPTU9iamVjdFtdXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZWdpb25NYW5hZ2VyIHtcblxuICAgIHByb3RlY3RlZCBkb21MaXN0OiBET01PYmplY3RbXSA9IFtdO1xuICAgIHByb3RlY3RlZCBkb21PYmplY3RNYXA6IE1hcDxzdHJpbmcsIERPTU9iamVjdD4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBfcmVnaW9uUGFyZW50OiBIVE1MRWxlbWVudDtcbiAgICBwdWJsaWMgZ2V0IHJlZ2lvblBhcmVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWdpb25QYXJlbnQ7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgcmVnaW9uUGFyZW50KHZhbHVlOiBIVE1MRWxlbWVudCkge1xuICAgICAgICB0aGlzLl9yZWdpb25QYXJlbnQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmlsZU1hbmFnZXI6IEZpbGVET01NYW5hZ2VyO1xuICAgIHByb3RlY3RlZCByZWdpb25hbFNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzID0gZ2V0RGVmYXVsdE11bHRpQ29sdW1uU2V0dGluZ3MoKTtcblxuICAgIHByb3RlY3RlZCByZWdpb25LZXk6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFJlZ2lvbk1hbmFnZXJEYXRhKSB7XG5cbiAgICAgICAgdGhpcy5kb21MaXN0ID0gZGF0YS5kb21MaXN0O1xuICAgICAgICB0aGlzLmRvbU9iamVjdE1hcCA9IGRhdGEuZG9tT2JqZWN0TWFwO1xuICAgICAgICB0aGlzLnJlZ2lvblBhcmVudCA9IGRhdGEucmVnaW9uUGFyZW50O1xuXG4gICAgICAgIHRoaXMuZmlsZU1hbmFnZXIgPSBkYXRhLmZpbGVNYW5hZ2VyO1xuICAgICAgICB0aGlzLnJlZ2lvbmFsU2V0dGluZ3MgPSBkYXRhLnJlZ2lvbmFsU2V0dGluZ3M7XG5cbiAgICAgICAgdGhpcy5yZWdpb25LZXkgPSBkYXRhLnJlZ2lvbktleTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UmVnaW9uRGF0YSgpOiBSZWdpb25NYW5hZ2VyRGF0YSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRvbUxpc3Q6IHRoaXMuZG9tTGlzdCxcbiAgICAgICAgICAgIGRvbU9iamVjdE1hcDogdGhpcy5kb21PYmplY3RNYXAsXG4gICAgICAgICAgICByZWdpb25QYXJlbnQ6IHRoaXMucmVnaW9uUGFyZW50LFxuXG4gICAgICAgICAgICBmaWxlTWFuYWdlcjogdGhpcy5maWxlTWFuYWdlcixcbiAgICAgICAgICAgIHJlZ2lvbmFsU2V0dGluZ3M6IHRoaXMucmVnaW9uYWxTZXR0aW5ncyxcblxuICAgICAgICAgICAgcmVnaW9uS2V5OiB0aGlzLnJlZ2lvbktleSxcbiAgICAgICAgICAgIHJvb3RFbGVtZW50OiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFkZE9iamVjdChzaWJsaW5nc0Fib3ZlOiBIVE1MRGl2RWxlbWVudCwgc2libGluZ3NCZWxvdzogSFRNTERpdkVsZW1lbnQsIG9iajogRE9NT2JqZWN0KTogbnVtYmVyIHtcblxuICAgICAgICBsZXQgcHJldk9iaiA9IHNpYmxpbmdzQWJvdmUuY2hpbGRyZW5bc2libGluZ3NBYm92ZS5jaGlsZHJlbi5sZW5ndGggLSAxXSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgbGV0IG5leHRPYmogPSBzaWJsaW5nc0JlbG93LmNoaWxkcmVuWzBdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGxldCBhZGRBdEluZGV4ID0gc2libGluZ3NBYm92ZS5jaGlsZHJlbi5sZW5ndGg7XG5cbiAgICAgICAgbGV0IHByZXZPYmpUZXh0ID0gXCJcIjtcbiAgICAgICAgaWYgKHByZXZPYmogIT09IHVuZGVmaW5lZCkge1xuXG4gICAgICAgICAgICBwcmV2T2JqVGV4dCA9IHByZXZPYmouaW5uZXJUZXh0O1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5kb21MaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9tTGlzdFtpXS5ub2RlS2V5ID09PSBwcmV2T2JqLmlubmVyVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICBhZGRBdEluZGV4ID0gaSArIDE7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBuZXh0RWxJbmRleCA9IGFkZEF0SW5kZXg7XG4gICAgICAgIGxldCBuZXh0T2JqVGV4dCA9IFwiXCI7XG4gICAgICAgIGlmIChuZXh0T2JqICE9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgICAgbGV0IGZvdW5kTmV4dCA9IGZhbHNlO1xuICAgICAgICAgICAgbmV4dE9ialRleHQgPSBuZXh0T2JqLmlubmVyVGV4dDtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGFkZEF0SW5kZXg7IGkgPCB0aGlzLmRvbUxpc3QubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvbUxpc3RbaV0ubm9kZUtleSA9PT0gbmV4dE9iai5pbm5lclRleHQudHJpbSgpKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgbmV4dEVsSW5kZXggPSBpO1xuICAgICAgICAgICAgICAgICAgICBmb3VuZE5leHQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIiBQcmV2OiBcIiwgc2libGluZ3NBYm92ZS5jaGlsZHJlbltzaWJsaW5nc0Fib3ZlLmNoaWxkcmVuLmxlbmd0aCAtIDFdLCBcIkFkZGluZzogXCIsIG9iai5lbGVtZW50LCBcIiBOZXh0OiBcIiwgc2libGluZ3NCZWxvdy5jaGlsZHJlblswXSwgXCJPdmVyd3JpdGluZzpcIiwgdGhpcy5kb21MaXN0LnNsaWNlKGFkZEF0SW5kZXgsIG5leHRFbEluZGV4KSk7XG4gICAgICAgIHRoaXMuZG9tTGlzdC5zcGxpY2UoYWRkQXRJbmRleCwgbmV4dEVsSW5kZXggLSBhZGRBdEluZGV4LCBvYmopO1xuICAgICAgICB0aGlzLmRvbU9iamVjdE1hcC5zZXQob2JqLlVJRCwgb2JqKTtcblxuICAgICAgICAvLyAvKipcbiAgICAgICAgLy8gICogTWFrZSBhIGNvcHkgb2YgdGhlIGxpc3QgdG8gbG9nLCBvbmx5IGJlY2F1c2VcbiAgICAgICAgLy8gICogY29uc29sZSBsb2cgdXBkYXRlcyBpdHMgcmVmZXJlbmNlcyB3aXRoIHVwZGF0ZXMgaW4gbWVtb3J5LlxuICAgICAgICAvLyAgKi9cbiAgICAgICAgLy8gbGV0IHggPSB0aGlzLmRvbUxpc3Quc2xpY2UoMCk7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKHgpO1xuICAgICAgICByZXR1cm4gYWRkQXRJbmRleDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlT2JqZWN0KG9iamVjdFVJRDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIC8vIC8qKlxuICAgICAgICAvLyAgKiBNYWtlIGEgY29weSBvZiB0aGUgbGlzdCB0byBsb2dcbiAgICAgICAgLy8gICovXG4gICAgICAgIC8vIGxldCB4ID0gZG9tTGlzdC5zbGljZSgwKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coeCk7XG4gICAgICAgIC8vIEdldCB0aGUgb2JqZWN0IGJ5IGtleSwgcmVtb3ZlIGl0IGZyb20gdGhlIG1hcCBhbmQgdGhlblxuICAgICAgICAvLyBmcm9tIHRoZSBsaXN0LlxuICAgICAgICBsZXQgb2JqID0gdGhpcy5kb21PYmplY3RNYXAuZ2V0KG9iamVjdFVJRCk7XG4gICAgICAgIHRoaXMuZG9tT2JqZWN0TWFwLmRlbGV0ZShvYmplY3RVSUQpO1xuXG4gICAgICAgIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZG9tTGlzdC5jb250YWlucyhvYmopKSB7XG4gICAgICAgICAgICB0aGlzLmRvbUxpc3QucmVtb3ZlKG9iaik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kb21MaXN0Lmxlbmd0aCA9PT0gMCAmJiB0aGlzLmZpbGVNYW5hZ2VyICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVNYW5hZ2VyLnJlbW92ZVJlZ2lvbih0aGlzLnJlZ2lvbktleSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB4ID0gZG9tTGlzdC5zbGljZSgwKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coeCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUVsZW1lbnRUYWcob2JqZWN0VUlEOiBzdHJpbmcsIG5ld1RhZzogRE9NT2JqZWN0VGFnKTogdm9pZCB7XG5cbiAgICAgICAgbGV0IG9iaiA9IHRoaXMuZG9tT2JqZWN0TWFwLmdldChvYmplY3RVSUQpO1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmRvbUxpc3QuaW5kZXhPZihvYmopO1xuICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLmRvbUxpc3RbaW5kZXhdLnRhZyA9IG5ld1RhZztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRSZWdpb25hbFNldHRpbmdzKHJlZ2lvblNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVnaW9uYWxTZXR0aW5ncyA9IHJlZ2lvblNldHRpbmdzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENyZWF0ZXMgYW4gb2JqZWN0IGNvbnRhaW5pbmcgYWxsIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmb3IgdGhlIHJlZ2lvblxuICAgICAqIHRvIGJlIHJlbmRlcmVkIHRvIHRoZSBwcmV2aWV3IHBhbmUuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBhIE11bHRpQ29sdW1uUmVuZGVyRGF0YSBvYmplY3Qgd2l0aCB0aGUgcm9vdCBET00gZWxlbWVudCwgc2V0dGluZ3Mgb2JqZWN0LCBhbmRcbiAgICAgKiBhbGwgY2hpbGQgb2JqZWN0cyBpbiB0aGUgb3JkZXIgdGhleSBzaG91bGQgYmUgcmVuZGVyZWQuXG4gICAgICovXG4gICAgcHVibGljIGdldFJlZ2lvblJlbmRlckRhdGEoKTogTXVsdGlDb2x1bW5SZW5kZXJEYXRhIHtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGFyZW50UmVuZGVyRWxlbWVudDogdGhpcy5yZWdpb25QYXJlbnQsXG4gICAgICAgICAgICBwYXJlbnRSZW5kZXJTZXR0aW5nczogdGhpcy5yZWdpb25hbFNldHRpbmdzLFxuICAgICAgICAgICAgZG9tT2JqZWN0czogdGhpcy5kb21MaXN0XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdWN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgc3RhcnQgdGFnIGlzIHJlbW92ZWQgZnJvbSB2aWV3IG1lYW5pbmdcbiAgICAgKiBvdXIgcGFyZW50IGVsZW1lbnQgc3RvcmluZyB0aGUgbXVsdGktY29sdW1uIHJlZ2lvbiBpcyByZW1vdmVkLiBJdFxuICAgICAqIHJlbW92ZXMgdGhlIENTUyBjbGFzcyBmcm9tIGFsbCBvZiB0aGUgZWxlbWVudHMgc28gdGhleSB3aWxsIGJlXG4gICAgICogcmUtcmVuZGVyZWQgaW4gdGhlIHByZXZpZXcgd2luZG93LlxuICAgICAqL1xuICAgIHB1YmxpYyBkaXNwbGF5T3JpZ2luYWxFbGVtZW50cygpIHtcblxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kb21MaXN0Lmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRvbUxpc3RbaV0ub3JpZ2luYWxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb21MaXN0W2ldLm9yaWdpbmFsRWxlbWVudC5yZW1vdmVDbGFzc2VzKFtNdWx0aUNvbHVtblN0eWxlQ1NTLlJlZ2lvbkVuZFRhZyxcbiAgICAgICAgICAgICAgICBNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkVuZFRhZyxcbiAgICAgICAgICAgICAgICBNdWx0aUNvbHVtblN0eWxlQ1NTLlJlZ2lvblNldHRpbmdzLFxuICAgICAgICAgICAgICAgIE11bHRpQ29sdW1uU3R5bGVDU1MuUmVnaW9uQ29udGVudF0pO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvbUxpc3RbaV0ub3JpZ2luYWxFbGVtZW50LnBhcmVudEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kb21MaXN0W2ldLm9yaWdpbmFsRWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuZG9tTGlzdFtpXS5vcmlnaW5hbEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBcbiAgICBwdWJsaWMgZ2V0SUQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaW9uS2V5O1xuICAgIH1cblxuICAgIHB1YmxpYyB1cGRhdGVSZW5kZXJlZE1hcmtkb3duKCkge1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhpcyBmdW5jdGlvbiBhY3RzIGFzIHRoZSB1cGRhdGUgbG9vcCBmb3IgdGhlIG11bHRpLWNvbHVtbiByZWdpb25zLlxuICAgICAgICAgKiBIZXJlIHdlIGxvb3AgdGhyb3VnaCBhbGwgb2YgdGhlIGVsZW1lbnRzIHdpdGhpbiB0aGUgcmVuZGVyZWQgcmVnaW9uIGFuZFxuICAgICAgICAgKiBwb3RlbnRpYWxseSB1cGRhdGUgaG93IHRoaW5ncyBhcmUgcmVuZGVyZWQuIFdlIG5lZWQgdG8gZG8gdGhpcyBmb3JcbiAgICAgICAgICogY29tcGF0YWJpbGl0eSB3aXRoIG90aGVyIHBsdWdpbnMuXG4gICAgICAgICAqXG4gICAgICAgICAqIElmIHRoZSBtdWx0aS1jb2x1bW4gcmVnaW9uIGlzIHJlbmRlcmVkIGJlZm9yZSBvdGhlciBwbHVnaW5zIHRoYXQgZWZmZWN0XG4gICAgICAgICAqIGNvbnRlbnQgd2l0aGluIHRoZSByZWdpb24gb3VyIHJlbmRlcmVkIGRhdGEgbWF5IG5vdCBwcm9wZXJseSBkaXNwbGF5XG4gICAgICAgICAqIHRoZSBjb250ZW50IGZyb20gdGhlIG90aGVyIHBsdWdpbi4gSGVyZSB3ZSBsb29wIHRocm91Z2ggdGhlIGVsZW1lbnRzXG4gICAgICAgICAqIGFmdGVyIGFsbCBwbHVnaW5zIGhhdmUgaGFkIGEgY2hhbmNlIHRvIHJ1biBhbmQgY2FuIG1ha2UgY2hhbmdlcyB0byB0aGVcbiAgICAgICAgICogRE9NIGF0IHRoaXMgcG9pbnQuXG4gICAgICAgICAqL1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZG9tTGlzdC5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEhlcmUgd2UgY2hlY2sgZm9yIHNwZWNpYWwgY2FzZXNcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKHRoaXMuZG9tTGlzdFtpXSBpbnN0YW5jZW9mIFRhc2tMaXN0RE9NT2JqZWN0KSB7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmZpeENsb25lZENoZWNrTGlzdEJ1dHRvbnModGhpcy5kb21MaXN0W2ldIGFzIFRhc2tMaXN0RE9NT2JqZWN0KTtcbiAgICAgICAgICAgIH1cblxuXG4gICAgICAgICAgICBsZXQgZWxlbWVudFR5cGUgPSB0aGlzLmRvbUxpc3RbaV0uZWxlbWVudFR5cGU7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSWYgdGhlIGVsZW1lbnQgaXMgbm90IGN1cnJlbnRseSBhIHNwZWNpYWwgcmVuZGVyIGVsZW1lbnQgd2UgY2hlY2sgYWdhaW5cbiAgICAgICAgICAgICAqIGFzIHRoZSBvcmlnaW5hbCBlbGVtZW50IG1heSBoYXZlIGJlZW4gdXBkYXRlZC5cbiAgICAgICAgICAgICAqXG4gICAgICAgICAgICAgKiBUT0RPOiBmaW5kIGEgd2F5IHRvIFwiT2ZmaWNpYWxseVwiIG1hcmsgbm9ybWFsIGVsZW1lbnRzIHJhdGhlciB0aGFuXG4gICAgICAgICAgICAgKiBjb250aW51b3VzbHkgc2VhcmNoIGZvciBzcGVjaWFsIHJlbmRlciB0eXBlcy5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRUeXBlICE9PSBFbGVtZW50UmVuZGVyVHlwZS5zcGVjaWFsUmVuZGVyICYmXG4gICAgICAgICAgICAgICAgZWxlbWVudFR5cGUgIT09IEVsZW1lbnRSZW5kZXJUeXBlLnNwZWNpYWxTaW5nbGVFbGVtZW50UmVuZGVyICYmIFxuICAgICAgICAgICAgICAgIGVsZW1lbnRUeXBlICE9PSBFbGVtZW50UmVuZGVyVHlwZS51blJlbmRlcmVkKSB7XG5cbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbmV3IHJlc3VsdCByZXR1cm5zIGFzIGEgc3BlY2lhbCByZW5kZXJlciB3ZSB1cGRhdGUgc29cbiAgICAgICAgICAgICAgICAvLyB0aGlzIHdvbnQgcnVuIGFnYWluIGZvciB0aGlzIGl0ZW0uXG4gICAgICAgICAgICAgICAgZWxlbWVudFR5cGUgPSBnZXRFbGVtZW50UmVuZGVyVHlwZSh0aGlzLmRvbUxpc3RbaV0ub3JpZ2luYWxFbGVtZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLmRvbUxpc3RbaV0ub3JpZ2luYWxFbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVsZW1lbnRUeXBlID09PSBFbGVtZW50UmVuZGVyVHlwZS5zcGVjaWFsUmVuZGVyIHx8XG4gICAgICAgICAgICAgICAgZWxlbWVudFR5cGUgPT09IEVsZW1lbnRSZW5kZXJUeXBlLnNwZWNpYWxTaW5nbGVFbGVtZW50UmVuZGVyIHx8IFxuICAgICAgICAgICAgICAgIGVsZW1lbnRUeXBlID09PSBFbGVtZW50UmVuZGVyVHlwZS5jYW52YXNSZW5kZXJFbGVtZW50KSB7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRvbUxpc3RbaV0uZWxlbWVudFR5cGUgPSBlbGVtZW50VHlwZTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFVwRHVhbFJlbmRlcih0aGlzLmRvbUxpc3RbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiB0YWtlcyBpbiB0aGUgb3JpZ2luYWwgZWxlbWVudCBhbmQgaXRzIGNsb25lIGFuZCBjaGVja3MgaWZcbiAgICAgKiB0aGUgZWxlbWVudCBjb250YWlucyBhIHRhc2stbGlzdC1pdGVtIGNsYXNzLiBJZiBzbyBpdCBsb29wcyB0aHJvdWdoIGFsbFxuICAgICAqIGl0ZW1zIGluIHRoZSBsaXN0IGFuZCBmaXhlcyB0aGVpciBjaGVja2JveGVzIHRvIHByb3Blcmx5IGZpcmUgYW4gZXZlbnQuXG4gICAgICogVGhlIG5ldyBjaGVja2JveCBjYWxscyB0aGUgY2xpY2sgZnVuY3Rpb24gb24gdGhlIG9yaWdpbmFsIGNoZWNrYm94IHNvXG4gICAgICogY29tcGF0YWJpbGl0eSB3aXRoIG90aGVyIHBsdWdpbnMgKnNob3VsZCogcmVtYWluLlxuICAgICAqIEBwYXJhbSBkb21FbGVtZW50XG4gICAgICogQHBhcmFtIGluaXRhbGl6ZUNoZWNrYm94ZXNcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZml4Q2xvbmVkQ2hlY2tMaXN0QnV0dG9ucyhkb21FbGVtZW50OiBUYXNrTGlzdERPTU9iamVjdCwgaW5pdGFsaXplQ2hlY2tib3hlczogYm9vbGVhbiA9IGZhbHNlKSB7XG5cbiAgICAgICAgaWYoZG9tRWxlbWVudC5vcmlnaW5hbEVsZW1lbnQgPT09IG51bGwgfHwgZG9tRWxlbWVudC5jbG9uZWRFbGVtZW50ID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgZWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb21FbGVtZW50Lm9yaWdpbmFsRWxlbWVudDtcbiAgICAgICAgbGV0IGNsb25lZEVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gZG9tRWxlbWVudC5jbG9uZWRFbGVtZW50O1xuXG4gICAgICAgIGxldCBjbG9uZWRMaXN0Q2hlY2tib3hlcyA9IEFycmF5LmZyb20oY2xvbmVkRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidGFzay1saXN0LWl0ZW1cIikpIGFzIEhUTUxFbGVtZW50W107XG4gICAgICAgIGxldCBvcmlnaW5hbExpc3RDaGVja2JveGVzID0gQXJyYXkuZnJvbShlbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ0YXNrLWxpc3QtaXRlbVwiKSkgYXMgSFRNTEVsZW1lbnRbXTtcblxuICAgICAgICBpZiAoaW5pdGFsaXplQ2hlY2tib3hlcyA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAvLyBXaGVuIHdlIGluaXRhbGl6ZSB3ZSByZW1vdmUgdGhlIG9sZCBpbnB1dCBjaGVja2JveCB0aGF0IGNvbnRhaW5zXG4gICAgICAgICAgICAvLyB0aGUgd2VpcmQgY2FsbGJhY2sgc2l0dWF0aW9uIGNhdXNpbmcgdGhlIGJ1Zy4gVGhlbiB3ZSBjcmVhdGUgYSBuZXdcbiAgICAgICAgICAgIC8vIGNoZWNrYm94IHRvIHJlcGxhY2UgaXQgYW5kIHNldCBpdCB1cCB0byBmaXJlIHRoZSBjbGljayBldmVudCBvblxuICAgICAgICAgICAgLy8gdGhlIG9yaWdpbmFsIGNoZWNrYm94IHNvIGZ1bmN0aW9uYWxpdHkgaXMgcmVzdG9yZWQuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9yaWdpbmFsTGlzdENoZWNrYm94ZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGNoZWNrYm94ID0gY3JlYXRlRWwoJ2lucHV0Jyk7XG5cbiAgICAgICAgICAgICAgICBsZXQgb3JpZ2luYWxJbnB1dCA9IG9yaWdpbmFsTGlzdENoZWNrYm94ZXNbaV0uZmlyc3RDaGlsZCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgY2hlY2tib3guY2hlY2tlZCA9IG9yaWdpbmFsSW5wdXQuY2hlY2tlZDtcbiAgICAgICAgICAgICAgICBjbG9uZWRMaXN0Q2hlY2tib3hlc1tpXS5yZXBsYWNlQ2hpbGQoY2hlY2tib3gsIGNsb25lZExpc3RDaGVja2JveGVzW2ldLmNoaWxkcmVuWzBdKTtcbiAgICAgICAgICAgICAgICBjaGVja2JveC5hZGRDbGFzcygndGFzay1saXN0LWl0ZW0tY2hlY2tib3gnKTtcbiAgICAgICAgICAgICAgICBjaGVja2JveC50eXBlID0gJ2NoZWNrYm94JztcbiAgICAgICAgICAgICAgICBjaGVja2JveC5vbkNsaWNrRXZlbnQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkb21FbGVtZW50LmNoZWNrYm94Q2xpY2tlZChpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcblxuICAgICAgICAgICAgLy8gV2hlbmV2ZXIgd2UgcmVhY2ggdGhpcyBwb2ludCB3ZSB1cGRhdGUgb3VyIGxpc3Qgb2Ygb3JpZ2luYWwgY2hlY2tib3hlc1xuICAgICAgICAgICAgLy8gdGhhdCBtYXkgYmUgZGlmZmVyZW50IGZyb20gb3VyIGNhY2hlLiBUaGlzIGlzIGR1ZSB0byBob3cgb2JzaWRpYW5cbiAgICAgICAgICAgIC8vIGNoYW5nZXMgdGhlIERPTSB1bmRlcm5lYXRoIHVzIHNvIHdlIG5lZWQgdG8gY29uc3RhbnRseSB1cGRhdGUgb3VyIGNhY2hlLlxuICAgICAgICAgICAgZG9tRWxlbWVudC5vcmlnaW5hbENoZWNrYm94ZXMgPSBvcmlnaW5hbExpc3RDaGVja2JveGVzO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiB0aGUgVGFza3MgcGx1Z2luIGlzIGluc3RhbGxlZCB0aGUgY2xvbmVkIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGVsZW1lbnQgY29udGFpbnNcbiAgICAgICAgLy8gYW4gZXh0cmEgZWxlbWVudCBmb3Igc29tZSByZWFzb24uIElmIHRoaXMgb2NjdXJzIGZvciBvdGhlciByZWFzb25zIGhlcmUgd2UgYWRqdXN0XG4gICAgICAgIC8vIHRoYXQgdG8ga2VlcCB0aGUgY2xvbmUgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsLlxuICAgICAgICBpZiAoY2xvbmVkTGlzdENoZWNrYm94ZXMubGVuZ3RoID4gb3JpZ2luYWxMaXN0Q2hlY2tib3hlcy5sZW5ndGgpIHtcblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IG9yaWdpbmFsTGlzdENoZWNrYm94ZXMubGVuZ3RoOyBpIDwgY2xvbmVkTGlzdENoZWNrYm94ZXMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIGRvbUVsZW1lbnQuY2xvbmVkRWxlbWVudC5yZW1vdmVDaGlsZChjbG9uZWRMaXN0Q2hlY2tib3hlc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2V0VXBEdWFsUmVuZGVyKGRvbUVsZW1lbnQ6IERPTU9iamVjdCkge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBvdXIgZWxlbWVudCBpcyBvZiBcInNwZWNpYWxSZW5kZXJcIiB0eXBlIGl0ICptYXkqIG5lZWQgdG8gYmUgcmVuZGVyZWRcbiAgICAgICAgICogdXNpbmcgdGhlIG9yaWdpbmFsIGVsZW1lbnQgcmF0aGVyIHRoYW4gYSBjb3B5LiBGb3IgZXhhbXBsZSwgYW4gZWxlbWVudFxuICAgICAgICAgKiBtYXkgaGF2ZSBhbiBvbkNsaWNrIGV2ZW50IHRoYXQgd291bGQgbm90IGdldCBjb3BwaWVkIHRvIHRoZSBjbG9uZS5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgd2UganVzdCBtb3ZlZCB0aGVzZSBlbGVtZW50cyBpbnRvIHRoZSByZWdpb24gaXQgd291bGQgZ2V0XG4gICAgICAgICAqIG1vdmVkIGJhY2sgb3V0IGludG8gdGhlIG9yaWdpbmFsIGxvY2F0aW9uIGluIHRoZSBET00gYnkgb2JzaWRpYW5cbiAgICAgICAgICogd2hlbiBzY3JvbGxpbmcgb3Igd2hlbiB0aGUgZmlsZSBpcyB1cGRhdGVkLiBPbiB0aGUgbmV4dCByZWZyZXNoIGl0XG4gICAgICAgICAqIHdvdWxkIGJlIG1vdmVkIGJhY2sgYnV0IHRoYXQgY2FuIGxlYWQgdG8gYSByZWdpb24ganVtcGluZ1xuICAgICAgICAgKiBhcm91bmQgYXMgdGhlIGl0ZW0gaXMgbW92ZWQgaW4gYW5kIG91dC5cbiAgICAgICAgICpcbiAgICAgICAgICogSGVyZSB3ZSBzZXQgdXAgdGhlIGRpdiB0byBjb250YWluIHRoZSBlbGVtZW50IGFuZCBjcmVhdGVcbiAgICAgICAgICogYSB2aXN1YWwgb25seSBjbG9uZSBvZiBpdC4gVGhlIGNsb25lIHdpbGwgb25seSBiZSB2aXNpYmxlXG4gICAgICAgICAqIHdoZW4gdGhlIG9yaWdpbmFsIGlzIG5vdCBpbiB0aGUgbXVsdGktY29sdW1uIHJlZ2lvbiBzbyBpdFxuICAgICAgICAgKiBzYXZlcyB1cyBmcm9tIHRoZSB2aXN1YWwgbm9pc2Ugb2YgdGhlIHJlZ2lvbiBqdW1waW5nIGFyb3VuZC5cbiAgICAgICAgICovXG5cbiAgICAgICAgIGxldCBvcmlnaW5hbEVsZW1lbnQgPSBkb21FbGVtZW50Lm9yaWdpbmFsRWxlbWVudDtcbiAgICAgICAgIGxldCBjbG9uZWRFbGVtZW50ID0gZG9tRWxlbWVudC5jbG9uZWRFbGVtZW50O1xuICAgICAgICAgbGV0IGNvbnRhaW5lckVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50ID0gZG9tRWxlbWVudC5lbGVtZW50Q29udGFpbmVyO1xuXG4gICAgICAgIC8vIEdldCBoZWlnaHQgb2YgdGhlIG9yaWdpbmFsIGFuZCBjbG9uZWQgZWxlbWVudC4gSWYgdGhlIGVsZW1lbnQgaXMgbm90IGN1cnJlbnRseSByZW5kZXJlZFxuICAgICAgICAvLyBpdCB3aWxsIGhhdmUgMCBoZWlnaHQgc28gd2UgbmVlZCB0byB0ZW1wb3JhcmlseSByZW5kZXIgaXQgdG8gZ2V0IHRoZSBoZWlnaHQuXG4gICAgICAgIGxldCBvcmlnaW5hbEVsZW1lbnRIZWlnaHQgPSBnZXRFbGVtZW50Q2xpZW50SGVpZ2h0KG9yaWdpbmFsRWxlbWVudCwgY29udGFpbmVyRWxlbWVudCk7XG4gICAgICAgIGxldCBjbG9uZWRFbGVtZW50SGVpZ2h0ID0gZ2V0RWxlbWVudENsaWVudEhlaWdodChjbG9uZWRFbGVtZW50LCBjb250YWluZXJFbGVtZW50KTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV2Ugb25seSB3YW50IHRvIGNsb25lIHRoZSBlbGVtZW50IG9uY2UgdG8gcmVkdWNlIEdDLiBCdXQgaWYgdGhlIGNsb25lZCBcbiAgICAgICAgICogZWxlbWVudCdzIGhlaWdodCBpcyBub3QgZXF1YWwgdG8gdGhlIG9yaWdpbmFsIGVsZW1lbnQsIHRoaXMgbWVhbnMgdGhlXG4gICAgICAgICAqIGl0ZW0gZWxlbWVudCBoYXMgYmVlbiB1cGRhdGVkIHNvbWV3aGVyZSBlbHNlIHdpdGhvdXQgdGhlIGRvbSBiZWluZyBcbiAgICAgICAgICogcmVmcmVzaGVkLiBUaGlzIGNhbiBvY2N1ciB3aGVuIGVsZW1lbnRzIGFyZSB1cGRhdGVkIGJ5IG90aGVyIHBsdWdpbnMsIFxuICAgICAgICAgKiBzdWNoIGFzIERhdGF2aWV3LlxuICAgICAgICAgKi9cbiAgICAgICAgaWYoY2xvbmVkRWxlbWVudCA9PT0gbnVsbCAgfHwgXG4gICAgICAgICAgICBjbG9uZWRFbGVtZW50SGVpZ2h0ICE9PSBvcmlnaW5hbEVsZW1lbnRIZWlnaHQpIHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gVXBkYXRlIGNsb25lIGFuZCByZWZlcmVuY2UuXG4gICAgICAgICAgICBkb21FbGVtZW50LmNsb25lZEVsZW1lbnQgPSBvcmlnaW5hbEVsZW1lbnQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICAgICAgY2xvbmVkRWxlbWVudCA9IGRvbUVsZW1lbnQuY2xvbmVkRWxlbWVudDtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJZiB3ZSB1cGRhdGVkIHRoZSBjbG9uZWQgZWxlbWVudCwgd2Ugd2FudCB0byBhbHNvIHVwZGF0ZSB0aGVcbiAgICAgICAgICAgICAqIGVsZW1lbnQgcmVuZGVyZWQgaW4gdGhlIHBhcmVudCBjb250YWluZXIuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBjb250YWluZXJFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudC5jaGlsZHJlbltpXS5kZXRhY2goKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIENTUywgd2UgYWRkIGNsb25lZCBjbGFzcyBhbmQgcmVtb3ZlIGNsYXNzZXMgZnJvbSBvcmlnaW5hbEVsZW1lbnQgdGhhdCBkbyBub3QgYXBwbHkuXG4gICAgICAgICAgICBjbG9uZWRFbGVtZW50LmFkZENsYXNzKE11bHRpQ29sdW1uTGF5b3V0Q1NTLkNsb25lZEVsZW1lbnRUeXBlKTtcbiAgICAgICAgICAgIGNsb25lZEVsZW1lbnQucmVtb3ZlQ2xhc3NlcyhbTXVsdGlDb2x1bW5TdHlsZUNTUy5SZWdpb25Db250ZW50LCBNdWx0aUNvbHVtbkxheW91dENTUy5PcmlnaW5hbEVsZW1lbnRUeXBlXSk7XG4gICAgICAgICAgICBjb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGNsb25lZEVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoZG9tRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gRWxlbWVudFJlbmRlclR5cGUuY2FudmFzUmVuZGVyRWxlbWVudCkge1xuXG4gICAgICAgICAgICBjb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKG9yaWdpbmFsRWxlbWVudCk7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIGNsb25lQ2FudmFzKG9yaWdpbmFsQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCk6IEhUTUxDYW52YXNFbGVtZW50IHtcblxuICAgICAgICAgICAgICAgIC8vY3JlYXRlIGEgbmV3IGNhbnZhc1xuICAgICAgICAgICAgICAgIGxldCBjbG9uZWRDYW52YXM6IEhUTUxDYW52YXNFbGVtZW50ID0gb3JpZ2luYWxDYW52YXMuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxDYW52YXNFbGVtZW50O1xuICAgICAgICAgICAgICAgIGxldCBjb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgPSBjbG9uZWRDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vc2V0IGRpbWVuc2lvbnNcbiAgICAgICAgICAgICAgICBjbG9uZWRDYW52YXMud2lkdGggPSBvcmlnaW5hbENhbnZhcy53aWR0aDtcbiAgICAgICAgICAgICAgICBjbG9uZWRDYW52YXMuaGVpZ2h0ID0gb3JpZ2luYWxDYW52YXMuaGVpZ2h0O1xuXG4gICAgICAgICAgICAgICAgaWYoY2xvbmVkQ2FudmFzLndpZHRoID09PSAwIHx8IGNsb25lZENhbnZhcy5oZWlnaHQgPT09IDApe1xuICAgICAgICAgICAgICAgICAgICAvLyBEb250IHdhbnQgdG8gcmVuZGVyIGlmIHRoZSB3aWR0aCBpcyAwIGFzIGl0IHRocm93cyBhbiBlcnJvclxuICAgICAgICAgICAgICAgICAgICAvLyB3b3VsZCBoYXBwZW4gaWYgdGhlIG9sZCBjYW52YXMgaGFzbnQgYmVlbiByZW5kZXJlZCB5ZXQuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjbG9uZWRDYW52YXM7XG4gICAgICAgICAgICAgICAgfSBcblxuICAgICAgICAgICAgICAgIC8vYXBwbHkgdGhlIG9sZCBjYW52YXMgdG8gdGhlIG5ldyBvbmVcbiAgICAgICAgICAgICAgICBjb250ZXh0LmRyYXdJbWFnZShvcmlnaW5hbENhbnZhcywgMCwgMCk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvL3JldHVybiB0aGUgbmV3IGNhbnZhc1xuICAgICAgICAgICAgICAgIHJldHVybiBjbG9uZWRDYW52YXM7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjYW52YXMgPSBzZWFyY2hDaGlsZHJlbkZvck5vZGVUeXBlKG9yaWdpbmFsRWxlbWVudCwgXCJjYW52YXNcIik7XG4gICAgICAgICAgICBpZihjYW52YXMgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gY2xvbmVkRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgICAgICBjbG9uZWRFbGVtZW50LmNoaWxkcmVuW2ldLmRldGFjaCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjbG9uZWRFbGVtZW50LmFwcGVuZENoaWxkKGNsb25lQ2FudmFzKGNhbnZhcyBhcyBIVE1MQ2FudmFzRWxlbWVudCkpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnRhaW5lckVsZW1lbnQucmVtb3ZlQ2hpbGQob3JpZ2luYWxFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLyoqIFxuICAgICAgICAgKiBJZiB0aGUgY29udGFpbmVyIGVsZW1lbnQgaGFzIGxlc3MgdGhhbiAyIGNoaWxkcmVuIHdlIG5lZWQgdG8gbW92ZSB0aGVcbiAgICAgICAgICogb3JpZ2luYWwgZWxlbWVudCBiYWNrIGludG8gaXQuIEhvd2V2ZXIgc29tZSBlbGVtZW50cyBjb25zdGFudGx5IGdldCBtb3ZlZFxuICAgICAgICAgKiBpbiBhbmQgb3V0IGNhdXNpbmcgc29tZSB1bndhbnRlZCBiZWhhdmlvci4gVGhvc2UgZWxlbWVudCB3aWxsIGJlIHRhZ2dlZFxuICAgICAgICAgKiBhcyBzcGVjaWFsU2luZ2xlRWxlbWVudFJlbmRlciBzbyB3ZSBpZ25vcmUgdGhvc2UgZWxlbWVudHMgaGVyZS5cbiAgICAgICAgICovXG4gICAgICAgIGlmKGRvbUVsZW1lbnQuZWxlbWVudENvbnRhaW5lci5jaGlsZHJlbi5sZW5ndGggPCAyICYmIFxuICAgICAgICAgICAgZG9tRWxlbWVudC5lbGVtZW50VHlwZSAhPT0gRWxlbWVudFJlbmRlclR5cGUuc3BlY2lhbFNpbmdsZUVsZW1lbnRSZW5kZXIpIHtcblxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCJVcGRhdGluZyBkdWFsIHJlbmRlcmluZy5cIiwgZG9tRWxlbWVudCwgZG9tRWxlbWVudC5vcmlnaW5hbEVsZW1lbnQucGFyZW50RWxlbWVudCwgZG9tRWxlbWVudC5vcmlnaW5hbEVsZW1lbnQucGFyZW50RWxlbWVudD8uY2hpbGRFbGVtZW50Q291bnQpO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBNYWtlIHN1cmUgb3VyIENTUyBpcyB1cCB0byBkYXRlLlxuICAgICAgICAgICAgb3JpZ2luYWxFbGVtZW50LmFkZENsYXNzKE11bHRpQ29sdW1uTGF5b3V0Q1NTLk9yaWdpbmFsRWxlbWVudFR5cGUpO1xuICAgICAgICAgICAgY2xvbmVkRWxlbWVudC5hZGRDbGFzcyhNdWx0aUNvbHVtbkxheW91dENTUy5DbG9uZWRFbGVtZW50VHlwZSk7XG4gICAgICAgICAgICBjbG9uZWRFbGVtZW50LnJlbW92ZUNsYXNzZXMoW011bHRpQ29sdW1uU3R5bGVDU1MuUmVnaW9uQ29udGVudCwgTXVsdGlDb2x1bW5MYXlvdXRDU1MuT3JpZ2luYWxFbGVtZW50VHlwZV0pO1xuICAgIFxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IGNvbnRhaW5lckVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjb250YWluZXJFbGVtZW50LmNoaWxkcmVuW2ldLmRldGFjaCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChvcmlnaW5hbEVsZW1lbnQpO1xuICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChjbG9uZWRFbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdXAgdGhlIENTUyBjbGFzc2VzIGFuZCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgYmFzZWQgb24gdGhlIHBhc3NlZCBzZXR0aW5ncy5cbiAgICAgKiBAcGFyYW0gc2V0dGluZ3MgVGhlIHVzZXIgZGVmaW5lZCBzZXR0aW5ncyB0aGF0IGRldGVybWluZSB3aGF0IENTUyBpcyBzZXQgaGVyZS5cbiAgICAgKiBAcGFyYW0gbXVsdGlDb2x1bW5QYXJlbnQgVGhlIHBhcmVudCBvYmplY3QgdGhhdCB0aGUgY29sdW1uIGRpdnMgd2lsbCBiZSBjcmVhdGVkIHVuZGVyLlxuICAgICAqIEByZXR1cm5zIFRoZSBsaXN0IG9mIGNvbHVtbiBkaXZzIGNyZWF0ZWQgdW5kZXIgdGhlIHBhc3NlZCBwYXJlbnQgZWxlbWVudC5cbiAgICAgKi9cbiAgICBnZXRDb2x1bW5Db250ZW50RGl2cyhzZXR0aW5nczogTXVsdGlDb2x1bW5TZXR0aW5ncywgbXVsdGlDb2x1bW5QYXJlbnQ6IEhUTUxEaXZFbGVtZW50KTogSFRNTERpdkVsZW1lbnRbXSB7XG5cbiAgICAgICAgbGV0IGNvbHVtbkNvbnRlbnREaXZzOiBIVE1MRGl2RWxlbWVudFtdID0gW11cbiAgICAgICAgbGV0IHN0eWxlU3RyOiBzdHJpbmcgPSBcIlwiXG4gICAgICAgIGlmKHNldHRpbmdzLmNvbHVtblNwYWNpbmcgIT09IFwiXCIpIHtcblxuICAgICAgICAgICAgc3R5bGVTdHIgPSBgbWFyZ2luLWlubGluZTogJHtzZXR0aW5ncy5jb2x1bW5TcGFjaW5nfTtgXG4gICAgICAgIH1cblxuICAgICAgICBpZihzZXR0aW5ncy5udW1iZXJPZkNvbHVtbnMgPT09IDIpIHtcblxuICAgICAgICAgICAgc3dpdGNoKHNldHRpbmdzLmNvbHVtbkxheW91dCkge1xuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0LnN0YW5kYXJkKTpcbiAgICAgICAgICAgICAgICBjYXNlKENvbHVtbkxheW91dC5taWRkbGUpOlxuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0LmNlbnRlcik6XG4gICAgICAgICAgICAgICAgY2FzZShDb2x1bW5MYXlvdXQudGhpcmQpOlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2cy5wdXNoKG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uQ29udGVudH0gJHtNdWx0aUNvbHVtbkxheW91dENTUy5Ud29FcXVhbENvbHVtbnN9YFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGBtY20tY29sdW1uLXNwYWNlcmAsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyOiB7XCJzdHlsZVwiOiBzdHlsZVN0cn1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlR3b0VxdWFsQ29sdW1uc31gXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlKENvbHVtbkxheW91dC5sZWZ0KTpcbiAgICAgICAgICAgICAgICBjYXNlKENvbHVtbkxheW91dC5maXJzdCk6XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlR3b0NvbHVtbkxhcmdlfWBcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgbWNtLWNvbHVtbi1zcGFjZXJgLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cjoge1wic3R5bGVcIjogc3R5bGVTdHJ9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2cy5wdXNoKG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uQ29udGVudH0gJHtNdWx0aUNvbHVtbkxheW91dENTUy5Ud29Db2x1bW5TbWFsbH1gXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlKENvbHVtbkxheW91dC5yaWdodCk6XG4gICAgICAgICAgICAgICAgY2FzZShDb2x1bW5MYXlvdXQuc2Vjb25kKTpcbiAgICAgICAgICAgICAgICBjYXNlKENvbHVtbkxheW91dC5sYXN0KTpcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnMucHVzaChtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9ICR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuVHdvQ29sdW1uU21hbGx9YFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGBtY20tY29sdW1uLXNwYWNlcmAsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyOiB7XCJzdHlsZVwiOiBzdHlsZVN0cn1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlR3b0NvbHVtbkxhcmdlfWBcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKHNldHRpbmdzLm51bWJlck9mQ29sdW1ucyA9PT0gMykge1xuXG4gICAgICAgICAgICBzd2l0Y2goc2V0dGluZ3MuY29sdW1uTGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgY2FzZShDb2x1bW5MYXlvdXQuc3RhbmRhcmQpOlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2cy5wdXNoKG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uQ29udGVudH0gJHtNdWx0aUNvbHVtbkxheW91dENTUy5UaHJlZUVxdWFsQ29sdW1uc31gXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYG1jbS1jb2x1bW4tc3BhY2VyYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHI6IHtcInN0eWxlXCI6IHN0eWxlU3RyfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnMucHVzaChtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9ICR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuVGhyZWVFcXVhbENvbHVtbnN9YFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGBtY20tY29sdW1uLXNwYWNlcmAsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyOiB7XCJzdHlsZVwiOiBzdHlsZVN0cn1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlRocmVlRXF1YWxDb2x1bW5zfWBcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0LmxlZnQpOlxuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0LmZpcnN0KTpcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnMucHVzaChtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9ICR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuVGhyZWVDb2x1bW5fTGFyZ2V9YFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGBtY20tY29sdW1uLXNwYWNlcmAsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyOiB7XCJzdHlsZVwiOiBzdHlsZVN0cn1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlRocmVlQ29sdW1uX1NtYWxsfWBcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgbWNtLWNvbHVtbi1zcGFjZXJgLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cjoge1wic3R5bGVcIjogc3R5bGVTdHJ9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2cy5wdXNoKG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uQ29udGVudH0gJHtNdWx0aUNvbHVtbkxheW91dENTUy5UaHJlZUNvbHVtbl9TbWFsbH1gXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlKENvbHVtbkxheW91dC5taWRkbGUpOlxuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0LmNlbnRlcik6XG4gICAgICAgICAgICAgICAgY2FzZShDb2x1bW5MYXlvdXQuc2Vjb25kKTpcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnMucHVzaChtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9ICR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuVGhyZWVDb2x1bW5fU21hbGx9YFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGBtY20tY29sdW1uLXNwYWNlcmAsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyOiB7XCJzdHlsZVwiOiBzdHlsZVN0cn1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlRocmVlQ29sdW1uX0xhcmdlfWBcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgbWNtLWNvbHVtbi1zcGFjZXJgLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cjoge1wic3R5bGVcIjogc3R5bGVTdHJ9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2cy5wdXNoKG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uQ29udGVudH0gJHtNdWx0aUNvbHVtbkxheW91dENTUy5UaHJlZUNvbHVtbl9TbWFsbH1gXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICBjYXNlKENvbHVtbkxheW91dC5yaWdodCk6XG4gICAgICAgICAgICAgICAgY2FzZShDb2x1bW5MYXlvdXQudGhpcmQpOlxuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0Lmxhc3QpOlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2cy5wdXNoKG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uQ29udGVudH0gJHtNdWx0aUNvbHVtbkxheW91dENTUy5UaHJlZUNvbHVtbl9TbWFsbH1gXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYG1jbS1jb2x1bW4tc3BhY2VyYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHI6IHtcInN0eWxlXCI6IHN0eWxlU3RyfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnMucHVzaChtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9ICR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuVGhyZWVDb2x1bW5fU21hbGx9YFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGBtY20tY29sdW1uLXNwYWNlcmAsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyOiB7XCJzdHlsZVwiOiBzdHlsZVN0cn1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlRocmVlQ29sdW1uX0xhcmdlfWBcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBjb2x1bW5Db250ZW50RGl2cztcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgcmVuZGVyUmVnaW9uRWxlbWVudHNUb1NjcmVlbigpOiB2b2lkO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBleHBvcnRSZWdpb25FbGVtZW50c1RvUERGKHBkZlBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZDtcbiAgICBwdWJsaWMgYWJzdHJhY3QgcmVuZGVyUmVnaW9uRWxlbWVudHNUb0xpdmVQcmV2aWV3KHBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZFxufVxuXG5cbmZ1bmN0aW9uIGdldEVsZW1lbnRDbGllbnRIZWlnaHQoZWxlbWVudDogSFRNTEVsZW1lbnQsIHBhcmVudFJlbmRlckVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50KTogbnVtYmVyIHtcblxuICAgIGxldCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICBpZihoZWlnaHQgPT09IDApIHtcbiAgICAgICAgcGFyZW50UmVuZGVyRWxlbWVudC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgaGVpZ2h0ID0gZWxlbWVudC5jbGllbnRIZWlnaHRcbiAgICAgICAgcGFyZW50UmVuZGVyRWxlbWVudC5yZW1vdmVDaGlsZChlbGVtZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIGhlaWdodFxufSIsIi8qKlxuICogRmlsZTogL3NyYy9kb21fbWFuYWdlci9yZWdpb25hbF9tYW5hZ2Vycy9yZWdpb25ET01NYW5hZ2VyLnRzICAgICAgICAgICAgICAgICpcbiAqIENyZWF0ZWQgRGF0ZTogU3VuZGF5LCBNYXkgMjJuZCAyMDIyLCA3OjQ2IHBtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gKiBBdXRob3I6IENhbWVyb24gUm9iaW5zb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqIENvcHlyaWdodCAoYykgMjAyMiBDYW1lcm9uIFJvYmluc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gKi9cblxuaW1wb3J0IHsgRE9NT2JqZWN0LCBET01PYmplY3RUYWcsIFRhc2tMaXN0RE9NT2JqZWN0IH0gZnJvbSAnLi4vZG9tT2JqZWN0JztcbmltcG9ydCB7IE11bHRpQ29sdW1uU2V0dGluZ3MsIENvbnRlbnRPdmVyZmxvd1R5cGUgfSBmcm9tIFwiLi4vLi4vcmVnaW9uU2V0dGluZ3NcIjtcbmltcG9ydCB7IE11bHRpQ29sdW1uTGF5b3V0Q1NTLCBNdWx0aUNvbHVtblN0eWxlQ1NTIH0gZnJvbSAnLi4vLi4vdXRpbGl0aWVzL2Nzc0RlZmluaXRpb25zJztcbmltcG9ydCB7IE1hcmtkb3duUmVuZGVyQ2hpbGQgfSBmcm9tICdvYnNpZGlhbic7XG5pbXBvcnQgeyBSZWdpb25NYW5hZ2VyIH0gZnJvbSAnLi9yZWdpb25NYW5hZ2VyJztcbmltcG9ydCB7IGdldEhlYWRpbmdDb2xsYXBzZUVsZW1lbnQgfSBmcm9tICdzcmMvdXRpbGl0aWVzL2VsZW1lbnRSZW5kZXJUeXBlUGFyc2VyJztcblxuZXhwb3J0IGNsYXNzIFN0YW5kYXJkTXVsdGlDb2x1bW5SZWdpb25NYW5hZ2VyIGV4dGVuZHMgUmVnaW9uTWFuYWdlciB7XG5cblxuICAgIHB1YmxpYyByZW5kZXJSZWdpb25FbGVtZW50c1RvU2NyZWVuKCk6IHZvaWQge1xuXG4gICAgICAgIHRoaXMucmVuZGVyQ29sdW1uTWFya2Rvd24odGhpcy5yZWdpb25QYXJlbnQsIHRoaXMuZG9tTGlzdCwgdGhpcy5yZWdpb25hbFNldHRpbmdzKTtcbiAgICB9XG4gICAgcHVibGljIGV4cG9ydFJlZ2lvbkVsZW1lbnRzVG9QREYocGRmUGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcblxuICAgICAgICAvLyBEZWZhdWx0IHNldCBzaGFkb3cgdG8gb2ZmIGZvciBleHBvcnRpbmcgUERGc1xuICAgICAgICBsZXQgcmVuZGVyU2V0dGluZ3MgPSB0aGlzLnJlZ2lvbmFsU2V0dGluZ3M7XG4gICAgICAgIHJlbmRlclNldHRpbmdzLmRyYXdTaGFkb3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZW5kZXJDb2x1bW5NYXJrZG93bihwZGZQYXJlbnRFbGVtZW50LCB0aGlzLmRvbUxpc3Quc2xpY2UoKSwgcmVuZGVyU2V0dGluZ3MpO1xuICAgIH1cbiAgICBwdWJsaWMgcmVuZGVyUmVnaW9uRWxlbWVudHNUb0xpdmVQcmV2aWV3KHBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJDb2x1bW5NYXJrZG93bihwYXJlbnRFbGVtZW50LCB0aGlzLmRvbUxpc3QsIHRoaXMucmVnaW9uYWxTZXR0aW5ncyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgaW4gdGhlIGRhdGEgZm9yIHRoZSBtdWx0aS1jb2x1bW4gcmVnaW9uIGFuZCBzZXRzIHVwIHRoZSBcbiAgICAgKiB1c2VyIGRlZmluZWQgbnVtYmVyIG9mIGNoaWxkcmVuIHdpdGggdGhlIHByb3BlciBjc3MgY2xhc3NlcyB0byBiZSByZW5kZXJlZCBwcm9wZXJseS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcGFyZW50RWxlbWVudCBUaGUgZWxlbWVudCB0aGF0IHRoZSBtdWx0aS1jb2x1bW4gcmVnaW9uIHdpbGwgYmUgcmVuZGVyZWQgdW5kZXIuXG4gICAgICogQHBhcmFtIHJlZ2lvbkVsZW1lbnRzIFRoZSBsaXN0IG9mIERPTSBvYmplY3RzIHRoYXQgd2lsbCBiZSBjb3BwaWVkIHVuZGVyIHRoZSBwYXJlbnQgb2JqZWN0XG4gICAgICogQHBhcmFtIHNldHRpbmdzIFRoZSBzZXR0aW5ncyB0aGUgdXNlciBoYXMgZGVmaW5lZCBmb3IgdGhlIHJlZ2lvbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlbmRlckNvbHVtbk1hcmtkb3duKHBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50LCByZWdpb25FbGVtZW50czogRE9NT2JqZWN0W10sIHNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzKSB7XG5cbiAgICAgICAgbGV0IG11bHRpQ29sdW1uUGFyZW50ID0gY3JlYXRlRGl2KHtcbiAgICAgICAgICAgIGNsczogTXVsdGlDb2x1bW5MYXlvdXRDU1MuUmVnaW9uQ29sdW1uQ29udGFpbmVyRGl2LFxuICAgICAgICB9KTtcblxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQYXNzIG91ciBwYXJlbnQgZGl2IGFuZCBzZXR0aW5ncyB0byBwYXJzZXIgdG8gY3JlYXRlIHRoZSByZXF1aXJlZFxuICAgICAgICAgKiBjb2x1bW4gZGl2cyBhcyBjaGlsZHJlbiBvZiB0aGUgcGFyZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IGNvbHVtbkNvbnRlbnREaXZzID0gdGhpcy5nZXRDb2x1bW5Db250ZW50RGl2cyhzZXR0aW5ncywgbXVsdGlDb2x1bW5QYXJlbnQpO1xuICAgICAgICBpZihzZXR0aW5ncy5kcmF3U2hhZG93ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBtdWx0aUNvbHVtblBhcmVudC5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLlJlZ2lvblNoYWRvdyk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGNvbHVtbkNvbnRlbnREaXZzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZihzZXR0aW5ncy5kcmF3Qm9yZGVyID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnNbaV0uYWRkQ2xhc3MoTXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Cb3JkZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZihzZXR0aW5ncy5kcmF3U2hhZG93ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnNbaV0uYWRkQ2xhc3MoTXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5TaGFkb3cpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIG1hcmtkb3duIHJlbmRlcmVyIHRvIHBhcnNlIHRoZSBwYXNzZWQgbWFya2Rvd25cbiAgICAgICAgLy8gYmV0d2VlbiB0aGUgdGFncy5cbiAgICAgICAgbGV0IG1hcmtkb3duUmVuZGVyQ2hpbGQgPSBuZXcgTWFya2Rvd25SZW5kZXJDaGlsZChcbiAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gUmVtb3ZlIGV2ZXJ5IG90aGVyIGNoaWxkIGZyb20gdGhlIHBhcmVudCBzbyBcbiAgICAgICAgLy8gd2UgZG9udCBlbmQgdXAgd2l0aCBtdWx0aXBsZSBzZXRzIG9mIGRhdGEuIFRoaXMgc2hvdWxkXG4gICAgICAgIC8vIHJlYWxseSBvbmx5IG5lZWQgdG8gbG9vcCBvbmNlIGZvciBpID0gMCBidXQgbG9vcCBqdXN0XG4gICAgICAgIC8vIGluIGNhc2UuXG4gICAgICAgIGZvcihsZXQgaSA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuY2hpbGRyZW5baV0uZGV0YWNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZChtYXJrZG93blJlbmRlckNoaWxkLmNvbnRhaW5lckVsKTtcblxuICAgICAgICB0aGlzLmFwcGVuZEVsZW1lbnRzVG9Db2x1bW5zKHJlZ2lvbkVsZW1lbnRzLCBjb2x1bW5Db250ZW50RGl2cywgc2V0dGluZ3MpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXBwZW5kRWxlbWVudHNUb0NvbHVtbnMocmVnaW9uRWxlbWVudHM6IERPTU9iamVjdFtdLCBjb2x1bW5Db250ZW50RGl2czogSFRNTERpdkVsZW1lbnRbXSwgc2V0dGluZ3M6IE11bHRpQ29sdW1uU2V0dGluZ3MpIHtcblxuICAgICAgICBsZXQgY29sdW1uSW5kZXggPSAwO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlZ2lvbkVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgIGlmIChyZWdpb25FbGVtZW50c1tpXS50YWcgPT09IERPTU9iamVjdFRhZy5ub25lIHx8XG4gICAgICAgICAgICAgICAgcmVnaW9uRWxlbWVudHNbaV0udGFnID09PSBET01PYmplY3RUYWcuY29sdW1uQnJlYWspIHtcblxuICAgICAgICAgICAgICAgIC8vIFdlIHN0b3JlIHRoZSBlbGVtZW50cyBpbiBhIHdyYXBwZXIgY29udGFpbmVyIHVudGlsIHdlIGRldGVybWluZVxuICAgICAgICAgICAgICAgIGxldCBlbGVtZW50ID0gY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgY2xzOiBNdWx0aUNvbHVtbkxheW91dENTUy5Db2x1bW5EdWFsRWxlbWVudENvbnRhaW5lcixcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmKHNldHRpbmdzLmNvbnRlbnRPdmVyZmxvdyA9PT0gQ29udGVudE92ZXJmbG93VHlwZS5oaWRkZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5hZGRDbGFzcyhNdWx0aUNvbHVtbkxheW91dENTUy5Db250ZW50T3ZlcmZsb3dIaWRkZW4pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFkZENsYXNzKE11bHRpQ29sdW1uTGF5b3V0Q1NTLkNvbnRlbnRPdmVyZmxvd0F1dG9TY3JvbGwpXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVnaW9uRWxlbWVudHNbaV0uZWxlbWVudENvbnRhaW5lciA9IGVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2UganVzdCBtYWtlIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZWxlbWVudCB0byBkaXNwbGF5LlxuICAgICAgICAgICAgICAgIGxldCBjbG9uZWRFbGVtZW50ID0gcmVnaW9uRWxlbWVudHNbaV0ub3JpZ2luYWxFbGVtZW50LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgICAgICAgICBsZXQgaGVhZGluZ0NvbGxhcHNlRWxlbWVudCA9IGdldEhlYWRpbmdDb2xsYXBzZUVsZW1lbnQoY2xvbmVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYoaGVhZGluZ0NvbGxhcHNlRWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHJlbW92ZXMgdGhlIGNvbGxhcHNlIGFycm93IGZyb20gdGhlIHZpZXcgaWYgaXQgZXhpc3RzLlxuICAgICAgICAgICAgICAgICAgICBoZWFkaW5nQ29sbGFwc2VFbGVtZW50LmRldGFjaCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlZ2lvbkVsZW1lbnRzW2ldLmNsb25lZEVsZW1lbnQgPSBjbG9uZWRFbGVtZW50O1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY2xvbmVkRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVnaW9uRWxlbWVudHNbaV0gaW5zdGFuY2VvZiBUYXNrTGlzdERPTU9iamVjdCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZml4Q2xvbmVkQ2hlY2tMaXN0QnV0dG9ucyhyZWdpb25FbGVtZW50c1tpXSBhcyBUYXNrTGlzdERPTU9iamVjdCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgIT09IG51bGwgJiYgcmVnaW9uRWxlbWVudHNbaV0udGFnICE9PSBET01PYmplY3RUYWcuY29sdW1uQnJlYWspIHtcblxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2c1tjb2x1bW5JbmRleF0uYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogSWYgdGhlIHRhZyBpcyBhIGNvbHVtbiBicmVhayB3ZSB1cGRhdGUgdGhlIGNvbHVtbiBpbmRleCBhZnRlclxuICAgICAgICAgICAgICAgICAqIGFwcGVuZGluZyB0aGUgaXRlbSB0byB0aGUgY29sdW1uIGRpdi4gVGhpcyBrZWVwcyB0aGUgbWFpbiBET01cbiAgICAgICAgICAgICAgICAgKiBjbGVhbmVyIGJ5IHJlbW92aW5nIG90aGVyIGl0ZW1zIGFuZCBwbGFjaW5nIHRoZW0gYWxsIHdpdGhpblxuICAgICAgICAgICAgICAgICAqIGEgcmVnaW9uIGNvbnRhaW5lci5cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICBpZiAocmVnaW9uRWxlbWVudHNbaV0udGFnID09PSBET01PYmplY3RUYWcuY29sdW1uQnJlYWsgJiZcbiAgICAgICAgICAgICAgICAgICAgKGNvbHVtbkluZGV4ICsgMSkgPCBzZXR0aW5ncy5udW1iZXJPZkNvbHVtbnMpIHtcblxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5JbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuIiwiaW1wb3J0IHsgRE9NT2JqZWN0LCBET01PYmplY3RUYWcsIFRhc2tMaXN0RE9NT2JqZWN0IH0gZnJvbSAnLi4vZG9tT2JqZWN0JztcbmltcG9ydCB7IE11bHRpQ29sdW1uU2V0dGluZ3MsIENvbHVtbkxheW91dCwgU2luZ2xlQ29sdW1uU2l6ZSB9IGZyb20gXCIuLi8uLi9yZWdpb25TZXR0aW5nc1wiO1xuaW1wb3J0IHsgTXVsdGlDb2x1bW5MYXlvdXRDU1MsIE11bHRpQ29sdW1uU3R5bGVDU1MgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3NzRGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgTWFya2Rvd25SZW5kZXJDaGlsZCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IFJlZ2lvbk1hbmFnZXIgfSBmcm9tICcuL3JlZ2lvbk1hbmFnZXInO1xuaW1wb3J0IHsgZ2V0SGVhZGluZ0NvbGxhcHNlRWxlbWVudCB9IGZyb20gJ3NyYy91dGlsaXRpZXMvZWxlbWVudFJlbmRlclR5cGVQYXJzZXInO1xuXG5cbmV4cG9ydCBjbGFzcyBTaW5nbGVDb2x1bW5SZWdpb25NYW5hZ2VyIGV4dGVuZHMgUmVnaW9uTWFuYWdlciB7XG5cblxuICAgIHB1YmxpYyByZW5kZXJSZWdpb25FbGVtZW50c1RvU2NyZWVuKCk6IHZvaWQge1xuXG4gICAgICAgIHRoaXMucmVuZGVyQ29sdW1uTWFya2Rvd24odGhpcy5yZWdpb25QYXJlbnQsIHRoaXMuZG9tTGlzdCwgdGhpcy5yZWdpb25hbFNldHRpbmdzKTtcbiAgICB9XG4gICAgcHVibGljIGV4cG9ydFJlZ2lvbkVsZW1lbnRzVG9QREYocGRmUGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcblxuICAgICAgICAvLyBEZWZhdWx0IHNldCBzaGFkb3cgdG8gb2ZmIGZvciBleHBvcnRpbmcgUERGc1xuICAgICAgICBsZXQgcmVuZGVyU2V0dGluZ3MgPSB0aGlzLnJlZ2lvbmFsU2V0dGluZ3M7XG4gICAgICAgIHJlbmRlclNldHRpbmdzLmRyYXdTaGFkb3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZW5kZXJDb2x1bW5NYXJrZG93bihwZGZQYXJlbnRFbGVtZW50LCB0aGlzLmRvbUxpc3Quc2xpY2UoKSwgcmVuZGVyU2V0dGluZ3MpO1xuICAgIH1cbiAgICBwdWJsaWMgcmVuZGVyUmVnaW9uRWxlbWVudHNUb0xpdmVQcmV2aWV3KHBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJDb2x1bW5NYXJrZG93bihwYXJlbnRFbGVtZW50LCB0aGlzLmRvbUxpc3QsIHRoaXMucmVnaW9uYWxTZXR0aW5ncyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgaW4gdGhlIGRhdGEgZm9yIHRoZSBtdWx0aS1jb2x1bW4gcmVnaW9uIGFuZCBzZXRzIHVwIHRoZVxuICAgICAqIHVzZXIgZGVmaW5lZCBudW1iZXIgb2YgY2hpbGRyZW4gd2l0aCB0aGUgcHJvcGVyIGNzcyBjbGFzc2VzIHRvIGJlIHJlbmRlcmVkIHByb3Blcmx5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHBhcmVudEVsZW1lbnQgVGhlIGVsZW1lbnQgdGhhdCB0aGUgbXVsdGktY29sdW1uIHJlZ2lvbiB3aWxsIGJlIHJlbmRlcmVkIHVuZGVyLlxuICAgICAqIEBwYXJhbSByZWdpb25FbGVtZW50cyBUaGUgbGlzdCBvZiBET00gb2JqZWN0cyB0aGF0IHdpbGwgYmUgY29wcGllZCB1bmRlciB0aGUgcGFyZW50IG9iamVjdFxuICAgICAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgc2V0dGluZ3MgdGhlIHVzZXIgaGFzIGRlZmluZWQgZm9yIHRoZSByZWdpb24uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlbmRlckNvbHVtbk1hcmtkb3duKHBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50LCByZWdpb25FbGVtZW50czogRE9NT2JqZWN0W10sIHNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzKSB7XG5cbiAgICAgICAgbGV0IG11bHRpQ29sdW1uUGFyZW50ID0gY3JlYXRlRGl2KHtcbiAgICAgICAgICAgIGNsczogTXVsdGlDb2x1bW5MYXlvdXRDU1MuUmVnaW9uQ29sdW1uQ29udGFpbmVyRGl2LFxuICAgICAgICB9KTtcblxuICAgICAgICBpZihpc0xlZnRMYXlvdXQodGhpcy5yZWdpb25hbFNldHRpbmdzLmNvbHVtblBvc2l0aW9uKSl7XG4gICAgICAgICAgICBtdWx0aUNvbHVtblBhcmVudC5hZGRDbGFzcyhNdWx0aUNvbHVtbkxheW91dENTUy5TaW5nbGVDb2x1bW5MZWZ0TGF5b3V0KVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXNSaWdodExheW91dCh0aGlzLnJlZ2lvbmFsU2V0dGluZ3MuY29sdW1uUG9zaXRpb24pKSB7XG4gICAgICAgICAgICBtdWx0aUNvbHVtblBhcmVudC5hZGRDbGFzcyhNdWx0aUNvbHVtbkxheW91dENTUy5TaW5nbGVDb2x1bW5SaWdodExheW91dClcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmFkZENsYXNzKE11bHRpQ29sdW1uTGF5b3V0Q1NTLlNpbmdsZUNvbHVtbkNlbnRlckxheW91dClcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQYXNzIG91ciBwYXJlbnQgZGl2IGFuZCBzZXR0aW5ncyB0byBwYXJzZXIgdG8gY3JlYXRlIHRoZSByZXF1aXJlZFxuICAgICAgICAgKiBjb2x1bW4gZGl2cyBhcyBjaGlsZHJlbiBvZiB0aGUgcGFyZW50LlxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IGNvbHVtbkNvbnRlbnREaXYgPSB0aGlzLmNyZWF0ZUNvbHVtbkNvbnRlbnREaXZzKG11bHRpQ29sdW1uUGFyZW50KTtcbiAgICAgICAgaWYgKHNldHRpbmdzLmRyYXdCb3JkZXIgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXYuYWRkQ2xhc3MoTXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Cb3JkZXIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXR0aW5ncy5kcmF3U2hhZG93ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2LmFkZENsYXNzKE11bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uU2hhZG93KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENyZWF0ZSBtYXJrZG93biByZW5kZXJlciB0byBwYXJzZSB0aGUgcGFzc2VkIG1hcmtkb3duXG4gICAgICAgIC8vIGJldHdlZW4gdGhlIHRhZ3MuXG4gICAgICAgIGxldCBtYXJrZG93blJlbmRlckNoaWxkID0gbmV3IE1hcmtkb3duUmVuZGVyQ2hpbGQoXG4gICAgICAgICAgICBtdWx0aUNvbHVtblBhcmVudFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFJlbW92ZSBldmVyeSBvdGhlciBjaGlsZCBmcm9tIHRoZSBwYXJlbnQgc28gXG4gICAgICAgIC8vIHdlIGRvbnQgZW5kIHVwIHdpdGggbXVsdGlwbGUgc2V0cyBvZiBkYXRhLiBUaGlzIHNob3VsZFxuICAgICAgICAvLyByZWFsbHkgb25seSBuZWVkIHRvIGxvb3Agb25jZSBmb3IgaSA9IDAgYnV0IGxvb3AganVzdFxuICAgICAgICAvLyBpbiBjYXNlLlxuICAgICAgICBmb3IgKGxldCBpID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgcGFyZW50RWxlbWVudC5jaGlsZHJlbltpXS5kZXRhY2goKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKG1hcmtkb3duUmVuZGVyQ2hpbGQuY29udGFpbmVyRWwpO1xuXG4gICAgICAgIHRoaXMuYXBwZW5kRWxlbWVudHNUb0NvbHVtbnMocmVnaW9uRWxlbWVudHMsIGNvbHVtbkNvbnRlbnREaXYsIHNldHRpbmdzKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXBwZW5kRWxlbWVudHNUb0NvbHVtbnMocmVnaW9uRWxlbWVudHM6IERPTU9iamVjdFtdLCBjb2x1bW5Db250ZW50RGl2OiBIVE1MRGl2RWxlbWVudCwgc2V0dGluZ3M6IE11bHRpQ29sdW1uU2V0dGluZ3MpIHtcblxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVnaW9uRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgaWYgKHJlZ2lvbkVsZW1lbnRzW2ldLnRhZyA9PT0gRE9NT2JqZWN0VGFnLm5vbmUgfHxcbiAgICAgICAgICAgICAgICByZWdpb25FbGVtZW50c1tpXS50YWcgPT09IERPTU9iamVjdFRhZy5jb2x1bW5CcmVhaykge1xuXG4gICAgICAgICAgICAgICAgLy8gV2Ugc3RvcmUgdGhlIGVsZW1lbnRzIGluIGEgd3JhcHBlciBjb250YWluZXIgdW50aWwgd2UgZGV0ZXJtaW5lXG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSBjcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICBjbHM6IE11bHRpQ29sdW1uTGF5b3V0Q1NTLkNvbHVtbkR1YWxFbGVtZW50Q29udGFpbmVyLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJlZ2lvbkVsZW1lbnRzW2ldLmVsZW1lbnRDb250YWluZXIgPSBlbGVtZW50O1xuXG4gICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIGp1c3QgbWFrZSBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGVsZW1lbnQgdG8gZGlzcGxheS5cbiAgICAgICAgICAgICAgICBsZXQgY2xvbmVkRWxlbWVudCA9IHJlZ2lvbkVsZW1lbnRzW2ldLm9yaWdpbmFsRWxlbWVudC5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgbGV0IGhlYWRpbmdDb2xsYXBzZUVsZW1lbnQgPSBnZXRIZWFkaW5nQ29sbGFwc2VFbGVtZW50KGNsb25lZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmKGhlYWRpbmdDb2xsYXBzZUVsZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyByZW1vdmVzIHRoZSBjb2xsYXBzZSBhcnJvdyBmcm9tIHRoZSB2aWV3IGlmIGl0IGV4aXN0cy5cbiAgICAgICAgICAgICAgICAgICAgaGVhZGluZ0NvbGxhcHNlRWxlbWVudC5kZXRhY2goKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZWdpb25FbGVtZW50c1tpXS5jbG9uZWRFbGVtZW50ID0gY2xvbmVkRWxlbWVudDtcbiAgICAgICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGNsb25lZEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlZ2lvbkVsZW1lbnRzW2ldIGluc3RhbmNlb2YgVGFza0xpc3RET01PYmplY3QpIHtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpeENsb25lZENoZWNrTGlzdEJ1dHRvbnMocmVnaW9uRWxlbWVudHNbaV0gYXMgVGFza0xpc3RET01PYmplY3QsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdi5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjcmVhdGVDb2x1bW5Db250ZW50RGl2cyhtdWx0aUNvbHVtblBhcmVudDogSFRNTERpdkVsZW1lbnQpOiBIVE1MRGl2RWxlbWVudCB7XG5cbiAgICAgICAgbGV0IGNvbnRlbnREaXYgPSBtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9YFxuICAgICAgICB9KTtcblxuICAgICAgICBpZih0aGlzLnJlZ2lvbmFsU2V0dGluZ3MuY29sdW1uU2l6ZSA9PT0gU2luZ2xlQ29sdW1uU2l6ZS5zbWFsbCkge1xuICAgICAgICAgICAgY29udGVudERpdi5hZGRDbGFzcyhgJHtNdWx0aUNvbHVtbkxheW91dENTUy5TaW5nbGVDb2x1bW5TbWFsbH1gKVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYodGhpcy5yZWdpb25hbFNldHRpbmdzLmNvbHVtblNpemUgPT09IFNpbmdsZUNvbHVtblNpemUubGFyZ2UpIHtcbiAgICAgICAgICAgIGNvbnRlbnREaXYuYWRkQ2xhc3MoYCR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuU2luZ2xlQ29sdW1uTGFyZ2V9YClcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnRlbnREaXYuYWRkQ2xhc3MoYCR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuU2luZ2xlQ29sdW1uTWVkfWApXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY29udGVudERpdjtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzQ2VudGVyZWQobGF5b3V0OiBDb2x1bW5MYXlvdXQpOiBib29sZWFuIHtcblxuICAgIGlmKGxheW91dCA9PT0gQ29sdW1uTGF5b3V0LnN0YW5kYXJkIHx8XG4gICAgICAgbGF5b3V0ID09PSBDb2x1bW5MYXlvdXQubWlkZGxlICAgfHxcbiAgICAgICBsYXlvdXQgPT09IENvbHVtbkxheW91dC5jZW50ZXIgICB8fFxuICAgICAgIGxheW91dCA9PT0gQ29sdW1uTGF5b3V0LnNlY29uZCAgICApIHtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gaXNMZWZ0TGF5b3V0KGxheW91dDogQ29sdW1uTGF5b3V0KTogYm9vbGVhbiB7XG5cbiAgICBpZihsYXlvdXQgPT09IENvbHVtbkxheW91dC5sZWZ0IHx8XG4gICAgICAgbGF5b3V0ID09PSBDb2x1bW5MYXlvdXQuZmlyc3QgKSB7XG4gXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgfVxuIFxuICAgICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gaXNSaWdodExheW91dChsYXlvdXQ6IENvbHVtbkxheW91dCk6IGJvb2xlYW4ge1xuXG4gICAgaWYobGF5b3V0ID09PSBDb2x1bW5MYXlvdXQucmlnaHQgfHxcbiAgICAgICBsYXlvdXQgPT09IENvbHVtbkxheW91dC50aGlyZCB8fFxuICAgICAgIGxheW91dCA9PT0gQ29sdW1uTGF5b3V0Lmxhc3QgKSB7XG4gXG4gICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgfVxuIFxuICAgICByZXR1cm4gZmFsc2Vcbn0iLCIvKipcbiAqIEZpbGU6IC9zcmMvZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvYXV0b0xheW91dFJlZ2lvbk1hbmFnZXIudHMgICAgICAgICAqXG4gKiBDcmVhdGVkIERhdGU6IFN1bmRheSwgTWF5IDIybmQgMjAyMiwgMTA6MjMgcG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICogQXV0aG9yOiBDYW1lcm9uIFJvYmluc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgQ2FtZXJvbiBSb2JpbnNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICovXG5cbmltcG9ydCB7IERPTU9iamVjdCwgRE9NT2JqZWN0VGFnLCBUYXNrTGlzdERPTU9iamVjdCB9IGZyb20gJy4uL2RvbU9iamVjdCc7XG5pbXBvcnQgeyBNdWx0aUNvbHVtblNldHRpbmdzIH0gZnJvbSBcIi4uLy4uL3JlZ2lvblNldHRpbmdzXCI7XG5pbXBvcnQgeyBNdWx0aUNvbHVtbkxheW91dENTUywgTXVsdGlDb2x1bW5TdHlsZUNTUyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jc3NEZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBSZWdpb25NYW5hZ2VyIH0gZnJvbSAnLi9yZWdpb25NYW5hZ2VyJztcbmltcG9ydCB7IGdldEhlYWRpbmdDb2xsYXBzZUVsZW1lbnQsIGhhc0hlYWRlciB9IGZyb20gJ3NyYy91dGlsaXRpZXMvZWxlbWVudFJlbmRlclR5cGVQYXJzZXInO1xuXG5leHBvcnQgY2xhc3MgQXV0b0xheW91dFJlZ2lvbk1hbmFnZXIgZXh0ZW5kcyBSZWdpb25NYW5hZ2VyIHtcblxuICAgIHByaXZhdGUgcHJldmlvdXNDb2x1bW5IZWlnaHRzOiBudW1iZXJbXSA9IFtdXG5cbiAgICBwcml2YXRlIGNvbHVtblBhcmVudDogSFRNTERpdkVsZW1lbnQ7XG4gICAgcHJpdmF0ZSBjb2x1bW5EaXZzOiBIVE1MRGl2RWxlbWVudFtdO1xuXG4gICAgcHVibGljIHJlbmRlclJlZ2lvbkVsZW1lbnRzVG9TY3JlZW4oKTogdm9pZCB7XG5cbiAgICAgICAgIHRoaXMucmVuZGVyQ29sdW1uTWFya2Rvd24odGhpcy5yZWdpb25QYXJlbnQsIHRoaXMuZG9tTGlzdCwgdGhpcy5yZWdpb25hbFNldHRpbmdzKTtcbiAgICB9XG4gICAgcHVibGljIGV4cG9ydFJlZ2lvbkVsZW1lbnRzVG9QREYocGRmUGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcblxuICAgICAgICAvLyBEZWZhdWx0IHNldCBzaGFkb3cgdG8gb2ZmIGZvciBleHBvcnRpbmcgUERGc1xuICAgICAgICBsZXQgcmVuZGVyU2V0dGluZ3MgPSB0aGlzLnJlZ2lvbmFsU2V0dGluZ3M7XG4gICAgICAgIHJlbmRlclNldHRpbmdzLmRyYXdTaGFkb3cgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZW5kZXJDb2x1bW5NYXJrZG93bihwZGZQYXJlbnRFbGVtZW50LCB0aGlzLmRvbUxpc3Quc2xpY2UoKSwgcmVuZGVyU2V0dGluZ3MpO1xuICAgIH1cbiAgICBwdWJsaWMgcmVuZGVyUmVnaW9uRWxlbWVudHNUb0xpdmVQcmV2aWV3KHBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJDb2x1bW5NYXJrZG93bihwYXJlbnRFbGVtZW50LCB0aGlzLmRvbUxpc3QsIHRoaXMucmVnaW9uYWxTZXR0aW5ncyk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFRoaXMgZnVuY3Rpb24gdGFrZXMgaW4gdGhlIGRhdGEgZm9yIHRoZSBtdWx0aS1jb2x1bW4gcmVnaW9uIGFuZCBzZXRzIHVwIHRoZSBcbiAgICAgKiB1c2VyIGRlZmluZWQgbnVtYmVyIG9mIGNoaWxkcmVuIHdpdGggdGhlIHByb3BlciBjc3MgY2xhc3NlcyB0byBiZSByZW5kZXJlZCBwcm9wZXJseS5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0gcGFyZW50RWxlbWVudCBUaGUgZWxlbWVudCB0aGF0IHRoZSBtdWx0aS1jb2x1bW4gcmVnaW9uIHdpbGwgYmUgcmVuZGVyZWQgdW5kZXIuXG4gICAgICogQHBhcmFtIHJlZ2lvbkVsZW1lbnRzIFRoZSBsaXN0IG9mIERPTSBvYmplY3RzIHRoYXQgd2lsbCBiZSBjb3BwaWVkIHVuZGVyIHRoZSBwYXJlbnQgb2JqZWN0XG4gICAgICogQHBhcmFtIHNldHRpbmdzIFRoZSBzZXR0aW5ncyB0aGUgdXNlciBoYXMgZGVmaW5lZCBmb3IgdGhlIHJlZ2lvbi5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlbmRlckNvbHVtbk1hcmtkb3duKHBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50LCByZWdpb25FbGVtZW50czogRE9NT2JqZWN0W10sIHNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzKSB7XG5cbiAgICAgICAgbGV0IG11bHRpQ29sdW1uUGFyZW50ID0gY3JlYXRlRGl2KHtcbiAgICAgICAgICAgIGNsczogTXVsdGlDb2x1bW5MYXlvdXRDU1MuUmVnaW9uQ29sdW1uQ29udGFpbmVyRGl2LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jb2x1bW5QYXJlbnQgPSBtdWx0aUNvbHVtblBhcmVudDtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUGFzcyBvdXIgcGFyZW50IGRpdiBhbmQgc2V0dGluZ3MgdG8gcGFyc2VyIHRvIGNyZWF0ZSB0aGUgcmVxdWlyZWRcbiAgICAgICAgICogY29sdW1uIGRpdnMgYXMgY2hpbGRyZW4gb2YgdGhlIHBhcmVudC5cbiAgICAgICAgICovXG4gICAgICAgIHRoaXMuY29sdW1uRGl2cyA9IHRoaXMuZ2V0Q29sdW1uQ29udGVudERpdnMoc2V0dGluZ3MsIG11bHRpQ29sdW1uUGFyZW50KTtcblxuICAgICAgICBpZiAoc2V0dGluZ3MuZHJhd1NoYWRvdyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgbXVsdGlDb2x1bW5QYXJlbnQuYWRkQ2xhc3MoTXVsdGlDb2x1bW5TdHlsZUNTUy5SZWdpb25TaGFkb3cpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5EaXZzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MuZHJhd0JvcmRlciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGl2c1tpXS5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkJvcmRlcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZXR0aW5ncy5kcmF3U2hhZG93ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5EaXZzW2ldLmFkZENsYXNzKE11bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uU2hhZG93KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbW92ZSBldmVyeSBvdGhlciBjaGlsZCBmcm9tIHRoZSBwYXJlbnQgc28gXG4gICAgICAgIC8vIHdlIGRvbnQgZW5kIHVwIHdpdGggbXVsdGlwbGUgc2V0cyBvZiBkYXRhLiBUaGlzIHNob3VsZFxuICAgICAgICAvLyByZWFsbHkgb25seSBuZWVkIHRvIGxvb3Agb25jZSBmb3IgaSA9IDAgYnV0IGxvb3AganVzdFxuICAgICAgICAvLyBpbiBjYXNlLlxuICAgICAgICBmb3IgKGxldCBpID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgcGFyZW50RWxlbWVudC5jaGlsZHJlbltpXS5kZXRhY2goKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKG11bHRpQ29sdW1uUGFyZW50KTtcblxuICAgICAgICB0aGlzLmFwcGVuZEVsZW1lbnRzVG9Db2x1bW5zKHJlZ2lvbkVsZW1lbnRzLCB0aGlzLmNvbHVtbkRpdnMsIHNldHRpbmdzKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGVuZEVsZW1lbnRzVG9Db2x1bW5zKHJlZ2lvbkVsZW1lbnRzOiBET01PYmplY3RbXSwgY29sdW1uQ29udGVudERpdnM6IEhUTUxEaXZFbGVtZW50W10sIHNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzKSB7XG5cbiAgICAgICAgZnVuY3Rpb24gYmFsYW5jZUVsZW1lbnRzKCkge1xuXG4gICAgICAgICAgICBsZXQgdG90YWxIZWlnaHQgPSByZWdpb25FbGVtZW50cy5tYXAoKGVsOiBET01PYmplY3QsIGluZGV4OiBudW1iZXIpID0+IHsgXG5cbiAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gYXR0ZW1wdCB0byB1cGRhdGUgdGhlIGVsZW1lbnRSZW5kZXJlZEhlaWdodCBpZiBpdCBpcyAwIGFuZCBpZiBpdCBpcyBub3QgYW4gdW5yZW5kZXJlZCBlbGVtZW50IHN1Y2ggYXMgYSBlbmRyZWdpb24gdGFnLlxuICAgICAgICAgICAgICAgIGlmKGVsLmVsZW1lbnRSZW5kZXJlZEhlaWdodCA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBlbC50YWcgIT09IERPTU9iamVjdFRhZy5jb2x1bW5CcmVhayAmJlxuICAgICAgICAgICAgICAgICAgICBlbC50YWcgIT09IERPTU9iamVjdFRhZy5lbmRSZWdpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgZWwudGFnICE9PSBET01PYmplY3RUYWcucmVnaW9uU2V0dGluZ3MgJiZcbiAgICAgICAgICAgICAgICAgICAgZWwudGFnICE9PSBET01PYmplY3RUYWcuc3RhcnRSZWdpb24pIHtcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGVsZW1lbnQgdG8gcmVuZGVyZWQgZGl2IHNvIHdlIGNhbiBleHRyYWN0IHRoZSByZW5kZXJlZCBoZWlnaHQuXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzWzBdLmFwcGVuZENoaWxkKGVsLm9yaWdpbmFsRWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgZWwuZWxlbWVudFJlbmRlcmVkSGVpZ2h0ID0gZWwub3JpZ2luYWxFbGVtZW50LmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2c1swXS5yZW1vdmVDaGlsZChlbC5vcmlnaW5hbEVsZW1lbnQpXG4gICAgICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgICAgIHJldHVybiBlbC5lbGVtZW50UmVuZGVyZWRIZWlnaHQgXG4gICAgICAgICAgICB9KS5yZWR1Y2UoKHByZXY6IG51bWJlciwgY3VycjogbnVtYmVyKSA9PiB7IHJldHVybiBwcmV2ICsgY3VyciB9LCAwKTtcbiAgICAgICAgICAgIGxldCBtYXhDb2x1bW5Db250ZW50SGVpZ2h0ID0gTWF0aC50cnVuYyh0b3RhbEhlaWdodCAvIHNldHRpbmdzLm51bWJlck9mQ29sdW1ucyk7XG5cbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBjb2x1bW5Db250ZW50RGl2cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSBjb2x1bW5Db250ZW50RGl2c1tpXS5jaGlsZHJlbi5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2c1tpXS5jaGlsZHJlbltqXS5kZXRhY2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBjb2x1bW5JbmRleCA9IDA7XG4gICAgICAgICAgICBsZXQgY3VycmVudENvbHVtbkhlaWdodCA9IDA7XG4gICAgICAgICAgICBmdW5jdGlvbiBjaGVja1Nob3VsZFN3aXRjaENvbHVtbnMobmV4dEVsZW1lbnRIZWlnaHQ6IG51bWJlcikge1xuICAgIFxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50Q29sdW1uSGVpZ2h0ICsgbmV4dEVsZW1lbnRIZWlnaHQgPiBtYXhDb2x1bW5Db250ZW50SGVpZ2h0ICYmXG4gICAgICAgICAgICAgICAgICAgIChjb2x1bW5JbmRleCArIDEpIDwgc2V0dGluZ3MubnVtYmVyT2ZDb2x1bW5zKSB7XG4gICAgXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5IZWlnaHQgPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWdpb25FbGVtZW50cy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlZ2lvbkVsZW1lbnRzW2ldLnRhZyA9PT0gRE9NT2JqZWN0VGFnLm5vbmUgfHxcbiAgICAgICAgICAgICAgICAgICAgcmVnaW9uRWxlbWVudHNbaV0udGFnID09PSBET01PYmplY3RUYWcuY29sdW1uQnJlYWspIHtcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIEhlcmUgd2UgY2hlY2sgaWYgd2UgbmVlZCB0byBzd2FwIHRvIHRoZSBuZXh0IGNvbHVtbiBmb3IgdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAgICAgICAgICAgICAgICAgICAgICogSWYgdGhlIHVzZXIgd2FudHMgdG8ga2VlcCBoZWFkaW5ncyB3aXRoIHRoZSBjb250ZW50IGJlbG93IGl0IHdlIGFsc28gbWFrZSBzdXJlXG4gICAgICAgICAgICAgICAgICAgICAqIHRoYXQgdGhlIGxhc3QgaXRlbSBpbiBhIGNvbHVtbiBpcyBub3QgYSBoZWFkZXIgZWxlbWVudCBieSB1c2luZyB0aGUgaGVhZGVyIGFuZFxuICAgICAgICAgICAgICAgICAgICAgKiB0aGUgbmV4dCBlbGVtZW50J3MgaGVpZ2h0IGFzIHRoZSBoZWlnaHQgdmFsdWUuIFxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgaWYoaGFzSGVhZGVyKHJlZ2lvbkVsZW1lbnRzW2ldLm9yaWdpbmFsRWxlbWVudCkgPT09IHRydWUpIHsgLy8gVE9ETzogQWRkIHRoaXMgYXMgc2VsZWN0YWJsZSBvcHRpb24uXG4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGVyQW5kTmV4dEVsZW1lbnRIZWlnaHQgPSByZWdpb25FbGVtZW50c1tpXS5lbGVtZW50UmVuZGVyZWRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihpIDwgcmVnaW9uRWxlbWVudHMubGVuZ3RoIC0gMSkge1xuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlckFuZE5leHRFbGVtZW50SGVpZ2h0ICs9IHJlZ2lvbkVsZW1lbnRzW2kgKyAxXS5lbGVtZW50UmVuZGVyZWRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Nob3VsZFN3aXRjaENvbHVtbnMoaGVhZGVyQW5kTmV4dEVsZW1lbnRIZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tTaG91bGRTd2l0Y2hDb2x1bW5zKHJlZ2lvbkVsZW1lbnRzW2ldLmVsZW1lbnRSZW5kZXJlZEhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudENvbHVtbkhlaWdodCArPSByZWdpb25FbGVtZW50c1tpXS5lbGVtZW50UmVuZGVyZWRIZWlnaHRcbiAgICBcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIFdlIHN0b3JlIHRoZSBlbGVtZW50cyBpbiBhIHdyYXBwZXIgY29udGFpbmVyIHVudGlsIHdlIGRldGVybWluZSBpZiB3ZSB3YW50IHRvIFxuICAgICAgICAgICAgICAgICAgICAgKiB1c2UgdGhlIG9yaWdpbmFsIGVsZW1lbnQgb3IgYSBjbG9uZSBvZiB0aGUgZWxlbWVudC4gVGhpcyBoZWxwcyB1cyBieSBhbGxvd2luZyBcbiAgICAgICAgICAgICAgICAgICAgICogdXMgdG8gY3JlYXRlIGEgdmlzdWFsIG9ubHkgY2xvbmUgd2hpbGUgdGhlIHVwZGF0ZSBsb29wIG1vdmVzIHRoZSBvcmlnaW5hbCBlbGVtZW50IFxuICAgICAgICAgICAgICAgICAgICAgKiBpbnRvIHRoZSBjb2x1bW5zLlxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSBjcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBNdWx0aUNvbHVtbkxheW91dENTUy5Db2x1bW5EdWFsRWxlbWVudENvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lvbkVsZW1lbnRzW2ldLmVsZW1lbnRDb250YWluZXIgPSBlbGVtZW50O1xuICAgIFxuICAgICAgICAgICAgICAgICAgICBsZXQgY2xvbmVkRWxlbWVudCA9IHJlZ2lvbkVsZW1lbnRzW2ldLmNsb25lZEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmKHJlZ2lvbkVsZW1lbnRzW2ldLmNsb25lZEVsZW1lbnQgPT09IG51bGwpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmVkRWxlbWVudCA9IHJlZ2lvbkVsZW1lbnRzW2ldLm9yaWdpbmFsRWxlbWVudC5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaGVhZGluZ0NvbGxhcHNlRWxlbWVudCA9IGdldEhlYWRpbmdDb2xsYXBzZUVsZW1lbnQoY2xvbmVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZihoZWFkaW5nQ29sbGFwc2VFbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyByZW1vdmVzIHRoZSBjb2xsYXBzZSBhcnJvdyBmcm9tIHRoZSB2aWV3IGlmIGl0IGV4aXN0cy5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkaW5nQ29sbGFwc2VFbGVtZW50LmRldGFjaCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbkVsZW1lbnRzW2ldLmNsb25lZEVsZW1lbnQgPSBjbG9uZWRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY2xvbmVkRWxlbWVudCk7XG4gICAgXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWdpb25FbGVtZW50c1tpXSBpbnN0YW5jZW9mIFRhc2tMaXN0RE9NT2JqZWN0KSB7XG4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZpeENsb25lZENoZWNrTGlzdEJ1dHRvbnMocmVnaW9uRWxlbWVudHNbaV0gYXMgVGFza0xpc3RET01PYmplY3QsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50ICE9PSBudWxsICYmIFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnNbY29sdW1uSW5kZXhdICYmIFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uRWxlbWVudHNbaV0udGFnICE9PSBET01PYmplY3RUYWcuY29sdW1uQnJlYWspIHtcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzW2NvbHVtbkluZGV4XS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbkVsZW1lbnRzW2ldLmVsZW1lbnRSZW5kZXJlZEhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBJZiB0aGUgdGFnIGlzIGEgY29sdW1uIGJyZWFrIHdlIHVwZGF0ZSB0aGUgY29sdW1uIGluZGV4IGFmdGVyXG4gICAgICAgICAgICAgICAgICAgICAqIGFwcGVuZGluZyB0aGUgaXRlbSB0byB0aGUgY29sdW1uIGRpdi4gVGhpcyBrZWVwcyB0aGUgbWFpbiBET01cbiAgICAgICAgICAgICAgICAgICAgICogY2xlYW5lciBieSByZW1vdmluZyBvdGhlciBpdGVtcyBhbmQgcGxhY2luZyB0aGVtIGFsbCB3aXRoaW5cbiAgICAgICAgICAgICAgICAgICAgICogYSByZWdpb24gY29udGFpbmVyLlxuICAgICAgICAgICAgICAgICAgICAgKiBcbiAgICAgICAgICAgICAgICAgICAgICogUmVtb3ZpbmcgdGhlIGVuZCBjb2x1bW4gdGFnIGFzIGFuIG9wdGlvbiBmb3Igbm93LlxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHJlZ2lvbkVsZW1lbnRzW2ldLnRhZyA9PT0gRE9NT2JqZWN0VGFnLmNvbHVtbkJyZWFrICYmXG4gICAgICAgICAgICAgICAgICAgIC8vICAgIChjb2x1bW5JbmRleCArIDEpIDwgc2V0dGluZ3MubnVtYmVyT2ZDb2x1bW5zKSB7XG4gICAgXG4gICAgICAgICAgICAgICAgICAgIC8vICAgICBjb2x1bW5JbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAvLyAgICAgY3VycmVudENvbHVtbkhlaWdodCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogQXR0ZW1wdCB0byBiYWxhbmNlZCB0aGUgZWxlbWVudHMuIFdlIG5lZWQgdG8gaXRlcmF0ZSBvdmVyIHRoZSBlbGVtZW50cyBtdWx0aXBsZSB0aW1lcyBiZWNhdXNlXG4gICAgICAgICAqIG91ciBpbml0aWFsIGJhbGFuY2UgZXN0aW1hdGUgbWF5IG5vdCBiZSBwZXJmZWN0bHkgYmFsYW5jZWQgZHVlIHRvIGRpZmZlcmVudCBjb2x1bW4gd2lkdGhzIGNhdXNpbmcgXG4gICAgICAgICAqIGVsZW1lbnRzIHdpdGhpbiB0aGVtIHRvIGJlIG9mIGRpZmZlcmVudCBoZWlnaHRzLiBUaGlzIGNhbiBjYXVzZSB0aGUgZWxlbWVudHMgdG8ganVtcCBhcm91bmQgb24gXG4gICAgICAgICAqIHN1YnNpcXVlbnQgdXBkYXRlIGxvb3BzIHdoaWNoIGlzIG5vdCBpZGVhbC4gSGVyZSB3ZSByZW5kZXIgdGhlIGVsZW1lbnRzIHRvIHRoZSBzY3JlZW4gYW5kIHVwZGF0ZSBcbiAgICAgICAgICogdGhlaXIgaGVpZ2h0IGFmdGVyIGJlaW5nIHJlbmRlcmVkIGludG8gdGhlIGVzdGltYXRlZCBwb3NpdGlvbi4gXG4gICAgICAgICAqIFxuICAgICAgICAgKiBPbmNlIGV2ZXJ5dGhpbmcgaXMgcmVuZGVyZWQgd2UgY2hlY2sgYWxsIG9mIHRoZSBjb2x1bW4gaGVpZ2h0cyBhZ2FpbnN0IG91ciBsYXN0IGl0ZXJhdGlvbiBhbmQgXG4gICAgICAgICAqIGlmIG5vdGhpbmcgaGFzIGNoYW5nZWQgd2Uga25vdyB3ZSBhcmUgYmFsYW5jZWQuXG4gICAgICAgICAqIFxuICAgICAgICAgKiBUaGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3YXkgb2YgYWNjb21wbGlzaGluZyB0aGlzIHRhc2sgYnV0IHRoaXMgd29ya3MgZm9yIHRoZSB0aW1lIGJlaW5nLlxuICAgICAgICAgKi9cbiAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBiYWxhbmNlRWxlbWVudHMoKVxuXG4gICAgICAgICAgICBsZXQgYmFsYW5jZWQgPSB0cnVlO1xuICAgICAgICAgICAgZm9yKGxldCBqID0gMDsgaiA8IGNvbHVtbkNvbnRlbnREaXZzLmxlbmd0aDsgaisrKSB7XG5cbiAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY29sdW1uIGhlaWdodHMgYXJlIHVuZGVmaW5lZCB3ZSBzZXQgZGVmYXVsdCB0byB6ZXJvIHNvIG5vdCB0byBlbmNvdW50ZXIgYW4gZXJyb3IuXG4gICAgICAgICAgICAgICAgaWYoIXRoaXMucHJldmlvdXNDb2x1bW5IZWlnaHRzW2pdKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNDb2x1bW5IZWlnaHRzLnB1c2goMClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIHJlbmRlciBoZWlnaHQgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91cyBoZWlnaHQgd2UgYXJlIHN0aWxsIGJhbGFuY2luZy5cbiAgICAgICAgICAgICAgICBpZih0aGlzLnByZXZpb3VzQ29sdW1uSGVpZ2h0c1tqXSAhPT0gY29sdW1uQ29udGVudERpdnNbal0uY2xpZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNDb2x1bW5IZWlnaHRzW2pdID0gY29sdW1uQ29udGVudERpdnNbal0uY2xpZW50SGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIGJhbGFuY2VkID0gZmFsc2VcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGlmIHdlIG1hZGUgaXQgb3V0IG9mIHRoZSBsb29wIGFuZCBhbGwgb2YgdGhlIGNvbHVtbnMgYXJlIHRoZSBzYW1lIGhlaWdodCBhcyBsYXN0IHVwZGF0ZVxuICAgICAgICAgICAgLy8gd2UncmUgYmFsYW5jZWQgc28gd2UgY2FuIGJyZWFrIG91dCBvZiB0aGUgbG9vcC5cbiAgICAgICAgICAgIGlmKGJhbGFuY2VkID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlUmVuZGVyZWRNYXJrZG93bigpIHtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZG9tTGlzdC5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICBsZXQgZWwgPSB0aGlzLmRvbUxpc3RbaV1cbiAgICAgICAgICAgIGxldCBvcmlnaW5hbENsaWVudEhlaWdodCA9IDA7XG4gICAgICAgICAgICBpZiAoZWwub3JpZ2luYWxFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgb3JpZ2luYWxDbGllbnRIZWlnaHQgPSBlbC5vcmlnaW5hbEVsZW1lbnQuY2xpZW50SGVpZ2h0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgY2xvbmVkQ2xpZW50SGVpZ2h0ID0gMDtcbiAgICAgICAgICAgIGlmIChlbC5jbG9uZWRFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgY2xvbmVkQ2xpZW50SGVpZ2h0ID0gZWwuY2xvbmVkRWxlbWVudC5jbGllbnRIZWlnaHRcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9yaWdpbmFsQ2xpZW50SGVpZ2h0IDwgY2xvbmVkQ2xpZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kb21MaXN0W2ldLmVsZW1lbnRSZW5kZXJlZEhlaWdodCA9IGNsb25lZENsaWVudEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9tTGlzdFtpXS5lbGVtZW50UmVuZGVyZWRIZWlnaHQgPSBvcmlnaW5hbENsaWVudEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2YWxpZENvbHVtbnMgPSB0cnVlO1xuICAgICAgICBpZih0aGlzLmNvbHVtblBhcmVudCAhPT0gbnVsbCAmJiB0aGlzLmNvbHVtbkRpdnMgIT09IG51bGwgJiYgdGhpcy5jb2x1bW5EaXZzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAgIHRoaXMuY29sdW1uRGl2cy5sZW5ndGggPT09IHRoaXMucmVnaW9uYWxTZXR0aW5ncy5udW1iZXJPZkNvbHVtbnMpIHtcblxuICAgICAgICAgICAgbGV0IHRvdGFsSGVpZ2h0ID0gdGhpcy5kb21MaXN0Lm1hcCgoZWw6IERPTU9iamVjdCwgaW5kZXg6IG51bWJlcikgPT4geyBcblxuICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBhdHRlbXB0IHRvIHVwZGF0ZSB0aGUgZWxlbWVudFJlbmRlcmVkSGVpZ2h0IGlmIGl0IGlzIDAgYW5kIGlmIGl0IGlzIG5vdCBhbiB1bnJlbmRlcmVkIGVsZW1lbnQgc3VjaCBhcyBhIGVuZHJlZ2lvbiB0YWcuXG4gICAgICAgICAgICAgICAgaWYoZWwuZWxlbWVudFJlbmRlcmVkSGVpZ2h0ID09PSAwICYmXG4gICAgICAgICAgICAgICAgICAgIGVsLnRhZyAhPT0gRE9NT2JqZWN0VGFnLmNvbHVtbkJyZWFrICYmXG4gICAgICAgICAgICAgICAgICAgIGVsLnRhZyAhPT0gRE9NT2JqZWN0VGFnLmVuZFJlZ2lvbiAmJlxuICAgICAgICAgICAgICAgICAgICBlbC50YWcgIT09IERPTU9iamVjdFRhZy5yZWdpb25TZXR0aW5ncyAmJlxuICAgICAgICAgICAgICAgICAgICBlbC50YWcgIT09IERPTU9iamVjdFRhZy5zdGFydFJlZ2lvbikge1xuICAgIFxuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgZWxlbWVudCB0byByZW5kZXJlZCBkaXYgc28gd2UgY2FuIGV4dHJhY3QgdGhlIHJlbmRlcmVkIGhlaWdodC5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5QYXJlbnQuYXBwZW5kQ2hpbGQoZWwub3JpZ2luYWxFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICBlbC5lbGVtZW50UmVuZGVyZWRIZWlnaHQgPSBlbC5vcmlnaW5hbEVsZW1lbnQuY2xpZW50SGVpZ2h0XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uUGFyZW50LnJlbW92ZUNoaWxkKGVsLm9yaWdpbmFsRWxlbWVudClcbiAgICAgICAgICAgICAgICB9XG4gICAgXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsLmVsZW1lbnRSZW5kZXJlZEhlaWdodCBcbiAgICAgICAgICAgIH0pLnJlZHVjZSgocHJldjogbnVtYmVyLCBjdXJyOiBudW1iZXIpID0+IHsgcmV0dXJuIHByZXYgKyBjdXJyIH0sIDApO1xuICAgICAgICAgICAgbGV0IG1heENvbHVtbkNvbnRlbnRIZWlnaHQgPSBNYXRoLnRydW5jKHRvdGFsSGVpZ2h0IC8gdGhpcy5yZWdpb25hbFNldHRpbmdzLm51bWJlck9mQ29sdW1ucyk7XG5cbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCB0aGlzLmNvbHVtbkRpdnMubGVuZ3RoIC0gMTsgaSsrKSB7XG5cbiAgICAgICAgICAgICAgICBsZXQgY29sdW1uSGVpZ2h0ID0gMFxuICAgICAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCB0aGlzLmNvbHVtbkRpdnNbaV0uY2hpbGRyZW4ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uSGVpZ2h0ICs9IHRoaXMuY29sdW1uRGl2c1tpXS5jaGlsZHJlbltqXS5jbGllbnRIZWlnaHRcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZihjb2x1bW5IZWlnaHQgPiBtYXhDb2x1bW5Db250ZW50SGVpZ2h0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbGlkQ29sdW1ucyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZih2YWxpZENvbHVtbnMgPT09IGZhbHNlKSB7XG5cbiAgICAgICAgICAgIHRoaXMucmVuZGVyQ29sdW1uTWFya2Rvd24odGhpcy5yZWdpb25QYXJlbnQsIHRoaXMuZG9tTGlzdCwgdGhpcy5yZWdpb25hbFNldHRpbmdzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN1cGVyLnVwZGF0ZVJlbmRlcmVkTWFya2Rvd24oKTtcbiAgICB9XG59XG5cbiIsIi8qKlxuICogRmlsZTogL3NyYy9kb21fbWFuYWdlci9yZWdpb25hbF9tYW5hZ2Vycy9yZWdpb25NYW5hZ2VyQ29udGFpbmVyLnRzICAgICAgICAgICpcbiAqIENyZWF0ZWQgRGF0ZTogU3VuZGF5LCBNYXkgMjJuZCAyMDIyLCA3OjUwIHBtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gKiBBdXRob3I6IENhbWVyb24gUm9iaW5zb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqIENvcHlyaWdodCAoYykgMjAyMiBDYW1lcm9uIFJvYmluc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gKi9cblxuaW1wb3J0IHsgcGFyc2VDb2x1bW5TZXR0aW5ncywgcGFyc2VTaW5nbGVDb2x1bW5TZXR0aW5ncyB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvc2V0dGluZ3NQYXJzZXJcIjtcbmltcG9ydCB7IERPTU9iamVjdCB9IGZyb20gJy4uL2RvbU9iamVjdCc7XG5pbXBvcnQgeyBNdWx0aUNvbHVtblNldHRpbmdzLCBnZXREZWZhdWx0TXVsdGlDb2x1bW5TZXR0aW5ncyB9IGZyb20gXCIuLi8uLi9yZWdpb25TZXR0aW5nc1wiO1xuaW1wb3J0IHsgRmlsZURPTU1hbmFnZXIgfSBmcm9tICcuLi9kb21NYW5hZ2VyJztcbmltcG9ydCB7IFN0YW5kYXJkTXVsdGlDb2x1bW5SZWdpb25NYW5hZ2VyIGFzIFN0YW5kYXJkTXVsdGlDb2x1bW5SZWdpb25NYW5hZ2VyIH0gZnJvbSAnLi9zdGFuZGFyZE11bHRpQ29sdW1uUmVnaW9uTWFuYWdlcic7XG5pbXBvcnQgeyBTaW5nbGVDb2x1bW5SZWdpb25NYW5hZ2VyIH0gZnJvbSBcIi4vc2luZ2xlQ29sdW1uUmVnaW9uTWFuYWdlclwiO1xuaW1wb3J0IHsgUmVnaW9uTWFuYWdlciB9IGZyb20gXCIuL3JlZ2lvbk1hbmFnZXJcIjtcbmltcG9ydCB7IEF1dG9MYXlvdXRSZWdpb25NYW5hZ2VyIH0gZnJvbSAnLi9hdXRvTGF5b3V0UmVnaW9uTWFuYWdlcic7XG5cbi8qKlxuICogVGhpcyBjbGFzcyBhY3RzIGFzIGFuIGFic3RyYWN0aW9uIGZvciB0aGUgYWN0dWFsIHJlZ2lvbmFsIG1hbmFnZXIuIEl0IGlzIHVzZWQgdG8gdXBkYXRlIHRoZVxuICogc3ViY2xhc3Mgb2YgUmVnaW9uYWxNYW5hZ2VyIGRlcGVuZGluZyBvbiB1c2VyIHByZWZlcmVuY2VzIHRvIG1ha2UgcmVuZGVyaW5nIG1vcmUgc2ltcGxpZmllZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlZ2lvbk1hbmFnZXJDb250YWluZXIge1xuXG4gICAgcHJvdGVjdGVkIHJlZ2lvbjogUmVnaW9uTWFuYWdlcjtcbiAgICBjb25zdHJ1Y3RvcihwYXJlbnRGaWxlTWFuYWdlcjogRmlsZURPTU1hbmFnZXIsIHJlZ2lvbktleTogc3RyaW5nLCByb290RWxlbWVudDogSFRNTEVsZW1lbnQsIHJlZ2lvblBhcmVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5yZWdpb24gPSBuZXcgU3RhbmRhcmRNdWx0aUNvbHVtblJlZ2lvbk1hbmFnZXIoY3JlYXRlRGVmYXVsdFJlZ2lvbk1hbmFnZXJEYXRhKHJlZ2lvblBhcmVudCwgcGFyZW50RmlsZU1hbmFnZXIsIHJlZ2lvbktleSwgcm9vdEVsZW1lbnQpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UmVnaW9uKCk6IFJlZ2lvbk1hbmFnZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWdpb247XG4gICAgfVxuXG4gICAgcHVibGljIHNldFJlZ2lvblNldHRpbmdzKHNldHRpbmdzVGV4dDogc3RyaW5nKTogUmVnaW9uTWFuYWdlciB7XG5cbiAgICAgICAgbGV0IHJlZ2lvbmFsU2V0dGluZ3MgPSBwYXJzZUNvbHVtblNldHRpbmdzKHNldHRpbmdzVGV4dCk7XG4gICAgICAgIGlmIChyZWdpb25hbFNldHRpbmdzLm51bWJlck9mQ29sdW1ucyA9PT0gMSkge1xuXG4gICAgICAgICAgICByZWdpb25hbFNldHRpbmdzID0gcGFyc2VTaW5nbGVDb2x1bW5TZXR0aW5ncyhzZXR0aW5nc1RleHQsIHJlZ2lvbmFsU2V0dGluZ3MpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVnaW9uLnNldFJlZ2lvbmFsU2V0dGluZ3MocmVnaW9uYWxTZXR0aW5ncyk7XG5cbiAgICAgICAgaWYgKHJlZ2lvbmFsU2V0dGluZ3MubnVtYmVyT2ZDb2x1bW5zID09PSAxKSB7XG5cbiAgICAgICAgICAgIGlmKHRoaXMucmVnaW9uIGluc3RhbmNlb2YgU2luZ2xlQ29sdW1uUmVnaW9uTWFuYWdlciA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoXCJDb252ZXJ0aW5nIHJlZ2lvbiB0byBzaW5nbGUgY29sdW1uLlwiKVxuICAgICAgICAgICAgICAgIHRoaXMuY29udmVydFRvU2luZ2xlQ29sdW1uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihyZWdpb25hbFNldHRpbmdzLmF1dG9MYXlvdXQgPT09IHRydWUpIHtcblxuICAgICAgICAgICAgaWYodGhpcy5yZWdpb24gaW5zdGFuY2VvZiBBdXRvTGF5b3V0UmVnaW9uTWFuYWdlciA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoXCJDb252ZXJ0aW5nIHJlZ2lvbiB0byBhdXRvIGxheW91dC5cIilcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnRUb0F1dG9MYXlvdXQoKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHJlZ2lvbmFsU2V0dGluZ3MubnVtYmVyT2ZDb2x1bW5zID49IDIpIHtcblxuICAgICAgICAgICAgaWYodGhpcy5yZWdpb24gaW5zdGFuY2VvZiBTdGFuZGFyZE11bHRpQ29sdW1uUmVnaW9uTWFuYWdlciA9PT0gZmFsc2UpIHtcblxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoXCJDb252ZXJ0aW5nIHJlZ2lvbiB0byBzdGFuZGFyZCBtdWx0aS1jb2x1bW5cIilcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnRUb1N0YW5kYXJkTXVsdGlDb2x1bW4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnJlZ2lvbjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRUb1NpbmdsZUNvbHVtbigpOiBTaW5nbGVDb2x1bW5SZWdpb25NYW5hZ2VyIHtcblxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMucmVnaW9uLmdldFJlZ2lvbkRhdGEoKTtcbiAgICAgICAgdGhpcy5yZWdpb24gPSBuZXcgU2luZ2xlQ29sdW1uUmVnaW9uTWFuYWdlcihkYXRhKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5yZWdpb24gYXMgU2luZ2xlQ29sdW1uUmVnaW9uTWFuYWdlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnRUb1N0YW5kYXJkTXVsdGlDb2x1bW4oKTogU3RhbmRhcmRNdWx0aUNvbHVtblJlZ2lvbk1hbmFnZXIge1xuXG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5yZWdpb24uZ2V0UmVnaW9uRGF0YSgpO1xuICAgICAgICB0aGlzLnJlZ2lvbiA9IG5ldyBTdGFuZGFyZE11bHRpQ29sdW1uUmVnaW9uTWFuYWdlcihkYXRhKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5yZWdpb24gYXMgU3RhbmRhcmRNdWx0aUNvbHVtblJlZ2lvbk1hbmFnZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb252ZXJ0VG9BdXRvTGF5b3V0KCk6IEF1dG9MYXlvdXRSZWdpb25NYW5hZ2VyIHtcblxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMucmVnaW9uLmdldFJlZ2lvbkRhdGEoKTtcbiAgICAgICAgdGhpcy5yZWdpb24gPSBuZXcgQXV0b0xheW91dFJlZ2lvbk1hbmFnZXIoZGF0YSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaW9uIGFzIEF1dG9MYXlvdXRSZWdpb25NYW5hZ2VyO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlRGVmYXVsdFJlZ2lvbk1hbmFnZXJEYXRhKHJlZ2lvblBhcmVudDogSFRNTEVsZW1lbnQsIGZpbGVNYW5hZ2VyOiBGaWxlRE9NTWFuYWdlciwgcmVnaW9uS2V5OiBzdHJpbmcsIHJvb3RFbGVtZW50OiBIVE1MRWxlbWVudCk6IFJlZ2lvbk1hbmFnZXJEYXRhIHtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGRvbUxpc3Q6IFtdLFxuICAgICAgICBkb21PYmplY3RNYXA6IG5ldyBNYXAoKSxcbiAgICAgICAgcmVnaW9uUGFyZW50OiByZWdpb25QYXJlbnQsXG4gICAgICAgIGZpbGVNYW5hZ2VyOiBmaWxlTWFuYWdlcixcbiAgICAgICAgcmVnaW9uYWxTZXR0aW5nczogZ2V0RGVmYXVsdE11bHRpQ29sdW1uU2V0dGluZ3MoKSxcbiAgICAgICAgcmVnaW9uS2V5OiByZWdpb25LZXksXG4gICAgICAgIHJvb3RFbGVtZW50OiByb290RWxlbWVudFxuICAgIH07XG59XG5cbmV4cG9ydCB0eXBlIFJlZ2lvbk1hbmFnZXJEYXRhID0ge1xuICAgIGRvbUxpc3Q6IERPTU9iamVjdFtdO1xuICAgIGRvbU9iamVjdE1hcDogTWFwPHN0cmluZywgRE9NT2JqZWN0PjtcbiAgICByZWdpb25QYXJlbnQ6IEhUTUxFbGVtZW50O1xuXG4gICAgZmlsZU1hbmFnZXI6IEZpbGVET01NYW5hZ2VyO1xuICAgIHJlZ2lvbmFsU2V0dGluZ3M6IE11bHRpQ29sdW1uU2V0dGluZ3M7XG5cbiAgICByZWdpb25LZXk6IHN0cmluZztcbiAgICByb290RWxlbWVudDogSFRNTEVsZW1lbnQ7XG59O1xuIiwiLypcbiAqIEZpbGU6IG11bHRpLWNvbHVtbi1tYXJrZG93bi9zcmMvZG9tTWFuYWdlci50c1xuICogQ3JlYXRlZCBEYXRlOiBTYXR1cmRheSwgSmFudWFyeSAzMHRoIDIwMjIsIDM6MTY6MzIgcG1cbiAqIEF1dGhvcjogQ2FtZXJvbiBSb2JpbnNvblxuICogXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgQ2FtZXJvbiBSb2JpbnNvblxuICovXG5cbmltcG9ydCB7IFJlZ2lvbk1hbmFnZXIgfSBmcm9tIFwiLi9yZWdpb25hbF9tYW5hZ2Vycy9yZWdpb25NYW5hZ2VyXCI7XG5pbXBvcnQgeyBSZWdpb25NYW5hZ2VyQ29udGFpbmVyIH0gZnJvbSBcIi4vcmVnaW9uYWxfbWFuYWdlcnMvcmVnaW9uTWFuYWdlckNvbnRhaW5lclwiO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgaGFuZGxlcyB0aGUgZ2xvYmFsIG1hbmFnZXJzIGtlZXBpbmcgdHJhY2sgb2YgYWxsIG9wZW4gZmlsZXMgdGhhdFxuICogY29udGFpbiBNQ00tUmVnaW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEdsb2JhbERPTU1hbmFnZXIge1xuICAgIG1hbmFnZXJzOiBNYXA8c3RyaW5nLCBGaWxlRE9NTWFuYWdlcj47XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5tYW5hZ2VycyA9IG5ldyBNYXAoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlRmlsZU1hbmFnZXJDYWxsYmFjayhrZXk6IHN0cmluZykge1xuICAgICAgICBpZih0aGlzLm1hbmFnZXJzLmhhcyhrZXkpID09PSB0cnVlKSB7XG4gICAgICAgICAgICB0aGlzLm1hbmFnZXJzLmRlbGV0ZShrZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZpbGVNYW5hZ2VyKGtleTogc3RyaW5nKSB7XG5cbiAgICAgICAgbGV0IGZpbGVNYW5hZ2VyID0gbnVsbDtcbiAgICAgICAgaWYodGhpcy5tYW5hZ2Vycy5oYXMoa2V5KSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgZmlsZU1hbmFnZXIgPSB0aGlzLm1hbmFnZXJzLmdldChrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZmlsZU1hbmFnZXIgPSBjcmVhdGVGaWxlRE9NTWFuYWdlcih0aGlzLCBrZXkpO1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2Vycy5zZXQoa2V5LCBmaWxlTWFuYWdlcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsZU1hbmFnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEFsbEZpbGVNYW5hZ2VycygpIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5tYW5hZ2Vycy52YWx1ZXMoKSk7XG4gICAgfVxufVxuXG5leHBvcnQgdHlwZSBGaWxlRE9NTWFuYWdlciA9IHtcbiAgICByZWdpb25NYXA6IE1hcDxzdHJpbmcsIFJlZ2lvbk1hbmFnZXJDb250YWluZXI+LFxuICAgIGhhc1N0YXJ0VGFnOiBib29sZWFuLFxuICAgIGNyZWF0ZVJlZ2lvbmFsTWFuYWdlcjogKHJlZ2lvbktleTogc3RyaW5nLCByb290RWxlbWVudDogSFRNTEVsZW1lbnQsIGVycm9yRWxlbWVudDogSFRNTEVsZW1lbnQsIHJlbmRlclJlZ2lvbkVsZW1lbnQ6IEhUTUxFbGVtZW50KSA9PiBSZWdpb25NYW5hZ2VyXG4gICAgZ2V0UmVnaW9uYWxDb250YWluZXI6IChyZWdpb25LZXk6IHN0cmluZykgPT4gUmVnaW9uTWFuYWdlckNvbnRhaW5lciB8IG51bGwsXG4gICAgZ2V0QWxsUmVnaW9uYWxNYW5hZ2VyczogKCkgPT4gUmVnaW9uTWFuYWdlcltdLFxuICAgIHJlbW92ZVJlZ2lvbjogKHJlZ2lvbktleTogc3RyaW5nKSA9PiB2b2lkLFxuICAgIHNldEhhc1N0YXJ0VGFnOiAoKSA9PiB2b2lkLFxuICAgIGdldEhhc1N0YXJ0VGFnOiAoKSA9PiBib29sZWFuLFxuICAgIGdldE51bWJlck9mUmVnaW9uczogKCkgPT4gbnVtYmVyLFxuICAgIGNoZWNrS2V5RXhpc3RzOiAoY2hlY2tLZXk6IHN0cmluZykgPT4gYm9vbGVhblxufVxuZnVuY3Rpb24gY3JlYXRlRmlsZURPTU1hbmFnZXIocGFyZW50TWFuYWdlcjogR2xvYmFsRE9NTWFuYWdlciwgZmlsZUtleTogc3RyaW5nKTogRmlsZURPTU1hbmFnZXIge1xuICAgIFxuICAgIGxldCByZWdpb25NYXA6IE1hcDxzdHJpbmcsIFJlZ2lvbk1hbmFnZXJDb250YWluZXI+ID0gbmV3IE1hcCgpO1xuICAgIGxldCBoYXNTdGFydFRhZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgZnVuY3Rpb24gcmVtb3ZlUmVnaW9uKHJlZ2lvbktleTogc3RyaW5nKTogdm9pZCB7XG5cbiAgICAgICAgbGV0IHJlZ2lvbkNvbnRhaW5lciA9IHJlZ2lvbk1hcC5nZXQocmVnaW9uS2V5KTtcbiAgICAgICAgaWYocmVnaW9uQ29udGFpbmVyKSB7XG4gICAgICAgICAgICBsZXQgcmVnaW9uYWxNYW5hZ2VyID0gcmVnaW9uQ29udGFpbmVyLmdldFJlZ2lvbigpO1xuICAgICAgICAgICAgcmVnaW9uYWxNYW5hZ2VyLmRpc3BsYXlPcmlnaW5hbEVsZW1lbnRzKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZWdpb25NYXAuZGVsZXRlKHJlZ2lvbktleSk7XG4gICAgICAgIFxuICAgICAgICBpZihyZWdpb25NYXAuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgcGFyZW50TWFuYWdlci5yZW1vdmVGaWxlTWFuYWdlckNhbGxiYWNrKGZpbGVLZXkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY3JlYXRlUmVnaW9uYWxNYW5hZ2VyKHJlZ2lvbktleTogc3RyaW5nLCByb290RWxlbWVudDogSFRNTEVsZW1lbnQsIGVycm9yRWxlbWVudDogSFRNTEVsZW1lbnQsIHJlbmRlclJlZ2lvbkVsZW1lbnQ6IEhUTUxFbGVtZW50KTogUmVnaW9uTWFuYWdlciB7XG5cbiAgICAgICAgLy9UT0RPOiBVc2UgdGhlIGVycm9yIGVsZW1lbnQgd2hlbmV2ZXIgdGhlcmUgaXMgYW4gZXJyb3IuXG5cbiAgICAgICAgbGV0IHJlZ29uYWxDb250YWluZXIgPSBuZXcgUmVnaW9uTWFuYWdlckNvbnRhaW5lcih0aGlzLCByZWdpb25LZXksIHJvb3RFbGVtZW50LCByZW5kZXJSZWdpb25FbGVtZW50KTtcbiAgICAgICAgcmVnaW9uTWFwLnNldChyZWdpb25LZXksIHJlZ29uYWxDb250YWluZXIpO1xuICAgICAgICByZXR1cm4gcmVnb25hbENvbnRhaW5lci5nZXRSZWdpb24oKTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRSZWdpb25hbENvbnRhaW5lcihyZWdpb25LZXk6IHN0cmluZyk6IFJlZ2lvbk1hbmFnZXJDb250YWluZXIgfCBudWxsIHtcblxuICAgICAgICBsZXQgcmVnb25hbE1hbmFnZXIgPSBudWxsO1xuICAgICAgICBpZihyZWdpb25NYXAuaGFzKHJlZ2lvbktleSkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJlZ29uYWxNYW5hZ2VyID0gcmVnaW9uTWFwLmdldChyZWdpb25LZXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlZ29uYWxNYW5hZ2VyO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEFsbFJlZ2lvbmFsTWFuYWdlcnMoKTogUmVnaW9uTWFuYWdlcltdIHtcblxuICAgICAgICBsZXQgY29udGFpbmVycyA9IEFycmF5LmZyb20ocmVnaW9uTWFwLnZhbHVlcygpKVxuICAgICAgICBsZXQgcmVnaW9uczogUmVnaW9uTWFuYWdlcltdID0gY29udGFpbmVycy5tYXAoKGN1cnIpID0+IHsgcmV0dXJuIGN1cnIuZ2V0UmVnaW9uKCkgfSk7XG4gICAgICAgIHJldHVybiByZWdpb25zO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHNldEhhc1N0YXJ0VGFnKCkge1xuICAgICAgICBoYXNTdGFydFRhZyA9IHRydWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0SGFzU3RhcnRUYWcoKSB7XG4gICAgICAgIHJldHVybiBoYXNTdGFydFRhZztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXROdW1iZXJPZlJlZ2lvbnMoKSB7XG4gICAgICAgIHJldHVybiByZWdpb25NYXAuc2l6ZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNoZWNrS2V5RXhpc3RzKGNoZWNrS2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHJlZ2lvbk1hcC5oYXMoY2hlY2tLZXkpO1xuICAgIH1cblxuICAgIHJldHVybiB7IHJlZ2lvbk1hcDogcmVnaW9uTWFwLCBcbiAgICAgICAgaGFzU3RhcnRUYWc6IGhhc1N0YXJ0VGFnLCAgXG4gICAgICAgIGNyZWF0ZVJlZ2lvbmFsTWFuYWdlcjogY3JlYXRlUmVnaW9uYWxNYW5hZ2VyLCBcbiAgICAgICAgZ2V0UmVnaW9uYWxDb250YWluZXI6IGdldFJlZ2lvbmFsQ29udGFpbmVyLFxuICAgICAgICBnZXRBbGxSZWdpb25hbE1hbmFnZXJzOiBnZXRBbGxSZWdpb25hbE1hbmFnZXJzLFxuICAgICAgICByZW1vdmVSZWdpb246IHJlbW92ZVJlZ2lvbiwgXG4gICAgICAgIHNldEhhc1N0YXJ0VGFnOiBzZXRIYXNTdGFydFRhZywgXG4gICAgICAgIGdldEhhc1N0YXJ0VGFnOiBnZXRIYXNTdGFydFRhZyxcbiAgICAgICAgZ2V0TnVtYmVyT2ZSZWdpb25zOiBnZXROdW1iZXJPZlJlZ2lvbnMsXG4gICAgICAgIGNoZWNrS2V5RXhpc3RzOiBjaGVja0tleUV4aXN0c1xuICAgIH1cbn0iLCIvKlxuICogRmlsZW5hbWU6IG11bHRpLWNvbHVtbi1tYXJrZG93bi9zcmMvbGl2ZV9wcmV2aWV3L011bHRpQ29sdW1uTWFya2Rvd25fV2lkZ2V0LnRzXG4gKiBDcmVhdGVkIERhdGU6IFR1ZXNkYXksIEF1Z3VzdCAxNnRoIDIwMjIsIDQ6Mzg6NDMgcG1cbiAqIEF1dGhvcjogQ2FtZXJvbiBSb2JpbnNvblxuICogXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgQ2FtZXJvbiBSb2JpbnNvblxuICovXG5cbmltcG9ydCB7IE1hcmtkb3duUmVuZGVyQ2hpbGQsIE1hcmtkb3duUmVuZGVyZXIsIFdvcmtzcGFjZUxlYWYgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IFdpZGdldFR5cGUgfSBmcm9tIFwiQGNvZGVtaXJyb3Ivdmlld1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE11bHRpQ29sdW1uU2V0dGluZ3MsIE11bHRpQ29sdW1uU2V0dGluZ3MgfSBmcm9tIFwiLi4vcmVnaW9uU2V0dGluZ3NcIjtcbmltcG9ydCB7IGZpbmRTZXR0aW5nc0NvZGVibG9jaywgZmluZFN0YXJ0Q29kZWJsb2NrIH0gZnJvbSBcIi4uL3V0aWxpdGllcy90ZXh0UGFyc2VyXCI7XG5pbXBvcnQgeyBwYXJzZUNvbHVtblNldHRpbmdzLCBwYXJzZVNpbmdsZUNvbHVtblNldHRpbmdzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zZXR0aW5nc1BhcnNlclwiO1xuaW1wb3J0IHsgU3RhbmRhcmRNdWx0aUNvbHVtblJlZ2lvbk1hbmFnZXIgfSBmcm9tIFwiLi4vZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvc3RhbmRhcmRNdWx0aUNvbHVtblJlZ2lvbk1hbmFnZXJcIjtcbmltcG9ydCB7IFJlZ2lvbk1hbmFnZXJEYXRhIH0gZnJvbSBcIi4uL2RvbV9tYW5hZ2VyL3JlZ2lvbmFsX21hbmFnZXJzL3JlZ2lvbk1hbmFnZXJDb250YWluZXJcIjtcbmltcG9ydCB7IGdldFVJRCB9IGZyb20gXCIuLi91dGlsaXRpZXMvdXRpbHNcIjtcbmltcG9ydCB7IERPTU9iamVjdCB9IGZyb20gXCIuLi9kb21fbWFuYWdlci9kb21PYmplY3RcIjtcbmltcG9ydCB7IFJlZ2lvbk1hbmFnZXIgfSBmcm9tIFwiLi4vZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvcmVnaW9uTWFuYWdlclwiO1xuaW1wb3J0IHsgU2luZ2xlQ29sdW1uUmVnaW9uTWFuYWdlciB9IGZyb20gXCIuLi9kb21fbWFuYWdlci9yZWdpb25hbF9tYW5hZ2Vycy9zaW5nbGVDb2x1bW5SZWdpb25NYW5hZ2VyXCI7XG5pbXBvcnQgeyBBdXRvTGF5b3V0UmVnaW9uTWFuYWdlciB9IGZyb20gXCIuLi9kb21fbWFuYWdlci9yZWdpb25hbF9tYW5hZ2Vycy9hdXRvTGF5b3V0UmVnaW9uTWFuYWdlclwiO1xuXG5leHBvcnQgY2xhc3MgTXVsdGlDb2x1bW5NYXJrZG93bl9MaXZlUHJldmlld19XaWRnZXQgZXh0ZW5kcyBXaWRnZXRUeXBlIHtcblxuICAgIGNvbnRlbnREYXRhOiBzdHJpbmc7XG4gICAgdGVtcFBhcmVudDogSFRNTERpdkVsZW1lbnQ7XG4gICAgZG9tTGlzdDogRE9NT2JqZWN0W10gPSBbXTtcbiAgICBzZXR0aW5nc1RleHQ6IHN0cmluZztcbiAgICByZWdpb25TZXR0aW5nczogTXVsdGlDb2x1bW5TZXR0aW5ncyA9IGdldERlZmF1bHRNdWx0aUNvbHVtblNldHRpbmdzKCk7XG4gICAgcmVnaW9uTWFuYWdlcjogUmVnaW9uTWFuYWdlcjtcblxuICAgIGNvbnN0cnVjdG9yKGNvbnRlbnREYXRhOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jb250ZW50RGF0YSA9IGNvbnRlbnREYXRhO1xuXG4gICAgICAgIC8vIEZpbmQgdGhlIHNldHRpbmdzIGRlZmluZWQgaW4gdGhlIGNvbnRlbnQsIGlmIGl0IGV4aXN0cy5cbiAgICAgICAgLy8gSWYgdGhlIHNldHRpbmdzIGNvZGVibG9jayBpc250IGRlZmluZWQgYXR0ZW1wdCB0byBnZXQgdGhlIHJlZ2lvbiBjb2RlYmxvY2sgdHlwZS5cbiAgICAgICAgbGV0IHNldHRpbmdzU3RhcnREYXRhID0gZmluZFNldHRpbmdzQ29kZWJsb2NrKHRoaXMuY29udGVudERhdGEpO1xuICAgICAgICBpZihzZXR0aW5nc1N0YXJ0RGF0YS5mb3VuZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIHNldHRpbmdzU3RhcnREYXRhID0gZmluZFN0YXJ0Q29kZWJsb2NrKHRoaXMuY29udGVudERhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXR0aW5nc1N0YXJ0RGF0YS5mb3VuZCA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICB0aGlzLnNldHRpbmdzVGV4dCA9IHRoaXMuY29udGVudERhdGEuc2xpY2Uoc2V0dGluZ3NTdGFydERhdGEuc3RhcnRQb3NpdGlvbiwgc2V0dGluZ3NTdGFydERhdGEuZW5kUG9zaXRpb24pO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50RGF0YSA9IHRoaXMuY29udGVudERhdGEucmVwbGFjZSh0aGlzLnNldHRpbmdzVGV4dCwgXCJcIik7XG5cbiAgICAgICAgICAgIC8vIFBhcnNlIHRoZSBzZXR0aW5ncywgdXBkYXRpbmcgdGhlIGRlZmF1bHQgc2V0dGluZ3MuXG4gICAgICAgICAgICB0aGlzLnJlZ2lvblNldHRpbmdzID0gcGFyc2VDb2x1bW5TZXR0aW5ncyh0aGlzLnNldHRpbmdzVGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZW5kZXIgdGhlIG1hcmtkb3duIGNvbnRlbnQgdG8gb3VyIHRlbXAgcGFyZW50IGVsZW1lbnQuXG4gICAgICAgIHRoaXMudGVtcFBhcmVudCA9IGNyZWF0ZURpdigpO1xuICAgICAgICBsZXQgZWxlbWVudE1hcmtkb3duUmVuZGVyZXIgPSBuZXcgTWFya2Rvd25SZW5kZXJDaGlsZCh0aGlzLnRlbXBQYXJlbnQpO1xuICAgICAgICBNYXJrZG93blJlbmRlcmVyLnJlbmRlck1hcmtkb3duKHRoaXMuY29udGVudERhdGEsIHRoaXMudGVtcFBhcmVudCwgXCJcIiwgZWxlbWVudE1hcmtkb3duUmVuZGVyZXIpO1xuXG4gICAgICAgIC8vIHRha2UgYWxsIGVsZW1lbnRzLCBpbiBvcmRlciwgYW5kIGNyZWF0ZSBvdXIgRE9NIGxpc3QuXG4gICAgICAgIGxldCBhcnIgPSBBcnJheS5mcm9tKHRoaXMudGVtcFBhcmVudC5jaGlsZHJlbik7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgIHRoaXMuZG9tTGlzdC5wdXNoKG5ldyBET01PYmplY3QoYXJyW2ldIGFzIEhUTUxFbGVtZW50LCBbXCJcIl0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCB1cCB0aGUgcmVnaW9uIG1hbmFnZXIgZGF0YSBiZWZvcmUgdGhlbiBjcmVhdGluZyBvdXIgcmVnaW9uIG1hbmFnZXIuXG4gICAgICAgIGxldCByZWdpb25EYXRhOiBSZWdpb25NYW5hZ2VyRGF0YSA9IHtcbiAgICAgICAgICAgIGRvbUxpc3Q6IHRoaXMuZG9tTGlzdCxcbiAgICAgICAgICAgIGRvbU9iamVjdE1hcDogbmV3IE1hcDxzdHJpbmcsIERPTU9iamVjdD4oKSxcbiAgICAgICAgICAgIHJlZ2lvblBhcmVudDogY3JlYXRlRGl2KCksXG4gICAgICAgICAgICBmaWxlTWFuYWdlcjogbnVsbCxcbiAgICAgICAgICAgIHJlZ2lvbmFsU2V0dGluZ3M6IHRoaXMucmVnaW9uU2V0dGluZ3MsXG4gICAgICAgICAgICByZWdpb25LZXk6IGdldFVJRCgpLFxuICAgICAgICAgICAgcm9vdEVsZW1lbnQ6IGNyZWF0ZURpdigpXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gRmluYWxseSBzZXR1cCB0aGUgdHlwZSBvZiByZWdpb24gbWFuYWdlciByZXF1aXJlZC5cbiAgICAgICAgaWYgKHRoaXMucmVnaW9uU2V0dGluZ3MubnVtYmVyT2ZDb2x1bW5zID09PSAxKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lvblNldHRpbmdzID0gcGFyc2VTaW5nbGVDb2x1bW5TZXR0aW5ncyh0aGlzLnNldHRpbmdzVGV4dCwgdGhpcy5yZWdpb25TZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLnJlZ2lvbk1hbmFnZXIgPSBuZXcgU2luZ2xlQ29sdW1uUmVnaW9uTWFuYWdlcihyZWdpb25EYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnJlZ2lvblNldHRpbmdzLmF1dG9MYXlvdXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaW9uTWFuYWdlciA9IG5ldyBBdXRvTGF5b3V0UmVnaW9uTWFuYWdlcihyZWdpb25EYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVnaW9uTWFuYWdlciA9IG5ldyBTdGFuZGFyZE11bHRpQ29sdW1uUmVnaW9uTWFuYWdlcihyZWdpb25EYXRhKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRvRE9NKCkge1xuICAgICAgICAvLyBDcmVhdGUgb3VyIGVsZW1lbnQgdG8gaG9sZCBhbGwgb2YgdGhlIGxpdmUgcHJldmlldyBlbGVtZW50cy5cbiAgICAgICAgbGV0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgZWwuY2xhc3NOYW1lID0gXCJtY20tY20tcHJldmlld1wiO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBGb3Igc2l0dWF0aW9ucyB3aGVyZSB3ZSBuZWVkIHRvIGtub3cgdGhlIHJlbmRlcmVkIGhlaWdodCwgQXV0b0xheW91dCwgXG4gICAgICAgICAqIHRoZSBlbGVtZW50IG11c3QgYmUgcmVuZGVyZWQgb250byB0aGUgc2NyZWVuIHRvIGdldCB0aGUgaW5mbywgZXZlbiBpZiBcbiAgICAgICAgICogb25seSBmb3IgYSBtb21lbnQuIEhlcmUgd2UgYXR0ZW1wdCB0byBnZXQgYSBsZWFmIGZyb20gdGhlIGFwcCBzbyB3ZSBcbiAgICAgICAgICogY2FuIGJyaWVmbHkgYXBwZW5kIG91ciBlbGVtZW50LCBjaGVjayBhbnkgZGF0YSBpZiByZXF1aXJlZCwgYW5kIHRoZW5cbiAgICAgICAgICogcmVtb3ZlIGl0LlxuICAgICAgICAgKi9cbiAgICAgICAgbGV0IGxlYWY6IFdvcmtzcGFjZUxlYWYgPSBudWxsO1xuICAgICAgICBpZiAoYXBwKSB7XG4gICAgICAgICAgICBsZXQgbGVhdmVzID0gYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoXCJtYXJrZG93blwiKTtcbiAgICAgICAgICAgIGlmIChsZWF2ZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIGxlYWYgPSBsZWF2ZXNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5yZWdpb25NYW5hZ2VyKSB7XG5cbiAgICAgICAgICAgIGlmIChsZWFmKSB7XG4gICAgICAgICAgICAgICAgbGVhZi52aWV3LmNvbnRhaW5lckVsLmFwcGVuZENoaWxkKGVsKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5yZWdpb25NYW5hZ2VyLnJlbmRlclJlZ2lvbkVsZW1lbnRzVG9MaXZlUHJldmlldyhlbCk7XG5cbiAgICAgICAgICAgIGlmIChsZWFmKSB7XG4gICAgICAgICAgICAgICAgbGVhZi52aWV3LmNvbnRhaW5lckVsLnJlbW92ZUNoaWxkKGVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBlbDtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNdWx0aUNvbHVtbk1hcmtkb3duX0RlZmluZWRTZXR0aW5nc19MaXZlUHJldmlld19XaWRnZXQgZXh0ZW5kcyBXaWRnZXRUeXBlIHtcblxuICAgIGNvbnRlbnREYXRhOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3Rvcihjb250ZW50RGF0YTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKCk7XG5cbiAgICAgICAgdGhpcy5jb250ZW50RGF0YSA9IGNvbnRlbnREYXRhO1xuICAgIH1cblxuICAgIHRvRE9NKCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcIlJlbmRlcmluZyBzZXR0aW5ncyBibG9ja1wiKVxuICAgICAgICAvLyBDcmVhdGUgb3VyIGVsZW1lbnQgdG8gaG9sZCBhbGwgb2YgdGhlIGxpdmUgcHJldmlldyBlbGVtZW50cy5cbiAgICAgICAgbGV0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgZWwuY2xhc3NOYW1lID0gXCJtY20tY20tc2V0dGluZ3MtcHJldmlld1wiO1xuXG4gICAgICAgIGxldCBsYWJlbERpdiA9IGVsLmNyZWF0ZURpdigpXG4gICAgICAgIGxldCBsYWJlbCA9IGxhYmVsRGl2LmNyZWF0ZVNwYW4oe1xuICAgICAgICAgICAgY2xzOiBcIm1jbS1jb2wtc2V0dGluZ3MtcHJldmlld1wiXG4gICAgICAgIH0pXG4gICAgICAgIGxhYmVsLnRleHRDb250ZW50ID0gXCJDb2x1bW4gU2V0dGluZ3M6XCI7XG5cbiAgICAgICAgbGV0IGxpc3QgPSBlbC5jcmVhdGVFbChcInVsXCIpXG4gICAgICAgIGxldCBsaW5lcyA9IHRoaXMuY29udGVudERhdGEuc3BsaXQoXCJcXG5cIilcbiAgICAgICAgZm9yKGxldCBpID0gMTsgaSA8IGxpbmVzLmxlbmd0aCAtIDE7IGkrKykge1xuICAgICAgICAgICAgbGV0IGl0ZW0gPSBsaXN0LmNyZWF0ZUVsKFwibGlcIilcbiAgICAgICAgICAgIGl0ZW0udGV4dENvbnRlbnQgPSBsaW5lc1tpXVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVsO1xuICAgIH1cbn0iLCIvKlxuICogRmlsZW5hbWU6IG11bHRpLWNvbHVtbi1tYXJrZG93bi9zcmMvbGl2ZV9wcmV2aWV3L2NtNl9saXZlUHJldmlldy50c1xuICogQ3JlYXRlZCBEYXRlOiBNb25kYXksIEF1Z3VzdCAxc3QgMjAyMiwgMTo1MToxNiBwbVxuICogQXV0aG9yOiBDYW1lcm9uIFJvYmluc29uXG4gKiBcbiAqIENvcHlyaWdodCAoYykgMjAyMiBDYW1lcm9uIFJvYmluc29uXG4gKi9cblxuaW1wb3J0IHsgRXh0ZW5zaW9uLCBMaW5lLCBSYW5nZVNldEJ1aWxkZXIsIFN0YXRlRmllbGQsIFRyYW5zYWN0aW9uIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBEZWNvcmF0aW9uLCBEZWNvcmF0aW9uU2V0LCBFZGl0b3JWaWV3IH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcbmltcG9ydCB7IHN5bnRheFRyZWUsIHRva2VuQ2xhc3NOb2RlUHJvcCB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuaW1wb3J0IHsgY29udGFpbnNSZWdpb25TdGFydCwgZmluZEVuZFRhZywgZmluZFNldHRpbmdzQ29kZWJsb2NrLCBmaW5kU3RhcnRDb2RlYmxvY2ssIGZpbmRTdGFydFRhZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdGV4dFBhcnNlclwiO1xuaW1wb3J0IHsgTXVsdGlDb2x1bW5NYXJrZG93bl9EZWZpbmVkU2V0dGluZ3NfTGl2ZVByZXZpZXdfV2lkZ2V0LCBNdWx0aUNvbHVtbk1hcmtkb3duX0xpdmVQcmV2aWV3X1dpZGdldCB9IGZyb20gXCIuL21jbV9saXZlUHJldmlld193aWRnZXRcIjtcblxuZXhwb3J0IGNvbnN0IG11bHRpQ29sdW1uTWFya2Rvd25fU3RhdGVGaWVsZCA9IFN0YXRlRmllbGQuZGVmaW5lPERlY29yYXRpb25TZXQ+KHtcblx0Y3JlYXRlKHN0YXRlKTogRGVjb3JhdGlvblNldCB7XG5cdFx0cmV0dXJuIERlY29yYXRpb24ubm9uZTtcblx0fSxcblx0dXBkYXRlKG9sZFN0YXRlOiBEZWNvcmF0aW9uU2V0LCB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24pOiBEZWNvcmF0aW9uU2V0IHtcblx0XHRjb25zdCBidWlsZGVyID0gbmV3IFJhbmdlU2V0QnVpbGRlcjxEZWNvcmF0aW9uPigpO1xuICAgICAgICBsZXQgZ2VuZXJhdGVkID0gZmFsc2U7XG5cblx0XHRzeW50YXhUcmVlKHRyYW5zYWN0aW9uLnN0YXRlKS5pdGVyYXRlKHtcblx0XHRcdGVudGVyKG5vZGUpIHtcblxuICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBydW4gdGhlIGdlbmVyYXRpb24gb25jZSBwZXIgc3RhdGUgY2hhbmdlLiBJZlxuICAgICAgICAgICAgICAgIC8vIGEgcHJldmlvdXMgbm9kZSBoYXMgc3VjZXNzZnVsbHkgZ2VuZXJhdGVkIHJlZ2lvbnMgd2UgaWdub3JlIGFsbFxuICAgICAgICAgICAgICAgIC8vIG90aGVyIG5vZGVzIGluIHRoZSBzdGF0ZS5cbiAgICAgICAgICAgICAgICBpZihnZW5lcmF0ZWQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBtYXJrZG93bkxlYXZlcyA9IGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFwibWFya2Rvd25cIik7XG4gICAgICAgICAgICAgICAgaWYobWFya2Rvd25MZWF2ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBUT0RPOiBDaGVjayBvdGhlciB3YXlzIHRvIGdldCBpZiBzb3VyY2UgaXMgbGl2ZSBwcmV2aWV3PyBlZGl0b3JMaXZlUHJldmlld0ZpZWxkXG4gICAgICAgICAgICAgICAgaWYobWFya2Rvd25MZWF2ZXNbMF0uZ2V0Vmlld1N0YXRlKCkuc3RhdGUuc291cmNlID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoXCJVc2VyIGRpc2FibGVkIGxpdmUgcHJldmlldy5cIilcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuXHRcdFx0XHQvLyBXZSB3YW50IHRvIHJ1biBvbiB0aGUgd2hvbGUgZmlsZSBzbyB3ZSBkb250IGp1c3QgbG9vayBmb3IgYSBzaW5nbGUgdG9rZW4uXG5cdFx0XHRcdGNvbnN0IHRva2VuUHJvcHMgPSBub2RlLnR5cGUucHJvcDxzdHJpbmc+KHRva2VuQ2xhc3NOb2RlUHJvcCk7XG5cdFx0XHRcdGlmICh0b2tlblByb3BzICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvKipcblx0XHRcdFx0ICogV2hlbiB3ZSBoYXZlIHRoZSB3aGlsZSBmaWxlIHdlIHRoZW4gZ2V0IHRoZSBlbnRpcmUgZG9jIHRleHQgYW5kIGNoZWNrIGlmIGl0IFxuXHRcdFx0XHQgKiBjb250YWlucyBhIE1DTSByZWdpb24gc28gd2Uga25vdyB0byBicmVhayBvciBub3QuXG5cdFx0XHRcdCAqL1xuICAgICAgICAgICAgICAgIGxldCBkb2NMZW5ndGggPSB0cmFuc2FjdGlvbi5zdGF0ZS5kb2MubGVuZ3RoXG4gICAgICAgICAgICAgICAgbGV0IGRvY1RleHQgPSB0cmFuc2FjdGlvbi5zdGF0ZS5kb2Muc2xpY2VTdHJpbmcoMCwgZG9jTGVuZ3RoKTtcblx0XHRcdFx0aWYgKGNvbnRhaW5zUmVnaW9uU3RhcnQoZG9jVGV4dCkgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0Y29uc29sZS5kZWJ1ZyhcIk5vIHN0YXJ0IHRhZyBpbiBkb2N1bWVudC5cIilcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBXZSB3YW50IHRvIGtub3cgd2hlcmUgdGhlIHVzZXIncyBjdXJzb3IgaXMsIGl0IGNhbiBiZVxuXHRcdFx0XHQvLyBzZWxlY3RpbmcgbXVsdGlwbGUgcmVnaW9ucyBvZiB0ZXh0IGFzIHdlbGwgc28gd2UgbmVlZCB0byBrbm93XG5cdFx0XHRcdC8vIGFsbCBsb2NhdGlvbnMuIFVzZWQgdG8ga25vdyBpZiB3ZSBzaG91bGQgcmVuZGVyIHJlZ2lvbiBhcyB0ZXh0IG9yIGFzIHByZXZpZXcuXG5cdFx0XHRcdGxldCByYW5nZXMgPSBnZXRDdXJzb3JMaW5lTG9jYXRpb25zKCk7XG5cblx0XHRcdFx0Ly8gU2V0dXAgb3VyIGxvb3AgdG8gcmVuZGVyIHRoZSByZWdpb25zIGFzIE1DTS4gXG5cdFx0XHRcdGxldCB3b3JraW5nRmlsZVRleHQgPSBkb2NUZXh0O1xuXHRcdFx0XHRsZXQgc3RhcnRUYWdEYXRhID0gZmluZFN0YXJ0VGFnKHdvcmtpbmdGaWxlVGV4dCk7XG5cdFx0XHRcdGlmKHN0YXJ0VGFnRGF0YS5mb3VuZCA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRzdGFydFRhZ0RhdGEgPSBmaW5kU3RhcnRDb2RlYmxvY2sod29ya2luZ0ZpbGVUZXh0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCBlbmRUYWdEYXRhID0gZmluZEVuZFRhZyh3b3JraW5nRmlsZVRleHQpO1xuXHRcdFx0XHRsZXQgbG9vcEluZGV4ID0gMDtcblx0XHRcdFx0bGV0IHN0YXJ0SW5kZXhPZmZzZXQgPSAwO1xuXHRcdFx0XHR3aGlsZSAoc3RhcnRUYWdEYXRhLmZvdW5kID09PSB0cnVlICYmIGVuZFRhZ0RhdGEuZm91bmQgPT09IHRydWUpIHtcblxuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIEZvciB0aGUgcmVnaW9uIHdlIGZvdW5kIGdldCB0aGUgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbiBvZiB0aGUgdGFncyBzbyB3ZSBcblx0XHRcdFx0XHQgKiBjYW4gc2xpY2UgaXQgb3V0IG9mIHRoZSBkb2N1bWVudC5cblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHRsZXQgc3RhcnRJbmRleCA9IHN0YXJ0SW5kZXhPZmZzZXQgKyBzdGFydFRhZ0RhdGEuc3RhcnRQb3NpdGlvblxuXHRcdFx0XHRcdGxldCBlbmRJbmRleCA9IHN0YXJ0SW5kZXhPZmZzZXQgKyBlbmRUYWdEYXRhLnN0YXJ0UG9zaXRpb24gKyBlbmRUYWdEYXRhLm1hdGNoTGVuZ3RoIC8vIFdpdGhvdXQgdGhlIG1hdGNoTGVuZ3RoIHdpbGwgbGVhdmUgdGhlIGVuZCB0YWcgb24gdGhlIHNjcmVlbi5cblxuXHRcdFx0XHRcdC8vIFRoaXMgdGV4dCBpcyB0aGUgZW50aXJlIHJlZ2lvbiBkYXRhIGluY2x1ZGluZyB0aGUgc3RhcnQgYW5kIGVuZCB0YWdzLlxuXHRcdFx0XHRcdGxldCBlbGVtZW50VGV4dCA9IGRvY1RleHQuc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpXG5cblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBVcGRhdGUgb3VyIHN0YXJ0IG9mZnNldCBhbmQgdGhlIHdvcmtpbmcgdGV4dCBvZiB0aGUgZmlsZSBzbyBvdXIgbmV4dCBcblx0XHRcdFx0XHQgKiBpdGVyYXRpb24ga25vd3Mgd2hlcmUgd2UgbGVmdCBvZmZcblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHRzdGFydEluZGV4T2Zmc2V0ID0gZW5kSW5kZXhcblx0XHRcdFx0XHR3b3JraW5nRmlsZVRleHQgPSBkb2NUZXh0LnNsaWNlKGVuZEluZGV4KTtcblxuXG5cdFx0XHRcdFx0Ly8gSGVyZSB3ZSBjaGVjayBpZiB0aGUgY3Vyc29yIGlzIGluIHRoaXMgc3BlY2lmaWMgcmVnaW9uLlxuXHRcdFx0XHRcdGxldCBjdXJzb3JJblJlZ2lvbiA9IGNoZWNrQ3Vyc29ySW5SZWdpb24oc3RhcnRJbmRleCwgZW5kSW5kZXgsIHJhbmdlcyk7XG5cdFx0XHRcdFx0aWYoY3Vyc29ySW5SZWdpb24gPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIGN1cnNvciBpcyB3aXRoaW4gdGhlIHJlZ2lvbiB3ZSB0aGVuIG5lZWQgdG8ga25vdyBpZlxuXHRcdFx0XHRcdFx0Ly8gaXQgaXMgd2l0aGluIG91ciBzZXR0aW5ncyBibG9jayAoaWYgaXQgZXhpc3RzLilcblx0XHRcdFx0XHRcdGxldCBzZXR0aW5nc1N0YXJ0RGF0YSA9IGZpbmRTdGFydENvZGVibG9jayhlbGVtZW50VGV4dCk7XG5cdFx0XHRcdFx0XHRpZihzZXR0aW5nc1N0YXJ0RGF0YS5mb3VuZCA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRcdFx0c2V0dGluZ3NTdGFydERhdGEgPSBmaW5kU2V0dGluZ3NDb2RlYmxvY2soZWxlbWVudFRleHQpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRpZihzZXR0aW5nc1N0YXJ0RGF0YS5mb3VuZCA9PT0gdHJ1ZSkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFNpbmNlIHRoZSBzZXR0aW5ncyBibG9jayBleGlzdHMgY2hlY2sgaWYgdGhlIGN1cnNvciBpcyB3aXRoaW4gdGhhdCByZWdpb24uXG5cdFx0XHRcdFx0XHRcdGxldCBjb2RlYmxvY2tTdGFydEluZGV4ID0gc3RhcnRJbmRleCArIHNldHRpbmdzU3RhcnREYXRhLnN0YXJ0UG9zaXRpb247XG5cdFx0XHRcdFx0XHRcdGxldCBjb2RlYmxvY2tFbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBzZXR0aW5nc1N0YXJ0RGF0YS5lbmRQb3NpdGlvbjtcblx0XHRcdFx0XHRcdFx0bGV0IHNldHRpbmdzVGV4dCA9IGRvY1RleHQuc2xpY2UoY29kZWJsb2NrU3RhcnRJbmRleCwgY29kZWJsb2NrRW5kSW5kZXggKVxuXG5cdFx0XHRcdFx0XHRcdGxldCBjdXJzb3JJbkNvZGVibG9jayA9IGNoZWNrQ3Vyc29ySW5SZWdpb24oY29kZWJsb2NrU3RhcnRJbmRleCwgY29kZWJsb2NrRW5kSW5kZXgsIHJhbmdlcyk7XG5cdFx0XHRcdFx0XHRcdGlmKGN1cnNvckluQ29kZWJsb2NrID09PSBmYWxzZSkge1xuXHRcblx0XHRcdFx0XHRcdFx0XHQvLyBJZiB0aGUgY3Vyc29yIGlzIG5vdCB3aXRoaW4gdGhlIHJlZ2lvbiB3ZSBwYXNzIHRoZSBkYXRhIHRvIHRoZVxuXHRcdFx0XHRcdFx0XHRcdC8vIHNldHRpbmdzIHZpZXcgc28gaXQgY2FuIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVnaW9uLlxuXHRcdFx0XHRcdFx0XHRcdGJ1aWxkZXIuYWRkKFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29kZWJsb2NrU3RhcnRJbmRleCxcblx0XHRcdFx0XHRcdFx0XHRcdGNvZGVibG9ja0VuZEluZGV4ICsgMSxcblx0XHRcdFx0XHRcdFx0XHRcdERlY29yYXRpb24ucmVwbGFjZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpZGdldDogbmV3IE11bHRpQ29sdW1uTWFya2Rvd25fRGVmaW5lZFNldHRpbmdzX0xpdmVQcmV2aWV3X1dpZGdldChzZXR0aW5nc1RleHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0Ly8gQXQgdGhpcyBwb2ludCBpZiB0aGUgY3Vyc29yIGlzbnQgaW4gdGhlIHJlZ2lvbiB3ZSBwYXNzIHRoZSBkYXRhIHRvIHRoZVxuXHRcdFx0XHRcdC8vIGVsZW1lbnQgdG8gYmUgcmVuZGVyZWQuXG5cdFx0XHRcdFx0aWYoY3Vyc29ySW5SZWdpb24gPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0XHRidWlsZGVyLmFkZChcblx0XHRcdFx0XHRcdFx0c3RhcnRJbmRleCxcblx0XHRcdFx0XHRcdFx0ZW5kSW5kZXgsXG5cdFx0XHRcdFx0XHRcdERlY29yYXRpb24ucmVwbGFjZSh7XG5cdFx0XHRcdFx0XHRcdFx0d2lkZ2V0OiBuZXcgTXVsdGlDb2x1bW5NYXJrZG93bl9MaXZlUHJldmlld19XaWRnZXQoZWxlbWVudFRleHQpLFxuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Z2VuZXJhdGVkID0gdHJ1ZTtcblxuXHRcdFx0XHRcdC8vIFJlQ2FsY3VsYXRlIGFkZGl0aW9uYWwgc3RhcnQgdGFncyBpZiB0aGVyZSBhcmUgbW9yZSBpbiBkb2N1bWVudC5cblx0XHRcdFx0XHRzdGFydFRhZ0RhdGEgPSBmaW5kU3RhcnRUYWcod29ya2luZ0ZpbGVUZXh0KTtcblx0XHRcdFx0XHRpZihzdGFydFRhZ0RhdGEuZm91bmQgPT09IGZhbHNlKSB7XG5cdFx0XHRcdFx0XHRzdGFydFRhZ0RhdGEgPSBmaW5kU3RhcnRDb2RlYmxvY2sod29ya2luZ0ZpbGVUZXh0KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRlbmRUYWdEYXRhID0gZmluZEVuZFRhZyh3b3JraW5nRmlsZVRleHQpO1xuXHRcdFx0XHRcdGxvb3BJbmRleCsrO1xuXHRcdFx0XHRcdGlmKGxvb3BJbmRleCA+IDEwMCkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS53YXJuKFwiUG90ZW50aWFsIGlzc3VlIHdpdGggcmVuZGVyaW5nIE11bHRpLUNvbHVtbiBNYXJrZG93biBsaXZlIHByZXZpZXcgcmVnaW9ucy4gSWYgcHJvYmxlbSBwZXJzaXN0cyBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnQgd2l0aCBkZXZlbG9wZXIuXCIpXG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0fSk7XG4gXG5cdFx0cmV0dXJuIGJ1aWxkZXIuZmluaXNoKCk7XG5cblx0XHRmdW5jdGlvbiBnZXRDdXJzb3JMaW5lTG9jYXRpb25zKCk6IHsgbGluZTogTGluZSwgcG9zaXRpb246IG51bWJlciB9W10ge1xuXG5cdFx0XHRsZXQgcmFuZ2VzOiB7IGxpbmU6IExpbmUsIHBvc2l0aW9uOiBudW1iZXIgfVtdID0gW107XG5cblx0XHRcdGlmICh0cmFuc2FjdGlvbi5zdGF0ZS5zZWxlY3Rpb24ucmFuZ2VzKSB7XG5cblx0XHRcdFx0cmFuZ2VzID0gdHJhbnNhY3Rpb24uc3RhdGUuc2VsZWN0aW9uLnJhbmdlcy5maWx0ZXIoKHJhbmdlKSA9PiB7XG5cblx0XHRcdFx0XHRyZXR1cm4gcmFuZ2UuZW1wdHk7XG5cdFx0XHRcdH0pLm1hcCgocmFuZ2UpID0+IHtcblxuXHRcdFx0XHRcdGxldCBsaW5lID0gdHJhbnNhY3Rpb24uc3RhdGUuZG9jLmxpbmVBdChyYW5nZS5oZWFkKTtcblx0XHRcdFx0XHRsZXQgdGV4dCA9IGAke2xpbmUubnVtYmVyfToke3JhbmdlLmhlYWQgLSBsaW5lLmZyb219YDtcblxuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRsaW5lOiBsaW5lLFxuXHRcdFx0XHRcdFx0cG9zaXRpb246IHJhbmdlLmhlYWRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcmFuZ2VzO1xuXHRcdH1cblxuICAgICAgICBmdW5jdGlvbiB2YWx1ZUlzSW5SYW5nZSh2YWx1ZTogbnVtYmVyLCBtaW5WYWw6IG51bWJlciwgbWF4VmFsOiBudW1iZXIsIGluY2x1c2l2ZTogYm9vbGVhbiA9IHRydWUpIHtcblxuICAgICAgICAgICAgaWYoaW5jbHVzaXZlID09PSB0cnVlICYmICh2YWx1ZSA9PT0gbWluVmFsIHx8IHZhbHVlID09PSBtYXhWYWwpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChtaW5WYWwgPCB2YWx1ZSAmJiB2YWx1ZSA8IG1heFZhbCkge1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG5cdFx0ZnVuY3Rpb24gY2hlY2tDdXJzb3JJblJlZ2lvbihzdGFydEluZGV4OiBudW1iZXIsXG5cdFx0XHRcdFx0XHRcdFx0ZW5kSW5kZXg6IG51bWJlciwgXG5cdFx0XHRcdFx0XHRcdFx0cmFuZ2VzOiB7IGxpbmU6IExpbmUsIHBvc2l0aW9uOiBudW1iZXIgfVtdICk6IGJvb2xlYW4ge1xuXG5cdFx0XHRsZXQgY3Vyc29ySW5SZWdpb24gPSBmYWxzZTtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG5cblx0XHRcdFx0Ly8gVE9ETzogTWF5YmUgbG9vayBpbnRvIGxpbWl0aW5nIHRoaXMgdG8gdGhlIHNlY29uZCBhbmQgc2Vjb25kIHRvIGxhc3QgbGluZVxuXHRcdFx0XHQvLyBvZiB0aGUgcmVnaW9uIGFzIGNsaWNraW5nIHJpZ2h0IGF0IHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZSByZWdpb25cblx0XHRcdFx0Ly8gc3dhcHMgaXQgdG8gdW5yZW5kZXJlZC5cblx0XHRcdFx0bGV0IHJhbmdlID0gcmFuZ2VzW2ldO1xuXHRcdFx0XHRpZih2YWx1ZUlzSW5SYW5nZShyYW5nZS5wb3NpdGlvbiwgc3RhcnRJbmRleCwgZW5kSW5kZXgpID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0Y3Vyc29ySW5SZWdpb24gPSB0cnVlO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmKGN1cnNvckluUmVnaW9uID09PSBmYWxzZSAmJiB0cmFuc2FjdGlvbi5zZWxlY3Rpb24pe1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRyYW5zYWN0aW9uLnNlbGVjdGlvbi5yYW5nZXMubGVuZ3RoOyBpKyspIHtcblxuXHRcdFx0XHRcdGxldCByYW5nZSA9IHRyYW5zYWN0aW9uLnNlbGVjdGlvbi5yYW5nZXNbaV07XG5cblx0XHRcdFx0XHQvLyBJZiBlaXRoZXIgdGhlIHN0YXJ0IG9yIGVuZCBvZiB0aGUgc2VsZWN0aW9uIGlzIHdpdGhpbiB0aGVcblx0XHRcdFx0XHQvLyByZWdpb24gcmFuZ2Ugd2UgZG8gbm90IHJlbmRlciBsaXZlIHByZXZpZXcuXG5cdFx0XHRcdFx0aWYodmFsdWVJc0luUmFuZ2UocmFuZ2UuZnJvbSwgc3RhcnRJbmRleCwgZW5kSW5kZXgpIHx8IFxuXHRcdFx0XHRcdCAgIHZhbHVlSXNJblJhbmdlKHJhbmdlLnRvLCBzdGFydEluZGV4LCBlbmRJbmRleCkpIHtcblx0XHRcdFx0XHRcdGN1cnNvckluUmVnaW9uID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIE9yIGlmIHRoZSBlbnRpcmUgcmVnaW9uIGlzIHdpdGhpbiB0aGUgc2VsZWN0aW9uIHJhbmdlXG5cdFx0XHRcdFx0Ly8gd2UgZG8gbm90IHJlbmRlciB0aGUgbGl2ZSBwcmV2aWV3LlxuXHRcdFx0XHRcdGlmKHZhbHVlSXNJblJhbmdlKHN0YXJ0SW5kZXgsIHJhbmdlLmZyb20sIHJhbmdlLnRvKSAmJiBcblx0XHRcdFx0XHQgICB2YWx1ZUlzSW5SYW5nZShlbmRJbmRleCwgcmFuZ2UuZnJvbSwgcmFuZ2UudG8pKSB7XG5cdFx0XHRcdFx0XHRjdXJzb3JJblJlZ2lvbiA9IHRydWU7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGN1cnNvckluUmVnaW9uO1xuXHRcdH1cblx0fSxcblx0cHJvdmlkZShmaWVsZDogU3RhdGVGaWVsZDxEZWNvcmF0aW9uU2V0Pik6IEV4dGVuc2lvbiB7XG5cdFx0cmV0dXJuIEVkaXRvclZpZXcuZGVjb3JhdGlvbnMuZnJvbShmaWVsZCk7XG5cdH0sXG59KTtcblxuIiwiLypcclxuICogRmlsZTogbXVsdGktY29sdW1uLW1hcmtkb3duL3NyYy9tYWluLnRzXHJcbiAqIENyZWF0ZWQgRGF0ZTogVHVlc2RheSwgT2N0b2JlciA1dGggMjAyMSwgMTowOSBwbVxyXG4gKiBBdXRob3I6IENhbWVyb24gUm9iaW5zb25cclxuICogXHJcbiAqIENvcHlyaWdodCAoYykgMjAyMiBDYW1lcm9uIFJvYmluc29uXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgTm90aWNlLCBQbHVnaW4sICBNYXJrZG93blJlbmRlckNoaWxkLCBNYXJrZG93blJlbmRlcmVyLCBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0ICogYXMgbXVsdGlDb2x1bW5QYXJzZXIgZnJvbSAnLi91dGlsaXRpZXMvdGV4dFBhcnNlcic7XHJcbmltcG9ydCB7IEZpbGVET01NYW5hZ2VyLCBHbG9iYWxET01NYW5hZ2VyIH0gZnJvbSAnLi9kb21fbWFuYWdlci9kb21NYW5hZ2VyJztcclxuaW1wb3J0IHsgTXVsdGlDb2x1bW5SZW5kZXJEYXRhIH0gZnJvbSBcIi4vZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvcmVnaW9uTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBSZWdpb25NYW5hZ2VyIH0gZnJvbSBcIi4vZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvcmVnaW9uTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBSZWdpb25NYW5hZ2VyQ29udGFpbmVyIH0gZnJvbSBcIi4vZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvcmVnaW9uTWFuYWdlckNvbnRhaW5lclwiO1xyXG5pbXBvcnQgeyBET01PYmplY3QsIERPTU9iamVjdFRhZywgVGFza0xpc3RET01PYmplY3QgfSBmcm9tICcuL2RvbV9tYW5hZ2VyL2RvbU9iamVjdCc7XHJcbmltcG9ydCB7IGZpbGVTdGlsbEluVmlldywgZ2V0RmlsZUxlYWYsIGdldExlYWZTb3VyY2VNb2RlLCBnZXRVSUQgfSBmcm9tICcuL3V0aWxpdGllcy91dGlscyc7XHJcbmltcG9ydCB7IE11bHRpQ29sdW1uTGF5b3V0Q1NTLCBNdWx0aUNvbHVtblN0eWxlQ1NTIH0gZnJvbSAnLi91dGlsaXRpZXMvY3NzRGVmaW5pdGlvbnMnO1xyXG5pbXBvcnQgeyBFbGVtZW50UmVuZGVyVHlwZSB9IGZyb20gJy4vdXRpbGl0aWVzL2VsZW1lbnRSZW5kZXJUeXBlUGFyc2VyJztcclxuaW1wb3J0IHsgbXVsdGlDb2x1bW5NYXJrZG93bl9TdGF0ZUZpZWxkIH0gZnJvbSAnLi9saXZlX3ByZXZpZXcvY202X2xpdmVQcmV2aWV3JztcclxuaW1wb3J0IHsgcGFyc2VTdGFydFJlZ2lvbkNvZGVCbG9ja0lEIH0gZnJvbSAnLi91dGlsaXRpZXMvc2V0dGluZ3NQYXJzZXInO1xyXG5cclxuY29uc3QgQ09ERUJMT0NLX1NUQVJUX1NUUlMgPSBbXHJcbiAgICBcInN0YXJ0LW11bHRpLWNvbHVtblwiLFxyXG4gICAgXCJtdWx0aS1jb2x1bW4tc3RhcnRcIlxyXG5dXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE11bHRpQ29sdW1uTWFya2Rvd24gZXh0ZW5kcyBQbHVnaW4ge1xyXG5cclxuICAgIGdsb2JhbE1hbmFnZXI6IEdsb2JhbERPTU1hbmFnZXIgPSBuZXcgR2xvYmFsRE9NTWFuYWdlcigpO1xyXG5cclxuXHRhc3luYyBvbmxvYWQoKSB7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTG9hZGluZyBtdWx0aS1jb2x1bW4gbWFya2Rvd25cIik7XHJcbiAgICAgICAgdGhpcy5nbG9iYWxNYW5hZ2VyID0gbmV3IEdsb2JhbERPTU1hbmFnZXIoKTtcclxuXHJcbiAgICAgICAgdGhpcy5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihtdWx0aUNvbHVtbk1hcmtkb3duX1N0YXRlRmllbGQpXHJcblxyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBDT0RFQkxPQ0tfU1RBUlRfU1RSUy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgICAgICAgbGV0IHN0YXJ0U3RyID0gQ09ERUJMT0NLX1NUQVJUX1NUUlNbaV1cclxuICAgICAgICAgICAgdGhpcy5zZXR1cE1hcmtkb3duQ29kZWJsb2NrUG9zdFByb2Nlc3NvcihzdGFydFN0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dXBNYXJrZG93blBvc3RQcm9jZXNzb3IoKTtcclxuXHJcbiAgICAgICAgLy9UT0RPOiBTZXQgdXAgdGhpcyBhcyBhIG1vZGFsIHRvIHNldCBzZXR0aW5ncyBhdXRvbWF0aWNhbGx5XHJcbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHsgICAgICAgICAgICBcclxuICAgICAgICAgICAgaWQ6IGBpbnNlcnQtbXVsdGktY29sdW1uLXJlZ2lvbmAsXHJcbiAgICAgICAgICAgIG5hbWU6IGBJbnNlcnQgTXVsdGktQ29sdW1uIFJlZ2lvbmAsXHJcbiAgICAgICAgICAgIGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yLCB2aWV3KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY3Vyc29yU3RhcnRQb3NpdGlvbiA9IGVkaXRvci5nZXRDdXJzb3IoXCJmcm9tXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBlZGl0b3IuZ2V0RG9jKCkucmVwbGFjZVNlbGVjdGlvbihcclxuYFxyXG5cXGBcXGBcXGBzdGFydC1tdWx0aS1jb2x1bW5cclxuSUQ6IElEXyR7Z2V0VUlEKDQpfVxyXG5OdW1iZXIgb2YgQ29sdW1uczogMlxyXG5MYXJnZXN0IENvbHVtbjogc3RhbmRhcmRcclxuXFxgXFxgXFxgXHJcblxyXG5cclxuXHJcbi0tLSBjb2x1bW4tZW5kIC0tLVxyXG5cclxuXHJcblxyXG49PT0gZW5kLW11bHRpLWNvbHVtblxyXG5cclxuJHtlZGl0b3IuZ2V0RG9jKCkuZ2V0U2VsZWN0aW9uKCl9YFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yU3RhcnRQb3NpdGlvbi5saW5lID0gY3Vyc29yU3RhcnRQb3NpdGlvbi5saW5lICsgN1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnNvclN0YXJ0UG9zaXRpb24uY2ggPSAwO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBlZGl0b3Iuc2V0Q3Vyc29yKGN1cnNvclN0YXJ0UG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiRW5jb3VudGVyZWQgYW4gZXJyb3IgaW5zZXJ0aW5nIGEgbXVsdGktY29sdW1uIHJlZ2lvbi4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5cIlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHsgICAgICAgICAgICBcclxuICAgICAgICAgICAgaWQ6IGBhZGQtSURzLVRvLW11bHRpLWNvbHVtbi1yZWdpb25gLFxyXG4gICAgICAgICAgICBuYW1lOiBgRml4IE1pc3NpbmcgSURzIGZvciBNdWx0aS1Db2x1bW4gUmVnaW9uc2AsXHJcbiAgICAgICAgICAgIGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yLCB2aWV3KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAgICAgKiBOb3Qgc3VyZSBpZiB0aGVyZSBpcyBhbiBlYXNpZXIgd2F5IHRvIGRvIHRoaXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICogXHJcbiAgICAgICAgICAgICAgICAgICAgICogR2V0IGFsbCBvZiB0aGUgbGluZXMgb2YgdGhlIGRvY3VtZW50IHNwbGl0IGJ5IG5ld2xpbmVzLlxyXG4gICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkb2NUZXh0ID0gZWRpdG9yLmdldFJhbmdlKHsgbGluZTogMCwgY2g6IDAgfSwgeyBsaW5lOiBlZGl0b3IuZ2V0RG9jKCkubGluZUNvdW50KCksIGNoOiAwfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpbmVzID0gZG9jVGV4dC5zcGxpdChcIlxcblwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXJ0Q29kZWJsb2NrID0gbXVsdGlDb2x1bW5QYXJzZXIuZmluZFN0YXJ0Q29kZWJsb2NrKGRvY1RleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaW5lT2Zmc2V0ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbnVtQ29kZWJsb2Nrc1VwZGF0ZWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlKHN0YXJ0Q29kZWJsb2NrLmZvdW5kID09PSB0cnVlKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RhcnRSZXBsYWNlTGluZXMgPSAoZG9jVGV4dC5zbGljZSgwLCBzdGFydENvZGVibG9jay5zdGFydFBvc2l0aW9uKS5zcGxpdChcIlxcblwiKS5sZW5ndGggLSAxKSArIGxpbmVPZmZzZXQ7IC8vIC0xIHRvIFplcm8gaW5kZXggdGhlIHJlcGxhY2UgbGluZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNldHRpbmdzVGV4dCA9IGRvY1RleHQuc2xpY2Uoc3RhcnRDb2RlYmxvY2suc3RhcnRQb3NpdGlvbiwgc3RhcnRDb2RlYmxvY2suZW5kUG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2V0dGluZ3NJRCA9IHBhcnNlU3RhcnRSZWdpb25Db2RlQmxvY2tJRChzZXR0aW5nc1RleHQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2V0dGluZ3NJRCA9PT0gXCJcIikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXBsYWNlbWVudFRleHQgPSBlZGl0b3IuZ2V0UmFuZ2UoeyBsaW5lOiBzdGFydFJlcGxhY2VMaW5lcywgY2g6IDAgfSwgeyBsaW5lOiBzdGFydFJlcGxhY2VMaW5lcywgY2g6IHN0YXJ0Q29kZWJsb2NrLm1hdGNoTGVuZ3RofSkgKyBgXFxuSUQ6IElEXyR7Z2V0VUlEKDQpfWBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvci5yZXBsYWNlUmFuZ2UocmVwbGFjZW1lbnRUZXh0LCB7IGxpbmU6IHN0YXJ0UmVwbGFjZUxpbmVzLCBjaDogMCB9LCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxpbmU6IHN0YXJ0UmVwbGFjZUxpbmVzLCBjaDogc3RhcnRDb2RlYmxvY2subWF0Y2hMZW5ndGh9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFJlcGxhY2VMaW5lcyArPSAxOyAvLyB3ZSBhZGRlZCBhIGxpbmUgdG8gdGhlIGRvYyBzbyB1cGRhdGUgb3VyIG9mZnNldC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bUNvZGVibG9ja3NVcGRhdGVkICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZU9mZnNldCA9IHN0YXJ0UmVwbGFjZUxpbmVzXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2NUZXh0ID0gZG9jVGV4dC5zbGljZShzdGFydENvZGVibG9jay5zdGFydFBvc2l0aW9uICsgc3RhcnRDb2RlYmxvY2subWF0Y2hMZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydENvZGVibG9jayA9IG11bHRpQ29sdW1uUGFyc2VyLmZpbmRTdGFydENvZGVibG9jayhkb2NUZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgICAgICAgICAqIExvb3AgdGhyb3VnaCBhbGwgb2YgdGhlIGxpbmVzIGNoZWNraW5nIGlmIHRoZSBsaW5lIGlzIGEgXHJcbiAgICAgICAgICAgICAgICAgICAgICogc3RhcnQgdGFnIGFuZCBpZiBzbyBpcyBpdCBtaXNzaW5nIGFuIElELlxyXG4gICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaW5lc1dpdGhvdXRJRHMgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0V2l0aG91dElEcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IG11bHRpQ29sdW1uUGFyc2VyLmlzU3RhcnRUYWdXaXRoSUQobGluZXNbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihkYXRhLmlzU3RhcnRUYWcgPT09IHRydWUgJiYgZGF0YS5oYXNLZXkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc1dpdGhvdXRJRHMucHVzaChpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRXaXRob3V0SURzLnB1c2gobGluZXNbaV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYobGluZXNXaXRob3V0SURzLmxlbmd0aCA9PT0gMCAmJiBudW1Db2RlYmxvY2tzVXBkYXRlZCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgTm90aWNlIChcIkZvdW5kIDAgbWlzc2luZyBJRHMgaW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAgICAgKiBOb3cgbG9vcCB0aHJvdWdoIGVhY2ggbGluZSB0aGF0IGlzIG1pc3NpbmcgYW4gSUQgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICogZ2VuZXJhdGUgYSByYW5kb20gSUQgYW5kIHJlcGxhY2UgdGhlIG9yaWdpbmFsIHRleHQuXHJcbiAgICAgICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGxpbmVzV2l0aG91dElEcy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbmFsVGV4dCA9IHRleHRXaXRob3V0SURzW2ldXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0ID0gb3JpZ2luYWxUZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC50cmltRW5kKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRleHQuY2hhckF0KHRleHQubGVuZ3RoIC0gMSkgPT09IFwiOlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZSgwLCB0ZXh0Lmxlbmd0aC0xKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gYCR7dGV4dH06IElEXyR7Z2V0VUlEKDQpfWA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IucmVwbGFjZVJhbmdlKHRleHQsIHsgbGluZTogbGluZXNXaXRob3V0SURzW2ldLCBjaDogMCB9LCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxpbmU6IGxpbmVzV2l0aG91dElEc1tpXSwgY2g6IG9yaWdpbmFsVGV4dC5sZW5ndGh9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UgKGBSZXBsYWNlZCAke2xpbmVzV2l0aG91dElEcy5sZW5ndGggKyBudW1Db2RlYmxvY2tzVXBkYXRlZH0gbWlzc2luZyBJRChzKSBpbiB0aGUgY3VycmVudCBkb2N1bWVudC5gKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXcgTm90aWNlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkVuY291bnRlcmVkIGFuIGVycm9yIGFkZGlnbiBJRHMgdG8gbXVsdGktY29sdW1uIHJlZ2lvbnMuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuXCJcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJJbnRlcnZhbCh3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5VcGRhdGVPcGVuRmlsZVByZXZpZXdzKCk7XHJcbiAgICAgICAgfSwgNTAwKSk7XHJcbiAgICB9XHJcblxyXG4gICAgVXBkYXRlT3BlbkZpbGVQcmV2aWV3cygpIHtcclxuXHJcbiAgICAgICAgbGV0IGZpbGVNYW5hZ2VycyA9IHRoaXMuZ2xvYmFsTWFuYWdlci5nZXRBbGxGaWxlTWFuYWdlcnMoKTtcclxuICAgICAgICBmaWxlTWFuYWdlcnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCByZWdpb25hbE1hbmFnZXJzID0gZWxlbWVudC5nZXRBbGxSZWdpb25hbE1hbmFnZXJzKCk7XHJcbiAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlcnMuZm9yRWFjaChyZWdpb25NYW5hZ2VyID0+IHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgcmVnaW9uTWFuYWdlci51cGRhdGVSZW5kZXJlZE1hcmtkb3duKClcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBNYXJrZG93blBvc3RQcm9jZXNzb3IoKSB7XHJcbiAgICAgICAgdGhpcy5yZWdpc3Rlck1hcmtkb3duUG9zdFByb2Nlc3Nvcihhc3luYyAoZWwsIGN0eCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgc291cmNlUGF0aCA9IGN0eC5zb3VyY2VQYXRoO1xyXG5cclxuICAgICAgICAgICAgbGV0IGZpbGVET01NYW5hZ2VyID0gdGhpcy5nbG9iYWxNYW5hZ2VyLmdldEZpbGVNYW5hZ2VyKHNvdXJjZVBhdGgpO1xyXG4gICAgICAgICAgICBpZihmaWxlRE9NTWFuYWdlciA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJGb3VuZCBudWxsIERPTSBtYW5hZ2VyLiBDb3VsZCBub3QgcHJvY2VzcyBtdWx0aS1jb2x1bW4gbWFya2Rvd24uXCIpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBIZXJlIHdlIGNoZWNrIGlmIHRoZSBleHBvcnQgXCJwcmludFwiIGZsYWcgaXMgaW4gdGhlIERPTSBzbyB3ZSBjYW4gZGV0ZXJtaW5lIGlmIHdlXHJcbiAgICAgICAgICAgICAqIGFyZSBleHBvcnRpbmcgYW5kIGhhbmRsZSB0aGF0IGNhc2UuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZih0aGlzLmNoZWNrRXhwb3J0aW5nKGVsKSkge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0RG9jdW1lbnRUb1BERihlbCwgZmlsZURPTU1hbmFnZXIsIHNvdXJjZVBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBHZXQgdGhlIGluZm8gZm9yIG91ciBjdXJyZW50IGNvbnRleHQgYW5kIHRoZW4gY2hlY2tcclxuICAgICAgICAgICAgLy8gaWYgdGhlIGVudGlyZSB0ZXh0IGNvbnRhaW5zIGEgc3RhcnQgdGFnLiBJZiB0aGVyZSBpc1xyXG4gICAgICAgICAgICAvLyBubyBzdGFydCB0YWcgaW4gdGhlIGRvY3VtZW50IHdlIGNhbiBqdXN0IHJldHVybiBhbmRcclxuICAgICAgICAgICAgLy8gaWdub3JlIHRoZSByZXN0IG9mIHRoZSBwYXJzaW5nLlxyXG4gICAgICAgICAgICBsZXQgaW5mbyA9IGN0eC5nZXRTZWN0aW9uSW5mbyhlbCk7XHJcblxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogV2UgbmVlZCB0aGUgY29udGV4dCBpbmZvIHRvIHByb3Blcmx5IHBhcnNlIHNvIHJldHVybmluZyBoZXJlIFxyXG4gICAgICAgICAgICAgKiBpbmZvIGlzIG51bGwuIFRPRE86IFNldCBlcnJvciBpbiB2aWV3IGlmIHRoaXMgb2NjdXJzLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYoIWluZm8pIHtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBkb2NTdHJpbmcgPSBpbmZvLnRleHQ7XHJcbiAgICAgICAgICAgIGxldCBkb2NMaW5lcyA9IGRvY1N0cmluZy5zcGxpdChcIlxcblwiKTtcclxuXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBJZiB3ZSBlbmNvdW50ZXIgYSBzdGFydCB0YWcgb24gdGhlIGRvY3VtZW50IHdlIHNldCB0aGUgZmxhZyB0byBzdGFydFxyXG4gICAgICAgICAgICAgKiBwYXJzaW5nIHRoZSByZXN0IG9mIHRoZSBkb2N1bWVudC5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGlmKG11bHRpQ29sdW1uUGFyc2VyLmNvbnRhaW5zU3RhcnRUYWcoZWwudGV4dENvbnRlbnQpIHx8IFxyXG4gICAgICAgICAgICAgICBtdWx0aUNvbHVtblBhcnNlci5jb250YWluc1N0YXJ0Q29kZUJsb2NrKGRvY1N0cmluZykpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBmaWxlRE9NTWFuYWdlci5zZXRIYXNTdGFydFRhZygpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiogXHJcbiAgICAgICAgICAgICAqIElmIHRoZSBkb2N1bWVudCBkb2VzIG5vdCBjb250YWluIGFueSBzdGFydCB0YWdzIHdlIGlnbm9yZSB0aGVcclxuICAgICAgICAgICAgICogcmVzdCBvZiB0aGUgcGFyc2luZy4gVGhpcyBpcyBvbmx5IHNldCB0byB0cnVlIG9uY2UgdGhlIGZpcnN0XHJcbiAgICAgICAgICAgICAqIHN0YXJ0IHRhZyBlbGVtZW50IGlzIHBhcnNlZCBhYm92ZS5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGlmKGZpbGVET01NYW5hZ2VyLmdldEhhc1N0YXJ0VGFnKCkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBUYWtlIHRoZSBpbmZvIHByb3ZpZGVkIGFuZCBnZW5lcmF0ZSB0aGUgcmVxdWlyZWQgdmFyaWFibGVzIGZyb20gXHJcbiAgICAgICAgICAgICAqIHRoZSBsaW5lIHN0YXJ0IGFuZCBlbmQgdmFsdWVzLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgbGV0IGxpbmVzQWJvdmVBcnJheSA9IGRvY0xpbmVzLnNsaWNlKDAsIGluZm8ubGluZVN0YXJ0KVxyXG4gICAgICAgICAgICBsZXQgbGluZXNPZkVsZW1lbnQgPSBkb2NMaW5lcy5zbGljZShpbmZvLmxpbmVTdGFydCwgaW5mby5saW5lRW5kICsgMSk7XHJcbiAgICAgICAgICAgIGxldCB0ZXh0T2ZFbGVtZW50ID0gbGluZXNPZkVsZW1lbnQuam9pbihcIlxcblwiKVxyXG4gICAgICAgICAgICBsZXQgbGluZXNCZWxvd0FycmF5ID0gZG9jTGluZXMuc2xpY2UoaW5mby5saW5lRW5kICsgMSlcclxuXHJcbiAgICAgICAgICAgIC8vI3JlZ2lvbiBEZXByZWNpYXRlZCBTdGFydCBUYWdcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIElmIHRoZSBjdXJyZW50IGxpbmUgaXMgYSBzdGFydCB0YWcgd2Ugd2FudCB0byBzZXQgdXAgdGhlXHJcbiAgICAgICAgICAgICAqIHJlZ2lvbiBtYW5hZ2VyLiBUaGUgcmVnaW9uYWwgbWFuYWdlciB0YWtlcyBjYXJlXHJcbiAgICAgICAgICAgICAqIG9mIGFsbCBpdGVtcyBiZXR3ZWVuIGl0J3Mgc3RhcnQgYW5kIGVuZCB0YWdzIHdoaWxlIHRoZVxyXG4gICAgICAgICAgICAgKiBmaWxlIG1hbmFnZXIgd2UgZ290IGFib3ZlIGFib3ZlIHRha2VzIGNhcmUgb2YgYWxsIHJlZ2lvbmFsIFxyXG4gICAgICAgICAgICAgKiBtYW5hZ2VycyBpbiBlYWNoIGZpbGUuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZihtdWx0aUNvbHVtblBhcnNlci5jb250YWluc1N0YXJ0VGFnKHRleHRPZkVsZW1lbnQpKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLyoqIFxyXG4gICAgICAgICAgICAgICAgICogU2V0IHVwIHRoZSBjdXJyZW50IGVsZW1lbnQgdG8gYWN0IGFzIHRoZSBwYXJlbnQgZm9yIHRoZSBcclxuICAgICAgICAgICAgICAgICAqIG11bHRpLWNvbHVtbiByZWdpb24uXHJcbiAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgIGVsLmNoaWxkcmVuWzBdLmRldGFjaCgpO1xyXG4gICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0LmFkZChNdWx0aUNvbHVtbkxheW91dENTUy5SZWdpb25Sb290Q29udGFpbmVyRGl2KVxyXG4gICAgICAgICAgICAgICAgbGV0IHJlbmRlckVycm9yUmVnaW9uID0gZWwuY3JlYXRlRGl2KHtcclxuICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlJlZ2lvbkVycm9yQ29udGFpbmVyRGl2fSAke011bHRpQ29sdW1uU3R5bGVDU1MuUmVnaW9uRXJyb3JNZXNzYWdlfWAsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGxldCByZW5kZXJDb2x1bW5SZWdpb24gPSBlbC5jcmVhdGVEaXYoe1xyXG4gICAgICAgICAgICAgICAgICAgIGNsczogTXVsdGlDb2x1bW5MYXlvdXRDU1MuUmVnaW9uQ29udGVudENvbnRhaW5lckRpdlxyXG4gICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnRCbG9ja0RhdGEgPSBtdWx0aUNvbHVtblBhcnNlci5nZXRTdGFydEJsb2NrQWJvdmVMaW5lKGxpbmVzT2ZFbGVtZW50KVxyXG4gICAgICAgICAgICAgICAgaWYoc3RhcnRCbG9ja0RhdGEgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCByZWdpb25LZXkgPSBzdGFydEJsb2NrRGF0YS5zdGFydEJsb2NrS2V5O1xyXG4gICAgICAgICAgICAgICAgaWYoZmlsZURPTU1hbmFnZXIuY2hlY2tLZXlFeGlzdHMocmVnaW9uS2V5KSA9PT0gdHJ1ZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgeyBudW1iZXJPZlRhZ3MsIGtleXMgfSA9IG11bHRpQ29sdW1uUGFyc2VyLmNvdW50U3RhcnRUYWdzKGluZm8udGV4dCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBudW1NYXRjaGVzID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbnVtYmVyT2ZUYWdzOyBpKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ugd2UgY2hlY2tlZCBpZiBrZXkgZXhpc3RzIG9uZSBvZiB0aGVzZSBoYXMgdG8gbWF0Y2guXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGtleXNbaV0gPT09IHJlZ2lvbktleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtTWF0Y2hlcysrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gZGlzcGxheSBhbiBlcnJvciBpZiB0aGVyZSBhcmUgbW9yZSB0aGFuIDIgb2YgdGhlIHNhbWUgaWQgYWNyb3NzXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdob2xlIGRvY3VtZW50LiBUaGlzIHByZXZlbnRzIGVycm9zIHdoZW4gb2JzaWRpYW4gcmVsb2FkcyB0aGUgd2hvbGUgZG9jdW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAvLyBhbmQgdGhlcmUgYXJlIHR3byBvZiB0aGUgc2FtZSBrZXkgaW4gdGhlIG1hcC5cclxuICAgICAgICAgICAgICAgICAgICBpZihudW1NYXRjaGVzID49IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVnaW9uS2V5ID09PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJFcnJvclJlZ2lvbi5pbm5lclRleHQgPSBcIkZvdW5kIG11bHRpcGxlIHJlZ2lvbnMgd2l0aCBlbXB0eSBJRHMuIFBsZWFzZSBzZXQgYSB1bmlxdWUgSUQgYWZ0ZXIgZWFjaCBzdGFydCB0YWcuXFxuRUc6ICc9PT0gbXVsdGktY29sdW1uLXN0YXJ0OiByYW5kb21JRCdcXG5PciB1c2UgJ0ZpeCBNaXNzaW5nIElEcycgaW4gdGhlIGNvbW1hbmQgcGFsZXR0ZSBhbmQgcmVsb2FkIHRoZSBkb2N1bWVudC5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRXJyb3JSZWdpb24uaW5uZXJUZXh0ID0gXCJSZWdpb24gSUQgYWxyZWFkeSBleGlzdHMgaW4gZG9jdW1lbnQsIHBsZWFzZSBzZXQgYSB1bmlxdWUgSUQuXFxuRUc6ICc9PT0gbXVsdGktY29sdW1uLXN0YXJ0OiByYW5kb21JRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbC5pZCA9IGBNdWx0aUNvbHVtbklEOiR7cmVnaW9uS2V5fWBcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudE1hcmtkb3duUmVuZGVyZXIgPSBuZXcgTWFya2Rvd25SZW5kZXJDaGlsZChlbCk7XHJcbiAgICAgICAgICAgICAgICBmaWxlRE9NTWFuYWdlci5jcmVhdGVSZWdpb25hbE1hbmFnZXIocmVnaW9uS2V5LCBlbCwgcmVuZGVyRXJyb3JSZWdpb24sIHJlbmRlckNvbHVtblJlZ2lvbik7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50TWFya2Rvd25SZW5kZXJlci5vbnVubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZihmaWxlRE9NTWFuYWdlcikge1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVET01NYW5hZ2VyLnJlbW92ZVJlZ2lvbihzdGFydEJsb2NrRGF0YS5zdGFydEJsb2NrS2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgY3R4LmFkZENoaWxkKGVsZW1lbnRNYXJrZG93blJlbmRlcmVyKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAqIE5vdyB3ZSBoYXZlIGNyZWF0ZWQgb3VyIHJlZ2lvbmFsIG1hbmFnZXIgYW5kIGRlZmluZWQgd2hhdCBlbGVtZW50cyBcclxuICAgICAgICAgICAgICAgICAqIG5lZWQgdG8gYmUgcmVuZGVyZWQgaW50by4gU28gd2UgY2FuIHJldHVybiB3aXRob3V0IGFueSBtb3JlIHByb2Nlc3NpbmcuXHJcbiAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vI2VuZHJlZ2lvbiBEZXByZWNpYXRlZCBTdGFydCBUYWdcclxuXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBDaGVjayBpZiBhbnkgb2YgdGhlIGxpbmVzIGFib3ZlIHVzIGNvbnRhaW4gYSBzdGFydCBibG9jaywgYW5kIGlmXHJcbiAgICAgICAgICAgICAqIHNvIGdldCB0aGUgbGluZXMgZnJvbSBvdXIgY3VycmVudCBlbGVtZW50IHRvIHRoZSBzdGFydCBibG9jay5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGxldCBzdGFydEJvY2tBYm92ZSA9IG11bHRpQ29sdW1uUGFyc2VyLmdldFN0YXJ0QmxvY2tPckNvZGVibG9ja0Fib3ZlTGluZShsaW5lc0Fib3ZlQXJyYXkpO1xyXG4gICAgICAgICAgICBpZihzdGFydEJvY2tBYm92ZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBXZSBub3cga25vdyB3ZSdyZSB3aXRoaW4gYSBtdWx0aS1jb2x1bW4gcmVnaW9uLCBzbyB3ZSB1cGRhdGUgb3VyXHJcbiAgICAgICAgICAgICAqIGxpc3Qgb2YgbGluZXMgYWJvdmUgdG8ganVzdCBiZSB0aGUgaXRlbXMgd2l0aGluIHRoaXMgcmVnaW9uLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgbGluZXNBYm92ZUFycmF5ID0gc3RhcnRCb2NrQWJvdmUubGluZXNBYm92ZUFycmF5O1xyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFdlIHVzZSB0aGUgc3RhcnQgYmxvY2sncyBrZXkgdG8gZ2V0IG91ciByZWdpb25hbCBtYW5hZ2VyLiBJZiB0aGlzXHJcbiAgICAgICAgICAgICAqIGxvb2t1cCBmYWlscyB3ZSBjYW4gbm90IGNvbnRpbnVlIHByb2Nlc3NpbmcgdGhpcyBlbGVtZW50LlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgbGV0IHJlZ2lvbmFsQ29udGFpbmVyOiBSZWdpb25NYW5hZ2VyQ29udGFpbmVyID0gZmlsZURPTU1hbmFnZXIuZ2V0UmVnaW9uYWxDb250YWluZXIoc3RhcnRCb2NrQWJvdmUuc3RhcnRCbG9ja0tleSk7XHJcbiAgICAgICAgICAgIGlmKHJlZ2lvbmFsQ29udGFpbmVyID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgcmVnaW9uYWxNYW5hZ2VyOiBSZWdpb25NYW5hZ2VyID0gcmVnaW9uYWxDb250YWluZXIuZ2V0UmVnaW9uKCk7XHJcblxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogVG8gbWFrZSBzdXJlIHdlJ3JlIHBsYWNpbmcgdGhlIGl0ZW0gaW4gdGhlIHJpZ2h0IGxvY2F0aW9uIChhbmQgXHJcbiAgICAgICAgICAgICAqIG92ZXJ3cml0ZSBlbGVtZW50cyB0aGF0IGFyZSBub3cgZ29uZSkgd2Ugbm93IHdhbnQgYWxsIG9mIHRoZVxyXG4gICAgICAgICAgICAgKiBsaW5lcyBhZnRlciB0aGlzIGVsZW1lbnQgdXAgdG8gdGhlIGVuZCB0YWcuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBsaW5lc0JlbG93QXJyYXkgPSAgbXVsdGlDb2x1bW5QYXJzZXIuZ2V0RW5kQmxvY2tCZWxvdyhsaW5lc0JlbG93QXJyYXkpO1xyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIE5vdyB3ZSB0YWtlIHRoZSBsaW5lcyBhYm92ZSBvdXIgY3VycmVudCBlbGVtZW50IHVwIHVudGlsIHRoZVxyXG4gICAgICAgICAgICAgKiBzdGFydCByZWdpb24gdGFnIGFuZCByZW5kZXIgdGhhdCBpbnRvIGFuIEhUTUwgZWxlbWVudC4gV2Ugd2lsbCBcclxuICAgICAgICAgICAgICogdXNlIHRoZXNlIGVsZW1lbnRzIHRvIGRldGVybWluZSB3aGVyZSB0byBwbGFjZSBvdXIgY3VycmVudCBlbGVtZW50LlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgbGV0IHNpYmxpbmdzQWJvdmU6IEhUTUxEaXZFbGVtZW50ID0gcmVuZGVyTWFya2Rvd25Gcm9tTGluZXMobGluZXNBYm92ZUFycmF5LCBzb3VyY2VQYXRoKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBzaWJsaW5nc0JlbG93OiBIVE1MRGl2RWxlbWVudCA9IHJlbmRlck1hcmtkb3duRnJvbUxpbmVzKGxpbmVzQmVsb3dBcnJheSwgc291cmNlUGF0aCk7XHJcblxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogU2V0IHVwIG91ciBkb20gb2JqZWN0IHRvIGJlIGFkZGVkIHRvIHRoZSBtYW5hZ2VyLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgbGV0IGN1cnJlbnRPYmplY3Q6IERPTU9iamVjdCA9IG5ldyBET01PYmplY3QoZWwsIGxpbmVzT2ZFbGVtZW50KVxyXG4gICAgICAgICAgICBlbC5pZCA9IGN1cnJlbnRPYmplY3QuVUlEO1xyXG5cclxuICAgICAgICAgICAgY3VycmVudE9iamVjdCA9IFRhc2tMaXN0RE9NT2JqZWN0LmNoZWNrRm9yVGFza0xpc3RFbGVtZW50KGN1cnJlbnRPYmplY3QpXHJcblxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogTm93IHdlIGFkZCB0aGUgb2JqZWN0IHRvIHRoZSBtYW5hZ2VyIGFuZCB0aGVuIHNldHVwIHRoZVxyXG4gICAgICAgICAgICAgKiBjYWxsYmFjayBmb3Igd2hlbiB0aGUgb2JqZWN0IGlzIHJlbW92ZWQgZnJvbSB2aWV3IHRoYXQgd2lsbCByZW1vdmUgXHJcbiAgICAgICAgICAgICAqIHRoZSBpdGVtIGZyb20gdGhlIG1hbmFnZXIuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICByZWdpb25hbE1hbmFnZXIuYWRkT2JqZWN0KHNpYmxpbmdzQWJvdmUsIHNpYmxpbmdzQmVsb3csIGN1cnJlbnRPYmplY3QpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGVsZW1lbnRNYXJrZG93blJlbmRlcmVyID0gbmV3IE1hcmtkb3duUmVuZGVyQ2hpbGQoZWwpO1xyXG4gICAgICAgICAgICBlbGVtZW50TWFya2Rvd25SZW5kZXJlci5vbnVubG9hZCA9ICgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBpZihyZWdpb25hbENvbnRhaW5lciA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgcmVnaW9uYWxNYW5hZ2VyOiBSZWdpb25NYW5hZ2VyID0gcmVnaW9uYWxDb250YWluZXIuZ2V0UmVnaW9uKCk7XHJcbiAgICAgICAgICAgICAgICBpZihyZWdpb25hbE1hbmFnZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4gYXR0ZW1wdCB0byB1cGRhdGUgdGhlIHZpZXcgaGVyZSBhZnRlciB0aGUgaXRlbSBpcyByZW1vdmVkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYnV0IG5lZWQgdG8gZ2V0IHRoZSBpdGVtJ3MgcGFyZW50IGVsZW1lbnQgYmVmb3JlIHJlbW92aW5nIG9iamVjdCBmcm9tIG1hbmFnZXIuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ2lvblJlbmRlckRhdGE6IE11bHRpQ29sdW1uUmVuZGVyRGF0YSA9IHJlZ2lvbmFsTWFuYWdlci5nZXRSZWdpb25SZW5kZXJEYXRhKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlci5yZW1vdmVPYmplY3QoY3VycmVudE9iamVjdC5VSUQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAgICAgKiBOZWVkIHRvIGNoZWNrIGhlcmUgaWYgZWxlbWVudCBpcyBudWxsIGFzIHRoaXMgY2xvc3VyZSB3aWxsIGJlIGNhbGxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAqIHJlcGVhdGVkbHkgb24gZmlsZSBjaGFuZ2UuXHJcbiAgICAgICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYocmVnaW9uUmVuZGVyRGF0YS5wYXJlbnRSZW5kZXJFbGVtZW50ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVnaW9uYWxNYW5hZ2VyLnJlbmRlclJlZ2lvbkVsZW1lbnRzVG9TY3JlZW4oKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjdHguYWRkQ2hpbGQoZWxlbWVudE1hcmtkb3duUmVuZGVyZXIpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGVsZW1lbnRUZXh0U3BhY2VkID0gbGluZXNPZkVsZW1lbnQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldiArIFwiXFxuXCIgKyBjdXJyO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIE5vdyB3ZSBjaGVjayBpZiBvdXIgY3VycmVudCBlbGVtZW50IGlzIGEgc3BlY2lhbCBmbGFnIHNvIHdlIGNhblxyXG4gICAgICAgICAgICAgKiBwcm9wZXJseSBzZXQgdGhlIGVsZW1lbnQgdGFnIHdpdGhpbiB0aGUgcmVnaW9uYWwgbWFuYWdlci5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGlmKG11bHRpQ29sdW1uUGFyc2VyLmNvbnRhaW5zRW5kVGFnKGVsLnRleHRDb250ZW50KSA9PT0gdHJ1ZSkge1xyXG5cclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPYmplY3QuZWxlbWVudFR5cGUgPSBFbGVtZW50UmVuZGVyVHlwZS51blJlbmRlcmVkXHJcbiAgICAgICAgICAgICAgICBlbC5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLlJlZ2lvbkVuZFRhZylcclxuICAgICAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlci51cGRhdGVFbGVtZW50VGFnKGN1cnJlbnRPYmplY3QuVUlELCBET01PYmplY3RUYWcuZW5kUmVnaW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKG11bHRpQ29sdW1uUGFyc2VyLmNvbnRhaW5zQ29sRW5kVGFnKGVsZW1lbnRUZXh0U3BhY2VkKSA9PT0gdHJ1ZSkge1xyXG5cclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPYmplY3QuZWxlbWVudFR5cGUgPSBFbGVtZW50UmVuZGVyVHlwZS51blJlbmRlcmVkXHJcbiAgICAgICAgICAgICAgICBlbC5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkVuZFRhZylcclxuICAgICAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlci51cGRhdGVFbGVtZW50VGFnKGN1cnJlbnRPYmplY3QuVUlELCBET01PYmplY3RUYWcuY29sdW1uQnJlYWspO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYobXVsdGlDb2x1bW5QYXJzZXIuY29udGFpbnNDb2xTZXR0aW5nc1RhZyhlbGVtZW50VGV4dFNwYWNlZCkgPT09IHRydWUpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50T2JqZWN0LmVsZW1lbnRUeXBlID0gRWxlbWVudFJlbmRlclR5cGUudW5SZW5kZXJlZFxyXG4gICAgICAgICAgICAgICAgZWwuYWRkQ2xhc3MoTXVsdGlDb2x1bW5TdHlsZUNTUy5SZWdpb25TZXR0aW5ncylcclxuICAgICAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlciA9IHJlZ2lvbmFsQ29udGFpbmVyLnNldFJlZ2lvblNldHRpbmdzKGVsZW1lbnRUZXh0U3BhY2VkKVxyXG4gICAgICAgICAgICAgICAgcmVnaW9uYWxNYW5hZ2VyLnVwZGF0ZUVsZW1lbnRUYWcoY3VycmVudE9iamVjdC5VSUQsIERPTU9iamVjdFRhZy5yZWdpb25TZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbC5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLlJlZ2lvbkNvbnRlbnQpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlci5yZW5kZXJSZWdpb25FbGVtZW50c1RvU2NyZWVuKClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNTdGFydENvZGVibG9ja0luRXhwb3J0KG5vZGU6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBDT0RFQkxPQ0tfU1RBUlRfU1RSUy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgICAgICAgaWYobm9kZS5oYXNDbGFzcyhgYmxvY2stbGFuZ3VhZ2UtJHtDT0RFQkxPQ0tfU1RBUlRfU1RSU1tpXX1gKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZXhwb3J0RG9jdW1lbnRUb1BERihlbDogSFRNTEVsZW1lbnQsIGZpbGVET01NYW5hZ2VyOiBGaWxlRE9NTWFuYWdlciwgc291cmNlUGF0aDogc3RyaW5nKSB7XHJcblxyXG4gICAgICAgIC8vIEEgdHJ1ZSBleHBvcnQgd2lsbCBiZSBwYXNzZWQgYW4gZWxlbWVudCB3aXRoIGFsbCBvdGhlciBpdGVtcyBpbiB0aGUgZG9jIGFzIGNoaWxkcmVuLiBcclxuICAgICAgICAvLyBTbyBpZiB0aGVyZSBhcmUgbm8gY2hpbGRyZW4gd2UgY2FuIGp1c3QgcmV0dXJuXHJcbiAgICAgICAgbGV0IGRvY0NoaWxkcmVuID0gQXJyYXkuZnJvbShlbC5jaGlsZE5vZGVzKTtcclxuICAgICAgICBpZihkb2NDaGlsZHJlbi5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGNoaWxkcmVuVG9SZW1vdmUgPSBbXTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBUbyBleHBvcnQgY29kZWJsb2NrcyB3ZSBuZWVkIHRvIGdldCB0aGUgSURzIHNvIHdlIGNhbiBnZXQgdGhlIGRhdGEgZnJvbSBvdXIgbWFuYWdlcnMuXHJcbiAgICAgICAgLy8gaG93ZXZlciBzaW5jZSB0aGUgSUQgaXNudCBiZWluZyBzdG9yZWQgaW4gdGhlIGVsZW1lbnQgeWV0IHRoaXMgbWVhbnMgd2UgbmVlZCB0byByZWFkXHJcbiAgICAgICAgLy8gYWxsIG9mIHRoZSBJRHMgb3V0IG9mIHRoZSBmdWxsIGRvY3VtZW50LlxyXG4gICAgICAgIGxldCBjb2RlYmxvY2tTdGFydEJsb2NrcyA9IFtdXHJcbiAgICAgICAgbGV0IGFGaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHNvdXJjZVBhdGgpO1xyXG4gICAgICAgIGlmKGFGaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcclxuXHJcbiAgICAgICAgICAgIGxldCBmaWxlID0gYUZpbGUgYXMgVEZpbGVcclxuICAgICAgICAgICAgbGV0IGZpbGVUZXh0ID0gYXdhaXQgdGhpcy5hcHAudmF1bHQuY2FjaGVkUmVhZChmaWxlKSAvLyBJcyBjYWNoZWQgcmVhZCBPayBoZXJlPyBJdCBzaG91bGQgYmUuXHJcblxyXG4gICAgICAgICAgICAvLyBPbmNlIHdlIGhhdmUgb3VyIGRhdGEgd2Ugc2VhcmNoIHRoZSB0ZXh0IGZvciBhbGwgY29kZWJsb2NrIHN0YXJ0IHZhbHVlcy5cclxuICAgICAgICAgICAgLy8gc3RvcmluZyB0aGVtIGludG8gb3VyIHF1ZXVlLlxyXG4gICAgICAgICAgICBsZXQgY29kZUJsb2NrRGF0YSA9IG11bHRpQ29sdW1uUGFyc2VyLmZpbmRTdGFydENvZGVibG9jayhmaWxlVGV4dCk7XHJcbiAgICAgICAgICAgIHdoaWxlKGNvZGVCbG9ja0RhdGEuZm91bmQgPT09IHRydWUpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgY29kZWJsb2NrVGV4dCA9IGZpbGVUZXh0LnNsaWNlKGNvZGVCbG9ja0RhdGEuc3RhcnRQb3NpdGlvbiwgY29kZUJsb2NrRGF0YS5lbmRQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICBmaWxlVGV4dCA9IGZpbGVUZXh0LnNsaWNlKGNvZGVCbG9ja0RhdGEuZW5kUG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgY29kZWJsb2NrU3RhcnRCbG9ja3MucHVzaChjb2RlYmxvY2tUZXh0KTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb2RlQmxvY2tEYXRhID0gbXVsdGlDb2x1bW5QYXJzZXIuZmluZFN0YXJ0Q29kZWJsb2NrKGZpbGVUZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gIFxyXG5cclxuICAgICAgICBsZXQgaW5CbG9jayA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZG9jQ2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuXHJcbiAgICAgICAgICAgIGxldCBjaGlsZCA9IGRvY0NoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkRWwgPSBjaGlsZCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIGlmIChpbkJsb2NrID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZEJsb2NrRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdpb25LZXkgPSBcIlwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tEYXRhID0gbXVsdGlDb2x1bW5QYXJzZXIuaXNTdGFydFRhZ1dpdGhJRChjaGlsZC50ZXh0Q29udGVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrRGF0YS5pc1N0YXJ0VGFnID09PSB0cnVlKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEJsb2NrRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja0RhdGEuaGFzS2V5ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmRLZXkgPSBtdWx0aUNvbHVtblBhcnNlci5nZXRTdGFydFRhZ0tleShjaGlsZC50ZXh0Q29udGVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRLZXkgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb25LZXkgPSBmb3VuZEtleTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGJsb2NrRGF0YS5pc1N0YXJ0VGFnID09PSBmYWxzZSAmJiB0aGlzLmlzU3RhcnRDb2RlYmxvY2tJbkV4cG9ydChjaGlsZCkpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzdGFydCB0YWcgZnJvbSB0aGUgb2xkIHZlcnNpb24gaXMgbnVsbCB3ZSB0aGVuIGNoZWNrIHRvIHNlZSBpZiB0aGUgZWxlbWVudCBpc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGNvZGVibG9jayBzdGFydC4gSWYgaXQgaXMgd2UgdXNlIHRoZSBuZXh0IGF2YWlsYWJsZSBjb2RlYmxvY2sgZGF0YSB0byByZXRyaWV2ZSBvdXIgSUQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2RlYmxvY2tUZXh0ID0gY29kZWJsb2NrU3RhcnRCbG9ja3Muc2hpZnQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoY29kZWJsb2NrVGV4dCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRm91bmQgdW5kZWZpbmVkIGNvZGVibG9jayBkYXRhIHdoZW4gZXhwb3J0aW5nLlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPSBwYXJzZVN0YXJ0UmVnaW9uQ29kZUJsb2NrSUQoY29kZWJsb2NrVGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlkICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEJsb2NrRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb25LZXkgPSBpZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZm91bmRCbG9ja0RhdGEgPT09IHRydWUgJiYgcmVnaW9uS2V5ICE9PSBcIlwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbkJsb2NrID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBjaGlsZC5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuY2hpbGRyZW5baV0uZGV0YWNoKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuaW5uZXJUZXh0ID0gXCJcIjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLmNsYXNzTGlzdC5hZGQoTXVsdGlDb2x1bW5MYXlvdXRDU1MuUmVnaW9uUm9vdENvbnRhaW5lckRpdik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZW5kZXJFcnJvclJlZ2lvbiA9IGNoaWxkLmNyZWF0ZURpdih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlJlZ2lvbkVycm9yQ29udGFpbmVyRGl2fSwgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLlJlZ2lvbkVycm9yTWVzc2FnZX1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlbmRlckNvbHVtblJlZ2lvbiA9IGNoaWxkLmNyZWF0ZURpdih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHM6IE11bHRpQ29sdW1uTGF5b3V0Q1NTLlJlZ2lvbkNvbnRlbnRDb250YWluZXJEaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ2lvbmFsQ29udGFpbmVyOiBSZWdpb25NYW5hZ2VyQ29udGFpbmVyID0gZmlsZURPTU1hbmFnZXIuZ2V0UmVnaW9uYWxDb250YWluZXIocmVnaW9uS2V5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ2lvbmFsQ29udGFpbmVyID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJFcnJvclJlZ2lvbi5pbm5lclRleHQgPSBcIkVycm9yIHJlbmRlcmluZyBtdWx0aS1jb2x1bW4gcmVnaW9uLlxcblBsZWFzZSBjbG9zZSBhbmQgcmVvcGVuIHRoZSBmaWxlLCB0aGVuIG1ha2Ugc3VyZSB5b3UgYXJlIGluIHJlYWRpbmcgbW9kZSBiZWZvcmUgZXhwb3J0aW5nLlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ2lvbmFsTWFuYWdlcjogUmVnaW9uTWFuYWdlciA9IHJlZ2lvbmFsQ29udGFpbmVyLmdldFJlZ2lvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uYWxNYW5hZ2VyLmV4cG9ydFJlZ2lvbkVsZW1lbnRzVG9QREYocmVuZGVyQ29sdW1uUmVnaW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlDb2x1bW5QYXJzZXIuY29udGFpbnNFbmRUYWcoY2hpbGQudGV4dENvbnRlbnQpID09PSB0cnVlKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbkJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlblRvUmVtb3ZlLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjaGlsZHJlblRvUmVtb3ZlLmZvckVhY2goY2hpbGQgPT4ge1xyXG4gICAgICAgICAgICBlbC5yZW1vdmVDaGlsZChjaGlsZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tFeHBvcnRpbmcoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgaWYoZWxlbWVudCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcInByaW50XCIpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYoZWxlbWVudC5wYXJlbnROb2RlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoZWNrRXhwb3J0aW5nKGVsZW1lbnQucGFyZW50RWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBNYXJrZG93bkNvZGVibG9ja1Bvc3RQcm9jZXNzb3Ioc3RhcnRTdHI6IHN0cmluZykge1xyXG5cclxuICAgICAgICB0aGlzLnJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3Ioc3RhcnRTdHIsIChzb3VyY2UsIGVsLCBjdHgpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSBjdHguc291cmNlUGF0aDtcclxuICAgICAgICBcclxuICAgICAgICAgICAgLy8gU2V0IHVwIG91ciBDU1Mgc28gdGhhdCB0aGUgY29kZWJsb2NrIG9ubHkgcmVuZGVycyB0aGlzIGRhdGEgaW4gcmVhZGluZyBtb2RlXHJcbiAgICAgICAgICAgIC8vIHNvdXJjZS9saXZlIHByZXZpZXcgbW9kZSBpcyBoYW5kbGVkIGJ5IHRoZSBDTTYgaW1wbGVtZW50YXRpb24uXHJcbiAgICAgICAgICAgIGVsLnBhcmVudEVsZW1lbnQ/LmFkZENsYXNzKFwicHJlaXZldy1tY20tc3RhcnQtYmxvY2tcIik7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIFRvIGRldGVybWluZSB3aGF0IGtpbmQgb2YgdmlldyB3ZSBhcmUgcmVuZGVyaW5nIGluIHdlIG5lZWQgYSBtYXJrZG93biBsZWFmLlxyXG4gICAgICAgICAgICAvLyBSZWFsbHkgdGhpcyBzaG91bGQgbmV2ZXIgcmV0dXJuIGhlcmUgc2luY2UgcmVuZGVyaW5nIGlzIG9ubHkgZG9uZSBpbiBtYXJrZG93biBsZWF2ZXMuXHJcbiAgICAgICAgICAgIGxldCBtYXJrZG93bkxlYXZlcyA9IGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFwibWFya2Rvd25cIik7XHJcbiAgICAgICAgICAgIGlmKG1hcmtkb3duTGVhdmVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIENoZWNrIHRoZSB0eXBlIG9mIHRoZSBsZWFmXHJcbiAgICAgICAgICAgIGxldCBmb3VuZEZpbGVMZWFmID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBtYXJrZG93bkxlYXZlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVMZWFmID0gZ2V0RmlsZUxlYWYoc291cmNlUGF0aCk7XHJcbiAgICAgICAgICAgICAgICBpZihmaWxlTGVhZiA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZm91bmRGaWxlTGVhZiA9IHRydWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZihnZXRMZWFmU291cmNlTW9kZShmaWxlTGVhZikgPT09IFwic291cmNlXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgaWYodGhpcy5nbG9iYWxNYW5hZ2VyID09PSBudWxsIHx8IHRoaXMuZ2xvYmFsTWFuYWdlciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIkdsb2JhbCBtYW5hZ2VyIGlzIHVuZGVmaW5lZD9cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBmaWxlRE9NTWFuYWdlciA9IHRoaXMuZ2xvYmFsTWFuYWdlci5nZXRGaWxlTWFuYWdlcihzb3VyY2VQYXRoKTtcclxuICAgICAgICAgICAgaWYoZmlsZURPTU1hbmFnZXIgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gU2V0IGZpbGUgdG8gaGF2ZSBzdGFydCB0YWcuXHJcbiAgICAgICAgICAgIGZpbGVET01NYW5hZ2VyLnNldEhhc1N0YXJ0VGFnKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIEdldCB0aGUgaW5mbyBmb3Igb3VyIGN1cnJlbnQgY29udGV4dCBhbmQgdGhlbiBjaGVja1xyXG4gICAgICAgICAgICAvLyBpZiB0aGUgZW50aXJlIHRleHQgY29udGFpbnMgYSBzdGFydCB0YWcuIElmIHRoZXJlIGlzXHJcbiAgICAgICAgICAgIC8vIG5vIHN0YXJ0IHRhZyBpbiB0aGUgZG9jdW1lbnQgd2UgY2FuIGp1c3QgcmV0dXJuIGFuZFxyXG4gICAgICAgICAgICAvLyBpZ25vcmUgdGhlIHJlc3Qgb2YgdGhlIHBhcnNpbmcuXHJcbiAgICAgICAgICAgIGxldCBpbmZvID0gY3R4LmdldFNlY3Rpb25JbmZvKGVsKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFdlIG5lZWQgdGhlIGNvbnRleHQgaW5mbyB0byBwcm9wZXJseSBwYXJzZSBzbyByZXR1cm5pbmcgaGVyZSBcclxuICAgICAgICAgICAgICogaW5mbyBpcyBudWxsLiBUT0RPOiBTZXQgZXJyb3IgaW4gdmlldyBpZiB0aGlzIG9jY3Vycy5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGlmKCFpbmZvKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgLyoqIFxyXG4gICAgICAgICAgICAgKiBTZXQgdXAgdGhlIGN1cnJlbnQgZWxlbWVudCB0byBhY3QgYXMgdGhlIHBhcmVudCBmb3IgdGhlIFxyXG4gICAgICAgICAgICAgKiBtdWx0aS1jb2x1bW4gcmVnaW9uLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgZWwuY2xhc3NMaXN0LmFkZChNdWx0aUNvbHVtbkxheW91dENTUy5SZWdpb25Sb290Q29udGFpbmVyRGl2KVxyXG4gICAgICAgICAgICBsZXQgcmVuZGVyRXJyb3JSZWdpb24gPSBlbC5jcmVhdGVEaXYoe1xyXG4gICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtbkxheW91dENTUy5SZWdpb25FcnJvckNvbnRhaW5lckRpdn0gJHtNdWx0aUNvbHVtblN0eWxlQ1NTLlJlZ2lvbkVycm9yTWVzc2FnZX1gLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbGV0IHJlbmRlckNvbHVtblJlZ2lvbiA9IGVsLmNyZWF0ZURpdih7XHJcbiAgICAgICAgICAgICAgICBjbHM6IE11bHRpQ29sdW1uTGF5b3V0Q1NTLlJlZ2lvbkNvbnRlbnRDb250YWluZXJEaXZcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHJlZ2lvbktleSA9IHBhcnNlU3RhcnRSZWdpb25Db2RlQmxvY2tJRChzb3VyY2UpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgY3JlYXRlTmV3UmVnaW9uTWFuYWdlciA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmKGZpbGVET01NYW5hZ2VyLmNoZWNrS2V5RXhpc3RzKHJlZ2lvbktleSkgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlTmV3UmVnaW9uTWFuYWdlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbGV0IHsgbnVtYmVyT2ZUYWdzLCBrZXlzIH0gPSBtdWx0aUNvbHVtblBhcnNlci5jb3VudFN0YXJ0VGFncyhpbmZvLnRleHQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IG51bU1hdGNoZXMgPSAwO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IG51bWJlck9mVGFnczsgaSsrKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSB3ZSBjaGVja2VkIGlmIGtleSBleGlzdHMgb25lIG9mIHRoZXNlIGhhcyB0byBtYXRjaC5cclxuICAgICAgICAgICAgICAgICAgICBpZihrZXlzW2ldID09PSByZWdpb25LZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtTWF0Y2hlcysrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBkaXNwbGF5IGFuIGVycm9yIGlmIHRoZXJlIGFyZSBtb3JlIHRoYW4gMiBvZiB0aGUgc2FtZSBpZCBhY3Jvc3NcclxuICAgICAgICAgICAgICAgIC8vIHRoZSB3aG9sZSBkb2N1bWVudC4gVGhpcyBwcmV2ZW50cyBlcnJvcyB3aGVuIG9ic2lkaWFuIHJlbG9hZHMgdGhlIHdob2xlIGRvY3VtZW50XHJcbiAgICAgICAgICAgICAgICAvLyBhbmQgdGhlcmUgYXJlIHR3byBvZiB0aGUgc2FtZSBrZXkgaW4gdGhlIG1hcC5cclxuICAgICAgICAgICAgICAgIGlmKG51bU1hdGNoZXMgPj0gMikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJlZ2lvbktleSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJFcnJvclJlZ2lvbi5pbm5lclRleHQgPSBcIkZvdW5kIG11bHRpcGxlIHJlZ2lvbnMgd2l0aCBlbXB0eSBJRHMuIFBsZWFzZSBzZXQgYSB1bmlxdWUgSUQgYWZ0ZXIgZWFjaCBzdGFydCB0YWcuXFxuRUc6ICc9PT0gbXVsdGktY29sdW1uLXN0YXJ0OiByYW5kb21JRCdcXG5PciB1c2UgJ0ZpeCBNaXNzaW5nIElEcycgaW4gdGhlIGNvbW1hbmQgcGFsZXR0ZSBhbmQgcmVsb2FkIHRoZSBkb2N1bWVudC5cIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRXJyb3JSZWdpb24uaW5uZXJUZXh0ID0gXCJSZWdpb24gSUQgYWxyZWFkeSBleGlzdHMgaW4gZG9jdW1lbnQsIHBsZWFzZSBzZXQgYSB1bmlxdWUgSUQuXFxuRUc6ICc9PT0gbXVsdGktY29sdW1uLXN0YXJ0OiByYW5kb21JRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWwuaWQgPSBgTXVsdGlDb2x1bW5JRDoke3JlZ2lvbktleX1gXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIElmIHNvbWV0aGluZyBjaGFuZ2VzIGluIHRoZSBjb2RlYmxvY2sgd2UgZG9udCBuZWNlc3NhcmlseSB3YW50IHRvIHVwZGF0ZSBvdXJcclxuICAgICAgICAgICAgLy8gb2xkIHJlZmVyZW5jZSB0byB0aGUgcmVnaW9uIG1hbmFnZXIuIFRoaXMgY291bGQgYmUgYSBwb3RlbnRpYWwgYnVnIGFyZWEuXHJcbiAgICAgICAgICAgIGlmKGNyZWF0ZU5ld1JlZ2lvbk1hbmFnZXIgPT09IHRydWUpIHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyByZWdpb25hbCBtYW5hZ2VyLlxyXG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRNYXJrZG93blJlbmRlcmVyID0gbmV3IE1hcmtkb3duUmVuZGVyQ2hpbGQoZWwpO1xyXG4gICAgICAgICAgICAgICAgZmlsZURPTU1hbmFnZXIuY3JlYXRlUmVnaW9uYWxNYW5hZ2VyKHJlZ2lvbktleSwgZWwsIHJlbmRlckVycm9yUmVnaW9uLCByZW5kZXJDb2x1bW5SZWdpb24pO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8gU2V0IHVwIHRoZSBvbiB1bmxvYWQgY2FsbGJhY2suIFRoaXMgY2FuIGJlIGNhbGxlZCBpZiB0aGUgdXNlciBjaGFuZ2VzXHJcbiAgICAgICAgICAgICAgICAvLyB0aGUgc3RhcnQvc2V0dGluZ3MgY29kZWJsb2NrIGluIGFueSB3YXkuIFdlIG9ubHkgd2FudCB0byB1bmxvYWRcclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBmaWxlIGlzIGJlaW5nIHJlbW92ZWQgZnJvbSB2aWV3LlxyXG4gICAgICAgICAgICAgICAgZWxlbWVudE1hcmtkb3duUmVuZGVyZXIub251bmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZmlsZURPTU1hbmFnZXIgJiYgZmlsZVN0aWxsSW5WaWV3KHNvdXJjZVBhdGgpID09PSBmYWxzZSkge1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKFwiRmlsZSBub3QgaW4gYW55IG1hcmtkb3duIGxlYWYuIFJlbW92aW5nIHJlZ2lvbiBmcm9tIGRvbSBtYW5hZ2VyLlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlRE9NTWFuYWdlci5yZW1vdmVSZWdpb24ocmVnaW9uS2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgY3R4LmFkZENoaWxkKGVsZW1lbnRNYXJrZG93blJlbmRlcmVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgcmVnaW9uYWxNYW5hZ2VyQ29udGFpbmVyID0gZmlsZURPTU1hbmFnZXIuZ2V0UmVnaW9uYWxDb250YWluZXIocmVnaW9uS2V5KTtcclxuICAgICAgICAgICAgaWYocmVnaW9uYWxNYW5hZ2VyQ29udGFpbmVyICE9PSBudWxsKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgcmVnaW9uYWxNYW5hZ2VyID0gcmVnaW9uYWxNYW5hZ2VyQ29udGFpbmVyLnNldFJlZ2lvblNldHRpbmdzKHNvdXJjZSk7XHJcbiAgICAgICAgICAgICAgICByZWdpb25hbE1hbmFnZXIucmVnaW9uUGFyZW50ID0gZWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IHR5cGUgbmVhcmJ5U2libGluZ3MgPSB7IFxyXG4gICAgc2libGluZ3NBYm92ZTogSFRNTERpdkVsZW1lbnQsXHJcbiAgICBjdXJyZW50T2JqZWN0OiBET01PYmplY3QsIFxyXG59XHJcbmZ1bmN0aW9uIHJlbmRlck1hcmtkb3duRnJvbUxpbmVzKG1kTGluZXM6IHN0cmluZ1tdLCBzb3VyY2VQYXRoOiBzdHJpbmcpOiBIVE1MRGl2RWxlbWVudCB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXZSByZS1yZW5kZXIgYWxsIG9mIHRoZSBpdGVtcyBhYm92ZSBvdXIgZWxlbWVudCwgdW50aWwgdGhlIHN0YXJ0IHRhZywgXHJcbiAgICAgKiBzbyB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXJlIHRvIHBsYWNlIHRoZSBuZXcgaXRlbSBpbiB0aGUgbWFuYWdlci5cclxuICAgICAqIFxyXG4gICAgICogVE9ETzogQ2FuIHJlZHVjZSB0aGUgYW1vdW50IG5lZWRpbmcgdG8gYmUgcmVuZGVyZWQgYnkgb25seSByZW5kZXJpbmcgdG9cclxuICAgICAqIHRoZSBzdGFydCB0YWcgb3IgYSBjb2x1bW4tYnJlYWsgd2hpY2hldmVyIGlzIGNsb3Nlci5cclxuICAgICAqL1xyXG4gICAgbGV0IHNpYmxpbmdzID0gY3JlYXRlRGl2KCk7XHJcbiAgICBsZXQgbWFya2Rvd25SZW5kZXJDaGlsZCA9IG5ldyBNYXJrZG93blJlbmRlckNoaWxkKFxyXG4gICAgICAgIHNpYmxpbmdzXHJcbiAgICApO1xyXG4gICAgTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bihcclxuICAgICAgICBtZExpbmVzLnJlZHVjZSgocHJldiwgY3VycmVudCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJldiArIFwiXFxuXCIgICsgY3VycmVudDtcclxuICAgICAgICB9LCBcIlwiKSxcclxuICAgICAgICBzaWJsaW5ncyxcclxuICAgICAgICBzb3VyY2VQYXRoLFxyXG4gICAgICAgIG1hcmtkb3duUmVuZGVyQ2hpbGRcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIHNpYmxpbmdzO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJNYXJrZG93blJlbmRlckNoaWxkIiwiV2lkZ2V0VHlwZSIsIk1hcmtkb3duUmVuZGVyZXIiLCJTdGF0ZUZpZWxkIiwiRGVjb3JhdGlvbiIsIlJhbmdlU2V0QnVpbGRlciIsInN5bnRheFRyZWUiLCJ0b2tlbkNsYXNzTm9kZVByb3AiLCJFZGl0b3JWaWV3IiwiUGx1Z2luIiwiTm90aWNlIiwibXVsdGlDb2x1bW5QYXJzZXIuZmluZFN0YXJ0Q29kZWJsb2NrIiwibXVsdGlDb2x1bW5QYXJzZXIuaXNTdGFydFRhZ1dpdGhJRCIsIm11bHRpQ29sdW1uUGFyc2VyLmNvbnRhaW5zU3RhcnRUYWciLCJtdWx0aUNvbHVtblBhcnNlci5jb250YWluc1N0YXJ0Q29kZUJsb2NrIiwibXVsdGlDb2x1bW5QYXJzZXIuZ2V0U3RhcnRCbG9ja0Fib3ZlTGluZSIsIm11bHRpQ29sdW1uUGFyc2VyLmNvdW50U3RhcnRUYWdzIiwibXVsdGlDb2x1bW5QYXJzZXIuZ2V0U3RhcnRCbG9ja09yQ29kZWJsb2NrQWJvdmVMaW5lIiwibXVsdGlDb2x1bW5QYXJzZXIuZ2V0RW5kQmxvY2tCZWxvdyIsIm11bHRpQ29sdW1uUGFyc2VyLmNvbnRhaW5zRW5kVGFnIiwibXVsdGlDb2x1bW5QYXJzZXIuY29udGFpbnNDb2xFbmRUYWciLCJtdWx0aUNvbHVtblBhcnNlci5jb250YWluc0NvbFNldHRpbmdzVGFnIiwiVEZpbGUiLCJtdWx0aUNvbHVtblBhcnNlci5nZXRTdGFydFRhZ0tleSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXVEQTtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNoSCxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUMvRCxRQUFRLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDbkcsUUFBUSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDdEcsUUFBUSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDdEgsUUFBUSxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUUsS0FBSyxDQUFDLENBQUM7QUFDUDs7QUM3RUE7Ozs7OztBQU1HO0FBRUgsSUFBWSxZQU9YLENBQUE7QUFQRCxDQUFBLFVBQVksWUFBWSxFQUFBO0FBQ3BCLElBQUEsWUFBQSxDQUFBLFlBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFPLENBQUE7QUFDUCxJQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsSUFBRSxDQUFBO0FBQ0YsSUFBQSxZQUFBLENBQUEsWUFBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLE1BQUksQ0FBQTtBQUNKLElBQUEsWUFBQSxDQUFBLFlBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFRLENBQUE7QUFDUixJQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsS0FBRyxDQUFBO0FBQ0gsSUFBQSxZQUFBLENBQUEsWUFBQSxDQUFBLE9BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLE9BQUssQ0FBQTtBQUNULENBQUMsRUFQVyxZQUFZLEtBQVosWUFBWSxHQU92QixFQUFBLENBQUEsQ0FBQSxDQUFBO0FBRUQsSUFBWSxZQU9YLENBQUE7QUFQRCxDQUFBLFVBQVksWUFBWSxFQUFBO0FBQ3BCLElBQUEsWUFBQSxDQUFBLFlBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFPLENBQUE7QUFDUCxJQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsSUFBRSxDQUFBO0FBQ0YsSUFBQSxZQUFBLENBQUEsWUFBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLE1BQUksQ0FBQTtBQUNKLElBQUEsWUFBQSxDQUFBLFlBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFRLENBQUE7QUFDUixJQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsS0FBRyxDQUFBO0FBQ0gsSUFBQSxZQUFBLENBQUEsWUFBQSxDQUFBLE9BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLE9BQUssQ0FBQTtBQUNULENBQUMs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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9yZWdpb25TZXR0aW5ncy50cyIsInNyYy91dGlsaXRpZXMvc2V0dGluZ3NQYXJzZXIudHMiLCJzcmMvdXRpbGl0aWVzL3RleHRQYXJzZXIudHMiLCJzcmMvdXRpbGl0aWVzL3V0aWxzLnRzIiwic3JjL3V0aWxpdGllcy9lbGVtZW50UmVuZGVyVHlwZVBhcnNlci50cyIsInNyYy9kb21fbWFuYWdlci9kb21PYmplY3QudHMiLCJzcmMvdXRpbGl0aWVzL2Nzc0RlZmluaXRpb25zLnRzIiwic3JjL2RvbV9tYW5hZ2VyL3JlZ2lvbmFsX21hbmFnZXJzL3JlZ2lvbk1hbmFnZXIudHMiLCJzcmMvZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvc3RhbmRhcmRNdWx0aUNvbHVtblJlZ2lvbk1hbmFnZXIudHMiLCJzcmMvZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvc2luZ2xlQ29sdW1uUmVnaW9uTWFuYWdlci50cyIsInNyYy9kb21fbWFuYWdlci9yZWdpb25hbF9tYW5hZ2Vycy9hdXRvTGF5b3V0UmVnaW9uTWFuYWdlci50cyIsInNyYy9kb21fbWFuYWdlci9yZWdpb25hbF9tYW5hZ2Vycy9yZWdpb25NYW5hZ2VyQ29udGFpbmVyLnRzIiwic3JjL2RvbV9tYW5hZ2VyL2RvbU1hbmFnZXIudHMiLCJzcmMvbGl2ZV9wcmV2aWV3L21jbV9saXZlUHJldmlld193aWRnZXQudHMiLCJzcmMvbGl2ZV9wcmV2aWV3L2NtNl9saXZlUHJldmlldy50cyIsInNyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xyXG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcclxuICAgICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xyXG4gICAgfVxyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRJbihzdGF0ZSwgcmVjZWl2ZXIpIHtcclxuICAgIGlmIChyZWNlaXZlciA9PT0gbnVsbCB8fCAodHlwZW9mIHJlY2VpdmVyICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiByZWNlaXZlciAhPT0gXCJmdW5jdGlvblwiKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCB1c2UgJ2luJyBvcGVyYXRvciBvbiBub24tb2JqZWN0XCIpO1xyXG4gICAgcmV0dXJuIHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgPT09IHN0YXRlIDogc3RhdGUuaGFzKHJlY2VpdmVyKTtcclxufVxyXG4iLCIvKlxuICogRmlsZW5hbWU6IG11bHRpLWNvbHVtbi1tYXJrZG93bi9zcmMvcmVnaW9uU2V0dGluZ3MudHNcbiAqIENyZWF0ZWQgRGF0ZTogVHVlc2RheSwgRmVicnVhcnkgMXN0IDIwMjIsIDEyOjIzOjUzIHBtXG4gKiBBdXRob3I6IENhbWVyb24gUm9iaW5zb25cbiAqIFxuICogQ29weXJpZ2h0IChjKSAyMDIyIENhbWVyb24gUm9iaW5zb25cbiAqL1xuXG5leHBvcnQgZW51bSBCb3JkZXJPcHRpb24ge1xuICAgIGVuYWJsZWQsXG4gICAgb24sXG4gICAgdHJ1ZSxcbiAgICBkaXNhYmxlZCxcbiAgICBvZmYsXG4gICAgZmFsc2Vcbn1cblxuZXhwb3J0IGVudW0gU2hhZG93T3B0aW9uIHtcbiAgICBlbmFibGVkLFxuICAgIG9uLFxuICAgIHRydWUsXG4gICAgZGlzYWJsZWQsXG4gICAgb2ZmLFxuICAgIGZhbHNlXG59XG5cbmV4cG9ydCBlbnVtIENvbHVtbkxheW91dCB7IFxuICAgIHN0YW5kYXJkLFxuICAgIGxlZnQsXG4gICAgZmlyc3QsXG4gICAgY2VudGVyLFxuICAgIG1pZGRsZSxcbiAgICBzZWNvbmQsXG4gICAgcmlnaHQsXG4gICAgdGhpcmQsXG4gICAgbGFzdFxufTtcblxuZXhwb3J0IGVudW0gU2luZ2xlQ29sdW1uU2l6ZSB7XG4gICAgc21hbGwsXG4gICAgbWVkaXVtLFxuICAgIGxhcmdlLFxuICAgIGZ1bGxcbn1cblxuZXhwb3J0IGVudW0gQ29udGVudE92ZXJmbG93VHlwZSB7XG4gICAgc2Nyb2xsLFxuICAgIGhpZGRlblxufVxuXG5leHBvcnQgdHlwZSBNdWx0aUNvbHVtblNldHRpbmdzID0ge1xuICAgIG51bWJlck9mQ29sdW1uczogbnVtYmVyLFxuICAgIGNvbHVtbkxheW91dDogQ29sdW1uTGF5b3V0LFxuICAgIGRyYXdCb3JkZXI6IGJvb2xlYW4sXG4gICAgZHJhd1NoYWRvdzogYm9vbGVhbixcbiAgICBhdXRvTGF5b3V0OiBib29sZWFuXG4gICAgY29sdW1uU2l6ZTogU2luZ2xlQ29sdW1uU2l6ZSxcbiAgICBjb2x1bW5Qb3NpdGlvbjogQ29sdW1uTGF5b3V0LFxuICAgIGNvbHVtblNwYWNpbmc6IHN0cmluZyxcbiAgICBjb250ZW50T3ZlcmZsb3c6IENvbnRlbnRPdmVyZmxvd1R5cGVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRNdWx0aUNvbHVtblNldHRpbmdzKCk6IE11bHRpQ29sdW1uU2V0dGluZ3Mge1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbnVtYmVyT2ZDb2x1bW5zOiAyLFxuICAgICAgICBjb2x1bW5MYXlvdXQ6IENvbHVtbkxheW91dC5zdGFuZGFyZCxcbiAgICAgICAgZHJhd0JvcmRlcjogdHJ1ZSxcbiAgICAgICAgZHJhd1NoYWRvdzogdHJ1ZSxcbiAgICAgICAgYXV0b0xheW91dDogZmFsc2UsXG4gICAgICAgIGNvbHVtblNpemU6IFNpbmdsZUNvbHVtblNpemUubWVkaXVtLFxuICAgICAgICBjb2x1bW5Qb3NpdGlvbjogQ29sdW1uTGF5b3V0LnN0YW5kYXJkLFxuICAgICAgICBjb2x1bW5TcGFjaW5nOiBcIlwiLFxuICAgICAgICBjb250ZW50T3ZlcmZsb3c6IENvbnRlbnRPdmVyZmxvd1R5cGUuc2Nyb2xsXG4gICAgfVxufSIsIi8qKlxuICogRmlsZTogL3NyYy91dGlsaXRpZXMvc2V0dGluZ3NQYXJzZXIudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICogQ3JlYXRlZCBEYXRlOiBGcmlkYXksIEp1bmUgM3JkIDIwMjIsIDg6MTYgcG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICogQXV0aG9yOiBDYW1lcm9uIFJvYmluc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICogQ29weXJpZ2h0IChjKSAyMDIyIENhbWVyb24gUm9iaW5zb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICovXG5cbmltcG9ydCB7IE11bHRpQ29sdW1uU2V0dGluZ3MsIENvbHVtbkxheW91dCwgQm9yZGVyT3B0aW9uLCBTaGFkb3dPcHRpb24sIGdldERlZmF1bHRNdWx0aUNvbHVtblNldHRpbmdzLCBTaW5nbGVDb2x1bW5TaXplLCBDb250ZW50T3ZlcmZsb3dUeXBlIH0gZnJvbSBcIi4uL3JlZ2lvblNldHRpbmdzXCI7XG5cbi8qKlxuICogSGVyZSB3ZSBkZWZpbmUgYWxsIG9mIHRoZSB2YWxpZCBzZXR0aW5ncyBzdHJpbmdzIHRoYXQgdGhlIHVzZXIgY2FuIGVudGVyIGZvciBlYWNoIHNldHRpbmcgdHlwZS5cbiAqIFRoZSBzdHJpbmdzIGFyZSB0aGVuIG1hcHBlZCB0d2ljZSwgZmlyc3QgdG8gYSB2YWxpZCByZWdleCBzdHJpbmcgdGhhdCBzZWFyY2hlcyBmb3IgdGhlIHNldHRpbmdcbiAqIG5hbWUsIGlnbm9yaW5nIGFsbCBleHRyYSBzcGFjZXMgYW5kIGxldHRlciBjYXNlLCBhbmQgdGhlbiBtYXBlZCB0byBhIFJlZ0V4IG9iamVjdCB0byBiZSB1c2VkIFxuICogd2hlbiBwYXJzaW5nLlxuICovXG5jb25zdCBDT0xfUE9TSVRJT05fT1BUSU9OX1NUUlM6IHN0cmluZ1tdID0gW1xuICAgIFwiY29sdW1uIHBvc2l0aW9uXCIsXG4gICAgXCJjb2wgcG9zaXRpb25cIixcbiAgICBcImNvbHVtbiBsb2NhdGlvblwiLFxuICAgIFwiY29sIGxvY2F0aW9uXCIsXG4gICAgXCJzaW5nbGUgY29sdW1uIGxvY2F0aW9uXCIsXG4gICAgXCJzaW5nbGUgY29sdW1uIHBvc2l0aW9uXCIsXG5dO1xuY29uc3QgQ09MX1BPU0lUSU9OX1JFR0VYX0FSUjogUmVnRXhwW10gPSBDT0xfUE9TSVRJT05fT1BUSU9OX1NUUlMubWFwKGNvbnZlcnRTdHJpbmdUb1NldHRpbmdzUmVnZXgpLm1hcCgodmFsdWUpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cCh2YWx1ZSwgXCJpXCIpO1xufSk7XG5cbmNvbnN0IENPTF9TSVpFX09QVElPTl9TVFJTOiBzdHJpbmdbXSA9IFtcbiAgICBcImNvbHVtbiBzaXplXCIsXG4gICAgXCJjb2x1bW4gd2lkdGhcIixcbiAgICBcImNvbCBzaXplXCIsXG4gICAgXCJjb2wgd2lkdGhcIixcbiAgICBcInNpbmdsZSBjb2x1bW4gc2l6ZVwiLFxuICAgIFwic2luZ2xlIGNvbCBzaXplXCIsXG4gICAgXCJzaW5nbGUgY29sdW1uIHdpZHRoXCIsXG4gICAgXCJzaW5nbGUgY29sIHdpZHRoXCJcbl07XG5jb25zdCBDT0xfU0laRV9PUFRJT05fUkVHRVhfQVJSOiBSZWdFeHBbXSA9IENPTF9TSVpFX09QVElPTl9TVFJTLm1hcChjb252ZXJ0U3RyaW5nVG9TZXR0aW5nc1JlZ2V4KS5tYXAoKHZhbHVlKSA9PiB7XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAodmFsdWUsIFwiaVwiKTtcbn0pO1xuXG5jb25zdCBOVU1CRVJfT0ZfQ09MVU1OU19TVFJTID0gW1xuICAgIFwibnVtYmVyIG9mIGNvbHVtbnNcIlxuXVxuY29uc3QgTlVNQkVSX09GX0NPTFVNTlNfUkVHRVhfQVJSOiBSZWdFeHBbXSA9IE5VTUJFUl9PRl9DT0xVTU5TX1NUUlMubWFwKGNvbnZlcnRTdHJpbmdUb1NldHRpbmdzUmVnZXgpLm1hcCgodmFsdWUpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cCh2YWx1ZSwgXCJpXCIpO1xufSk7XG5cbmNvbnN0IExBUkdFU1RfQ09MVU1OX1NUUlMgPSBbXG4gICAgXCJsYXJnZXN0IGNvbHVtblwiXG5dXG5jb25zdCBMQVJHRVNUX0NPTFVNTl9SRUdFWF9BUlI6IFJlZ0V4cFtdID0gTEFSR0VTVF9DT0xVTU5fU1RSUy5tYXAoY29udmVydFN0cmluZ1RvU2V0dGluZ3NSZWdleCkubWFwKCh2YWx1ZSkgPT4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbHVlLCBcImlcIik7XG59KTtcblxuY29uc3QgRFJBV19CT1JERVJfU1RSUyA9IFtcbiAgICBcImJvcmRlclwiXG5dXG5jb25zdCBEUkFXX0JPUkRFUl9SRUdFWF9BUlI6IFJlZ0V4cFtdID0gRFJBV19CT1JERVJfU1RSUy5tYXAoY29udmVydFN0cmluZ1RvU2V0dGluZ3NSZWdleCkubWFwKCh2YWx1ZSkgPT4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbHVlLCBcImlcIik7XG59KTtcblxuY29uc3QgRFJBV19TSEFET1dfU1RSUyA9IFtcbiAgICBcInNoYWRvd1wiXG5dXG5jb25zdCBEUkFXX1NIQURPV19SRUdFWF9BUlI6IFJlZ0V4cFtdID0gRFJBV19TSEFET1dfU1RSUy5tYXAoY29udmVydFN0cmluZ1RvU2V0dGluZ3NSZWdleCkubWFwKCh2YWx1ZSkgPT4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbHVlLCBcImlcIik7XG59KTtcblxuY29uc3QgQVVUT19MQVlPVVRfU0VUVElOR19TVFJTID0gW1xuICAgIFwiYXV0byBsYXlvdXRcIlxuXVxuY29uc3QgQVVUT19MQVlPVVRfUkVHRVhfQVJSOiBSZWdFeHBbXSA9IEFVVE9fTEFZT1VUX1NFVFRJTkdfU1RSUy5tYXAoY29udmVydFN0cmluZ1RvU2V0dGluZ3NSZWdleCkubWFwKCh2YWx1ZSkgPT4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbHVlLCBcImlcIik7XG59KTtcblxuY29uc3QgQ09MVU1OX1NQQUNJTkdfUkVHRVhfQVJSOiBSZWdFeHBbXSA9IFtcbiAgICBcImNvbHVtbiBzcGFjaW5nXCIsXG5dLm1hcCgodmFsdWUpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChjb252ZXJ0U3RyaW5nVG9TZXR0aW5nc1JlZ2V4KHZhbHVlKSwgXCJpXCIpO1xufSk7XG5cbmNvbnN0IENPTlRFTlRfT1ZFUkZMT1dfUkVHRVhfQVJSOiBSZWdFeHBbXSA9IFtcbiAgICBcIm92ZXJmbG93XCIsXG4gICAgXCJjb250ZW50IG92ZXJmbG93XCJcbl0ubWFwKCh2YWx1ZSkgPT4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGNvbnZlcnRTdHJpbmdUb1NldHRpbmdzUmVnZXgodmFsdWUpLCBcImlcIilcbn0pXG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBzZWFyY2hlcyB0aGUgc2V0dGluZ3Mgc3RyaW5nIHRocm91Z2ggZWFjaCByZWdleCBvcHRpb24uIElmIG9uZSBvZiB0aGUgcmVnZXhcbiAqIHZhbHVlcyBtYXRjaCwgaXQgcmV0dXJucyB0aGUgZmlyc3QgZ3JvdXAgZm91bmQgYnkgdGhlIHJlZ2V4LiBUaGlzIGlzIGRlcGVuZGVkIG9uIHByb3BlclxuICogcmVnZXggZm9ybWF0dGluZyB3aGljaCBpcyBkb25lIGJ5IHRoZSBjb252ZXJ0U3RyaW5nVG9TZXR0aW5nc1JlZ2V4IGZ1bmN0aW9uIGRlZmluZWQgYmVsb3cuXG4gKiBcbiAqIEBwYXJhbSBzZXR0aW5nc1N0cmluZyBUaGUgdmFsdWUgdGhhdCBtYXkgbWF0Y2ggb25lIG9mIHRoZSBzZXR0aW5nIG9wdGlvbnMuXG4gKiBAcGFyYW0gdmFsaWRTZXR0aW5nRm9ybWF0UmVnRXggVGhlIHNldHRpbmdzIG9wdGlvbnMgdGhyb3VnaCB3aGljaCB0byBjaGVjayBhbGwgb3B0aW9ucy4gSWYgb25lIG9mIHRoZXNlIHJlZ2V4IFxuICogdmFsdWVzIG1hdGNoIG9uIHRoZSBzdHJpbmcgd2UgYnJlYWsgZnJvbSB0aGUgbG9vcCByZXR1cm5pbmcgdGhlIGZvdW5kIHZhbHVlLlxuICogXG4gKiBAcmV0dXJucyB0aGUgdXNlciBlbnRlcmVkIGRhdGEgaWYgdGhlIHNldHRpbmcgaXMgYSBtYXRjaCwgb3IgbnVsbCBpZiBub24gb2YgdGhlIG9wdGlvbnMgbWF0Y2hlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0U2V0dGluZ3NEYXRhRnJvbUtleXMoc2V0dGluZ3NTdHJpbmc6IHN0cmluZywgdmFsaWRTZXR0aW5nRm9ybWF0UmVnRXg6IFJlZ0V4cFtdKTogc3RyaW5nIHwgbnVsbCB7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbGlkU2V0dGluZ0Zvcm1hdFJlZ0V4Lmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgbGV0IHJlZ2V4U2VhcmNoRGF0YSA9IHZhbGlkU2V0dGluZ0Zvcm1hdFJlZ0V4W2ldLmV4ZWMoc2V0dGluZ3NTdHJpbmcpXG4gICAgICAgIGlmKHJlZ2V4U2VhcmNoRGF0YSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHJlZ2V4U2VhcmNoRGF0YVsxXS50cmltKClcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTaW5nbGVDb2x1bW5TZXR0aW5ncyhzZXR0aW5nc1N0cjogc3RyaW5nLCBvcmlnaW5hbFNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzKTogTXVsdGlDb2x1bW5TZXR0aW5ncyB7XG5cbiAgICBsZXQgc2V0dGluZ3NMaW5lcyA9IHNldHRpbmdzU3RyLnNwbGl0KFwiXFxuXCIpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dGluZ3NMaW5lcy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgIGxldCBzZXR0aW5nc0xpbmUgPSBzZXR0aW5nc0xpbmVzW2ldO1xuICAgICAgICBsZXQgc2V0dGluZ3NEYXRhID0gZ2V0U2V0dGluZ3NEYXRhRnJvbUtleXMoc2V0dGluZ3NMaW5lLCBDT0xfUE9TSVRJT05fUkVHRVhfQVJSKTtcbiAgICAgICAgaWYgKHNldHRpbmdzRGF0YSAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICBvcmlnaW5hbFNldHRpbmdzLmNvbHVtblBvc2l0aW9uID0gcGFyc2VGb3JTaW5nbGVDb2x1bW5Mb2NhdGlvbihzZXR0aW5nc0RhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2V0dGluZ3NEYXRhID0gZ2V0U2V0dGluZ3NEYXRhRnJvbUtleXMoc2V0dGluZ3NMaW5lLCBDT0xfU0laRV9PUFRJT05fUkVHRVhfQVJSKTtcbiAgICAgICAgaWYgKHNldHRpbmdzRGF0YSAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICBvcmlnaW5hbFNldHRpbmdzLmNvbHVtblNpemUgPSBwYXJzZUZvclNpbmdsZUNvbHVtblNpemUoc2V0dGluZ3NEYXRhKVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yaWdpbmFsU2V0dGluZ3M7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNvbHVtblNldHRpbmdzKHNldHRpbmdzU3RyOiBzdHJpbmcpOiBNdWx0aUNvbHVtblNldHRpbmdzIHtcblxuICAgIGxldCBwYXJzZWRTZXR0aW5ncyA9IGdldERlZmF1bHRNdWx0aUNvbHVtblNldHRpbmdzKCk7XG5cbiAgICBsZXQgc2V0dGluZ3NMaW5lcyA9IHNldHRpbmdzU3RyLnNwbGl0KFwiXFxuXCIpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXR0aW5nc0xpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBzZXR0aW5nc0xpbmUgPSBzZXR0aW5nc0xpbmVzW2ldO1xuXG4gICAgICAgIGxldCBzZXR0aW5nc0RhdGEgPSBnZXRTZXR0aW5nc0RhdGFGcm9tS2V5cyhzZXR0aW5nc0xpbmUsIE5VTUJFUl9PRl9DT0xVTU5TX1JFR0VYX0FSUik7XG4gICAgICAgIGlmIChzZXR0aW5nc0RhdGEgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgbGV0IG51bU9mQ29scyA9IHBhcnNlSW50KHNldHRpbmdzRGF0YSlcbiAgICAgICAgICAgIGlmIChOdW1iZXIuaXNOYU4obnVtT2ZDb2xzKSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAobnVtT2ZDb2xzID49IDEgJiYgbnVtT2ZDb2xzIDw9IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyc2VkU2V0dGluZ3MubnVtYmVyT2ZDb2x1bW5zID0gbnVtT2ZDb2xzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNldHRpbmdzRGF0YSA9IGdldFNldHRpbmdzRGF0YUZyb21LZXlzKHNldHRpbmdzTGluZSwgTEFSR0VTVF9DT0xVTU5fUkVHRVhfQVJSKVxuICAgICAgICBpZiAoc2V0dGluZ3NEYXRhICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIGxldCB1c2VyRGVmTGF5b3V0OiBDb2x1bW5MYXlvdXQgPSAoPGFueT5Db2x1bW5MYXlvdXQpW3NldHRpbmdzRGF0YV07XG4gICAgICAgICAgICBpZiAodXNlckRlZkxheW91dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcGFyc2VkU2V0dGluZ3MuY29sdW1uTGF5b3V0ID0gdXNlckRlZkxheW91dDtcbiAgICAgICAgICAgICAgICBwYXJzZWRTZXR0aW5ncy5jb2x1bW5Qb3NpdGlvbiA9IHVzZXJEZWZMYXlvdXQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXR0aW5nc0RhdGEgPSBnZXRTZXR0aW5nc0RhdGFGcm9tS2V5cyhzZXR0aW5nc0xpbmUsIERSQVdfQk9SREVSX1JFR0VYX0FSUilcbiAgICAgICAgaWYgKHNldHRpbmdzRGF0YSAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICBsZXQgaXNCb3JkZXJEcmF3bjogQm9yZGVyT3B0aW9uID0gKDxhbnk+Qm9yZGVyT3B0aW9uKVtzZXR0aW5nc0RhdGFdO1xuICAgICAgICAgICAgaWYgKGlzQm9yZGVyRHJhd24gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoaXNCb3JkZXJEcmF3bikge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIChCb3JkZXJPcHRpb24uZGlzYWJsZWQpOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIChCb3JkZXJPcHRpb24ub2ZmKTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAoQm9yZGVyT3B0aW9uLmZhbHNlKTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZFNldHRpbmdzLmRyYXdCb3JkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNldHRpbmdzRGF0YSA9IGdldFNldHRpbmdzRGF0YUZyb21LZXlzKHNldHRpbmdzTGluZSwgRFJBV19TSEFET1dfUkVHRVhfQVJSKVxuICAgICAgICBpZiAoc2V0dGluZ3NEYXRhICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIGxldCBpc1NoYWRvd0RyYXduOiBTaGFkb3dPcHRpb24gPSAoPGFueT5TaGFkb3dPcHRpb24pW3NldHRpbmdzRGF0YV07XG4gICAgICAgICAgICBpZiAoaXNTaGFkb3dEcmF3biAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChpc1NoYWRvd0RyYXduKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgKFNoYWRvd09wdGlvbi5kaXNhYmxlZCk6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgKFNoYWRvd09wdGlvbi5vZmYpOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIChTaGFkb3dPcHRpb24uZmFsc2UpOlxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkU2V0dGluZ3MuZHJhd1NoYWRvdyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0dGluZ3NEYXRhID0gZ2V0U2V0dGluZ3NEYXRhRnJvbUtleXMoc2V0dGluZ3NMaW5lLCBBVVRPX0xBWU9VVF9SRUdFWF9BUlIpXG4gICAgICAgIGlmIChzZXR0aW5nc0RhdGEgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgaWYoc2V0dGluZ3NEYXRhID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIHBhcnNlZFNldHRpbmdzLmF1dG9MYXlvdXQgPSB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXR0aW5nc0RhdGEgPSBnZXRTZXR0aW5nc0RhdGFGcm9tS2V5cyhzZXR0aW5nc0xpbmUsIENPTFVNTl9TUEFDSU5HX1JFR0VYX0FSUik7XG4gICAgICAgIGlmKHNldHRpbmdzRGF0YSAhPT0gbnVsbCkge1xuXG4gICAgICAgICAgICBsZXQgcGFyc2VkID0gZ2V0TGVuZ3RoVW5pdChzZXR0aW5nc0RhdGEudHJpbSgpKTtcbiAgICAgICAgICAgIGxldCBzcGFjaW5nU3RyID0gXCJcIjtcblxuICAgICAgICAgICAgaWYocGFyc2VkLmlzVmFsaWQpIHtcblxuICAgICAgICAgICAgICAgIGxldCBub1VuaXRzU3RyID0gc2V0dGluZ3NEYXRhLnJlcGxhY2UocGFyc2VkLnVuaXRTdHIsIFwiXCIpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICBsZXQgbm9Vbml0c051bSA9IHBhcnNlSW50KG5vVW5pdHNTdHIpO1xuICAgICAgICAgICAgICAgIGlmKGlzTmFOKG5vVW5pdHNOdW0pID09PSBmYWxzZSkge1xuXG4gICAgICAgICAgICAgICAgICAgIHNwYWNpbmdTdHIgPSBgJHtub1VuaXRzU3RyfSR7cGFyc2VkLnVuaXRTdHJ9YFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGxldCBub1VuaXRzTnVtID0gcGFyc2VJbnQoc2V0dGluZ3NEYXRhLnRyaW0oKSk7XG4gICAgICAgICAgICAgICAgaWYoaXNOYU4obm9Vbml0c051bSkgPT09IGZhbHNlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgc3BhY2luZ1N0ciA9IGAke25vVW5pdHNOdW19cHRgXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBwYXJzZWRTZXR0aW5ncy5jb2x1bW5TcGFjaW5nID0gc3BhY2luZ1N0cjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldHRpbmdzRGF0YSA9IGdldFNldHRpbmdzRGF0YUZyb21LZXlzKHNldHRpbmdzTGluZSwgQ09OVEVOVF9PVkVSRkxPV19SRUdFWF9BUlIpO1xuICAgICAgICBpZihzZXR0aW5nc0RhdGEgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgbGV0IG92ZXJmbG93VHlwZSA9IENvbnRlbnRPdmVyZmxvd1R5cGUuc2Nyb2xsO1xuXG4gICAgICAgICAgICBzZXR0aW5nc0RhdGEgPSBzZXR0aW5nc0RhdGEudG9Mb3dlckNhc2UoKS50cmltKCk7XG4gICAgICAgICAgICBpZihzZXR0aW5nc0RhdGEgPT09IFwiaGlkZGVuXCIpIHtcbiAgICAgICAgICAgICAgICBvdmVyZmxvd1R5cGUgPSBDb250ZW50T3ZlcmZsb3dUeXBlLmhpZGRlbjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGFyc2VkU2V0dGluZ3MuY29udGVudE92ZXJmbG93ID0gb3ZlcmZsb3dUeXBlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlZFNldHRpbmdzO1xufVxuXG5mdW5jdGlvbiBnZXRMZW5ndGhVbml0KGxlbmd0aFN0cjogc3RyaW5nKTogeyBpc1ZhbGlkOiBib29sZWFuLCB1bml0U3RyOiBzdHJpbmcgfSB7XG5cbiAgICBsZXQgbGFzdENoYXIgPSBsZW5ndGhTdHIuc2xpY2UobGVuZ3RoU3RyLmxlbmd0aCAtIDEpO1xuICAgIGxldCBsYXN0VHdvQ2hhcnMgPSBsZW5ndGhTdHIuc2xpY2UobGVuZ3RoU3RyLmxlbmd0aCAtIDIpO1xuXG4gICAgbGV0IHVuaXRTdHIgPSBcIlwiXG4gICAgbGV0IGlzVmFsaWQgPSBmYWxzZTtcbiAgICBpZihsYXN0Q2hhciA9PT0gXCIlXCIpIHtcbiAgICAgICAgdW5pdFN0ciA9IGxhc3RDaGFyO1xuICAgICAgICBpc1ZhbGlkID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZihsYXN0VHdvQ2hhcnMgPT09IFwiY21cIiB8fFxuICAgICAgICAgICAgbGFzdFR3b0NoYXJzID09PSBcIm1tXCIgfHxcbiAgICAgICAgICAgIGxhc3RUd29DaGFycyA9PT0gXCJpblwiIHx8XG4gICAgICAgICAgICBsYXN0VHdvQ2hhcnMgPT09IFwicHhcIiB8fFxuICAgICAgICAgICAgbGFzdFR3b0NoYXJzID09PSBcInB0XCIgfHxcbiAgICAgICAgICAgIGxhc3RUd29DaGFycyA9PT0gXCJwY1wiIHx8XG4gICAgICAgICAgICBsYXN0VHdvQ2hhcnMgPT09IFwiZW1cIiB8fFxuICAgICAgICAgICAgbGFzdFR3b0NoYXJzID09PSBcImV4XCIgfHxcbiAgICAgICAgICAgIGxhc3RUd29DaGFycyA9PT0gXCJjaFwiIHx8XG4gICAgICAgICAgICBsYXN0VHdvQ2hhcnMgPT09IFwidndcIiB8fFxuICAgICAgICAgICAgbGFzdFR3b0NoYXJzID09PSBcInZoXCIgKSB7XG4gICAgICAgIHVuaXRTdHIgPSBsYXN0VHdvQ2hhcnM7XG4gICAgICAgIGlzVmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiB7IGlzVmFsaWQ6IGlzVmFsaWQsIHVuaXRTdHI6IHVuaXRTdHIgfVxufVxuXG5jb25zdCBDT0RFQkxPQ0tfUkVHSU9OX0lEX1JFR0VYX1NUUlMgPSBbXG4gICAgXCJpZFwiLFxuICAgIFwicmVnaW9uIGlkXCJcbl1cbmNvbnN0IENPREVCTE9DS19SRUdJT05fSURfUkVHRVhfQVJSOiBSZWdFeHBbXSA9IENPREVCTE9DS19SRUdJT05fSURfUkVHRVhfU1RSUy5tYXAoY29udmVydFN0cmluZ1RvU2V0dGluZ3NSZWdleCkubWFwKCh2YWx1ZSkgPT4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKHZhbHVlLCBcImlcIik7XG59KTtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN0YXJ0UmVnaW9uQ29kZUJsb2NrSUQoc2V0dGluZ3NTdHI6IHN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBsZXQgY29kZUJsb2NrUmVnaW9uSUQgPSBcIlwiXG4gICAgbGV0IHNldHRpbmdzTGluZXMgPSBzZXR0aW5nc1N0ci5zcGxpdChcIlxcblwiKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dGluZ3NMaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgc2V0dGluZ3NMaW5lID0gc2V0dGluZ3NMaW5lc1tpXTtcblxuICAgICAgICBsZXQgc2V0dGluZ3NEYXRhID0gZ2V0U2V0dGluZ3NEYXRhRnJvbUtleXMoc2V0dGluZ3NMaW5lLCBDT0RFQkxPQ0tfUkVHSU9OX0lEX1JFR0VYX0FSUik7XG4gICAgICAgIGlmIChzZXR0aW5nc0RhdGEgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgY29kZUJsb2NrUmVnaW9uSUQgPSBzZXR0aW5nc0RhdGFcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBjb2RlQmxvY2tSZWdpb25JRDtcbn1cblxuZnVuY3Rpb24gcGFyc2VGb3JTaW5nbGVDb2x1bW5Mb2NhdGlvbihsb2NhdGlvblN0cmluZzogc3RyaW5nKTogQ29sdW1uTGF5b3V0e1xuXG4gICAgc3dpdGNoIChsb2NhdGlvblN0cmluZy50b0xvd2VyQ2FzZSgpLnRyaW0oKS5yZXBsYWNlKFwiIFwiLCBcIlwiKSkge1xuICAgICAgICBjYXNlIFwibGVmdFwiOlxuICAgICAgICBjYXNlIFwibGVmdHNpZGVcIjpcbiAgICAgICAgY2FzZSBcImxlZnRtYXJnaW5cIjpcbiAgICAgICAgY2FzZSBcImxlZnRhbGlnblwiOlxuICAgICAgICBjYXNlIFwibGVmdGFsaWduZWRcIjpcbiAgICAgICAgY2FzZSBcImxlZnRhbGlnbmVtZW50XCI6XG4gICAgICAgIGNhc2UgXCJmaXJzdFwiOlxuICAgICAgICBjYXNlIFwic3RhcnRcIjpcbiAgICAgICAgY2FzZSBcImJlZ2lubmluZ1wiOlxuICAgICAgICAgICAgcmV0dXJuIENvbHVtbkxheW91dC5sZWZ0XG4gICAgICAgIGNhc2UgXCJtaWRkbGVcIjpcbiAgICAgICAgY2FzZSBcIm1pZGRsZWFsaWduZWRcIjpcbiAgICAgICAgY2FzZSBcIm1pZGRsZWFsaWdubWVudFwiOlxuICAgICAgICBjYXNlIFwiY2VudGVyXCI6XG4gICAgICAgIGNhc2UgXCJjZW50ZXJhbGlnbmVkXCI6XG4gICAgICAgIGNhc2UgXCJjZW50ZXJhbGlnbm1lbnRcIjpcbiAgICAgICAgY2FzZSBcImNlbnRlcmVkXCI6XG4gICAgICAgIGNhc2UgXCJzdGFuZGFyZFwiOlxuICAgICAgICAgICAgcmV0dXJuIENvbHVtbkxheW91dC5jZW50ZXJcbiAgICAgICAgY2FzZSBcInJpZ2h0XCI6XG4gICAgICAgIGNhc2UgXCJyaWdodHNpZGVcIjpcbiAgICAgICAgY2FzZSBcInJpZ2h0bWFyZ2luXCI6XG4gICAgICAgIGNhc2UgXCJyaWdodGFsaWduXCI6XG4gICAgICAgIGNhc2UgXCJyaWdodGFsaWduZWRcIjpcbiAgICAgICAgY2FzZSBcInJpZ2h0YWxpZ25tZW50XCI6XG4gICAgICAgIGNhc2UgXCJsYXN0XCI6XG4gICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgIHJldHVybiBDb2x1bW5MYXlvdXQucmlnaHRcbiAgICB9XG5cbiAgICByZXR1cm4gQ29sdW1uTGF5b3V0LmNlbnRlclxufVxuXG5mdW5jdGlvbiBwYXJzZUZvclNpbmdsZUNvbHVtblNpemUoc2l6ZVN0cmluZzogc3RyaW5nKTogU2luZ2xlQ29sdW1uU2l6ZSB7XG5cbiAgICBzd2l0Y2ggKHNpemVTdHJpbmcgPSBzaXplU3RyaW5nLnRvTG93ZXJDYXNlKCkudHJpbSgpLnJlcGxhY2UoXCIgXCIsIFwiXCIpKSB7XG4gICAgICAgIGNhc2UgXCJzbWFsbFwiOlxuICAgICAgICBjYXNlIFwic21cIjpcbiAgICAgICAgICAgIHJldHVybiBTaW5nbGVDb2x1bW5TaXplLnNtYWxsO1xuICAgICAgICBjYXNlIFwibWVkaXVtXCI6XG4gICAgICAgIGNhc2UgXCJtZWRcIjpcbiAgICAgICAgICAgIHJldHVybiBTaW5nbGVDb2x1bW5TaXplLm1lZGl1bTtcbiAgICAgICAgY2FzZSBcImxhcmdlXCI6XG4gICAgICAgIGNhc2UgXCJsZ1wiOlxuICAgICAgICAgICAgcmV0dXJuIFNpbmdsZUNvbHVtblNpemUubGFyZ2U7XG4gICAgICAgIGNhc2UgXCJmdWxsXCI6XG4gICAgICAgIGNhc2UgXCJmdWxsIHNpemVcIjpcbiAgICAgICAgICAgIHJldHVybiBTaW5nbGVDb2x1bW5TaXplLmZ1bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIFNpbmdsZUNvbHVtblNpemUubWVkaXVtXG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRTdHJpbmdUb1NldHRpbmdzUmVnZXgob3JpZ2luYWxTdHJpbmc6IFN0cmluZyk6IHN0cmluZyB7XG5cbiAgICBvcmlnaW5hbFN0cmluZyA9IG9yaWdpbmFsU3RyaW5nLnJlcGxhY2UoXCIgXCIsIFwiICpcIik7XG4gICAgXG4gICAgbGV0IHJlZ2V4U3RyaW5nID0gYCg/OiR7b3JpZ2luYWxTdHJpbmd9ICo6ICopKC4qKWA7XG4gICAgcmV0dXJuIHJlZ2V4U3RyaW5nO1xufSIsIi8qXG4gKiBGaWxlOiBtdWx0aS1jb2x1bW4tbWFya2Rvd24vc3JjL011bHRpQ29sdW1uUGFyc2VyLnRzXG4gKiBDcmVhdGVkIERhdGU6IFNhdHVyZGF5LCBKYW51YXJ5IDIybmQgMjAyMiwgNjowMjo0NiBwbVxuICogQXV0aG9yOiBDYW1lcm9uIFJvYmluc29uXG4gKiBcbiAqIENvcHlyaWdodCAoYykgMjAyMiBDYW1lcm9uIFJvYmluc29uXG4gKi9cblxuaW1wb3J0IHsgcGFyc2VTdGFydFJlZ2lvbkNvZGVCbG9ja0lEIH0gZnJvbSBcIi4vc2V0dGluZ3NQYXJzZXJcIjtcblxuY29uc3QgU1RBUlRfUkVHRVhfU1RSUyA9IFtcIj09PSAqc3RhcnQtbXVsdGktY29sdW1uKDo/W2EtekEtWjAtOS1fXFxcXHNdKik/XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiPT09ICptdWx0aS1jb2x1bW4tc3RhcnQoOj9bYS16QS1aMC05LV9cXFxcc10qKT9cIl1cbmNvbnN0IFNUQVJUX1JFR0VYX0FSUjogUmVnRXhwW10gPSBbXTtcbmZvcihsZXQgaSA9IDA7IGkgPCBTVEFSVF9SRUdFWF9TVFJTLmxlbmd0aDsgaSsrKSB7XG4gICAgU1RBUlRfUkVHRVhfQVJSLnB1c2gobmV3IFJlZ0V4cChTVEFSVF9SRUdFWF9TVFJTW2ldKSk7XG59XG5cbmNvbnN0IFNUQVJUX1JFR0VYX1NUUlNfV0hPTEVfTElORSA9IFtcIl49PT0gKnN0YXJ0LW11bHRpLWNvbHVtbig6P1thLXpBLVowLTktX1xcXFxzXSopPyRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIl49PT0gKm11bHRpLWNvbHVtbi1zdGFydCg6P1thLXpBLVowLTktX1xcXFxzXSopPyRcIl1cbmNvbnN0IFNUQVJUX1JFR0VYX0FSUl9XSE9MRV9MSU5FOiBSZWdFeHBbXSA9IFtdO1xuZm9yKGxldCBpID0gMDsgaSA8IFNUQVJUX1JFR0VYX1NUUlNfV0hPTEVfTElORS5sZW5ndGg7IGkrKykge1xuICAgIFNUQVJUX1JFR0VYX0FSUl9XSE9MRV9MSU5FLnB1c2gobmV3IFJlZ0V4cChTVEFSVF9SRUdFWF9TVFJTX1dIT0xFX0xJTkVbaV0pKTtcbn1cblxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFN0YXJ0VGFnKHRleHQ6IHN0cmluZyk6IHsgZm91bmQ6IGJvb2xlYW4sIHN0YXJ0UG9zaXRpb246IG51bWJlciwgZW5kUG9zaXRpb246IG51bWJlciwgbWF0Y2hMZW5ndGg6IG51bWJlciB9IHtcblxuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGxldCBzdGFydFBvc2l0aW9uID0gLTE7XG4gICAgbGV0IG1hdGNoTGVuZ3RoID0gMDtcbiAgICBmb3IobGV0IGkgPSAwOyBpPCBTVEFSVF9SRUdFWF9BUlIubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICBsZXQgcmVnZXhEYXRhID0gU1RBUlRfUkVHRVhfQVJSW2ldLmV4ZWModGV4dClcbiAgICAgICAgaWYocmVnZXhEYXRhICE9PSBudWxsICYmIHJlZ2V4RGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gcmVnZXhEYXRhLmluZGV4XG4gICAgICAgICAgICBtYXRjaExlbmd0aCA9IHJlZ2V4RGF0YVswXS5sZW5ndGg7XG5cbiAgICAgICAgICAgIGxldCBsaW5lID0gdGV4dC5zbGljZShzdGFydFBvc2l0aW9uLCBzdGFydFBvc2l0aW9uICsgbWF0Y2hMZW5ndGgpO1xuICAgICAgICAgICAgaWYoU1RBUlRfUkVHRVhfQVJSX1dIT0xFX0xJTkVbaV0udGVzdChsaW5lKSkge1xuICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBsZXQgZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgbWF0Y2hMZW5ndGg7XG5cbiAgICByZXR1cm4geyBmb3VuZCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIG1hdGNoTGVuZ3RoIH07XG59XG5leHBvcnQgZnVuY3Rpb24gY29udGFpbnNTdGFydFRhZyh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmluZFN0YXJ0VGFnKHRleHQpLmZvdW5kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1N0YXJ0VGFnV2l0aElEKHRleHQ6IHN0cmluZyk6IHtpc1N0YXJ0VGFnOiBib29sZWFuLCBoYXNLZXk6IGJvb2xlYW59IHtcblxuICAgIGxldCBzdGFydFRhZ0RhdGEgPSBmaW5kU3RhcnRUYWcodGV4dCk7XG4gICAgaWYoc3RhcnRUYWdEYXRhLmZvdW5kID09PSB0cnVlKSB7XG5cbiAgICAgICAgbGV0IGtleSA9IGdldFN0YXJ0VGFnS2V5KHRleHQpXG4gICAgICAgIGlmKGtleSA9PT0gbnVsbCB8fCBrZXkgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB7aXNTdGFydFRhZzogdHJ1ZSwgaGFzS2V5OiBmYWxzZX07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtpc1N0YXJ0VGFnOiB0cnVlLCBoYXNLZXk6IHRydWV9O1xuICAgIH1cblxuICAgIHJldHVybiB7aXNTdGFydFRhZzogZmFsc2UsIGhhc0tleTogZmFsc2V9O1xufVxuXG5jb25zdCBFTkRfUkVHRVhfU1RSUyA9IFtcIj09PSAqZW5kLW11bHRpLWNvbHVtblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCI9PT0gKm11bHRpLWNvbHVtbi1lbmRcIl1cbmNvbnN0IEVORF9SRUdFWF9BUlI6IFJlZ0V4cFtdID0gW107XG5mb3IobGV0IGkgPSAwOyBpIDwgRU5EX1JFR0VYX1NUUlMubGVuZ3RoOyBpKyspIHtcbiAgICBFTkRfUkVHRVhfQVJSLnB1c2gobmV3IFJlZ0V4cChFTkRfUkVHRVhfU1RSU1tpXSkpO1xufVxuXG50eXBlIFRhZ1Bvc2l0aW9uaW5nRGF0YSA9IHtcbiAgICBmb3VuZDogYm9vbGVhbjtcbiAgICBzdGFydFBvc2l0aW9uOiBudW1iZXI7XG4gICAgZW5kUG9zaXRpb246IG51bWJlcjtcbiAgICBtYXRjaExlbmd0aDogbnVtYmVyO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRFbmRUYWcodGV4dDogc3RyaW5nKTogVGFnUG9zaXRpb25pbmdEYXRhIHtcblxuICAgIC8vIFdlIHdhbnQgdG8gZmluZCB0aGUgZmlyc3QgZW5kIHRhZyBpbiB0aGUgdGV4dC5cbiAgICAvLyBTbyBoZXJlIHdlIGxvb3AgYmFja3dhcmRzLCBzbGljaW5nIG9mZiB0aGUgdGFpbCB1bnRpbFxuICAgIC8vIHRoZXJlIGFyZSBubyBtb3JlIGVuZCB0YWdzIGF2YWlsYWJsZVxuICAgIGxldCBsYXN0VmFsaWREYXRhID0gZ2V0RW5kVGFnRGF0YSh0ZXh0KTtcbiAgICBsZXQgd29ya2luZ1JlZ2V4RGF0YSA9IGxhc3RWYWxpZERhdGE7XG4gICAgd2hpbGUod29ya2luZ1JlZ2V4RGF0YS5mb3VuZCA9PT0gdHJ1ZSkge1xuXG4gICAgICAgIGxhc3RWYWxpZERhdGEgPSB3b3JraW5nUmVnZXhEYXRhO1xuICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZSgwLCB3b3JraW5nUmVnZXhEYXRhLnN0YXJ0UG9zaXRpb24pO1xuICAgICAgICB3b3JraW5nUmVnZXhEYXRhID0gZ2V0RW5kVGFnRGF0YSh0ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGFzdFZhbGlkRGF0YTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc0VuZFRhZyh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmluZEVuZFRhZyh0ZXh0KS5mb3VuZFxufVxuXG5mdW5jdGlvbiBnZXRFbmRUYWdEYXRhKHRleHQ6IHN0cmluZykge1xuXG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgbGV0IHN0YXJ0UG9zaXRpb24gPSAtMTtcbiAgICBsZXQgZW5kUG9zaXRpb24gPSAtMVxuICAgIGxldCBtYXRjaExlbmd0aCA9IDA7XG4gICAgZm9yKGxldCBpID0gMDsgaTwgRU5EX1JFR0VYX0FSUi5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgIGxldCByZWdleERhdGEgPSBFTkRfUkVHRVhfQVJSW2ldLmV4ZWModGV4dClcbiAgICAgICAgaWYocmVnZXhEYXRhICE9PSBudWxsICYmIHJlZ2V4RGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gcmVnZXhEYXRhLmluZGV4XG4gICAgICAgICAgICBtYXRjaExlbmd0aCA9IHJlZ2V4RGF0YVswXS5sZW5ndGg7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyBtYXRjaExlbmd0aDtcblxuICAgIHJldHVybiB7IGZvdW5kLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgbWF0Y2hMZW5ndGggfTtcbn1cblxuY29uc3QgQ09MX1JFR0VYX1NUUlM6IHN0cmluZ1tdID0gW1wiPT09ICpjb2x1bW4tZW5kICo9PT1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIj09PSAqZW5kLWNvbHVtbiAqPT09XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI9PT0gKmNvbHVtbi1icmVhayAqPT09XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI9PT0gKmJyZWFrLWNvbHVtbiAqPT09XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCItLS0gKmNvbHVtbi1lbmQgKi0tLVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiLS0tICplbmQtY29sdW1uICotLS1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi0tLSAqY29sdW1uLWJyZWFrICotLS1cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIi0tLSAqYnJlYWstY29sdW1uICotLS1cIl07XG5jb25zdCBDT0xfUkVHRVhfQVJSOiBSZWdFeHBbXSA9IFtdO1xuZm9yKGxldCBpID0gMDsgaSA8IENPTF9SRUdFWF9TVFJTLmxlbmd0aDsgaSsrKSB7XG4gICAgQ09MX1JFR0VYX0FSUi5wdXNoKG5ldyBSZWdFeHAoQ09MX1JFR0VYX1NUUlNbaV0pKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluc0NvbEVuZFRhZyh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGZvcihsZXQgaSA9IDA7IGk8IENPTF9SRUdFWF9BUlIubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICBpZihDT0xfUkVHRVhfQVJSW2ldLnRlc3QodGV4dCkpIHtcbiAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xufVxuXG5jb25zdCBDT0xfRUxFTUVOVF9JTk5FUl9URVhUX1JFR0VYX1NUUlM6IHN0cmluZ1tdID0gW1wiPSAqY29sdW1uLWVuZCAqPVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPSAqZW5kLWNvbHVtbiAqPVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiPSAqY29sdW1uLWJyZWFrICo9XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCI9ICpicmVhay1jb2x1bW4gKj1cIl1cbmNvbnN0IENPTF9FTEVNRU5UX0lOTkVSX1RFWFRfUkVHRVhfQVJSOiBSZWdFeHBbXSA9IFtdO1xuZm9yKGxldCBpID0gMDsgaSA8IENPTF9FTEVNRU5UX0lOTkVSX1RFWFRfUkVHRVhfU1RSUy5sZW5ndGg7IGkrKykge1xuICAgIENPTF9FTEVNRU5UX0lOTkVSX1RFWFRfUkVHRVhfQVJSLnB1c2gobmV3IFJlZ0V4cChDT0xfRUxFTUVOVF9JTk5FUl9URVhUX1JFR0VYX1NUUlNbaV0pKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBlbElubmVyVGV4dENvbnRhaW5zQ29sRW5kVGFnKHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuXG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgZm9yKGxldCBpID0gMDsgaTwgQ09MX0VMRU1FTlRfSU5ORVJfVEVYVF9SRUdFWF9BUlIubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICBpZihDT0xfRUxFTUVOVF9JTk5FUl9URVhUX1JFR0VYX0FSUltpXS50ZXN0KHRleHQpKSB7XG4gICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmb3VuZDtcbn1cblxuY29uc3QgQ09MX1NFVFRJTkdTX1JFR0VYX1NUUlMgPSBbXCJgYGBzZXR0aW5nc1wiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJgYGBjb2x1bW4tc2V0dGluZ3NcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYGBgbXVsdGktY29sdW1uLXNldHRpbmdzXCJdO1xuY29uc3QgQ09MX1NFVFRJTkdTX1JFR0VYX0FSUjogUmVnRXhwW10gPSBbXTtcbmZvcihsZXQgaSA9IDA7IGkgPCBDT0xfU0VUVElOR1NfUkVHRVhfU1RSUy5sZW5ndGg7IGkrKykge1xuICAgIENPTF9TRVRUSU5HU19SRUdFWF9BUlIucHVzaChuZXcgUmVnRXhwKENPTF9TRVRUSU5HU19SRUdFWF9TVFJTW2ldKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gY29udGFpbnNDb2xTZXR0aW5nc1RhZyh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGZvcihsZXQgaSA9IDA7IGk8IENPTF9TRVRUSU5HU19SRUdFWF9BUlIubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICBpZihDT0xfU0VUVElOR1NfUkVHRVhfQVJSW2ldLnRlc3QodGV4dCkpIHtcbiAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZvdW5kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmluZFNldHRpbmdzQ29kZWJsb2NrKHRleHQ6IHN0cmluZyk6IHsgZm91bmQ6IGJvb2xlYW4sIHN0YXJ0UG9zaXRpb246IG51bWJlciwgZW5kUG9zaXRpb246IG51bWJlciwgbWF0Y2hMZW5ndGg6IG51bWJlciB9IHtcblxuICAgIGxldCBmb3VuZCA9IGZhbHNlO1xuICAgIGxldCBzdGFydFBvc2l0aW9uID0gLTE7XG4gICAgbGV0IGVuZFBvc2l0aW9uID0gLTFcbiAgICBsZXQgbWF0Y2hMZW5ndGggPSAwO1xuICAgIGZvcihsZXQgaSA9IDA7IGk8IENPTF9TRVRUSU5HU19SRUdFWF9BUlIubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICBsZXQgcmVnZXhEYXRhID0gQ09MX1NFVFRJTkdTX1JFR0VYX0FSUltpXS5leGVjKHRleHQpXG4gICAgICAgIGlmKHJlZ2V4RGF0YSAhPT0gbnVsbCAmJiByZWdleERhdGEubGVuZ3RoID4gMCkge1xuXG4gICAgICAgICAgICBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICBzdGFydFBvc2l0aW9uID0gcmVnZXhEYXRhLmluZGV4XG4gICAgICAgICAgICBtYXRjaExlbmd0aCA9IHJlZ2V4RGF0YVswXS5sZW5ndGg7XG4gICAgICAgICAgICBlbmRQb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb24gKyBtYXRjaExlbmd0aDtcblxuICAgICAgICAgICAgbGV0IHJlbWFpbmluZ1RleHQgPSB0ZXh0LnNsaWNlKGVuZFBvc2l0aW9uKVxuICAgICAgICAgICAgcmVnZXhEYXRhID0gQ09ERUJMT0NLX0VORF9SRUdFWC5leGVjKHJlbWFpbmluZ1RleHQpXG4gICAgICAgICAgICBpZihyZWdleERhdGEgIT09IG51bGwgJiYgcmVnZXhEYXRhLmxlbmd0aCA+IDApIHtcblxuICAgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBlbmRQb3NpdGlvbiArPSByZWdleERhdGEuaW5kZXggKyByZWdleERhdGFbMF0ubGVuZ3RoIFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBmb3VuZCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIG1hdGNoTGVuZ3RoIH07XG59XG5cbmNvbnN0IFNUQVJUX0NPREVCTE9DS19SRUdFWF9BUlI6IFJlZ0V4cFtdID0gW1xuXCJgYGBtdWx0aS1jb2x1bW4tc3RhcnRcIixcblwiYGBgc3RhcnQtbXVsdGktY29sdW1uXCJcbl0ubWFwKCh2YWwpID0+IHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cCh2YWwpO1xufSlcbmV4cG9ydCBmdW5jdGlvbiBmaW5kU3RhcnRDb2RlYmxvY2sodGV4dDogc3RyaW5nKTogeyBmb3VuZDogYm9vbGVhbiwgc3RhcnRQb3NpdGlvbjogbnVtYmVyLCBlbmRQb3NpdGlvbjogbnVtYmVyLCBtYXRjaExlbmd0aDogbnVtYmVyIH0ge1xuXG4gICAgbGV0IGZvdW5kID0gZmFsc2U7XG4gICAgbGV0IHN0YXJ0UG9zaXRpb24gPSAtMTtcbiAgICBsZXQgZW5kUG9zaXRpb24gPSAtMVxuICAgIGxldCBtYXRjaExlbmd0aCA9IDA7XG4gICAgZm9yKGxldCBpID0gMDsgaTwgU1RBUlRfQ09ERUJMT0NLX1JFR0VYX0FSUi5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgIGxldCByZWdleERhdGEgPSBTVEFSVF9DT0RFQkxPQ0tfUkVHRVhfQVJSW2ldLmV4ZWModGV4dClcbiAgICAgICAgaWYocmVnZXhEYXRhICE9PSBudWxsICYmIHJlZ2V4RGF0YS5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSByZWdleERhdGEuaW5kZXhcbiAgICAgICAgICAgIG1hdGNoTGVuZ3RoID0gcmVnZXhEYXRhWzBdLmxlbmd0aDtcbiAgICAgICAgICAgIGVuZFBvc2l0aW9uID0gc3RhcnRQb3NpdGlvbiArIG1hdGNoTGVuZ3RoO1xuXG4gICAgICAgICAgICBsZXQgcmVtYWluaW5nVGV4dCA9IHRleHQuc2xpY2UoZW5kUG9zaXRpb24pXG4gICAgICAgICAgICByZWdleERhdGEgPSBDT0RFQkxPQ0tfRU5EX1JFR0VYLmV4ZWMocmVtYWluaW5nVGV4dClcbiAgICAgICAgICAgIGlmKHJlZ2V4RGF0YSAhPT0gbnVsbCAmJiByZWdleERhdGEubGVuZ3RoID4gMCkge1xuXG4gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGVuZFBvc2l0aW9uICs9IHJlZ2V4RGF0YS5pbmRleCArIHJlZ2V4RGF0YVswXS5sZW5ndGggXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgZm91bmQsIHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCBtYXRjaExlbmd0aCB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zU3RhcnRDb2RlQmxvY2sodGV4dDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZpbmRTdGFydENvZGVibG9jayh0ZXh0KS5mb3VuZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGFpbnNSZWdpb25TdGFydCh0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gY29udGFpbnNTdGFydENvZGVCbG9jayh0ZXh0KSB8fCBjb250YWluc1N0YXJ0VGFnKHRleHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY291bnRTdGFydFRhZ3MoaW5pdGlhbFRleHQ6IHN0cmluZyk6IHsgbnVtYmVyT2ZUYWdzOiBudW1iZXIsIGtleXM6IHN0cmluZ1tdIH0ge1xuXG4gICAgbGV0IGtleXM6IHN0cmluZ1tdID0gW107XG4gICAgbGV0IHRleHQgPSBpbml0aWFsVGV4dFxuICAgIGxldCBzdGFydFRhZ0RhdGEgPSBmaW5kU3RhcnRUYWcodGV4dCk7XG4gICAgd2hpbGUoc3RhcnRUYWdEYXRhLmZvdW5kKSB7XG4gICAgICAgIFxuICAgICAgICAvLyBTbGljZSBvZmYgZXZlcnl0aGluZyBiZWZvcmUgdGhlIHRhZ1xuICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZShzdGFydFRhZ0RhdGEuc3RhcnRQb3NpdGlvbik7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldCBqdXN0IHRoZSBzdGFydCB0YWcgbGluZSBhbmQgdGhlbiBzZXQgdGV4dCB0byBldmVyeXRoaW5nIGp1c3RcbiAgICAgICAgICogYWZ0ZXIgdGhlIHN0YXJ0IHRhZy5cbiAgICAgICAgICovXG4gICAgICAgIGxldCB0YWcgPSB0ZXh0LnNwbGl0KFwiXFxuXCIpWzBdO1xuICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZSgxKTsgLy8gVGhpcyBtb3ZlcyB0aGUgdGV4dCAxIGNoYXJhY3RlciBzbyB3ZSBkb250IG1hdGNoIHRoZSBzYW1lIHRhZy5cblxuICAgICAgICAvLyBQYXJzZSBvdXQgdGhlIGtleSBhbmQgYXBwZW5kIHRvIHRoZSBsaXN0LlxuICAgICAgICBsZXQga2V5ID0gZ2V0U3RhcnRUYWdLZXkodGFnKTtcbiAgICAgICAgaWYoa2V5ID09PSBudWxsKSB7XG4gICAgICAgICAgICBrZXkgPSBcIlwiXG4gICAgICAgIH1cbiAgICAgICAga2V5cy5wdXNoKGtleSk7XG5cbiAgICAgICAgLy8gU2VhcmNoIGFnYWluIGZvciBhbm90aGVyIHRhZyBiZWZvcmUgbG9vcGluZy5cbiAgICAgICAgc3RhcnRUYWdEYXRhID0gZmluZFN0YXJ0VGFnKHRleHQpO1xuICAgIH1cblxuICAgIHRleHQgPSBpbml0aWFsVGV4dDtcbiAgICBzdGFydFRhZ0RhdGEgPSBmaW5kU3RhcnRDb2RlYmxvY2sodGV4dCk7XG4gICAgd2hpbGUoc3RhcnRUYWdEYXRhLmZvdW5kKSB7XG4gICAgICAgIFxuICAgICAgICBsZXQgc2V0dGluZ3NUZXh0ID0gdGV4dC5zbGljZShzdGFydFRhZ0RhdGEuc3RhcnRQb3NpdGlvbiwgc3RhcnRUYWdEYXRhLmVuZFBvc2l0aW9uKTtcbiAgICAgICAgdGV4dCA9IHRleHQuc2xpY2Uoc3RhcnRUYWdEYXRhLmVuZFBvc2l0aW9uKTtcblxuICAgICAgICBsZXQga2V5ID0gcGFyc2VTdGFydFJlZ2lvbkNvZGVCbG9ja0lEKHNldHRpbmdzVGV4dCk7XG4gICAgICAgIGlmKGtleSA9PT0gbnVsbCkge1xuICAgICAgICAgICAga2V5ID0gXCJcIlxuICAgICAgICB9XG4gICAgICAgIGtleXMucHVzaChrZXkpO1xuXG4gICAgICAgIC8vIFNlYXJjaCBhZ2FpbiBmb3IgYW5vdGhlciB0YWcgYmVmb3JlIGxvb3BpbmcuXG4gICAgICAgIHN0YXJ0VGFnRGF0YSA9IGZpbmRTdGFydENvZGVibG9jayh0ZXh0KTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBudW1iZXJPZlRhZ3M6IGtleXMubGVuZ3RoLCBrZXlzIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFydEJsb2NrT3JDb2RlYmxvY2tBYm92ZUxpbmUobGluZXNBYm92ZUFycmF5OiBzdHJpbmdbXSk6IHsgXG5zdGFydEJsb2NrS2V5OiBzdHJpbmcsIFxubGluZXNBYm92ZUFycmF5OiBzdHJpbmdbXSB9IHwgbnVsbCB7XG5cbiAgICBsZXQgc3RhcnRCbG9jayA9IGdldFN0YXJ0QmxvY2tBYm92ZUxpbmUobGluZXNBYm92ZUFycmF5KTtcbiAgICBpZihzdGFydEJsb2NrICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBzdGFydEJsb2NrO1xuICAgIH1cblxuICAgIGxldCBjb2RlQmxvY2sgPSBnZXRTdGFydENvZGVCbG9ja0Fib3ZlTGluZShsaW5lc0Fib3ZlQXJyYXkpXG4gICAgaWYoY29kZUJsb2NrICE9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBjb2RlQmxvY2s7XG4gICAgfVxuICAgIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGZpbHRlciBhIHNldCBvZiBzdHJpbmdzLCByZXR1cm5pbmcgYWxsIGl0ZW1zIHN0YXJ0aW5nXG4gKiBmcm9tIHRoZSBjbG9zZXN0IG9wZW4gc3RhcnQgdGFnIHRocm91Z2ggdGhlIGxhc3QgaXRlbSBpbiB0aGUgc2V0LiBcbiAqIFxuICogVGhlIGZ1bmN0aW9uIGZpbHRlcnMgb3V0IGFsbCBlbmQgdGFncyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgc3RhcnQgdGFnIHdlIFxuICogZmluZCBpcyB0aGUgcHJvcGVyIHN0YXJ0IHRhZyBmb3IgdGhlIGxpc3Qgc2VudC4gXG4gKiBAcGFyYW0gbGluZXNBYm92ZUFycmF5IFxuICogQHJldHVybnMgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFydEJsb2NrQWJvdmVMaW5lKGxpbmVzQWJvdmVBcnJheTogc3RyaW5nW10pOiB7IHN0YXJ0QmxvY2tLZXk6IHN0cmluZywgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzQWJvdmVBcnJheTogc3RyaW5nW10gfSB8IG51bGwge1xuXG4gICAgLy8gUmVkdWNlIHRoZSBhcnJheSBkb3duIGludG8gYSBzaW5nbGUgc3RyaW5nIHNvIHRoYXQgd2UgY2FuXG4gICAgLy8gZWFzaWx5IFJlZ0V4IG92ZXIgdGhlIHN0cmluZyBhbmQgZmluZCB0aGUgaW5kaWNpZXMgd2UncmUgbG9va2luZyBmb3IuXG4gICAgbGV0IGxpbmVzQWJvdmVTdHIgPSBsaW5lc0Fib3ZlQXJyYXkucmVkdWNlKChwcmV2LCBjdXJyZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBwcmV2ICsgXCJcXG5cIiAgKyBjdXJyZW50O1xuICAgIH0sIFwiXCIpO1xuXG4gICAgLypcbiAgICAgICAgKiBGaXJzdCB0aGluZyB3ZSBuZWVkIHRvIGRvIGlzIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgZW5kIHRhZ3MgaW4gdGhlXG4gICAgICAgICogc2V0IG9mIHN0cmluZ3MgKHdoaWNoIGxvZ2ljYWxseSB3b3VsZCBjbG9zZSBzdGFydCB0YWdzIGFuZCB0aGVyZWZvcmVcbiAgICAgICAgKiB0aGUgc3RhcnQgdGFnIGl0IGNsb3NlcyBpcyBub3Qgd2hhdCB3ZSB3YW50KS4gSWYgdGhlcmUgYXJlIHdlIHdhbnQgdG8gXG4gICAgICAgICogc2xvd2x5IG5hcnJvdyBkb3duIG91ciBzZXQgb2Ygc3RyaW5ncyB1bnRpbCB0aGUgbGFzdCBlbmQgdGFnIGlzIFxuICAgICAgICAqIHJlbW92ZWQuIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIGZpbmQgdGhlIGNsb3Nlc3Qgb3BlbiBzdGFydCB0YWcgXG4gICAgICAgICogaW4gdGhlIGRhdGEuXG4gICAgICAgICovXG4gICAgbGV0IGVuZFRhZ1NlcmFjaERhdGEgPSBmaW5kRW5kVGFnKGxpbmVzQWJvdmVTdHIpO1xuICAgIHdoaWxlKGVuZFRhZ1NlcmFjaERhdGEuZm91bmQgPT09IHRydWUpIHtcblxuICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHdoZXJlIHRoZSBmaXJzdCByZWdleCBtYXRjaCBpbiB0aGVcbiAgICAgICAgLy8gc3RyaW5nIGlzLiB0aGVuIHdlIHNsaWNlIGZyb20gMCB0byBpbmRleCBvZmYgb2YgdGhlIHN0cmluZ1xuICAgICAgICAvLyBzcGxpdCBpdCBieSBuZXdsaW5lLCBjdXQgb2ZmIHRoZSBmaXJzdCBsaW5lICh3aGljaCBhY3R1YWxseVxuICAgICAgICAvLyBjb250YWlucyB0aGUgcmVnZXgpIHRoZW4gcmVkdWNlIGJhY2sgZG93biB0byBhIHNpbmdsZSBzdHJpbmcuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRPRE86IFRoaXMgY291bGQgYmUgc2ltcGxpZmllZCBpZiB3ZSBqdXN0IHNsaWNlIHRoZSB0ZXh0IGFmdGVyXG4gICAgICAgIC8vIHRoZSBlbmQgdGFnIGluc3RlYWQgb2YgdGhlIGJlZ2luaW5nLlxuICAgICAgICBsZXQgaW5kZXhPZlJlZ2V4ID0gZW5kVGFnU2VyYWNoRGF0YS5zdGFydFBvc2l0aW9uO1xuICAgICAgICBsaW5lc0Fib3ZlQXJyYXkgPSBsaW5lc0Fib3ZlU3RyLnNsaWNlKGluZGV4T2ZSZWdleCkuc3BsaXQoXCJcXG5cIikuc3BsaWNlKDEpXG4gICAgICAgIGxpbmVzQWJvdmVTdHIgPSBsaW5lc0Fib3ZlQXJyYXkucmVkdWNlKChwcmV2LCBjdXJyZW50KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcHJldiArIFwiXFxuXCIgICsgY3VycmVudDtcbiAgICAgICAgfSwgXCJcIik7XG4gICAgICAgIGVuZFRhZ1NlcmFjaERhdGEgPSBmaW5kRW5kVGFnKGxpbmVzQWJvdmVTdHIpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vdyB3ZSBoYXZlIHRoZSBzZXQgb2YgbGluZXMgYWZ0ZXIgYWxsIG90aGVyIGVuZCB0YWdzLiBXZSBub3dcbiAgICAgKiBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIHN0aWxsIGEgc3RhcnQgdGFnIGxlZnQgaW4gdGhlIGRhdGEuIElmIFxuICAgICAqIHRoZXJlIGlzIG5vIHN0YXJ0IHRhZyB0aGVuIHdlIHdhbnQgdG8gcmV0dXJuIGFuIGVtcHR5IGFycmF5IGFuZCBlbXB0eSBcbiAgICAgKiBrZXkuXG4gICAgICovIFxuICAgIGxldCBzdGFydEJsb2NrS2V5ID0gXCJcIjtcbiAgICBsZXQgc3RhcnRUYWdTZWFyY2hEYXRhID0gZmluZFN0YXJ0VGFnKGxpbmVzQWJvdmVTdHIpO1xuICAgIGlmKHN0YXJ0VGFnU2VhcmNoRGF0YS5mb3VuZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGVsc2Uge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBOb3cgd2Uga25vdyB0aGVyZSBpcyBhdCBsZWFzdCAxIHN0YXJ0IGtleSBsZWZ0LCBob3dldmVyIHRoZXJlXG4gICAgICAgICAqIG1heSBiZSBtdWx0aXBsZSBzdGFydCBrZXlzIGlmIHRoZSB1c2VyIGlzIG5vdCBjbG9zaW5nIHRoZWlyXG4gICAgICAgICAqIGJsb2Nrcy4gV2UgY3VycmVudGx5IGRvbnQgYWxsb3cgcmVjdXNpdmUgc3BsaXR0aW5nIHNvIHdlIFxuICAgICAgICAgKiB3YW50IHRvIGdldCB0aGUgbGFzdCBrZXkgaW4gb3VyIHJlbWFpbmluZyBzZXQuIFNhbWUgaWRlYSBhc1xuICAgICAgICAgKiBhYm92ZS5cbiAgICAgICAgICovXG4gICAgICAgIHdoaWxlKHN0YXJ0VGFnU2VhcmNoRGF0YS5mb3VuZCA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAvLyBHZXQgdGhlIGluZGV4IG9mIHdoZXJlIHRoZSBmaXJzdCByZWdleCBtYXRjaCBpbiB0aGVcbiAgICAgICAgICAgIC8vIHN0cmluZyBpcy4gdGhlbiB3ZSBzbGljZSBmcm9tIDAgdG8gaW5kZXggb2ZmIG9mIHRoZSBzdHJpbmdcbiAgICAgICAgICAgIC8vIHNwbGl0IGl0IGJ5IG5ld2xpbmUsIGN1dCBvZmYgdGhlIGZpcnN0IGxpbmUgKHdoaWNoIGFjdHVhbGx5XG4gICAgICAgICAgICAvLyBjb250YWlucyB0aGUgcmVnZXgpIHRoZW4gcmVkdWNlIGJhY2sgZG93biB0byBhIHNpbmdsZSBzdHJpbmcuXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gVE9ETzogVGhpcyBjb3VsZCBiZSBzaW1wbGlmaWVkIGlmIHdlIGp1c3Qgc2xpY2UgdGhlIHRleHQgYWZ0ZXJcbiAgICAgICAgICAgIC8vIHRoZSBlbmQgdGFnIGluc3RlYWQgb2YgdGhlIGJlZ2luaW5nLlxuICAgICAgICAgICAgbGV0IHN0YXJ0SW5kZXggPSBzdGFydFRhZ1NlYXJjaERhdGEuc3RhcnRQb3NpdGlvbjtcblxuICAgICAgICAgICAgbGluZXNBYm92ZUFycmF5ID0gbGluZXNBYm92ZVN0ci5zbGljZShzdGFydEluZGV4KS5zcGxpdChcIlxcblwiKVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgc3RhcnRUYWcgPSBsaW5lc0Fib3ZlQXJyYXlbMF07XG4gICAgICAgICAgICBsZXQga2V5ID0gZ2V0U3RhcnRUYWdLZXkoc3RhcnRUYWcpO1xuICAgICAgICAgICAgaWYoa2V5ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRCbG9ja0tleSA9IGtleTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGluZXNBYm92ZUFycmF5ID0gbGluZXNBYm92ZUFycmF5LnNwbGljZSgxKVxuICAgICAgICAgICAgbGluZXNBYm92ZVN0ciA9IGxpbmVzQWJvdmVBcnJheS5yZWR1Y2UoKHByZXYsIGN1cnJlbnQpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldiArIFwiXFxuXCIgICsgY3VycmVudDtcbiAgICAgICAgICAgIH0sIFwiXCIpO1xuXG4gICAgICAgICAgICBzdGFydFRhZ1NlYXJjaERhdGEgPSBmaW5kU3RhcnRUYWcobGluZXNBYm92ZVN0cik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZihzdGFydEJsb2NrS2V5ID09PSBcIlwiKSB7XG5cbiAgICAgICAgbGV0IGNvZGVCbG9ja0RhdGEgPSBwYXJzZUNvZGVCbG9ja1N0YXJ0KGxpbmVzQWJvdmVBcnJheSlcbiAgICAgICAgaWYoY29kZUJsb2NrRGF0YSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBzdGFydEJsb2NrS2V5ID0gY29kZUJsb2NrRGF0YS5pZDtcblxuICAgICAgICAgICAgaWYoY29kZUJsb2NrRGF0YS5pbmRleCA+IDApIHtcbiAgICAgICAgICAgICAgICBsaW5lc0Fib3ZlQXJyYXkgPSBsaW5lc0Fib3ZlQXJyYXkuc2xpY2UoY29kZUJsb2NrRGF0YS5pbmRleCArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgc3RhcnRCbG9ja0tleSwgbGluZXNBYm92ZUFycmF5IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGFydENvZGVCbG9ja0Fib3ZlTGluZShsaW5lc0Fib3ZlQXJyYXk6IHN0cmluZ1tdKTogeyBcbiAgICBzdGFydEJsb2NrS2V5OiBzdHJpbmcsIFxuICAgIGxpbmVzQWJvdmVBcnJheTogc3RyaW5nW10gfSB8IG51bGwge1xuICAgIFxuICAgIGxldCBsaW5lc0Fib3ZlU3RyID0gbGluZXNBYm92ZUFycmF5LnJlZHVjZSgocHJldiwgY3VycmVudCkgPT4ge1xuICAgICAgICByZXR1cm4gcHJldiArIFwiXFxuXCIgICsgY3VycmVudDtcbiAgICB9LCBcIlwiKTtcblxuICAgIC8qXG4gICAgICogRmlyc3QgdGhpbmcgd2UgbmVlZCB0byBkbyBpcyBjaGVjayBpZiB0aGVyZSBhcmUgYW55IGVuZCB0YWdzIGluIHRoZVxuICAgICAqIHNldCBvZiBzdHJpbmdzICh3aGljaCBsb2dpY2FsbHkgd291bGQgY2xvc2Ugc3RhcnQgdGFncyBhbmQgdGhlcmVmb3JlXG4gICAgICogdGhlIHN0YXJ0IHRhZyBpdCBjbG9zZXMgaXMgbm90IHdoYXQgd2Ugd2FudCkuIElmIHRoZXJlIGFyZSB3ZSB3YW50IHRvIFxuICAgICAqIHNsb3dseSBuYXJyb3cgZG93biBvdXIgc2V0IG9mIHN0cmluZ3MgdW50aWwgdGhlIGxhc3QgZW5kIHRhZyBpcyBcbiAgICAgKiByZW1vdmVkLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBmaW5kIHRoZSBjbG9zZXN0IG9wZW4gc3RhcnQgdGFnIFxuICAgICAqIGluIHRoZSBkYXRhLlxuICAgICAqL1xuICAgIGxldCBlbmRUYWdTZXJhY2hEYXRhID0gZmluZEVuZFRhZyhsaW5lc0Fib3ZlU3RyKTtcbiAgICB3aGlsZShlbmRUYWdTZXJhY2hEYXRhLmZvdW5kID09PSB0cnVlKSB7XG5cbiAgICAgICAgLy8gR2V0IHRoZSBpbmRleCBvZiB3aGVyZSB0aGUgZmlyc3QgcmVnZXggbWF0Y2ggaW4gdGhlXG4gICAgICAgIC8vIHN0cmluZyBpcy4gdGhlbiB3ZSBzbGljZSBmcm9tIDAgdG8gaW5kZXggb2ZmIG9mIHRoZSBzdHJpbmdcbiAgICAgICAgLy8gc3BsaXQgaXQgYnkgbmV3bGluZSwgY3V0IG9mZiB0aGUgZmlyc3QgbGluZSAod2hpY2ggYWN0dWFsbHlcbiAgICAgICAgLy8gY29udGFpbnMgdGhlIHJlZ2V4KSB0aGVuIHJlZHVjZSBiYWNrIGRvd24gdG8gYSBzaW5nbGUgc3RyaW5nLlxuICAgICAgICBsaW5lc0Fib3ZlU3RyID0gbGluZXNBYm92ZVN0ci5zbGljZShlbmRUYWdTZXJhY2hEYXRhLmVuZFBvc2l0aW9uKTtcbiAgICAgICAgZW5kVGFnU2VyYWNoRGF0YSA9IGZpbmRFbmRUYWcobGluZXNBYm92ZVN0cik7XG4gICAgfVxuXG4gICAgbGV0IHN0YXJ0Q29kZUJsb2NrRGF0YSA9IGZpbmRTdGFydENvZGVibG9jayhsaW5lc0Fib3ZlU3RyKTtcbiAgICBsZXQgY29kZUJsb2NrVGV4dCA9IGxpbmVzQWJvdmVTdHIuc2xpY2Uoc3RhcnRDb2RlQmxvY2tEYXRhLnN0YXJ0UG9zaXRpb24sIHN0YXJ0Q29kZUJsb2NrRGF0YS5lbmRQb3NpdGlvbilcblxuICAgIGxldCBzdGFydEJsb2NrS2V5ID0gXCJcIiAgICBcbiAgICBpZihzdGFydENvZGVCbG9ja0RhdGEuZm91bmQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIHtcblxuICAgICAgICAvKipcbiAgICAgICAgICogTm93IHdlIGtub3cgdGhlcmUgaXMgYXQgbGVhc3QgMSBzdGFydCBrZXkgbGVmdCwgaG93ZXZlciB0aGVyZVxuICAgICAgICAgKiBtYXkgYmUgbXVsdGlwbGUgc3RhcnQga2V5cyBpZiB0aGUgdXNlciBpcyBub3QgY2xvc2luZyB0aGVpclxuICAgICAgICAgKiBibG9ja3MuIFdlIGN1cnJlbnRseSBkb250IGFsbG93IHJlY3VzaXZlIHNwbGl0dGluZyBzbyB3ZSBcbiAgICAgICAgICogd2FudCB0byBnZXQgdGhlIGxhc3Qga2V5IGluIG91ciByZW1haW5pbmcgc2V0LiBTYW1lIGlkZWEgYXNcbiAgICAgICAgICogYWJvdmUuXG4gICAgICAgICAqL1xuICAgICAgICB3aGlsZShzdGFydENvZGVCbG9ja0RhdGEuZm91bmQgPT09IHRydWUpIHtcblxuICAgICAgICAgICAgLy8gR2V0IHRoZSBpbmRleCBvZiB3aGVyZSB0aGUgZmlyc3QgcmVnZXggbWF0Y2ggaW4gdGhlXG4gICAgICAgICAgICAvLyBzdHJpbmcgaXMuIHRoZW4gd2Ugc2xpY2UgZnJvbSAwIHRvIGluZGV4IG9mZiBvZiB0aGUgc3RyaW5nXG4gICAgICAgICAgICAvLyBzcGxpdCBpdCBieSBuZXdsaW5lLCBjdXQgb2ZmIHRoZSBmaXJzdCBsaW5lICh3aGljaCBhY3R1YWxseVxuICAgICAgICAgICAgLy8gY29udGFpbnMgdGhlIHJlZ2V4KSB0aGVuIHJlZHVjZSBiYWNrIGRvd24gdG8gYSBzaW5nbGUgc3RyaW5nLlxuXG4gICAgICAgICAgICBjb2RlQmxvY2tUZXh0ID0gbGluZXNBYm92ZVN0ci5zbGljZShzdGFydENvZGVCbG9ja0RhdGEuc3RhcnRQb3NpdGlvbiwgc3RhcnRDb2RlQmxvY2tEYXRhLmVuZFBvc2l0aW9uKVxuICAgICAgICAgICAgc3RhcnRCbG9ja0tleSA9IHBhcnNlU3RhcnRSZWdpb25Db2RlQmxvY2tJRChjb2RlQmxvY2tUZXh0KVxuXG4gICAgICAgICAgICBsaW5lc0Fib3ZlU3RyID0gbGluZXNBYm92ZVN0ci5zbGljZShzdGFydENvZGVCbG9ja0RhdGEuZW5kUG9zaXRpb24pO1xuICAgICAgICAgICAgc3RhcnRDb2RlQmxvY2tEYXRhID0gZmluZFN0YXJ0Q29kZWJsb2NrKGxpbmVzQWJvdmVTdHIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbGV0IHJldExpbmVzQWJvdmVBcnJheSA9IGxpbmVzQWJvdmVTdHIuc3BsaXQoXCJcXG5cIik7XG4gICAgcmV0dXJuIHsgc3RhcnRCbG9ja0tleSwgbGluZXNBYm92ZUFycmF5OiByZXRMaW5lc0Fib3ZlQXJyYXkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVuZEJsb2NrQmVsb3cobGluZXNCZWxvdzogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG5cbiAgICAvLyBSZWR1Y2UgdGhlIGFycmF5IGRvd24gaW50byBhIHNpbmdsZSBzdHJpbmcgc28gdGhhdCB3ZSBjYW5cbiAgICAvLyBlYXNpbHkgUmVnRXggb3ZlciB0aGUgc3RyaW5nIGFuZCBmaW5kIHRoZSBpbmRpY2llcyB3ZSdyZSBsb29raW5nIGZvci5cbiAgICBsZXQgbGluZXNCZWxvd1N0ciA9IGxpbmVzQmVsb3cucmVkdWNlKChwcmV2LCBjdXJyZW50KSA9PiB7XG4gICAgICAgIHJldHVybiBwcmV2ICsgXCJcXG5cIiAgKyBjdXJyZW50O1xuICAgIH0sIFwiXCIpO1xuICAgIGxldCBlbmRUYWdTZXJhY2hEYXRhID0gZmluZEVuZFRhZyhsaW5lc0JlbG93U3RyKTtcbiAgICBsZXQgc3RhcnRUYWdTZWFyY2hEYXRhID0gZmluZFN0YXJ0VGFnKGxpbmVzQmVsb3dTdHIpO1xuXG4gICAgbGV0IHNsaWNlRW5kSW5kZXggPSAtMTsgLy8gSWYgbmVpdGhlciBzdGFydCBvciBlbmQgZm91bmQgd2UgcmV0dXJuIHRoZSBlbnRpcmUgYXJyYXkuXG4gICAgaWYoZW5kVGFnU2VyYWNoRGF0YS5mb3VuZCA9PT0gdHJ1ZSAmJiBzdGFydFRhZ1NlYXJjaERhdGEuZm91bmQgPT09IGZhbHNlKSB7XG5cbiAgICAgICAgc2xpY2VFbmRJbmRleCA9IGVuZFRhZ1NlcmFjaERhdGEuc3RhcnRQb3NpdGlvbjtcbiAgICB9XG4gICAgZWxzZSBpZihlbmRUYWdTZXJhY2hEYXRhLmZvdW5kID09PSBmYWxzZSAmJiBzdGFydFRhZ1NlYXJjaERhdGEuZm91bmQgPT09IHRydWUpIHtcblxuICAgICAgICBzbGljZUVuZEluZGV4ID0gc3RhcnRUYWdTZWFyY2hEYXRhLnN0YXJ0UG9zaXRpb247XG4gICAgfVxuICAgIGVsc2UgaWYoZW5kVGFnU2VyYWNoRGF0YS5mb3VuZCA9PT0gdHJ1ZSAmJiBzdGFydFRhZ1NlYXJjaERhdGEuZm91bmQgPT09IHRydWUpIHtcblxuICAgICAgICBzbGljZUVuZEluZGV4ID0gZW5kVGFnU2VyYWNoRGF0YS5zdGFydFBvc2l0aW9uO1xuICAgICAgICBpZihzdGFydFRhZ1NlYXJjaERhdGEuc3RhcnRQb3NpdGlvbiA8IGVuZFRhZ1NlcmFjaERhdGEuc3RhcnRQb3NpdGlvbikge1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIElmIHdlIGZvdW5kIGEgc3RhcnQgdGFnIGJlZm9yZSBhbiBlbmQgdGFnIHdlIHdhbnQgdG8gdXNlIHRoZSBzdGFydCB0YWdcbiAgICAgICAgICAgICAqIG91ciBjdXJyZW50IGJsb2NrIGlzIG5vdCBwcm9wZXJseSBlbmRlZCBhbmQgd2UgdXNlIHRoZSBuZXh0IHN0YXJ0IHRhZyBcbiAgICAgICAgICAgICAqIGFzIG91ciBsaW1pdFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBzbGljZUVuZEluZGV4ID0gc3RhcnRUYWdTZWFyY2hEYXRhLnN0YXJ0UG9zaXRpb247XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGluZXNCZWxvdy5zbGljZSgwLCBzbGljZUVuZEluZGV4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXJ0VGFnS2V5KHN0YXJ0VGFnOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcblxuICAgIGxldCBrZXlTcGxpdCA9IHN0YXJ0VGFnLnNwbGl0KFwiOlwiKTtcbiAgICBpZihrZXlTcGxpdC5sZW5ndGggPiAxKXtcbiAgICAgICAgcmV0dXJuIGtleVNwbGl0WzFdLnJlcGxhY2UoXCIgXCIsIFwiXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59XG5cblxuY29uc3QgVEFCX0hFQURFUl9FTkRfUkVHRVhfU1RSID0gXCJeYGBgJFwiO1xuY29uc3QgVEFCX0hFQURFUl9FTkRfUkVHRVg6IFJlZ0V4cCA9IG5ldyBSZWdFeHAoVEFCX0hFQURFUl9FTkRfUkVHRVhfU1RSKTtcbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNvZGVCbG9ja1N0YXJ0KGNvZGVCbG9ja0xpbmVzOiBzdHJpbmdbXSk6IHsgaWQ6IHN0cmluZywgaW5kZXg6IG51bWJlcn0gfCBudWxsIHtcblxuICAgIGxldCBpZCA9IG51bGw7XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IGNvZGVCbG9ja0xpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBsaW5lID0gY29kZUJsb2NrTGluZXNbaV07XG5cbiAgICAgICAgaWYoaWQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGxldCBrZXkgPSBsaW5lLnNwbGl0KFwiOlwiKVswXTtcbiAgICAgICAgICAgIGlmKGtleS50b0xvd2VyQ2FzZSgpID09PSBcInJlZ2lvbiBpZFwiKSB7XG4gICAgICAgICAgICAgICAgaWQgPSBsaW5lLnNwbGl0KFwiOlwiKVsxXS50cmltKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmKFRBQl9IRUFERVJfRU5EX1JFR0VYLnRlc3QobGluZSkpIHtcblxuICAgICAgICAgICAgICAgIHJldHVybiB7IGlkOiBpZCwgaW5kZXg6IGkgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmKGlkID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHsgaWQ6IGlkLCBpbmRleDogLTEgfVxuICAgIH1cbn1cbmNvbnN0IENPREVCTE9DS19FTkRfUkVHRVhfU1RSID0gXCJgYGBcIjtcbmNvbnN0IENPREVCTE9DS19FTkRfUkVHRVg6IFJlZ0V4cCA9IG5ldyBSZWdFeHAoQ09ERUJMT0NLX0VORF9SRUdFWF9TVFIpO1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRFbmRPZkNvZGVCbG9jayh0ZXh0OiBzdHJpbmcpOiB7IGZvdW5kOiBib29sZWFuLCBzdGFydFBvc2l0aW9uOiBudW1iZXIsIGVuZFBvc2l0aW9uOiBudW1iZXIsIG1hdGNoTGVuZ3RoOiBudW1iZXIgfSB7XG5cbiAgICBsZXQgZm91bmQgPSBmYWxzZTtcbiAgICBsZXQgc3RhcnRQb3NpdGlvbiA9IC0xO1xuICAgIGxldCBtYXRjaExlbmd0aCA9IDA7XG4gICAgbGV0IGVuZFBvc2l0aW9uID0gLTE7XG5cbiAgICBsZXQgcmVnZXhEYXRhID0gQ09ERUJMT0NLX0VORF9SRUdFWC5leGVjKHRleHQpXG4gICAgaWYocmVnZXhEYXRhICE9PSBudWxsICYmIHJlZ2V4RGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgc3RhcnRQb3NpdGlvbiA9IHJlZ2V4RGF0YS5pbmRleFxuICAgICAgICBtYXRjaExlbmd0aCA9IHJlZ2V4RGF0YVswXS5sZW5ndGhcbiAgICB9XG4gICAgZW5kUG9zaXRpb24gPSBzdGFydFBvc2l0aW9uICsgbWF0Y2hMZW5ndGg7XG5cbiAgICByZXR1cm4geyBmb3VuZCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIG1hdGNoTGVuZ3RoIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNvZGVCbG9ja1NldHRpbmdzKGNvZGVCbG9ja0xpbmVzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG5cbiAgICBsZXQgc2V0dGluZ3NMaW5lcyA9IFtdO1xuICAgIGZvcihsZXQgaSA9IDA7IGkgPCBjb2RlQmxvY2tMaW5lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBsZXQgbGluZSA9IGNvZGVCbG9ja0xpbmVzW2ldO1xuXG4gICAgICAgIGxldCBrZXkgPSBsaW5lLnNwbGl0KFwiOlwiKVswXTtcbiAgICAgICAgaWYoa2V5LnRvTG93ZXJDYXNlKCkgIT09IFwicmVnaW9uIGlkXCIpIHtcbiAgICAgICAgICAgIHNldHRpbmdzTGluZXMucHVzaChsaW5lKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBzZXR0aW5nc0xpbmVzLmpvaW4oXCJcXG5cIik7XG59IiwiLypcbiAqIEZpbGVuYW1lOiBtdWx0aS1jb2x1bW4tbWFya2Rvd24vc3JjL3V0aWxpdGllcy91dGlscy50c1xuICogQ3JlYXRlZCBEYXRlOiBUdWVzZGF5LCBKYW51YXJ5IDMwdGggMjAyMiwgNDowMjoxOSBwbVxuICogQXV0aG9yOiBDYW1lcm9uIFJvYmluc29uXG4gKiBcbiAqIENvcHlyaWdodCAoYykgMjAyMiBDYW1lcm9uIFJvYmluc29uXG4gKi9cblxuaW1wb3J0IHsgV29ya3NwYWNlTGVhZiB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VUlEKGxlbmd0aDogbnVtYmVyID0gMTApOiBzdHJpbmcge1xuXG4gICAgaWYobGVuZ3RoID4gMTApIHtcbiAgICAgICAgbGVuZ3RoID0gMTA7XG4gICAgfVxuICAgIGxldCBVSUQgPSBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoMik7XG4gICAgVUlEID0gVUlELnNsaWNlKDAsIGxlbmd0aCk7XG4gICAgXG4gICAgcmV0dXJuIFVJRDtcbn1cblxuLyoqXG4gKiBCRlMgb24gdGhlIGNoaWxkIG5vZGVzIG9mIHRoZSBwYXNzZWQgZWxlbWVudCBzZWFyY2hpbmcgZm9yIHRoZSBmaXJzdCBpbnN0YW5jZSBvZiB0aGVcbiAqIG5vZGUgdHlwZSBwYXNzZWQuIFJldHVybmluZyB0aGUgZWxlbWVudCBmb3VuZCBvciBudWxsIGlmIG5vbmUgZm91bmQuXG4gKiBcbiAqIEBwYXJhbSByb290IFxuICogQHBhcmFtIG5vZGVUeXBlTmFtZVxuICogQHJldHVybnMgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hDaGlsZHJlbkZvck5vZGVUeXBlKHJvb3Q6IEhUTUxFbGVtZW50LCBub2RlVHlwZU5hbWU6IHN0cmluZyk6IEhUTUxFbGVtZW50IHwgbnVsbCB7XG5cbiAgICBub2RlVHlwZU5hbWUgPSBub2RlVHlwZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBcbiAgICBsZXQgcXVldWU6IEhUTUxFbGVtZW50W10gPSBbcm9vdF1cbiAgICB3aGlsZShxdWV1ZS5sZW5ndGggPiAwKXtcbiAgICAgICAgXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBsZXQgbm9kZSA9IHF1ZXVlLnNoaWZ0KClcblxuICAgICAgICAgICAgbGV0IG5vZGVOYW1lID0gbm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXG4gICAgICAgICAgICBpZihub2RlTmFtZSA9PT0gbm9kZVR5cGVOYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcXVldWUucHVzaChub2RlLmNoaWxkcmVuW2ldIGFzIEhUTUxFbGVtZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRGaWxlU291cmNlTW9kZShzb3VyY2VQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXG4gICAgbGV0IGZpbGVMZWFmID0gZ2V0RmlsZUxlYWYoc291cmNlUGF0aCk7XG4gICAgaWYoZmlsZUxlYWYgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHJldHVybiBmaWxlTGVhZi5nZXRWaWV3U3RhdGUoKS5zdGF0ZS5tb2RlO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldExlYWZTb3VyY2VNb2RlKGZpbGVMZWFmOiBXb3Jrc3BhY2VMZWFmKTogc3RyaW5nIHtcblxuICAgIHJldHVybiBmaWxlTGVhZi5nZXRWaWV3U3RhdGUoKS5zdGF0ZS5tb2RlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsZVN0aWxsSW5WaWV3KHNvdXJjZVBhdGg6IHN0cmluZyk6Ym9vbGVhbiB7XG5cbiAgICBsZXQgZmlsZUxlYWYgPSBnZXRGaWxlTGVhZihzb3VyY2VQYXRoKTtcbiAgICBpZihmaWxlTGVhZiA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmlsZUxlYWYoc291cmNlUGF0aDogc3RyaW5nKTogV29ya3NwYWNlTGVhZiB8IG51bGwge1xuXG4gICAgbGV0IG1hcmtkb3duTGVhdmVzID0gYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUoXCJtYXJrZG93blwiKTtcbiAgICBpZihtYXJrZG93bkxlYXZlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgZm9yKGxldCBpID0gMDsgaSA8IG1hcmtkb3duTGVhdmVzLmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgaWYobWFya2Rvd25MZWF2ZXNbaV0uZ2V0Vmlld1N0YXRlKCkuc3RhdGUuZmlsZSA9PT0gc291cmNlUGF0aCkge1xuICAgICAgICAgICAgcmV0dXJuIG1hcmtkb3duTGVhdmVzW2ldO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG59IiwiaW1wb3J0IHsgc2VhcmNoQ2hpbGRyZW5Gb3JOb2RlVHlwZSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBlbnVtIEVsZW1lbnRSZW5kZXJUeXBlIHtcbiAgICB1bmRlZmluZWQsXG4gICAgbm9ybWFsUmVuZGVyLFxuICAgIHNwZWNpYWxSZW5kZXIsXG4gICAgc3BlY2lhbFNpbmdsZUVsZW1lbnRSZW5kZXIsXG4gICAgY2FudmFzUmVuZGVyRWxlbWVudCxcbiAgICB1blJlbmRlcmVkXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbGVtZW50UmVuZGVyVHlwZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IEVsZW1lbnRSZW5kZXJUeXBlIHtcblxuICAgIC8qKlxuICAgICAqIFRoZSBEYXRhdmlldyBwbHVnaW4gbmVlZHMgdG8gYmUgY29uc3RhbnRseSBjaGVja2VkIGlmIHRoZSBjbG9uZSBzaG91bGQgYmVcbiAgICAgKiB1cGRhdGVkIGJ1dCBzaG91bGQgbm90IGFsd2F5cyB1cGRhdGUgdGhlIFwiZHVhbCByZW5kZXJcIiBhc3BlY3QsIHNvIHdlIGFkZFxuICAgICAqIGEgc3BlY2lhbCBjYXNlIGZvciB0aGF0IHBsdWdpbiBhbmQgbWF5YmUgb3RoZXJzIGluIHRoZSBmdXR1cmUuXG4gICAgICovXG4gICAgaWYoaGFzRGF0YXZpZXcoZWxlbWVudCkgPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuIEVsZW1lbnRSZW5kZXJUeXBlLnNwZWNpYWxTaW5nbGVFbGVtZW50UmVuZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNvbWUgdHlwZXMgb2YgY29udGVudCBhcmUgcmVuZGVyZWQgaW4gY2FudmFzZXMgd2hpY2ggYXJlIG5vdCByZW5kZXJlZCBwcm9wZXJseVxuICAgICAqIHdoZW4gd2UgY2xvbmUgdGhlIG9yaWdpbmFsIG5vZGUuIEhlcmUgd2UgYXJlIGZsYWdnaW5nIHRoZSBlbGVtZW50IGFzIGEgY2FudmFzXG4gICAgICogZWxlbWVudCBzbyB3ZSBjYW4gY2xvbmUgdGhlIGNhbnZhcyB0byBhIGNvcHkgZWxlbWVudCB3aXRoaW4gdGhlIHJlZ2lvbi5cbiAgICAgKiBcbiAgICAgKi9cbiAgICBpZiggaGFzRGF0YXZpZXdKUyhlbGVtZW50KSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4gRWxlbWVudFJlbmRlclR5cGUuY2FudmFzUmVuZGVyRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBMb29rIGZvciBzcGVjaWZpYyBraW5kcyBvZiBlbGVtZW50cyBieSB0aGVpciBDU1MgY2xhc3MgbmFtZXMgaGVyZS4gVGhlc2UgXG4gICAgICogYXJlIGdvaW5nIHRvIGJlIGJyaXR0bGUgbGlua3MgYXMgdGhleSByZWx5IG9uIG90aGVyIHBsdWdpbiBkZWZpbml0aW9ucyBidXRcbiAgICAgKiBhcyB0aGlzIGlzIG9ubHkgYWRkaW5nIGluIGV4dHJhIGNvbXBhdGFiaWxpdHkgdG8gdGhlIHBsdWdpbnMgZGVmaW5lZCBoZXJlIFxuICAgICAqIGl0IHNob3VsZCBiZSBvay5cbiAgICAgKiBcbiAgICAgKiBUaGVzZSBtYXkgYmUgY2xhc3NlcyBvbiBvbmUgb2YgdGhlIHNpbXBsZSBlbGVtZW50cyAoc3VjaCBhcyBhIHBhcmFncmFwaClcbiAgICAgKiB0aGF0IHdlIHNlYXJjaCBmb3IgYmVsb3cgc28gbmVlZCB0byBsb29rIGZvciB0aGVzZSBmaXJzdC5cbiAgICAgKi9cbiAgICBpZihoYXNEaWNlUm9sbGVyKGVsZW1lbnQpID09PSB0cnVlIHx8XG4gICAgICAgaGFzQ29weUJ1dHRvbihlbGVtZW50KSA9PT0gdHJ1ZSB8fFxuICAgICAgIGhhc0FkbW9uaXRpb25Gb2xkKGVsZW1lbnQpID09PSB0cnVlKSB7XG5cbiAgICAgICAgcmV0dXJuIEVsZW1lbnRSZW5kZXJUeXBlLnNwZWNpYWxSZW5kZXJcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGNoZWNrcyBmb3Igc3BlY2lhbCB0eXBlcyBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCBub3JtYWxseS4gSXNcbiAgICAgKiBzbGlnaHRseSByZWR1bmRhbnQgd2l0aCBuZXh0IGNoZWNrIGJ1dCBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIHR5cGVzIG9mIGVtZW50cyBcbiAgICAgKiBiZWluZyBjaGVja2VkLlxuICAgICAqL1xuICAgIGlmKGhhc0FkbW9uaXRpb24oZWxlbWVudCkgPT09IHRydWUgfHxcbiAgICAgICBpc0lGcmFtZShlbGVtZW50KSA9PT0gdHJ1ZSkge1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIEVsZW1lbnRSZW5kZXJUeXBlLm5vcm1hbFJlbmRlclxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIElmIHdlIGRpZG50IGZpbmQgYSBzcGVjaWFsIGVsZW1lbnQgd2Ugd2FudCB0byBjaGVjayBmb3Igc2ltcGxlIGVsZW1lbnRzXG4gICAgICogc3VjaCBhcyBwYXJhZ3JhcGhzIG9yIGxpc3RzLiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB3ZSBvbmx5IHNldCB1cFxuICAgICAqIHRoZSBzcGVjaWFsIGNhc2UgZm9yIFwic3BlY2lhbFJlbmRlclwiIGVsZW1lbnRzIHNvIHRoaXMgKnNob3VsZCogYmUgc2F2aW5nXG4gICAgICogc29tZSByZW5kZXJpbmcgdGltZSBieSBzZXR0aW5nIHRoZXNlIHRhZ3MgcHJvcGVybHkuXG4gICAgICovXG4gICAgaWYoaGFzUGFyYWdyYXBoKGVsZW1lbnQpIHx8IFxuICAgICAgIGhhc0hlYWRlcihlbGVtZW50KSAgICB8fFxuICAgICAgIGhhc0xpc3QoZWxlbWVudCkgfHxcbiAgICAgICBpc0hvcml6b250YWxSdWxlKGVsZW1lbnQpIHx8XG4gICAgICAgaXNUYWJsZShlbGVtZW50KSkge1xuXG4gICAgICAgIHJldHVybiBFbGVtZW50UmVuZGVyVHlwZS5ub3JtYWxSZW5kZXI7XG4gICAgfVxuXG4gICAgLy8gSWYgc3RpbGwgbm90aGluZyBmb3VuZCB3ZSByZXR1cm4gb3RoZXIgYXMgdGhlIGRlZmF1bHQgcmVzcG9uc2UgaWYgbm90aGluZyBlbHNlIGZvdW5kLlxuICAgIHJldHVybiBFbGVtZW50UmVuZGVyVHlwZS5zcGVjaWFsUmVuZGVyO1xufVxuXG5mdW5jdGlvbiBoYXNQYXJhZ3JhcGgoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZWxlbWVudC5pbm5lckhUTUwuc3RhcnRzV2l0aChcIjxwXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaGFzSGVhZGVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG5cbiAgICBpZihlbGVtZW50LmlubmVySFRNTC5zdGFydHNXaXRoKFwiPGgxXCIpIHx8IFxuICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MLnN0YXJ0c1dpdGgoXCI8aDJcIikgfHwgXG4gICAgICAgZWxlbWVudC5pbm5lckhUTUwuc3RhcnRzV2l0aChcIjxoM1wiKSB8fCBcbiAgICAgICBlbGVtZW50LmlubmVySFRNTC5zdGFydHNXaXRoKFwiPGg0XCIpIHx8XG4gICAgICAgZWxlbWVudC5pbm5lckhUTUwuc3RhcnRzV2l0aChcIjxoNVwiKSB8fFxuICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MLnN0YXJ0c1dpdGgoXCI8aDZcIikpIHtcblxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGhhc0xpc3QoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICBcbiAgICBpZihlbGVtZW50LmlubmVySFRNTC5zdGFydHNXaXRoKFwiPHVsXCIpIHx8IFxuICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MLnN0YXJ0c1dpdGgoXCI8b2xcIikpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBoYXNDb3B5QnV0dG9uKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNvcHktY29kZS1idXR0b25cIikubGVuZ3RoICE9PSAwIHx8IFxuICAgICAgICAgICAgZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYWRtb25pdGlvbi1jb250ZW50LWNvcHlcIikubGVuZ3RoICE9PSAwO1xufVxuXG5mdW5jdGlvbiBoYXNEaWNlUm9sbGVyKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImRpY2Utcm9sbGVyXCIpLmxlbmd0aCAhPT0gMDtcbn1cblxuZnVuY3Rpb24gaGFzQWRtb25pdGlvbihlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJhZG1vbml0aW9uXCIpLmxlbmd0aCAhPT0gMDtcbn1cblxuZnVuY3Rpb24gaXNJRnJhbWUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcblxuICAgIGlmKGVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuXG4gICAgICAgIHJldHVybiBlbGVtZW50LmZpcnN0Q2hpbGQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gXCJpZnJhbWVcIjtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2Vcbn1cblxuZnVuY3Rpb24gaXNIb3Jpem9udGFsUnVsZShlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50LmlubmVySFRNTC5zdGFydHNXaXRoKFwiPGhyXCIpXG59XG5cbmZ1bmN0aW9uIGlzVGFibGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZWxlbWVudC5pbm5lckhUTUwuc3RhcnRzV2l0aChcIjx0YWJsZVwiKVxufVxuXG5mdW5jdGlvbiBoYXNBZG1vbml0aW9uRm9sZChlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJjYWxsb3V0LWZvbGRcIikubGVuZ3RoICE9PSAwO1xufVxuXG5mdW5jdGlvbiBoYXNEYXRhdmlldyhlbGVtZW50OiBIVE1MRWxlbWVudCkge1xuXG4gICAgbGV0IGlzRGF0YXZpZXcgPSBlbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJkYXRhdmlld1wiKS5sZW5ndGggIT09IDA7XG4gICAgcmV0dXJuIGlzRGF0YXZpZXc7XG59XG5cbmZ1bmN0aW9uIGhhc0RhdGF2aWV3SlMoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcblxuICAgIGxldCBpc0RhdGF2aWV3SlMgPSBlbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJibG9jay1sYW5ndWFnZS1kYXRhdmlld2pzXCIpLmxlbmd0aCAhPT0gMDtcbiAgICBsZXQgY2FudmFzID0gc2VhcmNoQ2hpbGRyZW5Gb3JOb2RlVHlwZShlbGVtZW50LCBcImNhbnZhc1wiKTtcblxuICAgIC8qKlxuICAgICAqIFRoaXMgbWVhbnMgb25seSBkYXRhdmlld0pTIGNoYXJ0IGNhbnZhcyBlbGVtZW50cyBzaG91bGQgYmUgcmVuZGVyZWQgcHJvcGVybHkuIE90aGVyIGNhbnZhc2VzIHdpbGwgXG4gICAgICogbmVlZCB0aGllciBvd24gY2FzZSBwdXQgaW4gb3IgdGhlIHJlc3RyaWN0aW9uIHJlbW92ZWQgYWZ0ZXIgdGVzdGluZy5cbiAgICAgKi9cbiAgICByZXR1cm4gY2FudmFzICE9PSBudWxsICYmIGlzRGF0YXZpZXdKUyBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEhlYWRpbmdDb2xsYXBzZUVsZW1lbnQoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBFbGVtZW50IHwgbnVsbCB7XG5cbiAgICBpZihlbGVtZW50ID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGxldCBjaGlsZEVsZW1lbnRzID0gZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiaGVhZGluZy1jb2xsYXBzZS1pbmRpY2F0b3JcIilcbiAgICBpZihjaGlsZEVsZW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICByZXR1cm4gY2hpbGRFbGVtZW50c1swXTtcbiAgICB9XG4gICAgaWYoY2hpbGRFbGVtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoXCJGb3VuZCBtdWx0aXBsZSBoZWFkaW5nIGNvbGxhcHNlIGluZGljYXRvcnMgaW4gZWxlbWVudC5cIilcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59IiwiLypcbiAqIEZpbGVuYW1lOiBtdWx0aS1jb2x1bW4tbWFya2Rvd24vc3JjL2RvbU9iamVjdC50c1xuICogQ3JlYXRlZCBEYXRlOiBUdWVzZGF5LCBGZWJydWFyeSAxc3QgMjAyMiwgMTI6MDQ6MDAgcG1cbiAqIEF1dGhvcjogQ2FtZXJvbiBSb2JpbnNvblxuICogXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgQ2FtZXJvbiBSb2JpbnNvblxuICovXG5cbmltcG9ydCB7IGdldFVJRCB9IGZyb20gXCIuLi91dGlsaXRpZXMvdXRpbHNcIjtcbmltcG9ydCB7IEVsZW1lbnRSZW5kZXJUeXBlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50UmVuZGVyVHlwZVBhcnNlclwiO1xuaW1wb3J0IHsgY29udGFpbnNDb2xFbmRUYWcsIGNvbnRhaW5zQ29sU2V0dGluZ3NUYWcsIGNvbnRhaW5zRW5kVGFnLCBjb250YWluc1N0YXJ0VGFnLCBlbElubmVyVGV4dENvbnRhaW5zQ29sRW5kVGFnIH0gZnJvbSBcInNyYy91dGlsaXRpZXMvdGV4dFBhcnNlclwiO1xuXG5jb25zdCBVUERBVEVfVElNRVM6IG51bWJlcltdID0gWzI1MCwgMjAwMDBdO1xuXG5leHBvcnQgZW51bSBET01PYmplY3RUYWcge1xuICAgIG5vbmUsXG4gICAgc3RhcnRSZWdpb24sXG4gICAgcmVnaW9uU2V0dGluZ3MsXG4gICAgY29sdW1uQnJlYWssXG4gICAgZW5kUmVnaW9uXG59XG5cbmV4cG9ydCBjbGFzcyBET01PYmplY3Qge1xuICAgIG5vZGVLZXk6IHN0cmluZztcbiAgICBvcmlnaW5hbEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xuICAgIGNsb25lZEVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gbnVsbDtcbiAgICBVSUQ6IHN0cmluZztcbiAgICB0YWc6IERPTU9iamVjdFRhZztcbiAgICB1c2luZ09yaWdpbmFsRWxlbWVudDogYm9vbGVhblxuICAgIGVsZW1lbnRUeXBlOiBFbGVtZW50UmVuZGVyVHlwZSA9IEVsZW1lbnRSZW5kZXJUeXBlLnVuZGVmaW5lZDtcbiAgICBlbGVtZW50Q29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCA9IG51bGw7XG4gICAgZWxlbWVudFJlbmRlcmVkSGVpZ2h0ID0gMDtcbiAgICBsaW5lc09mRWxlbWVudDogc3RyaW5nW11cblxuICAgIGNhbnZhc0VsZW1lbnRVcGRhdGVUaW1lOiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICAgIGNhbnZhc1RpbWVySW5kZXggPSAwO1xuXG4gICAgbGFzdENsb25lZEVsZW1lbnRVcGRhdGVUaW1lOiBudW1iZXIgPSBEYXRlLm5vdygpO1xuICAgIHVwZGF0ZVRpbWVySW5kZXggPSAwO1xuXG4gICAgY29uc3RydWN0b3IoZWxlbWVudDogSFRNTEVsZW1lbnQsXG4gICAgICAgICAgICAgICAgbGluZXNPZkVsZW1lbnQ6IHN0cmluZ1tdLFxuICAgICAgICAgICAgICAgIHJhbmRvbUlEOnN0cmluZyA9IGdldFVJRCgpLCBcbiAgICAgICAgICAgICAgICB0YWc6IERPTU9iamVjdFRhZyA9IERPTU9iamVjdFRhZy5ub25lICkge1xuICAgICAgICB0aGlzLm5vZGVLZXkgPSBlbGVtZW50LmlubmVyVGV4dC50cmltKCk7XG4gICAgICAgIHRoaXMub3JpZ2luYWxFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgICAgdGhpcy5VSUQgPSByYW5kb21JRDtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMudXNpbmdPcmlnaW5hbEVsZW1lbnQgPSBmYWxzZVxuICAgICAgICB0aGlzLmxpbmVzT2ZFbGVtZW50ID0gbGluZXNPZkVsZW1lbnQ7XG5cbiAgICAgICAgaWYodGhpcy50YWcgPT09IERPTU9iamVjdFRhZy5ub25lKSB7XG4gICAgICAgICAgICB0aGlzLnNldERvbU9iamVjdFRhZygpXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRNYWluRE9NRWxlbWVudChkb21FbGVtZW50OiBIVE1MRWxlbWVudCkge1xuICAgICAgICB0aGlzLm9yaWdpbmFsRWxlbWVudCA9IGRvbUVsZW1lbnQ7XG4gICAgICAgIHRoaXMudXNpbmdPcmlnaW5hbEVsZW1lbnQgPSB0cnVlXG4gICAgfVxuXG4gICAgY2xvbmVkRWxlbWVudFJlYWR5Rm9yVXBkYXRlKCk6IGJvb2xlYW4ge1xuXG4gICAgICAgIGxldCBkZWx0YVRpbWUgPSBEYXRlLm5vdygpIC0gdGhpcy5sYXN0Q2xvbmVkRWxlbWVudFVwZGF0ZVRpbWU7XG4gICAgICAgIGlmKGRlbHRhVGltZSA+IFVQREFURV9USU1FU1t0aGlzLnVwZGF0ZVRpbWVySW5kZXhdKSB7XG5cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGNhbnZhc1JlYWR5Rm9yVXBkYXRlKCk6IGJvb2xlYW4ge1xuXG4gICAgICAgIGxldCBkZWx0YVRpbWUgPSBEYXRlLm5vdygpIC0gdGhpcy5jYW52YXNFbGVtZW50VXBkYXRlVGltZVxuICAgICAgICBpZihkZWx0YVRpbWUgPiBVUERBVEVfVElNRVNbdGhpcy5jYW52YXNUaW1lckluZGV4XSkge1xuXG4gICAgICAgICAgICB0aGlzLmNhbnZhc0VsZW1lbnRVcGRhdGVUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgIHRoaXMuY2FudmFzVGltZXJJbmRleCA9IE1hdGguY2xhbXAodGhpcy5jYW52YXNUaW1lckluZGV4ICsgMSwgMCwgVVBEQVRFX1RJTUVTLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgdXBkYXRlQ2xvbmVkRWxlbWVudChuZXdDbG9uZWRFbGVtZW50OiBIVE1MRWxlbWVudCkge1xuXG4gICAgICAgIHRoaXMuY2xvbmVkRWxlbWVudCA9IG5ld0Nsb25lZEVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy5sYXN0Q2xvbmVkRWxlbWVudFVwZGF0ZVRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVySW5kZXggPSBNYXRoLmNsYW1wKHRoaXMudXBkYXRlVGltZXJJbmRleCArIDEsIDAsIFVQREFURV9USU1FUy5sZW5ndGggLSAxKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERvbU9iamVjdFRhZygpIHtcblxuICAgICAgICBsZXQgZWxlbWVudFRleHRTcGFjZWQgPSB0aGlzLmxpbmVzT2ZFbGVtZW50LnJlZHVjZSgocHJldiwgY3VycikgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHByZXYgKyBcIlxcblwiICsgY3VycjtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYoY29udGFpbnNFbmRUYWcodGhpcy5vcmlnaW5hbEVsZW1lbnQudGV4dENvbnRlbnQpID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFR5cGUgPSBFbGVtZW50UmVuZGVyVHlwZS51blJlbmRlcmVkO1xuICAgICAgICAgICAgdGhpcy50YWcgPSBET01PYmplY3RUYWcuZW5kUmVnaW9uO1xuICAgICAgICAgICAgLy8gZWwuYWRkQ2xhc3MoTXVsdGlDb2x1bW5TdHlsZUNTUy5SZWdpb25FbmRUYWcpXG4gICAgICAgICAgICAvLyByZWdpb25hbE1hbmFnZXIudXBkYXRlRWxlbWVudFRhZyhjdXJyZW50T2JqZWN0LlVJRCwgRE9NT2JqZWN0VGFnLmVuZFJlZ2lvbik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihjb250YWluc0NvbEVuZFRhZyh0aGlzLm9yaWdpbmFsRWxlbWVudC50ZXh0Q29udGVudCkgPT09IHRydWUgfHwgXG4gICAgICAgICh0aGlzLm9yaWdpbmFsRWxlbWVudC5pbm5lckhUTUwuc3RhcnRzV2l0aChcIjxtYXJrPlwiKSkgJiYgZWxJbm5lclRleHRDb250YWluc0NvbEVuZFRhZyh0aGlzLm9yaWdpbmFsRWxlbWVudC50ZXh0Q29udGVudCkpIHtcblxuICAgICAgICAgICAgdGhpcy5lbGVtZW50VHlwZSA9IEVsZW1lbnRSZW5kZXJUeXBlLnVuUmVuZGVyZWRcbiAgICAgICAgICAgIHRoaXMudGFnID0gRE9NT2JqZWN0VGFnLmNvbHVtbkJyZWFrO1xuICAgICAgICAgICAgLy8gZWwuYWRkQ2xhc3MoTXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5FbmRUYWcpXG4gICAgICAgICAgICAvLyByZWdpb25hbE1hbmFnZXIudXBkYXRlRWxlbWVudFRhZyhjdXJyZW50T2JqZWN0LlVJRCwgRE9NT2JqZWN0VGFnLmNvbHVtbkJyZWFrKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmKGNvbnRhaW5zU3RhcnRUYWcodGhpcy5vcmlnaW5hbEVsZW1lbnQudGV4dENvbnRlbnQpID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFR5cGUgPSBFbGVtZW50UmVuZGVyVHlwZS51blJlbmRlcmVkXG4gICAgICAgICAgICB0aGlzLnRhZyA9IERPTU9iamVjdFRhZy5zdGFydFJlZ2lvbjtcbiAgICAgICAgICAgIC8vIGVsLmFkZENsYXNzKE11bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uRW5kVGFnKVxuICAgICAgICAgICAgLy8gcmVnaW9uYWxNYW5hZ2VyLnVwZGF0ZUVsZW1lbnRUYWcoY3VycmVudE9iamVjdC5VSUQsIERPTU9iamVjdFRhZy5jb2x1bW5CcmVhayk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihjb250YWluc0NvbFNldHRpbmdzVGFnKGVsZW1lbnRUZXh0U3BhY2VkKSA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRUeXBlID0gRWxlbWVudFJlbmRlclR5cGUudW5SZW5kZXJlZFxuICAgICAgICAgICAgLy8gZWwuYWRkQ2xhc3MoTXVsdGlDb2x1bW5TdHlsZUNTUy5SZWdpb25TZXR0aW5ncylcbiAgICAgICAgICAgIC8vIHJlZ2lvbmFsTWFuYWdlciA9IHJlZ2lvbmFsQ29udGFpbmVyLnNldFJlZ2lvblNldHRpbmdzKGVsZW1lbnRUZXh0U3BhY2VkKVxuICAgICAgICAgICAgLy8gcmVnaW9uYWxNYW5hZ2VyLnVwZGF0ZUVsZW1lbnRUYWcoY3VycmVudE9iamVjdC5VSUQsIERPTU9iamVjdFRhZy5yZWdpb25TZXR0aW5ncyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBET01TdGFydFJlZ2lvbk9iamVjdCBleHRlbmRzIERPTU9iamVjdCB7XG5cbiAgICByZWdpb25FbGVtZW50OiBIVE1MRWxlbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKGJhc2VET01PYmplY3Q6IERPTU9iamVjdCwgcmVnaW9uRWxlbWVudDogSFRNTEVsZW1lbnQpIHtcblxuICAgICAgICBzdXBlcihiYXNlRE9NT2JqZWN0Lm9yaWdpbmFsRWxlbWVudCwgYmFzZURPTU9iamVjdC5saW5lc09mRWxlbWVudCwgYmFzZURPTU9iamVjdC5VSUQsIERPTU9iamVjdFRhZy5zdGFydFJlZ2lvbik7XG4gICAgICAgIHRoaXMucmVnaW9uRWxlbWVudCA9IHJlZ2lvbkVsZW1lbnQ7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGFza0xpc3RET01PYmplY3QgZXh0ZW5kcyBET01PYmplY3Qge1xuXG4gICAgb3JpZ2luYWxDaGVja2JveGVzOiBIVE1MRWxlbWVudFtdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihiYXNlRE9NT2JqZWN0OiBET01PYmplY3QpIHtcblxuICAgICAgICBzdXBlcihiYXNlRE9NT2JqZWN0Lm9yaWdpbmFsRWxlbWVudCwgYmFzZURPTU9iamVjdC5saW5lc09mRWxlbWVudCwgYmFzZURPTU9iamVjdC5VSUQsIERPTU9iamVjdFRhZy5ub25lKTtcbiAgICB9XG5cbiAgICBjaGVja2JveENsaWNrZWQoaW5kZXg6IG51bWJlcikge1xuXG4gICAgICAgIGlmKGluZGV4IDwgdGhpcy5vcmlnaW5hbENoZWNrYm94ZXMubGVuZ3RoKSB7XG5cbiAgICAgICAgICAgIGxldCBvcmlnaW5hbElucHV0ID0gdGhpcy5vcmlnaW5hbENoZWNrYm94ZXNbaW5kZXhdLmZpcnN0Q2hpbGQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgIG9yaWdpbmFsSW5wdXQuY2xpY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHN0YXRpYyBjaGVja0ZvclRhc2tMaXN0RWxlbWVudChkb21FbGVtZW50OiBET01PYmplY3QpIHtcblxuICAgICAgICBpZihkb21FbGVtZW50Lm9yaWdpbmFsRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwidGFzay1saXN0LWl0ZW1cIikubGVuZ3RoID4gMCApIHtcblxuICAgICAgICAgICAgcmV0dXJuIG5ldyBUYXNrTGlzdERPTU9iamVjdChkb21FbGVtZW50KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBkb21FbGVtZW50O1xuICAgIH1cbn0iLCIvKlxuICogRmlsZTogbXVsdGktY29sdW1uLW1hcmtkb3duL3NyYy91dGlsaXRpZXMvY3NzRGVmaW5pdGlvbnMudHNcbiAqIENyZWF0ZWQgRGF0ZTogV2VkbmVzZGF5LCBGZWJydWFyeSAxNnRoIDIwMjIsIDExOjA5OjA2IGFtXG4gKiBBdXRob3I6IENhbWVyb24gUm9iaW5zb25cbiAqIFxuICogQ29weXJpZ2h0IChjKSAyMDIyIENhbWVyb24gUm9iaW5zb25cbiAqL1xuXG5leHBvcnQgZW51bSBNdWx0aUNvbHVtbkxheW91dENTUyB7XG5cbiAgICBSZWdpb25Sb290Q29udGFpbmVyRGl2ID0gXCJtY20tY29sdW1uLXJvb3QtY29udGFpbmVyXCIsXG4gICAgUmVnaW9uRXJyb3JDb250YWluZXJEaXYgPSBcIm1jbS1jb2x1bW4tZXJyb3ItcmVnaW9uLXdyYXBwZXJcIixcbiAgICBSZWdpb25Db250ZW50Q29udGFpbmVyRGl2ID0gXCJtY20tY29sdW1uLXJlZ2lvbi13cmFwcGVyXCIsXG4gICAgUmVnaW9uQ29sdW1uQ29udGFpbmVyRGl2ID0gXCJtY20tY29sdW1uLXBhcmVudC1jb250YWluZXJcIixcbiAgICBDb2x1bW5EdWFsRWxlbWVudENvbnRhaW5lciA9IFwibWNtLWNvbHVtbi1lbGVtZW50LXdyYXBwZXJcIixcbiAgICBPcmlnaW5hbEVsZW1lbnRUeXBlID0gXCJtY20tb3JpZ2luYWwtY29sdW1uLWVsZW1lbnRcIixcbiAgICBDbG9uZWRFbGVtZW50VHlwZSA9IFwibWNtLWNsb25lZC1jb2x1bW4tZWxlbWVudFwiLFxuXG4gICAgQ29udGVudE92ZXJmbG93QXV0b1Njcm9sbCA9IFwibWNtLWNvbnRlbnQtb3ZlcmZsb3ctYXV0by1zY3JvbGxcIixcbiAgICBDb250ZW50T3ZlcmZsb3dIaWRkZW4gPSBcIm1jbS1jb250ZW50LW92ZXJmbG93LWhpZGRlblwiLFxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbiAgICBTaW5nbGVDb2x1bW5TbWFsbCA9IFwibWNtLXNpbmdsZS1jb2x1bW4tc21hbGxcIixcbiAgICBTaW5nbGVDb2x1bW5NZWQgPSBcIm1jbS1zaW5nbGUtY29sdW1uLW1lZGl1bVwiLFxuICAgIFNpbmdsZUNvbHVtbkxhcmdlID0gXCJtY20tc2luZ2xlLWNvbHVtbi1sYXJnZVwiLFxuICAgIFNpbmdsZUNvbHVtbkZ1bGwgPSBcIm1jbS1zaW5nbGUtY29sdW1uLWZ1bGxcIixcblxuICAgIFNpbmdsZUNvbHVtbkxlZnRMYXlvdXQgPSBcIm1jbS1zaW5nbGVjb2wtbGF5b3V0LWxlZnRcIixcbiAgICBTaW5nbGVDb2x1bW5DZW50ZXJMYXlvdXQgPSBcIm1jbS1zaW5nbGVjb2wtbGF5b3V0LWNlbnRlclwiLFxuICAgIFNpbmdsZUNvbHVtblJpZ2h0TGF5b3V0ID0gXCJtY20tc2luZ2xlY29sLWxheW91dC1yaWdodFwiLFxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vXG5cbiAgICBUd29FcXVhbENvbHVtbnMgPSBcIm1jbS10d28tZXF1YWwtY29sdW1uc1wiLFxuXG4gICAgVHdvQ29sdW1uU21hbGwgPSBcIm1jbS10d28tY29sdW1uLXNtYWxsXCIsXG4gICAgVHdvQ29sdW1uTGFyZ2UgPSBcIm1jbS10d28tY29sdW1uLWxhcmdlXCIsXG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy9cblxuICAgIFRocmVlRXF1YWxDb2x1bW5zID0gXCJtY20tdGhyZWUtZXF1YWwtY29sdW1uc1wiLFxuXG4gICAgVGhyZWVDb2x1bW5fTGFyZ2UgPSBcIm1jbS10aHJlZS1jb2x1bW4tbGFyZ2VcIixcbiAgICBUaHJlZUNvbHVtbl9TbWFsbCA9IFwibWNtLXRocmVlLWNvbHVtbi1zbWFsbFwiLFxufVxuXG5leHBvcnQgZW51bSBNdWx0aUNvbHVtblN0eWxlQ1NTIHtcblxuICAgIFJlZ2lvbkVycm9yTWVzc2FnZSA9IFwibWNtLWNvbHVtbi1lcnJvci1tZXNzYWdlXCIsXG4gICAgUmVnaW9uU2V0dGluZ3MgPSBcIm1jbS1jb2x1bW4tc2V0dGluZ3Mtd3JhcHBlclwiLFxuICAgIFJlZ2lvbkNvbnRlbnQgPSBcIm1jbS1jb2x1bW4tY29udGVudC13cmFwcGVyXCIsXG4gICAgUmVnaW9uRW5kVGFnID0gXCJtY20tY29sdW1uLWVuZC10YWctd3JhcHBlclwiLFxuICAgIENvbHVtbkVuZFRhZyA9IFwibWNtLWNvbHVtbi1icmVhay10YWctd3JhcHBlclwiLFxuICAgIFJlZ2lvblNoYWRvdyA9IFwibWNtLXJlZ2lvbi1zaGFkb3dcIixcbiAgICBDb2x1bW5TaGFkb3cgPSBcIm1jbS1jb2x1bW4tc2hhZG93XCIsXG4gICAgQ29sdW1uQm9yZGVyID0gXCJtY20tY29sdW1uLWJvcmRlclwiLFxuICAgIENvbHVtbkNvbnRlbnQgPSBcIm1jbS1jb2x1bW4tZGl2XCJcbn0iLCIvKipcbiAqIEZpbGU6IC9zcmMvZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvUmVnaW9uTWFuYWdlci50cyAgICAgICAgICAgICAgICAgICAqXG4gKiBDcmVhdGVkIERhdGU6IFN1bmRheSwgTWF5IDIybmQgMjAyMiwgNzo0OSBwbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICogQXV0aG9yOiBDYW1lcm9uIFJvYmluc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgQ2FtZXJvbiBSb2JpbnNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICovXG5cbmltcG9ydCB7IERPTU9iamVjdCwgRE9NT2JqZWN0VGFnLCBUYXNrTGlzdERPTU9iamVjdCB9IGZyb20gJy4uL2RvbU9iamVjdCc7XG5pbXBvcnQgeyBNdWx0aUNvbHVtblNldHRpbmdzLCBDb2x1bW5MYXlvdXQsIGdldERlZmF1bHRNdWx0aUNvbHVtblNldHRpbmdzIH0gZnJvbSBcIi4uLy4uL3JlZ2lvblNldHRpbmdzXCI7XG5pbXBvcnQgeyBNdWx0aUNvbHVtbkxheW91dENTUywgTXVsdGlDb2x1bW5TdHlsZUNTUyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jc3NEZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBGaWxlRE9NTWFuYWdlciB9IGZyb20gJy4uL2RvbU1hbmFnZXInO1xuaW1wb3J0IHsgRWxlbWVudFJlbmRlclR5cGUsIGdldEVsZW1lbnRSZW5kZXJUeXBlIH0gZnJvbSAnc3JjL3V0aWxpdGllcy9lbGVtZW50UmVuZGVyVHlwZVBhcnNlcic7XG5pbXBvcnQgeyBSZWdpb25NYW5hZ2VyRGF0YSB9IGZyb20gJy4vcmVnaW9uTWFuYWdlckNvbnRhaW5lcic7XG5pbXBvcnQgeyBzZWFyY2hDaGlsZHJlbkZvck5vZGVUeXBlIH0gZnJvbSAnc3JjL3V0aWxpdGllcy91dGlscyc7XG5cbmV4cG9ydCB0eXBlIE11bHRpQ29sdW1uUmVuZGVyRGF0YSA9IHsgXG4gICAgcGFyZW50UmVuZGVyRWxlbWVudDogSFRNTEVsZW1lbnQsIFxuICAgIHBhcmVudFJlbmRlclNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzLFxuICAgIGRvbU9iamVjdHM6IERPTU9iamVjdFtdXG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZWdpb25NYW5hZ2VyIHtcblxuICAgIHByb3RlY3RlZCBkb21MaXN0OiBET01PYmplY3RbXSA9IFtdO1xuICAgIHByb3RlY3RlZCBkb21PYmplY3RNYXA6IE1hcDxzdHJpbmcsIERPTU9iamVjdD4gPSBuZXcgTWFwKCk7XG4gICAgcHJpdmF0ZSBfcmVnaW9uUGFyZW50OiBIVE1MRWxlbWVudDtcbiAgICBwdWJsaWMgZ2V0IHJlZ2lvblBhcmVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWdpb25QYXJlbnQ7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgcmVnaW9uUGFyZW50KHZhbHVlOiBIVE1MRWxlbWVudCkge1xuICAgICAgICB0aGlzLl9yZWdpb25QYXJlbnQgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmlsZU1hbmFnZXI6IEZpbGVET01NYW5hZ2VyO1xuICAgIHByb3RlY3RlZCByZWdpb25hbFNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzID0gZ2V0RGVmYXVsdE11bHRpQ29sdW1uU2V0dGluZ3MoKTtcblxuICAgIHByb3RlY3RlZCByZWdpb25LZXk6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGRhdGE6IFJlZ2lvbk1hbmFnZXJEYXRhKSB7XG5cbiAgICAgICAgdGhpcy5kb21MaXN0ID0gZGF0YS5kb21MaXN0O1xuICAgICAgICB0aGlzLmRvbU9iamVjdE1hcCA9IGRhdGEuZG9tT2JqZWN0TWFwO1xuICAgICAgICB0aGlzLnJlZ2lvblBhcmVudCA9IGRhdGEucmVnaW9uUGFyZW50O1xuXG4gICAgICAgIHRoaXMuZmlsZU1hbmFnZXIgPSBkYXRhLmZpbGVNYW5hZ2VyO1xuICAgICAgICB0aGlzLnJlZ2lvbmFsU2V0dGluZ3MgPSBkYXRhLnJlZ2lvbmFsU2V0dGluZ3M7XG5cbiAgICAgICAgdGhpcy5yZWdpb25LZXkgPSBkYXRhLnJlZ2lvbktleTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UmVnaW9uRGF0YSgpOiBSZWdpb25NYW5hZ2VyRGF0YSB7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRvbUxpc3Q6IHRoaXMuZG9tTGlzdCxcbiAgICAgICAgICAgIGRvbU9iamVjdE1hcDogdGhpcy5kb21PYmplY3RNYXAsXG4gICAgICAgICAgICByZWdpb25QYXJlbnQ6IHRoaXMucmVnaW9uUGFyZW50LFxuXG4gICAgICAgICAgICBmaWxlTWFuYWdlcjogdGhpcy5maWxlTWFuYWdlcixcbiAgICAgICAgICAgIHJlZ2lvbmFsU2V0dGluZ3M6IHRoaXMucmVnaW9uYWxTZXR0aW5ncyxcblxuICAgICAgICAgICAgcmVnaW9uS2V5OiB0aGlzLnJlZ2lvbktleSxcbiAgICAgICAgICAgIHJvb3RFbGVtZW50OiBudWxsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFkZE9iamVjdChzaWJsaW5nc0Fib3ZlOiBIVE1MRGl2RWxlbWVudCwgc2libGluZ3NCZWxvdzogSFRNTERpdkVsZW1lbnQsIG9iajogRE9NT2JqZWN0KTogbnVtYmVyIHtcblxuICAgICAgICBsZXQgbmV4dE9iaiA9IHNpYmxpbmdzQmVsb3cuY2hpbGRyZW5bMF0gYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgbGV0IGFkZEF0SW5kZXggPSBzaWJsaW5nc0Fib3ZlLmNoaWxkcmVuLmxlbmd0aDtcblxuICAgICAgICBpZiAoc2libGluZ3NBYm92ZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2Ugd2FudCB0byBmaW5kIHRoZSBmaXJzdCBzaWJsaW5nIHdpdGhvdXRoIFwiXCIgZm9yIGFuIGlubmVyIHRleHQgc28gd2UgY2FuIHVzZSB0aGF0IHRvIGFuY2hvciBvdXJcbiAgICAgICAgICAgICAqIGVsZW1lbnQgaW50byB0aGUgZG9tTGlzdC4gRm9yIG1vc3QgaXRlbXMgdGhlIGZpcnN0IGVsZW1lbnQgYmVmb3JlIG91ciBuZXcgZWxlbWVudCB3aWxsIGhhdmUgdGhlIHByb3BlclxuICAgICAgICAgICAgICogaW5uZXJUZXh0LiBTb21ldGltZXMgb3RoZXIgZWxlbWVudHMgYXJlIGVtcHR5IGFuZCB3ZXJlIGNhdXNpbmcgaXNzdWVzLlxuICAgICAgICAgICAgICogXG4gICAgICAgICAgICAgKiBOb3cgd2UgbG9vcCBiYWNrIHRocm91Z2ggdGhlIHByZXZpb3VzIHNpYmxpbmdzIGxvb2tpbmcgZm9yIHRoZSBmaXJzdCBvbmUgd2l0aCBhIHZhbGlkIGlubmVyIHRleHQgYW5kIHVzaW5nIHRoYXQgXG4gICAgICAgICAgICAgKiBhcyB0aGUgYW5jaG9yIGFuZCBvZmZzZXR0aW5nIG91ciBhZGRBdEluZGV4IGJ5IHRoZSBudW1iZXIgb2YgZW1wdHkgc3RyaW5nIGVsZW1lbnRzIHdlIGZvdW5kLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBsZXQgcHJldlNpYmxpbmdJbm5lclRleHQgPSBcIlwiXG4gICAgICAgICAgICBsZXQgcHJldlNpYmxpbmdPZmZzZXQgPSAwO1xuICAgICAgICAgICAgZm9yKGxldCBpID0gc2libGluZ3NBYm92ZS5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXG4gICAgICAgICAgICAgICAgbGV0IG9iaiA9IHNpYmxpbmdzQWJvdmUuY2hpbGRyZW5baV0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYob2JqLmlubmVyVGV4dCAhPT0gXCJcIikge1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBwcmV2U2libGluZ0lubmVyVGV4dCA9IG9iai5pbm5lclRleHQ7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHByZXZTaWJsaW5nT2Zmc2V0Kys7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSB0aGlzLmRvbUxpc3QubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kb21MaXN0W2ldLm5vZGVLZXkgPT09IHByZXZTaWJsaW5nSW5uZXJUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZEF0SW5kZXggPSBpICsgMSArIHByZXZTaWJsaW5nT2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbmV4dEVsSW5kZXggPSBhZGRBdEluZGV4O1xuICAgICAgICBsZXQgbmV4dE9ialRleHQgPSBcIlwiO1xuICAgICAgICBpZiAobmV4dE9iaiAhPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICAgIGxldCBmb3VuZE5leHQgPSBmYWxzZTtcbiAgICAgICAgICAgIG5leHRPYmpUZXh0ID0gbmV4dE9iai5pbm5lclRleHQ7XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBhZGRBdEluZGV4OyBpIDwgdGhpcy5kb21MaXN0Lmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5kb21MaXN0W2ldLm5vZGVLZXkgPT09IG5leHRPYmouaW5uZXJUZXh0LnRyaW0oKSkge1xuXG4gICAgICAgICAgICAgICAgICAgIG5leHRFbEluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgZm91bmROZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY29uc29sZS5sb2coXCIgUHJldjogXCIsIEFycmF5LmZyb20oc2libGluZ3NBYm92ZS5jaGlsZHJlbikuc2xpY2UoLTMpLCBcIkFkZGluZzogXCIsIG9iai5vcmlnaW5hbEVsZW1lbnQsIFwiIE5leHQ6IFwiLCBzaWJsaW5nc0JlbG93LmNoaWxkcmVuWzBdLCBcIk92ZXJ3cml0aW5nOlwiLCB0aGlzLmRvbUxpc3Quc2xpY2UoYWRkQXRJbmRleCwgbmV4dEVsSW5kZXgpKTtcbiAgICAgICAgdGhpcy5kb21MaXN0LnNwbGljZShhZGRBdEluZGV4LCBuZXh0RWxJbmRleCAtIGFkZEF0SW5kZXgsIG9iaik7XG4gICAgICAgIHRoaXMuZG9tT2JqZWN0TWFwLnNldChvYmouVUlELCBvYmopO1xuXG4gICAgICAgIC8vIC8qKlxuICAgICAgICAvLyAgKiBNYWtlIGEgY29weSBvZiB0aGUgbGlzdCB0byBsb2csIG9ubHkgYmVjYXVzZVxuICAgICAgICAvLyAgKiBjb25zb2xlIGxvZyB1cGRhdGVzIGl0cyByZWZlcmVuY2VzIHdpdGggdXBkYXRlcyBpbiBtZW1vcnkuXG4gICAgICAgIC8vICAqL1xuICAgICAgICAvLyBsZXQgeCA9IHRoaXMuZG9tTGlzdC5zbGljZSgwKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coeCk7XG4gICAgICAgIHJldHVybiBhZGRBdEluZGV4O1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVPYmplY3Qob2JqZWN0VUlEOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgLy8gLyoqXG4gICAgICAgIC8vICAqIE1ha2UgYSBjb3B5IG9mIHRoZSBsaXN0IHRvIGxvZ1xuICAgICAgICAvLyAgKi9cbiAgICAgICAgLy8gbGV0IHggPSBkb21MaXN0LnNsaWNlKDApO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh4KTtcbiAgICAgICAgLy8gR2V0IHRoZSBvYmplY3QgYnkga2V5LCByZW1vdmUgaXQgZnJvbSB0aGUgbWFwIGFuZCB0aGVuXG4gICAgICAgIC8vIGZyb20gdGhlIGxpc3QuXG4gICAgICAgIGxldCBvYmogPSB0aGlzLmRvbU9iamVjdE1hcC5nZXQob2JqZWN0VUlEKTtcbiAgICAgICAgdGhpcy5kb21PYmplY3RNYXAuZGVsZXRlKG9iamVjdFVJRCk7XG5cbiAgICAgICAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5kb21MaXN0LmNvbnRhaW5zKG9iaikpIHtcbiAgICAgICAgICAgIHRoaXMuZG9tTGlzdC5yZW1vdmUob2JqKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRvbUxpc3QubGVuZ3RoID09PSAwICYmIHRoaXMuZmlsZU1hbmFnZXIgIT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZU1hbmFnZXIucmVtb3ZlUmVnaW9uKHRoaXMucmVnaW9uS2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHggPSBkb21MaXN0LnNsaWNlKDApO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyh4KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlRWxlbWVudFRhZyhvYmplY3RVSUQ6IHN0cmluZywgbmV3VGFnOiBET01PYmplY3RUYWcpOiB2b2lkIHtcblxuICAgICAgICBsZXQgb2JqID0gdGhpcy5kb21PYmplY3RNYXAuZ2V0KG9iamVjdFVJRCk7XG4gICAgICAgIGxldCBpbmRleCA9IHRoaXMuZG9tTGlzdC5pbmRleE9mKG9iaik7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuZG9tTGlzdFtpbmRleF0udGFnID0gbmV3VGFnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldFJlZ2lvbmFsU2V0dGluZ3MocmVnaW9uU2V0dGluZ3M6IE11bHRpQ29sdW1uU2V0dGluZ3MpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZWdpb25hbFNldHRpbmdzID0gcmVnaW9uU2V0dGluZ3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBvYmplY3QgY29udGFpbmluZyBhbGwgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGZvciB0aGUgcmVnaW9uXG4gICAgICogdG8gYmUgcmVuZGVyZWQgdG8gdGhlIHByZXZpZXcgcGFuZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGEgTXVsdGlDb2x1bW5SZW5kZXJEYXRhIG9iamVjdCB3aXRoIHRoZSByb290IERPTSBlbGVtZW50LCBzZXR0aW5ncyBvYmplY3QsIGFuZFxuICAgICAqIGFsbCBjaGlsZCBvYmplY3RzIGluIHRoZSBvcmRlciB0aGV5IHNob3VsZCBiZSByZW5kZXJlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UmVnaW9uUmVuZGVyRGF0YSgpOiBNdWx0aUNvbHVtblJlbmRlckRhdGEge1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBwYXJlbnRSZW5kZXJFbGVtZW50OiB0aGlzLnJlZ2lvblBhcmVudCxcbiAgICAgICAgICAgIHBhcmVudFJlbmRlclNldHRpbmdzOiB0aGlzLnJlZ2lvbmFsU2V0dGluZ3MsXG4gICAgICAgICAgICBkb21PYmplY3RzOiB0aGlzLmRvbUxpc3RcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1Y3Rpb24gaXMgY2FsbGVkIHdoZW4gYSBzdGFydCB0YWcgaXMgcmVtb3ZlZCBmcm9tIHZpZXcgbWVhbmluZ1xuICAgICAqIG91ciBwYXJlbnQgZWxlbWVudCBzdG9yaW5nIHRoZSBtdWx0aS1jb2x1bW4gcmVnaW9uIGlzIHJlbW92ZWQuIEl0XG4gICAgICogcmVtb3ZlcyB0aGUgQ1NTIGNsYXNzIGZyb20gYWxsIG9mIHRoZSBlbGVtZW50cyBzbyB0aGV5IHdpbGwgYmVcbiAgICAgKiByZS1yZW5kZXJlZCBpbiB0aGUgcHJldmlldyB3aW5kb3cuXG4gICAgICovXG4gICAgcHVibGljIGRpc3BsYXlPcmlnaW5hbEVsZW1lbnRzKCkge1xuXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRvbUxpc3QubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZG9tTGlzdFtpXS5vcmlnaW5hbEVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvbUxpc3RbaV0ub3JpZ2luYWxFbGVtZW50LnJlbW92ZUNsYXNzZXMoW011bHRpQ29sdW1uU3R5bGVDU1MuUmVnaW9uRW5kVGFnLFxuICAgICAgICAgICAgICAgIE11bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uRW5kVGFnLFxuICAgICAgICAgICAgICAgIE11bHRpQ29sdW1uU3R5bGVDU1MuUmVnaW9uU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgTXVsdGlDb2x1bW5TdHlsZUNTUy5SZWdpb25Db250ZW50XSk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZG9tTGlzdFtpXS5vcmlnaW5hbEVsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRvbUxpc3RbaV0ub3JpZ2luYWxFbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQodGhpcy5kb21MaXN0W2ldLm9yaWdpbmFsRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHB1YmxpYyBnZXRJRCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWdpb25LZXk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVJlbmRlcmVkTWFya2Rvd24oKSB7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGlzIGZ1bmN0aW9uIGFjdHMgYXMgdGhlIHVwZGF0ZSBsb29wIGZvciB0aGUgbXVsdGktY29sdW1uIHJlZ2lvbnMuXG4gICAgICAgICAqIEhlcmUgd2UgbG9vcCB0aHJvdWdoIGFsbCBvZiB0aGUgZWxlbWVudHMgd2l0aGluIHRoZSByZW5kZXJlZCByZWdpb24gYW5kXG4gICAgICAgICAqIHBvdGVudGlhbGx5IHVwZGF0ZSBob3cgdGhpbmdzIGFyZSByZW5kZXJlZC4gV2UgbmVlZCB0byBkbyB0aGlzIGZvclxuICAgICAgICAgKiBjb21wYXRhYmlsaXR5IHdpdGggb3RoZXIgcGx1Z2lucy5cbiAgICAgICAgICpcbiAgICAgICAgICogSWYgdGhlIG11bHRpLWNvbHVtbiByZWdpb24gaXMgcmVuZGVyZWQgYmVmb3JlIG90aGVyIHBsdWdpbnMgdGhhdCBlZmZlY3RcbiAgICAgICAgICogY29udGVudCB3aXRoaW4gdGhlIHJlZ2lvbiBvdXIgcmVuZGVyZWQgZGF0YSBtYXkgbm90IHByb3Blcmx5IGRpc3BsYXlcbiAgICAgICAgICogdGhlIGNvbnRlbnQgZnJvbSB0aGUgb3RoZXIgcGx1Z2luLiBIZXJlIHdlIGxvb3AgdGhyb3VnaCB0aGUgZWxlbWVudHNcbiAgICAgICAgICogYWZ0ZXIgYWxsIHBsdWdpbnMgaGF2ZSBoYWQgYSBjaGFuY2UgdG8gcnVuIGFuZCBjYW4gbWFrZSBjaGFuZ2VzIHRvIHRoZVxuICAgICAgICAgKiBET00gYXQgdGhpcyBwb2ludC5cbiAgICAgICAgICovXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kb21MaXN0Lmxlbmd0aDsgaSsrKSB7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogSGVyZSB3ZSBjaGVjayBmb3Igc3BlY2lhbCBjYXNlc1xuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAodGhpcy5kb21MaXN0W2ldIGluc3RhbmNlb2YgVGFza0xpc3RET01PYmplY3QpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuZml4Q2xvbmVkQ2hlY2tMaXN0QnV0dG9ucyh0aGlzLmRvbUxpc3RbaV0gYXMgVGFza0xpc3RET01PYmplY3QpO1xuICAgICAgICAgICAgfVxuXG5cbiAgICAgICAgICAgIGxldCBlbGVtZW50VHlwZSA9IHRoaXMuZG9tTGlzdFtpXS5lbGVtZW50VHlwZTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJZiB0aGUgZWxlbWVudCBpcyBub3QgY3VycmVudGx5IGEgc3BlY2lhbCByZW5kZXIgZWxlbWVudCB3ZSBjaGVjayBhZ2FpblxuICAgICAgICAgICAgICogYXMgdGhlIG9yaWdpbmFsIGVsZW1lbnQgbWF5IGhhdmUgYmVlbiB1cGRhdGVkLlxuICAgICAgICAgICAgICpcbiAgICAgICAgICAgICAqIFRPRE86IGZpbmQgYSB3YXkgdG8gXCJPZmZpY2lhbGx5XCIgbWFyayBub3JtYWwgZWxlbWVudHMgcmF0aGVyIHRoYW5cbiAgICAgICAgICAgICAqIGNvbnRpbnVvdXNseSBzZWFyY2ggZm9yIHNwZWNpYWwgcmVuZGVyIHR5cGVzLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAoZWxlbWVudFR5cGUgIT09IEVsZW1lbnRSZW5kZXJUeXBlLnNwZWNpYWxSZW5kZXIgJiZcbiAgICAgICAgICAgICAgICBlbGVtZW50VHlwZSAhPT0gRWxlbWVudFJlbmRlclR5cGUuc3BlY2lhbFNpbmdsZUVsZW1lbnRSZW5kZXIgJiYgXG4gICAgICAgICAgICAgICAgZWxlbWVudFR5cGUgIT09IEVsZW1lbnRSZW5kZXJUeXBlLnVuUmVuZGVyZWQpIHtcblxuICAgICAgICAgICAgICAgIC8vIElmIHRoZSBuZXcgcmVzdWx0IHJldHVybnMgYXMgYSBzcGVjaWFsIHJlbmRlcmVyIHdlIHVwZGF0ZSBzb1xuICAgICAgICAgICAgICAgIC8vIHRoaXMgd29udCBydW4gYWdhaW4gZm9yIHRoaXMgaXRlbS5cbiAgICAgICAgICAgICAgICBlbGVtZW50VHlwZSA9IGdldEVsZW1lbnRSZW5kZXJUeXBlKHRoaXMuZG9tTGlzdFtpXS5vcmlnaW5hbEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZG9tTGlzdFtpXS5vcmlnaW5hbEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZWxlbWVudFR5cGUgPT09IEVsZW1lbnRSZW5kZXJUeXBlLnNwZWNpYWxSZW5kZXIgfHxcbiAgICAgICAgICAgICAgICBlbGVtZW50VHlwZSA9PT0gRWxlbWVudFJlbmRlclR5cGUuc3BlY2lhbFNpbmdsZUVsZW1lbnRSZW5kZXIgfHwgXG4gICAgICAgICAgICAgICAgZWxlbWVudFR5cGUgPT09IEVsZW1lbnRSZW5kZXJUeXBlLmNhbnZhc1JlbmRlckVsZW1lbnQpIHtcblxuICAgICAgICAgICAgICAgIHRoaXMuZG9tTGlzdFtpXS5lbGVtZW50VHlwZSA9IGVsZW1lbnRUeXBlO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VXBEdWFsUmVuZGVyKHRoaXMuZG9tTGlzdFtpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIGluIHRoZSBvcmlnaW5hbCBlbGVtZW50IGFuZCBpdHMgY2xvbmUgYW5kIGNoZWNrcyBpZlxuICAgICAqIHRoZSBlbGVtZW50IGNvbnRhaW5zIGEgdGFzay1saXN0LWl0ZW0gY2xhc3MuIElmIHNvIGl0IGxvb3BzIHRocm91Z2ggYWxsXG4gICAgICogaXRlbXMgaW4gdGhlIGxpc3QgYW5kIGZpeGVzIHRoZWlyIGNoZWNrYm94ZXMgdG8gcHJvcGVybHkgZmlyZSBhbiBldmVudC5cbiAgICAgKiBUaGUgbmV3IGNoZWNrYm94IGNhbGxzIHRoZSBjbGljayBmdW5jdGlvbiBvbiB0aGUgb3JpZ2luYWwgY2hlY2tib3ggc29cbiAgICAgKiBjb21wYXRhYmlsaXR5IHdpdGggb3RoZXIgcGx1Z2lucyAqc2hvdWxkKiByZW1haW4uXG4gICAgICogQHBhcmFtIGRvbUVsZW1lbnRcbiAgICAgKiBAcGFyYW0gaW5pdGFsaXplQ2hlY2tib3hlc1xuICAgICAqL1xuICAgIHByb3RlY3RlZCBmaXhDbG9uZWRDaGVja0xpc3RCdXR0b25zKGRvbUVsZW1lbnQ6IFRhc2tMaXN0RE9NT2JqZWN0LCBpbml0YWxpemVDaGVja2JveGVzOiBib29sZWFuID0gZmFsc2UpIHtcblxuICAgICAgICBpZihkb21FbGVtZW50Lm9yaWdpbmFsRWxlbWVudCA9PT0gbnVsbCB8fCBkb21FbGVtZW50LmNsb25lZEVsZW1lbnQgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IGRvbUVsZW1lbnQub3JpZ2luYWxFbGVtZW50O1xuICAgICAgICBsZXQgY2xvbmVkRWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb21FbGVtZW50LmNsb25lZEVsZW1lbnQ7XG5cbiAgICAgICAgbGV0IGNsb25lZExpc3RDaGVja2JveGVzID0gQXJyYXkuZnJvbShjbG9uZWRFbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoXCJ0YXNrLWxpc3QtaXRlbVwiKSkgYXMgSFRNTEVsZW1lbnRbXTtcbiAgICAgICAgbGV0IG9yaWdpbmFsTGlzdENoZWNrYm94ZXMgPSBBcnJheS5mcm9tKGVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcInRhc2stbGlzdC1pdGVtXCIpKSBhcyBIVE1MRWxlbWVudFtdO1xuXG4gICAgICAgIGlmIChpbml0YWxpemVDaGVja2JveGVzID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIC8vIFdoZW4gd2UgaW5pdGFsaXplIHdlIHJlbW92ZSB0aGUgb2xkIGlucHV0IGNoZWNrYm94IHRoYXQgY29udGFpbnNcbiAgICAgICAgICAgIC8vIHRoZSB3ZWlyZCBjYWxsYmFjayBzaXR1YXRpb24gY2F1c2luZyB0aGUgYnVnLiBUaGVuIHdlIGNyZWF0ZSBhIG5ld1xuICAgICAgICAgICAgLy8gY2hlY2tib3ggdG8gcmVwbGFjZSBpdCBhbmQgc2V0IGl0IHVwIHRvIGZpcmUgdGhlIGNsaWNrIGV2ZW50IG9uXG4gICAgICAgICAgICAvLyB0aGUgb3JpZ2luYWwgY2hlY2tib3ggc28gZnVuY3Rpb25hbGl0eSBpcyByZXN0b3JlZC5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3JpZ2luYWxMaXN0Q2hlY2tib3hlcy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgY29uc3QgY2hlY2tib3ggPSBjcmVhdGVFbCgnaW5wdXQnKTtcblxuICAgICAgICAgICAgICAgIGxldCBvcmlnaW5hbElucHV0ID0gb3JpZ2luYWxMaXN0Q2hlY2tib3hlc1tpXS5maXJzdENoaWxkIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICBjaGVja2JveC5jaGVja2VkID0gb3JpZ2luYWxJbnB1dC5jaGVja2VkO1xuICAgICAgICAgICAgICAgIGNsb25lZExpc3RDaGVja2JveGVzW2ldLnJlcGxhY2VDaGlsZChjaGVja2JveCwgY2xvbmVkTGlzdENoZWNrYm94ZXNbaV0uY2hpbGRyZW5bMF0pO1xuICAgICAgICAgICAgICAgIGNoZWNrYm94LmFkZENsYXNzKCd0YXNrLWxpc3QtaXRlbS1jaGVja2JveCcpO1xuICAgICAgICAgICAgICAgIGNoZWNrYm94LnR5cGUgPSAnY2hlY2tib3gnO1xuICAgICAgICAgICAgICAgIGNoZWNrYm94Lm9uQ2xpY2tFdmVudCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGRvbUVsZW1lbnQuY2hlY2tib3hDbGlja2VkKGkpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuXG4gICAgICAgICAgICAvLyBXaGVuZXZlciB3ZSByZWFjaCB0aGlzIHBvaW50IHdlIHVwZGF0ZSBvdXIgbGlzdCBvZiBvcmlnaW5hbCBjaGVja2JveGVzXG4gICAgICAgICAgICAvLyB0aGF0IG1heSBiZSBkaWZmZXJlbnQgZnJvbSBvdXIgY2FjaGUuIFRoaXMgaXMgZHVlIHRvIGhvdyBvYnNpZGlhblxuICAgICAgICAgICAgLy8gY2hhbmdlcyB0aGUgRE9NIHVuZGVybmVhdGggdXMgc28gd2UgbmVlZCB0byBjb25zdGFudGx5IHVwZGF0ZSBvdXIgY2FjaGUuXG4gICAgICAgICAgICBkb21FbGVtZW50Lm9yaWdpbmFsQ2hlY2tib3hlcyA9IG9yaWdpbmFsTGlzdENoZWNrYm94ZXM7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXaGVuIHRoZSBUYXNrcyBwbHVnaW4gaXMgaW5zdGFsbGVkIHRoZSBjbG9uZWQgY29weSBvZiB0aGUgb3JpZ2luYWwgZWxlbWVudCBjb250YWluc1xuICAgICAgICAvLyBhbiBleHRyYSBlbGVtZW50IGZvciBzb21lIHJlYXNvbi4gSWYgdGhpcyBvY2N1cnMgZm9yIG90aGVyIHJlYXNvbnMgaGVyZSB3ZSBhZGp1c3RcbiAgICAgICAgLy8gdGhhdCB0byBrZWVwIHRoZSBjbG9uZSB0aGUgc2FtZSBhcyB0aGUgb3JpZ2luYWwuXG4gICAgICAgIGlmIChjbG9uZWRMaXN0Q2hlY2tib3hlcy5sZW5ndGggPiBvcmlnaW5hbExpc3RDaGVja2JveGVzLmxlbmd0aCkge1xuXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gb3JpZ2luYWxMaXN0Q2hlY2tib3hlcy5sZW5ndGg7IGkgPCBjbG9uZWRMaXN0Q2hlY2tib3hlcy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgZG9tRWxlbWVudC5jbG9uZWRFbGVtZW50LnJlbW92ZUNoaWxkKGNsb25lZExpc3RDaGVja2JveGVzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRVcER1YWxSZW5kZXIoZG9tRWxlbWVudDogRE9NT2JqZWN0KSB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIElmIG91ciBlbGVtZW50IGlzIG9mIFwic3BlY2lhbFJlbmRlclwiIHR5cGUgaXQgKm1heSogbmVlZCB0byBiZSByZW5kZXJlZFxuICAgICAgICAgKiB1c2luZyB0aGUgb3JpZ2luYWwgZWxlbWVudCByYXRoZXIgdGhhbiBhIGNvcHkuIEZvciBleGFtcGxlLCBhbiBlbGVtZW50XG4gICAgICAgICAqIG1heSBoYXZlIGFuIG9uQ2xpY2sgZXZlbnQgdGhhdCB3b3VsZCBub3QgZ2V0IGNvcHBpZWQgdG8gdGhlIGNsb25lLlxuICAgICAgICAgKlxuICAgICAgICAgKiBJZiB3ZSBqdXN0IG1vdmVkIHRoZXNlIGVsZW1lbnRzIGludG8gdGhlIHJlZ2lvbiBpdCB3b3VsZCBnZXRcbiAgICAgICAgICogbW92ZWQgYmFjayBvdXQgaW50byB0aGUgb3JpZ2luYWwgbG9jYXRpb24gaW4gdGhlIERPTSBieSBvYnNpZGlhblxuICAgICAgICAgKiB3aGVuIHNjcm9sbGluZyBvciB3aGVuIHRoZSBmaWxlIGlzIHVwZGF0ZWQuIE9uIHRoZSBuZXh0IHJlZnJlc2ggaXRcbiAgICAgICAgICogd291bGQgYmUgbW92ZWQgYmFjayBidXQgdGhhdCBjYW4gbGVhZCB0byBhIHJlZ2lvbiBqdW1waW5nXG4gICAgICAgICAqIGFyb3VuZCBhcyB0aGUgaXRlbSBpcyBtb3ZlZCBpbiBhbmQgb3V0LlxuICAgICAgICAgKlxuICAgICAgICAgKiBIZXJlIHdlIHNldCB1cCB0aGUgZGl2IHRvIGNvbnRhaW4gdGhlIGVsZW1lbnQgYW5kIGNyZWF0ZVxuICAgICAgICAgKiBhIHZpc3VhbCBvbmx5IGNsb25lIG9mIGl0LiBUaGUgY2xvbmUgd2lsbCBvbmx5IGJlIHZpc2libGVcbiAgICAgICAgICogd2hlbiB0aGUgb3JpZ2luYWwgaXMgbm90IGluIHRoZSBtdWx0aS1jb2x1bW4gcmVnaW9uIHNvIGl0XG4gICAgICAgICAqIHNhdmVzIHVzIGZyb20gdGhlIHZpc3VhbCBub2lzZSBvZiB0aGUgcmVnaW9uIGp1bXBpbmcgYXJvdW5kLlxuICAgICAgICAgKi9cblxuICAgICAgICAgbGV0IG9yaWdpbmFsRWxlbWVudCA9IGRvbUVsZW1lbnQub3JpZ2luYWxFbGVtZW50O1xuICAgICAgICAgbGV0IGNsb25lZEVsZW1lbnQgPSBkb21FbGVtZW50LmNsb25lZEVsZW1lbnQ7XG4gICAgICAgICBsZXQgY29udGFpbmVyRWxlbWVudDogSFRNTERpdkVsZW1lbnQgPSBkb21FbGVtZW50LmVsZW1lbnRDb250YWluZXI7XG5cbiAgICAgICAgLy8gR2V0IGhlaWdodCBvZiB0aGUgb3JpZ2luYWwgYW5kIGNsb25lZCBlbGVtZW50LiBJZiB0aGUgZWxlbWVudCBpcyBub3QgY3VycmVudGx5IHJlbmRlcmVkXG4gICAgICAgIC8vIGl0IHdpbGwgaGF2ZSAwIGhlaWdodCBzbyB3ZSBuZWVkIHRvIHRlbXBvcmFyaWx5IHJlbmRlciBpdCB0byBnZXQgdGhlIGhlaWdodC5cbiAgICAgICAgbGV0IG9yaWdpbmFsRWxlbWVudEhlaWdodCA9IGdldEVsZW1lbnRDbGllbnRIZWlnaHQob3JpZ2luYWxFbGVtZW50LCBjb250YWluZXJFbGVtZW50KTtcbiAgICAgICAgbGV0IGNsb25lZEVsZW1lbnRIZWlnaHQgPSBnZXRFbGVtZW50Q2xpZW50SGVpZ2h0KGNsb25lZEVsZW1lbnQsIGNvbnRhaW5lckVsZW1lbnQpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXZSBvbmx5IHdhbnQgdG8gY2xvbmUgdGhlIGVsZW1lbnQgb25jZSB0byByZWR1Y2UgR0MuIEJ1dCBpZiB0aGUgY2xvbmVkIFxuICAgICAgICAgKiBlbGVtZW50J3MgaGVpZ2h0IGlzIG5vdCBlcXVhbCB0byB0aGUgb3JpZ2luYWwgZWxlbWVudCwgdGhpcyBtZWFucyB0aGVcbiAgICAgICAgICogaXRlbSBlbGVtZW50IGhhcyBiZWVuIHVwZGF0ZWQgc29tZXdoZXJlIGVsc2Ugd2l0aG91dCB0aGUgZG9tIGJlaW5nIFxuICAgICAgICAgKiByZWZyZXNoZWQuIFRoaXMgY2FuIG9jY3VyIHdoZW4gZWxlbWVudHMgYXJlIHVwZGF0ZWQgYnkgb3RoZXIgcGx1Z2lucywgXG4gICAgICAgICAqIHN1Y2ggYXMgRGF0YXZpZXcuXG4gICAgICAgICAqL1xuICAgICAgICBpZigoY2xvbmVkRWxlbWVudCA9PT0gbnVsbCAgfHwgXG4gICAgICAgICAgIE1hdGguYWJzKGNsb25lZEVsZW1lbnRIZWlnaHQgLSBvcmlnaW5hbEVsZW1lbnRIZWlnaHQpID4gMTAgfHxcbiAgICAgICAgICAgZG9tRWxlbWVudC5jbG9uZWRFbGVtZW50UmVhZHlGb3JVcGRhdGUoKSA9PT0gdHJ1ZSkgJiZcbiAgICAgICAgICAgZG9tRWxlbWVudC5lbGVtZW50VHlwZSAhPT0gRWxlbWVudFJlbmRlclR5cGUuY2FudmFzUmVuZGVyRWxlbWVudCkge1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlVwZGF0aW5nIENsb25lZCBFbGVtZW50LlwiLCBjbG9uZWRFbGVtZW50SGVpZ2h0LCBvcmlnaW5hbEVsZW1lbnRIZWlnaHQpXG4gICAgICAgICAgICAvLyBVcGRhdGUgY2xvbmUgYW5kIHJlZmVyZW5jZS5cbiAgICAgICAgICAgIGNsb25lRWxlbWVudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYoZG9tRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gRWxlbWVudFJlbmRlclR5cGUuY2FudmFzUmVuZGVyRWxlbWVudCAmJiBcbiAgICAgICAgICAgZG9tRWxlbWVudC5jYW52YXNSZWFkeUZvclVwZGF0ZSgpKSB7XG5cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiVXBkYXRpbmcgY2FudmFzIHJlLXJlbmRlclwiKVxuICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChvcmlnaW5hbEVsZW1lbnQpO1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBjbG9uZUNhbnZhcyhvcmlnaW5hbENhbnZhczogSFRNTENhbnZhc0VsZW1lbnQpOiBIVE1MQ2FudmFzRWxlbWVudCB7XG5cbiAgICAgICAgICAgICAgICAvL2NyZWF0ZSBhIG5ldyBjYW52YXNcbiAgICAgICAgICAgICAgICBsZXQgY2xvbmVkQ2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCA9IG9yaWdpbmFsQ2FudmFzLmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MQ2FudmFzRWxlbWVudDtcbiAgICAgICAgICAgICAgICBsZXQgY29udGV4dDogQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEID0gY2xvbmVkQ2FudmFzLmdldENvbnRleHQoJzJkJyk7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvL3NldCBkaW1lbnNpb25zXG4gICAgICAgICAgICAgICAgY2xvbmVkQ2FudmFzLndpZHRoID0gb3JpZ2luYWxDYW52YXMud2lkdGg7XG4gICAgICAgICAgICAgICAgY2xvbmVkQ2FudmFzLmhlaWdodCA9IG9yaWdpbmFsQ2FudmFzLmhlaWdodDtcblxuICAgICAgICAgICAgICAgIGlmKGNsb25lZENhbnZhcy53aWR0aCA9PT0gMCB8fCBjbG9uZWRDYW52YXMuaGVpZ2h0ID09PSAwKXtcbiAgICAgICAgICAgICAgICAgICAgLy8gRG9udCB3YW50IHRvIHJlbmRlciBpZiB0aGUgd2lkdGggaXMgMCBhcyBpdCB0aHJvd3MgYW4gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgLy8gd291bGQgaGFwcGVuIGlmIHRoZSBvbGQgY2FudmFzIGhhc250IGJlZW4gcmVuZGVyZWQgeWV0LlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2xvbmVkQ2FudmFzO1xuICAgICAgICAgICAgICAgIH0gXG5cbiAgICAgICAgICAgICAgICAvL2FwcGx5IHRoZSBvbGQgY2FudmFzIHRvIHRoZSBuZXcgb25lXG4gICAgICAgICAgICAgICAgY29udGV4dC5kcmF3SW1hZ2Uob3JpZ2luYWxDYW52YXMsIDAsIDApO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgLy9yZXR1cm4gdGhlIG5ldyBjYW52YXNcbiAgICAgICAgICAgICAgICByZXR1cm4gY2xvbmVkQ2FudmFzO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgY2FudmFzID0gc2VhcmNoQ2hpbGRyZW5Gb3JOb2RlVHlwZShvcmlnaW5hbEVsZW1lbnQsIFwiY2FudmFzXCIpO1xuICAgICAgICAgICAgaWYoY2FudmFzICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgZG9tRWxlbWVudC51cGRhdGVDbG9uZWRFbGVtZW50KG9yaWdpbmFsRWxlbWVudC5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTERpdkVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGNsb25lZEVsZW1lbnQgPSBkb21FbGVtZW50LmNsb25lZEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgY2xvbmVkRWxlbWVudC5hZGRDbGFzcyhNdWx0aUNvbHVtbkxheW91dENTUy5DbG9uZWRFbGVtZW50VHlwZSk7XG4gICAgICAgICAgICAgICAgY2xvbmVkRWxlbWVudC5yZW1vdmVDbGFzc2VzKFtNdWx0aUNvbHVtblN0eWxlQ1NTLlJlZ2lvbkNvbnRlbnQsIE11bHRpQ29sdW1uTGF5b3V0Q1NTLk9yaWdpbmFsRWxlbWVudFR5cGVdKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGNsb25lZEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IGNsb25lZEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgY2xvbmVkRWxlbWVudC5jaGlsZHJlbltpXS5kZXRhY2goKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2xvbmVkRWxlbWVudC5hcHBlbmRDaGlsZChjbG9uZUNhbnZhcyhjYW52YXMgYXMgSFRNTENhbnZhc0VsZW1lbnQpKVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb250YWluZXJFbGVtZW50LnJlbW92ZUNoaWxkKG9yaWdpbmFsRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgIC8qKiBcbiAgICAgICAgICogSWYgdGhlIGNvbnRhaW5lciBlbGVtZW50IGhhcyBsZXNzIHRoYW4gMiBjaGlsZHJlbiB3ZSBuZWVkIHRvIG1vdmUgdGhlXG4gICAgICAgICAqIG9yaWdpbmFsIGVsZW1lbnQgYmFjayBpbnRvIGl0LiBIb3dldmVyIHNvbWUgZWxlbWVudHMgY29uc3RhbnRseSBnZXQgbW92ZWRcbiAgICAgICAgICogaW4gYW5kIG91dCBjYXVzaW5nIHNvbWUgdW53YW50ZWQgYmVoYXZpb3IuIFRob3NlIGVsZW1lbnQgd2lsbCBiZSB0YWdnZWRcbiAgICAgICAgICogYXMgc3BlY2lhbFNpbmdsZUVsZW1lbnRSZW5kZXIgc28gd2UgaWdub3JlIHRob3NlIGVsZW1lbnRzIGhlcmUuXG4gICAgICAgICAqL1xuICAgICAgICBpZihkb21FbGVtZW50LmVsZW1lbnRDb250YWluZXIuY2hpbGRyZW4ubGVuZ3RoIDwgMiAmJiBcbiAgICAgICAgICAgZG9tRWxlbWVudC5lbGVtZW50VHlwZSAhPT0gRWxlbWVudFJlbmRlclR5cGUuc3BlY2lhbFNpbmdsZUVsZW1lbnRSZW5kZXIgJiZcbiAgICAgICAgICAgZG9tRWxlbWVudC5lbGVtZW50VHlwZSAhPT0gRWxlbWVudFJlbmRlclR5cGUuY2FudmFzUmVuZGVyRWxlbWVudCkge1xuXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlVwZGF0aW5nIGR1YWwgcmVuZGVyaW5nLlwiLCBkb21FbGVtZW50LCBkb21FbGVtZW50Lm9yaWdpbmFsRWxlbWVudC5wYXJlbnRFbGVtZW50LCBkb21FbGVtZW50Lm9yaWdpbmFsRWxlbWVudC5wYXJlbnRFbGVtZW50Py5jaGlsZEVsZW1lbnRDb3VudCk7XG5cbiAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSBvdXIgQ1NTIGlzIHVwIHRvIGRhdGUuXG4gICAgICAgICAgICBvcmlnaW5hbEVsZW1lbnQuYWRkQ2xhc3MoTXVsdGlDb2x1bW5MYXlvdXRDU1MuT3JpZ2luYWxFbGVtZW50VHlwZSk7XG4gICAgICAgICAgICBjbG9uZWRFbGVtZW50LmFkZENsYXNzKE11bHRpQ29sdW1uTGF5b3V0Q1NTLkNsb25lZEVsZW1lbnRUeXBlKTtcbiAgICAgICAgICAgIGNsb25lZEVsZW1lbnQucmVtb3ZlQ2xhc3NlcyhbTXVsdGlDb2x1bW5TdHlsZUNTUy5SZWdpb25Db250ZW50LCBNdWx0aUNvbHVtbkxheW91dENTUy5PcmlnaW5hbEVsZW1lbnRUeXBlXSk7XG4gICAgXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gY29udGFpbmVyRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lckVsZW1lbnQuY2hpbGRyZW5baV0uZGV0YWNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKG9yaWdpbmFsRWxlbWVudCk7XG4gICAgICAgICAgICBjb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGNsb25lZEVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gY2xvbmVFbGVtZW50KCkge1xuICAgICAgICAgICAgZG9tRWxlbWVudC51cGRhdGVDbG9uZWRFbGVtZW50KG9yaWdpbmFsRWxlbWVudC5jbG9uZU5vZGUodHJ1ZSkgYXMgSFRNTERpdkVsZW1lbnQpO1xuICAgICAgICAgICAgY2xvbmVkRWxlbWVudCA9IGRvbUVsZW1lbnQuY2xvbmVkRWxlbWVudDtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBJZiB3ZSB1cGRhdGVkIHRoZSBjbG9uZWQgZWxlbWVudCwgd2Ugd2FudCB0byBhbHNvIHVwZGF0ZSB0aGVcbiAgICAgICAgICAgICAqIGVsZW1lbnQgcmVuZGVyZWQgaW4gdGhlIHBhcmVudCBjb250YWluZXIuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSBjb250YWluZXJFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyRWxlbWVudC5jaGlsZHJlbltpXS5kZXRhY2goKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gVXBkYXRlIENTUywgd2UgYWRkIGNsb25lZCBjbGFzcyBhbmQgcmVtb3ZlIGNsYXNzZXMgZnJvbSBvcmlnaW5hbEVsZW1lbnQgdGhhdCBkbyBub3QgYXBwbHkuXG4gICAgICAgICAgICBjbG9uZWRFbGVtZW50LmFkZENsYXNzKE11bHRpQ29sdW1uTGF5b3V0Q1NTLkNsb25lZEVsZW1lbnRUeXBlKTtcbiAgICAgICAgICAgIGNsb25lZEVsZW1lbnQucmVtb3ZlQ2xhc3NlcyhbTXVsdGlDb2x1bW5TdHlsZUNTUy5SZWdpb25Db250ZW50LCBNdWx0aUNvbHVtbkxheW91dENTUy5PcmlnaW5hbEVsZW1lbnRUeXBlXSk7XG4gICAgICAgICAgICBjb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKGNsb25lZEVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB1cCB0aGUgQ1NTIGNsYXNzZXMgYW5kIHRoZSBudW1iZXIgb2YgY29sdW1ucyBiYXNlZCBvbiB0aGUgcGFzc2VkIHNldHRpbmdzLlxuICAgICAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgdXNlciBkZWZpbmVkIHNldHRpbmdzIHRoYXQgZGV0ZXJtaW5lIHdoYXQgQ1NTIGlzIHNldCBoZXJlLlxuICAgICAqIEBwYXJhbSBtdWx0aUNvbHVtblBhcmVudCBUaGUgcGFyZW50IG9iamVjdCB0aGF0IHRoZSBjb2x1bW4gZGl2cyB3aWxsIGJlIGNyZWF0ZWQgdW5kZXIuXG4gICAgICogQHJldHVybnMgVGhlIGxpc3Qgb2YgY29sdW1uIGRpdnMgY3JlYXRlZCB1bmRlciB0aGUgcGFzc2VkIHBhcmVudCBlbGVtZW50LlxuICAgICAqL1xuICAgIGdldENvbHVtbkNvbnRlbnREaXZzKHNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzLCBtdWx0aUNvbHVtblBhcmVudDogSFRNTERpdkVsZW1lbnQpOiBIVE1MRGl2RWxlbWVudFtdIHtcblxuICAgICAgICBsZXQgY29sdW1uQ29udGVudERpdnM6IEhUTUxEaXZFbGVtZW50W10gPSBbXVxuICAgICAgICBsZXQgc3R5bGVTdHI6IHN0cmluZyA9IFwiXCJcbiAgICAgICAgaWYoc2V0dGluZ3MuY29sdW1uU3BhY2luZyAhPT0gXCJcIikge1xuXG4gICAgICAgICAgICBzdHlsZVN0ciA9IGBtYXJnaW4taW5saW5lOiAke3NldHRpbmdzLmNvbHVtblNwYWNpbmd9O2BcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHNldHRpbmdzLm51bWJlck9mQ29sdW1ucyA9PT0gMikge1xuXG4gICAgICAgICAgICBzd2l0Y2goc2V0dGluZ3MuY29sdW1uTGF5b3V0KSB7XG4gICAgICAgICAgICAgICAgY2FzZShDb2x1bW5MYXlvdXQuc3RhbmRhcmQpOlxuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0Lm1pZGRsZSk6XG4gICAgICAgICAgICAgICAgY2FzZShDb2x1bW5MYXlvdXQuY2VudGVyKTpcbiAgICAgICAgICAgICAgICBjYXNlKENvbHVtbkxheW91dC50aGlyZCk6XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlR3b0VxdWFsQ29sdW1uc31gXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYG1jbS1jb2x1bW4tc3BhY2VyYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHI6IHtcInN0eWxlXCI6IHN0eWxlU3RyfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnMucHVzaChtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9ICR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuVHdvRXF1YWxDb2x1bW5zfWBcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0LmxlZnQpOlxuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0LmZpcnN0KTpcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnMucHVzaChtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9ICR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuVHdvQ29sdW1uTGFyZ2V9YFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGBtY20tY29sdW1uLXNwYWNlcmAsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyOiB7XCJzdHlsZVwiOiBzdHlsZVN0cn1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlR3b0NvbHVtblNtYWxsfWBcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0LnJpZ2h0KTpcbiAgICAgICAgICAgICAgICBjYXNlKENvbHVtbkxheW91dC5zZWNvbmQpOlxuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0Lmxhc3QpOlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2cy5wdXNoKG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uQ29udGVudH0gJHtNdWx0aUNvbHVtbkxheW91dENTUy5Ud29Db2x1bW5TbWFsbH1gXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYG1jbS1jb2x1bW4tc3BhY2VyYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHI6IHtcInN0eWxlXCI6IHN0eWxlU3RyfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnMucHVzaChtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9ICR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuVHdvQ29sdW1uTGFyZ2V9YFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoc2V0dGluZ3MubnVtYmVyT2ZDb2x1bW5zID09PSAzKSB7XG5cbiAgICAgICAgICAgIHN3aXRjaChzZXR0aW5ncy5jb2x1bW5MYXlvdXQpIHtcbiAgICAgICAgICAgICAgICBjYXNlKENvbHVtbkxheW91dC5zdGFuZGFyZCk6XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlRocmVlRXF1YWxDb2x1bW5zfWBcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgbWNtLWNvbHVtbi1zcGFjZXJgLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cjoge1wic3R5bGVcIjogc3R5bGVTdHJ9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2cy5wdXNoKG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uQ29udGVudH0gJHtNdWx0aUNvbHVtbkxheW91dENTUy5UaHJlZUVxdWFsQ29sdW1uc31gXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYG1jbS1jb2x1bW4tc3BhY2VyYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHI6IHtcInN0eWxlXCI6IHN0eWxlU3RyfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnMucHVzaChtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9ICR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuVGhyZWVFcXVhbENvbHVtbnN9YFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgY2FzZShDb2x1bW5MYXlvdXQubGVmdCk6XG4gICAgICAgICAgICAgICAgY2FzZShDb2x1bW5MYXlvdXQuZmlyc3QpOlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2cy5wdXNoKG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uQ29udGVudH0gJHtNdWx0aUNvbHVtbkxheW91dENTUy5UaHJlZUNvbHVtbl9MYXJnZX1gXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYG1jbS1jb2x1bW4tc3BhY2VyYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHI6IHtcInN0eWxlXCI6IHN0eWxlU3RyfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnMucHVzaChtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9ICR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuVGhyZWVDb2x1bW5fU21hbGx9YFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGBtY20tY29sdW1uLXNwYWNlcmAsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyOiB7XCJzdHlsZVwiOiBzdHlsZVN0cn1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlRocmVlQ29sdW1uX1NtYWxsfWBcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0Lm1pZGRsZSk6XG4gICAgICAgICAgICAgICAgY2FzZShDb2x1bW5MYXlvdXQuY2VudGVyKTpcbiAgICAgICAgICAgICAgICBjYXNlKENvbHVtbkxheW91dC5zZWNvbmQpOlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2cy5wdXNoKG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uQ29udGVudH0gJHtNdWx0aUNvbHVtbkxheW91dENTUy5UaHJlZUNvbHVtbl9TbWFsbH1gXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYG1jbS1jb2x1bW4tc3BhY2VyYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHI6IHtcInN0eWxlXCI6IHN0eWxlU3RyfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnMucHVzaChtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9ICR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuVGhyZWVDb2x1bW5fTGFyZ2V9YFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGBtY20tY29sdW1uLXNwYWNlcmAsXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyOiB7XCJzdHlsZVwiOiBzdHlsZVN0cn1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlRocmVlQ29sdW1uX1NtYWxsfWBcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UoQ29sdW1uTGF5b3V0LnJpZ2h0KTpcbiAgICAgICAgICAgICAgICBjYXNlKENvbHVtbkxheW91dC50aGlyZCk6XG4gICAgICAgICAgICAgICAgY2FzZShDb2x1bW5MYXlvdXQubGFzdCk6XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzLnB1c2gobXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYCR7TXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Db250ZW50fSAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlRocmVlQ29sdW1uX1NtYWxsfWBcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgICAgICBtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgbWNtLWNvbHVtbi1zcGFjZXJgLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXR0cjoge1wic3R5bGVcIjogc3R5bGVTdHJ9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2cy5wdXNoKG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uQ29udGVudH0gJHtNdWx0aUNvbHVtbkxheW91dENTUy5UaHJlZUNvbHVtbl9TbWFsbH1gXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlDb2x1bW5QYXJlbnQuY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogYG1jbS1jb2x1bW4tc3BhY2VyYCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHI6IHtcInN0eWxlXCI6IHN0eWxlU3RyfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnMucHVzaChtdWx0aUNvbHVtblBhcmVudC5jcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkNvbnRlbnR9ICR7TXVsdGlDb2x1bW5MYXlvdXRDU1MuVGhyZWVDb2x1bW5fTGFyZ2V9YFxuICAgICAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbHVtbkNvbnRlbnREaXZzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhYnN0cmFjdCByZW5kZXJSZWdpb25FbGVtZW50c1RvU2NyZWVuKCk6IHZvaWQ7XG4gICAgcHVibGljIGFic3RyYWN0IGV4cG9ydFJlZ2lvbkVsZW1lbnRzVG9QREYocGRmUGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkO1xuICAgIHB1YmxpYyBhYnN0cmFjdCByZW5kZXJSZWdpb25FbGVtZW50c1RvTGl2ZVByZXZpZXcocGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkXG59XG5cblxuZnVuY3Rpb24gZ2V0RWxlbWVudENsaWVudEhlaWdodChlbGVtZW50OiBIVE1MRWxlbWVudCwgcGFyZW50UmVuZGVyRWxlbWVudDogSFRNTERpdkVsZW1lbnQpOiBudW1iZXIge1xuXG4gICAgbGV0IGhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgIGlmKGhlaWdodCA9PT0gMCkge1xuICAgICAgICBwYXJlbnRSZW5kZXJFbGVtZW50LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodFxuICAgICAgICBwYXJlbnRSZW5kZXJFbGVtZW50LnJlbW92ZUNoaWxkKGVsZW1lbnQpO1xuICAgIH1cbiAgICByZXR1cm4gaGVpZ2h0XG59IiwiLyoqXG4gKiBGaWxlOiAvc3JjL2RvbV9tYW5hZ2VyL3JlZ2lvbmFsX21hbmFnZXJzL3JlZ2lvbkRPTU1hbmFnZXIudHMgICAgICAgICAgICAgICAgKlxuICogQ3JlYXRlZCBEYXRlOiBTdW5kYXksIE1heSAyMm5kIDIwMjIsIDc6NDYgcG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqIEF1dGhvcjogQ2FtZXJvbiBSb2JpbnNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIENhbWVyb24gUm9iaW5zb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqL1xuXG5pbXBvcnQgeyBET01PYmplY3QsIERPTU9iamVjdFRhZywgVGFza0xpc3RET01PYmplY3QgfSBmcm9tICcuLi9kb21PYmplY3QnO1xuaW1wb3J0IHsgTXVsdGlDb2x1bW5TZXR0aW5ncywgQ29udGVudE92ZXJmbG93VHlwZSB9IGZyb20gXCIuLi8uLi9yZWdpb25TZXR0aW5nc1wiO1xuaW1wb3J0IHsgTXVsdGlDb2x1bW5MYXlvdXRDU1MsIE11bHRpQ29sdW1uU3R5bGVDU1MgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3NzRGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgTWFya2Rvd25SZW5kZXJDaGlsZCB9IGZyb20gJ29ic2lkaWFuJztcbmltcG9ydCB7IFJlZ2lvbk1hbmFnZXIgfSBmcm9tICcuL3JlZ2lvbk1hbmFnZXInO1xuaW1wb3J0IHsgZ2V0SGVhZGluZ0NvbGxhcHNlRWxlbWVudCB9IGZyb20gJ3NyYy91dGlsaXRpZXMvZWxlbWVudFJlbmRlclR5cGVQYXJzZXInO1xuXG5leHBvcnQgY2xhc3MgU3RhbmRhcmRNdWx0aUNvbHVtblJlZ2lvbk1hbmFnZXIgZXh0ZW5kcyBSZWdpb25NYW5hZ2VyIHtcblxuXG4gICAgcHVibGljIHJlbmRlclJlZ2lvbkVsZW1lbnRzVG9TY3JlZW4oKTogdm9pZCB7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJDb2x1bW5NYXJrZG93bih0aGlzLnJlZ2lvblBhcmVudCwgdGhpcy5kb21MaXN0LCB0aGlzLnJlZ2lvbmFsU2V0dGluZ3MpO1xuICAgIH1cbiAgICBwdWJsaWMgZXhwb3J0UmVnaW9uRWxlbWVudHNUb1BERihwZGZQYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuXG4gICAgICAgIC8vIERlZmF1bHQgc2V0IHNoYWRvdyB0byBvZmYgZm9yIGV4cG9ydGluZyBQREZzXG4gICAgICAgIGxldCByZW5kZXJTZXR0aW5ncyA9IHRoaXMucmVnaW9uYWxTZXR0aW5ncztcbiAgICAgICAgcmVuZGVyU2V0dGluZ3MuZHJhd1NoYWRvdyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlbmRlckNvbHVtbk1hcmtkb3duKHBkZlBhcmVudEVsZW1lbnQsIHRoaXMuZG9tTGlzdC5zbGljZSgpLCByZW5kZXJTZXR0aW5ncyk7XG4gICAgfVxuICAgIHB1YmxpYyByZW5kZXJSZWdpb25FbGVtZW50c1RvTGl2ZVByZXZpZXcocGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcblxuICAgICAgICB0aGlzLnJlbmRlckNvbHVtbk1hcmtkb3duKHBhcmVudEVsZW1lbnQsIHRoaXMuZG9tTGlzdCwgdGhpcy5yZWdpb25hbFNldHRpbmdzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiB0YWtlcyBpbiB0aGUgZGF0YSBmb3IgdGhlIG11bHRpLWNvbHVtbiByZWdpb24gYW5kIHNldHMgdXAgdGhlIFxuICAgICAqIHVzZXIgZGVmaW5lZCBudW1iZXIgb2YgY2hpbGRyZW4gd2l0aCB0aGUgcHJvcGVyIGNzcyBjbGFzc2VzIHRvIGJlIHJlbmRlcmVkIHByb3Blcmx5LlxuICAgICAqIFxuICAgICAqIEBwYXJhbSBwYXJlbnRFbGVtZW50IFRoZSBlbGVtZW50IHRoYXQgdGhlIG11bHRpLWNvbHVtbiByZWdpb24gd2lsbCBiZSByZW5kZXJlZCB1bmRlci5cbiAgICAgKiBAcGFyYW0gcmVnaW9uRWxlbWVudHMgVGhlIGxpc3Qgb2YgRE9NIG9iamVjdHMgdGhhdCB3aWxsIGJlIGNvcHBpZWQgdW5kZXIgdGhlIHBhcmVudCBvYmplY3RcbiAgICAgKiBAcGFyYW0gc2V0dGluZ3MgVGhlIHNldHRpbmdzIHRoZSB1c2VyIGhhcyBkZWZpbmVkIGZvciB0aGUgcmVnaW9uLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVuZGVyQ29sdW1uTWFya2Rvd24ocGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQsIHJlZ2lvbkVsZW1lbnRzOiBET01PYmplY3RbXSwgc2V0dGluZ3M6IE11bHRpQ29sdW1uU2V0dGluZ3MpIHtcblxuICAgICAgICBsZXQgbXVsdGlDb2x1bW5QYXJlbnQgPSBjcmVhdGVEaXYoe1xuICAgICAgICAgICAgY2xzOiBNdWx0aUNvbHVtbkxheW91dENTUy5SZWdpb25Db2x1bW5Db250YWluZXJEaXYsXG4gICAgICAgIH0pO1xuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhc3Mgb3VyIHBhcmVudCBkaXYgYW5kIHNldHRpbmdzIHRvIHBhcnNlciB0byBjcmVhdGUgdGhlIHJlcXVpcmVkXG4gICAgICAgICAqIGNvbHVtbiBkaXZzIGFzIGNoaWxkcmVuIG9mIHRoZSBwYXJlbnQuXG4gICAgICAgICAqL1xuICAgICAgICBsZXQgY29sdW1uQ29udGVudERpdnMgPSB0aGlzLmdldENvbHVtbkNvbnRlbnREaXZzKHNldHRpbmdzLCBtdWx0aUNvbHVtblBhcmVudCk7XG4gICAgICAgIGlmKHNldHRpbmdzLmRyYXdTaGFkb3cgPT09IHRydWUpIHtcbiAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmFkZENsYXNzKE11bHRpQ29sdW1uU3R5bGVDU1MuUmVnaW9uU2hhZG93KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgY29sdW1uQ29udGVudERpdnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmKHNldHRpbmdzLmRyYXdCb3JkZXIgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2c1tpXS5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkJvcmRlcik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKHNldHRpbmdzLmRyYXdTaGFkb3cgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2c1tpXS5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtblNoYWRvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBDcmVhdGUgbWFya2Rvd24gcmVuZGVyZXIgdG8gcGFyc2UgdGhlIHBhc3NlZCBtYXJrZG93blxuICAgICAgICAvLyBiZXR3ZWVuIHRoZSB0YWdzLlxuICAgICAgICBsZXQgbWFya2Rvd25SZW5kZXJDaGlsZCA9IG5ldyBNYXJrZG93blJlbmRlckNoaWxkKFxuICAgICAgICAgICAgbXVsdGlDb2x1bW5QYXJlbnRcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBSZW1vdmUgZXZlcnkgb3RoZXIgY2hpbGQgZnJvbSB0aGUgcGFyZW50IHNvIFxuICAgICAgICAvLyB3ZSBkb250IGVuZCB1cCB3aXRoIG11bHRpcGxlIHNldHMgb2YgZGF0YS4gVGhpcyBzaG91bGRcbiAgICAgICAgLy8gcmVhbGx5IG9ubHkgbmVlZCB0byBsb29wIG9uY2UgZm9yIGkgPSAwIGJ1dCBsb29wIGp1c3RcbiAgICAgICAgLy8gaW4gY2FzZS5cbiAgICAgICAgZm9yKGxldCBpID0gcGFyZW50RWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgcGFyZW50RWxlbWVudC5jaGlsZHJlbltpXS5kZXRhY2goKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKG1hcmtkb3duUmVuZGVyQ2hpbGQuY29udGFpbmVyRWwpO1xuXG4gICAgICAgIHRoaXMuYXBwZW5kRWxlbWVudHNUb0NvbHVtbnMocmVnaW9uRWxlbWVudHMsIGNvbHVtbkNvbnRlbnREaXZzLCBzZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmRFbGVtZW50c1RvQ29sdW1ucyhyZWdpb25FbGVtZW50czogRE9NT2JqZWN0W10sIGNvbHVtbkNvbnRlbnREaXZzOiBIVE1MRGl2RWxlbWVudFtdLCBzZXR0aW5nczogTXVsdGlDb2x1bW5TZXR0aW5ncykge1xuXG4gICAgICAgIGxldCBjb2x1bW5JbmRleCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVnaW9uRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgaWYgKHJlZ2lvbkVsZW1lbnRzW2ldLnRhZyA9PT0gRE9NT2JqZWN0VGFnLm5vbmUgfHxcbiAgICAgICAgICAgICAgICByZWdpb25FbGVtZW50c1tpXS50YWcgPT09IERPTU9iamVjdFRhZy5jb2x1bW5CcmVhaykge1xuXG4gICAgICAgICAgICAgICAgLy8gV2Ugc3RvcmUgdGhlIGVsZW1lbnRzIGluIGEgd3JhcHBlciBjb250YWluZXIgdW50aWwgd2UgZGV0ZXJtaW5lXG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSBjcmVhdGVEaXYoe1xuICAgICAgICAgICAgICAgICAgICBjbHM6IE11bHRpQ29sdW1uTGF5b3V0Q1NTLkNvbHVtbkR1YWxFbGVtZW50Q29udGFpbmVyLFxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYoc2V0dGluZ3MuY29udGVudE92ZXJmbG93ID09PSBDb250ZW50T3ZlcmZsb3dUeXBlLmhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFkZENsYXNzKE11bHRpQ29sdW1uTGF5b3V0Q1NTLkNvbnRlbnRPdmVyZmxvd0hpZGRlbilcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuYWRkQ2xhc3MoTXVsdGlDb2x1bW5MYXlvdXRDU1MuQ29udGVudE92ZXJmbG93QXV0b1Njcm9sbClcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZWdpb25FbGVtZW50c1tpXS5lbGVtZW50Q29udGFpbmVyID0gZWxlbWVudDtcblxuICAgICAgICAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBqdXN0IG1ha2UgYSBjb3B5IG9mIHRoZSBvcmlnaW5hbCBlbGVtZW50IHRvIGRpc3BsYXkuXG4gICAgICAgICAgICAgICAgbGV0IGNsb25lZEVsZW1lbnQgPSByZWdpb25FbGVtZW50c1tpXS5vcmlnaW5hbEVsZW1lbnQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICAgICAgICAgIGxldCBoZWFkaW5nQ29sbGFwc2VFbGVtZW50ID0gZ2V0SGVhZGluZ0NvbGxhcHNlRWxlbWVudChjbG9uZWRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICBpZihoZWFkaW5nQ29sbGFwc2VFbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgcmVtb3ZlcyB0aGUgY29sbGFwc2UgYXJyb3cgZnJvbSB0aGUgdmlldyBpZiBpdCBleGlzdHMuXG4gICAgICAgICAgICAgICAgICAgIGhlYWRpbmdDb2xsYXBzZUVsZW1lbnQuZGV0YWNoKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmVnaW9uRWxlbWVudHNbaV0uY2xvbmVkRWxlbWVudCA9IGNsb25lZEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChjbG9uZWRFbGVtZW50KTtcblxuICAgICAgICAgICAgICAgIGlmIChyZWdpb25FbGVtZW50c1tpXSBpbnN0YW5jZW9mIFRhc2tMaXN0RE9NT2JqZWN0KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXhDbG9uZWRDaGVja0xpc3RCdXR0b25zKHJlZ2lvbkVsZW1lbnRzW2ldIGFzIFRhc2tMaXN0RE9NT2JqZWN0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCAhPT0gbnVsbCAmJiByZWdpb25FbGVtZW50c1tpXS50YWcgIT09IERPTU9iamVjdFRhZy5jb2x1bW5CcmVhaykge1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzW2NvbHVtbkluZGV4XS5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBJZiB0aGUgdGFnIGlzIGEgY29sdW1uIGJyZWFrIHdlIHVwZGF0ZSB0aGUgY29sdW1uIGluZGV4IGFmdGVyXG4gICAgICAgICAgICAgICAgICogYXBwZW5kaW5nIHRoZSBpdGVtIHRvIHRoZSBjb2x1bW4gZGl2LiBUaGlzIGtlZXBzIHRoZSBtYWluIERPTVxuICAgICAgICAgICAgICAgICAqIGNsZWFuZXIgYnkgcmVtb3Zpbmcgb3RoZXIgaXRlbXMgYW5kIHBsYWNpbmcgdGhlbSBhbGwgd2l0aGluXG4gICAgICAgICAgICAgICAgICogYSByZWdpb24gY29udGFpbmVyLlxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmIChyZWdpb25FbGVtZW50c1tpXS50YWcgPT09IERPTU9iamVjdFRhZy5jb2x1bW5CcmVhayAmJlxuICAgICAgICAgICAgICAgICAgICAoY29sdW1uSW5kZXggKyAxKSA8IHNldHRpbmdzLm51bWJlck9mQ29sdW1ucykge1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4iLCJpbXBvcnQgeyBET01PYmplY3QsIERPTU9iamVjdFRhZywgVGFza0xpc3RET01PYmplY3QgfSBmcm9tICcuLi9kb21PYmplY3QnO1xuaW1wb3J0IHsgTXVsdGlDb2x1bW5TZXR0aW5ncywgQ29sdW1uTGF5b3V0LCBTaW5nbGVDb2x1bW5TaXplIH0gZnJvbSBcIi4uLy4uL3JlZ2lvblNldHRpbmdzXCI7XG5pbXBvcnQgeyBNdWx0aUNvbHVtbkxheW91dENTUywgTXVsdGlDb2x1bW5TdHlsZUNTUyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9jc3NEZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBNYXJrZG93blJlbmRlckNoaWxkIH0gZnJvbSAnb2JzaWRpYW4nO1xuaW1wb3J0IHsgUmVnaW9uTWFuYWdlciB9IGZyb20gJy4vcmVnaW9uTWFuYWdlcic7XG5pbXBvcnQgeyBnZXRIZWFkaW5nQ29sbGFwc2VFbGVtZW50IH0gZnJvbSAnc3JjL3V0aWxpdGllcy9lbGVtZW50UmVuZGVyVHlwZVBhcnNlcic7XG5cblxuZXhwb3J0IGNsYXNzIFNpbmdsZUNvbHVtblJlZ2lvbk1hbmFnZXIgZXh0ZW5kcyBSZWdpb25NYW5hZ2VyIHtcblxuXG4gICAgcHVibGljIHJlbmRlclJlZ2lvbkVsZW1lbnRzVG9TY3JlZW4oKTogdm9pZCB7XG5cbiAgICAgICAgdGhpcy5yZW5kZXJDb2x1bW5NYXJrZG93bih0aGlzLnJlZ2lvblBhcmVudCwgdGhpcy5kb21MaXN0LCB0aGlzLnJlZ2lvbmFsU2V0dGluZ3MpO1xuICAgIH1cbiAgICBwdWJsaWMgZXhwb3J0UmVnaW9uRWxlbWVudHNUb1BERihwZGZQYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuXG4gICAgICAgIC8vIERlZmF1bHQgc2V0IHNoYWRvdyB0byBvZmYgZm9yIGV4cG9ydGluZyBQREZzXG4gICAgICAgIGxldCByZW5kZXJTZXR0aW5ncyA9IHRoaXMucmVnaW9uYWxTZXR0aW5ncztcbiAgICAgICAgcmVuZGVyU2V0dGluZ3MuZHJhd1NoYWRvdyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJlbmRlckNvbHVtbk1hcmtkb3duKHBkZlBhcmVudEVsZW1lbnQsIHRoaXMuZG9tTGlzdC5zbGljZSgpLCByZW5kZXJTZXR0aW5ncyk7XG4gICAgfVxuICAgIHB1YmxpYyByZW5kZXJSZWdpb25FbGVtZW50c1RvTGl2ZVByZXZpZXcocGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcblxuICAgICAgICB0aGlzLnJlbmRlckNvbHVtbk1hcmtkb3duKHBhcmVudEVsZW1lbnQsIHRoaXMuZG9tTGlzdCwgdGhpcy5yZWdpb25hbFNldHRpbmdzKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogVGhpcyBmdW5jdGlvbiB0YWtlcyBpbiB0aGUgZGF0YSBmb3IgdGhlIG11bHRpLWNvbHVtbiByZWdpb24gYW5kIHNldHMgdXAgdGhlXG4gICAgICogdXNlciBkZWZpbmVkIG51bWJlciBvZiBjaGlsZHJlbiB3aXRoIHRoZSBwcm9wZXIgY3NzIGNsYXNzZXMgdG8gYmUgcmVuZGVyZWQgcHJvcGVybHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyZW50RWxlbWVudCBUaGUgZWxlbWVudCB0aGF0IHRoZSBtdWx0aS1jb2x1bW4gcmVnaW9uIHdpbGwgYmUgcmVuZGVyZWQgdW5kZXIuXG4gICAgICogQHBhcmFtIHJlZ2lvbkVsZW1lbnRzIFRoZSBsaXN0IG9mIERPTSBvYmplY3RzIHRoYXQgd2lsbCBiZSBjb3BwaWVkIHVuZGVyIHRoZSBwYXJlbnQgb2JqZWN0XG4gICAgICogQHBhcmFtIHNldHRpbmdzIFRoZSBzZXR0aW5ncyB0aGUgdXNlciBoYXMgZGVmaW5lZCBmb3IgdGhlIHJlZ2lvbi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVuZGVyQ29sdW1uTWFya2Rvd24ocGFyZW50RWxlbWVudDogSFRNTEVsZW1lbnQsIHJlZ2lvbkVsZW1lbnRzOiBET01PYmplY3RbXSwgc2V0dGluZ3M6IE11bHRpQ29sdW1uU2V0dGluZ3MpIHtcblxuICAgICAgICBsZXQgbXVsdGlDb2x1bW5QYXJlbnQgPSBjcmVhdGVEaXYoe1xuICAgICAgICAgICAgY2xzOiBNdWx0aUNvbHVtbkxheW91dENTUy5SZWdpb25Db2x1bW5Db250YWluZXJEaXYsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmKGlzTGVmdExheW91dCh0aGlzLnJlZ2lvbmFsU2V0dGluZ3MuY29sdW1uUG9zaXRpb24pKXtcbiAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmFkZENsYXNzKE11bHRpQ29sdW1uTGF5b3V0Q1NTLlNpbmdsZUNvbHVtbkxlZnRMYXlvdXQpXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZihpc1JpZ2h0TGF5b3V0KHRoaXMucmVnaW9uYWxTZXR0aW5ncy5jb2x1bW5Qb3NpdGlvbikpIHtcbiAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmFkZENsYXNzKE11bHRpQ29sdW1uTGF5b3V0Q1NTLlNpbmdsZUNvbHVtblJpZ2h0TGF5b3V0KVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbXVsdGlDb2x1bW5QYXJlbnQuYWRkQ2xhc3MoTXVsdGlDb2x1bW5MYXlvdXRDU1MuU2luZ2xlQ29sdW1uQ2VudGVyTGF5b3V0KVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhc3Mgb3VyIHBhcmVudCBkaXYgYW5kIHNldHRpbmdzIHRvIHBhcnNlciB0byBjcmVhdGUgdGhlIHJlcXVpcmVkXG4gICAgICAgICAqIGNvbHVtbiBkaXZzIGFzIGNoaWxkcmVuIG9mIHRoZSBwYXJlbnQuXG4gICAgICAgICAqL1xuICAgICAgICBsZXQgY29sdW1uQ29udGVudERpdiA9IHRoaXMuY3JlYXRlQ29sdW1uQ29udGVudERpdnMobXVsdGlDb2x1bW5QYXJlbnQpO1xuICAgICAgICBpZiAoc2V0dGluZ3MuZHJhd0JvcmRlciA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgY29sdW1uQ29udGVudERpdi5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkJvcmRlcik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNldHRpbmdzLmRyYXdTaGFkb3cgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXYuYWRkQ2xhc3MoTXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5TaGFkb3cpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQ3JlYXRlIG1hcmtkb3duIHJlbmRlcmVyIHRvIHBhcnNlIHRoZSBwYXNzZWQgbWFya2Rvd25cbiAgICAgICAgLy8gYmV0d2VlbiB0aGUgdGFncy5cbiAgICAgICAgbGV0IG1hcmtkb3duUmVuZGVyQ2hpbGQgPSBuZXcgTWFya2Rvd25SZW5kZXJDaGlsZChcbiAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50XG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gUmVtb3ZlIGV2ZXJ5IG90aGVyIGNoaWxkIGZyb20gdGhlIHBhcmVudCBzbyBcbiAgICAgICAgLy8gd2UgZG9udCBlbmQgdXAgd2l0aCBtdWx0aXBsZSBzZXRzIG9mIGRhdGEuIFRoaXMgc2hvdWxkXG4gICAgICAgIC8vIHJlYWxseSBvbmx5IG5lZWQgdG8gbG9vcCBvbmNlIGZvciBpID0gMCBidXQgbG9vcCBqdXN0XG4gICAgICAgIC8vIGluIGNhc2UuXG4gICAgICAgIGZvciAobGV0IGkgPSBwYXJlbnRFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBwYXJlbnRFbGVtZW50LmNoaWxkcmVuW2ldLmRldGFjaCgpO1xuICAgICAgICB9XG4gICAgICAgIHBhcmVudEVsZW1lbnQuYXBwZW5kQ2hpbGQobWFya2Rvd25SZW5kZXJDaGlsZC5jb250YWluZXJFbCk7XG5cbiAgICAgICAgdGhpcy5hcHBlbmRFbGVtZW50c1RvQ29sdW1ucyhyZWdpb25FbGVtZW50cywgY29sdW1uQ29udGVudERpdiwgc2V0dGluZ3MpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhcHBlbmRFbGVtZW50c1RvQ29sdW1ucyhyZWdpb25FbGVtZW50czogRE9NT2JqZWN0W10sIGNvbHVtbkNvbnRlbnREaXY6IEhUTUxEaXZFbGVtZW50LCBzZXR0aW5nczogTXVsdGlDb2x1bW5TZXR0aW5ncykge1xuXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZWdpb25FbGVtZW50cy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICBpZiAocmVnaW9uRWxlbWVudHNbaV0udGFnID09PSBET01PYmplY3RUYWcubm9uZSB8fFxuICAgICAgICAgICAgICAgIHJlZ2lvbkVsZW1lbnRzW2ldLnRhZyA9PT0gRE9NT2JqZWN0VGFnLmNvbHVtbkJyZWFrKSB7XG5cbiAgICAgICAgICAgICAgICAvLyBXZSBzdG9yZSB0aGUgZWxlbWVudHMgaW4gYSB3cmFwcGVyIGNvbnRhaW5lciB1bnRpbCB3ZSBkZXRlcm1pbmVcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudCA9IGNyZWF0ZURpdih7XG4gICAgICAgICAgICAgICAgICAgIGNsczogTXVsdGlDb2x1bW5MYXlvdXRDU1MuQ29sdW1uRHVhbEVsZW1lbnRDb250YWluZXIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgcmVnaW9uRWxlbWVudHNbaV0uZWxlbWVudENvbnRhaW5lciA9IGVsZW1lbnQ7XG5cbiAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2UganVzdCBtYWtlIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZWxlbWVudCB0byBkaXNwbGF5LlxuICAgICAgICAgICAgICAgIGxldCBjbG9uZWRFbGVtZW50ID0gcmVnaW9uRWxlbWVudHNbaV0ub3JpZ2luYWxFbGVtZW50LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRGl2RWxlbWVudDtcbiAgICAgICAgICAgICAgICBsZXQgaGVhZGluZ0NvbGxhcHNlRWxlbWVudCA9IGdldEhlYWRpbmdDb2xsYXBzZUVsZW1lbnQoY2xvbmVkRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgaWYoaGVhZGluZ0NvbGxhcHNlRWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHJlbW92ZXMgdGhlIGNvbGxhcHNlIGFycm93IGZyb20gdGhlIHZpZXcgaWYgaXQgZXhpc3RzLlxuICAgICAgICAgICAgICAgICAgICBoZWFkaW5nQ29sbGFwc2VFbGVtZW50LmRldGFjaCgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJlZ2lvbkVsZW1lbnRzW2ldLmNsb25lZEVsZW1lbnQgPSBjbG9uZWRFbGVtZW50O1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hpbGQoY2xvbmVkRWxlbWVudCk7XG5cbiAgICAgICAgICAgICAgICBpZiAocmVnaW9uRWxlbWVudHNbaV0gaW5zdGFuY2VvZiBUYXNrTGlzdERPTU9iamVjdCkge1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZml4Q2xvbmVkQ2hlY2tMaXN0QnV0dG9ucyhyZWdpb25FbGVtZW50c1tpXSBhcyBUYXNrTGlzdERPTU9iamVjdCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2LmFwcGVuZENoaWxkKGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZUNvbHVtbkNvbnRlbnREaXZzKG11bHRpQ29sdW1uUGFyZW50OiBIVE1MRGl2RWxlbWVudCk6IEhUTUxEaXZFbGVtZW50IHtcblxuICAgICAgICBsZXQgY29udGVudERpdiA9IG11bHRpQ29sdW1uUGFyZW50LmNyZWF0ZURpdih7XG4gICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uU3R5bGVDU1MuQ29sdW1uQ29udGVudH1gXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmKHRoaXMucmVnaW9uYWxTZXR0aW5ncy5jb2x1bW5TaXplID09PSBTaW5nbGVDb2x1bW5TaXplLnNtYWxsKSB7XG4gICAgICAgICAgICBjb250ZW50RGl2LmFkZENsYXNzKGAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlNpbmdsZUNvbHVtblNtYWxsfWApXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZih0aGlzLnJlZ2lvbmFsU2V0dGluZ3MuY29sdW1uU2l6ZSA9PT0gU2luZ2xlQ29sdW1uU2l6ZS5sYXJnZSkge1xuICAgICAgICAgICAgY29udGVudERpdi5hZGRDbGFzcyhgJHtNdWx0aUNvbHVtbkxheW91dENTUy5TaW5nbGVDb2x1bW5MYXJnZX1gKVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYodGhpcy5yZWdpb25hbFNldHRpbmdzLmNvbHVtblNpemUgPT09IFNpbmdsZUNvbHVtblNpemUuZnVsbCkge1xuICAgICAgICAgICAgY29udGVudERpdi5hZGRDbGFzcyhgJHtNdWx0aUNvbHVtbkxheW91dENTUy5TaW5nbGVDb2x1bW5GdWxsfWApXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb250ZW50RGl2LmFkZENsYXNzKGAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlNpbmdsZUNvbHVtbk1lZH1gKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnREaXY7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0NlbnRlcmVkKGxheW91dDogQ29sdW1uTGF5b3V0KTogYm9vbGVhbiB7XG5cbiAgICBpZihsYXlvdXQgPT09IENvbHVtbkxheW91dC5zdGFuZGFyZCB8fFxuICAgICAgIGxheW91dCA9PT0gQ29sdW1uTGF5b3V0Lm1pZGRsZSAgIHx8XG4gICAgICAgbGF5b3V0ID09PSBDb2x1bW5MYXlvdXQuY2VudGVyICAgfHxcbiAgICAgICBsYXlvdXQgPT09IENvbHVtbkxheW91dC5zZWNvbmQgICAgKSB7XG5cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGlzTGVmdExheW91dChsYXlvdXQ6IENvbHVtbkxheW91dCk6IGJvb2xlYW4ge1xuXG4gICAgaWYobGF5b3V0ID09PSBDb2x1bW5MYXlvdXQubGVmdCB8fFxuICAgICAgIGxheW91dCA9PT0gQ29sdW1uTGF5b3V0LmZpcnN0ICkge1xuIFxuICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgIH1cbiBcbiAgICAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGlzUmlnaHRMYXlvdXQobGF5b3V0OiBDb2x1bW5MYXlvdXQpOiBib29sZWFuIHtcblxuICAgIGlmKGxheW91dCA9PT0gQ29sdW1uTGF5b3V0LnJpZ2h0IHx8XG4gICAgICAgbGF5b3V0ID09PSBDb2x1bW5MYXlvdXQudGhpcmQgfHxcbiAgICAgICBsYXlvdXQgPT09IENvbHVtbkxheW91dC5sYXN0ICkge1xuIFxuICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgIH1cbiBcbiAgICAgcmV0dXJuIGZhbHNlXG59IiwiLyoqXG4gKiBGaWxlOiAvc3JjL2RvbV9tYW5hZ2VyL3JlZ2lvbmFsX21hbmFnZXJzL2F1dG9MYXlvdXRSZWdpb25NYW5hZ2VyLnRzICAgICAgICAgKlxuICogQ3JlYXRlZCBEYXRlOiBTdW5kYXksIE1heSAyMm5kIDIwMjIsIDEwOjIzIHBtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqIEF1dGhvcjogQ2FtZXJvbiBSb2JpbnNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICogQ29weXJpZ2h0IChjKSAyMDIyIENhbWVyb24gUm9iaW5zb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqL1xuXG5pbXBvcnQgeyBET01PYmplY3QsIERPTU9iamVjdFRhZywgVGFza0xpc3RET01PYmplY3QgfSBmcm9tICcuLi9kb21PYmplY3QnO1xuaW1wb3J0IHsgTXVsdGlDb2x1bW5TZXR0aW5ncyB9IGZyb20gXCIuLi8uLi9yZWdpb25TZXR0aW5nc1wiO1xuaW1wb3J0IHsgTXVsdGlDb2x1bW5MYXlvdXRDU1MsIE11bHRpQ29sdW1uU3R5bGVDU1MgfSBmcm9tICcuLi8uLi91dGlsaXRpZXMvY3NzRGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgUmVnaW9uTWFuYWdlciB9IGZyb20gJy4vcmVnaW9uTWFuYWdlcic7XG5pbXBvcnQgeyBnZXRIZWFkaW5nQ29sbGFwc2VFbGVtZW50LCBoYXNIZWFkZXIgfSBmcm9tICdzcmMvdXRpbGl0aWVzL2VsZW1lbnRSZW5kZXJUeXBlUGFyc2VyJztcblxuZXhwb3J0IGNsYXNzIEF1dG9MYXlvdXRSZWdpb25NYW5hZ2VyIGV4dGVuZHMgUmVnaW9uTWFuYWdlciB7XG5cbiAgICBwcml2YXRlIHByZXZpb3VzQ29sdW1uSGVpZ2h0czogbnVtYmVyW10gPSBbXVxuXG4gICAgcHJpdmF0ZSBjb2x1bW5QYXJlbnQ6IEhUTUxEaXZFbGVtZW50O1xuICAgIHByaXZhdGUgY29sdW1uRGl2czogSFRNTERpdkVsZW1lbnRbXTtcblxuICAgIHB1YmxpYyByZW5kZXJSZWdpb25FbGVtZW50c1RvU2NyZWVuKCk6IHZvaWQge1xuXG4gICAgICAgICB0aGlzLnJlbmRlckNvbHVtbk1hcmtkb3duKHRoaXMucmVnaW9uUGFyZW50LCB0aGlzLmRvbUxpc3QsIHRoaXMucmVnaW9uYWxTZXR0aW5ncyk7XG4gICAgfVxuICAgIHB1YmxpYyBleHBvcnRSZWdpb25FbGVtZW50c1RvUERGKHBkZlBhcmVudEVsZW1lbnQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG5cbiAgICAgICAgLy8gRGVmYXVsdCBzZXQgc2hhZG93IHRvIG9mZiBmb3IgZXhwb3J0aW5nIFBERnNcbiAgICAgICAgbGV0IHJlbmRlclNldHRpbmdzID0gdGhpcy5yZWdpb25hbFNldHRpbmdzO1xuICAgICAgICByZW5kZXJTZXR0aW5ncy5kcmF3U2hhZG93ID0gZmFsc2U7XG4gICAgICAgIHRoaXMucmVuZGVyQ29sdW1uTWFya2Rvd24ocGRmUGFyZW50RWxlbWVudCwgdGhpcy5kb21MaXN0LnNsaWNlKCksIHJlbmRlclNldHRpbmdzKTtcbiAgICB9XG4gICAgcHVibGljIHJlbmRlclJlZ2lvbkVsZW1lbnRzVG9MaXZlUHJldmlldyhwYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuXG4gICAgICAgIHRoaXMucmVuZGVyQ29sdW1uTWFya2Rvd24ocGFyZW50RWxlbWVudCwgdGhpcy5kb21MaXN0LCB0aGlzLnJlZ2lvbmFsU2V0dGluZ3MpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIGluIHRoZSBkYXRhIGZvciB0aGUgbXVsdGktY29sdW1uIHJlZ2lvbiBhbmQgc2V0cyB1cCB0aGUgXG4gICAgICogdXNlciBkZWZpbmVkIG51bWJlciBvZiBjaGlsZHJlbiB3aXRoIHRoZSBwcm9wZXIgY3NzIGNsYXNzZXMgdG8gYmUgcmVuZGVyZWQgcHJvcGVybHkuXG4gICAgICogXG4gICAgICogQHBhcmFtIHBhcmVudEVsZW1lbnQgVGhlIGVsZW1lbnQgdGhhdCB0aGUgbXVsdGktY29sdW1uIHJlZ2lvbiB3aWxsIGJlIHJlbmRlcmVkIHVuZGVyLlxuICAgICAqIEBwYXJhbSByZWdpb25FbGVtZW50cyBUaGUgbGlzdCBvZiBET00gb2JqZWN0cyB0aGF0IHdpbGwgYmUgY29wcGllZCB1bmRlciB0aGUgcGFyZW50IG9iamVjdFxuICAgICAqIEBwYXJhbSBzZXR0aW5ncyBUaGUgc2V0dGluZ3MgdGhlIHVzZXIgaGFzIGRlZmluZWQgZm9yIHRoZSByZWdpb24uXG4gICAgICovXG4gICAgcHJpdmF0ZSByZW5kZXJDb2x1bW5NYXJrZG93bihwYXJlbnRFbGVtZW50OiBIVE1MRWxlbWVudCwgcmVnaW9uRWxlbWVudHM6IERPTU9iamVjdFtdLCBzZXR0aW5nczogTXVsdGlDb2x1bW5TZXR0aW5ncykge1xuXG4gICAgICAgIGxldCBtdWx0aUNvbHVtblBhcmVudCA9IGNyZWF0ZURpdih7XG4gICAgICAgICAgICBjbHM6IE11bHRpQ29sdW1uTGF5b3V0Q1NTLlJlZ2lvbkNvbHVtbkNvbnRhaW5lckRpdixcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuY29sdW1uUGFyZW50ID0gbXVsdGlDb2x1bW5QYXJlbnQ7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFBhc3Mgb3VyIHBhcmVudCBkaXYgYW5kIHNldHRpbmdzIHRvIHBhcnNlciB0byBjcmVhdGUgdGhlIHJlcXVpcmVkXG4gICAgICAgICAqIGNvbHVtbiBkaXZzIGFzIGNoaWxkcmVuIG9mIHRoZSBwYXJlbnQuXG4gICAgICAgICAqL1xuICAgICAgICB0aGlzLmNvbHVtbkRpdnMgPSB0aGlzLmdldENvbHVtbkNvbnRlbnREaXZzKHNldHRpbmdzLCBtdWx0aUNvbHVtblBhcmVudCk7XG5cbiAgICAgICAgaWYgKHNldHRpbmdzLmRyYXdTaGFkb3cgPT09IHRydWUpIHtcbiAgICAgICAgICAgIG11bHRpQ29sdW1uUGFyZW50LmFkZENsYXNzKE11bHRpQ29sdW1uU3R5bGVDU1MuUmVnaW9uU2hhZG93KTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1uRGl2cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHNldHRpbmdzLmRyYXdCb3JkZXIgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbkRpdnNbaV0uYWRkQ2xhc3MoTXVsdGlDb2x1bW5TdHlsZUNTUy5Db2x1bW5Cb3JkZXIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2V0dGluZ3MuZHJhd1NoYWRvdyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uRGl2c1tpXS5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtblNoYWRvdyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZW1vdmUgZXZlcnkgb3RoZXIgY2hpbGQgZnJvbSB0aGUgcGFyZW50IHNvIFxuICAgICAgICAvLyB3ZSBkb250IGVuZCB1cCB3aXRoIG11bHRpcGxlIHNldHMgb2YgZGF0YS4gVGhpcyBzaG91bGRcbiAgICAgICAgLy8gcmVhbGx5IG9ubHkgbmVlZCB0byBsb29wIG9uY2UgZm9yIGkgPSAwIGJ1dCBsb29wIGp1c3RcbiAgICAgICAgLy8gaW4gY2FzZS5cbiAgICAgICAgZm9yIChsZXQgaSA9IHBhcmVudEVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIHBhcmVudEVsZW1lbnQuY2hpbGRyZW5baV0uZGV0YWNoKCk7XG4gICAgICAgIH1cbiAgICAgICAgcGFyZW50RWxlbWVudC5hcHBlbmRDaGlsZChtdWx0aUNvbHVtblBhcmVudCk7XG5cbiAgICAgICAgdGhpcy5hcHBlbmRFbGVtZW50c1RvQ29sdW1ucyhyZWdpb25FbGVtZW50cywgdGhpcy5jb2x1bW5EaXZzLCBzZXR0aW5ncyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBlbmRFbGVtZW50c1RvQ29sdW1ucyhyZWdpb25FbGVtZW50czogRE9NT2JqZWN0W10sIGNvbHVtbkNvbnRlbnREaXZzOiBIVE1MRGl2RWxlbWVudFtdLCBzZXR0aW5nczogTXVsdGlDb2x1bW5TZXR0aW5ncykge1xuXG4gICAgICAgIGZ1bmN0aW9uIGJhbGFuY2VFbGVtZW50cygpIHtcblxuICAgICAgICAgICAgbGV0IHRvdGFsSGVpZ2h0ID0gcmVnaW9uRWxlbWVudHMubWFwKChlbDogRE9NT2JqZWN0LCBpbmRleDogbnVtYmVyKSA9PiB7IFxuXG4gICAgICAgICAgICAgICAgLy8gV2Ugb25seSB3YW50IHRvIGF0dGVtcHQgdG8gdXBkYXRlIHRoZSBlbGVtZW50UmVuZGVyZWRIZWlnaHQgaWYgaXQgaXMgMCBhbmQgaWYgaXQgaXMgbm90IGFuIHVucmVuZGVyZWQgZWxlbWVudCBzdWNoIGFzIGEgZW5kcmVnaW9uIHRhZy5cbiAgICAgICAgICAgICAgICBpZihlbC5lbGVtZW50UmVuZGVyZWRIZWlnaHQgPT09IDAgJiZcbiAgICAgICAgICAgICAgICAgICAgZWwudGFnICE9PSBET01PYmplY3RUYWcuY29sdW1uQnJlYWsgJiZcbiAgICAgICAgICAgICAgICAgICAgZWwudGFnICE9PSBET01PYmplY3RUYWcuZW5kUmVnaW9uICYmXG4gICAgICAgICAgICAgICAgICAgIGVsLnRhZyAhPT0gRE9NT2JqZWN0VGFnLnJlZ2lvblNldHRpbmdzICYmXG4gICAgICAgICAgICAgICAgICAgIGVsLnRhZyAhPT0gRE9NT2JqZWN0VGFnLnN0YXJ0UmVnaW9uKSB7XG4gICAgXG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZCBlbGVtZW50IHRvIHJlbmRlcmVkIGRpdiBzbyB3ZSBjYW4gZXh0cmFjdCB0aGUgcmVuZGVyZWQgaGVpZ2h0LlxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2c1swXS5hcHBlbmRDaGlsZChlbC5vcmlnaW5hbEVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgIGVsLmVsZW1lbnRSZW5kZXJlZEhlaWdodCA9IGVsLm9yaWdpbmFsRWxlbWVudC5jbGllbnRIZWlnaHRcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnNbMF0ucmVtb3ZlQ2hpbGQoZWwub3JpZ2luYWxFbGVtZW50KVxuICAgICAgICAgICAgICAgIH1cbiAgICBcbiAgICAgICAgICAgICAgICByZXR1cm4gZWwuZWxlbWVudFJlbmRlcmVkSGVpZ2h0IFxuICAgICAgICAgICAgfSkucmVkdWNlKChwcmV2OiBudW1iZXIsIGN1cnI6IG51bWJlcikgPT4geyByZXR1cm4gcHJldiArIGN1cnIgfSwgMCk7XG4gICAgICAgICAgICBsZXQgbWF4Q29sdW1uQ29udGVudEhlaWdodCA9IE1hdGgudHJ1bmModG90YWxIZWlnaHQgLyBzZXR0aW5ncy5udW1iZXJPZkNvbHVtbnMpO1xuXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgY29sdW1uQ29udGVudERpdnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gY29sdW1uQ29udGVudERpdnNbaV0uY2hpbGRyZW4ubGVuZ3RoIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uQ29udGVudERpdnNbaV0uY2hpbGRyZW5bal0uZGV0YWNoKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgY29sdW1uSW5kZXggPSAwO1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRDb2x1bW5IZWlnaHQgPSAwO1xuICAgICAgICAgICAgZnVuY3Rpb24gY2hlY2tTaG91bGRTd2l0Y2hDb2x1bW5zKG5leHRFbGVtZW50SGVpZ2h0OiBudW1iZXIpIHtcbiAgICBcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudENvbHVtbkhlaWdodCArIG5leHRFbGVtZW50SGVpZ2h0ID4gbWF4Q29sdW1uQ29udGVudEhlaWdodCAmJlxuICAgICAgICAgICAgICAgICAgICAoY29sdW1uSW5kZXggKyAxKSA8IHNldHRpbmdzLm51bWJlck9mQ29sdW1ucykge1xuICAgIFxuICAgICAgICAgICAgICAgICAgICBjb2x1bW5JbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q29sdW1uSGVpZ2h0ID0gMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVnaW9uRWxlbWVudHMubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgICAgIGlmIChyZWdpb25FbGVtZW50c1tpXS50YWcgPT09IERPTU9iamVjdFRhZy5ub25lIHx8XG4gICAgICAgICAgICAgICAgICAgIHJlZ2lvbkVsZW1lbnRzW2ldLnRhZyA9PT0gRE9NT2JqZWN0VGFnLmNvbHVtbkJyZWFrKSB7XG4gICAgXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBIZXJlIHdlIGNoZWNrIGlmIHdlIG5lZWQgdG8gc3dhcCB0byB0aGUgbmV4dCBjb2x1bW4gZm9yIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gICAgICAgICAgICAgICAgICAgICAqIElmIHRoZSB1c2VyIHdhbnRzIHRvIGtlZXAgaGVhZGluZ3Mgd2l0aCB0aGUgY29udGVudCBiZWxvdyBpdCB3ZSBhbHNvIG1ha2Ugc3VyZVxuICAgICAgICAgICAgICAgICAgICAgKiB0aGF0IHRoZSBsYXN0IGl0ZW0gaW4gYSBjb2x1bW4gaXMgbm90IGEgaGVhZGVyIGVsZW1lbnQgYnkgdXNpbmcgdGhlIGhlYWRlciBhbmRcbiAgICAgICAgICAgICAgICAgICAgICogdGhlIG5leHQgZWxlbWVudCdzIGhlaWdodCBhcyB0aGUgaGVpZ2h0IHZhbHVlLiBcbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIGlmKGhhc0hlYWRlcihyZWdpb25FbGVtZW50c1tpXS5vcmlnaW5hbEVsZW1lbnQpID09PSB0cnVlKSB7IC8vIFRPRE86IEFkZCB0aGlzIGFzIHNlbGVjdGFibGUgb3B0aW9uLlxuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlckFuZE5leHRFbGVtZW50SGVpZ2h0ID0gcmVnaW9uRWxlbWVudHNbaV0uZWxlbWVudFJlbmRlcmVkSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoaSA8IHJlZ2lvbkVsZW1lbnRzLmxlbmd0aCAtIDEpIHtcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJBbmROZXh0RWxlbWVudEhlaWdodCArPSByZWdpb25FbGVtZW50c1tpICsgMV0uZWxlbWVudFJlbmRlcmVkSGVpZ2h0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tTaG91bGRTd2l0Y2hDb2x1bW5zKGhlYWRlckFuZE5leHRFbGVtZW50SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrU2hvdWxkU3dpdGNoQ29sdW1ucyhyZWdpb25FbGVtZW50c1tpXS5lbGVtZW50UmVuZGVyZWRIZWlnaHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRDb2x1bW5IZWlnaHQgKz0gcmVnaW9uRWxlbWVudHNbaV0uZWxlbWVudFJlbmRlcmVkSGVpZ2h0XG4gICAgXG4gICAgXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBXZSBzdG9yZSB0aGUgZWxlbWVudHMgaW4gYSB3cmFwcGVyIGNvbnRhaW5lciB1bnRpbCB3ZSBkZXRlcm1pbmUgaWYgd2Ugd2FudCB0byBcbiAgICAgICAgICAgICAgICAgICAgICogdXNlIHRoZSBvcmlnaW5hbCBlbGVtZW50IG9yIGEgY2xvbmUgb2YgdGhlIGVsZW1lbnQuIFRoaXMgaGVscHMgdXMgYnkgYWxsb3dpbmcgXG4gICAgICAgICAgICAgICAgICAgICAqIHVzIHRvIGNyZWF0ZSBhIHZpc3VhbCBvbmx5IGNsb25lIHdoaWxlIHRoZSB1cGRhdGUgbG9vcCBtb3ZlcyB0aGUgb3JpZ2luYWwgZWxlbWVudCBcbiAgICAgICAgICAgICAgICAgICAgICogaW50byB0aGUgY29sdW1ucy5cbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIGxldCBlbGVtZW50ID0gY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsczogTXVsdGlDb2x1bW5MYXlvdXRDU1MuQ29sdW1uRHVhbEVsZW1lbnRDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICByZWdpb25FbGVtZW50c1tpXS5lbGVtZW50Q29udGFpbmVyID0gZWxlbWVudDtcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNsb25lZEVsZW1lbnQgPSByZWdpb25FbGVtZW50c1tpXS5jbG9uZWRFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBpZihyZWdpb25FbGVtZW50c1tpXS5jbG9uZWRFbGVtZW50ID09PSBudWxsKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lZEVsZW1lbnQgPSByZWdpb25FbGVtZW50c1tpXS5vcmlnaW5hbEVsZW1lbnQuY2xvbmVOb2RlKHRydWUpIGFzIEhUTUxEaXZFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRpbmdDb2xsYXBzZUVsZW1lbnQgPSBnZXRIZWFkaW5nQ29sbGFwc2VFbGVtZW50KGNsb25lZEVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYoaGVhZGluZ0NvbGxhcHNlRWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgcmVtb3ZlcyB0aGUgY29sbGFwc2UgYXJyb3cgZnJvbSB0aGUgdmlldyBpZiBpdCBleGlzdHMuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGluZ0NvbGxhcHNlRWxlbWVudC5kZXRhY2goKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICByZWdpb25FbGVtZW50c1tpXS5jbG9uZWRFbGVtZW50ID0gY2xvbmVkRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGNsb25lZEVsZW1lbnQpO1xuICAgIFxuICAgICAgICAgICAgICAgICAgICBpZiAocmVnaW9uRWxlbWVudHNbaV0gaW5zdGFuY2VvZiBUYXNrTGlzdERPTU9iamVjdCkge1xuICAgIFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5maXhDbG9uZWRDaGVja0xpc3RCdXR0b25zKHJlZ2lvbkVsZW1lbnRzW2ldIGFzIFRhc2tMaXN0RE9NT2JqZWN0LCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCAhPT0gbnVsbCAmJiBcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbkNvbnRlbnREaXZzW2NvbHVtbkluZGV4XSAmJiBcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lvbkVsZW1lbnRzW2ldLnRhZyAhPT0gRE9NT2JqZWN0VGFnLmNvbHVtbkJyZWFrKSB7XG4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW5Db250ZW50RGl2c1tjb2x1bW5JbmRleF0uYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWdpb25FbGVtZW50c1tpXS5lbGVtZW50UmVuZGVyZWRIZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogSWYgdGhlIHRhZyBpcyBhIGNvbHVtbiBicmVhayB3ZSB1cGRhdGUgdGhlIGNvbHVtbiBpbmRleCBhZnRlclxuICAgICAgICAgICAgICAgICAgICAgKiBhcHBlbmRpbmcgdGhlIGl0ZW0gdG8gdGhlIGNvbHVtbiBkaXYuIFRoaXMga2VlcHMgdGhlIG1haW4gRE9NXG4gICAgICAgICAgICAgICAgICAgICAqIGNsZWFuZXIgYnkgcmVtb3Zpbmcgb3RoZXIgaXRlbXMgYW5kIHBsYWNpbmcgdGhlbSBhbGwgd2l0aGluXG4gICAgICAgICAgICAgICAgICAgICAqIGEgcmVnaW9uIGNvbnRhaW5lci5cbiAgICAgICAgICAgICAgICAgICAgICogXG4gICAgICAgICAgICAgICAgICAgICAqIFJlbW92aW5nIHRoZSBlbmQgY29sdW1uIHRhZyBhcyBhbiBvcHRpb24gZm9yIG5vdy5cbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmIChyZWdpb25FbGVtZW50c1tpXS50YWcgPT09IERPTU9iamVjdFRhZy5jb2x1bW5CcmVhayAmJlxuICAgICAgICAgICAgICAgICAgICAvLyAgICAoY29sdW1uSW5kZXggKyAxKSA8IHNldHRpbmdzLm51bWJlck9mQ29sdW1ucykge1xuICAgIFxuICAgICAgICAgICAgICAgICAgICAvLyAgICAgY29sdW1uSW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIGN1cnJlbnRDb2x1bW5IZWlnaHQgPSAwO1xuICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEF0dGVtcHQgdG8gYmFsYW5jZWQgdGhlIGVsZW1lbnRzLiBXZSBuZWVkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgbXVsdGlwbGUgdGltZXMgYmVjYXVzZVxuICAgICAgICAgKiBvdXIgaW5pdGlhbCBiYWxhbmNlIGVzdGltYXRlIG1heSBub3QgYmUgcGVyZmVjdGx5IGJhbGFuY2VkIGR1ZSB0byBkaWZmZXJlbnQgY29sdW1uIHdpZHRocyBjYXVzaW5nIFxuICAgICAgICAgKiBlbGVtZW50cyB3aXRoaW4gdGhlbSB0byBiZSBvZiBkaWZmZXJlbnQgaGVpZ2h0cy4gVGhpcyBjYW4gY2F1c2UgdGhlIGVsZW1lbnRzIHRvIGp1bXAgYXJvdW5kIG9uIFxuICAgICAgICAgKiBzdWJzaXF1ZW50IHVwZGF0ZSBsb29wcyB3aGljaCBpcyBub3QgaWRlYWwuIEhlcmUgd2UgcmVuZGVyIHRoZSBlbGVtZW50cyB0byB0aGUgc2NyZWVuIGFuZCB1cGRhdGUgXG4gICAgICAgICAqIHRoZWlyIGhlaWdodCBhZnRlciBiZWluZyByZW5kZXJlZCBpbnRvIHRoZSBlc3RpbWF0ZWQgcG9zaXRpb24uIFxuICAgICAgICAgKiBcbiAgICAgICAgICogT25jZSBldmVyeXRoaW5nIGlzIHJlbmRlcmVkIHdlIGNoZWNrIGFsbCBvZiB0aGUgY29sdW1uIGhlaWdodHMgYWdhaW5zdCBvdXIgbGFzdCBpdGVyYXRpb24gYW5kIFxuICAgICAgICAgKiBpZiBub3RoaW5nIGhhcyBjaGFuZ2VkIHdlIGtub3cgd2UgYXJlIGJhbGFuY2VkLlxuICAgICAgICAgKiBcbiAgICAgICAgICogVGhlcmUgaXMgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IG9mIGFjY29tcGxpc2hpbmcgdGhpcyB0YXNrIGJ1dCB0aGlzIHdvcmtzIGZvciB0aGUgdGltZSBiZWluZy5cbiAgICAgICAgICovXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCA1OyBpKyspIHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgYmFsYW5jZUVsZW1lbnRzKClcblxuICAgICAgICAgICAgbGV0IGJhbGFuY2VkID0gdHJ1ZTtcbiAgICAgICAgICAgIGZvcihsZXQgaiA9IDA7IGogPCBjb2x1bW5Db250ZW50RGl2cy5sZW5ndGg7IGorKykge1xuXG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNvbHVtbiBoZWlnaHRzIGFyZSB1bmRlZmluZWQgd2Ugc2V0IGRlZmF1bHQgdG8gemVybyBzbyBub3QgdG8gZW5jb3VudGVyIGFuIGVycm9yLlxuICAgICAgICAgICAgICAgIGlmKCF0aGlzLnByZXZpb3VzQ29sdW1uSGVpZ2h0c1tqXSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzQ29sdW1uSGVpZ2h0cy5wdXNoKDApXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gaWYgdGhpcyByZW5kZXIgaGVpZ2h0IGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgcHJldmlvdXMgaGVpZ2h0IHdlIGFyZSBzdGlsbCBiYWxhbmNpbmcuXG4gICAgICAgICAgICAgICAgaWYodGhpcy5wcmV2aW91c0NvbHVtbkhlaWdodHNbal0gIT09IGNvbHVtbkNvbnRlbnREaXZzW2pdLmNsaWVudEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzQ29sdW1uSGVpZ2h0c1tqXSA9IGNvbHVtbkNvbnRlbnREaXZzW2pdLmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgICAgICBiYWxhbmNlZCA9IGZhbHNlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpZiB3ZSBtYWRlIGl0IG91dCBvZiB0aGUgbG9vcCBhbmQgYWxsIG9mIHRoZSBjb2x1bW5zIGFyZSB0aGUgc2FtZSBoZWlnaHQgYXMgbGFzdCB1cGRhdGVcbiAgICAgICAgICAgIC8vIHdlJ3JlIGJhbGFuY2VkIHNvIHdlIGNhbiBicmVhayBvdXQgb2YgdGhlIGxvb3AuXG4gICAgICAgICAgICBpZihiYWxhbmNlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVJlbmRlcmVkTWFya2Rvd24oKSB7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRvbUxpc3QubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgbGV0IGVsID0gdGhpcy5kb21MaXN0W2ldXG4gICAgICAgICAgICBsZXQgb3JpZ2luYWxDbGllbnRIZWlnaHQgPSAwO1xuICAgICAgICAgICAgaWYgKGVsLm9yaWdpbmFsRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIG9yaWdpbmFsQ2xpZW50SGVpZ2h0ID0gZWwub3JpZ2luYWxFbGVtZW50LmNsaWVudEhlaWdodFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGNsb25lZENsaWVudEhlaWdodCA9IDA7XG4gICAgICAgICAgICBpZiAoZWwuY2xvbmVkRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGNsb25lZENsaWVudEhlaWdodCA9IGVsLmNsb25lZEVsZW1lbnQuY2xpZW50SGVpZ2h0XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChvcmlnaW5hbENsaWVudEhlaWdodCA8IGNsb25lZENsaWVudEhlaWdodCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZG9tTGlzdFtpXS5lbGVtZW50UmVuZGVyZWRIZWlnaHQgPSBjbG9uZWRDbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRvbUxpc3RbaV0uZWxlbWVudFJlbmRlcmVkSGVpZ2h0ID0gb3JpZ2luYWxDbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdmFsaWRDb2x1bW5zID0gdHJ1ZTtcbiAgICAgICAgaWYodGhpcy5jb2x1bW5QYXJlbnQgIT09IG51bGwgJiYgdGhpcy5jb2x1bW5EaXZzICE9PSBudWxsICYmIHRoaXMuY29sdW1uRGl2cyAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgICB0aGlzLmNvbHVtbkRpdnMubGVuZ3RoID09PSB0aGlzLnJlZ2lvbmFsU2V0dGluZ3MubnVtYmVyT2ZDb2x1bW5zKSB7XG5cbiAgICAgICAgICAgIGxldCB0b3RhbEhlaWdodCA9IHRoaXMuZG9tTGlzdC5tYXAoKGVsOiBET01PYmplY3QsIGluZGV4OiBudW1iZXIpID0+IHsgXG5cbiAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gYXR0ZW1wdCB0byB1cGRhdGUgdGhlIGVsZW1lbnRSZW5kZXJlZEhlaWdodCBpZiBpdCBpcyAwIGFuZCBpZiBpdCBpcyBub3QgYW4gdW5yZW5kZXJlZCBlbGVtZW50IHN1Y2ggYXMgYSBlbmRyZWdpb24gdGFnLlxuICAgICAgICAgICAgICAgIGlmKGVsLmVsZW1lbnRSZW5kZXJlZEhlaWdodCA9PT0gMCAmJlxuICAgICAgICAgICAgICAgICAgICBlbC50YWcgIT09IERPTU9iamVjdFRhZy5jb2x1bW5CcmVhayAmJlxuICAgICAgICAgICAgICAgICAgICBlbC50YWcgIT09IERPTU9iamVjdFRhZy5lbmRSZWdpb24gJiZcbiAgICAgICAgICAgICAgICAgICAgZWwudGFnICE9PSBET01PYmplY3RUYWcucmVnaW9uU2V0dGluZ3MgJiZcbiAgICAgICAgICAgICAgICAgICAgZWwudGFnICE9PSBET01PYmplY3RUYWcuc3RhcnRSZWdpb24pIHtcbiAgICBcbiAgICAgICAgICAgICAgICAgICAgLy8gQWRkIGVsZW1lbnQgdG8gcmVuZGVyZWQgZGl2IHNvIHdlIGNhbiBleHRyYWN0IHRoZSByZW5kZXJlZCBoZWlnaHQuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uUGFyZW50LmFwcGVuZENoaWxkKGVsLm9yaWdpbmFsRWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgZWwuZWxlbWVudFJlbmRlcmVkSGVpZ2h0ID0gZWwub3JpZ2luYWxFbGVtZW50LmNsaWVudEhlaWdodFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtblBhcmVudC5yZW1vdmVDaGlsZChlbC5vcmlnaW5hbEVsZW1lbnQpXG4gICAgICAgICAgICAgICAgfVxuICAgIFxuICAgICAgICAgICAgICAgIHJldHVybiBlbC5lbGVtZW50UmVuZGVyZWRIZWlnaHQgXG4gICAgICAgICAgICB9KS5yZWR1Y2UoKHByZXY6IG51bWJlciwgY3VycjogbnVtYmVyKSA9PiB7IHJldHVybiBwcmV2ICsgY3VyciB9LCAwKTtcbiAgICAgICAgICAgIGxldCBtYXhDb2x1bW5Db250ZW50SGVpZ2h0ID0gTWF0aC50cnVuYyh0b3RhbEhlaWdodCAvIHRoaXMucmVnaW9uYWxTZXR0aW5ncy5udW1iZXJPZkNvbHVtbnMpO1xuXG4gICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5EaXZzLmxlbmd0aCAtIDE7IGkrKykge1xuXG4gICAgICAgICAgICAgICAgbGV0IGNvbHVtbkhlaWdodCA9IDBcbiAgICAgICAgICAgICAgICBmb3IobGV0IGogPSAwOyBqIDwgdGhpcy5jb2x1bW5EaXZzW2ldLmNoaWxkcmVuLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbHVtbkhlaWdodCArPSB0aGlzLmNvbHVtbkRpdnNbaV0uY2hpbGRyZW5bal0uY2xpZW50SGVpZ2h0XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYoY29sdW1uSGVpZ2h0ID4gbWF4Q29sdW1uQ29udGVudEhlaWdodCkge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZENvbHVtbnMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYodmFsaWRDb2x1bW5zID09PSBmYWxzZSkge1xuXG4gICAgICAgICAgICB0aGlzLnJlbmRlckNvbHVtbk1hcmtkb3duKHRoaXMucmVnaW9uUGFyZW50LCB0aGlzLmRvbUxpc3QsIHRoaXMucmVnaW9uYWxTZXR0aW5ncyk7XG4gICAgICAgIH1cblxuICAgICAgICBzdXBlci51cGRhdGVSZW5kZXJlZE1hcmtkb3duKCk7XG4gICAgfVxufVxuXG4iLCIvKipcbiAqIEZpbGU6IC9zcmMvZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvcmVnaW9uTWFuYWdlckNvbnRhaW5lci50cyAgICAgICAgICAqXG4gKiBDcmVhdGVkIERhdGU6IFN1bmRheSwgTWF5IDIybmQgMjAyMiwgNzo1MCBwbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICogQXV0aG9yOiBDYW1lcm9uIFJvYmluc29uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjIgQ2FtZXJvbiBSb2JpbnNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICovXG5cbmltcG9ydCB7IHBhcnNlQ29sdW1uU2V0dGluZ3MsIHBhcnNlU2luZ2xlQ29sdW1uU2V0dGluZ3MgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL3NldHRpbmdzUGFyc2VyXCI7XG5pbXBvcnQgeyBET01PYmplY3QgfSBmcm9tICcuLi9kb21PYmplY3QnO1xuaW1wb3J0IHsgTXVsdGlDb2x1bW5TZXR0aW5ncywgZ2V0RGVmYXVsdE11bHRpQ29sdW1uU2V0dGluZ3MgfSBmcm9tIFwiLi4vLi4vcmVnaW9uU2V0dGluZ3NcIjtcbmltcG9ydCB7IEZpbGVET01NYW5hZ2VyIH0gZnJvbSAnLi4vZG9tTWFuYWdlcic7XG5pbXBvcnQgeyBTdGFuZGFyZE11bHRpQ29sdW1uUmVnaW9uTWFuYWdlciBhcyBTdGFuZGFyZE11bHRpQ29sdW1uUmVnaW9uTWFuYWdlciB9IGZyb20gJy4vc3RhbmRhcmRNdWx0aUNvbHVtblJlZ2lvbk1hbmFnZXInO1xuaW1wb3J0IHsgU2luZ2xlQ29sdW1uUmVnaW9uTWFuYWdlciB9IGZyb20gXCIuL3NpbmdsZUNvbHVtblJlZ2lvbk1hbmFnZXJcIjtcbmltcG9ydCB7IFJlZ2lvbk1hbmFnZXIgfSBmcm9tIFwiLi9yZWdpb25NYW5hZ2VyXCI7XG5pbXBvcnQgeyBBdXRvTGF5b3V0UmVnaW9uTWFuYWdlciB9IGZyb20gJy4vYXV0b0xheW91dFJlZ2lvbk1hbmFnZXInO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgYWN0cyBhcyBhbiBhYnN0cmFjdGlvbiBmb3IgdGhlIGFjdHVhbCByZWdpb25hbCBtYW5hZ2VyLiBJdCBpcyB1c2VkIHRvIHVwZGF0ZSB0aGVcbiAqIHN1YmNsYXNzIG9mIFJlZ2lvbmFsTWFuYWdlciBkZXBlbmRpbmcgb24gdXNlciBwcmVmZXJlbmNlcyB0byBtYWtlIHJlbmRlcmluZyBtb3JlIHNpbXBsaWZpZWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWdpb25NYW5hZ2VyQ29udGFpbmVyIHtcblxuICAgIHByb3RlY3RlZCByZWdpb246IFJlZ2lvbk1hbmFnZXI7XG4gICAgY29uc3RydWN0b3IocGFyZW50RmlsZU1hbmFnZXI6IEZpbGVET01NYW5hZ2VyLCByZWdpb25LZXk6IHN0cmluZywgcm9vdEVsZW1lbnQ6IEhUTUxFbGVtZW50LCByZWdpb25QYXJlbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHRoaXMucmVnaW9uID0gbmV3IFN0YW5kYXJkTXVsdGlDb2x1bW5SZWdpb25NYW5hZ2VyKGNyZWF0ZURlZmF1bHRSZWdpb25NYW5hZ2VyRGF0YShyZWdpb25QYXJlbnQsIHBhcmVudEZpbGVNYW5hZ2VyLCByZWdpb25LZXksIHJvb3RFbGVtZW50KSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJlZ2lvbigpOiBSZWdpb25NYW5hZ2VyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRSZWdpb25TZXR0aW5ncyhzZXR0aW5nc1RleHQ6IHN0cmluZyk6IFJlZ2lvbk1hbmFnZXIge1xuXG4gICAgICAgIGxldCByZWdpb25hbFNldHRpbmdzID0gcGFyc2VDb2x1bW5TZXR0aW5ncyhzZXR0aW5nc1RleHQpO1xuICAgICAgICBpZiAocmVnaW9uYWxTZXR0aW5ncy5udW1iZXJPZkNvbHVtbnMgPT09IDEpIHtcblxuICAgICAgICAgICAgcmVnaW9uYWxTZXR0aW5ncyA9IHBhcnNlU2luZ2xlQ29sdW1uU2V0dGluZ3Moc2V0dGluZ3NUZXh0LCByZWdpb25hbFNldHRpbmdzKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZ2lvbi5zZXRSZWdpb25hbFNldHRpbmdzKHJlZ2lvbmFsU2V0dGluZ3MpO1xuXG4gICAgICAgIGlmIChyZWdpb25hbFNldHRpbmdzLm51bWJlck9mQ29sdW1ucyA9PT0gMSkge1xuXG4gICAgICAgICAgICBpZih0aGlzLnJlZ2lvbiBpbnN0YW5jZW9mIFNpbmdsZUNvbHVtblJlZ2lvbk1hbmFnZXIgPT09IGZhbHNlKSB7XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmRlYnVnKFwiQ29udmVydGluZyByZWdpb24gdG8gc2luZ2xlIGNvbHVtbi5cIilcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnZlcnRUb1NpbmdsZUNvbHVtbigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYocmVnaW9uYWxTZXR0aW5ncy5hdXRvTGF5b3V0ID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIGlmKHRoaXMucmVnaW9uIGluc3RhbmNlb2YgQXV0b0xheW91dFJlZ2lvbk1hbmFnZXIgPT09IGZhbHNlKSB7XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmRlYnVnKFwiQ29udmVydGluZyByZWdpb24gdG8gYXV0byBsYXlvdXQuXCIpXG4gICAgICAgICAgICAgICAgdGhpcy5jb252ZXJ0VG9BdXRvTGF5b3V0KClcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChyZWdpb25hbFNldHRpbmdzLm51bWJlck9mQ29sdW1ucyA+PSAyKSB7XG5cbiAgICAgICAgICAgIGlmKHRoaXMucmVnaW9uIGluc3RhbmNlb2YgU3RhbmRhcmRNdWx0aUNvbHVtblJlZ2lvbk1hbmFnZXIgPT09IGZhbHNlKSB7XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmRlYnVnKFwiQ29udmVydGluZyByZWdpb24gdG8gc3RhbmRhcmQgbXVsdGktY29sdW1uXCIpXG4gICAgICAgICAgICAgICAgdGhpcy5jb252ZXJ0VG9TdGFuZGFyZE11bHRpQ29sdW1uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5yZWdpb247XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb252ZXJ0VG9TaW5nbGVDb2x1bW4oKTogU2luZ2xlQ29sdW1uUmVnaW9uTWFuYWdlciB7XG5cbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLnJlZ2lvbi5nZXRSZWdpb25EYXRhKCk7XG4gICAgICAgIHRoaXMucmVnaW9uID0gbmV3IFNpbmdsZUNvbHVtblJlZ2lvbk1hbmFnZXIoZGF0YSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaW9uIGFzIFNpbmdsZUNvbHVtblJlZ2lvbk1hbmFnZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb252ZXJ0VG9TdGFuZGFyZE11bHRpQ29sdW1uKCk6IFN0YW5kYXJkTXVsdGlDb2x1bW5SZWdpb25NYW5hZ2VyIHtcblxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMucmVnaW9uLmdldFJlZ2lvbkRhdGEoKTtcbiAgICAgICAgdGhpcy5yZWdpb24gPSBuZXcgU3RhbmRhcmRNdWx0aUNvbHVtblJlZ2lvbk1hbmFnZXIoZGF0YSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVnaW9uIGFzIFN0YW5kYXJkTXVsdGlDb2x1bW5SZWdpb25NYW5hZ2VyO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udmVydFRvQXV0b0xheW91dCgpOiBBdXRvTGF5b3V0UmVnaW9uTWFuYWdlciB7XG5cbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLnJlZ2lvbi5nZXRSZWdpb25EYXRhKCk7XG4gICAgICAgIHRoaXMucmVnaW9uID0gbmV3IEF1dG9MYXlvdXRSZWdpb25NYW5hZ2VyKGRhdGEpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnJlZ2lvbiBhcyBBdXRvTGF5b3V0UmVnaW9uTWFuYWdlcjtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRSZWdpb25NYW5hZ2VyRGF0YShyZWdpb25QYXJlbnQ6IEhUTUxFbGVtZW50LCBmaWxlTWFuYWdlcjogRmlsZURPTU1hbmFnZXIsIHJlZ2lvbktleTogc3RyaW5nLCByb290RWxlbWVudDogSFRNTEVsZW1lbnQpOiBSZWdpb25NYW5hZ2VyRGF0YSB7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBkb21MaXN0OiBbXSxcbiAgICAgICAgZG9tT2JqZWN0TWFwOiBuZXcgTWFwKCksXG4gICAgICAgIHJlZ2lvblBhcmVudDogcmVnaW9uUGFyZW50LFxuICAgICAgICBmaWxlTWFuYWdlcjogZmlsZU1hbmFnZXIsXG4gICAgICAgIHJlZ2lvbmFsU2V0dGluZ3M6IGdldERlZmF1bHRNdWx0aUNvbHVtblNldHRpbmdzKCksXG4gICAgICAgIHJlZ2lvbktleTogcmVnaW9uS2V5LFxuICAgICAgICByb290RWxlbWVudDogcm9vdEVsZW1lbnRcbiAgICB9O1xufVxuXG5leHBvcnQgdHlwZSBSZWdpb25NYW5hZ2VyRGF0YSA9IHtcbiAgICBkb21MaXN0OiBET01PYmplY3RbXTtcbiAgICBkb21PYmplY3RNYXA6IE1hcDxzdHJpbmcsIERPTU9iamVjdD47XG4gICAgcmVnaW9uUGFyZW50OiBIVE1MRWxlbWVudDtcblxuICAgIGZpbGVNYW5hZ2VyOiBGaWxlRE9NTWFuYWdlcjtcbiAgICByZWdpb25hbFNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzO1xuXG4gICAgcmVnaW9uS2V5OiBzdHJpbmc7XG4gICAgcm9vdEVsZW1lbnQ6IEhUTUxFbGVtZW50O1xufTtcbiIsIi8qXG4gKiBGaWxlOiBtdWx0aS1jb2x1bW4tbWFya2Rvd24vc3JjL2RvbU1hbmFnZXIudHNcbiAqIENyZWF0ZWQgRGF0ZTogU2F0dXJkYXksIEphbnVhcnkgMzB0aCAyMDIyLCAzOjE2OjMyIHBtXG4gKiBBdXRob3I6IENhbWVyb24gUm9iaW5zb25cbiAqIFxuICogQ29weXJpZ2h0IChjKSAyMDIyIENhbWVyb24gUm9iaW5zb25cbiAqL1xuXG5pbXBvcnQgeyBSZWdpb25NYW5hZ2VyIH0gZnJvbSBcIi4vcmVnaW9uYWxfbWFuYWdlcnMvcmVnaW9uTWFuYWdlclwiO1xuaW1wb3J0IHsgUmVnaW9uTWFuYWdlckNvbnRhaW5lciB9IGZyb20gXCIuL3JlZ2lvbmFsX21hbmFnZXJzL3JlZ2lvbk1hbmFnZXJDb250YWluZXJcIjtcblxuLyoqXG4gKiBUaGlzIGNsYXNzIGhhbmRsZXMgdGhlIGdsb2JhbCBtYW5hZ2VycyBrZWVwaW5nIHRyYWNrIG9mIGFsbCBvcGVuIGZpbGVzIHRoYXRcbiAqIGNvbnRhaW4gTUNNLVJlZ2lvbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBHbG9iYWxET01NYW5hZ2VyIHtcbiAgICBtYW5hZ2VyczogTWFwPHN0cmluZywgRmlsZURPTU1hbmFnZXI+O1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubWFuYWdlcnMgPSBuZXcgTWFwKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUZpbGVNYW5hZ2VyQ2FsbGJhY2soa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgaWYodGhpcy5tYW5hZ2Vycy5oYXMoa2V5KSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2Vycy5kZWxldGUoa2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRGaWxlTWFuYWdlcihrZXk6IHN0cmluZykge1xuXG4gICAgICAgIGxldCBmaWxlTWFuYWdlciA9IG51bGw7XG4gICAgICAgIGlmKHRoaXMubWFuYWdlcnMuaGFzKGtleSkgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGZpbGVNYW5hZ2VyID0gdGhpcy5tYW5hZ2Vycy5nZXQoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZpbGVNYW5hZ2VyID0gY3JlYXRlRmlsZURPTU1hbmFnZXIodGhpcywga2V5KTtcbiAgICAgICAgICAgIHRoaXMubWFuYWdlcnMuc2V0KGtleSwgZmlsZU1hbmFnZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbGVNYW5hZ2VyO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBbGxGaWxlTWFuYWdlcnMoKSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMubWFuYWdlcnMudmFsdWVzKCkpO1xuICAgIH1cbn1cblxuZXhwb3J0IHR5cGUgRmlsZURPTU1hbmFnZXIgPSB7XG4gICAgcmVnaW9uTWFwOiBNYXA8c3RyaW5nLCBSZWdpb25NYW5hZ2VyQ29udGFpbmVyPixcbiAgICBoYXNTdGFydFRhZzogYm9vbGVhbixcbiAgICBjcmVhdGVSZWdpb25hbE1hbmFnZXI6IChyZWdpb25LZXk6IHN0cmluZywgcm9vdEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBlcnJvckVsZW1lbnQ6IEhUTUxFbGVtZW50LCByZW5kZXJSZWdpb25FbGVtZW50OiBIVE1MRWxlbWVudCkgPT4gUmVnaW9uTWFuYWdlclxuICAgIGdldFJlZ2lvbmFsQ29udGFpbmVyOiAocmVnaW9uS2V5OiBzdHJpbmcpID0+IFJlZ2lvbk1hbmFnZXJDb250YWluZXIgfCBudWxsLFxuICAgIGdldEFsbFJlZ2lvbmFsTWFuYWdlcnM6ICgpID0+IFJlZ2lvbk1hbmFnZXJbXSxcbiAgICByZW1vdmVSZWdpb246IChyZWdpb25LZXk6IHN0cmluZykgPT4gdm9pZCxcbiAgICBzZXRIYXNTdGFydFRhZzogKCkgPT4gdm9pZCxcbiAgICBnZXRIYXNTdGFydFRhZzogKCkgPT4gYm9vbGVhbixcbiAgICBnZXROdW1iZXJPZlJlZ2lvbnM6ICgpID0+IG51bWJlcixcbiAgICBjaGVja0tleUV4aXN0czogKGNoZWNrS2V5OiBzdHJpbmcpID0+IGJvb2xlYW5cbn1cbmZ1bmN0aW9uIGNyZWF0ZUZpbGVET01NYW5hZ2VyKHBhcmVudE1hbmFnZXI6IEdsb2JhbERPTU1hbmFnZXIsIGZpbGVLZXk6IHN0cmluZyk6IEZpbGVET01NYW5hZ2VyIHtcbiAgICBcbiAgICBsZXQgcmVnaW9uTWFwOiBNYXA8c3RyaW5nLCBSZWdpb25NYW5hZ2VyQ29udGFpbmVyPiA9IG5ldyBNYXAoKTtcbiAgICBsZXQgaGFzU3RhcnRUYWc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGZ1bmN0aW9uIHJlbW92ZVJlZ2lvbihyZWdpb25LZXk6IHN0cmluZyk6IHZvaWQge1xuXG4gICAgICAgIGxldCByZWdpb25Db250YWluZXIgPSByZWdpb25NYXAuZ2V0KHJlZ2lvbktleSk7XG4gICAgICAgIGlmKHJlZ2lvbkNvbnRhaW5lcikge1xuICAgICAgICAgICAgbGV0IHJlZ2lvbmFsTWFuYWdlciA9IHJlZ2lvbkNvbnRhaW5lci5nZXRSZWdpb24oKTtcbiAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlci5kaXNwbGF5T3JpZ2luYWxFbGVtZW50cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVnaW9uTWFwLmRlbGV0ZShyZWdpb25LZXkpO1xuICAgICAgICBcbiAgICAgICAgaWYocmVnaW9uTWFwLnNpemUgPT09IDApIHtcbiAgICAgICAgICAgIHBhcmVudE1hbmFnZXIucmVtb3ZlRmlsZU1hbmFnZXJDYWxsYmFjayhmaWxlS2V5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNyZWF0ZVJlZ2lvbmFsTWFuYWdlcihyZWdpb25LZXk6IHN0cmluZywgcm9vdEVsZW1lbnQ6IEhUTUxFbGVtZW50LCBlcnJvckVsZW1lbnQ6IEhUTUxFbGVtZW50LCByZW5kZXJSZWdpb25FbGVtZW50OiBIVE1MRWxlbWVudCk6IFJlZ2lvbk1hbmFnZXIge1xuXG4gICAgICAgIC8vVE9ETzogVXNlIHRoZSBlcnJvciBlbGVtZW50IHdoZW5ldmVyIHRoZXJlIGlzIGFuIGVycm9yLlxuXG4gICAgICAgIGxldCByZWdvbmFsQ29udGFpbmVyID0gbmV3IFJlZ2lvbk1hbmFnZXJDb250YWluZXIodGhpcywgcmVnaW9uS2V5LCByb290RWxlbWVudCwgcmVuZGVyUmVnaW9uRWxlbWVudCk7XG4gICAgICAgIHJlZ2lvbk1hcC5zZXQocmVnaW9uS2V5LCByZWdvbmFsQ29udGFpbmVyKTtcbiAgICAgICAgcmV0dXJuIHJlZ29uYWxDb250YWluZXIuZ2V0UmVnaW9uKCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0UmVnaW9uYWxDb250YWluZXIocmVnaW9uS2V5OiBzdHJpbmcpOiBSZWdpb25NYW5hZ2VyQ29udGFpbmVyIHwgbnVsbCB7XG5cbiAgICAgICAgbGV0IHJlZ29uYWxNYW5hZ2VyID0gbnVsbDtcbiAgICAgICAgaWYocmVnaW9uTWFwLmhhcyhyZWdpb25LZXkpID09PSB0cnVlKSB7XG4gICAgICAgICAgICByZWdvbmFsTWFuYWdlciA9IHJlZ2lvbk1hcC5nZXQocmVnaW9uS2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZWdvbmFsTWFuYWdlcjtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRBbGxSZWdpb25hbE1hbmFnZXJzKCk6IFJlZ2lvbk1hbmFnZXJbXSB7XG5cbiAgICAgICAgbGV0IGNvbnRhaW5lcnMgPSBBcnJheS5mcm9tKHJlZ2lvbk1hcC52YWx1ZXMoKSlcbiAgICAgICAgbGV0IHJlZ2lvbnM6IFJlZ2lvbk1hbmFnZXJbXSA9IGNvbnRhaW5lcnMubWFwKChjdXJyKSA9PiB7IHJldHVybiBjdXJyLmdldFJlZ2lvbigpIH0pO1xuICAgICAgICByZXR1cm4gcmVnaW9ucztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBzZXRIYXNTdGFydFRhZygpIHtcbiAgICAgICAgaGFzU3RhcnRUYWcgPSB0cnVlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEhhc1N0YXJ0VGFnKCkge1xuICAgICAgICByZXR1cm4gaGFzU3RhcnRUYWc7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZ2V0TnVtYmVyT2ZSZWdpb25zKCkge1xuICAgICAgICByZXR1cm4gcmVnaW9uTWFwLnNpemVcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjaGVja0tleUV4aXN0cyhjaGVja0tleTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiByZWdpb25NYXAuaGFzKGNoZWNrS2V5KTtcbiAgICB9XG5cbiAgICByZXR1cm4geyByZWdpb25NYXA6IHJlZ2lvbk1hcCwgXG4gICAgICAgIGhhc1N0YXJ0VGFnOiBoYXNTdGFydFRhZywgIFxuICAgICAgICBjcmVhdGVSZWdpb25hbE1hbmFnZXI6IGNyZWF0ZVJlZ2lvbmFsTWFuYWdlciwgXG4gICAgICAgIGdldFJlZ2lvbmFsQ29udGFpbmVyOiBnZXRSZWdpb25hbENvbnRhaW5lcixcbiAgICAgICAgZ2V0QWxsUmVnaW9uYWxNYW5hZ2VyczogZ2V0QWxsUmVnaW9uYWxNYW5hZ2VycyxcbiAgICAgICAgcmVtb3ZlUmVnaW9uOiByZW1vdmVSZWdpb24sIFxuICAgICAgICBzZXRIYXNTdGFydFRhZzogc2V0SGFzU3RhcnRUYWcsIFxuICAgICAgICBnZXRIYXNTdGFydFRhZzogZ2V0SGFzU3RhcnRUYWcsXG4gICAgICAgIGdldE51bWJlck9mUmVnaW9uczogZ2V0TnVtYmVyT2ZSZWdpb25zLFxuICAgICAgICBjaGVja0tleUV4aXN0czogY2hlY2tLZXlFeGlzdHNcbiAgICB9XG59IiwiLypcbiAqIEZpbGVuYW1lOiBtdWx0aS1jb2x1bW4tbWFya2Rvd24vc3JjL2xpdmVfcHJldmlldy9NdWx0aUNvbHVtbk1hcmtkb3duX1dpZGdldC50c1xuICogQ3JlYXRlZCBEYXRlOiBUdWVzZGF5LCBBdWd1c3QgMTZ0aCAyMDIyLCA0OjM4OjQzIHBtXG4gKiBBdXRob3I6IENhbWVyb24gUm9iaW5zb25cbiAqIFxuICogQ29weXJpZ2h0IChjKSAyMDIyIENhbWVyb24gUm9iaW5zb25cbiAqL1xuXG5pbXBvcnQgeyBNYXJrZG93blJlbmRlckNoaWxkLCBNYXJrZG93blJlbmRlcmVyLCBURmlsZSwgV29ya3NwYWNlTGVhZiB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgV2lkZ2V0VHlwZSB9IGZyb20gXCJAY29kZW1pcnJvci92aWV3XCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0TXVsdGlDb2x1bW5TZXR0aW5ncywgTXVsdGlDb2x1bW5TZXR0aW5ncyB9IGZyb20gXCIuLi9yZWdpb25TZXR0aW5nc1wiO1xuaW1wb3J0IHsgZmluZFNldHRpbmdzQ29kZWJsb2NrLCBmaW5kU3RhcnRDb2RlYmxvY2sgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3RleHRQYXJzZXJcIjtcbmltcG9ydCB7IHBhcnNlQ29sdW1uU2V0dGluZ3MsIHBhcnNlU2luZ2xlQ29sdW1uU2V0dGluZ3MgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3NldHRpbmdzUGFyc2VyXCI7XG5pbXBvcnQgeyBTdGFuZGFyZE11bHRpQ29sdW1uUmVnaW9uTWFuYWdlciB9IGZyb20gXCIuLi9kb21fbWFuYWdlci9yZWdpb25hbF9tYW5hZ2Vycy9zdGFuZGFyZE11bHRpQ29sdW1uUmVnaW9uTWFuYWdlclwiO1xuaW1wb3J0IHsgUmVnaW9uTWFuYWdlckRhdGEgfSBmcm9tIFwiLi4vZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvcmVnaW9uTWFuYWdlckNvbnRhaW5lclwiO1xuaW1wb3J0IHsgZ2V0VUlEIH0gZnJvbSBcIi4uL3V0aWxpdGllcy91dGlsc1wiO1xuaW1wb3J0IHsgRE9NT2JqZWN0IH0gZnJvbSBcIi4uL2RvbV9tYW5hZ2VyL2RvbU9iamVjdFwiO1xuaW1wb3J0IHsgUmVnaW9uTWFuYWdlciB9IGZyb20gXCIuLi9kb21fbWFuYWdlci9yZWdpb25hbF9tYW5hZ2Vycy9yZWdpb25NYW5hZ2VyXCI7XG5pbXBvcnQgeyBTaW5nbGVDb2x1bW5SZWdpb25NYW5hZ2VyIH0gZnJvbSBcIi4uL2RvbV9tYW5hZ2VyL3JlZ2lvbmFsX21hbmFnZXJzL3NpbmdsZUNvbHVtblJlZ2lvbk1hbmFnZXJcIjtcbmltcG9ydCB7IEF1dG9MYXlvdXRSZWdpb25NYW5hZ2VyIH0gZnJvbSBcIi4uL2RvbV9tYW5hZ2VyL3JlZ2lvbmFsX21hbmFnZXJzL2F1dG9MYXlvdXRSZWdpb25NYW5hZ2VyXCI7XG5cbmV4cG9ydCBjbGFzcyBNdWx0aUNvbHVtbk1hcmtkb3duX0xpdmVQcmV2aWV3X1dpZGdldCBleHRlbmRzIFdpZGdldFR5cGUge1xuXG4gICAgY29udGVudERhdGE6IHN0cmluZztcbiAgICB0ZW1wUGFyZW50OiBIVE1MRGl2RWxlbWVudDtcbiAgICBkb21MaXN0OiBET01PYmplY3RbXSA9IFtdO1xuICAgIHNldHRpbmdzVGV4dDogc3RyaW5nO1xuICAgIHJlZ2lvblNldHRpbmdzOiBNdWx0aUNvbHVtblNldHRpbmdzID0gZ2V0RGVmYXVsdE11bHRpQ29sdW1uU2V0dGluZ3MoKTtcbiAgICByZWdpb25NYW5hZ2VyOiBSZWdpb25NYW5hZ2VyO1xuXG4gICAgY29uc3RydWN0b3IoY29udGVudERhdGE6IHN0cmluZykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmNvbnRlbnREYXRhID0gY29udGVudERhdGE7XG5cbiAgICAgICAgLy8gRmluZCB0aGUgc2V0dGluZ3MgZGVmaW5lZCBpbiB0aGUgY29udGVudCwgaWYgaXQgZXhpc3RzLlxuICAgICAgICAvLyBJZiB0aGUgc2V0dGluZ3MgY29kZWJsb2NrIGlzbnQgZGVmaW5lZCBhdHRlbXB0IHRvIGdldCB0aGUgcmVnaW9uIGNvZGVibG9jayB0eXBlLlxuICAgICAgICBsZXQgc2V0dGluZ3NTdGFydERhdGEgPSBmaW5kU2V0dGluZ3NDb2RlYmxvY2sodGhpcy5jb250ZW50RGF0YSk7XG4gICAgICAgIGlmKHNldHRpbmdzU3RhcnREYXRhLmZvdW5kID09PSBmYWxzZSkge1xuICAgICAgICAgICAgc2V0dGluZ3NTdGFydERhdGEgPSBmaW5kU3RhcnRDb2RlYmxvY2sodGhpcy5jb250ZW50RGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNldHRpbmdzU3RhcnREYXRhLmZvdW5kID09PSB0cnVlKSB7XG5cbiAgICAgICAgICAgIHRoaXMuc2V0dGluZ3NUZXh0ID0gdGhpcy5jb250ZW50RGF0YS5zbGljZShzZXR0aW5nc1N0YXJ0RGF0YS5zdGFydFBvc2l0aW9uLCBzZXR0aW5nc1N0YXJ0RGF0YS5lbmRQb3NpdGlvbik7XG4gICAgICAgICAgICB0aGlzLmNvbnRlbnREYXRhID0gdGhpcy5jb250ZW50RGF0YS5yZXBsYWNlKHRoaXMuc2V0dGluZ3NUZXh0LCBcIlwiKTtcblxuICAgICAgICAgICAgLy8gUGFyc2UgdGhlIHNldHRpbmdzLCB1cGRhdGluZyB0aGUgZGVmYXVsdCBzZXR0aW5ncy5cbiAgICAgICAgICAgIHRoaXMucmVnaW9uU2V0dGluZ3MgPSBwYXJzZUNvbHVtblNldHRpbmdzKHRoaXMuc2V0dGluZ3NUZXh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFJlbmRlciB0aGUgbWFya2Rvd24gY29udGVudCB0byBvdXIgdGVtcCBwYXJlbnQgZWxlbWVudC5cbiAgICAgICAgdGhpcy50ZW1wUGFyZW50ID0gY3JlYXRlRGl2KCk7XG4gICAgICAgIGxldCBlbGVtZW50TWFya2Rvd25SZW5kZXJlciA9IG5ldyBNYXJrZG93blJlbmRlckNoaWxkKHRoaXMudGVtcFBhcmVudCk7XG4gICAgICAgIE1hcmtkb3duUmVuZGVyZXIucmVuZGVyTWFya2Rvd24odGhpcy5jb250ZW50RGF0YSwgdGhpcy50ZW1wUGFyZW50LCBcIlwiLCBlbGVtZW50TWFya2Rvd25SZW5kZXJlcik7XG5cbiAgICAgICAgLy8gdGFrZSBhbGwgZWxlbWVudHMsIGluIG9yZGVyLCBhbmQgY3JlYXRlIG91ciBET00gbGlzdC5cbiAgICAgICAgbGV0IGFyciA9IEFycmF5LmZyb20odGhpcy50ZW1wUGFyZW50LmNoaWxkcmVuKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcblxuICAgICAgICAgICAgbGV0IGVsID0gdGhpcy5maXhFbGVtZW50UmVuZGVyKGFycltpXSk7XG4gICAgICAgICAgICB0aGlzLmRvbUxpc3QucHVzaChuZXcgRE9NT2JqZWN0KGVsIGFzIEhUTUxFbGVtZW50LCBbXCJcIl0pKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCB1cCB0aGUgcmVnaW9uIG1hbmFnZXIgZGF0YSBiZWZvcmUgdGhlbiBjcmVhdGluZyBvdXIgcmVnaW9uIG1hbmFnZXIuXG4gICAgICAgIGxldCByZWdpb25EYXRhOiBSZWdpb25NYW5hZ2VyRGF0YSA9IHtcbiAgICAgICAgICAgIGRvbUxpc3Q6IHRoaXMuZG9tTGlzdCxcbiAgICAgICAgICAgIGRvbU9iamVjdE1hcDogbmV3IE1hcDxzdHJpbmcsIERPTU9iamVjdD4oKSxcbiAgICAgICAgICAgIHJlZ2lvblBhcmVudDogY3JlYXRlRGl2KCksXG4gICAgICAgICAgICBmaWxlTWFuYWdlcjogbnVsbCxcbiAgICAgICAgICAgIHJlZ2lvbmFsU2V0dGluZ3M6IHRoaXMucmVnaW9uU2V0dGluZ3MsXG4gICAgICAgICAgICByZWdpb25LZXk6IGdldFVJRCgpLFxuICAgICAgICAgICAgcm9vdEVsZW1lbnQ6IGNyZWF0ZURpdigpXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gRmluYWxseSBzZXR1cCB0aGUgdHlwZSBvZiByZWdpb24gbWFuYWdlciByZXF1aXJlZC5cbiAgICAgICAgaWYgKHRoaXMucmVnaW9uU2V0dGluZ3MubnVtYmVyT2ZDb2x1bW5zID09PSAxKSB7XG4gICAgICAgICAgICB0aGlzLnJlZ2lvblNldHRpbmdzID0gcGFyc2VTaW5nbGVDb2x1bW5TZXR0aW5ncyh0aGlzLnNldHRpbmdzVGV4dCwgdGhpcy5yZWdpb25TZXR0aW5ncyk7XG4gICAgICAgICAgICB0aGlzLnJlZ2lvbk1hbmFnZXIgPSBuZXcgU2luZ2xlQ29sdW1uUmVnaW9uTWFuYWdlcihyZWdpb25EYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLnJlZ2lvblNldHRpbmdzLmF1dG9MYXlvdXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHRoaXMucmVnaW9uTWFuYWdlciA9IG5ldyBBdXRvTGF5b3V0UmVnaW9uTWFuYWdlcihyZWdpb25EYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVnaW9uTWFuYWdlciA9IG5ldyBTdGFuZGFyZE11bHRpQ29sdW1uUmVnaW9uTWFuYWdlcihyZWdpb25EYXRhKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZpeEVsZW1lbnRSZW5kZXIoZWw6IEVsZW1lbnQpOiBFbGVtZW50IHtcblxuICAgICAgICBsZXQgZml4ZWRFbCA9IGZpeEltYWdlUmVuZGVyKGVsKTtcbiAgICAgICAgcmV0dXJuIGZpeGVkRWw7XG4gICAgfVxuXG4gICAgdG9ET00oKSB7XG4gICAgICAgIC8vIENyZWF0ZSBvdXIgZWxlbWVudCB0byBob2xkIGFsbCBvZiB0aGUgbGl2ZSBwcmV2aWV3IGVsZW1lbnRzLlxuICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBlbC5jbGFzc05hbWUgPSBcIm1jbS1jbS1wcmV2aWV3XCI7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZvciBzaXR1YXRpb25zIHdoZXJlIHdlIG5lZWQgdG8ga25vdyB0aGUgcmVuZGVyZWQgaGVpZ2h0LCBBdXRvTGF5b3V0LCBcbiAgICAgICAgICogdGhlIGVsZW1lbnQgbXVzdCBiZSByZW5kZXJlZCBvbnRvIHRoZSBzY3JlZW4gdG8gZ2V0IHRoZSBpbmZvLCBldmVuIGlmIFxuICAgICAgICAgKiBvbmx5IGZvciBhIG1vbWVudC4gSGVyZSB3ZSBhdHRlbXB0IHRvIGdldCBhIGxlYWYgZnJvbSB0aGUgYXBwIHNvIHdlIFxuICAgICAgICAgKiBjYW4gYnJpZWZseSBhcHBlbmQgb3VyIGVsZW1lbnQsIGNoZWNrIGFueSBkYXRhIGlmIHJlcXVpcmVkLCBhbmQgdGhlblxuICAgICAgICAgKiByZW1vdmUgaXQuXG4gICAgICAgICAqL1xuICAgICAgICBsZXQgbGVhZjogV29ya3NwYWNlTGVhZiA9IG51bGw7XG4gICAgICAgIGlmIChhcHApIHtcbiAgICAgICAgICAgIGxldCBsZWF2ZXMgPSBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZShcIm1hcmtkb3duXCIpO1xuICAgICAgICAgICAgaWYgKGxlYXZlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgbGVhZiA9IGxlYXZlc1swXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnJlZ2lvbk1hbmFnZXIpIHtcblxuICAgICAgICAgICAgaWYgKGxlYWYpIHtcbiAgICAgICAgICAgICAgICBsZWFmLnZpZXcuY29udGFpbmVyRWwuYXBwZW5kQ2hpbGQoZWwpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlZ2lvbk1hbmFnZXIucmVuZGVyUmVnaW9uRWxlbWVudHNUb0xpdmVQcmV2aWV3KGVsKTtcblxuICAgICAgICAgICAgaWYgKGxlYWYpIHtcbiAgICAgICAgICAgICAgICBsZWFmLnZpZXcuY29udGFpbmVyRWwucmVtb3ZlQ2hpbGQoZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGVsO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE11bHRpQ29sdW1uTWFya2Rvd25fRGVmaW5lZFNldHRpbmdzX0xpdmVQcmV2aWV3X1dpZGdldCBleHRlbmRzIFdpZGdldFR5cGUge1xuXG4gICAgY29udGVudERhdGE6IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGNvbnRlbnREYXRhOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoKTtcblxuICAgICAgICB0aGlzLmNvbnRlbnREYXRhID0gY29udGVudERhdGE7XG4gICAgfVxuXG4gICAgdG9ET00oKSB7XG4gICAgICAgIC8vIENyZWF0ZSBvdXIgZWxlbWVudCB0byBob2xkIGFsbCBvZiB0aGUgbGl2ZSBwcmV2aWV3IGVsZW1lbnRzLlxuICAgICAgICBsZXQgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBlbC5jbGFzc05hbWUgPSBcIm1jbS1jbS1zZXR0aW5ncy1wcmV2aWV3XCI7XG5cbiAgICAgICAgbGV0IGxhYmVsRGl2ID0gZWwuY3JlYXRlRGl2KClcbiAgICAgICAgbGV0IGxhYmVsID0gbGFiZWxEaXYuY3JlYXRlU3Bhbih7XG4gICAgICAgICAgICBjbHM6IFwibWNtLWNvbC1zZXR0aW5ncy1wcmV2aWV3XCJcbiAgICAgICAgfSlcbiAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSBcIkNvbHVtbiBTZXR0aW5nczpcIjtcblxuICAgICAgICBsZXQgbGlzdCA9IGVsLmNyZWF0ZUVsKFwidWxcIilcbiAgICAgICAgbGV0IGxpbmVzID0gdGhpcy5jb250ZW50RGF0YS5zcGxpdChcIlxcblwiKVxuICAgICAgICBmb3IobGV0IGkgPSAxOyBpIDwgbGluZXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgaXRlbSA9IGxpc3QuY3JlYXRlRWwoXCJsaVwiKVxuICAgICAgICAgICAgaXRlbS50ZXh0Q29udGVudCA9IGxpbmVzW2ldXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWw7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBmaXhJbWFnZVJlbmRlcihlbDogRWxlbWVudCk6IEVsZW1lbnQge1xuXG4gICAgbGV0IGZpeGVkRWwgPSBlbDtcbiAgICBsZXQgaXRlbXMgPSBlbC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiaW50ZXJuYWwtZW1iZWRcIik7XG4gICAgaWYoaXRlbXMubGVuZ3RoID09PSAxKSB7XG5cbiAgICAgICAgbGV0IGVtYmVkID0gaXRlbXNbMF07XG4gICAgICAgIGxldCBhbHQgPSBlbWJlZC5nZXRBdHRyKFwiYWx0XCIpXG4gICAgICAgIGxldCBzcmMgPSBlbWJlZC5nZXRBdHRyKFwic3JjXCIpXG5cbiAgICAgICAgbGV0IGFURmlsZXMgPSBhcHAudmF1bHQuZ2V0QWxsTG9hZGVkRmlsZXMoKVxuICAgICAgICBsZXQgcmVzb3VyY2VQYXRoID0gXCJcIlxuICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgYVRGaWxlcy5sZW5ndGg7IGkrKykge1xuXG4gICAgICAgICAgICBsZXQgYWJzdHJhY3RGaWxlID0gYVRGaWxlc1tpXTtcbiAgICAgICAgICAgIGlmKGFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGaWxlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGZpbGUgPSBhYnN0cmFjdEZpbGUgYXMgVEZpbGU7XG5cbiAgICAgICAgICAgIGlmKGZpbGUubmFtZSA9PT0gc3JjICYmIGhhc0ltYWdlRXh0ZW5zaW9uKGZpbGUuZXh0ZW5zaW9uKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJlc291cmNlUGF0aCA9IGFwcC52YXVsdC5nZXRSZXNvdXJjZVBhdGgoZmlsZSlcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGFsdCA9PT0gc3JjICYmIHJlc291cmNlUGF0aCAhPT0gXCJcIikge1xuXG4gICAgICAgICAgICBmaXhlZEVsID0gY3JlYXRlRGl2KHtcbiAgICAgICAgICAgICAgICBjbHM6IFwiaW50ZXJuYWwtZW1iZWQgaW1hZ2UtZW1iZWQgaXMtbG9hZGVkXCIsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgZml4ZWRFbC5zZXRBdHRyKFwiYWx0XCIsIGFsdCk7XG5cbiAgICAgICAgICAgIGxldCBpbWFnZSA9IGZpeGVkRWwuY3JlYXRlRWwoXCJpbWdcIik7XG4gICAgICAgICAgICBpbWFnZS5zZXRBdHRyKFwic3JjXCIsIHJlc291cmNlUGF0aCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZml4ZWRFbDtcbn1cblxuZnVuY3Rpb24gaGFzSW1hZ2VFeHRlbnNpb24oZXh0ZW5zaW9uOiBzdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGV4dGVuc2lvbiA9IGV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpO1xuICAgIHN3aXRjaChleHRlbnNpb24pIHtcbiAgICAgICAgY2FzZSBcInBuZ1wiOlxuICAgICAgICBjYXNlIFwianBnXCI6XG4gICAgICAgIGNhc2UgXCJqcGVnXCI6XG4gICAgICAgIGNhc2UgXCJnaWZcIjpcbiAgICAgICAgY2FzZSBcImJtcFwiOlxuICAgICAgICBjYXNlIFwic3ZnXCI6XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufSIsIi8qXG4gKiBGaWxlbmFtZTogbXVsdGktY29sdW1uLW1hcmtkb3duL3NyYy9saXZlX3ByZXZpZXcvY202X2xpdmVQcmV2aWV3LnRzXG4gKiBDcmVhdGVkIERhdGU6IE1vbmRheSwgQXVndXN0IDFzdCAyMDIyLCAxOjUxOjE2IHBtXG4gKiBBdXRob3I6IENhbWVyb24gUm9iaW5zb25cbiAqIFxuICogQ29weXJpZ2h0IChjKSAyMDIyIENhbWVyb24gUm9iaW5zb25cbiAqL1xuXG5pbXBvcnQgeyBFZGl0b3JTdGF0ZSwgRXh0ZW5zaW9uLCBMaW5lLCBSYW5nZVNldEJ1aWxkZXIsIFN0YXRlRmllbGQsIFRyYW5zYWN0aW9uIH0gZnJvbSBcIkBjb2RlbWlycm9yL3N0YXRlXCI7XG5pbXBvcnQgeyBEZWNvcmF0aW9uLCBEZWNvcmF0aW9uU2V0LCBFZGl0b3JWaWV3IH0gZnJvbSBcIkBjb2RlbWlycm9yL3ZpZXdcIjtcbmltcG9ydCB7IHN5bnRheFRyZWUsIHRva2VuQ2xhc3NOb2RlUHJvcCB9IGZyb20gXCJAY29kZW1pcnJvci9sYW5ndWFnZVwiO1xuaW1wb3J0IHsgY29udGFpbnNSZWdpb25TdGFydCwgZmluZEVuZFRhZywgZmluZFNldHRpbmdzQ29kZWJsb2NrLCBmaW5kU3RhcnRDb2RlYmxvY2ssIGZpbmRTdGFydFRhZyB9IGZyb20gXCIuLi91dGlsaXRpZXMvdGV4dFBhcnNlclwiO1xuaW1wb3J0IHsgTXVsdGlDb2x1bW5NYXJrZG93bl9EZWZpbmVkU2V0dGluZ3NfTGl2ZVByZXZpZXdfV2lkZ2V0LCBNdWx0aUNvbHVtbk1hcmtkb3duX0xpdmVQcmV2aWV3X1dpZGdldCB9IGZyb20gXCIuL21jbV9saXZlUHJldmlld193aWRnZXRcIjtcbmltcG9ydCB7IGVkaXRvclZpZXdGaWVsZCB9IGZyb20gXCJvYnNpZGlhblwiO1xuXG5leHBvcnQgY29uc3QgbXVsdGlDb2x1bW5NYXJrZG93bl9TdGF0ZUZpZWxkID0gU3RhdGVGaWVsZC5kZWZpbmU8RGVjb3JhdGlvblNldD4oe1xuXHRjcmVhdGUoc3RhdGUpOiBEZWNvcmF0aW9uU2V0IHtcblx0XHRyZXR1cm4gRGVjb3JhdGlvbi5ub25lO1xuXHR9LFxuXHR1cGRhdGUob2xkU3RhdGU6IERlY29yYXRpb25TZXQsIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbik6IERlY29yYXRpb25TZXQge1xuXHRcdGNvbnN0IGJ1aWxkZXIgPSBuZXcgUmFuZ2VTZXRCdWlsZGVyPERlY29yYXRpb24+KCk7XG4gICAgICAgIGxldCBnZW5lcmF0ZWQgPSBmYWxzZTtcblxuXHRcdHN5bnRheFRyZWUodHJhbnNhY3Rpb24uc3RhdGUpLml0ZXJhdGUoe1xuXHRcdFx0ZW50ZXIobm9kZSkge1xuXG4gICAgICAgICAgICAgICAgLy8gV2Ugb25seSB3YW50IHRvIHJ1biB0aGUgZ2VuZXJhdGlvbiBvbmNlIHBlciBzdGF0ZSBjaGFuZ2UuIElmXG4gICAgICAgICAgICAgICAgLy8gYSBwcmV2aW91cyBub2RlIGhhcyBzdWNlc3NmdWxseSBnZW5lcmF0ZWQgcmVnaW9ucyB3ZSBpZ25vcmUgYWxsXG4gICAgICAgICAgICAgICAgLy8gb3RoZXIgbm9kZXMgaW4gdGhlIHN0YXRlLlxuICAgICAgICAgICAgICAgIGlmKGdlbmVyYXRlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYoaXNFZGl0b3JJbkxpdmVQcmV2aWV3KHRyYW5zYWN0aW9uLnN0YXRlKSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmRlYnVnKFwiVXNlciBkaXNhYmxlZCBsaXZlIHByZXZpZXcuXCIpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cblx0XHRcdFx0Ly8gV2Ugd2FudCB0byBydW4gb24gdGhlIHdob2xlIGZpbGUgc28gd2UgZG9udCBqdXN0IGxvb2sgZm9yIGEgc2luZ2xlIHRva2VuLlxuXHRcdFx0XHRjb25zdCB0b2tlblByb3BzID0gbm9kZS50eXBlLnByb3A8c3RyaW5nPih0b2tlbkNsYXNzTm9kZVByb3ApO1xuXHRcdFx0XHRpZiAodG9rZW5Qcm9wcyAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0LyoqXG5cdFx0XHRcdCAqIFdoZW4gd2UgaGF2ZSB0aGUgd2hpbGUgZmlsZSB3ZSB0aGVuIGdldCB0aGUgZW50aXJlIGRvYyB0ZXh0IGFuZCBjaGVjayBpZiBpdCBcblx0XHRcdFx0ICogY29udGFpbnMgYSBNQ00gcmVnaW9uIHNvIHdlIGtub3cgdG8gYnJlYWsgb3Igbm90LlxuXHRcdFx0XHQgKi9cbiAgICAgICAgICAgICAgICBsZXQgZG9jTGVuZ3RoID0gdHJhbnNhY3Rpb24uc3RhdGUuZG9jLmxlbmd0aFxuICAgICAgICAgICAgICAgIGxldCBkb2NUZXh0ID0gdHJhbnNhY3Rpb24uc3RhdGUuZG9jLnNsaWNlU3RyaW5nKDAsIGRvY0xlbmd0aCk7XG5cdFx0XHRcdGlmIChjb250YWluc1JlZ2lvblN0YXJ0KGRvY1RleHQpID09PSBmYWxzZSkge1xuXHRcdFx0XHRcdC8vIGNvbnNvbGUuZGVidWcoXCJObyBzdGFydCB0YWcgaW4gZG9jdW1lbnQuXCIpXG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Ly8gV2Ugd2FudCB0byBrbm93IHdoZXJlIHRoZSB1c2VyJ3MgY3Vyc29yIGlzLCBpdCBjYW4gYmVcblx0XHRcdFx0Ly8gc2VsZWN0aW5nIG11bHRpcGxlIHJlZ2lvbnMgb2YgdGV4dCBhcyB3ZWxsIHNvIHdlIG5lZWQgdG8ga25vd1xuXHRcdFx0XHQvLyBhbGwgbG9jYXRpb25zLiBVc2VkIHRvIGtub3cgaWYgd2Ugc2hvdWxkIHJlbmRlciByZWdpb24gYXMgdGV4dCBvciBhcyBwcmV2aWV3LlxuXHRcdFx0XHRsZXQgcmFuZ2VzID0gZ2V0Q3Vyc29yTGluZUxvY2F0aW9ucygpO1xuXG5cdFx0XHRcdC8vIFNldHVwIG91ciBsb29wIHRvIHJlbmRlciB0aGUgcmVnaW9ucyBhcyBNQ00uIFxuXHRcdFx0XHRsZXQgd29ya2luZ0ZpbGVUZXh0ID0gZG9jVGV4dDtcblxuXHRcdFx0XHRsZXQgbG9vcEluZGV4ID0gMDtcblx0XHRcdFx0bGV0IHN0YXJ0SW5kZXhPZmZzZXQgPSAwO1xuXHRcdFx0XHR3aGlsZSAodHJ1ZSkge1xuXG5cdFx0XHRcdFx0Ly8gSWYgdGhlcmUgYXJlIG11bHRpcGxlIGtpbmRzIG9mIHN0YXJ0IGJsb2NrcywgdGhlIG9sZCB3YXkgb2YgcGFyc2luZyB3b3VsZCBjYXVzZSBpc3N1ZXMuXG5cdFx0XHRcdFx0Ly8gTm93IHNlYXJjaCBmb3IgYm90aCBraW5kcyBhbmQgZGV0ZXJtaW5lIHdoYXQgdG8gZG8gYWZ0ZXIgc2VhcmNoLlxuXHRcdFx0XHRcdGxldCBzdGFydFRhZ0RhdGFfY29kZWJsb2NrU3RhcnQgPSBmaW5kU3RhcnRDb2RlYmxvY2sod29ya2luZ0ZpbGVUZXh0KTtcblx0XHRcdFx0XHRsZXQgc3RhcnRUYWdEYXRhX2RlcHJlY2lhdGVkU3RhcnQgPSBmaW5kU3RhcnRUYWcod29ya2luZ0ZpbGVUZXh0KTtcblxuXHRcdFx0XHRcdC8vIERlZmF1bHQgdG8gY29kZWJsb2NrIFN0eWxlLiBUaGVuIGNoZWNrLCBpZiBjb2RlYmxvY2sgd2FzIG5vdCBmb3VuZCBhbmQgZGVwcmVjaWF0ZWQgU3RhcnQgd2FzLCBzZXQgc3RhcnRUYWcgdG8gZGVwcmVjaWF0ZWQuXG5cdFx0XHRcdFx0bGV0IHN0YXJ0VGFnRGF0YSA9IHN0YXJ0VGFnRGF0YV9jb2RlYmxvY2tTdGFydDtcblx0XHRcdFx0XHRpZihzdGFydFRhZ0RhdGFfY29kZWJsb2NrU3RhcnQuZm91bmQgPT09IGZhbHNlICYmIHN0YXJ0VGFnRGF0YV9kZXByZWNpYXRlZFN0YXJ0LmZvdW5kID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdHN0YXJ0VGFnRGF0YSA9IHN0YXJ0VGFnRGF0YV9kZXByZWNpYXRlZFN0YXJ0XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgaWYoc3RhcnRUYWdEYXRhX2NvZGVibG9ja1N0YXJ0LmZvdW5kID09PSB0cnVlICYmIHN0YXJ0VGFnRGF0YV9kZXByZWNpYXRlZFN0YXJ0LmZvdW5kID09PSB0cnVlKSB7XG5cblx0XHRcdFx0XHRcdC8vIElmIGJvdGgga2luZHMgd2VyZSBmb3VuZCB3ZSB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIG9uZSBjbG9zZXIgdG8gdGhlIHRvcCBvZiB0aGUgZG9jdW1lbnQgYXMgQ002IHJlcXVpcmVzIHdlIHdvcmsgaW4gb3JkZXIuXG5cdFx0XHRcdFx0XHRpZiAoc3RhcnRUYWdEYXRhX2NvZGVibG9ja1N0YXJ0LnN0YXJ0UG9zaXRpb24gPiBzdGFydFRhZ0RhdGFfZGVwcmVjaWF0ZWRTdGFydC5zdGFydFBvc2l0aW9uKSB7XG5cblx0XHRcdFx0XHRcdFx0c3RhcnRUYWdEYXRhID0gc3RhcnRUYWdEYXRhX2RlcHJlY2lhdGVkU3RhcnRcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFxuXHRcdFx0XHRcdGlmKHN0YXJ0VGFnRGF0YS5mb3VuZCA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8vIFNlYXJjaCBmb3IgdGhlIGZpcnN0IGVuZCB0YWcgYWZ0ZXIgYSBzdGFydCBibG9jay4gKE5vIHJlY3Vyc2l2ZSBjb2x1bW5zLilcblx0XHRcdFx0XHRsZXQgZW5kVGFnRGF0YSA9IGZpbmRFbmRUYWcod29ya2luZ0ZpbGVUZXh0LnNsaWNlKHN0YXJ0VGFnRGF0YS5zdGFydFBvc2l0aW9uKSk7XG5cdFx0XHRcdFx0aWYoZW5kVGFnRGF0YS5mb3VuZCA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdC8qKlxuXHRcdFx0XHRcdCAqIEZvciB0aGUgcmVnaW9uIHdlIGZvdW5kIGdldCB0aGUgc3RhcnQgYW5kIGVuZCBwb3NpdGlvbiBvZiB0aGUgdGFncyBzbyB3ZSBcblx0XHRcdFx0XHQgKiBjYW4gc2xpY2UgaXQgb3V0IG9mIHRoZSBkb2N1bWVudC5cblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHRsZXQgc3RhcnRJbmRleCA9IHN0YXJ0SW5kZXhPZmZzZXQgKyBzdGFydFRhZ0RhdGEuc3RhcnRQb3NpdGlvblxuXHRcdFx0XHRcdGxldCBlbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBlbmRUYWdEYXRhLnN0YXJ0UG9zaXRpb24gKyBlbmRUYWdEYXRhLm1hdGNoTGVuZ3RoIC8vIFdpdGhvdXQgdGhlIG1hdGNoTGVuZ3RoIHdpbGwgbGVhdmUgdGhlIGVuZCB0YWcgb24gdGhlIHNjcmVlbi5cblxuXHRcdFx0XHRcdC8vIFRoaXMgdGV4dCBpcyB0aGUgZW50aXJlIHJlZ2lvbiBkYXRhIGluY2x1ZGluZyB0aGUgc3RhcnQgYW5kIGVuZCB0YWdzLlxuXHRcdFx0XHRcdGxldCBlbGVtZW50VGV4dCA9IGRvY1RleHQuc2xpY2Uoc3RhcnRJbmRleCwgZW5kSW5kZXgpXG5cblx0XHRcdFx0XHQvKipcblx0XHRcdFx0XHQgKiBVcGRhdGUgb3VyIHN0YXJ0IG9mZnNldCBhbmQgdGhlIHdvcmtpbmcgdGV4dCBvZiB0aGUgZmlsZSBzbyBvdXIgbmV4dCBcblx0XHRcdFx0XHQgKiBpdGVyYXRpb24ga25vd3Mgd2hlcmUgd2UgbGVmdCBvZmZcblx0XHRcdFx0XHQgKi9cblx0XHRcdFx0XHRzdGFydEluZGV4T2Zmc2V0ID0gZW5kSW5kZXhcblx0XHRcdFx0XHR3b3JraW5nRmlsZVRleHQgPSBkb2NUZXh0LnNsaWNlKGVuZEluZGV4KTtcblxuXG5cdFx0XHRcdFx0Ly8gSGVyZSB3ZSBjaGVjayBpZiB0aGUgY3Vyc29yIGlzIGluIHRoaXMgc3BlY2lmaWMgcmVnaW9uLlxuXHRcdFx0XHRcdGxldCBjdXJzb3JJblJlZ2lvbiA9IGNoZWNrQ3Vyc29ySW5SZWdpb24oc3RhcnRJbmRleCwgZW5kSW5kZXgsIHJhbmdlcyk7XG5cdFx0XHRcdFx0aWYoY3Vyc29ySW5SZWdpb24gPT09IHRydWUpIHtcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0Ly8gSWYgdGhlIGN1cnNvciBpcyB3aXRoaW4gdGhlIHJlZ2lvbiB3ZSB0aGVuIG5lZWQgdG8ga25vdyBpZlxuXHRcdFx0XHRcdFx0Ly8gaXQgaXMgd2l0aGluIG91ciBzZXR0aW5ncyBibG9jayAoaWYgaXQgZXhpc3RzLilcblx0XHRcdFx0XHRcdGxldCBzZXR0aW5nc1N0YXJ0RGF0YSA9IGZpbmRTdGFydENvZGVibG9jayhlbGVtZW50VGV4dCk7XG5cdFx0XHRcdFx0XHRpZihzZXR0aW5nc1N0YXJ0RGF0YS5mb3VuZCA9PT0gZmFsc2UpIHtcblx0XHRcdFx0XHRcdFx0c2V0dGluZ3NTdGFydERhdGEgPSBmaW5kU2V0dGluZ3NDb2RlYmxvY2soZWxlbWVudFRleHQpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRpZihzZXR0aW5nc1N0YXJ0RGF0YS5mb3VuZCA9PT0gdHJ1ZSkge1xuXG5cdFx0XHRcdFx0XHRcdC8vIFNpbmNlIHRoZSBzZXR0aW5ncyBibG9jayBleGlzdHMgY2hlY2sgaWYgdGhlIGN1cnNvciBpcyB3aXRoaW4gdGhhdCByZWdpb24uXG5cdFx0XHRcdFx0XHRcdGxldCBjb2RlYmxvY2tTdGFydEluZGV4ID0gc3RhcnRJbmRleCArIHNldHRpbmdzU3RhcnREYXRhLnN0YXJ0UG9zaXRpb247XG5cdFx0XHRcdFx0XHRcdGxldCBjb2RlYmxvY2tFbmRJbmRleCA9IHN0YXJ0SW5kZXggKyBzZXR0aW5nc1N0YXJ0RGF0YS5lbmRQb3NpdGlvbjtcblx0XHRcdFx0XHRcdFx0bGV0IHNldHRpbmdzVGV4dCA9IGRvY1RleHQuc2xpY2UoY29kZWJsb2NrU3RhcnRJbmRleCwgY29kZWJsb2NrRW5kSW5kZXggKVxuXG5cdFx0XHRcdFx0XHRcdGxldCBjdXJzb3JJbkNvZGVibG9jayA9IGNoZWNrQ3Vyc29ySW5SZWdpb24oY29kZWJsb2NrU3RhcnRJbmRleCwgY29kZWJsb2NrRW5kSW5kZXgsIHJhbmdlcyk7XG5cdFx0XHRcdFx0XHRcdGlmKGN1cnNvckluQ29kZWJsb2NrID09PSBmYWxzZSkge1xuXHRcblx0XHRcdFx0XHRcdFx0XHQvLyBJZiB0aGUgY3Vyc29yIGlzIG5vdCB3aXRoaW4gdGhlIHJlZ2lvbiB3ZSBwYXNzIHRoZSBkYXRhIHRvIHRoZVxuXHRcdFx0XHRcdFx0XHRcdC8vIHNldHRpbmdzIHZpZXcgc28gaXQgY2FuIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVnaW9uLlxuXHRcdFx0XHRcdFx0XHRcdGJ1aWxkZXIuYWRkKFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29kZWJsb2NrU3RhcnRJbmRleCxcblx0XHRcdFx0XHRcdFx0XHRcdGNvZGVibG9ja0VuZEluZGV4ICsgMSxcblx0XHRcdFx0XHRcdFx0XHRcdERlY29yYXRpb24ucmVwbGFjZSh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpZGdldDogbmV3IE11bHRpQ29sdW1uTWFya2Rvd25fRGVmaW5lZFNldHRpbmdzX0xpdmVQcmV2aWV3X1dpZGdldChzZXR0aW5nc1RleHQpLFxuXHRcdFx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXG5cdFx0XHRcdFx0XHQvLyBBdCB0aGlzIHBvaW50IGlmIHRoZSBjdXJzb3IgaXNudCBpbiB0aGUgcmVnaW9uIHdlIHBhc3MgdGhlIGRhdGEgdG8gdGhlXG5cdFx0XHRcdFx0XHQvLyBlbGVtZW50IHRvIGJlIHJlbmRlcmVkLlxuXHRcdFx0XHRcdFx0YnVpbGRlci5hZGQoXG5cdFx0XHRcdFx0XHRcdHN0YXJ0SW5kZXgsXG5cdFx0XHRcdFx0XHRcdGVuZEluZGV4LFxuXHRcdFx0XHRcdFx0XHREZWNvcmF0aW9uLnJlcGxhY2Uoe1xuXHRcdFx0XHRcdFx0XHRcdHdpZGdldDogbmV3IE11bHRpQ29sdW1uTWFya2Rvd25fTGl2ZVByZXZpZXdfV2lkZ2V0KGVsZW1lbnRUZXh0KSxcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGdlbmVyYXRlZCA9IHRydWU7XG5cblx0XHRcdFx0XHQvLyBJbmZpbml0ZSBsb29wIHByb3RlY3Rpb24uXG5cdFx0XHRcdFx0bG9vcEluZGV4Kys7XG5cdFx0XHRcdFx0aWYobG9vcEluZGV4ID4gMTAwKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLndhcm4oXCJQb3RlbnRpYWwgaXNzdWUgd2l0aCByZW5kZXJpbmcgTXVsdGktQ29sdW1uIE1hcmtkb3duIGxpdmUgcHJldmlldyByZWdpb25zLiBJZiBwcm9ibGVtIHBlcnNpc3RzIHBsZWFzZSBmaWxlIGEgYnVnIHJlcG9ydCB3aXRoIGRldmVsb3Blci5cIilcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHR9KTtcbiBcblx0XHRyZXR1cm4gYnVpbGRlci5maW5pc2goKTtcblxuXHRcdGZ1bmN0aW9uIGdldEN1cnNvckxpbmVMb2NhdGlvbnMoKTogeyBsaW5lOiBMaW5lLCBwb3NpdGlvbjogbnVtYmVyIH1bXSB7XG5cblx0XHRcdGxldCByYW5nZXM6IHsgbGluZTogTGluZSwgcG9zaXRpb246IG51bWJlciB9W10gPSBbXTtcblxuXHRcdFx0aWYgKHRyYW5zYWN0aW9uLnN0YXRlLnNlbGVjdGlvbi5yYW5nZXMpIHtcblxuXHRcdFx0XHRyYW5nZXMgPSB0cmFuc2FjdGlvbi5zdGF0ZS5zZWxlY3Rpb24ucmFuZ2VzLmZpbHRlcigocmFuZ2UpID0+IHtcblxuXHRcdFx0XHRcdHJldHVybiByYW5nZS5lbXB0eTtcblx0XHRcdFx0fSkubWFwKChyYW5nZSkgPT4ge1xuXG5cdFx0XHRcdFx0bGV0IGxpbmUgPSB0cmFuc2FjdGlvbi5zdGF0ZS5kb2MubGluZUF0KHJhbmdlLmhlYWQpO1xuXHRcdFx0XHRcdGxldCB0ZXh0ID0gYCR7bGluZS5udW1iZXJ9OiR7cmFuZ2UuaGVhZCAtIGxpbmUuZnJvbX1gO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdGxpbmU6IGxpbmUsXG5cdFx0XHRcdFx0XHRwb3NpdGlvbjogcmFuZ2UuaGVhZFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiByYW5nZXM7XG5cdFx0fVxuXG4gICAgICAgIGZ1bmN0aW9uIHZhbHVlSXNJblJhbmdlKHZhbHVlOiBudW1iZXIsIG1pblZhbDogbnVtYmVyLCBtYXhWYWw6IG51bWJlciwgaW5jbHVzaXZlOiBib29sZWFuID0gdHJ1ZSkge1xuXG4gICAgICAgICAgICBpZihpbmNsdXNpdmUgPT09IHRydWUgJiYgKHZhbHVlID09PSBtaW5WYWwgfHwgdmFsdWUgPT09IG1heFZhbCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG1pblZhbCA8IHZhbHVlICYmIHZhbHVlIDwgbWF4VmFsKSB7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cblx0XHRmdW5jdGlvbiBjaGVja0N1cnNvckluUmVnaW9uKHN0YXJ0SW5kZXg6IG51bWJlcixcblx0XHRcdFx0XHRcdFx0XHRlbmRJbmRleDogbnVtYmVyLCBcblx0XHRcdFx0XHRcdFx0XHRyYW5nZXM6IHsgbGluZTogTGluZSwgcG9zaXRpb246IG51bWJlciB9W10gKTogYm9vbGVhbiB7XG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgcmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG5cblx0XHRcdFx0Ly8gVE9ETzogTWF5YmUgbG9vayBpbnRvIGxpbWl0aW5nIHRoaXMgdG8gdGhlIHNlY29uZCBhbmQgc2Vjb25kIHRvIGxhc3QgbGluZVxuXHRcdFx0XHQvLyBvZiB0aGUgcmVnaW9uIGFzIGNsaWNraW5nIHJpZ2h0IGF0IHRoZSB0b3Agb3IgYm90dG9tIG9mIHRoZSByZWdpb25cblx0XHRcdFx0Ly8gc3dhcHMgaXQgdG8gdW5yZW5kZXJlZC5cblx0XHRcdFx0bGV0IHJhbmdlID0gcmFuZ2VzW2ldO1xuXHRcdFx0XHRpZih2YWx1ZUlzSW5SYW5nZShyYW5nZS5wb3NpdGlvbiwgc3RhcnRJbmRleCwgZW5kSW5kZXgpID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYodHJhbnNhY3Rpb24uc3RhdGUuc2VsZWN0aW9uKXtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0cmFuc2FjdGlvbi5zdGF0ZS5zZWxlY3Rpb24ucmFuZ2VzLmxlbmd0aDsgaSsrKSB7XG5cblx0XHRcdFx0XHRsZXQgcmFuZ2UgPSB0cmFuc2FjdGlvbi5zdGF0ZS5zZWxlY3Rpb24ucmFuZ2VzW2ldO1xuXG5cdFx0XHRcdFx0Ly8gSWYgZWl0aGVyIHRoZSBzdGFydCBvciBlbmQgb2YgdGhlIHNlbGVjdGlvbiBpcyB3aXRoaW4gdGhlXG5cdFx0XHRcdFx0Ly8gcmVnaW9uIHJhbmdlIHdlIGRvIG5vdCByZW5kZXIgbGl2ZSBwcmV2aWV3LlxuXHRcdFx0XHRcdGlmKHZhbHVlSXNJblJhbmdlKHJhbmdlLmZyb20sIHN0YXJ0SW5kZXgsIGVuZEluZGV4KSB8fCBcblx0XHRcdFx0XHQgICB2YWx1ZUlzSW5SYW5nZShyYW5nZS50bywgc3RhcnRJbmRleCwgZW5kSW5kZXgpKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHQvLyAvLyBPciBpZiB0aGUgZW50aXJlIHJlZ2lvbiBpcyB3aXRoaW4gdGhlIHNlbGVjdGlvbiByYW5nZVxuXHRcdFx0XHRcdC8vIHdlIGRvIG5vdCByZW5kZXIgdGhlIGxpdmUgcHJldmlldy5cblx0XHRcdFx0XHRpZih2YWx1ZUlzSW5SYW5nZShzdGFydEluZGV4LCByYW5nZS5mcm9tLCByYW5nZS50bykgJiYgXG5cdFx0XHRcdFx0ICAgdmFsdWVJc0luUmFuZ2UoZW5kSW5kZXgsIHJhbmdlLmZyb20sIHJhbmdlLnRvKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH0sXG5cdHByb3ZpZGUoZmllbGQ6IFN0YXRlRmllbGQ8RGVjb3JhdGlvblNldD4pOiBFeHRlbnNpb24ge1xuXHRcdHJldHVybiBFZGl0b3JWaWV3LmRlY29yYXRpb25zLmZyb20oZmllbGQpO1xuXHR9LFxufSk7XG5cbmZ1bmN0aW9uIGlzRWRpdG9ySW5MaXZlUHJldmlldyhzdGF0ZTogRWRpdG9yU3RhdGUpOiBib29sZWFuIHtcblx0XG5cdGxldCBtZFZpZXcgPSBzdGF0ZS5maWVsZChlZGl0b3JWaWV3RmllbGQpO1xuXHRsZXQgdmlld1N0YXRlID0gbWRWaWV3LmxlYWYuZ2V0Vmlld1N0YXRlKCk7XG5cblx0bGV0IHN0YXRlRGF0YSA9IG51bGw7XG5cdGlmKHZpZXdTdGF0ZS5zdGF0ZSkge1xuXHRcdHN0YXRlRGF0YSA9IHZpZXdTdGF0ZS5zdGF0ZTtcblx0fVxuXG5cdHJldHVybiAoXG5cdFx0c3RhdGVEYXRhICYmIHN0YXRlRGF0YS5tb2RlID09IFwic291cmNlXCIgJiYgc3RhdGVEYXRhLnNvdXJjZSA9PSB0cnVlXG5cdCk7XG59IiwiLypcclxuICogRmlsZTogbXVsdGktY29sdW1uLW1hcmtkb3duL3NyYy9tYWluLnRzXHJcbiAqIENyZWF0ZWQgRGF0ZTogVHVlc2RheSwgT2N0b2JlciA1dGggMjAyMSwgMTowOSBwbVxyXG4gKiBBdXRob3I6IENhbWVyb24gUm9iaW5zb25cclxuICogXHJcbiAqIENvcHlyaWdodCAoYykgMjAyMiBDYW1lcm9uIFJvYmluc29uXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgTm90aWNlLCBQbHVnaW4sICBNYXJrZG93blJlbmRlckNoaWxkLCBNYXJrZG93blJlbmRlcmVyLCBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0ICogYXMgbXVsdGlDb2x1bW5QYXJzZXIgZnJvbSAnLi91dGlsaXRpZXMvdGV4dFBhcnNlcic7XHJcbmltcG9ydCB7IEZpbGVET01NYW5hZ2VyLCBHbG9iYWxET01NYW5hZ2VyIH0gZnJvbSAnLi9kb21fbWFuYWdlci9kb21NYW5hZ2VyJztcclxuaW1wb3J0IHsgTXVsdGlDb2x1bW5SZW5kZXJEYXRhIH0gZnJvbSBcIi4vZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvcmVnaW9uTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBSZWdpb25NYW5hZ2VyIH0gZnJvbSBcIi4vZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvcmVnaW9uTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBSZWdpb25NYW5hZ2VyQ29udGFpbmVyIH0gZnJvbSBcIi4vZG9tX21hbmFnZXIvcmVnaW9uYWxfbWFuYWdlcnMvcmVnaW9uTWFuYWdlckNvbnRhaW5lclwiO1xyXG5pbXBvcnQgeyBET01PYmplY3QsIERPTU9iamVjdFRhZywgVGFza0xpc3RET01PYmplY3QgfSBmcm9tICcuL2RvbV9tYW5hZ2VyL2RvbU9iamVjdCc7XHJcbmltcG9ydCB7IGZpbGVTdGlsbEluVmlldywgZ2V0RmlsZUxlYWYsIGdldExlYWZTb3VyY2VNb2RlLCBnZXRVSUQgfSBmcm9tICcuL3V0aWxpdGllcy91dGlscyc7XHJcbmltcG9ydCB7IE11bHRpQ29sdW1uTGF5b3V0Q1NTLCBNdWx0aUNvbHVtblN0eWxlQ1NTIH0gZnJvbSAnLi91dGlsaXRpZXMvY3NzRGVmaW5pdGlvbnMnO1xyXG5pbXBvcnQgeyBFbGVtZW50UmVuZGVyVHlwZSB9IGZyb20gJy4vdXRpbGl0aWVzL2VsZW1lbnRSZW5kZXJUeXBlUGFyc2VyJztcclxuaW1wb3J0IHsgbXVsdGlDb2x1bW5NYXJrZG93bl9TdGF0ZUZpZWxkIH0gZnJvbSAnLi9saXZlX3ByZXZpZXcvY202X2xpdmVQcmV2aWV3JztcclxuaW1wb3J0IHsgcGFyc2VTdGFydFJlZ2lvbkNvZGVCbG9ja0lEIH0gZnJvbSAnLi91dGlsaXRpZXMvc2V0dGluZ3NQYXJzZXInO1xyXG5cclxuY29uc3QgQ09ERUJMT0NLX1NUQVJUX1NUUlMgPSBbXHJcbiAgICBcInN0YXJ0LW11bHRpLWNvbHVtblwiLFxyXG4gICAgXCJtdWx0aS1jb2x1bW4tc3RhcnRcIlxyXG5dXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE11bHRpQ29sdW1uTWFya2Rvd24gZXh0ZW5kcyBQbHVnaW4ge1xyXG5cclxuICAgIGdsb2JhbE1hbmFnZXI6IEdsb2JhbERPTU1hbmFnZXIgPSBuZXcgR2xvYmFsRE9NTWFuYWdlcigpO1xyXG5cclxuXHRhc3luYyBvbmxvYWQoKSB7XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiTG9hZGluZyBtdWx0aS1jb2x1bW4gbWFya2Rvd25cIik7XHJcbiAgICAgICAgdGhpcy5nbG9iYWxNYW5hZ2VyID0gbmV3IEdsb2JhbERPTU1hbmFnZXIoKTtcclxuXHJcbiAgICAgICAgdGhpcy5yZWdpc3RlckVkaXRvckV4dGVuc2lvbihtdWx0aUNvbHVtbk1hcmtkb3duX1N0YXRlRmllbGQpXHJcblxyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBDT0RFQkxPQ0tfU1RBUlRfU1RSUy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgICAgICAgbGV0IHN0YXJ0U3RyID0gQ09ERUJMT0NLX1NUQVJUX1NUUlNbaV1cclxuICAgICAgICAgICAgdGhpcy5zZXR1cE1hcmtkb3duQ29kZWJsb2NrUG9zdFByb2Nlc3NvcihzdGFydFN0cik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0dXBNYXJrZG93blBvc3RQcm9jZXNzb3IoKTtcclxuXHJcbiAgICAgICAgLy9UT0RPOiBTZXQgdXAgdGhpcyBhcyBhIG1vZGFsIHRvIHNldCBzZXR0aW5ncyBhdXRvbWF0aWNhbGx5XHJcbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHsgICAgICAgICAgICBcclxuICAgICAgICAgICAgaWQ6IGBpbnNlcnQtbXVsdGktY29sdW1uLXJlZ2lvbmAsXHJcbiAgICAgICAgICAgIG5hbWU6IGBJbnNlcnQgTXVsdGktQ29sdW1uIFJlZ2lvbmAsXHJcbiAgICAgICAgICAgIGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yLCB2aWV3KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY3Vyc29yU3RhcnRQb3NpdGlvbiA9IGVkaXRvci5nZXRDdXJzb3IoXCJmcm9tXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBlZGl0b3IuZ2V0RG9jKCkucmVwbGFjZVNlbGVjdGlvbihcclxuYFxyXG5cXGBcXGBcXGBzdGFydC1tdWx0aS1jb2x1bW5cclxuSUQ6IElEXyR7Z2V0VUlEKDQpfVxyXG5OdW1iZXIgb2YgQ29sdW1uczogMlxyXG5MYXJnZXN0IENvbHVtbjogc3RhbmRhcmRcclxuXFxgXFxgXFxgXHJcblxyXG5cclxuXHJcbi0tLSBjb2x1bW4tZW5kIC0tLVxyXG5cclxuXHJcblxyXG49PT0gZW5kLW11bHRpLWNvbHVtblxyXG5cclxuJHtlZGl0b3IuZ2V0RG9jKCkuZ2V0U2VsZWN0aW9uKCl9YFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yU3RhcnRQb3NpdGlvbi5saW5lID0gY3Vyc29yU3RhcnRQb3NpdGlvbi5saW5lICsgN1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnNvclN0YXJ0UG9zaXRpb24uY2ggPSAwO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBlZGl0b3Iuc2V0Q3Vyc29yKGN1cnNvclN0YXJ0UG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiRW5jb3VudGVyZWQgYW4gZXJyb3IgaW5zZXJ0aW5nIGEgbXVsdGktY29sdW1uIHJlZ2lvbi4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci5cIlxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHsgICAgICAgICAgICBcclxuICAgICAgICAgICAgaWQ6IGBhZGQtSURzLVRvLW11bHRpLWNvbHVtbi1yZWdpb25gLFxyXG4gICAgICAgICAgICBuYW1lOiBgRml4IE1pc3NpbmcgSURzIGZvciBNdWx0aS1Db2x1bW4gUmVnaW9uc2AsXHJcbiAgICAgICAgICAgIGVkaXRvckNhbGxiYWNrOiAoZWRpdG9yLCB2aWV3KSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAgICAgKiBOb3Qgc3VyZSBpZiB0aGVyZSBpcyBhbiBlYXNpZXIgd2F5IHRvIGRvIHRoaXMuXHJcbiAgICAgICAgICAgICAgICAgICAgICogXHJcbiAgICAgICAgICAgICAgICAgICAgICogR2V0IGFsbCBvZiB0aGUgbGluZXMgb2YgdGhlIGRvY3VtZW50IHNwbGl0IGJ5IG5ld2xpbmVzLlxyXG4gICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkb2NUZXh0ID0gZWRpdG9yLmdldFJhbmdlKHsgbGluZTogMCwgY2g6IDAgfSwgeyBsaW5lOiBlZGl0b3IuZ2V0RG9jKCkubGluZUNvdW50KCksIGNoOiAwfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpbmVzID0gZG9jVGV4dC5zcGxpdChcIlxcblwiKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXJ0Q29kZWJsb2NrID0gbXVsdGlDb2x1bW5QYXJzZXIuZmluZFN0YXJ0Q29kZWJsb2NrKGRvY1RleHQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaW5lT2Zmc2V0ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbnVtQ29kZWJsb2Nrc1VwZGF0ZWQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlKHN0YXJ0Q29kZWJsb2NrLmZvdW5kID09PSB0cnVlKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc3RhcnRSZXBsYWNlTGluZXMgPSAoZG9jVGV4dC5zbGljZSgwLCBzdGFydENvZGVibG9jay5zdGFydFBvc2l0aW9uKS5zcGxpdChcIlxcblwiKS5sZW5ndGggLSAxKSArIGxpbmVPZmZzZXQ7IC8vIC0xIHRvIFplcm8gaW5kZXggdGhlIHJlcGxhY2UgbGluZVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNldHRpbmdzVGV4dCA9IGRvY1RleHQuc2xpY2Uoc3RhcnRDb2RlYmxvY2suc3RhcnRQb3NpdGlvbiwgc3RhcnRDb2RlYmxvY2suZW5kUG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2V0dGluZ3NJRCA9IHBhcnNlU3RhcnRSZWdpb25Db2RlQmxvY2tJRChzZXR0aW5nc1RleHQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoc2V0dGluZ3NJRCA9PT0gXCJcIikge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZXBsYWNlbWVudFRleHQgPSBlZGl0b3IuZ2V0UmFuZ2UoeyBsaW5lOiBzdGFydFJlcGxhY2VMaW5lcywgY2g6IDAgfSwgeyBsaW5lOiBzdGFydFJlcGxhY2VMaW5lcywgY2g6IHN0YXJ0Q29kZWJsb2NrLm1hdGNoTGVuZ3RofSkgKyBgXFxuSUQ6IElEXyR7Z2V0VUlEKDQpfWBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRvci5yZXBsYWNlUmFuZ2UocmVwbGFjZW1lbnRUZXh0LCB7IGxpbmU6IHN0YXJ0UmVwbGFjZUxpbmVzLCBjaDogMCB9LCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxpbmU6IHN0YXJ0UmVwbGFjZUxpbmVzLCBjaDogc3RhcnRDb2RlYmxvY2subWF0Y2hMZW5ndGh9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFJlcGxhY2VMaW5lcyArPSAxOyAvLyB3ZSBhZGRlZCBhIGxpbmUgdG8gdGhlIGRvYyBzbyB1cGRhdGUgb3VyIG9mZnNldC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bUNvZGVibG9ja3NVcGRhdGVkICs9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGluZU9mZnNldCA9IHN0YXJ0UmVwbGFjZUxpbmVzXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb2NUZXh0ID0gZG9jVGV4dC5zbGljZShzdGFydENvZGVibG9jay5zdGFydFBvc2l0aW9uICsgc3RhcnRDb2RlYmxvY2subWF0Y2hMZW5ndGgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydENvZGVibG9jayA9IG11bHRpQ29sdW1uUGFyc2VyLmZpbmRTdGFydENvZGVibG9jayhkb2NUZXh0KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgICAgICAgICAqIExvb3AgdGhyb3VnaCBhbGwgb2YgdGhlIGxpbmVzIGNoZWNraW5nIGlmIHRoZSBsaW5lIGlzIGEgXHJcbiAgICAgICAgICAgICAgICAgICAgICogc3RhcnQgdGFnIGFuZCBpZiBzbyBpcyBpdCBtaXNzaW5nIGFuIElELlxyXG4gICAgICAgICAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaW5lc1dpdGhvdXRJRHMgPSBbXVxyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0V2l0aG91dElEcyA9IFtdXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IG11bHRpQ29sdW1uUGFyc2VyLmlzU3RhcnRUYWdXaXRoSUQobGluZXNbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihkYXRhLmlzU3RhcnRUYWcgPT09IHRydWUgJiYgZGF0YS5oYXNLZXkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lc1dpdGhvdXRJRHMucHVzaChpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRXaXRob3V0SURzLnB1c2gobGluZXNbaV0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYobGluZXNXaXRob3V0SURzLmxlbmd0aCA9PT0gMCAmJiBudW1Db2RlYmxvY2tzVXBkYXRlZCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgTm90aWNlIChcIkZvdW5kIDAgbWlzc2luZyBJRHMgaW4gdGhlIGN1cnJlbnQgZG9jdW1lbnQuXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAgICAgKiBOb3cgbG9vcCB0aHJvdWdoIGVhY2ggbGluZSB0aGF0IGlzIG1pc3NpbmcgYW4gSUQgYW5kXHJcbiAgICAgICAgICAgICAgICAgICAgICogZ2VuZXJhdGUgYSByYW5kb20gSUQgYW5kIHJlcGxhY2UgdGhlIG9yaWdpbmFsIHRleHQuXHJcbiAgICAgICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IGxpbmVzV2l0aG91dElEcy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbmFsVGV4dCA9IHRleHRXaXRob3V0SURzW2ldXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0ID0gb3JpZ2luYWxUZXh0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC50cmltRW5kKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRleHQuY2hhckF0KHRleHQubGVuZ3RoIC0gMSkgPT09IFwiOlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5zbGljZSgwLCB0ZXh0Lmxlbmd0aC0xKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gYCR7dGV4dH06IElEXyR7Z2V0VUlEKDQpfWA7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3IucmVwbGFjZVJhbmdlKHRleHQsIHsgbGluZTogbGluZXNXaXRob3V0SURzW2ldLCBjaDogMCB9LCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGxpbmU6IGxpbmVzV2l0aG91dElEc1tpXSwgY2g6IG9yaWdpbmFsVGV4dC5sZW5ndGh9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UgKGBSZXBsYWNlZCAke2xpbmVzV2l0aG91dElEcy5sZW5ndGggKyBudW1Db2RlYmxvY2tzVXBkYXRlZH0gbWlzc2luZyBJRChzKSBpbiB0aGUgY3VycmVudCBkb2N1bWVudC5gKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBuZXcgTm90aWNlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkVuY291bnRlcmVkIGFuIGVycm9yIGFkZGlnbiBJRHMgdG8gbXVsdGktY29sdW1uIHJlZ2lvbnMuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuXCJcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucmVnaXN0ZXJJbnRlcnZhbCh3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4ge1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdGhpcy5VcGRhdGVPcGVuRmlsZVByZXZpZXdzKCk7XHJcbiAgICAgICAgfSwgNTAwKSk7XHJcbiAgICB9XHJcblxyXG4gICAgVXBkYXRlT3BlbkZpbGVQcmV2aWV3cygpIHtcclxuXHJcbiAgICAgICAgbGV0IGZpbGVNYW5hZ2VycyA9IHRoaXMuZ2xvYmFsTWFuYWdlci5nZXRBbGxGaWxlTWFuYWdlcnMoKTtcclxuICAgICAgICBmaWxlTWFuYWdlcnMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGxldCByZWdpb25hbE1hbmFnZXJzID0gZWxlbWVudC5nZXRBbGxSZWdpb25hbE1hbmFnZXJzKCk7XHJcbiAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlcnMuZm9yRWFjaChyZWdpb25NYW5hZ2VyID0+IHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgcmVnaW9uTWFuYWdlci51cGRhdGVSZW5kZXJlZE1hcmtkb3duKClcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBNYXJrZG93blBvc3RQcm9jZXNzb3IoKSB7XHJcbiAgICAgICAgdGhpcy5yZWdpc3Rlck1hcmtkb3duUG9zdFByb2Nlc3Nvcihhc3luYyAoZWwsIGN0eCkgPT4ge1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgc291cmNlUGF0aCA9IGN0eC5zb3VyY2VQYXRoO1xyXG5cclxuICAgICAgICAgICAgbGV0IGZpbGVET01NYW5hZ2VyID0gdGhpcy5nbG9iYWxNYW5hZ2VyLmdldEZpbGVNYW5hZ2VyKHNvdXJjZVBhdGgpO1xyXG4gICAgICAgICAgICBpZihmaWxlRE9NTWFuYWdlciA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJGb3VuZCBudWxsIERPTSBtYW5hZ2VyLiBDb3VsZCBub3QgcHJvY2VzcyBtdWx0aS1jb2x1bW4gbWFya2Rvd24uXCIpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBIZXJlIHdlIGNoZWNrIGlmIHRoZSBleHBvcnQgXCJwcmludFwiIGZsYWcgaXMgaW4gdGhlIERPTSBzbyB3ZSBjYW4gZGV0ZXJtaW5lIGlmIHdlXHJcbiAgICAgICAgICAgICAqIGFyZSBleHBvcnRpbmcgYW5kIGhhbmRsZSB0aGF0IGNhc2UuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZih0aGlzLmNoZWNrRXhwb3J0aW5nKGVsKSkge1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZXhwb3J0RG9jdW1lbnRUb1BERihlbCwgZmlsZURPTU1hbmFnZXIsIHNvdXJjZVBhdGgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBHZXQgdGhlIGluZm8gZm9yIG91ciBjdXJyZW50IGNvbnRleHQgYW5kIHRoZW4gY2hlY2tcclxuICAgICAgICAgICAgLy8gaWYgdGhlIGVudGlyZSB0ZXh0IGNvbnRhaW5zIGEgc3RhcnQgdGFnLiBJZiB0aGVyZSBpc1xyXG4gICAgICAgICAgICAvLyBubyBzdGFydCB0YWcgaW4gdGhlIGRvY3VtZW50IHdlIGNhbiBqdXN0IHJldHVybiBhbmRcclxuICAgICAgICAgICAgLy8gaWdub3JlIHRoZSByZXN0IG9mIHRoZSBwYXJzaW5nLlxyXG4gICAgICAgICAgICBsZXQgaW5mbyA9IGN0eC5nZXRTZWN0aW9uSW5mbyhlbCk7XHJcblxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogV2UgbmVlZCB0aGUgY29udGV4dCBpbmZvIHRvIHByb3Blcmx5IHBhcnNlIHNvIHJldHVybmluZyBoZXJlIFxyXG4gICAgICAgICAgICAgKiBpbmZvIGlzIG51bGwuIFRPRE86IFNldCBlcnJvciBpbiB2aWV3IGlmIHRoaXMgb2NjdXJzLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYoIWluZm8pIHtcclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBkb2NTdHJpbmcgPSBpbmZvLnRleHQ7XHJcbiAgICAgICAgICAgIGxldCBkb2NMaW5lcyA9IGRvY1N0cmluZy5zcGxpdChcIlxcblwiKTtcclxuXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBJZiB3ZSBlbmNvdW50ZXIgYSBzdGFydCB0YWcgb24gdGhlIGRvY3VtZW50IHdlIHNldCB0aGUgZmxhZyB0byBzdGFydFxyXG4gICAgICAgICAgICAgKiBwYXJzaW5nIHRoZSByZXN0IG9mIHRoZSBkb2N1bWVudC5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGlmKG11bHRpQ29sdW1uUGFyc2VyLmNvbnRhaW5zU3RhcnRUYWcoZWwudGV4dENvbnRlbnQpIHx8IFxyXG4gICAgICAgICAgICAgICBtdWx0aUNvbHVtblBhcnNlci5jb250YWluc1N0YXJ0Q29kZUJsb2NrKGRvY1N0cmluZykpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBmaWxlRE9NTWFuYWdlci5zZXRIYXNTdGFydFRhZygpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvKiogXHJcbiAgICAgICAgICAgICAqIElmIHRoZSBkb2N1bWVudCBkb2VzIG5vdCBjb250YWluIGFueSBzdGFydCB0YWdzIHdlIGlnbm9yZSB0aGVcclxuICAgICAgICAgICAgICogcmVzdCBvZiB0aGUgcGFyc2luZy4gVGhpcyBpcyBvbmx5IHNldCB0byB0cnVlIG9uY2UgdGhlIGZpcnN0XHJcbiAgICAgICAgICAgICAqIHN0YXJ0IHRhZyBlbGVtZW50IGlzIHBhcnNlZCBhYm92ZS5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGlmKGZpbGVET01NYW5hZ2VyLmdldEhhc1N0YXJ0VGFnKCkgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBUYWtlIHRoZSBpbmZvIHByb3ZpZGVkIGFuZCBnZW5lcmF0ZSB0aGUgcmVxdWlyZWQgdmFyaWFibGVzIGZyb20gXHJcbiAgICAgICAgICAgICAqIHRoZSBsaW5lIHN0YXJ0IGFuZCBlbmQgdmFsdWVzLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgbGV0IGxpbmVzQWJvdmVBcnJheSA9IGRvY0xpbmVzLnNsaWNlKDAsIGluZm8ubGluZVN0YXJ0KVxyXG4gICAgICAgICAgICBsZXQgbGluZXNPZkVsZW1lbnQgPSBkb2NMaW5lcy5zbGljZShpbmZvLmxpbmVTdGFydCwgaW5mby5saW5lRW5kICsgMSk7XHJcbiAgICAgICAgICAgIGxldCB0ZXh0T2ZFbGVtZW50ID0gbGluZXNPZkVsZW1lbnQuam9pbihcIlxcblwiKVxyXG4gICAgICAgICAgICBsZXQgbGluZXNCZWxvd0FycmF5ID0gZG9jTGluZXMuc2xpY2UoaW5mby5saW5lRW5kICsgMSlcclxuXHJcbiAgICAgICAgICAgIC8vI3JlZ2lvbiBEZXByZWNpYXRlZCBTdGFydCBUYWdcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIElmIHRoZSBjdXJyZW50IGxpbmUgaXMgYSBzdGFydCB0YWcgd2Ugd2FudCB0byBzZXQgdXAgdGhlXHJcbiAgICAgICAgICAgICAqIHJlZ2lvbiBtYW5hZ2VyLiBUaGUgcmVnaW9uYWwgbWFuYWdlciB0YWtlcyBjYXJlXHJcbiAgICAgICAgICAgICAqIG9mIGFsbCBpdGVtcyBiZXR3ZWVuIGl0J3Mgc3RhcnQgYW5kIGVuZCB0YWdzIHdoaWxlIHRoZVxyXG4gICAgICAgICAgICAgKiBmaWxlIG1hbmFnZXIgd2UgZ290IGFib3ZlIGFib3ZlIHRha2VzIGNhcmUgb2YgYWxsIHJlZ2lvbmFsIFxyXG4gICAgICAgICAgICAgKiBtYW5hZ2VycyBpbiBlYWNoIGZpbGUuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZihtdWx0aUNvbHVtblBhcnNlci5jb250YWluc1N0YXJ0VGFnKHRleHRPZkVsZW1lbnQpKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgLyoqIFxyXG4gICAgICAgICAgICAgICAgICogU2V0IHVwIHRoZSBjdXJyZW50IGVsZW1lbnQgdG8gYWN0IGFzIHRoZSBwYXJlbnQgZm9yIHRoZSBcclxuICAgICAgICAgICAgICAgICAqIG11bHRpLWNvbHVtbiByZWdpb24uXHJcbiAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgIGVsLmNoaWxkcmVuWzBdLmRldGFjaCgpO1xyXG4gICAgICAgICAgICAgICAgZWwuY2xhc3NMaXN0LmFkZChNdWx0aUNvbHVtbkxheW91dENTUy5SZWdpb25Sb290Q29udGFpbmVyRGl2KVxyXG4gICAgICAgICAgICAgICAgbGV0IHJlbmRlckVycm9yUmVnaW9uID0gZWwuY3JlYXRlRGl2KHtcclxuICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlJlZ2lvbkVycm9yQ29udGFpbmVyRGl2fSAke011bHRpQ29sdW1uU3R5bGVDU1MuUmVnaW9uRXJyb3JNZXNzYWdlfWAsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGxldCByZW5kZXJDb2x1bW5SZWdpb24gPSBlbC5jcmVhdGVEaXYoe1xyXG4gICAgICAgICAgICAgICAgICAgIGNsczogTXVsdGlDb2x1bW5MYXlvdXRDU1MuUmVnaW9uQ29udGVudENvbnRhaW5lckRpdlxyXG4gICAgICAgICAgICAgICAgfSlcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgc3RhcnRCbG9ja0RhdGEgPSBtdWx0aUNvbHVtblBhcnNlci5nZXRTdGFydEJsb2NrQWJvdmVMaW5lKGxpbmVzT2ZFbGVtZW50KVxyXG4gICAgICAgICAgICAgICAgaWYoc3RhcnRCbG9ja0RhdGEgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGxldCByZWdpb25LZXkgPSBzdGFydEJsb2NrRGF0YS5zdGFydEJsb2NrS2V5O1xyXG4gICAgICAgICAgICAgICAgaWYoZmlsZURPTU1hbmFnZXIuY2hlY2tLZXlFeGlzdHMocmVnaW9uS2V5KSA9PT0gdHJ1ZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgeyBudW1iZXJPZlRhZ3MsIGtleXMgfSA9IG11bHRpQ29sdW1uUGFyc2VyLmNvdW50U3RhcnRUYWdzKGluZm8udGV4dCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBudW1NYXRjaGVzID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBmb3IobGV0IGkgPSAwOyBpIDwgbnVtYmVyT2ZUYWdzOyBpKyspIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJlY2F1c2Ugd2UgY2hlY2tlZCBpZiBrZXkgZXhpc3RzIG9uZSBvZiB0aGVzZSBoYXMgdG8gbWF0Y2guXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGtleXNbaV0gPT09IHJlZ2lvbktleSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtTWF0Y2hlcysrO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gZGlzcGxheSBhbiBlcnJvciBpZiB0aGVyZSBhcmUgbW9yZSB0aGFuIDIgb2YgdGhlIHNhbWUgaWQgYWNyb3NzXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdob2xlIGRvY3VtZW50LiBUaGlzIHByZXZlbnRzIGVycm9zIHdoZW4gb2JzaWRpYW4gcmVsb2FkcyB0aGUgd2hvbGUgZG9jdW1lbnRcclxuICAgICAgICAgICAgICAgICAgICAvLyBhbmQgdGhlcmUgYXJlIHR3byBvZiB0aGUgc2FtZSBrZXkgaW4gdGhlIG1hcC5cclxuICAgICAgICAgICAgICAgICAgICBpZihudW1NYXRjaGVzID49IDIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYocmVnaW9uS2V5ID09PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJFcnJvclJlZ2lvbi5pbm5lclRleHQgPSBcIkZvdW5kIG11bHRpcGxlIHJlZ2lvbnMgd2l0aCBlbXB0eSBJRHMuIFBsZWFzZSBzZXQgYSB1bmlxdWUgSUQgYWZ0ZXIgZWFjaCBzdGFydCB0YWcuXFxuRUc6ICc9PT0gbXVsdGktY29sdW1uLXN0YXJ0OiByYW5kb21JRCdcXG5PciB1c2UgJ0ZpeCBNaXNzaW5nIElEcycgaW4gdGhlIGNvbW1hbmQgcGFsZXR0ZSBhbmQgcmVsb2FkIHRoZSBkb2N1bWVudC5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRXJyb3JSZWdpb24uaW5uZXJUZXh0ID0gXCJSZWdpb24gSUQgYWxyZWFkeSBleGlzdHMgaW4gZG9jdW1lbnQsIHBsZWFzZSBzZXQgYSB1bmlxdWUgSUQuXFxuRUc6ICc9PT0gbXVsdGktY29sdW1uLXN0YXJ0OiByYW5kb21JRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbC5pZCA9IGBNdWx0aUNvbHVtbklEOiR7cmVnaW9uS2V5fWBcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgZWxlbWVudE1hcmtkb3duUmVuZGVyZXIgPSBuZXcgTWFya2Rvd25SZW5kZXJDaGlsZChlbCk7XHJcbiAgICAgICAgICAgICAgICBmaWxlRE9NTWFuYWdlci5jcmVhdGVSZWdpb25hbE1hbmFnZXIocmVnaW9uS2V5LCBlbCwgcmVuZGVyRXJyb3JSZWdpb24sIHJlbmRlckNvbHVtblJlZ2lvbik7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50TWFya2Rvd25SZW5kZXJlci5vbnVubG9hZCA9ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZihmaWxlRE9NTWFuYWdlcikge1xyXG4gICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVET01NYW5hZ2VyLnJlbW92ZVJlZ2lvbihzdGFydEJsb2NrRGF0YS5zdGFydEJsb2NrS2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgY3R4LmFkZENoaWxkKGVsZW1lbnRNYXJrZG93blJlbmRlcmVyKTtcclxuXHJcbiAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAqIE5vdyB3ZSBoYXZlIGNyZWF0ZWQgb3VyIHJlZ2lvbmFsIG1hbmFnZXIgYW5kIGRlZmluZWQgd2hhdCBlbGVtZW50cyBcclxuICAgICAgICAgICAgICAgICAqIG5lZWQgdG8gYmUgcmVuZGVyZWQgaW50by4gU28gd2UgY2FuIHJldHVybiB3aXRob3V0IGFueSBtb3JlIHByb2Nlc3NpbmcuXHJcbiAgICAgICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vI2VuZHJlZ2lvbiBEZXByZWNpYXRlZCBTdGFydCBUYWdcclxuXHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBDaGVjayBpZiBhbnkgb2YgdGhlIGxpbmVzIGFib3ZlIHVzIGNvbnRhaW4gYSBzdGFydCBibG9jaywgYW5kIGlmXHJcbiAgICAgICAgICAgICAqIHNvIGdldCB0aGUgbGluZXMgZnJvbSBvdXIgY3VycmVudCBlbGVtZW50IHRvIHRoZSBzdGFydCBibG9jay5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGxldCBzdGFydEJvY2tBYm92ZSA9IG11bHRpQ29sdW1uUGFyc2VyLmdldFN0YXJ0QmxvY2tPckNvZGVibG9ja0Fib3ZlTGluZShsaW5lc0Fib3ZlQXJyYXkpO1xyXG4gICAgICAgICAgICBpZihzdGFydEJvY2tBYm92ZSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAgICAgKiBXZSBub3cga25vdyB3ZSdyZSB3aXRoaW4gYSBtdWx0aS1jb2x1bW4gcmVnaW9uLCBzbyB3ZSB1cGRhdGUgb3VyXHJcbiAgICAgICAgICAgICAqIGxpc3Qgb2YgbGluZXMgYWJvdmUgdG8ganVzdCBiZSB0aGUgaXRlbXMgd2l0aGluIHRoaXMgcmVnaW9uLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgbGluZXNBYm92ZUFycmF5ID0gc3RhcnRCb2NrQWJvdmUubGluZXNBYm92ZUFycmF5O1xyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFdlIHVzZSB0aGUgc3RhcnQgYmxvY2sncyBrZXkgdG8gZ2V0IG91ciByZWdpb25hbCBtYW5hZ2VyLiBJZiB0aGlzXHJcbiAgICAgICAgICAgICAqIGxvb2t1cCBmYWlscyB3ZSBjYW4gbm90IGNvbnRpbnVlIHByb2Nlc3NpbmcgdGhpcyBlbGVtZW50LlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgbGV0IHJlZ2lvbmFsQ29udGFpbmVyOiBSZWdpb25NYW5hZ2VyQ29udGFpbmVyID0gZmlsZURPTU1hbmFnZXIuZ2V0UmVnaW9uYWxDb250YWluZXIoc3RhcnRCb2NrQWJvdmUuc3RhcnRCbG9ja0tleSk7XHJcbiAgICAgICAgICAgIGlmKHJlZ2lvbmFsQ29udGFpbmVyID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgcmVnaW9uYWxNYW5hZ2VyOiBSZWdpb25NYW5hZ2VyID0gcmVnaW9uYWxDb250YWluZXIuZ2V0UmVnaW9uKCk7XHJcblxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogVG8gbWFrZSBzdXJlIHdlJ3JlIHBsYWNpbmcgdGhlIGl0ZW0gaW4gdGhlIHJpZ2h0IGxvY2F0aW9uIChhbmQgXHJcbiAgICAgICAgICAgICAqIG92ZXJ3cml0ZSBlbGVtZW50cyB0aGF0IGFyZSBub3cgZ29uZSkgd2Ugbm93IHdhbnQgYWxsIG9mIHRoZVxyXG4gICAgICAgICAgICAgKiBsaW5lcyBhZnRlciB0aGlzIGVsZW1lbnQgdXAgdG8gdGhlIGVuZCB0YWcuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBsaW5lc0JlbG93QXJyYXkgPSAgbXVsdGlDb2x1bW5QYXJzZXIuZ2V0RW5kQmxvY2tCZWxvdyhsaW5lc0JlbG93QXJyYXkpO1xyXG5cclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIE5vdyB3ZSB0YWtlIHRoZSBsaW5lcyBhYm92ZSBvdXIgY3VycmVudCBlbGVtZW50IHVwIHVudGlsIHRoZVxyXG4gICAgICAgICAgICAgKiBzdGFydCByZWdpb24gdGFnIGFuZCByZW5kZXIgdGhhdCBpbnRvIGFuIEhUTUwgZWxlbWVudC4gV2Ugd2lsbCBcclxuICAgICAgICAgICAgICogdXNlIHRoZXNlIGVsZW1lbnRzIHRvIGRldGVybWluZSB3aGVyZSB0byBwbGFjZSBvdXIgY3VycmVudCBlbGVtZW50LlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgbGV0IHNpYmxpbmdzQWJvdmU6IEhUTUxEaXZFbGVtZW50ID0gcmVuZGVyTWFya2Rvd25Gcm9tTGluZXMobGluZXNBYm92ZUFycmF5LCBzb3VyY2VQYXRoKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBzaWJsaW5nc0JlbG93OiBIVE1MRGl2RWxlbWVudCA9IHJlbmRlck1hcmtkb3duRnJvbUxpbmVzKGxpbmVzQmVsb3dBcnJheSwgc291cmNlUGF0aCk7XHJcblxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogU2V0IHVwIG91ciBkb20gb2JqZWN0IHRvIGJlIGFkZGVkIHRvIHRoZSBtYW5hZ2VyLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgbGV0IGN1cnJlbnRPYmplY3Q6IERPTU9iamVjdCA9IG5ldyBET01PYmplY3QoZWwsIGxpbmVzT2ZFbGVtZW50KVxyXG4gICAgICAgICAgICBlbC5pZCA9IGN1cnJlbnRPYmplY3QuVUlEO1xyXG5cclxuICAgICAgICAgICAgY3VycmVudE9iamVjdCA9IFRhc2tMaXN0RE9NT2JqZWN0LmNoZWNrRm9yVGFza0xpc3RFbGVtZW50KGN1cnJlbnRPYmplY3QpXHJcblxyXG4gICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICogTm93IHdlIGFkZCB0aGUgb2JqZWN0IHRvIHRoZSBtYW5hZ2VyIGFuZCB0aGVuIHNldHVwIHRoZVxyXG4gICAgICAgICAgICAgKiBjYWxsYmFjayBmb3Igd2hlbiB0aGUgb2JqZWN0IGlzIHJlbW92ZWQgZnJvbSB2aWV3IHRoYXQgd2lsbCByZW1vdmUgXHJcbiAgICAgICAgICAgICAqIHRoZSBpdGVtIGZyb20gdGhlIG1hbmFnZXIuXHJcbiAgICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICByZWdpb25hbE1hbmFnZXIuYWRkT2JqZWN0KHNpYmxpbmdzQWJvdmUsIHNpYmxpbmdzQmVsb3csIGN1cnJlbnRPYmplY3QpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGVsZW1lbnRNYXJrZG93blJlbmRlcmVyID0gbmV3IE1hcmtkb3duUmVuZGVyQ2hpbGQoZWwpO1xyXG4gICAgICAgICAgICBlbGVtZW50TWFya2Rvd25SZW5kZXJlci5vbnVubG9hZCA9ICgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICBpZihyZWdpb25hbENvbnRhaW5lciA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgcmVnaW9uYWxNYW5hZ2VyOiBSZWdpb25NYW5hZ2VyID0gcmVnaW9uYWxDb250YWluZXIuZ2V0UmVnaW9uKCk7XHJcbiAgICAgICAgICAgICAgICBpZihyZWdpb25hbE1hbmFnZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4gYXR0ZW1wdCB0byB1cGRhdGUgdGhlIHZpZXcgaGVyZSBhZnRlciB0aGUgaXRlbSBpcyByZW1vdmVkXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gYnV0IG5lZWQgdG8gZ2V0IHRoZSBpdGVtJ3MgcGFyZW50IGVsZW1lbnQgYmVmb3JlIHJlbW92aW5nIG9iamVjdCBmcm9tIG1hbmFnZXIuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ2lvblJlbmRlckRhdGE6IE11bHRpQ29sdW1uUmVuZGVyRGF0YSA9IHJlZ2lvbmFsTWFuYWdlci5nZXRSZWdpb25SZW5kZXJEYXRhKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlci5yZW1vdmVPYmplY3QoY3VycmVudE9iamVjdC5VSUQpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvKipcclxuICAgICAgICAgICAgICAgICAgICAgKiBOZWVkIHRvIGNoZWNrIGhlcmUgaWYgZWxlbWVudCBpcyBudWxsIGFzIHRoaXMgY2xvc3VyZSB3aWxsIGJlIGNhbGxlZFxyXG4gICAgICAgICAgICAgICAgICAgICAqIHJlcGVhdGVkbHkgb24gZmlsZSBjaGFuZ2UuXHJcbiAgICAgICAgICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgICAgICAgICAgaWYocmVnaW9uUmVuZGVyRGF0YS5wYXJlbnRSZW5kZXJFbGVtZW50ID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmVnaW9uYWxNYW5hZ2VyLnJlbmRlclJlZ2lvbkVsZW1lbnRzVG9TY3JlZW4oKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBjdHguYWRkQ2hpbGQoZWxlbWVudE1hcmtkb3duUmVuZGVyZXIpO1xyXG5cclxuICAgICAgICAgICAgbGV0IGVsZW1lbnRUZXh0U3BhY2VkID0gbGluZXNPZkVsZW1lbnQucmVkdWNlKChwcmV2LCBjdXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJldiArIFwiXFxuXCIgKyBjdXJyO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIE5vdyB3ZSBjaGVjayBpZiBvdXIgY3VycmVudCBlbGVtZW50IGlzIGEgc3BlY2lhbCBmbGFnIHNvIHdlIGNhblxyXG4gICAgICAgICAgICAgKiBwcm9wZXJseSBzZXQgdGhlIGVsZW1lbnQgdGFnIHdpdGhpbiB0aGUgcmVnaW9uYWwgbWFuYWdlci5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGlmKG11bHRpQ29sdW1uUGFyc2VyLmNvbnRhaW5zRW5kVGFnKGVsLnRleHRDb250ZW50KSA9PT0gdHJ1ZSkge1xyXG5cclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPYmplY3QuZWxlbWVudFR5cGUgPSBFbGVtZW50UmVuZGVyVHlwZS51blJlbmRlcmVkXHJcbiAgICAgICAgICAgICAgICBlbC5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLlJlZ2lvbkVuZFRhZylcclxuICAgICAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlci51cGRhdGVFbGVtZW50VGFnKGN1cnJlbnRPYmplY3QuVUlELCBET01PYmplY3RUYWcuZW5kUmVnaW9uKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKG11bHRpQ29sdW1uUGFyc2VyLmNvbnRhaW5zQ29sRW5kVGFnKGVsZW1lbnRUZXh0U3BhY2VkKSA9PT0gdHJ1ZSkge1xyXG5cclxuICAgICAgICAgICAgICAgIGN1cnJlbnRPYmplY3QuZWxlbWVudFR5cGUgPSBFbGVtZW50UmVuZGVyVHlwZS51blJlbmRlcmVkXHJcbiAgICAgICAgICAgICAgICBlbC5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLkNvbHVtbkVuZFRhZylcclxuICAgICAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlci51cGRhdGVFbGVtZW50VGFnKGN1cnJlbnRPYmplY3QuVUlELCBET01PYmplY3RUYWcuY29sdW1uQnJlYWspO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYobXVsdGlDb2x1bW5QYXJzZXIuY29udGFpbnNDb2xTZXR0aW5nc1RhZyhlbGVtZW50VGV4dFNwYWNlZCkgPT09IHRydWUpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBjdXJyZW50T2JqZWN0LmVsZW1lbnRUeXBlID0gRWxlbWVudFJlbmRlclR5cGUudW5SZW5kZXJlZFxyXG4gICAgICAgICAgICAgICAgZWwuYWRkQ2xhc3MoTXVsdGlDb2x1bW5TdHlsZUNTUy5SZWdpb25TZXR0aW5ncylcclxuICAgICAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlciA9IHJlZ2lvbmFsQ29udGFpbmVyLnNldFJlZ2lvblNldHRpbmdzKGVsZW1lbnRUZXh0U3BhY2VkKVxyXG4gICAgICAgICAgICAgICAgcmVnaW9uYWxNYW5hZ2VyLnVwZGF0ZUVsZW1lbnRUYWcoY3VycmVudE9iamVjdC5VSUQsIERPTU9iamVjdFRhZy5yZWdpb25TZXR0aW5ncyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBlbC5hZGRDbGFzcyhNdWx0aUNvbHVtblN0eWxlQ1NTLlJlZ2lvbkNvbnRlbnQpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIHJlZ2lvbmFsTWFuYWdlci5yZW5kZXJSZWdpb25FbGVtZW50c1RvU2NyZWVuKClcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNTdGFydENvZGVibG9ja0luRXhwb3J0KG5vZGU6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XHJcblxyXG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBDT0RFQkxPQ0tfU1RBUlRfU1RSUy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgICAgICAgaWYobm9kZS5oYXNDbGFzcyhgYmxvY2stbGFuZ3VhZ2UtJHtDT0RFQkxPQ0tfU1RBUlRfU1RSU1tpXX1gKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYXN5bmMgZXhwb3J0RG9jdW1lbnRUb1BERihlbDogSFRNTEVsZW1lbnQsIGZpbGVET01NYW5hZ2VyOiBGaWxlRE9NTWFuYWdlciwgc291cmNlUGF0aDogc3RyaW5nKSB7XHJcblxyXG4gICAgICAgIC8vIEEgdHJ1ZSBleHBvcnQgd2lsbCBiZSBwYXNzZWQgYW4gZWxlbWVudCB3aXRoIGFsbCBvdGhlciBpdGVtcyBpbiB0aGUgZG9jIGFzIGNoaWxkcmVuLiBcclxuICAgICAgICAvLyBTbyBpZiB0aGVyZSBhcmUgbm8gY2hpbGRyZW4gd2UgY2FuIGp1c3QgcmV0dXJuXHJcbiAgICAgICAgbGV0IGRvY0NoaWxkcmVuID0gQXJyYXkuZnJvbShlbC5jaGlsZE5vZGVzKTtcclxuICAgICAgICBpZihkb2NDaGlsZHJlbi5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGNoaWxkcmVuVG9SZW1vdmUgPSBbXTtcclxuICAgICAgICBcclxuICAgICAgICAvLyBUbyBleHBvcnQgY29kZWJsb2NrcyB3ZSBuZWVkIHRvIGdldCB0aGUgSURzIHNvIHdlIGNhbiBnZXQgdGhlIGRhdGEgZnJvbSBvdXIgbWFuYWdlcnMuXHJcbiAgICAgICAgLy8gaG93ZXZlciBzaW5jZSB0aGUgSUQgaXNudCBiZWluZyBzdG9yZWQgaW4gdGhlIGVsZW1lbnQgeWV0IHRoaXMgbWVhbnMgd2UgbmVlZCB0byByZWFkXHJcbiAgICAgICAgLy8gYWxsIG9mIHRoZSBJRHMgb3V0IG9mIHRoZSBmdWxsIGRvY3VtZW50LlxyXG4gICAgICAgIGxldCBjb2RlYmxvY2tTdGFydEJsb2NrcyA9IFtdXHJcbiAgICAgICAgbGV0IGFGaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHNvdXJjZVBhdGgpO1xyXG4gICAgICAgIGlmKGFGaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcclxuXHJcbiAgICAgICAgICAgIGxldCBmaWxlID0gYUZpbGUgYXMgVEZpbGVcclxuICAgICAgICAgICAgbGV0IGZpbGVUZXh0ID0gYXdhaXQgdGhpcy5hcHAudmF1bHQuY2FjaGVkUmVhZChmaWxlKSAvLyBJcyBjYWNoZWQgcmVhZCBPayBoZXJlPyBJdCBzaG91bGQgYmUuXHJcblxyXG4gICAgICAgICAgICAvLyBPbmNlIHdlIGhhdmUgb3VyIGRhdGEgd2Ugc2VhcmNoIHRoZSB0ZXh0IGZvciBhbGwgY29kZWJsb2NrIHN0YXJ0IHZhbHVlcy5cclxuICAgICAgICAgICAgLy8gc3RvcmluZyB0aGVtIGludG8gb3VyIHF1ZXVlLlxyXG4gICAgICAgICAgICBsZXQgY29kZUJsb2NrRGF0YSA9IG11bHRpQ29sdW1uUGFyc2VyLmZpbmRTdGFydENvZGVibG9jayhmaWxlVGV4dCk7XHJcbiAgICAgICAgICAgIHdoaWxlKGNvZGVCbG9ja0RhdGEuZm91bmQgPT09IHRydWUpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgY29kZWJsb2NrVGV4dCA9IGZpbGVUZXh0LnNsaWNlKGNvZGVCbG9ja0RhdGEuc3RhcnRQb3NpdGlvbiwgY29kZUJsb2NrRGF0YS5lbmRQb3NpdGlvbik7XHJcbiAgICAgICAgICAgICAgICBmaWxlVGV4dCA9IGZpbGVUZXh0LnNsaWNlKGNvZGVCbG9ja0RhdGEuZW5kUG9zaXRpb24pO1xyXG4gICAgICAgICAgICAgICAgY29kZWJsb2NrU3RhcnRCbG9ja3MucHVzaChjb2RlYmxvY2tUZXh0KTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb2RlQmxvY2tEYXRhID0gbXVsdGlDb2x1bW5QYXJzZXIuZmluZFN0YXJ0Q29kZWJsb2NrKGZpbGVUZXh0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gIFxyXG5cclxuICAgICAgICBsZXQgaW5CbG9jayA9IGZhbHNlO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZG9jQ2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcclxuXHJcbiAgICAgICAgICAgIGxldCBjaGlsZCA9IGRvY0NoaWxkcmVuW2ldO1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNoaWxkRWwgPSBjaGlsZCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICAgICAgICAgIGlmIChpbkJsb2NrID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmb3VuZEJsb2NrRGF0YSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByZWdpb25LZXkgPSBcIlwiO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgYmxvY2tEYXRhID0gbXVsdGlDb2x1bW5QYXJzZXIuaXNTdGFydFRhZ1dpdGhJRChjaGlsZC50ZXh0Q29udGVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJsb2NrRGF0YS5pc1N0YXJ0VGFnID09PSB0cnVlKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEJsb2NrRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChibG9ja0RhdGEuaGFzS2V5ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm91bmRLZXkgPSBtdWx0aUNvbHVtblBhcnNlci5nZXRTdGFydFRhZ0tleShjaGlsZC50ZXh0Q29udGVudCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZm91bmRLZXkgIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb25LZXkgPSBmb3VuZEtleTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGJsb2NrRGF0YS5pc1N0YXJ0VGFnID09PSBmYWxzZSAmJiB0aGlzLmlzU3RhcnRDb2RlYmxvY2tJbkV4cG9ydChjaGlsZCkpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBzdGFydCB0YWcgZnJvbSB0aGUgb2xkIHZlcnNpb24gaXMgbnVsbCB3ZSB0aGVuIGNoZWNrIHRvIHNlZSBpZiB0aGUgZWxlbWVudCBpc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhIGNvZGVibG9jayBzdGFydC4gSWYgaXQgaXMgd2UgdXNlIHRoZSBuZXh0IGF2YWlsYWJsZSBjb2RlYmxvY2sgZGF0YSB0byByZXRyaWV2ZSBvdXIgSUQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2RlYmxvY2tUZXh0ID0gY29kZWJsb2NrU3RhcnRCbG9ja3Muc2hpZnQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoY29kZWJsb2NrVGV4dCA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRm91bmQgdW5kZWZpbmVkIGNvZGVibG9jayBkYXRhIHdoZW4gZXhwb3J0aW5nLlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPSBwYXJzZVN0YXJ0UmVnaW9uQ29kZUJsb2NrSUQoY29kZWJsb2NrVGV4dCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGlkICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZEJsb2NrRGF0YSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpb25LZXkgPSBpZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZm91bmRCbG9ja0RhdGEgPT09IHRydWUgJiYgcmVnaW9uS2V5ICE9PSBcIlwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbkJsb2NrID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSBjaGlsZC5jaGlsZHJlbi5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuY2hpbGRyZW5baV0uZGV0YWNoKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQuaW5uZXJUZXh0ID0gXCJcIjtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLmNsYXNzTGlzdC5hZGQoTXVsdGlDb2x1bW5MYXlvdXRDU1MuUmVnaW9uUm9vdENvbnRhaW5lckRpdik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZW5kZXJFcnJvclJlZ2lvbiA9IGNoaWxkLmNyZWF0ZURpdih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHM6IGAke011bHRpQ29sdW1uTGF5b3V0Q1NTLlJlZ2lvbkVycm9yQ29udGFpbmVyRGl2fSwgJHtNdWx0aUNvbHVtblN0eWxlQ1NTLlJlZ2lvbkVycm9yTWVzc2FnZX1gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlbmRlckNvbHVtblJlZ2lvbiA9IGNoaWxkLmNyZWF0ZURpdih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHM6IE11bHRpQ29sdW1uTGF5b3V0Q1NTLlJlZ2lvbkNvbnRlbnRDb250YWluZXJEaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ2lvbmFsQ29udGFpbmVyOiBSZWdpb25NYW5hZ2VyQ29udGFpbmVyID0gZmlsZURPTU1hbmFnZXIuZ2V0UmVnaW9uYWxDb250YWluZXIocmVnaW9uS2V5KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlZ2lvbmFsQ29udGFpbmVyID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJFcnJvclJlZ2lvbi5pbm5lclRleHQgPSBcIkVycm9yIHJlbmRlcmluZyBtdWx0aS1jb2x1bW4gcmVnaW9uLlxcblBsZWFzZSBjbG9zZSBhbmQgcmVvcGVuIHRoZSBmaWxlLCB0aGVuIG1ha2Ugc3VyZSB5b3UgYXJlIGluIHJlYWRpbmcgbW9kZSBiZWZvcmUgZXhwb3J0aW5nLlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJlZ2lvbmFsTWFuYWdlcjogUmVnaW9uTWFuYWdlciA9IHJlZ2lvbmFsQ29udGFpbmVyLmdldFJlZ2lvbigpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW9uYWxNYW5hZ2VyLmV4cG9ydFJlZ2lvbkVsZW1lbnRzVG9QREYocmVuZGVyQ29sdW1uUmVnaW9uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlDb2x1bW5QYXJzZXIuY29udGFpbnNFbmRUYWcoY2hpbGQudGV4dENvbnRlbnQpID09PSB0cnVlKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbkJsb2NrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjaGlsZHJlblRvUmVtb3ZlLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjaGlsZHJlblRvUmVtb3ZlLmZvckVhY2goY2hpbGQgPT4ge1xyXG4gICAgICAgICAgICBpZihjaGlsZC5wYXJlbnRFbGVtZW50ID09PSBlbCkge1xyXG4gICAgICAgICAgICAgICAgZWwucmVtb3ZlQ2hpbGQoY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hlY2tFeHBvcnRpbmcoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcclxuXHJcbiAgICAgICAgaWYoZWxlbWVudCA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcInByaW50XCIpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYoZWxlbWVudC5wYXJlbnROb2RlICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoZWNrRXhwb3J0aW5nKGVsZW1lbnQucGFyZW50RWxlbWVudCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0dXBNYXJrZG93bkNvZGVibG9ja1Bvc3RQcm9jZXNzb3Ioc3RhcnRTdHI6IHN0cmluZykge1xyXG5cclxuICAgICAgICB0aGlzLnJlZ2lzdGVyTWFya2Rvd25Db2RlQmxvY2tQcm9jZXNzb3Ioc3RhcnRTdHIsIChzb3VyY2UsIGVsLCBjdHgpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZVBhdGggPSBjdHguc291cmNlUGF0aDtcclxuICAgICAgICBcclxuICAgICAgICAgICAgLy8gU2V0IHVwIG91ciBDU1Mgc28gdGhhdCB0aGUgY29kZWJsb2NrIG9ubHkgcmVuZGVycyB0aGlzIGRhdGEgaW4gcmVhZGluZyBtb2RlXHJcbiAgICAgICAgICAgIC8vIHNvdXJjZS9saXZlIHByZXZpZXcgbW9kZSBpcyBoYW5kbGVkIGJ5IHRoZSBDTTYgaW1wbGVtZW50YXRpb24uXHJcbiAgICAgICAgICAgIGVsLnBhcmVudEVsZW1lbnQ/LmFkZENsYXNzKFwicHJlaXZldy1tY20tc3RhcnQtYmxvY2tcIik7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIFRvIGRldGVybWluZSB3aGF0IGtpbmQgb2YgdmlldyB3ZSBhcmUgcmVuZGVyaW5nIGluIHdlIG5lZWQgYSBtYXJrZG93biBsZWFmLlxyXG4gICAgICAgICAgICAvLyBSZWFsbHkgdGhpcyBzaG91bGQgbmV2ZXIgcmV0dXJuIGhlcmUgc2luY2UgcmVuZGVyaW5nIGlzIG9ubHkgZG9uZSBpbiBtYXJrZG93biBsZWF2ZXMuXHJcbiAgICAgICAgICAgIGxldCBtYXJrZG93bkxlYXZlcyA9IGFwcC53b3Jrc3BhY2UuZ2V0TGVhdmVzT2ZUeXBlKFwibWFya2Rvd25cIik7XHJcbiAgICAgICAgICAgIGlmKG1hcmtkb3duTGVhdmVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIENoZWNrIHRoZSB0eXBlIG9mIHRoZSBsZWFmXHJcbiAgICAgICAgICAgIGxldCBmb3VuZEZpbGVMZWFmID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBtYXJrZG93bkxlYXZlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVMZWFmID0gZ2V0RmlsZUxlYWYoc291cmNlUGF0aCk7XHJcbiAgICAgICAgICAgICAgICBpZihmaWxlTGVhZiA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZm91bmRGaWxlTGVhZiA9IHRydWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZihnZXRMZWFmU291cmNlTW9kZShmaWxlTGVhZikgPT09IFwic291cmNlXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgaWYodGhpcy5nbG9iYWxNYW5hZ2VyID09PSBudWxsIHx8IHRoaXMuZ2xvYmFsTWFuYWdlciA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkdsb2JhbCBtYW5hZ2VyIGlzIHVuZGVmaW5lZD9cIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBmaWxlRE9NTWFuYWdlciA9IHRoaXMuZ2xvYmFsTWFuYWdlci5nZXRGaWxlTWFuYWdlcihzb3VyY2VQYXRoKTtcclxuICAgICAgICAgICAgaWYoZmlsZURPTU1hbmFnZXIgPT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8gU2V0IGZpbGUgdG8gaGF2ZSBzdGFydCB0YWcuXHJcbiAgICAgICAgICAgIGZpbGVET01NYW5hZ2VyLnNldEhhc1N0YXJ0VGFnKCk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIEdldCB0aGUgaW5mbyBmb3Igb3VyIGN1cnJlbnQgY29udGV4dCBhbmQgdGhlbiBjaGVja1xyXG4gICAgICAgICAgICAvLyBpZiB0aGUgZW50aXJlIHRleHQgY29udGFpbnMgYSBzdGFydCB0YWcuIElmIHRoZXJlIGlzXHJcbiAgICAgICAgICAgIC8vIG5vIHN0YXJ0IHRhZyBpbiB0aGUgZG9jdW1lbnQgd2UgY2FuIGp1c3QgcmV0dXJuIGFuZFxyXG4gICAgICAgICAgICAvLyBpZ25vcmUgdGhlIHJlc3Qgb2YgdGhlIHBhcnNpbmcuXHJcbiAgICAgICAgICAgIGxldCBpbmZvID0gY3R4LmdldFNlY3Rpb25JbmZvKGVsKTtcclxuICAgICAgICBcclxuICAgICAgICAgICAgLyoqXHJcbiAgICAgICAgICAgICAqIFdlIG5lZWQgdGhlIGNvbnRleHQgaW5mbyB0byBwcm9wZXJseSBwYXJzZSBzbyByZXR1cm5pbmcgaGVyZSBcclxuICAgICAgICAgICAgICogaW5mbyBpcyBudWxsLiBUT0RPOiBTZXQgZXJyb3IgaW4gdmlldyBpZiB0aGlzIG9jY3Vycy5cclxuICAgICAgICAgICAgICovXHJcbiAgICAgICAgICAgIGlmKCFpbmZvKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgLyoqIFxyXG4gICAgICAgICAgICAgKiBTZXQgdXAgdGhlIGN1cnJlbnQgZWxlbWVudCB0byBhY3QgYXMgdGhlIHBhcmVudCBmb3IgdGhlIFxyXG4gICAgICAgICAgICAgKiBtdWx0aS1jb2x1bW4gcmVnaW9uLlxyXG4gICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgZWwuY2xhc3NMaXN0LmFkZChNdWx0aUNvbHVtbkxheW91dENTUy5SZWdpb25Sb290Q29udGFpbmVyRGl2KVxyXG4gICAgICAgICAgICBsZXQgcmVuZGVyRXJyb3JSZWdpb24gPSBlbC5jcmVhdGVEaXYoe1xyXG4gICAgICAgICAgICAgICAgY2xzOiBgJHtNdWx0aUNvbHVtbkxheW91dENTUy5SZWdpb25FcnJvckNvbnRhaW5lckRpdn0gJHtNdWx0aUNvbHVtblN0eWxlQ1NTLlJlZ2lvbkVycm9yTWVzc2FnZX1gLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgbGV0IHJlbmRlckNvbHVtblJlZ2lvbiA9IGVsLmNyZWF0ZURpdih7XHJcbiAgICAgICAgICAgICAgICBjbHM6IE11bHRpQ29sdW1uTGF5b3V0Q1NTLlJlZ2lvbkNvbnRlbnRDb250YWluZXJEaXZcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICBcclxuICAgICAgICAgICAgbGV0IHJlZ2lvbktleSA9IHBhcnNlU3RhcnRSZWdpb25Db2RlQmxvY2tJRChzb3VyY2UpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgY3JlYXRlTmV3UmVnaW9uTWFuYWdlciA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmKGZpbGVET01NYW5hZ2VyLmNoZWNrS2V5RXhpc3RzKHJlZ2lvbktleSkgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgY3JlYXRlTmV3UmVnaW9uTWFuYWdlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgbGV0IHsgbnVtYmVyT2ZUYWdzLCBrZXlzIH0gPSBtdWx0aUNvbHVtblBhcnNlci5jb3VudFN0YXJ0VGFncyhpbmZvLnRleHQpO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IG51bU1hdGNoZXMgPSAwO1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpID0gMDsgaSA8IG51bWJlck9mVGFnczsgaSsrKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQmVjYXVzZSB3ZSBjaGVja2VkIGlmIGtleSBleGlzdHMgb25lIG9mIHRoZXNlIGhhcyB0byBtYXRjaC5cclxuICAgICAgICAgICAgICAgICAgICBpZihrZXlzW2ldID09PSByZWdpb25LZXkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbnVtTWF0Y2hlcysrO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBkaXNwbGF5IGFuIGVycm9yIGlmIHRoZXJlIGFyZSBtb3JlIHRoYW4gMiBvZiB0aGUgc2FtZSBpZCBhY3Jvc3NcclxuICAgICAgICAgICAgICAgIC8vIHRoZSB3aG9sZSBkb2N1bWVudC4gVGhpcyBwcmV2ZW50cyBlcnJvcyB3aGVuIG9ic2lkaWFuIHJlbG9hZHMgdGhlIHdob2xlIGRvY3VtZW50XHJcbiAgICAgICAgICAgICAgICAvLyBhbmQgdGhlcmUgYXJlIHR3byBvZiB0aGUgc2FtZSBrZXkgaW4gdGhlIG1hcC5cclxuICAgICAgICAgICAgICAgIGlmKG51bU1hdGNoZXMgPj0gMikge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJlZ2lvbktleSA9PT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJFcnJvclJlZ2lvbi5pbm5lclRleHQgPSBcIkZvdW5kIG11bHRpcGxlIHJlZ2lvbnMgd2l0aCBlbXB0eSBJRHMuIFBsZWFzZSBzZXQgYSB1bmlxdWUgSUQgYWZ0ZXIgZWFjaCBzdGFydCB0YWcuXFxuRUc6ICc9PT0gbXVsdGktY29sdW1uLXN0YXJ0OiByYW5kb21JRCdcXG5PciB1c2UgJ0ZpeCBNaXNzaW5nIElEcycgaW4gdGhlIGNvbW1hbmQgcGFsZXR0ZSBhbmQgcmVsb2FkIHRoZSBkb2N1bWVudC5cIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRXJyb3JSZWdpb24uaW5uZXJUZXh0ID0gXCJSZWdpb24gSUQgYWxyZWFkeSBleGlzdHMgaW4gZG9jdW1lbnQsIHBsZWFzZSBzZXQgYSB1bmlxdWUgSUQuXFxuRUc6ICc9PT0gbXVsdGktY29sdW1uLXN0YXJ0OiByYW5kb21JRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWwuaWQgPSBgTXVsdGlDb2x1bW5JRDoke3JlZ2lvbktleX1gXHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIElmIHNvbWV0aGluZyBjaGFuZ2VzIGluIHRoZSBjb2RlYmxvY2sgd2UgZG9udCBuZWNlc3NhcmlseSB3YW50IHRvIHVwZGF0ZSBvdXJcclxuICAgICAgICAgICAgLy8gb2xkIHJlZmVyZW5jZSB0byB0aGUgcmVnaW9uIG1hbmFnZXIuIFRoaXMgY291bGQgYmUgYSBwb3RlbnRpYWwgYnVnIGFyZWEuXHJcbiAgICAgICAgICAgIGlmKGNyZWF0ZU5ld1JlZ2lvbk1hbmFnZXIgPT09IHRydWUpIHtcclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyByZWdpb25hbCBtYW5hZ2VyLlxyXG4gICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRNYXJrZG93blJlbmRlcmVyID0gbmV3IE1hcmtkb3duUmVuZGVyQ2hpbGQoZWwpO1xyXG4gICAgICAgICAgICAgICAgZmlsZURPTU1hbmFnZXIuY3JlYXRlUmVnaW9uYWxNYW5hZ2VyKHJlZ2lvbktleSwgZWwsIHJlbmRlckVycm9yUmVnaW9uLCByZW5kZXJDb2x1bW5SZWdpb24pO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgLy8gU2V0IHVwIHRoZSBvbiB1bmxvYWQgY2FsbGJhY2suIFRoaXMgY2FuIGJlIGNhbGxlZCBpZiB0aGUgdXNlciBjaGFuZ2VzXHJcbiAgICAgICAgICAgICAgICAvLyB0aGUgc3RhcnQvc2V0dGluZ3MgY29kZWJsb2NrIGluIGFueSB3YXkuIFdlIG9ubHkgd2FudCB0byB1bmxvYWRcclxuICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBmaWxlIGlzIGJlaW5nIHJlbW92ZWQgZnJvbSB2aWV3LlxyXG4gICAgICAgICAgICAgICAgZWxlbWVudE1hcmtkb3duUmVuZGVyZXIub251bmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZmlsZURPTU1hbmFnZXIgJiYgZmlsZVN0aWxsSW5WaWV3KHNvdXJjZVBhdGgpID09PSBmYWxzZSkge1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmRlYnVnKFwiRmlsZSBub3QgaW4gYW55IG1hcmtkb3duIGxlYWYuIFJlbW92aW5nIHJlZ2lvbiBmcm9tIGRvbSBtYW5hZ2VyLlwiKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlRE9NTWFuYWdlci5yZW1vdmVSZWdpb24ocmVnaW9uS2V5KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgY3R4LmFkZENoaWxkKGVsZW1lbnRNYXJrZG93blJlbmRlcmVyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBsZXQgcmVnaW9uYWxNYW5hZ2VyQ29udGFpbmVyID0gZmlsZURPTU1hbmFnZXIuZ2V0UmVnaW9uYWxDb250YWluZXIocmVnaW9uS2V5KTtcclxuICAgICAgICAgICAgaWYocmVnaW9uYWxNYW5hZ2VyQ29udGFpbmVyICE9PSBudWxsKSB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBsZXQgcmVnaW9uYWxNYW5hZ2VyID0gcmVnaW9uYWxNYW5hZ2VyQ29udGFpbmVyLnNldFJlZ2lvblNldHRpbmdzKHNvdXJjZSk7XHJcbiAgICAgICAgICAgICAgICByZWdpb25hbE1hbmFnZXIucmVnaW9uUGFyZW50ID0gZWw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG59XHJcblxyXG5cclxuZXhwb3J0IHR5cGUgbmVhcmJ5U2libGluZ3MgPSB7IFxyXG4gICAgc2libGluZ3NBYm92ZTogSFRNTERpdkVsZW1lbnQsXHJcbiAgICBjdXJyZW50T2JqZWN0OiBET01PYmplY3QsIFxyXG59XHJcbmZ1bmN0aW9uIHJlbmRlck1hcmtkb3duRnJvbUxpbmVzKG1kTGluZXM6IHN0cmluZ1tdLCBzb3VyY2VQYXRoOiBzdHJpbmcpOiBIVE1MRGl2RWxlbWVudCB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXZSByZS1yZW5kZXIgYWxsIG9mIHRoZSBpdGVtcyBhYm92ZSBvdXIgZWxlbWVudCwgdW50aWwgdGhlIHN0YXJ0IHRhZywgXHJcbiAgICAgKiBzbyB3ZSBjYW4gZGV0ZXJtaW5lIHdoZXJlIHRvIHBsYWNlIHRoZSBuZXcgaXRlbSBpbiB0aGUgbWFuYWdlci5cclxuICAgICAqIFxyXG4gICAgICogVE9ETzogQ2FuIHJlZHVjZSB0aGUgYW1vdW50IG5lZWRpbmcgdG8gYmUgcmVuZGVyZWQgYnkgb25seSByZW5kZXJpbmcgdG9cclxuICAgICAqIHRoZSBzdGFydCB0YWcgb3IgYSBjb2x1bW4tYnJlYWsgd2hpY2hldmVyIGlzIGNsb3Nlci5cclxuICAgICAqL1xyXG4gICAgbGV0IHNpYmxpbmdzID0gY3JlYXRlRGl2KCk7XHJcbiAgICBsZXQgbWFya2Rvd25SZW5kZXJDaGlsZCA9IG5ldyBNYXJrZG93blJlbmRlckNoaWxkKFxyXG4gICAgICAgIHNpYmxpbmdzXHJcbiAgICApO1xyXG4gICAgTWFya2Rvd25SZW5kZXJlci5yZW5kZXJNYXJrZG93bihcclxuICAgICAgICBtZExpbmVzLnJlZHVjZSgocHJldiwgY3VycmVudCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJldiArIFwiXFxuXCIgICsgY3VycmVudDtcclxuICAgICAgICB9LCBcIlwiKSxcclxuICAgICAgICBzaWJsaW5ncyxcclxuICAgICAgICBzb3VyY2VQYXRoLFxyXG4gICAgICAgIG1hcmtkb3duUmVuZGVyQ2hpbGRcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuIHNpYmxpbmdzO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJNYXJrZG93blJlbmRlckNoaWxkIiwiV2lkZ2V0VHlwZSIsIk1hcmtkb3duUmVuZGVyZXIiLCJURmlsZSIsIlN0YXRlRmllbGQiLCJEZWNvcmF0aW9uIiwiUmFuZ2VTZXRCdWlsZGVyIiwic3ludGF4VHJlZSIsInRva2VuQ2xhc3NOb2RlUHJvcCIsIkVkaXRvclZpZXciLCJlZGl0b3JWaWV3RmllbGQiLCJQbHVnaW4iLCJOb3RpY2UiLCJtdWx0aUNvbHVtblBhcnNlci5maW5kU3RhcnRDb2RlYmxvY2siLCJtdWx0aUNvbHVtblBhcnNlci5pc1N0YXJ0VGFnV2l0aElEIiwibXVsdGlDb2x1bW5QYXJzZXIuY29udGFpbnNTdGFydFRhZyIsIm11bHRpQ29sdW1uUGFyc2VyLmNvbnRhaW5zU3RhcnRDb2RlQmxvY2siLCJtdWx0aUNvbHVtblBhcnNlci5nZXRTdGFydEJsb2NrQWJvdmVMaW5lIiwibXVsdGlDb2x1bW5QYXJzZXIuY291bnRTdGFydFRhZ3MiLCJtdWx0aUNvbHVtblBhcnNlci5nZXRTdGFydEJsb2NrT3JDb2RlYmxvY2tBYm92ZUxpbmUiLCJtdWx0aUNvbHVtblBhcnNlci5nZXRFbmRCbG9ja0JlbG93IiwibXVsdGlDb2x1bW5QYXJzZXIuY29udGFpbnNFbmRUYWciLCJtdWx0aUNvbHVtblBhcnNlci5jb250YWluc0NvbEVuZFRhZyIsIm11bHRpQ29sdW1uUGFyc2VyLmNvbnRhaW5zQ29sU2V0dGluZ3NUYWciLCJtdWx0aUNvbHVtblBhcnNlci5nZXRTdGFydFRhZ0tleSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXVEQTtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtBQUNoSCxJQUFJLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLE9BQU8sQ0FBQyxFQUFFLFVBQVUsT0FBTyxFQUFFLE1BQU0sRUFBRTtBQUMvRCxRQUFRLFNBQVMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDbkcsUUFBUSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7QUFDdEcsUUFBUSxTQUFTLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUU7QUFDdEgsUUFBUSxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxJQUFJLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUUsS0FBSyxDQUFDLENBQUM7QUFDUDs7QUM3RUE7Ozs7OztBQU1HO0FBRUgsSUFBWSxZQU9YLENBQUE7QUFQRCxDQUFBLFVBQVksWUFBWSxFQUFBO0FBQ3BCLElBQUEsWUFBQSxDQUFBLFlBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFPLENBQUE7QUFDUCxJQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsSUFBRSxDQUFBO0FBQ0YsSUFBQSxZQUFBLENBQUEsWUFBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLE1BQUksQ0FBQTtBQUNKLElBQUEsWUFBQSxDQUFBLFlBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFRLENBQUE7QUFDUixJQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsS0FBRyxDQUFBO0FBQ0gsSUFBQSxZQUFBLENBQUEsWUFBQSxDQUFBLE9BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLE9BQUssQ0FBQTtBQUNULENBQUMsRUFQVyxZQUFZLEtBQVosWUFBWSxHQU92QixFQUFBLENBQUEsQ0FBQSxDQUFBO0FBRUQsSUFBWSxZQU9YLENBQUE7QUFQRCxDQUFBLFVBQVksWUFBWSxFQUFBO0FBQ3BCLElBQUEsWUFBQSxDQUFBLFlBQUEsQ0FBQSxTQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxTQUFPLENBQUE7QUFDUCxJQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsSUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsSUFBRSxDQUFBO0FBQ0YsSUFBQSxZQUFBLENBQUEsWUFBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLE1BQUksQ0FBQTtBQUNKLElBQUEsWUFBQSxDQUFBLFlBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFRLENBQUE7QUFDUixJQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsS0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsS0FBRyxDQUFBO0FBQ0gsSUFBQSxZQUFBLENBQUEsWUFBQSxDQUFBLE9BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLE9BQUssQ0FBQTtBQUNULENBQUMsRUFQVyxZQUFZLEtBQVosWUFBWSxHQU92QixFQUFBLENBQUEsQ0FBQSxDQUFBO0FBRUQsSUFBWSxZQVVYLENBQUE7QUFWRCxDQUFBLFVBQVksWUFBWSxFQUFBO0FBQ3BCLElBQUEsWUFBQSxDQUFBLFlBQUEsQ0FBQSxVQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxVQUFRLENBQUE7QUFDUixJQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsTUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsTUFBSSxDQUFBO0FBQ0osSUFBQSxZQUFBLENBQUEsWUFBQSxDQUFBLE9BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLE9BQUssQ0FBQTtBQUNMLElBQUEsWUFBQSxDQUFBLFlBQUEsQ0FBQSxRQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxRQUFNLENBQUE7QUFDTixJQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsUUFBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsUUFBTSxDQUFBO0FBQ04sSUFBQSxZQUFBLENBQUEsWUFBQSxDQUFBLFFBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLFFBQU0sQ0FBQTtBQUNOLElBQUEsWUFBQSxDQUFBLFlBQUEsQ0FBQSxPQUFBLENBQUEsR0FBQSxDQUFBLENBQUEsR0FBQSxPQUFLLENBQUE7QUFDTCxJQUFBLFlBQUEsQ0FBQSxZQUFBLENBQUEsT0FBQSxDQUFBLEdBQUEsQ0FBQSxDQUFBLEdBQUEsT0FBSyxDQUFBO0FBQ0wsSUFBQSxZQUFBLENBQUEsWUFBQSxDQUFBLE1BQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQSxHQUFBLE1BQUksQ0FBQTtBQUNSLENBQUMs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 diff --git a/.obsidian/plugins/multi-column-markdown/manifest.json b/.obsidian/plugins/multi-column-markdown/manifest.json index 38067c2c..e806c455 100644 --- a/.obsidian/plugins/multi-column-markdown/manifest.json +++ b/.obsidian/plugins/multi-column-markdown/manifest.json @@ -1,7 +1,7 @@ { "id": "multi-column-markdown", "name": "Multi-Column Markdown", - "version": "0.7.2", + "version": "0.7.3", "minAppVersion": "0.15.9", "description": "This plugin adds functionality to create markdown documents with multiple columns of content viewable within Obsidian's preview mode", "author": "Cameron Robinson", diff --git a/.obsidian/plugins/multi-column-markdown/styles.css b/.obsidian/plugins/multi-column-markdown/styles.css index c333dcb9..e9503a17 100644 --- a/.obsidian/plugins/multi-column-markdown/styles.css +++ b/.obsidian/plugins/multi-column-markdown/styles.css @@ -13,6 +13,9 @@ .mcm-single-column-large { width: 75%; } +.mcm-single-column-full { + width: 100%; +} /* ----------------------------------- */ diff --git a/.obsidian/plugins/obsidian-activity-history/data.json b/.obsidian/plugins/obsidian-activity-history/data.json index 2ccf4fd1..b8b3154f 100644 --- a/.obsidian/plugins/obsidian-activity-history/data.json +++ b/.obsidian/plugins/obsidian-activity-history/data.json @@ -12,8 +12,8 @@ "checkpointList": [ { "path": "/", - "date": "2022-09-30", - "size": 7508435 + "date": "2022-10-02", + "size": 7642225 } ], "activityHistory": [ @@ -1074,7 +1074,15 @@ }, { "date": "2022-09-30", - "value": 16083 + "value": 16395 + }, + { + "date": "2022-10-01", + "value": 8769 + }, + { + "date": "2022-10-02", + "value": 127805 } ] } diff --git a/.obsidian/plugins/obsidian-advanced-uri/main.js b/.obsidian/plugins/obsidian-advanced-uri/main.js index cf9db0cf..d10dc625 100644 --- a/.obsidian/plugins/obsidian-advanced-uri/main.js +++ b/.obsidian/plugins/obsidian-advanced-uri/main.js @@ -37,6 +37,17 @@ function __extends(d, b) { d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); } +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; + function __awaiter(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { @@ -3736,6 +3747,7 @@ var AdvancedURI = /** @class */ (function (_super) { for (parameter in parameters) { parameters[parameter] = decodeURIComponent(parameters[parameter]); } + this.lastParameters = __assign({}, parameters); if (parameters.uid) { res = (_c = this.getFileFromUID(parameters.uid)) === null || _c === void 0 ? void 0 : _c.path; if (res != undefined) { @@ -4236,7 +4248,7 @@ var AdvancedURI = /** @class */ (function (_super) { fileIsAlreadyOpened = false; this.app.workspace.iterateAllLeaves(function (leaf) { var _a; - if (((_a = leaf.view.file) === null || _a === void 0 ? void 0 : _a.path) === parameters.filepath) { + if (((_a = leaf.view.file) === null || _a === void 0 ? void 0 : _a.path) === parameters.filepath && leaf.width > 0) { fileIsAlreadyOpened = true; _this.app.workspace.setActiveLeaf(leaf, true, true); } @@ -4754,4 +4766,4 @@ var AdvancedURI = /** @class */ (function (_super) { }(obsidian.Plugin)); module.exports = AdvancedURI; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3QvZmVhdGhlci5qcyIsIm5vZGVfbW9kdWxlcy9vYnNpZGlhbi1jb21tdW5pdHktbGliL2Rpc3QvdXRpbHMuanMiLCJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGFpbHktbm90ZXMtaW50ZXJmYWNlL2Rpc3QvbWFpbi5qcyIsIm5vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvcm5nLmpzIiwibm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9yZWdleC5qcyIsIm5vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdmFsaWRhdGUuanMiLCJub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3N0cmluZ2lmeS5qcyIsIm5vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjQuanMiLCJzcmMvZGFpbHlfbm90ZV91dGlscy50cyIsInNyYy9tb2RhbHMvY29tbWFuZF9tb2RhbC50cyIsInNyYy9tb2RhbHMvZW50ZXJfZGF0YV9tb2RhbC50cyIsInNyYy9tb2RhbHMvZmlsZV9tb2RhbC50cyIsInNyYy9tb2RhbHMvcmVwbGFjZV9tb2RhbC50cyIsInNyYy9tb2RhbHMvc2VhcmNoX21vZGFsLnRzIiwic3JjL3NldHRpbmdzLnRzIiwic3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9KTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcclxufVxyXG4iLCIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJmZWF0aGVyXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImZlYXRoZXJcIl0gPSBmYWN0b3J5KCk7XG59KSh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMCk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovICh7XG5cbi8qKiovIFwiLi9kaXN0L2ljb25zLmpzb25cIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9kaXN0L2ljb25zLmpzb24gKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgZXhwb3J0cyBwcm92aWRlZDogYWN0aXZpdHksIGFpcnBsYXksIGFsZXJ0LWNpcmNsZSwgYWxlcnQtb2N0YWdvbiwgYWxlcnQtdHJpYW5nbGUsIGFsaWduLWNlbnRlciwgYWxpZ24tanVzdGlmeSwgYWxpZ24tbGVmdCwgYWxpZ24tcmlnaHQsIGFuY2hvciwgYXBlcnR1cmUsIGFyY2hpdmUsIGFycm93LWRvd24tY2lyY2xlLCBhcnJvdy1kb3duLWxlZnQsIGFycm93LWRvd24tcmlnaHQsIGFycm93LWRvd24sIGFycm93LWxlZnQtY2lyY2xlLCBhcnJvdy1sZWZ0LCBhcnJvdy1yaWdodC1jaXJjbGUsIGFycm93LXJpZ2h0LCBhcnJvdy11cC1jaXJjbGUsIGFycm93LXVwLWxlZnQsIGFycm93LXVwLXJpZ2h0LCBhcnJvdy11cCwgYXQtc2lnbiwgYXdhcmQsIGJhci1jaGFydC0yLCBiYXItY2hhcnQsIGJhdHRlcnktY2hhcmdpbmcsIGJhdHRlcnksIGJlbGwtb2ZmLCBiZWxsLCBibHVldG9vdGgsIGJvbGQsIGJvb2stb3BlbiwgYm9vaywgYm9va21hcmssIGJveCwgYnJpZWZjYXNlLCBjYWxlbmRhciwgY2FtZXJhLW9mZiwgY2FtZXJhLCBjYXN0LCBjaGVjay1jaXJjbGUsIGNoZWNrLXNxdWFyZSwgY2hlY2ssIGNoZXZyb24tZG93biwgY2hldnJvbi1sZWZ0LCBjaGV2cm9uLXJpZ2h0LCBjaGV2cm9uLXVwLCBjaGV2cm9ucy1kb3duLCBjaGV2cm9ucy1sZWZ0LCBjaGV2cm9ucy1yaWdodCwgY2hldnJvbnMtdXAsIGNocm9tZSwgY2lyY2xlLCBjbGlwYm9hcmQsIGNsb2NrLCBjbG91ZC1kcml6emxlLCBjbG91ZC1saWdodG5pbmcsIGNsb3VkLW9mZiwgY2xvdWQtcmFpbiwgY2xvdWQtc25vdywgY2xvdWQsIGNvZGUsIGNvZGVwZW4sIGNvZGVzYW5kYm94LCBjb2ZmZWUsIGNvbHVtbnMsIGNvbW1hbmQsIGNvbXBhc3MsIGNvcHksIGNvcm5lci1kb3duLWxlZnQsIGNvcm5lci1kb3duLXJpZ2h0LCBjb3JuZXItbGVmdC1kb3duLCBjb3JuZXItbGVmdC11cCwgY29ybmVyLXJpZ2h0LWRvd24sIGNvcm5lci1yaWdodC11cCwgY29ybmVyLXVwLWxlZnQsIGNvcm5lci11cC1yaWdodCwgY3B1LCBjcmVkaXQtY2FyZCwgY3JvcCwgY3Jvc3NoYWlyLCBkYXRhYmFzZSwgZGVsZXRlLCBkaXNjLCBkaXZpZGUtY2lyY2xlLCBkaXZpZGUtc3F1YXJlLCBkaXZpZGUsIGRvbGxhci1zaWduLCBkb3dubG9hZC1jbG91ZCwgZG93bmxvYWQsIGRyaWJiYmxlLCBkcm9wbGV0LCBlZGl0LTIsIGVkaXQtMywgZWRpdCwgZXh0ZXJuYWwtbGluaywgZXllLW9mZiwgZXllLCBmYWNlYm9vaywgZmFzdC1mb3J3YXJkLCBmZWF0aGVyLCBmaWdtYSwgZmlsZS1taW51cywgZmlsZS1wbHVzLCBmaWxlLXRleHQsIGZpbGUsIGZpbG0sIGZpbHRlciwgZmxhZywgZm9sZGVyLW1pbnVzLCBmb2xkZXItcGx1cywgZm9sZGVyLCBmcmFtZXIsIGZyb3duLCBnaWZ0LCBnaXQtYnJhbmNoLCBnaXQtY29tbWl0LCBnaXQtbWVyZ2UsIGdpdC1wdWxsLXJlcXVlc3QsIGdpdGh1YiwgZ2l0bGFiLCBnbG9iZSwgZ3JpZCwgaGFyZC1kcml2ZSwgaGFzaCwgaGVhZHBob25lcywgaGVhcnQsIGhlbHAtY2lyY2xlLCBoZXhhZ29uLCBob21lLCBpbWFnZSwgaW5ib3gsIGluZm8sIGluc3RhZ3JhbSwgaXRhbGljLCBrZXksIGxheWVycywgbGF5b3V0LCBsaWZlLWJ1b3ksIGxpbmstMiwgbGluaywgbGlua2VkaW4sIGxpc3QsIGxvYWRlciwgbG9jaywgbG9nLWluLCBsb2ctb3V0LCBtYWlsLCBtYXAtcGluLCBtYXAsIG1heGltaXplLTIsIG1heGltaXplLCBtZWgsIG1lbnUsIG1lc3NhZ2UtY2lyY2xlLCBtZXNzYWdlLXNxdWFyZSwgbWljLW9mZiwgbWljLCBtaW5pbWl6ZS0yLCBtaW5pbWl6ZSwgbWludXMtY2lyY2xlLCBtaW51cy1zcXVhcmUsIG1pbnVzLCBtb25pdG9yLCBtb29uLCBtb3JlLWhvcml6b250YWwsIG1vcmUtdmVydGljYWwsIG1vdXNlLXBvaW50ZXIsIG1vdmUsIG11c2ljLCBuYXZpZ2F0aW9uLTIsIG5hdmlnYXRpb24sIG9jdGFnb24sIHBhY2thZ2UsIHBhcGVyY2xpcCwgcGF1c2UtY2lyY2xlLCBwYXVzZSwgcGVuLXRvb2wsIHBlcmNlbnQsIHBob25lLWNhbGwsIHBob25lLWZvcndhcmRlZCwgcGhvbmUtaW5jb21pbmcsIHBob25lLW1pc3NlZCwgcGhvbmUtb2ZmLCBwaG9uZS1vdXRnb2luZywgcGhvbmUsIHBpZS1jaGFydCwgcGxheS1jaXJjbGUsIHBsYXksIHBsdXMtY2lyY2xlLCBwbHVzLXNxdWFyZSwgcGx1cywgcG9ja2V0LCBwb3dlciwgcHJpbnRlciwgcmFkaW8sIHJlZnJlc2gtY2N3LCByZWZyZXNoLWN3LCByZXBlYXQsIHJld2luZCwgcm90YXRlLWNjdywgcm90YXRlLWN3LCByc3MsIHNhdmUsIHNjaXNzb3JzLCBzZWFyY2gsIHNlbmQsIHNlcnZlciwgc2V0dGluZ3MsIHNoYXJlLTIsIHNoYXJlLCBzaGllbGQtb2ZmLCBzaGllbGQsIHNob3BwaW5nLWJhZywgc2hvcHBpbmctY2FydCwgc2h1ZmZsZSwgc2lkZWJhciwgc2tpcC1iYWNrLCBza2lwLWZvcndhcmQsIHNsYWNrLCBzbGFzaCwgc2xpZGVycywgc21hcnRwaG9uZSwgc21pbGUsIHNwZWFrZXIsIHNxdWFyZSwgc3Rhciwgc3RvcC1jaXJjbGUsIHN1biwgc3VucmlzZSwgc3Vuc2V0LCB0YWJsZXQsIHRhZywgdGFyZ2V0LCB0ZXJtaW5hbCwgdGhlcm1vbWV0ZXIsIHRodW1icy1kb3duLCB0aHVtYnMtdXAsIHRvZ2dsZS1sZWZ0LCB0b2dnbGUtcmlnaHQsIHRvb2wsIHRyYXNoLTIsIHRyYXNoLCB0cmVsbG8sIHRyZW5kaW5nLWRvd24sIHRyZW5kaW5nLXVwLCB0cmlhbmdsZSwgdHJ1Y2ssIHR2LCB0d2l0Y2gsIHR3aXR0ZXIsIHR5cGUsIHVtYnJlbGxhLCB1bmRlcmxpbmUsIHVubG9jaywgdXBsb2FkLWNsb3VkLCB1cGxvYWQsIHVzZXItY2hlY2ssIHVzZXItbWludXMsIHVzZXItcGx1cywgdXNlci14LCB1c2VyLCB1c2VycywgdmlkZW8tb2ZmLCB2aWRlbywgdm9pY2VtYWlsLCB2b2x1bWUtMSwgdm9sdW1lLTIsIHZvbHVtZS14LCB2b2x1bWUsIHdhdGNoLCB3aWZpLW9mZiwgd2lmaSwgd2luZCwgeC1jaXJjbGUsIHgtb2N0YWdvbiwgeC1zcXVhcmUsIHgsIHlvdXR1YmUsIHphcC1vZmYsIHphcCwgem9vbS1pbiwgem9vbS1vdXQsIGRlZmF1bHQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUpIHtcblxubW9kdWxlLmV4cG9ydHMgPSB7XCJhY3Rpdml0eVwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMjIgMTIgMTggMTIgMTUgMjEgOSAzIDYgMTIgMiAxMlxcXCI+PC9wb2x5bGluZT5cIixcImFpcnBsYXlcIjpcIjxwYXRoIGQ9XFxcIk01IDE3SDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAyaC0xXFxcIj48L3BhdGg+PHBvbHlnb24gcG9pbnRzPVxcXCIxMiAxNSAxNyAyMSA3IDIxIDEyIDE1XFxcIj48L3BvbHlnb24+XCIsXCJhbGVydC1jaXJjbGVcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMTIuMDFcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPlwiLFwiYWxlcnQtb2N0YWdvblwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCI3Ljg2IDIgMTYuMTQgMiAyMiA3Ljg2IDIyIDE2LjE0IDE2LjE0IDIyIDcuODYgMjIgMiAxNi4xNCAyIDcuODYgNy44NiAyXFxcIj48L3BvbHlnb24+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxNlxcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiMTZcXFwiPjwvbGluZT5cIixcImFsZXJ0LXRyaWFuZ2xlXCI6XCI8cGF0aCBkPVxcXCJNMTAuMjkgMy44NkwxLjgyIDE4YTIgMiAwIDAgMCAxLjcxIDNoMTYuOTRhMiAyIDAgMCAwIDEuNzEtM0wxMy43MSAzLjg2YTIgMiAwIDAgMC0zLjQyIDB6XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiOVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTNcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxN1xcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiMTdcXFwiPjwvbGluZT5cIixcImFsaWduLWNlbnRlclwiOlwiPGxpbmUgeDE9XFxcIjE4XFxcIiB5MT1cXFwiMTBcXFwiIHgyPVxcXCI2XFxcIiB5Mj1cXFwiMTBcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMjFcXFwiIHkxPVxcXCI2XFxcIiB4Mj1cXFwiM1xcXCIgeTI9XFxcIjZcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMjFcXFwiIHkxPVxcXCIxNFxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCIxNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxOFxcXCIgeTE9XFxcIjE4XFxcIiB4Mj1cXFwiNlxcXCIgeTI9XFxcIjE4XFxcIj48L2xpbmU+XCIsXCJhbGlnbi1qdXN0aWZ5XCI6XCI8bGluZSB4MT1cXFwiMjFcXFwiIHkxPVxcXCIxMFxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCIxMFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjZcXFwiIHgyPVxcXCIzXFxcIiB5Mj1cXFwiNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjE0XFxcIiB4Mj1cXFwiM1xcXCIgeTI9XFxcIjE0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjIxXFxcIiB5MT1cXFwiMThcXFwiIHgyPVxcXCIzXFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT5cIixcImFsaWduLWxlZnRcIjpcIjxsaW5lIHgxPVxcXCIxN1xcXCIgeTE9XFxcIjEwXFxcIiB4Mj1cXFwiM1xcXCIgeTI9XFxcIjEwXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjIxXFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCI2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjIxXFxcIiB5MT1cXFwiMTRcXFwiIHgyPVxcXCIzXFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTdcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPlwiLFwiYWxpZ24tcmlnaHRcIjpcIjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjEwXFxcIiB4Mj1cXFwiN1xcXCIgeTI9XFxcIjEwXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjIxXFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCI2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjIxXFxcIiB5MT1cXFwiMTRcXFwiIHgyPVxcXCIzXFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMjFcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjdcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPlwiLFwiYW5jaG9yXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjVcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjIyXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCI4XFxcIj48L2xpbmU+PHBhdGggZD1cXFwiTTUgMTJIMmExMCAxMCAwIDAgMCAyMCAwaC0zXFxcIj48L3BhdGg+XCIsXCJhcGVydHVyZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIxNC4zMVxcXCIgeTE9XFxcIjhcXFwiIHgyPVxcXCIyMC4wNVxcXCIgeTI9XFxcIjE3Ljk0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjkuNjlcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMjEuMTdcXFwiIHkyPVxcXCI4XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjcuMzhcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjEzLjEyXFxcIiB5Mj1cXFwiMi4wNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI5LjY5XFxcIiB5MT1cXFwiMTZcXFwiIHgyPVxcXCIzLjk1XFxcIiB5Mj1cXFwiNi4wNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNC4zMVxcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMi44M1xcXCIgeTI9XFxcIjE2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE2LjYyXFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxMC44OFxcXCIgeTI9XFxcIjIxLjk0XFxcIj48L2xpbmU+XCIsXCJhcmNoaXZlXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIyMSA4IDIxIDIxIDMgMjEgMyA4XFxcIj48L3BvbHlsaW5lPjxyZWN0IHg9XFxcIjFcXFwiIHk9XFxcIjNcXFwiIHdpZHRoPVxcXCIyMlxcXCIgaGVpZ2h0PVxcXCI1XFxcIj48L3JlY3Q+PGxpbmUgeDE9XFxcIjEwXFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxNFxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJhcnJvdy1kb3duLWNpcmNsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9XFxcIjggMTIgMTIgMTYgMTYgMTJcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTZcXFwiPjwvbGluZT5cIixcImFycm93LWRvd24tbGVmdFwiOlwiPGxpbmUgeDE9XFxcIjE3XFxcIiB5MT1cXFwiN1xcXCIgeDI9XFxcIjdcXFwiIHkyPVxcXCIxN1xcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjE3IDE3IDcgMTcgNyA3XFxcIj48L3BvbHlsaW5lPlwiLFwiYXJyb3ctZG93bi1yaWdodFwiOlwiPGxpbmUgeDE9XFxcIjdcXFwiIHkxPVxcXCI3XFxcIiB4Mj1cXFwiMTdcXFwiIHkyPVxcXCIxN1xcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjE3IDcgMTcgMTcgNyAxN1xcXCI+PC9wb2x5bGluZT5cIixcImFycm93LWRvd25cIjpcIjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjVcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjE5XFxcIj48L2xpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTkgMTIgMTIgMTkgNSAxMlxcXCI+PC9wb2x5bGluZT5cIixcImFycm93LWxlZnQtY2lyY2xlXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxMFxcXCI+PC9jaXJjbGU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTIgOCA4IDEyIDEyIDE2XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIxNlxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiOFxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJhcnJvdy1sZWZ0XCI6XCI8bGluZSB4MT1cXFwiMTlcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjVcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjEyIDE5IDUgMTIgMTIgNVxcXCI+PC9wb2x5bGluZT5cIixcImFycm93LXJpZ2h0LWNpcmNsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9XFxcIjEyIDE2IDE2IDEyIDEyIDhcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT5cIixcImFycm93LXJpZ2h0XCI6XCI8bGluZSB4MT1cXFwiNVxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMTlcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjEyIDUgMTkgMTIgMTIgMTlcXFwiPjwvcG9seWxpbmU+XCIsXCJhcnJvdy11cC1jaXJjbGVcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48cG9seWxpbmUgcG9pbnRzPVxcXCIxNiAxMiAxMiA4IDggMTJcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMTZcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjhcXFwiPjwvbGluZT5cIixcImFycm93LXVwLWxlZnRcIjpcIjxsaW5lIHgxPVxcXCIxN1xcXCIgeTE9XFxcIjE3XFxcIiB4Mj1cXFwiN1xcXCIgeTI9XFxcIjdcXFwiPjwvbGluZT48cG9seWxpbmUgcG9pbnRzPVxcXCI3IDE3IDcgNyAxNyA3XFxcIj48L3BvbHlsaW5lPlwiLFwiYXJyb3ctdXAtcmlnaHRcIjpcIjxsaW5lIHgxPVxcXCI3XFxcIiB5MT1cXFwiMTdcXFwiIHgyPVxcXCIxN1xcXCIgeTI9XFxcIjdcXFwiPjwvbGluZT48cG9seWxpbmUgcG9pbnRzPVxcXCI3IDcgMTcgNyAxNyAxN1xcXCI+PC9wb2x5bGluZT5cIixcImFycm93LXVwXCI6XCI8bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxOVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiNVxcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjUgMTIgMTIgNSAxOSAxMlxcXCI+PC9wb2x5bGluZT5cIixcImF0LXNpZ25cIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjRcXFwiPjwvY2lyY2xlPjxwYXRoIGQ9XFxcIk0xNiA4djVhMyAzIDAgMCAwIDYgMHYtMWExMCAxMCAwIDEgMC0zLjkyIDcuOTRcXFwiPjwvcGF0aD5cIixcImF3YXJkXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjhcXFwiIHI9XFxcIjdcXFwiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9XFxcIjguMjEgMTMuODkgNyAyMyAxMiAyMCAxNyAyMyAxNS43OSAxMy44OFxcXCI+PC9wb2x5bGluZT5cIixcImJhci1jaGFydC0yXCI6XCI8bGluZSB4MT1cXFwiMThcXFwiIHkxPVxcXCIyMFxcXCIgeDI9XFxcIjE4XFxcIiB5Mj1cXFwiMTBcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyMFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI2XFxcIiB5MT1cXFwiMjBcXFwiIHgyPVxcXCI2XFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT5cIixcImJhci1jaGFydFwiOlwiPGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMjBcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjEwXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE4XFxcIiB5MT1cXFwiMjBcXFwiIHgyPVxcXCIxOFxcXCIgeTI9XFxcIjRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiNlxcXCIgeTE9XFxcIjIwXFxcIiB4Mj1cXFwiNlxcXCIgeTI9XFxcIjE2XFxcIj48L2xpbmU+XCIsXCJiYXR0ZXJ5LWNoYXJnaW5nXCI6XCI8cGF0aCBkPVxcXCJNNSAxOEgzYTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDMuMTlNMTUgNmgyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAyaC0zLjE5XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjIzXFxcIiB5MT1cXFwiMTNcXFwiIHgyPVxcXCIyM1xcXCIgeTI9XFxcIjExXFxcIj48L2xpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTEgNiA3IDEyIDEzIDEyIDkgMThcXFwiPjwvcG9seWxpbmU+XCIsXCJiYXR0ZXJ5XCI6XCI8cmVjdCB4PVxcXCIxXFxcIiB5PVxcXCI2XFxcIiB3aWR0aD1cXFwiMThcXFwiIGhlaWdodD1cXFwiMTJcXFwiIHJ4PVxcXCIyXFxcIiByeT1cXFwiMlxcXCI+PC9yZWN0PjxsaW5lIHgxPVxcXCIyM1xcXCIgeTE9XFxcIjEzXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIxMVxcXCI+PC9saW5lPlwiLFwiYmVsbC1vZmZcIjpcIjxwYXRoIGQ9XFxcIk0xMy43MyAyMWEyIDIgMCAwIDEtMy40NiAwXFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTE4LjYzIDEzQTE3Ljg5IDE3Ljg5IDAgMCAxIDE4IDhcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNNi4yNiA2LjI2QTUuODYgNS44NiAwIDAgMCA2IDhjMCA3LTMgOS0zIDloMTRcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTggOGE2IDYgMCAwIDAtOS4zMy01XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPlwiLFwiYmVsbFwiOlwiPHBhdGggZD1cXFwiTTE4IDhBNiA2IDAgMCAwIDYgOGMwIDctMyA5LTMgOWgxOHMtMy0yLTMtOVxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0xMy43MyAyMWEyIDIgMCAwIDEtMy40NiAwXFxcIj48L3BhdGg+XCIsXCJibHVldG9vdGhcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjYuNSA2LjUgMTcuNSAxNy41IDEyIDIzIDEyIDEgMTcuNSA2LjUgNi41IDE3LjVcXFwiPjwvcG9seWxpbmU+XCIsXCJib2xkXCI6XCI8cGF0aCBkPVxcXCJNNiA0aDhhNCA0IDAgMCAxIDQgNCA0IDQgMCAwIDEtNCA0SDZ6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTYgMTJoOWE0IDQgMCAwIDEgNCA0IDQgNCAwIDAgMS00IDRINnpcXFwiPjwvcGF0aD5cIixcImJvb2stb3BlblwiOlwiPHBhdGggZD1cXFwiTTIgM2g2YTQgNCAwIDAgMSA0IDR2MTRhMyAzIDAgMCAwLTMtM0gyelxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0yMiAzaC02YTQgNCAwIDAgMC00IDR2MTRhMyAzIDAgMCAxIDMtM2g3elxcXCI+PC9wYXRoPlwiLFwiYm9va1wiOlwiPHBhdGggZD1cXFwiTTQgMTkuNUEyLjUgMi41IDAgMCAxIDYuNSAxN0gyMFxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk02LjUgMkgyMHYyMEg2LjVBMi41IDIuNSAwIDAgMSA0IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJ6XFxcIj48L3BhdGg+XCIsXCJib29rbWFya1wiOlwiPHBhdGggZD1cXFwiTTE5IDIxbC03LTUtNyA1VjVhMiAyIDAgMCAxIDItMmgxMGEyIDIgMCAwIDEgMiAyelxcXCI+PC9wYXRoPlwiLFwiYm94XCI6XCI8cGF0aCBkPVxcXCJNMjEgMTZWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZ6XFxcIj48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz1cXFwiMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTZcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMjIuMDhcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJicmllZmNhc2VcIjpcIjxyZWN0IHg9XFxcIjJcXFwiIHk9XFxcIjdcXFwiIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIxNFxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PHBhdGggZD1cXFwiTTE2IDIxVjVhMiAyIDAgMCAwLTItMmgtNGEyIDIgMCAwIDAtMiAydjE2XFxcIj48L3BhdGg+XCIsXCJjYWxlbmRhclwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiNFxcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiMTZcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiMTZcXFwiIHkyPVxcXCI2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiOFxcXCIgeTI9XFxcIjZcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiM1xcXCIgeTE9XFxcIjEwXFxcIiB4Mj1cXFwiMjFcXFwiIHkyPVxcXCIxMFxcXCI+PC9saW5lPlwiLFwiY2FtZXJhLW9mZlwiOlwiPGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0yMSAyMUgzYTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDNtMy0zaDZsMiAzaDRhMiAyIDAgMCAxIDIgMnY5LjM0bS03LjcyLTIuMDZhNCA0IDAgMSAxLTUuNTYtNS41NlxcXCI+PC9wYXRoPlwiLFwiY2FtZXJhXCI6XCI8cGF0aCBkPVxcXCJNMjMgMTlhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDRsMi0zaDZsMiAzaDRhMiAyIDAgMCAxIDIgMnpcXFwiPjwvcGF0aD48Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEzXFxcIiByPVxcXCI0XFxcIj48L2NpcmNsZT5cIixcImNhc3RcIjpcIjxwYXRoIGQ9XFxcIk0yIDE2LjFBNSA1IDAgMCAxIDUuOSAyME0yIDEyLjA1QTkgOSAwIDAgMSA5Ljk1IDIwTTIgOFY2YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAyaC02XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjJcXFwiIHkxPVxcXCIyMFxcXCIgeDI9XFxcIjIuMDFcXFwiIHkyPVxcXCIyMFxcXCI+PC9saW5lPlwiLFwiY2hlY2stY2lyY2xlXCI6XCI8cGF0aCBkPVxcXCJNMjIgMTEuMDhWMTJhMTAgMTAgMCAxIDEtNS45My05LjE0XFxcIj48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz1cXFwiMjIgNCAxMiAxNC4wMSA5IDExLjAxXFxcIj48L3BvbHlsaW5lPlwiLFwiY2hlY2stc3F1YXJlXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCI5IDExIDEyIDE0IDIyIDRcXFwiPjwvcG9seWxpbmU+PHBhdGggZD1cXFwiTTIxIDEydjdhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDExXFxcIj48L3BhdGg+XCIsXCJjaGVja1wiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMjAgNiA5IDE3IDQgMTJcXFwiPjwvcG9seWxpbmU+XCIsXCJjaGV2cm9uLWRvd25cIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjYgOSAxMiAxNSAxOCA5XFxcIj48L3BvbHlsaW5lPlwiLFwiY2hldnJvbi1sZWZ0XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxNSAxOCA5IDEyIDE1IDZcXFwiPjwvcG9seWxpbmU+XCIsXCJjaGV2cm9uLXJpZ2h0XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCI5IDE4IDE1IDEyIDkgNlxcXCI+PC9wb2x5bGluZT5cIixcImNoZXZyb24tdXBcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjE4IDE1IDEyIDkgNiAxNVxcXCI+PC9wb2x5bGluZT5cIixcImNoZXZyb25zLWRvd25cIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjcgMTMgMTIgMTggMTcgMTNcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiNyA2IDEyIDExIDE3IDZcXFwiPjwvcG9seWxpbmU+XCIsXCJjaGV2cm9ucy1sZWZ0XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxMSAxNyA2IDEyIDExIDdcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTggMTcgMTMgMTIgMTggN1xcXCI+PC9wb2x5bGluZT5cIixcImNoZXZyb25zLXJpZ2h0XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxMyAxNyAxOCAxMiAxMyA3XFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjYgMTcgMTEgMTIgNiA3XFxcIj48L3BvbHlsaW5lPlwiLFwiY2hldnJvbnMtdXBcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjE3IDExIDEyIDYgNyAxMVxcXCI+PC9wb2x5bGluZT48cG9seWxpbmUgcG9pbnRzPVxcXCIxNyAxOCAxMiAxMyA3IDE4XFxcIj48L3BvbHlsaW5lPlwiLFwiY2hyb21lXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxMFxcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiNFxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjIxLjE3XFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiOFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIzLjk1XFxcIiB5MT1cXFwiNi4wNlxcXCIgeDI9XFxcIjguNTRcXFwiIHkyPVxcXCIxNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMC44OFxcXCIgeTE9XFxcIjIxLjk0XFxcIiB4Mj1cXFwiMTUuNDZcXFwiIHkyPVxcXCIxNFxcXCI+PC9saW5lPlwiLFwiY2lyY2xlXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxMFxcXCI+PC9jaXJjbGU+XCIsXCJjbGlwYm9hcmRcIjpcIjxwYXRoIGQ9XFxcIk0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMlxcXCI+PC9wYXRoPjxyZWN0IHg9XFxcIjhcXFwiIHk9XFxcIjJcXFwiIHdpZHRoPVxcXCI4XFxcIiBoZWlnaHQ9XFxcIjRcXFwiIHJ4PVxcXCIxXFxcIiByeT1cXFwiMVxcXCI+PC9yZWN0PlwiLFwiY2xvY2tcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48cG9seWxpbmUgcG9pbnRzPVxcXCIxMiA2IDEyIDEyIDE2IDE0XFxcIj48L3BvbHlsaW5lPlwiLFwiY2xvdWQtZHJpenpsZVwiOlwiPGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIxOVxcXCIgeDI9XFxcIjhcXFwiIHkyPVxcXCIyMVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTNcXFwiIHgyPVxcXCI4XFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTZcXFwiIHkxPVxcXCIxOVxcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiMjFcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTZcXFwiIHkxPVxcXCIxM1xcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyMVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMjNcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxNVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTdcXFwiPjwvbGluZT48cGF0aCBkPVxcXCJNMjAgMTYuNThBNSA1IDAgMCAwIDE4IDdoLTEuMjZBOCA4IDAgMSAwIDQgMTUuMjVcXFwiPjwvcGF0aD5cIixcImNsb3VkLWxpZ2h0bmluZ1wiOlwiPHBhdGggZD1cXFwiTTE5IDE2LjlBNSA1IDAgMCAwIDE4IDdoLTEuMjZhOCA4IDAgMSAwLTExLjYyIDlcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxMyAxMSA5IDE3IDE1IDE3IDExIDIzXFxcIj48L3BvbHlsaW5lPlwiLFwiY2xvdWQtb2ZmXCI6XCI8cGF0aCBkPVxcXCJNMjIuNjEgMTYuOTVBNSA1IDAgMCAwIDE4IDEwaC0xLjI2YTggOCAwIDAgMC03LjA1LTZNNSA1YTggOCAwIDAgMCA0IDE1aDlhNSA1IDAgMCAwIDEuNy0uM1xcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMjNcXFwiPjwvbGluZT5cIixcImNsb3VkLXJhaW5cIjpcIjxsaW5lIHgxPVxcXCIxNlxcXCIgeTE9XFxcIjEzXFxcIiB4Mj1cXFwiMTZcXFwiIHkyPVxcXCIyMVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTNcXFwiIHgyPVxcXCI4XFxcIiB5Mj1cXFwiMjFcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxNVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMjNcXFwiPjwvbGluZT48cGF0aCBkPVxcXCJNMjAgMTYuNThBNSA1IDAgMCAwIDE4IDdoLTEuMjZBOCA4IDAgMSAwIDQgMTUuMjVcXFwiPjwvcGF0aD5cIixcImNsb3VkLXNub3dcIjpcIjxwYXRoIGQ9XFxcIk0yMCAxNy41OEE1IDUgMCAwIDAgMTggOGgtMS4yNkE4IDggMCAxIDAgNCAxNi4yNVxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTZcXFwiIHgyPVxcXCI4LjAxXFxcIiB5Mj1cXFwiMTZcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOFxcXCIgeTE9XFxcIjIwXFxcIiB4Mj1cXFwiOC4wMVxcXCIgeTI9XFxcIjIwXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMThcXFwiIHgyPVxcXCIxMi4wMVxcXCIgeTI9XFxcIjE4XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMjJcXFwiIHgyPVxcXCIxMi4wMVxcXCIgeTI9XFxcIjIyXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE2XFxcIiB5MT1cXFwiMTZcXFwiIHgyPVxcXCIxNi4wMVxcXCIgeTI9XFxcIjE2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE2XFxcIiB5MT1cXFwiMjBcXFwiIHgyPVxcXCIxNi4wMVxcXCIgeTI9XFxcIjIwXFxcIj48L2xpbmU+XCIsXCJjbG91ZFwiOlwiPHBhdGggZD1cXFwiTTE4IDEwaC0xLjI2QTggOCAwIDEgMCA5IDIwaDlhNSA1IDAgMCAwIDAtMTB6XFxcIj48L3BhdGg+XCIsXCJjb2RlXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxNiAxOCAyMiAxMiAxNiA2XFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjggNiAyIDEyIDggMThcXFwiPjwvcG9seWxpbmU+XCIsXCJjb2RlcGVuXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjEyIDIgMjIgOC41IDIyIDE1LjUgMTIgMjIgMiAxNS41IDIgOC41IDEyIDJcXFwiPjwvcG9seWdvbj48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyMlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTUuNVxcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjIyIDguNSAxMiAxNS41IDIgOC41XFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjIgMTUuNSAxMiA4LjUgMjIgMTUuNVxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCI4LjVcXFwiPjwvbGluZT5cIixcImNvZGVzYW5kYm94XCI6XCI8cGF0aCBkPVxcXCJNMjEgMTZWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZ6XFxcIj48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz1cXFwiNy41IDQuMjEgMTIgNi44MSAxNi41IDQuMjFcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiNy41IDE5Ljc5IDcuNSAxNC42IDMgMTJcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMjEgMTIgMTYuNSAxNC42IDE2LjUgMTkuNzlcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTZcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMjIuMDhcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJjb2ZmZWVcIjpcIjxwYXRoIGQ9XFxcIk0xOCA4aDFhNCA0IDAgMCAxIDAgOGgtMVxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0yIDhoMTZ2OWE0IDQgMCAwIDEtNCA0SDZhNCA0IDAgMCAxLTQtNFY4elxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCI2XFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjZcXFwiIHkyPVxcXCI0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEwXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjEwXFxcIiB5Mj1cXFwiNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNFxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxNFxcXCIgeTI9XFxcIjRcXFwiPjwvbGluZT5cIixcImNvbHVtbnNcIjpcIjxwYXRoIGQ9XFxcIk0xMiAzaDdhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAyaC03bTAtMThINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoN20wLTE4djE4XFxcIj48L3BhdGg+XCIsXCJjb21tYW5kXCI6XCI8cGF0aCBkPVxcXCJNMTggM2EzIDMgMCAwIDAtMyAzdjEyYTMgMyAwIDAgMCAzIDMgMyAzIDAgMCAwIDMtMyAzIDMgMCAwIDAtMy0zSDZhMyAzIDAgMCAwLTMgMyAzIDMgMCAwIDAgMyAzIDMgMyAwIDAgMCAzLTNWNmEzIDMgMCAwIDAtMy0zIDMgMyAwIDAgMC0zIDMgMyAzIDAgMCAwIDMgM2gxMmEzIDMgMCAwIDAgMy0zIDMgMyAwIDAgMC0zLTN6XFxcIj48L3BhdGg+XCIsXCJjb21wYXNzXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxMFxcXCI+PC9jaXJjbGU+PHBvbHlnb24gcG9pbnRzPVxcXCIxNi4yNCA3Ljc2IDE0LjEyIDE0LjEyIDcuNzYgMTYuMjQgOS44OCA5Ljg4IDE2LjI0IDcuNzZcXFwiPjwvcG9seWdvbj5cIixcImNvcHlcIjpcIjxyZWN0IHg9XFxcIjlcXFwiIHk9XFxcIjlcXFwiIHdpZHRoPVxcXCIxM1xcXCIgaGVpZ2h0PVxcXCIxM1xcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PHBhdGggZD1cXFwiTTUgMTVINGEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg5YTIgMiAwIDAgMSAyIDJ2MVxcXCI+PC9wYXRoPlwiLFwiY29ybmVyLWRvd24tbGVmdFwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiOSAxMCA0IDE1IDkgMjBcXFwiPjwvcG9seWxpbmU+PHBhdGggZD1cXFwiTTIwIDR2N2E0IDQgMCAwIDEtNCA0SDRcXFwiPjwvcGF0aD5cIixcImNvcm5lci1kb3duLXJpZ2h0XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxNSAxMCAyMCAxNSAxNSAyMFxcXCI+PC9wb2x5bGluZT48cGF0aCBkPVxcXCJNNCA0djdhNCA0IDAgMCAwIDQgNGgxMlxcXCI+PC9wYXRoPlwiLFwiY29ybmVyLWxlZnQtZG93blwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMTQgMTUgOSAyMCA0IDE1XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk0yMCA0aC03YTQgNCAwIDAgMC00IDR2MTJcXFwiPjwvcGF0aD5cIixcImNvcm5lci1sZWZ0LXVwXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxNCA5IDkgNCA0IDlcXFwiPjwvcG9seWxpbmU+PHBhdGggZD1cXFwiTTIwIDIwaC03YTQgNCAwIDAgMS00LTRWNFxcXCI+PC9wYXRoPlwiLFwiY29ybmVyLXJpZ2h0LWRvd25cIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjEwIDE1IDE1IDIwIDIwIDE1XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk00IDRoN2E0IDQgMCAwIDEgNCA0djEyXFxcIj48L3BhdGg+XCIsXCJjb3JuZXItcmlnaHQtdXBcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjEwIDkgMTUgNCAyMCA5XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk00IDIwaDdhNCA0IDAgMCAwIDQtNFY0XFxcIj48L3BhdGg+XCIsXCJjb3JuZXItdXAtbGVmdFwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiOSAxNCA0IDkgOSA0XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk0yMCAyMHYtN2E0IDQgMCAwIDAtNC00SDRcXFwiPjwvcGF0aD5cIixcImNvcm5lci11cC1yaWdodFwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMTUgMTQgMjAgOSAxNSA0XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk00IDIwdi03YTQgNCAwIDAgMSA0LTRoMTJcXFwiPjwvcGF0aD5cIixcImNwdVwiOlwiPHJlY3QgeD1cXFwiNFxcXCIgeT1cXFwiNFxcXCIgd2lkdGg9XFxcIjE2XFxcIiBoZWlnaHQ9XFxcIjE2XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48cmVjdCB4PVxcXCI5XFxcIiB5PVxcXCI5XFxcIiB3aWR0aD1cXFwiNlxcXCIgaGVpZ2h0PVxcXCI2XFxcIj48L3JlY3Q+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiOVxcXCIgeTI9XFxcIjRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTVcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMTVcXFwiIHkyPVxcXCI0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCIyMFxcXCIgeDI9XFxcIjlcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNVxcXCIgeTE9XFxcIjIwXFxcIiB4Mj1cXFwiMTVcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMFxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIyM1xcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMjBcXFwiIHkxPVxcXCIxNFxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCI0XFxcIiB5Mj1cXFwiOVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMTRcXFwiIHgyPVxcXCI0XFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT5cIixcImNyZWRpdC1jYXJkXCI6XCI8cmVjdCB4PVxcXCIxXFxcIiB5PVxcXCI0XFxcIiB3aWR0aD1cXFwiMjJcXFwiIGhlaWdodD1cXFwiMTZcXFwiIHJ4PVxcXCIyXFxcIiByeT1cXFwiMlxcXCI+PC9yZWN0PjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMTBcXFwiIHgyPVxcXCIyM1xcXCIgeTI9XFxcIjEwXFxcIj48L2xpbmU+XCIsXCJjcm9wXCI6XCI8cGF0aCBkPVxcXCJNNi4xMyAxTDYgMTZhMiAyIDAgMCAwIDIgMmgxNVxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0xIDYuMTNMMTYgNmEyIDIgMCAwIDEgMiAydjE1XFxcIj48L3BhdGg+XCIsXCJjcm9zc2hhaXJcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiMjJcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjE4XFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiNlxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjIyXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPlwiLFwiZGF0YWJhc2VcIjpcIjxlbGxpcHNlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjVcXFwiIHJ4PVxcXCI5XFxcIiByeT1cXFwiM1xcXCI+PC9lbGxpcHNlPjxwYXRoIGQ9XFxcIk0yMSAxMmMwIDEuNjYtNCAzLTkgM3MtOS0xLjM0LTktM1xcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0zIDV2MTRjMCAxLjY2IDQgMyA5IDNzOS0xLjM0IDktM1Y1XFxcIj48L3BhdGg+XCIsXCJkZWxldGVcIjpcIjxwYXRoIGQ9XFxcIk0yMSA0SDhsLTcgOCA3IDhoMTNhMiAyIDAgMCAwIDItMlY2YTIgMiAwIDAgMC0yLTJ6XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjE4XFxcIiB5MT1cXFwiOVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiMThcXFwiIHkyPVxcXCIxNVxcXCI+PC9saW5lPlwiLFwiZGlzY1wiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPlwiLFwiZGl2aWRlLWNpcmNsZVwiOlwiPGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxNlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTZcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCI4XFxcIj48L2xpbmU+PGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPlwiLFwiZGl2aWRlLXNxdWFyZVwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiOFxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMTZcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjhcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjhcXFwiPjwvbGluZT5cIixcImRpdmlkZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCI2XFxcIiByPVxcXCIyXFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiNVxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMTlcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMThcXFwiIHI9XFxcIjJcXFwiPjwvY2lyY2xlPlwiLFwiZG9sbGFyLXNpZ25cIjpcIjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjIzXFxcIj48L2xpbmU+PHBhdGggZD1cXFwiTTE3IDVIOS41YTMuNSAzLjUgMCAwIDAgMCA3aDVhMy41IDMuNSAwIDAgMSAwIDdINlxcXCI+PC9wYXRoPlwiLFwiZG93bmxvYWQtY2xvdWRcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjggMTcgMTIgMjEgMTYgMTdcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjIxXFxcIj48L2xpbmU+PHBhdGggZD1cXFwiTTIwLjg4IDE4LjA5QTUgNSAwIDAgMCAxOCA5aC0xLjI2QTggOCAwIDEgMCAzIDE2LjI5XFxcIj48L3BhdGg+XCIsXCJkb3dubG9hZFwiOlwiPHBhdGggZD1cXFwiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTRcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCI3IDEwIDEyIDE1IDE3IDEwXFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE1XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIzXFxcIj48L2xpbmU+XCIsXCJkcmliYmJsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxwYXRoIGQ9XFxcIk04LjU2IDIuNzVjNC4zNyA2LjAzIDYuMDIgOS40MiA4LjAzIDE3LjcybTIuNTQtMTUuMzhjLTMuNzIgNC4zNS04Ljk0IDUuNjYtMTYuODggNS44NW0xOS41IDEuOWMtMy41LS45My02LjYzLS44Mi04Ljk0IDAtMi41OC45Mi01LjAxIDIuODYtNy40NCA2LjMyXFxcIj48L3BhdGg+XCIsXCJkcm9wbGV0XCI6XCI8cGF0aCBkPVxcXCJNMTIgMi42OWw1LjY2IDUuNjZhOCA4IDAgMSAxLTExLjMxIDB6XFxcIj48L3BhdGg+XCIsXCJlZGl0LTJcIjpcIjxwYXRoIGQ9XFxcIk0xNyAzYTIuODI4IDIuODI4IDAgMSAxIDQgNEw3LjUgMjAuNSAyIDIybDEuNS01LjVMMTcgM3pcXFwiPjwvcGF0aD5cIixcImVkaXQtM1wiOlwiPHBhdGggZD1cXFwiTTEyIDIwaDlcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTYuNSAzLjVhMi4xMjEgMi4xMjEgMCAwIDEgMyAzTDcgMTlsLTQgMSAxLTRMMTYuNSAzLjV6XFxcIj48L3BhdGg+XCIsXCJlZGl0XCI6XCI8cGF0aCBkPVxcXCJNMTEgNEg0YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0ydi03XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTE4LjUgMi41YTIuMTIxIDIuMTIxIDAgMCAxIDMgM0wxMiAxNWwtNCAxIDEtNCA5LjUtOS41elxcXCI+PC9wYXRoPlwiLFwiZXh0ZXJuYWwtbGlua1wiOlwiPHBhdGggZD1cXFwiTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDZcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxNSAzIDIxIDMgMjEgOVxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTBcXFwiIHkxPVxcXCIxNFxcXCIgeDI9XFxcIjIxXFxcIiB5Mj1cXFwiM1xcXCI+PC9saW5lPlwiLFwiZXllLW9mZlwiOlwiPHBhdGggZD1cXFwiTTE3Ljk0IDE3Ljk0QTEwLjA3IDEwLjA3IDAgMCAxIDEyIDIwYy03IDAtMTEtOC0xMS04YTE4LjQ1IDE4LjQ1IDAgMCAxIDUuMDYtNS45NE05LjkgNC4yNEE5LjEyIDkuMTIgMCAwIDEgMTIgNGM3IDAgMTEgOCAxMSA4YTE4LjUgMTguNSAwIDAgMS0yLjE2IDMuMTltLTYuNzItMS4wN2EzIDMgMCAxIDEtNC4yNC00LjI0XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPlwiLFwiZXllXCI6XCI8cGF0aCBkPVxcXCJNMSAxMnM0LTggMTEtOCAxMSA4IDExIDgtNCA4LTExIDgtMTEtOC0xMS04elxcXCI+PC9wYXRoPjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPlwiLFwiZmFjZWJvb2tcIjpcIjxwYXRoIGQ9XFxcIk0xOCAyaC0zYTUgNSAwIDAgMC01IDV2M0g3djRoM3Y4aDR2LThoM2wxLTRoLTRWN2ExIDEgMCAwIDEgMS0xaDN6XFxcIj48L3BhdGg+XCIsXCJmYXN0LWZvcndhcmRcIjpcIjxwb2x5Z29uIHBvaW50cz1cXFwiMTMgMTkgMjIgMTIgMTMgNSAxMyAxOVxcXCI+PC9wb2x5Z29uPjxwb2x5Z29uIHBvaW50cz1cXFwiMiAxOSAxMSAxMiAyIDUgMiAxOVxcXCI+PC9wb2x5Z29uPlwiLFwiZmVhdGhlclwiOlwiPHBhdGggZD1cXFwiTTIwLjI0IDEyLjI0YTYgNiAwIDAgMC04LjQ5LTguNDlMNSAxMC41VjE5aDguNXpcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMTZcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMlxcXCIgeTI9XFxcIjIyXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE3LjVcXFwiIHkxPVxcXCIxNVxcXCIgeDI9XFxcIjlcXFwiIHkyPVxcXCIxNVxcXCI+PC9saW5lPlwiLFwiZmlnbWFcIjpcIjxwYXRoIGQ9XFxcIk01IDUuNUEzLjUgMy41IDAgMCAxIDguNSAySDEydjdIOC41QTMuNSAzLjUgMCAwIDEgNSA1LjV6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTEyIDJoMy41YTMuNSAzLjUgMCAxIDEgMCA3SDEyVjJ6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTEyIDEyLjVhMy41IDMuNSAwIDEgMSA3IDAgMy41IDMuNSAwIDEgMS03IDB6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTUgMTkuNUEzLjUgMy41IDAgMCAxIDguNSAxNkgxMnYzLjVhMy41IDMuNSAwIDEgMS03IDB6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTUgMTIuNUEzLjUgMy41IDAgMCAxIDguNSA5SDEydjdIOC41QTMuNSAzLjUgMCAwIDEgNSAxMi41elxcXCI+PC9wYXRoPlwiLFwiZmlsZS1taW51c1wiOlwiPHBhdGggZD1cXFwiTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY4elxcXCI+PC9wYXRoPjxwb2x5bGluZSBwb2ludHM9XFxcIjE0IDIgMTQgOCAyMCA4XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCI5XFxcIiB5MT1cXFwiMTVcXFwiIHgyPVxcXCIxNVxcXCIgeTI9XFxcIjE1XFxcIj48L2xpbmU+XCIsXCJmaWxlLXBsdXNcIjpcIjxwYXRoIGQ9XFxcIk0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHpcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxNCAyIDE0IDggMjAgOFxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOVxcXCIgeTE9XFxcIjE1XFxcIiB4Mj1cXFwiMTVcXFwiIHkyPVxcXCIxNVxcXCI+PC9saW5lPlwiLFwiZmlsZS10ZXh0XCI6XCI8cGF0aCBkPVxcXCJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6XFxcIj48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTQgMiAxNCA4IDIwIDhcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjE2XFxcIiB5MT1cXFwiMTNcXFwiIHgyPVxcXCI4XFxcIiB5Mj1cXFwiMTNcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTZcXFwiIHkxPVxcXCIxN1xcXCIgeDI9XFxcIjhcXFwiIHkyPVxcXCIxN1xcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjEwIDkgOSA5IDggOVxcXCI+PC9wb2x5bGluZT5cIixcImZpbGVcIjpcIjxwYXRoIGQ9XFxcIk0xMyAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOXpcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxMyAyIDEzIDkgMjAgOVxcXCI+PC9wb2x5bGluZT5cIixcImZpbG1cIjpcIjxyZWN0IHg9XFxcIjJcXFwiIHk9XFxcIjJcXFwiIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIyMFxcXCIgcng9XFxcIjIuMThcXFwiIHJ5PVxcXCIyLjE4XFxcIj48L3JlY3Q+PGxpbmUgeDE9XFxcIjdcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiN1xcXCIgeTI9XFxcIjIyXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE3XFxcIiB5MT1cXFwiMlxcXCIgeDI9XFxcIjE3XFxcIiB5Mj1cXFwiMjJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMlxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMjJcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyXFxcIiB5MT1cXFwiN1xcXCIgeDI9XFxcIjdcXFwiIHkyPVxcXCI3XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjJcXFwiIHkxPVxcXCIxN1xcXCIgeDI9XFxcIjdcXFwiIHkyPVxcXCIxN1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxN1xcXCIgeTE9XFxcIjE3XFxcIiB4Mj1cXFwiMjJcXFwiIHkyPVxcXCIxN1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxN1xcXCIgeTE9XFxcIjdcXFwiIHgyPVxcXCIyMlxcXCIgeTI9XFxcIjdcXFwiPjwvbGluZT5cIixcImZpbHRlclwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCIyMiAzIDIgMyAxMCAxMi40NiAxMCAxOSAxNCAyMSAxNCAxMi40NiAyMiAzXFxcIj48L3BvbHlnb24+XCIsXCJmbGFnXCI6XCI8cGF0aCBkPVxcXCJNNCAxNXMxLTEgNC0xIDUgMiA4IDIgNC0xIDQtMVYzcy0xIDEtNCAxLTUtMi04LTItNCAxLTQgMXpcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiNFxcXCIgeTE9XFxcIjIyXFxcIiB4Mj1cXFwiNFxcXCIgeTI9XFxcIjE1XFxcIj48L2xpbmU+XCIsXCJmb2xkZXItbWludXNcIjpcIjxwYXRoIGQ9XFxcIk0yMiAxOWEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoNWwyIDNoOWEyIDIgMCAwIDEgMiAyelxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCI5XFxcIiB5MT1cXFwiMTRcXFwiIHgyPVxcXCIxNVxcXCIgeTI9XFxcIjE0XFxcIj48L2xpbmU+XCIsXCJmb2xkZXItcGx1c1wiOlwiPHBhdGggZD1cXFwiTTIyIDE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg1bDIgM2g5YTIgMiAwIDAgMSAyIDJ6XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMTFcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjE3XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCIxNFxcXCIgeDI9XFxcIjE1XFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT5cIixcImZvbGRlclwiOlwiPHBhdGggZD1cXFwiTTIyIDE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg1bDIgM2g5YTIgMiAwIDAgMSAyIDJ6XFxcIj48L3BhdGg+XCIsXCJmcmFtZXJcIjpcIjxwYXRoIGQ9XFxcIk01IDE2VjloMTRWMkg1bDE0IDE0aC03bS03IDBsNyA3di03bS03IDBoN1xcXCI+PC9wYXRoPlwiLFwiZnJvd25cIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48cGF0aCBkPVxcXCJNMTYgMTZzLTEuNS0yLTQtMi00IDItNCAyXFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiOS4wMVxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTVcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiMTUuMDFcXFwiIHkyPVxcXCI5XFxcIj48L2xpbmU+XCIsXCJnaWZ0XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIyMCAxMiAyMCAyMiA0IDIyIDQgMTJcXFwiPjwvcG9seWxpbmU+PHJlY3QgeD1cXFwiMlxcXCIgeT1cXFwiN1xcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjVcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyMlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiN1xcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0xMiA3SDcuNWEyLjUgMi41IDAgMCAxIDAtNUMxMSAyIDEyIDcgMTIgN3pcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTIgN2g0LjVhMi41IDIuNSAwIDAgMCAwLTVDMTMgMiAxMiA3IDEyIDd6XFxcIj48L3BhdGg+XCIsXCJnaXQtYnJhbmNoXCI6XCI8bGluZSB4MT1cXFwiNlxcXCIgeTE9XFxcIjNcXFwiIHgyPVxcXCI2XFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48Y2lyY2xlIGN4PVxcXCIxOFxcXCIgY3k9XFxcIjZcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjZcXFwiIGN5PVxcXCIxOFxcXCIgcj1cXFwiM1xcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTE4IDlhOSA5IDAgMCAxLTkgOVxcXCI+PC9wYXRoPlwiLFwiZ2l0LWNvbW1pdFwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiNFxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjEuMDVcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjdcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNy4wMVxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMjIuOTZcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPlwiLFwiZ2l0LW1lcmdlXCI6XCI8Y2lyY2xlIGN4PVxcXCIxOFxcXCIgY3k9XFxcIjE4XFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCI2XFxcIiBjeT1cXFwiNlxcXCIgcj1cXFwiM1xcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTYgMjFWOWE5IDkgMCAwIDAgOSA5XFxcIj48L3BhdGg+XCIsXCJnaXQtcHVsbC1yZXF1ZXN0XCI6XCI8Y2lyY2xlIGN4PVxcXCIxOFxcXCIgY3k9XFxcIjE4XFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCI2XFxcIiBjeT1cXFwiNlxcXCIgcj1cXFwiM1xcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTEzIDZoM2EyIDIgMCAwIDEgMiAydjdcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiNlxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCI2XFxcIiB5Mj1cXFwiMjFcXFwiPjwvbGluZT5cIixcImdpdGh1YlwiOlwiPHBhdGggZD1cXFwiTTkgMTljLTUgMS41LTUtMi41LTctM20xNCA2di0zLjg3YTMuMzcgMy4zNyAwIDAgMC0uOTQtMi42MWMzLjE0LS4zNSA2LjQ0LTEuNTQgNi40NC03QTUuNDQgNS40NCAwIDAgMCAyMCA0Ljc3IDUuMDcgNS4wNyAwIDAgMCAxOS45MSAxUzE4LjczLjY1IDE2IDIuNDhhMTMuMzggMTMuMzggMCAwIDAtNyAwQzYuMjcuNjUgNS4wOSAxIDUuMDkgMUE1LjA3IDUuMDcgMCAwIDAgNSA0Ljc3YTUuNDQgNS40NCAwIDAgMC0xLjUgMy43OGMwIDUuNDIgMy4zIDYuNjEgNi40NCA3QTMuMzcgMy4zNyAwIDAgMCA5IDE4LjEzVjIyXFxcIj48L3BhdGg+XCIsXCJnaXRsYWJcIjpcIjxwYXRoIGQ9XFxcIk0yMi42NSAxNC4zOUwxMiAyMi4xMyAxLjM1IDE0LjM5YS44NC44NCAwIDAgMS0uMy0uOTRsMS4yMi0zLjc4IDIuNDQtNy41MUEuNDIuNDIgMCAwIDEgNC44MiAyYS40My40MyAwIDAgMSAuNTggMCAuNDIuNDIgMCAwIDEgLjExLjE4bDIuNDQgNy40OWg4LjFsMi40NC03LjUxQS40Mi40MiAwIDAgMSAxOC42IDJhLjQzLjQzIDAgMCAxIC41OCAwIC40Mi40MiAwIDAgMSAuMTEuMThsMi40NCA3LjUxTDIzIDEzLjQ1YS44NC44NCAwIDAgMS0uMzUuOTR6XFxcIj48L3BhdGg+XCIsXCJnbG9iZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIyXFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIyMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+PHBhdGggZD1cXFwiTTEyIDJhMTUuMyAxNS4zIDAgMCAxIDQgMTAgMTUuMyAxNS4zIDAgMCAxLTQgMTAgMTUuMyAxNS4zIDAgMCAxLTQtMTAgMTUuMyAxNS4zIDAgMCAxIDQtMTB6XFxcIj48L3BhdGg+XCIsXCJncmlkXCI6XCI8cmVjdCB4PVxcXCIzXFxcIiB5PVxcXCIzXFxcIiB3aWR0aD1cXFwiN1xcXCIgaGVpZ2h0PVxcXCI3XFxcIj48L3JlY3Q+PHJlY3QgeD1cXFwiMTRcXFwiIHk9XFxcIjNcXFwiIHdpZHRoPVxcXCI3XFxcIiBoZWlnaHQ9XFxcIjdcXFwiPjwvcmVjdD48cmVjdCB4PVxcXCIxNFxcXCIgeT1cXFwiMTRcXFwiIHdpZHRoPVxcXCI3XFxcIiBoZWlnaHQ9XFxcIjdcXFwiPjwvcmVjdD48cmVjdCB4PVxcXCIzXFxcIiB5PVxcXCIxNFxcXCIgd2lkdGg9XFxcIjdcXFwiIGhlaWdodD1cXFwiN1xcXCI+PC9yZWN0PlwiLFwiaGFyZC1kcml2ZVwiOlwiPGxpbmUgeDE9XFxcIjIyXFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIyXFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT48cGF0aCBkPVxcXCJNNS40NSA1LjExTDIgMTJ2NmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJ2LTZsLTMuNDUtNi44OUEyIDIgMCAwIDAgMTYuNzYgNEg3LjI0YTIgMiAwIDAgMC0xLjc5IDEuMTF6XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjZcXFwiIHkxPVxcXCIxNlxcXCIgeDI9XFxcIjYuMDFcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMFxcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMTAuMDFcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPlwiLFwiaGFzaFwiOlwiPGxpbmUgeDE9XFxcIjRcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiMjBcXFwiIHkyPVxcXCI5XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjRcXFwiIHkxPVxcXCIxNVxcXCIgeDI9XFxcIjIwXFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTBcXFwiIHkxPVxcXCIzXFxcIiB4Mj1cXFwiOFxcXCIgeTI9XFxcIjIxXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE2XFxcIiB5MT1cXFwiM1xcXCIgeDI9XFxcIjE0XFxcIiB5Mj1cXFwiMjFcXFwiPjwvbGluZT5cIixcImhlYWRwaG9uZXNcIjpcIjxwYXRoIGQ9XFxcIk0zIDE4di02YTkgOSAwIDAgMSAxOCAwdjZcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMjEgMTlhMiAyIDAgMCAxLTIgMmgtMWEyIDIgMCAwIDEtMi0ydi0zYTIgMiAwIDAgMSAyLTJoM3pNMyAxOWEyIDIgMCAwIDAgMiAyaDFhMiAyIDAgMCAwIDItMnYtM2EyIDIgMCAwIDAtMi0ySDN6XFxcIj48L3BhdGg+XCIsXCJoZWFydFwiOlwiPHBhdGggZD1cXFwiTTIwLjg0IDQuNjFhNS41IDUuNSAwIDAgMC03Ljc4IDBMMTIgNS42N2wtMS4wNi0xLjA2YTUuNSA1LjUgMCAwIDAtNy43OCA3Ljc4bDEuMDYgMS4wNkwxMiAyMS4yM2w3Ljc4LTcuNzggMS4wNi0xLjA2YTUuNSA1LjUgMCAwIDAgMC03Ljc4elxcXCI+PC9wYXRoPlwiLFwiaGVscC1jaXJjbGVcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48cGF0aCBkPVxcXCJNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDNcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxN1xcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiMTdcXFwiPjwvbGluZT5cIixcImhleGFnb25cIjpcIjxwYXRoIGQ9XFxcIk0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnpcXFwiPjwvcGF0aD5cIixcImhvbWVcIjpcIjxwYXRoIGQ9XFxcIk0zIDlsOS03IDkgN3YxMWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnpcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCI5IDIyIDkgMTIgMTUgMTIgMTUgMjJcXFwiPjwvcG9seWxpbmU+XCIsXCJpbWFnZVwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48Y2lyY2xlIGN4PVxcXCI4LjVcXFwiIGN5PVxcXCI4LjVcXFwiIHI9XFxcIjEuNVxcXCI+PC9jaXJjbGU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMjEgMTUgMTYgMTAgNSAyMVxcXCI+PC9wb2x5bGluZT5cIixcImluYm94XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIyMiAxMiAxNiAxMiAxNCAxNSAxMCAxNSA4IDEyIDIgMTJcXFwiPjwvcG9seWxpbmU+PHBhdGggZD1cXFwiTTUuNDUgNS4xMUwyIDEydjZhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0ydi02bC0zLjQ1LTYuODlBMiAyIDAgMCAwIDE2Ljc2IDRINy4yNGEyIDIgMCAwIDAtMS43OSAxLjExelxcXCI+PC9wYXRoPlwiLFwiaW5mb1wiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjhcXFwiIHgyPVxcXCIxMi4wMVxcXCIgeTI9XFxcIjhcXFwiPjwvbGluZT5cIixcImluc3RhZ3JhbVwiOlwiPHJlY3QgeD1cXFwiMlxcXCIgeT1cXFwiMlxcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiByeD1cXFwiNVxcXCIgcnk9XFxcIjVcXFwiPjwvcmVjdD48cGF0aCBkPVxcXCJNMTYgMTEuMzdBNCA0IDAgMSAxIDEyLjYzIDggNCA0IDAgMCAxIDE2IDExLjM3elxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxNy41XFxcIiB5MT1cXFwiNi41XFxcIiB4Mj1cXFwiMTcuNTFcXFwiIHkyPVxcXCI2LjVcXFwiPjwvbGluZT5cIixcIml0YWxpY1wiOlwiPGxpbmUgeDE9XFxcIjE5XFxcIiB5MT1cXFwiNFxcXCIgeDI9XFxcIjEwXFxcIiB5Mj1cXFwiNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNFxcXCIgeTE9XFxcIjIwXFxcIiB4Mj1cXFwiNVxcXCIgeTI9XFxcIjIwXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE1XFxcIiB5MT1cXFwiNFxcXCIgeDI9XFxcIjlcXFwiIHkyPVxcXCIyMFxcXCI+PC9saW5lPlwiLFwia2V5XCI6XCI8cGF0aCBkPVxcXCJNMjEgMmwtMiAybS03LjYxIDcuNjFhNS41IDUuNSAwIDEgMS03Ljc3OCA3Ljc3OCA1LjUgNS41IDAgMCAxIDcuNzc3LTcuNzc3em0wIDBMMTUuNSA3LjVtMCAwbDMgM0wyMiA3bC0zLTNtLTMuNSAzLjVMMTkgNFxcXCI+PC9wYXRoPlwiLFwibGF5ZXJzXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjEyIDIgMiA3IDEyIDEyIDIyIDcgMTIgMlxcXCI+PC9wb2x5Z29uPjxwb2x5bGluZSBwb2ludHM9XFxcIjIgMTcgMTIgMjIgMjIgMTdcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMiAxMiAxMiAxNyAyMiAxMlxcXCI+PC9wb2x5bGluZT5cIixcImxheW91dFwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiM1xcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIyMVxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOVxcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiOVxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT5cIixcImxpZmUtYnVveVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjRcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCI0LjkzXFxcIiB5MT1cXFwiNC45M1xcXCIgeDI9XFxcIjkuMTdcXFwiIHkyPVxcXCI5LjE3XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE0LjgzXFxcIiB5MT1cXFwiMTQuODNcXFwiIHgyPVxcXCIxOS4wN1xcXCIgeTI9XFxcIjE5LjA3XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE0LjgzXFxcIiB5MT1cXFwiOS4xN1xcXCIgeDI9XFxcIjE5LjA3XFxcIiB5Mj1cXFwiNC45M1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNC44M1xcXCIgeTE9XFxcIjkuMTdcXFwiIHgyPVxcXCIxOC4zNlxcXCIgeTI9XFxcIjUuNjRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiNC45M1xcXCIgeTE9XFxcIjE5LjA3XFxcIiB4Mj1cXFwiOS4xN1xcXCIgeTI9XFxcIjE0LjgzXFxcIj48L2xpbmU+XCIsXCJsaW5rLTJcIjpcIjxwYXRoIGQ9XFxcIk0xNSA3aDNhNSA1IDAgMCAxIDUgNSA1IDUgMCAwIDEtNSA1aC0zbS02IDBINmE1IDUgMCAwIDEtNS01IDUgNSAwIDAgMSA1LTVoM1xcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJsaW5rXCI6XCI8cGF0aCBkPVxcXCJNMTAgMTNhNSA1IDAgMCAwIDcuNTQuNTRsMy0zYTUgNSAwIDAgMC03LjA3LTcuMDdsLTEuNzIgMS43MVxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0xNCAxMWE1IDUgMCAwIDAtNy41NC0uNTRsLTMgM2E1IDUgMCAwIDAgNy4wNyA3LjA3bDEuNzEtMS43MVxcXCI+PC9wYXRoPlwiLFwibGlua2VkaW5cIjpcIjxwYXRoIGQ9XFxcIk0xNiA4YTYgNiAwIDAgMSA2IDZ2N2gtNHYtN2EyIDIgMCAwIDAtMi0yIDIgMiAwIDAgMC0yIDJ2N2gtNHYtN2E2IDYgMCAwIDEgNi02elxcXCI+PC9wYXRoPjxyZWN0IHg9XFxcIjJcXFwiIHk9XFxcIjlcXFwiIHdpZHRoPVxcXCI0XFxcIiBoZWlnaHQ9XFxcIjEyXFxcIj48L3JlY3Q+PGNpcmNsZSBjeD1cXFwiNFxcXCIgY3k9XFxcIjRcXFwiIHI9XFxcIjJcXFwiPjwvY2lyY2xlPlwiLFwibGlzdFwiOlwiPGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCI2XFxcIiB4Mj1cXFwiMjFcXFwiIHkyPVxcXCI2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjIxXFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOFxcXCIgeTE9XFxcIjE4XFxcIiB4Mj1cXFwiMjFcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIzXFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjMuMDFcXFwiIHkyPVxcXCI2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjNcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjMuMDFcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIzXFxcIiB5MT1cXFwiMThcXFwiIHgyPVxcXCIzLjAxXFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT5cIixcImxvYWRlclwiOlwiPGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE4XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIyMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI0LjkzXFxcIiB5MT1cXFwiNC45M1xcXCIgeDI9XFxcIjcuNzZcXFwiIHkyPVxcXCI3Ljc2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE2LjI0XFxcIiB5MT1cXFwiMTYuMjRcXFwiIHgyPVxcXCIxOS4wN1xcXCIgeTI9XFxcIjE5LjA3XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjJcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjZcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxOFxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMjJcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI0LjkzXFxcIiB5MT1cXFwiMTkuMDdcXFwiIHgyPVxcXCI3Ljc2XFxcIiB5Mj1cXFwiMTYuMjRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTYuMjRcXFwiIHkxPVxcXCI3Ljc2XFxcIiB4Mj1cXFwiMTkuMDdcXFwiIHkyPVxcXCI0LjkzXFxcIj48L2xpbmU+XCIsXCJsb2NrXCI6XCI8cmVjdCB4PVxcXCIzXFxcIiB5PVxcXCIxMVxcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjExXFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48cGF0aCBkPVxcXCJNNyAxMVY3YTUgNSAwIDAgMSAxMCAwdjRcXFwiPjwvcGF0aD5cIixcImxvZy1pblwiOlwiPHBhdGggZD1cXFwiTTE1IDNoNGEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJoLTRcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxMCAxNyAxNSAxMiAxMCA3XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIxNVxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiM1xcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJsb2ctb3V0XCI6XCI8cGF0aCBkPVxcXCJNOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDRcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxNiAxNyAyMSAxMiAxNiA3XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiOVxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJtYWlsXCI6XCI8cGF0aCBkPVxcXCJNNCA0aDE2YzEuMSAwIDIgLjkgMiAydjEyYzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMnpcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIyMiw2IDEyLDEzIDIsNlxcXCI+PC9wb2x5bGluZT5cIixcIm1hcC1waW5cIjpcIjxwYXRoIGQ9XFxcIk0yMSAxMGMwIDctOSAxMy05IDEzcy05LTYtOS0xM2E5IDkgMCAwIDEgMTggMHpcXFwiPjwvcGF0aD48Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEwXFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT5cIixcIm1hcFwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCIxIDYgMSAyMiA4IDE4IDE2IDIyIDIzIDE4IDIzIDIgMTYgNiA4IDIgMSA2XFxcIj48L3BvbHlnb24+PGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiOFxcXCIgeTI9XFxcIjE4XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE2XFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiMjJcXFwiPjwvbGluZT5cIixcIm1heGltaXplLTJcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjE1IDMgMjEgMyAyMSA5XFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjkgMjEgMyAyMSAzIDE1XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjNcXFwiIHgyPVxcXCIxNFxcXCIgeTI9XFxcIjEwXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjNcXFwiIHkxPVxcXCIyMVxcXCIgeDI9XFxcIjEwXFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT5cIixcIm1heGltaXplXCI6XCI8cGF0aCBkPVxcXCJNOCAzSDVhMiAyIDAgMCAwLTIgMnYzbTE4IDBWNWEyIDIgMCAwIDAtMi0yaC0zbTAgMThoM2EyIDIgMCAwIDAgMi0ydi0zTTMgMTZ2M2EyIDIgMCAwIDAgMiAyaDNcXFwiPjwvcGF0aD5cIixcIm1laFwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTVcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjE1XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiOS4wMVxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTVcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiMTUuMDFcXFwiIHkyPVxcXCI5XFxcIj48L2xpbmU+XCIsXCJtZW51XCI6XCI8bGluZSB4MT1cXFwiM1xcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMjFcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIzXFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjIxXFxcIiB5Mj1cXFwiNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIzXFxcIiB5MT1cXFwiMThcXFwiIHgyPVxcXCIyMVxcXCIgeTI9XFxcIjE4XFxcIj48L2xpbmU+XCIsXCJtZXNzYWdlLWNpcmNsZVwiOlwiPHBhdGggZD1cXFwiTTIxIDExLjVhOC4zOCA4LjM4IDAgMCAxLS45IDMuOCA4LjUgOC41IDAgMCAxLTcuNiA0LjcgOC4zOCA4LjM4IDAgMCAxLTMuOC0uOUwzIDIxbDEuOS01LjdhOC4zOCA4LjM4IDAgMCAxLS45LTMuOCA4LjUgOC41IDAgMCAxIDQuNy03LjYgOC4zOCA4LjM4IDAgMCAxIDMuOC0uOWguNWE4LjQ4IDguNDggMCAwIDEgOCA4di41elxcXCI+PC9wYXRoPlwiLFwibWVzc2FnZS1zcXVhcmVcIjpcIjxwYXRoIGQ9XFxcIk0yMSAxNWEyIDIgMCAwIDEtMiAySDdsLTQgNFY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnpcXFwiPjwvcGF0aD5cIixcIm1pYy1vZmZcIjpcIjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMjNcXFwiPjwvbGluZT48cGF0aCBkPVxcXCJNOSA5djNhMyAzIDAgMCAwIDUuMTIgMi4xMk0xNSA5LjM0VjRhMyAzIDAgMCAwLTUuOTQtLjZcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTcgMTYuOTVBNyA3IDAgMCAxIDUgMTJ2LTJtMTQgMHYyYTcgNyAwIDAgMS0uMTEgMS4yM1xcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE5XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMjNcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjIzXFxcIj48L2xpbmU+XCIsXCJtaWNcIjpcIjxwYXRoIGQ9XFxcIk0xMiAxYTMgMyAwIDAgMC0zIDN2OGEzIDMgMCAwIDAgNiAwVjRhMyAzIDAgMCAwLTMtM3pcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTkgMTB2MmE3IDcgMCAwIDEtMTQgMHYtMlxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE5XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMjNcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjIzXFxcIj48L2xpbmU+XCIsXCJtaW5pbWl6ZS0yXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCI0IDE0IDEwIDE0IDEwIDIwXFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjIwIDEwIDE0IDEwIDE0IDRcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjE0XFxcIiB5MT1cXFwiMTBcXFwiIHgyPVxcXCIyMVxcXCIgeTI9XFxcIjNcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiM1xcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiMTBcXFwiIHkyPVxcXCIxNFxcXCI+PC9saW5lPlwiLFwibWluaW1pemVcIjpcIjxwYXRoIGQ9XFxcIk04IDN2M2EyIDIgMCAwIDEtMiAySDNtMTggMGgtM2EyIDIgMCAwIDEtMi0yVjNtMCAxOHYtM2EyIDIgMCAwIDEgMi0yaDNNMyAxNmgzYTIgMiAwIDAgMSAyIDJ2M1xcXCI+PC9wYXRoPlwiLFwibWludXMtY2lyY2xlXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxMFxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT5cIixcIm1pbnVzLXNxdWFyZVwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiOFxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMTZcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPlwiLFwibWludXNcIjpcIjxsaW5lIHgxPVxcXCI1XFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxOVxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJtb25pdG9yXCI6XCI8cmVjdCB4PVxcXCIyXFxcIiB5PVxcXCIzXFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMTRcXFwiIHJ4PVxcXCIyXFxcIiByeT1cXFwiMlxcXCI+PC9yZWN0PjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMjFcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjIxXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMTdcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjIxXFxcIj48L2xpbmU+XCIsXCJtb29uXCI6XCI8cGF0aCBkPVxcXCJNMjEgMTIuNzlBOSA5IDAgMSAxIDExLjIxIDMgNyA3IDAgMCAwIDIxIDEyLjc5elxcXCI+PC9wYXRoPlwiLFwibW9yZS1ob3Jpem9udGFsXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCIxOVxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCI1XFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjFcXFwiPjwvY2lyY2xlPlwiLFwibW9yZS12ZXJ0aWNhbFwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMVxcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCI1XFxcIiByPVxcXCIxXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjE5XFxcIiByPVxcXCIxXFxcIj48L2NpcmNsZT5cIixcIm1vdXNlLXBvaW50ZXJcIjpcIjxwYXRoIGQ9XFxcIk0zIDNsNy4wNyAxNi45NyAyLjUxLTcuMzkgNy4zOS0yLjUxTDMgM3pcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTMgMTNsNiA2XFxcIj48L3BhdGg+XCIsXCJtb3ZlXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCI1IDkgMiAxMiA1IDE1XFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjkgNSAxMiAyIDE1IDVcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTUgMTkgMTIgMjIgOSAxOVxcXCI+PC9wb2x5bGluZT48cG9seWxpbmUgcG9pbnRzPVxcXCIxOSA5IDIyIDEyIDE5IDE1XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIyXFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIyMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMjJcXFwiPjwvbGluZT5cIixcIm11c2ljXCI6XCI8cGF0aCBkPVxcXCJNOSAxOFY1bDEyLTJ2MTNcXFwiPjwvcGF0aD48Y2lyY2xlIGN4PVxcXCI2XFxcIiBjeT1cXFwiMThcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjE4XFxcIiBjeT1cXFwiMTZcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPlwiLFwibmF2aWdhdGlvbi0yXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjEyIDIgMTkgMjEgMTIgMTcgNSAyMSAxMiAyXFxcIj48L3BvbHlnb24+XCIsXCJuYXZpZ2F0aW9uXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjMgMTEgMjIgMiAxMyAyMSAxMSAxMyAzIDExXFxcIj48L3BvbHlnb24+XCIsXCJvY3RhZ29uXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjcuODYgMiAxNi4xNCAyIDIyIDcuODYgMjIgMTYuMTQgMTYuMTQgMjIgNy44NiAyMiAyIDE2LjE0IDIgNy44NiA3Ljg2IDJcXFwiPjwvcG9seWdvbj5cIixcInBhY2thZ2VcIjpcIjxsaW5lIHgxPVxcXCIxNi41XFxcIiB5MT1cXFwiOS40XFxcIiB4Mj1cXFwiNy41XFxcIiB5Mj1cXFwiNC4yMVxcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnpcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIzLjI3IDYuOTYgMTIgMTIuMDEgMjAuNzMgNi45NlxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyMi4wOFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT5cIixcInBhcGVyY2xpcFwiOlwiPHBhdGggZD1cXFwiTTIxLjQ0IDExLjA1bC05LjE5IDkuMTlhNiA2IDAgMCAxLTguNDktOC40OWw5LjE5LTkuMTlhNCA0IDAgMCAxIDUuNjYgNS42NmwtOS4yIDkuMTlhMiAyIDAgMCAxLTIuODMtMi44M2w4LjQ5LTguNDhcXFwiPjwvcGF0aD5cIixcInBhdXNlLWNpcmNsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIxMFxcXCIgeTE9XFxcIjE1XFxcIiB4Mj1cXFwiMTBcXFwiIHkyPVxcXCI5XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE0XFxcIiB5MT1cXFwiMTVcXFwiIHgyPVxcXCIxNFxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT5cIixcInBhdXNlXCI6XCI8cmVjdCB4PVxcXCI2XFxcIiB5PVxcXCI0XFxcIiB3aWR0aD1cXFwiNFxcXCIgaGVpZ2h0PVxcXCIxNlxcXCI+PC9yZWN0PjxyZWN0IHg9XFxcIjE0XFxcIiB5PVxcXCI0XFxcIiB3aWR0aD1cXFwiNFxcXCIgaGVpZ2h0PVxcXCIxNlxcXCI+PC9yZWN0PlwiLFwicGVuLXRvb2xcIjpcIjxwYXRoIGQ9XFxcIk0xMiAxOWw3LTcgMyAzLTcgNy0zLTN6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTE4IDEzbC0xLjUtNy41TDIgMmwzLjUgMTQuNUwxMyAxOGw1LTV6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTIgMmw3LjU4NiA3LjU4NlxcXCI+PC9wYXRoPjxjaXJjbGUgY3g9XFxcIjExXFxcIiBjeT1cXFwiMTFcXFwiIHI9XFxcIjJcXFwiPjwvY2lyY2xlPlwiLFwicGVyY2VudFwiOlwiPGxpbmUgeDE9XFxcIjE5XFxcIiB5MT1cXFwiNVxcXCIgeDI9XFxcIjVcXFwiIHkyPVxcXCIxOVxcXCI+PC9saW5lPjxjaXJjbGUgY3g9XFxcIjYuNVxcXCIgY3k9XFxcIjYuNVxcXCIgcj1cXFwiMi41XFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCIxNy41XFxcIiBjeT1cXFwiMTcuNVxcXCIgcj1cXFwiMi41XFxcIj48L2NpcmNsZT5cIixcInBob25lLWNhbGxcIjpcIjxwYXRoIGQ9XFxcIk0xNS4wNSA1QTUgNSAwIDAgMSAxOSA4Ljk1TTE1LjA1IDFBOSA5IDAgMCAxIDIzIDguOTRtLTEgNy45OHYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelxcXCI+PC9wYXRoPlwiLFwicGhvbmUtZm9yd2FyZGVkXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxOSAxIDIzIDUgMTkgOVxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTVcXFwiIHkxPVxcXCI1XFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCI1XFxcIj48L2xpbmU+PHBhdGggZD1cXFwiTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6XFxcIj48L3BhdGg+XCIsXCJwaG9uZS1pbmNvbWluZ1wiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMTYgMiAxNiA4IDIyIDhcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjIzXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiOFxcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelxcXCI+PC9wYXRoPlwiLFwicGhvbmUtbWlzc2VkXCI6XCI8bGluZSB4MT1cXFwiMjNcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMTdcXFwiIHkyPVxcXCI3XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE3XFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiN1xcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelxcXCI+PC9wYXRoPlwiLFwicGhvbmUtb2ZmXCI6XCI8cGF0aCBkPVxcXCJNMTAuNjggMTMuMzFhMTYgMTYgMCAwIDAgMy40MSAyLjZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjcgMiAyIDAgMCAxIDEuNzIgMnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjQyIDE5LjQyIDAgMCAxLTMuMzMtMi42N20tMi42Ny0zLjM0YTE5Ljc5IDE5Ljc5IDAgMCAxLTMuMDctOC42M0EyIDIgMCAwIDEgNC4xMSAyaDNhMiAyIDAgMCAxIDIgMS43MiAxMi44NCAxMi44NCAwIDAgMCAuNyAyLjgxIDIgMiAwIDAgMS0uNDUgMi4xMUw4LjA5IDkuOTFcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMjNcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMVxcXCIgeTI9XFxcIjIzXFxcIj48L2xpbmU+XCIsXCJwaG9uZS1vdXRnb2luZ1wiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMjMgNyAyMyAxIDE3IDFcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjE2XFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMVxcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelxcXCI+PC9wYXRoPlwiLFwicGhvbmVcIjpcIjxwYXRoIGQ9XFxcIk0yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelxcXCI+PC9wYXRoPlwiLFwicGllLWNoYXJ0XCI6XCI8cGF0aCBkPVxcXCJNMjEuMjEgMTUuODlBMTAgMTAgMCAxIDEgOCAyLjgzXFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTIyIDEyQTEwIDEwIDAgMCAwIDEyIDJ2MTB6XFxcIj48L3BhdGg+XCIsXCJwbGF5LWNpcmNsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxwb2x5Z29uIHBvaW50cz1cXFwiMTAgOCAxNiAxMiAxMCAxNiAxMCA4XFxcIj48L3BvbHlnb24+XCIsXCJwbGF5XCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjUgMyAxOSAxMiA1IDIxIDUgM1xcXCI+PC9wb2x5Z29uPlwiLFwicGx1cy1jaXJjbGVcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJwbHVzLXNxdWFyZVwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJwbHVzXCI6XCI8bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI1XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxOVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI1XFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxOVxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJwb2NrZXRcIjpcIjxwYXRoIGQ9XFxcIk00IDNoMTZhMiAyIDAgMCAxIDIgMnY2YTEwIDEwIDAgMCAxLTEwIDEwQTEwIDEwIDAgMCAxIDIgMTFWNWEyIDIgMCAwIDEgMi0yelxcXCI+PC9wYXRoPjxwb2x5bGluZSBwb2ludHM9XFxcIjggMTAgMTIgMTQgMTYgMTBcXFwiPjwvcG9seWxpbmU+XCIsXCJwb3dlclwiOlwiPHBhdGggZD1cXFwiTTE4LjM2IDYuNjRhOSA5IDAgMSAxLTEyLjczIDBcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPlwiLFwicHJpbnRlclwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiNiA5IDYgMiAxOCAyIDE4IDlcXFwiPjwvcG9seWxpbmU+PHBhdGggZD1cXFwiTTYgMThINGEyIDIgMCAwIDEtMi0ydi01YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJoLTJcXFwiPjwvcGF0aD48cmVjdCB4PVxcXCI2XFxcIiB5PVxcXCIxNFxcXCIgd2lkdGg9XFxcIjEyXFxcIiBoZWlnaHQ9XFxcIjhcXFwiPjwvcmVjdD5cIixcInJhZGlvXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIyXFxcIj48L2NpcmNsZT48cGF0aCBkPVxcXCJNMTYuMjQgNy43NmE2IDYgMCAwIDEgMCA4LjQ5bS04LjQ4LS4wMWE2IDYgMCAwIDEgMC04LjQ5bTExLjMxLTIuODJhMTAgMTAgMCAwIDEgMCAxNC4xNG0tMTQuMTQgMGExMCAxMCAwIDAgMSAwLTE0LjE0XFxcIj48L3BhdGg+XCIsXCJyZWZyZXNoLWNjd1wiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMSA0IDEgMTAgNyAxMFxcXCI+PC9wb2x5bGluZT48cG9seWxpbmUgcG9pbnRzPVxcXCIyMyAyMCAyMyAxNCAxNyAxNFxcXCI+PC9wb2x5bGluZT48cGF0aCBkPVxcXCJNMjAuNDkgOUE5IDkgMCAwIDAgNS42NCA1LjY0TDEgMTBtMjIgNGwtNC42NCA0LjM2QTkgOSAwIDAgMSAzLjUxIDE1XFxcIj48L3BhdGg+XCIsXCJyZWZyZXNoLWN3XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIyMyA0IDIzIDEwIDE3IDEwXFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjEgMjAgMSAxNCA3IDE0XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk0zLjUxIDlhOSA5IDAgMCAxIDE0Ljg1LTMuMzZMMjMgMTBNMSAxNGw0LjY0IDQuMzZBOSA5IDAgMCAwIDIwLjQ5IDE1XFxcIj48L3BhdGg+XCIsXCJyZXBlYXRcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjE3IDEgMjEgNSAxNyA5XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk0zIDExVjlhNCA0IDAgMCAxIDQtNGgxNFxcXCI+PC9wYXRoPjxwb2x5bGluZSBwb2ludHM9XFxcIjcgMjMgMyAxOSA3IDE1XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk0yMSAxM3YyYTQgNCAwIDAgMS00IDRIM1xcXCI+PC9wYXRoPlwiLFwicmV3aW5kXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjExIDE5IDIgMTIgMTEgNSAxMSAxOVxcXCI+PC9wb2x5Z29uPjxwb2x5Z29uIHBvaW50cz1cXFwiMjIgMTkgMTMgMTIgMjIgNSAyMiAxOVxcXCI+PC9wb2x5Z29uPlwiLFwicm90YXRlLWNjd1wiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMSA0IDEgMTAgNyAxMFxcXCI+PC9wb2x5bGluZT48cGF0aCBkPVxcXCJNMy41MSAxNWE5IDkgMCAxIDAgMi4xMy05LjM2TDEgMTBcXFwiPjwvcGF0aD5cIixcInJvdGF0ZS1jd1wiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMjMgNCAyMyAxMCAxNyAxMFxcXCI+PC9wb2x5bGluZT48cGF0aCBkPVxcXCJNMjAuNDkgMTVhOSA5IDAgMSAxLTIuMTItOS4zNkwyMyAxMFxcXCI+PC9wYXRoPlwiLFwicnNzXCI6XCI8cGF0aCBkPVxcXCJNNCAxMWE5IDkgMCAwIDEgOSA5XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTQgNGExNiAxNiAwIDAgMSAxNiAxNlxcXCI+PC9wYXRoPjxjaXJjbGUgY3g9XFxcIjVcXFwiIGN5PVxcXCIxOVxcXCIgcj1cXFwiMVxcXCI+PC9jaXJjbGU+XCIsXCJzYXZlXCI6XCI8cGF0aCBkPVxcXCJNMTkgMjFINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgxMWw1IDV2MTFhMiAyIDAgMCAxLTIgMnpcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxNyAyMSAxNyAxMyA3IDEzIDcgMjFcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiNyAzIDcgOCAxNSA4XFxcIj48L3BvbHlsaW5lPlwiLFwic2Npc3NvcnNcIjpcIjxjaXJjbGUgY3g9XFxcIjZcXFwiIGN5PVxcXCI2XFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCI2XFxcIiBjeT1cXFwiMThcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIyMFxcXCIgeTE9XFxcIjRcXFwiIHgyPVxcXCI4LjEyXFxcIiB5Mj1cXFwiMTUuODhcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTQuNDdcXFwiIHkxPVxcXCIxNC40OFxcXCIgeDI9XFxcIjIwXFxcIiB5Mj1cXFwiMjBcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOC4xMlxcXCIgeTE9XFxcIjguMTJcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJzZWFyY2hcIjpcIjxjaXJjbGUgY3g9XFxcIjExXFxcIiBjeT1cXFwiMTFcXFwiIHI9XFxcIjhcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiMTYuNjVcXFwiIHkyPVxcXCIxNi42NVxcXCI+PC9saW5lPlwiLFwic2VuZFwiOlwiPGxpbmUgeDE9XFxcIjIyXFxcIiB5MT1cXFwiMlxcXCIgeDI9XFxcIjExXFxcIiB5Mj1cXFwiMTNcXFwiPjwvbGluZT48cG9seWdvbiBwb2ludHM9XFxcIjIyIDIgMTUgMjIgMTEgMTMgMiA5IDIyIDJcXFwiPjwvcG9seWdvbj5cIixcInNlcnZlclwiOlwiPHJlY3QgeD1cXFwiMlxcXCIgeT1cXFwiMlxcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjhcXFwiIHJ4PVxcXCIyXFxcIiByeT1cXFwiMlxcXCI+PC9yZWN0PjxyZWN0IHg9XFxcIjJcXFwiIHk9XFxcIjE0XFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiOFxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PGxpbmUgeDE9XFxcIjZcXFwiIHkxPVxcXCI2XFxcIiB4Mj1cXFwiNi4wMVxcXCIgeTI9XFxcIjZcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiNlxcXCIgeTE9XFxcIjE4XFxcIiB4Mj1cXFwiNi4wMVxcXCIgeTI9XFxcIjE4XFxcIj48L2xpbmU+XCIsXCJzZXR0aW5nc1wiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiM1xcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTE5LjQgMTVhMS42NSAxLjY1IDAgMCAwIC4zMyAxLjgybC4wNi4wNmEyIDIgMCAwIDEgMCAyLjgzIDIgMiAwIDAgMS0yLjgzIDBsLS4wNi0uMDZhMS42NSAxLjY1IDAgMCAwLTEuODItLjMzIDEuNjUgMS42NSAwIDAgMC0xIDEuNTFWMjFhMiAyIDAgMCAxLTIgMiAyIDIgMCAwIDEtMi0ydi0uMDlBMS42NSAxLjY1IDAgMCAwIDkgMTkuNGExLjY1IDEuNjUgMCAwIDAtMS44Mi4zM2wtLjA2LjA2YTIgMiAwIDAgMS0yLjgzIDAgMiAyIDAgMCAxIDAtMi44M2wuMDYtLjA2YTEuNjUgMS42NSAwIDAgMCAuMzMtMS44MiAxLjY1IDEuNjUgMCAwIDAtMS41MS0xSDNhMiAyIDAgMCAxLTItMiAyIDIgMCAwIDEgMi0yaC4wOUExLjY1IDEuNjUgMCAwIDAgNC42IDlhMS42NSAxLjY1IDAgMCAwLS4zMy0xLjgybC0uMDYtLjA2YTIgMiAwIDAgMSAwLTIuODMgMiAyIDAgMCAxIDIuODMgMGwuMDYuMDZhMS42NSAxLjY1IDAgMCAwIDEuODIuMzNIOWExLjY1IDEuNjUgMCAwIDAgMS0xLjUxVjNhMiAyIDAgMCAxIDItMiAyIDIgMCAwIDEgMiAydi4wOWExLjY1IDEuNjUgMCAwIDAgMSAxLjUxIDEuNjUgMS42NSAwIDAgMCAxLjgyLS4zM2wuMDYtLjA2YTIgMiAwIDAgMSAyLjgzIDAgMiAyIDAgMCAxIDAgMi44M2wtLjA2LjA2YTEuNjUgMS42NSAwIDAgMC0uMzMgMS44MlY5YTEuNjUgMS42NSAwIDAgMCAxLjUxIDFIMjFhMiAyIDAgMCAxIDIgMiAyIDIgMCAwIDEtMiAyaC0uMDlhMS42NSAxLjY1IDAgMCAwLTEuNTEgMXpcXFwiPjwvcGF0aD5cIixcInNoYXJlLTJcIjpcIjxjaXJjbGUgY3g9XFxcIjE4XFxcIiBjeT1cXFwiNVxcXCIgcj1cXFwiM1xcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiNlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCIxOFxcXCIgY3k9XFxcIjE5XFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiOC41OVxcXCIgeTE9XFxcIjEzLjUxXFxcIiB4Mj1cXFwiMTUuNDJcXFwiIHkyPVxcXCIxNy40OVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNS40MVxcXCIgeTE9XFxcIjYuNTFcXFwiIHgyPVxcXCI4LjU5XFxcIiB5Mj1cXFwiMTAuNDlcXFwiPjwvbGluZT5cIixcInNoYXJlXCI6XCI8cGF0aCBkPVxcXCJNNCAxMnY4YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMnYtOFxcXCI+PC9wYXRoPjxwb2x5bGluZSBwb2ludHM9XFxcIjE2IDYgMTIgMiA4IDZcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT5cIixcInNoaWVsZC1vZmZcIjpcIjxwYXRoIGQ9XFxcIk0xOS42OSAxNGE2LjkgNi45IDAgMCAwIC4zMS0yVjVsLTgtMy0zLjE2IDEuMThcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNNC43MyA0LjczTDQgNXY3YzAgNiA4IDEwIDggMTBhMjAuMjkgMjAuMjkgMCAwIDAgNS42Mi00LjM4XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPlwiLFwic2hpZWxkXCI6XCI8cGF0aCBkPVxcXCJNMTIgMjJzOC00IDgtMTBWNWwtOC0zLTggM3Y3YzAgNiA4IDEwIDggMTB6XFxcIj48L3BhdGg+XCIsXCJzaG9wcGluZy1iYWdcIjpcIjxwYXRoIGQ9XFxcIk02IDJMMyA2djE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMlY2bC0zLTR6XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjNcXFwiIHkxPVxcXCI2XFxcIiB4Mj1cXFwiMjFcXFwiIHkyPVxcXCI2XFxcIj48L2xpbmU+PHBhdGggZD1cXFwiTTE2IDEwYTQgNCAwIDAgMS04IDBcXFwiPjwvcGF0aD5cIixcInNob3BwaW5nLWNhcnRcIjpcIjxjaXJjbGUgY3g9XFxcIjlcXFwiIGN5PVxcXCIyMVxcXCIgcj1cXFwiMVxcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiMjBcXFwiIGN5PVxcXCIyMVxcXCIgcj1cXFwiMVxcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTEgMWg0bDIuNjggMTMuMzlhMiAyIDAgMCAwIDIgMS42MWg5LjcyYTIgMiAwIDAgMCAyLTEuNjFMMjMgNkg2XFxcIj48L3BhdGg+XCIsXCJzaHVmZmxlXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxNiAzIDIxIDMgMjEgOFxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiNFxcXCIgeTE9XFxcIjIwXFxcIiB4Mj1cXFwiMjFcXFwiIHkyPVxcXCIzXFxcIj48L2xpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMjEgMTYgMjEgMjEgMTYgMjFcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjE1XFxcIiB5MT1cXFwiMTVcXFwiIHgyPVxcXCIyMVxcXCIgeTI9XFxcIjIxXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjRcXFwiIHkxPVxcXCI0XFxcIiB4Mj1cXFwiOVxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT5cIixcInNpZGViYXJcIjpcIjxyZWN0IHg9XFxcIjNcXFwiIHk9XFxcIjNcXFwiIHdpZHRoPVxcXCIxOFxcXCIgaGVpZ2h0PVxcXCIxOFxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCIzXFxcIiB4Mj1cXFwiOVxcXCIgeTI9XFxcIjIxXFxcIj48L2xpbmU+XCIsXCJza2lwLWJhY2tcIjpcIjxwb2x5Z29uIHBvaW50cz1cXFwiMTkgMjAgOSAxMiAxOSA0IDE5IDIwXFxcIj48L3BvbHlnb24+PGxpbmUgeDE9XFxcIjVcXFwiIHkxPVxcXCIxOVxcXCIgeDI9XFxcIjVcXFwiIHkyPVxcXCI1XFxcIj48L2xpbmU+XCIsXCJza2lwLWZvcndhcmRcIjpcIjxwb2x5Z29uIHBvaW50cz1cXFwiNSA0IDE1IDEyIDUgMjAgNSA0XFxcIj48L3BvbHlnb24+PGxpbmUgeDE9XFxcIjE5XFxcIiB5MT1cXFwiNVxcXCIgeDI9XFxcIjE5XFxcIiB5Mj1cXFwiMTlcXFwiPjwvbGluZT5cIixcInNsYWNrXCI6XCI8cGF0aCBkPVxcXCJNMTQuNSAxMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41di01YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41djVjMCAuODMtLjY3IDEuNS0xLjUgMS41elxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0yMC41IDEwSDE5VjguNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTkuNSAxNGMuODMgMCAxLjUuNjcgMS41IDEuNXY1YzAgLjgzLS42NyAxLjUtMS41IDEuNVM4IDIxLjMzIDggMjAuNXYtNWMwLS44My42Ny0xLjUgMS41LTEuNXpcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMy41IDE0SDV2MS41YzAgLjgzLS42NyAxLjUtMS41IDEuNVMyIDE2LjMzIDIgMTUuNSAyLjY3IDE0IDMuNSAxNHpcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTQgMTQuNWMwLS44My42Ny0xLjUgMS41LTEuNWg1Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVoLTVjLS44MyAwLTEuNS0uNjctMS41LTEuNXpcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTUuNSAxOUgxNHYxLjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTAgOS41QzEwIDguNjcgOS4zMyA4IDguNSA4aC01QzIuNjcgOCAyIDguNjcgMiA5LjVTMi42NyAxMSAzLjUgMTFoNWMuODMgMCAxLjUtLjY3IDEuNS0xLjV6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTguNSA1SDEwVjMuNUMxMCAyLjY3IDkuMzMgMiA4LjUgMlM3IDIuNjcgNyAzLjUgNy42NyA1IDguNSA1elxcXCI+PC9wYXRoPlwiLFwic2xhc2hcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiNC45M1xcXCIgeTE9XFxcIjQuOTNcXFwiIHgyPVxcXCIxOS4wN1xcXCIgeTI9XFxcIjE5LjA3XFxcIj48L2xpbmU+XCIsXCJzbGlkZXJzXCI6XCI8bGluZSB4MT1cXFwiNFxcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiNFxcXCIgeTI9XFxcIjE0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjRcXFwiIHkxPVxcXCIxMFxcXCIgeDI9XFxcIjRcXFwiIHkyPVxcXCIzXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMjFcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMFxcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiMjBcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMFxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMjBcXFwiIHkyPVxcXCIzXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxNFxcXCIgeDI9XFxcIjdcXFwiIHkyPVxcXCIxNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI5XFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjE1XFxcIiB5Mj1cXFwiOFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxN1xcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPlwiLFwic21hcnRwaG9uZVwiOlwiPHJlY3QgeD1cXFwiNVxcXCIgeT1cXFwiMlxcXCIgd2lkdGg9XFxcIjE0XFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT5cIixcInNtaWxlXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxMFxcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTggMTRzMS41IDIgNCAyIDQtMiA0LTJcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiOVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCI5LjAxXFxcIiB5Mj1cXFwiOVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIxNS4wMVxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT5cIixcInNwZWFrZXJcIjpcIjxyZWN0IHg9XFxcIjRcXFwiIHk9XFxcIjJcXFwiIHdpZHRoPVxcXCIxNlxcXCIgaGVpZ2h0PVxcXCIyMFxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxNFxcXCIgcj1cXFwiNFxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiNlxcXCI+PC9saW5lPlwiLFwic3F1YXJlXCI6XCI8cmVjdCB4PVxcXCIzXFxcIiB5PVxcXCIzXFxcIiB3aWR0aD1cXFwiMThcXFwiIGhlaWdodD1cXFwiMThcXFwiIHJ4PVxcXCIyXFxcIiByeT1cXFwiMlxcXCI+PC9yZWN0PlwiLFwic3RhclwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCIxMiAyIDE1LjA5IDguMjYgMjIgOS4yNyAxNyAxNC4xNCAxOC4xOCAyMS4wMiAxMiAxNy43NyA1LjgyIDIxLjAyIDcgMTQuMTQgMiA5LjI3IDguOTEgOC4yNiAxMiAyXFxcIj48L3BvbHlnb24+XCIsXCJzdG9wLWNpcmNsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxyZWN0IHg9XFxcIjlcXFwiIHk9XFxcIjlcXFwiIHdpZHRoPVxcXCI2XFxcIiBoZWlnaHQ9XFxcIjZcXFwiPjwvcmVjdD5cIixcInN1blwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiNVxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI0LjIyXFxcIiB5MT1cXFwiNC4yMlxcXCIgeDI9XFxcIjUuNjRcXFwiIHkyPVxcXCI1LjY0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE4LjM2XFxcIiB5MT1cXFwiMTguMzZcXFwiIHgyPVxcXCIxOS43OFxcXCIgeTI9XFxcIjE5Ljc4XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI0LjIyXFxcIiB5MT1cXFwiMTkuNzhcXFwiIHgyPVxcXCI1LjY0XFxcIiB5Mj1cXFwiMTguMzZcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTguMzZcXFwiIHkxPVxcXCI1LjY0XFxcIiB4Mj1cXFwiMTkuNzhcXFwiIHkyPVxcXCI0LjIyXFxcIj48L2xpbmU+XCIsXCJzdW5yaXNlXCI6XCI8cGF0aCBkPVxcXCJNMTcgMThhNSA1IDAgMCAwLTEwIDBcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCI5XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjQuMjJcXFwiIHkxPVxcXCIxMC4yMlxcXCIgeDI9XFxcIjUuNjRcXFwiIHkyPVxcXCIxMS42NFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMThcXFwiIHgyPVxcXCIzXFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMjFcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTguMzZcXFwiIHkxPVxcXCIxMS42NFxcXCIgeDI9XFxcIjE5Ljc4XFxcIiB5Mj1cXFwiMTAuMjJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMjNcXFwiIHkxPVxcXCIyMlxcXCIgeDI9XFxcIjFcXFwiIHkyPVxcXCIyMlxcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjggNiAxMiAyIDE2IDZcXFwiPjwvcG9seWxpbmU+XCIsXCJzdW5zZXRcIjpcIjxwYXRoIGQ9XFxcIk0xNyAxOGE1IDUgMCAwIDAtMTAgMFxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiNC4yMlxcXCIgeTE9XFxcIjEwLjIyXFxcIiB4Mj1cXFwiNS42NFxcXCIgeTI9XFxcIjExLjY0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjE4XFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxOC4zNlxcXCIgeTE9XFxcIjExLjY0XFxcIiB4Mj1cXFwiMTkuNzhcXFwiIHkyPVxcXCIxMC4yMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyM1xcXCIgeTE9XFxcIjIyXFxcIiB4Mj1cXFwiMVxcXCIgeTI9XFxcIjIyXFxcIj48L2xpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTYgNSAxMiA5IDggNVxcXCI+PC9wb2x5bGluZT5cIixcInRhYmxldFwiOlwiPHJlY3QgeD1cXFwiNFxcXCIgeT1cXFwiMlxcXCIgd2lkdGg9XFxcIjE2XFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT5cIixcInRhZ1wiOlwiPHBhdGggZD1cXFwiTTIwLjU5IDEzLjQxbC03LjE3IDcuMTdhMiAyIDAgMCAxLTIuODMgMEwyIDEyVjJoMTBsOC41OSA4LjU5YTIgMiAwIDAgMSAwIDIuODJ6XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjdcXFwiIHkxPVxcXCI3XFxcIiB4Mj1cXFwiNy4wMVxcXCIgeTI9XFxcIjdcXFwiPjwvbGluZT5cIixcInRhcmdldFwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjZcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjJcXFwiPjwvY2lyY2xlPlwiLFwidGVybWluYWxcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjQgMTcgMTAgMTEgNCA1XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE5XFxcIiB4Mj1cXFwiMjBcXFwiIHkyPVxcXCIxOVxcXCI+PC9saW5lPlwiLFwidGhlcm1vbWV0ZXJcIjpcIjxwYXRoIGQ9XFxcIk0xNCAxNC43NlYzLjVhMi41IDIuNSAwIDAgMC01IDB2MTEuMjZhNC41IDQuNSAwIDEgMCA1IDB6XFxcIj48L3BhdGg+XCIsXCJ0aHVtYnMtZG93blwiOlwiPHBhdGggZD1cXFwiTTEwIDE1djRhMyAzIDAgMCAwIDMgM2w0LTlWMkg1LjcyYTIgMiAwIDAgMC0yIDEuN2wtMS4zOCA5YTIgMiAwIDAgMCAyIDIuM3ptNy0xM2gyLjY3QTIuMzEgMi4zMSAwIDAgMSAyMiA0djdhMi4zMSAyLjMxIDAgMCAxLTIuMzMgMkgxN1xcXCI+PC9wYXRoPlwiLFwidGh1bWJzLXVwXCI6XCI8cGF0aCBkPVxcXCJNMTQgOVY1YTMgMyAwIDAgMC0zLTNsLTQgOXYxMWgxMS4yOGEyIDIgMCAwIDAgMi0xLjdsMS4zOC05YTIgMiAwIDAgMC0yLTIuM3pNNyAyMkg0YTIgMiAwIDAgMS0yLTJ2LTdhMiAyIDAgMCAxIDItMmgzXFxcIj48L3BhdGg+XCIsXCJ0b2dnbGUtbGVmdFwiOlwiPHJlY3QgeD1cXFwiMVxcXCIgeT1cXFwiNVxcXCIgd2lkdGg9XFxcIjIyXFxcIiBoZWlnaHQ9XFxcIjE0XFxcIiByeD1cXFwiN1xcXCIgcnk9XFxcIjdcXFwiPjwvcmVjdD48Y2lyY2xlIGN4PVxcXCI4XFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPlwiLFwidG9nZ2xlLXJpZ2h0XCI6XCI8cmVjdCB4PVxcXCIxXFxcIiB5PVxcXCI1XFxcIiB3aWR0aD1cXFwiMjJcXFwiIGhlaWdodD1cXFwiMTRcXFwiIHJ4PVxcXCI3XFxcIiByeT1cXFwiN1xcXCI+PC9yZWN0PjxjaXJjbGUgY3g9XFxcIjE2XFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPlwiLFwidG9vbFwiOlwiPHBhdGggZD1cXFwiTTE0LjcgNi4zYTEgMSAwIDAgMCAwIDEuNGwxLjYgMS42YTEgMSAwIDAgMCAxLjQgMGwzLjc3LTMuNzdhNiA2IDAgMCAxLTcuOTQgNy45NGwtNi45MSA2LjkxYTIuMTIgMi4xMiAwIDAgMS0zLTNsNi45MS02LjkxYTYgNiAwIDAgMSA3Ljk0LTcuOTRsLTMuNzYgMy43NnpcXFwiPjwvcGF0aD5cIixcInRyYXNoLTJcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjMgNiA1IDYgMjEgNlxcXCI+PC9wb2x5bGluZT48cGF0aCBkPVxcXCJNMTkgNnYxNGEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY2bTMgMFY0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjJcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMTBcXFwiIHkxPVxcXCIxMVxcXCIgeDI9XFxcIjEwXFxcIiB5Mj1cXFwiMTdcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTRcXFwiIHkxPVxcXCIxMVxcXCIgeDI9XFxcIjE0XFxcIiB5Mj1cXFwiMTdcXFwiPjwvbGluZT5cIixcInRyYXNoXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIzIDYgNSA2IDIxIDZcXFwiPjwvcG9seWxpbmU+PHBhdGggZD1cXFwiTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNm0zIDBWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyXFxcIj48L3BhdGg+XCIsXCJ0cmVsbG9cIjpcIjxyZWN0IHg9XFxcIjNcXFwiIHk9XFxcIjNcXFwiIHdpZHRoPVxcXCIxOFxcXCIgaGVpZ2h0PVxcXCIxOFxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PHJlY3QgeD1cXFwiN1xcXCIgeT1cXFwiN1xcXCIgd2lkdGg9XFxcIjNcXFwiIGhlaWdodD1cXFwiOVxcXCI+PC9yZWN0PjxyZWN0IHg9XFxcIjE0XFxcIiB5PVxcXCI3XFxcIiB3aWR0aD1cXFwiM1xcXCIgaGVpZ2h0PVxcXCI1XFxcIj48L3JlY3Q+XCIsXCJ0cmVuZGluZy1kb3duXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIyMyAxOCAxMy41IDguNSA4LjUgMTMuNSAxIDZcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTcgMTggMjMgMTggMjMgMTJcXFwiPjwvcG9seWxpbmU+XCIsXCJ0cmVuZGluZy11cFwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMjMgNiAxMy41IDE1LjUgOC41IDEwLjUgMSAxOFxcXCI+PC9wb2x5bGluZT48cG9seWxpbmUgcG9pbnRzPVxcXCIxNyA2IDIzIDYgMjMgMTJcXFwiPjwvcG9seWxpbmU+XCIsXCJ0cmlhbmdsZVwiOlwiPHBhdGggZD1cXFwiTTEwLjI5IDMuODZMMS44MiAxOGEyIDIgMCAwIDAgMS43MSAzaDE2Ljk0YTIgMiAwIDAgMCAxLjcxLTNMMTMuNzEgMy44NmEyIDIgMCAwIDAtMy40MiAwelxcXCI+PC9wYXRoPlwiLFwidHJ1Y2tcIjpcIjxyZWN0IHg9XFxcIjFcXFwiIHk9XFxcIjNcXFwiIHdpZHRoPVxcXCIxNVxcXCIgaGVpZ2h0PVxcXCIxM1xcXCI+PC9yZWN0Pjxwb2x5Z29uIHBvaW50cz1cXFwiMTYgOCAyMCA4IDIzIDExIDIzIDE2IDE2IDE2IDE2IDhcXFwiPjwvcG9seWdvbj48Y2lyY2xlIGN4PVxcXCI1LjVcXFwiIGN5PVxcXCIxOC41XFxcIiByPVxcXCIyLjVcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjE4LjVcXFwiIGN5PVxcXCIxOC41XFxcIiByPVxcXCIyLjVcXFwiPjwvY2lyY2xlPlwiLFwidHZcIjpcIjxyZWN0IHg9XFxcIjJcXFwiIHk9XFxcIjdcXFwiIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIxNVxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTcgMiAxMiA3IDcgMlxcXCI+PC9wb2x5bGluZT5cIixcInR3aXRjaFwiOlwiPHBhdGggZD1cXFwiTTIxIDJIM3YxNmg1djRsNC00aDVsNC00VjJ6bS0xMCA5VjdtNSA0VjdcXFwiPjwvcGF0aD5cIixcInR3aXR0ZXJcIjpcIjxwYXRoIGQ9XFxcIk0yMyAzYTEwLjkgMTAuOSAwIDAgMS0zLjE0IDEuNTMgNC40OCA0LjQ4IDAgMCAwLTcuODYgM3YxQTEwLjY2IDEwLjY2IDAgMCAxIDMgNHMtNCA5IDUgMTNhMTEuNjQgMTEuNjQgMCAwIDEtNyAyYzkgNSAyMCAwIDIwLTExLjVhNC41IDQuNSAwIDAgMC0uMDgtLjgzQTcuNzIgNy43MiAwIDAgMCAyMyAzelxcXCI+PC9wYXRoPlwiLFwidHlwZVwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiNCA3IDQgNCAyMCA0IDIwIDdcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCIyMFxcXCIgeDI9XFxcIjE1XFxcIiB5Mj1cXFwiMjBcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI0XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIyMFxcXCI+PC9saW5lPlwiLFwidW1icmVsbGFcIjpcIjxwYXRoIGQ9XFxcIk0yMyAxMmExMS4wNSAxMS4wNSAwIDAgMC0yMiAwem0tNSA3YTMgMyAwIDAgMS02IDB2LTdcXFwiPjwvcGF0aD5cIixcInVuZGVybGluZVwiOlwiPHBhdGggZD1cXFwiTTYgM3Y3YTYgNiAwIDAgMCA2IDYgNiA2IDAgMCAwIDYtNlYzXFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjRcXFwiIHkxPVxcXCIyMVxcXCIgeDI9XFxcIjIwXFxcIiB5Mj1cXFwiMjFcXFwiPjwvbGluZT5cIixcInVubG9ja1wiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiMTFcXFwiIHdpZHRoPVxcXCIxOFxcXCIgaGVpZ2h0PVxcXCIxMVxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PHBhdGggZD1cXFwiTTcgMTFWN2E1IDUgMCAwIDEgOS45LTFcXFwiPjwvcGF0aD5cIixcInVwbG9hZC1jbG91ZFwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMTYgMTYgMTIgMTIgOCAxNlxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMjFcXFwiPjwvbGluZT48cGF0aCBkPVxcXCJNMjAuMzkgMTguMzlBNSA1IDAgMCAwIDE4IDloLTEuMjZBOCA4IDAgMSAwIDMgMTYuM1xcXCI+PC9wYXRoPjxwb2x5bGluZSBwb2ludHM9XFxcIjE2IDE2IDEyIDEyIDggMTZcXFwiPjwvcG9seWxpbmU+XCIsXCJ1cGxvYWRcIjpcIjxwYXRoIGQ9XFxcIk0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00XFxcIj48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTcgOCAxMiAzIDcgOFxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIzXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxNVxcXCI+PC9saW5lPlwiLFwidXNlci1jaGVja1wiOlwiPHBhdGggZD1cXFwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcXFwiPjwvcGF0aD48Y2lyY2xlIGN4PVxcXCI4LjVcXFwiIGN5PVxcXCI3XFxcIiByPVxcXCI0XFxcIj48L2NpcmNsZT48cG9seWxpbmUgcG9pbnRzPVxcXCIxNyAxMSAxOSAxMyAyMyA5XFxcIj48L3BvbHlsaW5lPlwiLFwidXNlci1taW51c1wiOlwiPHBhdGggZD1cXFwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcXFwiPjwvcGF0aD48Y2lyY2xlIGN4PVxcXCI4LjVcXFwiIGN5PVxcXCI3XFxcIiByPVxcXCI0XFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiMjNcXFwiIHkxPVxcXCIxMVxcXCIgeDI9XFxcIjE3XFxcIiB5Mj1cXFwiMTFcXFwiPjwvbGluZT5cIixcInVzZXItcGx1c1wiOlwiPHBhdGggZD1cXFwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcXFwiPjwvcGF0aD48Y2lyY2xlIGN4PVxcXCI4LjVcXFwiIGN5PVxcXCI3XFxcIiByPVxcXCI0XFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiMjBcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMjBcXFwiIHkyPVxcXCIxNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyM1xcXCIgeTE9XFxcIjExXFxcIiB4Mj1cXFwiMTdcXFwiIHkyPVxcXCIxMVxcXCI+PC9saW5lPlwiLFwidXNlci14XCI6XCI8cGF0aCBkPVxcXCJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg1YTQgNCAwIDAgMC00IDR2MlxcXCI+PC9wYXRoPjxjaXJjbGUgY3g9XFxcIjguNVxcXCIgY3k9XFxcIjdcXFwiIHI9XFxcIjRcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIxOFxcXCIgeTE9XFxcIjhcXFwiIHgyPVxcXCIyM1xcXCIgeTI9XFxcIjEzXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjIzXFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjE4XFxcIiB5Mj1cXFwiMTNcXFwiPjwvbGluZT5cIixcInVzZXJcIjpcIjxwYXRoIGQ9XFxcIk0yMCAyMXYtMmE0IDQgMCAwIDAtNC00SDhhNCA0IDAgMCAwLTQgNHYyXFxcIj48L3BhdGg+PGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCI3XFxcIiByPVxcXCI0XFxcIj48L2NpcmNsZT5cIixcInVzZXJzXCI6XCI8cGF0aCBkPVxcXCJNMTcgMjF2LTJhNCA0IDAgMCAwLTQtNEg1YTQgNCAwIDAgMC00IDR2MlxcXCI+PC9wYXRoPjxjaXJjbGUgY3g9XFxcIjlcXFwiIGN5PVxcXCI3XFxcIiByPVxcXCI0XFxcIj48L2NpcmNsZT48cGF0aCBkPVxcXCJNMjMgMjF2LTJhNCA0IDAgMCAwLTMtMy44N1xcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0xNiAzLjEzYTQgNCAwIDAgMSAwIDcuNzVcXFwiPjwvcGF0aD5cIixcInZpZGVvLW9mZlwiOlwiPHBhdGggZD1cXFwiTTE2IDE2djFhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWN2EyIDIgMCAwIDEgMi0yaDJtNS42NiAwSDE0YTIgMiAwIDAgMSAyIDJ2My4zNGwxIDFMMjMgN3YxMFxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMjNcXFwiPjwvbGluZT5cIixcInZpZGVvXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjIzIDcgMTYgMTIgMjMgMTcgMjMgN1xcXCI+PC9wb2x5Z29uPjxyZWN0IHg9XFxcIjFcXFwiIHk9XFxcIjVcXFwiIHdpZHRoPVxcXCIxNVxcXCIgaGVpZ2h0PVxcXCIxNFxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+XCIsXCJ2b2ljZW1haWxcIjpcIjxjaXJjbGUgY3g9XFxcIjUuNVxcXCIgY3k9XFxcIjExLjVcXFwiIHI9XFxcIjQuNVxcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiMTguNVxcXCIgY3k9XFxcIjExLjVcXFwiIHI9XFxcIjQuNVxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjUuNVxcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMTguNVxcXCIgeTI9XFxcIjE2XFxcIj48L2xpbmU+XCIsXCJ2b2x1bWUtMVwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCIxMSA1IDYgOSAyIDkgMiAxNSA2IDE1IDExIDE5IDExIDVcXFwiPjwvcG9seWdvbj48cGF0aCBkPVxcXCJNMTUuNTQgOC40NmE1IDUgMCAwIDEgMCA3LjA3XFxcIj48L3BhdGg+XCIsXCJ2b2x1bWUtMlwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCIxMSA1IDYgOSAyIDkgMiAxNSA2IDE1IDExIDE5IDExIDVcXFwiPjwvcG9seWdvbj48cGF0aCBkPVxcXCJNMTkuMDcgNC45M2ExMCAxMCAwIDAgMSAwIDE0LjE0TTE1LjU0IDguNDZhNSA1IDAgMCAxIDAgNy4wN1xcXCI+PC9wYXRoPlwiLFwidm9sdW1lLXhcIjpcIjxwb2x5Z29uIHBvaW50cz1cXFwiMTEgNSA2IDkgMiA5IDIgMTUgNiAxNSAxMSAxOSAxMSA1XFxcIj48L3BvbHlnb24+PGxpbmUgeDE9XFxcIjIzXFxcIiB5MT1cXFwiOVxcXCIgeDI9XFxcIjE3XFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTdcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIxNVxcXCI+PC9saW5lPlwiLFwidm9sdW1lXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjExIDUgNiA5IDIgOSAyIDE1IDYgMTUgMTEgMTkgMTEgNVxcXCI+PC9wb2x5Z29uPlwiLFwid2F0Y2hcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjdcXFwiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9XFxcIjEyIDkgMTIgMTIgMTMuNSAxMy41XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk0xNi41MSAxNy4zNWwtLjM1IDMuODNhMiAyIDAgMCAxLTIgMS44Mkg5LjgzYTIgMiAwIDAgMS0yLTEuODJsLS4zNS0zLjgzbS4wMS0xMC43bC4zNS0zLjgzQTIgMiAwIDAgMSA5LjgzIDFoNC4zNWEyIDIgMCAwIDEgMiAxLjgybC4zNSAzLjgzXFxcIj48L3BhdGg+XCIsXCJ3aWZpLW9mZlwiOlwiPGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0xNi43MiAxMS4wNkExMC45NCAxMC45NCAwIDAgMSAxOSAxMi41NVxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk01IDEyLjU1YTEwLjk0IDEwLjk0IDAgMCAxIDUuMTctMi4zOVxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0xMC43MSA1LjA1QTE2IDE2IDAgMCAxIDIyLjU4IDlcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMS40MiA5YTE1LjkxIDE1LjkxIDAgMCAxIDQuNy0yLjg4XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTguNTMgMTYuMTFhNiA2IDAgMCAxIDYuOTUgMFxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjIwXFxcIiB4Mj1cXFwiMTIuMDFcXFwiIHkyPVxcXCIyMFxcXCI+PC9saW5lPlwiLFwid2lmaVwiOlwiPHBhdGggZD1cXFwiTTUgMTIuNTVhMTEgMTEgMCAwIDEgMTQuMDggMFxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0xLjQyIDlhMTYgMTYgMCAwIDEgMjEuMTYgMFxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk04LjUzIDE2LjExYTYgNiAwIDAgMSA2Ljk1IDBcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyMFxcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiMjBcXFwiPjwvbGluZT5cIixcIndpbmRcIjpcIjxwYXRoIGQ9XFxcIk05LjU5IDQuNTlBMiAyIDAgMSAxIDExIDhIMm0xMC41OSAxMS40MUEyIDIgMCAxIDAgMTQgMTZIMm0xNS43My04LjI3QTIuNSAyLjUgMCAxIDEgMTkuNSAxMkgyXFxcIj48L3BhdGg+XCIsXCJ4LWNpcmNsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIxNVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCI5XFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIxNVxcXCIgeTI9XFxcIjE1XFxcIj48L2xpbmU+XCIsXCJ4LW9jdGFnb25cIjpcIjxwb2x5Z29uIHBvaW50cz1cXFwiNy44NiAyIDE2LjE0IDIgMjIgNy44NiAyMiAxNi4xNCAxNi4xNCAyMiA3Ljg2IDIyIDIgMTYuMTQgMiA3Ljg2IDcuODYgMlxcXCI+PC9wb2x5Z29uPjxsaW5lIHgxPVxcXCIxNVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCI5XFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIxNVxcXCIgeTI9XFxcIjE1XFxcIj48L2xpbmU+XCIsXCJ4LXNxdWFyZVwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiOVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIxNVxcXCIgeTI9XFxcIjE1XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE1XFxcIiB5MT1cXFwiOVxcXCIgeDI9XFxcIjlcXFwiIHkyPVxcXCIxNVxcXCI+PC9saW5lPlwiLFwieFwiOlwiPGxpbmUgeDE9XFxcIjE4XFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjZcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI2XFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjE4XFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT5cIixcInlvdXR1YmVcIjpcIjxwYXRoIGQ9XFxcIk0yMi41NCA2LjQyYTIuNzggMi43OCAwIDAgMC0xLjk0LTJDMTguODggNCAxMiA0IDEyIDRzLTYuODggMC04LjYuNDZhMi43OCAyLjc4IDAgMCAwLTEuOTQgMkEyOSAyOSAwIDAgMCAxIDExLjc1YTI5IDI5IDAgMCAwIC40NiA1LjMzQTIuNzggMi43OCAwIDAgMCAzLjQgMTljMS43Mi40NiA4LjYuNDYgOC42LjQ2czYuODggMCA4LjYtLjQ2YTIuNzggMi43OCAwIDAgMCAxLjk0LTIgMjkgMjkgMCAwIDAgLjQ2LTUuMjUgMjkgMjkgMCAwIDAtLjQ2LTUuMzN6XFxcIj48L3BhdGg+PHBvbHlnb24gcG9pbnRzPVxcXCI5Ljc1IDE1LjAyIDE1LjUgMTEuNzUgOS43NSA4LjQ4IDkuNzUgMTUuMDJcXFwiPjwvcG9seWdvbj5cIixcInphcC1vZmZcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjEyLjQxIDYuNzUgMTMgMiAxMC41NyA0LjkyXFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjE4LjU3IDEyLjkxIDIxIDEwIDE1LjY2IDEwXFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjggOCAzIDE0IDEyIDE0IDExIDIyIDE2IDE2XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMjNcXFwiPjwvbGluZT5cIixcInphcFwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCIxMyAyIDMgMTQgMTIgMTQgMTEgMjIgMjEgMTAgMTIgMTAgMTMgMlxcXCI+PC9wb2x5Z29uPlwiLFwiem9vbS1pblwiOlwiPGNpcmNsZSBjeD1cXFwiMTFcXFwiIGN5PVxcXCIxMVxcXCIgcj1cXFwiOFxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjIxXFxcIiB5MT1cXFwiMjFcXFwiIHgyPVxcXCIxNi42NVxcXCIgeTI9XFxcIjE2LjY1XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjExXFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjExXFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOFxcXCIgeTE9XFxcIjExXFxcIiB4Mj1cXFwiMTRcXFwiIHkyPVxcXCIxMVxcXCI+PC9saW5lPlwiLFwiem9vbS1vdXRcIjpcIjxjaXJjbGUgY3g9XFxcIjExXFxcIiBjeT1cXFwiMTFcXFwiIHI9XFxcIjhcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiMTYuNjVcXFwiIHkyPVxcXCIxNi42NVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTFcXFwiIHgyPVxcXCIxNFxcXCIgeTI9XFxcIjExXFxcIj48L2xpbmU+XCJ9O1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2RlZHVwZS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2RlZHVwZS5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJSQVlfXywgX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX187LyohXG4gIENvcHlyaWdodCAoYykgMjAxNiBKZWQgV2F0c29uLlxuICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGNsYXNzTmFtZXMgPSAoZnVuY3Rpb24gKCkge1xuXHRcdC8vIGRvbid0IGluaGVyaXQgZnJvbSBPYmplY3Qgc28gd2UgY2FuIHNraXAgaGFzT3duUHJvcGVydHkgY2hlY2sgbGF0ZXJcblx0XHQvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NTE4MzI4L2NyZWF0aW5nLWpzLW9iamVjdC13aXRoLW9iamVjdC1jcmVhdGVudWxsI2Fuc3dlci0yMTA3OTIzMlxuXHRcdGZ1bmN0aW9uIFN0b3JhZ2VPYmplY3QoKSB7fVxuXHRcdFN0b3JhZ2VPYmplY3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuXHRcdGZ1bmN0aW9uIF9wYXJzZUFycmF5IChyZXN1bHRTZXQsIGFycmF5KSB7XG5cdFx0XHR2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG5cdFx0XHRcdF9wYXJzZShyZXN1bHRTZXQsIGFycmF5W2ldKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cblx0XHRmdW5jdGlvbiBfcGFyc2VOdW1iZXIgKHJlc3VsdFNldCwgbnVtKSB7XG5cdFx0XHRyZXN1bHRTZXRbbnVtXSA9IHRydWU7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gX3BhcnNlT2JqZWN0IChyZXN1bHRTZXQsIG9iamVjdCkge1xuXHRcdFx0Zm9yICh2YXIgayBpbiBvYmplY3QpIHtcblx0XHRcdFx0aWYgKGhhc093bi5jYWxsKG9iamVjdCwgaykpIHtcblx0XHRcdFx0XHQvLyBzZXQgdmFsdWUgdG8gZmFsc2UgaW5zdGVhZCBvZiBkZWxldGluZyBpdCB0byBhdm9pZCBjaGFuZ2luZyBvYmplY3Qgc3RydWN0dXJlXG5cdFx0XHRcdFx0Ly8gaHR0cHM6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAxMi8xMS93cml0aW5nLWZhc3QtbWVtb3J5LWVmZmljaWVudC1qYXZhc2NyaXB0LyNkZS1yZWZlcmVuY2luZy1taXNjb25jZXB0aW9uc1xuXHRcdFx0XHRcdHJlc3VsdFNldFtrXSA9ICEhb2JqZWN0W2tdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dmFyIFNQQUNFID0gL1xccysvO1xuXHRcdGZ1bmN0aW9uIF9wYXJzZVN0cmluZyAocmVzdWx0U2V0LCBzdHIpIHtcblx0XHRcdHZhciBhcnJheSA9IHN0ci5zcGxpdChTUEFDRSk7XG5cdFx0XHR2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG5cdFx0XHRcdHJlc3VsdFNldFthcnJheVtpXV0gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIF9wYXJzZSAocmVzdWx0U2V0LCBhcmcpIHtcblx0XHRcdGlmICghYXJnKSByZXR1cm47XG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdC8vICdmb28gYmFyJ1xuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdF9wYXJzZVN0cmluZyhyZXN1bHRTZXQsIGFyZyk7XG5cblx0XHRcdC8vIFsnZm9vJywgJ2JhcicsIC4uLl1cblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdF9wYXJzZUFycmF5KHJlc3VsdFNldCwgYXJnKTtcblxuXHRcdFx0Ly8geyAnZm9vJzogdHJ1ZSwgLi4uIH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0X3BhcnNlT2JqZWN0KHJlc3VsdFNldCwgYXJnKTtcblxuXHRcdFx0Ly8gJzEzMCdcblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0X3BhcnNlTnVtYmVyKHJlc3VsdFNldCwgYXJnKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmdW5jdGlvbiBfY2xhc3NOYW1lcyAoKSB7XG5cdFx0XHQvLyBkb24ndCBsZWFrIGFyZ3VtZW50c1xuXHRcdFx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL3BldGthYW50b25vdi9ibHVlYmlyZC93aWtpL09wdGltaXphdGlvbi1raWxsZXJzIzMyLWxlYWtpbmctYXJndW1lbnRzXG5cdFx0XHR2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcblx0XHRcdHZhciBhcmdzID0gQXJyYXkobGVuKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdFx0YXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGNsYXNzU2V0ID0gbmV3IFN0b3JhZ2VPYmplY3QoKTtcblx0XHRcdF9wYXJzZUFycmF5KGNsYXNzU2V0LCBhcmdzKTtcblxuXHRcdFx0dmFyIGxpc3QgPSBbXTtcblxuXHRcdFx0Zm9yICh2YXIgayBpbiBjbGFzc1NldCkge1xuXHRcdFx0XHRpZiAoY2xhc3NTZXRba10pIHtcblx0XHRcdFx0XHRsaXN0LnB1c2goaylcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbGlzdC5qb2luKCcgJyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIF9jbGFzc05hbWVzO1xuXHR9KSgpO1xuXG5cdGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0cnVlKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdCEoX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJSQVlfXyA9IFtdLCBfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXyA9IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KS5hcHBseShleHBvcnRzLCBfX1dFQlBBQ0tfQU1EX0RFRklORV9BUlJBWV9fKSxcblx0XHRcdFx0X19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX18gIT09IHVuZGVmaW5lZCAmJiAobW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXykpO1xuXHR9IGVsc2Uge31cbn0oKSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9lcy9hcnJheS9mcm9tLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2VzL2FycmF5L2Zyb20uanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbl9fd2VicGFja19yZXF1aXJlX18oLyohIC4uLy4uL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qc1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18oLyohIC4uLy4uL21vZHVsZXMvZXMuYXJyYXkuZnJvbSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mcm9tLmpzXCIpO1xudmFyIHBhdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi8uLi9pbnRlcm5hbHMvcGF0aCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BhdGguanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0aC5BcnJheS5mcm9tO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtZnVuY3Rpb24uanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWZ1bmN0aW9uLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGl0KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZnJvbS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZyb20uanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGJpbmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYmluZC1jb250ZXh0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYmluZC1jb250ZXh0LmpzXCIpO1xudmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qc1wiKTtcbnZhciBjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NhbGwtd2l0aC1zYWZlLWl0ZXJhdGlvbi1jbG9zaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2FsbC13aXRoLXNhZmUtaXRlcmF0aW9uLWNsb3NpbmcuanNcIik7XG52YXIgaXNBcnJheUl0ZXJhdG9yTWV0aG9kID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZC5qc1wiKTtcbnZhciB0b0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1sZW5ndGggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1sZW5ndGguanNcIik7XG52YXIgY3JlYXRlUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LmpzXCIpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kLmpzXCIpO1xuXG4vLyBgQXJyYXkuZnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5mcm9tXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHtcbiAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICB2YXIgQyA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgbWFwZm4gPSBhcmd1bWVudHNMZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKE8pO1xuICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICBpZiAobWFwcGluZykgbWFwZm4gPSBiaW5kKG1hcGZuLCBhcmd1bWVudHNMZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgLy8gaWYgdGhlIHRhcmdldCBpcyBub3QgaXRlcmFibGUgb3IgaXQncyBhbiBhcnJheSB3aXRoIHRoZSBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIGEgc2ltcGxlIGNhc2VcbiAgaWYgKGl0ZXJhdG9yTWV0aG9kICE9IHVuZGVmaW5lZCAmJiAhKEMgPT0gQXJyYXkgJiYgaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJhdG9yTWV0aG9kKSkpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLmNhbGwoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEMoKTtcbiAgICBmb3IgKDshKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmdcbiAgICAgICAgPyBjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSlcbiAgICAgICAgOiBzdGVwLnZhbHVlXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgcmVzdWx0ID0gbmV3IEMobGVuZ3RoKTtcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgfVxuICB9XG4gIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHRvSW5kZXhlZE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzXCIpO1xudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1wiKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qc1wiKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4vLyB0cnVlICAtPiBBcnJheSNpbmNsdWRlc1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykge1xuICAgICAgaWYgKE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9iaW5kLWNvbnRleHQuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2JpbmQtY29udGV4dC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hLWZ1bmN0aW9uICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1mdW5jdGlvbi5qc1wiKTtcblxuLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0KTtcbiAgICB9O1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzXCIpO1xuXG4vLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHZhbHVlLCBFTlRSSUVTKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEVOVFJJRVMgPyBmbihhbk9iamVjdCh2YWx1ZSlbMF0sIHZhbHVlWzFdKSA6IGZuKHZhbHVlKTtcbiAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB2YXIgcmV0dXJuTWV0aG9kID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXR1cm5NZXRob2QgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0dXJuTWV0aG9kLmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24uanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciBjYWxsZWQgPSAwO1xuICB2YXIgaXRlcmF0b3JXaXRoUmV0dXJuID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IGRvbmU6ICEhY2FsbGVkKysgfTtcbiAgICB9LFxuICAgICdyZXR1cm4nOiBmdW5jdGlvbiAoKSB7XG4gICAgICBTQUZFX0NMT1NJTkcgPSB0cnVlO1xuICAgIH1cbiAgfTtcbiAgaXRlcmF0b3JXaXRoUmV0dXJuW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShpdGVyYXRvcldpdGhSZXR1cm4sIGZ1bmN0aW9uICgpIHsgdGhyb3cgMjsgfSk7XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIFNLSVBfQ0xPU0lORykge1xuICBpZiAoIVNLSVBfQ0xPU0lORyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIHZhciBJVEVSQVRJT05fU1VQUE9SVCA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBvYmplY3QgPSB7fTtcbiAgICBvYmplY3RbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7IGRvbmU6IElURVJBVElPTl9TVVBQT1JUID0gdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgZXhlYyhvYmplY3QpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBJVEVSQVRJT05fU1VQUE9SVDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGNsYXNzb2ZSYXcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIENPUlJFQ1RfQVJHVU1FTlRTID0gY2xhc3NvZlJhdyhmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcblxuLy8gZ2V0dGluZyB0YWcgZnJvbSBFUzYrIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUT19TVFJJTkdfVEFHKSkgPT0gJ3N0cmluZycgPyB0YWdcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IENPUlJFQ1RfQVJHVU1FTlRTID8gY2xhc3NvZlJhdyhPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChyZXN1bHQgPSBjbGFzc29mUmF3KE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogcmVzdWx0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanNcIik7XG52YXIgb3duS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vd24ta2V5cyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzXCIpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcbiAgdmFyIGtleXMgPSBvd25LZXlzKHNvdXJjZSk7XG4gIHZhciBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKCFoYXModGFyZ2V0LCBrZXkpKSBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gIH1cbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3JyZWN0LXByb3RvdHlwZS1nZXR0ZXIuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgRi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBudWxsO1xuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKCkpICE9PSBGLnByb3RvdHlwZTtcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1pdGVyYXRvci1jb25zdHJ1Y3Rvci5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUuanNcIikuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgY3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtY3JlYXRlLmpzXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcuanNcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiKTtcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJdGVyYXRvckNvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIHZhciBUT19TVFJJTkdfVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICBJdGVyYXRvckNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yQ29uc3RydWN0b3IsIFRPX1NUUklOR19UQUcsIGZhbHNlLCB0cnVlKTtcbiAgSXRlcmF0b3JzW1RPX1NUUklOR19UQUddID0gcmV0dXJuVGhpcztcbiAgcmV0dXJuIEl0ZXJhdG9yQ29uc3RydWN0b3I7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHkuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzXCIpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHByb3BlcnR5S2V5ID0gdG9QcmltaXRpdmUoa2V5KTtcbiAgaWYgKHByb3BlcnR5S2V5IGluIG9iamVjdCkgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIHByb3BlcnR5S2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbcHJvcGVydHlLZXldID0gdmFsdWU7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1pdGVyYXRvci5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yLmpzXCIpO1xudmFyIGdldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YuanNcIik7XG52YXIgc2V0UHJvdG90eXBlT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qc1wiKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnLmpzXCIpO1xudmFyIGhpZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGlkZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanNcIik7XG52YXIgcmVkZWZpbmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcmVkZWZpbmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXB1cmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCIpO1xudmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pdGVyYXRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMuanNcIik7XG52YXIgSXRlcmF0b3JzQ29yZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlLmpzXCIpO1xuXG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSBJdGVyYXRvcnNDb3JlLkl0ZXJhdG9yUHJvdG90eXBlO1xudmFyIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSBJdGVyYXRvcnNDb3JlLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlM7XG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcbnZhciBFTlRSSUVTID0gJ2VudHJpZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEl0ZXJhYmxlLCBOQU1FLCBJdGVyYXRvckNvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yKEl0ZXJhdG9yQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuXG4gIHZhciBnZXRJdGVyYXRpb25NZXRob2QgPSBmdW5jdGlvbiAoS0lORCkge1xuICAgIGlmIChLSU5EID09PSBERUZBVUxUICYmIGRlZmF1bHRJdGVyYXRvcikgcmV0dXJuIGRlZmF1bHRJdGVyYXRvcjtcbiAgICBpZiAoIUJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgJiYgS0lORCBpbiBJdGVyYWJsZVByb3RvdHlwZSkgcmV0dXJuIEl0ZXJhYmxlUHJvdG90eXBlW0tJTkRdO1xuICAgIHN3aXRjaCAoS0lORCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICAgIGNhc2UgRU5UUklFUzogcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzKTsgfTtcbiAgfTtcblxuICB2YXIgVE9fU1RSSU5HX1RBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIElOQ09SUkVDVF9WQUxVRVNfTkFNRSA9IGZhbHNlO1xuICB2YXIgSXRlcmFibGVQcm90b3R5cGUgPSBJdGVyYWJsZS5wcm90b3R5cGU7XG4gIHZhciBuYXRpdmVJdGVyYXRvciA9IEl0ZXJhYmxlUHJvdG90eXBlW0lURVJBVE9SXVxuICAgIHx8IEl0ZXJhYmxlUHJvdG90eXBlWydAQGl0ZXJhdG9yJ11cbiAgICB8fCBERUZBVUxUICYmIEl0ZXJhYmxlUHJvdG90eXBlW0RFRkFVTFRdO1xuICB2YXIgZGVmYXVsdEl0ZXJhdG9yID0gIUJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgJiYgbmF0aXZlSXRlcmF0b3IgfHwgZ2V0SXRlcmF0aW9uTWV0aG9kKERFRkFVTFQpO1xuICB2YXIgYW55TmF0aXZlSXRlcmF0b3IgPSBOQU1FID09ICdBcnJheScgPyBJdGVyYWJsZVByb3RvdHlwZS5lbnRyaWVzIHx8IG5hdGl2ZUl0ZXJhdG9yIDogbmF0aXZlSXRlcmF0b3I7XG4gIHZhciBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIG1ldGhvZHMsIEtFWTtcblxuICAvLyBmaXggbmF0aXZlXG4gIGlmIChhbnlOYXRpdmVJdGVyYXRvcikge1xuICAgIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGFueU5hdGl2ZUl0ZXJhdG9yLmNhbGwobmV3IEl0ZXJhYmxlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIGlmICghSVNfUFVSRSAmJiBnZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUpICE9PSBJdGVyYXRvclByb3RvdHlwZSkge1xuICAgICAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgICBzZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgaGlkZShDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCB0cnVlLCB0cnVlKTtcbiAgICAgIGlmIChJU19QVVJFKSBJdGVyYXRvcnNbVE9fU1RSSU5HX1RBR10gPSByZXR1cm5UaGlzO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZpeCBBcnJheSN7dmFsdWVzLCBAQGl0ZXJhdG9yfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKERFRkFVTFQgPT0gVkFMVUVTICYmIG5hdGl2ZUl0ZXJhdG9yICYmIG5hdGl2ZUl0ZXJhdG9yLm5hbWUgIT09IFZBTFVFUykge1xuICAgIElOQ09SUkVDVF9WQUxVRVNfTkFNRSA9IHRydWU7XG4gICAgZGVmYXVsdEl0ZXJhdG9yID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmF0aXZlSXRlcmF0b3IuY2FsbCh0aGlzKTsgfTtcbiAgfVxuXG4gIC8vIGRlZmluZSBpdGVyYXRvclxuICBpZiAoKCFJU19QVVJFIHx8IEZPUkNFRCkgJiYgSXRlcmFibGVQcm90b3R5cGVbSVRFUkFUT1JdICE9PSBkZWZhdWx0SXRlcmF0b3IpIHtcbiAgICBoaWRlKEl0ZXJhYmxlUHJvdG90eXBlLCBJVEVSQVRPUiwgZGVmYXVsdEl0ZXJhdG9yKTtcbiAgfVxuICBJdGVyYXRvcnNbTkFNRV0gPSBkZWZhdWx0SXRlcmF0b3I7XG5cbiAgLy8gZXhwb3J0IGFkZGl0aW9uYWwgbWV0aG9kc1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IGdldEl0ZXJhdGlvbk1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gZGVmYXVsdEl0ZXJhdG9yIDogZ2V0SXRlcmF0aW9uTWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogZ2V0SXRlcmF0aW9uTWV0aG9kKEVOVFJJRVMpXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKEtFWSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoQlVHR1lfU0FGQVJJX0lURVJBVE9SUyB8fCBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgfHwgIShLRVkgaW4gSXRlcmFibGVQcm90b3R5cGUpKSB7XG4gICAgICAgIHJlZGVmaW5lKEl0ZXJhYmxlUHJvdG90eXBlLCBLRVksIG1ldGhvZHNbS0VZXSk7XG4gICAgICB9XG4gICAgfSBlbHNlICQoeyB0YXJnZXQ6IE5BTUUsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgfHwgSU5DT1JSRUNUX1ZBTFVFU19OQU1FIH0sIG1ldGhvZHMpO1xuICB9XG5cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBleGlzdCA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGV4aXN0ID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyBJRTgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b0xvY2FsZVN0cmluZycsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJ1xuXTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpLmY7XG52YXIgaGlkZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oaWRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZS5qc1wiKTtcbnZhciByZWRlZmluZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZWRlZmluZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZGVmaW5lLmpzXCIpO1xudmFyIHNldEdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qc1wiKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qc1wiKTtcbnZhciBpc0ZvcmNlZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1mb3JjZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanNcIik7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMubm9UYXJnZXRHZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdIHx8IHNldEdsb2JhbChUQVJHRVQsIHt9KTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQgPSAoZ2xvYmFsW1RBUkdFVF0gfHwge30pLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLm5vVGFyZ2V0R2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT09IHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSkgY29udGludWU7XG4gICAgICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSk7XG4gICAgfVxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8ICh0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSkge1xuICAgICAgaGlkZShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIHJlZGVmaW5lKHRhcmdldCwga2V5LCBzb3VyY2VQcm9wZXJ0eSwgb3B0aW9ucyk7XG4gIH1cbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXRvLXN0cmluZy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHNoYXJlZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gc2hhcmVkKCduYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nJywgRnVuY3Rpb24udG9TdHJpbmcpO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY2xhc3NvZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanNcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7dmFyIE8gPSAnb2JqZWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09IE8gJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSBPICYmIHdpbmRvdykgfHxcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gTyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09IE8gJiYgZ2xvYmFsKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKHRoaXMsIF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vLi4vLi4vd2VicGFjay9idWlsZGluL2dsb2JhbC5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9nbG9iYWwuanNcIikpKVxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qc1wiKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaHRtbC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2h0bWwuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRvY3VtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qc1wiKTtcblxuLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KCdkaXYnKSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9XG4gIH0pLmEgIT0gNztcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanNcIik7XG5cbnZhciBzcGxpdCA9ICcnLnNwbGl0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIHJldHVybiAhT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT0gJ1N0cmluZycgPyBzcGxpdC5jYWxsKGl0LCAnJykgOiBPYmplY3QoaXQpO1xufSA6IE9iamVjdDtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgTkFUSVZFX1dFQUtfTUFQID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qc1wiKTtcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiKTtcbnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hpZGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRlLmpzXCIpO1xudmFyIG9iamVjdEhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanNcIik7XG52YXIgc2hhcmVkS2V5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzXCIpO1xudmFyIGhpZGRlbktleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qc1wiKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVApIHtcbiAgdmFyIHN0b3JlID0gbmV3IFdlYWtNYXAoKTtcbiAgdmFyIHdtZ2V0ID0gc3RvcmUuZ2V0O1xuICB2YXIgd21oYXMgPSBzdG9yZS5oYXM7XG4gIHZhciB3bXNldCA9IHN0b3JlLnNldDtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIHdtc2V0LmNhbGwoc3RvcmUsIGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21nZXQuY2FsbChzdG9yZSwgaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21oYXMuY2FsbChzdG9yZSwgaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBoaWRlKGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIG9iamVjdEhhcyhpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBvYmplY3RIYXMoaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanNcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvdHlwZVtJVEVSQVRPUl0gPT09IGl0KTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xuXG52YXIgcmVwbGFjZW1lbnQgPSAvI3xcXC5wcm90b3R5cGVcXC4vO1xuXG52YXIgaXNGb3JjZWQgPSBmdW5jdGlvbiAoZmVhdHVyZSwgZGV0ZWN0aW9uKSB7XG4gIHZhciB2YWx1ZSA9IGRhdGFbbm9ybWFsaXplKGZlYXR1cmUpXTtcbiAgcmV0dXJuIHZhbHVlID09IFBPTFlGSUxMID8gdHJ1ZVxuICAgIDogdmFsdWUgPT0gTkFUSVZFID8gZmFsc2VcbiAgICA6IHR5cGVvZiBkZXRlY3Rpb24gPT0gJ2Z1bmN0aW9uJyA/IGZhaWxzKGRldGVjdGlvbilcbiAgICA6ICEhZGV0ZWN0aW9uO1xufTtcblxudmFyIG5vcm1hbGl6ZSA9IGlzRm9yY2VkLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVwbGFjZW1lbnQsICcuJykudG9Mb3dlckNhc2UoKTtcbn07XG5cbnZhciBkYXRhID0gaXNGb3JjZWQuZGF0YSA9IHt9O1xudmFyIE5BVElWRSA9IGlzRm9yY2VkLk5BVElWRSA9ICdOJztcbnZhciBQT0xZRklMTCA9IGlzRm9yY2VkLlBPTFlGSUxMID0gJ1AnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRm9yY2VkO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBnZXRQcm90b3R5cGVPZiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLmpzXCIpO1xudmFyIGhpZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGlkZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanNcIik7XG52YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hhcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXB1cmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCIpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IGZhbHNlO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbi8vIGAlSXRlcmF0b3JQcm90b3R5cGUlYCBvYmplY3Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSVpdGVyYXRvcnByb3RvdHlwZSUtb2JqZWN0XG52YXIgSXRlcmF0b3JQcm90b3R5cGUsIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSwgYXJyYXlJdGVyYXRvcjtcblxuaWYgKFtdLmtleXMpIHtcbiAgYXJyYXlJdGVyYXRvciA9IFtdLmtleXMoKTtcbiAgLy8gU2FmYXJpIDggaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG4gIGlmICghKCduZXh0JyBpbiBhcnJheUl0ZXJhdG9yKSkgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IHRydWU7XG4gIGVsc2Uge1xuICAgIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGdldFByb3RvdHlwZU9mKGFycmF5SXRlcmF0b3IpKTtcbiAgICBpZiAoUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKSBJdGVyYXRvclByb3RvdHlwZSA9IFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxufVxuXG5pZiAoSXRlcmF0b3JQcm90b3R5cGUgPT0gdW5kZWZpbmVkKSBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxuaWYgKCFJU19QVVJFICYmICFoYXMoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SKSkgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgSXRlcmF0b3JQcm90b3R5cGU6IEl0ZXJhdG9yUHJvdG90eXBlLFxuICBCVUdHWV9TQUZBUklfSVRFUkFUT1JTOiBCVUdHWV9TQUZBUklfSVRFUkFUT1JTXG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICByZXR1cm4gIVN0cmluZyhTeW1ib2woKSk7XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcuanNcIik7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KG5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmcuY2FsbChXZWFrTWFwKSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1jcmVhdGUuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzXCIpO1xudmFyIGRlZmluZVByb3BlcnRpZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzXCIpO1xudmFyIGVudW1CdWdLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzLmpzXCIpO1xudmFyIGhpZGRlbktleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qc1wiKTtcbnZhciBodG1sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2h0bWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9odG1sLmpzXCIpO1xudmFyIGRvY3VtZW50Q3JlYXRlRWxlbWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50LmpzXCIpO1xudmFyIHNoYXJlZEtleSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQta2V5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qc1wiKTtcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gIHZhciBsZW5ndGggPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIHNjcmlwdCA9ICdzY3JpcHQnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBqcyA9ICdqYXZhJyArIHNjcmlwdCArICc6JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgaHRtbC5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gU3RyaW5nKGpzKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArIHNjcmlwdCArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy8nICsgc2NyaXB0ICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGxlbmd0aC0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2xlbmd0aF1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxuLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZGVmaW5lUHJvcGVydGllcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcblxuaGlkZGVuS2V5c1tJRV9QUk9UT10gPSB0cnVlO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qc1wiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG52YXIgb2JqZWN0S2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3Qta2V5cyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaSsrXSwgUHJvcGVydGllc1trZXldKTtcbiAgcmV0dXJuIE87XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qc1wiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzXCIpO1xuXG52YXIgbmF0aXZlRGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gbmF0aXZlRGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZXNjcmlwdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzXCIpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanNcIik7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcIik7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanNcIik7XG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzXCIpO1xudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanNcIik7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qc1wiKTtcblxudmFyIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLmNhbGwoTywgUCksIE9bUF0pO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyAxOS4xLjIuNyAvIDE1LjIuMy40IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG52YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcIik7XG52YXIgZW51bUJ1Z0tleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanNcIik7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGhpZGRlbktleXMpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanNcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzXCIpO1xudmFyIHNoYXJlZEtleSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQta2V5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qc1wiKTtcbnZhciBDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyLmpzXCIpO1xuXG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbm1vZHVsZS5leHBvcnRzID0gQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvdHlwZSA6IG51bGw7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLmpzXCIpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzXCIpO1xudmFyIGFycmF5SW5jbHVkZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qc1wiKTtcbnZhciBoaWRkZW5LZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanNcIik7XG5cbnZhciBhcnJheUluZGV4T2YgPSBhcnJheUluY2x1ZGVzKGZhbHNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhcyhoaWRkZW5LZXlzLCBrZXkpICYmIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBpbnRlcm5hbE9iamVjdEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qc1wiKTtcbnZhciBlbnVtQnVnS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qc1wiKTtcblxuLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICFuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgdmFsaWRhdGVTZXRQcm90b3R5cGVPZkFyZ3VtZW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy92YWxpZGF0ZS1zZXQtcHJvdG90eXBlLW9mLWFyZ3VtZW50cyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3ZhbGlkYXRlLXNldC1wcm90b3R5cGUtb2YtYXJndW1lbnRzLmpzXCIpO1xuXG4vLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyBmdW5jdGlvbiAoKSB7XG4gIHZhciBjb3JyZWN0U2V0dGVyID0gZmFsc2U7XG4gIHZhciB0ZXN0ID0ge307XG4gIHZhciBzZXR0ZXI7XG4gIHRyeSB7XG4gICAgc2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0O1xuICAgIHNldHRlci5jYWxsKHRlc3QsIFtdKTtcbiAgICBjb3JyZWN0U2V0dGVyID0gdGVzdCBpbnN0YW5jZW9mIEFycmF5O1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgIHZhbGlkYXRlU2V0UHJvdG90eXBlT2ZBcmd1bWVudHMoTywgcHJvdG8pO1xuICAgIGlmIChjb3JyZWN0U2V0dGVyKSBzZXR0ZXIuY2FsbChPLCBwcm90byk7XG4gICAgZWxzZSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgIHJldHVybiBPO1xuICB9O1xufSgpIDogdW5kZWZpbmVkKTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanNcIik7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKTtcblxudmFyIFJlZmxlY3QgPSBnbG9iYWwuUmVmbGVjdDtcblxuLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xubW9kdWxlLmV4cG9ydHMgPSBSZWZsZWN0ICYmIFJlZmxlY3Qub3duS2V5cyB8fCBmdW5jdGlvbiBvd25LZXlzKGl0KSB7XG4gIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mKGFuT2JqZWN0KGl0KSk7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgcmV0dXJuIGdldE93blByb3BlcnR5U3ltYm9scyA/IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhpdCkpIDoga2V5cztcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcGF0aC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BhdGguanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVkZWZpbmUuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVkZWZpbmUuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgc2hhcmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NoYXJlZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qc1wiKTtcbnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hpZGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRlLmpzXCIpO1xudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanNcIik7XG52YXIgc2V0R2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtZ2xvYmFsLmpzXCIpO1xudmFyIG5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdG8tc3RyaW5nLmpzXCIpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qc1wiKTtcblxudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBURU1QTEFURSA9IFN0cmluZyhuYXRpdmVGdW5jdGlvblRvU3RyaW5nKS5zcGxpdCgndG9TdHJpbmcnKTtcblxuc2hhcmVkKCdpbnNwZWN0U291cmNlJywgZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwoaXQpO1xufSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB1bnNhZmUgPSBvcHRpb25zID8gISFvcHRpb25zLnVuc2FmZSA6IGZhbHNlO1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5lbnVtZXJhYmxlIDogZmFsc2U7XG4gIHZhciBub1RhcmdldEdldCA9IG9wdGlvbnMgPyAhIW9wdGlvbnMubm9UYXJnZXRHZXQgOiBmYWxzZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgJiYgIWhhcyh2YWx1ZSwgJ25hbWUnKSkgaGlkZSh2YWx1ZSwgJ25hbWUnLCBrZXkpO1xuICAgIGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKS5zb3VyY2UgPSBURU1QTEFURS5qb2luKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBrZXkgOiAnJyk7XG4gIH1cbiAgaWYgKE8gPT09IGdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2Ugc2V0R2xvYmFsKGtleSwgdmFsdWUpO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIGlmICghdW5zYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgfSBlbHNlIGlmICghbm9UYXJnZXRHZXQgJiYgT1trZXldKSB7XG4gICAgc2ltcGxlID0gdHJ1ZTtcbiAgfVxuICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgZWxzZSBoaWRlKE8sIGtleSwgdmFsdWUpO1xuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1nbG9iYWwuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hpZGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRlLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgaGlkZShnbG9iYWwsIGtleSwgdmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanNcIikuZjtcbnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLmpzXCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRBRywgU1RBVElDKSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gU1RBVElDID8gaXQgOiBpdC5wcm90b3R5cGUsIFRPX1NUUklOR19UQUcpKSB7XG4gICAgZGVmaW5lUHJvcGVydHkoaXQsIFRPX1NUUklOR19UQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogVEFHIH0pO1xuICB9XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1rZXkuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHNoYXJlZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanNcIik7XG52YXIgdWlkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3VpZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qc1wiKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIHNldEdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qc1wiKTtcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXB1cmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCIpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCBzZXRHbG9iYWwoU0hBUkVELCB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4xLjMnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctYXQuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1hdC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbnRlZ2VyICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci5qc1wiKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qc1wiKTtcblxuLy8gQ09OVkVSVF9UT19TVFJJTkc6IHRydWUgIC0+IFN0cmluZyNhdFxuLy8gQ09OVkVSVF9UT19TVFJJTkc6IGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgcG9zLCBDT05WRVJUX1RPX1NUUklORykge1xuICB2YXIgUyA9IFN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoYXQpKTtcbiAgdmFyIHBvc2l0aW9uID0gdG9JbnRlZ2VyKHBvcyk7XG4gIHZhciBzaXplID0gUy5sZW5ndGg7XG4gIHZhciBmaXJzdCwgc2Vjb25kO1xuICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHNpemUpIHJldHVybiBDT05WRVJUX1RPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICBmaXJzdCA9IFMuY2hhckNvZGVBdChwb3NpdGlvbik7XG4gIHJldHVybiBmaXJzdCA8IDB4RDgwMCB8fCBmaXJzdCA+IDB4REJGRiB8fCBwb3NpdGlvbiArIDEgPT09IHNpemVcbiAgICB8fCAoc2Vjb25kID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSkpIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRlxuICAgICAgPyBDT05WRVJUX1RPX1NUUklORyA/IFMuY2hhckF0KHBvc2l0aW9uKSA6IGZpcnN0XG4gICAgICA6IENPTlZFUlRfVE9fU1RSSU5HID8gUy5zbGljZShwb3NpdGlvbiwgcG9zaXRpb24gKyAyKSA6IChmaXJzdCAtIDB4RDgwMCA8PCAxMCkgKyAoc2Vjb25kIC0gMHhEQzAwKSArIDB4MTAwMDA7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8taW50ZWdlciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXIuanNcIik7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihsZW5ndGgsIGxlbmd0aCkuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzXCIpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSW5kZXhlZE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGl0KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXIuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgVG9JbnRlZ2VyYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvaW50ZWdlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzTmFOKGFyZ3VtZW50ID0gK2FyZ3VtZW50KSA/IDAgOiAoYXJndW1lbnQgPiAwID8gZmxvb3IgOiBjZWlsKShhcmd1bWVudCk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWludGVnZXIgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLmpzXCIpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID4gMCA/IG1pbih0b0ludGVnZXIoYXJndW1lbnQpLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qc1wiKTtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanNcIik7XG5cbi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBpZCA9IDA7XG52YXIgcG9zdGZpeCA9IE1hdGgucmFuZG9tKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHBvc3RmaXgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3ZhbGlkYXRlLXNldC1wcm90b3R5cGUtb2YtYXJndW1lbnRzLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3ZhbGlkYXRlLXNldC1wcm90b3R5cGUtb2YtYXJndW1lbnRzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanNcIik7XG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBwcm90bykge1xuICBhbk9iamVjdChPKTtcbiAgaWYgKCFpc09iamVjdChwcm90bykgJiYgcHJvdG8gIT09IG51bGwpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBzZXQgXCIgKyBTdHJpbmcocHJvdG8pICsgJyBhcyBhIHByb3RvdHlwZScpO1xuICB9XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIHNoYXJlZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanNcIik7XG52YXIgdWlkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3VpZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qc1wiKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzXCIpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBzdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9IE5BVElWRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdXG4gICAgfHwgKE5BVElWRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZyb20uanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZyb20uanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIGZyb20gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktZnJvbSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZyb20uanNcIik7XG52YXIgY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qc1wiKTtcblxudmFyIElOQ09SUkVDVF9JVEVSQVRJT04gPSAhY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uKGZ1bmN0aW9uIChpdGVyYWJsZSkge1xuICBBcnJheS5mcm9tKGl0ZXJhYmxlKTtcbn0pO1xuXG4vLyBgQXJyYXkuZnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5mcm9tXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IElOQ09SUkVDVF9JVEVSQVRJT04gfSwge1xuICBmcm9tOiBmcm9tXG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgY29kZVBvaW50QXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3RyaW5nLWF0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLWF0LmpzXCIpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qc1wiKTtcbnZhciBkZWZpbmVJdGVyYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtaXRlcmF0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtaXRlcmF0b3IuanNcIik7XG5cbnZhciBTVFJJTkdfSVRFUkFUT1IgPSAnU3RyaW5nIEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNUUklOR19JVEVSQVRPUik7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUtQEBpdGVyYXRvclxuZGVmaW5lSXRlcmF0b3IoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IFNUUklOR19JVEVSQVRPUixcbiAgICBzdHJpbmc6IFN0cmluZyhpdGVyYXRlZCksXG4gICAgaW5kZXg6IDBcbiAgfSk7XG4vLyBgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSVzdHJpbmdpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHN0cmluZyA9IHN0YXRlLnN0cmluZztcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXg7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IHN0cmluZy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSBjb2RlUG9pbnRBdChzdHJpbmcsIGluZGV4LCB0cnVlKTtcbiAgc3RhdGUuaW5kZXggKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy93ZWJwYWNrL2J1aWxkaW4vZ2xvYmFsLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAod2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBnO1xyXG5cclxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcclxuZyA9IChmdW5jdGlvbigpIHtcclxuXHRyZXR1cm4gdGhpcztcclxufSkoKTtcclxuXHJcbnRyeSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXHJcblx0ZyA9IGcgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpIHx8ICgxLCBldmFsKShcInRoaXNcIik7XHJcbn0gY2F0Y2ggKGUpIHtcclxuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxyXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xyXG59XHJcblxyXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXHJcbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXHJcbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZztcclxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vc3JjL2RlZmF1bHQtYXR0cnMuanNvblwiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9zcmMvZGVmYXVsdC1hdHRycy5qc29uICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBleHBvcnRzIHByb3ZpZGVkOiB4bWxucywgd2lkdGgsIGhlaWdodCwgdmlld0JveCwgZmlsbCwgc3Ryb2tlLCBzdHJva2Utd2lkdGgsIHN0cm9rZS1saW5lY2FwLCBzdHJva2UtbGluZWpvaW4sIGRlZmF1bHQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUpIHtcblxubW9kdWxlLmV4cG9ydHMgPSB7XCJ4bWxuc1wiOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcIndpZHRoXCI6MjQsXCJoZWlnaHRcIjoyNCxcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZS13aWR0aFwiOjIsXCJzdHJva2UtbGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZS1saW5lam9pblwiOlwicm91bmRcIn07XG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vc3JjL2ljb24uanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL3NyYy9pY29uLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxudmFyIF9kZWR1cGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjbGFzc25hbWVzL2RlZHVwZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvZGVkdXBlLmpzXCIpO1xuXG52YXIgX2RlZHVwZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWR1cGUpO1xuXG52YXIgX2RlZmF1bHRBdHRycyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vZGVmYXVsdC1hdHRycy5qc29uICovIFwiLi9zcmMvZGVmYXVsdC1hdHRycy5qc29uXCIpO1xuXG52YXIgX2RlZmF1bHRBdHRyczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWZhdWx0QXR0cnMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgSWNvbiA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSWNvbihuYW1lLCBjb250ZW50cykge1xuICAgIHZhciB0YWdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBbXTtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJY29uKTtcblxuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgIHRoaXMudGFncyA9IHRhZ3M7XG4gICAgdGhpcy5hdHRycyA9IF9leHRlbmRzKHt9LCBfZGVmYXVsdEF0dHJzMi5kZWZhdWx0LCB7IGNsYXNzOiAnZmVhdGhlciBmZWF0aGVyLScgKyBuYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBTVkcgc3RyaW5nLlxuICAgKiBAcGFyYW0ge09iamVjdH0gYXR0cnNcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG5cblxuICBfY3JlYXRlQ2xhc3MoSWNvbiwgW3tcbiAgICBrZXk6ICd0b1N2ZycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3ZnKCkge1xuICAgICAgdmFyIGF0dHJzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcblxuICAgICAgdmFyIGNvbWJpbmVkQXR0cnMgPSBfZXh0ZW5kcyh7fSwgdGhpcy5hdHRycywgYXR0cnMsIHsgY2xhc3M6ICgwLCBfZGVkdXBlMi5kZWZhdWx0KSh0aGlzLmF0dHJzLmNsYXNzLCBhdHRycy5jbGFzcykgfSk7XG5cbiAgICAgIHJldHVybiAnPHN2ZyAnICsgYXR0cnNUb1N0cmluZyhjb21iaW5lZEF0dHJzKSArICc+JyArIHRoaXMuY29udGVudHMgKyAnPC9zdmc+JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIGBJY29uYC5cbiAgICAgKlxuICAgICAqIEFkZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBJZiBvbGQgY29kZSBleHBlY3RzIGBmZWF0aGVyLmljb25zLjxuYW1lPmBcbiAgICAgKiB0byBiZSBhIHN0cmluZywgYHRvU3RyaW5nKClgIHdpbGwgZ2V0IGltcGxpY2l0bHkgY2FsbGVkLlxuICAgICAqXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAndG9TdHJpbmcnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRzO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBJY29uO1xufSgpO1xuXG4vKipcbiAqIENvbnZlcnQgYXR0cmlidXRlcyBvYmplY3QgdG8gc3RyaW5nIG9mIEhUTUwgYXR0cmlidXRlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhdHRyc1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuXG5cbmZ1bmN0aW9uIGF0dHJzVG9TdHJpbmcoYXR0cnMpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGF0dHJzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBrZXkgKyAnPVwiJyArIGF0dHJzW2tleV0gKyAnXCInO1xuICB9KS5qb2luKCcgJyk7XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IEljb247XG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vc3JjL2ljb25zLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vc3JjL2ljb25zLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfaWNvbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vaWNvbiAqLyBcIi4vc3JjL2ljb24uanNcIik7XG5cbnZhciBfaWNvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uKTtcblxudmFyIF9pY29ucyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2Rpc3QvaWNvbnMuanNvbiAqLyBcIi4vZGlzdC9pY29ucy5qc29uXCIpO1xuXG52YXIgX2ljb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zKTtcblxudmFyIF90YWdzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi90YWdzLmpzb24gKi8gXCIuL3NyYy90YWdzLmpzb25cIik7XG5cbnZhciBfdGFnczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90YWdzKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gT2JqZWN0LmtleXMoX2ljb25zMi5kZWZhdWx0KS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gbmV3IF9pY29uMi5kZWZhdWx0KGtleSwgX2ljb25zMi5kZWZhdWx0W2tleV0sIF90YWdzMi5kZWZhdWx0W2tleV0pO1xufSkucmVkdWNlKGZ1bmN0aW9uIChvYmplY3QsIGljb24pIHtcbiAgb2JqZWN0W2ljb24ubmFtZV0gPSBpY29uO1xuICByZXR1cm4gb2JqZWN0O1xufSwge30pO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL3NyYy9pbmRleC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL3NyYy9pbmRleC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgX2ljb25zID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9pY29ucyAqLyBcIi4vc3JjL2ljb25zLmpzXCIpO1xuXG52YXIgX2ljb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zKTtcblxudmFyIF90b1N2ZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG8tc3ZnICovIFwiLi9zcmMvdG8tc3ZnLmpzXCIpO1xuXG52YXIgX3RvU3ZnMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RvU3ZnKTtcblxudmFyIF9yZXBsYWNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9yZXBsYWNlICovIFwiLi9zcmMvcmVwbGFjZS5qc1wiKTtcblxudmFyIF9yZXBsYWNlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlcGxhY2UpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgaWNvbnM6IF9pY29uczIuZGVmYXVsdCwgdG9Tdmc6IF90b1N2ZzIuZGVmYXVsdCwgcmVwbGFjZTogX3JlcGxhY2UyLmRlZmF1bHQgfTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9zcmMvcmVwbGFjZS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vc3JjL3JlcGxhY2UuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuXG52YXIgX2RlZHVwZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNsYXNzbmFtZXMvZGVkdXBlICovIFwiLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9kZWR1cGUuanNcIik7XG5cbnZhciBfZGVkdXBlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZHVwZSk7XG5cbnZhciBfaWNvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2ljb25zICovIFwiLi9zcmMvaWNvbnMuanNcIik7XG5cbnZhciBfaWNvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaWNvbnMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIFJlcGxhY2UgYWxsIEhUTUwgZWxlbWVudHMgdGhhdCBoYXZlIGEgYGRhdGEtZmVhdGhlcmAgYXR0cmlidXRlIHdpdGggU1ZHIG1hcmt1cFxuICogY29ycmVzcG9uZGluZyB0byB0aGUgZWxlbWVudCdzIGBkYXRhLWZlYXRoZXJgIGF0dHJpYnV0ZSB2YWx1ZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhdHRyc1xuICovXG5mdW5jdGlvbiByZXBsYWNlKCkge1xuICB2YXIgYXR0cnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuXG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdgZmVhdGhlci5yZXBsYWNlKClgIG9ubHkgd29ya3MgaW4gYSBicm93c2VyIGVudmlyb25tZW50LicpO1xuICB9XG5cbiAgdmFyIGVsZW1lbnRzVG9SZXBsYWNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZmVhdGhlcl0nKTtcblxuICBBcnJheS5mcm9tKGVsZW1lbnRzVG9SZXBsYWNlKS5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuIHJlcGxhY2VFbGVtZW50KGVsZW1lbnQsIGF0dHJzKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmVwbGFjZSBhIHNpbmdsZSBIVE1MIGVsZW1lbnQgd2l0aCBTVkcgbWFya3VwXG4gKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbGVtZW50J3MgYGRhdGEtZmVhdGhlcmAgYXR0cmlidXRlIHZhbHVlLlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IGF0dHJzXG4gKi9cbmZ1bmN0aW9uIHJlcGxhY2VFbGVtZW50KGVsZW1lbnQpIHtcbiAgdmFyIGF0dHJzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICB2YXIgZWxlbWVudEF0dHJzID0gZ2V0QXR0cnMoZWxlbWVudCk7XG4gIHZhciBuYW1lID0gZWxlbWVudEF0dHJzWydkYXRhLWZlYXRoZXInXTtcbiAgZGVsZXRlIGVsZW1lbnRBdHRyc1snZGF0YS1mZWF0aGVyJ107XG5cbiAgdmFyIHN2Z1N0cmluZyA9IF9pY29uczIuZGVmYXVsdFtuYW1lXS50b1N2ZyhfZXh0ZW5kcyh7fSwgYXR0cnMsIGVsZW1lbnRBdHRycywgeyBjbGFzczogKDAsIF9kZWR1cGUyLmRlZmF1bHQpKGF0dHJzLmNsYXNzLCBlbGVtZW50QXR0cnMuY2xhc3MpIH0pKTtcbiAgdmFyIHN2Z0RvY3VtZW50ID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhzdmdTdHJpbmcsICdpbWFnZS9zdmcreG1sJyk7XG4gIHZhciBzdmdFbGVtZW50ID0gc3ZnRG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cbiAgZWxlbWVudC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChzdmdFbGVtZW50LCBlbGVtZW50KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gSFRNTCBlbGVtZW50LlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0QXR0cnMoZWxlbWVudCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmF0dHJpYnV0ZXMpLnJlZHVjZShmdW5jdGlvbiAoYXR0cnMsIGF0dHIpIHtcbiAgICBhdHRyc1thdHRyLm5hbWVdID0gYXR0ci52YWx1ZTtcbiAgICByZXR1cm4gYXR0cnM7XG4gIH0sIHt9KTtcbn1cblxuZXhwb3J0cy5kZWZhdWx0ID0gcmVwbGFjZTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9zcmMvdGFncy5qc29uXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL3NyYy90YWdzLmpzb24gKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIGV4cG9ydHMgcHJvdmlkZWQ6IGFjdGl2aXR5LCBhaXJwbGF5LCBhbGVydC1jaXJjbGUsIGFsZXJ0LW9jdGFnb24sIGFsZXJ0LXRyaWFuZ2xlLCBhbGlnbi1jZW50ZXIsIGFsaWduLWp1c3RpZnksIGFsaWduLWxlZnQsIGFsaWduLXJpZ2h0LCBhbmNob3IsIGFyY2hpdmUsIGF0LXNpZ24sIGF3YXJkLCBhcGVydHVyZSwgYmFyLWNoYXJ0LCBiYXItY2hhcnQtMiwgYmF0dGVyeSwgYmF0dGVyeS1jaGFyZ2luZywgYmVsbCwgYmVsbC1vZmYsIGJsdWV0b290aCwgYm9vay1vcGVuLCBib29rLCBib29rbWFyaywgYm94LCBicmllZmNhc2UsIGNhbGVuZGFyLCBjYW1lcmEsIGNhc3QsIGNpcmNsZSwgY2xpcGJvYXJkLCBjbG9jaywgY2xvdWQtZHJpenpsZSwgY2xvdWQtbGlnaHRuaW5nLCBjbG91ZC1yYWluLCBjbG91ZC1zbm93LCBjbG91ZCwgY29kZXBlbiwgY29kZXNhbmRib3gsIGNvZGUsIGNvZmZlZSwgY29sdW1ucywgY29tbWFuZCwgY29tcGFzcywgY29weSwgY29ybmVyLWRvd24tbGVmdCwgY29ybmVyLWRvd24tcmlnaHQsIGNvcm5lci1sZWZ0LWRvd24sIGNvcm5lci1sZWZ0LXVwLCBjb3JuZXItcmlnaHQtZG93biwgY29ybmVyLXJpZ2h0LXVwLCBjb3JuZXItdXAtbGVmdCwgY29ybmVyLXVwLXJpZ2h0LCBjcHUsIGNyZWRpdC1jYXJkLCBjcm9wLCBjcm9zc2hhaXIsIGRhdGFiYXNlLCBkZWxldGUsIGRpc2MsIGRvbGxhci1zaWduLCBkcm9wbGV0LCBlZGl0LCBlZGl0LTIsIGVkaXQtMywgZXllLCBleWUtb2ZmLCBleHRlcm5hbC1saW5rLCBmYWNlYm9vaywgZmFzdC1mb3J3YXJkLCBmaWdtYSwgZmlsZS1taW51cywgZmlsZS1wbHVzLCBmaWxlLXRleHQsIGZpbG0sIGZpbHRlciwgZmxhZywgZm9sZGVyLW1pbnVzLCBmb2xkZXItcGx1cywgZm9sZGVyLCBmcmFtZXIsIGZyb3duLCBnaWZ0LCBnaXQtYnJhbmNoLCBnaXQtY29tbWl0LCBnaXQtbWVyZ2UsIGdpdC1wdWxsLXJlcXVlc3QsIGdpdGh1YiwgZ2l0bGFiLCBnbG9iZSwgaGFyZC1kcml2ZSwgaGFzaCwgaGVhZHBob25lcywgaGVhcnQsIGhlbHAtY2lyY2xlLCBoZXhhZ29uLCBob21lLCBpbWFnZSwgaW5ib3gsIGluc3RhZ3JhbSwga2V5LCBsYXllcnMsIGxheW91dCwgbGlmZS1ib3V5LCBsaW5rLCBsaW5rLTIsIGxpbmtlZGluLCBsaXN0LCBsb2NrLCBsb2ctaW4sIGxvZy1vdXQsIG1haWwsIG1hcC1waW4sIG1hcCwgbWF4aW1pemUsIG1heGltaXplLTIsIG1laCwgbWVudSwgbWVzc2FnZS1jaXJjbGUsIG1lc3NhZ2Utc3F1YXJlLCBtaWMtb2ZmLCBtaWMsIG1pbmltaXplLCBtaW5pbWl6ZS0yLCBtaW51cywgbW9uaXRvciwgbW9vbiwgbW9yZS1ob3Jpem9udGFsLCBtb3JlLXZlcnRpY2FsLCBtb3VzZS1wb2ludGVyLCBtb3ZlLCBtdXNpYywgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbi0yLCBvY3RhZ29uLCBwYWNrYWdlLCBwYXBlcmNsaXAsIHBhdXNlLCBwYXVzZS1jaXJjbGUsIHBlbi10b29sLCBwZXJjZW50LCBwaG9uZS1jYWxsLCBwaG9uZS1mb3J3YXJkZWQsIHBob25lLWluY29taW5nLCBwaG9uZS1taXNzZWQsIHBob25lLW9mZiwgcGhvbmUtb3V0Z29pbmcsIHBob25lLCBwbGF5LCBwaWUtY2hhcnQsIHBsYXktY2lyY2xlLCBwbHVzLCBwbHVzLWNpcmNsZSwgcGx1cy1zcXVhcmUsIHBvY2tldCwgcG93ZXIsIHByaW50ZXIsIHJhZGlvLCByZWZyZXNoLWN3LCByZWZyZXNoLWNjdywgcmVwZWF0LCByZXdpbmQsIHJvdGF0ZS1jY3csIHJvdGF0ZS1jdywgcnNzLCBzYXZlLCBzY2lzc29ycywgc2VhcmNoLCBzZW5kLCBzZXR0aW5ncywgc2hhcmUtMiwgc2hpZWxkLCBzaGllbGQtb2ZmLCBzaG9wcGluZy1iYWcsIHNob3BwaW5nLWNhcnQsIHNodWZmbGUsIHNraXAtYmFjaywgc2tpcC1mb3J3YXJkLCBzbGFjaywgc2xhc2gsIHNsaWRlcnMsIHNtYXJ0cGhvbmUsIHNtaWxlLCBzcGVha2VyLCBzdGFyLCBzdG9wLWNpcmNsZSwgc3VuLCBzdW5yaXNlLCBzdW5zZXQsIHRhYmxldCwgdGFnLCB0YXJnZXQsIHRlcm1pbmFsLCB0aGVybW9tZXRlciwgdGh1bWJzLWRvd24sIHRodW1icy11cCwgdG9nZ2xlLWxlZnQsIHRvZ2dsZS1yaWdodCwgdG9vbCwgdHJhc2gsIHRyYXNoLTIsIHRyaWFuZ2xlLCB0cnVjaywgdHYsIHR3aXRjaCwgdHdpdHRlciwgdHlwZSwgdW1icmVsbGEsIHVubG9jaywgdXNlci1jaGVjaywgdXNlci1taW51cywgdXNlci1wbHVzLCB1c2VyLXgsIHVzZXIsIHVzZXJzLCB2aWRlby1vZmYsIHZpZGVvLCB2b2ljZW1haWwsIHZvbHVtZSwgdm9sdW1lLTEsIHZvbHVtZS0yLCB2b2x1bWUteCwgd2F0Y2gsIHdpZmktb2ZmLCB3aWZpLCB3aW5kLCB4LWNpcmNsZSwgeC1vY3RhZ29uLCB4LXNxdWFyZSwgeCwgeW91dHViZSwgemFwLW9mZiwgemFwLCB6b29tLWluLCB6b29tLW91dCwgZGVmYXVsdCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSkge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcImFjdGl2aXR5XCI6W1wicHVsc2VcIixcImhlYWx0aFwiLFwiYWN0aW9uXCIsXCJtb3Rpb25cIl0sXCJhaXJwbGF5XCI6W1wic3RyZWFtXCIsXCJjYXN0XCIsXCJtaXJyb3JpbmdcIl0sXCJhbGVydC1jaXJjbGVcIjpbXCJ3YXJuaW5nXCIsXCJhbGVydFwiLFwiZGFuZ2VyXCJdLFwiYWxlcnQtb2N0YWdvblwiOltcIndhcm5pbmdcIixcImFsZXJ0XCIsXCJkYW5nZXJcIl0sXCJhbGVydC10cmlhbmdsZVwiOltcIndhcm5pbmdcIixcImFsZXJ0XCIsXCJkYW5nZXJcIl0sXCJhbGlnbi1jZW50ZXJcIjpbXCJ0ZXh0IGFsaWdubWVudFwiLFwiY2VudGVyXCJdLFwiYWxpZ24tanVzdGlmeVwiOltcInRleHQgYWxpZ25tZW50XCIsXCJqdXN0aWZpZWRcIl0sXCJhbGlnbi1sZWZ0XCI6W1widGV4dCBhbGlnbm1lbnRcIixcImxlZnRcIl0sXCJhbGlnbi1yaWdodFwiOltcInRleHQgYWxpZ25tZW50XCIsXCJyaWdodFwiXSxcImFuY2hvclwiOltdLFwiYXJjaGl2ZVwiOltcImluZGV4XCIsXCJib3hcIl0sXCJhdC1zaWduXCI6W1wibWVudGlvblwiLFwiYXRcIixcImVtYWlsXCIsXCJtZXNzYWdlXCJdLFwiYXdhcmRcIjpbXCJhY2hpZXZlbWVudFwiLFwiYmFkZ2VcIl0sXCJhcGVydHVyZVwiOltcImNhbWVyYVwiLFwicGhvdG9cIl0sXCJiYXItY2hhcnRcIjpbXCJzdGF0aXN0aWNzXCIsXCJkaWFncmFtXCIsXCJncmFwaFwiXSxcImJhci1jaGFydC0yXCI6W1wic3RhdGlzdGljc1wiLFwiZGlhZ3JhbVwiLFwiZ3JhcGhcIl0sXCJiYXR0ZXJ5XCI6W1wicG93ZXJcIixcImVsZWN0cmljaXR5XCJdLFwiYmF0dGVyeS1jaGFyZ2luZ1wiOltcInBvd2VyXCIsXCJlbGVjdHJpY2l0eVwiXSxcImJlbGxcIjpbXCJhbGFybVwiLFwibm90aWZpY2F0aW9uXCIsXCJzb3VuZFwiXSxcImJlbGwtb2ZmXCI6W1wiYWxhcm1cIixcIm5vdGlmaWNhdGlvblwiLFwic2lsZW50XCJdLFwiYmx1ZXRvb3RoXCI6W1wid2lyZWxlc3NcIl0sXCJib29rLW9wZW5cIjpbXCJyZWFkXCIsXCJsaWJyYXJ5XCJdLFwiYm9va1wiOltcInJlYWRcIixcImRpY3Rpb25hcnlcIixcImJvb2tsZXRcIixcIm1hZ2F6aW5lXCIsXCJsaWJyYXJ5XCJdLFwiYm9va21hcmtcIjpbXCJyZWFkXCIsXCJjbGlwXCIsXCJtYXJrZXJcIixcInRhZ1wiXSxcImJveFwiOltcImN1YmVcIl0sXCJicmllZmNhc2VcIjpbXCJ3b3JrXCIsXCJiYWdcIixcImJhZ2dhZ2VcIixcImZvbGRlclwiXSxcImNhbGVuZGFyXCI6W1wiZGF0ZVwiXSxcImNhbWVyYVwiOltcInBob3RvXCJdLFwiY2FzdFwiOltcImNocm9tZWNhc3RcIixcImFpcnBsYXlcIl0sXCJjaXJjbGVcIjpbXCJvZmZcIixcInplcm9cIixcInJlY29yZFwiXSxcImNsaXBib2FyZFwiOltcImNvcHlcIl0sXCJjbG9ja1wiOltcInRpbWVcIixcIndhdGNoXCIsXCJhbGFybVwiXSxcImNsb3VkLWRyaXp6bGVcIjpbXCJ3ZWF0aGVyXCIsXCJzaG93ZXJcIl0sXCJjbG91ZC1saWdodG5pbmdcIjpbXCJ3ZWF0aGVyXCIsXCJib2x0XCJdLFwiY2xvdWQtcmFpblwiOltcIndlYXRoZXJcIl0sXCJjbG91ZC1zbm93XCI6W1wid2VhdGhlclwiLFwiYmxpenphcmRcIl0sXCJjbG91ZFwiOltcIndlYXRoZXJcIl0sXCJjb2RlcGVuXCI6W1wibG9nb1wiXSxcImNvZGVzYW5kYm94XCI6W1wibG9nb1wiXSxcImNvZGVcIjpbXCJzb3VyY2VcIixcInByb2dyYW1taW5nXCJdLFwiY29mZmVlXCI6W1wiZHJpbmtcIixcImN1cFwiLFwibXVnXCIsXCJ0ZWFcIixcImNhZmVcIixcImhvdFwiLFwiYmV2ZXJhZ2VcIl0sXCJjb2x1bW5zXCI6W1wibGF5b3V0XCJdLFwiY29tbWFuZFwiOltcImtleWJvYXJkXCIsXCJjbWRcIixcInRlcm1pbmFsXCIsXCJwcm9tcHRcIl0sXCJjb21wYXNzXCI6W1wibmF2aWdhdGlvblwiLFwic2FmYXJpXCIsXCJ0cmF2ZWxcIixcImRpcmVjdGlvblwiXSxcImNvcHlcIjpbXCJjbG9uZVwiLFwiZHVwbGljYXRlXCJdLFwiY29ybmVyLWRvd24tbGVmdFwiOltcImFycm93XCIsXCJyZXR1cm5cIl0sXCJjb3JuZXItZG93bi1yaWdodFwiOltcImFycm93XCJdLFwiY29ybmVyLWxlZnQtZG93blwiOltcImFycm93XCJdLFwiY29ybmVyLWxlZnQtdXBcIjpbXCJhcnJvd1wiXSxcImNvcm5lci1yaWdodC1kb3duXCI6W1wiYXJyb3dcIl0sXCJjb3JuZXItcmlnaHQtdXBcIjpbXCJhcnJvd1wiXSxcImNvcm5lci11cC1sZWZ0XCI6W1wiYXJyb3dcIl0sXCJjb3JuZXItdXAtcmlnaHRcIjpbXCJhcnJvd1wiXSxcImNwdVwiOltcInByb2Nlc3NvclwiLFwidGVjaG5vbG9neVwiXSxcImNyZWRpdC1jYXJkXCI6W1wicHVyY2hhc2VcIixcInBheW1lbnRcIixcImNjXCJdLFwiY3JvcFwiOltcInBob3RvXCIsXCJpbWFnZVwiXSxcImNyb3NzaGFpclwiOltcImFpbVwiLFwidGFyZ2V0XCJdLFwiZGF0YWJhc2VcIjpbXCJzdG9yYWdlXCIsXCJtZW1vcnlcIl0sXCJkZWxldGVcIjpbXCJyZW1vdmVcIl0sXCJkaXNjXCI6W1wiYWxidW1cIixcImNkXCIsXCJkdmRcIixcIm11c2ljXCJdLFwiZG9sbGFyLXNpZ25cIjpbXCJjdXJyZW5jeVwiLFwibW9uZXlcIixcInBheW1lbnRcIl0sXCJkcm9wbGV0XCI6W1wid2F0ZXJcIl0sXCJlZGl0XCI6W1wicGVuY2lsXCIsXCJjaGFuZ2VcIl0sXCJlZGl0LTJcIjpbXCJwZW5jaWxcIixcImNoYW5nZVwiXSxcImVkaXQtM1wiOltcInBlbmNpbFwiLFwiY2hhbmdlXCJdLFwiZXllXCI6W1widmlld1wiLFwid2F0Y2hcIl0sXCJleWUtb2ZmXCI6W1widmlld1wiLFwid2F0Y2hcIixcImhpZGVcIixcImhpZGRlblwiXSxcImV4dGVybmFsLWxpbmtcIjpbXCJvdXRib3VuZFwiXSxcImZhY2Vib29rXCI6W1wibG9nb1wiLFwic29jaWFsXCJdLFwiZmFzdC1mb3J3YXJkXCI6W1wibXVzaWNcIl0sXCJmaWdtYVwiOltcImxvZ29cIixcImRlc2lnblwiLFwidG9vbFwiXSxcImZpbGUtbWludXNcIjpbXCJkZWxldGVcIixcInJlbW92ZVwiLFwiZXJhc2VcIl0sXCJmaWxlLXBsdXNcIjpbXCJhZGRcIixcImNyZWF0ZVwiLFwibmV3XCJdLFwiZmlsZS10ZXh0XCI6W1wiZGF0YVwiLFwidHh0XCIsXCJwZGZcIl0sXCJmaWxtXCI6W1wibW92aWVcIixcInZpZGVvXCJdLFwiZmlsdGVyXCI6W1wiZnVubmVsXCIsXCJob3BwZXJcIl0sXCJmbGFnXCI6W1wicmVwb3J0XCJdLFwiZm9sZGVyLW1pbnVzXCI6W1wiZGlyZWN0b3J5XCJdLFwiZm9sZGVyLXBsdXNcIjpbXCJkaXJlY3RvcnlcIl0sXCJmb2xkZXJcIjpbXCJkaXJlY3RvcnlcIl0sXCJmcmFtZXJcIjpbXCJsb2dvXCIsXCJkZXNpZ25cIixcInRvb2xcIl0sXCJmcm93blwiOltcImVtb2ppXCIsXCJmYWNlXCIsXCJiYWRcIixcInNhZFwiLFwiZW1vdGlvblwiXSxcImdpZnRcIjpbXCJwcmVzZW50XCIsXCJib3hcIixcImJpcnRoZGF5XCIsXCJwYXJ0eVwiXSxcImdpdC1icmFuY2hcIjpbXCJjb2RlXCIsXCJ2ZXJzaW9uIGNvbnRyb2xcIl0sXCJnaXQtY29tbWl0XCI6W1wiY29kZVwiLFwidmVyc2lvbiBjb250cm9sXCJdLFwiZ2l0LW1lcmdlXCI6W1wiY29kZVwiLFwidmVyc2lvbiBjb250cm9sXCJdLFwiZ2l0LXB1bGwtcmVxdWVzdFwiOltcImNvZGVcIixcInZlcnNpb24gY29udHJvbFwiXSxcImdpdGh1YlwiOltcImxvZ29cIixcInZlcnNpb24gY29udHJvbFwiXSxcImdpdGxhYlwiOltcImxvZ29cIixcInZlcnNpb24gY29udHJvbFwiXSxcImdsb2JlXCI6W1wid29ybGRcIixcImJyb3dzZXJcIixcImxhbmd1YWdlXCIsXCJ0cmFuc2xhdGVcIl0sXCJoYXJkLWRyaXZlXCI6W1wiY29tcHV0ZXJcIixcInNlcnZlclwiLFwibWVtb3J5XCIsXCJkYXRhXCJdLFwiaGFzaFwiOltcImhhc2h0YWdcIixcIm51bWJlclwiLFwicG91bmRcIl0sXCJoZWFkcGhvbmVzXCI6W1wibXVzaWNcIixcImF1ZGlvXCIsXCJzb3VuZFwiXSxcImhlYXJ0XCI6W1wibGlrZVwiLFwibG92ZVwiLFwiZW1vdGlvblwiXSxcImhlbHAtY2lyY2xlXCI6W1wicXVlc3Rpb24gbWFya1wiXSxcImhleGFnb25cIjpbXCJzaGFwZVwiLFwibm9kZS5qc1wiLFwibG9nb1wiXSxcImhvbWVcIjpbXCJob3VzZVwiLFwibGl2aW5nXCJdLFwiaW1hZ2VcIjpbXCJwaWN0dXJlXCJdLFwiaW5ib3hcIjpbXCJlbWFpbFwiXSxcImluc3RhZ3JhbVwiOltcImxvZ29cIixcImNhbWVyYVwiXSxcImtleVwiOltcInBhc3N3b3JkXCIsXCJsb2dpblwiLFwiYXV0aGVudGljYXRpb25cIixcInNlY3VyZVwiXSxcImxheWVyc1wiOltcInN0YWNrXCJdLFwibGF5b3V0XCI6W1wid2luZG93XCIsXCJ3ZWJwYWdlXCJdLFwibGlmZS1ib3V5XCI6W1wiaGVscFwiLFwibGlmZSByaW5nXCIsXCJzdXBwb3J0XCJdLFwibGlua1wiOltcImNoYWluXCIsXCJ1cmxcIl0sXCJsaW5rLTJcIjpbXCJjaGFpblwiLFwidXJsXCJdLFwibGlua2VkaW5cIjpbXCJsb2dvXCIsXCJzb2NpYWwgbWVkaWFcIl0sXCJsaXN0XCI6W1wib3B0aW9uc1wiXSxcImxvY2tcIjpbXCJzZWN1cml0eVwiLFwicGFzc3dvcmRcIixcInNlY3VyZVwiXSxcImxvZy1pblwiOltcInNpZ24gaW5cIixcImFycm93XCIsXCJlbnRlclwiXSxcImxvZy1vdXRcIjpbXCJzaWduIG91dFwiLFwiYXJyb3dcIixcImV4aXRcIl0sXCJtYWlsXCI6W1wiZW1haWxcIixcIm1lc3NhZ2VcIl0sXCJtYXAtcGluXCI6W1wibG9jYXRpb25cIixcIm5hdmlnYXRpb25cIixcInRyYXZlbFwiLFwibWFya2VyXCJdLFwibWFwXCI6W1wibG9jYXRpb25cIixcIm5hdmlnYXRpb25cIixcInRyYXZlbFwiXSxcIm1heGltaXplXCI6W1wiZnVsbHNjcmVlblwiXSxcIm1heGltaXplLTJcIjpbXCJmdWxsc2NyZWVuXCIsXCJhcnJvd3NcIixcImV4cGFuZFwiXSxcIm1laFwiOltcImVtb2ppXCIsXCJmYWNlXCIsXCJuZXV0cmFsXCIsXCJlbW90aW9uXCJdLFwibWVudVwiOltcImJhcnNcIixcIm5hdmlnYXRpb25cIixcImhhbWJ1cmdlclwiXSxcIm1lc3NhZ2UtY2lyY2xlXCI6W1wiY29tbWVudFwiLFwiY2hhdFwiXSxcIm1lc3NhZ2Utc3F1YXJlXCI6W1wiY29tbWVudFwiLFwiY2hhdFwiXSxcIm1pYy1vZmZcIjpbXCJyZWNvcmRcIixcInNvdW5kXCIsXCJtdXRlXCJdLFwibWljXCI6W1wicmVjb3JkXCIsXCJzb3VuZFwiLFwibGlzdGVuXCJdLFwibWluaW1pemVcIjpbXCJleGl0IGZ1bGxzY3JlZW5cIixcImNsb3NlXCJdLFwibWluaW1pemUtMlwiOltcImV4aXQgZnVsbHNjcmVlblwiLFwiYXJyb3dzXCIsXCJjbG9zZVwiXSxcIm1pbnVzXCI6W1wic3VidHJhY3RcIl0sXCJtb25pdG9yXCI6W1widHZcIixcInNjcmVlblwiLFwiZGlzcGxheVwiXSxcIm1vb25cIjpbXCJkYXJrXCIsXCJuaWdodFwiXSxcIm1vcmUtaG9yaXpvbnRhbFwiOltcImVsbGlwc2lzXCJdLFwibW9yZS12ZXJ0aWNhbFwiOltcImVsbGlwc2lzXCJdLFwibW91c2UtcG9pbnRlclwiOltcImFycm93XCIsXCJjdXJzb3JcIl0sXCJtb3ZlXCI6W1wiYXJyb3dzXCJdLFwibXVzaWNcIjpbXCJub3RlXCJdLFwibmF2aWdhdGlvblwiOltcImxvY2F0aW9uXCIsXCJ0cmF2ZWxcIl0sXCJuYXZpZ2F0aW9uLTJcIjpbXCJsb2NhdGlvblwiLFwidHJhdmVsXCJdLFwib2N0YWdvblwiOltcInN0b3BcIl0sXCJwYWNrYWdlXCI6W1wiYm94XCIsXCJjb250YWluZXJcIl0sXCJwYXBlcmNsaXBcIjpbXCJhdHRhY2htZW50XCJdLFwicGF1c2VcIjpbXCJtdXNpY1wiLFwic3RvcFwiXSxcInBhdXNlLWNpcmNsZVwiOltcIm11c2ljXCIsXCJhdWRpb1wiLFwic3RvcFwiXSxcInBlbi10b29sXCI6W1widmVjdG9yXCIsXCJkcmF3aW5nXCJdLFwicGVyY2VudFwiOltcImRpc2NvdW50XCJdLFwicGhvbmUtY2FsbFwiOltcInJpbmdcIl0sXCJwaG9uZS1mb3J3YXJkZWRcIjpbXCJjYWxsXCJdLFwicGhvbmUtaW5jb21pbmdcIjpbXCJjYWxsXCJdLFwicGhvbmUtbWlzc2VkXCI6W1wiY2FsbFwiXSxcInBob25lLW9mZlwiOltcImNhbGxcIixcIm11dGVcIl0sXCJwaG9uZS1vdXRnb2luZ1wiOltcImNhbGxcIl0sXCJwaG9uZVwiOltcImNhbGxcIl0sXCJwbGF5XCI6W1wibXVzaWNcIixcInN0YXJ0XCJdLFwicGllLWNoYXJ0XCI6W1wic3RhdGlzdGljc1wiLFwiZGlhZ3JhbVwiXSxcInBsYXktY2lyY2xlXCI6W1wibXVzaWNcIixcInN0YXJ0XCJdLFwicGx1c1wiOltcImFkZFwiLFwibmV3XCJdLFwicGx1cy1jaXJjbGVcIjpbXCJhZGRcIixcIm5ld1wiXSxcInBsdXMtc3F1YXJlXCI6W1wiYWRkXCIsXCJuZXdcIl0sXCJwb2NrZXRcIjpbXCJsb2dvXCIsXCJzYXZlXCJdLFwicG93ZXJcIjpbXCJvblwiLFwib2ZmXCJdLFwicHJpbnRlclwiOltcImZheFwiLFwib2ZmaWNlXCIsXCJkZXZpY2VcIl0sXCJyYWRpb1wiOltcInNpZ25hbFwiXSxcInJlZnJlc2gtY3dcIjpbXCJzeW5jaHJvbmlzZVwiLFwiYXJyb3dzXCJdLFwicmVmcmVzaC1jY3dcIjpbXCJhcnJvd3NcIl0sXCJyZXBlYXRcIjpbXCJsb29wXCIsXCJhcnJvd3NcIl0sXCJyZXdpbmRcIjpbXCJtdXNpY1wiXSxcInJvdGF0ZS1jY3dcIjpbXCJhcnJvd1wiXSxcInJvdGF0ZS1jd1wiOltcImFycm93XCJdLFwicnNzXCI6W1wiZmVlZFwiLFwic3Vic2NyaWJlXCJdLFwic2F2ZVwiOltcImZsb3BweSBkaXNrXCJdLFwic2Npc3NvcnNcIjpbXCJjdXRcIl0sXCJzZWFyY2hcIjpbXCJmaW5kXCIsXCJtYWduaWZpZXJcIixcIm1hZ25pZnlpbmcgZ2xhc3NcIl0sXCJzZW5kXCI6W1wibWVzc2FnZVwiLFwibWFpbFwiLFwiZW1haWxcIixcInBhcGVyIGFpcnBsYW5lXCIsXCJwYXBlciBhZXJvcGxhbmVcIl0sXCJzZXR0aW5nc1wiOltcImNvZ1wiLFwiZWRpdFwiLFwiZ2VhclwiLFwicHJlZmVyZW5jZXNcIl0sXCJzaGFyZS0yXCI6W1wibmV0d29ya1wiLFwiY29ubmVjdGlvbnNcIl0sXCJzaGllbGRcIjpbXCJzZWN1cml0eVwiLFwic2VjdXJlXCJdLFwic2hpZWxkLW9mZlwiOltcInNlY3VyaXR5XCIsXCJpbnNlY3VyZVwiXSxcInNob3BwaW5nLWJhZ1wiOltcImVjb21tZXJjZVwiLFwiY2FydFwiLFwicHVyY2hhc2VcIixcInN0b3JlXCJdLFwic2hvcHBpbmctY2FydFwiOltcImVjb21tZXJjZVwiLFwiY2FydFwiLFwicHVyY2hhc2VcIixcInN0b3JlXCJdLFwic2h1ZmZsZVwiOltcIm11c2ljXCJdLFwic2tpcC1iYWNrXCI6W1wibXVzaWNcIl0sXCJza2lwLWZvcndhcmRcIjpbXCJtdXNpY1wiXSxcInNsYWNrXCI6W1wibG9nb1wiXSxcInNsYXNoXCI6W1wiYmFuXCIsXCJub1wiXSxcInNsaWRlcnNcIjpbXCJzZXR0aW5nc1wiLFwiY29udHJvbHNcIl0sXCJzbWFydHBob25lXCI6W1wiY2VsbHBob25lXCIsXCJkZXZpY2VcIl0sXCJzbWlsZVwiOltcImVtb2ppXCIsXCJmYWNlXCIsXCJoYXBweVwiLFwiZ29vZFwiLFwiZW1vdGlvblwiXSxcInNwZWFrZXJcIjpbXCJhdWRpb1wiLFwibXVzaWNcIl0sXCJzdGFyXCI6W1wiYm9va21hcmtcIixcImZhdm9yaXRlXCIsXCJsaWtlXCJdLFwic3RvcC1jaXJjbGVcIjpbXCJtZWRpYVwiLFwibXVzaWNcIl0sXCJzdW5cIjpbXCJicmlnaHRuZXNzXCIsXCJ3ZWF0aGVyXCIsXCJsaWdodFwiXSxcInN1bnJpc2VcIjpbXCJ3ZWF0aGVyXCIsXCJ0aW1lXCIsXCJtb3JuaW5nXCIsXCJkYXlcIl0sXCJzdW5zZXRcIjpbXCJ3ZWF0aGVyXCIsXCJ0aW1lXCIsXCJldmVuaW5nXCIsXCJuaWdodFwiXSxcInRhYmxldFwiOltcImRldmljZVwiXSxcInRhZ1wiOltcImxhYmVsXCJdLFwidGFyZ2V0XCI6W1wibG9nb1wiLFwiYnVsbHNleWVcIl0sXCJ0ZXJtaW5hbFwiOltcImNvZGVcIixcImNvbW1hbmQgbGluZVwiLFwicHJvbXB0XCJdLFwidGhlcm1vbWV0ZXJcIjpbXCJ0ZW1wZXJhdHVyZVwiLFwiY2Vsc2l1c1wiLFwiZmFocmVuaGVpdFwiLFwid2VhdGhlclwiXSxcInRodW1icy1kb3duXCI6W1wiZGlzbGlrZVwiLFwiYmFkXCIsXCJlbW90aW9uXCJdLFwidGh1bWJzLXVwXCI6W1wibGlrZVwiLFwiZ29vZFwiLFwiZW1vdGlvblwiXSxcInRvZ2dsZS1sZWZ0XCI6W1wib25cIixcIm9mZlwiLFwic3dpdGNoXCJdLFwidG9nZ2xlLXJpZ2h0XCI6W1wib25cIixcIm9mZlwiLFwic3dpdGNoXCJdLFwidG9vbFwiOltcInNldHRpbmdzXCIsXCJzcGFubmVyXCJdLFwidHJhc2hcIjpbXCJnYXJiYWdlXCIsXCJkZWxldGVcIixcInJlbW92ZVwiLFwiYmluXCJdLFwidHJhc2gtMlwiOltcImdhcmJhZ2VcIixcImRlbGV0ZVwiLFwicmVtb3ZlXCIsXCJiaW5cIl0sXCJ0cmlhbmdsZVwiOltcImRlbHRhXCJdLFwidHJ1Y2tcIjpbXCJkZWxpdmVyeVwiLFwidmFuXCIsXCJzaGlwcGluZ1wiLFwidHJhbnNwb3J0XCIsXCJsb3JyeVwiXSxcInR2XCI6W1widGVsZXZpc2lvblwiLFwic3RyZWFtXCJdLFwidHdpdGNoXCI6W1wibG9nb1wiXSxcInR3aXR0ZXJcIjpbXCJsb2dvXCIsXCJzb2NpYWxcIl0sXCJ0eXBlXCI6W1widGV4dFwiXSxcInVtYnJlbGxhXCI6W1wicmFpblwiLFwid2VhdGhlclwiXSxcInVubG9ja1wiOltcInNlY3VyaXR5XCJdLFwidXNlci1jaGVja1wiOltcImZvbGxvd2VkXCIsXCJzdWJzY3JpYmVkXCJdLFwidXNlci1taW51c1wiOltcImRlbGV0ZVwiLFwicmVtb3ZlXCIsXCJ1bmZvbGxvd1wiLFwidW5zdWJzY3JpYmVcIl0sXCJ1c2VyLXBsdXNcIjpbXCJuZXdcIixcImFkZFwiLFwiY3JlYXRlXCIsXCJmb2xsb3dcIixcInN1YnNjcmliZVwiXSxcInVzZXIteFwiOltcImRlbGV0ZVwiLFwicmVtb3ZlXCIsXCJ1bmZvbGxvd1wiLFwidW5zdWJzY3JpYmVcIixcInVuYXZhaWxhYmxlXCJdLFwidXNlclwiOltcInBlcnNvblwiLFwiYWNjb3VudFwiXSxcInVzZXJzXCI6W1wiZ3JvdXBcIl0sXCJ2aWRlby1vZmZcIjpbXCJjYW1lcmFcIixcIm1vdmllXCIsXCJmaWxtXCJdLFwidmlkZW9cIjpbXCJjYW1lcmFcIixcIm1vdmllXCIsXCJmaWxtXCJdLFwidm9pY2VtYWlsXCI6W1wicGhvbmVcIl0sXCJ2b2x1bWVcIjpbXCJtdXNpY1wiLFwic291bmRcIixcIm11dGVcIl0sXCJ2b2x1bWUtMVwiOltcIm11c2ljXCIsXCJzb3VuZFwiXSxcInZvbHVtZS0yXCI6W1wibXVzaWNcIixcInNvdW5kXCJdLFwidm9sdW1lLXhcIjpbXCJtdXNpY1wiLFwic291bmRcIixcIm11dGVcIl0sXCJ3YXRjaFwiOltcImNsb2NrXCIsXCJ0aW1lXCJdLFwid2lmaS1vZmZcIjpbXCJkaXNhYmxlZFwiXSxcIndpZmlcIjpbXCJjb25uZWN0aW9uXCIsXCJzaWduYWxcIixcIndpcmVsZXNzXCJdLFwid2luZFwiOltcIndlYXRoZXJcIixcImFpclwiXSxcIngtY2lyY2xlXCI6W1wiY2FuY2VsXCIsXCJjbG9zZVwiLFwiZGVsZXRlXCIsXCJyZW1vdmVcIixcInRpbWVzXCIsXCJjbGVhclwiXSxcIngtb2N0YWdvblwiOltcImRlbGV0ZVwiLFwic3RvcFwiLFwiYWxlcnRcIixcIndhcm5pbmdcIixcInRpbWVzXCIsXCJjbGVhclwiXSxcIngtc3F1YXJlXCI6W1wiY2FuY2VsXCIsXCJjbG9zZVwiLFwiZGVsZXRlXCIsXCJyZW1vdmVcIixcInRpbWVzXCIsXCJjbGVhclwiXSxcInhcIjpbXCJjYW5jZWxcIixcImNsb3NlXCIsXCJkZWxldGVcIixcInJlbW92ZVwiLFwidGltZXNcIixcImNsZWFyXCJdLFwieW91dHViZVwiOltcImxvZ29cIixcInZpZGVvXCIsXCJwbGF5XCJdLFwiemFwLW9mZlwiOltcImZsYXNoXCIsXCJjYW1lcmFcIixcImxpZ2h0bmluZ1wiXSxcInphcFwiOltcImZsYXNoXCIsXCJjYW1lcmFcIixcImxpZ2h0bmluZ1wiXSxcInpvb20taW5cIjpbXCJtYWduaWZ5aW5nIGdsYXNzXCJdLFwiem9vbS1vdXRcIjpbXCJtYWduaWZ5aW5nIGdsYXNzXCJdfTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9zcmMvdG8tc3ZnLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL3NyYy90by1zdmcuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfaWNvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2ljb25zICovIFwiLi9zcmMvaWNvbnMuanNcIik7XG5cbnZhciBfaWNvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaWNvbnMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENyZWF0ZSBhbiBTVkcgc3RyaW5nLlxuICogQGRlcHJlY2F0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge09iamVjdH0gYXR0cnNcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHRvU3ZnKG5hbWUpIHtcbiAgdmFyIGF0dHJzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICBjb25zb2xlLndhcm4oJ2ZlYXRoZXIudG9TdmcoKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZlYXRoZXIuaWNvbnNbbmFtZV0udG9TdmcoKSBpbnN0ZWFkLicpO1xuXG4gIGlmICghbmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIHJlcXVpcmVkIGBrZXlgIChpY29uIG5hbWUpIHBhcmFtZXRlciBpcyBtaXNzaW5nLicpO1xuICB9XG5cbiAgaWYgKCFfaWNvbnMyLmRlZmF1bHRbbmFtZV0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGljb24gbWF0Y2hpbmcgXFwnJyArIG5hbWUgKyAnXFwnLiBTZWUgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgaWNvbnMgYXQgaHR0cHM6Ly9mZWF0aGVyaWNvbnMuY29tJyk7XG4gIH1cblxuICByZXR1cm4gX2ljb25zMi5kZWZhdWx0W25hbWVdLnRvU3ZnKGF0dHJzKTtcbn1cblxuZXhwb3J0cy5kZWZhdWx0ID0gdG9Tdmc7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAwOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogbXVsdGkgY29yZS1qcy9lcy9hcnJheS9mcm9tIC4vc3JjL2luZGV4LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL2VzL2FycmF5L2Zyb20gKi9cIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZXMvYXJyYXkvZnJvbS5qc1wiKTtcbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgL2hvbWUvdHJhdmlzL2J1aWxkL2ZlYXRoZXJpY29ucy9mZWF0aGVyL3NyYy9pbmRleC5qcyAqL1wiLi9zcmMvaW5kZXguanNcIik7XG5cblxuLyoqKi8gfSlcblxuLyoqKioqKi8gfSk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZlYXRoZXIuanMubWFwIiwiLyoqXHJcbiAqIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHZhcmlvdXMgdXRpbGl0eSBmdW5jdGlvbnMgY29tbW9ubHkgdXNlZCBpbiBPYnNpZGlhbiBwbHVnaW5zLlxyXG4gKiBAbW9kdWxlIG9ic2lkaWFuLWNvbW11bml0eS1saWJcclxuICovXHJcbmltcG9ydCAqIGFzIGZlYXRoZXIgZnJvbSBcImZlYXRoZXItaWNvbnNcIjtcclxuaW1wb3J0IHsgYWRkSWNvbiwgTWFya2Rvd25SZW5kZXJlciwgTWFya2Rvd25WaWV3LCBNb2RhbCwgbm9ybWFsaXplUGF0aCwgTm90aWNlLCByZXF1ZXN0LCBURmlsZSwgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuLyoqXHJcbiAqIFlvdSBjYW4gYXdhaXQgdGhpcyBGdW5jdGlvbiB0byBkZWxheSBleGVjdXRpb25cclxuICpcclxuICogQHBhcmFtIGRlbGF5IFRoZSBkZWxheSBpbiBtc1xyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXQoZGVsYXkpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBkZWxheSkpO1xyXG59XHJcbi8qKlxyXG4gKiBBZGRzIGFsbCBvZmZpY2lhbCBGZWF0aGVyIEljb25zIHRvIE9ic2lkaWFuLlxyXG4gKiBodHRwczovL2ZlYXRoZXJpY29ucy5jb20vXHJcbiAqXHJcbiAqIEBwYXJhbSBhdHRyIFNWRyBBdHRyaWJ1dGVzIGZvciB0aGUgSWNvbi4gVGhlIGRlZmF1bHQgc2hvdWxkIHdvcmsgZm9yIG1vc3QgdXNlY2FzZXMuXHJcbiAqXHJcbiAqIEBkZXByZWNhdGVkIEFzIG9mIE9ic2lkaWFuIDAuMTMuMjcgdGhpcyBpcyBubyBsb25nZXIgbmVlZGVkLCBiZWNhdXNlIE9ic2lkaWFuIHNoaXBzIHdpdGggYGx1Y2lkZWAsIGEgbWFpbnRhaW5lZCBmb3JrIG9mIGZlYXRoZXIuIChodHRwczovL2x1Y2lkZS5kZXYvKVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZEFsbEZlYXRoZXJJY29ucyhhdHRyID0geyB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCIxMDBcIiwgaGVpZ2h0OiBcIjEwMFwiIH0pIHtcclxuICAgIE9iamVjdC52YWx1ZXMoZmVhdGhlci5pY29ucykuZm9yRWFjaCgoaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHN2ZyA9IGkudG9TdmcoYXR0cik7XHJcbiAgICAgICAgYWRkSWNvbihgZmVhdGhlci0ke2kubmFtZX1gLCBzdmcpO1xyXG4gICAgfSk7XHJcbn1cclxuLyoqXHJcbiAqIEFkZHMgYSBzcGVjaWZpYyBGZWF0aGVyIEljb24gdG8gT2JzaWRpYW4uXHJcbiAqXHJcbiAqIEBwYXJhbSBuYW1lIG9mZmljaWFsIE5hbWUgb2YgdGhlIEljb24gKGh0dHBzOi8vZmVhdGhlcmljb25zLmNvbS8pXHJcbiAqIEBwYXJhbSBhdHRyIFNWRyBBdHRyaWJ1dGVzIGZvciB0aGUgSWNvbi4gVGhlIGRlZmF1bHQgc2hvdWxkIHdvcmsgZm9yIG1vc3QgdXNlY2FzZXMuXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEljb24gbmFtZVxyXG4gKlxyXG4gKiBAZGVwcmVjYXRlZCBBcyBvZiBPYnNpZGlhbiAwLjEzLjI3IHRoaXMgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgYmVjYXVzZSBPYnNpZGlhbiBzaGlwcyB3aXRoIGBsdWNpZGVgLCBhIG1haW50YWluZWQgZm9yayBvZiBmZWF0aGVyLiAoaHR0cHM6Ly9sdWNpZGUuZGV2LylcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRGZWF0aGVySWNvbihuYW1lLCBhdHRyID0geyB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCIxMDBcIiwgaGVpZ2h0OiBcIjEwMFwiIH0pIHtcclxuICAgIGlmIChmZWF0aGVyLmljb25zW25hbWVdKSB7XHJcbiAgICAgICAgY29uc3QgaWNvbk5hbWUgPSBgZmVhdGhlci0ke25hbWV9YDtcclxuICAgICAgICBhZGRJY29uKGljb25OYW1lLCBmZWF0aGVyLmljb25zW25hbWVdLnRvU3ZnKGF0dHIpKTtcclxuICAgICAgICByZXR1cm4gaWNvbk5hbWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB0aHJvdyBFcnJvcihgVGhpcyBJY29uICgke25hbWV9KSBkb2Vzbid0IGV4aXN0IGluIHRoZSBGZWF0aGVyIExpYnJhcnkuYCk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIENvbnZlcnQgYSBiYXNlNjQgU3RyaW5nIHRvIGFuIEFycmF5QnVmZmVyLlxyXG4gKiBZb3UgY2FuIHRoZW4gdXNlIHRoZSBBcnJheUJ1ZmZlciB0byBzYXZlIHRoZSBhc3NldCB0byBkaXNrLlxyXG4gKlxyXG4gKiBAcGFyYW0gYmFzZTY0IGJhc2U2NCBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxyXG4gKiBAcmV0dXJucyBBcnJheUJ1ZmZlclxyXG4gKiBAZGVwcmVjYXRlZCBPYnNpZGlhbiBvZmZlcnMgaXQncyBvd24gbWV0aG9kIGFzIG9mIDAuMTQuNVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGJhc2U2NFRvQXJyYXlCdWZmZXIoYmFzZTY0KSB7XHJcbiAgICBjb25zdCBiaW5hcnlfc3RyaW5nID0gd2luZG93LmF0b2IoYmFzZTY0KTtcclxuICAgIGNvbnN0IGxlbiA9IGJpbmFyeV9zdHJpbmcubGVuZ3RoO1xyXG4gICAgbGV0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICBieXRlc1tpXSA9IGJpbmFyeV9zdHJpbmcuY2hhckNvZGVBdChpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBieXRlcy5idWZmZXI7XHJcbn1cclxuLyoqXHJcbiAqIFRoaXMgaXMgYSBoZWxwZXIgbWV0aG9kIGZvciBhbiB1bmRvY3VtZW50ZWQgQVBJIG9mIE9ic2lkaWFuLlxyXG4gKlxyXG4gKiBAcGFyYW0gZmlsZU5hbWUgVGhlIEZpbGVuYW1lIGZvciB5b3VyIEF0dGFjaG1lbnRcclxuICogQHBhcmFtIGZvcm1hdCBUaGUgRmlsZWZvcm1hdCBvZiB5b3VyIEF0dGFjaG1lbnRcclxuICogQHBhcmFtIHNvdXJjZUZpbGUgVGhlIFNvdXJjZWZpbGUgZnJvbSB3aGVyZSB0aGUgQXR0YWNobWVudCBnZXRzIGFkZGVkLCB0aGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBBdHRhY2htZW50IEZvbGRlciBtaWdodCBiZSBkaWZmZXJlbnQgYmFzZWQgb24gd2hlcmUgaXQgZ2V0cyBpbnNlcnRlZC5cclxuICogQHJldHVybnMgVGhlIEF0dGFjaG1lbnQgUGF0aFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyhmaWxlTmFtZSwgZm9ybWF0LCBzb3VyY2VGaWxlKSB7XHJcbiAgICAvL0B0cy1leHBlY3QtZXJyb3JcclxuICAgIHJldHVybiBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzKGZpbGVOYW1lLCBmb3JtYXQsIHNvdXJjZUZpbGUpO1xyXG59XHJcbi8qKlxyXG4gKiBDb3B5IGBjb250ZW50YCB0byB0aGUgdXNlcnMgY2xpcGJvYXJkLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCBUaGUgY29udGVudCB0byBiZSBjb3BpZWQgdG8gY2xpcGJvYXJkLlxyXG4gKiBAcGFyYW0geygpID0+IGFueX0gc3VjY2VzcyBUaGUgY2FsbGJhY2sgdG8gcnVuIHdoZW4gdGV4dCBpcyBzdWNjZXNzZnVsbHkgY29waWVkLiBEZWZhdWx0IHRocm93cyBhIG5ldyBgTm90aWNlYFxyXG4gKiBAcGFyYW0geyhyZWFzb24/KSA9PiBhbnl9IGZhaWx1cmUgVGhlIGNhbGxiYWNrIHRvIHJ1biB3aGVuIHRleHQgd2FzIG5vdCBhYmxlIHRvIGJlIGNvcGllZC4gRGVmYXVsdCB0aHJvd3MgYSBuZXcgYE5vdGljZWAsIGFuZCBjb25zb2xlIGxvZ3MgdGhlIGVycm9yLmBcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5KGNvbnRlbnQsIHN1Y2Nlc3MgPSAoKSA9PiBuZXcgTm90aWNlKFwiQ29waWVkIHRvIGNsaXBib2FyZFwiKSwgZmFpbHVyZSA9IChyZWFzb24pID0+IHtcclxuICAgIG5ldyBOb3RpY2UoXCJDb3VsZCBub3QgY29weSB0byBjbGlwYm9hcmRcIik7XHJcbiAgICBjb25zb2xlLmxvZyh7IHJlYXNvbiB9KTtcclxufSkge1xyXG4gICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudCkudGhlbihzdWNjZXNzLCBmYWlsdXJlKTtcclxufVxyXG4vKipcclxuICogR2l2ZW4gYW4gZWRpdG9yLCBjaGVjayBpZiBzb21ldGhpbmcgaXMgc2VsZWN0ZWQgYW5kIHJldHVybiB0aGF0IHNlbGVjdGlvbiwgb3RoZXJ3aXNlIHJldHVybiB0aGUgZW50aXJlIGNvbnRlbnQgb2YgdGhlIGVkaXRvclxyXG4gKiBAcGFyYW0gIHtFZGl0b3J9IGVkaXRvclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGlvbkZyb21FZGl0b3IoZWRpdG9yKSB7XHJcbiAgICBpZiAoZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkKCkpXHJcbiAgICAgICAgcmV0dXJuIGVkaXRvci5nZXRTZWxlY3Rpb24oKTtcclxuICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gZWRpdG9yLmdldFZhbHVlKCk7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrIGlmIHNvbWV0aGluZyBpcyBzZWxlY3RlZCBpbiB0aGUgY3VycmVudCBmaWxlIGFuZCByZXR1cm4gdGhhdCBzZWxlY3Rpb24sIG90aGVyd2lzZSByZXR1cm4gdGhlIGVudGlyZSBjb250ZW50IG9mIHRoZSBjdXJyZW50IGZpbGUuXHJcbiAqIEBwYXJhbSAge2Jvb2xlYW59IFtjYWNoZWQ9dHJ1ZV0gVXNlIGBjYWNoZWRSZWFkYCBvciBgcmVhZGAuIGBjYWNoZWRSZWFkYCBieSBkZWZhdWx0LlxyXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVsbH0gYG51bGxgIGlmIG5vdCBmb2N1c3NlZCBvbiBhIG1hcmtkb3duIGZpbGVcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTZWxlY3Rpb25Gcm9tQ3VyckZpbGUoY2FjaGVkID0gdHJ1ZSkge1xyXG4gICAgdmFyIF9hO1xyXG4gICAgY29uc3QgdGV4dCA9IChfYSA9IHdpbmRvdyA9PT0gbnVsbCB8fCB3aW5kb3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHdpbmRvdy5nZXRTZWxlY3Rpb24oKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvU3RyaW5nKCk7XHJcbiAgICBpZiAodGV4dClcclxuICAgICAgICByZXR1cm4gdGV4dDtcclxuICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gYXdhaXQgZ2V0QWN0aXZlRmlsZUNvbnRlbnQoY2FjaGVkKTtcclxufVxyXG4vKipcclxuICogQ2hlY2sgaWYgYG5vdGVOYW1lYCBpcyB0aGUgbmFtZSBvZiBhIG5vdGUgdGhhdCBleGlzdHMgaW4gdGhlIHZhdWx0LlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IG5vdGVOYW1lIEJhc2VuYW1lIG9mIHRoZSBub3RlIHRvIHNlYXJjaCBmb3IuXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gW3NvdXJjZVBhdGg9XCJcIl0gT3B0aW9uYWwgZmlsZSBwYXRoIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLiBEZWZhdWx0IGlzIHRoZSBjdXJyZW50IGZpbGUuXHJcbiAqIEByZXR1cm5zIGJvb2xlYW5cclxuICovXHJcbmV4cG9ydCBjb25zdCBpc0luVmF1bHQgPSAobm90ZU5hbWUsIHNvdXJjZVBhdGggPSBcIlwiKSA9PiAhIWFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KG5vdGVOYW1lLCBzb3VyY2VQYXRoKTtcclxuLyoqXHJcbiAqIFdoZW4gaG92ZXJpbmcgYSBsaW5rIGdvaW5nIHRvIGB0b2AsIHNob3cgdGhlIE9ic2lkaWFuIGhvdmVyLXByZXZpZXcgb2YgdGhhdCBub3RlLlxyXG4gKlxyXG4gKiBZb3UgcHJvYmFibHkgaGF2ZSB0byBob2xkIGRvd24gYEN0cmxgIHdoZW4gaG92ZXJpbmcgdGhlIGxpbmsgZm9yIHRoZSBwcmV2aWV3IHRvIGFwcGVhciFcclxuICogQHBhcmFtICB7TW91c2VFdmVudH0gZXZlbnRcclxuICogQHBhcmFtICB7WW91clZpZXd9IHZpZXcgVGhlIHZpZXcgd2l0aCB0aGUgbGluayBiZWluZyBob3ZlcmVkXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gdG8gVGhlIGJhc2VuYW1lIG9mIHRoZSBub3RlIHRvIHByZXZpZXcuXHJcbiAqIEB0ZW1wbGF0ZSBZb3VyVmlldyBUaGUgVmlld1R5cGUgb2YgeW91ciB2aWV3XHJcbiAqIEByZXR1cm5zIHZvaWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBob3ZlclByZXZpZXcoZXZlbnQsIHZpZXcsIHRvKSB7XHJcbiAgICBjb25zdCB0YXJnZXRFbCA9IGV2ZW50LnRhcmdldDtcclxuICAgIGFwcC53b3Jrc3BhY2UudHJpZ2dlcihcImhvdmVyLWxpbmtcIiwge1xyXG4gICAgICAgIGV2ZW50LFxyXG4gICAgICAgIHNvdXJjZTogdmlldy5nZXRWaWV3VHlwZSgpLFxyXG4gICAgICAgIGhvdmVyUGFyZW50OiB2aWV3LFxyXG4gICAgICAgIHRhcmdldEVsLFxyXG4gICAgICAgIGxpbmt0ZXh0OiB0byxcclxuICAgIH0pO1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGUgYSBuZXcgbWFya2Rvd24gbm90ZSBuYW1lZCBgbmV3TmFtZWAgaW4gdGhlIHVzZXIncyBwcmVmZmVyZWQgbmV3LW5vdGUtZm9sZGVyLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IG5ld05hbWUgTmFtZSBvZiBuZXcgbm90ZSAod2l0aCBvciB3aXRob3V0ICcubWQnKVxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IFtjdXJyRmlsZVBhdGg9XCJcIl0gRmlsZSBwYXRoIG9mIHRoZSBjdXJyZW50IG5vdGUuIFVzZSBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlcmUgaXMgbm8gYWN0aXZlIGZpbGUuXHJcbiAqIEByZXR1cm5zIHtQcm9taXNlPFRGaWxlPn0gbmV3IFRGaWxlXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTmV3TUROb3RlKG5ld05hbWUsIGN1cnJGaWxlUGF0aCA9IFwiXCIpIHtcclxuICAgIGNvbnN0IG5ld0ZpbGVGb2xkZXIgPSBhcHAuZmlsZU1hbmFnZXIuZ2V0TmV3RmlsZVBhcmVudChjdXJyRmlsZVBhdGgpLnBhdGg7XHJcbiAgICBjb25zdCBuZXdGaWxlUGF0aCA9IG5vcm1hbGl6ZVBhdGgoYCR7bmV3RmlsZUZvbGRlcn0ke25ld0ZpbGVGb2xkZXIgPT09IFwiL1wiID8gXCJcIiA6IFwiL1wifSR7YWRkTUQobmV3TmFtZSl9YCk7XHJcbiAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShuZXdGaWxlUGF0aCwgXCJcIik7XHJcbn1cclxuLyoqXHJcbiAqIEFkZCAnLm1kJyB0byBgbm90ZU5hbWVgIGlmIGl0IGlzbid0IGFscmVhZHkgdGhlcmUuXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gbm90ZU5hbWUgd2l0aCBvciB3aXRob3V0ICcubWQnIG9uIHRoZSBlbmQuXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IG5vdGVOYW1lIHdpdGggJy5tZCcgb24gdGhlIGVuZC5cclxuICovXHJcbmV4cG9ydCBjb25zdCBhZGRNRCA9IChub3RlTmFtZSkgPT4ge1xyXG4gICAgcmV0dXJuIG5vdGVOYW1lLm1hdGNoKC9cXC5NRCR8XFwubWQkL20pID8gbm90ZU5hbWUgOiBub3RlTmFtZSArIFwiLm1kXCI7XHJcbn07XHJcbi8qKlxyXG4gKiBTdHJpcCAnLm1kJyBvZmYgdGhlIGVuZCBvZiBhIG5vdGUgbmFtZSB0byBnZXQgaXRzIGJhc2VuYW1lLlxyXG4gKlxyXG4gKiBXb3JrcyB3aXRoIHRoZSBlZGdlY2FzZSB3aGVyZSBhIG5vdGUgaGFzICcubWQnIGluIGl0cyBiYXNlbmFtZTogYE9ic2lkaWFuLm1kLm1kYCwgZm9yIGV4YW1wbGUuXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gbm90ZU5hbWUgd2l0aCBvciB3aXRob3V0ICcubWQnIG9uIHRoZSBlbmQuXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IG5vdGVOYW1lIHdpdGhvdXQgJy5tZCdcclxuICovXHJcbmV4cG9ydCBjb25zdCBzdHJpcE1EID0gKG5vdGVOYW1lKSA9PiB7XHJcbiAgICBpZiAobm90ZU5hbWUubWF0Y2goL1xcLk1EJHxcXC5tZCQvbSkpIHtcclxuICAgICAgICByZXR1cm4gbm90ZU5hbWUuc3BsaXQoL1xcLk1EJHxcXC5tZCQvbSkuc2xpY2UoMCwgLTEpLmpvaW4oXCIubWRcIik7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIG5vdGVOYW1lO1xyXG59O1xyXG4vKipcclxuICogV2hlbiBjbGlja2luZyBhIGxpbmssIGNoZWNrIGlmIHRoYXQgbm90ZSBpcyBhbHJlYWR5IG9wZW4gaW4gYW5vdGhlciBsZWFmLCBhbmQgc3dpdGNoIHRvIHRoYXQgbGVhZiwgaWYgc28uIE90aGVyd2lzZSwgb3BlbiB0aGUgbm90ZSBpbiBhIG5ldyBwYW5lLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGRlc3QgTmFtZSBvZiBub3RlIHRvIG9wZW4uIElmIHlvdSB3YW50IHRvIG9wZW4gYSBub24tbWQgbm90ZSwgYmUgc3VyZSB0byBhZGQgdGhlIGZpbGUgZXh0ZW5zaW9uLlxyXG4gKiBAcGFyYW0gIHtNb3VzZUV2ZW50fSBldmVudFxyXG4gKiBAcGFyYW0gIHt7Y3JlYXRlTmV3RmlsZTpib29sZWFufX0gW29wdGlvbnM9e2NyZWF0ZU5ld0ZpbGU6dHJ1ZX1dIFdoZXRoZXIgb3Igbm90IHRvIGNyZWF0ZSBgZGVzdGAgZmlsZSBpZiBpdCBkb2Vzbid0IGV4aXN0LiBJZiBgZmFsc2VgLCBzaW1wbHkgcmV0dXJuIGZyb20gdGhlIGZ1bmN0aW9uLlxyXG4gKiBAcmV0dXJucyBQcm9taXNlXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3Blbk9yU3dpdGNoKGRlc3QsIGV2ZW50LCBvcHRpb25zID0geyBjcmVhdGVOZXdGaWxlOiB0cnVlIH0pIHtcclxuICAgIGNvbnN0IHsgd29ya3NwYWNlIH0gPSBhcHA7XHJcbiAgICBsZXQgZGVzdEZpbGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChkZXN0LCBcIlwiKTtcclxuICAgIC8vIElmIGRlc3QgZG9lc24ndCBleGlzdCwgbWFrZSBpdFxyXG4gICAgaWYgKCFkZXN0RmlsZSAmJiBvcHRpb25zLmNyZWF0ZU5ld0ZpbGUpIHtcclxuICAgICAgICBkZXN0RmlsZSA9IGF3YWl0IGNyZWF0ZU5ld01ETm90ZShkZXN0KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCFkZXN0RmlsZSAmJiAhb3B0aW9ucy5jcmVhdGVOZXdGaWxlKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIC8vIENoZWNrIGlmIGl0J3MgYWxyZWFkeSBvcGVuXHJcbiAgICBjb25zdCBsZWF2ZXNXaXRoRGVzdEFscmVhZHlPcGVuID0gW107XHJcbiAgICAvLyBGb3IgYWxsIG9wZW4gbGVhdmVzLCBpZiB0aGUgbGVhdmUncyBiYXNlbmFtZSBpcyBlcXVhbCB0byB0aGUgbGluayBkZXN0aW5hdGlvbiwgcmF0aGVyIGFjdGl2YXRlIHRoYXQgbGVhZiBpbnN0ZWFkIG9mIG9wZW5pbmcgaXQgaW4gdHdvIHBhbmVzXHJcbiAgICB3b3Jrc3BhY2UuaXRlcmF0ZUFsbExlYXZlcygobGVhZikgPT4ge1xyXG4gICAgICAgIHZhciBfYTtcclxuICAgICAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSAoX2EgPSBsZWFmLnZpZXcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5maWxlO1xyXG4gICAgICAgICAgICBpZiAoZmlsZSAmJiBmaWxlLmJhc2VuYW1lICsgXCIuXCIgKyBmaWxlLmV4dGVuc2lvbiA9PT0gZGVzdCkge1xyXG4gICAgICAgICAgICAgICAgbGVhdmVzV2l0aERlc3RBbHJlYWR5T3Blbi5wdXNoKGxlYWYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyBSYXRoZXIgc3dpdGNoIHRvIGl0IGlmIGl0IGlzIG9wZW5cclxuICAgIGlmIChsZWF2ZXNXaXRoRGVzdEFscmVhZHlPcGVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB3b3Jrc3BhY2Uuc2V0QWN0aXZlTGVhZihsZWF2ZXNXaXRoRGVzdEFscmVhZHlPcGVuWzBdKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBjb25zdCBtb2RlID0gYXBwLnZhdWx0LmdldENvbmZpZyhcImRlZmF1bHRWaWV3TW9kZVwiKTtcclxuICAgICAgICBjb25zdCBsZWFmID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5nZXRNb2RpZmllclN0YXRlKFwiTWV0YVwiKVxyXG4gICAgICAgICAgICA/IHdvcmtzcGFjZS5zcGxpdEFjdGl2ZUxlYWYoKVxyXG4gICAgICAgICAgICA6IHdvcmtzcGFjZS5nZXRVbnBpbm5lZExlYWYoKTtcclxuICAgICAgICAvL0B0cy1leHBlY3QtZXJyb3JcclxuICAgICAgICBhd2FpdCBsZWFmLm9wZW5GaWxlKGRlc3RGaWxlLCB7IGFjdGl2ZTogdHJ1ZSwgbW9kZSB9KTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogR2l2ZW4gYSBsaXN0IG9mIHJlc29sdmVkIGxpbmtzIGZyb20gYXBwLm1ldGFkYXRhQ2FjaGUsIGNoZWNrIGlmIGBmcm9tYCBoYXMgYSBsaW5rIHRvIGB0b2BcclxuICogQHBhcmFtICB7UmVzb2x2ZWRMaW5rc30gcmVzb2x2ZWRMaW5rc1xyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGZyb20gTm90ZSBuYW1lIHdpdGggbGluayBsZWF2aW5nIChXaXRoIG9yIHdpdGhvdXQgJy5tZCcpXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gdG8gTm90ZSBuYW1lIHdpdGggbGluayBhcnJpdmluZyAoV2l0aCBvciB3aXRob3V0ICcubWQnKVxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtkaXJlY3RlZD10cnVlXSBPbmx5IGNoZWNrIGlmIGBmcm9tYCBoYXMgYSBsaW5rIHRvIGB0b2AuIElmIG5vdCBkaXJlY3RlZCwgY2hlY2sgaW4gYm90aCBkaXJlY3Rpb25zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5rZWQocmVzb2x2ZWRMaW5rcywgZnJvbSwgdG8sIGRpcmVjdGVkID0gdHJ1ZSkge1xyXG4gICAgdmFyIF9hLCBfYjtcclxuICAgIGZyb20gPSBhZGRNRChmcm9tKTtcclxuICAgIHRvID0gYWRkTUQodG8pO1xyXG4gICAgY29uc3QgZnJvbVRvID0gKF9hID0gcmVzb2x2ZWRMaW5rc1tmcm9tXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmhhc093blByb3BlcnR5KHRvKTtcclxuICAgIGlmICghZnJvbVRvICYmICFkaXJlY3RlZCkge1xyXG4gICAgICAgIGNvbnN0IHRvRnJvbSA9IChfYiA9IHJlc29sdmVkTGlua3NbdG9dKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuaGFzT3duUHJvcGVydHkoZnJvbSk7XHJcbiAgICAgICAgcmV0dXJuIHRvRnJvbTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gZnJvbVRvO1xyXG59XHJcbi8qKlxyXG4gKiBDaGVjayBpZiB0aGUgbGluayBgZnJvbWAg4oaSIGB0b2AgaXMgcmVzb2x2ZWQgb3Igbm90LlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHRvXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gZnJvbVxyXG4gKiBAcmV0dXJucyBib29sZWFuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNSZXNvbHZlZCh0bywgZnJvbSkge1xyXG4gICAgdmFyIF9hO1xyXG4gICAgY29uc3QgeyByZXNvbHZlZExpbmtzIH0gPSBhcHAubWV0YWRhdGFDYWNoZTtcclxuICAgIHJldHVybiAoKF9hID0gcmVzb2x2ZWRMaW5rcyA9PT0gbnVsbCB8fCByZXNvbHZlZExpbmtzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNvbHZlZExpbmtzW2FkZE1EKGZyb20pXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW2FkZE1EKHRvKV0pID4gMDtcclxufVxyXG4vKipcclxuICogT3BlbiB5b3VyIHZpZXcgb24gdGhlIGNob3NlbiBgc2lkZWAgaWYgaXQgaXNuJ3QgYWxyZWFkeSBvcGVuXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gdmlld1R5cGVcclxuICogQHBhcmFtICB7Q29uc3RydWN0b3I8WW91clZpZXc+fSB2aWV3Q2xhc3MgVGhlIGNsYXNzIGNvbnN0cnVjdG9yIG9mIHlvdXIgdmlld1xyXG4gKiBAcGFyYW0gIHtcImxlZnRcInxcInJpZ2h0XCJ9IFtzaWRlPVwicmlnaHRcIl1cclxuICogQHJldHVybnMge1Byb21pc2U8WW91clZpZXc+fSBUaGUgb3BlbmVkIHZpZXdcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuVmlldyh2aWV3VHlwZSwgdmlld0NsYXNzLCBzaWRlID0gXCJyaWdodFwiKSB7XHJcbiAgICBsZXQgbGVhZiA9IG51bGw7XHJcbiAgICBmb3IgKGxlYWYgb2YgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUodmlld1R5cGUpKSB7XHJcbiAgICAgICAgaWYgKGxlYWYudmlldyBpbnN0YW5jZW9mIHZpZXdDbGFzcykge1xyXG4gICAgICAgICAgICByZXR1cm4gbGVhZi52aWV3O1xyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCBsZWFmLnNldFZpZXdTdGF0ZSh7IHR5cGU6IFwiZW1wdHlcIiB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGxlYWYgPVxyXG4gICAgICAgIChsZWFmICE9PSBudWxsICYmIGxlYWYgIT09IHZvaWQgMCA/IGxlYWYgOiBzaWRlID09PSBcInJpZ2h0XCIpXHJcbiAgICAgICAgICAgID8gYXBwLndvcmtzcGFjZS5nZXRSaWdodExlYWYoZmFsc2UpXHJcbiAgICAgICAgICAgIDogYXBwLndvcmtzcGFjZS5nZXRMZWZ0TGVhZihmYWxzZSk7XHJcbiAgICBhd2FpdCBsZWFmLnNldFZpZXdTdGF0ZSh7XHJcbiAgICAgICAgdHlwZTogdmlld1R5cGUsXHJcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbGVhZi52aWV3O1xyXG59XHJcbi8qKlxyXG4gKiBDaGVjayB3aGljaCBzaWRlIG9mIHRoZSB3b3Jrc3BhY2UgeW91ciBgdmlld1R5cGVgIGlzIG9uLCBhbmQgc2F2ZSBpdCBpbnRvIGBwbHVnaW4uc2V0dGluZ3Nbc2V0dGluZ05hbWVdYC5cclxuICpcclxuICogKipUaXAqKjogUnVuIHRoaXMgZnVuY3Rpb24gb24gYHBsdWdpbi51bmxvYWRgIHRvIHNhdmUgdGhlIGxhc3Qgc2lkZSB5b3VyIHZpZXcgd2FzIG9uIHdoZW4gY2xvc2luZywgdGhlbiB7QGxpbmsgb3BlblZpZXd9IG9uIHRoZSBzYW1lIHNpZGUgaXQgd2FzIGxhc3QuXHJcbiAqIEBwYXJhbSAge1lvdXJQbHVnaW59IHBsdWdpblxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHZpZXdUeXBlXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gc2V0dGluZ05hbWVcclxuICogQHJldHVybnMge1wibGVmdFwiIHwgXCJyaWdodFwifSBgc2lkZWBcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlVmlld1NpZGUocGx1Z2luLCB2aWV3VHlwZSwgc2V0dGluZ05hbWUpIHtcclxuICAgIGNvbnN0IGxlYWYgPSBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZSh2aWV3VHlwZSlbMF07XHJcbiAgICBpZiAoIWxlYWYpIHtcclxuICAgICAgICBjb25zb2xlLmluZm8oYE9ic2lkaWFuLUNvbW11bml0eS1MaWI6IE5vIGluc3RhbmNlIG9mICcke3ZpZXdUeXBlfScgb3BlbiwgY2Fubm90IHNhdmUgc2lkZWApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgY29uc3Qgc2lkZSA9IGxlYWYuZ2V0Um9vdCgpLnNpZGU7XHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHBsdWdpbi5zZXR0aW5nc1tzZXR0aW5nTmFtZV0gPSBzaWRlO1xyXG4gICAgLy9AdHMtaWdub3JlXHJcbiAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICByZXR1cm4gc2lkZTtcclxufVxyXG4vKipcclxuICogQSBNb2RhbCB1c2VkIGluIHtAbGluayBhZGRSZW5kZXJlZE1hcmtkb3duQnV0dG9ufSB0byBkaXNwbGF5IHJlbmRlcmVkIG1hcmtkb3duIGZyb20gYSByYXcgc3RyaW5nLCBvciBmZXRjaGVkIGZyb20gYSBwcm92aWRlZCB1cmwuXHJcbiAqXHJcbiAqICFbXShodHRwczovL2kuaW1ndXIuY29tL05Nd001MEUucG5nKVxyXG4gKiBAcGFyYW0gIHtZb3VyUGx1Z2lufSBwbHVnaW5cclxuICogQHBhcmFtICB7c3RyaW5nfSBzb3VyY2UgUmF3IG1hcmtkb3duIGNvbnRlbnQgb3IgdXJsIHRvIGZpbmQgcmF3IG1hcmtkb3duLlxyXG4gKiBAcGFyYW0gIHtib29sZWFufSBmZXRjaCBUcnVlIOKGkiBmZXRjaCBtYXJrZG93biBmcm9tIGBzb3VyY2VgIGFzIHVybC4gRmFsc2Ug4oaSIGBzb3VyY2VgIGlzIGFscmVhZHkgYSBtYXJrZG93biBzdHJpbmcuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUmVuZGVyZWRNYXJrZG93bk1vZGFsIGV4dGVuZHMgTW9kYWwge1xyXG4gICAgY29uc3RydWN0b3IocGx1Z2luLCBzb3VyY2UsIGZldGNoKSB7XHJcbiAgICAgICAgc3VwZXIoYXBwKTtcclxuICAgICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcclxuICAgICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcclxuICAgICAgICB0aGlzLmZldGNoID0gZmV0Y2g7XHJcbiAgICB9XHJcbiAgICBhc3luYyBvbk9wZW4oKSB7XHJcbiAgICAgICAgbGV0IHsgY29udGVudEVsLCBzb3VyY2UsIHBsdWdpbiwgZmV0Y2ggfSA9IHRoaXM7XHJcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBzb3VyY2U7XHJcbiAgICAgICAgaWYgKGZldGNoKSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnRFbC5jcmVhdGVEaXYoeyB0ZXh0OiBgV2FpdGluZyBmb3IgY29udGVudCBmcm9tOiAnJHtzb3VyY2V9J2AgfSk7XHJcbiAgICAgICAgICAgIGNvbnRlbnQgPSBhd2FpdCByZXF1ZXN0KHsgdXJsOiBzb3VyY2UgfSk7XHJcbiAgICAgICAgICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsb2dEaXYgPSBjb250ZW50RWwuY3JlYXRlRGl2KHsgY2xzOiBcIk9DTC1SZW5kZXJlZE1hcmtkb3duTW9kYWxcIiB9KTtcclxuICAgICAgICBNYXJrZG93blJlbmRlcmVyLnJlbmRlck1hcmtkb3duKGNvbnRlbnQsIGxvZ0RpdiwgXCJcIiwgcGx1Z2luKTtcclxuICAgIH1cclxuICAgIG9uQ2xvc2UoKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZW50RWwuZW1wdHkoKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogQWRkIGEgYnV0dG9uIHRvIGFuIEhUTUxFTGVtZW50LCB3aGljaCwgd2hlbiBjbGlja2VkLCBwb3BzIHVwIGEge0BsaW5rIFJlbmRlcmVkTWFya2Rvd25Nb2RhbH0gc2hvd2luZyByZW5kZXJlZCBtYXJrZG93bi5cclxuICpcclxuICogVXNlIGBmZXRjaGAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgbWFya2Rvd24gc3RyaW5nIG5lZWRzIHRvIGJlIGZldGNoZWQsIG9yIGlmIGl0IGhhcyBiZWVuIHByb3ZpZGVkIGFzIGEgc3RyaW5nIGFscmVhZHkuXHJcbiAqXHJcbiAqICFbXShodHRwczovL2kuaW1ndXIuY29tL0hpNGd5eXYucG5nKVxyXG4gKiBAcGFyYW0gIHtZb3VyUGx1Z2lufSBwbHVnaW5cclxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGNvbnRhaW5lckVsIEhUTUxFbGVtZW50IHRvIGFkZCB0aGUgYnV0dG9uIHRvXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gc291cmNlIFJhdyBtYXJrZG93biBjb250ZW50IG9yIHVybCB0byBmaW5kIHJhdyBtYXJrZG93bi5cclxuICogQHBhcmFtICB7Ym9vbGVhbn0gZmV0Y2ggVHJ1ZSDihpIgZmV0Y2ggbWFya2Rvd24gZnJvbSBgc291cmNlYCBhcyB1cmwuIEZhbHNlIOKGkiBgc291cmNlYCBpcyBhbHJlYWR5IGEgbWFya2Rvd24gc3RyaW5nLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGRpc3BsYXlUZXh0IFRleHQgdG8gZGlzcGxheSBpbiB0aGUgYnV0dG9uLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJlbmRlcmVkTWFya2Rvd25CdXR0b24ocGx1Z2luLCBjb250YWluZXJFbCwgc291cmNlLCBmZXRjaCwgZGlzcGxheVRleHQpIHtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiYnV0dG9uXCIsIHsgdGV4dDogZGlzcGxheVRleHQgfSwgKGJ1dCkgPT4gYnV0Lm9uQ2xpY2tFdmVudCgoKSA9PiB7XHJcbiAgICAgICAgbmV3IFJlbmRlcmVkTWFya2Rvd25Nb2RhbChwbHVnaW4sIHNvdXJjZSwgZmV0Y2gpLm9wZW4oKTtcclxuICAgIH0pKTtcclxufVxyXG4vKipcclxuICogQ2hlY2sgaWYgYGFwcC5tZXRhZGF0YUNhY2hlLlJlc29sdmVkTGlua3NgIGhhdmUgZnVsbHkgaW5pdGFsaXNlZC5cclxuICpcclxuICogVXNlZCB3aXRoIHtAbGluayB3YWl0Rm9yUmVzb2x2ZWRMaW5rc30uXHJcbiAqIEBwYXJhbSAge251bWJlcn0gbm9GaWxlcyBOdW1iZXIgb2YgZmlsZXMgaW4geW91ciB2YXVsdC5cclxuICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZWRMaW5rc0NvbXBsZXRlKG5vRmlsZXMpIHtcclxuICAgIGNvbnN0IHsgcmVzb2x2ZWRMaW5rcyB9ID0gYXBwLm1ldGFkYXRhQ2FjaGU7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocmVzb2x2ZWRMaW5rcykubGVuZ3RoID09PSBub0ZpbGVzO1xyXG59XHJcbi8qKlxyXG4gKiBXYWl0IGZvciBgYXBwLm1ldGFkYXRhQ2FjaGUuUmVzb2x2ZWRMaW5rc2AgdG8gaGF2ZSBmdWxseSBpbml0aWFsaXNlZC5cclxuICogQHBhcmFtICB7bnVtYmVyfSBbZGVsYXk9MTAwMF0gTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJldHdlZW4gZWFjaCBjaGVjay5cclxuICogQHBhcmFtIHtudW1iZXJ9IFttYXg9NTBdIE1heGltdW0gbnVtYmVyIG9mIGl0ZXJhdGlvbnMgdG8gY2hlY2sgYmVmb3JlIHRocm93aW5nIGFuIGVycm9yIGFuZCBicmVha2luZyBvdXQgb2YgdGhlIGxvb3AuXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvclJlc29sdmVkTGlua3MoZGVsYXkgPSAxMDAwLCBtYXggPSA1MCkge1xyXG4gICAgY29uc3Qgbm9GaWxlcyA9IGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKCkubGVuZ3RoO1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgd2hpbGUgKCFyZXNvbHZlZExpbmtzQ29tcGxldGUobm9GaWxlcykgJiYgaSA8IG1heCkge1xyXG4gICAgICAgIGF3YWl0IHdhaXQoZGVsYXkpO1xyXG4gICAgICAgIGkrKztcclxuICAgIH1cclxuICAgIGlmIChpID09PSBtYXgpIHtcclxuICAgICAgICB0aHJvdyBFcnJvcihcIk9ic2lkaWFuLUNvbW11bml0eS1MaWI6IFJlc29sdmVkTGlua3MgZGlkIG5vdCBmaW5pc2ggaW5pdGlhbGlzaW5nLiBgbWF4YCBpdGVyYXRpb25zIHdhcyByZWFjaGVkIGZpcnN0LlwiKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogQ2hlY2sgaWYgdGhlIGNvbnRlbnQgb2YgYSBub3RlIGhhcyBZQU1MLiBJZiBzbywgcmV0dXJuIGFuIGFycmF5IG9mIHRoZSBZQU1MIGFuZCB0aGUgcmVzdCBvZiB0aGUgbm90ZS4gSWYgbm90LCByZXR1cm4gYFsnJywgY29udGVudF1gXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gY29udGVudFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0QXRZYW1sKGNvbnRlbnQpIHtcclxuICAgIGlmICghL14tLS1cXG4vLnRlc3QoY29udGVudCkpXHJcbiAgICAgICAgcmV0dXJuIFtcIlwiLCBjb250ZW50XTtcclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHNwbGl0cyA9IGNvbnRlbnQuc3BsaXQoXCItLS1cIik7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgc3BsaXRzLnNsaWNlKDAsIDIpLmpvaW4oXCItLS1cIikgKyBcIi0tLVwiLFxyXG4gICAgICAgICAgICBzcGxpdHMuc2xpY2UoMikuam9pbihcIi0tLVwiKSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGNhY2hlZCBSZXR1cm4gY2FjaGVkIGZpbGUgY29udGVudCAqKm9yKiogcmV0dXJuIHdoYXQncyBvbiBkaXNrLlxyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFjdGl2ZUZpbGVDb250ZW50KGNhY2hlZCA9IHRydWUpIHtcclxuICAgIGNvbnN0IGN1cnJGaWxlID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XHJcbiAgICBpZiAoIShjdXJyRmlsZSBpbnN0YW5jZW9mIFRGaWxlKSlcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIGlmIChjYWNoZWQpXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5jYWNoZWRSZWFkKGN1cnJGaWxlKTtcclxuICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LnJlYWQoY3VyckZpbGUpO1xyXG59XHJcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIG9ic2lkaWFuID0gcmVxdWlyZSgnb2JzaWRpYW4nKTtcblxuY29uc3QgREVGQVVMVF9EQUlMWV9OT1RFX0ZPUk1BVCA9IFwiWVlZWS1NTS1ERFwiO1xuY29uc3QgREVGQVVMVF9XRUVLTFlfTk9URV9GT1JNQVQgPSBcImdnZ2ctW1ddd3dcIjtcbmNvbnN0IERFRkFVTFRfTU9OVEhMWV9OT1RFX0ZPUk1BVCA9IFwiWVlZWS1NTVwiO1xuY29uc3QgREVGQVVMVF9RVUFSVEVSTFlfTk9URV9GT1JNQVQgPSBcIllZWVktW1FdUVwiO1xuY29uc3QgREVGQVVMVF9ZRUFSTFlfTk9URV9GT1JNQVQgPSBcIllZWVlcIjtcblxuZnVuY3Rpb24gc2hvdWxkVXNlUGVyaW9kaWNOb3Rlc1NldHRpbmdzKHBlcmlvZGljaXR5KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwZXJpb2RpY05vdGVzID0gd2luZG93LmFwcC5wbHVnaW5zLmdldFBsdWdpbihcInBlcmlvZGljLW5vdGVzXCIpO1xuICAgIHJldHVybiBwZXJpb2RpY05vdGVzICYmIHBlcmlvZGljTm90ZXMuc2V0dGluZ3M/LltwZXJpb2RpY2l0eV0/LmVuYWJsZWQ7XG59XG4vKipcbiAqIFJlYWQgdGhlIHVzZXIgc2V0dGluZ3MgZm9yIHRoZSBgZGFpbHktbm90ZXNgIHBsdWdpblxuICogdG8ga2VlcCBiZWhhdmlvciBvZiBjcmVhdGluZyBhIG5ldyBub3RlIGluLXN5bmMuXG4gKi9cbmZ1bmN0aW9uIGdldERhaWx5Tm90ZVNldHRpbmdzKCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IHsgaW50ZXJuYWxQbHVnaW5zLCBwbHVnaW5zIH0gPSB3aW5kb3cuYXBwO1xuICAgICAgICBpZiAoc2hvdWxkVXNlUGVyaW9kaWNOb3Rlc1NldHRpbmdzKFwiZGFpbHlcIikpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZm9ybWF0LCBmb2xkZXIsIHRlbXBsYXRlIH0gPSBwbHVnaW5zLmdldFBsdWdpbihcInBlcmlvZGljLW5vdGVzXCIpPy5zZXR0aW5ncz8uZGFpbHkgfHwge307XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0IHx8IERFRkFVTFRfREFJTFlfTk9URV9GT1JNQVQsXG4gICAgICAgICAgICAgICAgZm9sZGVyOiBmb2xkZXI/LnRyaW0oKSB8fCBcIlwiLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZT8udHJpbSgpIHx8IFwiXCIsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgZm9sZGVyLCBmb3JtYXQsIHRlbXBsYXRlIH0gPSBpbnRlcm5hbFBsdWdpbnMuZ2V0UGx1Z2luQnlJZChcImRhaWx5LW5vdGVzXCIpPy5pbnN0YW5jZT8ub3B0aW9ucyB8fCB7fTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0IHx8IERFRkFVTFRfREFJTFlfTk9URV9GT1JNQVQsXG4gICAgICAgICAgICBmb2xkZXI6IGZvbGRlcj8udHJpbSgpIHx8IFwiXCIsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogdGVtcGxhdGU/LnRyaW0oKSB8fCBcIlwiLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIk5vIGN1c3RvbSBkYWlseSBub3RlIHNldHRpbmdzIGZvdW5kIVwiLCBlcnIpO1xuICAgIH1cbn1cbi8qKlxuICogUmVhZCB0aGUgdXNlciBzZXR0aW5ncyBmb3IgdGhlIGB3ZWVrbHktbm90ZXNgIHBsdWdpblxuICogdG8ga2VlcCBiZWhhdmlvciBvZiBjcmVhdGluZyBhIG5ldyBub3RlIGluLXN5bmMuXG4gKi9cbmZ1bmN0aW9uIGdldFdlZWtseU5vdGVTZXR0aW5ncygpIHtcbiAgICB0cnkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBwbHVnaW5NYW5hZ2VyID0gd2luZG93LmFwcC5wbHVnaW5zO1xuICAgICAgICBjb25zdCBjYWxlbmRhclNldHRpbmdzID0gcGx1Z2luTWFuYWdlci5nZXRQbHVnaW4oXCJjYWxlbmRhclwiKT8ub3B0aW9ucztcbiAgICAgICAgY29uc3QgcGVyaW9kaWNOb3Rlc1NldHRpbmdzID0gcGx1Z2luTWFuYWdlci5nZXRQbHVnaW4oXCJwZXJpb2RpYy1ub3Rlc1wiKT8uc2V0dGluZ3M/LndlZWtseTtcbiAgICAgICAgaWYgKHNob3VsZFVzZVBlcmlvZGljTm90ZXNTZXR0aW5ncyhcIndlZWtseVwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IHBlcmlvZGljTm90ZXNTZXR0aW5ncy5mb3JtYXQgfHwgREVGQVVMVF9XRUVLTFlfTk9URV9GT1JNQVQsXG4gICAgICAgICAgICAgICAgZm9sZGVyOiBwZXJpb2RpY05vdGVzU2V0dGluZ3MuZm9sZGVyPy50cmltKCkgfHwgXCJcIixcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogcGVyaW9kaWNOb3Rlc1NldHRpbmdzLnRlbXBsYXRlPy50cmltKCkgfHwgXCJcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSBjYWxlbmRhclNldHRpbmdzIHx8IHt9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybWF0OiBzZXR0aW5ncy53ZWVrbHlOb3RlRm9ybWF0IHx8IERFRkFVTFRfV0VFS0xZX05PVEVfRk9STUFULFxuICAgICAgICAgICAgZm9sZGVyOiBzZXR0aW5ncy53ZWVrbHlOb3RlRm9sZGVyPy50cmltKCkgfHwgXCJcIixcbiAgICAgICAgICAgIHRlbXBsYXRlOiBzZXR0aW5ncy53ZWVrbHlOb3RlVGVtcGxhdGU/LnRyaW0oKSB8fCBcIlwiLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIk5vIGN1c3RvbSB3ZWVrbHkgbm90ZSBzZXR0aW5ncyBmb3VuZCFcIiwgZXJyKTtcbiAgICB9XG59XG4vKipcbiAqIFJlYWQgdGhlIHVzZXIgc2V0dGluZ3MgZm9yIHRoZSBgcGVyaW9kaWMtbm90ZXNgIHBsdWdpblxuICogdG8ga2VlcCBiZWhhdmlvciBvZiBjcmVhdGluZyBhIG5ldyBub3RlIGluLXN5bmMuXG4gKi9cbmZ1bmN0aW9uIGdldE1vbnRobHlOb3RlU2V0dGluZ3MoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwbHVnaW5NYW5hZ2VyID0gd2luZG93LmFwcC5wbHVnaW5zO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gKHNob3VsZFVzZVBlcmlvZGljTm90ZXNTZXR0aW5ncyhcIm1vbnRobHlcIikgJiZcbiAgICAgICAgICAgIHBsdWdpbk1hbmFnZXIuZ2V0UGx1Z2luKFwicGVyaW9kaWMtbm90ZXNcIik/LnNldHRpbmdzPy5tb250aGx5KSB8fFxuICAgICAgICAgICAge307XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmb3JtYXQ6IHNldHRpbmdzLmZvcm1hdCB8fCBERUZBVUxUX01PTlRITFlfTk9URV9GT1JNQVQsXG4gICAgICAgICAgICBmb2xkZXI6IHNldHRpbmdzLmZvbGRlcj8udHJpbSgpIHx8IFwiXCIsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogc2V0dGluZ3MudGVtcGxhdGU/LnRyaW0oKSB8fCBcIlwiLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIk5vIGN1c3RvbSBtb250aGx5IG5vdGUgc2V0dGluZ3MgZm91bmQhXCIsIGVycik7XG4gICAgfVxufVxuLyoqXG4gKiBSZWFkIHRoZSB1c2VyIHNldHRpbmdzIGZvciB0aGUgYHBlcmlvZGljLW5vdGVzYCBwbHVnaW5cbiAqIHRvIGtlZXAgYmVoYXZpb3Igb2YgY3JlYXRpbmcgYSBuZXcgbm90ZSBpbi1zeW5jLlxuICovXG5mdW5jdGlvbiBnZXRRdWFydGVybHlOb3RlU2V0dGluZ3MoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwbHVnaW5NYW5hZ2VyID0gd2luZG93LmFwcC5wbHVnaW5zO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gKHNob3VsZFVzZVBlcmlvZGljTm90ZXNTZXR0aW5ncyhcInF1YXJ0ZXJseVwiKSAmJlxuICAgICAgICAgICAgcGx1Z2luTWFuYWdlci5nZXRQbHVnaW4oXCJwZXJpb2RpYy1ub3Rlc1wiKT8uc2V0dGluZ3M/LnF1YXJ0ZXJseSkgfHxcbiAgICAgICAgICAgIHt9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybWF0OiBzZXR0aW5ncy5mb3JtYXQgfHwgREVGQVVMVF9RVUFSVEVSTFlfTk9URV9GT1JNQVQsXG4gICAgICAgICAgICBmb2xkZXI6IHNldHRpbmdzLmZvbGRlcj8udHJpbSgpIHx8IFwiXCIsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogc2V0dGluZ3MudGVtcGxhdGU/LnRyaW0oKSB8fCBcIlwiLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIk5vIGN1c3RvbSBxdWFydGVybHkgbm90ZSBzZXR0aW5ncyBmb3VuZCFcIiwgZXJyKTtcbiAgICB9XG59XG4vKipcbiAqIFJlYWQgdGhlIHVzZXIgc2V0dGluZ3MgZm9yIHRoZSBgcGVyaW9kaWMtbm90ZXNgIHBsdWdpblxuICogdG8ga2VlcCBiZWhhdmlvciBvZiBjcmVhdGluZyBhIG5ldyBub3RlIGluLXN5bmMuXG4gKi9cbmZ1bmN0aW9uIGdldFllYXJseU5vdGVTZXR0aW5ncygpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHBsdWdpbk1hbmFnZXIgPSB3aW5kb3cuYXBwLnBsdWdpbnM7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSAoc2hvdWxkVXNlUGVyaW9kaWNOb3Rlc1NldHRpbmdzKFwieWVhcmx5XCIpICYmXG4gICAgICAgICAgICBwbHVnaW5NYW5hZ2VyLmdldFBsdWdpbihcInBlcmlvZGljLW5vdGVzXCIpPy5zZXR0aW5ncz8ueWVhcmx5KSB8fFxuICAgICAgICAgICAge307XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmb3JtYXQ6IHNldHRpbmdzLmZvcm1hdCB8fCBERUZBVUxUX1lFQVJMWV9OT1RFX0ZPUk1BVCxcbiAgICAgICAgICAgIGZvbGRlcjogc2V0dGluZ3MuZm9sZGVyPy50cmltKCkgfHwgXCJcIixcbiAgICAgICAgICAgIHRlbXBsYXRlOiBzZXR0aW5ncy50ZW1wbGF0ZT8udHJpbSgpIHx8IFwiXCIsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5pbmZvKFwiTm8gY3VzdG9tIHllYXJseSBub3RlIHNldHRpbmdzIGZvdW5kIVwiLCBlcnIpO1xuICAgIH1cbn1cblxuLy8gQ3JlZGl0OiBAY3JlYXRpb25peC9wYXRoLmpzXG5mdW5jdGlvbiBqb2luKC4uLnBhcnRTZWdtZW50cykge1xuICAgIC8vIFNwbGl0IHRoZSBpbnB1dHMgaW50byBhIGxpc3Qgb2YgcGF0aCBjb21tYW5kcy5cbiAgICBsZXQgcGFydHMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHBhcnRTZWdtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgcGFydHMgPSBwYXJ0cy5jb25jYXQocGFydFNlZ21lbnRzW2ldLnNwbGl0KFwiL1wiKSk7XG4gICAgfVxuICAgIC8vIEludGVycHJldCB0aGUgcGF0aCBjb21tYW5kcyB0byBnZXQgdGhlIG5ldyByZXNvbHZlZCBwYXRoLlxuICAgIGNvbnN0IG5ld1BhcnRzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29uc3QgcGFydCA9IHBhcnRzW2ldO1xuICAgICAgICAvLyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlc1xuICAgICAgICAvLyBBbHNvIHJlbW92ZSBcIi5cIiBzZWdtZW50c1xuICAgICAgICBpZiAoIXBhcnQgfHwgcGFydCA9PT0gXCIuXCIpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgLy8gUHVzaCBuZXcgcGF0aCBzZWdtZW50cy5cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbmV3UGFydHMucHVzaChwYXJ0KTtcbiAgICB9XG4gICAgLy8gUHJlc2VydmUgdGhlIGluaXRpYWwgc2xhc2ggaWYgdGhlcmUgd2FzIG9uZS5cbiAgICBpZiAocGFydHNbMF0gPT09IFwiXCIpXG4gICAgICAgIG5ld1BhcnRzLnVuc2hpZnQoXCJcIik7XG4gICAgLy8gVHVybiBiYWNrIGludG8gYSBzaW5nbGUgc3RyaW5nIHBhdGguXG4gICAgcmV0dXJuIG5ld1BhcnRzLmpvaW4oXCIvXCIpO1xufVxuZnVuY3Rpb24gYmFzZW5hbWUoZnVsbFBhdGgpIHtcbiAgICBsZXQgYmFzZSA9IGZ1bGxQYXRoLnN1YnN0cmluZyhmdWxsUGF0aC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcbiAgICBpZiAoYmFzZS5sYXN0SW5kZXhPZihcIi5cIikgIT0gLTEpXG4gICAgICAgIGJhc2UgPSBiYXNlLnN1YnN0cmluZygwLCBiYXNlLmxhc3RJbmRleE9mKFwiLlwiKSk7XG4gICAgcmV0dXJuIGJhc2U7XG59XG5hc3luYyBmdW5jdGlvbiBlbnN1cmVGb2xkZXJFeGlzdHMocGF0aCkge1xuICAgIGNvbnN0IGRpcnMgPSBwYXRoLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpLnNwbGl0KFwiL1wiKTtcbiAgICBkaXJzLnBvcCgpOyAvLyByZW1vdmUgYmFzZW5hbWVcbiAgICBpZiAoZGlycy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZGlyID0gam9pbiguLi5kaXJzKTtcbiAgICAgICAgaWYgKCF3aW5kb3cuYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChkaXIpKSB7XG4gICAgICAgICAgICBhd2FpdCB3aW5kb3cuYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihkaXIpO1xuICAgICAgICB9XG4gICAgfVxufVxuYXN5bmMgZnVuY3Rpb24gZ2V0Tm90ZVBhdGgoZGlyZWN0b3J5LCBmaWxlbmFtZSkge1xuICAgIGlmICghZmlsZW5hbWUuZW5kc1dpdGgoXCIubWRcIikpIHtcbiAgICAgICAgZmlsZW5hbWUgKz0gXCIubWRcIjtcbiAgICB9XG4gICAgY29uc3QgcGF0aCA9IG9ic2lkaWFuLm5vcm1hbGl6ZVBhdGgoam9pbihkaXJlY3RvcnksIGZpbGVuYW1lKSk7XG4gICAgYXdhaXQgZW5zdXJlRm9sZGVyRXhpc3RzKHBhdGgpO1xuICAgIHJldHVybiBwYXRoO1xufVxuYXN5bmMgZnVuY3Rpb24gZ2V0VGVtcGxhdGVJbmZvKHRlbXBsYXRlKSB7XG4gICAgY29uc3QgeyBtZXRhZGF0YUNhY2hlLCB2YXVsdCB9ID0gd2luZG93LmFwcDtcbiAgICBjb25zdCB0ZW1wbGF0ZVBhdGggPSBvYnNpZGlhbi5ub3JtYWxpemVQYXRoKHRlbXBsYXRlKTtcbiAgICBpZiAodGVtcGxhdGVQYXRoID09PSBcIi9cIikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtcIlwiLCBudWxsXSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlRmlsZSA9IG1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QodGVtcGxhdGVQYXRoLCBcIlwiKTtcbiAgICAgICAgY29uc3QgY29udGVudHMgPSBhd2FpdCB2YXVsdC5jYWNoZWRSZWFkKHRlbXBsYXRlRmlsZSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IElGb2xkSW5mbyA9IHdpbmRvdy5hcHAuZm9sZE1hbmFnZXIubG9hZCh0ZW1wbGF0ZUZpbGUpO1xuICAgICAgICByZXR1cm4gW2NvbnRlbnRzLCBJRm9sZEluZm9dO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byByZWFkIHRoZSBkYWlseSBub3RlIHRlbXBsYXRlICcke3RlbXBsYXRlUGF0aH0nYCwgZXJyKTtcbiAgICAgICAgbmV3IG9ic2lkaWFuLk5vdGljZShcIkZhaWxlZCB0byByZWFkIHRoZSBkYWlseSBub3RlIHRlbXBsYXRlXCIpO1xuICAgICAgICByZXR1cm4gW1wiXCIsIG51bGxdO1xuICAgIH1cbn1cblxuLyoqXG4gKiBkYXRlVUlEIGlzIGEgd2F5IG9mIHdlZWtseSBpZGVudGlmeWluZyBkYWlseS93ZWVrbHkvbW9udGhseSBub3Rlcy5cbiAqIFRoZXkgYXJlIHByZWZpeGVkIHdpdGggdGhlIGdyYW51bGFyaXR5IHRvIGF2b2lkIGFtYmlndWl0eS5cbiAqL1xuZnVuY3Rpb24gZ2V0RGF0ZVVJRChkYXRlLCBncmFudWxhcml0eSA9IFwiZGF5XCIpIHtcbiAgICBjb25zdCB0cyA9IGRhdGUuY2xvbmUoKS5zdGFydE9mKGdyYW51bGFyaXR5KS5mb3JtYXQoKTtcbiAgICByZXR1cm4gYCR7Z3JhbnVsYXJpdHl9LSR7dHN9YDtcbn1cbmZ1bmN0aW9uIHJlbW92ZUVzY2FwZWRDaGFyYWN0ZXJzKGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXQucmVwbGFjZSgvXFxbW15cXF1dKlxcXS9nLCBcIlwiKTsgLy8gcmVtb3ZlIGV2ZXJ5dGhpbmcgd2l0aGluIGJyYWNrZXRzXG59XG4vKipcbiAqIFhYWDogV2hlbiBwYXJzaW5nIGRhdGVzIHRoYXQgY29udGFpbiBib3RoIHdlZWsgbnVtYmVycyBhbmQgbW9udGhzLFxuICogTW9tZW50IGNob3NlcyB0byBpZ25vcmUgdGhlIHdlZWsgbnVtYmVycy4gRm9yIHRoZSB3ZWVrIGRhdGVVSUQsIHdlXG4gKiB3YW50IHRoZSBvcHBvc2l0ZSBiZWhhdmlvci4gU3RyaXAgdGhlIE1NTSBmcm9tIHRoZSBmb3JtYXQgdG8gcGF0Y2guXG4gKi9cbmZ1bmN0aW9uIGlzRm9ybWF0QW1iaWd1b3VzKGZvcm1hdCwgZ3JhbnVsYXJpdHkpIHtcbiAgICBpZiAoZ3JhbnVsYXJpdHkgPT09IFwid2Vla1wiKSB7XG4gICAgICAgIGNvbnN0IGNsZWFuRm9ybWF0ID0gcmVtb3ZlRXNjYXBlZENoYXJhY3RlcnMoZm9ybWF0KTtcbiAgICAgICAgcmV0dXJuICgvd3sxLDJ9L2kudGVzdChjbGVhbkZvcm1hdCkgJiZcbiAgICAgICAgICAgICgvTXsxLDR9Ly50ZXN0KGNsZWFuRm9ybWF0KSB8fCAvRHsxLDR9Ly50ZXN0KGNsZWFuRm9ybWF0KSkpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBnZXREYXRlRnJvbUZpbGUoZmlsZSwgZ3JhbnVsYXJpdHkpIHtcbiAgICByZXR1cm4gZ2V0RGF0ZUZyb21GaWxlbmFtZShmaWxlLmJhc2VuYW1lLCBncmFudWxhcml0eSk7XG59XG5mdW5jdGlvbiBnZXREYXRlRnJvbVBhdGgocGF0aCwgZ3JhbnVsYXJpdHkpIHtcbiAgICByZXR1cm4gZ2V0RGF0ZUZyb21GaWxlbmFtZShiYXNlbmFtZShwYXRoKSwgZ3JhbnVsYXJpdHkpO1xufVxuZnVuY3Rpb24gZ2V0RGF0ZUZyb21GaWxlbmFtZShmaWxlbmFtZSwgZ3JhbnVsYXJpdHkpIHtcbiAgICBjb25zdCBnZXRTZXR0aW5ncyA9IHtcbiAgICAgICAgZGF5OiBnZXREYWlseU5vdGVTZXR0aW5ncyxcbiAgICAgICAgd2VlazogZ2V0V2Vla2x5Tm90ZVNldHRpbmdzLFxuICAgICAgICBtb250aDogZ2V0TW9udGhseU5vdGVTZXR0aW5ncyxcbiAgICAgICAgcXVhcnRlcjogZ2V0UXVhcnRlcmx5Tm90ZVNldHRpbmdzLFxuICAgICAgICB5ZWFyOiBnZXRZZWFybHlOb3RlU2V0dGluZ3MsXG4gICAgfTtcbiAgICBjb25zdCBmb3JtYXQgPSBnZXRTZXR0aW5nc1tncmFudWxhcml0eV0oKS5mb3JtYXQuc3BsaXQoXCIvXCIpLnBvcCgpO1xuICAgIGNvbnN0IG5vdGVEYXRlID0gd2luZG93Lm1vbWVudChmaWxlbmFtZSwgZm9ybWF0LCB0cnVlKTtcbiAgICBpZiAoIW5vdGVEYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGlzRm9ybWF0QW1iaWd1b3VzKGZvcm1hdCwgZ3JhbnVsYXJpdHkpKSB7XG4gICAgICAgIGlmIChncmFudWxhcml0eSA9PT0gXCJ3ZWVrXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuRm9ybWF0ID0gcmVtb3ZlRXNjYXBlZENoYXJhY3RlcnMoZm9ybWF0KTtcbiAgICAgICAgICAgIGlmICgvd3sxLDJ9L2kudGVzdChjbGVhbkZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93Lm1vbWVudChmaWxlbmFtZSwgXG4gICAgICAgICAgICAgICAgLy8gSWYgZm9ybWF0IGNvbnRhaW5zIHdlZWssIHJlbW92ZSBkYXkgJiBtb250aCBmb3JtYXR0aW5nXG4gICAgICAgICAgICAgICAgZm9ybWF0LnJlcGxhY2UoL017MSw0fS9nLCBcIlwiKS5yZXBsYWNlKC9EezEsNH0vZywgXCJcIiksIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm90ZURhdGU7XG59XG5cbmNsYXNzIERhaWx5Tm90ZXNGb2xkZXJNaXNzaW5nRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG59XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gbWltaWNzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGFpbHktbm90ZXMgcGx1Z2luXG4gKiBzbyBpdCB3aWxsIHJlcGxhY2Uge3tkYXRlfX0sIHt7dGl0bGV9fSwgYW5kIHt7dGltZX19IHdpdGggdGhlXG4gKiBmb3JtYXR0ZWQgdGltZXN0YW1wLlxuICpcbiAqIE5vdGU6IGl0IGhhcyBhbiBhZGRlZCBib251cyB0aGF0IGl0J3Mgbm90ICd0b2RheScgc3BlY2lmaWMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURhaWx5Tm90ZShkYXRlKSB7XG4gICAgY29uc3QgYXBwID0gd2luZG93LmFwcDtcbiAgICBjb25zdCB7IHZhdWx0IH0gPSBhcHA7XG4gICAgY29uc3QgbW9tZW50ID0gd2luZG93Lm1vbWVudDtcbiAgICBjb25zdCB7IHRlbXBsYXRlLCBmb3JtYXQsIGZvbGRlciB9ID0gZ2V0RGFpbHlOb3RlU2V0dGluZ3MoKTtcbiAgICBjb25zdCBbdGVtcGxhdGVDb250ZW50cywgSUZvbGRJbmZvXSA9IGF3YWl0IGdldFRlbXBsYXRlSW5mbyh0ZW1wbGF0ZSk7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBkYXRlLmZvcm1hdChmb3JtYXQpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gYXdhaXQgZ2V0Tm90ZVBhdGgoZm9sZGVyLCBmaWxlbmFtZSk7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY3JlYXRlZEZpbGUgPSBhd2FpdCB2YXVsdC5jcmVhdGUobm9ybWFsaXplZFBhdGgsIHRlbXBsYXRlQ29udGVudHNcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccypkYXRlXFxzKn19L2dpLCBmaWxlbmFtZSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyp0aW1lXFxzKn19L2dpLCBtb21lbnQoKS5mb3JtYXQoXCJISDptbVwiKSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyp0aXRsZVxccyp9fS9naSwgZmlsZW5hbWUpXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqKGRhdGV8dGltZSlcXHMqKChbKy1dXFxkKykoW3lxbXdkaHNdKSk/XFxzKig6Lis/KT99fS9naSwgKF8sIF90aW1lT3JEYXRlLCBjYWxjLCB0aW1lRGVsdGEsIHVuaXQsIG1vbWVudEZvcm1hdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gbW9tZW50KCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IGRhdGUuY2xvbmUoKS5zZXQoe1xuICAgICAgICAgICAgICAgIGhvdXI6IG5vdy5nZXQoXCJob3VyXCIpLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogbm93LmdldChcIm1pbnV0ZVwiKSxcbiAgICAgICAgICAgICAgICBzZWNvbmQ6IG5vdy5nZXQoXCJzZWNvbmRcIiksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChjYWxjKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudERhdGUuYWRkKHBhcnNlSW50KHRpbWVEZWx0YSwgMTApLCB1bml0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtb21lbnRGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudERhdGUuZm9ybWF0KG1vbWVudEZvcm1hdC5zdWJzdHJpbmcoMSkudHJpbSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50RGF0ZS5mb3JtYXQoZm9ybWF0KTtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyp5ZXN0ZXJkYXlcXHMqfX0vZ2ksIGRhdGUuY2xvbmUoKS5zdWJ0cmFjdCgxLCBcImRheVwiKS5mb3JtYXQoZm9ybWF0KSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyp0b21vcnJvd1xccyp9fS9naSwgZGF0ZS5jbG9uZSgpLmFkZCgxLCBcImRcIikuZm9ybWF0KGZvcm1hdCkpKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgYXBwLmZvbGRNYW5hZ2VyLnNhdmUoY3JlYXRlZEZpbGUsIElGb2xkSW5mbyk7XG4gICAgICAgIHJldHVybiBjcmVhdGVkRmlsZTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIGZpbGU6ICcke25vcm1hbGl6ZWRQYXRofSdgLCBlcnIpO1xuICAgICAgICBuZXcgb2JzaWRpYW4uTm90aWNlKFwiVW5hYmxlIHRvIGNyZWF0ZSBuZXcgZmlsZS5cIik7XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0RGFpbHlOb3RlKGRhdGUsIGRhaWx5Tm90ZXMpIHtcbiAgICByZXR1cm4gZGFpbHlOb3Rlc1tnZXREYXRlVUlEKGRhdGUsIFwiZGF5XCIpXSA/PyBudWxsO1xufVxuZnVuY3Rpb24gZ2V0QWxsRGFpbHlOb3RlcygpIHtcbiAgICAvKipcbiAgICAgKiBGaW5kIGFsbCBkYWlseSBub3RlcyBpbiB0aGUgZGFpbHkgbm90ZSBmb2xkZXJcbiAgICAgKi9cbiAgICBjb25zdCB7IHZhdWx0IH0gPSB3aW5kb3cuYXBwO1xuICAgIGNvbnN0IHsgZm9sZGVyIH0gPSBnZXREYWlseU5vdGVTZXR0aW5ncygpO1xuICAgIGNvbnN0IGRhaWx5Tm90ZXNGb2xkZXIgPSB2YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgob2JzaWRpYW4ubm9ybWFsaXplUGF0aChmb2xkZXIpKTtcbiAgICBpZiAoIWRhaWx5Tm90ZXNGb2xkZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IERhaWx5Tm90ZXNGb2xkZXJNaXNzaW5nRXJyb3IoXCJGYWlsZWQgdG8gZmluZCBkYWlseSBub3RlcyBmb2xkZXJcIik7XG4gICAgfVxuICAgIGNvbnN0IGRhaWx5Tm90ZXMgPSB7fTtcbiAgICBvYnNpZGlhbi5WYXVsdC5yZWN1cnNlQ2hpbGRyZW4oZGFpbHlOb3Rlc0ZvbGRlciwgKG5vdGUpID0+IHtcbiAgICAgICAgaWYgKG5vdGUgaW5zdGFuY2VvZiBvYnNpZGlhbi5URmlsZSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IGdldERhdGVGcm9tRmlsZShub3RlLCBcImRheVwiKTtcbiAgICAgICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IGdldERhdGVVSUQoZGF0ZSwgXCJkYXlcIik7XG4gICAgICAgICAgICAgICAgZGFpbHlOb3Rlc1tkYXRlU3RyaW5nXSA9IG5vdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGFpbHlOb3Rlcztcbn1cblxuY2xhc3MgV2Vla2x5Tm90ZXNGb2xkZXJNaXNzaW5nRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG59XG5mdW5jdGlvbiBnZXREYXlzT2ZXZWVrKCkge1xuICAgIGNvbnN0IHsgbW9tZW50IH0gPSB3aW5kb3c7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBsZXQgd2Vla1N0YXJ0ID0gbW9tZW50LmxvY2FsZURhdGEoKS5fd2Vlay5kb3c7XG4gICAgY29uc3QgZGF5c09mV2VlayA9IFtcbiAgICAgICAgXCJzdW5kYXlcIixcbiAgICAgICAgXCJtb25kYXlcIixcbiAgICAgICAgXCJ0dWVzZGF5XCIsXG4gICAgICAgIFwid2VkbmVzZGF5XCIsXG4gICAgICAgIFwidGh1cnNkYXlcIixcbiAgICAgICAgXCJmcmlkYXlcIixcbiAgICAgICAgXCJzYXR1cmRheVwiLFxuICAgIF07XG4gICAgd2hpbGUgKHdlZWtTdGFydCkge1xuICAgICAgICBkYXlzT2ZXZWVrLnB1c2goZGF5c09mV2Vlay5zaGlmdCgpKTtcbiAgICAgICAgd2Vla1N0YXJ0LS07XG4gICAgfVxuICAgIHJldHVybiBkYXlzT2ZXZWVrO1xufVxuZnVuY3Rpb24gZ2V0RGF5T2ZXZWVrTnVtZXJpY2FsVmFsdWUoZGF5T2ZXZWVrTmFtZSkge1xuICAgIHJldHVybiBnZXREYXlzT2ZXZWVrKCkuaW5kZXhPZihkYXlPZldlZWtOYW1lLnRvTG93ZXJDYXNlKCkpO1xufVxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlV2Vla2x5Tm90ZShkYXRlKSB7XG4gICAgY29uc3QgeyB2YXVsdCB9ID0gd2luZG93LmFwcDtcbiAgICBjb25zdCB7IHRlbXBsYXRlLCBmb3JtYXQsIGZvbGRlciB9ID0gZ2V0V2Vla2x5Tm90ZVNldHRpbmdzKCk7XG4gICAgY29uc3QgW3RlbXBsYXRlQ29udGVudHMsIElGb2xkSW5mb10gPSBhd2FpdCBnZXRUZW1wbGF0ZUluZm8odGVtcGxhdGUpO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gZGF0ZS5mb3JtYXQoZm9ybWF0KTtcbiAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IGF3YWl0IGdldE5vdGVQYXRoKGZvbGRlciwgZmlsZW5hbWUpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWRGaWxlID0gYXdhaXQgdmF1bHQuY3JlYXRlKG5vcm1hbGl6ZWRQYXRoLCB0ZW1wbGF0ZUNvbnRlbnRzXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqKGRhdGV8dGltZSlcXHMqKChbKy1dXFxkKykoW3lxbXdkaHNdKSk/XFxzKig6Lis/KT99fS9naSwgKF8sIF90aW1lT3JEYXRlLCBjYWxjLCB0aW1lRGVsdGEsIHVuaXQsIG1vbWVudEZvcm1hdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gd2luZG93Lm1vbWVudCgpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBkYXRlLmNsb25lKCkuc2V0KHtcbiAgICAgICAgICAgICAgICBob3VyOiBub3cuZ2V0KFwiaG91clwiKSxcbiAgICAgICAgICAgICAgICBtaW51dGU6IG5vdy5nZXQoXCJtaW51dGVcIiksXG4gICAgICAgICAgICAgICAgc2Vjb25kOiBub3cuZ2V0KFwic2Vjb25kXCIpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoY2FsYykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnREYXRlLmFkZChwYXJzZUludCh0aW1lRGVsdGEsIDEwKSwgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobW9tZW50Rm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnREYXRlLmZvcm1hdChtb21lbnRGb3JtYXQuc3Vic3RyaW5nKDEpLnRyaW0oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudERhdGUuZm9ybWF0KGZvcm1hdCk7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqdGl0bGVcXHMqfX0vZ2ksIGZpbGVuYW1lKVxuICAgICAgICAgICAgLnJlcGxhY2UoL3t7XFxzKnRpbWVcXHMqfX0vZ2ksIHdpbmRvdy5tb21lbnQoKS5mb3JtYXQoXCJISDptbVwiKSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyooc3VuZGF5fG1vbmRheXx0dWVzZGF5fHdlZG5lc2RheXx0aHVyc2RheXxmcmlkYXl8c2F0dXJkYXkpXFxzKjooLio/KX19L2dpLCAoXywgZGF5T2ZXZWVrLCBtb21lbnRGb3JtYXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRheSA9IGdldERheU9mV2Vla051bWVyaWNhbFZhbHVlKGRheU9mV2Vlayk7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS53ZWVrZGF5KGRheSkuZm9ybWF0KG1vbWVudEZvcm1hdC50cmltKCkpO1xuICAgICAgICB9KSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHdpbmRvdy5hcHAuZm9sZE1hbmFnZXIuc2F2ZShjcmVhdGVkRmlsZSwgSUZvbGRJbmZvKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZWRGaWxlO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgZmlsZTogJyR7bm9ybWFsaXplZFBhdGh9J2AsIGVycik7XG4gICAgICAgIG5ldyBvYnNpZGlhbi5Ob3RpY2UoXCJVbmFibGUgdG8gY3JlYXRlIG5ldyBmaWxlLlwiKTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRXZWVrbHlOb3RlKGRhdGUsIHdlZWtseU5vdGVzKSB7XG4gICAgcmV0dXJuIHdlZWtseU5vdGVzW2dldERhdGVVSUQoZGF0ZSwgXCJ3ZWVrXCIpXSA/PyBudWxsO1xufVxuZnVuY3Rpb24gZ2V0QWxsV2Vla2x5Tm90ZXMoKSB7XG4gICAgY29uc3Qgd2Vla2x5Tm90ZXMgPSB7fTtcbiAgICBpZiAoIWFwcEhhc1dlZWtseU5vdGVzUGx1Z2luTG9hZGVkKCkpIHtcbiAgICAgICAgcmV0dXJuIHdlZWtseU5vdGVzO1xuICAgIH1cbiAgICBjb25zdCB7IHZhdWx0IH0gPSB3aW5kb3cuYXBwO1xuICAgIGNvbnN0IHsgZm9sZGVyIH0gPSBnZXRXZWVrbHlOb3RlU2V0dGluZ3MoKTtcbiAgICBjb25zdCB3ZWVrbHlOb3Rlc0ZvbGRlciA9IHZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChvYnNpZGlhbi5ub3JtYWxpemVQYXRoKGZvbGRlcikpO1xuICAgIGlmICghd2Vla2x5Tm90ZXNGb2xkZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFdlZWtseU5vdGVzRm9sZGVyTWlzc2luZ0Vycm9yKFwiRmFpbGVkIHRvIGZpbmQgd2Vla2x5IG5vdGVzIGZvbGRlclwiKTtcbiAgICB9XG4gICAgb2JzaWRpYW4uVmF1bHQucmVjdXJzZUNoaWxkcmVuKHdlZWtseU5vdGVzRm9sZGVyLCAobm90ZSkgPT4ge1xuICAgICAgICBpZiAobm90ZSBpbnN0YW5jZW9mIG9ic2lkaWFuLlRGaWxlKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gZ2V0RGF0ZUZyb21GaWxlKG5vdGUsIFwid2Vla1wiKTtcbiAgICAgICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IGdldERhdGVVSUQoZGF0ZSwgXCJ3ZWVrXCIpO1xuICAgICAgICAgICAgICAgIHdlZWtseU5vdGVzW2RhdGVTdHJpbmddID0gbm90ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB3ZWVrbHlOb3Rlcztcbn1cblxuY2xhc3MgTW9udGhseU5vdGVzRm9sZGVyTWlzc2luZ0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xufVxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIG1pbWljcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRhaWx5LW5vdGVzIHBsdWdpblxuICogc28gaXQgd2lsbCByZXBsYWNlIHt7ZGF0ZX19LCB7e3RpdGxlfX0sIGFuZCB7e3RpbWV9fSB3aXRoIHRoZVxuICogZm9ybWF0dGVkIHRpbWVzdGFtcC5cbiAqXG4gKiBOb3RlOiBpdCBoYXMgYW4gYWRkZWQgYm9udXMgdGhhdCBpdCdzIG5vdCAndG9kYXknIHNwZWNpZmljLlxuICovXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVNb250aGx5Tm90ZShkYXRlKSB7XG4gICAgY29uc3QgeyB2YXVsdCB9ID0gd2luZG93LmFwcDtcbiAgICBjb25zdCB7IHRlbXBsYXRlLCBmb3JtYXQsIGZvbGRlciB9ID0gZ2V0TW9udGhseU5vdGVTZXR0aW5ncygpO1xuICAgIGNvbnN0IFt0ZW1wbGF0ZUNvbnRlbnRzLCBJRm9sZEluZm9dID0gYXdhaXQgZ2V0VGVtcGxhdGVJbmZvKHRlbXBsYXRlKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGRhdGUuZm9ybWF0KGZvcm1hdCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBhd2FpdCBnZXROb3RlUGF0aChmb2xkZXIsIGZpbGVuYW1lKTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBjcmVhdGVkRmlsZSA9IGF3YWl0IHZhdWx0LmNyZWF0ZShub3JtYWxpemVkUGF0aCwgdGVtcGxhdGVDb250ZW50c1xuICAgICAgICAgICAgLnJlcGxhY2UoL3t7XFxzKihkYXRlfHRpbWUpXFxzKigoWystXVxcZCspKFt5cW13ZGhzXSkpP1xccyooOi4rPyk/fX0vZ2ksIChfLCBfdGltZU9yRGF0ZSwgY2FsYywgdGltZURlbHRhLCB1bml0LCBtb21lbnRGb3JtYXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vdyA9IHdpbmRvdy5tb21lbnQoKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gZGF0ZS5jbG9uZSgpLnNldCh7XG4gICAgICAgICAgICAgICAgaG91cjogbm93LmdldChcImhvdXJcIiksXG4gICAgICAgICAgICAgICAgbWludXRlOiBub3cuZ2V0KFwibWludXRlXCIpLFxuICAgICAgICAgICAgICAgIHNlY29uZDogbm93LmdldChcInNlY29uZFwiKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGNhbGMpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50RGF0ZS5hZGQocGFyc2VJbnQodGltZURlbHRhLCAxMCksIHVuaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1vbWVudEZvcm1hdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50RGF0ZS5mb3JtYXQobW9tZW50Rm9ybWF0LnN1YnN0cmluZygxKS50cmltKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnREYXRlLmZvcm1hdChmb3JtYXQpO1xuICAgICAgICB9KVxuICAgICAgICAgICAgLnJlcGxhY2UoL3t7XFxzKmRhdGVcXHMqfX0vZ2ksIGZpbGVuYW1lKVxuICAgICAgICAgICAgLnJlcGxhY2UoL3t7XFxzKnRpbWVcXHMqfX0vZ2ksIHdpbmRvdy5tb21lbnQoKS5mb3JtYXQoXCJISDptbVwiKSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyp0aXRsZVxccyp9fS9naSwgZmlsZW5hbWUpKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgd2luZG93LmFwcC5mb2xkTWFuYWdlci5zYXZlKGNyZWF0ZWRGaWxlLCBJRm9sZEluZm8pO1xuICAgICAgICByZXR1cm4gY3JlYXRlZEZpbGU7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGNyZWF0ZSBmaWxlOiAnJHtub3JtYWxpemVkUGF0aH0nYCwgZXJyKTtcbiAgICAgICAgbmV3IG9ic2lkaWFuLk5vdGljZShcIlVuYWJsZSB0byBjcmVhdGUgbmV3IGZpbGUuXCIpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldE1vbnRobHlOb3RlKGRhdGUsIG1vbnRobHlOb3Rlcykge1xuICAgIHJldHVybiBtb250aGx5Tm90ZXNbZ2V0RGF0ZVVJRChkYXRlLCBcIm1vbnRoXCIpXSA/PyBudWxsO1xufVxuZnVuY3Rpb24gZ2V0QWxsTW9udGhseU5vdGVzKCkge1xuICAgIGNvbnN0IG1vbnRobHlOb3RlcyA9IHt9O1xuICAgIGlmICghYXBwSGFzTW9udGhseU5vdGVzUGx1Z2luTG9hZGVkKCkpIHtcbiAgICAgICAgcmV0dXJuIG1vbnRobHlOb3RlcztcbiAgICB9XG4gICAgY29uc3QgeyB2YXVsdCB9ID0gd2luZG93LmFwcDtcbiAgICBjb25zdCB7IGZvbGRlciB9ID0gZ2V0TW9udGhseU5vdGVTZXR0aW5ncygpO1xuICAgIGNvbnN0IG1vbnRobHlOb3Rlc0ZvbGRlciA9IHZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChvYnNpZGlhbi5ub3JtYWxpemVQYXRoKGZvbGRlcikpO1xuICAgIGlmICghbW9udGhseU5vdGVzRm9sZGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBNb250aGx5Tm90ZXNGb2xkZXJNaXNzaW5nRXJyb3IoXCJGYWlsZWQgdG8gZmluZCBtb250aGx5IG5vdGVzIGZvbGRlclwiKTtcbiAgICB9XG4gICAgb2JzaWRpYW4uVmF1bHQucmVjdXJzZUNoaWxkcmVuKG1vbnRobHlOb3Rlc0ZvbGRlciwgKG5vdGUpID0+IHtcbiAgICAgICAgaWYgKG5vdGUgaW5zdGFuY2VvZiBvYnNpZGlhbi5URmlsZSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IGdldERhdGVGcm9tRmlsZShub3RlLCBcIm1vbnRoXCIpO1xuICAgICAgICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlU3RyaW5nID0gZ2V0RGF0ZVVJRChkYXRlLCBcIm1vbnRoXCIpO1xuICAgICAgICAgICAgICAgIG1vbnRobHlOb3Rlc1tkYXRlU3RyaW5nXSA9IG5vdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbW9udGhseU5vdGVzO1xufVxuXG5jbGFzcyBRdWFydGVybHlOb3Rlc0ZvbGRlck1pc3NpbmdFcnJvciBleHRlbmRzIEVycm9yIHtcbn1cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBtaW1pY3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBkYWlseS1ub3RlcyBwbHVnaW5cbiAqIHNvIGl0IHdpbGwgcmVwbGFjZSB7e2RhdGV9fSwge3t0aXRsZX19LCBhbmQge3t0aW1lfX0gd2l0aCB0aGVcbiAqIGZvcm1hdHRlZCB0aW1lc3RhbXAuXG4gKlxuICogTm90ZTogaXQgaGFzIGFuIGFkZGVkIGJvbnVzIHRoYXQgaXQncyBub3QgJ3RvZGF5JyBzcGVjaWZpYy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUXVhcnRlcmx5Tm90ZShkYXRlKSB7XG4gICAgY29uc3QgeyB2YXVsdCB9ID0gd2luZG93LmFwcDtcbiAgICBjb25zdCB7IHRlbXBsYXRlLCBmb3JtYXQsIGZvbGRlciB9ID0gZ2V0UXVhcnRlcmx5Tm90ZVNldHRpbmdzKCk7XG4gICAgY29uc3QgW3RlbXBsYXRlQ29udGVudHMsIElGb2xkSW5mb10gPSBhd2FpdCBnZXRUZW1wbGF0ZUluZm8odGVtcGxhdGUpO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gZGF0ZS5mb3JtYXQoZm9ybWF0KTtcbiAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IGF3YWl0IGdldE5vdGVQYXRoKGZvbGRlciwgZmlsZW5hbWUpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWRGaWxlID0gYXdhaXQgdmF1bHQuY3JlYXRlKG5vcm1hbGl6ZWRQYXRoLCB0ZW1wbGF0ZUNvbnRlbnRzXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqKGRhdGV8dGltZSlcXHMqKChbKy1dXFxkKykoW3lxbXdkaHNdKSk/XFxzKig6Lis/KT99fS9naSwgKF8sIF90aW1lT3JEYXRlLCBjYWxjLCB0aW1lRGVsdGEsIHVuaXQsIG1vbWVudEZvcm1hdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gd2luZG93Lm1vbWVudCgpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBkYXRlLmNsb25lKCkuc2V0KHtcbiAgICAgICAgICAgICAgICBob3VyOiBub3cuZ2V0KFwiaG91clwiKSxcbiAgICAgICAgICAgICAgICBtaW51dGU6IG5vdy5nZXQoXCJtaW51dGVcIiksXG4gICAgICAgICAgICAgICAgc2Vjb25kOiBub3cuZ2V0KFwic2Vjb25kXCIpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoY2FsYykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnREYXRlLmFkZChwYXJzZUludCh0aW1lRGVsdGEsIDEwKSwgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobW9tZW50Rm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnREYXRlLmZvcm1hdChtb21lbnRGb3JtYXQuc3Vic3RyaW5nKDEpLnRyaW0oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudERhdGUuZm9ybWF0KGZvcm1hdCk7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqZGF0ZVxccyp9fS9naSwgZmlsZW5hbWUpXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqdGltZVxccyp9fS9naSwgd2luZG93Lm1vbWVudCgpLmZvcm1hdChcIkhIOm1tXCIpKVxuICAgICAgICAgICAgLnJlcGxhY2UoL3t7XFxzKnRpdGxlXFxzKn19L2dpLCBmaWxlbmFtZSkpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICB3aW5kb3cuYXBwLmZvbGRNYW5hZ2VyLnNhdmUoY3JlYXRlZEZpbGUsIElGb2xkSW5mbyk7XG4gICAgICAgIHJldHVybiBjcmVhdGVkRmlsZTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIGZpbGU6ICcke25vcm1hbGl6ZWRQYXRofSdgLCBlcnIpO1xuICAgICAgICBuZXcgb2JzaWRpYW4uTm90aWNlKFwiVW5hYmxlIHRvIGNyZWF0ZSBuZXcgZmlsZS5cIik7XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0UXVhcnRlcmx5Tm90ZShkYXRlLCBxdWFydGVybHkpIHtcbiAgICByZXR1cm4gcXVhcnRlcmx5W2dldERhdGVVSUQoZGF0ZSwgXCJxdWFydGVyXCIpXSA/PyBudWxsO1xufVxuZnVuY3Rpb24gZ2V0QWxsUXVhcnRlcmx5Tm90ZXMoKSB7XG4gICAgY29uc3QgcXVhcnRlcmx5ID0ge307XG4gICAgaWYgKCFhcHBIYXNRdWFydGVybHlOb3Rlc1BsdWdpbkxvYWRlZCgpKSB7XG4gICAgICAgIHJldHVybiBxdWFydGVybHk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmF1bHQgfSA9IHdpbmRvdy5hcHA7XG4gICAgY29uc3QgeyBmb2xkZXIgfSA9IGdldFF1YXJ0ZXJseU5vdGVTZXR0aW5ncygpO1xuICAgIGNvbnN0IHF1YXJ0ZXJseUZvbGRlciA9IHZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChvYnNpZGlhbi5ub3JtYWxpemVQYXRoKGZvbGRlcikpO1xuICAgIGlmICghcXVhcnRlcmx5Rm9sZGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBRdWFydGVybHlOb3Rlc0ZvbGRlck1pc3NpbmdFcnJvcihcIkZhaWxlZCB0byBmaW5kIHF1YXJ0ZXJseSBub3RlcyBmb2xkZXJcIik7XG4gICAgfVxuICAgIG9ic2lkaWFuLlZhdWx0LnJlY3Vyc2VDaGlsZHJlbihxdWFydGVybHlGb2xkZXIsIChub3RlKSA9PiB7XG4gICAgICAgIGlmIChub3RlIGluc3RhbmNlb2Ygb2JzaWRpYW4uVEZpbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBnZXREYXRlRnJvbUZpbGUobm90ZSwgXCJxdWFydGVyXCIpO1xuICAgICAgICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlU3RyaW5nID0gZ2V0RGF0ZVVJRChkYXRlLCBcInF1YXJ0ZXJcIik7XG4gICAgICAgICAgICAgICAgcXVhcnRlcmx5W2RhdGVTdHJpbmddID0gbm90ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBxdWFydGVybHk7XG59XG5cbmNsYXNzIFllYXJseU5vdGVzRm9sZGVyTWlzc2luZ0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xufVxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIG1pbWljcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRhaWx5LW5vdGVzIHBsdWdpblxuICogc28gaXQgd2lsbCByZXBsYWNlIHt7ZGF0ZX19LCB7e3RpdGxlfX0sIGFuZCB7e3RpbWV9fSB3aXRoIHRoZVxuICogZm9ybWF0dGVkIHRpbWVzdGFtcC5cbiAqXG4gKiBOb3RlOiBpdCBoYXMgYW4gYWRkZWQgYm9udXMgdGhhdCBpdCdzIG5vdCAndG9kYXknIHNwZWNpZmljLlxuICovXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVZZWFybHlOb3RlKGRhdGUpIHtcbiAgICBjb25zdCB7IHZhdWx0IH0gPSB3aW5kb3cuYXBwO1xuICAgIGNvbnN0IHsgdGVtcGxhdGUsIGZvcm1hdCwgZm9sZGVyIH0gPSBnZXRZZWFybHlOb3RlU2V0dGluZ3MoKTtcbiAgICBjb25zdCBbdGVtcGxhdGVDb250ZW50cywgSUZvbGRJbmZvXSA9IGF3YWl0IGdldFRlbXBsYXRlSW5mbyh0ZW1wbGF0ZSk7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBkYXRlLmZvcm1hdChmb3JtYXQpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gYXdhaXQgZ2V0Tm90ZVBhdGgoZm9sZGVyLCBmaWxlbmFtZSk7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY3JlYXRlZEZpbGUgPSBhd2FpdCB2YXVsdC5jcmVhdGUobm9ybWFsaXplZFBhdGgsIHRlbXBsYXRlQ29udGVudHNcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyooZGF0ZXx0aW1lKVxccyooKFsrLV1cXGQrKShbeXFtd2Roc10pKT9cXHMqKDouKz8pP319L2dpLCAoXywgX3RpbWVPckRhdGUsIGNhbGMsIHRpbWVEZWx0YSwgdW5pdCwgbW9tZW50Rm9ybWF0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBub3cgPSB3aW5kb3cubW9tZW50KCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IGRhdGUuY2xvbmUoKS5zZXQoe1xuICAgICAgICAgICAgICAgIGhvdXI6IG5vdy5nZXQoXCJob3VyXCIpLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogbm93LmdldChcIm1pbnV0ZVwiKSxcbiAgICAgICAgICAgICAgICBzZWNvbmQ6IG5vdy5nZXQoXCJzZWNvbmRcIiksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChjYWxjKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudERhdGUuYWRkKHBhcnNlSW50KHRpbWVEZWx0YSwgMTApLCB1bml0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtb21lbnRGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudERhdGUuZm9ybWF0KG1vbWVudEZvcm1hdC5zdWJzdHJpbmcoMSkudHJpbSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50RGF0ZS5mb3JtYXQoZm9ybWF0KTtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccypkYXRlXFxzKn19L2dpLCBmaWxlbmFtZSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyp0aW1lXFxzKn19L2dpLCB3aW5kb3cubW9tZW50KCkuZm9ybWF0KFwiSEg6bW1cIikpXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqdGl0bGVcXHMqfX0vZ2ksIGZpbGVuYW1lKSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHdpbmRvdy5hcHAuZm9sZE1hbmFnZXIuc2F2ZShjcmVhdGVkRmlsZSwgSUZvbGRJbmZvKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZWRGaWxlO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgZmlsZTogJyR7bm9ybWFsaXplZFBhdGh9J2AsIGVycik7XG4gICAgICAgIG5ldyBvYnNpZGlhbi5Ob3RpY2UoXCJVbmFibGUgdG8gY3JlYXRlIG5ldyBmaWxlLlwiKTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRZZWFybHlOb3RlKGRhdGUsIHllYXJseU5vdGVzKSB7XG4gICAgcmV0dXJuIHllYXJseU5vdGVzW2dldERhdGVVSUQoZGF0ZSwgXCJ5ZWFyXCIpXSA/PyBudWxsO1xufVxuZnVuY3Rpb24gZ2V0QWxsWWVhcmx5Tm90ZXMoKSB7XG4gICAgY29uc3QgeWVhcmx5Tm90ZXMgPSB7fTtcbiAgICBpZiAoIWFwcEhhc1llYXJseU5vdGVzUGx1Z2luTG9hZGVkKCkpIHtcbiAgICAgICAgcmV0dXJuIHllYXJseU5vdGVzO1xuICAgIH1cbiAgICBjb25zdCB7IHZhdWx0IH0gPSB3aW5kb3cuYXBwO1xuICAgIGNvbnN0IHsgZm9sZGVyIH0gPSBnZXRZZWFybHlOb3RlU2V0dGluZ3MoKTtcbiAgICBjb25zdCB5ZWFybHlOb3Rlc0ZvbGRlciA9IHZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChvYnNpZGlhbi5ub3JtYWxpemVQYXRoKGZvbGRlcikpO1xuICAgIGlmICgheWVhcmx5Tm90ZXNGb2xkZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFllYXJseU5vdGVzRm9sZGVyTWlzc2luZ0Vycm9yKFwiRmFpbGVkIHRvIGZpbmQgeWVhcmx5IG5vdGVzIGZvbGRlclwiKTtcbiAgICB9XG4gICAgb2JzaWRpYW4uVmF1bHQucmVjdXJzZUNoaWxkcmVuKHllYXJseU5vdGVzRm9sZGVyLCAobm90ZSkgPT4ge1xuICAgICAgICBpZiAobm90ZSBpbnN0YW5jZW9mIG9ic2lkaWFuLlRGaWxlKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gZ2V0RGF0ZUZyb21GaWxlKG5vdGUsIFwieWVhclwiKTtcbiAgICAgICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IGdldERhdGVVSUQoZGF0ZSwgXCJ5ZWFyXCIpO1xuICAgICAgICAgICAgICAgIHllYXJseU5vdGVzW2RhdGVTdHJpbmddID0gbm90ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB5ZWFybHlOb3Rlcztcbn1cblxuZnVuY3Rpb24gYXBwSGFzRGFpbHlOb3Rlc1BsdWdpbkxvYWRlZCgpIHtcbiAgICBjb25zdCB7IGFwcCB9ID0gd2luZG93O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY29uc3QgZGFpbHlOb3Rlc1BsdWdpbiA9IGFwcC5pbnRlcm5hbFBsdWdpbnMucGx1Z2luc1tcImRhaWx5LW5vdGVzXCJdO1xuICAgIGlmIChkYWlseU5vdGVzUGx1Z2luICYmIGRhaWx5Tm90ZXNQbHVnaW4uZW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwZXJpb2RpY05vdGVzID0gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKFwicGVyaW9kaWMtbm90ZXNcIik7XG4gICAgcmV0dXJuIHBlcmlvZGljTm90ZXMgJiYgcGVyaW9kaWNOb3Rlcy5zZXR0aW5ncz8uZGFpbHk/LmVuYWJsZWQ7XG59XG4vKipcbiAqIFhYWDogXCJXZWVrbHkgTm90ZXNcIiBsaXZlIGluIGVpdGhlciB0aGUgQ2FsZW5kYXIgcGx1Z2luIG9yIHRoZSBwZXJpb2RpYy1ub3RlcyBwbHVnaW4uXG4gKiBDaGVjayBib3RoIHVudGlsIHRoZSB3ZWVrbHkgbm90ZXMgZmVhdHVyZSBpcyByZW1vdmVkIGZyb20gdGhlIENhbGVuZGFyIHBsdWdpbi5cbiAqL1xuZnVuY3Rpb24gYXBwSGFzV2Vla2x5Tm90ZXNQbHVnaW5Mb2FkZWQoKSB7XG4gICAgY29uc3QgeyBhcHAgfSA9IHdpbmRvdztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGlmIChhcHAucGx1Z2lucy5nZXRQbHVnaW4oXCJjYWxlbmRhclwiKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwZXJpb2RpY05vdGVzID0gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKFwicGVyaW9kaWMtbm90ZXNcIik7XG4gICAgcmV0dXJuIHBlcmlvZGljTm90ZXMgJiYgcGVyaW9kaWNOb3Rlcy5zZXR0aW5ncz8ud2Vla2x5Py5lbmFibGVkO1xufVxuZnVuY3Rpb24gYXBwSGFzTW9udGhseU5vdGVzUGx1Z2luTG9hZGVkKCkge1xuICAgIGNvbnN0IHsgYXBwIH0gPSB3aW5kb3c7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwZXJpb2RpY05vdGVzID0gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKFwicGVyaW9kaWMtbm90ZXNcIik7XG4gICAgcmV0dXJuIHBlcmlvZGljTm90ZXMgJiYgcGVyaW9kaWNOb3Rlcy5zZXR0aW5ncz8ubW9udGhseT8uZW5hYmxlZDtcbn1cbmZ1bmN0aW9uIGFwcEhhc1F1YXJ0ZXJseU5vdGVzUGx1Z2luTG9hZGVkKCkge1xuICAgIGNvbnN0IHsgYXBwIH0gPSB3aW5kb3c7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwZXJpb2RpY05vdGVzID0gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKFwicGVyaW9kaWMtbm90ZXNcIik7XG4gICAgcmV0dXJuIHBlcmlvZGljTm90ZXMgJiYgcGVyaW9kaWNOb3Rlcy5zZXR0aW5ncz8ucXVhcnRlcmx5Py5lbmFibGVkO1xufVxuZnVuY3Rpb24gYXBwSGFzWWVhcmx5Tm90ZXNQbHVnaW5Mb2FkZWQoKSB7XG4gICAgY29uc3QgeyBhcHAgfSA9IHdpbmRvdztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHBlcmlvZGljTm90ZXMgPSBhcHAucGx1Z2lucy5nZXRQbHVnaW4oXCJwZXJpb2RpYy1ub3Rlc1wiKTtcbiAgICByZXR1cm4gcGVyaW9kaWNOb3RlcyAmJiBwZXJpb2RpY05vdGVzLnNldHRpbmdzPy55ZWFybHk/LmVuYWJsZWQ7XG59XG5mdW5jdGlvbiBnZXRQZXJpb2RpY05vdGVTZXR0aW5ncyhncmFudWxhcml0eSkge1xuICAgIGNvbnN0IGdldFNldHRpbmdzID0ge1xuICAgICAgICBkYXk6IGdldERhaWx5Tm90ZVNldHRpbmdzLFxuICAgICAgICB3ZWVrOiBnZXRXZWVrbHlOb3RlU2V0dGluZ3MsXG4gICAgICAgIG1vbnRoOiBnZXRNb250aGx5Tm90ZVNldHRpbmdzLFxuICAgICAgICBxdWFydGVyOiBnZXRRdWFydGVybHlOb3RlU2V0dGluZ3MsXG4gICAgICAgIHllYXI6IGdldFllYXJseU5vdGVTZXR0aW5ncyxcbiAgICB9W2dyYW51bGFyaXR5XTtcbiAgICByZXR1cm4gZ2V0U2V0dGluZ3MoKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVBlcmlvZGljTm90ZShncmFudWxhcml0eSwgZGF0ZSkge1xuICAgIGNvbnN0IGNyZWF0ZUZuID0ge1xuICAgICAgICBkYXk6IGNyZWF0ZURhaWx5Tm90ZSxcbiAgICAgICAgbW9udGg6IGNyZWF0ZU1vbnRobHlOb3RlLFxuICAgICAgICB3ZWVrOiBjcmVhdGVXZWVrbHlOb3RlLFxuICAgIH07XG4gICAgcmV0dXJuIGNyZWF0ZUZuW2dyYW51bGFyaXR5XShkYXRlKTtcbn1cblxuZXhwb3J0cy5ERUZBVUxUX0RBSUxZX05PVEVfRk9STUFUID0gREVGQVVMVF9EQUlMWV9OT1RFX0ZPUk1BVDtcbmV4cG9ydHMuREVGQVVMVF9NT05USExZX05PVEVfRk9STUFUID0gREVGQVVMVF9NT05USExZX05PVEVfRk9STUFUO1xuZXhwb3J0cy5ERUZBVUxUX1FVQVJURVJMWV9OT1RFX0ZPUk1BVCA9IERFRkFVTFRfUVVBUlRFUkxZX05PVEVfRk9STUFUO1xuZXhwb3J0cy5ERUZBVUxUX1dFRUtMWV9OT1RFX0ZPUk1BVCA9IERFRkFVTFRfV0VFS0xZX05PVEVfRk9STUFUO1xuZXhwb3J0cy5ERUZBVUxUX1lFQVJMWV9OT1RFX0ZPUk1BVCA9IERFRkFVTFRfWUVBUkxZX05PVEVfRk9STUFUO1xuZXhwb3J0cy5hcHBIYXNEYWlseU5vdGVzUGx1Z2luTG9hZGVkID0gYXBwSGFzRGFpbHlOb3Rlc1BsdWdpbkxvYWRlZDtcbmV4cG9ydHMuYXBwSGFzTW9udGhseU5vdGVzUGx1Z2luTG9hZGVkID0gYXBwSGFzTW9udGhseU5vdGVzUGx1Z2luTG9hZGVkO1xuZXhwb3J0cy5hcHBIYXNRdWFydGVybHlOb3Rlc1BsdWdpbkxvYWRlZCA9IGFwcEhhc1F1YXJ0ZXJseU5vdGVzUGx1Z2luTG9hZGVkO1xuZXhwb3J0cy5hcHBIYXNXZWVrbHlOb3Rlc1BsdWdpbkxvYWRlZCA9IGFwcEhhc1dlZWtseU5vdGVzUGx1Z2luTG9hZGVkO1xuZXhwb3J0cy5hcHBIYXNZZWFybHlOb3Rlc1BsdWdpbkxvYWRlZCA9IGFwcEhhc1llYXJseU5vdGVzUGx1Z2luTG9hZGVkO1xuZXhwb3J0cy5jcmVhdGVEYWlseU5vdGUgPSBjcmVhdGVEYWlseU5vdGU7XG5leHBvcnRzLmNyZWF0ZU1vbnRobHlOb3RlID0gY3JlYXRlTW9udGhseU5vdGU7XG5leHBvcnRzLmNyZWF0ZVBlcmlvZGljTm90ZSA9IGNyZWF0ZVBlcmlvZGljTm90ZTtcbmV4cG9ydHMuY3JlYXRlUXVhcnRlcmx5Tm90ZSA9IGNyZWF0ZVF1YXJ0ZXJseU5vdGU7XG5leHBvcnRzLmNyZWF0ZVdlZWtseU5vdGUgPSBjcmVhdGVXZWVrbHlOb3RlO1xuZXhwb3J0cy5jcmVhdGVZZWFybHlOb3RlID0gY3JlYXRlWWVhcmx5Tm90ZTtcbmV4cG9ydHMuZ2V0QWxsRGFpbHlOb3RlcyA9IGdldEFsbERhaWx5Tm90ZXM7XG5leHBvcnRzLmdldEFsbE1vbnRobHlOb3RlcyA9IGdldEFsbE1vbnRobHlOb3RlcztcbmV4cG9ydHMuZ2V0QWxsUXVhcnRlcmx5Tm90ZXMgPSBnZXRBbGxRdWFydGVybHlOb3RlcztcbmV4cG9ydHMuZ2V0QWxsV2Vla2x5Tm90ZXMgPSBnZXRBbGxXZWVrbHlOb3RlcztcbmV4cG9ydHMuZ2V0QWxsWWVhcmx5Tm90ZXMgPSBnZXRBbGxZZWFybHlOb3RlcztcbmV4cG9ydHMuZ2V0RGFpbHlOb3RlID0gZ2V0RGFpbHlOb3RlO1xuZXhwb3J0cy5nZXREYWlseU5vdGVTZXR0aW5ncyA9IGdldERhaWx5Tm90ZVNldHRpbmdzO1xuZXhwb3J0cy5nZXREYXRlRnJvbUZpbGUgPSBnZXREYXRlRnJvbUZpbGU7XG5leHBvcnRzLmdldERhdGVGcm9tUGF0aCA9IGdldERhdGVGcm9tUGF0aDtcbmV4cG9ydHMuZ2V0RGF0ZVVJRCA9IGdldERhdGVVSUQ7XG5leHBvcnRzLmdldE1vbnRobHlOb3RlID0gZ2V0TW9udGhseU5vdGU7XG5leHBvcnRzLmdldE1vbnRobHlOb3RlU2V0dGluZ3MgPSBnZXRNb250aGx5Tm90ZVNldHRpbmdzO1xuZXhwb3J0cy5nZXRQZXJpb2RpY05vdGVTZXR0aW5ncyA9IGdldFBlcmlvZGljTm90ZVNldHRpbmdzO1xuZXhwb3J0cy5nZXRRdWFydGVybHlOb3RlID0gZ2V0UXVhcnRlcmx5Tm90ZTtcbmV4cG9ydHMuZ2V0UXVhcnRlcmx5Tm90ZVNldHRpbmdzID0gZ2V0UXVhcnRlcmx5Tm90ZVNldHRpbmdzO1xuZXhwb3J0cy5nZXRUZW1wbGF0ZUluZm8gPSBnZXRUZW1wbGF0ZUluZm87XG5leHBvcnRzLmdldFdlZWtseU5vdGUgPSBnZXRXZWVrbHlOb3RlO1xuZXhwb3J0cy5nZXRXZWVrbHlOb3RlU2V0dGluZ3MgPSBnZXRXZWVrbHlOb3RlU2V0dGluZ3M7XG5leHBvcnRzLmdldFllYXJseU5vdGUgPSBnZXRZZWFybHlOb3RlO1xuZXhwb3J0cy5nZXRZZWFybHlOb3RlU2V0dGluZ3MgPSBnZXRZZWFybHlOb3RlU2V0dGluZ3M7XG4iLCIvLyBVbmlxdWUgSUQgY3JlYXRpb24gcmVxdWlyZXMgYSBoaWdoIHF1YWxpdHkgcmFuZG9tICMgZ2VuZXJhdG9yLiBJbiB0aGUgYnJvd3NlciB3ZSB0aGVyZWZvcmVcbi8vIHJlcXVpcmUgdGhlIGNyeXB0byBBUEkgYW5kIGRvIG5vdCBzdXBwb3J0IGJ1aWx0LWluIGZhbGxiYWNrIHRvIGxvd2VyIHF1YWxpdHkgcmFuZG9tIG51bWJlclxuLy8gZ2VuZXJhdG9ycyAobGlrZSBNYXRoLnJhbmRvbSgpKS5cbnZhciBnZXRSYW5kb21WYWx1ZXM7XG52YXIgcm5kczggPSBuZXcgVWludDhBcnJheSgxNik7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBybmcoKSB7XG4gIC8vIGxhenkgbG9hZCBzbyB0aGF0IGVudmlyb25tZW50cyB0aGF0IG5lZWQgdG8gcG9seWZpbGwgaGF2ZSBhIGNoYW5jZSB0byBkbyBzb1xuICBpZiAoIWdldFJhbmRvbVZhbHVlcykge1xuICAgIC8vIGdldFJhbmRvbVZhbHVlcyBuZWVkcyB0byBiZSBpbnZva2VkIGluIGEgY29udGV4dCB3aGVyZSBcInRoaXNcIiBpcyBhIENyeXB0byBpbXBsZW1lbnRhdGlvbi4gQWxzbyxcbiAgICAvLyBmaW5kIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBjcnlwdG8gKG1zQ3J5cHRvKSBvbiBJRTExLlxuICAgIGdldFJhbmRvbVZhbHVlcyA9IHR5cGVvZiBjcnlwdG8gIT09ICd1bmRlZmluZWQnICYmIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKGNyeXB0bykgfHwgdHlwZW9mIG1zQ3J5cHRvICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzID09PSAnZnVuY3Rpb24nICYmIG1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKG1zQ3J5cHRvKTtcblxuICAgIGlmICghZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoKSBub3Qgc3VwcG9ydGVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkI2dldHJhbmRvbXZhbHVlcy1ub3Qtc3VwcG9ydGVkJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGdldFJhbmRvbVZhbHVlcyhybmRzOCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgL14oPzpbMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMS01XVswLTlhLWZdezN9LVs4OWFiXVswLTlhLWZdezN9LVswLTlhLWZdezEyfXwwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDApJC9pOyIsImltcG9ydCBSRUdFWCBmcm9tICcuL3JlZ2V4LmpzJztcblxuZnVuY3Rpb24gdmFsaWRhdGUodXVpZCkge1xuICByZXR1cm4gdHlwZW9mIHV1aWQgPT09ICdzdHJpbmcnICYmIFJFR0VYLnRlc3QodXVpZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHZhbGlkYXRlOyIsImltcG9ydCB2YWxpZGF0ZSBmcm9tICcuL3ZhbGlkYXRlLmpzJztcbi8qKlxuICogQ29udmVydCBhcnJheSBvZiAxNiBieXRlIHZhbHVlcyB0byBVVUlEIHN0cmluZyBmb3JtYXQgb2YgdGhlIGZvcm06XG4gKiBYWFhYWFhYWC1YWFhYLVhYWFgtWFhYWC1YWFhYWFhYWFhYWFhcbiAqL1xuXG52YXIgYnl0ZVRvSGV4ID0gW107XG5cbmZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgYnl0ZVRvSGV4LnB1c2goKGkgKyAweDEwMCkudG9TdHJpbmcoMTYpLnN1YnN0cigxKSk7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeShhcnIpIHtcbiAgdmFyIG9mZnNldCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgLy8gTm90ZTogQmUgY2FyZWZ1bCBlZGl0aW5nIHRoaXMgY29kZSEgIEl0J3MgYmVlbiB0dW5lZCBmb3IgcGVyZm9ybWFuY2VcbiAgLy8gYW5kIHdvcmtzIGluIHdheXMgeW91IG1heSBub3QgZXhwZWN0LiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkL3B1bGwvNDM0XG4gIHZhciB1dWlkID0gKGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDJdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgM11dICsgJy0nICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA0XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDVdXSArICctJyArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNl1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA3XV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDhdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgOV1dICsgJy0nICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxMF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxMV1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxMl1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxM11dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxNF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxNV1dKS50b0xvd2VyQ2FzZSgpOyAvLyBDb25zaXN0ZW5jeSBjaGVjayBmb3IgdmFsaWQgVVVJRC4gIElmIHRoaXMgdGhyb3dzLCBpdCdzIGxpa2VseSBkdWUgdG8gb25lXG4gIC8vIG9mIHRoZSBmb2xsb3dpbmc6XG4gIC8vIC0gT25lIG9yIG1vcmUgaW5wdXQgYXJyYXkgdmFsdWVzIGRvbid0IG1hcCB0byBhIGhleCBvY3RldCAobGVhZGluZyB0b1xuICAvLyBcInVuZGVmaW5lZFwiIGluIHRoZSB1dWlkKVxuICAvLyAtIEludmFsaWQgaW5wdXQgdmFsdWVzIGZvciB0aGUgUkZDIGB2ZXJzaW9uYCBvciBgdmFyaWFudGAgZmllbGRzXG5cbiAgaWYgKCF2YWxpZGF0ZSh1dWlkKSkge1xuICAgIHRocm93IFR5cGVFcnJvcignU3RyaW5naWZpZWQgVVVJRCBpcyBpbnZhbGlkJyk7XG4gIH1cblxuICByZXR1cm4gdXVpZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3RyaW5naWZ5OyIsImltcG9ydCBybmcgZnJvbSAnLi9ybmcuanMnO1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeS5qcyc7XG5cbmZ1bmN0aW9uIHY0KG9wdGlvbnMsIGJ1Ziwgb2Zmc2V0KSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgcm5kcyA9IG9wdGlvbnMucmFuZG9tIHx8IChvcHRpb25zLnJuZyB8fCBybmcpKCk7IC8vIFBlciA0LjQsIHNldCBiaXRzIGZvciB2ZXJzaW9uIGFuZCBgY2xvY2tfc2VxX2hpX2FuZF9yZXNlcnZlZGBcblxuICBybmRzWzZdID0gcm5kc1s2XSAmIDB4MGYgfCAweDQwO1xuICBybmRzWzhdID0gcm5kc1s4XSAmIDB4M2YgfCAweDgwOyAvLyBDb3B5IGJ5dGVzIHRvIGJ1ZmZlciwgaWYgcHJvdmlkZWRcblxuICBpZiAoYnVmKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHJuZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIHJldHVybiBzdHJpbmdpZnkocm5kcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHY0OyIsImltcG9ydCB7IG5vcm1hbGl6ZVBhdGggfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGdldERhaWx5Tm90ZVNldHRpbmdzIH0gZnJvbSBcIm9ic2lkaWFuLWRhaWx5LW5vdGVzLWludGVyZmFjZVwiO1xuXG5cbi8vISBBbGwgb2YgdGhlc2UgbWV0aG9kcyBhcmUgdGFrZW4gZnJvbSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vYnNpZGlhbi1kYWlseS1ub3Rlcy1pbnRlcmZhY2UuXG5mdW5jdGlvbiBqb2luKC4uLnBhcnRTZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIC8vIFNwbGl0IHRoZSBpbnB1dHMgaW50byBhIGxpc3Qgb2YgcGF0aCBjb21tYW5kcy5cbiAgICBsZXQgcGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBwYXJ0U2VnbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHBhcnRzID0gcGFydHMuY29uY2F0KHBhcnRTZWdtZW50c1tpXS5zcGxpdChcIi9cIikpO1xuICAgIH1cbiAgICAvLyBJbnRlcnByZXQgdGhlIHBhdGggY29tbWFuZHMgdG8gZ2V0IHRoZSBuZXcgcmVzb2x2ZWQgcGF0aC5cbiAgICBjb25zdCBuZXdQYXJ0cyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHBhcnQgPSBwYXJ0c1tpXTtcbiAgICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNsYXNoZXNcbiAgICAgICAgLy8gQWxzbyByZW1vdmUgXCIuXCIgc2VnbWVudHNcbiAgICAgICAgaWYgKCFwYXJ0IHx8IHBhcnQgPT09IFwiLlwiKSBjb250aW51ZTtcbiAgICAgICAgLy8gUHVzaCBuZXcgcGF0aCBzZWdtZW50cy5cbiAgICAgICAgZWxzZSBuZXdQYXJ0cy5wdXNoKHBhcnQpO1xuICAgIH1cbiAgICAvLyBQcmVzZXJ2ZSB0aGUgaW5pdGlhbCBzbGFzaCBpZiB0aGVyZSB3YXMgb25lLlxuICAgIGlmIChwYXJ0c1swXSA9PT0gXCJcIikgbmV3UGFydHMudW5zaGlmdChcIlwiKTtcbiAgICAvLyBUdXJuIGJhY2sgaW50byBhIHNpbmdsZSBzdHJpbmcgcGF0aC5cbiAgICByZXR1cm4gbmV3UGFydHMuam9pbihcIi9cIik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE5vdGVQYXRoKFxuICAgIGRpcmVjdG9yeTogc3RyaW5nLFxuICAgIGZpbGVuYW1lOiBzdHJpbmdcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCFmaWxlbmFtZS5lbmRzV2l0aChcIi5tZFwiKSkge1xuICAgICAgICBmaWxlbmFtZSArPSBcIi5tZFwiO1xuICAgIH1cbiAgICBjb25zdCBwYXRoID0gbm9ybWFsaXplUGF0aChqb2luKGRpcmVjdG9yeSwgZmlsZW5hbWUpKTtcblxuICAgIGF3YWl0IGVuc3VyZUZvbGRlckV4aXN0cyhwYXRoKTtcblxuICAgIHJldHVybiBwYXRoO1xufVxuXG5hc3luYyBmdW5jdGlvbiBlbnN1cmVGb2xkZXJFeGlzdHMocGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGlycyA9IHBhdGgucmVwbGFjZSgvXFxcXC9nLCBcIi9cIikuc3BsaXQoXCIvXCIpO1xuICAgIGRpcnMucG9wKCk7IC8vIHJlbW92ZSBiYXNlbmFtZVxuXG4gICAgaWYgKGRpcnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGRpciA9IGpvaW4oLi4uZGlycyk7XG4gICAgICAgIGlmICghKHdpbmRvdyBhcyBhbnkpLmFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgoZGlyKSkge1xuICAgICAgICAgICAgYXdhaXQgKHdpbmRvdyBhcyBhbnkpLmFwcC52YXVsdC5jcmVhdGVGb2xkZXIoZGlyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldERhaWx5Tm90ZVBhdGgoZGF0ZTogYW55KTogUHJvbWlzZTxzdHJpbmc+IHtcblxuICAgIGNvbnN0IHsgZm9ybWF0LCBmb2xkZXIgfSA9IGdldERhaWx5Tm90ZVNldHRpbmdzKCk7XG5cbiAgICBjb25zdCBmaWxlbmFtZSA9IGRhdGUuZm9ybWF0KGZvcm1hdCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBhd2FpdCBnZXROb3RlUGF0aChmb2xkZXIsIGZpbGVuYW1lKTtcbiAgICByZXR1cm4gbm9ybWFsaXplZFBhdGg7XG59IiwiaW1wb3J0IHsgQ29tbWFuZCwgRnV6enlTdWdnZXN0TW9kYWwgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBBZHZhbmNlZFVSSSBmcm9tIFwiLi4vbWFpblwiO1xuXG5leHBvcnQgY2xhc3MgQ29tbWFuZE1vZGFsIGV4dGVuZHMgRnV6enlTdWdnZXN0TW9kYWw8Q29tbWFuZD4ge1xuICAgIHBsdWdpbjogQWR2YW5jZWRVUkk7XG4gICAgZmlsZTogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKHBsdWdpbjogQWR2YW5jZWRVUkksIGZpbGU/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocGx1Z2luLmFwcCk7XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICAgIH1cblxuICAgIGdldEl0ZW1zKCk6IENvbW1hbmRbXSB7XG4gICAgICAgIGNvbnN0IHJhd0NvbW1hbmRzID0gdGhpcy5hcHAuY29tbWFuZHMuY29tbWFuZHM7XG4gICAgICAgIGNvbnN0IGNvbW1hbmRzOiBDb21tYW5kW10gPSBPYmplY3Qua2V5cyhyYXdDb21tYW5kcykubWFwKGUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgaWQ6IHJhd0NvbW1hbmRzW2VdLmlkLCBuYW1lOiByYXdDb21tYW5kc1tlXS5uYW1lIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY29tbWFuZHM7XG4gICAgfVxuXG4gICAgZ2V0SXRlbVRleHQoaXRlbTogQ29tbWFuZCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtLm5hbWU7XG4gICAgfVxuXG4gICAgb25DaG9vc2VJdGVtKGl0ZW06IENvbW1hbmQsIF86IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMucGx1Z2luLmNvcHlVUkkoe1xuICAgICAgICAgICAgZmlsZXBhdGg6IHRoaXMuZmlsZSxcbiAgICAgICAgICAgIGNvbW1hbmRpZDogaXRlbS5pZFxuICAgICAgICB9KTtcbiAgICB9XG59IiwiaW1wb3J0IHsgU3VnZ2VzdE1vZGFsIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgQWR2YW5jZWRVUkkgZnJvbSBcIi4uL21haW5cIjtcbmltcG9ydCB7IEVudGVyRGF0YSwgUGFyYW1ldGVycyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgRW50ZXJEYXRhTW9kYWwgZXh0ZW5kcyBTdWdnZXN0TW9kYWw8RW50ZXJEYXRhPiB7XG4gICAgcGx1Z2luOiBBZHZhbmNlZFVSSTtcbiAgICAvL251bGwgaWYgZm9yIG5vcm1hbCB3cml0ZSBtb2RlLCBpdHMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpYWwgbW9kZSBsaWtlIFwiYXBwZW5kXCIgb3IgXCJwcmVwZW5kXCJcbiAgICBtb2RlcyA9IFtudWxsLCBcIm92ZXJ3cml0ZVwiLCBcImFwcGVuZFwiLCBcInByZXBlbmRcIl07XG5cbiAgICBjb25zdHJ1Y3RvcihwbHVnaW46IEFkdmFuY2VkVVJJLCBwcml2YXRlIGZpbGU/OiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgc3VwZXIocGx1Z2luLmFwcCk7XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB0aGlzLnNldFBsYWNlaG9sZGVyKFwiVHlwZSB5b3VyIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgZmlsZSBvciBsZWF2ZSBpdCBlbXB0eSB0byBqdXN0IG9wZW4gaXRcIik7XG4gICAgfVxuXG5cbiAgICBnZXRTdWdnZXN0aW9ucyhxdWVyeTogc3RyaW5nKTogRW50ZXJEYXRhW10ge1xuICAgICAgICBpZiAocXVlcnkgPT0gXCJcIikgcXVlcnkgPSBudWxsO1xuXG4gICAgICAgIGxldCBzdWdnZXN0aW9uczogRW50ZXJEYXRhW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBtb2RlIG9mIHRoaXMubW9kZXMpIHtcbiAgICAgICAgICAgIGlmICghKG1vZGUgPT09IFwib3ZlcndyaXRlXCIgJiYgIXF1ZXJ5KSkge1xuICAgICAgICAgICAgICAgIGxldCBkaXNwbGF5OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ID0gYFdyaXRlIFwiJHtxdWVyeX1cIiBpbiAke21vZGV9IG1vZGVgO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSA9IGBXcml0ZSBcIiR7cXVlcnl9XCJgO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgPSBgT3BlbiBpbiAke21vZGV9IG1vZGVgO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSA9IGBPcGVuYDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGRpc3BsYXksXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IG1vZGUsXG4gICAgICAgICAgICAgICAgICAgIGZ1bmM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5jb3B5VVJJKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXBhdGg6IHRoaXMuZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG1vZGUgYXMgUGFyYW1ldGVyc1tcIm1vZGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uY29weVVSSSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhaWx5OiBcInRydWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG1vZGUgYXMgUGFyYW1ldGVyc1tcIm1vZGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Z2dlc3Rpb25zO1xuICAgIH1cblxuICAgIHJlbmRlclN1Z2dlc3Rpb24odmFsdWU6IEVudGVyRGF0YSwgZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGVsLmlubmVyVGV4dCA9IHZhbHVlLmRpc3BsYXk7XG4gICAgfTtcblxuICAgIG9uQ2hvb3NlU3VnZ2VzdGlvbihpdGVtOiBFbnRlckRhdGEsIF86IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGl0ZW0uZnVuYygpO1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBGdXp6eVN1Z2dlc3RNb2RhbCB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IEFkdmFuY2VkVVJJIGZyb20gXCIuLi9tYWluXCI7XG5pbXBvcnQgeyBGaWxlTW9kYWxEYXRhIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBGaWxlTW9kYWwgZXh0ZW5kcyBGdXp6eVN1Z2dlc3RNb2RhbDxGaWxlTW9kYWxEYXRhPiB7XG4gICAgcGx1Z2luOiBBZHZhbmNlZFVSSTtcbiAgICBjb25zdHJ1Y3RvcihwbHVnaW46IEFkdmFuY2VkVVJJLCBwcml2YXRlIHBsYWNlSG9sZGVyOiBzdHJpbmcsIHByaXZhdGUgYWxsb3dOb0ZpbGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIHN1cGVyKHBsdWdpbi5hcHApO1xuICAgICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgICAgICAgdGhpcy5zZXRQbGFjZWhvbGRlcih0aGlzLnBsYWNlSG9sZGVyKTtcbiAgICB9XG5cbiAgICBnZXRJdGVtcygpOiBGaWxlTW9kYWxEYXRhW10ge1xuICAgICAgICBsZXQgc3BlY2lhbEl0ZW1zOiBGaWxlTW9kYWxEYXRhW10gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dOb0ZpbGUpIHtcbiAgICAgICAgICAgIHNwZWNpYWxJdGVtcy5wdXNoKHsgZGlzcGxheTogXCI8RG9uJ3Qgc3BlY2lmeSBhIGZpbGU+XCIsIHNvdXJjZTogdW5kZWZpbmVkIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgc3BlY2lhbEl0ZW1zLnB1c2goeyBkaXNwbGF5OiBcIjxDdXJyZW50IGZpbGU+XCIsIHNvdXJjZTogZmlsZS5wYXRoIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uc3BlY2lhbEl0ZW1zLCAuLi50aGlzLmFwcC52YXVsdC5nZXRGaWxlcygpLm1hcChlID0+IHsgcmV0dXJuIHsgZGlzcGxheTogZS5wYXRoLCBzb3VyY2U6IGUucGF0aCB9OyB9KV07XG4gICAgfVxuXG4gICAgZ2V0SXRlbVRleHQoaXRlbTogRmlsZU1vZGFsRGF0YSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtLmRpc3BsYXk7XG4gICAgfVxuXG4gICAgb25DaG9vc2VJdGVtKGl0ZW06IEZpbGVNb2RhbERhdGEsIGV2dDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcblxuICAgIH1cbn1cbiIsImltcG9ydCB7IFN1Z2dlc3RNb2RhbCB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IEFkdmFuY2VkVVJJIGZyb20gXCIuLi9tYWluXCI7XG5pbXBvcnQgeyBTZWFyY2hNb2RhbERhdGEgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuZXhwb3J0IGNsYXNzIFJlcGxhY2VNb2RhbCBleHRlbmRzIFN1Z2dlc3RNb2RhbDxzdHJpbmc+IHtcbiAgICBwbHVnaW46IEFkdmFuY2VkVVJJO1xuICAgIGVtcHR5VGV4dCA9IFwiRW1wdHkgdGV4dCAocmVwbGFjZSB3aXRoIG5vdGhpbmcpXCI7XG4gICAgY29uc3RydWN0b3IocGx1Z2luOiBBZHZhbmNlZFVSSSwgcHJpdmF0ZSBzZWFyY2g6IFNlYXJjaE1vZGFsRGF0YSwgcHJpdmF0ZSBmaWxlcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHBsdWdpbi5hcHApO1xuICAgICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgICAgICAgdGhpcy5zZXRQbGFjZWhvbGRlcihcIlJlcGxhY2VtZW50IHRleHRcIik7XG4gICAgfVxuXG5cbiAgICBnZXRTdWdnZXN0aW9ucyhxdWVyeTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAocXVlcnkgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHF1ZXJ5ID0gdGhpcy5lbXB0eVRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtxdWVyeV07XG4gICAgfVxuXG4gICAgcmVuZGVyU3VnZ2VzdGlvbih2YWx1ZTogc3RyaW5nLCBlbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgZWwuaW5uZXJUZXh0ID0gdmFsdWU7XG4gICAgfTtcblxuICAgIG9uQ2hvb3NlU3VnZ2VzdGlvbihpdGVtOiBzdHJpbmcsIF86IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaC5pc1JlZ0V4KSB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5jb3B5VVJJKHtcbiAgICAgICAgICAgICAgICBmaWxlcGF0aDogdGhpcy5maWxlcGF0aCxcbiAgICAgICAgICAgICAgICBzZWFyY2hyZWdleDogdGhpcy5zZWFyY2guc291cmNlLFxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IGl0ZW0gPT0gdGhpcy5lbXB0eVRleHQgPyBcIlwiIDogaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5jb3B5VVJJKHtcbiAgICAgICAgICAgICAgICBmaWxlcGF0aDogdGhpcy5maWxlcGF0aCxcbiAgICAgICAgICAgICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoLnNvdXJjZSxcbiAgICAgICAgICAgICAgICByZXBsYWNlOiBpdGVtID09IHRoaXMuZW1wdHlUZXh0ID8gXCJcIiA6IGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgU3VnZ2VzdE1vZGFsIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgQWR2YW5jZWRVUkkgZnJvbSBcIi4uL21haW5cIjtcbmltcG9ydCB7IFNlYXJjaE1vZGFsRGF0YSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgU2VhcmNoTW9kYWwgZXh0ZW5kcyBTdWdnZXN0TW9kYWw8U2VhcmNoTW9kYWxEYXRhPiB7XG4gICAgcGx1Z2luOiBBZHZhbmNlZFVSSTtcblxuICAgIGNvbnN0cnVjdG9yKHBsdWdpbjogQWR2YW5jZWRVUkkpIHtcbiAgICAgICAgc3VwZXIocGx1Z2luLmFwcCk7XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB0aGlzLnNldFBsYWNlaG9sZGVyKFwiU2VhcmNoZWQgdGV4dC4gUmVnRXggaXMgc3VwcG9ydGVkXCIpO1xuICAgIH1cblxuXG4gICAgZ2V0U3VnZ2VzdGlvbnMocXVlcnk6IHN0cmluZyk6IFNlYXJjaE1vZGFsRGF0YVtdIHtcbiAgICAgICAgaWYgKHF1ZXJ5ID09PSBcIlwiKSB7XG4gICAgICAgICAgICBxdWVyeSA9IFwiLi4uXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlZ2V4OiBSZWdFeHA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZWdleCA9IG5ldyBSZWdFeHAocXVlcnkpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikgeyB9XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc291cmNlOiBxdWVyeSxcbiAgICAgICAgICAgICAgICBpc1JlZ0V4OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBxdWVyeVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHF1ZXJ5LFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IHJlZ2V4ID8gYEFzIFJlZ0V4OiAke3F1ZXJ5fWAgOiBgQ2FuJ3QgcGFyc2UgUmVnRXhgLFxuICAgICAgICAgICAgICAgIGlzUmVnRXg6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICByZW5kZXJTdWdnZXN0aW9uKHZhbHVlOiBTZWFyY2hNb2RhbERhdGEsIGVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBlbC5pbm5lclRleHQgPSB2YWx1ZS5kaXNwbGF5O1xuICAgIH07XG5cbiAgICBvbkNob29zZVN1Z2dlc3Rpb24oaXRlbTogU2VhcmNoTW9kYWxEYXRhLCBfOiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuXG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEFwcCwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IEFkdmFuY2VkVVJJIGZyb20gXCIuL21haW5cIjtcblxuZXhwb3J0IGNsYXNzIFNldHRpbmdzVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG4gICAgcGx1Z2luOiBBZHZhbmNlZFVSSTtcbiAgICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBBZHZhbmNlZFVSSSkge1xuICAgICAgICBzdXBlcihhcHAsIHBsdWdpbik7XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgIH1cblxuICAgIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgICAgIGxldCB7IGNvbnRhaW5lckVsIH0gPSB0aGlzO1xuICAgICAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuICAgICAgICBjb250YWluZXJFbC5jcmVhdGVFbChcImgyXCIsIHsgdGV4dDogdGhpcy5wbHVnaW4ubWFuaWZlc3QubmFtZSB9KTtcblxuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKFwiT3BlbiBmaWxlIG9uIHdyaXRlXCIpXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKGNiID0+IGNiLm9uQ2hhbmdlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5vcGVuRmlsZU9uV3JpdGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgIH0pLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm9wZW5GaWxlT25Xcml0ZSkpO1xuXG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoXCJPcGVuIGZpbGUgb24gd3JpdGUgaW4gYSBuZXcgcGFuZVwiKVxuICAgICAgICAgICAgLnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLm9wZW5GaWxlT25Xcml0ZSlcbiAgICAgICAgICAgIC5hZGRUb2dnbGUoY2IgPT4gY2Iub25DaGFuZ2UodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm9wZW5GaWxlT25Xcml0ZUluTmV3UGFuZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgICAgfSkuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3Mub3BlbkZpbGVPbldyaXRlSW5OZXdQYW5lKSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZShcIk9wZW4gZGFpbHkgbm90ZSBpbiBhIG5ldyBwYW5lXCIpXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKGNiID0+IGNiLm9uQ2hhbmdlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5vcGVuRGFpbHlJbk5ld1BhbmUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgIH0pLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm9wZW5EYWlseUluTmV3UGFuZSkpO1xuXG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoXCJPcGVuIGZpbGUgd2l0aG91dCB3cml0ZSBpbiBuZXcgcGFuZVwiKVxuICAgICAgICAgICAgLmFkZFRvZ2dsZShjYiA9PiBjYi5vbkNoYW5nZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3Mub3BlbkZpbGVXaXRob3V0V3JpdGVJbk5ld1BhbmUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgIH0pLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm9wZW5GaWxlV2l0aG91dFdyaXRlSW5OZXdQYW5lKSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZShcIlVzZSBVSUQgaW5zdGVhZCBvZiBmaWxlIHBhdGhzXCIpXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKGNiID0+IGNiLm9uQ2hhbmdlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VVSUQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgIH0pLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZVVJRCkpO1xuXG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoXCJVSUQgZmllbGQgaW4gZnJvbnRtYXR0ZXJcIilcbiAgICAgICAgICAgIC5hZGRUZXh0KGNiID0+IGNiLm9uQ2hhbmdlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pZEZpZWxkID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgICAgICB9KS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5pZEZpZWxkKSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZSgnRG9uYXRlJylcbiAgICAgICAgICAgIC5zZXREZXNjKCdJZiB5b3UgbGlrZSB0aGlzIFBsdWdpbiwgY29uc2lkZXIgZG9uYXRpbmcgdG8gc3VwcG9ydCBjb250aW51ZWQgZGV2ZWxvcG1lbnQuJylcbiAgICAgICAgICAgIC5hZGRCdXR0b24oKGJ0KSA9PiB7XG4gICAgICAgICAgICAgICAgYnQuYnV0dG9uRWwub3V0ZXJIVE1MID0gXCI8YSBocmVmPSdodHRwczovL2tvLWZpLmNvbS9GMUYxOTVJUTUnIHRhcmdldD0nX2JsYW5rJz48aW1nIGhlaWdodD0nMzYnIHN0eWxlPSdib3JkZXI6MHB4O2hlaWdodDozNnB4Oycgc3JjPSdodHRwczovL2Nkbi5rby1maS5jb20vY2RuL2tvZmkzLnBuZz92PTMnIGJvcmRlcj0nMCcgYWx0PSdCdXkgTWUgYSBDb2ZmZWUgYXQga28tZmkuY29tJyAvPjwvYT5cIjtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IGJhc2U2NFRvQXJyYXlCdWZmZXIsIENhY2hlZE1ldGFkYXRhLCBNYXJrZG93blZpZXcsIG5vcm1hbGl6ZVBhdGgsIE5vdGljZSwgcGFyc2VGcm9udE1hdHRlckFsaWFzZXMsIHBhcnNlRnJvbnRNYXR0ZXJFbnRyeSwgUGx1Z2luLCBUQWJzdHJhY3RGaWxlLCBURmlsZSwgVEZvbGRlciB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgc3RyaXBNRCB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliXCI7XG5pbXBvcnQgeyBhcHBIYXNEYWlseU5vdGVzUGx1Z2luTG9hZGVkLCBjcmVhdGVEYWlseU5vdGUsIGdldEFsbERhaWx5Tm90ZXMsIGdldERhaWx5Tm90ZSB9IGZyb20gXCJvYnNpZGlhbi1kYWlseS1ub3Rlcy1pbnRlcmZhY2VcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgZ2V0RGFpbHlOb3RlUGF0aCB9IGZyb20gXCIuL2RhaWx5X25vdGVfdXRpbHNcIjtcbmltcG9ydCB7IENvbW1hbmRNb2RhbCB9IGZyb20gXCIuL21vZGFscy9jb21tYW5kX21vZGFsXCI7XG5pbXBvcnQgeyBFbnRlckRhdGFNb2RhbCB9IGZyb20gXCIuL21vZGFscy9lbnRlcl9kYXRhX21vZGFsXCI7XG5pbXBvcnQgeyBGaWxlTW9kYWwgfSBmcm9tIFwiLi9tb2RhbHMvZmlsZV9tb2RhbFwiO1xuaW1wb3J0IHsgUmVwbGFjZU1vZGFsIH0gZnJvbSBcIi4vbW9kYWxzL3JlcGxhY2VfbW9kYWxcIjtcbmltcG9ydCB7IFNlYXJjaE1vZGFsIH0gZnJvbSBcIi4vbW9kYWxzL3NlYXJjaF9tb2RhbFwiO1xuaW1wb3J0IHsgU2V0dGluZ3NUYWIgfSBmcm9tIFwiLi9zZXR0aW5nc1wiO1xuaW1wb3J0IHsgQWR2YW5jZWRVUklTZXR0aW5ncywgRmlsZU1vZGFsRGF0YSwgSG9va1BhcmFtZXRlcnMsIFBhcmFtZXRlcnMsIFNlYXJjaE1vZGFsRGF0YSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IEFkdmFuY2VkVVJJU2V0dGluZ3MgPSB7XG4gICAgb3BlbkZpbGVPbldyaXRlOiB0cnVlLFxuICAgIG9wZW5EYWlseUluTmV3UGFuZTogZmFsc2UsXG4gICAgb3BlbkZpbGVPbldyaXRlSW5OZXdQYW5lOiBmYWxzZSxcbiAgICBvcGVuRmlsZVdpdGhvdXRXcml0ZUluTmV3UGFuZTogZmFsc2UsXG4gICAgaWRGaWVsZDogXCJpZFwiLFxuICAgIHVzZVVJRDogZmFsc2UsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZHZhbmNlZFVSSSBleHRlbmRzIFBsdWdpbiB7XG4gICAgc2V0dGluZ3M6IEFkdmFuY2VkVVJJU2V0dGluZ3M7XG5cbiAgICBhc3luYyBvbmxvYWQoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZFNldHRpbmdzKCk7XG4gICAgICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgU2V0dGluZ3NUYWIodGhpcy5hcHAsIHRoaXMpKTtcblxuXG4gICAgICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICAgICAgICBpZDogXCJjb3B5LXVyaS1jdXJyZW50LWZpbGVcIixcbiAgICAgICAgICAgIG5hbWU6IFwiY29weSBVUkkgZm9yIGZpbGUgd2l0aCBvcHRpb25zXCIsXG4gICAgICAgICAgICBjYWxsYmFjazogKCkgPT4gdGhpcy5oYW5kbGVDb3B5RmlsZVVSSShmYWxzZSlcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgICAgICAgIGlkOiBcImNvcHktdXJpLWN1cnJlbnQtZmlsZS1zaW1wbGVcIixcbiAgICAgICAgICAgIG5hbWU6IFwiY29weSBVUkkgZm9yIGN1cnJlbnQgZmlsZVwiLFxuICAgICAgICAgICAgY2FsbGJhY2s6ICgpID0+IHRoaXMuaGFuZGxlQ29weUZpbGVVUkkodHJ1ZSlcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgICAgICAgIGlkOiBcImNvcHktdXJpLWRhaWx5XCIsXG4gICAgICAgICAgICBuYW1lOiBcImNvcHkgVVJJIGZvciBkYWlseSBub3RlXCIsXG4gICAgICAgICAgICBjYWxsYmFjazogKCkgPT4gbmV3IEVudGVyRGF0YU1vZGFsKHRoaXMpLm9wZW4oKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgICAgICAgaWQ6IFwiY29weS11cmktc2VhcmNoLWFuZC1yZXBsYWNlXCIsXG4gICAgICAgICAgICBuYW1lOiBcImNvcHkgVVJJIGZvciBzZWFyY2ggYW5kIHJlcGxhY2VcIixcbiAgICAgICAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZU1vZGFsID0gbmV3IEZpbGVNb2RhbCh0aGlzLCBcIlVzZWQgZmlsZSBmb3Igc2VhcmNoIGFuZCByZXBsYWNlXCIpO1xuICAgICAgICAgICAgICAgIGZpbGVNb2RhbC5vcGVuKCk7XG4gICAgICAgICAgICAgICAgZmlsZU1vZGFsLm9uQ2hvb3NlSXRlbSA9IChmaWxlUGF0aDogRmlsZU1vZGFsRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hNb2RhbCA9IG5ldyBTZWFyY2hNb2RhbCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoTW9kYWwub3BlbigpO1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hNb2RhbC5vbkNob29zZVN1Z2dlc3Rpb24gPSAoaXRlbTogU2VhcmNoTW9kYWxEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgUmVwbGFjZU1vZGFsKHRoaXMsIGl0ZW0sIGZpbGVQYXRoPy5zb3VyY2UpLm9wZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgICAgICAgIGlkOiBcImNvcHktdXJpLWNvbW1hbmRcIixcbiAgICAgICAgICAgIG5hbWU6IFwiY29weSBVUkkgZm9yIGNvbW1hbmRcIixcbiAgICAgICAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZU1vZGFsID0gbmV3IEZpbGVNb2RhbCh0aGlzLCBcIlNlbGVjdCBhIGZpbGUgdG8gYmUgb3BlbmVkIGJlZm9yZSBleGVjdXRpbmcgdGhlIGNvbW1hbmRcIik7XG4gICAgICAgICAgICAgICAgZmlsZU1vZGFsLm9wZW4oKTtcbiAgICAgICAgICAgICAgICBmaWxlTW9kYWwub25DaG9vc2VJdGVtID0gKGl0ZW06IEZpbGVNb2RhbERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbmV3IENvbW1hbmRNb2RhbCh0aGlzLCBpdGVtPy5zb3VyY2UpLm9wZW4oKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJPYnNpZGlhblByb3RvY29sSGFuZGxlcihcImFkdmFuY2VkLXVyaVwiLCBhc3luYyAoZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IGUgYXMgdW5rbm93biBhcyBQYXJhbWV0ZXJzO1xuXG4gICAgICAgICAgICAvKiogQWxsb3dzIHdyaXRpbmcgdG8gbmV3IGNyZWF0ZWQgZGFpbHkgbm90ZSB3aXRob3V0IGFueSBgUGFyYW1ldGVycy5tb2RlYCAqL1xuICAgICAgICAgICAgbGV0IGNyZWF0ZWREYWlseU5vdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGFyYW1ldGVyIGluIHBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgICAocGFyYW1ldGVycyBhcyBhbnkpW3BhcmFtZXRlcl0gPSBkZWNvZGVVUklDb21wb25lbnQoKHBhcmFtZXRlcnMgYXMgYW55KVtwYXJhbWV0ZXJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLnVpZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0RmlsZUZyb21VSUQocGFyYW1ldGVycy51aWQpPy5wYXRoO1xuICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuZmlsZXBhdGggPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMudWlkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLmZpbGVuYW1lKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpbGUgPSB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KHBhcmFtZXRlcnMuZmlsZW5hbWUsIFwiXCIpO1xuICAgICAgICAgICAgICAgIGlmICghZmlsZSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLmZpbmQoZmlsZSA9PiBwYXJzZUZyb250TWF0dGVyQWxpYXNlcyh0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKS5mcm9udG1hdHRlcik/LmluY2x1ZGVzKHBhcmFtZXRlcnMuZmlsZW5hbWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Rm9sZGVyID0gdGhpcy5hcHAuZmlsZU1hbmFnZXIuZ2V0TmV3RmlsZVBhcmVudCh0aGlzLmFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZi52aWV3LmZpbGU/LnBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudEZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXIuaXNSb290KCkgPyBcIlwiIDogcGFyZW50Rm9sZGVyLnBhdGggKyBcIi9cIjtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmZpbGVwYXRoID0gZmlsZT8ucGF0aCA/PyAocGFyZW50Rm9sZGVyUGF0aCArIG5vcm1hbGl6ZVBhdGgocGFyYW1ldGVycy5maWxlbmFtZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMuZmlsZXBhdGgpIHtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmZpbGVwYXRoID0gbm9ybWFsaXplUGF0aChwYXJhbWV0ZXJzLmZpbGVwYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHBhcmFtZXRlcnMuZmlsZXBhdGgubGFzdEluZGV4T2YoXCIuXCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IHBhcmFtZXRlcnMuZmlsZXBhdGguc3Vic3RyaW5nKGluZGV4IDwgMCA/IHBhcmFtZXRlcnMuZmlsZXBhdGgubGVuZ3RoIDogaW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGV4dGVuc2lvbiA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmZpbGVwYXRoID0gcGFyYW1ldGVycy5maWxlcGF0aCArIFwiLm1kXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLmRhaWx5ID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIGlmICghYXBwSGFzRGFpbHlOb3Rlc1BsdWdpbkxvYWRlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJEYWlseSBub3RlcyBwbHVnaW4gaXMgbm90IGxvYWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBtb21lbnQgPSB3aW5kb3cubW9tZW50KERhdGUubm93KCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsbERhaWx5Tm90ZXMgPSBnZXRBbGxEYWlseU5vdGVzKCk7XG4gICAgICAgICAgICAgICAgbGV0IGRhaWx5Tm90ZSA9IGdldERhaWx5Tm90ZShtb21lbnQsIGFsbERhaWx5Tm90ZXMpO1xuICAgICAgICAgICAgICAgIGlmICghZGFpbHlOb3RlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vLyBQcmV2ZW50IGRhaWx5IG5vdGUgZnJvbSBiZWluZyBjcmVhdGVkIG9uIGV4aXN0aW5nIGNoZWNrXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLmV4aXN0cyA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuZmlsZXBhdGggPSBhd2FpdCBnZXREYWlseU5vdGVQYXRoKG1vbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYWlseU5vdGUgPSBhd2FpdCBjcmVhdGVEYWlseU5vdGUobW9tZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVsYXkgdG8gbGV0IE9ic2lkaWFuIGluZGV4IGFuZCBnZW5lcmF0ZSBDYWNoZWRNZXRhZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDUwMCkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkRGFpbHlOb3RlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGFpbHlOb3RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5maWxlcGF0aCA9IGRhaWx5Tm90ZS5wYXRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLmNsaXBib2FyZCA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmRhdGEgPSBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWRUZXh0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzW1wiZW5hYmxlLXBsdWdpblwiXSB8fCBwYXJhbWV0ZXJzW1wiZGlzYWJsZS1wbHVnaW5cIl0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVBsdWdpbk1hbmFnZW1lbnQocGFyYW1ldGVycyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVycy5mcm9udG1hdHRlcmtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRnJvbnRtYXR0ZXJLZXkocGFyYW1ldGVycyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVycy53b3Jrc3BhY2UgfHwgcGFyYW1ldGVycy5zYXZld29ya3NwYWNlID09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVXb3Jrc3BhY2UocGFyYW1ldGVycyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVycy5jb21tYW5kbmFtZSB8fCBwYXJhbWV0ZXJzLmNvbW1hbmRpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29tbWFuZChwYXJhbWV0ZXJzKTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLmZpbGVwYXRoICYmIHBhcmFtZXRlcnMuZXhpc3RzID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRG9lc0ZpbGVFeGlzdChwYXJhbWV0ZXJzKTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVdyaXRlKHBhcmFtZXRlcnMsIGNyZWF0ZWREYWlseU5vdGUpO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlcnMuZmlsZXBhdGggJiYgcGFyYW1ldGVycy5oZWFkaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVPcGVuKHBhcmFtZXRlcnMpO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlcnMuZmlsZXBhdGggJiYgcGFyYW1ldGVycy5ibG9jaykge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlT3BlbihwYXJhbWV0ZXJzKTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmICgocGFyYW1ldGVycy5zZWFyY2ggfHwgcGFyYW1ldGVycy5zZWFyY2hyZWdleCkgJiYgcGFyYW1ldGVycy5yZXBsYWNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoQW5kUmVwbGFjZShwYXJhbWV0ZXJzKTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLmZpbGVwYXRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVPcGVuKHBhcmFtZXRlcnMpO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlcnMuc2V0dGluZ2lkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVPcGVuU2V0dGluZ3MocGFyYW1ldGVycyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVycy51cGRhdGVwbHVnaW5zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVVcGRhdGVQbHVnaW5zKHBhcmFtZXRlcnMpO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyT2JzaWRpYW5Qcm90b2NvbEhhbmRsZXIoXG4gICAgICAgICAgICBcImhvb2stZ2V0LWFkdmFuY2VkLXVyaVwiLFxuICAgICAgICAgICAgYXN5bmMgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0gZSBhcyB1bmtub3duIGFzIEhvb2tQYXJhbWV0ZXJzO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFyYW1ldGVyIGluIHBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgKHBhcmFtZXRlcnMgYXMgYW55KVtwYXJhbWV0ZXJdID0gZGVjb2RlVVJJQ29tcG9uZW50KChwYXJhbWV0ZXJzIGFzIGFueSlbcGFyYW1ldGVyXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUxlYWYgPSB0aGlzLmFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZjtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYWN0aXZlTGVhZi52aWV3LmZpbGU7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUxlYWYgJiYgZmlsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhvb2tTdWNjZXNzKHBhcmFtZXRlcnMsIGZpbGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHBhcmFtZXRlcnMsIHsgZXJyb3JNZXNzYWdlOiBcIk5vIGZpbGUgb3BlbmVkXCIgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KFxuICAgICAgICAgICAgdGhpcy5hcHAud29ya3NwYWNlLm9uKCdmaWxlLW1lbnUnLCAobWVudSwgZmlsZSwgc291cmNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCEoc291cmNlID09PSBcInBhbmUtbW9yZS1vcHRpb25zXCIgfHwgc291cmNlID09PSBcInRhYi1oZWFkZXJcIiB8fCBzb3VyY2UgPT0gXCJmaWxlLWV4cGxvcmVyLWNvbnRleHQtbWVudVwiKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCEoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbWVudS5hZGRJdGVtKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRUaXRsZShgQ29weSBBZHZhbmNlZCBVUklgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldEljb24oJ2xpbmsnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFNlY3Rpb24oXCJpbmZvXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAub25DbGljaygoXykgPT4gdGhpcy5oYW5kbGVDb3B5RmlsZVVSSSh0cnVlLCBmaWxlKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgaG9va1N1Y2Nlc3MocGFyYW1ldGVyczogUGFyYW1ldGVycywgZmlsZTogVEZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFwYXJhbWV0ZXJzW1wieC1zdWNjZXNzXCJdKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHRpdGxlOiBzdHJpcE1EKGZpbGUubmFtZSksXG4gICAgICAgICAgICBhZHZhbmNlZHVyaTogYXdhaXQgdGhpcy5nZW5lcmF0ZVVSSSh7IGZpbGVwYXRoOiBmaWxlLnBhdGggfSksXG4gICAgICAgICAgICB1cmxrZXk6IFwiYWR2YW5jZWR1cmlcIixcbiAgICAgICAgICAgIGZpbGV1cmk6IHRoaXMuZ2V0RmlsZVVyaShmaWxlKSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zdWNjZXNzKHBhcmFtZXRlcnMsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGdldEZpbGVVcmkoZmlsZTogVEZpbGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMuYXBwLnZhdWx0LmdldFJlc291cmNlUGF0aChmaWxlKSk7XG4gICAgICAgIHVybC5ob3N0ID0gXCJsb2NhbGhvc3Rob3N0bG9jYWxcIjtcbiAgICAgICAgdXJsLnByb3RvY29sID0gXCJmaWxlXCI7XG4gICAgICAgIHVybC5zZWFyY2ggPSBcIlwiO1xuXG4gICAgICAgIHVybC5wYXRobmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudCh1cmwucGF0aG5hbWUpO1xuICAgICAgICBjb25zdCByZXMgPSB1cmwudG9TdHJpbmcoKS5yZXBsYWNlKFwiL2xvY2FsaG9zdGhvc3Rsb2NhbC9cIiwgXCIvXCIpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MocGFyYW1ldGVyczogUGFyYW1ldGVycywgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHBhcmFtZXRlcnNbXCJ4LXN1Y2Nlc3NcIl0pIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocGFyYW1ldGVyc1tcIngtc3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhcmFtIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChwYXJhbSwgb3B0aW9uc1twYXJhbV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmFpbHVyZShwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzLCBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgICAgICBpZiAocGFyYW1ldGVyc1tcIngtZXJyb3JcIl0pIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocGFyYW1ldGVyc1tcIngtZXJyb3JcIl0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBwYXJhbSBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQocGFyYW0sIG9wdGlvbnNbcGFyYW1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKHVybC50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEZpbGVGcm9tVUlEKHVpZDogc3RyaW5nKTogVEZpbGUgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBmaWxlcyA9IHRoaXMuYXBwLnZhdWx0LmdldEZpbGVzKCk7XG4gICAgICAgIGNvbnN0IGlkS2V5ID0gdGhpcy5zZXR0aW5ncy5pZEZpZWxkO1xuICAgICAgICByZXR1cm4gZmlsZXMuZmluZChmaWxlID0+IHBhcnNlRnJvbnRNYXR0ZXJFbnRyeSh0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKT8uZnJvbnRtYXR0ZXIsIGlkS2V5KSA9PSB1aWQpO1xuICAgIH1cblxuICAgIGhhbmRsZUZyb250bWF0dGVyS2V5KHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gcGFyYW1ldGVycy5mcm9udG1hdHRlcmtleTtcbiAgICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldENhY2hlKHBhcmFtZXRlcnMuZmlsZXBhdGggPz8gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKS5wYXRoKS5mcm9udG1hdHRlcjtcblxuICAgICAgICBsZXQgcmVzOiBzdHJpbmc7XG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIltcIikgJiYga2V5LmVuZHNXaXRoKFwiXVwiKSkge1xuICAgICAgICAgICAgY29uc3QgbGlzdCA9IGtleS5zdWJzdHJpbmcoMSwga2V5Lmxlbmd0aCAtIDEpLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgIGxldCBjYWNoZTogYW55ID0gZnJvbnRtYXR0ZXI7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkge1xuICAgICAgICAgICAgICAgIGlmIChjYWNoZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGFyc2VJbnQoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSBOYU4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0gY2FjaGUuZmluZCgoZSkgPT4gZSA9PSBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWNoZSA9IGNhY2hlW3BhcnNlSW50KGl0ZW0pXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjYWNoZSA9IGNhY2hlW2l0ZW1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcyA9IGNhY2hlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzID0gZnJvbnRtYXR0ZXJba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29weVRleHQocmVzKTtcbiAgICB9XG5cbiAgICBoYW5kbGVXb3Jrc3BhY2UocGFyYW1ldGVyczogUGFyYW1ldGVycykge1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2VzID0gdGhpcy5hcHAuaW50ZXJuYWxQbHVnaW5zPy5wbHVnaW5zPy53b3Jrc3BhY2VzO1xuICAgICAgICBpZiAoIXdvcmtzcGFjZXMpIHtcbiAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJDYW5ub3QgZmluZCBXb3Jrc3BhY2VzIHBsdWdpbi4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuXCIpO1xuICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHBhcmFtZXRlcnMpO1xuICAgICAgICB9IGVsc2UgaWYgKHdvcmtzcGFjZXMuZW5hYmxlZCkge1xuICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2F2ZXdvcmtzcGFjZSA9PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IHdvcmtzcGFjZXMuaW5zdGFuY2UuYWN0aXZlV29ya3NwYWNlO1xuICAgICAgICAgICAgICAgIHdvcmtzcGFjZXMuaW5zdGFuY2Uuc2F2ZVdvcmtzcGFjZShhY3RpdmUpO1xuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoYFNhdmVkIGN1cnJlbnQgd29ya3NwYWNlIHRvICR7YWN0aXZlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMud29ya3NwYWNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHdvcmtzcGFjZXMuaW5zdGFuY2UubG9hZFdvcmtzcGFjZShwYXJhbWV0ZXJzLndvcmtzcGFjZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3MocGFyYW1ldGVycyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXcgTm90aWNlKFwiV29ya3NwYWNlcyBwbHVnaW4gaXMgbm90IGVuYWJsZWRcIik7XG4gICAgICAgICAgICB0aGlzLmZhaWx1cmUocGFyYW1ldGVycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVQbHVnaW5NYW5hZ2VtZW50KHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHBhcmFtZXRlcnNbXCJlbmFibGUtcGx1Z2luXCJdKSB7XG4gICAgICAgICAgICBjb25zdCBwbHVnaW5JZCA9IHBhcmFtZXRlcnNbXCJlbmFibGUtcGx1Z2luXCJdO1xuICAgICAgICAgICAgdGhpcy5hcHAucGx1Z2lucy5lbmFibGVQbHVnaW5BbmRTYXZlKHBsdWdpbklkKTtcbiAgICAgICAgICAgIG5ldyBOb3RpY2UoYEVuYWJsZWQgJHtwbHVnaW5JZH1gKTtcbiAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzW1wiZGlzYWJsZS1wbHVnaW5cIl0pIHtcbiAgICAgICAgICAgIGNvbnN0IHBsdWdpbklkID0gcGFyYW1ldGVyc1tcImRpc2FibGUtcGx1Z2luXCJdO1xuICAgICAgICAgICAgdGhpcy5hcHAucGx1Z2lucy5kaXNhYmxlUGx1Z2luQW5kU2F2ZShwbHVnaW5JZCk7XG4gICAgICAgICAgICBuZXcgTm90aWNlKGBEaXNhYmxlZCAke3BsdWdpbklkfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlQ29tbWFuZChwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKSB7XG4gICAgICAgIGlmIChwYXJhbWV0ZXJzLmZpbGVwYXRoKSB7XG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycy5tb2RlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMubW9kZSA9PSBcIm5ld1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KHBhcmFtZXRlcnMuZmlsZXBhdGgsIFwiL1wiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5maWxlcGF0aCA9IHRoaXMuZ2V0QWx0ZXJuYXRpdmVGaWxlUGF0aChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmFwcC53b3Jrc3BhY2Uub3BlbkxpbmtUZXh0KHBhcmFtZXRlcnMuZmlsZXBhdGgsIFwiL1wiLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IHsgbW9kZTogXCJzb3VyY2VcIiB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gICAgICAgICAgICAgICAgaWYgKHZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWRpdG9yID0gdmlldy5lZGl0b3I7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBlZGl0b3IuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMubW9kZSA9PT0gXCJhcHBlbmRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNldFZhbHVlKGRhdGEgKyBcIlxcblwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gZWRpdG9yLmxpbmVDb3VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNldEN1cnNvcih7IGNoOiAwLCBsaW5lOiBsaW5lcyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLm1vZGUgPT09IFwicHJlcGVuZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3Iuc2V0VmFsdWUoXCJcXG5cIiArIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNldEN1cnNvcih7IGNoOiAwLCBsaW5lOiAwIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlcnMubW9kZSA9PT0gXCJvdmVyd3JpdGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNldFZhbHVlKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLmxpbmUpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmFwcC53b3Jrc3BhY2Uub3BlbkxpbmtUZXh0KHBhcmFtZXRlcnMuZmlsZXBhdGgsIFwiL1wiLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IHsgbW9kZTogXCJzb3VyY2VcIiB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDdXJzb3JJbkxpbmUocGFyYW1ldGVycy5saW5lKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAud29ya3NwYWNlLm9wZW5MaW5rVGV4dChwYXJhbWV0ZXJzLmZpbGVwYXRoLCBcIi9cIiwgdGhpcy5zZXR0aW5ncy5vcGVuRmlsZVdpdGhvdXRXcml0ZUluTmV3UGFuZSwgdGhpcy5nZXRWaWV3U3RhdGVGcm9tTW9kZShwYXJhbWV0ZXJzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtZXRlcnMuY29tbWFuZGlkKSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5jb21tYW5kcy5leGVjdXRlQ29tbWFuZEJ5SWQocGFyYW1ldGVycy5jb21tYW5kaWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlcnMuY29tbWFuZG5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhd0NvbW1hbmRzID0gdGhpcy5hcHAuY29tbWFuZHMuY29tbWFuZHM7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbW1hbmQgaW4gcmF3Q29tbWFuZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmF3Q29tbWFuZHNbY29tbWFuZF0ubmFtZSA9PT0gcGFyYW1ldGVycy5jb21tYW5kbmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmF3Q29tbWFuZHNbY29tbWFuZF0uY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhd0NvbW1hbmRzW2NvbW1hbmRdLmNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByYXdDb21tYW5kc1tjb21tYW5kXS5jaGVja0NhbGxiYWNrKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWNjZXNzKHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgICBhc3luYyBoYW5kbGVEb2VzRmlsZUV4aXN0KHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpIHtcbiAgICAgICAgY29uc3QgZXhpc3RzID0gYXdhaXQgdGhpcy5hcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGFyYW1ldGVycy5maWxlcGF0aCk7XG5cbiAgICAgICAgdGhpcy5jb3B5VGV4dCgoZXhpc3RzID8gMSA6IDApLnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLnN1Y2Nlc3MocGFyYW1ldGVycyk7XG5cbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlU2VhcmNoQW5kUmVwbGFjZShwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKSB7XG4gICAgICAgIGxldCBmaWxlOiBURmlsZTtcbiAgICAgICAgaWYgKHBhcmFtZXRlcnMuZmlsZXBhdGgpIHtcblxuICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RGaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHBhcmFtZXRlcnMuZmlsZXBhdGgpO1xuICAgICAgICAgICAgaWYgKGFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgICAgICAgICAgICAgZmlsZSA9IGFic3RyYWN0RmlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbGUgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgIGxldCBkYXRhID0gYXdhaXQgdGhpcy5hcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNlYXJjaHJlZ2V4KSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgWywgLCBwYXR0ZXJuLCBmbGFnc10gPSBwYXJhbWV0ZXJzLnNlYXJjaHJlZ2V4Lm1hdGNoKC8oXFwvPykoLispXFwxKFthLXpdKikvaSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChwYXR0ZXJuLCBmbGFncyk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UocmVnZXgsIHBhcmFtZXRlcnMucmVwbGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2VzcyhwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBuZXcgTm90aWNlKGBDYW4ndCBwYXJzZSAke3BhcmFtZXRlcnMuc2VhcmNocmVnZXh9IGFzIFJlZ0V4YCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmFpbHVyZShwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2VBbGwocGFyYW1ldGVycy5zZWFyY2gsIHBhcmFtZXRlcnMucmVwbGFjZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzKHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLndyaXRlQW5kT3BlbkZpbGUoZmlsZS5wYXRoLCBkYXRhLCBwYXJhbWV0ZXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJDYW5ub3QgZmluZCBmaWxlXCIpO1xuICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHBhcmFtZXRlcnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlV3JpdGUocGFyYW1ldGVyczogUGFyYW1ldGVycywgY3JlYXRlZERhaWx5Tm90ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBmaWxlOiBUQWJzdHJhY3RGaWxlIHwgbnVsbDtcbiAgICAgICAgaWYgKHBhcmFtZXRlcnMuZmlsZXBhdGgpIHtcbiAgICAgICAgICAgIGZpbGUgPSB0aGlzLmFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgocGFyYW1ldGVycy5maWxlcGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWxlID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbWV0ZXJzLmZpbGVwYXRoIHx8IGZpbGUpIHtcbiAgICAgICAgICAgIGxldCBvdXRGaWxlOiBURmlsZTtcbiAgICAgICAgICAgIGxldCBwYXRoID0gcGFyYW1ldGVycy5maWxlcGF0aCA/PyBmaWxlLnBhdGg7XG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycy5tb2RlID09PSBcIm92ZXJ3cml0ZVwiKSB7XG4gICAgICAgICAgICAgICAgb3V0RmlsZSA9IGF3YWl0IHRoaXMud3JpdGVBbmRPcGVuRmlsZShwYXRoLCBwYXJhbWV0ZXJzLmRhdGEsIHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3VjY2VzcyhwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVycy5tb2RlID09PSBcInByZXBlbmRcIikge1xuICAgICAgICAgICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0RmlsZSA9IGF3YWl0IHRoaXMucHJlcGVuZChmaWxlLCBwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdXRGaWxlID0gYXdhaXQgdGhpcy5wcmVwZW5kKHBhdGgsIHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3MocGFyYW1ldGVycyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlcnMubW9kZSA9PT0gXCJhcHBlbmRcIikge1xuICAgICAgICAgICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0RmlsZSA9IGF3YWl0IHRoaXMuYXBwZW5kKGZpbGUsIHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dEZpbGUgPSBhd2FpdCB0aGlzLmFwcGVuZChwYXRoLCBwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzKHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLm1vZGUgPT09IFwibmV3XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dEZpbGUgPSBhd2FpdCB0aGlzLndyaXRlQW5kT3BlbkZpbGUodGhpcy5nZXRBbHRlcm5hdGl2ZUZpbGVQYXRoKGZpbGUpLCBwYXJhbWV0ZXJzLmRhdGEsIHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhvb2tTdWNjZXNzKHBhcmFtZXRlcnMsIG91dEZpbGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dEZpbGUgPSBhd2FpdCB0aGlzLndyaXRlQW5kT3BlbkZpbGUocGF0aCwgcGFyYW1ldGVycy5kYXRhLCBwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob29rU3VjY2VzcyhwYXJhbWV0ZXJzLCBvdXRGaWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFjcmVhdGVkRGFpbHlOb3RlICYmIGZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJGaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmFpbHVyZShwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0RmlsZSA9IGF3YWl0IHRoaXMud3JpdGVBbmRPcGVuRmlsZShwYXRoLCBwYXJhbWV0ZXJzLmRhdGEsIHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3VjY2VzcyhwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLnVpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVVSURUb0ZpbGUob3V0RmlsZSwgcGFyYW1ldGVycy51aWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3IE5vdGljZShcIkNhbm5vdCBmaW5kIGZpbGVcIik7XG4gICAgICAgICAgICB0aGlzLmZhaWx1cmUocGFyYW1ldGVycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBoYW5kbGVPcGVuKHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpIHtcbiAgICAgICAgbGV0IGZpbGVJc0FscmVhZHlPcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hcHAud29ya3NwYWNlLml0ZXJhdGVBbGxMZWF2ZXMobGVhZiA9PiB7XG4gICAgICAgICAgICBpZiAobGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhcmFtZXRlcnMuZmlsZXBhdGgpIHtcbiAgICAgICAgICAgICAgICBmaWxlSXNBbHJlYWR5T3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcC53b3Jrc3BhY2Uuc2V0QWN0aXZlTGVhZihsZWFmLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChmaWxlSXNBbHJlYWR5T3BlbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBsZWFmID0gdGhpcy5hcHAud29ya3NwYWNlLmFjdGl2ZUxlYWY7XG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycy52aWV3bW9kZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmlld1N0YXRlID0gbGVhZi5nZXRWaWV3U3RhdGUoKTtcbiAgICAgICAgICAgICAgICB2aWV3U3RhdGUuc3RhdGUubW9kZSA9IHBhcmFtZXRlcnMudmlld21vZGU7XG4gICAgICAgICAgICAgICAgaWYgKHZpZXdTdGF0ZS5zdGF0ZS5zb3VyY2UgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB2aWV3U3RhdGUuc3RhdGUuc291cmNlID0gcGFyYW1ldGVycy52aWV3bW9kZSA9PSBcInNvdXJjZVwiO1xuICAgICAgICAgICAgICAgIGF3YWl0IGxlYWYuc2V0Vmlld1N0YXRlKHZpZXdTdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcGVuSW5OZXdQYW5lID0gcGFyYW1ldGVycy5uZXdwYW5lICE9PSB1bmRlZmluZWQgPyBwYXJhbWV0ZXJzLm5ld3BhbmUgPT0gXCJ0cnVlXCIgOiB0aGlzLnNldHRpbmdzLm9wZW5GaWxlV2l0aG91dFdyaXRlSW5OZXdQYW5lO1xuICAgICAgICBpZiAocGFyYW1ldGVycy5oZWFkaW5nICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAud29ya3NwYWNlLm9wZW5MaW5rVGV4dChwYXJhbWV0ZXJzLmZpbGVwYXRoICsgXCIjXCIgKyBwYXJhbWV0ZXJzLmhlYWRpbmcsIFwiXCIsIG9wZW5Jbk5ld1BhbmUsIHRoaXMuZ2V0Vmlld1N0YXRlRnJvbU1vZGUocGFyYW1ldGVycykpO1xuICAgICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gICAgICAgICAgICBpZiAoIXZpZXcpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUodmlldy5maWxlKTtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRpbmcgPSBjYWNoZS5oZWFkaW5ncy5maW5kKChlKSA9PiBlLmhlYWRpbmcgPT09IHBhcmFtZXRlcnMuaGVhZGluZyk7XG4gICAgICAgICAgICB2aWV3LmVkaXRvci5mb2N1cygpO1xuICAgICAgICAgICAgdmlldy5lZGl0b3Iuc2V0Q3Vyc29yKHsgbGluZTogaGVhZGluZy5wb3NpdGlvbi5zdGFydC5saW5lICsgMSwgY2g6IDAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGFyYW1ldGVycy5ibG9jayAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYXBwLndvcmtzcGFjZS5vcGVuTGlua1RleHQocGFyYW1ldGVycy5maWxlcGF0aCArIFwiI15cIiArIHBhcmFtZXRlcnMuYmxvY2ssIFwiXCIsIG9wZW5Jbk5ld1BhbmUsIHRoaXMuZ2V0Vmlld1N0YXRlRnJvbU1vZGUocGFyYW1ldGVycykpO1xuICAgICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gICAgICAgICAgICBpZiAoIXZpZXcpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUodmlldy5maWxlKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gY2FjaGUuYmxvY2tzW3BhcmFtZXRlcnMuYmxvY2tdO1xuICAgICAgICAgICAgdmlldy5lZGl0b3IuZm9jdXMoKTtcbiAgICAgICAgICAgIHZpZXcuZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGJsb2NrLnBvc2l0aW9uLnN0YXJ0LmxpbmUsIGNoOiAwIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFmaWxlSXNBbHJlYWR5T3BlbmVkKVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuYXBwLndvcmtzcGFjZS5vcGVuTGlua1RleHQocGFyYW1ldGVycy5maWxlcGF0aCwgXCJcIiwgb3BlbkluTmV3UGFuZSwgdGhpcy5nZXRWaWV3U3RhdGVGcm9tTW9kZShwYXJhbWV0ZXJzKSk7XG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycy5saW5lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q3Vyc29ySW5MaW5lKHBhcmFtZXRlcnMubGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtZXRlcnMubW9kZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0Q3Vyc29yKHBhcmFtZXRlcnMubW9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtZXRlcnMudWlkKSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcblxuICAgICAgICAgICAgdGhpcy53cml0ZVVJRFRvRmlsZSh2aWV3LmZpbGUsIHBhcmFtZXRlcnMudWlkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Y2Nlc3MocGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgYXN5bmMgYXBwZW5kKGZpbGU6IFRGaWxlIHwgc3RyaW5nLCBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKTogUHJvbWlzZTxURmlsZT4ge1xuICAgICAgICBsZXQgcGF0aDogc3RyaW5nO1xuICAgICAgICBsZXQgZGF0YVRvV3JpdGU6IHN0cmluZztcbiAgICAgICAgaWYgKHBhcmFtZXRlcnMuaGVhZGluZykge1xuICAgICAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICAgICAgICAgIHBhdGggPSBmaWxlLnBhdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuZ2V0RW5kQW5kQmVnaW5uaW5nT2ZIZWFkaW5nKGZpbGUsIHBhcmFtZXRlcnMuaGVhZGluZyk/Lmxhc3RMaW5lO1xuICAgICAgICAgICAgICAgIGlmIChsaW5lID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gZGF0YS5zcGxpdChcIlxcblwiKTtcblxuICAgICAgICAgICAgICAgIGxpbmVzLnNwbGljZShsaW5lLCAwLCAuLi5wYXJhbWV0ZXJzLmRhdGEuc3BsaXQoXCJcXG5cIikpO1xuICAgICAgICAgICAgICAgIGRhdGFUb1dyaXRlID0gbGluZXMuam9pbihcIlxcblwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBmaWxlRGF0YTogc3RyaW5nO1xuICAgICAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICAgICAgICAgIGZpbGVEYXRhID0gYXdhaXQgdGhpcy5hcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICAgICAgICAgICAgICBwYXRoID0gZmlsZS5wYXRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXRoID0gZmlsZTtcbiAgICAgICAgICAgICAgICBmaWxlRGF0YSA9IFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhVG9Xcml0ZSA9IGZpbGVEYXRhICsgXCJcXG5cIiArIHBhcmFtZXRlcnMuZGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy53cml0ZUFuZE9wZW5GaWxlKHBhdGgsIGRhdGFUb1dyaXRlLCBwYXJhbWV0ZXJzKTtcbiAgICB9XG5cbiAgICBhc3luYyBwcmVwZW5kKGZpbGU6IFRGaWxlIHwgc3RyaW5nLCBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKTogUHJvbWlzZTxURmlsZT4ge1xuICAgICAgICBsZXQgcGF0aDogc3RyaW5nO1xuICAgICAgICBsZXQgZGF0YVRvV3JpdGU6IHN0cmluZztcbiAgICAgICAgaWYgKHBhcmFtZXRlcnMuaGVhZGluZykge1xuICAgICAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICAgICAgICAgIHBhdGggPSBmaWxlLnBhdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuZ2V0RW5kQW5kQmVnaW5uaW5nT2ZIZWFkaW5nKGZpbGUsIHBhcmFtZXRlcnMuaGVhZGluZyk/LmZpcnN0TGluZTtcbiAgICAgICAgICAgICAgICBpZiAobGluZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5hcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lcyA9IGRhdGEuc3BsaXQoXCJcXG5cIik7XG5cbiAgICAgICAgICAgICAgICBsaW5lcy5zcGxpY2UobGluZSwgMCwgLi4ucGFyYW1ldGVycy5kYXRhLnNwbGl0KFwiXFxuXCIpKTtcbiAgICAgICAgICAgICAgICBkYXRhVG9Xcml0ZSA9IGxpbmVzLmpvaW4oXCJcXG5cIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlRGF0YSA9IGF3YWl0IHRoaXMuYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FjaGUgPSB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcblxuICAgICAgICAgICAgICAgIGlmIChjYWNoZS5mcm9udG1hdHRlcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gY2FjaGUuZnJvbnRtYXR0ZXIucG9zaXRpb24uZW5kLmxpbmU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gZmlsZURhdGEuc3BsaXQoXCJcXG5cIikuc2xpY2UoMCwgbGluZSArIDEpLmpvaW4oXCJcXG5cIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSBmaWxlRGF0YS5zcGxpdChcIlxcblwiKS5zbGljZShsaW5lICsgMSkuam9pbihcIlxcblwiKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVRvV3JpdGUgPSBmaXJzdCArIFwiXFxuXCIgKyBwYXJhbWV0ZXJzLmRhdGEgKyBcIlxcblwiICsgbGFzdDtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFUb1dyaXRlID0gcGFyYW1ldGVycy5kYXRhICsgXCJcXG5cIiArIGZpbGVEYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXRoID0gZmlsZS5wYXRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXRoID0gZmlsZTtcbiAgICAgICAgICAgICAgICBkYXRhVG9Xcml0ZSA9IHBhcmFtZXRlcnMuZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLndyaXRlQW5kT3BlbkZpbGUocGF0aCwgZGF0YVRvV3JpdGUsIHBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlQW5kT3BlbkZpbGUob3V0cHV0RmlsZU5hbWU6IHN0cmluZywgdGV4dDogc3RyaW5nLCBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKTogUHJvbWlzZTxURmlsZT4ge1xuICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKG91dHB1dEZpbGVOYW1lKTtcblxuICAgICAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmFwcC52YXVsdC5tb2RpZnkoZmlsZSwgdGV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IG91dHB1dEZpbGVOYW1lLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IHBhcnRzLnNsaWNlKDAsIHBhcnRzLmxlbmd0aCAtIDEpLmpvaW4oXCIvXCIpO1xuICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEgJiYgISh0aGlzLmFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgoZGlyKSBpbnN0YW5jZW9mIFRGb2xkZXIpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAudmF1bHQuY3JlYXRlRm9sZGVyKGRpcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBiYXNlNjRyZWdleCA9IC9eKFswLTlhLXpBLVorL117NH0pKigoWzAtOWEtekEtWisvXXsyfT09KXwoWzAtOWEtekEtWisvXXszfT0pKT8kLztcbiAgICAgICAgICAgIGlmIChiYXNlNjRyZWdleC50ZXN0KHRleHQpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAudmF1bHQuY3JlYXRlQmluYXJ5KG91dHB1dEZpbGVOYW1lLCBiYXNlNjRUb0FycmF5QnVmZmVyKHRleHQpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAudmF1bHQuY3JlYXRlKG91dHB1dEZpbGVOYW1lLCB0ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLm9wZW5GaWxlT25Xcml0ZSkge1xuICAgICAgICAgICAgbGV0IGZpbGVJc0FscmVhZHlPcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuYXBwLndvcmtzcGFjZS5pdGVyYXRlQWxsTGVhdmVzKGxlYWYgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsZWFmLnZpZXcuZmlsZT8ucGF0aCA9PT0gb3V0cHV0RmlsZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZUlzQWxyZWFkeU9wZW5lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwLndvcmtzcGFjZS5zZXRBY3RpdmVMZWFmKGxlYWYsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWZpbGVJc0FscmVhZHlPcGVuZWQpXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAud29ya3NwYWNlLm9wZW5MaW5rVGV4dChvdXRwdXRGaWxlTmFtZSwgXCJcIiwgcGFyYW1ldGVycy5uZXdwYW5lICE9PSB1bmRlZmluZWQgPyBwYXJhbWV0ZXJzLm5ld3BhbmUgPT0gXCJ0cnVlXCIgOiB0aGlzLnNldHRpbmdzLm9wZW5GaWxlT25Xcml0ZUluTmV3UGFuZSwgdGhpcy5nZXRWaWV3U3RhdGVGcm9tTW9kZShwYXJhbWV0ZXJzKSk7XG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycy5saW5lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q3Vyc29ySW5MaW5lKHBhcmFtZXRlcnMubGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKG91dHB1dEZpbGVOYW1lKSBhcyBURmlsZTtcbiAgICB9XG5cbiAgICBnZXRFbmRBbmRCZWdpbm5pbmdPZkhlYWRpbmcoZmlsZTogVEZpbGUsIGhlYWRpbmc6IHN0cmluZyk6IHsgXCJsYXN0TGluZVwiOiBudW1iZXIsIFwiZmlyc3RMaW5lXCI6IG51bWJlcjsgfSB7XG4gICAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25zID0gY2FjaGUuc2VjdGlvbnM7XG4gICAgICAgIGNvbnN0IGZvdW5kSGVhZGluZyA9IGNhY2hlLmhlYWRpbmdzPy5maW5kKGUgPT4gZS5oZWFkaW5nID09PSBoZWFkaW5nKTtcblxuXG4gICAgICAgIGlmIChmb3VuZEhlYWRpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kU2VjdGlvbkluZGV4ID0gc2VjdGlvbnMuZmluZEluZGV4KHNlY3Rpb24gPT4gc2VjdGlvbi50eXBlID09PSBcImhlYWRpbmdcIiAmJiBzZWN0aW9uLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPT09IGZvdW5kSGVhZGluZy5wb3NpdGlvbi5zdGFydC5saW5lKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3RTZWN0aW9ucyA9IHNlY3Rpb25zLnNsaWNlKGZvdW5kU2VjdGlvbkluZGV4ICsgMSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG5leHRIZWFkaW5nSW5kZXggPSByZXN0U2VjdGlvbnM/LmZpbmRJbmRleChlID0+IGUudHlwZSA9PT0gXCJoZWFkaW5nXCIpO1xuXG4gICAgICAgICAgICBjb25zdCBsYXN0U2VjdGlvbiA9IHJlc3RTZWN0aW9uc1sobmV4dEhlYWRpbmdJbmRleCAhPT0gLTEgPyBuZXh0SGVhZGluZ0luZGV4IDogcmVzdFNlY3Rpb25zLmxlbmd0aCkgLSAxXSA/PyBzZWN0aW9uc1tmb3VuZFNlY3Rpb25JbmRleF07XG4gICAgICAgICAgICBjb25zdCBsYXN0TGluZSA9IGxhc3RTZWN0aW9uLnBvc2l0aW9uLmVuZC5saW5lICsgMTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgXCJsYXN0TGluZVwiOiBsYXN0TGluZSwgXCJmaXJzdExpbmVcIjogc2VjdGlvbnNbZm91bmRTZWN0aW9uSW5kZXhdLnBvc2l0aW9uLmVuZC5saW5lICsgMSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3IE5vdGljZShcIkNhbid0IGZpbmQgaGVhZGluZ1wiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHNldEN1cnNvcihtb2RlOiBQYXJhbWV0ZXJzW1wibW9kZVwiXSkge1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcbiAgICAgICAgaWYgKHZpZXcpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkaXRvciA9IHZpZXcuZWRpdG9yO1xuXG4gICAgICAgICAgICBsZXQgdmlld1N0YXRlID0gdmlldy5sZWFmLmdldFZpZXdTdGF0ZSgpO1xuICAgICAgICAgICAgdmlld1N0YXRlLnN0YXRlLm1vZGUgPSBcInNvdXJjZVwiO1xuXG4gICAgICAgICAgICBpZiAobW9kZSA9PT0gXCJhcHBlbmRcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RMaW5lID0gZWRpdG9yLmxhc3RMaW5lKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdExpbmVMZW5ndGggPSBlZGl0b3IuZ2V0TGluZShsYXN0TGluZSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGF3YWl0IHZpZXcubGVhZi5zZXRWaWV3U3RhdGUodmlld1N0YXRlLCB7IGZvY3VzOiB0cnVlIH0pO1xuXG4gICAgICAgICAgICAgICAgZWRpdG9yLnNldEN1cnNvcih7IGNoOiBsYXN0TGluZUxlbmd0aCwgbGluZTogbGFzdExpbmUgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT09IFwicHJlcGVuZFwiKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdmlldy5sZWFmLnNldFZpZXdTdGF0ZSh2aWV3U3RhdGUsIHsgZm9jdXM6IHRydWUgfSk7XG5cbiAgICAgICAgICAgICAgICBlZGl0b3Iuc2V0Q3Vyc29yKHsgY2g6IDAsIGxpbmU6IDAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRDdXJzb3JJbkxpbmUocmF3TGluZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpO1xuICAgICAgICBpZiAoIXZpZXcpIHJldHVybjtcbiAgICAgICAgY29uc3QgbGluZSA9IE1hdGgubWluKHJhd0xpbmUgLSAxLCB2aWV3LmVkaXRvci5saW5lQ291bnQoKSAtIDEpO1xuICAgICAgICB2aWV3LmVkaXRvci5mb2N1cygpO1xuICAgICAgICB2aWV3LmVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBsaW5lLCBjaDogdmlldy5lZGl0b3IuZ2V0TGluZShsaW5lKS5sZW5ndGggfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ29weUZpbGVVUkkod2l0aG91dERhdGE6IGJvb2xlYW4sIGZpbGU/OiBURmlsZSkge1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcbiAgICAgICAgaWYgKCF2aWV3ICYmICFmaWxlKSByZXR1cm47XG4gICAgICAgIGlmICh2aWV3KSB7XG4gICAgICAgICAgICBjb25zdCBwb3MgPSB2aWV3LmVkaXRvci5nZXRDdXJzb3IoKTtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUodmlldy5maWxlKTtcbiAgICAgICAgICAgIGlmIChjYWNoZS5oZWFkaW5ncykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaGVhZGluZyBvZiBjYWNoZS5oZWFkaW5ncykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGluZy5wb3NpdGlvbi5zdGFydC5saW5lIDw9IHBvcy5saW5lICYmIGhlYWRpbmcucG9zaXRpb24uZW5kLmxpbmUgPj0gcG9zLmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29weVVSSSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXBhdGg6IHZpZXcuZmlsZS5wYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRpbmc6IGhlYWRpbmcuaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FjaGUuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBibG9ja0lEIG9mIE9iamVjdC5rZXlzKGNhY2hlLmJsb2NrcykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBjYWNoZS5ibG9ja3NbYmxvY2tJRF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChibG9jay5wb3NpdGlvbi5zdGFydC5saW5lIDw9IHBvcy5saW5lICYmIGJsb2NrLnBvc2l0aW9uLmVuZC5saW5lID49IHBvcy5saW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvcHlVUkkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVwYXRoOiB2aWV3LmZpbGUucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jazogYmxvY2tJRFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod2l0aG91dERhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUyID0gZmlsZSA/PyB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuICAgICAgICAgICAgaWYgKCFmaWxlMikge1xuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJObyBmaWxlIG9wZW5lZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvcHlVUkkoe1xuICAgICAgICAgICAgICAgIGZpbGVwYXRoOiBmaWxlMi5wYXRoLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlTW9kYWwgPSBuZXcgRmlsZU1vZGFsKHRoaXMsIFwiQ2hvb3NlIGEgZmlsZVwiLCBmYWxzZSk7XG4gICAgICAgICAgICBmaWxlTW9kYWwub3BlbigpO1xuICAgICAgICAgICAgZmlsZU1vZGFsLm9uQ2hvb3NlSXRlbSA9IChpdGVtLCBfKSA9PiB7XG5cbiAgICAgICAgICAgICAgICBuZXcgRW50ZXJEYXRhTW9kYWwodGhpcywgaXRlbS5zb3VyY2UpLm9wZW4oKTtcblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgaGFuZGxlT3BlblNldHRpbmdzKHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwLnNldHRpbmcuY29udGFpbmVyRWwucGFyZW50RWxlbWVudCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5hcHAuc2V0dGluZy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2V0dGluZ2lkID09IFwicGx1Z2luLWJyb3dzZXJcIikge1xuICAgICAgICAgICAgdGhpcy5hcHAuc2V0dGluZy5vcGVuVGFiQnlJZChcImNvbW11bml0eS1wbHVnaW5zXCIpO1xuICAgICAgICAgICAgdGhpcy5hcHAuc2V0dGluZy5hY3RpdmVUYWIuY29udGFpbmVyRWwuZmluZChcIi5tb2QtY3RhXCIpLmNsaWNrKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVycy5zZXR0aW5naWQgPT0gXCJ0aGVtZS1icm93c2VyXCIpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwLnNldHRpbmcub3BlblRhYkJ5SWQoXCJhcHBlYXJhbmNlXCIpO1xuICAgICAgICAgICAgdGhpcy5hcHAuc2V0dGluZy5hY3RpdmVUYWIuY29udGFpbmVyRWwuZmluZChcIi5tb2QtY3RhXCIpLmNsaWNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5zZXR0aW5nLm9wZW5UYWJCeUlkKHBhcmFtZXRlcnMuc2V0dGluZ2lkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Y2Nlc3MocGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlVXBkYXRlUGx1Z2lucyhwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKSB7XG4gICAgICAgIHBhcmFtZXRlcnMuc2V0dGluZ2lkID0gXCJjb21tdW5pdHktcGx1Z2luc1wiO1xuICAgICAgICB0aGlzLmhhbmRsZU9wZW5TZXR0aW5ncyhwYXJhbWV0ZXJzKTtcbiAgICAgICAgdGhpcy5hcHAuc2V0dGluZy5hY3RpdmVUYWIuY29udGFpbmVyRWwuZmluZEFsbChcIi5tb2QtY3RhXCIpLmxhc3QoKS5jbGljaygpO1xuICAgICAgICBuZXcgTm90aWNlKFwiV2FpdGluZyAxMCBzZWNvbmRzXCIpO1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAgKiAxMDAwKSk7XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKCh0aGlzLmFwcCBhcyBhbnkpLnBsdWdpbnMudXBkYXRlcykubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5zZXR0aW5nLmFjdGl2ZVRhYi5jb250YWluZXJFbC5maW5kQWxsKFwiLm1vZC1jdGFcIikubGFzdCgpLmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWNjZXNzKHBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIGdldEFsdGVybmF0aXZlRmlsZVBhdGgoZmlsZTogVEZpbGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkaXIgPSBmaWxlLnBhcmVudD8ucGF0aDtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkRGlyID0gZGlyID09PSBcIi9cIiA/IFwiXCIgOiBkaXI7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWU7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCAxMDA7IGluZGV4KyspIHtcblxuICAgICAgICAgICAgY29uc3QgYmFzZSA9IHN0cmlwTUQobmFtZSk7XG4gICAgICAgICAgICBjb25zdCBhbHRlcm5hdGl2ZSA9IGZvcm1hdHRlZERpciArIChmb3JtYXR0ZWREaXIgPT0gXCJcIiA/IFwiXCIgOiBcIi9cIikgKyBiYXNlICsgYCAke2luZGV4fS5tZGA7XG5cbiAgICAgICAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChhbHRlcm5hdGl2ZSkgIT09IG51bGw7XG4gICAgICAgICAgICBpZiAoIWV4aXN0cykge1xuICAgICAgICAgICAgICAgIHJldHVybiBhbHRlcm5hdGl2ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGdlbmVyYXRlVVJJKHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpIHtcbiAgICAgICAgbGV0IHVyaSA9IGBvYnNpZGlhbjovL2FkdmFuY2VkLXVyaT92YXVsdD0ke3RoaXMuYXBwLnZhdWx0LmdldE5hbWUoKX1gO1xuICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHBhcmFtZXRlcnMuZmlsZXBhdGgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnVzZVVJRCAmJiBmaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgICAgICAgIHBhcmFtZXRlcnMuZmlsZXBhdGggPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBwYXJhbWV0ZXJzLnVpZCA9IGF3YWl0IHRoaXMuZ2V0VUlERnJvbUZpbGUoZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBwYXJhbWV0ZXIgaW4gcGFyYW1ldGVycykge1xuXG4gICAgICAgICAgICBpZiAoKHBhcmFtZXRlcnMgYXMgYW55KVtwYXJhbWV0ZXJdICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHVyaSA9IHVyaSArIGAmJHtwYXJhbWV0ZXJ9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KChwYXJhbWV0ZXJzIGFzIGFueSlbcGFyYW1ldGVyXSl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJpO1xuICAgIH1cblxuICAgIGFzeW5jIGNvcHlVUkkocGFyYW1ldGVyczogUGFyYW1ldGVycykge1xuICAgICAgICBjb25zdCB1cmkgPSBhd2FpdCB0aGlzLmdlbmVyYXRlVVJJKHBhcmFtZXRlcnMpO1xuICAgICAgICBhd2FpdCB0aGlzLmNvcHlUZXh0KGVuY29kZVVSSSh1cmkpKTtcblxuICAgICAgICBuZXcgTm90aWNlKFwiQWR2YW5jZWQgVVJJIGNvcGllZCB0byB5b3VyIGNsaXBib2FyZFwiKTtcbiAgICB9XG5cbiAgICBjb3B5VGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgIH07XG5cbiAgICBhc3luYyBnZXRVSURGcm9tRmlsZShmaWxlOiBURmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGxldCBjYWNoZTogQ2FjaGVkTWV0YWRhdGE7XG5cbiAgICAgICAgLy9hd2FpdCBwYXJzaW5nIG9mIGZyb250bWF0dGVyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDIwOyBpKyspIHtcbiAgICAgICAgICAgIGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG5cbiAgICAgICAgICAgIGlmIChjYWNoZSAhPT0gdW5kZWZpbmVkKSBicmVhaztcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxNTApKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1aWQgPSBwYXJzZUZyb250TWF0dGVyRW50cnkoY2FjaGUuZnJvbnRtYXR0ZXIsIHRoaXMuc2V0dGluZ3MuaWRGaWVsZCk7XG4gICAgICAgIGlmICh1aWQgIT0gdW5kZWZpbmVkKSByZXR1cm4gdWlkO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy53cml0ZVVJRFRvRmlsZShmaWxlLCB1dWlkdjQoKSk7XG4gICAgfTtcblxuICAgIGFzeW5jIHdyaXRlVUlEVG9GaWxlKGZpbGU6IFRGaWxlLCB1aWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG5cbiAgICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKT8uZnJvbnRtYXR0ZXI7XG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50OiBzdHJpbmcgPSBhd2FpdCB0aGlzLmFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICAgICAgICBjb25zdCBpc1lhbWxFbXB0eTogYm9vbGVhbiA9ICgoIWZyb250bWF0dGVyIHx8IGZyb250bWF0dGVyLmxlbmd0aCA9PT0gMCkgJiYgIWZpbGVDb250ZW50Lm1hdGNoKC9eLXszfVxccypcXG4qXFxyKi17M30vKSk7XG4gICAgICAgIGxldCBzcGxpdENvbnRlbnQgPSBmaWxlQ29udGVudC5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgaWYgKGlzWWFtbEVtcHR5KSB7XG4gICAgICAgICAgICBzcGxpdENvbnRlbnQudW5zaGlmdChcIi0tLVwiKTtcbiAgICAgICAgICAgIHNwbGl0Q29udGVudC51bnNoaWZ0KGAke3RoaXMuc2V0dGluZ3MuaWRGaWVsZH06ICR7dWlkfWApO1xuICAgICAgICAgICAgc3BsaXRDb250ZW50LnVuc2hpZnQoXCItLS1cIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzcGxpdENvbnRlbnQuc3BsaWNlKDEsIDAsIGAke3RoaXMuc2V0dGluZ3MuaWRGaWVsZH06ICR7dWlkfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3RmlsZUNvbnRlbnQgPSBzcGxpdENvbnRlbnQuam9pbihcIlxcblwiKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hcHAudmF1bHQubW9kaWZ5KGZpbGUsIG5ld0ZpbGVDb250ZW50KTtcbiAgICAgICAgcmV0dXJuIHVpZDtcbiAgICB9XG5cbiAgICBnZXRWaWV3U3RhdGVGcm9tTW9kZShwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKSB7XG4gICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLnZpZXdtb2RlID8geyBzdGF0ZTogeyBtb2RlOiBwYXJhbWV0ZXJzLnZpZXdtb2RlIH0gfSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgYXN5bmMgbG9hZFNldHRpbmdzKCkge1xuICAgICAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbihERUZBVUxUX1NFVFRJTkdTLCBhd2FpdCB0aGlzLmxvYWREYXRhKCkpO1xuICAgIH1cblxuICAgIGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcbiAgICB9XG59XG4iXSwibmFtZXMiOlsidGhpcyIsIm9ic2lkaWFuIiwibm9ybWFsaXplUGF0aCIsImdldERhaWx5Tm90ZVNldHRpbmdzIiwiRnV6enlTdWdnZXN0TW9kYWwiLCJTdWdnZXN0TW9kYWwiLCJTZXR0aW5nIiwiUGx1Z2luU2V0dGluZ1RhYiIsInBhcnNlRnJvbnRNYXR0ZXJBbGlhc2VzIiwiYXBwSGFzRGFpbHlOb3Rlc1BsdWdpbkxvYWRlZCIsIk5vdGljZSIsImdldEFsbERhaWx5Tm90ZXMiLCJnZXREYWlseU5vdGUiLCJjcmVhdGVEYWlseU5vdGUiLCJURmlsZSIsInBhcnNlRnJvbnRNYXR0ZXJFbnRyeSIsIk1hcmtkb3duVmlldyIsIlRGb2xkZXIiLCJiYXNlNjRUb0FycmF5QnVmZmVyIiwidXVpZHY0IiwiUGx1Z2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ25DLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjO0FBQ3pDLFNBQVMsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFlBQVksS0FBSyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNwRixRQUFRLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMxRyxJQUFJLE9BQU8sYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUM7QUFDRjtBQUNPLFNBQVMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDaEMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFVBQVUsSUFBSSxDQUFDLEtBQUssSUFBSTtBQUM3QyxRQUFRLE1BQU0sSUFBSSxTQUFTLENBQUMsc0JBQXNCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLCtCQUErQixDQUFDLENBQUM7QUFDbEcsSUFBSSxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLElBQUksU0FBUyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQzNDLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBdUNEO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRDtBQUNPLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDM0MsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JILElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxLQUFLLFVBQVUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0osSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN0RSxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUN0RSxRQUFRLE9BQU8sQ0FBQyxFQUFFLElBQUk7QUFDdEIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN6SyxZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEQsWUFBWSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDekIsZ0JBQWdCLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU07QUFDOUMsZ0JBQWdCLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUN4RSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUztBQUNqRSxnQkFBZ0I7QUFDaEIsb0JBQW9CLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUU7QUFDaEksb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDMUcsb0JBQW9CLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUN6RixvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVB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QUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksVUFBVSxNQUFNLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksTUFBTSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxHQUFHLElBQUksTUFBTSxFQUFFLEVBQUUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUNqUTtBQUNBLElBQUksWUFBWSxHQUFHLFlBQVksRUFBRSxTQUFTLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsSUFBSSxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxDQUFDLElBQUksT0FBTyxJQUFJLFVBQVUsRUFBRSxVQUFVLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxVQUFVLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEVBQUUsSUFBSSxVQUFVLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxV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QUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FB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 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3QvZmVhdGhlci5qcyIsIm5vZGVfbW9kdWxlcy9vYnNpZGlhbi1jb21tdW5pdHktbGliL2Rpc3QvdXRpbHMuanMiLCJub2RlX21vZHVsZXMvb2JzaWRpYW4tZGFpbHktbm90ZXMtaW50ZXJmYWNlL2Rpc3QvbWFpbi5qcyIsIm5vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvcm5nLmpzIiwibm9kZV9tb2R1bGVzL3V1aWQvZGlzdC9lc20tYnJvd3Nlci9yZWdleC5qcyIsIm5vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdmFsaWRhdGUuanMiLCJub2RlX21vZHVsZXMvdXVpZC9kaXN0L2VzbS1icm93c2VyL3N0cmluZ2lmeS5qcyIsIm5vZGVfbW9kdWxlcy91dWlkL2Rpc3QvZXNtLWJyb3dzZXIvdjQuanMiLCJzcmMvZGFpbHlfbm90ZV91dGlscy50cyIsInNyYy9tb2RhbHMvY29tbWFuZF9tb2RhbC50cyIsInNyYy9tb2RhbHMvZW50ZXJfZGF0YV9tb2RhbC50cyIsInNyYy9tb2RhbHMvZmlsZV9tb2RhbC50cyIsInNyYy9tb2RhbHMvcmVwbGFjZV9tb2RhbC50cyIsInNyYy9tb2RhbHMvc2VhcmNoX21vZGFsLnRzIiwic3JjL3NldHRpbmdzLnRzIiwic3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9KTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWQoKSB7XHJcbiAgICBmb3IgKHZhciBhciA9IFtdLCBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKylcclxuICAgICAgICBhciA9IGFyLmNvbmNhdChfX3JlYWQoYXJndW1lbnRzW2ldKSk7XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbi8qKiBAZGVwcmVjYXRlZCAqL1xyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheXMoKSB7XHJcbiAgICBmb3IgKHZhciBzID0gMCwgaSA9IDAsIGlsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGlsOyBpKyspIHMgKz0gYXJndW1lbnRzW2ldLmxlbmd0aDtcclxuICAgIGZvciAodmFyIHIgPSBBcnJheShzKSwgayA9IDAsIGkgPSAwOyBpIDwgaWw7IGkrKylcclxuICAgICAgICBmb3IgKHZhciBhID0gYXJndW1lbnRzW2ldLCBqID0gMCwgamwgPSBhLmxlbmd0aDsgaiA8IGpsOyBqKyssIGsrKylcclxuICAgICAgICAgICAgcltrXSA9IGFbal07XHJcbiAgICByZXR1cm4gcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXkodG8sIGZyb20sIHBhY2spIHtcclxuICAgIGlmIChwYWNrIHx8IGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIGkgPSAwLCBsID0gZnJvbS5sZW5ndGgsIGFyOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGFyIHx8ICEoaSBpbiBmcm9tKSkge1xyXG4gICAgICAgICAgICBpZiAoIWFyKSBhciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGZyb20sIDAsIGkpO1xyXG4gICAgICAgICAgICBhcltpXSA9IGZyb21baV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRvLmNvbmNhdChhciB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tKSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHN0YXRlLCBraW5kLCBmKSB7XHJcbiAgICBpZiAoa2luZCA9PT0gXCJhXCIgJiYgIWYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQcml2YXRlIGFjY2Vzc29yIHdhcyBkZWZpbmVkIHdpdGhvdXQgYSBnZXR0ZXJcIik7XHJcbiAgICBpZiAodHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciAhPT0gc3RhdGUgfHwgIWYgOiAhc3RhdGUuaGFzKHJlY2VpdmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCByZWFkIHByaXZhdGUgbWVtYmVyIGZyb20gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiBraW5kID09PSBcIm1cIiA/IGYgOiBraW5kID09PSBcImFcIiA/IGYuY2FsbChyZWNlaXZlcikgOiBmID8gZi52YWx1ZSA6IHN0YXRlLmdldChyZWNlaXZlcik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0KHJlY2VpdmVyLCBzdGF0ZSwgdmFsdWUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcIm1cIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgbWV0aG9kIGlzIG5vdCB3cml0YWJsZVwiKTtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIHNldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHdyaXRlIHByaXZhdGUgbWVtYmVyIHRvIGFuIG9iamVjdCB3aG9zZSBjbGFzcyBkaWQgbm90IGRlY2xhcmUgaXRcIik7XHJcbiAgICByZXR1cm4gKGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyLCB2YWx1ZSkgOiBmID8gZi52YWx1ZSA9IHZhbHVlIDogc3RhdGUuc2V0KHJlY2VpdmVyLCB2YWx1ZSkpLCB2YWx1ZTtcclxufVxyXG4iLCIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJmZWF0aGVyXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcImZlYXRoZXJcIl0gPSBmYWN0b3J5KCk7XG59KSh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcywgZnVuY3Rpb24oKSB7XG5yZXR1cm4gLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJhcFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuLyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovIFx0XHR9XG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0XHRpOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0XHRcdGw6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge31cbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4vKioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbi8qKioqKiovIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4vKioqKioqLyBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwge1xuLyoqKioqKi8gXHRcdFx0XHRjb25maWd1cmFibGU6IGZhbHNlLFxuLyoqKioqKi8gXHRcdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuLyoqKioqKi8gXHRcdFx0XHRnZXQ6IGdldHRlclxuLyoqKioqKi8gXHRcdFx0fSk7XG4vKioqKioqLyBcdFx0fVxuLyoqKioqKi8gXHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuLyoqKioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4vKioqKioqLyBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbi8qKioqKiovIFx0fTtcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuLyoqKioqKi8gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuLyoqKioqKi8gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbi8qKioqKiovIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4vKioqKioqLyBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuLyoqKioqKi8gXHRcdHJldHVybiBnZXR0ZXI7XG4vKioqKioqLyBcdH07XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbi8qKioqKiovIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMCk7XG4vKioqKioqLyB9KVxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKiovICh7XG5cbi8qKiovIFwiLi9kaXN0L2ljb25zLmpzb25cIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9kaXN0L2ljb25zLmpzb24gKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgZXhwb3J0cyBwcm92aWRlZDogYWN0aXZpdHksIGFpcnBsYXksIGFsZXJ0LWNpcmNsZSwgYWxlcnQtb2N0YWdvbiwgYWxlcnQtdHJpYW5nbGUsIGFsaWduLWNlbnRlciwgYWxpZ24tanVzdGlmeSwgYWxpZ24tbGVmdCwgYWxpZ24tcmlnaHQsIGFuY2hvciwgYXBlcnR1cmUsIGFyY2hpdmUsIGFycm93LWRvd24tY2lyY2xlLCBhcnJvdy1kb3duLWxlZnQsIGFycm93LWRvd24tcmlnaHQsIGFycm93LWRvd24sIGFycm93LWxlZnQtY2lyY2xlLCBhcnJvdy1sZWZ0LCBhcnJvdy1yaWdodC1jaXJjbGUsIGFycm93LXJpZ2h0LCBhcnJvdy11cC1jaXJjbGUsIGFycm93LXVwLWxlZnQsIGFycm93LXVwLXJpZ2h0LCBhcnJvdy11cCwgYXQtc2lnbiwgYXdhcmQsIGJhci1jaGFydC0yLCBiYXItY2hhcnQsIGJhdHRlcnktY2hhcmdpbmcsIGJhdHRlcnksIGJlbGwtb2ZmLCBiZWxsLCBibHVldG9vdGgsIGJvbGQsIGJvb2stb3BlbiwgYm9vaywgYm9va21hcmssIGJveCwgYnJpZWZjYXNlLCBjYWxlbmRhciwgY2FtZXJhLW9mZiwgY2FtZXJhLCBjYXN0LCBjaGVjay1jaXJjbGUsIGNoZWNrLXNxdWFyZSwgY2hlY2ssIGNoZXZyb24tZG93biwgY2hldnJvbi1sZWZ0LCBjaGV2cm9uLXJpZ2h0LCBjaGV2cm9uLXVwLCBjaGV2cm9ucy1kb3duLCBjaGV2cm9ucy1sZWZ0LCBjaGV2cm9ucy1yaWdodCwgY2hldnJvbnMtdXAsIGNocm9tZSwgY2lyY2xlLCBjbGlwYm9hcmQsIGNsb2NrLCBjbG91ZC1kcml6emxlLCBjbG91ZC1saWdodG5pbmcsIGNsb3VkLW9mZiwgY2xvdWQtcmFpbiwgY2xvdWQtc25vdywgY2xvdWQsIGNvZGUsIGNvZGVwZW4sIGNvZGVzYW5kYm94LCBjb2ZmZWUsIGNvbHVtbnMsIGNvbW1hbmQsIGNvbXBhc3MsIGNvcHksIGNvcm5lci1kb3duLWxlZnQsIGNvcm5lci1kb3duLXJpZ2h0LCBjb3JuZXItbGVmdC1kb3duLCBjb3JuZXItbGVmdC11cCwgY29ybmVyLXJpZ2h0LWRvd24sIGNvcm5lci1yaWdodC11cCwgY29ybmVyLXVwLWxlZnQsIGNvcm5lci11cC1yaWdodCwgY3B1LCBjcmVkaXQtY2FyZCwgY3JvcCwgY3Jvc3NoYWlyLCBkYXRhYmFzZSwgZGVsZXRlLCBkaXNjLCBkaXZpZGUtY2lyY2xlLCBkaXZpZGUtc3F1YXJlLCBkaXZpZGUsIGRvbGxhci1zaWduLCBkb3dubG9hZC1jbG91ZCwgZG93bmxvYWQsIGRyaWJiYmxlLCBkcm9wbGV0LCBlZGl0LTIsIGVkaXQtMywgZWRpdCwgZXh0ZXJuYWwtbGluaywgZXllLW9mZiwgZXllLCBmYWNlYm9vaywgZmFzdC1mb3J3YXJkLCBmZWF0aGVyLCBmaWdtYSwgZmlsZS1taW51cywgZmlsZS1wbHVzLCBmaWxlLXRleHQsIGZpbGUsIGZpbG0sIGZpbHRlciwgZmxhZywgZm9sZGVyLW1pbnVzLCBmb2xkZXItcGx1cywgZm9sZGVyLCBmcmFtZXIsIGZyb3duLCBnaWZ0LCBnaXQtYnJhbmNoLCBnaXQtY29tbWl0LCBnaXQtbWVyZ2UsIGdpdC1wdWxsLXJlcXVlc3QsIGdpdGh1YiwgZ2l0bGFiLCBnbG9iZSwgZ3JpZCwgaGFyZC1kcml2ZSwgaGFzaCwgaGVhZHBob25lcywgaGVhcnQsIGhlbHAtY2lyY2xlLCBoZXhhZ29uLCBob21lLCBpbWFnZSwgaW5ib3gsIGluZm8sIGluc3RhZ3JhbSwgaXRhbGljLCBrZXksIGxheWVycywgbGF5b3V0LCBsaWZlLWJ1b3ksIGxpbmstMiwgbGluaywgbGlua2VkaW4sIGxpc3QsIGxvYWRlciwgbG9jaywgbG9nLWluLCBsb2ctb3V0LCBtYWlsLCBtYXAtcGluLCBtYXAsIG1heGltaXplLTIsIG1heGltaXplLCBtZWgsIG1lbnUsIG1lc3NhZ2UtY2lyY2xlLCBtZXNzYWdlLXNxdWFyZSwgbWljLW9mZiwgbWljLCBtaW5pbWl6ZS0yLCBtaW5pbWl6ZSwgbWludXMtY2lyY2xlLCBtaW51cy1zcXVhcmUsIG1pbnVzLCBtb25pdG9yLCBtb29uLCBtb3JlLWhvcml6b250YWwsIG1vcmUtdmVydGljYWwsIG1vdXNlLXBvaW50ZXIsIG1vdmUsIG11c2ljLCBuYXZpZ2F0aW9uLTIsIG5hdmlnYXRpb24sIG9jdGFnb24sIHBhY2thZ2UsIHBhcGVyY2xpcCwgcGF1c2UtY2lyY2xlLCBwYXVzZSwgcGVuLXRvb2wsIHBlcmNlbnQsIHBob25lLWNhbGwsIHBob25lLWZvcndhcmRlZCwgcGhvbmUtaW5jb21pbmcsIHBob25lLW1pc3NlZCwgcGhvbmUtb2ZmLCBwaG9uZS1vdXRnb2luZywgcGhvbmUsIHBpZS1jaGFydCwgcGxheS1jaXJjbGUsIHBsYXksIHBsdXMtY2lyY2xlLCBwbHVzLXNxdWFyZSwgcGx1cywgcG9ja2V0LCBwb3dlciwgcHJpbnRlciwgcmFkaW8sIHJlZnJlc2gtY2N3LCByZWZyZXNoLWN3LCByZXBlYXQsIHJld2luZCwgcm90YXRlLWNjdywgcm90YXRlLWN3LCByc3MsIHNhdmUsIHNjaXNzb3JzLCBzZWFyY2gsIHNlbmQsIHNlcnZlciwgc2V0dGluZ3MsIHNoYXJlLTIsIHNoYXJlLCBzaGllbGQtb2ZmLCBzaGllbGQsIHNob3BwaW5nLWJhZywgc2hvcHBpbmctY2FydCwgc2h1ZmZsZSwgc2lkZWJhciwgc2tpcC1iYWNrLCBza2lwLWZvcndhcmQsIHNsYWNrLCBzbGFzaCwgc2xpZGVycywgc21hcnRwaG9uZSwgc21pbGUsIHNwZWFrZXIsIHNxdWFyZSwgc3Rhciwgc3RvcC1jaXJjbGUsIHN1biwgc3VucmlzZSwgc3Vuc2V0LCB0YWJsZXQsIHRhZywgdGFyZ2V0LCB0ZXJtaW5hbCwgdGhlcm1vbWV0ZXIsIHRodW1icy1kb3duLCB0aHVtYnMtdXAsIHRvZ2dsZS1sZWZ0LCB0b2dnbGUtcmlnaHQsIHRvb2wsIHRyYXNoLTIsIHRyYXNoLCB0cmVsbG8sIHRyZW5kaW5nLWRvd24sIHRyZW5kaW5nLXVwLCB0cmlhbmdsZSwgdHJ1Y2ssIHR2LCB0d2l0Y2gsIHR3aXR0ZXIsIHR5cGUsIHVtYnJlbGxhLCB1bmRlcmxpbmUsIHVubG9jaywgdXBsb2FkLWNsb3VkLCB1cGxvYWQsIHVzZXItY2hlY2ssIHVzZXItbWludXMsIHVzZXItcGx1cywgdXNlci14LCB1c2VyLCB1c2VycywgdmlkZW8tb2ZmLCB2aWRlbywgdm9pY2VtYWlsLCB2b2x1bWUtMSwgdm9sdW1lLTIsIHZvbHVtZS14LCB2b2x1bWUsIHdhdGNoLCB3aWZpLW9mZiwgd2lmaSwgd2luZCwgeC1jaXJjbGUsIHgtb2N0YWdvbiwgeC1zcXVhcmUsIHgsIHlvdXR1YmUsIHphcC1vZmYsIHphcCwgem9vbS1pbiwgem9vbS1vdXQsIGRlZmF1bHQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUpIHtcblxubW9kdWxlLmV4cG9ydHMgPSB7XCJhY3Rpdml0eVwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMjIgMTIgMTggMTIgMTUgMjEgOSAzIDYgMTIgMiAxMlxcXCI+PC9wb2x5bGluZT5cIixcImFpcnBsYXlcIjpcIjxwYXRoIGQ9XFxcIk01IDE3SDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYxMGEyIDIgMCAwIDEtMiAyaC0xXFxcIj48L3BhdGg+PHBvbHlnb24gcG9pbnRzPVxcXCIxMiAxNSAxNyAyMSA3IDIxIDEyIDE1XFxcIj48L3BvbHlnb24+XCIsXCJhbGVydC1jaXJjbGVcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMTIuMDFcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPlwiLFwiYWxlcnQtb2N0YWdvblwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCI3Ljg2IDIgMTYuMTQgMiAyMiA3Ljg2IDIyIDE2LjE0IDE2LjE0IDIyIDcuODYgMjIgMiAxNi4xNCAyIDcuODYgNy44NiAyXFxcIj48L3BvbHlnb24+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxNlxcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiMTZcXFwiPjwvbGluZT5cIixcImFsZXJ0LXRyaWFuZ2xlXCI6XCI8cGF0aCBkPVxcXCJNMTAuMjkgMy44NkwxLjgyIDE4YTIgMiAwIDAgMCAxLjcxIDNoMTYuOTRhMiAyIDAgMCAwIDEuNzEtM0wxMy43MSAzLjg2YTIgMiAwIDAgMC0zLjQyIDB6XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiOVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTNcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxN1xcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiMTdcXFwiPjwvbGluZT5cIixcImFsaWduLWNlbnRlclwiOlwiPGxpbmUgeDE9XFxcIjE4XFxcIiB5MT1cXFwiMTBcXFwiIHgyPVxcXCI2XFxcIiB5Mj1cXFwiMTBcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMjFcXFwiIHkxPVxcXCI2XFxcIiB4Mj1cXFwiM1xcXCIgeTI9XFxcIjZcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMjFcXFwiIHkxPVxcXCIxNFxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCIxNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxOFxcXCIgeTE9XFxcIjE4XFxcIiB4Mj1cXFwiNlxcXCIgeTI9XFxcIjE4XFxcIj48L2xpbmU+XCIsXCJhbGlnbi1qdXN0aWZ5XCI6XCI8bGluZSB4MT1cXFwiMjFcXFwiIHkxPVxcXCIxMFxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCIxMFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjZcXFwiIHgyPVxcXCIzXFxcIiB5Mj1cXFwiNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjE0XFxcIiB4Mj1cXFwiM1xcXCIgeTI9XFxcIjE0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjIxXFxcIiB5MT1cXFwiMThcXFwiIHgyPVxcXCIzXFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT5cIixcImFsaWduLWxlZnRcIjpcIjxsaW5lIHgxPVxcXCIxN1xcXCIgeTE9XFxcIjEwXFxcIiB4Mj1cXFwiM1xcXCIgeTI9XFxcIjEwXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjIxXFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCI2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjIxXFxcIiB5MT1cXFwiMTRcXFwiIHgyPVxcXCIzXFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTdcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPlwiLFwiYWxpZ24tcmlnaHRcIjpcIjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjEwXFxcIiB4Mj1cXFwiN1xcXCIgeTI9XFxcIjEwXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjIxXFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCI2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjIxXFxcIiB5MT1cXFwiMTRcXFwiIHgyPVxcXCIzXFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMjFcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjdcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPlwiLFwiYW5jaG9yXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjVcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjIyXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCI4XFxcIj48L2xpbmU+PHBhdGggZD1cXFwiTTUgMTJIMmExMCAxMCAwIDAgMCAyMCAwaC0zXFxcIj48L3BhdGg+XCIsXCJhcGVydHVyZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIxNC4zMVxcXCIgeTE9XFxcIjhcXFwiIHgyPVxcXCIyMC4wNVxcXCIgeTI9XFxcIjE3Ljk0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjkuNjlcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMjEuMTdcXFwiIHkyPVxcXCI4XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjcuMzhcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjEzLjEyXFxcIiB5Mj1cXFwiMi4wNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI5LjY5XFxcIiB5MT1cXFwiMTZcXFwiIHgyPVxcXCIzLjk1XFxcIiB5Mj1cXFwiNi4wNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNC4zMVxcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMi44M1xcXCIgeTI9XFxcIjE2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE2LjYyXFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxMC44OFxcXCIgeTI9XFxcIjIxLjk0XFxcIj48L2xpbmU+XCIsXCJhcmNoaXZlXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIyMSA4IDIxIDIxIDMgMjEgMyA4XFxcIj48L3BvbHlsaW5lPjxyZWN0IHg9XFxcIjFcXFwiIHk9XFxcIjNcXFwiIHdpZHRoPVxcXCIyMlxcXCIgaGVpZ2h0PVxcXCI1XFxcIj48L3JlY3Q+PGxpbmUgeDE9XFxcIjEwXFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxNFxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJhcnJvdy1kb3duLWNpcmNsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9XFxcIjggMTIgMTIgMTYgMTYgMTJcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTZcXFwiPjwvbGluZT5cIixcImFycm93LWRvd24tbGVmdFwiOlwiPGxpbmUgeDE9XFxcIjE3XFxcIiB5MT1cXFwiN1xcXCIgeDI9XFxcIjdcXFwiIHkyPVxcXCIxN1xcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjE3IDE3IDcgMTcgNyA3XFxcIj48L3BvbHlsaW5lPlwiLFwiYXJyb3ctZG93bi1yaWdodFwiOlwiPGxpbmUgeDE9XFxcIjdcXFwiIHkxPVxcXCI3XFxcIiB4Mj1cXFwiMTdcXFwiIHkyPVxcXCIxN1xcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjE3IDcgMTcgMTcgNyAxN1xcXCI+PC9wb2x5bGluZT5cIixcImFycm93LWRvd25cIjpcIjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjVcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjE5XFxcIj48L2xpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTkgMTIgMTIgMTkgNSAxMlxcXCI+PC9wb2x5bGluZT5cIixcImFycm93LWxlZnQtY2lyY2xlXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxMFxcXCI+PC9jaXJjbGU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTIgOCA4IDEyIDEyIDE2XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIxNlxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiOFxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJhcnJvdy1sZWZ0XCI6XCI8bGluZSB4MT1cXFwiMTlcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjVcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjEyIDE5IDUgMTIgMTIgNVxcXCI+PC9wb2x5bGluZT5cIixcImFycm93LXJpZ2h0LWNpcmNsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9XFxcIjEyIDE2IDE2IDEyIDEyIDhcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT5cIixcImFycm93LXJpZ2h0XCI6XCI8bGluZSB4MT1cXFwiNVxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMTlcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjEyIDUgMTkgMTIgMTIgMTlcXFwiPjwvcG9seWxpbmU+XCIsXCJhcnJvdy11cC1jaXJjbGVcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48cG9seWxpbmUgcG9pbnRzPVxcXCIxNiAxMiAxMiA4IDggMTJcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMTZcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjhcXFwiPjwvbGluZT5cIixcImFycm93LXVwLWxlZnRcIjpcIjxsaW5lIHgxPVxcXCIxN1xcXCIgeTE9XFxcIjE3XFxcIiB4Mj1cXFwiN1xcXCIgeTI9XFxcIjdcXFwiPjwvbGluZT48cG9seWxpbmUgcG9pbnRzPVxcXCI3IDE3IDcgNyAxNyA3XFxcIj48L3BvbHlsaW5lPlwiLFwiYXJyb3ctdXAtcmlnaHRcIjpcIjxsaW5lIHgxPVxcXCI3XFxcIiB5MT1cXFwiMTdcXFwiIHgyPVxcXCIxN1xcXCIgeTI9XFxcIjdcXFwiPjwvbGluZT48cG9seWxpbmUgcG9pbnRzPVxcXCI3IDcgMTcgNyAxNyAxN1xcXCI+PC9wb2x5bGluZT5cIixcImFycm93LXVwXCI6XCI8bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxOVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiNVxcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjUgMTIgMTIgNSAxOSAxMlxcXCI+PC9wb2x5bGluZT5cIixcImF0LXNpZ25cIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjRcXFwiPjwvY2lyY2xlPjxwYXRoIGQ9XFxcIk0xNiA4djVhMyAzIDAgMCAwIDYgMHYtMWExMCAxMCAwIDEgMC0zLjkyIDcuOTRcXFwiPjwvcGF0aD5cIixcImF3YXJkXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjhcXFwiIHI9XFxcIjdcXFwiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9XFxcIjguMjEgMTMuODkgNyAyMyAxMiAyMCAxNyAyMyAxNS43OSAxMy44OFxcXCI+PC9wb2x5bGluZT5cIixcImJhci1jaGFydC0yXCI6XCI8bGluZSB4MT1cXFwiMThcXFwiIHkxPVxcXCIyMFxcXCIgeDI9XFxcIjE4XFxcIiB5Mj1cXFwiMTBcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyMFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI2XFxcIiB5MT1cXFwiMjBcXFwiIHgyPVxcXCI2XFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT5cIixcImJhci1jaGFydFwiOlwiPGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMjBcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjEwXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE4XFxcIiB5MT1cXFwiMjBcXFwiIHgyPVxcXCIxOFxcXCIgeTI9XFxcIjRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiNlxcXCIgeTE9XFxcIjIwXFxcIiB4Mj1cXFwiNlxcXCIgeTI9XFxcIjE2XFxcIj48L2xpbmU+XCIsXCJiYXR0ZXJ5LWNoYXJnaW5nXCI6XCI8cGF0aCBkPVxcXCJNNSAxOEgzYTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDMuMTlNMTUgNmgyYTIgMiAwIDAgMSAyIDJ2OGEyIDIgMCAwIDEtMiAyaC0zLjE5XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjIzXFxcIiB5MT1cXFwiMTNcXFwiIHgyPVxcXCIyM1xcXCIgeTI9XFxcIjExXFxcIj48L2xpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTEgNiA3IDEyIDEzIDEyIDkgMThcXFwiPjwvcG9seWxpbmU+XCIsXCJiYXR0ZXJ5XCI6XCI8cmVjdCB4PVxcXCIxXFxcIiB5PVxcXCI2XFxcIiB3aWR0aD1cXFwiMThcXFwiIGhlaWdodD1cXFwiMTJcXFwiIHJ4PVxcXCIyXFxcIiByeT1cXFwiMlxcXCI+PC9yZWN0PjxsaW5lIHgxPVxcXCIyM1xcXCIgeTE9XFxcIjEzXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIxMVxcXCI+PC9saW5lPlwiLFwiYmVsbC1vZmZcIjpcIjxwYXRoIGQ9XFxcIk0xMy43MyAyMWEyIDIgMCAwIDEtMy40NiAwXFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTE4LjYzIDEzQTE3Ljg5IDE3Ljg5IDAgMCAxIDE4IDhcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNNi4yNiA2LjI2QTUuODYgNS44NiAwIDAgMCA2IDhjMCA3LTMgOS0zIDloMTRcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTggOGE2IDYgMCAwIDAtOS4zMy01XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPlwiLFwiYmVsbFwiOlwiPHBhdGggZD1cXFwiTTE4IDhBNiA2IDAgMCAwIDYgOGMwIDctMyA5LTMgOWgxOHMtMy0yLTMtOVxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0xMy43MyAyMWEyIDIgMCAwIDEtMy40NiAwXFxcIj48L3BhdGg+XCIsXCJibHVldG9vdGhcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjYuNSA2LjUgMTcuNSAxNy41IDEyIDIzIDEyIDEgMTcuNSA2LjUgNi41IDE3LjVcXFwiPjwvcG9seWxpbmU+XCIsXCJib2xkXCI6XCI8cGF0aCBkPVxcXCJNNiA0aDhhNCA0IDAgMCAxIDQgNCA0IDQgMCAwIDEtNCA0SDZ6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTYgMTJoOWE0IDQgMCAwIDEgNCA0IDQgNCAwIDAgMS00IDRINnpcXFwiPjwvcGF0aD5cIixcImJvb2stb3BlblwiOlwiPHBhdGggZD1cXFwiTTIgM2g2YTQgNCAwIDAgMSA0IDR2MTRhMyAzIDAgMCAwLTMtM0gyelxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0yMiAzaC02YTQgNCAwIDAgMC00IDR2MTRhMyAzIDAgMCAxIDMtM2g3elxcXCI+PC9wYXRoPlwiLFwiYm9va1wiOlwiPHBhdGggZD1cXFwiTTQgMTkuNUEyLjUgMi41IDAgMCAxIDYuNSAxN0gyMFxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk02LjUgMkgyMHYyMEg2LjVBMi41IDIuNSAwIDAgMSA0IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJ6XFxcIj48L3BhdGg+XCIsXCJib29rbWFya1wiOlwiPHBhdGggZD1cXFwiTTE5IDIxbC03LTUtNyA1VjVhMiAyIDAgMCAxIDItMmgxMGEyIDIgMCAwIDEgMiAyelxcXCI+PC9wYXRoPlwiLFwiYm94XCI6XCI8cGF0aCBkPVxcXCJNMjEgMTZWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZ6XFxcIj48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz1cXFwiMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTZcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMjIuMDhcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJicmllZmNhc2VcIjpcIjxyZWN0IHg9XFxcIjJcXFwiIHk9XFxcIjdcXFwiIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIxNFxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PHBhdGggZD1cXFwiTTE2IDIxVjVhMiAyIDAgMCAwLTItMmgtNGEyIDIgMCAwIDAtMiAydjE2XFxcIj48L3BhdGg+XCIsXCJjYWxlbmRhclwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiNFxcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiMTZcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiMTZcXFwiIHkyPVxcXCI2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiOFxcXCIgeTI9XFxcIjZcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiM1xcXCIgeTE9XFxcIjEwXFxcIiB4Mj1cXFwiMjFcXFwiIHkyPVxcXCIxMFxcXCI+PC9saW5lPlwiLFwiY2FtZXJhLW9mZlwiOlwiPGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0yMSAyMUgzYTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDNtMy0zaDZsMiAzaDRhMiAyIDAgMCAxIDIgMnY5LjM0bS03LjcyLTIuMDZhNCA0IDAgMSAxLTUuNTYtNS41NlxcXCI+PC9wYXRoPlwiLFwiY2FtZXJhXCI6XCI8cGF0aCBkPVxcXCJNMjMgMTlhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDRsMi0zaDZsMiAzaDRhMiAyIDAgMCAxIDIgMnpcXFwiPjwvcGF0aD48Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEzXFxcIiByPVxcXCI0XFxcIj48L2NpcmNsZT5cIixcImNhc3RcIjpcIjxwYXRoIGQ9XFxcIk0yIDE2LjFBNSA1IDAgMCAxIDUuOSAyME0yIDEyLjA1QTkgOSAwIDAgMSA5Ljk1IDIwTTIgOFY2YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnYxMmEyIDIgMCAwIDEtMiAyaC02XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjJcXFwiIHkxPVxcXCIyMFxcXCIgeDI9XFxcIjIuMDFcXFwiIHkyPVxcXCIyMFxcXCI+PC9saW5lPlwiLFwiY2hlY2stY2lyY2xlXCI6XCI8cGF0aCBkPVxcXCJNMjIgMTEuMDhWMTJhMTAgMTAgMCAxIDEtNS45My05LjE0XFxcIj48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz1cXFwiMjIgNCAxMiAxNC4wMSA5IDExLjAxXFxcIj48L3BvbHlsaW5lPlwiLFwiY2hlY2stc3F1YXJlXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCI5IDExIDEyIDE0IDIyIDRcXFwiPjwvcG9seWxpbmU+PHBhdGggZD1cXFwiTTIxIDEydjdhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDExXFxcIj48L3BhdGg+XCIsXCJjaGVja1wiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMjAgNiA5IDE3IDQgMTJcXFwiPjwvcG9seWxpbmU+XCIsXCJjaGV2cm9uLWRvd25cIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjYgOSAxMiAxNSAxOCA5XFxcIj48L3BvbHlsaW5lPlwiLFwiY2hldnJvbi1sZWZ0XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxNSAxOCA5IDEyIDE1IDZcXFwiPjwvcG9seWxpbmU+XCIsXCJjaGV2cm9uLXJpZ2h0XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCI5IDE4IDE1IDEyIDkgNlxcXCI+PC9wb2x5bGluZT5cIixcImNoZXZyb24tdXBcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjE4IDE1IDEyIDkgNiAxNVxcXCI+PC9wb2x5bGluZT5cIixcImNoZXZyb25zLWRvd25cIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjcgMTMgMTIgMTggMTcgMTNcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiNyA2IDEyIDExIDE3IDZcXFwiPjwvcG9seWxpbmU+XCIsXCJjaGV2cm9ucy1sZWZ0XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxMSAxNyA2IDEyIDExIDdcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTggMTcgMTMgMTIgMTggN1xcXCI+PC9wb2x5bGluZT5cIixcImNoZXZyb25zLXJpZ2h0XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxMyAxNyAxOCAxMiAxMyA3XFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjYgMTcgMTEgMTIgNiA3XFxcIj48L3BvbHlsaW5lPlwiLFwiY2hldnJvbnMtdXBcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjE3IDExIDEyIDYgNyAxMVxcXCI+PC9wb2x5bGluZT48cG9seWxpbmUgcG9pbnRzPVxcXCIxNyAxOCAxMiAxMyA3IDE4XFxcIj48L3BvbHlsaW5lPlwiLFwiY2hyb21lXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxMFxcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiNFxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjIxLjE3XFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiOFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIzLjk1XFxcIiB5MT1cXFwiNi4wNlxcXCIgeDI9XFxcIjguNTRcXFwiIHkyPVxcXCIxNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMC44OFxcXCIgeTE9XFxcIjIxLjk0XFxcIiB4Mj1cXFwiMTUuNDZcXFwiIHkyPVxcXCIxNFxcXCI+PC9saW5lPlwiLFwiY2lyY2xlXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxMFxcXCI+PC9jaXJjbGU+XCIsXCJjbGlwYm9hcmRcIjpcIjxwYXRoIGQ9XFxcIk0xNiA0aDJhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAySDZhMiAyIDAgMCAxLTItMlY2YTIgMiAwIDAgMSAyLTJoMlxcXCI+PC9wYXRoPjxyZWN0IHg9XFxcIjhcXFwiIHk9XFxcIjJcXFwiIHdpZHRoPVxcXCI4XFxcIiBoZWlnaHQ9XFxcIjRcXFwiIHJ4PVxcXCIxXFxcIiByeT1cXFwiMVxcXCI+PC9yZWN0PlwiLFwiY2xvY2tcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48cG9seWxpbmUgcG9pbnRzPVxcXCIxMiA2IDEyIDEyIDE2IDE0XFxcIj48L3BvbHlsaW5lPlwiLFwiY2xvdWQtZHJpenpsZVwiOlwiPGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIxOVxcXCIgeDI9XFxcIjhcXFwiIHkyPVxcXCIyMVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTNcXFwiIHgyPVxcXCI4XFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTZcXFwiIHkxPVxcXCIxOVxcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiMjFcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTZcXFwiIHkxPVxcXCIxM1xcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyMVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMjNcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxNVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTdcXFwiPjwvbGluZT48cGF0aCBkPVxcXCJNMjAgMTYuNThBNSA1IDAgMCAwIDE4IDdoLTEuMjZBOCA4IDAgMSAwIDQgMTUuMjVcXFwiPjwvcGF0aD5cIixcImNsb3VkLWxpZ2h0bmluZ1wiOlwiPHBhdGggZD1cXFwiTTE5IDE2LjlBNSA1IDAgMCAwIDE4IDdoLTEuMjZhOCA4IDAgMSAwLTExLjYyIDlcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxMyAxMSA5IDE3IDE1IDE3IDExIDIzXFxcIj48L3BvbHlsaW5lPlwiLFwiY2xvdWQtb2ZmXCI6XCI8cGF0aCBkPVxcXCJNMjIuNjEgMTYuOTVBNSA1IDAgMCAwIDE4IDEwaC0xLjI2YTggOCAwIDAgMC03LjA1LTZNNSA1YTggOCAwIDAgMCA0IDE1aDlhNSA1IDAgMCAwIDEuNy0uM1xcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMjNcXFwiPjwvbGluZT5cIixcImNsb3VkLXJhaW5cIjpcIjxsaW5lIHgxPVxcXCIxNlxcXCIgeTE9XFxcIjEzXFxcIiB4Mj1cXFwiMTZcXFwiIHkyPVxcXCIyMVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTNcXFwiIHgyPVxcXCI4XFxcIiB5Mj1cXFwiMjFcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxNVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMjNcXFwiPjwvbGluZT48cGF0aCBkPVxcXCJNMjAgMTYuNThBNSA1IDAgMCAwIDE4IDdoLTEuMjZBOCA4IDAgMSAwIDQgMTUuMjVcXFwiPjwvcGF0aD5cIixcImNsb3VkLXNub3dcIjpcIjxwYXRoIGQ9XFxcIk0yMCAxNy41OEE1IDUgMCAwIDAgMTggOGgtMS4yNkE4IDggMCAxIDAgNCAxNi4yNVxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTZcXFwiIHgyPVxcXCI4LjAxXFxcIiB5Mj1cXFwiMTZcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOFxcXCIgeTE9XFxcIjIwXFxcIiB4Mj1cXFwiOC4wMVxcXCIgeTI9XFxcIjIwXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMThcXFwiIHgyPVxcXCIxMi4wMVxcXCIgeTI9XFxcIjE4XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMjJcXFwiIHgyPVxcXCIxMi4wMVxcXCIgeTI9XFxcIjIyXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE2XFxcIiB5MT1cXFwiMTZcXFwiIHgyPVxcXCIxNi4wMVxcXCIgeTI9XFxcIjE2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE2XFxcIiB5MT1cXFwiMjBcXFwiIHgyPVxcXCIxNi4wMVxcXCIgeTI9XFxcIjIwXFxcIj48L2xpbmU+XCIsXCJjbG91ZFwiOlwiPHBhdGggZD1cXFwiTTE4IDEwaC0xLjI2QTggOCAwIDEgMCA5IDIwaDlhNSA1IDAgMCAwIDAtMTB6XFxcIj48L3BhdGg+XCIsXCJjb2RlXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxNiAxOCAyMiAxMiAxNiA2XFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjggNiAyIDEyIDggMThcXFwiPjwvcG9seWxpbmU+XCIsXCJjb2RlcGVuXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjEyIDIgMjIgOC41IDIyIDE1LjUgMTIgMjIgMiAxNS41IDIgOC41IDEyIDJcXFwiPjwvcG9seWdvbj48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyMlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTUuNVxcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjIyIDguNSAxMiAxNS41IDIgOC41XFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjIgMTUuNSAxMiA4LjUgMjIgMTUuNVxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCI4LjVcXFwiPjwvbGluZT5cIixcImNvZGVzYW5kYm94XCI6XCI8cGF0aCBkPVxcXCJNMjEgMTZWOGEyIDIgMCAwIDAtMS0xLjczbC03LTRhMiAyIDAgMCAwLTIgMGwtNyA0QTIgMiAwIDAgMCAzIDh2OGEyIDIgMCAwIDAgMSAxLjczbDcgNGEyIDIgMCAwIDAgMiAwbDctNEEyIDIgMCAwIDAgMjEgMTZ6XFxcIj48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz1cXFwiNy41IDQuMjEgMTIgNi44MSAxNi41IDQuMjFcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiNy41IDE5Ljc5IDcuNSAxNC42IDMgMTJcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMjEgMTIgMTYuNSAxNC42IDE2LjUgMTkuNzlcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMy4yNyA2Ljk2IDEyIDEyLjAxIDIwLjczIDYuOTZcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMjIuMDhcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJjb2ZmZWVcIjpcIjxwYXRoIGQ9XFxcIk0xOCA4aDFhNCA0IDAgMCAxIDAgOGgtMVxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0yIDhoMTZ2OWE0IDQgMCAwIDEtNCA0SDZhNCA0IDAgMCAxLTQtNFY4elxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCI2XFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjZcXFwiIHkyPVxcXCI0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEwXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjEwXFxcIiB5Mj1cXFwiNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNFxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxNFxcXCIgeTI9XFxcIjRcXFwiPjwvbGluZT5cIixcImNvbHVtbnNcIjpcIjxwYXRoIGQ9XFxcIk0xMiAzaDdhMiAyIDAgMCAxIDIgMnYxNGEyIDIgMCAwIDEtMiAyaC03bTAtMThINWEyIDIgMCAwIDAtMiAydjE0YTIgMiAwIDAgMCAyIDJoN20wLTE4djE4XFxcIj48L3BhdGg+XCIsXCJjb21tYW5kXCI6XCI8cGF0aCBkPVxcXCJNMTggM2EzIDMgMCAwIDAtMyAzdjEyYTMgMyAwIDAgMCAzIDMgMyAzIDAgMCAwIDMtMyAzIDMgMCAwIDAtMy0zSDZhMyAzIDAgMCAwLTMgMyAzIDMgMCAwIDAgMyAzIDMgMyAwIDAgMCAzLTNWNmEzIDMgMCAwIDAtMy0zIDMgMyAwIDAgMC0zIDMgMyAzIDAgMCAwIDMgM2gxMmEzIDMgMCAwIDAgMy0zIDMgMyAwIDAgMC0zLTN6XFxcIj48L3BhdGg+XCIsXCJjb21wYXNzXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxMFxcXCI+PC9jaXJjbGU+PHBvbHlnb24gcG9pbnRzPVxcXCIxNi4yNCA3Ljc2IDE0LjEyIDE0LjEyIDcuNzYgMTYuMjQgOS44OCA5Ljg4IDE2LjI0IDcuNzZcXFwiPjwvcG9seWdvbj5cIixcImNvcHlcIjpcIjxyZWN0IHg9XFxcIjlcXFwiIHk9XFxcIjlcXFwiIHdpZHRoPVxcXCIxM1xcXCIgaGVpZ2h0PVxcXCIxM1xcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PHBhdGggZD1cXFwiTTUgMTVINGEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg5YTIgMiAwIDAgMSAyIDJ2MVxcXCI+PC9wYXRoPlwiLFwiY29ybmVyLWRvd24tbGVmdFwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiOSAxMCA0IDE1IDkgMjBcXFwiPjwvcG9seWxpbmU+PHBhdGggZD1cXFwiTTIwIDR2N2E0IDQgMCAwIDEtNCA0SDRcXFwiPjwvcGF0aD5cIixcImNvcm5lci1kb3duLXJpZ2h0XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxNSAxMCAyMCAxNSAxNSAyMFxcXCI+PC9wb2x5bGluZT48cGF0aCBkPVxcXCJNNCA0djdhNCA0IDAgMCAwIDQgNGgxMlxcXCI+PC9wYXRoPlwiLFwiY29ybmVyLWxlZnQtZG93blwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMTQgMTUgOSAyMCA0IDE1XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk0yMCA0aC03YTQgNCAwIDAgMC00IDR2MTJcXFwiPjwvcGF0aD5cIixcImNvcm5lci1sZWZ0LXVwXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxNCA5IDkgNCA0IDlcXFwiPjwvcG9seWxpbmU+PHBhdGggZD1cXFwiTTIwIDIwaC03YTQgNCAwIDAgMS00LTRWNFxcXCI+PC9wYXRoPlwiLFwiY29ybmVyLXJpZ2h0LWRvd25cIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjEwIDE1IDE1IDIwIDIwIDE1XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk00IDRoN2E0IDQgMCAwIDEgNCA0djEyXFxcIj48L3BhdGg+XCIsXCJjb3JuZXItcmlnaHQtdXBcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjEwIDkgMTUgNCAyMCA5XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk00IDIwaDdhNCA0IDAgMCAwIDQtNFY0XFxcIj48L3BhdGg+XCIsXCJjb3JuZXItdXAtbGVmdFwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiOSAxNCA0IDkgOSA0XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk0yMCAyMHYtN2E0IDQgMCAwIDAtNC00SDRcXFwiPjwvcGF0aD5cIixcImNvcm5lci11cC1yaWdodFwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMTUgMTQgMjAgOSAxNSA0XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk00IDIwdi03YTQgNCAwIDAgMSA0LTRoMTJcXFwiPjwvcGF0aD5cIixcImNwdVwiOlwiPHJlY3QgeD1cXFwiNFxcXCIgeT1cXFwiNFxcXCIgd2lkdGg9XFxcIjE2XFxcIiBoZWlnaHQ9XFxcIjE2XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48cmVjdCB4PVxcXCI5XFxcIiB5PVxcXCI5XFxcIiB3aWR0aD1cXFwiNlxcXCIgaGVpZ2h0PVxcXCI2XFxcIj48L3JlY3Q+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiOVxcXCIgeTI9XFxcIjRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTVcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMTVcXFwiIHkyPVxcXCI0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCIyMFxcXCIgeDI9XFxcIjlcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNVxcXCIgeTE9XFxcIjIwXFxcIiB4Mj1cXFwiMTVcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMFxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIyM1xcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMjBcXFwiIHkxPVxcXCIxNFxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCI0XFxcIiB5Mj1cXFwiOVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMTRcXFwiIHgyPVxcXCI0XFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT5cIixcImNyZWRpdC1jYXJkXCI6XCI8cmVjdCB4PVxcXCIxXFxcIiB5PVxcXCI0XFxcIiB3aWR0aD1cXFwiMjJcXFwiIGhlaWdodD1cXFwiMTZcXFwiIHJ4PVxcXCIyXFxcIiByeT1cXFwiMlxcXCI+PC9yZWN0PjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMTBcXFwiIHgyPVxcXCIyM1xcXCIgeTI9XFxcIjEwXFxcIj48L2xpbmU+XCIsXCJjcm9wXCI6XCI8cGF0aCBkPVxcXCJNNi4xMyAxTDYgMTZhMiAyIDAgMCAwIDIgMmgxNVxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0xIDYuMTNMMTYgNmEyIDIgMCAwIDEgMiAydjE1XFxcIj48L3BhdGg+XCIsXCJjcm9zc2hhaXJcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiMjJcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjE4XFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiNlxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjIyXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPlwiLFwiZGF0YWJhc2VcIjpcIjxlbGxpcHNlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjVcXFwiIHJ4PVxcXCI5XFxcIiByeT1cXFwiM1xcXCI+PC9lbGxpcHNlPjxwYXRoIGQ9XFxcIk0yMSAxMmMwIDEuNjYtNCAzLTkgM3MtOS0xLjM0LTktM1xcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0zIDV2MTRjMCAxLjY2IDQgMyA5IDNzOS0xLjM0IDktM1Y1XFxcIj48L3BhdGg+XCIsXCJkZWxldGVcIjpcIjxwYXRoIGQ9XFxcIk0yMSA0SDhsLTcgOCA3IDhoMTNhMiAyIDAgMCAwIDItMlY2YTIgMiAwIDAgMC0yLTJ6XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjE4XFxcIiB5MT1cXFwiOVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiMThcXFwiIHkyPVxcXCIxNVxcXCI+PC9saW5lPlwiLFwiZGlzY1wiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPlwiLFwiZGl2aWRlLWNpcmNsZVwiOlwiPGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxNlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTZcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCI4XFxcIj48L2xpbmU+PGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPlwiLFwiZGl2aWRlLXNxdWFyZVwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiOFxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMTZcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjhcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjhcXFwiPjwvbGluZT5cIixcImRpdmlkZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCI2XFxcIiByPVxcXCIyXFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiNVxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMTlcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMThcXFwiIHI9XFxcIjJcXFwiPjwvY2lyY2xlPlwiLFwiZG9sbGFyLXNpZ25cIjpcIjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjFcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjIzXFxcIj48L2xpbmU+PHBhdGggZD1cXFwiTTE3IDVIOS41YTMuNSAzLjUgMCAwIDAgMCA3aDVhMy41IDMuNSAwIDAgMSAwIDdINlxcXCI+PC9wYXRoPlwiLFwiZG93bmxvYWQtY2xvdWRcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjggMTcgMTIgMjEgMTYgMTdcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjIxXFxcIj48L2xpbmU+PHBhdGggZD1cXFwiTTIwLjg4IDE4LjA5QTUgNSAwIDAgMCAxOCA5aC0xLjI2QTggOCAwIDEgMCAzIDE2LjI5XFxcIj48L3BhdGg+XCIsXCJkb3dubG9hZFwiOlwiPHBhdGggZD1cXFwiTTIxIDE1djRhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJ2LTRcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCI3IDEwIDEyIDE1IDE3IDEwXFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE1XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIzXFxcIj48L2xpbmU+XCIsXCJkcmliYmJsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxwYXRoIGQ9XFxcIk04LjU2IDIuNzVjNC4zNyA2LjAzIDYuMDIgOS40MiA4LjAzIDE3LjcybTIuNTQtMTUuMzhjLTMuNzIgNC4zNS04Ljk0IDUuNjYtMTYuODggNS44NW0xOS41IDEuOWMtMy41LS45My02LjYzLS44Mi04Ljk0IDAtMi41OC45Mi01LjAxIDIuODYtNy40NCA2LjMyXFxcIj48L3BhdGg+XCIsXCJkcm9wbGV0XCI6XCI8cGF0aCBkPVxcXCJNMTIgMi42OWw1LjY2IDUuNjZhOCA4IDAgMSAxLTExLjMxIDB6XFxcIj48L3BhdGg+XCIsXCJlZGl0LTJcIjpcIjxwYXRoIGQ9XFxcIk0xNyAzYTIuODI4IDIuODI4IDAgMSAxIDQgNEw3LjUgMjAuNSAyIDIybDEuNS01LjVMMTcgM3pcXFwiPjwvcGF0aD5cIixcImVkaXQtM1wiOlwiPHBhdGggZD1cXFwiTTEyIDIwaDlcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTYuNSAzLjVhMi4xMjEgMi4xMjEgMCAwIDEgMyAzTDcgMTlsLTQgMSAxLTRMMTYuNSAzLjV6XFxcIj48L3BhdGg+XCIsXCJlZGl0XCI6XCI8cGF0aCBkPVxcXCJNMTEgNEg0YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0ydi03XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTE4LjUgMi41YTIuMTIxIDIuMTIxIDAgMCAxIDMgM0wxMiAxNWwtNCAxIDEtNCA5LjUtOS41elxcXCI+PC9wYXRoPlwiLFwiZXh0ZXJuYWwtbGlua1wiOlwiPHBhdGggZD1cXFwiTTE4IDEzdjZhMiAyIDAgMCAxLTIgMkg1YTIgMiAwIDAgMS0yLTJWOGEyIDIgMCAwIDEgMi0yaDZcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxNSAzIDIxIDMgMjEgOVxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTBcXFwiIHkxPVxcXCIxNFxcXCIgeDI9XFxcIjIxXFxcIiB5Mj1cXFwiM1xcXCI+PC9saW5lPlwiLFwiZXllLW9mZlwiOlwiPHBhdGggZD1cXFwiTTE3Ljk0IDE3Ljk0QTEwLjA3IDEwLjA3IDAgMCAxIDEyIDIwYy03IDAtMTEtOC0xMS04YTE4LjQ1IDE4LjQ1IDAgMCAxIDUuMDYtNS45NE05LjkgNC4yNEE5LjEyIDkuMTIgMCAwIDEgMTIgNGM3IDAgMTEgOCAxMSA4YTE4LjUgMTguNSAwIDAgMS0yLjE2IDMuMTltLTYuNzItMS4wN2EzIDMgMCAxIDEtNC4yNC00LjI0XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPlwiLFwiZXllXCI6XCI8cGF0aCBkPVxcXCJNMSAxMnM0LTggMTEtOCAxMSA4IDExIDgtNCA4LTExIDgtMTEtOC0xMS04elxcXCI+PC9wYXRoPjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPlwiLFwiZmFjZWJvb2tcIjpcIjxwYXRoIGQ9XFxcIk0xOCAyaC0zYTUgNSAwIDAgMC01IDV2M0g3djRoM3Y4aDR2LThoM2wxLTRoLTRWN2ExIDEgMCAwIDEgMS0xaDN6XFxcIj48L3BhdGg+XCIsXCJmYXN0LWZvcndhcmRcIjpcIjxwb2x5Z29uIHBvaW50cz1cXFwiMTMgMTkgMjIgMTIgMTMgNSAxMyAxOVxcXCI+PC9wb2x5Z29uPjxwb2x5Z29uIHBvaW50cz1cXFwiMiAxOSAxMSAxMiAyIDUgMiAxOVxcXCI+PC9wb2x5Z29uPlwiLFwiZmVhdGhlclwiOlwiPHBhdGggZD1cXFwiTTIwLjI0IDEyLjI0YTYgNiAwIDAgMC04LjQ5LTguNDlMNSAxMC41VjE5aDguNXpcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMTZcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMlxcXCIgeTI9XFxcIjIyXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE3LjVcXFwiIHkxPVxcXCIxNVxcXCIgeDI9XFxcIjlcXFwiIHkyPVxcXCIxNVxcXCI+PC9saW5lPlwiLFwiZmlnbWFcIjpcIjxwYXRoIGQ9XFxcIk01IDUuNUEzLjUgMy41IDAgMCAxIDguNSAySDEydjdIOC41QTMuNSAzLjUgMCAwIDEgNSA1LjV6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTEyIDJoMy41YTMuNSAzLjUgMCAxIDEgMCA3SDEyVjJ6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTEyIDEyLjVhMy41IDMuNSAwIDEgMSA3IDAgMy41IDMuNSAwIDEgMS03IDB6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTUgMTkuNUEzLjUgMy41IDAgMCAxIDguNSAxNkgxMnYzLjVhMy41IDMuNSAwIDEgMS03IDB6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTUgMTIuNUEzLjUgMy41IDAgMCAxIDguNSA5SDEydjdIOC41QTMuNSAzLjUgMCAwIDEgNSAxMi41elxcXCI+PC9wYXRoPlwiLFwiZmlsZS1taW51c1wiOlwiPHBhdGggZD1cXFwiTTE0IDJINmEyIDIgMCAwIDAtMiAydjE2YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMlY4elxcXCI+PC9wYXRoPjxwb2x5bGluZSBwb2ludHM9XFxcIjE0IDIgMTQgOCAyMCA4XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCI5XFxcIiB5MT1cXFwiMTVcXFwiIHgyPVxcXCIxNVxcXCIgeTI9XFxcIjE1XFxcIj48L2xpbmU+XCIsXCJmaWxlLXBsdXNcIjpcIjxwYXRoIGQ9XFxcIk0xNCAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOHpcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxNCAyIDE0IDggMjAgOFxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOVxcXCIgeTE9XFxcIjE1XFxcIiB4Mj1cXFwiMTVcXFwiIHkyPVxcXCIxNVxcXCI+PC9saW5lPlwiLFwiZmlsZS10ZXh0XCI6XCI8cGF0aCBkPVxcXCJNMTQgMkg2YTIgMiAwIDAgMC0yIDJ2MTZhMiAyIDAgMCAwIDIgMmgxMmEyIDIgMCAwIDAgMi0yVjh6XFxcIj48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTQgMiAxNCA4IDIwIDhcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjE2XFxcIiB5MT1cXFwiMTNcXFwiIHgyPVxcXCI4XFxcIiB5Mj1cXFwiMTNcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTZcXFwiIHkxPVxcXCIxN1xcXCIgeDI9XFxcIjhcXFwiIHkyPVxcXCIxN1xcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjEwIDkgOSA5IDggOVxcXCI+PC9wb2x5bGluZT5cIixcImZpbGVcIjpcIjxwYXRoIGQ9XFxcIk0xMyAySDZhMiAyIDAgMCAwLTIgMnYxNmEyIDIgMCAwIDAgMiAyaDEyYTIgMiAwIDAgMCAyLTJWOXpcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxMyAyIDEzIDkgMjAgOVxcXCI+PC9wb2x5bGluZT5cIixcImZpbG1cIjpcIjxyZWN0IHg9XFxcIjJcXFwiIHk9XFxcIjJcXFwiIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIyMFxcXCIgcng9XFxcIjIuMThcXFwiIHJ5PVxcXCIyLjE4XFxcIj48L3JlY3Q+PGxpbmUgeDE9XFxcIjdcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiN1xcXCIgeTI9XFxcIjIyXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE3XFxcIiB5MT1cXFwiMlxcXCIgeDI9XFxcIjE3XFxcIiB5Mj1cXFwiMjJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMlxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMjJcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyXFxcIiB5MT1cXFwiN1xcXCIgeDI9XFxcIjdcXFwiIHkyPVxcXCI3XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjJcXFwiIHkxPVxcXCIxN1xcXCIgeDI9XFxcIjdcXFwiIHkyPVxcXCIxN1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxN1xcXCIgeTE9XFxcIjE3XFxcIiB4Mj1cXFwiMjJcXFwiIHkyPVxcXCIxN1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxN1xcXCIgeTE9XFxcIjdcXFwiIHgyPVxcXCIyMlxcXCIgeTI9XFxcIjdcXFwiPjwvbGluZT5cIixcImZpbHRlclwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCIyMiAzIDIgMyAxMCAxMi40NiAxMCAxOSAxNCAyMSAxNCAxMi40NiAyMiAzXFxcIj48L3BvbHlnb24+XCIsXCJmbGFnXCI6XCI8cGF0aCBkPVxcXCJNNCAxNXMxLTEgNC0xIDUgMiA4IDIgNC0xIDQtMVYzcy0xIDEtNCAxLTUtMi04LTItNCAxLTQgMXpcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiNFxcXCIgeTE9XFxcIjIyXFxcIiB4Mj1cXFwiNFxcXCIgeTI9XFxcIjE1XFxcIj48L2xpbmU+XCIsXCJmb2xkZXItbWludXNcIjpcIjxwYXRoIGQ9XFxcIk0yMiAxOWEyIDIgMCAwIDEtMiAySDRhMiAyIDAgMCAxLTItMlY1YTIgMiAwIDAgMSAyLTJoNWwyIDNoOWEyIDIgMCAwIDEgMiAyelxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCI5XFxcIiB5MT1cXFwiMTRcXFwiIHgyPVxcXCIxNVxcXCIgeTI9XFxcIjE0XFxcIj48L2xpbmU+XCIsXCJmb2xkZXItcGx1c1wiOlwiPHBhdGggZD1cXFwiTTIyIDE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg1bDIgM2g5YTIgMiAwIDAgMSAyIDJ6XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMTFcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjE3XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCIxNFxcXCIgeDI9XFxcIjE1XFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT5cIixcImZvbGRlclwiOlwiPHBhdGggZD1cXFwiTTIyIDE5YTIgMiAwIDAgMS0yIDJINGEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmg1bDIgM2g5YTIgMiAwIDAgMSAyIDJ6XFxcIj48L3BhdGg+XCIsXCJmcmFtZXJcIjpcIjxwYXRoIGQ9XFxcIk01IDE2VjloMTRWMkg1bDE0IDE0aC03bS03IDBsNyA3di03bS03IDBoN1xcXCI+PC9wYXRoPlwiLFwiZnJvd25cIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48cGF0aCBkPVxcXCJNMTYgMTZzLTEuNS0yLTQtMi00IDItNCAyXFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiOS4wMVxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTVcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiMTUuMDFcXFwiIHkyPVxcXCI5XFxcIj48L2xpbmU+XCIsXCJnaWZ0XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIyMCAxMiAyMCAyMiA0IDIyIDQgMTJcXFwiPjwvcG9seWxpbmU+PHJlY3QgeD1cXFwiMlxcXCIgeT1cXFwiN1xcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjVcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyMlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiN1xcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0xMiA3SDcuNWEyLjUgMi41IDAgMCAxIDAtNUMxMSAyIDEyIDcgMTIgN3pcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTIgN2g0LjVhMi41IDIuNSAwIDAgMCAwLTVDMTMgMiAxMiA3IDEyIDd6XFxcIj48L3BhdGg+XCIsXCJnaXQtYnJhbmNoXCI6XCI8bGluZSB4MT1cXFwiNlxcXCIgeTE9XFxcIjNcXFwiIHgyPVxcXCI2XFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48Y2lyY2xlIGN4PVxcXCIxOFxcXCIgY3k9XFxcIjZcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjZcXFwiIGN5PVxcXCIxOFxcXCIgcj1cXFwiM1xcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTE4IDlhOSA5IDAgMCAxLTkgOVxcXCI+PC9wYXRoPlwiLFwiZ2l0LWNvbW1pdFwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiNFxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjEuMDVcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjdcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNy4wMVxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMjIuOTZcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPlwiLFwiZ2l0LW1lcmdlXCI6XCI8Y2lyY2xlIGN4PVxcXCIxOFxcXCIgY3k9XFxcIjE4XFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCI2XFxcIiBjeT1cXFwiNlxcXCIgcj1cXFwiM1xcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTYgMjFWOWE5IDkgMCAwIDAgOSA5XFxcIj48L3BhdGg+XCIsXCJnaXQtcHVsbC1yZXF1ZXN0XCI6XCI8Y2lyY2xlIGN4PVxcXCIxOFxcXCIgY3k9XFxcIjE4XFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCI2XFxcIiBjeT1cXFwiNlxcXCIgcj1cXFwiM1xcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTEzIDZoM2EyIDIgMCAwIDEgMiAydjdcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiNlxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCI2XFxcIiB5Mj1cXFwiMjFcXFwiPjwvbGluZT5cIixcImdpdGh1YlwiOlwiPHBhdGggZD1cXFwiTTkgMTljLTUgMS41LTUtMi41LTctM20xNCA2di0zLjg3YTMuMzcgMy4zNyAwIDAgMC0uOTQtMi42MWMzLjE0LS4zNSA2LjQ0LTEuNTQgNi40NC03QTUuNDQgNS40NCAwIDAgMCAyMCA0Ljc3IDUuMDcgNS4wNyAwIDAgMCAxOS45MSAxUzE4LjczLjY1IDE2IDIuNDhhMTMuMzggMTMuMzggMCAwIDAtNyAwQzYuMjcuNjUgNS4wOSAxIDUuMDkgMUE1LjA3IDUuMDcgMCAwIDAgNSA0Ljc3YTUuNDQgNS40NCAwIDAgMC0xLjUgMy43OGMwIDUuNDIgMy4zIDYuNjEgNi40NCA3QTMuMzcgMy4zNyAwIDAgMCA5IDE4LjEzVjIyXFxcIj48L3BhdGg+XCIsXCJnaXRsYWJcIjpcIjxwYXRoIGQ9XFxcIk0yMi42NSAxNC4zOUwxMiAyMi4xMyAxLjM1IDE0LjM5YS44NC44NCAwIDAgMS0uMy0uOTRsMS4yMi0zLjc4IDIuNDQtNy41MUEuNDIuNDIgMCAwIDEgNC44MiAyYS40My40MyAwIDAgMSAuNTggMCAuNDIuNDIgMCAwIDEgLjExLjE4bDIuNDQgNy40OWg4LjFsMi40NC03LjUxQS40Mi40MiAwIDAgMSAxOC42IDJhLjQzLjQzIDAgMCAxIC41OCAwIC40Mi40MiAwIDAgMSAuMTEuMThsMi40NCA3LjUxTDIzIDEzLjQ1YS44NC44NCAwIDAgMS0uMzUuOTR6XFxcIj48L3BhdGg+XCIsXCJnbG9iZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIyXFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIyMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+PHBhdGggZD1cXFwiTTEyIDJhMTUuMyAxNS4zIDAgMCAxIDQgMTAgMTUuMyAxNS4zIDAgMCAxLTQgMTAgMTUuMyAxNS4zIDAgMCAxLTQtMTAgMTUuMyAxNS4zIDAgMCAxIDQtMTB6XFxcIj48L3BhdGg+XCIsXCJncmlkXCI6XCI8cmVjdCB4PVxcXCIzXFxcIiB5PVxcXCIzXFxcIiB3aWR0aD1cXFwiN1xcXCIgaGVpZ2h0PVxcXCI3XFxcIj48L3JlY3Q+PHJlY3QgeD1cXFwiMTRcXFwiIHk9XFxcIjNcXFwiIHdpZHRoPVxcXCI3XFxcIiBoZWlnaHQ9XFxcIjdcXFwiPjwvcmVjdD48cmVjdCB4PVxcXCIxNFxcXCIgeT1cXFwiMTRcXFwiIHdpZHRoPVxcXCI3XFxcIiBoZWlnaHQ9XFxcIjdcXFwiPjwvcmVjdD48cmVjdCB4PVxcXCIzXFxcIiB5PVxcXCIxNFxcXCIgd2lkdGg9XFxcIjdcXFwiIGhlaWdodD1cXFwiN1xcXCI+PC9yZWN0PlwiLFwiaGFyZC1kcml2ZVwiOlwiPGxpbmUgeDE9XFxcIjIyXFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIyXFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT48cGF0aCBkPVxcXCJNNS40NSA1LjExTDIgMTJ2NmEyIDIgMCAwIDAgMiAyaDE2YTIgMiAwIDAgMCAyLTJ2LTZsLTMuNDUtNi44OUEyIDIgMCAwIDAgMTYuNzYgNEg3LjI0YTIgMiAwIDAgMC0xLjc5IDEuMTF6XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjZcXFwiIHkxPVxcXCIxNlxcXCIgeDI9XFxcIjYuMDFcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMFxcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMTAuMDFcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPlwiLFwiaGFzaFwiOlwiPGxpbmUgeDE9XFxcIjRcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiMjBcXFwiIHkyPVxcXCI5XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjRcXFwiIHkxPVxcXCIxNVxcXCIgeDI9XFxcIjIwXFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTBcXFwiIHkxPVxcXCIzXFxcIiB4Mj1cXFwiOFxcXCIgeTI9XFxcIjIxXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE2XFxcIiB5MT1cXFwiM1xcXCIgeDI9XFxcIjE0XFxcIiB5Mj1cXFwiMjFcXFwiPjwvbGluZT5cIixcImhlYWRwaG9uZXNcIjpcIjxwYXRoIGQ9XFxcIk0zIDE4di02YTkgOSAwIDAgMSAxOCAwdjZcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMjEgMTlhMiAyIDAgMCAxLTIgMmgtMWEyIDIgMCAwIDEtMi0ydi0zYTIgMiAwIDAgMSAyLTJoM3pNMyAxOWEyIDIgMCAwIDAgMiAyaDFhMiAyIDAgMCAwIDItMnYtM2EyIDIgMCAwIDAtMi0ySDN6XFxcIj48L3BhdGg+XCIsXCJoZWFydFwiOlwiPHBhdGggZD1cXFwiTTIwLjg0IDQuNjFhNS41IDUuNSAwIDAgMC03Ljc4IDBMMTIgNS42N2wtMS4wNi0xLjA2YTUuNSA1LjUgMCAwIDAtNy43OCA3Ljc4bDEuMDYgMS4wNkwxMiAyMS4yM2w3Ljc4LTcuNzggMS4wNi0xLjA2YTUuNSA1LjUgMCAwIDAgMC03Ljc4elxcXCI+PC9wYXRoPlwiLFwiaGVscC1jaXJjbGVcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48cGF0aCBkPVxcXCJNOS4wOSA5YTMgMyAwIDAgMSA1LjgzIDFjMCAyLTMgMy0zIDNcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxN1xcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiMTdcXFwiPjwvbGluZT5cIixcImhleGFnb25cIjpcIjxwYXRoIGQ9XFxcIk0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnpcXFwiPjwvcGF0aD5cIixcImhvbWVcIjpcIjxwYXRoIGQ9XFxcIk0zIDlsOS03IDkgN3YxMWEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnpcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCI5IDIyIDkgMTIgMTUgMTIgMTUgMjJcXFwiPjwvcG9seWxpbmU+XCIsXCJpbWFnZVwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48Y2lyY2xlIGN4PVxcXCI4LjVcXFwiIGN5PVxcXCI4LjVcXFwiIHI9XFxcIjEuNVxcXCI+PC9jaXJjbGU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMjEgMTUgMTYgMTAgNSAyMVxcXCI+PC9wb2x5bGluZT5cIixcImluYm94XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIyMiAxMiAxNiAxMiAxNCAxNSAxMCAxNSA4IDEyIDIgMTJcXFwiPjwvcG9seWxpbmU+PHBhdGggZD1cXFwiTTUuNDUgNS4xMUwyIDEydjZhMiAyIDAgMCAwIDIgMmgxNmEyIDIgMCAwIDAgMi0ydi02bC0zLjQ1LTYuODlBMiAyIDAgMCAwIDE2Ljc2IDRINy4yNGEyIDIgMCAwIDAtMS43OSAxLjExelxcXCI+PC9wYXRoPlwiLFwiaW5mb1wiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjhcXFwiIHgyPVxcXCIxMi4wMVxcXCIgeTI9XFxcIjhcXFwiPjwvbGluZT5cIixcImluc3RhZ3JhbVwiOlwiPHJlY3QgeD1cXFwiMlxcXCIgeT1cXFwiMlxcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiByeD1cXFwiNVxcXCIgcnk9XFxcIjVcXFwiPjwvcmVjdD48cGF0aCBkPVxcXCJNMTYgMTEuMzdBNCA0IDAgMSAxIDEyLjYzIDggNCA0IDAgMCAxIDE2IDExLjM3elxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxNy41XFxcIiB5MT1cXFwiNi41XFxcIiB4Mj1cXFwiMTcuNTFcXFwiIHkyPVxcXCI2LjVcXFwiPjwvbGluZT5cIixcIml0YWxpY1wiOlwiPGxpbmUgeDE9XFxcIjE5XFxcIiB5MT1cXFwiNFxcXCIgeDI9XFxcIjEwXFxcIiB5Mj1cXFwiNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNFxcXCIgeTE9XFxcIjIwXFxcIiB4Mj1cXFwiNVxcXCIgeTI9XFxcIjIwXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE1XFxcIiB5MT1cXFwiNFxcXCIgeDI9XFxcIjlcXFwiIHkyPVxcXCIyMFxcXCI+PC9saW5lPlwiLFwia2V5XCI6XCI8cGF0aCBkPVxcXCJNMjEgMmwtMiAybS03LjYxIDcuNjFhNS41IDUuNSAwIDEgMS03Ljc3OCA3Ljc3OCA1LjUgNS41IDAgMCAxIDcuNzc3LTcuNzc3em0wIDBMMTUuNSA3LjVtMCAwbDMgM0wyMiA3bC0zLTNtLTMuNSAzLjVMMTkgNFxcXCI+PC9wYXRoPlwiLFwibGF5ZXJzXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjEyIDIgMiA3IDEyIDEyIDIyIDcgMTIgMlxcXCI+PC9wb2x5Z29uPjxwb2x5bGluZSBwb2ludHM9XFxcIjIgMTcgMTIgMjIgMjIgMTdcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMiAxMiAxMiAxNyAyMiAxMlxcXCI+PC9wb2x5bGluZT5cIixcImxheW91dFwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiM1xcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIyMVxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOVxcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiOVxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT5cIixcImxpZmUtYnVveVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjRcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCI0LjkzXFxcIiB5MT1cXFwiNC45M1xcXCIgeDI9XFxcIjkuMTdcXFwiIHkyPVxcXCI5LjE3XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE0LjgzXFxcIiB5MT1cXFwiMTQuODNcXFwiIHgyPVxcXCIxOS4wN1xcXCIgeTI9XFxcIjE5LjA3XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE0LjgzXFxcIiB5MT1cXFwiOS4xN1xcXCIgeDI9XFxcIjE5LjA3XFxcIiB5Mj1cXFwiNC45M1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNC44M1xcXCIgeTE9XFxcIjkuMTdcXFwiIHgyPVxcXCIxOC4zNlxcXCIgeTI9XFxcIjUuNjRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiNC45M1xcXCIgeTE9XFxcIjE5LjA3XFxcIiB4Mj1cXFwiOS4xN1xcXCIgeTI9XFxcIjE0LjgzXFxcIj48L2xpbmU+XCIsXCJsaW5rLTJcIjpcIjxwYXRoIGQ9XFxcIk0xNSA3aDNhNSA1IDAgMCAxIDUgNSA1IDUgMCAwIDEtNSA1aC0zbS02IDBINmE1IDUgMCAwIDEtNS01IDUgNSAwIDAgMSA1LTVoM1xcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJsaW5rXCI6XCI8cGF0aCBkPVxcXCJNMTAgMTNhNSA1IDAgMCAwIDcuNTQuNTRsMy0zYTUgNSAwIDAgMC03LjA3LTcuMDdsLTEuNzIgMS43MVxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0xNCAxMWE1IDUgMCAwIDAtNy41NC0uNTRsLTMgM2E1IDUgMCAwIDAgNy4wNyA3LjA3bDEuNzEtMS43MVxcXCI+PC9wYXRoPlwiLFwibGlua2VkaW5cIjpcIjxwYXRoIGQ9XFxcIk0xNiA4YTYgNiAwIDAgMSA2IDZ2N2gtNHYtN2EyIDIgMCAwIDAtMi0yIDIgMiAwIDAgMC0yIDJ2N2gtNHYtN2E2IDYgMCAwIDEgNi02elxcXCI+PC9wYXRoPjxyZWN0IHg9XFxcIjJcXFwiIHk9XFxcIjlcXFwiIHdpZHRoPVxcXCI0XFxcIiBoZWlnaHQ9XFxcIjEyXFxcIj48L3JlY3Q+PGNpcmNsZSBjeD1cXFwiNFxcXCIgY3k9XFxcIjRcXFwiIHI9XFxcIjJcXFwiPjwvY2lyY2xlPlwiLFwibGlzdFwiOlwiPGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCI2XFxcIiB4Mj1cXFwiMjFcXFwiIHkyPVxcXCI2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjIxXFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOFxcXCIgeTE9XFxcIjE4XFxcIiB4Mj1cXFwiMjFcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIzXFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjMuMDFcXFwiIHkyPVxcXCI2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjNcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjMuMDFcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIzXFxcIiB5MT1cXFwiMThcXFwiIHgyPVxcXCIzLjAxXFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT5cIixcImxvYWRlclwiOlwiPGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE4XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIyMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI0LjkzXFxcIiB5MT1cXFwiNC45M1xcXCIgeDI9XFxcIjcuNzZcXFwiIHkyPVxcXCI3Ljc2XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE2LjI0XFxcIiB5MT1cXFwiMTYuMjRcXFwiIHgyPVxcXCIxOS4wN1xcXCIgeTI9XFxcIjE5LjA3XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjJcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjZcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxOFxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMjJcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI0LjkzXFxcIiB5MT1cXFwiMTkuMDdcXFwiIHgyPVxcXCI3Ljc2XFxcIiB5Mj1cXFwiMTYuMjRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTYuMjRcXFwiIHkxPVxcXCI3Ljc2XFxcIiB4Mj1cXFwiMTkuMDdcXFwiIHkyPVxcXCI0LjkzXFxcIj48L2xpbmU+XCIsXCJsb2NrXCI6XCI8cmVjdCB4PVxcXCIzXFxcIiB5PVxcXCIxMVxcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjExXFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48cGF0aCBkPVxcXCJNNyAxMVY3YTUgNSAwIDAgMSAxMCAwdjRcXFwiPjwvcGF0aD5cIixcImxvZy1pblwiOlwiPHBhdGggZD1cXFwiTTE1IDNoNGEyIDIgMCAwIDEgMiAydjE0YTIgMiAwIDAgMS0yIDJoLTRcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxMCAxNyAxNSAxMiAxMCA3XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIxNVxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiM1xcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJsb2ctb3V0XCI6XCI8cGF0aCBkPVxcXCJNOSAyMUg1YTIgMiAwIDAgMS0yLTJWNWEyIDIgMCAwIDEgMi0yaDRcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxNiAxNyAyMSAxMiAxNiA3XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiOVxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJtYWlsXCI6XCI8cGF0aCBkPVxcXCJNNCA0aDE2YzEuMSAwIDIgLjkgMiAydjEyYzAgMS4xLS45IDItMiAySDRjLTEuMSAwLTItLjktMi0yVjZjMC0xLjEuOS0yIDItMnpcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIyMiw2IDEyLDEzIDIsNlxcXCI+PC9wb2x5bGluZT5cIixcIm1hcC1waW5cIjpcIjxwYXRoIGQ9XFxcIk0yMSAxMGMwIDctOSAxMy05IDEzcy05LTYtOS0xM2E5IDkgMCAwIDEgMTggMHpcXFwiPjwvcGF0aD48Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEwXFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT5cIixcIm1hcFwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCIxIDYgMSAyMiA4IDE4IDE2IDIyIDIzIDE4IDIzIDIgMTYgNiA4IDIgMSA2XFxcIj48L3BvbHlnb24+PGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiOFxcXCIgeTI9XFxcIjE4XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE2XFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiMjJcXFwiPjwvbGluZT5cIixcIm1heGltaXplLTJcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjE1IDMgMjEgMyAyMSA5XFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjkgMjEgMyAyMSAzIDE1XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjNcXFwiIHgyPVxcXCIxNFxcXCIgeTI9XFxcIjEwXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjNcXFwiIHkxPVxcXCIyMVxcXCIgeDI9XFxcIjEwXFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT5cIixcIm1heGltaXplXCI6XCI8cGF0aCBkPVxcXCJNOCAzSDVhMiAyIDAgMCAwLTIgMnYzbTE4IDBWNWEyIDIgMCAwIDAtMi0yaC0zbTAgMThoM2EyIDIgMCAwIDAgMi0ydi0zTTMgMTZ2M2EyIDIgMCAwIDAgMiAyaDNcXFwiPjwvcGF0aD5cIixcIm1laFwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTVcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjE1XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiOS4wMVxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTVcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiMTUuMDFcXFwiIHkyPVxcXCI5XFxcIj48L2xpbmU+XCIsXCJtZW51XCI6XCI8bGluZSB4MT1cXFwiM1xcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMjFcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIzXFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjIxXFxcIiB5Mj1cXFwiNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIzXFxcIiB5MT1cXFwiMThcXFwiIHgyPVxcXCIyMVxcXCIgeTI9XFxcIjE4XFxcIj48L2xpbmU+XCIsXCJtZXNzYWdlLWNpcmNsZVwiOlwiPHBhdGggZD1cXFwiTTIxIDExLjVhOC4zOCA4LjM4IDAgMCAxLS45IDMuOCA4LjUgOC41IDAgMCAxLTcuNiA0LjcgOC4zOCA4LjM4IDAgMCAxLTMuOC0uOUwzIDIxbDEuOS01LjdhOC4zOCA4LjM4IDAgMCAxLS45LTMuOCA4LjUgOC41IDAgMCAxIDQuNy03LjYgOC4zOCA4LjM4IDAgMCAxIDMuOC0uOWguNWE4LjQ4IDguNDggMCAwIDEgOCA4di41elxcXCI+PC9wYXRoPlwiLFwibWVzc2FnZS1zcXVhcmVcIjpcIjxwYXRoIGQ9XFxcIk0yMSAxNWEyIDIgMCAwIDEtMiAySDdsLTQgNFY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnpcXFwiPjwvcGF0aD5cIixcIm1pYy1vZmZcIjpcIjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMjNcXFwiPjwvbGluZT48cGF0aCBkPVxcXCJNOSA5djNhMyAzIDAgMCAwIDUuMTIgMi4xMk0xNSA5LjM0VjRhMyAzIDAgMCAwLTUuOTQtLjZcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTcgMTYuOTVBNyA3IDAgMCAxIDUgMTJ2LTJtMTQgMHYyYTcgNyAwIDAgMS0uMTEgMS4yM1xcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE5XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMjNcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjIzXFxcIj48L2xpbmU+XCIsXCJtaWNcIjpcIjxwYXRoIGQ9XFxcIk0xMiAxYTMgMyAwIDAgMC0zIDN2OGEzIDMgMCAwIDAgNiAwVjRhMyAzIDAgMCAwLTMtM3pcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTkgMTB2MmE3IDcgMCAwIDEtMTQgMHYtMlxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE5XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMjNcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjIzXFxcIj48L2xpbmU+XCIsXCJtaW5pbWl6ZS0yXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCI0IDE0IDEwIDE0IDEwIDIwXFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjIwIDEwIDE0IDEwIDE0IDRcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjE0XFxcIiB5MT1cXFwiMTBcXFwiIHgyPVxcXCIyMVxcXCIgeTI9XFxcIjNcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiM1xcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiMTBcXFwiIHkyPVxcXCIxNFxcXCI+PC9saW5lPlwiLFwibWluaW1pemVcIjpcIjxwYXRoIGQ9XFxcIk04IDN2M2EyIDIgMCAwIDEtMiAySDNtMTggMGgtM2EyIDIgMCAwIDEtMi0yVjNtMCAxOHYtM2EyIDIgMCAwIDEgMi0yaDNNMyAxNmgzYTIgMiAwIDAgMSAyIDJ2M1xcXCI+PC9wYXRoPlwiLFwibWludXMtY2lyY2xlXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxMFxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjhcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT5cIixcIm1pbnVzLXNxdWFyZVwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiOFxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMTZcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPlwiLFwibWludXNcIjpcIjxsaW5lIHgxPVxcXCI1XFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxOVxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJtb25pdG9yXCI6XCI8cmVjdCB4PVxcXCIyXFxcIiB5PVxcXCIzXFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiMTRcXFwiIHJ4PVxcXCIyXFxcIiByeT1cXFwiMlxcXCI+PC9yZWN0PjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMjFcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjIxXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMTdcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjIxXFxcIj48L2xpbmU+XCIsXCJtb29uXCI6XCI8cGF0aCBkPVxcXCJNMjEgMTIuNzlBOSA5IDAgMSAxIDExLjIxIDMgNyA3IDAgMCAwIDIxIDEyLjc5elxcXCI+PC9wYXRoPlwiLFwibW9yZS1ob3Jpem9udGFsXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCIxOVxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCI1XFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjFcXFwiPjwvY2lyY2xlPlwiLFwibW9yZS12ZXJ0aWNhbFwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMVxcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCI1XFxcIiByPVxcXCIxXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjE5XFxcIiByPVxcXCIxXFxcIj48L2NpcmNsZT5cIixcIm1vdXNlLXBvaW50ZXJcIjpcIjxwYXRoIGQ9XFxcIk0zIDNsNy4wNyAxNi45NyAyLjUxLTcuMzkgNy4zOS0yLjUxTDMgM3pcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTMgMTNsNiA2XFxcIj48L3BhdGg+XCIsXCJtb3ZlXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCI1IDkgMiAxMiA1IDE1XFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjkgNSAxMiAyIDE1IDVcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTUgMTkgMTIgMjIgOSAxOVxcXCI+PC9wb2x5bGluZT48cG9seWxpbmUgcG9pbnRzPVxcXCIxOSA5IDIyIDEyIDE5IDE1XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIyXFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIyMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMjJcXFwiPjwvbGluZT5cIixcIm11c2ljXCI6XCI8cGF0aCBkPVxcXCJNOSAxOFY1bDEyLTJ2MTNcXFwiPjwvcGF0aD48Y2lyY2xlIGN4PVxcXCI2XFxcIiBjeT1cXFwiMThcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjE4XFxcIiBjeT1cXFwiMTZcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPlwiLFwibmF2aWdhdGlvbi0yXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjEyIDIgMTkgMjEgMTIgMTcgNSAyMSAxMiAyXFxcIj48L3BvbHlnb24+XCIsXCJuYXZpZ2F0aW9uXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjMgMTEgMjIgMiAxMyAyMSAxMSAxMyAzIDExXFxcIj48L3BvbHlnb24+XCIsXCJvY3RhZ29uXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjcuODYgMiAxNi4xNCAyIDIyIDcuODYgMjIgMTYuMTQgMTYuMTQgMjIgNy44NiAyMiAyIDE2LjE0IDIgNy44NiA3Ljg2IDJcXFwiPjwvcG9seWdvbj5cIixcInBhY2thZ2VcIjpcIjxsaW5lIHgxPVxcXCIxNi41XFxcIiB5MT1cXFwiOS40XFxcIiB4Mj1cXFwiNy41XFxcIiB5Mj1cXFwiNC4yMVxcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0yMSAxNlY4YTIgMiAwIDAgMC0xLTEuNzNsLTctNGEyIDIgMCAwIDAtMiAwbC03IDRBMiAyIDAgMCAwIDMgOHY4YTIgMiAwIDAgMCAxIDEuNzNsNyA0YTIgMiAwIDAgMCAyIDBsNy00QTIgMiAwIDAgMCAyMSAxNnpcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIzLjI3IDYuOTYgMTIgMTIuMDEgMjAuNzMgNi45NlxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyMi4wOFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTJcXFwiPjwvbGluZT5cIixcInBhcGVyY2xpcFwiOlwiPHBhdGggZD1cXFwiTTIxLjQ0IDExLjA1bC05LjE5IDkuMTlhNiA2IDAgMCAxLTguNDktOC40OWw5LjE5LTkuMTlhNCA0IDAgMCAxIDUuNjYgNS42NmwtOS4yIDkuMTlhMiAyIDAgMCAxLTIuODMtMi44M2w4LjQ5LTguNDhcXFwiPjwvcGF0aD5cIixcInBhdXNlLWNpcmNsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIxMFxcXCIgeTE9XFxcIjE1XFxcIiB4Mj1cXFwiMTBcXFwiIHkyPVxcXCI5XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE0XFxcIiB5MT1cXFwiMTVcXFwiIHgyPVxcXCIxNFxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT5cIixcInBhdXNlXCI6XCI8cmVjdCB4PVxcXCI2XFxcIiB5PVxcXCI0XFxcIiB3aWR0aD1cXFwiNFxcXCIgaGVpZ2h0PVxcXCIxNlxcXCI+PC9yZWN0PjxyZWN0IHg9XFxcIjE0XFxcIiB5PVxcXCI0XFxcIiB3aWR0aD1cXFwiNFxcXCIgaGVpZ2h0PVxcXCIxNlxcXCI+PC9yZWN0PlwiLFwicGVuLXRvb2xcIjpcIjxwYXRoIGQ9XFxcIk0xMiAxOWw3LTcgMyAzLTcgNy0zLTN6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTE4IDEzbC0xLjUtNy41TDIgMmwzLjUgMTQuNUwxMyAxOGw1LTV6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTIgMmw3LjU4NiA3LjU4NlxcXCI+PC9wYXRoPjxjaXJjbGUgY3g9XFxcIjExXFxcIiBjeT1cXFwiMTFcXFwiIHI9XFxcIjJcXFwiPjwvY2lyY2xlPlwiLFwicGVyY2VudFwiOlwiPGxpbmUgeDE9XFxcIjE5XFxcIiB5MT1cXFwiNVxcXCIgeDI9XFxcIjVcXFwiIHkyPVxcXCIxOVxcXCI+PC9saW5lPjxjaXJjbGUgY3g9XFxcIjYuNVxcXCIgY3k9XFxcIjYuNVxcXCIgcj1cXFwiMi41XFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCIxNy41XFxcIiBjeT1cXFwiMTcuNVxcXCIgcj1cXFwiMi41XFxcIj48L2NpcmNsZT5cIixcInBob25lLWNhbGxcIjpcIjxwYXRoIGQ9XFxcIk0xNS4wNSA1QTUgNSAwIDAgMSAxOSA4Ljk1TTE1LjA1IDFBOSA5IDAgMCAxIDIzIDguOTRtLTEgNy45OHYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelxcXCI+PC9wYXRoPlwiLFwicGhvbmUtZm9yd2FyZGVkXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxOSAxIDIzIDUgMTkgOVxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTVcXFwiIHkxPVxcXCI1XFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCI1XFxcIj48L2xpbmU+PHBhdGggZD1cXFwiTTIyIDE2LjkydjNhMiAyIDAgMCAxLTIuMTggMiAxOS43OSAxOS43OSAwIDAgMS04LjYzLTMuMDcgMTkuNSAxOS41IDAgMCAxLTYtNiAxOS43OSAxOS43OSAwIDAgMS0zLjA3LTguNjdBMiAyIDAgMCAxIDQuMTEgMmgzYTIgMiAwIDAgMSAyIDEuNzIgMTIuODQgMTIuODQgMCAwIDAgLjcgMi44MSAyIDIgMCAwIDEtLjQ1IDIuMTFMOC4wOSA5LjkxYTE2IDE2IDAgMCAwIDYgNmwxLjI3LTEuMjdhMiAyIDAgMCAxIDIuMTEtLjQ1IDEyLjg0IDEyLjg0IDAgMCAwIDIuODEuN0EyIDIgMCAwIDEgMjIgMTYuOTJ6XFxcIj48L3BhdGg+XCIsXCJwaG9uZS1pbmNvbWluZ1wiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMTYgMiAxNiA4IDIyIDhcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjIzXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjE2XFxcIiB5Mj1cXFwiOFxcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelxcXCI+PC9wYXRoPlwiLFwicGhvbmUtbWlzc2VkXCI6XCI8bGluZSB4MT1cXFwiMjNcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMTdcXFwiIHkyPVxcXCI3XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE3XFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiN1xcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelxcXCI+PC9wYXRoPlwiLFwicGhvbmUtb2ZmXCI6XCI8cGF0aCBkPVxcXCJNMTAuNjggMTMuMzFhMTYgMTYgMCAwIDAgMy40MSAyLjZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjcgMiAyIDAgMCAxIDEuNzIgMnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjQyIDE5LjQyIDAgMCAxLTMuMzMtMi42N20tMi42Ny0zLjM0YTE5Ljc5IDE5Ljc5IDAgMCAxLTMuMDctOC42M0EyIDIgMCAwIDEgNC4xMSAyaDNhMiAyIDAgMCAxIDIgMS43MiAxMi44NCAxMi44NCAwIDAgMCAuNyAyLjgxIDIgMiAwIDAgMS0uNDUgMi4xMUw4LjA5IDkuOTFcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMjNcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMVxcXCIgeTI9XFxcIjIzXFxcIj48L2xpbmU+XCIsXCJwaG9uZS1vdXRnb2luZ1wiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMjMgNyAyMyAxIDE3IDFcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjE2XFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMVxcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelxcXCI+PC9wYXRoPlwiLFwicGhvbmVcIjpcIjxwYXRoIGQ9XFxcIk0yMiAxNi45MnYzYTIgMiAwIDAgMS0yLjE4IDIgMTkuNzkgMTkuNzkgMCAwIDEtOC42My0zLjA3IDE5LjUgMTkuNSAwIDAgMS02LTYgMTkuNzkgMTkuNzkgMCAwIDEtMy4wNy04LjY3QTIgMiAwIDAgMSA0LjExIDJoM2EyIDIgMCAwIDEgMiAxLjcyIDEyLjg0IDEyLjg0IDAgMCAwIC43IDIuODEgMiAyIDAgMCAxLS40NSAyLjExTDguMDkgOS45MWExNiAxNiAwIDAgMCA2IDZsMS4yNy0xLjI3YTIgMiAwIDAgMSAyLjExLS40NSAxMi44NCAxMi44NCAwIDAgMCAyLjgxLjdBMiAyIDAgMCAxIDIyIDE2LjkyelxcXCI+PC9wYXRoPlwiLFwicGllLWNoYXJ0XCI6XCI8cGF0aCBkPVxcXCJNMjEuMjEgMTUuODlBMTAgMTAgMCAxIDEgOCAyLjgzXFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTIyIDEyQTEwIDEwIDAgMCAwIDEyIDJ2MTB6XFxcIj48L3BhdGg+XCIsXCJwbGF5LWNpcmNsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxwb2x5Z29uIHBvaW50cz1cXFwiMTAgOCAxNiAxMiAxMCAxNiAxMCA4XFxcIj48L3BvbHlnb24+XCIsXCJwbGF5XCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjUgMyAxOSAxMiA1IDIxIDUgM1xcXCI+PC9wb2x5Z29uPlwiLFwicGx1cy1jaXJjbGVcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJwbHVzLXNxdWFyZVwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxNlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJwbHVzXCI6XCI8bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI1XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxOVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI1XFxcIiB5MT1cXFwiMTJcXFwiIHgyPVxcXCIxOVxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJwb2NrZXRcIjpcIjxwYXRoIGQ9XFxcIk00IDNoMTZhMiAyIDAgMCAxIDIgMnY2YTEwIDEwIDAgMCAxLTEwIDEwQTEwIDEwIDAgMCAxIDIgMTFWNWEyIDIgMCAwIDEgMi0yelxcXCI+PC9wYXRoPjxwb2x5bGluZSBwb2ludHM9XFxcIjggMTAgMTIgMTQgMTYgMTBcXFwiPjwvcG9seWxpbmU+XCIsXCJwb3dlclwiOlwiPHBhdGggZD1cXFwiTTE4LjM2IDYuNjRhOSA5IDAgMSAxLTEyLjczIDBcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPlwiLFwicHJpbnRlclwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiNiA5IDYgMiAxOCAyIDE4IDlcXFwiPjwvcG9seWxpbmU+PHBhdGggZD1cXFwiTTYgMThINGEyIDIgMCAwIDEtMi0ydi01YTIgMiAwIDAgMSAyLTJoMTZhMiAyIDAgMCAxIDIgMnY1YTIgMiAwIDAgMS0yIDJoLTJcXFwiPjwvcGF0aD48cmVjdCB4PVxcXCI2XFxcIiB5PVxcXCIxNFxcXCIgd2lkdGg9XFxcIjEyXFxcIiBoZWlnaHQ9XFxcIjhcXFwiPjwvcmVjdD5cIixcInJhZGlvXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIyXFxcIj48L2NpcmNsZT48cGF0aCBkPVxcXCJNMTYuMjQgNy43NmE2IDYgMCAwIDEgMCA4LjQ5bS04LjQ4LS4wMWE2IDYgMCAwIDEgMC04LjQ5bTExLjMxLTIuODJhMTAgMTAgMCAwIDEgMCAxNC4xNG0tMTQuMTQgMGExMCAxMCAwIDAgMSAwLTE0LjE0XFxcIj48L3BhdGg+XCIsXCJyZWZyZXNoLWNjd1wiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMSA0IDEgMTAgNyAxMFxcXCI+PC9wb2x5bGluZT48cG9seWxpbmUgcG9pbnRzPVxcXCIyMyAyMCAyMyAxNCAxNyAxNFxcXCI+PC9wb2x5bGluZT48cGF0aCBkPVxcXCJNMjAuNDkgOUE5IDkgMCAwIDAgNS42NCA1LjY0TDEgMTBtMjIgNGwtNC42NCA0LjM2QTkgOSAwIDAgMSAzLjUxIDE1XFxcIj48L3BhdGg+XCIsXCJyZWZyZXNoLWN3XCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIyMyA0IDIzIDEwIDE3IDEwXFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjEgMjAgMSAxNCA3IDE0XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk0zLjUxIDlhOSA5IDAgMCAxIDE0Ljg1LTMuMzZMMjMgMTBNMSAxNGw0LjY0IDQuMzZBOSA5IDAgMCAwIDIwLjQ5IDE1XFxcIj48L3BhdGg+XCIsXCJyZXBlYXRcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjE3IDEgMjEgNSAxNyA5XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk0zIDExVjlhNCA0IDAgMCAxIDQtNGgxNFxcXCI+PC9wYXRoPjxwb2x5bGluZSBwb2ludHM9XFxcIjcgMjMgMyAxOSA3IDE1XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk0yMSAxM3YyYTQgNCAwIDAgMS00IDRIM1xcXCI+PC9wYXRoPlwiLFwicmV3aW5kXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjExIDE5IDIgMTIgMTEgNSAxMSAxOVxcXCI+PC9wb2x5Z29uPjxwb2x5Z29uIHBvaW50cz1cXFwiMjIgMTkgMTMgMTIgMjIgNSAyMiAxOVxcXCI+PC9wb2x5Z29uPlwiLFwicm90YXRlLWNjd1wiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMSA0IDEgMTAgNyAxMFxcXCI+PC9wb2x5bGluZT48cGF0aCBkPVxcXCJNMy41MSAxNWE5IDkgMCAxIDAgMi4xMy05LjM2TDEgMTBcXFwiPjwvcGF0aD5cIixcInJvdGF0ZS1jd1wiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMjMgNCAyMyAxMCAxNyAxMFxcXCI+PC9wb2x5bGluZT48cGF0aCBkPVxcXCJNMjAuNDkgMTVhOSA5IDAgMSAxLTIuMTItOS4zNkwyMyAxMFxcXCI+PC9wYXRoPlwiLFwicnNzXCI6XCI8cGF0aCBkPVxcXCJNNCAxMWE5IDkgMCAwIDEgOSA5XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTQgNGExNiAxNiAwIDAgMSAxNiAxNlxcXCI+PC9wYXRoPjxjaXJjbGUgY3g9XFxcIjVcXFwiIGN5PVxcXCIxOVxcXCIgcj1cXFwiMVxcXCI+PC9jaXJjbGU+XCIsXCJzYXZlXCI6XCI8cGF0aCBkPVxcXCJNMTkgMjFINWEyIDIgMCAwIDEtMi0yVjVhMiAyIDAgMCAxIDItMmgxMWw1IDV2MTFhMiAyIDAgMCAxLTIgMnpcXFwiPjwvcGF0aD48cG9seWxpbmUgcG9pbnRzPVxcXCIxNyAyMSAxNyAxMyA3IDEzIDcgMjFcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiNyAzIDcgOCAxNSA4XFxcIj48L3BvbHlsaW5lPlwiLFwic2Npc3NvcnNcIjpcIjxjaXJjbGUgY3g9XFxcIjZcXFwiIGN5PVxcXCI2XFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCI2XFxcIiBjeT1cXFwiMThcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIyMFxcXCIgeTE9XFxcIjRcXFwiIHgyPVxcXCI4LjEyXFxcIiB5Mj1cXFwiMTUuODhcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTQuNDdcXFwiIHkxPVxcXCIxNC40OFxcXCIgeDI9XFxcIjIwXFxcIiB5Mj1cXFwiMjBcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOC4xMlxcXCIgeTE9XFxcIjguMTJcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+XCIsXCJzZWFyY2hcIjpcIjxjaXJjbGUgY3g9XFxcIjExXFxcIiBjeT1cXFwiMTFcXFwiIHI9XFxcIjhcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiMTYuNjVcXFwiIHkyPVxcXCIxNi42NVxcXCI+PC9saW5lPlwiLFwic2VuZFwiOlwiPGxpbmUgeDE9XFxcIjIyXFxcIiB5MT1cXFwiMlxcXCIgeDI9XFxcIjExXFxcIiB5Mj1cXFwiMTNcXFwiPjwvbGluZT48cG9seWdvbiBwb2ludHM9XFxcIjIyIDIgMTUgMjIgMTEgMTMgMiA5IDIyIDJcXFwiPjwvcG9seWdvbj5cIixcInNlcnZlclwiOlwiPHJlY3QgeD1cXFwiMlxcXCIgeT1cXFwiMlxcXCIgd2lkdGg9XFxcIjIwXFxcIiBoZWlnaHQ9XFxcIjhcXFwiIHJ4PVxcXCIyXFxcIiByeT1cXFwiMlxcXCI+PC9yZWN0PjxyZWN0IHg9XFxcIjJcXFwiIHk9XFxcIjE0XFxcIiB3aWR0aD1cXFwiMjBcXFwiIGhlaWdodD1cXFwiOFxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PGxpbmUgeDE9XFxcIjZcXFwiIHkxPVxcXCI2XFxcIiB4Mj1cXFwiNi4wMVxcXCIgeTI9XFxcIjZcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiNlxcXCIgeTE9XFxcIjE4XFxcIiB4Mj1cXFwiNi4wMVxcXCIgeTI9XFxcIjE4XFxcIj48L2xpbmU+XCIsXCJzZXR0aW5nc1wiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiM1xcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTE5LjQgMTVhMS42NSAxLjY1IDAgMCAwIC4zMyAxLjgybC4wNi4wNmEyIDIgMCAwIDEgMCAyLjgzIDIgMiAwIDAgMS0yLjgzIDBsLS4wNi0uMDZhMS42NSAxLjY1IDAgMCAwLTEuODItLjMzIDEuNjUgMS42NSAwIDAgMC0xIDEuNTFWMjFhMiAyIDAgMCAxLTIgMiAyIDIgMCAwIDEtMi0ydi0uMDlBMS42NSAxLjY1IDAgMCAwIDkgMTkuNGExLjY1IDEuNjUgMCAwIDAtMS44Mi4zM2wtLjA2LjA2YTIgMiAwIDAgMS0yLjgzIDAgMiAyIDAgMCAxIDAtMi44M2wuMDYtLjA2YTEuNjUgMS42NSAwIDAgMCAuMzMtMS44MiAxLjY1IDEuNjUgMCAwIDAtMS41MS0xSDNhMiAyIDAgMCAxLTItMiAyIDIgMCAwIDEgMi0yaC4wOUExLjY1IDEuNjUgMCAwIDAgNC42IDlhMS42NSAxLjY1IDAgMCAwLS4zMy0xLjgybC0uMDYtLjA2YTIgMiAwIDAgMSAwLTIuODMgMiAyIDAgMCAxIDIuODMgMGwuMDYuMDZhMS42NSAxLjY1IDAgMCAwIDEuODIuMzNIOWExLjY1IDEuNjUgMCAwIDAgMS0xLjUxVjNhMiAyIDAgMCAxIDItMiAyIDIgMCAwIDEgMiAydi4wOWExLjY1IDEuNjUgMCAwIDAgMSAxLjUxIDEuNjUgMS42NSAwIDAgMCAxLjgyLS4zM2wuMDYtLjA2YTIgMiAwIDAgMSAyLjgzIDAgMiAyIDAgMCAxIDAgMi44M2wtLjA2LjA2YTEuNjUgMS42NSAwIDAgMC0uMzMgMS44MlY5YTEuNjUgMS42NSAwIDAgMCAxLjUxIDFIMjFhMiAyIDAgMCAxIDIgMiAyIDIgMCAwIDEtMiAyaC0uMDlhMS42NSAxLjY1IDAgMCAwLTEuNTEgMXpcXFwiPjwvcGF0aD5cIixcInNoYXJlLTJcIjpcIjxjaXJjbGUgY3g9XFxcIjE4XFxcIiBjeT1cXFwiNVxcXCIgcj1cXFwiM1xcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiNlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT48Y2lyY2xlIGN4PVxcXCIxOFxcXCIgY3k9XFxcIjE5XFxcIiByPVxcXCIzXFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiOC41OVxcXCIgeTE9XFxcIjEzLjUxXFxcIiB4Mj1cXFwiMTUuNDJcXFwiIHkyPVxcXCIxNy40OVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNS40MVxcXCIgeTE9XFxcIjYuNTFcXFwiIHgyPVxcXCI4LjU5XFxcIiB5Mj1cXFwiMTAuNDlcXFwiPjwvbGluZT5cIixcInNoYXJlXCI6XCI8cGF0aCBkPVxcXCJNNCAxMnY4YTIgMiAwIDAgMCAyIDJoMTJhMiAyIDAgMCAwIDItMnYtOFxcXCI+PC9wYXRoPjxwb2x5bGluZSBwb2ludHM9XFxcIjE2IDYgMTIgMiA4IDZcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT5cIixcInNoaWVsZC1vZmZcIjpcIjxwYXRoIGQ9XFxcIk0xOS42OSAxNGE2LjkgNi45IDAgMCAwIC4zMS0yVjVsLTgtMy0zLjE2IDEuMThcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNNC43MyA0LjczTDQgNXY3YzAgNiA4IDEwIDggMTBhMjAuMjkgMjAuMjkgMCAwIDAgNS42Mi00LjM4XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPlwiLFwic2hpZWxkXCI6XCI8cGF0aCBkPVxcXCJNMTIgMjJzOC00IDgtMTBWNWwtOC0zLTggM3Y3YzAgNiA4IDEwIDggMTB6XFxcIj48L3BhdGg+XCIsXCJzaG9wcGluZy1iYWdcIjpcIjxwYXRoIGQ9XFxcIk02IDJMMyA2djE0YTIgMiAwIDAgMCAyIDJoMTRhMiAyIDAgMCAwIDItMlY2bC0zLTR6XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjNcXFwiIHkxPVxcXCI2XFxcIiB4Mj1cXFwiMjFcXFwiIHkyPVxcXCI2XFxcIj48L2xpbmU+PHBhdGggZD1cXFwiTTE2IDEwYTQgNCAwIDAgMS04IDBcXFwiPjwvcGF0aD5cIixcInNob3BwaW5nLWNhcnRcIjpcIjxjaXJjbGUgY3g9XFxcIjlcXFwiIGN5PVxcXCIyMVxcXCIgcj1cXFwiMVxcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiMjBcXFwiIGN5PVxcXCIyMVxcXCIgcj1cXFwiMVxcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTEgMWg0bDIuNjggMTMuMzlhMiAyIDAgMCAwIDIgMS42MWg5LjcyYTIgMiAwIDAgMCAyLTEuNjFMMjMgNkg2XFxcIj48L3BhdGg+XCIsXCJzaHVmZmxlXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIxNiAzIDIxIDMgMjEgOFxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiNFxcXCIgeTE9XFxcIjIwXFxcIiB4Mj1cXFwiMjFcXFwiIHkyPVxcXCIzXFxcIj48L2xpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMjEgMTYgMjEgMjEgMTYgMjFcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjE1XFxcIiB5MT1cXFwiMTVcXFwiIHgyPVxcXCIyMVxcXCIgeTI9XFxcIjIxXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjRcXFwiIHkxPVxcXCI0XFxcIiB4Mj1cXFwiOVxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT5cIixcInNpZGViYXJcIjpcIjxyZWN0IHg9XFxcIjNcXFwiIHk9XFxcIjNcXFwiIHdpZHRoPVxcXCIxOFxcXCIgaGVpZ2h0PVxcXCIxOFxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCIzXFxcIiB4Mj1cXFwiOVxcXCIgeTI9XFxcIjIxXFxcIj48L2xpbmU+XCIsXCJza2lwLWJhY2tcIjpcIjxwb2x5Z29uIHBvaW50cz1cXFwiMTkgMjAgOSAxMiAxOSA0IDE5IDIwXFxcIj48L3BvbHlnb24+PGxpbmUgeDE9XFxcIjVcXFwiIHkxPVxcXCIxOVxcXCIgeDI9XFxcIjVcXFwiIHkyPVxcXCI1XFxcIj48L2xpbmU+XCIsXCJza2lwLWZvcndhcmRcIjpcIjxwb2x5Z29uIHBvaW50cz1cXFwiNSA0IDE1IDEyIDUgMjAgNSA0XFxcIj48L3BvbHlnb24+PGxpbmUgeDE9XFxcIjE5XFxcIiB5MT1cXFwiNVxcXCIgeDI9XFxcIjE5XFxcIiB5Mj1cXFwiMTlcXFwiPjwvbGluZT5cIixcInNsYWNrXCI6XCI8cGF0aCBkPVxcXCJNMTQuNSAxMGMtLjgzIDAtMS41LS42Ny0xLjUtMS41di01YzAtLjgzLjY3LTEuNSAxLjUtMS41czEuNS42NyAxLjUgMS41djVjMCAuODMtLjY3IDEuNS0xLjUgMS41elxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0yMC41IDEwSDE5VjguNWMwLS44My42Ny0xLjUgMS41LTEuNXMxLjUuNjcgMS41IDEuNS0uNjcgMS41LTEuNSAxLjV6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTkuNSAxNGMuODMgMCAxLjUuNjcgMS41IDEuNXY1YzAgLjgzLS42NyAxLjUtMS41IDEuNVM4IDIxLjMzIDggMjAuNXYtNWMwLS44My42Ny0xLjUgMS41LTEuNXpcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMy41IDE0SDV2MS41YzAgLjgzLS42NyAxLjUtMS41IDEuNVMyIDE2LjMzIDIgMTUuNSAyLjY3IDE0IDMuNSAxNHpcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTQgMTQuNWMwLS44My42Ny0xLjUgMS41LTEuNWg1Yy44MyAwIDEuNS42NyAxLjUgMS41cy0uNjcgMS41LTEuNSAxLjVoLTVjLS44MyAwLTEuNS0uNjctMS41LTEuNXpcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTUuNSAxOUgxNHYxLjVjMCAuODMuNjcgMS41IDEuNSAxLjVzMS41LS42NyAxLjUtMS41LS42Ny0xLjUtMS41LTEuNXpcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMTAgOS41QzEwIDguNjcgOS4zMyA4IDguNSA4aC01QzIuNjcgOCAyIDguNjcgMiA5LjVTMi42NyAxMSAzLjUgMTFoNWMuODMgMCAxLjUtLjY3IDEuNS0xLjV6XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTguNSA1SDEwVjMuNUMxMCAyLjY3IDkuMzMgMiA4LjUgMlM3IDIuNjcgNyAzLjUgNy42NyA1IDguNSA1elxcXCI+PC9wYXRoPlwiLFwic2xhc2hcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjEwXFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiNC45M1xcXCIgeTE9XFxcIjQuOTNcXFwiIHgyPVxcXCIxOS4wN1xcXCIgeTI9XFxcIjE5LjA3XFxcIj48L2xpbmU+XCIsXCJzbGlkZXJzXCI6XCI8bGluZSB4MT1cXFwiNFxcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiNFxcXCIgeTI9XFxcIjE0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjRcXFwiIHkxPVxcXCIxMFxcXCIgeDI9XFxcIjRcXFwiIHkyPVxcXCIzXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMjFcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjEyXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMFxcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiMjBcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMFxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMjBcXFwiIHkyPVxcXCIzXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxNFxcXCIgeDI9XFxcIjdcXFwiIHkyPVxcXCIxNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI5XFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjE1XFxcIiB5Mj1cXFwiOFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxN1xcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIxNlxcXCI+PC9saW5lPlwiLFwic21hcnRwaG9uZVwiOlwiPHJlY3QgeD1cXFwiNVxcXCIgeT1cXFwiMlxcXCIgd2lkdGg9XFxcIjE0XFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT5cIixcInNtaWxlXCI6XCI8Y2lyY2xlIGN4PVxcXCIxMlxcXCIgY3k9XFxcIjEyXFxcIiByPVxcXCIxMFxcXCI+PC9jaXJjbGU+PHBhdGggZD1cXFwiTTggMTRzMS41IDIgNCAyIDQtMiA0LTJcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiOVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCI5LjAxXFxcIiB5Mj1cXFwiOVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxNVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIxNS4wMVxcXCIgeTI9XFxcIjlcXFwiPjwvbGluZT5cIixcInNwZWFrZXJcIjpcIjxyZWN0IHg9XFxcIjRcXFwiIHk9XFxcIjJcXFwiIHdpZHRoPVxcXCIxNlxcXCIgaGVpZ2h0PVxcXCIyMFxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxNFxcXCIgcj1cXFwiNFxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiNlxcXCI+PC9saW5lPlwiLFwic3F1YXJlXCI6XCI8cmVjdCB4PVxcXCIzXFxcIiB5PVxcXCIzXFxcIiB3aWR0aD1cXFwiMThcXFwiIGhlaWdodD1cXFwiMThcXFwiIHJ4PVxcXCIyXFxcIiByeT1cXFwiMlxcXCI+PC9yZWN0PlwiLFwic3RhclwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCIxMiAyIDE1LjA5IDguMjYgMjIgOS4yNyAxNyAxNC4xNCAxOC4xOCAyMS4wMiAxMiAxNy43NyA1LjgyIDIxLjAyIDcgMTQuMTQgMiA5LjI3IDguOTEgOC4yNiAxMiAyXFxcIj48L3BvbHlnb24+XCIsXCJzdG9wLWNpcmNsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxyZWN0IHg9XFxcIjlcXFwiIHk9XFxcIjlcXFwiIHdpZHRoPVxcXCI2XFxcIiBoZWlnaHQ9XFxcIjZcXFwiPjwvcmVjdD5cIixcInN1blwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiNVxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjEyXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI0LjIyXFxcIiB5MT1cXFwiNC4yMlxcXCIgeDI9XFxcIjUuNjRcXFwiIHkyPVxcXCI1LjY0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE4LjM2XFxcIiB5MT1cXFwiMTguMzZcXFwiIHgyPVxcXCIxOS43OFxcXCIgeTI9XFxcIjE5Ljc4XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjEyXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIxMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI0LjIyXFxcIiB5MT1cXFwiMTkuNzhcXFwiIHgyPVxcXCI1LjY0XFxcIiB5Mj1cXFwiMTguMzZcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTguMzZcXFwiIHkxPVxcXCI1LjY0XFxcIiB4Mj1cXFwiMTkuNzhcXFwiIHkyPVxcXCI0LjIyXFxcIj48L2xpbmU+XCIsXCJzdW5yaXNlXCI6XCI8cGF0aCBkPVxcXCJNMTcgMThhNSA1IDAgMCAwLTEwIDBcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCI5XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjQuMjJcXFwiIHkxPVxcXCIxMC4yMlxcXCIgeDI9XFxcIjUuNjRcXFwiIHkyPVxcXCIxMS42NFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMThcXFwiIHgyPVxcXCIzXFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMjFcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTguMzZcXFwiIHkxPVxcXCIxMS42NFxcXCIgeDI9XFxcIjE5Ljc4XFxcIiB5Mj1cXFwiMTAuMjJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMjNcXFwiIHkxPVxcXCIyMlxcXCIgeDI9XFxcIjFcXFwiIHkyPVxcXCIyMlxcXCI+PC9saW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjggNiAxMiAyIDE2IDZcXFwiPjwvcG9seWxpbmU+XCIsXCJzdW5zZXRcIjpcIjxwYXRoIGQ9XFxcIk0xNyAxOGE1IDUgMCAwIDAtMTAgMFxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIxMlxcXCIgeTI9XFxcIjJcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiNC4yMlxcXCIgeTE9XFxcIjEwLjIyXFxcIiB4Mj1cXFwiNS42NFxcXCIgeTI9XFxcIjExLjY0XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjNcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjE4XFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIxOC4zNlxcXCIgeTE9XFxcIjExLjY0XFxcIiB4Mj1cXFwiMTkuNzhcXFwiIHkyPVxcXCIxMC4yMlxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyM1xcXCIgeTE9XFxcIjIyXFxcIiB4Mj1cXFwiMVxcXCIgeTI9XFxcIjIyXFxcIj48L2xpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTYgNSAxMiA5IDggNVxcXCI+PC9wb2x5bGluZT5cIixcInRhYmxldFwiOlwiPHJlY3QgeD1cXFwiNFxcXCIgeT1cXFwiMlxcXCIgd2lkdGg9XFxcIjE2XFxcIiBoZWlnaHQ9XFxcIjIwXFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxOFxcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT5cIixcInRhZ1wiOlwiPHBhdGggZD1cXFwiTTIwLjU5IDEzLjQxbC03LjE3IDcuMTdhMiAyIDAgMCAxLTIuODMgMEwyIDEyVjJoMTBsOC41OSA4LjU5YTIgMiAwIDAgMSAwIDIuODJ6XFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjdcXFwiIHkxPVxcXCI3XFxcIiB4Mj1cXFwiNy4wMVxcXCIgeTI9XFxcIjdcXFwiPjwvbGluZT5cIixcInRhcmdldFwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjZcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjJcXFwiPjwvY2lyY2xlPlwiLFwidGVybWluYWxcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjQgMTcgMTAgMTEgNCA1XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjE5XFxcIiB4Mj1cXFwiMjBcXFwiIHkyPVxcXCIxOVxcXCI+PC9saW5lPlwiLFwidGhlcm1vbWV0ZXJcIjpcIjxwYXRoIGQ9XFxcIk0xNCAxNC43NlYzLjVhMi41IDIuNSAwIDAgMC01IDB2MTEuMjZhNC41IDQuNSAwIDEgMCA1IDB6XFxcIj48L3BhdGg+XCIsXCJ0aHVtYnMtZG93blwiOlwiPHBhdGggZD1cXFwiTTEwIDE1djRhMyAzIDAgMCAwIDMgM2w0LTlWMkg1LjcyYTIgMiAwIDAgMC0yIDEuN2wtMS4zOCA5YTIgMiAwIDAgMCAyIDIuM3ptNy0xM2gyLjY3QTIuMzEgMi4zMSAwIDAgMSAyMiA0djdhMi4zMSAyLjMxIDAgMCAxLTIuMzMgMkgxN1xcXCI+PC9wYXRoPlwiLFwidGh1bWJzLXVwXCI6XCI8cGF0aCBkPVxcXCJNMTQgOVY1YTMgMyAwIDAgMC0zLTNsLTQgOXYxMWgxMS4yOGEyIDIgMCAwIDAgMi0xLjdsMS4zOC05YTIgMiAwIDAgMC0yLTIuM3pNNyAyMkg0YTIgMiAwIDAgMS0yLTJ2LTdhMiAyIDAgMCAxIDItMmgzXFxcIj48L3BhdGg+XCIsXCJ0b2dnbGUtbGVmdFwiOlwiPHJlY3QgeD1cXFwiMVxcXCIgeT1cXFwiNVxcXCIgd2lkdGg9XFxcIjIyXFxcIiBoZWlnaHQ9XFxcIjE0XFxcIiByeD1cXFwiN1xcXCIgcnk9XFxcIjdcXFwiPjwvcmVjdD48Y2lyY2xlIGN4PVxcXCI4XFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPlwiLFwidG9nZ2xlLXJpZ2h0XCI6XCI8cmVjdCB4PVxcXCIxXFxcIiB5PVxcXCI1XFxcIiB3aWR0aD1cXFwiMjJcXFwiIGhlaWdodD1cXFwiMTRcXFwiIHJ4PVxcXCI3XFxcIiByeT1cXFwiN1xcXCI+PC9yZWN0PjxjaXJjbGUgY3g9XFxcIjE2XFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjNcXFwiPjwvY2lyY2xlPlwiLFwidG9vbFwiOlwiPHBhdGggZD1cXFwiTTE0LjcgNi4zYTEgMSAwIDAgMCAwIDEuNGwxLjYgMS42YTEgMSAwIDAgMCAxLjQgMGwzLjc3LTMuNzdhNiA2IDAgMCAxLTcuOTQgNy45NGwtNi45MSA2LjkxYTIuMTIgMi4xMiAwIDAgMS0zLTNsNi45MS02LjkxYTYgNiAwIDAgMSA3Ljk0LTcuOTRsLTMuNzYgMy43NnpcXFwiPjwvcGF0aD5cIixcInRyYXNoLTJcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjMgNiA1IDYgMjEgNlxcXCI+PC9wb2x5bGluZT48cGF0aCBkPVxcXCJNMTkgNnYxNGEyIDIgMCAwIDEtMiAySDdhMiAyIDAgMCAxLTItMlY2bTMgMFY0YTIgMiAwIDAgMSAyLTJoNGEyIDIgMCAwIDEgMiAydjJcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMTBcXFwiIHkxPVxcXCIxMVxcXCIgeDI9XFxcIjEwXFxcIiB5Mj1cXFwiMTdcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTRcXFwiIHkxPVxcXCIxMVxcXCIgeDI9XFxcIjE0XFxcIiB5Mj1cXFwiMTdcXFwiPjwvbGluZT5cIixcInRyYXNoXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIzIDYgNSA2IDIxIDZcXFwiPjwvcG9seWxpbmU+PHBhdGggZD1cXFwiTTE5IDZ2MTRhMiAyIDAgMCAxLTIgMkg3YTIgMiAwIDAgMS0yLTJWNm0zIDBWNGEyIDIgMCAwIDEgMi0yaDRhMiAyIDAgMCAxIDIgMnYyXFxcIj48L3BhdGg+XCIsXCJ0cmVsbG9cIjpcIjxyZWN0IHg9XFxcIjNcXFwiIHk9XFxcIjNcXFwiIHdpZHRoPVxcXCIxOFxcXCIgaGVpZ2h0PVxcXCIxOFxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PHJlY3QgeD1cXFwiN1xcXCIgeT1cXFwiN1xcXCIgd2lkdGg9XFxcIjNcXFwiIGhlaWdodD1cXFwiOVxcXCI+PC9yZWN0PjxyZWN0IHg9XFxcIjE0XFxcIiB5PVxcXCI3XFxcIiB3aWR0aD1cXFwiM1xcXCIgaGVpZ2h0PVxcXCI1XFxcIj48L3JlY3Q+XCIsXCJ0cmVuZGluZy1kb3duXCI6XCI8cG9seWxpbmUgcG9pbnRzPVxcXCIyMyAxOCAxMy41IDguNSA4LjUgMTMuNSAxIDZcXFwiPjwvcG9seWxpbmU+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTcgMTggMjMgMTggMjMgMTJcXFwiPjwvcG9seWxpbmU+XCIsXCJ0cmVuZGluZy11cFwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMjMgNiAxMy41IDE1LjUgOC41IDEwLjUgMSAxOFxcXCI+PC9wb2x5bGluZT48cG9seWxpbmUgcG9pbnRzPVxcXCIxNyA2IDIzIDYgMjMgMTJcXFwiPjwvcG9seWxpbmU+XCIsXCJ0cmlhbmdsZVwiOlwiPHBhdGggZD1cXFwiTTEwLjI5IDMuODZMMS44MiAxOGEyIDIgMCAwIDAgMS43MSAzaDE2Ljk0YTIgMiAwIDAgMCAxLjcxLTNMMTMuNzEgMy44NmEyIDIgMCAwIDAtMy40MiAwelxcXCI+PC9wYXRoPlwiLFwidHJ1Y2tcIjpcIjxyZWN0IHg9XFxcIjFcXFwiIHk9XFxcIjNcXFwiIHdpZHRoPVxcXCIxNVxcXCIgaGVpZ2h0PVxcXCIxM1xcXCI+PC9yZWN0Pjxwb2x5Z29uIHBvaW50cz1cXFwiMTYgOCAyMCA4IDIzIDExIDIzIDE2IDE2IDE2IDE2IDhcXFwiPjwvcG9seWdvbj48Y2lyY2xlIGN4PVxcXCI1LjVcXFwiIGN5PVxcXCIxOC41XFxcIiByPVxcXCIyLjVcXFwiPjwvY2lyY2xlPjxjaXJjbGUgY3g9XFxcIjE4LjVcXFwiIGN5PVxcXCIxOC41XFxcIiByPVxcXCIyLjVcXFwiPjwvY2lyY2xlPlwiLFwidHZcIjpcIjxyZWN0IHg9XFxcIjJcXFwiIHk9XFxcIjdcXFwiIHdpZHRoPVxcXCIyMFxcXCIgaGVpZ2h0PVxcXCIxNVxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTcgMiAxMiA3IDcgMlxcXCI+PC9wb2x5bGluZT5cIixcInR3aXRjaFwiOlwiPHBhdGggZD1cXFwiTTIxIDJIM3YxNmg1djRsNC00aDVsNC00VjJ6bS0xMCA5VjdtNSA0VjdcXFwiPjwvcGF0aD5cIixcInR3aXR0ZXJcIjpcIjxwYXRoIGQ9XFxcIk0yMyAzYTEwLjkgMTAuOSAwIDAgMS0zLjE0IDEuNTMgNC40OCA0LjQ4IDAgMCAwLTcuODYgM3YxQTEwLjY2IDEwLjY2IDAgMCAxIDMgNHMtNCA5IDUgMTNhMTEuNjQgMTEuNjQgMCAwIDEtNyAyYzkgNSAyMCAwIDIwLTExLjVhNC41IDQuNSAwIDAgMC0uMDgtLjgzQTcuNzIgNy43MiAwIDAgMCAyMyAzelxcXCI+PC9wYXRoPlwiLFwidHlwZVwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiNCA3IDQgNCAyMCA0IDIwIDdcXFwiPjwvcG9seWxpbmU+PGxpbmUgeDE9XFxcIjlcXFwiIHkxPVxcXCIyMFxcXCIgeDI9XFxcIjE1XFxcIiB5Mj1cXFwiMjBcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCI0XFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIyMFxcXCI+PC9saW5lPlwiLFwidW1icmVsbGFcIjpcIjxwYXRoIGQ9XFxcIk0yMyAxMmExMS4wNSAxMS4wNSAwIDAgMC0yMiAwem0tNSA3YTMgMyAwIDAgMS02IDB2LTdcXFwiPjwvcGF0aD5cIixcInVuZGVybGluZVwiOlwiPHBhdGggZD1cXFwiTTYgM3Y3YTYgNiAwIDAgMCA2IDYgNiA2IDAgMCAwIDYtNlYzXFxcIj48L3BhdGg+PGxpbmUgeDE9XFxcIjRcXFwiIHkxPVxcXCIyMVxcXCIgeDI9XFxcIjIwXFxcIiB5Mj1cXFwiMjFcXFwiPjwvbGluZT5cIixcInVubG9ja1wiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiMTFcXFwiIHdpZHRoPVxcXCIxOFxcXCIgaGVpZ2h0PVxcXCIxMVxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+PHBhdGggZD1cXFwiTTcgMTFWN2E1IDUgMCAwIDEgOS45LTFcXFwiPjwvcGF0aD5cIixcInVwbG9hZC1jbG91ZFwiOlwiPHBvbHlsaW5lIHBvaW50cz1cXFwiMTYgMTYgMTIgMTIgOCAxNlxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIxMlxcXCIgeDI9XFxcIjEyXFxcIiB5Mj1cXFwiMjFcXFwiPjwvbGluZT48cGF0aCBkPVxcXCJNMjAuMzkgMTguMzlBNSA1IDAgMCAwIDE4IDloLTEuMjZBOCA4IDAgMSAwIDMgMTYuM1xcXCI+PC9wYXRoPjxwb2x5bGluZSBwb2ludHM9XFxcIjE2IDE2IDEyIDEyIDggMTZcXFwiPjwvcG9seWxpbmU+XCIsXCJ1cGxvYWRcIjpcIjxwYXRoIGQ9XFxcIk0yMSAxNXY0YTIgMiAwIDAgMS0yIDJINWEyIDIgMCAwIDEtMi0ydi00XFxcIj48L3BhdGg+PHBvbHlsaW5lIHBvaW50cz1cXFwiMTcgOCAxMiAzIDcgOFxcXCI+PC9wb2x5bGluZT48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIzXFxcIiB4Mj1cXFwiMTJcXFwiIHkyPVxcXCIxNVxcXCI+PC9saW5lPlwiLFwidXNlci1jaGVja1wiOlwiPHBhdGggZD1cXFwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcXFwiPjwvcGF0aD48Y2lyY2xlIGN4PVxcXCI4LjVcXFwiIGN5PVxcXCI3XFxcIiByPVxcXCI0XFxcIj48L2NpcmNsZT48cG9seWxpbmUgcG9pbnRzPVxcXCIxNyAxMSAxOSAxMyAyMyA5XFxcIj48L3BvbHlsaW5lPlwiLFwidXNlci1taW51c1wiOlwiPHBhdGggZD1cXFwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcXFwiPjwvcGF0aD48Y2lyY2xlIGN4PVxcXCI4LjVcXFwiIGN5PVxcXCI3XFxcIiByPVxcXCI0XFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiMjNcXFwiIHkxPVxcXCIxMVxcXCIgeDI9XFxcIjE3XFxcIiB5Mj1cXFwiMTFcXFwiPjwvbGluZT5cIixcInVzZXItcGx1c1wiOlwiPHBhdGggZD1cXFwiTTE2IDIxdi0yYTQgNCAwIDAgMC00LTRINWE0IDQgMCAwIDAtNCA0djJcXFwiPjwvcGF0aD48Y2lyY2xlIGN4PVxcXCI4LjVcXFwiIGN5PVxcXCI3XFxcIiByPVxcXCI0XFxcIj48L2NpcmNsZT48bGluZSB4MT1cXFwiMjBcXFwiIHkxPVxcXCI4XFxcIiB4Mj1cXFwiMjBcXFwiIHkyPVxcXCIxNFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCIyM1xcXCIgeTE9XFxcIjExXFxcIiB4Mj1cXFwiMTdcXFwiIHkyPVxcXCIxMVxcXCI+PC9saW5lPlwiLFwidXNlci14XCI6XCI8cGF0aCBkPVxcXCJNMTYgMjF2LTJhNCA0IDAgMCAwLTQtNEg1YTQgNCAwIDAgMC00IDR2MlxcXCI+PC9wYXRoPjxjaXJjbGUgY3g9XFxcIjguNVxcXCIgY3k9XFxcIjdcXFwiIHI9XFxcIjRcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIxOFxcXCIgeTE9XFxcIjhcXFwiIHgyPVxcXCIyM1xcXCIgeTI9XFxcIjEzXFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjIzXFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjE4XFxcIiB5Mj1cXFwiMTNcXFwiPjwvbGluZT5cIixcInVzZXJcIjpcIjxwYXRoIGQ9XFxcIk0yMCAyMXYtMmE0IDQgMCAwIDAtNC00SDhhNCA0IDAgMCAwLTQgNHYyXFxcIj48L3BhdGg+PGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCI3XFxcIiByPVxcXCI0XFxcIj48L2NpcmNsZT5cIixcInVzZXJzXCI6XCI8cGF0aCBkPVxcXCJNMTcgMjF2LTJhNCA0IDAgMCAwLTQtNEg1YTQgNCAwIDAgMC00IDR2MlxcXCI+PC9wYXRoPjxjaXJjbGUgY3g9XFxcIjlcXFwiIGN5PVxcXCI3XFxcIiByPVxcXCI0XFxcIj48L2NpcmNsZT48cGF0aCBkPVxcXCJNMjMgMjF2LTJhNCA0IDAgMCAwLTMtMy44N1xcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0xNiAzLjEzYTQgNCAwIDAgMSAwIDcuNzVcXFwiPjwvcGF0aD5cIixcInZpZGVvLW9mZlwiOlwiPHBhdGggZD1cXFwiTTE2IDE2djFhMiAyIDAgMCAxLTIgMkgzYTIgMiAwIDAgMS0yLTJWN2EyIDIgMCAwIDEgMi0yaDJtNS42NiAwSDE0YTIgMiAwIDAgMSAyIDJ2My4zNGwxIDFMMjMgN3YxMFxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMjNcXFwiPjwvbGluZT5cIixcInZpZGVvXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjIzIDcgMTYgMTIgMjMgMTcgMjMgN1xcXCI+PC9wb2x5Z29uPjxyZWN0IHg9XFxcIjFcXFwiIHk9XFxcIjVcXFwiIHdpZHRoPVxcXCIxNVxcXCIgaGVpZ2h0PVxcXCIxNFxcXCIgcng9XFxcIjJcXFwiIHJ5PVxcXCIyXFxcIj48L3JlY3Q+XCIsXCJ2b2ljZW1haWxcIjpcIjxjaXJjbGUgY3g9XFxcIjUuNVxcXCIgY3k9XFxcIjExLjVcXFwiIHI9XFxcIjQuNVxcXCI+PC9jaXJjbGU+PGNpcmNsZSBjeD1cXFwiMTguNVxcXCIgY3k9XFxcIjExLjVcXFwiIHI9XFxcIjQuNVxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjUuNVxcXCIgeTE9XFxcIjE2XFxcIiB4Mj1cXFwiMTguNVxcXCIgeTI9XFxcIjE2XFxcIj48L2xpbmU+XCIsXCJ2b2x1bWUtMVwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCIxMSA1IDYgOSAyIDkgMiAxNSA2IDE1IDExIDE5IDExIDVcXFwiPjwvcG9seWdvbj48cGF0aCBkPVxcXCJNMTUuNTQgOC40NmE1IDUgMCAwIDEgMCA3LjA3XFxcIj48L3BhdGg+XCIsXCJ2b2x1bWUtMlwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCIxMSA1IDYgOSAyIDkgMiAxNSA2IDE1IDExIDE5IDExIDVcXFwiPjwvcG9seWdvbj48cGF0aCBkPVxcXCJNMTkuMDcgNC45M2ExMCAxMCAwIDAgMSAwIDE0LjE0TTE1LjU0IDguNDZhNSA1IDAgMCAxIDAgNy4wN1xcXCI+PC9wYXRoPlwiLFwidm9sdW1lLXhcIjpcIjxwb2x5Z29uIHBvaW50cz1cXFwiMTEgNSA2IDkgMiA5IDIgMTUgNiAxNSAxMSAxOSAxMSA1XFxcIj48L3BvbHlnb24+PGxpbmUgeDE9XFxcIjIzXFxcIiB5MT1cXFwiOVxcXCIgeDI9XFxcIjE3XFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiMTdcXFwiIHkxPVxcXCI5XFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIxNVxcXCI+PC9saW5lPlwiLFwidm9sdW1lXCI6XCI8cG9seWdvbiBwb2ludHM9XFxcIjExIDUgNiA5IDIgOSAyIDE1IDYgMTUgMTEgMTkgMTEgNVxcXCI+PC9wb2x5Z29uPlwiLFwid2F0Y2hcIjpcIjxjaXJjbGUgY3g9XFxcIjEyXFxcIiBjeT1cXFwiMTJcXFwiIHI9XFxcIjdcXFwiPjwvY2lyY2xlPjxwb2x5bGluZSBwb2ludHM9XFxcIjEyIDkgMTIgMTIgMTMuNSAxMy41XFxcIj48L3BvbHlsaW5lPjxwYXRoIGQ9XFxcIk0xNi41MSAxNy4zNWwtLjM1IDMuODNhMiAyIDAgMCAxLTIgMS44Mkg5LjgzYTIgMiAwIDAgMS0yLTEuODJsLS4zNS0zLjgzbS4wMS0xMC43bC4zNS0zLjgzQTIgMiAwIDAgMSA5LjgzIDFoNC4zNWEyIDIgMCAwIDEgMiAxLjgybC4zNSAzLjgzXFxcIj48L3BhdGg+XCIsXCJ3aWZpLW9mZlwiOlwiPGxpbmUgeDE9XFxcIjFcXFwiIHkxPVxcXCIxXFxcIiB4Mj1cXFwiMjNcXFwiIHkyPVxcXCIyM1xcXCI+PC9saW5lPjxwYXRoIGQ9XFxcIk0xNi43MiAxMS4wNkExMC45NCAxMC45NCAwIDAgMSAxOSAxMi41NVxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk01IDEyLjU1YTEwLjk0IDEwLjk0IDAgMCAxIDUuMTctMi4zOVxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0xMC43MSA1LjA1QTE2IDE2IDAgMCAxIDIyLjU4IDlcXFwiPjwvcGF0aD48cGF0aCBkPVxcXCJNMS40MiA5YTE1LjkxIDE1LjkxIDAgMCAxIDQuNy0yLjg4XFxcIj48L3BhdGg+PHBhdGggZD1cXFwiTTguNTMgMTYuMTFhNiA2IDAgMCAxIDYuOTUgMFxcXCI+PC9wYXRoPjxsaW5lIHgxPVxcXCIxMlxcXCIgeTE9XFxcIjIwXFxcIiB4Mj1cXFwiMTIuMDFcXFwiIHkyPVxcXCIyMFxcXCI+PC9saW5lPlwiLFwid2lmaVwiOlwiPHBhdGggZD1cXFwiTTUgMTIuNTVhMTEgMTEgMCAwIDEgMTQuMDggMFxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk0xLjQyIDlhMTYgMTYgMCAwIDEgMjEuMTYgMFxcXCI+PC9wYXRoPjxwYXRoIGQ9XFxcIk04LjUzIDE2LjExYTYgNiAwIDAgMSA2Ljk1IDBcXFwiPjwvcGF0aD48bGluZSB4MT1cXFwiMTJcXFwiIHkxPVxcXCIyMFxcXCIgeDI9XFxcIjEyLjAxXFxcIiB5Mj1cXFwiMjBcXFwiPjwvbGluZT5cIixcIndpbmRcIjpcIjxwYXRoIGQ9XFxcIk05LjU5IDQuNTlBMiAyIDAgMSAxIDExIDhIMm0xMC41OSAxMS40MUEyIDIgMCAxIDAgMTQgMTZIMm0xNS43My04LjI3QTIuNSAyLjUgMCAxIDEgMTkuNSAxMkgyXFxcIj48L3BhdGg+XCIsXCJ4LWNpcmNsZVwiOlwiPGNpcmNsZSBjeD1cXFwiMTJcXFwiIGN5PVxcXCIxMlxcXCIgcj1cXFwiMTBcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIxNVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCI5XFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIxNVxcXCIgeTI9XFxcIjE1XFxcIj48L2xpbmU+XCIsXCJ4LW9jdGFnb25cIjpcIjxwb2x5Z29uIHBvaW50cz1cXFwiNy44NiAyIDE2LjE0IDIgMjIgNy44NiAyMiAxNi4xNCAxNi4xNCAyMiA3Ljg2IDIyIDIgMTYuMTQgMiA3Ljg2IDcuODYgMlxcXCI+PC9wb2x5Z29uPjxsaW5lIHgxPVxcXCIxNVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCI5XFxcIiB5Mj1cXFwiMTVcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIxNVxcXCIgeTI9XFxcIjE1XFxcIj48L2xpbmU+XCIsXCJ4LXNxdWFyZVwiOlwiPHJlY3QgeD1cXFwiM1xcXCIgeT1cXFwiM1xcXCIgd2lkdGg9XFxcIjE4XFxcIiBoZWlnaHQ9XFxcIjE4XFxcIiByeD1cXFwiMlxcXCIgcnk9XFxcIjJcXFwiPjwvcmVjdD48bGluZSB4MT1cXFwiOVxcXCIgeTE9XFxcIjlcXFwiIHgyPVxcXCIxNVxcXCIgeTI9XFxcIjE1XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjE1XFxcIiB5MT1cXFwiOVxcXCIgeDI9XFxcIjlcXFwiIHkyPVxcXCIxNVxcXCI+PC9saW5lPlwiLFwieFwiOlwiPGxpbmUgeDE9XFxcIjE4XFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjZcXFwiIHkyPVxcXCIxOFxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI2XFxcIiB5MT1cXFwiNlxcXCIgeDI9XFxcIjE4XFxcIiB5Mj1cXFwiMThcXFwiPjwvbGluZT5cIixcInlvdXR1YmVcIjpcIjxwYXRoIGQ9XFxcIk0yMi41NCA2LjQyYTIuNzggMi43OCAwIDAgMC0xLjk0LTJDMTguODggNCAxMiA0IDEyIDRzLTYuODggMC04LjYuNDZhMi43OCAyLjc4IDAgMCAwLTEuOTQgMkEyOSAyOSAwIDAgMCAxIDExLjc1YTI5IDI5IDAgMCAwIC40NiA1LjMzQTIuNzggMi43OCAwIDAgMCAzLjQgMTljMS43Mi40NiA4LjYuNDYgOC42LjQ2czYuODggMCA4LjYtLjQ2YTIuNzggMi43OCAwIDAgMCAxLjk0LTIgMjkgMjkgMCAwIDAgLjQ2LTUuMjUgMjkgMjkgMCAwIDAtLjQ2LTUuMzN6XFxcIj48L3BhdGg+PHBvbHlnb24gcG9pbnRzPVxcXCI5Ljc1IDE1LjAyIDE1LjUgMTEuNzUgOS43NSA4LjQ4IDkuNzUgMTUuMDJcXFwiPjwvcG9seWdvbj5cIixcInphcC1vZmZcIjpcIjxwb2x5bGluZSBwb2ludHM9XFxcIjEyLjQxIDYuNzUgMTMgMiAxMC41NyA0LjkyXFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjE4LjU3IDEyLjkxIDIxIDEwIDE1LjY2IDEwXFxcIj48L3BvbHlsaW5lPjxwb2x5bGluZSBwb2ludHM9XFxcIjggOCAzIDE0IDEyIDE0IDExIDIyIDE2IDE2XFxcIj48L3BvbHlsaW5lPjxsaW5lIHgxPVxcXCIxXFxcIiB5MT1cXFwiMVxcXCIgeDI9XFxcIjIzXFxcIiB5Mj1cXFwiMjNcXFwiPjwvbGluZT5cIixcInphcFwiOlwiPHBvbHlnb24gcG9pbnRzPVxcXCIxMyAyIDMgMTQgMTIgMTQgMTEgMjIgMjEgMTAgMTIgMTAgMTMgMlxcXCI+PC9wb2x5Z29uPlwiLFwiem9vbS1pblwiOlwiPGNpcmNsZSBjeD1cXFwiMTFcXFwiIGN5PVxcXCIxMVxcXCIgcj1cXFwiOFxcXCI+PC9jaXJjbGU+PGxpbmUgeDE9XFxcIjIxXFxcIiB5MT1cXFwiMjFcXFwiIHgyPVxcXCIxNi42NVxcXCIgeTI9XFxcIjE2LjY1XFxcIj48L2xpbmU+PGxpbmUgeDE9XFxcIjExXFxcIiB5MT1cXFwiOFxcXCIgeDI9XFxcIjExXFxcIiB5Mj1cXFwiMTRcXFwiPjwvbGluZT48bGluZSB4MT1cXFwiOFxcXCIgeTE9XFxcIjExXFxcIiB4Mj1cXFwiMTRcXFwiIHkyPVxcXCIxMVxcXCI+PC9saW5lPlwiLFwiem9vbS1vdXRcIjpcIjxjaXJjbGUgY3g9XFxcIjExXFxcIiBjeT1cXFwiMTFcXFwiIHI9XFxcIjhcXFwiPjwvY2lyY2xlPjxsaW5lIHgxPVxcXCIyMVxcXCIgeTE9XFxcIjIxXFxcIiB4Mj1cXFwiMTYuNjVcXFwiIHkyPVxcXCIxNi42NVxcXCI+PC9saW5lPjxsaW5lIHgxPVxcXCI4XFxcIiB5MT1cXFwiMTFcXFwiIHgyPVxcXCIxNFxcXCIgeTI9XFxcIjExXFxcIj48L2xpbmU+XCJ9O1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2RlZHVwZS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2RlZHVwZS5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJSQVlfXywgX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX187LyohXG4gIENvcHlyaWdodCAoYykgMjAxNiBKZWQgV2F0c29uLlxuICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGNsYXNzTmFtZXMgPSAoZnVuY3Rpb24gKCkge1xuXHRcdC8vIGRvbid0IGluaGVyaXQgZnJvbSBPYmplY3Qgc28gd2UgY2FuIHNraXAgaGFzT3duUHJvcGVydHkgY2hlY2sgbGF0ZXJcblx0XHQvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE1NTE4MzI4L2NyZWF0aW5nLWpzLW9iamVjdC13aXRoLW9iamVjdC1jcmVhdGVudWxsI2Fuc3dlci0yMTA3OTIzMlxuXHRcdGZ1bmN0aW9uIFN0b3JhZ2VPYmplY3QoKSB7fVxuXHRcdFN0b3JhZ2VPYmplY3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcblxuXHRcdGZ1bmN0aW9uIF9wYXJzZUFycmF5IChyZXN1bHRTZXQsIGFycmF5KSB7XG5cdFx0XHR2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG5cdFx0XHRcdF9wYXJzZShyZXN1bHRTZXQsIGFycmF5W2ldKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cblx0XHRmdW5jdGlvbiBfcGFyc2VOdW1iZXIgKHJlc3VsdFNldCwgbnVtKSB7XG5cdFx0XHRyZXN1bHRTZXRbbnVtXSA9IHRydWU7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gX3BhcnNlT2JqZWN0IChyZXN1bHRTZXQsIG9iamVjdCkge1xuXHRcdFx0Zm9yICh2YXIgayBpbiBvYmplY3QpIHtcblx0XHRcdFx0aWYgKGhhc093bi5jYWxsKG9iamVjdCwgaykpIHtcblx0XHRcdFx0XHQvLyBzZXQgdmFsdWUgdG8gZmFsc2UgaW5zdGVhZCBvZiBkZWxldGluZyBpdCB0byBhdm9pZCBjaGFuZ2luZyBvYmplY3Qgc3RydWN0dXJlXG5cdFx0XHRcdFx0Ly8gaHR0cHM6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAxMi8xMS93cml0aW5nLWZhc3QtbWVtb3J5LWVmZmljaWVudC1qYXZhc2NyaXB0LyNkZS1yZWZlcmVuY2luZy1taXNjb25jZXB0aW9uc1xuXHRcdFx0XHRcdHJlc3VsdFNldFtrXSA9ICEhb2JqZWN0W2tdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dmFyIFNQQUNFID0gL1xccysvO1xuXHRcdGZ1bmN0aW9uIF9wYXJzZVN0cmluZyAocmVzdWx0U2V0LCBzdHIpIHtcblx0XHRcdHZhciBhcnJheSA9IHN0ci5zcGxpdChTUEFDRSk7XG5cdFx0XHR2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG5cdFx0XHRcdHJlc3VsdFNldFthcnJheVtpXV0gPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIF9wYXJzZSAocmVzdWx0U2V0LCBhcmcpIHtcblx0XHRcdGlmICghYXJnKSByZXR1cm47XG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdC8vICdmb28gYmFyJ1xuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdF9wYXJzZVN0cmluZyhyZXN1bHRTZXQsIGFyZyk7XG5cblx0XHRcdC8vIFsnZm9vJywgJ2JhcicsIC4uLl1cblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdF9wYXJzZUFycmF5KHJlc3VsdFNldCwgYXJnKTtcblxuXHRcdFx0Ly8geyAnZm9vJzogdHJ1ZSwgLi4uIH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0X3BhcnNlT2JqZWN0KHJlc3VsdFNldCwgYXJnKTtcblxuXHRcdFx0Ly8gJzEzMCdcblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0X3BhcnNlTnVtYmVyKHJlc3VsdFNldCwgYXJnKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmdW5jdGlvbiBfY2xhc3NOYW1lcyAoKSB7XG5cdFx0XHQvLyBkb24ndCBsZWFrIGFyZ3VtZW50c1xuXHRcdFx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL3BldGthYW50b25vdi9ibHVlYmlyZC93aWtpL09wdGltaXphdGlvbi1raWxsZXJzIzMyLWxlYWtpbmctYXJndW1lbnRzXG5cdFx0XHR2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcblx0XHRcdHZhciBhcmdzID0gQXJyYXkobGVuKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdFx0YXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGNsYXNzU2V0ID0gbmV3IFN0b3JhZ2VPYmplY3QoKTtcblx0XHRcdF9wYXJzZUFycmF5KGNsYXNzU2V0LCBhcmdzKTtcblxuXHRcdFx0dmFyIGxpc3QgPSBbXTtcblxuXHRcdFx0Zm9yICh2YXIgayBpbiBjbGFzc1NldCkge1xuXHRcdFx0XHRpZiAoY2xhc3NTZXRba10pIHtcblx0XHRcdFx0XHRsaXN0LnB1c2goaylcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbGlzdC5qb2luKCcgJyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIF9jbGFzc05hbWVzO1xuXHR9KSgpO1xuXG5cdGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0cnVlKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdCEoX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJSQVlfXyA9IFtdLCBfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXyA9IChmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KS5hcHBseShleHBvcnRzLCBfX1dFQlBBQ0tfQU1EX0RFRklORV9BUlJBWV9fKSxcblx0XHRcdFx0X19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX18gIT09IHVuZGVmaW5lZCAmJiAobW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXykpO1xuXHR9IGVsc2Uge31cbn0oKSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9lcy9hcnJheS9mcm9tLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2VzL2FycmF5L2Zyb20uanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbl9fd2VicGFja19yZXF1aXJlX18oLyohIC4uLy4uL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qc1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18oLyohIC4uLy4uL21vZHVsZXMvZXMuYXJyYXkuZnJvbSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mcm9tLmpzXCIpO1xudmFyIHBhdGggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi8uLi9pbnRlcm5hbHMvcGF0aCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BhdGguanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0aC5BcnJheS5mcm9tO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtZnVuY3Rpb24uanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLWZ1bmN0aW9uLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKCFpc09iamVjdChpdCkpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKGl0KSArICcgaXMgbm90IGFuIG9iamVjdCcpO1xuICB9IHJldHVybiBpdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktZnJvbS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZyb20uanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIGJpbmQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYmluZC1jb250ZXh0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYmluZC1jb250ZXh0LmpzXCIpO1xudmFyIHRvT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qc1wiKTtcbnZhciBjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NhbGwtd2l0aC1zYWZlLWl0ZXJhdGlvbi1jbG9zaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2FsbC13aXRoLXNhZmUtaXRlcmF0aW9uLWNsb3NpbmcuanNcIik7XG52YXIgaXNBcnJheUl0ZXJhdG9yTWV0aG9kID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZC5qc1wiKTtcbnZhciB0b0xlbmd0aCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1sZW5ndGggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1sZW5ndGguanNcIik7XG52YXIgY3JlYXRlUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LmpzXCIpO1xudmFyIGdldEl0ZXJhdG9yTWV0aG9kID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kLmpzXCIpO1xuXG4vLyBgQXJyYXkuZnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5mcm9tXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGZyb20oYXJyYXlMaWtlIC8qICwgbWFwZm4gPSB1bmRlZmluZWQsIHRoaXNBcmcgPSB1bmRlZmluZWQgKi8pIHtcbiAgdmFyIE8gPSB0b09iamVjdChhcnJheUxpa2UpO1xuICB2YXIgQyA9IHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgPyB0aGlzIDogQXJyYXk7XG4gIHZhciBhcmd1bWVudHNMZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgbWFwZm4gPSBhcmd1bWVudHNMZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkO1xuICB2YXIgbWFwcGluZyA9IG1hcGZuICE9PSB1bmRlZmluZWQ7XG4gIHZhciBpbmRleCA9IDA7XG4gIHZhciBpdGVyYXRvck1ldGhvZCA9IGdldEl0ZXJhdG9yTWV0aG9kKE8pO1xuICB2YXIgbGVuZ3RoLCByZXN1bHQsIHN0ZXAsIGl0ZXJhdG9yO1xuICBpZiAobWFwcGluZykgbWFwZm4gPSBiaW5kKG1hcGZuLCBhcmd1bWVudHNMZW5ndGggPiAyID8gYXJndW1lbnRzWzJdIDogdW5kZWZpbmVkLCAyKTtcbiAgLy8gaWYgdGhlIHRhcmdldCBpcyBub3QgaXRlcmFibGUgb3IgaXQncyBhbiBhcnJheSB3aXRoIHRoZSBkZWZhdWx0IGl0ZXJhdG9yIC0gdXNlIGEgc2ltcGxlIGNhc2VcbiAgaWYgKGl0ZXJhdG9yTWV0aG9kICE9IHVuZGVmaW5lZCAmJiAhKEMgPT0gQXJyYXkgJiYgaXNBcnJheUl0ZXJhdG9yTWV0aG9kKGl0ZXJhdG9yTWV0aG9kKSkpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhdG9yTWV0aG9kLmNhbGwoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEMoKTtcbiAgICBmb3IgKDshKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmU7IGluZGV4KyspIHtcbiAgICAgIGNyZWF0ZVByb3BlcnR5KHJlc3VsdCwgaW5kZXgsIG1hcHBpbmdcbiAgICAgICAgPyBjYWxsV2l0aFNhZmVJdGVyYXRpb25DbG9zaW5nKGl0ZXJhdG9yLCBtYXBmbiwgW3N0ZXAudmFsdWUsIGluZGV4XSwgdHJ1ZSlcbiAgICAgICAgOiBzdGVwLnZhbHVlXG4gICAgICApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgcmVzdWx0ID0gbmV3IEMobGVuZ3RoKTtcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykge1xuICAgICAgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBpbmRleCwgbWFwcGluZyA/IG1hcGZuKE9baW5kZXhdLCBpbmRleCkgOiBPW2luZGV4XSk7XG4gICAgfVxuICB9XG4gIHJlc3VsdC5sZW5ndGggPSBpbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHRvSW5kZXhlZE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzXCIpO1xudmFyIHRvTGVuZ3RoID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1wiKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXggKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleC5qc1wiKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IGluZGV4T2YsIGluY2x1ZGVzIH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbi8vIGZhbHNlIC0+IEFycmF5I2luZGV4T2Zcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5pbmRleG9mXG4vLyB0cnVlICAtPiBBcnJheSNpbmNsdWRlc1xuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICBpZiAoSVNfSU5DTFVERVMgJiYgZWwgIT0gZWwpIHdoaWxlIChsZW5ndGggPiBpbmRleCkge1xuICAgICAgdmFsdWUgPSBPW2luZGV4KytdO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgICAgaWYgKHZhbHVlICE9IHZhbHVlKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBcnJheSNpbmRleE9mIGlnbm9yZXMgaG9sZXMsIEFycmF5I2luY2x1ZGVzIC0gbm90XG4gICAgfSBlbHNlIGZvciAoO2xlbmd0aCA+IGluZGV4OyBpbmRleCsrKSBpZiAoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykge1xuICAgICAgaWYgKE9baW5kZXhdID09PSBlbCkgcmV0dXJuIElTX0lOQ0xVREVTIHx8IGluZGV4IHx8IDA7XG4gICAgfSByZXR1cm4gIUlTX0lOQ0xVREVTICYmIC0xO1xuICB9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9iaW5kLWNvbnRleHQuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2JpbmQtY29udGV4dC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGFGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hLWZ1bmN0aW9uICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYS1mdW5jdGlvbi5qc1wiKTtcblxuLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0KTtcbiAgICB9O1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jYWxsLXdpdGgtc2FmZS1pdGVyYXRpb24tY2xvc2luZy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzXCIpO1xuXG4vLyBjYWxsIHNvbWV0aGluZyBvbiBpdGVyYXRvciBzdGVwIHdpdGggc2FmZSBjbG9zaW5nIG9uIGVycm9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVyYXRvciwgZm4sIHZhbHVlLCBFTlRSSUVTKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEVOVFJJRVMgPyBmbihhbk9iamVjdCh2YWx1ZSlbMF0sIHZhbHVlWzFdKSA6IGZuKHZhbHVlKTtcbiAgLy8gNy40LjYgSXRlcmF0b3JDbG9zZShpdGVyYXRvciwgY29tcGxldGlvbilcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB2YXIgcmV0dXJuTWV0aG9kID0gaXRlcmF0b3JbJ3JldHVybiddO1xuICAgIGlmIChyZXR1cm5NZXRob2QgIT09IHVuZGVmaW5lZCkgYW5PYmplY3QocmV0dXJuTWV0aG9kLmNhbGwoaXRlcmF0b3IpKTtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24uanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgU0FGRV9DTE9TSU5HID0gZmFsc2U7XG5cbnRyeSB7XG4gIHZhciBjYWxsZWQgPSAwO1xuICB2YXIgaXRlcmF0b3JXaXRoUmV0dXJuID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7IGRvbmU6ICEhY2FsbGVkKysgfTtcbiAgICB9LFxuICAgICdyZXR1cm4nOiBmdW5jdGlvbiAoKSB7XG4gICAgICBTQUZFX0NMT1NJTkcgPSB0cnVlO1xuICAgIH1cbiAgfTtcbiAgaXRlcmF0b3JXaXRoUmV0dXJuW0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRocm93LWxpdGVyYWxcbiAgQXJyYXkuZnJvbShpdGVyYXRvcldpdGhSZXR1cm4sIGZ1bmN0aW9uICgpIHsgdGhyb3cgMjsgfSk7XG59IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMsIFNLSVBfQ0xPU0lORykge1xuICBpZiAoIVNLSVBfQ0xPU0lORyAmJiAhU0FGRV9DTE9TSU5HKSByZXR1cm4gZmFsc2U7XG4gIHZhciBJVEVSQVRJT05fU1VQUE9SVCA9IGZhbHNlO1xuICB0cnkge1xuICAgIHZhciBvYmplY3QgPSB7fTtcbiAgICBvYmplY3RbSVRFUkFUT1JdID0gZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiB7IGRvbmU6IElURVJBVElPTl9TVVBQT1JUID0gdHJ1ZSB9O1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH07XG4gICAgZXhlYyhvYmplY3QpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBJVEVSQVRJT05fU1VQUE9SVDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGNsYXNzb2ZSYXcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG4vLyBFUzMgd3JvbmcgaGVyZVxudmFyIENPUlJFQ1RfQVJHVU1FTlRTID0gY2xhc3NvZlJhdyhmdW5jdGlvbiAoKSB7IHJldHVybiBhcmd1bWVudHM7IH0oKSkgPT0gJ0FyZ3VtZW50cyc7XG5cbi8vIGZhbGxiYWNrIGZvciBJRTExIFNjcmlwdCBBY2Nlc3MgRGVuaWVkIGVycm9yXG52YXIgdHJ5R2V0ID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gaXRba2V5XTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxufTtcblxuLy8gZ2V0dGluZyB0YWcgZnJvbSBFUzYrIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUT19TVFJJTkdfVEFHKSkgPT0gJ3N0cmluZycgPyB0YWdcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IENPUlJFQ1RfQVJHVU1FTlRTID8gY2xhc3NvZlJhdyhPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChyZXN1bHQgPSBjbGFzc29mUmF3KE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogcmVzdWx0O1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanNcIik7XG52YXIgb3duS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vd24ta2V5cyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzXCIpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qc1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2UpIHtcbiAgdmFyIGtleXMgPSBvd25LZXlzKHNvdXJjZSk7XG4gIHZhciBkZWZpbmVQcm9wZXJ0eSA9IGRlZmluZVByb3BlcnR5TW9kdWxlLmY7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNb2R1bGUuZjtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKCFoYXModGFyZ2V0LCBrZXkpKSBkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHNvdXJjZSwga2V5KSk7XG4gIH1cbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3JyZWN0LXByb3RvdHlwZS1nZXR0ZXIuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgRi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBudWxsO1xuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKCkpICE9PSBGLnByb3RvdHlwZTtcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1pdGVyYXRvci1jb25zdHJ1Y3Rvci5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUuanNcIikuSXRlcmF0b3JQcm90b3R5cGU7XG52YXIgY3JlYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtY3JlYXRlLmpzXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcuanNcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiKTtcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJdGVyYXRvckNvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KSB7XG4gIHZhciBUT19TVFJJTkdfVEFHID0gTkFNRSArICcgSXRlcmF0b3InO1xuICBJdGVyYXRvckNvbnN0cnVjdG9yLnByb3RvdHlwZSA9IGNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwgeyBuZXh0OiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMSwgbmV4dCkgfSk7XG4gIHNldFRvU3RyaW5nVGFnKEl0ZXJhdG9yQ29uc3RydWN0b3IsIFRPX1NUUklOR19UQUcsIGZhbHNlLCB0cnVlKTtcbiAgSXRlcmF0b3JzW1RPX1NUUklOR19UQUddID0gcmV0dXJuVGhpcztcbiAgcmV0dXJuIEl0ZXJhdG9yQ29uc3RydWN0b3I7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHkuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzXCIpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzXCIpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIHByb3BlcnR5S2V5ID0gdG9QcmltaXRpdmUoa2V5KTtcbiAgaWYgKHByb3BlcnR5S2V5IGluIG9iamVjdCkgZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIHByb3BlcnR5S2V5LCBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoMCwgdmFsdWUpKTtcbiAgZWxzZSBvYmplY3RbcHJvcGVydHlLZXldID0gdmFsdWU7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RlZmluZS1pdGVyYXRvci5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yLmpzXCIpO1xudmFyIGdldFByb3RvdHlwZU9mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YuanNcIik7XG52YXIgc2V0UHJvdG90eXBlT2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qc1wiKTtcbnZhciBzZXRUb1N0cmluZ1RhZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnLmpzXCIpO1xudmFyIGhpZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGlkZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanNcIik7XG52YXIgcmVkZWZpbmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcmVkZWZpbmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWRlZmluZS5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXB1cmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCIpO1xudmFyIEl0ZXJhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pdGVyYXRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMuanNcIik7XG52YXIgSXRlcmF0b3JzQ29yZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlLmpzXCIpO1xuXG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSBJdGVyYXRvcnNDb3JlLkl0ZXJhdG9yUHJvdG90eXBlO1xudmFyIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSBJdGVyYXRvcnNDb3JlLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlM7XG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcbnZhciBFTlRSSUVTID0gJ2VudHJpZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEl0ZXJhYmxlLCBOQU1FLCBJdGVyYXRvckNvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yKEl0ZXJhdG9yQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuXG4gIHZhciBnZXRJdGVyYXRpb25NZXRob2QgPSBmdW5jdGlvbiAoS0lORCkge1xuICAgIGlmIChLSU5EID09PSBERUZBVUxUICYmIGRlZmF1bHRJdGVyYXRvcikgcmV0dXJuIGRlZmF1bHRJdGVyYXRvcjtcbiAgICBpZiAoIUJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgJiYgS0lORCBpbiBJdGVyYWJsZVByb3RvdHlwZSkgcmV0dXJuIEl0ZXJhYmxlUHJvdG90eXBlW0tJTkRdO1xuICAgIHN3aXRjaCAoS0lORCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICAgIGNhc2UgRU5UUklFUzogcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzKTsgfTtcbiAgfTtcblxuICB2YXIgVE9fU1RSSU5HX1RBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIElOQ09SUkVDVF9WQUxVRVNfTkFNRSA9IGZhbHNlO1xuICB2YXIgSXRlcmFibGVQcm90b3R5cGUgPSBJdGVyYWJsZS5wcm90b3R5cGU7XG4gIHZhciBuYXRpdmVJdGVyYXRvciA9IEl0ZXJhYmxlUHJvdG90eXBlW0lURVJBVE9SXVxuICAgIHx8IEl0ZXJhYmxlUHJvdG90eXBlWydAQGl0ZXJhdG9yJ11cbiAgICB8fCBERUZBVUxUICYmIEl0ZXJhYmxlUHJvdG90eXBlW0RFRkFVTFRdO1xuICB2YXIgZGVmYXVsdEl0ZXJhdG9yID0gIUJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgJiYgbmF0aXZlSXRlcmF0b3IgfHwgZ2V0SXRlcmF0aW9uTWV0aG9kKERFRkFVTFQpO1xuICB2YXIgYW55TmF0aXZlSXRlcmF0b3IgPSBOQU1FID09ICdBcnJheScgPyBJdGVyYWJsZVByb3RvdHlwZS5lbnRyaWVzIHx8IG5hdGl2ZUl0ZXJhdG9yIDogbmF0aXZlSXRlcmF0b3I7XG4gIHZhciBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIG1ldGhvZHMsIEtFWTtcblxuICAvLyBmaXggbmF0aXZlXG4gIGlmIChhbnlOYXRpdmVJdGVyYXRvcikge1xuICAgIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGFueU5hdGl2ZUl0ZXJhdG9yLmNhbGwobmV3IEl0ZXJhYmxlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIGlmICghSVNfUFVSRSAmJiBnZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUpICE9PSBJdGVyYXRvclByb3RvdHlwZSkge1xuICAgICAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgICBzZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgaGlkZShDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCB0cnVlLCB0cnVlKTtcbiAgICAgIGlmIChJU19QVVJFKSBJdGVyYXRvcnNbVE9fU1RSSU5HX1RBR10gPSByZXR1cm5UaGlzO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZpeCBBcnJheSN7dmFsdWVzLCBAQGl0ZXJhdG9yfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKERFRkFVTFQgPT0gVkFMVUVTICYmIG5hdGl2ZUl0ZXJhdG9yICYmIG5hdGl2ZUl0ZXJhdG9yLm5hbWUgIT09IFZBTFVFUykge1xuICAgIElOQ09SUkVDVF9WQUxVRVNfTkFNRSA9IHRydWU7XG4gICAgZGVmYXVsdEl0ZXJhdG9yID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmF0aXZlSXRlcmF0b3IuY2FsbCh0aGlzKTsgfTtcbiAgfVxuXG4gIC8vIGRlZmluZSBpdGVyYXRvclxuICBpZiAoKCFJU19QVVJFIHx8IEZPUkNFRCkgJiYgSXRlcmFibGVQcm90b3R5cGVbSVRFUkFUT1JdICE9PSBkZWZhdWx0SXRlcmF0b3IpIHtcbiAgICBoaWRlKEl0ZXJhYmxlUHJvdG90eXBlLCBJVEVSQVRPUiwgZGVmYXVsdEl0ZXJhdG9yKTtcbiAgfVxuICBJdGVyYXRvcnNbTkFNRV0gPSBkZWZhdWx0SXRlcmF0b3I7XG5cbiAgLy8gZXhwb3J0IGFkZGl0aW9uYWwgbWV0aG9kc1xuICBpZiAoREVGQVVMVCkge1xuICAgIG1ldGhvZHMgPSB7XG4gICAgICB2YWx1ZXM6IGdldEl0ZXJhdGlvbk1ldGhvZChWQUxVRVMpLFxuICAgICAga2V5czogSVNfU0VUID8gZGVmYXVsdEl0ZXJhdG9yIDogZ2V0SXRlcmF0aW9uTWV0aG9kKEtFWVMpLFxuICAgICAgZW50cmllczogZ2V0SXRlcmF0aW9uTWV0aG9kKEVOVFJJRVMpXG4gICAgfTtcbiAgICBpZiAoRk9SQ0VEKSBmb3IgKEtFWSBpbiBtZXRob2RzKSB7XG4gICAgICBpZiAoQlVHR1lfU0FGQVJJX0lURVJBVE9SUyB8fCBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgfHwgIShLRVkgaW4gSXRlcmFibGVQcm90b3R5cGUpKSB7XG4gICAgICAgIHJlZGVmaW5lKEl0ZXJhYmxlUHJvdG90eXBlLCBLRVksIG1ldGhvZHNbS0VZXSk7XG4gICAgICB9XG4gICAgfSBlbHNlICQoeyB0YXJnZXQ6IE5BTUUsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgfHwgSU5DT1JSRUNUX1ZBTFVFU19OQU1FIH0sIG1ldGhvZHMpO1xuICB9XG5cbiAgcmV0dXJuIG1ldGhvZHM7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdhJywgeyBnZXQ6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIDc7IH0gfSkuYSAhPSA3O1xufSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgaXNPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaXMtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzXCIpO1xuXG52YXIgZG9jdW1lbnQgPSBnbG9iYWwuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBleGlzdCA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGV4aXN0ID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG4vLyBJRTgtIGRvbid0IGVudW0gYnVnIGtleXNcbm1vZHVsZS5leHBvcnRzID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnaGFzT3duUHJvcGVydHknLFxuICAnaXNQcm90b3R5cGVPZicsXG4gICdwcm9wZXJ0eUlzRW51bWVyYWJsZScsXG4gICd0b0xvY2FsZVN0cmluZycsXG4gICd0b1N0cmluZycsXG4gICd2YWx1ZU9mJ1xuXTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9leHBvcnQuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCIpLmY7XG52YXIgaGlkZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oaWRlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZS5qc1wiKTtcbnZhciByZWRlZmluZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9yZWRlZmluZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlZGVmaW5lLmpzXCIpO1xudmFyIHNldEdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qc1wiKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcy5qc1wiKTtcbnZhciBpc0ZvcmNlZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1mb3JjZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanNcIik7XG5cbi8qXG4gIG9wdGlvbnMudGFyZ2V0ICAgICAgLSBuYW1lIG9mIHRoZSB0YXJnZXQgb2JqZWN0XG4gIG9wdGlvbnMuZ2xvYmFsICAgICAgLSB0YXJnZXQgaXMgdGhlIGdsb2JhbCBvYmplY3RcbiAgb3B0aW9ucy5zdGF0ICAgICAgICAtIGV4cG9ydCBhcyBzdGF0aWMgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5wcm90byAgICAgICAtIGV4cG9ydCBhcyBwcm90b3R5cGUgbWV0aG9kcyBvZiB0YXJnZXRcbiAgb3B0aW9ucy5yZWFsICAgICAgICAtIHJlYWwgcHJvdG90eXBlIG1ldGhvZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMuZm9yY2VkICAgICAgLSBleHBvcnQgZXZlbiBpZiB0aGUgbmF0aXZlIGZlYXR1cmUgaXMgYXZhaWxhYmxlXG4gIG9wdGlvbnMuYmluZCAgICAgICAgLSBiaW5kIG1ldGhvZHMgdG8gdGhlIHRhcmdldCwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLndyYXAgICAgICAgIC0gd3JhcCBjb25zdHJ1Y3RvcnMgdG8gcHJldmVudGluZyBnbG9iYWwgcG9sbHV0aW9uLCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMudW5zYWZlICAgICAgLSB1c2UgdGhlIHNpbXBsZSBhc3NpZ25tZW50IG9mIHByb3BlcnR5IGluc3RlYWQgb2YgZGVsZXRlICsgZGVmaW5lUHJvcGVydHlcbiAgb3B0aW9ucy5zaGFtICAgICAgICAtIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgb3B0aW9ucy5lbnVtZXJhYmxlICAtIGV4cG9ydCBhcyBlbnVtZXJhYmxlIHByb3BlcnR5XG4gIG9wdGlvbnMubm9UYXJnZXRHZXQgLSBwcmV2ZW50IGNhbGxpbmcgYSBnZXR0ZXIgb24gdGFyZ2V0XG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0aW9ucywgc291cmNlKSB7XG4gIHZhciBUQVJHRVQgPSBvcHRpb25zLnRhcmdldDtcbiAgdmFyIEdMT0JBTCA9IG9wdGlvbnMuZ2xvYmFsO1xuICB2YXIgU1RBVElDID0gb3B0aW9ucy5zdGF0O1xuICB2YXIgRk9SQ0VELCB0YXJnZXQsIGtleSwgdGFyZ2V0UHJvcGVydHksIHNvdXJjZVByb3BlcnR5LCBkZXNjcmlwdG9yO1xuICBpZiAoR0xPQkFMKSB7XG4gICAgdGFyZ2V0ID0gZ2xvYmFsO1xuICB9IGVsc2UgaWYgKFNUQVRJQykge1xuICAgIHRhcmdldCA9IGdsb2JhbFtUQVJHRVRdIHx8IHNldEdsb2JhbChUQVJHRVQsIHt9KTtcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXQgPSAoZ2xvYmFsW1RBUkdFVF0gfHwge30pLnByb3RvdHlwZTtcbiAgfVxuICBpZiAodGFyZ2V0KSBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICBzb3VyY2VQcm9wZXJ0eSA9IHNvdXJjZVtrZXldO1xuICAgIGlmIChvcHRpb25zLm5vVGFyZ2V0R2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KTtcbiAgICAgIHRhcmdldFByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbmVkIGluIHRhcmdldFxuICAgIGlmICghRk9SQ0VEICYmIHRhcmdldFByb3BlcnR5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICh0eXBlb2Ygc291cmNlUHJvcGVydHkgPT09IHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSkgY29udGludWU7XG4gICAgICBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzKHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSk7XG4gICAgfVxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8ICh0YXJnZXRQcm9wZXJ0eSAmJiB0YXJnZXRQcm9wZXJ0eS5zaGFtKSkge1xuICAgICAgaGlkZShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIHJlZGVmaW5lKHRhcmdldCwga2V5LCBzb3VyY2VQcm9wZXJ0eSwgb3B0aW9ucyk7XG4gIH1cbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLXRvLXN0cmluZy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHNoYXJlZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gc2hhcmVkKCduYXRpdmUtZnVuY3Rpb24tdG8tc3RyaW5nJywgRnVuY3Rpb24udG9TdHJpbmcpO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1pdGVyYXRvci1tZXRob2QuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGNsYXNzb2YgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY2xhc3NvZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NsYXNzb2YuanNcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgIT0gdW5kZWZpbmVkKSByZXR1cm4gaXRbSVRFUkFUT1JdXG4gICAgfHwgaXRbJ0BAaXRlcmF0b3InXVxuICAgIHx8IEl0ZXJhdG9yc1tjbGFzc29mKGl0KV07XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7dmFyIE8gPSAnb2JqZWN0JztcbnZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIGNoZWNrKHR5cGVvZiBnbG9iYWxUaGlzID09IE8gJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSBPICYmIHdpbmRvdykgfHxcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gTyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09IE8gJiYgZ2xvYmFsKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmV3LWZ1bmNcbiAgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblxuLyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKHRoaXMsIF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vLi4vLi4vd2VicGFjay9idWlsZGluL2dsb2JhbC5qcyAqLyBcIi4vbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9nbG9iYWwuanNcIikpKVxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoaXQsIGtleSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0ge307XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qc1wiKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5TW9kdWxlLmYob2JqZWN0LCBrZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaHRtbC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2h0bWwuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRvY3VtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qc1wiKTtcblxuLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KCdkaXYnKSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9XG4gIH0pLmEgIT0gNztcbn0pO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG52YXIgZmFpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZmFpbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mYWlscy5qc1wiKTtcbnZhciBjbGFzc29mID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY2xhc3NvZi1yYXcuanNcIik7XG5cbnZhciBzcGxpdCA9ICcnLnNwbGl0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIHJldHVybiAhT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT0gJ1N0cmluZycgPyBzcGxpdC5jYWxsKGl0LCAnJykgOiBPYmplY3QoaXQpO1xufSA6IE9iamVjdDtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgTkFUSVZFX1dFQUtfTUFQID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qc1wiKTtcbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIGlzT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiKTtcbnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hpZGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRlLmpzXCIpO1xudmFyIG9iamVjdEhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanNcIik7XG52YXIgc2hhcmVkS2V5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXkgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzXCIpO1xudmFyIGhpZGRlbktleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qc1wiKTtcblxudmFyIFdlYWtNYXAgPSBnbG9iYWwuV2Vha01hcDtcbnZhciBzZXQsIGdldCwgaGFzO1xuXG52YXIgZW5mb3JjZSA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaGFzKGl0KSA/IGdldChpdCkgOiBzZXQoaXQsIHt9KTtcbn07XG5cbnZhciBnZXR0ZXJGb3IgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGl0KSB7XG4gICAgdmFyIHN0YXRlO1xuICAgIGlmICghaXNPYmplY3QoaXQpIHx8IChzdGF0ZSA9IGdldChpdCkpLnR5cGUgIT09IFRZUEUpIHtcbiAgICAgIHRocm93IFR5cGVFcnJvcignSW5jb21wYXRpYmxlIHJlY2VpdmVyLCAnICsgVFlQRSArICcgcmVxdWlyZWQnKTtcbiAgICB9IHJldHVybiBzdGF0ZTtcbiAgfTtcbn07XG5cbmlmIChOQVRJVkVfV0VBS19NQVApIHtcbiAgdmFyIHN0b3JlID0gbmV3IFdlYWtNYXAoKTtcbiAgdmFyIHdtZ2V0ID0gc3RvcmUuZ2V0O1xuICB2YXIgd21oYXMgPSBzdG9yZS5oYXM7XG4gIHZhciB3bXNldCA9IHN0b3JlLnNldDtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIHdtc2V0LmNhbGwoc3RvcmUsIGl0LCBtZXRhZGF0YSk7XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9O1xuICBnZXQgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21nZXQuY2FsbChzdG9yZSwgaXQpIHx8IHt9O1xuICB9O1xuICBoYXMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gd21oYXMuY2FsbChzdG9yZSwgaXQpO1xuICB9O1xufSBlbHNlIHtcbiAgdmFyIFNUQVRFID0gc2hhcmVkS2V5KCdzdGF0ZScpO1xuICBoaWRkZW5LZXlzW1NUQVRFXSA9IHRydWU7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBoaWRlKGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIG9iamVjdEhhcyhpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBvYmplY3RIYXMoaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLWFycmF5LWl0ZXJhdG9yLW1ldGhvZC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgd2VsbEtub3duU3ltYm9sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanNcIik7XG52YXIgSXRlcmF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG4vLyBjaGVjayBvbiBkZWZhdWx0IEFycmF5IGl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgIT09IHVuZGVmaW5lZCAmJiAoSXRlcmF0b3JzLkFycmF5ID09PSBpdCB8fCBBcnJheVByb3RvdHlwZVtJVEVSQVRPUl0gPT09IGl0KTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1mb3JjZWQuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBmYWlscyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mYWlscyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2ZhaWxzLmpzXCIpO1xuXG52YXIgcmVwbGFjZW1lbnQgPSAvI3xcXC5wcm90b3R5cGVcXC4vO1xuXG52YXIgaXNGb3JjZWQgPSBmdW5jdGlvbiAoZmVhdHVyZSwgZGV0ZWN0aW9uKSB7XG4gIHZhciB2YWx1ZSA9IGRhdGFbbm9ybWFsaXplKGZlYXR1cmUpXTtcbiAgcmV0dXJuIHZhbHVlID09IFBPTFlGSUxMID8gdHJ1ZVxuICAgIDogdmFsdWUgPT0gTkFUSVZFID8gZmFsc2VcbiAgICA6IHR5cGVvZiBkZXRlY3Rpb24gPT0gJ2Z1bmN0aW9uJyA/IGZhaWxzKGRldGVjdGlvbilcbiAgICA6ICEhZGV0ZWN0aW9uO1xufTtcblxudmFyIG5vcm1hbGl6ZSA9IGlzRm9yY2VkLm5vcm1hbGl6ZSA9IGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgcmV0dXJuIFN0cmluZyhzdHJpbmcpLnJlcGxhY2UocmVwbGFjZW1lbnQsICcuJykudG9Mb3dlckNhc2UoKTtcbn07XG5cbnZhciBkYXRhID0gaXNGb3JjZWQuZGF0YSA9IHt9O1xudmFyIE5BVElWRSA9IGlzRm9yY2VkLk5BVElWRSA9ICdOJztcbnZhciBQT0xZRklMTCA9IGlzRm9yY2VkLlBPTFlGSUxMID0gJ1AnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRm9yY2VkO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtb2JqZWN0LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtcHVyZS5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbm1vZHVsZS5leHBvcnRzID0gZmFsc2U7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBnZXRQcm90b3R5cGVPZiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mLmpzXCIpO1xudmFyIGhpZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGlkZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGUuanNcIik7XG52YXIgaGFzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hhcyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hhcy5qc1wiKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbC5qc1wiKTtcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXB1cmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCIpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IGZhbHNlO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbi8vIGAlSXRlcmF0b3JQcm90b3R5cGUlYCBvYmplY3Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSVpdGVyYXRvcnByb3RvdHlwZSUtb2JqZWN0XG52YXIgSXRlcmF0b3JQcm90b3R5cGUsIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSwgYXJyYXlJdGVyYXRvcjtcblxuaWYgKFtdLmtleXMpIHtcbiAgYXJyYXlJdGVyYXRvciA9IFtdLmtleXMoKTtcbiAgLy8gU2FmYXJpIDggaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG4gIGlmICghKCduZXh0JyBpbiBhcnJheUl0ZXJhdG9yKSkgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IHRydWU7XG4gIGVsc2Uge1xuICAgIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGdldFByb3RvdHlwZU9mKGFycmF5SXRlcmF0b3IpKTtcbiAgICBpZiAoUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKSBJdGVyYXRvclByb3RvdHlwZSA9IFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxufVxuXG5pZiAoSXRlcmF0b3JQcm90b3R5cGUgPT0gdW5kZWZpbmVkKSBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxuaWYgKCFJU19QVVJFICYmICFoYXMoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SKSkgaGlkZShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgSXRlcmF0b3JQcm90b3R5cGU6IEl0ZXJhdG9yUHJvdG90eXBlLFxuICBCVUdHWV9TQUZBUklfSVRFUkFUT1JTOiBCVUdHWV9TQUZBUklfSVRFUkFUT1JTXG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2l0ZXJhdG9ycy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHt9O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGZhaWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2ZhaWxzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICByZXR1cm4gIVN0cmluZyhTeW1ib2woKSk7XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgbmF0aXZlRnVuY3Rpb25Ub1N0cmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi10by1zdHJpbmcuanNcIik7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG5cbm1vZHVsZS5leHBvcnRzID0gdHlwZW9mIFdlYWtNYXAgPT09ICdmdW5jdGlvbicgJiYgL25hdGl2ZSBjb2RlLy50ZXN0KG5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmcuY2FsbChXZWFrTWFwKSk7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1jcmVhdGUuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzXCIpO1xudmFyIGRlZmluZVByb3BlcnRpZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzXCIpO1xudmFyIGVudW1CdWdLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzLmpzXCIpO1xudmFyIGhpZGRlbktleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRkZW4ta2V5cy5qc1wiKTtcbnZhciBodG1sID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2h0bWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9odG1sLmpzXCIpO1xudmFyIGRvY3VtZW50Q3JlYXRlRWxlbWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2RvY3VtZW50LWNyZWF0ZS1lbGVtZW50LmpzXCIpO1xudmFyIHNoYXJlZEtleSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQta2V5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qc1wiKTtcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xudmFyIEVtcHR5ID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgY3JlYXRlRGljdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gVGhyYXNoLCB3YXN0ZSBhbmQgc29kb215OiBJRSBHQyBidWdcbiAgdmFyIGlmcmFtZSA9IGRvY3VtZW50Q3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gIHZhciBsZW5ndGggPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHZhciBsdCA9ICc8JztcbiAgdmFyIHNjcmlwdCA9ICdzY3JpcHQnO1xuICB2YXIgZ3QgPSAnPic7XG4gIHZhciBqcyA9ICdqYXZhJyArIHNjcmlwdCArICc6JztcbiAgdmFyIGlmcmFtZURvY3VtZW50O1xuICBpZnJhbWUuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgaHRtbC5hcHBlbmRDaGlsZChpZnJhbWUpO1xuICBpZnJhbWUuc3JjID0gU3RyaW5nKGpzKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShsdCArIHNjcmlwdCArIGd0ICsgJ2RvY3VtZW50LkY9T2JqZWN0JyArIGx0ICsgJy8nICsgc2NyaXB0ICsgZ3QpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICBjcmVhdGVEaWN0ID0gaWZyYW1lRG9jdW1lbnQuRjtcbiAgd2hpbGUgKGxlbmd0aC0tKSBkZWxldGUgY3JlYXRlRGljdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2xlbmd0aF1dO1xuICByZXR1cm4gY3JlYXRlRGljdCgpO1xufTtcblxuLy8gMTkuMS4yLjIgLyAxNS4yLjMuNSBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5jcmVhdGUgfHwgZnVuY3Rpb24gY3JlYXRlKE8sIFByb3BlcnRpZXMpIHtcbiAgdmFyIHJlc3VsdDtcbiAgaWYgKE8gIT09IG51bGwpIHtcbiAgICBFbXB0eVtQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5KCk7XG4gICAgRW1wdHlbUFJPVE9UWVBFXSA9IG51bGw7XG4gICAgLy8gYWRkIFwiX19wcm90b19fXCIgZm9yIE9iamVjdC5nZXRQcm90b3R5cGVPZiBwb2x5ZmlsbFxuICAgIHJlc3VsdFtJRV9QUk9UT10gPSBPO1xuICB9IGVsc2UgcmVzdWx0ID0gY3JlYXRlRGljdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZGVmaW5lUHJvcGVydGllcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcblxuaGlkZGVuS2V5c1tJRV9QUk9UT10gPSB0cnVlO1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgREVTQ1JJUFRPUlMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qc1wiKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qc1wiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG52YXIgb2JqZWN0S2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9vYmplY3Qta2V5cyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaSA9IDA7XG4gIHZhciBrZXk7XG4gIHdoaWxlIChsZW5ndGggPiBpKSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaSsrXSwgUHJvcGVydGllc1trZXldKTtcbiAgcmV0dXJuIE87XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIERFU0NSSVBUT1JTID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanNcIik7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qc1wiKTtcbnZhciBhbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9hbi1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hbi1vYmplY3QuanNcIik7XG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzXCIpO1xuXG52YXIgbmF0aXZlRGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gbmF0aXZlRGVmaW5lUHJvcGVydHkgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGFuT2JqZWN0KEF0dHJpYnV0ZXMpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZURlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmICgnZ2V0JyBpbiBBdHRyaWJ1dGVzIHx8ICdzZXQnIGluIEF0dHJpYnV0ZXMpIHRocm93IFR5cGVFcnJvcignQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQnKTtcbiAgaWYgKCd2YWx1ZScgaW4gQXR0cmlidXRlcykgT1tQXSA9IEF0dHJpYnV0ZXMudmFsdWU7XG4gIHJldHVybiBPO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBERVNDUklQVE9SUyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZXNjcmlwdG9ycyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Rlc2NyaXB0b3JzLmpzXCIpO1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanNcIik7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3IuanNcIik7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QuanNcIik7XG52YXIgdG9QcmltaXRpdmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzXCIpO1xudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanNcIik7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qc1wiKTtcblxudmFyIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvcihPLCBQKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoaGFzKE8sIFApKSByZXR1cm4gY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKCFwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZS5mLmNhbGwoTywgUCksIE9bUF0pO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG4vLyAxOS4xLjIuNyAvIDE1LjIuMy40IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKE8pXG52YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwuanNcIik7XG52YXIgZW51bUJ1Z0tleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VudW0tYnVnLWtleXMuanNcIik7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzIHx8IGZ1bmN0aW9uIGdldE93blByb3BlcnR5TmFtZXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGhpZGRlbktleXMpO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanNcIik7XG52YXIgdG9PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzXCIpO1xudmFyIHNoYXJlZEtleSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQta2V5ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qc1wiKTtcbnZhciBDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyLmpzXCIpO1xuXG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG52YXIgT2JqZWN0UHJvdG90eXBlID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLy8gMTkuMS4yLjkgLyAxNS4yLjMuMiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTylcbm1vZHVsZS5leHBvcnRzID0gQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvdHlwZSA6IG51bGw7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLmpzXCIpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzXCIpO1xudmFyIGFycmF5SW5jbHVkZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktaW5jbHVkZXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qc1wiKTtcbnZhciBoaWRkZW5LZXlzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGlkZGVuLWtleXMuanNcIik7XG5cbnZhciBhcnJheUluZGV4T2YgPSBhcnJheUluY2x1ZGVzKGZhbHNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqZWN0LCBuYW1lcykge1xuICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdChvYmplY3QpO1xuICB2YXIgaSA9IDA7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgdmFyIGtleTtcbiAgZm9yIChrZXkgaW4gTykgIWhhcyhoaWRkZW5LZXlzLCBrZXkpICYmIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1rZXlzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBpbnRlcm5hbE9iamVjdEtleXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qc1wiKTtcbnZhciBlbnVtQnVnS2V5cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qc1wiKTtcblxuLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZSA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIE5hc2hvcm4gfiBKREs4IGJ1Z1xudmFyIE5BU0hPUk5fQlVHID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yICYmICFuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHsgMTogMiB9LCAxKTtcblxuZXhwb3J0cy5mID0gTkFTSE9STl9CVUcgPyBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShWKSB7XG4gIHZhciBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIFYpO1xuICByZXR1cm4gISFkZXNjcmlwdG9yICYmIGRlc2NyaXB0b3IuZW51bWVyYWJsZTtcbn0gOiBuYXRpdmVQcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZi5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgdmFsaWRhdGVTZXRQcm90b3R5cGVPZkFyZ3VtZW50cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy92YWxpZGF0ZS1zZXQtcHJvdG90eXBlLW9mLWFyZ3VtZW50cyAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3ZhbGlkYXRlLXNldC1wcm90b3R5cGUtb2YtYXJndW1lbnRzLmpzXCIpO1xuXG4vLyBXb3JrcyB3aXRoIF9fcHJvdG9fXyBvbmx5LiBPbGQgdjggY2FuJ3Qgd29yayB3aXRoIG51bGwgcHJvdG8gb2JqZWN0cy5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCAoJ19fcHJvdG9fXycgaW4ge30gPyBmdW5jdGlvbiAoKSB7XG4gIHZhciBjb3JyZWN0U2V0dGVyID0gZmFsc2U7XG4gIHZhciB0ZXN0ID0ge307XG4gIHZhciBzZXR0ZXI7XG4gIHRyeSB7XG4gICAgc2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0O1xuICAgIHNldHRlci5jYWxsKHRlc3QsIFtdKTtcbiAgICBjb3JyZWN0U2V0dGVyID0gdGVzdCBpbnN0YW5jZW9mIEFycmF5O1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIHJldHVybiBmdW5jdGlvbiBzZXRQcm90b3R5cGVPZihPLCBwcm90bykge1xuICAgIHZhbGlkYXRlU2V0UHJvdG90eXBlT2ZBcmd1bWVudHMoTywgcHJvdG8pO1xuICAgIGlmIChjb3JyZWN0U2V0dGVyKSBzZXR0ZXIuY2FsbChPLCBwcm90byk7XG4gICAgZWxzZSBPLl9fcHJvdG9fXyA9IHByb3RvO1xuICAgIHJldHVybiBPO1xuICB9O1xufSgpIDogdW5kZWZpbmVkKTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vd24ta2V5cy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LW5hbWVzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMuanNcIik7XG52YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzTW9kdWxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1zeW1ib2xzLmpzXCIpO1xudmFyIGFuT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2FuLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qc1wiKTtcblxudmFyIFJlZmxlY3QgPSBnbG9iYWwuUmVmbGVjdDtcblxuLy8gYWxsIG9iamVjdCBrZXlzLCBpbmNsdWRlcyBub24tZW51bWVyYWJsZSBhbmQgc3ltYm9sc1xubW9kdWxlLmV4cG9ydHMgPSBSZWZsZWN0ICYmIFJlZmxlY3Qub3duS2V5cyB8fCBmdW5jdGlvbiBvd25LZXlzKGl0KSB7XG4gIHZhciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lc01vZHVsZS5mKGFuT2JqZWN0KGl0KSk7XG4gIHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUuZjtcbiAgcmV0dXJuIGdldE93blByb3BlcnR5U3ltYm9scyA/IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhpdCkpIDoga2V5cztcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcGF0aC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BhdGguanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5tb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVkZWZpbmUuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVkZWZpbmUuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIGdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9nbG9iYWwuanNcIik7XG52YXIgc2hhcmVkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NoYXJlZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC5qc1wiKTtcbnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hpZGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRlLmpzXCIpO1xudmFyIGhhcyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9oYXMgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oYXMuanNcIik7XG52YXIgc2V0R2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtZ2xvYmFsLmpzXCIpO1xudmFyIG5hdGl2ZUZ1bmN0aW9uVG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdG8tc3RyaW5nICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZnVuY3Rpb24tdG8tc3RyaW5nLmpzXCIpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qc1wiKTtcblxudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBURU1QTEFURSA9IFN0cmluZyhuYXRpdmVGdW5jdGlvblRvU3RyaW5nKS5zcGxpdCgndG9TdHJpbmcnKTtcblxuc2hhcmVkKCdpbnNwZWN0U291cmNlJywgZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwoaXQpO1xufSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBrZXksIHZhbHVlLCBvcHRpb25zKSB7XG4gIHZhciB1bnNhZmUgPSBvcHRpb25zID8gISFvcHRpb25zLnVuc2FmZSA6IGZhbHNlO1xuICB2YXIgc2ltcGxlID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5lbnVtZXJhYmxlIDogZmFsc2U7XG4gIHZhciBub1RhcmdldEdldCA9IG9wdGlvbnMgPyAhIW9wdGlvbnMubm9UYXJnZXRHZXQgOiBmYWxzZTtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgaWYgKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgJiYgIWhhcyh2YWx1ZSwgJ25hbWUnKSkgaGlkZSh2YWx1ZSwgJ25hbWUnLCBrZXkpO1xuICAgIGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKS5zb3VyY2UgPSBURU1QTEFURS5qb2luKHR5cGVvZiBrZXkgPT0gJ3N0cmluZycgPyBrZXkgOiAnJyk7XG4gIH1cbiAgaWYgKE8gPT09IGdsb2JhbCkge1xuICAgIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICAgIGVsc2Ugc2V0R2xvYmFsKGtleSwgdmFsdWUpO1xuICAgIHJldHVybjtcbiAgfSBlbHNlIGlmICghdW5zYWZlKSB7XG4gICAgZGVsZXRlIE9ba2V5XTtcbiAgfSBlbHNlIGlmICghbm9UYXJnZXRHZXQgJiYgT1trZXldKSB7XG4gICAgc2ltcGxlID0gdHJ1ZTtcbiAgfVxuICBpZiAoc2ltcGxlKSBPW2tleV0gPSB2YWx1ZTtcbiAgZWxzZSBoaWRlKE8sIGtleSwgdmFsdWUpO1xuLy8gYWRkIGZha2UgRnVuY3Rpb24jdG9TdHJpbmcgZm9yIGNvcnJlY3Qgd29yayB3cmFwcGVkIG1ldGhvZHMgLyBjb25zdHJ1Y3RvcnMgd2l0aCBtZXRob2RzIGxpa2UgTG9EYXNoIGlzTmF0aXZlXG59KShGdW5jdGlvbi5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdHlwZW9mIHRoaXMgPT0gJ2Z1bmN0aW9uJyAmJiBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpLnNvdXJjZSB8fCBuYXRpdmVGdW5jdGlvblRvU3RyaW5nLmNhbGwodGhpcyk7XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ID09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NldC1nbG9iYWwuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZ2xvYmFsID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2dsb2JhbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qc1wiKTtcbnZhciBoaWRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2hpZGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9oaWRlLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRyeSB7XG4gICAgaGlkZShnbG9iYWwsIGtleSwgdmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanNcIikuZjtcbnZhciBoYXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaGFzICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLmpzXCIpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCIpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIFRBRywgU1RBVElDKSB7XG4gIGlmIChpdCAmJiAhaGFzKGl0ID0gU1RBVElDID8gaXQgOiBpdC5wcm90b3R5cGUsIFRPX1NUUklOR19UQUcpKSB7XG4gICAgZGVmaW5lUHJvcGVydHkoaXQsIFRPX1NUUklOR19UQUcsIHsgY29uZmlndXJhYmxlOiB0cnVlLCB2YWx1ZTogVEFHIH0pO1xuICB9XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3NoYXJlZC1rZXkuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQta2V5LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHNoYXJlZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanNcIik7XG52YXIgdWlkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3VpZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qc1wiKTtcblxudmFyIGtleXMgPSBzaGFyZWQoJ2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBrZXlzW2tleV0gfHwgKGtleXNba2V5XSA9IHVpZChrZXkpKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIHNldEdsb2JhbCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zZXQtZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qc1wiKTtcbnZhciBJU19QVVJFID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2lzLXB1cmUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzXCIpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCBzZXRHbG9iYWwoU0hBUkVELCB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiAnMy4xLjMnLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMTkgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctYXQuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3N0cmluZy1hdC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyIHRvSW50ZWdlciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy90by1pbnRlZ2VyICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8taW50ZWdlci5qc1wiKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qc1wiKTtcblxuLy8gQ09OVkVSVF9UT19TVFJJTkc6IHRydWUgIC0+IFN0cmluZyNhdFxuLy8gQ09OVkVSVF9UT19TVFJJTkc6IGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGhhdCwgcG9zLCBDT05WRVJUX1RPX1NUUklORykge1xuICB2YXIgUyA9IFN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoYXQpKTtcbiAgdmFyIHBvc2l0aW9uID0gdG9JbnRlZ2VyKHBvcyk7XG4gIHZhciBzaXplID0gUy5sZW5ndGg7XG4gIHZhciBmaXJzdCwgc2Vjb25kO1xuICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHNpemUpIHJldHVybiBDT05WRVJUX1RPX1NUUklORyA/ICcnIDogdW5kZWZpbmVkO1xuICBmaXJzdCA9IFMuY2hhckNvZGVBdChwb3NpdGlvbik7XG4gIHJldHVybiBmaXJzdCA8IDB4RDgwMCB8fCBmaXJzdCA+IDB4REJGRiB8fCBwb3NpdGlvbiArIDEgPT09IHNpemVcbiAgICB8fCAoc2Vjb25kID0gUy5jaGFyQ29kZUF0KHBvc2l0aW9uICsgMSkpIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRlxuICAgICAgPyBDT05WRVJUX1RPX1NUUklORyA/IFMuY2hhckF0KHBvc2l0aW9uKSA6IGZpcnN0XG4gICAgICA6IENPTlZFUlRfVE9fU1RSSU5HID8gUy5zbGljZShwb3NpdGlvbiwgcG9zaXRpb24gKyAyKSA6IChmaXJzdCAtIDB4RDgwMCA8PCAxMCkgKyAoc2Vjb25kIC0gMHhEQzAwKSArIDB4MTAwMDA7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciB0b0ludGVnZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvdG8taW50ZWdlciAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXIuanNcIik7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihsZW5ndGgsIGxlbmd0aCkuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbmRleCwgbGVuZ3RoKSB7XG4gIHZhciBpbnRlZ2VyID0gdG9JbnRlZ2VyKGluZGV4KTtcbiAgcmV0dXJuIGludGVnZXIgPCAwID8gbWF4KGludGVnZXIgKyBsZW5ndGgsIDApIDogbWluKGludGVnZXIsIGxlbmd0aCk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzXCIpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSW5kZXhlZE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGl0KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWludGVnZXIuanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgVG9JbnRlZ2VyYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvaW50ZWdlclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGlzTmFOKGFyZ3VtZW50ID0gK2FyZ3VtZW50KSA/IDAgOiAoYXJndW1lbnQgPiAwID8gZmxvb3IgOiBjZWlsKShhcmd1bWVudCk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tbGVuZ3RoLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG52YXIgdG9JbnRlZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3RvLWludGVnZXIgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLmpzXCIpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID4gMCA/IG1pbih0b0ludGVnZXIoYXJndW1lbnQpLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1vYmplY3QuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qc1wiKTtcblxuLy8gYFRvT2JqZWN0YCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1wcmltaXRpdmUuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanNcIik7XG5cbi8vIDcuMS4xIFRvUHJpbWl0aXZlKGlucHV0IFssIFByZWZlcnJlZFR5cGVdKVxuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdWlkLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy91aWQuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBpZCA9IDA7XG52YXIgcG9zdGZpeCA9IE1hdGgucmFuZG9tKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHBvc3RmaXgpLnRvU3RyaW5nKDM2KSk7XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3ZhbGlkYXRlLXNldC1wcm90b3R5cGUtb2YtYXJndW1lbnRzLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3ZhbGlkYXRlLXNldC1wcm90b3R5cGUtb2YtYXJndW1lbnRzLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBpc09iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9pcy1vYmplY3QgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1vYmplY3QuanNcIik7XG52YXIgYW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYW4tb2JqZWN0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvYW4tb2JqZWN0LmpzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChPLCBwcm90bykge1xuICBhbk9iamVjdChPKTtcbiAgaWYgKCFpc09iamVjdChwcm90bykgJiYgcHJvdG8gIT09IG51bGwpIHtcbiAgICB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBzZXQgXCIgKyBTdHJpbmcocHJvdG8pICsgJyBhcyBhIHByb3RvdHlwZScpO1xuICB9XG59O1xuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cbnZhciBnbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZ2xvYmFsICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2xvYmFsLmpzXCIpO1xudmFyIHNoYXJlZCA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9zaGFyZWQgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanNcIik7XG52YXIgdWlkID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL3VpZCAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qc1wiKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9uYXRpdmUtc3ltYm9sLmpzXCIpO1xuXG52YXIgU3ltYm9sID0gZ2xvYmFsLlN5bWJvbDtcbnZhciBzdG9yZSA9IHNoYXJlZCgnd2tzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgcmV0dXJuIHN0b3JlW25hbWVdIHx8IChzdG9yZVtuYW1lXSA9IE5BVElWRV9TWU1CT0wgJiYgU3ltYm9sW25hbWVdXG4gICAgfHwgKE5BVElWRV9TWU1CT0wgPyBTeW1ib2wgOiB1aWQpKCdTeW1ib2wuJyArIG5hbWUpKTtcbn07XG5cblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZyb20uanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5LmZyb20uanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxudmFyICQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvZXhwb3J0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZXhwb3J0LmpzXCIpO1xudmFyIGZyb20gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvYXJyYXktZnJvbSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LWZyb20uanNcIik7XG52YXIgY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi4vaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbiAqLyBcIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NoZWNrLWNvcnJlY3RuZXNzLW9mLWl0ZXJhdGlvbi5qc1wiKTtcblxudmFyIElOQ09SUkVDVF9JVEVSQVRJT04gPSAhY2hlY2tDb3JyZWN0bmVzc09mSXRlcmF0aW9uKGZ1bmN0aW9uIChpdGVyYWJsZSkge1xuICBBcnJheS5mcm9tKGl0ZXJhYmxlKTtcbn0pO1xuXG4vLyBgQXJyYXkuZnJvbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1hcnJheS5mcm9tXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IElOQ09SUkVDVF9JVEVSQVRJT04gfSwge1xuICBmcm9tOiBmcm9tXG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5pdGVyYXRvci5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgY29kZVBvaW50QXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvc3RyaW5nLWF0ICovIFwiLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3RyaW5nLWF0LmpzXCIpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZS5qc1wiKTtcbnZhciBkZWZpbmVJdGVyYXRvciA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2ludGVybmFscy9kZWZpbmUtaXRlcmF0b3IgKi8gXCIuL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZWZpbmUtaXRlcmF0b3IuanNcIik7XG5cbnZhciBTVFJJTkdfSVRFUkFUT1IgPSAnU3RyaW5nIEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKFNUUklOR19JVEVSQVRPUik7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUtQEBpdGVyYXRvclxuZGVmaW5lSXRlcmF0b3IoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IFNUUklOR19JVEVSQVRPUixcbiAgICBzdHJpbmc6IFN0cmluZyhpdGVyYXRlZCksXG4gICAgaW5kZXg6IDBcbiAgfSk7XG4vLyBgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLSVzdHJpbmdpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gbmV4dCgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHN0cmluZyA9IHN0YXRlLnN0cmluZztcbiAgdmFyIGluZGV4ID0gc3RhdGUuaW5kZXg7XG4gIHZhciBwb2ludDtcbiAgaWYgKGluZGV4ID49IHN0cmluZy5sZW5ndGgpIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgcG9pbnQgPSBjb2RlUG9pbnRBdChzdHJpbmcsIGluZGV4LCB0cnVlKTtcbiAgc3RhdGUuaW5kZXggKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcblxuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL25vZGVfbW9kdWxlcy93ZWJwYWNrL2J1aWxkaW4vZ2xvYmFsLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAod2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cbnZhciBnO1xyXG5cclxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcclxuZyA9IChmdW5jdGlvbigpIHtcclxuXHRyZXR1cm4gdGhpcztcclxufSkoKTtcclxuXHJcbnRyeSB7XHJcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXHJcblx0ZyA9IGcgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpIHx8ICgxLCBldmFsKShcInRoaXNcIik7XHJcbn0gY2F0Y2ggKGUpIHtcclxuXHQvLyBUaGlzIHdvcmtzIGlmIHRoZSB3aW5kb3cgcmVmZXJlbmNlIGlzIGF2YWlsYWJsZVxyXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xyXG59XHJcblxyXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXHJcbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXHJcbi8vIGVhc2llciB0byBoYW5kbGUgdGhpcyBjYXNlLiBpZighZ2xvYmFsKSB7IC4uLn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZztcclxuXG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vc3JjL2RlZmF1bHQtYXR0cnMuanNvblwiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogLi9zcmMvZGVmYXVsdC1hdHRycy5qc29uICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBleHBvcnRzIHByb3ZpZGVkOiB4bWxucywgd2lkdGgsIGhlaWdodCwgdmlld0JveCwgZmlsbCwgc3Ryb2tlLCBzdHJva2Utd2lkdGgsIHN0cm9rZS1saW5lY2FwLCBzdHJva2UtbGluZWpvaW4sIGRlZmF1bHQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUpIHtcblxubW9kdWxlLmV4cG9ydHMgPSB7XCJ4bWxuc1wiOlwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcIndpZHRoXCI6MjQsXCJoZWlnaHRcIjoyNCxcInZpZXdCb3hcIjpcIjAgMCAyNCAyNFwiLFwiZmlsbFwiOlwibm9uZVwiLFwic3Ryb2tlXCI6XCJjdXJyZW50Q29sb3JcIixcInN0cm9rZS13aWR0aFwiOjIsXCJzdHJva2UtbGluZWNhcFwiOlwicm91bmRcIixcInN0cm9rZS1saW5lam9pblwiOlwicm91bmRcIn07XG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vc3JjL2ljb24uanNcIjpcbi8qISoqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL3NyYy9pY29uLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKiovXG4vKiEgbm8gc3RhdGljIGV4cG9ydHMgZm91bmQgKi9cbi8qKiovIChmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXCJ1c2Ugc3RyaWN0XCI7XG5cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxudmFyIF9kZWR1cGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjbGFzc25hbWVzL2RlZHVwZSAqLyBcIi4vbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvZGVkdXBlLmpzXCIpO1xuXG52YXIgX2RlZHVwZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWR1cGUpO1xuXG52YXIgX2RlZmF1bHRBdHRycyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vZGVmYXVsdC1hdHRycy5qc29uICovIFwiLi9zcmMvZGVmYXVsdC1hdHRycy5qc29uXCIpO1xuXG52YXIgX2RlZmF1bHRBdHRyczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZWZhdWx0QXR0cnMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgSWNvbiA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSWNvbihuYW1lLCBjb250ZW50cykge1xuICAgIHZhciB0YWdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiBbXTtcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBJY29uKTtcblxuICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgdGhpcy5jb250ZW50cyA9IGNvbnRlbnRzO1xuICAgIHRoaXMudGFncyA9IHRhZ3M7XG4gICAgdGhpcy5hdHRycyA9IF9leHRlbmRzKHt9LCBfZGVmYXVsdEF0dHJzMi5kZWZhdWx0LCB7IGNsYXNzOiAnZmVhdGhlciBmZWF0aGVyLScgKyBuYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBTVkcgc3RyaW5nLlxuICAgKiBAcGFyYW0ge09iamVjdH0gYXR0cnNcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG5cblxuICBfY3JlYXRlQ2xhc3MoSWNvbiwgW3tcbiAgICBrZXk6ICd0b1N2ZycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHRvU3ZnKCkge1xuICAgICAgdmFyIGF0dHJzID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fTtcblxuICAgICAgdmFyIGNvbWJpbmVkQXR0cnMgPSBfZXh0ZW5kcyh7fSwgdGhpcy5hdHRycywgYXR0cnMsIHsgY2xhc3M6ICgwLCBfZGVkdXBlMi5kZWZhdWx0KSh0aGlzLmF0dHJzLmNsYXNzLCBhdHRycy5jbGFzcykgfSk7XG5cbiAgICAgIHJldHVybiAnPHN2ZyAnICsgYXR0cnNUb1N0cmluZyhjb21iaW5lZEF0dHJzKSArICc+JyArIHRoaXMuY29udGVudHMgKyAnPC9zdmc+JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIGBJY29uYC5cbiAgICAgKlxuICAgICAqIEFkZGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBJZiBvbGQgY29kZSBleHBlY3RzIGBmZWF0aGVyLmljb25zLjxuYW1lPmBcbiAgICAgKiB0byBiZSBhIHN0cmluZywgYHRvU3RyaW5nKClgIHdpbGwgZ2V0IGltcGxpY2l0bHkgY2FsbGVkLlxuICAgICAqXG4gICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAndG9TdHJpbmcnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnRlbnRzO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBJY29uO1xufSgpO1xuXG4vKipcbiAqIENvbnZlcnQgYXR0cmlidXRlcyBvYmplY3QgdG8gc3RyaW5nIG9mIEhUTUwgYXR0cmlidXRlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhdHRyc1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuXG5cbmZ1bmN0aW9uIGF0dHJzVG9TdHJpbmcoYXR0cnMpIHtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGF0dHJzKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBrZXkgKyAnPVwiJyArIGF0dHJzW2tleV0gKyAnXCInO1xuICB9KS5qb2luKCcgJyk7XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IEljb247XG5cbi8qKiovIH0pLFxuXG4vKioqLyBcIi4vc3JjL2ljb25zLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vc3JjL2ljb25zLmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfaWNvbiA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vaWNvbiAqLyBcIi4vc3JjL2ljb24uanNcIik7XG5cbnZhciBfaWNvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pY29uKTtcblxudmFyIF9pY29ucyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4uL2Rpc3QvaWNvbnMuanNvbiAqLyBcIi4vZGlzdC9pY29ucy5qc29uXCIpO1xuXG52YXIgX2ljb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zKTtcblxudmFyIF90YWdzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi90YWdzLmpzb24gKi8gXCIuL3NyYy90YWdzLmpzb25cIik7XG5cbnZhciBfdGFnczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF90YWdzKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gT2JqZWN0LmtleXMoX2ljb25zMi5kZWZhdWx0KS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gbmV3IF9pY29uMi5kZWZhdWx0KGtleSwgX2ljb25zMi5kZWZhdWx0W2tleV0sIF90YWdzMi5kZWZhdWx0W2tleV0pO1xufSkucmVkdWNlKGZ1bmN0aW9uIChvYmplY3QsIGljb24pIHtcbiAgb2JqZWN0W2ljb24ubmFtZV0gPSBpY29uO1xuICByZXR1cm4gb2JqZWN0O1xufSwge30pO1xuXG4vKioqLyB9KSxcblxuLyoqKi8gXCIuL3NyYy9pbmRleC5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL3NyYy9pbmRleC5qcyAqKiohXG4gIFxcKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG52YXIgX2ljb25zID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9pY29ucyAqLyBcIi4vc3JjL2ljb25zLmpzXCIpO1xuXG52YXIgX2ljb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2ljb25zKTtcblxudmFyIF90b1N2ZyA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIC4vdG8tc3ZnICovIFwiLi9zcmMvdG8tc3ZnLmpzXCIpO1xuXG52YXIgX3RvU3ZnMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RvU3ZnKTtcblxudmFyIF9yZXBsYWNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgLi9yZXBsYWNlICovIFwiLi9zcmMvcmVwbGFjZS5qc1wiKTtcblxudmFyIF9yZXBsYWNlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlcGxhY2UpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgaWNvbnM6IF9pY29uczIuZGVmYXVsdCwgdG9Tdmc6IF90b1N2ZzIuZGVmYXVsdCwgcmVwbGFjZTogX3JlcGxhY2UyLmRlZmF1bHQgfTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9zcmMvcmVwbGFjZS5qc1wiOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqISpcXFxuICAhKioqIC4vc3JjL3JlcGxhY2UuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cInVzZSBzdHJpY3RcIjtcblxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyAvKiBlc2xpbnQtZW52IGJyb3dzZXIgKi9cblxuXG52YXIgX2RlZHVwZSA9IF9fd2VicGFja19yZXF1aXJlX18oLyohIGNsYXNzbmFtZXMvZGVkdXBlICovIFwiLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9kZWR1cGUuanNcIik7XG5cbnZhciBfZGVkdXBlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RlZHVwZSk7XG5cbnZhciBfaWNvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2ljb25zICovIFwiLi9zcmMvaWNvbnMuanNcIik7XG5cbnZhciBfaWNvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaWNvbnMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIFJlcGxhY2UgYWxsIEhUTUwgZWxlbWVudHMgdGhhdCBoYXZlIGEgYGRhdGEtZmVhdGhlcmAgYXR0cmlidXRlIHdpdGggU1ZHIG1hcmt1cFxuICogY29ycmVzcG9uZGluZyB0byB0aGUgZWxlbWVudCdzIGBkYXRhLWZlYXRoZXJgIGF0dHJpYnV0ZSB2YWx1ZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBhdHRyc1xuICovXG5mdW5jdGlvbiByZXBsYWNlKCkge1xuICB2YXIgYXR0cnMgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuXG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdgZmVhdGhlci5yZXBsYWNlKClgIG9ubHkgd29ya3MgaW4gYSBicm93c2VyIGVudmlyb25tZW50LicpO1xuICB9XG5cbiAgdmFyIGVsZW1lbnRzVG9SZXBsYWNlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtZmVhdGhlcl0nKTtcblxuICBBcnJheS5mcm9tKGVsZW1lbnRzVG9SZXBsYWNlKS5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuIHJlcGxhY2VFbGVtZW50KGVsZW1lbnQsIGF0dHJzKTtcbiAgfSk7XG59XG5cbi8qKlxuICogUmVwbGFjZSBhIHNpbmdsZSBIVE1MIGVsZW1lbnQgd2l0aCBTVkcgbWFya3VwXG4gKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBlbGVtZW50J3MgYGRhdGEtZmVhdGhlcmAgYXR0cmlidXRlIHZhbHVlLlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxuICogQHBhcmFtIHtPYmplY3R9IGF0dHJzXG4gKi9cbmZ1bmN0aW9uIHJlcGxhY2VFbGVtZW50KGVsZW1lbnQpIHtcbiAgdmFyIGF0dHJzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICB2YXIgZWxlbWVudEF0dHJzID0gZ2V0QXR0cnMoZWxlbWVudCk7XG4gIHZhciBuYW1lID0gZWxlbWVudEF0dHJzWydkYXRhLWZlYXRoZXInXTtcbiAgZGVsZXRlIGVsZW1lbnRBdHRyc1snZGF0YS1mZWF0aGVyJ107XG5cbiAgdmFyIHN2Z1N0cmluZyA9IF9pY29uczIuZGVmYXVsdFtuYW1lXS50b1N2ZyhfZXh0ZW5kcyh7fSwgYXR0cnMsIGVsZW1lbnRBdHRycywgeyBjbGFzczogKDAsIF9kZWR1cGUyLmRlZmF1bHQpKGF0dHJzLmNsYXNzLCBlbGVtZW50QXR0cnMuY2xhc3MpIH0pKTtcbiAgdmFyIHN2Z0RvY3VtZW50ID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyhzdmdTdHJpbmcsICdpbWFnZS9zdmcreG1sJyk7XG4gIHZhciBzdmdFbGVtZW50ID0gc3ZnRG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3ZnJyk7XG5cbiAgZWxlbWVudC5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChzdmdFbGVtZW50LCBlbGVtZW50KTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGF0dHJpYnV0ZXMgb2YgYW4gSFRNTCBlbGVtZW50LlxuICogQHBhcmFtIHtIVE1MRWxlbWVudH0gZWxlbWVudFxuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0QXR0cnMoZWxlbWVudCkge1xuICByZXR1cm4gQXJyYXkuZnJvbShlbGVtZW50LmF0dHJpYnV0ZXMpLnJlZHVjZShmdW5jdGlvbiAoYXR0cnMsIGF0dHIpIHtcbiAgICBhdHRyc1thdHRyLm5hbWVdID0gYXR0ci52YWx1ZTtcbiAgICByZXR1cm4gYXR0cnM7XG4gIH0sIHt9KTtcbn1cblxuZXhwb3J0cy5kZWZhdWx0ID0gcmVwbGFjZTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9zcmMvdGFncy5qc29uXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL3NyYy90YWdzLmpzb24gKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIGV4cG9ydHMgcHJvdmlkZWQ6IGFjdGl2aXR5LCBhaXJwbGF5LCBhbGVydC1jaXJjbGUsIGFsZXJ0LW9jdGFnb24sIGFsZXJ0LXRyaWFuZ2xlLCBhbGlnbi1jZW50ZXIsIGFsaWduLWp1c3RpZnksIGFsaWduLWxlZnQsIGFsaWduLXJpZ2h0LCBhbmNob3IsIGFyY2hpdmUsIGF0LXNpZ24sIGF3YXJkLCBhcGVydHVyZSwgYmFyLWNoYXJ0LCBiYXItY2hhcnQtMiwgYmF0dGVyeSwgYmF0dGVyeS1jaGFyZ2luZywgYmVsbCwgYmVsbC1vZmYsIGJsdWV0b290aCwgYm9vay1vcGVuLCBib29rLCBib29rbWFyaywgYm94LCBicmllZmNhc2UsIGNhbGVuZGFyLCBjYW1lcmEsIGNhc3QsIGNpcmNsZSwgY2xpcGJvYXJkLCBjbG9jaywgY2xvdWQtZHJpenpsZSwgY2xvdWQtbGlnaHRuaW5nLCBjbG91ZC1yYWluLCBjbG91ZC1zbm93LCBjbG91ZCwgY29kZXBlbiwgY29kZXNhbmRib3gsIGNvZGUsIGNvZmZlZSwgY29sdW1ucywgY29tbWFuZCwgY29tcGFzcywgY29weSwgY29ybmVyLWRvd24tbGVmdCwgY29ybmVyLWRvd24tcmlnaHQsIGNvcm5lci1sZWZ0LWRvd24sIGNvcm5lci1sZWZ0LXVwLCBjb3JuZXItcmlnaHQtZG93biwgY29ybmVyLXJpZ2h0LXVwLCBjb3JuZXItdXAtbGVmdCwgY29ybmVyLXVwLXJpZ2h0LCBjcHUsIGNyZWRpdC1jYXJkLCBjcm9wLCBjcm9zc2hhaXIsIGRhdGFiYXNlLCBkZWxldGUsIGRpc2MsIGRvbGxhci1zaWduLCBkcm9wbGV0LCBlZGl0LCBlZGl0LTIsIGVkaXQtMywgZXllLCBleWUtb2ZmLCBleHRlcm5hbC1saW5rLCBmYWNlYm9vaywgZmFzdC1mb3J3YXJkLCBmaWdtYSwgZmlsZS1taW51cywgZmlsZS1wbHVzLCBmaWxlLXRleHQsIGZpbG0sIGZpbHRlciwgZmxhZywgZm9sZGVyLW1pbnVzLCBmb2xkZXItcGx1cywgZm9sZGVyLCBmcmFtZXIsIGZyb3duLCBnaWZ0LCBnaXQtYnJhbmNoLCBnaXQtY29tbWl0LCBnaXQtbWVyZ2UsIGdpdC1wdWxsLXJlcXVlc3QsIGdpdGh1YiwgZ2l0bGFiLCBnbG9iZSwgaGFyZC1kcml2ZSwgaGFzaCwgaGVhZHBob25lcywgaGVhcnQsIGhlbHAtY2lyY2xlLCBoZXhhZ29uLCBob21lLCBpbWFnZSwgaW5ib3gsIGluc3RhZ3JhbSwga2V5LCBsYXllcnMsIGxheW91dCwgbGlmZS1ib3V5LCBsaW5rLCBsaW5rLTIsIGxpbmtlZGluLCBsaXN0LCBsb2NrLCBsb2ctaW4sIGxvZy1vdXQsIG1haWwsIG1hcC1waW4sIG1hcCwgbWF4aW1pemUsIG1heGltaXplLTIsIG1laCwgbWVudSwgbWVzc2FnZS1jaXJjbGUsIG1lc3NhZ2Utc3F1YXJlLCBtaWMtb2ZmLCBtaWMsIG1pbmltaXplLCBtaW5pbWl6ZS0yLCBtaW51cywgbW9uaXRvciwgbW9vbiwgbW9yZS1ob3Jpem9udGFsLCBtb3JlLXZlcnRpY2FsLCBtb3VzZS1wb2ludGVyLCBtb3ZlLCBtdXNpYywgbmF2aWdhdGlvbiwgbmF2aWdhdGlvbi0yLCBvY3RhZ29uLCBwYWNrYWdlLCBwYXBlcmNsaXAsIHBhdXNlLCBwYXVzZS1jaXJjbGUsIHBlbi10b29sLCBwZXJjZW50LCBwaG9uZS1jYWxsLCBwaG9uZS1mb3J3YXJkZWQsIHBob25lLWluY29taW5nLCBwaG9uZS1taXNzZWQsIHBob25lLW9mZiwgcGhvbmUtb3V0Z29pbmcsIHBob25lLCBwbGF5LCBwaWUtY2hhcnQsIHBsYXktY2lyY2xlLCBwbHVzLCBwbHVzLWNpcmNsZSwgcGx1cy1zcXVhcmUsIHBvY2tldCwgcG93ZXIsIHByaW50ZXIsIHJhZGlvLCByZWZyZXNoLWN3LCByZWZyZXNoLWNjdywgcmVwZWF0LCByZXdpbmQsIHJvdGF0ZS1jY3csIHJvdGF0ZS1jdywgcnNzLCBzYXZlLCBzY2lzc29ycywgc2VhcmNoLCBzZW5kLCBzZXR0aW5ncywgc2hhcmUtMiwgc2hpZWxkLCBzaGllbGQtb2ZmLCBzaG9wcGluZy1iYWcsIHNob3BwaW5nLWNhcnQsIHNodWZmbGUsIHNraXAtYmFjaywgc2tpcC1mb3J3YXJkLCBzbGFjaywgc2xhc2gsIHNsaWRlcnMsIHNtYXJ0cGhvbmUsIHNtaWxlLCBzcGVha2VyLCBzdGFyLCBzdG9wLWNpcmNsZSwgc3VuLCBzdW5yaXNlLCBzdW5zZXQsIHRhYmxldCwgdGFnLCB0YXJnZXQsIHRlcm1pbmFsLCB0aGVybW9tZXRlciwgdGh1bWJzLWRvd24sIHRodW1icy11cCwgdG9nZ2xlLWxlZnQsIHRvZ2dsZS1yaWdodCwgdG9vbCwgdHJhc2gsIHRyYXNoLTIsIHRyaWFuZ2xlLCB0cnVjaywgdHYsIHR3aXRjaCwgdHdpdHRlciwgdHlwZSwgdW1icmVsbGEsIHVubG9jaywgdXNlci1jaGVjaywgdXNlci1taW51cywgdXNlci1wbHVzLCB1c2VyLXgsIHVzZXIsIHVzZXJzLCB2aWRlby1vZmYsIHZpZGVvLCB2b2ljZW1haWwsIHZvbHVtZSwgdm9sdW1lLTEsIHZvbHVtZS0yLCB2b2x1bWUteCwgd2F0Y2gsIHdpZmktb2ZmLCB3aWZpLCB3aW5kLCB4LWNpcmNsZSwgeC1vY3RhZ29uLCB4LXNxdWFyZSwgeCwgeW91dHViZSwgemFwLW9mZiwgemFwLCB6b29tLWluLCB6b29tLW91dCwgZGVmYXVsdCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSkge1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcImFjdGl2aXR5XCI6W1wicHVsc2VcIixcImhlYWx0aFwiLFwiYWN0aW9uXCIsXCJtb3Rpb25cIl0sXCJhaXJwbGF5XCI6W1wic3RyZWFtXCIsXCJjYXN0XCIsXCJtaXJyb3JpbmdcIl0sXCJhbGVydC1jaXJjbGVcIjpbXCJ3YXJuaW5nXCIsXCJhbGVydFwiLFwiZGFuZ2VyXCJdLFwiYWxlcnQtb2N0YWdvblwiOltcIndhcm5pbmdcIixcImFsZXJ0XCIsXCJkYW5nZXJcIl0sXCJhbGVydC10cmlhbmdsZVwiOltcIndhcm5pbmdcIixcImFsZXJ0XCIsXCJkYW5nZXJcIl0sXCJhbGlnbi1jZW50ZXJcIjpbXCJ0ZXh0IGFsaWdubWVudFwiLFwiY2VudGVyXCJdLFwiYWxpZ24tanVzdGlmeVwiOltcInRleHQgYWxpZ25tZW50XCIsXCJqdXN0aWZpZWRcIl0sXCJhbGlnbi1sZWZ0XCI6W1widGV4dCBhbGlnbm1lbnRcIixcImxlZnRcIl0sXCJhbGlnbi1yaWdodFwiOltcInRleHQgYWxpZ25tZW50XCIsXCJyaWdodFwiXSxcImFuY2hvclwiOltdLFwiYXJjaGl2ZVwiOltcImluZGV4XCIsXCJib3hcIl0sXCJhdC1zaWduXCI6W1wibWVudGlvblwiLFwiYXRcIixcImVtYWlsXCIsXCJtZXNzYWdlXCJdLFwiYXdhcmRcIjpbXCJhY2hpZXZlbWVudFwiLFwiYmFkZ2VcIl0sXCJhcGVydHVyZVwiOltcImNhbWVyYVwiLFwicGhvdG9cIl0sXCJiYXItY2hhcnRcIjpbXCJzdGF0aXN0aWNzXCIsXCJkaWFncmFtXCIsXCJncmFwaFwiXSxcImJhci1jaGFydC0yXCI6W1wic3RhdGlzdGljc1wiLFwiZGlhZ3JhbVwiLFwiZ3JhcGhcIl0sXCJiYXR0ZXJ5XCI6W1wicG93ZXJcIixcImVsZWN0cmljaXR5XCJdLFwiYmF0dGVyeS1jaGFyZ2luZ1wiOltcInBvd2VyXCIsXCJlbGVjdHJpY2l0eVwiXSxcImJlbGxcIjpbXCJhbGFybVwiLFwibm90aWZpY2F0aW9uXCIsXCJzb3VuZFwiXSxcImJlbGwtb2ZmXCI6W1wiYWxhcm1cIixcIm5vdGlmaWNhdGlvblwiLFwic2lsZW50XCJdLFwiYmx1ZXRvb3RoXCI6W1wid2lyZWxlc3NcIl0sXCJib29rLW9wZW5cIjpbXCJyZWFkXCIsXCJsaWJyYXJ5XCJdLFwiYm9va1wiOltcInJlYWRcIixcImRpY3Rpb25hcnlcIixcImJvb2tsZXRcIixcIm1hZ2F6aW5lXCIsXCJsaWJyYXJ5XCJdLFwiYm9va21hcmtcIjpbXCJyZWFkXCIsXCJjbGlwXCIsXCJtYXJrZXJcIixcInRhZ1wiXSxcImJveFwiOltcImN1YmVcIl0sXCJicmllZmNhc2VcIjpbXCJ3b3JrXCIsXCJiYWdcIixcImJhZ2dhZ2VcIixcImZvbGRlclwiXSxcImNhbGVuZGFyXCI6W1wiZGF0ZVwiXSxcImNhbWVyYVwiOltcInBob3RvXCJdLFwiY2FzdFwiOltcImNocm9tZWNhc3RcIixcImFpcnBsYXlcIl0sXCJjaXJjbGVcIjpbXCJvZmZcIixcInplcm9cIixcInJlY29yZFwiXSxcImNsaXBib2FyZFwiOltcImNvcHlcIl0sXCJjbG9ja1wiOltcInRpbWVcIixcIndhdGNoXCIsXCJhbGFybVwiXSxcImNsb3VkLWRyaXp6bGVcIjpbXCJ3ZWF0aGVyXCIsXCJzaG93ZXJcIl0sXCJjbG91ZC1saWdodG5pbmdcIjpbXCJ3ZWF0aGVyXCIsXCJib2x0XCJdLFwiY2xvdWQtcmFpblwiOltcIndlYXRoZXJcIl0sXCJjbG91ZC1zbm93XCI6W1wid2VhdGhlclwiLFwiYmxpenphcmRcIl0sXCJjbG91ZFwiOltcIndlYXRoZXJcIl0sXCJjb2RlcGVuXCI6W1wibG9nb1wiXSxcImNvZGVzYW5kYm94XCI6W1wibG9nb1wiXSxcImNvZGVcIjpbXCJzb3VyY2VcIixcInByb2dyYW1taW5nXCJdLFwiY29mZmVlXCI6W1wiZHJpbmtcIixcImN1cFwiLFwibXVnXCIsXCJ0ZWFcIixcImNhZmVcIixcImhvdFwiLFwiYmV2ZXJhZ2VcIl0sXCJjb2x1bW5zXCI6W1wibGF5b3V0XCJdLFwiY29tbWFuZFwiOltcImtleWJvYXJkXCIsXCJjbWRcIixcInRlcm1pbmFsXCIsXCJwcm9tcHRcIl0sXCJjb21wYXNzXCI6W1wibmF2aWdhdGlvblwiLFwic2FmYXJpXCIsXCJ0cmF2ZWxcIixcImRpcmVjdGlvblwiXSxcImNvcHlcIjpbXCJjbG9uZVwiLFwiZHVwbGljYXRlXCJdLFwiY29ybmVyLWRvd24tbGVmdFwiOltcImFycm93XCIsXCJyZXR1cm5cIl0sXCJjb3JuZXItZG93bi1yaWdodFwiOltcImFycm93XCJdLFwiY29ybmVyLWxlZnQtZG93blwiOltcImFycm93XCJdLFwiY29ybmVyLWxlZnQtdXBcIjpbXCJhcnJvd1wiXSxcImNvcm5lci1yaWdodC1kb3duXCI6W1wiYXJyb3dcIl0sXCJjb3JuZXItcmlnaHQtdXBcIjpbXCJhcnJvd1wiXSxcImNvcm5lci11cC1sZWZ0XCI6W1wiYXJyb3dcIl0sXCJjb3JuZXItdXAtcmlnaHRcIjpbXCJhcnJvd1wiXSxcImNwdVwiOltcInByb2Nlc3NvclwiLFwidGVjaG5vbG9neVwiXSxcImNyZWRpdC1jYXJkXCI6W1wicHVyY2hhc2VcIixcInBheW1lbnRcIixcImNjXCJdLFwiY3JvcFwiOltcInBob3RvXCIsXCJpbWFnZVwiXSxcImNyb3NzaGFpclwiOltcImFpbVwiLFwidGFyZ2V0XCJdLFwiZGF0YWJhc2VcIjpbXCJzdG9yYWdlXCIsXCJtZW1vcnlcIl0sXCJkZWxldGVcIjpbXCJyZW1vdmVcIl0sXCJkaXNjXCI6W1wiYWxidW1cIixcImNkXCIsXCJkdmRcIixcIm11c2ljXCJdLFwiZG9sbGFyLXNpZ25cIjpbXCJjdXJyZW5jeVwiLFwibW9uZXlcIixcInBheW1lbnRcIl0sXCJkcm9wbGV0XCI6W1wid2F0ZXJcIl0sXCJlZGl0XCI6W1wicGVuY2lsXCIsXCJjaGFuZ2VcIl0sXCJlZGl0LTJcIjpbXCJwZW5jaWxcIixcImNoYW5nZVwiXSxcImVkaXQtM1wiOltcInBlbmNpbFwiLFwiY2hhbmdlXCJdLFwiZXllXCI6W1widmlld1wiLFwid2F0Y2hcIl0sXCJleWUtb2ZmXCI6W1widmlld1wiLFwid2F0Y2hcIixcImhpZGVcIixcImhpZGRlblwiXSxcImV4dGVybmFsLWxpbmtcIjpbXCJvdXRib3VuZFwiXSxcImZhY2Vib29rXCI6W1wibG9nb1wiLFwic29jaWFsXCJdLFwiZmFzdC1mb3J3YXJkXCI6W1wibXVzaWNcIl0sXCJmaWdtYVwiOltcImxvZ29cIixcImRlc2lnblwiLFwidG9vbFwiXSxcImZpbGUtbWludXNcIjpbXCJkZWxldGVcIixcInJlbW92ZVwiLFwiZXJhc2VcIl0sXCJmaWxlLXBsdXNcIjpbXCJhZGRcIixcImNyZWF0ZVwiLFwibmV3XCJdLFwiZmlsZS10ZXh0XCI6W1wiZGF0YVwiLFwidHh0XCIsXCJwZGZcIl0sXCJmaWxtXCI6W1wibW92aWVcIixcInZpZGVvXCJdLFwiZmlsdGVyXCI6W1wiZnVubmVsXCIsXCJob3BwZXJcIl0sXCJmbGFnXCI6W1wicmVwb3J0XCJdLFwiZm9sZGVyLW1pbnVzXCI6W1wiZGlyZWN0b3J5XCJdLFwiZm9sZGVyLXBsdXNcIjpbXCJkaXJlY3RvcnlcIl0sXCJmb2xkZXJcIjpbXCJkaXJlY3RvcnlcIl0sXCJmcmFtZXJcIjpbXCJsb2dvXCIsXCJkZXNpZ25cIixcInRvb2xcIl0sXCJmcm93blwiOltcImVtb2ppXCIsXCJmYWNlXCIsXCJiYWRcIixcInNhZFwiLFwiZW1vdGlvblwiXSxcImdpZnRcIjpbXCJwcmVzZW50XCIsXCJib3hcIixcImJpcnRoZGF5XCIsXCJwYXJ0eVwiXSxcImdpdC1icmFuY2hcIjpbXCJjb2RlXCIsXCJ2ZXJzaW9uIGNvbnRyb2xcIl0sXCJnaXQtY29tbWl0XCI6W1wiY29kZVwiLFwidmVyc2lvbiBjb250cm9sXCJdLFwiZ2l0LW1lcmdlXCI6W1wiY29kZVwiLFwidmVyc2lvbiBjb250cm9sXCJdLFwiZ2l0LXB1bGwtcmVxdWVzdFwiOltcImNvZGVcIixcInZlcnNpb24gY29udHJvbFwiXSxcImdpdGh1YlwiOltcImxvZ29cIixcInZlcnNpb24gY29udHJvbFwiXSxcImdpdGxhYlwiOltcImxvZ29cIixcInZlcnNpb24gY29udHJvbFwiXSxcImdsb2JlXCI6W1wid29ybGRcIixcImJyb3dzZXJcIixcImxhbmd1YWdlXCIsXCJ0cmFuc2xhdGVcIl0sXCJoYXJkLWRyaXZlXCI6W1wiY29tcHV0ZXJcIixcInNlcnZlclwiLFwibWVtb3J5XCIsXCJkYXRhXCJdLFwiaGFzaFwiOltcImhhc2h0YWdcIixcIm51bWJlclwiLFwicG91bmRcIl0sXCJoZWFkcGhvbmVzXCI6W1wibXVzaWNcIixcImF1ZGlvXCIsXCJzb3VuZFwiXSxcImhlYXJ0XCI6W1wibGlrZVwiLFwibG92ZVwiLFwiZW1vdGlvblwiXSxcImhlbHAtY2lyY2xlXCI6W1wicXVlc3Rpb24gbWFya1wiXSxcImhleGFnb25cIjpbXCJzaGFwZVwiLFwibm9kZS5qc1wiLFwibG9nb1wiXSxcImhvbWVcIjpbXCJob3VzZVwiLFwibGl2aW5nXCJdLFwiaW1hZ2VcIjpbXCJwaWN0dXJlXCJdLFwiaW5ib3hcIjpbXCJlbWFpbFwiXSxcImluc3RhZ3JhbVwiOltcImxvZ29cIixcImNhbWVyYVwiXSxcImtleVwiOltcInBhc3N3b3JkXCIsXCJsb2dpblwiLFwiYXV0aGVudGljYXRpb25cIixcInNlY3VyZVwiXSxcImxheWVyc1wiOltcInN0YWNrXCJdLFwibGF5b3V0XCI6W1wid2luZG93XCIsXCJ3ZWJwYWdlXCJdLFwibGlmZS1ib3V5XCI6W1wiaGVscFwiLFwibGlmZSByaW5nXCIsXCJzdXBwb3J0XCJdLFwibGlua1wiOltcImNoYWluXCIsXCJ1cmxcIl0sXCJsaW5rLTJcIjpbXCJjaGFpblwiLFwidXJsXCJdLFwibGlua2VkaW5cIjpbXCJsb2dvXCIsXCJzb2NpYWwgbWVkaWFcIl0sXCJsaXN0XCI6W1wib3B0aW9uc1wiXSxcImxvY2tcIjpbXCJzZWN1cml0eVwiLFwicGFzc3dvcmRcIixcInNlY3VyZVwiXSxcImxvZy1pblwiOltcInNpZ24gaW5cIixcImFycm93XCIsXCJlbnRlclwiXSxcImxvZy1vdXRcIjpbXCJzaWduIG91dFwiLFwiYXJyb3dcIixcImV4aXRcIl0sXCJtYWlsXCI6W1wiZW1haWxcIixcIm1lc3NhZ2VcIl0sXCJtYXAtcGluXCI6W1wibG9jYXRpb25cIixcIm5hdmlnYXRpb25cIixcInRyYXZlbFwiLFwibWFya2VyXCJdLFwibWFwXCI6W1wibG9jYXRpb25cIixcIm5hdmlnYXRpb25cIixcInRyYXZlbFwiXSxcIm1heGltaXplXCI6W1wiZnVsbHNjcmVlblwiXSxcIm1heGltaXplLTJcIjpbXCJmdWxsc2NyZWVuXCIsXCJhcnJvd3NcIixcImV4cGFuZFwiXSxcIm1laFwiOltcImVtb2ppXCIsXCJmYWNlXCIsXCJuZXV0cmFsXCIsXCJlbW90aW9uXCJdLFwibWVudVwiOltcImJhcnNcIixcIm5hdmlnYXRpb25cIixcImhhbWJ1cmdlclwiXSxcIm1lc3NhZ2UtY2lyY2xlXCI6W1wiY29tbWVudFwiLFwiY2hhdFwiXSxcIm1lc3NhZ2Utc3F1YXJlXCI6W1wiY29tbWVudFwiLFwiY2hhdFwiXSxcIm1pYy1vZmZcIjpbXCJyZWNvcmRcIixcInNvdW5kXCIsXCJtdXRlXCJdLFwibWljXCI6W1wicmVjb3JkXCIsXCJzb3VuZFwiLFwibGlzdGVuXCJdLFwibWluaW1pemVcIjpbXCJleGl0IGZ1bGxzY3JlZW5cIixcImNsb3NlXCJdLFwibWluaW1pemUtMlwiOltcImV4aXQgZnVsbHNjcmVlblwiLFwiYXJyb3dzXCIsXCJjbG9zZVwiXSxcIm1pbnVzXCI6W1wic3VidHJhY3RcIl0sXCJtb25pdG9yXCI6W1widHZcIixcInNjcmVlblwiLFwiZGlzcGxheVwiXSxcIm1vb25cIjpbXCJkYXJrXCIsXCJuaWdodFwiXSxcIm1vcmUtaG9yaXpvbnRhbFwiOltcImVsbGlwc2lzXCJdLFwibW9yZS12ZXJ0aWNhbFwiOltcImVsbGlwc2lzXCJdLFwibW91c2UtcG9pbnRlclwiOltcImFycm93XCIsXCJjdXJzb3JcIl0sXCJtb3ZlXCI6W1wiYXJyb3dzXCJdLFwibXVzaWNcIjpbXCJub3RlXCJdLFwibmF2aWdhdGlvblwiOltcImxvY2F0aW9uXCIsXCJ0cmF2ZWxcIl0sXCJuYXZpZ2F0aW9uLTJcIjpbXCJsb2NhdGlvblwiLFwidHJhdmVsXCJdLFwib2N0YWdvblwiOltcInN0b3BcIl0sXCJwYWNrYWdlXCI6W1wiYm94XCIsXCJjb250YWluZXJcIl0sXCJwYXBlcmNsaXBcIjpbXCJhdHRhY2htZW50XCJdLFwicGF1c2VcIjpbXCJtdXNpY1wiLFwic3RvcFwiXSxcInBhdXNlLWNpcmNsZVwiOltcIm11c2ljXCIsXCJhdWRpb1wiLFwic3RvcFwiXSxcInBlbi10b29sXCI6W1widmVjdG9yXCIsXCJkcmF3aW5nXCJdLFwicGVyY2VudFwiOltcImRpc2NvdW50XCJdLFwicGhvbmUtY2FsbFwiOltcInJpbmdcIl0sXCJwaG9uZS1mb3J3YXJkZWRcIjpbXCJjYWxsXCJdLFwicGhvbmUtaW5jb21pbmdcIjpbXCJjYWxsXCJdLFwicGhvbmUtbWlzc2VkXCI6W1wiY2FsbFwiXSxcInBob25lLW9mZlwiOltcImNhbGxcIixcIm11dGVcIl0sXCJwaG9uZS1vdXRnb2luZ1wiOltcImNhbGxcIl0sXCJwaG9uZVwiOltcImNhbGxcIl0sXCJwbGF5XCI6W1wibXVzaWNcIixcInN0YXJ0XCJdLFwicGllLWNoYXJ0XCI6W1wic3RhdGlzdGljc1wiLFwiZGlhZ3JhbVwiXSxcInBsYXktY2lyY2xlXCI6W1wibXVzaWNcIixcInN0YXJ0XCJdLFwicGx1c1wiOltcImFkZFwiLFwibmV3XCJdLFwicGx1cy1jaXJjbGVcIjpbXCJhZGRcIixcIm5ld1wiXSxcInBsdXMtc3F1YXJlXCI6W1wiYWRkXCIsXCJuZXdcIl0sXCJwb2NrZXRcIjpbXCJsb2dvXCIsXCJzYXZlXCJdLFwicG93ZXJcIjpbXCJvblwiLFwib2ZmXCJdLFwicHJpbnRlclwiOltcImZheFwiLFwib2ZmaWNlXCIsXCJkZXZpY2VcIl0sXCJyYWRpb1wiOltcInNpZ25hbFwiXSxcInJlZnJlc2gtY3dcIjpbXCJzeW5jaHJvbmlzZVwiLFwiYXJyb3dzXCJdLFwicmVmcmVzaC1jY3dcIjpbXCJhcnJvd3NcIl0sXCJyZXBlYXRcIjpbXCJsb29wXCIsXCJhcnJvd3NcIl0sXCJyZXdpbmRcIjpbXCJtdXNpY1wiXSxcInJvdGF0ZS1jY3dcIjpbXCJhcnJvd1wiXSxcInJvdGF0ZS1jd1wiOltcImFycm93XCJdLFwicnNzXCI6W1wiZmVlZFwiLFwic3Vic2NyaWJlXCJdLFwic2F2ZVwiOltcImZsb3BweSBkaXNrXCJdLFwic2Npc3NvcnNcIjpbXCJjdXRcIl0sXCJzZWFyY2hcIjpbXCJmaW5kXCIsXCJtYWduaWZpZXJcIixcIm1hZ25pZnlpbmcgZ2xhc3NcIl0sXCJzZW5kXCI6W1wibWVzc2FnZVwiLFwibWFpbFwiLFwiZW1haWxcIixcInBhcGVyIGFpcnBsYW5lXCIsXCJwYXBlciBhZXJvcGxhbmVcIl0sXCJzZXR0aW5nc1wiOltcImNvZ1wiLFwiZWRpdFwiLFwiZ2VhclwiLFwicHJlZmVyZW5jZXNcIl0sXCJzaGFyZS0yXCI6W1wibmV0d29ya1wiLFwiY29ubmVjdGlvbnNcIl0sXCJzaGllbGRcIjpbXCJzZWN1cml0eVwiLFwic2VjdXJlXCJdLFwic2hpZWxkLW9mZlwiOltcInNlY3VyaXR5XCIsXCJpbnNlY3VyZVwiXSxcInNob3BwaW5nLWJhZ1wiOltcImVjb21tZXJjZVwiLFwiY2FydFwiLFwicHVyY2hhc2VcIixcInN0b3JlXCJdLFwic2hvcHBpbmctY2FydFwiOltcImVjb21tZXJjZVwiLFwiY2FydFwiLFwicHVyY2hhc2VcIixcInN0b3JlXCJdLFwic2h1ZmZsZVwiOltcIm11c2ljXCJdLFwic2tpcC1iYWNrXCI6W1wibXVzaWNcIl0sXCJza2lwLWZvcndhcmRcIjpbXCJtdXNpY1wiXSxcInNsYWNrXCI6W1wibG9nb1wiXSxcInNsYXNoXCI6W1wiYmFuXCIsXCJub1wiXSxcInNsaWRlcnNcIjpbXCJzZXR0aW5nc1wiLFwiY29udHJvbHNcIl0sXCJzbWFydHBob25lXCI6W1wiY2VsbHBob25lXCIsXCJkZXZpY2VcIl0sXCJzbWlsZVwiOltcImVtb2ppXCIsXCJmYWNlXCIsXCJoYXBweVwiLFwiZ29vZFwiLFwiZW1vdGlvblwiXSxcInNwZWFrZXJcIjpbXCJhdWRpb1wiLFwibXVzaWNcIl0sXCJzdGFyXCI6W1wiYm9va21hcmtcIixcImZhdm9yaXRlXCIsXCJsaWtlXCJdLFwic3RvcC1jaXJjbGVcIjpbXCJtZWRpYVwiLFwibXVzaWNcIl0sXCJzdW5cIjpbXCJicmlnaHRuZXNzXCIsXCJ3ZWF0aGVyXCIsXCJsaWdodFwiXSxcInN1bnJpc2VcIjpbXCJ3ZWF0aGVyXCIsXCJ0aW1lXCIsXCJtb3JuaW5nXCIsXCJkYXlcIl0sXCJzdW5zZXRcIjpbXCJ3ZWF0aGVyXCIsXCJ0aW1lXCIsXCJldmVuaW5nXCIsXCJuaWdodFwiXSxcInRhYmxldFwiOltcImRldmljZVwiXSxcInRhZ1wiOltcImxhYmVsXCJdLFwidGFyZ2V0XCI6W1wibG9nb1wiLFwiYnVsbHNleWVcIl0sXCJ0ZXJtaW5hbFwiOltcImNvZGVcIixcImNvbW1hbmQgbGluZVwiLFwicHJvbXB0XCJdLFwidGhlcm1vbWV0ZXJcIjpbXCJ0ZW1wZXJhdHVyZVwiLFwiY2Vsc2l1c1wiLFwiZmFocmVuaGVpdFwiLFwid2VhdGhlclwiXSxcInRodW1icy1kb3duXCI6W1wiZGlzbGlrZVwiLFwiYmFkXCIsXCJlbW90aW9uXCJdLFwidGh1bWJzLXVwXCI6W1wibGlrZVwiLFwiZ29vZFwiLFwiZW1vdGlvblwiXSxcInRvZ2dsZS1sZWZ0XCI6W1wib25cIixcIm9mZlwiLFwic3dpdGNoXCJdLFwidG9nZ2xlLXJpZ2h0XCI6W1wib25cIixcIm9mZlwiLFwic3dpdGNoXCJdLFwidG9vbFwiOltcInNldHRpbmdzXCIsXCJzcGFubmVyXCJdLFwidHJhc2hcIjpbXCJnYXJiYWdlXCIsXCJkZWxldGVcIixcInJlbW92ZVwiLFwiYmluXCJdLFwidHJhc2gtMlwiOltcImdhcmJhZ2VcIixcImRlbGV0ZVwiLFwicmVtb3ZlXCIsXCJiaW5cIl0sXCJ0cmlhbmdsZVwiOltcImRlbHRhXCJdLFwidHJ1Y2tcIjpbXCJkZWxpdmVyeVwiLFwidmFuXCIsXCJzaGlwcGluZ1wiLFwidHJhbnNwb3J0XCIsXCJsb3JyeVwiXSxcInR2XCI6W1widGVsZXZpc2lvblwiLFwic3RyZWFtXCJdLFwidHdpdGNoXCI6W1wibG9nb1wiXSxcInR3aXR0ZXJcIjpbXCJsb2dvXCIsXCJzb2NpYWxcIl0sXCJ0eXBlXCI6W1widGV4dFwiXSxcInVtYnJlbGxhXCI6W1wicmFpblwiLFwid2VhdGhlclwiXSxcInVubG9ja1wiOltcInNlY3VyaXR5XCJdLFwidXNlci1jaGVja1wiOltcImZvbGxvd2VkXCIsXCJzdWJzY3JpYmVkXCJdLFwidXNlci1taW51c1wiOltcImRlbGV0ZVwiLFwicmVtb3ZlXCIsXCJ1bmZvbGxvd1wiLFwidW5zdWJzY3JpYmVcIl0sXCJ1c2VyLXBsdXNcIjpbXCJuZXdcIixcImFkZFwiLFwiY3JlYXRlXCIsXCJmb2xsb3dcIixcInN1YnNjcmliZVwiXSxcInVzZXIteFwiOltcImRlbGV0ZVwiLFwicmVtb3ZlXCIsXCJ1bmZvbGxvd1wiLFwidW5zdWJzY3JpYmVcIixcInVuYXZhaWxhYmxlXCJdLFwidXNlclwiOltcInBlcnNvblwiLFwiYWNjb3VudFwiXSxcInVzZXJzXCI6W1wiZ3JvdXBcIl0sXCJ2aWRlby1vZmZcIjpbXCJjYW1lcmFcIixcIm1vdmllXCIsXCJmaWxtXCJdLFwidmlkZW9cIjpbXCJjYW1lcmFcIixcIm1vdmllXCIsXCJmaWxtXCJdLFwidm9pY2VtYWlsXCI6W1wicGhvbmVcIl0sXCJ2b2x1bWVcIjpbXCJtdXNpY1wiLFwic291bmRcIixcIm11dGVcIl0sXCJ2b2x1bWUtMVwiOltcIm11c2ljXCIsXCJzb3VuZFwiXSxcInZvbHVtZS0yXCI6W1wibXVzaWNcIixcInNvdW5kXCJdLFwidm9sdW1lLXhcIjpbXCJtdXNpY1wiLFwic291bmRcIixcIm11dGVcIl0sXCJ3YXRjaFwiOltcImNsb2NrXCIsXCJ0aW1lXCJdLFwid2lmaS1vZmZcIjpbXCJkaXNhYmxlZFwiXSxcIndpZmlcIjpbXCJjb25uZWN0aW9uXCIsXCJzaWduYWxcIixcIndpcmVsZXNzXCJdLFwid2luZFwiOltcIndlYXRoZXJcIixcImFpclwiXSxcIngtY2lyY2xlXCI6W1wiY2FuY2VsXCIsXCJjbG9zZVwiLFwiZGVsZXRlXCIsXCJyZW1vdmVcIixcInRpbWVzXCIsXCJjbGVhclwiXSxcIngtb2N0YWdvblwiOltcImRlbGV0ZVwiLFwic3RvcFwiLFwiYWxlcnRcIixcIndhcm5pbmdcIixcInRpbWVzXCIsXCJjbGVhclwiXSxcIngtc3F1YXJlXCI6W1wiY2FuY2VsXCIsXCJjbG9zZVwiLFwiZGVsZXRlXCIsXCJyZW1vdmVcIixcInRpbWVzXCIsXCJjbGVhclwiXSxcInhcIjpbXCJjYW5jZWxcIixcImNsb3NlXCIsXCJkZWxldGVcIixcInJlbW92ZVwiLFwidGltZXNcIixcImNsZWFyXCJdLFwieW91dHViZVwiOltcImxvZ29cIixcInZpZGVvXCIsXCJwbGF5XCJdLFwiemFwLW9mZlwiOltcImZsYXNoXCIsXCJjYW1lcmFcIixcImxpZ2h0bmluZ1wiXSxcInphcFwiOltcImZsYXNoXCIsXCJjYW1lcmFcIixcImxpZ2h0bmluZ1wiXSxcInpvb20taW5cIjpbXCJtYWduaWZ5aW5nIGdsYXNzXCJdLFwiem9vbS1vdXRcIjpbXCJtYWduaWZ5aW5nIGdsYXNzXCJdfTtcblxuLyoqKi8gfSksXG5cbi8qKiovIFwiLi9zcmMvdG8tc3ZnLmpzXCI6XG4vKiEqKioqKioqKioqKioqKioqKioqKioqKiEqXFxcbiAgISoqKiAuL3NyYy90by1zdmcuanMgKioqIVxuICBcXCoqKioqKioqKioqKioqKioqKioqKioqL1xuLyohIG5vIHN0YXRpYyBleHBvcnRzIGZvdW5kICovXG4vKioqLyAoZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblwidXNlIHN0cmljdFwiO1xuXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfaWNvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKC8qISAuL2ljb25zICovIFwiLi9zcmMvaWNvbnMuanNcIik7XG5cbnZhciBfaWNvbnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaWNvbnMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vKipcbiAqIENyZWF0ZSBhbiBTVkcgc3RyaW5nLlxuICogQGRlcHJlY2F0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge09iamVjdH0gYXR0cnNcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHRvU3ZnKG5hbWUpIHtcbiAgdmFyIGF0dHJzID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcblxuICBjb25zb2xlLndhcm4oJ2ZlYXRoZXIudG9TdmcoKSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgdXNlIGZlYXRoZXIuaWNvbnNbbmFtZV0udG9TdmcoKSBpbnN0ZWFkLicpO1xuXG4gIGlmICghbmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIHJlcXVpcmVkIGBrZXlgIChpY29uIG5hbWUpIHBhcmFtZXRlciBpcyBtaXNzaW5nLicpO1xuICB9XG5cbiAgaWYgKCFfaWNvbnMyLmRlZmF1bHRbbmFtZV0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIGljb24gbWF0Y2hpbmcgXFwnJyArIG5hbWUgKyAnXFwnLiBTZWUgdGhlIGNvbXBsZXRlIGxpc3Qgb2YgaWNvbnMgYXQgaHR0cHM6Ly9mZWF0aGVyaWNvbnMuY29tJyk7XG4gIH1cblxuICByZXR1cm4gX2ljb25zMi5kZWZhdWx0W25hbWVdLnRvU3ZnKGF0dHJzKTtcbn1cblxuZXhwb3J0cy5kZWZhdWx0ID0gdG9Tdmc7XG5cbi8qKiovIH0pLFxuXG4vKioqLyAwOlxuLyohKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiohKlxcXG4gICEqKiogbXVsdGkgY29yZS1qcy9lcy9hcnJheS9mcm9tIC4vc3JjL2luZGV4LmpzICoqKiFcbiAgXFwqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qISBubyBzdGF0aWMgZXhwb3J0cyBmb3VuZCAqL1xuLyoqKi8gKGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5fX3dlYnBhY2tfcmVxdWlyZV9fKC8qISBjb3JlLWpzL2VzL2FycmF5L2Zyb20gKi9cIi4vbm9kZV9tb2R1bGVzL2NvcmUtanMvZXMvYXJyYXkvZnJvbS5qc1wiKTtcbm1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygvKiEgL2hvbWUvdHJhdmlzL2J1aWxkL2ZlYXRoZXJpY29ucy9mZWF0aGVyL3NyYy9pbmRleC5qcyAqL1wiLi9zcmMvaW5kZXguanNcIik7XG5cblxuLyoqKi8gfSlcblxuLyoqKioqKi8gfSk7XG59KTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWZlYXRoZXIuanMubWFwIiwiLyoqXHJcbiAqIFRoaXMgbW9kdWxlIGNvbnRhaW5zIHZhcmlvdXMgdXRpbGl0eSBmdW5jdGlvbnMgY29tbW9ubHkgdXNlZCBpbiBPYnNpZGlhbiBwbHVnaW5zLlxyXG4gKiBAbW9kdWxlIG9ic2lkaWFuLWNvbW11bml0eS1saWJcclxuICovXHJcbmltcG9ydCAqIGFzIGZlYXRoZXIgZnJvbSBcImZlYXRoZXItaWNvbnNcIjtcclxuaW1wb3J0IHsgYWRkSWNvbiwgTWFya2Rvd25SZW5kZXJlciwgTWFya2Rvd25WaWV3LCBNb2RhbCwgbm9ybWFsaXplUGF0aCwgTm90aWNlLCByZXF1ZXN0LCBURmlsZSwgfSBmcm9tIFwib2JzaWRpYW5cIjtcclxuLyoqXHJcbiAqIFlvdSBjYW4gYXdhaXQgdGhpcyBGdW5jdGlvbiB0byBkZWxheSBleGVjdXRpb25cclxuICpcclxuICogQHBhcmFtIGRlbGF5IFRoZSBkZWxheSBpbiBtc1xyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHdhaXQoZGVsYXkpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBkZWxheSkpO1xyXG59XHJcbi8qKlxyXG4gKiBBZGRzIGFsbCBvZmZpY2lhbCBGZWF0aGVyIEljb25zIHRvIE9ic2lkaWFuLlxyXG4gKiBodHRwczovL2ZlYXRoZXJpY29ucy5jb20vXHJcbiAqXHJcbiAqIEBwYXJhbSBhdHRyIFNWRyBBdHRyaWJ1dGVzIGZvciB0aGUgSWNvbi4gVGhlIGRlZmF1bHQgc2hvdWxkIHdvcmsgZm9yIG1vc3QgdXNlY2FzZXMuXHJcbiAqXHJcbiAqIEBkZXByZWNhdGVkIEFzIG9mIE9ic2lkaWFuIDAuMTMuMjcgdGhpcyBpcyBubyBsb25nZXIgbmVlZGVkLCBiZWNhdXNlIE9ic2lkaWFuIHNoaXBzIHdpdGggYGx1Y2lkZWAsIGEgbWFpbnRhaW5lZCBmb3JrIG9mIGZlYXRoZXIuIChodHRwczovL2x1Y2lkZS5kZXYvKVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZEFsbEZlYXRoZXJJY29ucyhhdHRyID0geyB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCIxMDBcIiwgaGVpZ2h0OiBcIjEwMFwiIH0pIHtcclxuICAgIE9iamVjdC52YWx1ZXMoZmVhdGhlci5pY29ucykuZm9yRWFjaCgoaSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHN2ZyA9IGkudG9TdmcoYXR0cik7XHJcbiAgICAgICAgYWRkSWNvbihgZmVhdGhlci0ke2kubmFtZX1gLCBzdmcpO1xyXG4gICAgfSk7XHJcbn1cclxuLyoqXHJcbiAqIEFkZHMgYSBzcGVjaWZpYyBGZWF0aGVyIEljb24gdG8gT2JzaWRpYW4uXHJcbiAqXHJcbiAqIEBwYXJhbSBuYW1lIG9mZmljaWFsIE5hbWUgb2YgdGhlIEljb24gKGh0dHBzOi8vZmVhdGhlcmljb25zLmNvbS8pXHJcbiAqIEBwYXJhbSBhdHRyIFNWRyBBdHRyaWJ1dGVzIGZvciB0aGUgSWNvbi4gVGhlIGRlZmF1bHQgc2hvdWxkIHdvcmsgZm9yIG1vc3QgdXNlY2FzZXMuXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEljb24gbmFtZVxyXG4gKlxyXG4gKiBAZGVwcmVjYXRlZCBBcyBvZiBPYnNpZGlhbiAwLjEzLjI3IHRoaXMgaXMgbm8gbG9uZ2VyIG5lZWRlZCwgYmVjYXVzZSBPYnNpZGlhbiBzaGlwcyB3aXRoIGBsdWNpZGVgLCBhIG1haW50YWluZWQgZm9yayBvZiBmZWF0aGVyLiAoaHR0cHM6Ly9sdWNpZGUuZGV2LylcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBhZGRGZWF0aGVySWNvbihuYW1lLCBhdHRyID0geyB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLCB3aWR0aDogXCIxMDBcIiwgaGVpZ2h0OiBcIjEwMFwiIH0pIHtcclxuICAgIGlmIChmZWF0aGVyLmljb25zW25hbWVdKSB7XHJcbiAgICAgICAgY29uc3QgaWNvbk5hbWUgPSBgZmVhdGhlci0ke25hbWV9YDtcclxuICAgICAgICBhZGRJY29uKGljb25OYW1lLCBmZWF0aGVyLmljb25zW25hbWVdLnRvU3ZnKGF0dHIpKTtcclxuICAgICAgICByZXR1cm4gaWNvbk5hbWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICB0aHJvdyBFcnJvcihgVGhpcyBJY29uICgke25hbWV9KSBkb2Vzbid0IGV4aXN0IGluIHRoZSBGZWF0aGVyIExpYnJhcnkuYCk7XHJcbiAgICB9XHJcbn1cclxuLyoqXHJcbiAqIENvbnZlcnQgYSBiYXNlNjQgU3RyaW5nIHRvIGFuIEFycmF5QnVmZmVyLlxyXG4gKiBZb3UgY2FuIHRoZW4gdXNlIHRoZSBBcnJheUJ1ZmZlciB0byBzYXZlIHRoZSBhc3NldCB0byBkaXNrLlxyXG4gKlxyXG4gKiBAcGFyYW0gYmFzZTY0IGJhc2U2NCBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxyXG4gKiBAcmV0dXJucyBBcnJheUJ1ZmZlclxyXG4gKiBAZGVwcmVjYXRlZCBPYnNpZGlhbiBvZmZlcnMgaXQncyBvd24gbWV0aG9kIGFzIG9mIDAuMTQuNVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGJhc2U2NFRvQXJyYXlCdWZmZXIoYmFzZTY0KSB7XHJcbiAgICBjb25zdCBiaW5hcnlfc3RyaW5nID0gd2luZG93LmF0b2IoYmFzZTY0KTtcclxuICAgIGNvbnN0IGxlbiA9IGJpbmFyeV9zdHJpbmcubGVuZ3RoO1xyXG4gICAgbGV0IGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICBieXRlc1tpXSA9IGJpbmFyeV9zdHJpbmcuY2hhckNvZGVBdChpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBieXRlcy5idWZmZXI7XHJcbn1cclxuLyoqXHJcbiAqIFRoaXMgaXMgYSBoZWxwZXIgbWV0aG9kIGZvciBhbiB1bmRvY3VtZW50ZWQgQVBJIG9mIE9ic2lkaWFuLlxyXG4gKlxyXG4gKiBAcGFyYW0gZmlsZU5hbWUgVGhlIEZpbGVuYW1lIGZvciB5b3VyIEF0dGFjaG1lbnRcclxuICogQHBhcmFtIGZvcm1hdCBUaGUgRmlsZWZvcm1hdCBvZiB5b3VyIEF0dGFjaG1lbnRcclxuICogQHBhcmFtIHNvdXJjZUZpbGUgVGhlIFNvdXJjZWZpbGUgZnJvbSB3aGVyZSB0aGUgQXR0YWNobWVudCBnZXRzIGFkZGVkLCB0aGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBBdHRhY2htZW50IEZvbGRlciBtaWdodCBiZSBkaWZmZXJlbnQgYmFzZWQgb24gd2hlcmUgaXQgZ2V0cyBpbnNlcnRlZC5cclxuICogQHJldHVybnMgVGhlIEF0dGFjaG1lbnQgUGF0aFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEF2YWlsYWJsZVBhdGhGb3JBdHRhY2htZW50cyhmaWxlTmFtZSwgZm9ybWF0LCBzb3VyY2VGaWxlKSB7XHJcbiAgICAvL0B0cy1leHBlY3QtZXJyb3JcclxuICAgIHJldHVybiBhcHAudmF1bHQuZ2V0QXZhaWxhYmxlUGF0aEZvckF0dGFjaG1lbnRzKGZpbGVOYW1lLCBmb3JtYXQsIHNvdXJjZUZpbGUpO1xyXG59XHJcbi8qKlxyXG4gKiBDb3B5IGBjb250ZW50YCB0byB0aGUgdXNlcnMgY2xpcGJvYXJkLlxyXG4gKlxyXG4gKiBAcGFyYW0ge3N0cmluZ30gY29udGVudCBUaGUgY29udGVudCB0byBiZSBjb3BpZWQgdG8gY2xpcGJvYXJkLlxyXG4gKiBAcGFyYW0geygpID0+IGFueX0gc3VjY2VzcyBUaGUgY2FsbGJhY2sgdG8gcnVuIHdoZW4gdGV4dCBpcyBzdWNjZXNzZnVsbHkgY29waWVkLiBEZWZhdWx0IHRocm93cyBhIG5ldyBgTm90aWNlYFxyXG4gKiBAcGFyYW0geyhyZWFzb24/KSA9PiBhbnl9IGZhaWx1cmUgVGhlIGNhbGxiYWNrIHRvIHJ1biB3aGVuIHRleHQgd2FzIG5vdCBhYmxlIHRvIGJlIGNvcGllZC4gRGVmYXVsdCB0aHJvd3MgYSBuZXcgYE5vdGljZWAsIGFuZCBjb25zb2xlIGxvZ3MgdGhlIGVycm9yLmBcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjb3B5KGNvbnRlbnQsIHN1Y2Nlc3MgPSAoKSA9PiBuZXcgTm90aWNlKFwiQ29waWVkIHRvIGNsaXBib2FyZFwiKSwgZmFpbHVyZSA9IChyZWFzb24pID0+IHtcclxuICAgIG5ldyBOb3RpY2UoXCJDb3VsZCBub3QgY29weSB0byBjbGlwYm9hcmRcIik7XHJcbiAgICBjb25zb2xlLmxvZyh7IHJlYXNvbiB9KTtcclxufSkge1xyXG4gICAgYXdhaXQgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQoY29udGVudCkudGhlbihzdWNjZXNzLCBmYWlsdXJlKTtcclxufVxyXG4vKipcclxuICogR2l2ZW4gYW4gZWRpdG9yLCBjaGVjayBpZiBzb21ldGhpbmcgaXMgc2VsZWN0ZWQgYW5kIHJldHVybiB0aGF0IHNlbGVjdGlvbiwgb3RoZXJ3aXNlIHJldHVybiB0aGUgZW50aXJlIGNvbnRlbnQgb2YgdGhlIGVkaXRvclxyXG4gKiBAcGFyYW0gIHtFZGl0b3J9IGVkaXRvclxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlbGVjdGlvbkZyb21FZGl0b3IoZWRpdG9yKSB7XHJcbiAgICBpZiAoZWRpdG9yLnNvbWV0aGluZ1NlbGVjdGVkKCkpXHJcbiAgICAgICAgcmV0dXJuIGVkaXRvci5nZXRTZWxlY3Rpb24oKTtcclxuICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gZWRpdG9yLmdldFZhbHVlKCk7XHJcbn1cclxuLyoqXHJcbiAqIENoZWNrIGlmIHNvbWV0aGluZyBpcyBzZWxlY3RlZCBpbiB0aGUgY3VycmVudCBmaWxlIGFuZCByZXR1cm4gdGhhdCBzZWxlY3Rpb24sIG90aGVyd2lzZSByZXR1cm4gdGhlIGVudGlyZSBjb250ZW50IG9mIHRoZSBjdXJyZW50IGZpbGUuXHJcbiAqIEBwYXJhbSAge2Jvb2xlYW59IFtjYWNoZWQ9dHJ1ZV0gVXNlIGBjYWNoZWRSZWFkYCBvciBgcmVhZGAuIGBjYWNoZWRSZWFkYCBieSBkZWZhdWx0LlxyXG4gKiBAcmV0dXJucyB7c3RyaW5nIHwgbnVsbH0gYG51bGxgIGlmIG5vdCBmb2N1c3NlZCBvbiBhIG1hcmtkb3duIGZpbGVcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRTZWxlY3Rpb25Gcm9tQ3VyckZpbGUoY2FjaGVkID0gdHJ1ZSkge1xyXG4gICAgdmFyIF9hO1xyXG4gICAgY29uc3QgdGV4dCA9IChfYSA9IHdpbmRvdyA9PT0gbnVsbCB8fCB3aW5kb3cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHdpbmRvdy5nZXRTZWxlY3Rpb24oKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnRvU3RyaW5nKCk7XHJcbiAgICBpZiAodGV4dClcclxuICAgICAgICByZXR1cm4gdGV4dDtcclxuICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gYXdhaXQgZ2V0QWN0aXZlRmlsZUNvbnRlbnQoY2FjaGVkKTtcclxufVxyXG4vKipcclxuICogQ2hlY2sgaWYgYG5vdGVOYW1lYCBpcyB0aGUgbmFtZSBvZiBhIG5vdGUgdGhhdCBleGlzdHMgaW4gdGhlIHZhdWx0LlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IG5vdGVOYW1lIEJhc2VuYW1lIG9mIHRoZSBub3RlIHRvIHNlYXJjaCBmb3IuXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gW3NvdXJjZVBhdGg9XCJcIl0gT3B0aW9uYWwgZmlsZSBwYXRoIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLiBEZWZhdWx0IGlzIHRoZSBjdXJyZW50IGZpbGUuXHJcbiAqIEByZXR1cm5zIGJvb2xlYW5cclxuICovXHJcbmV4cG9ydCBjb25zdCBpc0luVmF1bHQgPSAobm90ZU5hbWUsIHNvdXJjZVBhdGggPSBcIlwiKSA9PiAhIWFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KG5vdGVOYW1lLCBzb3VyY2VQYXRoKTtcclxuLyoqXHJcbiAqIFdoZW4gaG92ZXJpbmcgYSBsaW5rIGdvaW5nIHRvIGB0b2AsIHNob3cgdGhlIE9ic2lkaWFuIGhvdmVyLXByZXZpZXcgb2YgdGhhdCBub3RlLlxyXG4gKlxyXG4gKiBZb3UgcHJvYmFibHkgaGF2ZSB0byBob2xkIGRvd24gYEN0cmxgIHdoZW4gaG92ZXJpbmcgdGhlIGxpbmsgZm9yIHRoZSBwcmV2aWV3IHRvIGFwcGVhciFcclxuICogQHBhcmFtICB7TW91c2VFdmVudH0gZXZlbnRcclxuICogQHBhcmFtICB7WW91clZpZXd9IHZpZXcgVGhlIHZpZXcgd2l0aCB0aGUgbGluayBiZWluZyBob3ZlcmVkXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gdG8gVGhlIGJhc2VuYW1lIG9mIHRoZSBub3RlIHRvIHByZXZpZXcuXHJcbiAqIEB0ZW1wbGF0ZSBZb3VyVmlldyBUaGUgVmlld1R5cGUgb2YgeW91ciB2aWV3XHJcbiAqIEByZXR1cm5zIHZvaWRcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBob3ZlclByZXZpZXcoZXZlbnQsIHZpZXcsIHRvKSB7XHJcbiAgICBjb25zdCB0YXJnZXRFbCA9IGV2ZW50LnRhcmdldDtcclxuICAgIGFwcC53b3Jrc3BhY2UudHJpZ2dlcihcImhvdmVyLWxpbmtcIiwge1xyXG4gICAgICAgIGV2ZW50LFxyXG4gICAgICAgIHNvdXJjZTogdmlldy5nZXRWaWV3VHlwZSgpLFxyXG4gICAgICAgIGhvdmVyUGFyZW50OiB2aWV3LFxyXG4gICAgICAgIHRhcmdldEVsLFxyXG4gICAgICAgIGxpbmt0ZXh0OiB0byxcclxuICAgIH0pO1xyXG59XHJcbi8qKlxyXG4gKiBDcmVhdGUgYSBuZXcgbWFya2Rvd24gbm90ZSBuYW1lZCBgbmV3TmFtZWAgaW4gdGhlIHVzZXIncyBwcmVmZmVyZWQgbmV3LW5vdGUtZm9sZGVyLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IG5ld05hbWUgTmFtZSBvZiBuZXcgbm90ZSAod2l0aCBvciB3aXRob3V0ICcubWQnKVxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IFtjdXJyRmlsZVBhdGg9XCJcIl0gRmlsZSBwYXRoIG9mIHRoZSBjdXJyZW50IG5vdGUuIFVzZSBhbiBlbXB0eSBzdHJpbmcgaWYgdGhlcmUgaXMgbm8gYWN0aXZlIGZpbGUuXHJcbiAqIEByZXR1cm5zIHtQcm9taXNlPFRGaWxlPn0gbmV3IFRGaWxlXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlTmV3TUROb3RlKG5ld05hbWUsIGN1cnJGaWxlUGF0aCA9IFwiXCIpIHtcclxuICAgIGNvbnN0IG5ld0ZpbGVGb2xkZXIgPSBhcHAuZmlsZU1hbmFnZXIuZ2V0TmV3RmlsZVBhcmVudChjdXJyRmlsZVBhdGgpLnBhdGg7XHJcbiAgICBjb25zdCBuZXdGaWxlUGF0aCA9IG5vcm1hbGl6ZVBhdGgoYCR7bmV3RmlsZUZvbGRlcn0ke25ld0ZpbGVGb2xkZXIgPT09IFwiL1wiID8gXCJcIiA6IFwiL1wifSR7YWRkTUQobmV3TmFtZSl9YCk7XHJcbiAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZShuZXdGaWxlUGF0aCwgXCJcIik7XHJcbn1cclxuLyoqXHJcbiAqIEFkZCAnLm1kJyB0byBgbm90ZU5hbWVgIGlmIGl0IGlzbid0IGFscmVhZHkgdGhlcmUuXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gbm90ZU5hbWUgd2l0aCBvciB3aXRob3V0ICcubWQnIG9uIHRoZSBlbmQuXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IG5vdGVOYW1lIHdpdGggJy5tZCcgb24gdGhlIGVuZC5cclxuICovXHJcbmV4cG9ydCBjb25zdCBhZGRNRCA9IChub3RlTmFtZSkgPT4ge1xyXG4gICAgcmV0dXJuIG5vdGVOYW1lLm1hdGNoKC9cXC5NRCR8XFwubWQkL20pID8gbm90ZU5hbWUgOiBub3RlTmFtZSArIFwiLm1kXCI7XHJcbn07XHJcbi8qKlxyXG4gKiBTdHJpcCAnLm1kJyBvZmYgdGhlIGVuZCBvZiBhIG5vdGUgbmFtZSB0byBnZXQgaXRzIGJhc2VuYW1lLlxyXG4gKlxyXG4gKiBXb3JrcyB3aXRoIHRoZSBlZGdlY2FzZSB3aGVyZSBhIG5vdGUgaGFzICcubWQnIGluIGl0cyBiYXNlbmFtZTogYE9ic2lkaWFuLm1kLm1kYCwgZm9yIGV4YW1wbGUuXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gbm90ZU5hbWUgd2l0aCBvciB3aXRob3V0ICcubWQnIG9uIHRoZSBlbmQuXHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IG5vdGVOYW1lIHdpdGhvdXQgJy5tZCdcclxuICovXHJcbmV4cG9ydCBjb25zdCBzdHJpcE1EID0gKG5vdGVOYW1lKSA9PiB7XHJcbiAgICBpZiAobm90ZU5hbWUubWF0Y2goL1xcLk1EJHxcXC5tZCQvbSkpIHtcclxuICAgICAgICByZXR1cm4gbm90ZU5hbWUuc3BsaXQoL1xcLk1EJHxcXC5tZCQvbSkuc2xpY2UoMCwgLTEpLmpvaW4oXCIubWRcIik7XHJcbiAgICB9XHJcbiAgICBlbHNlXHJcbiAgICAgICAgcmV0dXJuIG5vdGVOYW1lO1xyXG59O1xyXG4vKipcclxuICogV2hlbiBjbGlja2luZyBhIGxpbmssIGNoZWNrIGlmIHRoYXQgbm90ZSBpcyBhbHJlYWR5IG9wZW4gaW4gYW5vdGhlciBsZWFmLCBhbmQgc3dpdGNoIHRvIHRoYXQgbGVhZiwgaWYgc28uIE90aGVyd2lzZSwgb3BlbiB0aGUgbm90ZSBpbiBhIG5ldyBwYW5lLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGRlc3QgTmFtZSBvZiBub3RlIHRvIG9wZW4uIElmIHlvdSB3YW50IHRvIG9wZW4gYSBub24tbWQgbm90ZSwgYmUgc3VyZSB0byBhZGQgdGhlIGZpbGUgZXh0ZW5zaW9uLlxyXG4gKiBAcGFyYW0gIHtNb3VzZUV2ZW50fSBldmVudFxyXG4gKiBAcGFyYW0gIHt7Y3JlYXRlTmV3RmlsZTpib29sZWFufX0gW29wdGlvbnM9e2NyZWF0ZU5ld0ZpbGU6dHJ1ZX1dIFdoZXRoZXIgb3Igbm90IHRvIGNyZWF0ZSBgZGVzdGAgZmlsZSBpZiBpdCBkb2Vzbid0IGV4aXN0LiBJZiBgZmFsc2VgLCBzaW1wbHkgcmV0dXJuIGZyb20gdGhlIGZ1bmN0aW9uLlxyXG4gKiBAcmV0dXJucyBQcm9taXNlXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gb3Blbk9yU3dpdGNoKGRlc3QsIGV2ZW50LCBvcHRpb25zID0geyBjcmVhdGVOZXdGaWxlOiB0cnVlIH0pIHtcclxuICAgIGNvbnN0IHsgd29ya3NwYWNlIH0gPSBhcHA7XHJcbiAgICBsZXQgZGVzdEZpbGUgPSBhcHAubWV0YWRhdGFDYWNoZS5nZXRGaXJzdExpbmtwYXRoRGVzdChkZXN0LCBcIlwiKTtcclxuICAgIC8vIElmIGRlc3QgZG9lc24ndCBleGlzdCwgbWFrZSBpdFxyXG4gICAgaWYgKCFkZXN0RmlsZSAmJiBvcHRpb25zLmNyZWF0ZU5ld0ZpbGUpIHtcclxuICAgICAgICBkZXN0RmlsZSA9IGF3YWl0IGNyZWF0ZU5ld01ETm90ZShkZXN0KTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKCFkZXN0RmlsZSAmJiAhb3B0aW9ucy5jcmVhdGVOZXdGaWxlKVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIC8vIENoZWNrIGlmIGl0J3MgYWxyZWFkeSBvcGVuXHJcbiAgICBjb25zdCBsZWF2ZXNXaXRoRGVzdEFscmVhZHlPcGVuID0gW107XHJcbiAgICAvLyBGb3IgYWxsIG9wZW4gbGVhdmVzLCBpZiB0aGUgbGVhdmUncyBiYXNlbmFtZSBpcyBlcXVhbCB0byB0aGUgbGluayBkZXN0aW5hdGlvbiwgcmF0aGVyIGFjdGl2YXRlIHRoYXQgbGVhZiBpbnN0ZWFkIG9mIG9wZW5pbmcgaXQgaW4gdHdvIHBhbmVzXHJcbiAgICB3b3Jrc3BhY2UuaXRlcmF0ZUFsbExlYXZlcygobGVhZikgPT4ge1xyXG4gICAgICAgIHZhciBfYTtcclxuICAgICAgICBpZiAobGVhZi52aWV3IGluc3RhbmNlb2YgTWFya2Rvd25WaWV3KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGUgPSAoX2EgPSBsZWFmLnZpZXcpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5maWxlO1xyXG4gICAgICAgICAgICBpZiAoZmlsZSAmJiBmaWxlLmJhc2VuYW1lICsgXCIuXCIgKyBmaWxlLmV4dGVuc2lvbiA9PT0gZGVzdCkge1xyXG4gICAgICAgICAgICAgICAgbGVhdmVzV2l0aERlc3RBbHJlYWR5T3Blbi5wdXNoKGxlYWYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyBSYXRoZXIgc3dpdGNoIHRvIGl0IGlmIGl0IGlzIG9wZW5cclxuICAgIGlmIChsZWF2ZXNXaXRoRGVzdEFscmVhZHlPcGVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB3b3Jrc3BhY2Uuc2V0QWN0aXZlTGVhZihsZWF2ZXNXaXRoRGVzdEFscmVhZHlPcGVuWzBdKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICBjb25zdCBtb2RlID0gYXBwLnZhdWx0LmdldENvbmZpZyhcImRlZmF1bHRWaWV3TW9kZVwiKTtcclxuICAgICAgICBjb25zdCBsZWFmID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5nZXRNb2RpZmllclN0YXRlKFwiTWV0YVwiKVxyXG4gICAgICAgICAgICA/IHdvcmtzcGFjZS5zcGxpdEFjdGl2ZUxlYWYoKVxyXG4gICAgICAgICAgICA6IHdvcmtzcGFjZS5nZXRVbnBpbm5lZExlYWYoKTtcclxuICAgICAgICAvL0B0cy1leHBlY3QtZXJyb3JcclxuICAgICAgICBhd2FpdCBsZWFmLm9wZW5GaWxlKGRlc3RGaWxlLCB7IGFjdGl2ZTogdHJ1ZSwgbW9kZSB9KTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogR2l2ZW4gYSBsaXN0IG9mIHJlc29sdmVkIGxpbmtzIGZyb20gYXBwLm1ldGFkYXRhQ2FjaGUsIGNoZWNrIGlmIGBmcm9tYCBoYXMgYSBsaW5rIHRvIGB0b2BcclxuICogQHBhcmFtICB7UmVzb2x2ZWRMaW5rc30gcmVzb2x2ZWRMaW5rc1xyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGZyb20gTm90ZSBuYW1lIHdpdGggbGluayBsZWF2aW5nIChXaXRoIG9yIHdpdGhvdXQgJy5tZCcpXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gdG8gTm90ZSBuYW1lIHdpdGggbGluayBhcnJpdmluZyAoV2l0aCBvciB3aXRob3V0ICcubWQnKVxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtkaXJlY3RlZD10cnVlXSBPbmx5IGNoZWNrIGlmIGBmcm9tYCBoYXMgYSBsaW5rIHRvIGB0b2AuIElmIG5vdCBkaXJlY3RlZCwgY2hlY2sgaW4gYm90aCBkaXJlY3Rpb25zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNMaW5rZWQocmVzb2x2ZWRMaW5rcywgZnJvbSwgdG8sIGRpcmVjdGVkID0gdHJ1ZSkge1xyXG4gICAgdmFyIF9hLCBfYjtcclxuICAgIGZyb20gPSBhZGRNRChmcm9tKTtcclxuICAgIHRvID0gYWRkTUQodG8pO1xyXG4gICAgY29uc3QgZnJvbVRvID0gKF9hID0gcmVzb2x2ZWRMaW5rc1tmcm9tXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmhhc093blByb3BlcnR5KHRvKTtcclxuICAgIGlmICghZnJvbVRvICYmICFkaXJlY3RlZCkge1xyXG4gICAgICAgIGNvbnN0IHRvRnJvbSA9IChfYiA9IHJlc29sdmVkTGlua3NbdG9dKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuaGFzT3duUHJvcGVydHkoZnJvbSk7XHJcbiAgICAgICAgcmV0dXJuIHRvRnJvbTtcclxuICAgIH1cclxuICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gZnJvbVRvO1xyXG59XHJcbi8qKlxyXG4gKiBDaGVjayBpZiB0aGUgbGluayBgZnJvbWAg4oaSIGB0b2AgaXMgcmVzb2x2ZWQgb3Igbm90LlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHRvXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gZnJvbVxyXG4gKiBAcmV0dXJucyBib29sZWFuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaXNSZXNvbHZlZCh0bywgZnJvbSkge1xyXG4gICAgdmFyIF9hO1xyXG4gICAgY29uc3QgeyByZXNvbHZlZExpbmtzIH0gPSBhcHAubWV0YWRhdGFDYWNoZTtcclxuICAgIHJldHVybiAoKF9hID0gcmVzb2x2ZWRMaW5rcyA9PT0gbnVsbCB8fCByZXNvbHZlZExpbmtzID09PSB2b2lkIDAgPyB2b2lkIDAgOiByZXNvbHZlZExpbmtzW2FkZE1EKGZyb20pXSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hW2FkZE1EKHRvKV0pID4gMDtcclxufVxyXG4vKipcclxuICogT3BlbiB5b3VyIHZpZXcgb24gdGhlIGNob3NlbiBgc2lkZWAgaWYgaXQgaXNuJ3QgYWxyZWFkeSBvcGVuXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gdmlld1R5cGVcclxuICogQHBhcmFtICB7Q29uc3RydWN0b3I8WW91clZpZXc+fSB2aWV3Q2xhc3MgVGhlIGNsYXNzIGNvbnN0cnVjdG9yIG9mIHlvdXIgdmlld1xyXG4gKiBAcGFyYW0gIHtcImxlZnRcInxcInJpZ2h0XCJ9IFtzaWRlPVwicmlnaHRcIl1cclxuICogQHJldHVybnMge1Byb21pc2U8WW91clZpZXc+fSBUaGUgb3BlbmVkIHZpZXdcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuVmlldyh2aWV3VHlwZSwgdmlld0NsYXNzLCBzaWRlID0gXCJyaWdodFwiKSB7XHJcbiAgICBsZXQgbGVhZiA9IG51bGw7XHJcbiAgICBmb3IgKGxlYWYgb2YgYXBwLndvcmtzcGFjZS5nZXRMZWF2ZXNPZlR5cGUodmlld1R5cGUpKSB7XHJcbiAgICAgICAgaWYgKGxlYWYudmlldyBpbnN0YW5jZW9mIHZpZXdDbGFzcykge1xyXG4gICAgICAgICAgICByZXR1cm4gbGVhZi52aWV3O1xyXG4gICAgICAgIH1cclxuICAgICAgICBhd2FpdCBsZWFmLnNldFZpZXdTdGF0ZSh7IHR5cGU6IFwiZW1wdHlcIiB9KTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGxlYWYgPVxyXG4gICAgICAgIChsZWFmICE9PSBudWxsICYmIGxlYWYgIT09IHZvaWQgMCA/IGxlYWYgOiBzaWRlID09PSBcInJpZ2h0XCIpXHJcbiAgICAgICAgICAgID8gYXBwLndvcmtzcGFjZS5nZXRSaWdodExlYWYoZmFsc2UpXHJcbiAgICAgICAgICAgIDogYXBwLndvcmtzcGFjZS5nZXRMZWZ0TGVhZihmYWxzZSk7XHJcbiAgICBhd2FpdCBsZWFmLnNldFZpZXdTdGF0ZSh7XHJcbiAgICAgICAgdHlwZTogdmlld1R5cGUsXHJcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbGVhZi52aWV3O1xyXG59XHJcbi8qKlxyXG4gKiBDaGVjayB3aGljaCBzaWRlIG9mIHRoZSB3b3Jrc3BhY2UgeW91ciBgdmlld1R5cGVgIGlzIG9uLCBhbmQgc2F2ZSBpdCBpbnRvIGBwbHVnaW4uc2V0dGluZ3Nbc2V0dGluZ05hbWVdYC5cclxuICpcclxuICogKipUaXAqKjogUnVuIHRoaXMgZnVuY3Rpb24gb24gYHBsdWdpbi51bmxvYWRgIHRvIHNhdmUgdGhlIGxhc3Qgc2lkZSB5b3VyIHZpZXcgd2FzIG9uIHdoZW4gY2xvc2luZywgdGhlbiB7QGxpbmsgb3BlblZpZXd9IG9uIHRoZSBzYW1lIHNpZGUgaXQgd2FzIGxhc3QuXHJcbiAqIEBwYXJhbSAge1lvdXJQbHVnaW59IHBsdWdpblxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IHZpZXdUeXBlXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gc2V0dGluZ05hbWVcclxuICogQHJldHVybnMge1wibGVmdFwiIHwgXCJyaWdodFwifSBgc2lkZWBcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzYXZlVmlld1NpZGUocGx1Z2luLCB2aWV3VHlwZSwgc2V0dGluZ05hbWUpIHtcclxuICAgIGNvbnN0IGxlYWYgPSBhcHAud29ya3NwYWNlLmdldExlYXZlc09mVHlwZSh2aWV3VHlwZSlbMF07XHJcbiAgICBpZiAoIWxlYWYpIHtcclxuICAgICAgICBjb25zb2xlLmluZm8oYE9ic2lkaWFuLUNvbW11bml0eS1MaWI6IE5vIGluc3RhbmNlIG9mICcke3ZpZXdUeXBlfScgb3BlbiwgY2Fubm90IHNhdmUgc2lkZWApO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgY29uc3Qgc2lkZSA9IGxlYWYuZ2V0Um9vdCgpLnNpZGU7XHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHBsdWdpbi5zZXR0aW5nc1tzZXR0aW5nTmFtZV0gPSBzaWRlO1xyXG4gICAgLy9AdHMtaWdub3JlXHJcbiAgICBhd2FpdCBwbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICByZXR1cm4gc2lkZTtcclxufVxyXG4vKipcclxuICogQSBNb2RhbCB1c2VkIGluIHtAbGluayBhZGRSZW5kZXJlZE1hcmtkb3duQnV0dG9ufSB0byBkaXNwbGF5IHJlbmRlcmVkIG1hcmtkb3duIGZyb20gYSByYXcgc3RyaW5nLCBvciBmZXRjaGVkIGZyb20gYSBwcm92aWRlZCB1cmwuXHJcbiAqXHJcbiAqICFbXShodHRwczovL2kuaW1ndXIuY29tL05Nd001MEUucG5nKVxyXG4gKiBAcGFyYW0gIHtZb3VyUGx1Z2lufSBwbHVnaW5cclxuICogQHBhcmFtICB7c3RyaW5nfSBzb3VyY2UgUmF3IG1hcmtkb3duIGNvbnRlbnQgb3IgdXJsIHRvIGZpbmQgcmF3IG1hcmtkb3duLlxyXG4gKiBAcGFyYW0gIHtib29sZWFufSBmZXRjaCBUcnVlIOKGkiBmZXRjaCBtYXJrZG93biBmcm9tIGBzb3VyY2VgIGFzIHVybC4gRmFsc2Ug4oaSIGBzb3VyY2VgIGlzIGFscmVhZHkgYSBtYXJrZG93biBzdHJpbmcuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgUmVuZGVyZWRNYXJrZG93bk1vZGFsIGV4dGVuZHMgTW9kYWwge1xyXG4gICAgY29uc3RydWN0b3IocGx1Z2luLCBzb3VyY2UsIGZldGNoKSB7XHJcbiAgICAgICAgc3VwZXIoYXBwKTtcclxuICAgICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcclxuICAgICAgICB0aGlzLnNvdXJjZSA9IHNvdXJjZTtcclxuICAgICAgICB0aGlzLmZldGNoID0gZmV0Y2g7XHJcbiAgICB9XHJcbiAgICBhc3luYyBvbk9wZW4oKSB7XHJcbiAgICAgICAgbGV0IHsgY29udGVudEVsLCBzb3VyY2UsIHBsdWdpbiwgZmV0Y2ggfSA9IHRoaXM7XHJcbiAgICAgICAgbGV0IGNvbnRlbnQgPSBzb3VyY2U7XHJcbiAgICAgICAgaWYgKGZldGNoKSB7XHJcbiAgICAgICAgICAgIGNvbnRlbnRFbC5jcmVhdGVEaXYoeyB0ZXh0OiBgV2FpdGluZyBmb3IgY29udGVudCBmcm9tOiAnJHtzb3VyY2V9J2AgfSk7XHJcbiAgICAgICAgICAgIGNvbnRlbnQgPSBhd2FpdCByZXF1ZXN0KHsgdXJsOiBzb3VyY2UgfSk7XHJcbiAgICAgICAgICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBsb2dEaXYgPSBjb250ZW50RWwuY3JlYXRlRGl2KHsgY2xzOiBcIk9DTC1SZW5kZXJlZE1hcmtkb3duTW9kYWxcIiB9KTtcclxuICAgICAgICBNYXJrZG93blJlbmRlcmVyLnJlbmRlck1hcmtkb3duKGNvbnRlbnQsIGxvZ0RpdiwgXCJcIiwgcGx1Z2luKTtcclxuICAgIH1cclxuICAgIG9uQ2xvc2UoKSB7XHJcbiAgICAgICAgdGhpcy5jb250ZW50RWwuZW1wdHkoKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogQWRkIGEgYnV0dG9uIHRvIGFuIEhUTUxFTGVtZW50LCB3aGljaCwgd2hlbiBjbGlja2VkLCBwb3BzIHVwIGEge0BsaW5rIFJlbmRlcmVkTWFya2Rvd25Nb2RhbH0gc2hvd2luZyByZW5kZXJlZCBtYXJrZG93bi5cclxuICpcclxuICogVXNlIGBmZXRjaGAgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgbWFya2Rvd24gc3RyaW5nIG5lZWRzIHRvIGJlIGZldGNoZWQsIG9yIGlmIGl0IGhhcyBiZWVuIHByb3ZpZGVkIGFzIGEgc3RyaW5nIGFscmVhZHkuXHJcbiAqXHJcbiAqICFbXShodHRwczovL2kuaW1ndXIuY29tL0hpNGd5eXYucG5nKVxyXG4gKiBAcGFyYW0gIHtZb3VyUGx1Z2lufSBwbHVnaW5cclxuICogQHBhcmFtICB7SFRNTEVsZW1lbnR9IGNvbnRhaW5lckVsIEhUTUxFbGVtZW50IHRvIGFkZCB0aGUgYnV0dG9uIHRvXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gc291cmNlIFJhdyBtYXJrZG93biBjb250ZW50IG9yIHVybCB0byBmaW5kIHJhdyBtYXJrZG93bi5cclxuICogQHBhcmFtICB7Ym9vbGVhbn0gZmV0Y2ggVHJ1ZSDihpIgZmV0Y2ggbWFya2Rvd24gZnJvbSBgc291cmNlYCBhcyB1cmwuIEZhbHNlIOKGkiBgc291cmNlYCBpcyBhbHJlYWR5IGEgbWFya2Rvd24gc3RyaW5nLlxyXG4gKiBAcGFyYW0gIHtzdHJpbmd9IGRpc3BsYXlUZXh0IFRleHQgdG8gZGlzcGxheSBpbiB0aGUgYnV0dG9uLlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGFkZFJlbmRlcmVkTWFya2Rvd25CdXR0b24ocGx1Z2luLCBjb250YWluZXJFbCwgc291cmNlLCBmZXRjaCwgZGlzcGxheVRleHQpIHtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKFwiYnV0dG9uXCIsIHsgdGV4dDogZGlzcGxheVRleHQgfSwgKGJ1dCkgPT4gYnV0Lm9uQ2xpY2tFdmVudCgoKSA9PiB7XHJcbiAgICAgICAgbmV3IFJlbmRlcmVkTWFya2Rvd25Nb2RhbChwbHVnaW4sIHNvdXJjZSwgZmV0Y2gpLm9wZW4oKTtcclxuICAgIH0pKTtcclxufVxyXG4vKipcclxuICogQ2hlY2sgaWYgYGFwcC5tZXRhZGF0YUNhY2hlLlJlc29sdmVkTGlua3NgIGhhdmUgZnVsbHkgaW5pdGFsaXNlZC5cclxuICpcclxuICogVXNlZCB3aXRoIHtAbGluayB3YWl0Rm9yUmVzb2x2ZWRMaW5rc30uXHJcbiAqIEBwYXJhbSAge251bWJlcn0gbm9GaWxlcyBOdW1iZXIgb2YgZmlsZXMgaW4geW91ciB2YXVsdC5cclxuICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZWRMaW5rc0NvbXBsZXRlKG5vRmlsZXMpIHtcclxuICAgIGNvbnN0IHsgcmVzb2x2ZWRMaW5rcyB9ID0gYXBwLm1ldGFkYXRhQ2FjaGU7XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocmVzb2x2ZWRMaW5rcykubGVuZ3RoID09PSBub0ZpbGVzO1xyXG59XHJcbi8qKlxyXG4gKiBXYWl0IGZvciBgYXBwLm1ldGFkYXRhQ2FjaGUuUmVzb2x2ZWRMaW5rc2AgdG8gaGF2ZSBmdWxseSBpbml0aWFsaXNlZC5cclxuICogQHBhcmFtICB7bnVtYmVyfSBbZGVsYXk9MTAwMF0gTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJldHdlZW4gZWFjaCBjaGVjay5cclxuICogQHBhcmFtIHtudW1iZXJ9IFttYXg9NTBdIE1heGltdW0gbnVtYmVyIG9mIGl0ZXJhdGlvbnMgdG8gY2hlY2sgYmVmb3JlIHRocm93aW5nIGFuIGVycm9yIGFuZCBicmVha2luZyBvdXQgb2YgdGhlIGxvb3AuXHJcbiAqL1xyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gd2FpdEZvclJlc29sdmVkTGlua3MoZGVsYXkgPSAxMDAwLCBtYXggPSA1MCkge1xyXG4gICAgY29uc3Qgbm9GaWxlcyA9IGFwcC52YXVsdC5nZXRNYXJrZG93bkZpbGVzKCkubGVuZ3RoO1xyXG4gICAgbGV0IGkgPSAwO1xyXG4gICAgd2hpbGUgKCFyZXNvbHZlZExpbmtzQ29tcGxldGUobm9GaWxlcykgJiYgaSA8IG1heCkge1xyXG4gICAgICAgIGF3YWl0IHdhaXQoZGVsYXkpO1xyXG4gICAgICAgIGkrKztcclxuICAgIH1cclxuICAgIGlmIChpID09PSBtYXgpIHtcclxuICAgICAgICB0aHJvdyBFcnJvcihcIk9ic2lkaWFuLUNvbW11bml0eS1MaWI6IFJlc29sdmVkTGlua3MgZGlkIG5vdCBmaW5pc2ggaW5pdGlhbGlzaW5nLiBgbWF4YCBpdGVyYXRpb25zIHdhcyByZWFjaGVkIGZpcnN0LlwiKTtcclxuICAgIH1cclxufVxyXG4vKipcclxuICogQ2hlY2sgaWYgdGhlIGNvbnRlbnQgb2YgYSBub3RlIGhhcyBZQU1MLiBJZiBzbywgcmV0dXJuIGFuIGFycmF5IG9mIHRoZSBZQU1MIGFuZCB0aGUgcmVzdCBvZiB0aGUgbm90ZS4gSWYgbm90LCByZXR1cm4gYFsnJywgY29udGVudF1gXHJcbiAqIEBwYXJhbSAge3N0cmluZ30gY29udGVudFxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0QXRZYW1sKGNvbnRlbnQpIHtcclxuICAgIGlmICghL14tLS1cXG4vLnRlc3QoY29udGVudCkpXHJcbiAgICAgICAgcmV0dXJuIFtcIlwiLCBjb250ZW50XTtcclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IHNwbGl0cyA9IGNvbnRlbnQuc3BsaXQoXCItLS1cIik7XHJcbiAgICAgICAgcmV0dXJuIFtcclxuICAgICAgICAgICAgc3BsaXRzLnNsaWNlKDAsIDIpLmpvaW4oXCItLS1cIikgKyBcIi0tLVwiLFxyXG4gICAgICAgICAgICBzcGxpdHMuc2xpY2UoMikuam9pbihcIi0tLVwiKSxcclxuICAgICAgICBdO1xyXG4gICAgfVxyXG59XHJcbi8qKlxyXG4gKlxyXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGNhY2hlZCBSZXR1cm4gY2FjaGVkIGZpbGUgY29udGVudCAqKm9yKiogcmV0dXJuIHdoYXQncyBvbiBkaXNrLlxyXG4gKiBAcmV0dXJuc1xyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEFjdGl2ZUZpbGVDb250ZW50KGNhY2hlZCA9IHRydWUpIHtcclxuICAgIGNvbnN0IGN1cnJGaWxlID0gYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XHJcbiAgICBpZiAoIShjdXJyRmlsZSBpbnN0YW5jZW9mIFRGaWxlKSlcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIGlmIChjYWNoZWQpXHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IGFwcC52YXVsdC5jYWNoZWRSZWFkKGN1cnJGaWxlKTtcclxuICAgIGVsc2VcclxuICAgICAgICByZXR1cm4gYXdhaXQgYXBwLnZhdWx0LnJlYWQoY3VyckZpbGUpO1xyXG59XHJcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcblxudmFyIG9ic2lkaWFuID0gcmVxdWlyZSgnb2JzaWRpYW4nKTtcblxuY29uc3QgREVGQVVMVF9EQUlMWV9OT1RFX0ZPUk1BVCA9IFwiWVlZWS1NTS1ERFwiO1xuY29uc3QgREVGQVVMVF9XRUVLTFlfTk9URV9GT1JNQVQgPSBcImdnZ2ctW1ddd3dcIjtcbmNvbnN0IERFRkFVTFRfTU9OVEhMWV9OT1RFX0ZPUk1BVCA9IFwiWVlZWS1NTVwiO1xuY29uc3QgREVGQVVMVF9RVUFSVEVSTFlfTk9URV9GT1JNQVQgPSBcIllZWVktW1FdUVwiO1xuY29uc3QgREVGQVVMVF9ZRUFSTFlfTk9URV9GT1JNQVQgPSBcIllZWVlcIjtcblxuZnVuY3Rpb24gc2hvdWxkVXNlUGVyaW9kaWNOb3Rlc1NldHRpbmdzKHBlcmlvZGljaXR5KSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwZXJpb2RpY05vdGVzID0gd2luZG93LmFwcC5wbHVnaW5zLmdldFBsdWdpbihcInBlcmlvZGljLW5vdGVzXCIpO1xuICAgIHJldHVybiBwZXJpb2RpY05vdGVzICYmIHBlcmlvZGljTm90ZXMuc2V0dGluZ3M/LltwZXJpb2RpY2l0eV0/LmVuYWJsZWQ7XG59XG4vKipcbiAqIFJlYWQgdGhlIHVzZXIgc2V0dGluZ3MgZm9yIHRoZSBgZGFpbHktbm90ZXNgIHBsdWdpblxuICogdG8ga2VlcCBiZWhhdmlvciBvZiBjcmVhdGluZyBhIG5ldyBub3RlIGluLXN5bmMuXG4gKi9cbmZ1bmN0aW9uIGdldERhaWx5Tm90ZVNldHRpbmdzKCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IHsgaW50ZXJuYWxQbHVnaW5zLCBwbHVnaW5zIH0gPSB3aW5kb3cuYXBwO1xuICAgICAgICBpZiAoc2hvdWxkVXNlUGVyaW9kaWNOb3Rlc1NldHRpbmdzKFwiZGFpbHlcIikpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZm9ybWF0LCBmb2xkZXIsIHRlbXBsYXRlIH0gPSBwbHVnaW5zLmdldFBsdWdpbihcInBlcmlvZGljLW5vdGVzXCIpPy5zZXR0aW5ncz8uZGFpbHkgfHwge307XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0IHx8IERFRkFVTFRfREFJTFlfTk9URV9GT1JNQVQsXG4gICAgICAgICAgICAgICAgZm9sZGVyOiBmb2xkZXI/LnRyaW0oKSB8fCBcIlwiLFxuICAgICAgICAgICAgICAgIHRlbXBsYXRlOiB0ZW1wbGF0ZT8udHJpbSgpIHx8IFwiXCIsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHsgZm9sZGVyLCBmb3JtYXQsIHRlbXBsYXRlIH0gPSBpbnRlcm5hbFBsdWdpbnMuZ2V0UGx1Z2luQnlJZChcImRhaWx5LW5vdGVzXCIpPy5pbnN0YW5jZT8ub3B0aW9ucyB8fCB7fTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZvcm1hdDogZm9ybWF0IHx8IERFRkFVTFRfREFJTFlfTk9URV9GT1JNQVQsXG4gICAgICAgICAgICBmb2xkZXI6IGZvbGRlcj8udHJpbSgpIHx8IFwiXCIsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogdGVtcGxhdGU/LnRyaW0oKSB8fCBcIlwiLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIk5vIGN1c3RvbSBkYWlseSBub3RlIHNldHRpbmdzIGZvdW5kIVwiLCBlcnIpO1xuICAgIH1cbn1cbi8qKlxuICogUmVhZCB0aGUgdXNlciBzZXR0aW5ncyBmb3IgdGhlIGB3ZWVrbHktbm90ZXNgIHBsdWdpblxuICogdG8ga2VlcCBiZWhhdmlvciBvZiBjcmVhdGluZyBhIG5ldyBub3RlIGluLXN5bmMuXG4gKi9cbmZ1bmN0aW9uIGdldFdlZWtseU5vdGVTZXR0aW5ncygpIHtcbiAgICB0cnkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBwbHVnaW5NYW5hZ2VyID0gd2luZG93LmFwcC5wbHVnaW5zO1xuICAgICAgICBjb25zdCBjYWxlbmRhclNldHRpbmdzID0gcGx1Z2luTWFuYWdlci5nZXRQbHVnaW4oXCJjYWxlbmRhclwiKT8ub3B0aW9ucztcbiAgICAgICAgY29uc3QgcGVyaW9kaWNOb3Rlc1NldHRpbmdzID0gcGx1Z2luTWFuYWdlci5nZXRQbHVnaW4oXCJwZXJpb2RpYy1ub3Rlc1wiKT8uc2V0dGluZ3M/LndlZWtseTtcbiAgICAgICAgaWYgKHNob3VsZFVzZVBlcmlvZGljTm90ZXNTZXR0aW5ncyhcIndlZWtseVwiKSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBmb3JtYXQ6IHBlcmlvZGljTm90ZXNTZXR0aW5ncy5mb3JtYXQgfHwgREVGQVVMVF9XRUVLTFlfTk9URV9GT1JNQVQsXG4gICAgICAgICAgICAgICAgZm9sZGVyOiBwZXJpb2RpY05vdGVzU2V0dGluZ3MuZm9sZGVyPy50cmltKCkgfHwgXCJcIixcbiAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogcGVyaW9kaWNOb3Rlc1NldHRpbmdzLnRlbXBsYXRlPy50cmltKCkgfHwgXCJcIixcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSBjYWxlbmRhclNldHRpbmdzIHx8IHt9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybWF0OiBzZXR0aW5ncy53ZWVrbHlOb3RlRm9ybWF0IHx8IERFRkFVTFRfV0VFS0xZX05PVEVfRk9STUFULFxuICAgICAgICAgICAgZm9sZGVyOiBzZXR0aW5ncy53ZWVrbHlOb3RlRm9sZGVyPy50cmltKCkgfHwgXCJcIixcbiAgICAgICAgICAgIHRlbXBsYXRlOiBzZXR0aW5ncy53ZWVrbHlOb3RlVGVtcGxhdGU/LnRyaW0oKSB8fCBcIlwiLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIk5vIGN1c3RvbSB3ZWVrbHkgbm90ZSBzZXR0aW5ncyBmb3VuZCFcIiwgZXJyKTtcbiAgICB9XG59XG4vKipcbiAqIFJlYWQgdGhlIHVzZXIgc2V0dGluZ3MgZm9yIHRoZSBgcGVyaW9kaWMtbm90ZXNgIHBsdWdpblxuICogdG8ga2VlcCBiZWhhdmlvciBvZiBjcmVhdGluZyBhIG5ldyBub3RlIGluLXN5bmMuXG4gKi9cbmZ1bmN0aW9uIGdldE1vbnRobHlOb3RlU2V0dGluZ3MoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwbHVnaW5NYW5hZ2VyID0gd2luZG93LmFwcC5wbHVnaW5zO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gKHNob3VsZFVzZVBlcmlvZGljTm90ZXNTZXR0aW5ncyhcIm1vbnRobHlcIikgJiZcbiAgICAgICAgICAgIHBsdWdpbk1hbmFnZXIuZ2V0UGx1Z2luKFwicGVyaW9kaWMtbm90ZXNcIik/LnNldHRpbmdzPy5tb250aGx5KSB8fFxuICAgICAgICAgICAge307XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmb3JtYXQ6IHNldHRpbmdzLmZvcm1hdCB8fCBERUZBVUxUX01PTlRITFlfTk9URV9GT1JNQVQsXG4gICAgICAgICAgICBmb2xkZXI6IHNldHRpbmdzLmZvbGRlcj8udHJpbSgpIHx8IFwiXCIsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogc2V0dGluZ3MudGVtcGxhdGU/LnRyaW0oKSB8fCBcIlwiLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIk5vIGN1c3RvbSBtb250aGx5IG5vdGUgc2V0dGluZ3MgZm91bmQhXCIsIGVycik7XG4gICAgfVxufVxuLyoqXG4gKiBSZWFkIHRoZSB1c2VyIHNldHRpbmdzIGZvciB0aGUgYHBlcmlvZGljLW5vdGVzYCBwbHVnaW5cbiAqIHRvIGtlZXAgYmVoYXZpb3Igb2YgY3JlYXRpbmcgYSBuZXcgbm90ZSBpbi1zeW5jLlxuICovXG5mdW5jdGlvbiBnZXRRdWFydGVybHlOb3RlU2V0dGluZ3MoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwbHVnaW5NYW5hZ2VyID0gd2luZG93LmFwcC5wbHVnaW5zO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gKHNob3VsZFVzZVBlcmlvZGljTm90ZXNTZXR0aW5ncyhcInF1YXJ0ZXJseVwiKSAmJlxuICAgICAgICAgICAgcGx1Z2luTWFuYWdlci5nZXRQbHVnaW4oXCJwZXJpb2RpYy1ub3Rlc1wiKT8uc2V0dGluZ3M/LnF1YXJ0ZXJseSkgfHxcbiAgICAgICAgICAgIHt9O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZm9ybWF0OiBzZXR0aW5ncy5mb3JtYXQgfHwgREVGQVVMVF9RVUFSVEVSTFlfTk9URV9GT1JNQVQsXG4gICAgICAgICAgICBmb2xkZXI6IHNldHRpbmdzLmZvbGRlcj8udHJpbSgpIHx8IFwiXCIsXG4gICAgICAgICAgICB0ZW1wbGF0ZTogc2V0dGluZ3MudGVtcGxhdGU/LnRyaW0oKSB8fCBcIlwiLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbyhcIk5vIGN1c3RvbSBxdWFydGVybHkgbm90ZSBzZXR0aW5ncyBmb3VuZCFcIiwgZXJyKTtcbiAgICB9XG59XG4vKipcbiAqIFJlYWQgdGhlIHVzZXIgc2V0dGluZ3MgZm9yIHRoZSBgcGVyaW9kaWMtbm90ZXNgIHBsdWdpblxuICogdG8ga2VlcCBiZWhhdmlvciBvZiBjcmVhdGluZyBhIG5ldyBub3RlIGluLXN5bmMuXG4gKi9cbmZ1bmN0aW9uIGdldFllYXJseU5vdGVTZXR0aW5ncygpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHBsdWdpbk1hbmFnZXIgPSB3aW5kb3cuYXBwLnBsdWdpbnM7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSAoc2hvdWxkVXNlUGVyaW9kaWNOb3Rlc1NldHRpbmdzKFwieWVhcmx5XCIpICYmXG4gICAgICAgICAgICBwbHVnaW5NYW5hZ2VyLmdldFBsdWdpbihcInBlcmlvZGljLW5vdGVzXCIpPy5zZXR0aW5ncz8ueWVhcmx5KSB8fFxuICAgICAgICAgICAge307XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBmb3JtYXQ6IHNldHRpbmdzLmZvcm1hdCB8fCBERUZBVUxUX1lFQVJMWV9OT1RFX0ZPUk1BVCxcbiAgICAgICAgICAgIGZvbGRlcjogc2V0dGluZ3MuZm9sZGVyPy50cmltKCkgfHwgXCJcIixcbiAgICAgICAgICAgIHRlbXBsYXRlOiBzZXR0aW5ncy50ZW1wbGF0ZT8udHJpbSgpIHx8IFwiXCIsXG4gICAgICAgIH07XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5pbmZvKFwiTm8gY3VzdG9tIHllYXJseSBub3RlIHNldHRpbmdzIGZvdW5kIVwiLCBlcnIpO1xuICAgIH1cbn1cblxuLy8gQ3JlZGl0OiBAY3JlYXRpb25peC9wYXRoLmpzXG5mdW5jdGlvbiBqb2luKC4uLnBhcnRTZWdtZW50cykge1xuICAgIC8vIFNwbGl0IHRoZSBpbnB1dHMgaW50byBhIGxpc3Qgb2YgcGF0aCBjb21tYW5kcy5cbiAgICBsZXQgcGFydHMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHBhcnRTZWdtZW50cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgcGFydHMgPSBwYXJ0cy5jb25jYXQocGFydFNlZ21lbnRzW2ldLnNwbGl0KFwiL1wiKSk7XG4gICAgfVxuICAgIC8vIEludGVycHJldCB0aGUgcGF0aCBjb21tYW5kcyB0byBnZXQgdGhlIG5ldyByZXNvbHZlZCBwYXRoLlxuICAgIGNvbnN0IG5ld1BhcnRzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBwYXJ0cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgY29uc3QgcGFydCA9IHBhcnRzW2ldO1xuICAgICAgICAvLyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2hlc1xuICAgICAgICAvLyBBbHNvIHJlbW92ZSBcIi5cIiBzZWdtZW50c1xuICAgICAgICBpZiAoIXBhcnQgfHwgcGFydCA9PT0gXCIuXCIpXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgLy8gUHVzaCBuZXcgcGF0aCBzZWdtZW50cy5cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgbmV3UGFydHMucHVzaChwYXJ0KTtcbiAgICB9XG4gICAgLy8gUHJlc2VydmUgdGhlIGluaXRpYWwgc2xhc2ggaWYgdGhlcmUgd2FzIG9uZS5cbiAgICBpZiAocGFydHNbMF0gPT09IFwiXCIpXG4gICAgICAgIG5ld1BhcnRzLnVuc2hpZnQoXCJcIik7XG4gICAgLy8gVHVybiBiYWNrIGludG8gYSBzaW5nbGUgc3RyaW5nIHBhdGguXG4gICAgcmV0dXJuIG5ld1BhcnRzLmpvaW4oXCIvXCIpO1xufVxuZnVuY3Rpb24gYmFzZW5hbWUoZnVsbFBhdGgpIHtcbiAgICBsZXQgYmFzZSA9IGZ1bGxQYXRoLnN1YnN0cmluZyhmdWxsUGF0aC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcbiAgICBpZiAoYmFzZS5sYXN0SW5kZXhPZihcIi5cIikgIT0gLTEpXG4gICAgICAgIGJhc2UgPSBiYXNlLnN1YnN0cmluZygwLCBiYXNlLmxhc3RJbmRleE9mKFwiLlwiKSk7XG4gICAgcmV0dXJuIGJhc2U7XG59XG5hc3luYyBmdW5jdGlvbiBlbnN1cmVGb2xkZXJFeGlzdHMocGF0aCkge1xuICAgIGNvbnN0IGRpcnMgPSBwYXRoLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpLnNwbGl0KFwiL1wiKTtcbiAgICBkaXJzLnBvcCgpOyAvLyByZW1vdmUgYmFzZW5hbWVcbiAgICBpZiAoZGlycy5sZW5ndGgpIHtcbiAgICAgICAgY29uc3QgZGlyID0gam9pbiguLi5kaXJzKTtcbiAgICAgICAgaWYgKCF3aW5kb3cuYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChkaXIpKSB7XG4gICAgICAgICAgICBhd2FpdCB3aW5kb3cuYXBwLnZhdWx0LmNyZWF0ZUZvbGRlcihkaXIpO1xuICAgICAgICB9XG4gICAgfVxufVxuYXN5bmMgZnVuY3Rpb24gZ2V0Tm90ZVBhdGgoZGlyZWN0b3J5LCBmaWxlbmFtZSkge1xuICAgIGlmICghZmlsZW5hbWUuZW5kc1dpdGgoXCIubWRcIikpIHtcbiAgICAgICAgZmlsZW5hbWUgKz0gXCIubWRcIjtcbiAgICB9XG4gICAgY29uc3QgcGF0aCA9IG9ic2lkaWFuLm5vcm1hbGl6ZVBhdGgoam9pbihkaXJlY3RvcnksIGZpbGVuYW1lKSk7XG4gICAgYXdhaXQgZW5zdXJlRm9sZGVyRXhpc3RzKHBhdGgpO1xuICAgIHJldHVybiBwYXRoO1xufVxuYXN5bmMgZnVuY3Rpb24gZ2V0VGVtcGxhdGVJbmZvKHRlbXBsYXRlKSB7XG4gICAgY29uc3QgeyBtZXRhZGF0YUNhY2hlLCB2YXVsdCB9ID0gd2luZG93LmFwcDtcbiAgICBjb25zdCB0ZW1wbGF0ZVBhdGggPSBvYnNpZGlhbi5ub3JtYWxpemVQYXRoKHRlbXBsYXRlKTtcbiAgICBpZiAodGVtcGxhdGVQYXRoID09PSBcIi9cIikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtcIlwiLCBudWxsXSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlRmlsZSA9IG1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QodGVtcGxhdGVQYXRoLCBcIlwiKTtcbiAgICAgICAgY29uc3QgY29udGVudHMgPSBhd2FpdCB2YXVsdC5jYWNoZWRSZWFkKHRlbXBsYXRlRmlsZSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IElGb2xkSW5mbyA9IHdpbmRvdy5hcHAuZm9sZE1hbmFnZXIubG9hZCh0ZW1wbGF0ZUZpbGUpO1xuICAgICAgICByZXR1cm4gW2NvbnRlbnRzLCBJRm9sZEluZm9dO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byByZWFkIHRoZSBkYWlseSBub3RlIHRlbXBsYXRlICcke3RlbXBsYXRlUGF0aH0nYCwgZXJyKTtcbiAgICAgICAgbmV3IG9ic2lkaWFuLk5vdGljZShcIkZhaWxlZCB0byByZWFkIHRoZSBkYWlseSBub3RlIHRlbXBsYXRlXCIpO1xuICAgICAgICByZXR1cm4gW1wiXCIsIG51bGxdO1xuICAgIH1cbn1cblxuLyoqXG4gKiBkYXRlVUlEIGlzIGEgd2F5IG9mIHdlZWtseSBpZGVudGlmeWluZyBkYWlseS93ZWVrbHkvbW9udGhseSBub3Rlcy5cbiAqIFRoZXkgYXJlIHByZWZpeGVkIHdpdGggdGhlIGdyYW51bGFyaXR5IHRvIGF2b2lkIGFtYmlndWl0eS5cbiAqL1xuZnVuY3Rpb24gZ2V0RGF0ZVVJRChkYXRlLCBncmFudWxhcml0eSA9IFwiZGF5XCIpIHtcbiAgICBjb25zdCB0cyA9IGRhdGUuY2xvbmUoKS5zdGFydE9mKGdyYW51bGFyaXR5KS5mb3JtYXQoKTtcbiAgICByZXR1cm4gYCR7Z3JhbnVsYXJpdHl9LSR7dHN9YDtcbn1cbmZ1bmN0aW9uIHJlbW92ZUVzY2FwZWRDaGFyYWN0ZXJzKGZvcm1hdCkge1xuICAgIHJldHVybiBmb3JtYXQucmVwbGFjZSgvXFxbW15cXF1dKlxcXS9nLCBcIlwiKTsgLy8gcmVtb3ZlIGV2ZXJ5dGhpbmcgd2l0aGluIGJyYWNrZXRzXG59XG4vKipcbiAqIFhYWDogV2hlbiBwYXJzaW5nIGRhdGVzIHRoYXQgY29udGFpbiBib3RoIHdlZWsgbnVtYmVycyBhbmQgbW9udGhzLFxuICogTW9tZW50IGNob3NlcyB0byBpZ25vcmUgdGhlIHdlZWsgbnVtYmVycy4gRm9yIHRoZSB3ZWVrIGRhdGVVSUQsIHdlXG4gKiB3YW50IHRoZSBvcHBvc2l0ZSBiZWhhdmlvci4gU3RyaXAgdGhlIE1NTSBmcm9tIHRoZSBmb3JtYXQgdG8gcGF0Y2guXG4gKi9cbmZ1bmN0aW9uIGlzRm9ybWF0QW1iaWd1b3VzKGZvcm1hdCwgZ3JhbnVsYXJpdHkpIHtcbiAgICBpZiAoZ3JhbnVsYXJpdHkgPT09IFwid2Vla1wiKSB7XG4gICAgICAgIGNvbnN0IGNsZWFuRm9ybWF0ID0gcmVtb3ZlRXNjYXBlZENoYXJhY3RlcnMoZm9ybWF0KTtcbiAgICAgICAgcmV0dXJuICgvd3sxLDJ9L2kudGVzdChjbGVhbkZvcm1hdCkgJiZcbiAgICAgICAgICAgICgvTXsxLDR9Ly50ZXN0KGNsZWFuRm9ybWF0KSB8fCAvRHsxLDR9Ly50ZXN0KGNsZWFuRm9ybWF0KSkpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBnZXREYXRlRnJvbUZpbGUoZmlsZSwgZ3JhbnVsYXJpdHkpIHtcbiAgICByZXR1cm4gZ2V0RGF0ZUZyb21GaWxlbmFtZShmaWxlLmJhc2VuYW1lLCBncmFudWxhcml0eSk7XG59XG5mdW5jdGlvbiBnZXREYXRlRnJvbVBhdGgocGF0aCwgZ3JhbnVsYXJpdHkpIHtcbiAgICByZXR1cm4gZ2V0RGF0ZUZyb21GaWxlbmFtZShiYXNlbmFtZShwYXRoKSwgZ3JhbnVsYXJpdHkpO1xufVxuZnVuY3Rpb24gZ2V0RGF0ZUZyb21GaWxlbmFtZShmaWxlbmFtZSwgZ3JhbnVsYXJpdHkpIHtcbiAgICBjb25zdCBnZXRTZXR0aW5ncyA9IHtcbiAgICAgICAgZGF5OiBnZXREYWlseU5vdGVTZXR0aW5ncyxcbiAgICAgICAgd2VlazogZ2V0V2Vla2x5Tm90ZVNldHRpbmdzLFxuICAgICAgICBtb250aDogZ2V0TW9udGhseU5vdGVTZXR0aW5ncyxcbiAgICAgICAgcXVhcnRlcjogZ2V0UXVhcnRlcmx5Tm90ZVNldHRpbmdzLFxuICAgICAgICB5ZWFyOiBnZXRZZWFybHlOb3RlU2V0dGluZ3MsXG4gICAgfTtcbiAgICBjb25zdCBmb3JtYXQgPSBnZXRTZXR0aW5nc1tncmFudWxhcml0eV0oKS5mb3JtYXQuc3BsaXQoXCIvXCIpLnBvcCgpO1xuICAgIGNvbnN0IG5vdGVEYXRlID0gd2luZG93Lm1vbWVudChmaWxlbmFtZSwgZm9ybWF0LCB0cnVlKTtcbiAgICBpZiAoIW5vdGVEYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGlzRm9ybWF0QW1iaWd1b3VzKGZvcm1hdCwgZ3JhbnVsYXJpdHkpKSB7XG4gICAgICAgIGlmIChncmFudWxhcml0eSA9PT0gXCJ3ZWVrXCIpIHtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuRm9ybWF0ID0gcmVtb3ZlRXNjYXBlZENoYXJhY3RlcnMoZm9ybWF0KTtcbiAgICAgICAgICAgIGlmICgvd3sxLDJ9L2kudGVzdChjbGVhbkZvcm1hdCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93Lm1vbWVudChmaWxlbmFtZSwgXG4gICAgICAgICAgICAgICAgLy8gSWYgZm9ybWF0IGNvbnRhaW5zIHdlZWssIHJlbW92ZSBkYXkgJiBtb250aCBmb3JtYXR0aW5nXG4gICAgICAgICAgICAgICAgZm9ybWF0LnJlcGxhY2UoL017MSw0fS9nLCBcIlwiKS5yZXBsYWNlKC9EezEsNH0vZywgXCJcIiksIGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm90ZURhdGU7XG59XG5cbmNsYXNzIERhaWx5Tm90ZXNGb2xkZXJNaXNzaW5nRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG59XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gbWltaWNzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGFpbHktbm90ZXMgcGx1Z2luXG4gKiBzbyBpdCB3aWxsIHJlcGxhY2Uge3tkYXRlfX0sIHt7dGl0bGV9fSwgYW5kIHt7dGltZX19IHdpdGggdGhlXG4gKiBmb3JtYXR0ZWQgdGltZXN0YW1wLlxuICpcbiAqIE5vdGU6IGl0IGhhcyBhbiBhZGRlZCBib251cyB0aGF0IGl0J3Mgbm90ICd0b2RheScgc3BlY2lmaWMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURhaWx5Tm90ZShkYXRlKSB7XG4gICAgY29uc3QgYXBwID0gd2luZG93LmFwcDtcbiAgICBjb25zdCB7IHZhdWx0IH0gPSBhcHA7XG4gICAgY29uc3QgbW9tZW50ID0gd2luZG93Lm1vbWVudDtcbiAgICBjb25zdCB7IHRlbXBsYXRlLCBmb3JtYXQsIGZvbGRlciB9ID0gZ2V0RGFpbHlOb3RlU2V0dGluZ3MoKTtcbiAgICBjb25zdCBbdGVtcGxhdGVDb250ZW50cywgSUZvbGRJbmZvXSA9IGF3YWl0IGdldFRlbXBsYXRlSW5mbyh0ZW1wbGF0ZSk7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBkYXRlLmZvcm1hdChmb3JtYXQpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gYXdhaXQgZ2V0Tm90ZVBhdGgoZm9sZGVyLCBmaWxlbmFtZSk7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY3JlYXRlZEZpbGUgPSBhd2FpdCB2YXVsdC5jcmVhdGUobm9ybWFsaXplZFBhdGgsIHRlbXBsYXRlQ29udGVudHNcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccypkYXRlXFxzKn19L2dpLCBmaWxlbmFtZSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyp0aW1lXFxzKn19L2dpLCBtb21lbnQoKS5mb3JtYXQoXCJISDptbVwiKSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyp0aXRsZVxccyp9fS9naSwgZmlsZW5hbWUpXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqKGRhdGV8dGltZSlcXHMqKChbKy1dXFxkKykoW3lxbXdkaHNdKSk/XFxzKig6Lis/KT99fS9naSwgKF8sIF90aW1lT3JEYXRlLCBjYWxjLCB0aW1lRGVsdGEsIHVuaXQsIG1vbWVudEZvcm1hdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gbW9tZW50KCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IGRhdGUuY2xvbmUoKS5zZXQoe1xuICAgICAgICAgICAgICAgIGhvdXI6IG5vdy5nZXQoXCJob3VyXCIpLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogbm93LmdldChcIm1pbnV0ZVwiKSxcbiAgICAgICAgICAgICAgICBzZWNvbmQ6IG5vdy5nZXQoXCJzZWNvbmRcIiksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChjYWxjKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudERhdGUuYWRkKHBhcnNlSW50KHRpbWVEZWx0YSwgMTApLCB1bml0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtb21lbnRGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudERhdGUuZm9ybWF0KG1vbWVudEZvcm1hdC5zdWJzdHJpbmcoMSkudHJpbSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50RGF0ZS5mb3JtYXQoZm9ybWF0KTtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyp5ZXN0ZXJkYXlcXHMqfX0vZ2ksIGRhdGUuY2xvbmUoKS5zdWJ0cmFjdCgxLCBcImRheVwiKS5mb3JtYXQoZm9ybWF0KSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyp0b21vcnJvd1xccyp9fS9naSwgZGF0ZS5jbG9uZSgpLmFkZCgxLCBcImRcIikuZm9ybWF0KGZvcm1hdCkpKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgYXBwLmZvbGRNYW5hZ2VyLnNhdmUoY3JlYXRlZEZpbGUsIElGb2xkSW5mbyk7XG4gICAgICAgIHJldHVybiBjcmVhdGVkRmlsZTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIGZpbGU6ICcke25vcm1hbGl6ZWRQYXRofSdgLCBlcnIpO1xuICAgICAgICBuZXcgb2JzaWRpYW4uTm90aWNlKFwiVW5hYmxlIHRvIGNyZWF0ZSBuZXcgZmlsZS5cIik7XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0RGFpbHlOb3RlKGRhdGUsIGRhaWx5Tm90ZXMpIHtcbiAgICByZXR1cm4gZGFpbHlOb3Rlc1tnZXREYXRlVUlEKGRhdGUsIFwiZGF5XCIpXSA/PyBudWxsO1xufVxuZnVuY3Rpb24gZ2V0QWxsRGFpbHlOb3RlcygpIHtcbiAgICAvKipcbiAgICAgKiBGaW5kIGFsbCBkYWlseSBub3RlcyBpbiB0aGUgZGFpbHkgbm90ZSBmb2xkZXJcbiAgICAgKi9cbiAgICBjb25zdCB7IHZhdWx0IH0gPSB3aW5kb3cuYXBwO1xuICAgIGNvbnN0IHsgZm9sZGVyIH0gPSBnZXREYWlseU5vdGVTZXR0aW5ncygpO1xuICAgIGNvbnN0IGRhaWx5Tm90ZXNGb2xkZXIgPSB2YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgob2JzaWRpYW4ubm9ybWFsaXplUGF0aChmb2xkZXIpKTtcbiAgICBpZiAoIWRhaWx5Tm90ZXNGb2xkZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IERhaWx5Tm90ZXNGb2xkZXJNaXNzaW5nRXJyb3IoXCJGYWlsZWQgdG8gZmluZCBkYWlseSBub3RlcyBmb2xkZXJcIik7XG4gICAgfVxuICAgIGNvbnN0IGRhaWx5Tm90ZXMgPSB7fTtcbiAgICBvYnNpZGlhbi5WYXVsdC5yZWN1cnNlQ2hpbGRyZW4oZGFpbHlOb3Rlc0ZvbGRlciwgKG5vdGUpID0+IHtcbiAgICAgICAgaWYgKG5vdGUgaW5zdGFuY2VvZiBvYnNpZGlhbi5URmlsZSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IGdldERhdGVGcm9tRmlsZShub3RlLCBcImRheVwiKTtcbiAgICAgICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IGdldERhdGVVSUQoZGF0ZSwgXCJkYXlcIik7XG4gICAgICAgICAgICAgICAgZGFpbHlOb3Rlc1tkYXRlU3RyaW5nXSA9IG5vdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGFpbHlOb3Rlcztcbn1cblxuY2xhc3MgV2Vla2x5Tm90ZXNGb2xkZXJNaXNzaW5nRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG59XG5mdW5jdGlvbiBnZXREYXlzT2ZXZWVrKCkge1xuICAgIGNvbnN0IHsgbW9tZW50IH0gPSB3aW5kb3c7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBsZXQgd2Vla1N0YXJ0ID0gbW9tZW50LmxvY2FsZURhdGEoKS5fd2Vlay5kb3c7XG4gICAgY29uc3QgZGF5c09mV2VlayA9IFtcbiAgICAgICAgXCJzdW5kYXlcIixcbiAgICAgICAgXCJtb25kYXlcIixcbiAgICAgICAgXCJ0dWVzZGF5XCIsXG4gICAgICAgIFwid2VkbmVzZGF5XCIsXG4gICAgICAgIFwidGh1cnNkYXlcIixcbiAgICAgICAgXCJmcmlkYXlcIixcbiAgICAgICAgXCJzYXR1cmRheVwiLFxuICAgIF07XG4gICAgd2hpbGUgKHdlZWtTdGFydCkge1xuICAgICAgICBkYXlzT2ZXZWVrLnB1c2goZGF5c09mV2Vlay5zaGlmdCgpKTtcbiAgICAgICAgd2Vla1N0YXJ0LS07XG4gICAgfVxuICAgIHJldHVybiBkYXlzT2ZXZWVrO1xufVxuZnVuY3Rpb24gZ2V0RGF5T2ZXZWVrTnVtZXJpY2FsVmFsdWUoZGF5T2ZXZWVrTmFtZSkge1xuICAgIHJldHVybiBnZXREYXlzT2ZXZWVrKCkuaW5kZXhPZihkYXlPZldlZWtOYW1lLnRvTG93ZXJDYXNlKCkpO1xufVxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlV2Vla2x5Tm90ZShkYXRlKSB7XG4gICAgY29uc3QgeyB2YXVsdCB9ID0gd2luZG93LmFwcDtcbiAgICBjb25zdCB7IHRlbXBsYXRlLCBmb3JtYXQsIGZvbGRlciB9ID0gZ2V0V2Vla2x5Tm90ZVNldHRpbmdzKCk7XG4gICAgY29uc3QgW3RlbXBsYXRlQ29udGVudHMsIElGb2xkSW5mb10gPSBhd2FpdCBnZXRUZW1wbGF0ZUluZm8odGVtcGxhdGUpO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gZGF0ZS5mb3JtYXQoZm9ybWF0KTtcbiAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IGF3YWl0IGdldE5vdGVQYXRoKGZvbGRlciwgZmlsZW5hbWUpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWRGaWxlID0gYXdhaXQgdmF1bHQuY3JlYXRlKG5vcm1hbGl6ZWRQYXRoLCB0ZW1wbGF0ZUNvbnRlbnRzXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqKGRhdGV8dGltZSlcXHMqKChbKy1dXFxkKykoW3lxbXdkaHNdKSk/XFxzKig6Lis/KT99fS9naSwgKF8sIF90aW1lT3JEYXRlLCBjYWxjLCB0aW1lRGVsdGEsIHVuaXQsIG1vbWVudEZvcm1hdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gd2luZG93Lm1vbWVudCgpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBkYXRlLmNsb25lKCkuc2V0KHtcbiAgICAgICAgICAgICAgICBob3VyOiBub3cuZ2V0KFwiaG91clwiKSxcbiAgICAgICAgICAgICAgICBtaW51dGU6IG5vdy5nZXQoXCJtaW51dGVcIiksXG4gICAgICAgICAgICAgICAgc2Vjb25kOiBub3cuZ2V0KFwic2Vjb25kXCIpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoY2FsYykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnREYXRlLmFkZChwYXJzZUludCh0aW1lRGVsdGEsIDEwKSwgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobW9tZW50Rm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnREYXRlLmZvcm1hdChtb21lbnRGb3JtYXQuc3Vic3RyaW5nKDEpLnRyaW0oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudERhdGUuZm9ybWF0KGZvcm1hdCk7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqdGl0bGVcXHMqfX0vZ2ksIGZpbGVuYW1lKVxuICAgICAgICAgICAgLnJlcGxhY2UoL3t7XFxzKnRpbWVcXHMqfX0vZ2ksIHdpbmRvdy5tb21lbnQoKS5mb3JtYXQoXCJISDptbVwiKSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyooc3VuZGF5fG1vbmRheXx0dWVzZGF5fHdlZG5lc2RheXx0aHVyc2RheXxmcmlkYXl8c2F0dXJkYXkpXFxzKjooLio/KX19L2dpLCAoXywgZGF5T2ZXZWVrLCBtb21lbnRGb3JtYXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGRheSA9IGdldERheU9mV2Vla051bWVyaWNhbFZhbHVlKGRheU9mV2Vlayk7XG4gICAgICAgICAgICByZXR1cm4gZGF0ZS53ZWVrZGF5KGRheSkuZm9ybWF0KG1vbWVudEZvcm1hdC50cmltKCkpO1xuICAgICAgICB9KSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHdpbmRvdy5hcHAuZm9sZE1hbmFnZXIuc2F2ZShjcmVhdGVkRmlsZSwgSUZvbGRJbmZvKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZWRGaWxlO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgZmlsZTogJyR7bm9ybWFsaXplZFBhdGh9J2AsIGVycik7XG4gICAgICAgIG5ldyBvYnNpZGlhbi5Ob3RpY2UoXCJVbmFibGUgdG8gY3JlYXRlIG5ldyBmaWxlLlwiKTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRXZWVrbHlOb3RlKGRhdGUsIHdlZWtseU5vdGVzKSB7XG4gICAgcmV0dXJuIHdlZWtseU5vdGVzW2dldERhdGVVSUQoZGF0ZSwgXCJ3ZWVrXCIpXSA/PyBudWxsO1xufVxuZnVuY3Rpb24gZ2V0QWxsV2Vla2x5Tm90ZXMoKSB7XG4gICAgY29uc3Qgd2Vla2x5Tm90ZXMgPSB7fTtcbiAgICBpZiAoIWFwcEhhc1dlZWtseU5vdGVzUGx1Z2luTG9hZGVkKCkpIHtcbiAgICAgICAgcmV0dXJuIHdlZWtseU5vdGVzO1xuICAgIH1cbiAgICBjb25zdCB7IHZhdWx0IH0gPSB3aW5kb3cuYXBwO1xuICAgIGNvbnN0IHsgZm9sZGVyIH0gPSBnZXRXZWVrbHlOb3RlU2V0dGluZ3MoKTtcbiAgICBjb25zdCB3ZWVrbHlOb3Rlc0ZvbGRlciA9IHZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChvYnNpZGlhbi5ub3JtYWxpemVQYXRoKGZvbGRlcikpO1xuICAgIGlmICghd2Vla2x5Tm90ZXNGb2xkZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFdlZWtseU5vdGVzRm9sZGVyTWlzc2luZ0Vycm9yKFwiRmFpbGVkIHRvIGZpbmQgd2Vla2x5IG5vdGVzIGZvbGRlclwiKTtcbiAgICB9XG4gICAgb2JzaWRpYW4uVmF1bHQucmVjdXJzZUNoaWxkcmVuKHdlZWtseU5vdGVzRm9sZGVyLCAobm90ZSkgPT4ge1xuICAgICAgICBpZiAobm90ZSBpbnN0YW5jZW9mIG9ic2lkaWFuLlRGaWxlKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gZ2V0RGF0ZUZyb21GaWxlKG5vdGUsIFwid2Vla1wiKTtcbiAgICAgICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IGdldERhdGVVSUQoZGF0ZSwgXCJ3ZWVrXCIpO1xuICAgICAgICAgICAgICAgIHdlZWtseU5vdGVzW2RhdGVTdHJpbmddID0gbm90ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB3ZWVrbHlOb3Rlcztcbn1cblxuY2xhc3MgTW9udGhseU5vdGVzRm9sZGVyTWlzc2luZ0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xufVxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIG1pbWljcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRhaWx5LW5vdGVzIHBsdWdpblxuICogc28gaXQgd2lsbCByZXBsYWNlIHt7ZGF0ZX19LCB7e3RpdGxlfX0sIGFuZCB7e3RpbWV9fSB3aXRoIHRoZVxuICogZm9ybWF0dGVkIHRpbWVzdGFtcC5cbiAqXG4gKiBOb3RlOiBpdCBoYXMgYW4gYWRkZWQgYm9udXMgdGhhdCBpdCdzIG5vdCAndG9kYXknIHNwZWNpZmljLlxuICovXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVNb250aGx5Tm90ZShkYXRlKSB7XG4gICAgY29uc3QgeyB2YXVsdCB9ID0gd2luZG93LmFwcDtcbiAgICBjb25zdCB7IHRlbXBsYXRlLCBmb3JtYXQsIGZvbGRlciB9ID0gZ2V0TW9udGhseU5vdGVTZXR0aW5ncygpO1xuICAgIGNvbnN0IFt0ZW1wbGF0ZUNvbnRlbnRzLCBJRm9sZEluZm9dID0gYXdhaXQgZ2V0VGVtcGxhdGVJbmZvKHRlbXBsYXRlKTtcbiAgICBjb25zdCBmaWxlbmFtZSA9IGRhdGUuZm9ybWF0KGZvcm1hdCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBhd2FpdCBnZXROb3RlUGF0aChmb2xkZXIsIGZpbGVuYW1lKTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBjcmVhdGVkRmlsZSA9IGF3YWl0IHZhdWx0LmNyZWF0ZShub3JtYWxpemVkUGF0aCwgdGVtcGxhdGVDb250ZW50c1xuICAgICAgICAgICAgLnJlcGxhY2UoL3t7XFxzKihkYXRlfHRpbWUpXFxzKigoWystXVxcZCspKFt5cW13ZGhzXSkpP1xccyooOi4rPyk/fX0vZ2ksIChfLCBfdGltZU9yRGF0ZSwgY2FsYywgdGltZURlbHRhLCB1bml0LCBtb21lbnRGb3JtYXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vdyA9IHdpbmRvdy5tb21lbnQoKTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gZGF0ZS5jbG9uZSgpLnNldCh7XG4gICAgICAgICAgICAgICAgaG91cjogbm93LmdldChcImhvdXJcIiksXG4gICAgICAgICAgICAgICAgbWludXRlOiBub3cuZ2V0KFwibWludXRlXCIpLFxuICAgICAgICAgICAgICAgIHNlY29uZDogbm93LmdldChcInNlY29uZFwiKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKGNhbGMpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50RGF0ZS5hZGQocGFyc2VJbnQodGltZURlbHRhLCAxMCksIHVuaXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1vbWVudEZvcm1hdCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50RGF0ZS5mb3JtYXQobW9tZW50Rm9ybWF0LnN1YnN0cmluZygxKS50cmltKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnREYXRlLmZvcm1hdChmb3JtYXQpO1xuICAgICAgICB9KVxuICAgICAgICAgICAgLnJlcGxhY2UoL3t7XFxzKmRhdGVcXHMqfX0vZ2ksIGZpbGVuYW1lKVxuICAgICAgICAgICAgLnJlcGxhY2UoL3t7XFxzKnRpbWVcXHMqfX0vZ2ksIHdpbmRvdy5tb21lbnQoKS5mb3JtYXQoXCJISDptbVwiKSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyp0aXRsZVxccyp9fS9naSwgZmlsZW5hbWUpKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgd2luZG93LmFwcC5mb2xkTWFuYWdlci5zYXZlKGNyZWF0ZWRGaWxlLCBJRm9sZEluZm8pO1xuICAgICAgICByZXR1cm4gY3JlYXRlZEZpbGU7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgRmFpbGVkIHRvIGNyZWF0ZSBmaWxlOiAnJHtub3JtYWxpemVkUGF0aH0nYCwgZXJyKTtcbiAgICAgICAgbmV3IG9ic2lkaWFuLk5vdGljZShcIlVuYWJsZSB0byBjcmVhdGUgbmV3IGZpbGUuXCIpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGdldE1vbnRobHlOb3RlKGRhdGUsIG1vbnRobHlOb3Rlcykge1xuICAgIHJldHVybiBtb250aGx5Tm90ZXNbZ2V0RGF0ZVVJRChkYXRlLCBcIm1vbnRoXCIpXSA/PyBudWxsO1xufVxuZnVuY3Rpb24gZ2V0QWxsTW9udGhseU5vdGVzKCkge1xuICAgIGNvbnN0IG1vbnRobHlOb3RlcyA9IHt9O1xuICAgIGlmICghYXBwSGFzTW9udGhseU5vdGVzUGx1Z2luTG9hZGVkKCkpIHtcbiAgICAgICAgcmV0dXJuIG1vbnRobHlOb3RlcztcbiAgICB9XG4gICAgY29uc3QgeyB2YXVsdCB9ID0gd2luZG93LmFwcDtcbiAgICBjb25zdCB7IGZvbGRlciB9ID0gZ2V0TW9udGhseU5vdGVTZXR0aW5ncygpO1xuICAgIGNvbnN0IG1vbnRobHlOb3Rlc0ZvbGRlciA9IHZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChvYnNpZGlhbi5ub3JtYWxpemVQYXRoKGZvbGRlcikpO1xuICAgIGlmICghbW9udGhseU5vdGVzRm9sZGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBNb250aGx5Tm90ZXNGb2xkZXJNaXNzaW5nRXJyb3IoXCJGYWlsZWQgdG8gZmluZCBtb250aGx5IG5vdGVzIGZvbGRlclwiKTtcbiAgICB9XG4gICAgb2JzaWRpYW4uVmF1bHQucmVjdXJzZUNoaWxkcmVuKG1vbnRobHlOb3Rlc0ZvbGRlciwgKG5vdGUpID0+IHtcbiAgICAgICAgaWYgKG5vdGUgaW5zdGFuY2VvZiBvYnNpZGlhbi5URmlsZSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IGdldERhdGVGcm9tRmlsZShub3RlLCBcIm1vbnRoXCIpO1xuICAgICAgICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlU3RyaW5nID0gZ2V0RGF0ZVVJRChkYXRlLCBcIm1vbnRoXCIpO1xuICAgICAgICAgICAgICAgIG1vbnRobHlOb3Rlc1tkYXRlU3RyaW5nXSA9IG5vdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gbW9udGhseU5vdGVzO1xufVxuXG5jbGFzcyBRdWFydGVybHlOb3Rlc0ZvbGRlck1pc3NpbmdFcnJvciBleHRlbmRzIEVycm9yIHtcbn1cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBtaW1pY3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBkYWlseS1ub3RlcyBwbHVnaW5cbiAqIHNvIGl0IHdpbGwgcmVwbGFjZSB7e2RhdGV9fSwge3t0aXRsZX19LCBhbmQge3t0aW1lfX0gd2l0aCB0aGVcbiAqIGZvcm1hdHRlZCB0aW1lc3RhbXAuXG4gKlxuICogTm90ZTogaXQgaGFzIGFuIGFkZGVkIGJvbnVzIHRoYXQgaXQncyBub3QgJ3RvZGF5JyBzcGVjaWZpYy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUXVhcnRlcmx5Tm90ZShkYXRlKSB7XG4gICAgY29uc3QgeyB2YXVsdCB9ID0gd2luZG93LmFwcDtcbiAgICBjb25zdCB7IHRlbXBsYXRlLCBmb3JtYXQsIGZvbGRlciB9ID0gZ2V0UXVhcnRlcmx5Tm90ZVNldHRpbmdzKCk7XG4gICAgY29uc3QgW3RlbXBsYXRlQ29udGVudHMsIElGb2xkSW5mb10gPSBhd2FpdCBnZXRUZW1wbGF0ZUluZm8odGVtcGxhdGUpO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gZGF0ZS5mb3JtYXQoZm9ybWF0KTtcbiAgICBjb25zdCBub3JtYWxpemVkUGF0aCA9IGF3YWl0IGdldE5vdGVQYXRoKGZvbGRlciwgZmlsZW5hbWUpO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNyZWF0ZWRGaWxlID0gYXdhaXQgdmF1bHQuY3JlYXRlKG5vcm1hbGl6ZWRQYXRoLCB0ZW1wbGF0ZUNvbnRlbnRzXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqKGRhdGV8dGltZSlcXHMqKChbKy1dXFxkKykoW3lxbXdkaHNdKSk/XFxzKig6Lis/KT99fS9naSwgKF8sIF90aW1lT3JEYXRlLCBjYWxjLCB0aW1lRGVsdGEsIHVuaXQsIG1vbWVudEZvcm1hdCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgbm93ID0gd2luZG93Lm1vbWVudCgpO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBkYXRlLmNsb25lKCkuc2V0KHtcbiAgICAgICAgICAgICAgICBob3VyOiBub3cuZ2V0KFwiaG91clwiKSxcbiAgICAgICAgICAgICAgICBtaW51dGU6IG5vdy5nZXQoXCJtaW51dGVcIiksXG4gICAgICAgICAgICAgICAgc2Vjb25kOiBub3cuZ2V0KFwic2Vjb25kXCIpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoY2FsYykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnREYXRlLmFkZChwYXJzZUludCh0aW1lRGVsdGEsIDEwKSwgdW5pdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobW9tZW50Rm9ybWF0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnREYXRlLmZvcm1hdChtb21lbnRGb3JtYXQuc3Vic3RyaW5nKDEpLnRyaW0oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY3VycmVudERhdGUuZm9ybWF0KGZvcm1hdCk7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqZGF0ZVxccyp9fS9naSwgZmlsZW5hbWUpXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqdGltZVxccyp9fS9naSwgd2luZG93Lm1vbWVudCgpLmZvcm1hdChcIkhIOm1tXCIpKVxuICAgICAgICAgICAgLnJlcGxhY2UoL3t7XFxzKnRpdGxlXFxzKn19L2dpLCBmaWxlbmFtZSkpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICB3aW5kb3cuYXBwLmZvbGRNYW5hZ2VyLnNhdmUoY3JlYXRlZEZpbGUsIElGb2xkSW5mbyk7XG4gICAgICAgIHJldHVybiBjcmVhdGVkRmlsZTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gY3JlYXRlIGZpbGU6ICcke25vcm1hbGl6ZWRQYXRofSdgLCBlcnIpO1xuICAgICAgICBuZXcgb2JzaWRpYW4uTm90aWNlKFwiVW5hYmxlIHRvIGNyZWF0ZSBuZXcgZmlsZS5cIik7XG4gICAgfVxufVxuZnVuY3Rpb24gZ2V0UXVhcnRlcmx5Tm90ZShkYXRlLCBxdWFydGVybHkpIHtcbiAgICByZXR1cm4gcXVhcnRlcmx5W2dldERhdGVVSUQoZGF0ZSwgXCJxdWFydGVyXCIpXSA/PyBudWxsO1xufVxuZnVuY3Rpb24gZ2V0QWxsUXVhcnRlcmx5Tm90ZXMoKSB7XG4gICAgY29uc3QgcXVhcnRlcmx5ID0ge307XG4gICAgaWYgKCFhcHBIYXNRdWFydGVybHlOb3Rlc1BsdWdpbkxvYWRlZCgpKSB7XG4gICAgICAgIHJldHVybiBxdWFydGVybHk7XG4gICAgfVxuICAgIGNvbnN0IHsgdmF1bHQgfSA9IHdpbmRvdy5hcHA7XG4gICAgY29uc3QgeyBmb2xkZXIgfSA9IGdldFF1YXJ0ZXJseU5vdGVTZXR0aW5ncygpO1xuICAgIGNvbnN0IHF1YXJ0ZXJseUZvbGRlciA9IHZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChvYnNpZGlhbi5ub3JtYWxpemVQYXRoKGZvbGRlcikpO1xuICAgIGlmICghcXVhcnRlcmx5Rm9sZGVyKSB7XG4gICAgICAgIHRocm93IG5ldyBRdWFydGVybHlOb3Rlc0ZvbGRlck1pc3NpbmdFcnJvcihcIkZhaWxlZCB0byBmaW5kIHF1YXJ0ZXJseSBub3RlcyBmb2xkZXJcIik7XG4gICAgfVxuICAgIG9ic2lkaWFuLlZhdWx0LnJlY3Vyc2VDaGlsZHJlbihxdWFydGVybHlGb2xkZXIsIChub3RlKSA9PiB7XG4gICAgICAgIGlmIChub3RlIGluc3RhbmNlb2Ygb2JzaWRpYW4uVEZpbGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBnZXREYXRlRnJvbUZpbGUobm90ZSwgXCJxdWFydGVyXCIpO1xuICAgICAgICAgICAgaWYgKGRhdGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlU3RyaW5nID0gZ2V0RGF0ZVVJRChkYXRlLCBcInF1YXJ0ZXJcIik7XG4gICAgICAgICAgICAgICAgcXVhcnRlcmx5W2RhdGVTdHJpbmddID0gbm90ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBxdWFydGVybHk7XG59XG5cbmNsYXNzIFllYXJseU5vdGVzRm9sZGVyTWlzc2luZ0Vycm9yIGV4dGVuZHMgRXJyb3Ige1xufVxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIG1pbWljcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRhaWx5LW5vdGVzIHBsdWdpblxuICogc28gaXQgd2lsbCByZXBsYWNlIHt7ZGF0ZX19LCB7e3RpdGxlfX0sIGFuZCB7e3RpbWV9fSB3aXRoIHRoZVxuICogZm9ybWF0dGVkIHRpbWVzdGFtcC5cbiAqXG4gKiBOb3RlOiBpdCBoYXMgYW4gYWRkZWQgYm9udXMgdGhhdCBpdCdzIG5vdCAndG9kYXknIHNwZWNpZmljLlxuICovXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVZZWFybHlOb3RlKGRhdGUpIHtcbiAgICBjb25zdCB7IHZhdWx0IH0gPSB3aW5kb3cuYXBwO1xuICAgIGNvbnN0IHsgdGVtcGxhdGUsIGZvcm1hdCwgZm9sZGVyIH0gPSBnZXRZZWFybHlOb3RlU2V0dGluZ3MoKTtcbiAgICBjb25zdCBbdGVtcGxhdGVDb250ZW50cywgSUZvbGRJbmZvXSA9IGF3YWl0IGdldFRlbXBsYXRlSW5mbyh0ZW1wbGF0ZSk7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBkYXRlLmZvcm1hdChmb3JtYXQpO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gYXdhaXQgZ2V0Tm90ZVBhdGgoZm9sZGVyLCBmaWxlbmFtZSk7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY3JlYXRlZEZpbGUgPSBhd2FpdCB2YXVsdC5jcmVhdGUobm9ybWFsaXplZFBhdGgsIHRlbXBsYXRlQ29udGVudHNcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyooZGF0ZXx0aW1lKVxccyooKFsrLV1cXGQrKShbeXFtd2Roc10pKT9cXHMqKDouKz8pP319L2dpLCAoXywgX3RpbWVPckRhdGUsIGNhbGMsIHRpbWVEZWx0YSwgdW5pdCwgbW9tZW50Rm9ybWF0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBub3cgPSB3aW5kb3cubW9tZW50KCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGF0ZSA9IGRhdGUuY2xvbmUoKS5zZXQoe1xuICAgICAgICAgICAgICAgIGhvdXI6IG5vdy5nZXQoXCJob3VyXCIpLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogbm93LmdldChcIm1pbnV0ZVwiKSxcbiAgICAgICAgICAgICAgICBzZWNvbmQ6IG5vdy5nZXQoXCJzZWNvbmRcIiksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChjYWxjKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudERhdGUuYWRkKHBhcnNlSW50KHRpbWVEZWx0YSwgMTApLCB1bml0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtb21lbnRGb3JtYXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudERhdGUuZm9ybWF0KG1vbWVudEZvcm1hdC5zdWJzdHJpbmcoMSkudHJpbSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50RGF0ZS5mb3JtYXQoZm9ybWF0KTtcbiAgICAgICAgfSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccypkYXRlXFxzKn19L2dpLCBmaWxlbmFtZSlcbiAgICAgICAgICAgIC5yZXBsYWNlKC97e1xccyp0aW1lXFxzKn19L2dpLCB3aW5kb3cubW9tZW50KCkuZm9ybWF0KFwiSEg6bW1cIikpXG4gICAgICAgICAgICAucmVwbGFjZSgve3tcXHMqdGl0bGVcXHMqfX0vZ2ksIGZpbGVuYW1lKSk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIHdpbmRvdy5hcHAuZm9sZE1hbmFnZXIuc2F2ZShjcmVhdGVkRmlsZSwgSUZvbGRJbmZvKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZWRGaWxlO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYEZhaWxlZCB0byBjcmVhdGUgZmlsZTogJyR7bm9ybWFsaXplZFBhdGh9J2AsIGVycik7XG4gICAgICAgIG5ldyBvYnNpZGlhbi5Ob3RpY2UoXCJVbmFibGUgdG8gY3JlYXRlIG5ldyBmaWxlLlwiKTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRZZWFybHlOb3RlKGRhdGUsIHllYXJseU5vdGVzKSB7XG4gICAgcmV0dXJuIHllYXJseU5vdGVzW2dldERhdGVVSUQoZGF0ZSwgXCJ5ZWFyXCIpXSA/PyBudWxsO1xufVxuZnVuY3Rpb24gZ2V0QWxsWWVhcmx5Tm90ZXMoKSB7XG4gICAgY29uc3QgeWVhcmx5Tm90ZXMgPSB7fTtcbiAgICBpZiAoIWFwcEhhc1llYXJseU5vdGVzUGx1Z2luTG9hZGVkKCkpIHtcbiAgICAgICAgcmV0dXJuIHllYXJseU5vdGVzO1xuICAgIH1cbiAgICBjb25zdCB7IHZhdWx0IH0gPSB3aW5kb3cuYXBwO1xuICAgIGNvbnN0IHsgZm9sZGVyIH0gPSBnZXRZZWFybHlOb3RlU2V0dGluZ3MoKTtcbiAgICBjb25zdCB5ZWFybHlOb3Rlc0ZvbGRlciA9IHZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChvYnNpZGlhbi5ub3JtYWxpemVQYXRoKGZvbGRlcikpO1xuICAgIGlmICgheWVhcmx5Tm90ZXNGb2xkZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFllYXJseU5vdGVzRm9sZGVyTWlzc2luZ0Vycm9yKFwiRmFpbGVkIHRvIGZpbmQgeWVhcmx5IG5vdGVzIGZvbGRlclwiKTtcbiAgICB9XG4gICAgb2JzaWRpYW4uVmF1bHQucmVjdXJzZUNoaWxkcmVuKHllYXJseU5vdGVzRm9sZGVyLCAobm90ZSkgPT4ge1xuICAgICAgICBpZiAobm90ZSBpbnN0YW5jZW9mIG9ic2lkaWFuLlRGaWxlKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRlID0gZ2V0RGF0ZUZyb21GaWxlKG5vdGUsIFwieWVhclwiKTtcbiAgICAgICAgICAgIGlmIChkYXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IGdldERhdGVVSUQoZGF0ZSwgXCJ5ZWFyXCIpO1xuICAgICAgICAgICAgICAgIHllYXJseU5vdGVzW2RhdGVTdHJpbmddID0gbm90ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB5ZWFybHlOb3Rlcztcbn1cblxuZnVuY3Rpb24gYXBwSGFzRGFpbHlOb3Rlc1BsdWdpbkxvYWRlZCgpIHtcbiAgICBjb25zdCB7IGFwcCB9ID0gd2luZG93O1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgY29uc3QgZGFpbHlOb3Rlc1BsdWdpbiA9IGFwcC5pbnRlcm5hbFBsdWdpbnMucGx1Z2luc1tcImRhaWx5LW5vdGVzXCJdO1xuICAgIGlmIChkYWlseU5vdGVzUGx1Z2luICYmIGRhaWx5Tm90ZXNQbHVnaW4uZW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwZXJpb2RpY05vdGVzID0gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKFwicGVyaW9kaWMtbm90ZXNcIik7XG4gICAgcmV0dXJuIHBlcmlvZGljTm90ZXMgJiYgcGVyaW9kaWNOb3Rlcy5zZXR0aW5ncz8uZGFpbHk/LmVuYWJsZWQ7XG59XG4vKipcbiAqIFhYWDogXCJXZWVrbHkgTm90ZXNcIiBsaXZlIGluIGVpdGhlciB0aGUgQ2FsZW5kYXIgcGx1Z2luIG9yIHRoZSBwZXJpb2RpYy1ub3RlcyBwbHVnaW4uXG4gKiBDaGVjayBib3RoIHVudGlsIHRoZSB3ZWVrbHkgbm90ZXMgZmVhdHVyZSBpcyByZW1vdmVkIGZyb20gdGhlIENhbGVuZGFyIHBsdWdpbi5cbiAqL1xuZnVuY3Rpb24gYXBwSGFzV2Vla2x5Tm90ZXNQbHVnaW5Mb2FkZWQoKSB7XG4gICAgY29uc3QgeyBhcHAgfSA9IHdpbmRvdztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGlmIChhcHAucGx1Z2lucy5nZXRQbHVnaW4oXCJjYWxlbmRhclwiKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwZXJpb2RpY05vdGVzID0gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKFwicGVyaW9kaWMtbm90ZXNcIik7XG4gICAgcmV0dXJuIHBlcmlvZGljTm90ZXMgJiYgcGVyaW9kaWNOb3Rlcy5zZXR0aW5ncz8ud2Vla2x5Py5lbmFibGVkO1xufVxuZnVuY3Rpb24gYXBwSGFzTW9udGhseU5vdGVzUGx1Z2luTG9hZGVkKCkge1xuICAgIGNvbnN0IHsgYXBwIH0gPSB3aW5kb3c7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwZXJpb2RpY05vdGVzID0gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKFwicGVyaW9kaWMtbm90ZXNcIik7XG4gICAgcmV0dXJuIHBlcmlvZGljTm90ZXMgJiYgcGVyaW9kaWNOb3Rlcy5zZXR0aW5ncz8ubW9udGhseT8uZW5hYmxlZDtcbn1cbmZ1bmN0aW9uIGFwcEhhc1F1YXJ0ZXJseU5vdGVzUGx1Z2luTG9hZGVkKCkge1xuICAgIGNvbnN0IHsgYXBwIH0gPSB3aW5kb3c7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBjb25zdCBwZXJpb2RpY05vdGVzID0gYXBwLnBsdWdpbnMuZ2V0UGx1Z2luKFwicGVyaW9kaWMtbm90ZXNcIik7XG4gICAgcmV0dXJuIHBlcmlvZGljTm90ZXMgJiYgcGVyaW9kaWNOb3Rlcy5zZXR0aW5ncz8ucXVhcnRlcmx5Py5lbmFibGVkO1xufVxuZnVuY3Rpb24gYXBwSGFzWWVhcmx5Tm90ZXNQbHVnaW5Mb2FkZWQoKSB7XG4gICAgY29uc3QgeyBhcHAgfSA9IHdpbmRvdztcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHBlcmlvZGljTm90ZXMgPSBhcHAucGx1Z2lucy5nZXRQbHVnaW4oXCJwZXJpb2RpYy1ub3Rlc1wiKTtcbiAgICByZXR1cm4gcGVyaW9kaWNOb3RlcyAmJiBwZXJpb2RpY05vdGVzLnNldHRpbmdzPy55ZWFybHk/LmVuYWJsZWQ7XG59XG5mdW5jdGlvbiBnZXRQZXJpb2RpY05vdGVTZXR0aW5ncyhncmFudWxhcml0eSkge1xuICAgIGNvbnN0IGdldFNldHRpbmdzID0ge1xuICAgICAgICBkYXk6IGdldERhaWx5Tm90ZVNldHRpbmdzLFxuICAgICAgICB3ZWVrOiBnZXRXZWVrbHlOb3RlU2V0dGluZ3MsXG4gICAgICAgIG1vbnRoOiBnZXRNb250aGx5Tm90ZVNldHRpbmdzLFxuICAgICAgICBxdWFydGVyOiBnZXRRdWFydGVybHlOb3RlU2V0dGluZ3MsXG4gICAgICAgIHllYXI6IGdldFllYXJseU5vdGVTZXR0aW5ncyxcbiAgICB9W2dyYW51bGFyaXR5XTtcbiAgICByZXR1cm4gZ2V0U2V0dGluZ3MoKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVBlcmlvZGljTm90ZShncmFudWxhcml0eSwgZGF0ZSkge1xuICAgIGNvbnN0IGNyZWF0ZUZuID0ge1xuICAgICAgICBkYXk6IGNyZWF0ZURhaWx5Tm90ZSxcbiAgICAgICAgbW9udGg6IGNyZWF0ZU1vbnRobHlOb3RlLFxuICAgICAgICB3ZWVrOiBjcmVhdGVXZWVrbHlOb3RlLFxuICAgIH07XG4gICAgcmV0dXJuIGNyZWF0ZUZuW2dyYW51bGFyaXR5XShkYXRlKTtcbn1cblxuZXhwb3J0cy5ERUZBVUxUX0RBSUxZX05PVEVfRk9STUFUID0gREVGQVVMVF9EQUlMWV9OT1RFX0ZPUk1BVDtcbmV4cG9ydHMuREVGQVVMVF9NT05USExZX05PVEVfRk9STUFUID0gREVGQVVMVF9NT05USExZX05PVEVfRk9STUFUO1xuZXhwb3J0cy5ERUZBVUxUX1FVQVJURVJMWV9OT1RFX0ZPUk1BVCA9IERFRkFVTFRfUVVBUlRFUkxZX05PVEVfRk9STUFUO1xuZXhwb3J0cy5ERUZBVUxUX1dFRUtMWV9OT1RFX0ZPUk1BVCA9IERFRkFVTFRfV0VFS0xZX05PVEVfRk9STUFUO1xuZXhwb3J0cy5ERUZBVUxUX1lFQVJMWV9OT1RFX0ZPUk1BVCA9IERFRkFVTFRfWUVBUkxZX05PVEVfRk9STUFUO1xuZXhwb3J0cy5hcHBIYXNEYWlseU5vdGVzUGx1Z2luTG9hZGVkID0gYXBwSGFzRGFpbHlOb3Rlc1BsdWdpbkxvYWRlZDtcbmV4cG9ydHMuYXBwSGFzTW9udGhseU5vdGVzUGx1Z2luTG9hZGVkID0gYXBwSGFzTW9udGhseU5vdGVzUGx1Z2luTG9hZGVkO1xuZXhwb3J0cy5hcHBIYXNRdWFydGVybHlOb3Rlc1BsdWdpbkxvYWRlZCA9IGFwcEhhc1F1YXJ0ZXJseU5vdGVzUGx1Z2luTG9hZGVkO1xuZXhwb3J0cy5hcHBIYXNXZWVrbHlOb3Rlc1BsdWdpbkxvYWRlZCA9IGFwcEhhc1dlZWtseU5vdGVzUGx1Z2luTG9hZGVkO1xuZXhwb3J0cy5hcHBIYXNZZWFybHlOb3Rlc1BsdWdpbkxvYWRlZCA9IGFwcEhhc1llYXJseU5vdGVzUGx1Z2luTG9hZGVkO1xuZXhwb3J0cy5jcmVhdGVEYWlseU5vdGUgPSBjcmVhdGVEYWlseU5vdGU7XG5leHBvcnRzLmNyZWF0ZU1vbnRobHlOb3RlID0gY3JlYXRlTW9udGhseU5vdGU7XG5leHBvcnRzLmNyZWF0ZVBlcmlvZGljTm90ZSA9IGNyZWF0ZVBlcmlvZGljTm90ZTtcbmV4cG9ydHMuY3JlYXRlUXVhcnRlcmx5Tm90ZSA9IGNyZWF0ZVF1YXJ0ZXJseU5vdGU7XG5leHBvcnRzLmNyZWF0ZVdlZWtseU5vdGUgPSBjcmVhdGVXZWVrbHlOb3RlO1xuZXhwb3J0cy5jcmVhdGVZZWFybHlOb3RlID0gY3JlYXRlWWVhcmx5Tm90ZTtcbmV4cG9ydHMuZ2V0QWxsRGFpbHlOb3RlcyA9IGdldEFsbERhaWx5Tm90ZXM7XG5leHBvcnRzLmdldEFsbE1vbnRobHlOb3RlcyA9IGdldEFsbE1vbnRobHlOb3RlcztcbmV4cG9ydHMuZ2V0QWxsUXVhcnRlcmx5Tm90ZXMgPSBnZXRBbGxRdWFydGVybHlOb3RlcztcbmV4cG9ydHMuZ2V0QWxsV2Vla2x5Tm90ZXMgPSBnZXRBbGxXZWVrbHlOb3RlcztcbmV4cG9ydHMuZ2V0QWxsWWVhcmx5Tm90ZXMgPSBnZXRBbGxZZWFybHlOb3RlcztcbmV4cG9ydHMuZ2V0RGFpbHlOb3RlID0gZ2V0RGFpbHlOb3RlO1xuZXhwb3J0cy5nZXREYWlseU5vdGVTZXR0aW5ncyA9IGdldERhaWx5Tm90ZVNldHRpbmdzO1xuZXhwb3J0cy5nZXREYXRlRnJvbUZpbGUgPSBnZXREYXRlRnJvbUZpbGU7XG5leHBvcnRzLmdldERhdGVGcm9tUGF0aCA9IGdldERhdGVGcm9tUGF0aDtcbmV4cG9ydHMuZ2V0RGF0ZVVJRCA9IGdldERhdGVVSUQ7XG5leHBvcnRzLmdldE1vbnRobHlOb3RlID0gZ2V0TW9udGhseU5vdGU7XG5leHBvcnRzLmdldE1vbnRobHlOb3RlU2V0dGluZ3MgPSBnZXRNb250aGx5Tm90ZVNldHRpbmdzO1xuZXhwb3J0cy5nZXRQZXJpb2RpY05vdGVTZXR0aW5ncyA9IGdldFBlcmlvZGljTm90ZVNldHRpbmdzO1xuZXhwb3J0cy5nZXRRdWFydGVybHlOb3RlID0gZ2V0UXVhcnRlcmx5Tm90ZTtcbmV4cG9ydHMuZ2V0UXVhcnRlcmx5Tm90ZVNldHRpbmdzID0gZ2V0UXVhcnRlcmx5Tm90ZVNldHRpbmdzO1xuZXhwb3J0cy5nZXRUZW1wbGF0ZUluZm8gPSBnZXRUZW1wbGF0ZUluZm87XG5leHBvcnRzLmdldFdlZWtseU5vdGUgPSBnZXRXZWVrbHlOb3RlO1xuZXhwb3J0cy5nZXRXZWVrbHlOb3RlU2V0dGluZ3MgPSBnZXRXZWVrbHlOb3RlU2V0dGluZ3M7XG5leHBvcnRzLmdldFllYXJseU5vdGUgPSBnZXRZZWFybHlOb3RlO1xuZXhwb3J0cy5nZXRZZWFybHlOb3RlU2V0dGluZ3MgPSBnZXRZZWFybHlOb3RlU2V0dGluZ3M7XG4iLCIvLyBVbmlxdWUgSUQgY3JlYXRpb24gcmVxdWlyZXMgYSBoaWdoIHF1YWxpdHkgcmFuZG9tICMgZ2VuZXJhdG9yLiBJbiB0aGUgYnJvd3NlciB3ZSB0aGVyZWZvcmVcbi8vIHJlcXVpcmUgdGhlIGNyeXB0byBBUEkgYW5kIGRvIG5vdCBzdXBwb3J0IGJ1aWx0LWluIGZhbGxiYWNrIHRvIGxvd2VyIHF1YWxpdHkgcmFuZG9tIG51bWJlclxuLy8gZ2VuZXJhdG9ycyAobGlrZSBNYXRoLnJhbmRvbSgpKS5cbnZhciBnZXRSYW5kb21WYWx1ZXM7XG52YXIgcm5kczggPSBuZXcgVWludDhBcnJheSgxNik7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBybmcoKSB7XG4gIC8vIGxhenkgbG9hZCBzbyB0aGF0IGVudmlyb25tZW50cyB0aGF0IG5lZWQgdG8gcG9seWZpbGwgaGF2ZSBhIGNoYW5jZSB0byBkbyBzb1xuICBpZiAoIWdldFJhbmRvbVZhbHVlcykge1xuICAgIC8vIGdldFJhbmRvbVZhbHVlcyBuZWVkcyB0byBiZSBpbnZva2VkIGluIGEgY29udGV4dCB3aGVyZSBcInRoaXNcIiBpcyBhIENyeXB0byBpbXBsZW1lbnRhdGlvbi4gQWxzbyxcbiAgICAvLyBmaW5kIHRoZSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBjcnlwdG8gKG1zQ3J5cHRvKSBvbiBJRTExLlxuICAgIGdldFJhbmRvbVZhbHVlcyA9IHR5cGVvZiBjcnlwdG8gIT09ICd1bmRlZmluZWQnICYmIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMgJiYgY3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKGNyeXB0bykgfHwgdHlwZW9mIG1zQ3J5cHRvICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgbXNDcnlwdG8uZ2V0UmFuZG9tVmFsdWVzID09PSAnZnVuY3Rpb24nICYmIG1zQ3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKG1zQ3J5cHRvKTtcblxuICAgIGlmICghZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NyeXB0by5nZXRSYW5kb21WYWx1ZXMoKSBub3Qgc3VwcG9ydGVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkI2dldHJhbmRvbXZhbHVlcy1ub3Qtc3VwcG9ydGVkJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGdldFJhbmRvbVZhbHVlcyhybmRzOCk7XG59IiwiZXhwb3J0IGRlZmF1bHQgL14oPzpbMC05YS1mXXs4fS1bMC05YS1mXXs0fS1bMS01XVswLTlhLWZdezN9LVs4OWFiXVswLTlhLWZdezN9LVswLTlhLWZdezEyfXwwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDApJC9pOyIsImltcG9ydCBSRUdFWCBmcm9tICcuL3JlZ2V4LmpzJztcblxuZnVuY3Rpb24gdmFsaWRhdGUodXVpZCkge1xuICByZXR1cm4gdHlwZW9mIHV1aWQgPT09ICdzdHJpbmcnICYmIFJFR0VYLnRlc3QodXVpZCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHZhbGlkYXRlOyIsImltcG9ydCB2YWxpZGF0ZSBmcm9tICcuL3ZhbGlkYXRlLmpzJztcbi8qKlxuICogQ29udmVydCBhcnJheSBvZiAxNiBieXRlIHZhbHVlcyB0byBVVUlEIHN0cmluZyBmb3JtYXQgb2YgdGhlIGZvcm06XG4gKiBYWFhYWFhYWC1YWFhYLVhYWFgtWFhYWC1YWFhYWFhYWFhYWFhcbiAqL1xuXG52YXIgYnl0ZVRvSGV4ID0gW107XG5cbmZvciAodmFyIGkgPSAwOyBpIDwgMjU2OyArK2kpIHtcbiAgYnl0ZVRvSGV4LnB1c2goKGkgKyAweDEwMCkudG9TdHJpbmcoMTYpLnN1YnN0cigxKSk7XG59XG5cbmZ1bmN0aW9uIHN0cmluZ2lmeShhcnIpIHtcbiAgdmFyIG9mZnNldCA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDogMDtcbiAgLy8gTm90ZTogQmUgY2FyZWZ1bCBlZGl0aW5nIHRoaXMgY29kZSEgIEl0J3MgYmVlbiB0dW5lZCBmb3IgcGVyZm9ybWFuY2VcbiAgLy8gYW5kIHdvcmtzIGluIHdheXMgeW91IG1heSBub3QgZXhwZWN0LiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkL3B1bGwvNDM0XG4gIHZhciB1dWlkID0gKGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgMF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxXV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDJdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgM11dICsgJy0nICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA0XV0gKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDVdXSArICctJyArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgNl1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyA3XV0gKyAnLScgKyBieXRlVG9IZXhbYXJyW29mZnNldCArIDhdXSArIGJ5dGVUb0hleFthcnJbb2Zmc2V0ICsgOV1dICsgJy0nICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxMF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxMV1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxMl1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxM11dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxNF1dICsgYnl0ZVRvSGV4W2FycltvZmZzZXQgKyAxNV1dKS50b0xvd2VyQ2FzZSgpOyAvLyBDb25zaXN0ZW5jeSBjaGVjayBmb3IgdmFsaWQgVVVJRC4gIElmIHRoaXMgdGhyb3dzLCBpdCdzIGxpa2VseSBkdWUgdG8gb25lXG4gIC8vIG9mIHRoZSBmb2xsb3dpbmc6XG4gIC8vIC0gT25lIG9yIG1vcmUgaW5wdXQgYXJyYXkgdmFsdWVzIGRvbid0IG1hcCB0byBhIGhleCBvY3RldCAobGVhZGluZyB0b1xuICAvLyBcInVuZGVmaW5lZFwiIGluIHRoZSB1dWlkKVxuICAvLyAtIEludmFsaWQgaW5wdXQgdmFsdWVzIGZvciB0aGUgUkZDIGB2ZXJzaW9uYCBvciBgdmFyaWFudGAgZmllbGRzXG5cbiAgaWYgKCF2YWxpZGF0ZSh1dWlkKSkge1xuICAgIHRocm93IFR5cGVFcnJvcignU3RyaW5naWZpZWQgVVVJRCBpcyBpbnZhbGlkJyk7XG4gIH1cblxuICByZXR1cm4gdXVpZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3RyaW5naWZ5OyIsImltcG9ydCBybmcgZnJvbSAnLi9ybmcuanMnO1xuaW1wb3J0IHN0cmluZ2lmeSBmcm9tICcuL3N0cmluZ2lmeS5qcyc7XG5cbmZ1bmN0aW9uIHY0KG9wdGlvbnMsIGJ1Ziwgb2Zmc2V0KSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICB2YXIgcm5kcyA9IG9wdGlvbnMucmFuZG9tIHx8IChvcHRpb25zLnJuZyB8fCBybmcpKCk7IC8vIFBlciA0LjQsIHNldCBiaXRzIGZvciB2ZXJzaW9uIGFuZCBgY2xvY2tfc2VxX2hpX2FuZF9yZXNlcnZlZGBcblxuICBybmRzWzZdID0gcm5kc1s2XSAmIDB4MGYgfCAweDQwO1xuICBybmRzWzhdID0gcm5kc1s4XSAmIDB4M2YgfCAweDgwOyAvLyBDb3B5IGJ5dGVzIHRvIGJ1ZmZlciwgaWYgcHJvdmlkZWRcblxuICBpZiAoYnVmKSB7XG4gICAgb2Zmc2V0ID0gb2Zmc2V0IHx8IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIHtcbiAgICAgIGJ1ZltvZmZzZXQgKyBpXSA9IHJuZHNbaV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIHJldHVybiBzdHJpbmdpZnkocm5kcyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHY0OyIsImltcG9ydCB7IG5vcm1hbGl6ZVBhdGggfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCB7IGdldERhaWx5Tm90ZVNldHRpbmdzIH0gZnJvbSBcIm9ic2lkaWFuLWRhaWx5LW5vdGVzLWludGVyZmFjZVwiO1xuXG5cbi8vISBBbGwgb2YgdGhlc2UgbWV0aG9kcyBhcmUgdGFrZW4gZnJvbSBodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9vYnNpZGlhbi1kYWlseS1ub3Rlcy1pbnRlcmZhY2UuXG5mdW5jdGlvbiBqb2luKC4uLnBhcnRTZWdtZW50czogc3RyaW5nW10pOiBzdHJpbmcge1xuICAgIC8vIFNwbGl0IHRoZSBpbnB1dHMgaW50byBhIGxpc3Qgb2YgcGF0aCBjb21tYW5kcy5cbiAgICBsZXQgcGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSBwYXJ0U2VnbWVudHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHBhcnRzID0gcGFydHMuY29uY2F0KHBhcnRTZWdtZW50c1tpXS5zcGxpdChcIi9cIikpO1xuICAgIH1cbiAgICAvLyBJbnRlcnByZXQgdGhlIHBhdGggY29tbWFuZHMgdG8gZ2V0IHRoZSBuZXcgcmVzb2x2ZWQgcGF0aC5cbiAgICBjb25zdCBuZXdQYXJ0cyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwLCBsID0gcGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHBhcnQgPSBwYXJ0c1tpXTtcbiAgICAgICAgLy8gUmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNsYXNoZXNcbiAgICAgICAgLy8gQWxzbyByZW1vdmUgXCIuXCIgc2VnbWVudHNcbiAgICAgICAgaWYgKCFwYXJ0IHx8IHBhcnQgPT09IFwiLlwiKSBjb250aW51ZTtcbiAgICAgICAgLy8gUHVzaCBuZXcgcGF0aCBzZWdtZW50cy5cbiAgICAgICAgZWxzZSBuZXdQYXJ0cy5wdXNoKHBhcnQpO1xuICAgIH1cbiAgICAvLyBQcmVzZXJ2ZSB0aGUgaW5pdGlhbCBzbGFzaCBpZiB0aGVyZSB3YXMgb25lLlxuICAgIGlmIChwYXJ0c1swXSA9PT0gXCJcIikgbmV3UGFydHMudW5zaGlmdChcIlwiKTtcbiAgICAvLyBUdXJuIGJhY2sgaW50byBhIHNpbmdsZSBzdHJpbmcgcGF0aC5cbiAgICByZXR1cm4gbmV3UGFydHMuam9pbihcIi9cIik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE5vdGVQYXRoKFxuICAgIGRpcmVjdG9yeTogc3RyaW5nLFxuICAgIGZpbGVuYW1lOiBzdHJpbmdcbik6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKCFmaWxlbmFtZS5lbmRzV2l0aChcIi5tZFwiKSkge1xuICAgICAgICBmaWxlbmFtZSArPSBcIi5tZFwiO1xuICAgIH1cbiAgICBjb25zdCBwYXRoID0gbm9ybWFsaXplUGF0aChqb2luKGRpcmVjdG9yeSwgZmlsZW5hbWUpKTtcblxuICAgIGF3YWl0IGVuc3VyZUZvbGRlckV4aXN0cyhwYXRoKTtcblxuICAgIHJldHVybiBwYXRoO1xufVxuXG5hc3luYyBmdW5jdGlvbiBlbnN1cmVGb2xkZXJFeGlzdHMocGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZGlycyA9IHBhdGgucmVwbGFjZSgvXFxcXC9nLCBcIi9cIikuc3BsaXQoXCIvXCIpO1xuICAgIGRpcnMucG9wKCk7IC8vIHJlbW92ZSBiYXNlbmFtZVxuXG4gICAgaWYgKGRpcnMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGRpciA9IGpvaW4oLi4uZGlycyk7XG4gICAgICAgIGlmICghKHdpbmRvdyBhcyBhbnkpLmFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgoZGlyKSkge1xuICAgICAgICAgICAgYXdhaXQgKHdpbmRvdyBhcyBhbnkpLmFwcC52YXVsdC5jcmVhdGVGb2xkZXIoZGlyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldERhaWx5Tm90ZVBhdGgoZGF0ZTogYW55KTogUHJvbWlzZTxzdHJpbmc+IHtcblxuICAgIGNvbnN0IHsgZm9ybWF0LCBmb2xkZXIgfSA9IGdldERhaWx5Tm90ZVNldHRpbmdzKCk7XG5cbiAgICBjb25zdCBmaWxlbmFtZSA9IGRhdGUuZm9ybWF0KGZvcm1hdCk7XG4gICAgY29uc3Qgbm9ybWFsaXplZFBhdGggPSBhd2FpdCBnZXROb3RlUGF0aChmb2xkZXIsIGZpbGVuYW1lKTtcbiAgICByZXR1cm4gbm9ybWFsaXplZFBhdGg7XG59IiwiaW1wb3J0IHsgQ29tbWFuZCwgRnV6enlTdWdnZXN0TW9kYWwgfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBBZHZhbmNlZFVSSSBmcm9tIFwiLi4vbWFpblwiO1xuXG5leHBvcnQgY2xhc3MgQ29tbWFuZE1vZGFsIGV4dGVuZHMgRnV6enlTdWdnZXN0TW9kYWw8Q29tbWFuZD4ge1xuICAgIHBsdWdpbjogQWR2YW5jZWRVUkk7XG4gICAgZmlsZTogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKHBsdWdpbjogQWR2YW5jZWRVUkksIGZpbGU/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocGx1Z2luLmFwcCk7XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB0aGlzLmZpbGUgPSBmaWxlO1xuICAgIH1cblxuICAgIGdldEl0ZW1zKCk6IENvbW1hbmRbXSB7XG4gICAgICAgIGNvbnN0IHJhd0NvbW1hbmRzID0gdGhpcy5hcHAuY29tbWFuZHMuY29tbWFuZHM7XG4gICAgICAgIGNvbnN0IGNvbW1hbmRzOiBDb21tYW5kW10gPSBPYmplY3Qua2V5cyhyYXdDb21tYW5kcykubWFwKGUgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHsgaWQ6IHJhd0NvbW1hbmRzW2VdLmlkLCBuYW1lOiByYXdDb21tYW5kc1tlXS5uYW1lIH07XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gY29tbWFuZHM7XG4gICAgfVxuXG4gICAgZ2V0SXRlbVRleHQoaXRlbTogQ29tbWFuZCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtLm5hbWU7XG4gICAgfVxuXG4gICAgb25DaG9vc2VJdGVtKGl0ZW06IENvbW1hbmQsIF86IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMucGx1Z2luLmNvcHlVUkkoe1xuICAgICAgICAgICAgZmlsZXBhdGg6IHRoaXMuZmlsZSxcbiAgICAgICAgICAgIGNvbW1hbmRpZDogaXRlbS5pZFxuICAgICAgICB9KTtcbiAgICB9XG59IiwiaW1wb3J0IHsgU3VnZ2VzdE1vZGFsIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgQWR2YW5jZWRVUkkgZnJvbSBcIi4uL21haW5cIjtcbmltcG9ydCB7IEVudGVyRGF0YSwgUGFyYW1ldGVycyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgRW50ZXJEYXRhTW9kYWwgZXh0ZW5kcyBTdWdnZXN0TW9kYWw8RW50ZXJEYXRhPiB7XG4gICAgcGx1Z2luOiBBZHZhbmNlZFVSSTtcbiAgICAvL251bGwgaWYgZm9yIG5vcm1hbCB3cml0ZSBtb2RlLCBpdHMgbm90IGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpYWwgbW9kZSBsaWtlIFwiYXBwZW5kXCIgb3IgXCJwcmVwZW5kXCJcbiAgICBtb2RlcyA9IFtudWxsLCBcIm92ZXJ3cml0ZVwiLCBcImFwcGVuZFwiLCBcInByZXBlbmRcIl07XG5cbiAgICBjb25zdHJ1Y3RvcihwbHVnaW46IEFkdmFuY2VkVVJJLCBwcml2YXRlIGZpbGU/OiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgc3VwZXIocGx1Z2luLmFwcCk7XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB0aGlzLnNldFBsYWNlaG9sZGVyKFwiVHlwZSB5b3VyIGRhdGEgdG8gYmUgd3JpdHRlbiB0byB0aGUgZmlsZSBvciBsZWF2ZSBpdCBlbXB0eSB0byBqdXN0IG9wZW4gaXRcIik7XG4gICAgfVxuXG5cbiAgICBnZXRTdWdnZXN0aW9ucyhxdWVyeTogc3RyaW5nKTogRW50ZXJEYXRhW10ge1xuICAgICAgICBpZiAocXVlcnkgPT0gXCJcIikgcXVlcnkgPSBudWxsO1xuXG4gICAgICAgIGxldCBzdWdnZXN0aW9uczogRW50ZXJEYXRhW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBtb2RlIG9mIHRoaXMubW9kZXMpIHtcbiAgICAgICAgICAgIGlmICghKG1vZGUgPT09IFwib3ZlcndyaXRlXCIgJiYgIXF1ZXJ5KSkge1xuICAgICAgICAgICAgICAgIGxldCBkaXNwbGF5OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgaWYgKHF1ZXJ5KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5ID0gYFdyaXRlIFwiJHtxdWVyeX1cIiBpbiAke21vZGV9IG1vZGVgO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSA9IGBXcml0ZSBcIiR7cXVlcnl9XCJgO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgPSBgT3BlbiBpbiAke21vZGV9IG1vZGVgO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheSA9IGBPcGVuYDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdWdnZXN0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGRpc3BsYXksXG4gICAgICAgICAgICAgICAgICAgIG1vZGU6IG1vZGUsXG4gICAgICAgICAgICAgICAgICAgIGZ1bmM6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5jb3B5VVJJKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXBhdGg6IHRoaXMuZmlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG1vZGUgYXMgUGFyYW1ldGVyc1tcIm1vZGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uY29weVVSSSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhaWx5OiBcInRydWVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcXVlcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU6IG1vZGUgYXMgUGFyYW1ldGVyc1tcIm1vZGVcIl1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1Z2dlc3Rpb25zO1xuICAgIH1cblxuICAgIHJlbmRlclN1Z2dlc3Rpb24odmFsdWU6IEVudGVyRGF0YSwgZWw6IEhUTUxFbGVtZW50KTogdm9pZCB7XG4gICAgICAgIGVsLmlubmVyVGV4dCA9IHZhbHVlLmRpc3BsYXk7XG4gICAgfTtcblxuICAgIG9uQ2hvb3NlU3VnZ2VzdGlvbihpdGVtOiBFbnRlckRhdGEsIF86IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGl0ZW0uZnVuYygpO1xuICAgIH07XG59XG4iLCJpbXBvcnQgeyBGdXp6eVN1Z2dlc3RNb2RhbCB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IEFkdmFuY2VkVVJJIGZyb20gXCIuLi9tYWluXCI7XG5pbXBvcnQgeyBGaWxlTW9kYWxEYXRhIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBGaWxlTW9kYWwgZXh0ZW5kcyBGdXp6eVN1Z2dlc3RNb2RhbDxGaWxlTW9kYWxEYXRhPiB7XG4gICAgcGx1Z2luOiBBZHZhbmNlZFVSSTtcbiAgICBjb25zdHJ1Y3RvcihwbHVnaW46IEFkdmFuY2VkVVJJLCBwcml2YXRlIHBsYWNlSG9sZGVyOiBzdHJpbmcsIHByaXZhdGUgYWxsb3dOb0ZpbGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIHN1cGVyKHBsdWdpbi5hcHApO1xuICAgICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgICAgICAgdGhpcy5zZXRQbGFjZWhvbGRlcih0aGlzLnBsYWNlSG9sZGVyKTtcbiAgICB9XG5cbiAgICBnZXRJdGVtcygpOiBGaWxlTW9kYWxEYXRhW10ge1xuICAgICAgICBsZXQgc3BlY2lhbEl0ZW1zOiBGaWxlTW9kYWxEYXRhW10gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMuYWxsb3dOb0ZpbGUpIHtcbiAgICAgICAgICAgIHNwZWNpYWxJdGVtcy5wdXNoKHsgZGlzcGxheTogXCI8RG9uJ3Qgc3BlY2lmeSBhIGZpbGU+XCIsIHNvdXJjZTogdW5kZWZpbmVkIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgc3BlY2lhbEl0ZW1zLnB1c2goeyBkaXNwbGF5OiBcIjxDdXJyZW50IGZpbGU+XCIsIHNvdXJjZTogZmlsZS5wYXRoIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbLi4uc3BlY2lhbEl0ZW1zLCAuLi50aGlzLmFwcC52YXVsdC5nZXRGaWxlcygpLm1hcChlID0+IHsgcmV0dXJuIHsgZGlzcGxheTogZS5wYXRoLCBzb3VyY2U6IGUucGF0aCB9OyB9KV07XG4gICAgfVxuXG4gICAgZ2V0SXRlbVRleHQoaXRlbTogRmlsZU1vZGFsRGF0YSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtLmRpc3BsYXk7XG4gICAgfVxuXG4gICAgb25DaG9vc2VJdGVtKGl0ZW06IEZpbGVNb2RhbERhdGEsIGV2dDogTW91c2VFdmVudCB8IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcblxuICAgIH1cbn1cbiIsImltcG9ydCB7IFN1Z2dlc3RNb2RhbCB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IEFkdmFuY2VkVVJJIGZyb20gXCIuLi9tYWluXCI7XG5pbXBvcnQgeyBTZWFyY2hNb2RhbERhdGEgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuZXhwb3J0IGNsYXNzIFJlcGxhY2VNb2RhbCBleHRlbmRzIFN1Z2dlc3RNb2RhbDxzdHJpbmc+IHtcbiAgICBwbHVnaW46IEFkdmFuY2VkVVJJO1xuICAgIGVtcHR5VGV4dCA9IFwiRW1wdHkgdGV4dCAocmVwbGFjZSB3aXRoIG5vdGhpbmcpXCI7XG4gICAgY29uc3RydWN0b3IocGx1Z2luOiBBZHZhbmNlZFVSSSwgcHJpdmF0ZSBzZWFyY2g6IFNlYXJjaE1vZGFsRGF0YSwgcHJpdmF0ZSBmaWxlcGF0aDogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHBsdWdpbi5hcHApO1xuICAgICAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgICAgICAgdGhpcy5zZXRQbGFjZWhvbGRlcihcIlJlcGxhY2VtZW50IHRleHRcIik7XG4gICAgfVxuXG5cbiAgICBnZXRTdWdnZXN0aW9ucyhxdWVyeTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAocXVlcnkgPT09IFwiXCIpIHtcbiAgICAgICAgICAgIHF1ZXJ5ID0gdGhpcy5lbXB0eVRleHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtxdWVyeV07XG4gICAgfVxuXG4gICAgcmVuZGVyU3VnZ2VzdGlvbih2YWx1ZTogc3RyaW5nLCBlbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgZWwuaW5uZXJUZXh0ID0gdmFsdWU7XG4gICAgfTtcblxuICAgIG9uQ2hvb3NlU3VnZ2VzdGlvbihpdGVtOiBzdHJpbmcsIF86IE1vdXNlRXZlbnQgfCBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaC5pc1JlZ0V4KSB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5jb3B5VVJJKHtcbiAgICAgICAgICAgICAgICBmaWxlcGF0aDogdGhpcy5maWxlcGF0aCxcbiAgICAgICAgICAgICAgICBzZWFyY2hyZWdleDogdGhpcy5zZWFyY2guc291cmNlLFxuICAgICAgICAgICAgICAgIHJlcGxhY2U6IGl0ZW0gPT0gdGhpcy5lbXB0eVRleHQgPyBcIlwiIDogaXRlbVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5jb3B5VVJJKHtcbiAgICAgICAgICAgICAgICBmaWxlcGF0aDogdGhpcy5maWxlcGF0aCxcbiAgICAgICAgICAgICAgICBzZWFyY2g6IHRoaXMuc2VhcmNoLnNvdXJjZSxcbiAgICAgICAgICAgICAgICByZXBsYWNlOiBpdGVtID09IHRoaXMuZW1wdHlUZXh0ID8gXCJcIiA6IGl0ZW1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICB9O1xufVxuIiwiaW1wb3J0IHsgU3VnZ2VzdE1vZGFsIH0gZnJvbSBcIm9ic2lkaWFuXCI7XG5pbXBvcnQgQWR2YW5jZWRVUkkgZnJvbSBcIi4uL21haW5cIjtcbmltcG9ydCB7IFNlYXJjaE1vZGFsRGF0YSB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgU2VhcmNoTW9kYWwgZXh0ZW5kcyBTdWdnZXN0TW9kYWw8U2VhcmNoTW9kYWxEYXRhPiB7XG4gICAgcGx1Z2luOiBBZHZhbmNlZFVSSTtcblxuICAgIGNvbnN0cnVjdG9yKHBsdWdpbjogQWR2YW5jZWRVUkkpIHtcbiAgICAgICAgc3VwZXIocGx1Z2luLmFwcCk7XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgICAgICB0aGlzLnNldFBsYWNlaG9sZGVyKFwiU2VhcmNoZWQgdGV4dC4gUmVnRXggaXMgc3VwcG9ydGVkXCIpO1xuICAgIH1cblxuXG4gICAgZ2V0U3VnZ2VzdGlvbnMocXVlcnk6IHN0cmluZyk6IFNlYXJjaE1vZGFsRGF0YVtdIHtcbiAgICAgICAgaWYgKHF1ZXJ5ID09PSBcIlwiKSB7XG4gICAgICAgICAgICBxdWVyeSA9IFwiLi4uXCI7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlZ2V4OiBSZWdFeHA7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZWdleCA9IG5ldyBSZWdFeHAocXVlcnkpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikgeyB9XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgc291cmNlOiBxdWVyeSxcbiAgICAgICAgICAgICAgICBpc1JlZ0V4OiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBxdWVyeVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHF1ZXJ5LFxuICAgICAgICAgICAgICAgIGRpc3BsYXk6IHJlZ2V4ID8gYEFzIFJlZ0V4OiAke3F1ZXJ5fWAgOiBgQ2FuJ3QgcGFyc2UgUmVnRXhgLFxuICAgICAgICAgICAgICAgIGlzUmVnRXg6IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICByZW5kZXJTdWdnZXN0aW9uKHZhbHVlOiBTZWFyY2hNb2RhbERhdGEsIGVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgICAgICBlbC5pbm5lclRleHQgPSB2YWx1ZS5kaXNwbGF5O1xuICAgIH07XG5cbiAgICBvbkNob29zZVN1Z2dlc3Rpb24oaXRlbTogU2VhcmNoTW9kYWxEYXRhLCBfOiBNb3VzZUV2ZW50IHwgS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuXG4gICAgfTtcbn1cbiIsImltcG9ydCB7IEFwcCwgUGx1Z2luU2V0dGluZ1RhYiwgU2V0dGluZyB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IEFkdmFuY2VkVVJJIGZyb20gXCIuL21haW5cIjtcblxuZXhwb3J0IGNsYXNzIFNldHRpbmdzVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XG4gICAgcGx1Z2luOiBBZHZhbmNlZFVSSTtcbiAgICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBBZHZhbmNlZFVSSSkge1xuICAgICAgICBzdXBlcihhcHAsIHBsdWdpbik7XG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xuICAgIH1cblxuICAgIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgICAgIGxldCB7IGNvbnRhaW5lckVsIH0gPSB0aGlzO1xuICAgICAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuICAgICAgICBjb250YWluZXJFbC5jcmVhdGVFbChcImgyXCIsIHsgdGV4dDogdGhpcy5wbHVnaW4ubWFuaWZlc3QubmFtZSB9KTtcblxuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgICAgICAgIC5zZXROYW1lKFwiT3BlbiBmaWxlIG9uIHdyaXRlXCIpXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKGNiID0+IGNiLm9uQ2hhbmdlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5vcGVuRmlsZU9uV3JpdGUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgIH0pLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm9wZW5GaWxlT25Xcml0ZSkpO1xuXG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoXCJPcGVuIGZpbGUgb24gd3JpdGUgaW4gYSBuZXcgcGFuZVwiKVxuICAgICAgICAgICAgLnNldERpc2FibGVkKHRoaXMucGx1Z2luLnNldHRpbmdzLm9wZW5GaWxlT25Xcml0ZSlcbiAgICAgICAgICAgIC5hZGRUb2dnbGUoY2IgPT4gY2Iub25DaGFuZ2UodmFsdWUgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLm9wZW5GaWxlT25Xcml0ZUluTmV3UGFuZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xuICAgICAgICAgICAgfSkuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3Mub3BlbkZpbGVPbldyaXRlSW5OZXdQYW5lKSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZShcIk9wZW4gZGFpbHkgbm90ZSBpbiBhIG5ldyBwYW5lXCIpXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKGNiID0+IGNiLm9uQ2hhbmdlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5vcGVuRGFpbHlJbk5ld1BhbmUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgIH0pLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm9wZW5EYWlseUluTmV3UGFuZSkpO1xuXG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoXCJPcGVuIGZpbGUgd2l0aG91dCB3cml0ZSBpbiBuZXcgcGFuZVwiKVxuICAgICAgICAgICAgLmFkZFRvZ2dsZShjYiA9PiBjYi5vbkNoYW5nZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3Mub3BlbkZpbGVXaXRob3V0V3JpdGVJbk5ld1BhbmUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgIH0pLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLm9wZW5GaWxlV2l0aG91dFdyaXRlSW5OZXdQYW5lKSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZShcIlVzZSBVSUQgaW5zdGVhZCBvZiBmaWxlIHBhdGhzXCIpXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKGNiID0+IGNiLm9uQ2hhbmdlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy51c2VVSUQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcbiAgICAgICAgICAgIH0pLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnVzZVVJRCkpO1xuXG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxuICAgICAgICAgICAgLnNldE5hbWUoXCJVSUQgZmllbGQgaW4gZnJvbnRtYXR0ZXJcIilcbiAgICAgICAgICAgIC5hZGRUZXh0KGNiID0+IGNiLm9uQ2hhbmdlKHZhbHVlID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5pZEZpZWxkID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgICAgICB9KS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5pZEZpZWxkKSk7XG5cbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXG4gICAgICAgICAgICAuc2V0TmFtZSgnRG9uYXRlJylcbiAgICAgICAgICAgIC5zZXREZXNjKCdJZiB5b3UgbGlrZSB0aGlzIFBsdWdpbiwgY29uc2lkZXIgZG9uYXRpbmcgdG8gc3VwcG9ydCBjb250aW51ZWQgZGV2ZWxvcG1lbnQuJylcbiAgICAgICAgICAgIC5hZGRCdXR0b24oKGJ0KSA9PiB7XG4gICAgICAgICAgICAgICAgYnQuYnV0dG9uRWwub3V0ZXJIVE1MID0gXCI8YSBocmVmPSdodHRwczovL2tvLWZpLmNvbS9GMUYxOTVJUTUnIHRhcmdldD0nX2JsYW5rJz48aW1nIGhlaWdodD0nMzYnIHN0eWxlPSdib3JkZXI6MHB4O2hlaWdodDozNnB4Oycgc3JjPSdodHRwczovL2Nkbi5rby1maS5jb20vY2RuL2tvZmkzLnBuZz92PTMnIGJvcmRlcj0nMCcgYWx0PSdCdXkgTWUgYSBDb2ZmZWUgYXQga28tZmkuY29tJyAvPjwvYT5cIjtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cbn1cbiIsImltcG9ydCB7IGJhc2U2NFRvQXJyYXlCdWZmZXIsIENhY2hlZE1ldGFkYXRhLCBNYXJrZG93blZpZXcsIG5vcm1hbGl6ZVBhdGgsIE5vdGljZSwgcGFyc2VGcm9udE1hdHRlckFsaWFzZXMsIHBhcnNlRnJvbnRNYXR0ZXJFbnRyeSwgUGx1Z2luLCBUQWJzdHJhY3RGaWxlLCBURmlsZSwgVEZvbGRlciB9IGZyb20gXCJvYnNpZGlhblwiO1xuaW1wb3J0IHsgc3RyaXBNRCB9IGZyb20gXCJvYnNpZGlhbi1jb21tdW5pdHktbGliXCI7XG5pbXBvcnQgeyBhcHBIYXNEYWlseU5vdGVzUGx1Z2luTG9hZGVkLCBjcmVhdGVEYWlseU5vdGUsIGdldEFsbERhaWx5Tm90ZXMsIGdldERhaWx5Tm90ZSB9IGZyb20gXCJvYnNpZGlhbi1kYWlseS1ub3Rlcy1pbnRlcmZhY2VcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgZ2V0RGFpbHlOb3RlUGF0aCB9IGZyb20gXCIuL2RhaWx5X25vdGVfdXRpbHNcIjtcbmltcG9ydCB7IENvbW1hbmRNb2RhbCB9IGZyb20gXCIuL21vZGFscy9jb21tYW5kX21vZGFsXCI7XG5pbXBvcnQgeyBFbnRlckRhdGFNb2RhbCB9IGZyb20gXCIuL21vZGFscy9lbnRlcl9kYXRhX21vZGFsXCI7XG5pbXBvcnQgeyBGaWxlTW9kYWwgfSBmcm9tIFwiLi9tb2RhbHMvZmlsZV9tb2RhbFwiO1xuaW1wb3J0IHsgUmVwbGFjZU1vZGFsIH0gZnJvbSBcIi4vbW9kYWxzL3JlcGxhY2VfbW9kYWxcIjtcbmltcG9ydCB7IFNlYXJjaE1vZGFsIH0gZnJvbSBcIi4vbW9kYWxzL3NlYXJjaF9tb2RhbFwiO1xuaW1wb3J0IHsgU2V0dGluZ3NUYWIgfSBmcm9tIFwiLi9zZXR0aW5nc1wiO1xuaW1wb3J0IHsgQWR2YW5jZWRVUklTZXR0aW5ncywgRmlsZU1vZGFsRGF0YSwgSG9va1BhcmFtZXRlcnMsIFBhcmFtZXRlcnMsIFNlYXJjaE1vZGFsRGF0YSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmNvbnN0IERFRkFVTFRfU0VUVElOR1M6IEFkdmFuY2VkVVJJU2V0dGluZ3MgPSB7XG4gICAgb3BlbkZpbGVPbldyaXRlOiB0cnVlLFxuICAgIG9wZW5EYWlseUluTmV3UGFuZTogZmFsc2UsXG4gICAgb3BlbkZpbGVPbldyaXRlSW5OZXdQYW5lOiBmYWxzZSxcbiAgICBvcGVuRmlsZVdpdGhvdXRXcml0ZUluTmV3UGFuZTogZmFsc2UsXG4gICAgaWRGaWVsZDogXCJpZFwiLFxuICAgIHVzZVVJRDogZmFsc2UsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZHZhbmNlZFVSSSBleHRlbmRzIFBsdWdpbiB7XG4gICAgc2V0dGluZ3M6IEFkdmFuY2VkVVJJU2V0dGluZ3M7XG4gICAgbGFzdFBhcmFtZXRlcnM/OiBPYmplY3Q7XG5cbiAgICBhc3luYyBvbmxvYWQoKSB7XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZFNldHRpbmdzKCk7XG4gICAgICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgU2V0dGluZ3NUYWIodGhpcy5hcHAsIHRoaXMpKTtcblxuXG4gICAgICAgIHRoaXMuYWRkQ29tbWFuZCh7XG4gICAgICAgICAgICBpZDogXCJjb3B5LXVyaS1jdXJyZW50LWZpbGVcIixcbiAgICAgICAgICAgIG5hbWU6IFwiY29weSBVUkkgZm9yIGZpbGUgd2l0aCBvcHRpb25zXCIsXG4gICAgICAgICAgICBjYWxsYmFjazogKCkgPT4gdGhpcy5oYW5kbGVDb3B5RmlsZVVSSShmYWxzZSlcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgICAgICAgIGlkOiBcImNvcHktdXJpLWN1cnJlbnQtZmlsZS1zaW1wbGVcIixcbiAgICAgICAgICAgIG5hbWU6IFwiY29weSBVUkkgZm9yIGN1cnJlbnQgZmlsZVwiLFxuICAgICAgICAgICAgY2FsbGJhY2s6ICgpID0+IHRoaXMuaGFuZGxlQ29weUZpbGVVUkkodHJ1ZSlcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgICAgICAgIGlkOiBcImNvcHktdXJpLWRhaWx5XCIsXG4gICAgICAgICAgICBuYW1lOiBcImNvcHkgVVJJIGZvciBkYWlseSBub3RlXCIsXG4gICAgICAgICAgICBjYWxsYmFjazogKCkgPT4gbmV3IEVudGVyRGF0YU1vZGFsKHRoaXMpLm9wZW4oKVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgICAgICAgaWQ6IFwiY29weS11cmktc2VhcmNoLWFuZC1yZXBsYWNlXCIsXG4gICAgICAgICAgICBuYW1lOiBcImNvcHkgVVJJIGZvciBzZWFyY2ggYW5kIHJlcGxhY2VcIixcbiAgICAgICAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZU1vZGFsID0gbmV3IEZpbGVNb2RhbCh0aGlzLCBcIlVzZWQgZmlsZSBmb3Igc2VhcmNoIGFuZCByZXBsYWNlXCIpO1xuICAgICAgICAgICAgICAgIGZpbGVNb2RhbC5vcGVuKCk7XG4gICAgICAgICAgICAgICAgZmlsZU1vZGFsLm9uQ2hvb3NlSXRlbSA9IChmaWxlUGF0aDogRmlsZU1vZGFsRGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWFyY2hNb2RhbCA9IG5ldyBTZWFyY2hNb2RhbCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoTW9kYWwub3BlbigpO1xuICAgICAgICAgICAgICAgICAgICBzZWFyY2hNb2RhbC5vbkNob29zZVN1Z2dlc3Rpb24gPSAoaXRlbTogU2VhcmNoTW9kYWxEYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgUmVwbGFjZU1vZGFsKHRoaXMsIGl0ZW0sIGZpbGVQYXRoPy5zb3VyY2UpLm9wZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHtcbiAgICAgICAgICAgIGlkOiBcImNvcHktdXJpLWNvbW1hbmRcIixcbiAgICAgICAgICAgIG5hbWU6IFwiY29weSBVUkkgZm9yIGNvbW1hbmRcIixcbiAgICAgICAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZU1vZGFsID0gbmV3IEZpbGVNb2RhbCh0aGlzLCBcIlNlbGVjdCBhIGZpbGUgdG8gYmUgb3BlbmVkIGJlZm9yZSBleGVjdXRpbmcgdGhlIGNvbW1hbmRcIik7XG4gICAgICAgICAgICAgICAgZmlsZU1vZGFsLm9wZW4oKTtcbiAgICAgICAgICAgICAgICBmaWxlTW9kYWwub25DaG9vc2VJdGVtID0gKGl0ZW06IEZpbGVNb2RhbERhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbmV3IENvbW1hbmRNb2RhbCh0aGlzLCBpdGVtPy5zb3VyY2UpLm9wZW4oKTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuXG4gICAgICAgIHRoaXMucmVnaXN0ZXJPYnNpZGlhblByb3RvY29sSGFuZGxlcihcImFkdmFuY2VkLXVyaVwiLCBhc3luYyAoZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGFyYW1ldGVycyA9IGUgYXMgdW5rbm93biBhcyBQYXJhbWV0ZXJzO1xuXG4gICAgICAgICAgICAvKiogQWxsb3dzIHdyaXRpbmcgdG8gbmV3IGNyZWF0ZWQgZGFpbHkgbm90ZSB3aXRob3V0IGFueSBgUGFyYW1ldGVycy5tb2RlYCAqL1xuICAgICAgICAgICAgbGV0IGNyZWF0ZWREYWlseU5vdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgcGFyYW1ldGVyIGluIHBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgICAocGFyYW1ldGVycyBhcyBhbnkpW3BhcmFtZXRlcl0gPSBkZWNvZGVVUklDb21wb25lbnQoKHBhcmFtZXRlcnMgYXMgYW55KVtwYXJhbWV0ZXJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubGFzdFBhcmFtZXRlcnMgPSB7IC4uLnBhcmFtZXRlcnMgfTtcbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLnVpZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IHRoaXMuZ2V0RmlsZUZyb21VSUQocGFyYW1ldGVycy51aWQpPy5wYXRoO1xuICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuZmlsZXBhdGggPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMudWlkID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLmZpbGVuYW1lKSB7XG4gICAgICAgICAgICAgICAgbGV0IGZpbGUgPSB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KHBhcmFtZXRlcnMuZmlsZW5hbWUsIFwiXCIpO1xuICAgICAgICAgICAgICAgIGlmICghZmlsZSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0TWFya2Rvd25GaWxlcygpLmZpbmQoZmlsZSA9PiBwYXJzZUZyb250TWF0dGVyQWxpYXNlcyh0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKS5mcm9udG1hdHRlcik/LmluY2x1ZGVzKHBhcmFtZXRlcnMuZmlsZW5hbWUpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50Rm9sZGVyID0gdGhpcy5hcHAuZmlsZU1hbmFnZXIuZ2V0TmV3RmlsZVBhcmVudCh0aGlzLmFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZi52aWV3LmZpbGU/LnBhdGgpO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmVudEZvbGRlclBhdGggPSBwYXJlbnRGb2xkZXIuaXNSb290KCkgPyBcIlwiIDogcGFyZW50Rm9sZGVyLnBhdGggKyBcIi9cIjtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmZpbGVwYXRoID0gZmlsZT8ucGF0aCA/PyAocGFyZW50Rm9sZGVyUGF0aCArIG5vcm1hbGl6ZVBhdGgocGFyYW1ldGVycy5maWxlbmFtZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMuZmlsZXBhdGgpIHtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmZpbGVwYXRoID0gbm9ybWFsaXplUGF0aChwYXJhbWV0ZXJzLmZpbGVwYXRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHBhcmFtZXRlcnMuZmlsZXBhdGgubGFzdEluZGV4T2YoXCIuXCIpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IHBhcmFtZXRlcnMuZmlsZXBhdGguc3Vic3RyaW5nKGluZGV4IDwgMCA/IHBhcmFtZXRlcnMuZmlsZXBhdGgubGVuZ3RoIDogaW5kZXgpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGV4dGVuc2lvbiA9PT0gXCJcIikge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmZpbGVwYXRoID0gcGFyYW1ldGVycy5maWxlcGF0aCArIFwiLm1kXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLmRhaWx5ID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIGlmICghYXBwSGFzRGFpbHlOb3Rlc1BsdWdpbkxvYWRlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJEYWlseSBub3RlcyBwbHVnaW4gaXMgbm90IGxvYWRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBtb21lbnQgPSB3aW5kb3cubW9tZW50KERhdGUubm93KCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFsbERhaWx5Tm90ZXMgPSBnZXRBbGxEYWlseU5vdGVzKCk7XG4gICAgICAgICAgICAgICAgbGV0IGRhaWx5Tm90ZSA9IGdldERhaWx5Tm90ZShtb21lbnQsIGFsbERhaWx5Tm90ZXMpO1xuICAgICAgICAgICAgICAgIGlmICghZGFpbHlOb3RlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vLyBQcmV2ZW50IGRhaWx5IG5vdGUgZnJvbSBiZWluZyBjcmVhdGVkIG9uIGV4aXN0aW5nIGNoZWNrXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLmV4aXN0cyA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuZmlsZXBhdGggPSBhd2FpdCBnZXREYWlseU5vdGVQYXRoKG1vbWVudCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYWlseU5vdGUgPSBhd2FpdCBjcmVhdGVEYWlseU5vdGUobW9tZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVsYXkgdG8gbGV0IE9ic2lkaWFuIGluZGV4IGFuZCBnZW5lcmF0ZSBDYWNoZWRNZXRhZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgbmV3IFByb21pc2UociA9PiBzZXRUaW1lb3V0KHIsIDUwMCkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkRGFpbHlOb3RlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZGFpbHlOb3RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5maWxlcGF0aCA9IGRhaWx5Tm90ZS5wYXRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLmNsaXBib2FyZCA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmRhdGEgPSBhd2FpdCBuYXZpZ2F0b3IuY2xpcGJvYXJkLnJlYWRUZXh0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzW1wiZW5hYmxlLXBsdWdpblwiXSB8fCBwYXJhbWV0ZXJzW1wiZGlzYWJsZS1wbHVnaW5cIl0pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVBsdWdpbk1hbmFnZW1lbnQocGFyYW1ldGVycyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVycy5mcm9udG1hdHRlcmtleSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRnJvbnRtYXR0ZXJLZXkocGFyYW1ldGVycyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVycy53b3Jrc3BhY2UgfHwgcGFyYW1ldGVycy5zYXZld29ya3NwYWNlID09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVXb3Jrc3BhY2UocGFyYW1ldGVycyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVycy5jb21tYW5kbmFtZSB8fCBwYXJhbWV0ZXJzLmNvbW1hbmRpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlQ29tbWFuZChwYXJhbWV0ZXJzKTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLmZpbGVwYXRoICYmIHBhcmFtZXRlcnMuZXhpc3RzID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRG9lc0ZpbGVFeGlzdChwYXJhbWV0ZXJzKTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLmRhdGEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVdyaXRlKHBhcmFtZXRlcnMsIGNyZWF0ZWREYWlseU5vdGUpO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlcnMuZmlsZXBhdGggJiYgcGFyYW1ldGVycy5oZWFkaW5nKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVPcGVuKHBhcmFtZXRlcnMpO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlcnMuZmlsZXBhdGggJiYgcGFyYW1ldGVycy5ibG9jaykge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlT3BlbihwYXJhbWV0ZXJzKTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmICgocGFyYW1ldGVycy5zZWFyY2ggfHwgcGFyYW1ldGVycy5zZWFyY2hyZWdleCkgJiYgcGFyYW1ldGVycy5yZXBsYWNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU2VhcmNoQW5kUmVwbGFjZShwYXJhbWV0ZXJzKTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLmZpbGVwYXRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVPcGVuKHBhcmFtZXRlcnMpO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlcnMuc2V0dGluZ2lkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVPcGVuU2V0dGluZ3MocGFyYW1ldGVycyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVycy51cGRhdGVwbHVnaW5zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVVcGRhdGVQbHVnaW5zKHBhcmFtZXRlcnMpO1xuXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyT2JzaWRpYW5Qcm90b2NvbEhhbmRsZXIoXG4gICAgICAgICAgICBcImhvb2stZ2V0LWFkdmFuY2VkLXVyaVwiLFxuICAgICAgICAgICAgYXN5bmMgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJzID0gZSBhcyB1bmtub3duIGFzIEhvb2tQYXJhbWV0ZXJzO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgcGFyYW1ldGVyIGluIHBhcmFtZXRlcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgKHBhcmFtZXRlcnMgYXMgYW55KVtwYXJhbWV0ZXJdID0gZGVjb2RlVVJJQ29tcG9uZW50KChwYXJhbWV0ZXJzIGFzIGFueSlbcGFyYW1ldGVyXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUxlYWYgPSB0aGlzLmFwcC53b3Jrc3BhY2UuYWN0aXZlTGVhZjtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYWN0aXZlTGVhZi52aWV3LmZpbGU7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUxlYWYgJiYgZmlsZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhvb2tTdWNjZXNzKHBhcmFtZXRlcnMsIGZpbGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHBhcmFtZXRlcnMsIHsgZXJyb3JNZXNzYWdlOiBcIk5vIGZpbGUgb3BlbmVkXCIgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5yZWdpc3RlckV2ZW50KFxuICAgICAgICAgICAgdGhpcy5hcHAud29ya3NwYWNlLm9uKCdmaWxlLW1lbnUnLCAobWVudSwgZmlsZSwgc291cmNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCEoc291cmNlID09PSBcInBhbmUtbW9yZS1vcHRpb25zXCIgfHwgc291cmNlID09PSBcInRhYi1oZWFkZXJcIiB8fCBzb3VyY2UgPT0gXCJmaWxlLWV4cGxvcmVyLWNvbnRleHQtbWVudVwiKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCEoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgbWVudS5hZGRJdGVtKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIC5zZXRUaXRsZShgQ29weSBBZHZhbmNlZCBVUklgKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldEljb24oJ2xpbmsnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnNldFNlY3Rpb24oXCJpbmZvXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAub25DbGljaygoXykgPT4gdGhpcy5oYW5kbGVDb3B5RmlsZVVSSSh0cnVlLCBmaWxlKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgYXN5bmMgaG9va1N1Y2Nlc3MocGFyYW1ldGVyczogUGFyYW1ldGVycywgZmlsZTogVEZpbGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFwYXJhbWV0ZXJzW1wieC1zdWNjZXNzXCJdKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgICAgIHRpdGxlOiBzdHJpcE1EKGZpbGUubmFtZSksXG4gICAgICAgICAgICBhZHZhbmNlZHVyaTogYXdhaXQgdGhpcy5nZW5lcmF0ZVVSSSh7IGZpbGVwYXRoOiBmaWxlLnBhdGggfSksXG4gICAgICAgICAgICB1cmxrZXk6IFwiYWR2YW5jZWR1cmlcIixcbiAgICAgICAgICAgIGZpbGV1cmk6IHRoaXMuZ2V0RmlsZVVyaShmaWxlKSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5zdWNjZXNzKHBhcmFtZXRlcnMsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIGdldEZpbGVVcmkoZmlsZTogVEZpbGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMuYXBwLnZhdWx0LmdldFJlc291cmNlUGF0aChmaWxlKSk7XG4gICAgICAgIHVybC5ob3N0ID0gXCJsb2NhbGhvc3Rob3N0bG9jYWxcIjtcbiAgICAgICAgdXJsLnByb3RvY29sID0gXCJmaWxlXCI7XG4gICAgICAgIHVybC5zZWFyY2ggPSBcIlwiO1xuXG4gICAgICAgIHVybC5wYXRobmFtZSA9IGRlY29kZVVSSUNvbXBvbmVudCh1cmwucGF0aG5hbWUpO1xuICAgICAgICBjb25zdCByZXMgPSB1cmwudG9TdHJpbmcoKS5yZXBsYWNlKFwiL2xvY2FsaG9zdGhvc3Rsb2NhbC9cIiwgXCIvXCIpO1xuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MocGFyYW1ldGVyczogUGFyYW1ldGVycywgb3B0aW9ucz86IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHBhcmFtZXRlcnNbXCJ4LXN1Y2Nlc3NcIl0pIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocGFyYW1ldGVyc1tcIngtc3VjY2Vzc1wiXSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHBhcmFtIGluIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICB1cmwuc2VhcmNoUGFyYW1zLnNldChwYXJhbSwgb3B0aW9uc1twYXJhbV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2luZG93Lm9wZW4odXJsLnRvU3RyaW5nKCkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmFpbHVyZShwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzLCBvcHRpb25zPzogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgICAgICBpZiAocGFyYW1ldGVyc1tcIngtZXJyb3JcIl0pIHtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwocGFyYW1ldGVyc1tcIngtZXJyb3JcIl0pO1xuICAgICAgICAgICAgZm9yIChjb25zdCBwYXJhbSBpbiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdXJsLnNlYXJjaFBhcmFtcy5zZXQocGFyYW0sIG9wdGlvbnNbcGFyYW1dKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKHVybC50b1N0cmluZygpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEZpbGVGcm9tVUlEKHVpZDogc3RyaW5nKTogVEZpbGUgfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBmaWxlcyA9IHRoaXMuYXBwLnZhdWx0LmdldEZpbGVzKCk7XG4gICAgICAgIGNvbnN0IGlkS2V5ID0gdGhpcy5zZXR0aW5ncy5pZEZpZWxkO1xuICAgICAgICByZXR1cm4gZmlsZXMuZmluZChmaWxlID0+IHBhcnNlRnJvbnRNYXR0ZXJFbnRyeSh0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKT8uZnJvbnRtYXR0ZXIsIGlkS2V5KSA9PSB1aWQpO1xuICAgIH1cblxuICAgIGhhbmRsZUZyb250bWF0dGVyS2V5KHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpIHtcbiAgICAgICAgY29uc3Qga2V5ID0gcGFyYW1ldGVycy5mcm9udG1hdHRlcmtleTtcbiAgICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldENhY2hlKHBhcmFtZXRlcnMuZmlsZXBhdGggPz8gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKS5wYXRoKS5mcm9udG1hdHRlcjtcblxuICAgICAgICBsZXQgcmVzOiBzdHJpbmc7XG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChcIltcIikgJiYga2V5LmVuZHNXaXRoKFwiXVwiKSkge1xuICAgICAgICAgICAgY29uc3QgbGlzdCA9IGtleS5zdWJzdHJpbmcoMSwga2V5Lmxlbmd0aCAtIDEpLnNwbGl0KFwiLFwiKTtcbiAgICAgICAgICAgIGxldCBjYWNoZTogYW55ID0gZnJvbnRtYXR0ZXI7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkge1xuICAgICAgICAgICAgICAgIGlmIChjYWNoZSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gcGFyc2VJbnQoaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSBOYU4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlID0gY2FjaGUuZmluZCgoZSkgPT4gZSA9PSBpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjYWNoZSA9IGNhY2hlW3BhcnNlSW50KGl0ZW0pXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjYWNoZSA9IGNhY2hlW2l0ZW1dO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlcyA9IGNhY2hlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzID0gZnJvbnRtYXR0ZXJba2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY29weVRleHQocmVzKTtcbiAgICB9XG5cbiAgICBoYW5kbGVXb3Jrc3BhY2UocGFyYW1ldGVyczogUGFyYW1ldGVycykge1xuICAgICAgICBjb25zdCB3b3Jrc3BhY2VzID0gdGhpcy5hcHAuaW50ZXJuYWxQbHVnaW5zPy5wbHVnaW5zPy53b3Jrc3BhY2VzO1xuICAgICAgICBpZiAoIXdvcmtzcGFjZXMpIHtcbiAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJDYW5ub3QgZmluZCBXb3Jrc3BhY2VzIHBsdWdpbi4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuXCIpO1xuICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHBhcmFtZXRlcnMpO1xuICAgICAgICB9IGVsc2UgaWYgKHdvcmtzcGFjZXMuZW5hYmxlZCkge1xuICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2F2ZXdvcmtzcGFjZSA9PSBcInRydWVcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IHdvcmtzcGFjZXMuaW5zdGFuY2UuYWN0aXZlV29ya3NwYWNlO1xuICAgICAgICAgICAgICAgIHdvcmtzcGFjZXMuaW5zdGFuY2Uuc2F2ZVdvcmtzcGFjZShhY3RpdmUpO1xuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoYFNhdmVkIGN1cnJlbnQgd29ya3NwYWNlIHRvICR7YWN0aXZlfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMud29ya3NwYWNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHdvcmtzcGFjZXMuaW5zdGFuY2UubG9hZFdvcmtzcGFjZShwYXJhbWV0ZXJzLndvcmtzcGFjZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN1Y2Nlc3MocGFyYW1ldGVycyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXcgTm90aWNlKFwiV29ya3NwYWNlcyBwbHVnaW4gaXMgbm90IGVuYWJsZWRcIik7XG4gICAgICAgICAgICB0aGlzLmZhaWx1cmUocGFyYW1ldGVycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVQbHVnaW5NYW5hZ2VtZW50KHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHBhcmFtZXRlcnNbXCJlbmFibGUtcGx1Z2luXCJdKSB7XG4gICAgICAgICAgICBjb25zdCBwbHVnaW5JZCA9IHBhcmFtZXRlcnNbXCJlbmFibGUtcGx1Z2luXCJdO1xuICAgICAgICAgICAgdGhpcy5hcHAucGx1Z2lucy5lbmFibGVQbHVnaW5BbmRTYXZlKHBsdWdpbklkKTtcbiAgICAgICAgICAgIG5ldyBOb3RpY2UoYEVuYWJsZWQgJHtwbHVnaW5JZH1gKTtcbiAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzW1wiZGlzYWJsZS1wbHVnaW5cIl0pIHtcbiAgICAgICAgICAgIGNvbnN0IHBsdWdpbklkID0gcGFyYW1ldGVyc1tcImRpc2FibGUtcGx1Z2luXCJdO1xuICAgICAgICAgICAgdGhpcy5hcHAucGx1Z2lucy5kaXNhYmxlUGx1Z2luQW5kU2F2ZShwbHVnaW5JZCk7XG4gICAgICAgICAgICBuZXcgTm90aWNlKGBEaXNhYmxlZCAke3BsdWdpbklkfWApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlQ29tbWFuZChwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKSB7XG4gICAgICAgIGlmIChwYXJhbWV0ZXJzLmZpbGVwYXRoKSB7XG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycy5tb2RlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMubW9kZSA9PSBcIm5ld1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpcnN0TGlua3BhdGhEZXN0KHBhcmFtZXRlcnMuZmlsZXBhdGgsIFwiL1wiKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5maWxlcGF0aCA9IHRoaXMuZ2V0QWx0ZXJuYXRpdmVGaWxlUGF0aChmaWxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmFwcC53b3Jrc3BhY2Uub3BlbkxpbmtUZXh0KHBhcmFtZXRlcnMuZmlsZXBhdGgsIFwiL1wiLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IHsgbW9kZTogXCJzb3VyY2VcIiB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gICAgICAgICAgICAgICAgaWYgKHZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZWRpdG9yID0gdmlldy5lZGl0b3I7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBlZGl0b3IuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMubW9kZSA9PT0gXCJhcHBlbmRcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNldFZhbHVlKGRhdGEgKyBcIlxcblwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gZWRpdG9yLmxpbmVDb3VudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNldEN1cnNvcih7IGNoOiAwLCBsaW5lOiBsaW5lcyB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLm1vZGUgPT09IFwicHJlcGVuZFwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0b3Iuc2V0VmFsdWUoXCJcXG5cIiArIGRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNldEN1cnNvcih7IGNoOiAwLCBsaW5lOiAwIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlcnMubW9kZSA9PT0gXCJvdmVyd3JpdGVcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yLnNldFZhbHVlKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLmxpbmUpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmFwcC53b3Jrc3BhY2Uub3BlbkxpbmtUZXh0KHBhcmFtZXRlcnMuZmlsZXBhdGgsIFwiL1wiLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgICAgICAgICAgc3RhdGU6IHsgbW9kZTogXCJzb3VyY2VcIiB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRDdXJzb3JJbkxpbmUocGFyYW1ldGVycy5saW5lKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAud29ya3NwYWNlLm9wZW5MaW5rVGV4dChwYXJhbWV0ZXJzLmZpbGVwYXRoLCBcIi9cIiwgdGhpcy5zZXR0aW5ncy5vcGVuRmlsZVdpdGhvdXRXcml0ZUluTmV3UGFuZSwgdGhpcy5nZXRWaWV3U3RhdGVGcm9tTW9kZShwYXJhbWV0ZXJzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtZXRlcnMuY29tbWFuZGlkKSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5jb21tYW5kcy5leGVjdXRlQ29tbWFuZEJ5SWQocGFyYW1ldGVycy5jb21tYW5kaWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlcnMuY29tbWFuZG5hbWUpIHtcbiAgICAgICAgICAgIGNvbnN0IHJhd0NvbW1hbmRzID0gdGhpcy5hcHAuY29tbWFuZHMuY29tbWFuZHM7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNvbW1hbmQgaW4gcmF3Q29tbWFuZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAocmF3Q29tbWFuZHNbY29tbWFuZF0ubmFtZSA9PT0gcGFyYW1ldGVycy5jb21tYW5kbmFtZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmF3Q29tbWFuZHNbY29tbWFuZF0uY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhd0NvbW1hbmRzW2NvbW1hbmRdLmNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByYXdDb21tYW5kc1tjb21tYW5kXS5jaGVja0NhbGxiYWNrKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWNjZXNzKHBhcmFtZXRlcnMpO1xuICAgIH1cbiAgICBhc3luYyBoYW5kbGVEb2VzRmlsZUV4aXN0KHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpIHtcbiAgICAgICAgY29uc3QgZXhpc3RzID0gYXdhaXQgdGhpcy5hcHAudmF1bHQuYWRhcHRlci5leGlzdHMocGFyYW1ldGVycy5maWxlcGF0aCk7XG5cbiAgICAgICAgdGhpcy5jb3B5VGV4dCgoZXhpc3RzID8gMSA6IDApLnRvU3RyaW5nKCkpO1xuICAgICAgICB0aGlzLnN1Y2Nlc3MocGFyYW1ldGVycyk7XG5cbiAgICB9XG4gICAgYXN5bmMgaGFuZGxlU2VhcmNoQW5kUmVwbGFjZShwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKSB7XG4gICAgICAgIGxldCBmaWxlOiBURmlsZTtcbiAgICAgICAgaWYgKHBhcmFtZXRlcnMuZmlsZXBhdGgpIHtcblxuICAgICAgICAgICAgY29uc3QgYWJzdHJhY3RGaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHBhcmFtZXRlcnMuZmlsZXBhdGgpO1xuICAgICAgICAgICAgaWYgKGFic3RyYWN0RmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgICAgICAgICAgICAgZmlsZSA9IGFic3RyYWN0RmlsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZpbGUgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgIGxldCBkYXRhID0gYXdhaXQgdGhpcy5hcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLnNlYXJjaHJlZ2V4KSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgWywgLCBwYXR0ZXJuLCBmbGFnc10gPSBwYXJhbWV0ZXJzLnNlYXJjaHJlZ2V4Lm1hdGNoKC8oXFwvPykoLispXFwxKFthLXpdKikvaSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChwYXR0ZXJuLCBmbGFncyk7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UocmVnZXgsIHBhcmFtZXRlcnMucmVwbGFjZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VjY2VzcyhwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBuZXcgTm90aWNlKGBDYW4ndCBwYXJzZSAke3BhcmFtZXRlcnMuc2VhcmNocmVnZXh9IGFzIFJlZ0V4YCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmFpbHVyZShwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2VBbGwocGFyYW1ldGVycy5zZWFyY2gsIHBhcmFtZXRlcnMucmVwbGFjZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzKHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBhd2FpdCB0aGlzLndyaXRlQW5kT3BlbkZpbGUoZmlsZS5wYXRoLCBkYXRhLCBwYXJhbWV0ZXJzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJDYW5ub3QgZmluZCBmaWxlXCIpO1xuICAgICAgICAgICAgdGhpcy5mYWlsdXJlKHBhcmFtZXRlcnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlV3JpdGUocGFyYW1ldGVyczogUGFyYW1ldGVycywgY3JlYXRlZERhaWx5Tm90ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICAgIGxldCBmaWxlOiBUQWJzdHJhY3RGaWxlIHwgbnVsbDtcbiAgICAgICAgaWYgKHBhcmFtZXRlcnMuZmlsZXBhdGgpIHtcbiAgICAgICAgICAgIGZpbGUgPSB0aGlzLmFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgocGFyYW1ldGVycy5maWxlcGF0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBmaWxlID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZUZpbGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXJhbWV0ZXJzLmZpbGVwYXRoIHx8IGZpbGUpIHtcbiAgICAgICAgICAgIGxldCBvdXRGaWxlOiBURmlsZTtcbiAgICAgICAgICAgIGxldCBwYXRoID0gcGFyYW1ldGVycy5maWxlcGF0aCA/PyBmaWxlLnBhdGg7XG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycy5tb2RlID09PSBcIm92ZXJ3cml0ZVwiKSB7XG4gICAgICAgICAgICAgICAgb3V0RmlsZSA9IGF3YWl0IHRoaXMud3JpdGVBbmRPcGVuRmlsZShwYXRoLCBwYXJhbWV0ZXJzLmRhdGEsIHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3VjY2VzcyhwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVycy5tb2RlID09PSBcInByZXBlbmRcIikge1xuICAgICAgICAgICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0RmlsZSA9IGF3YWl0IHRoaXMucHJlcGVuZChmaWxlLCBwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBvdXRGaWxlID0gYXdhaXQgdGhpcy5wcmVwZW5kKHBhdGgsIHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnN1Y2Nlc3MocGFyYW1ldGVycyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtZXRlcnMubW9kZSA9PT0gXCJhcHBlbmRcIikge1xuICAgICAgICAgICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgb3V0RmlsZSA9IGF3YWl0IHRoaXMuYXBwZW5kKGZpbGUsIHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dEZpbGUgPSBhd2FpdCB0aGlzLmFwcGVuZChwYXRoLCBwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zdWNjZXNzKHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbWV0ZXJzLm1vZGUgPT09IFwibmV3XCIpIHtcbiAgICAgICAgICAgICAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dEZpbGUgPSBhd2FpdCB0aGlzLndyaXRlQW5kT3BlbkZpbGUodGhpcy5nZXRBbHRlcm5hdGl2ZUZpbGVQYXRoKGZpbGUpLCBwYXJhbWV0ZXJzLmRhdGEsIHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhvb2tTdWNjZXNzKHBhcmFtZXRlcnMsIG91dEZpbGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG91dEZpbGUgPSBhd2FpdCB0aGlzLndyaXRlQW5kT3BlbkZpbGUocGF0aCwgcGFyYW1ldGVycy5kYXRhLCBwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ob29rU3VjY2VzcyhwYXJhbWV0ZXJzLCBvdXRGaWxlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFjcmVhdGVkRGFpbHlOb3RlICYmIGZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJGaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgICAgICAgICAgICAgIHRoaXMuZmFpbHVyZShwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3V0RmlsZSA9IGF3YWl0IHRoaXMud3JpdGVBbmRPcGVuRmlsZShwYXRoLCBwYXJhbWV0ZXJzLmRhdGEsIHBhcmFtZXRlcnMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3VjY2VzcyhwYXJhbWV0ZXJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJhbWV0ZXJzLnVpZCkge1xuICAgICAgICAgICAgICAgIHRoaXMud3JpdGVVSURUb0ZpbGUob3V0RmlsZSwgcGFyYW1ldGVycy51aWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3IE5vdGljZShcIkNhbm5vdCBmaW5kIGZpbGVcIik7XG4gICAgICAgICAgICB0aGlzLmZhaWx1cmUocGFyYW1ldGVycyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhc3luYyBoYW5kbGVPcGVuKHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpIHtcbiAgICAgICAgbGV0IGZpbGVJc0FscmVhZHlPcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5hcHAud29ya3NwYWNlLml0ZXJhdGVBbGxMZWF2ZXMobGVhZiA9PiB7XG4gICAgICAgICAgICBpZiAobGVhZi52aWV3LmZpbGU/LnBhdGggPT09IHBhcmFtZXRlcnMuZmlsZXBhdGggJiYgbGVhZi53aWR0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmaWxlSXNBbHJlYWR5T3BlbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmFwcC53b3Jrc3BhY2Uuc2V0QWN0aXZlTGVhZihsZWFmLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGlmIChmaWxlSXNBbHJlYWR5T3BlbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBsZWFmID0gdGhpcy5hcHAud29ya3NwYWNlLmFjdGl2ZUxlYWY7XG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycy52aWV3bW9kZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBsZXQgdmlld1N0YXRlID0gbGVhZi5nZXRWaWV3U3RhdGUoKTtcbiAgICAgICAgICAgICAgICB2aWV3U3RhdGUuc3RhdGUubW9kZSA9IHBhcmFtZXRlcnMudmlld21vZGU7XG4gICAgICAgICAgICAgICAgaWYgKHZpZXdTdGF0ZS5zdGF0ZS5zb3VyY2UgIT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgICAgICB2aWV3U3RhdGUuc3RhdGUuc291cmNlID0gcGFyYW1ldGVycy52aWV3bW9kZSA9PSBcInNvdXJjZVwiO1xuICAgICAgICAgICAgICAgIGF3YWl0IGxlYWYuc2V0Vmlld1N0YXRlKHZpZXdTdGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcGVuSW5OZXdQYW5lID0gcGFyYW1ldGVycy5uZXdwYW5lICE9PSB1bmRlZmluZWQgPyBwYXJhbWV0ZXJzLm5ld3BhbmUgPT0gXCJ0cnVlXCIgOiB0aGlzLnNldHRpbmdzLm9wZW5GaWxlV2l0aG91dFdyaXRlSW5OZXdQYW5lO1xuICAgICAgICBpZiAocGFyYW1ldGVycy5oZWFkaW5nICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAud29ya3NwYWNlLm9wZW5MaW5rVGV4dChwYXJhbWV0ZXJzLmZpbGVwYXRoICsgXCIjXCIgKyBwYXJhbWV0ZXJzLmhlYWRpbmcsIFwiXCIsIG9wZW5Jbk5ld1BhbmUsIHRoaXMuZ2V0Vmlld1N0YXRlRnJvbU1vZGUocGFyYW1ldGVycykpO1xuICAgICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gICAgICAgICAgICBpZiAoIXZpZXcpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUodmlldy5maWxlKTtcbiAgICAgICAgICAgIGNvbnN0IGhlYWRpbmcgPSBjYWNoZS5oZWFkaW5ncy5maW5kKChlKSA9PiBlLmhlYWRpbmcgPT09IHBhcmFtZXRlcnMuaGVhZGluZyk7XG4gICAgICAgICAgICB2aWV3LmVkaXRvci5mb2N1cygpO1xuICAgICAgICAgICAgdmlldy5lZGl0b3Iuc2V0Q3Vyc29yKHsgbGluZTogaGVhZGluZy5wb3NpdGlvbi5zdGFydC5saW5lICsgMSwgY2g6IDAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocGFyYW1ldGVycy5ibG9jayAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYXBwLndvcmtzcGFjZS5vcGVuTGlua1RleHQocGFyYW1ldGVycy5maWxlcGF0aCArIFwiI15cIiArIHBhcmFtZXRlcnMuYmxvY2ssIFwiXCIsIG9wZW5Jbk5ld1BhbmUsIHRoaXMuZ2V0Vmlld1N0YXRlRnJvbU1vZGUocGFyYW1ldGVycykpO1xuICAgICAgICAgICAgY29uc3QgdmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG4gICAgICAgICAgICBpZiAoIXZpZXcpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUodmlldy5maWxlKTtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gY2FjaGUuYmxvY2tzW3BhcmFtZXRlcnMuYmxvY2tdO1xuICAgICAgICAgICAgdmlldy5lZGl0b3IuZm9jdXMoKTtcbiAgICAgICAgICAgIHZpZXcuZWRpdG9yLnNldEN1cnNvcih7IGxpbmU6IGJsb2NrLnBvc2l0aW9uLnN0YXJ0LmxpbmUsIGNoOiAwIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFmaWxlSXNBbHJlYWR5T3BlbmVkKVxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuYXBwLndvcmtzcGFjZS5vcGVuTGlua1RleHQocGFyYW1ldGVycy5maWxlcGF0aCwgXCJcIiwgb3BlbkluTmV3UGFuZSwgdGhpcy5nZXRWaWV3U3RhdGVGcm9tTW9kZShwYXJhbWV0ZXJzKSk7XG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycy5saW5lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q3Vyc29ySW5MaW5lKHBhcmFtZXRlcnMubGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtZXRlcnMubW9kZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuc2V0Q3Vyc29yKHBhcmFtZXRlcnMubW9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtZXRlcnMudWlkKSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcblxuICAgICAgICAgICAgdGhpcy53cml0ZVVJRFRvRmlsZSh2aWV3LmZpbGUsIHBhcmFtZXRlcnMudWlkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Y2Nlc3MocGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgYXN5bmMgYXBwZW5kKGZpbGU6IFRGaWxlIHwgc3RyaW5nLCBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKTogUHJvbWlzZTxURmlsZT4ge1xuICAgICAgICBsZXQgcGF0aDogc3RyaW5nO1xuICAgICAgICBsZXQgZGF0YVRvV3JpdGU6IHN0cmluZztcbiAgICAgICAgaWYgKHBhcmFtZXRlcnMuaGVhZGluZykge1xuICAgICAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICAgICAgICAgIHBhdGggPSBmaWxlLnBhdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuZ2V0RW5kQW5kQmVnaW5uaW5nT2ZIZWFkaW5nKGZpbGUsIHBhcmFtZXRlcnMuaGVhZGluZyk/Lmxhc3RMaW5lO1xuICAgICAgICAgICAgICAgIGlmIChsaW5lID09PSB1bmRlZmluZWQpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gZGF0YS5zcGxpdChcIlxcblwiKTtcblxuICAgICAgICAgICAgICAgIGxpbmVzLnNwbGljZShsaW5lLCAwLCAuLi5wYXJhbWV0ZXJzLmRhdGEuc3BsaXQoXCJcXG5cIikpO1xuICAgICAgICAgICAgICAgIGRhdGFUb1dyaXRlID0gbGluZXMuam9pbihcIlxcblwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxldCBmaWxlRGF0YTogc3RyaW5nO1xuICAgICAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICAgICAgICAgIGZpbGVEYXRhID0gYXdhaXQgdGhpcy5hcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICAgICAgICAgICAgICBwYXRoID0gZmlsZS5wYXRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXRoID0gZmlsZTtcbiAgICAgICAgICAgICAgICBmaWxlRGF0YSA9IFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRhVG9Xcml0ZSA9IGZpbGVEYXRhICsgXCJcXG5cIiArIHBhcmFtZXRlcnMuZGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy53cml0ZUFuZE9wZW5GaWxlKHBhdGgsIGRhdGFUb1dyaXRlLCBwYXJhbWV0ZXJzKTtcbiAgICB9XG5cbiAgICBhc3luYyBwcmVwZW5kKGZpbGU6IFRGaWxlIHwgc3RyaW5nLCBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKTogUHJvbWlzZTxURmlsZT4ge1xuICAgICAgICBsZXQgcGF0aDogc3RyaW5nO1xuICAgICAgICBsZXQgZGF0YVRvV3JpdGU6IHN0cmluZztcbiAgICAgICAgaWYgKHBhcmFtZXRlcnMuaGVhZGluZykge1xuICAgICAgICAgICAgaWYgKGZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xuICAgICAgICAgICAgICAgIHBhdGggPSBmaWxlLnBhdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IHRoaXMuZ2V0RW5kQW5kQmVnaW5uaW5nT2ZIZWFkaW5nKGZpbGUsIHBhcmFtZXRlcnMuaGVhZGluZyk/LmZpcnN0TGluZTtcbiAgICAgICAgICAgICAgICBpZiAobGluZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5hcHAudmF1bHQucmVhZChmaWxlKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lcyA9IGRhdGEuc3BsaXQoXCJcXG5cIik7XG5cbiAgICAgICAgICAgICAgICBsaW5lcy5zcGxpY2UobGluZSwgMCwgLi4ucGFyYW1ldGVycy5kYXRhLnNwbGl0KFwiXFxuXCIpKTtcbiAgICAgICAgICAgICAgICBkYXRhVG9Xcml0ZSA9IGxpbmVzLmpvaW4oXCJcXG5cIik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChmaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlRGF0YSA9IGF3YWl0IHRoaXMuYXBwLnZhdWx0LnJlYWQoZmlsZSk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2FjaGUgPSB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKTtcblxuICAgICAgICAgICAgICAgIGlmIChjYWNoZS5mcm9udG1hdHRlcikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gY2FjaGUuZnJvbnRtYXR0ZXIucG9zaXRpb24uZW5kLmxpbmU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpcnN0ID0gZmlsZURhdGEuc3BsaXQoXCJcXG5cIikuc2xpY2UoMCwgbGluZSArIDEpLmpvaW4oXCJcXG5cIik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxhc3QgPSBmaWxlRGF0YS5zcGxpdChcIlxcblwiKS5zbGljZShsaW5lICsgMSkuam9pbihcIlxcblwiKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YVRvV3JpdGUgPSBmaXJzdCArIFwiXFxuXCIgKyBwYXJhbWV0ZXJzLmRhdGEgKyBcIlxcblwiICsgbGFzdDtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGFUb1dyaXRlID0gcGFyYW1ldGVycy5kYXRhICsgXCJcXG5cIiArIGZpbGVEYXRhO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwYXRoID0gZmlsZS5wYXRoO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBwYXRoID0gZmlsZTtcbiAgICAgICAgICAgICAgICBkYXRhVG9Xcml0ZSA9IHBhcmFtZXRlcnMuZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLndyaXRlQW5kT3BlbkZpbGUocGF0aCwgZGF0YVRvV3JpdGUsIHBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIGFzeW5jIHdyaXRlQW5kT3BlbkZpbGUob3V0cHV0RmlsZU5hbWU6IHN0cmluZywgdGV4dDogc3RyaW5nLCBwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKTogUHJvbWlzZTxURmlsZT4ge1xuICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKG91dHB1dEZpbGVOYW1lKTtcblxuICAgICAgICBpZiAoZmlsZSBpbnN0YW5jZW9mIFRGaWxlKSB7XG4gICAgICAgICAgICBhd2FpdCB0aGlzLmFwcC52YXVsdC5tb2RpZnkoZmlsZSwgdGV4dCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJ0cyA9IG91dHB1dEZpbGVOYW1lLnNwbGl0KFwiL1wiKTtcbiAgICAgICAgICAgIGNvbnN0IGRpciA9IHBhcnRzLnNsaWNlKDAsIHBhcnRzLmxlbmd0aCAtIDEpLmpvaW4oXCIvXCIpO1xuICAgICAgICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEgJiYgISh0aGlzLmFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgoZGlyKSBpbnN0YW5jZW9mIFRGb2xkZXIpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAudmF1bHQuY3JlYXRlRm9sZGVyKGRpcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBiYXNlNjRyZWdleCA9IC9eKFswLTlhLXpBLVorL117NH0pKigoWzAtOWEtekEtWisvXXsyfT09KXwoWzAtOWEtekEtWisvXXszfT0pKT8kLztcbiAgICAgICAgICAgIGlmIChiYXNlNjRyZWdleC50ZXN0KHRleHQpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAudmF1bHQuY3JlYXRlQmluYXJ5KG91dHB1dEZpbGVOYW1lLCBiYXNlNjRUb0FycmF5QnVmZmVyKHRleHQpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAudmF1bHQuY3JlYXRlKG91dHB1dEZpbGVOYW1lLCB0ZXh0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLm9wZW5GaWxlT25Xcml0ZSkge1xuICAgICAgICAgICAgbGV0IGZpbGVJc0FscmVhZHlPcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuYXBwLndvcmtzcGFjZS5pdGVyYXRlQWxsTGVhdmVzKGxlYWYgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChsZWFmLnZpZXcuZmlsZT8ucGF0aCA9PT0gb3V0cHV0RmlsZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgZmlsZUlzQWxyZWFkeU9wZW5lZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwLndvcmtzcGFjZS5zZXRBY3RpdmVMZWFmKGxlYWYsIHRydWUsIHRydWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWZpbGVJc0FscmVhZHlPcGVuZWQpXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5hcHAud29ya3NwYWNlLm9wZW5MaW5rVGV4dChvdXRwdXRGaWxlTmFtZSwgXCJcIiwgcGFyYW1ldGVycy5uZXdwYW5lICE9PSB1bmRlZmluZWQgPyBwYXJhbWV0ZXJzLm5ld3BhbmUgPT0gXCJ0cnVlXCIgOiB0aGlzLnNldHRpbmdzLm9wZW5GaWxlT25Xcml0ZUluTmV3UGFuZSwgdGhpcy5nZXRWaWV3U3RhdGVGcm9tTW9kZShwYXJhbWV0ZXJzKSk7XG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycy5saW5lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Q3Vyc29ySW5MaW5lKHBhcmFtZXRlcnMubGluZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKG91dHB1dEZpbGVOYW1lKSBhcyBURmlsZTtcbiAgICB9XG5cbiAgICBnZXRFbmRBbmRCZWdpbm5pbmdPZkhlYWRpbmcoZmlsZTogVEZpbGUsIGhlYWRpbmc6IHN0cmluZyk6IHsgXCJsYXN0TGluZVwiOiBudW1iZXIsIFwiZmlyc3RMaW5lXCI6IG51bWJlcjsgfSB7XG4gICAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25zID0gY2FjaGUuc2VjdGlvbnM7XG4gICAgICAgIGNvbnN0IGZvdW5kSGVhZGluZyA9IGNhY2hlLmhlYWRpbmdzPy5maW5kKGUgPT4gZS5oZWFkaW5nID09PSBoZWFkaW5nKTtcblxuXG4gICAgICAgIGlmIChmb3VuZEhlYWRpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvdW5kU2VjdGlvbkluZGV4ID0gc2VjdGlvbnMuZmluZEluZGV4KHNlY3Rpb24gPT4gc2VjdGlvbi50eXBlID09PSBcImhlYWRpbmdcIiAmJiBzZWN0aW9uLnBvc2l0aW9uLnN0YXJ0LmxpbmUgPT09IGZvdW5kSGVhZGluZy5wb3NpdGlvbi5zdGFydC5saW5lKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3RTZWN0aW9ucyA9IHNlY3Rpb25zLnNsaWNlKGZvdW5kU2VjdGlvbkluZGV4ICsgMSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG5leHRIZWFkaW5nSW5kZXggPSByZXN0U2VjdGlvbnM/LmZpbmRJbmRleChlID0+IGUudHlwZSA9PT0gXCJoZWFkaW5nXCIpO1xuXG4gICAgICAgICAgICBjb25zdCBsYXN0U2VjdGlvbiA9IHJlc3RTZWN0aW9uc1sobmV4dEhlYWRpbmdJbmRleCAhPT0gLTEgPyBuZXh0SGVhZGluZ0luZGV4IDogcmVzdFNlY3Rpb25zLmxlbmd0aCkgLSAxXSA/PyBzZWN0aW9uc1tmb3VuZFNlY3Rpb25JbmRleF07XG4gICAgICAgICAgICBjb25zdCBsYXN0TGluZSA9IGxhc3RTZWN0aW9uLnBvc2l0aW9uLmVuZC5saW5lICsgMTtcblxuICAgICAgICAgICAgcmV0dXJuIHsgXCJsYXN0TGluZVwiOiBsYXN0TGluZSwgXCJmaXJzdExpbmVcIjogc2VjdGlvbnNbZm91bmRTZWN0aW9uSW5kZXhdLnBvc2l0aW9uLmVuZC5saW5lICsgMSB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbmV3IE5vdGljZShcIkNhbid0IGZpbmQgaGVhZGluZ1wiKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIHNldEN1cnNvcihtb2RlOiBQYXJhbWV0ZXJzW1wibW9kZVwiXSkge1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcbiAgICAgICAgaWYgKHZpZXcpIHtcbiAgICAgICAgICAgIGNvbnN0IGVkaXRvciA9IHZpZXcuZWRpdG9yO1xuXG4gICAgICAgICAgICBsZXQgdmlld1N0YXRlID0gdmlldy5sZWFmLmdldFZpZXdTdGF0ZSgpO1xuICAgICAgICAgICAgdmlld1N0YXRlLnN0YXRlLm1vZGUgPSBcInNvdXJjZVwiO1xuXG4gICAgICAgICAgICBpZiAobW9kZSA9PT0gXCJhcHBlbmRcIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhc3RMaW5lID0gZWRpdG9yLmxhc3RMaW5lKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGFzdExpbmVMZW5ndGggPSBlZGl0b3IuZ2V0TGluZShsYXN0TGluZSkubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGF3YWl0IHZpZXcubGVhZi5zZXRWaWV3U3RhdGUodmlld1N0YXRlLCB7IGZvY3VzOiB0cnVlIH0pO1xuXG4gICAgICAgICAgICAgICAgZWRpdG9yLnNldEN1cnNvcih7IGNoOiBsYXN0TGluZUxlbmd0aCwgbGluZTogbGFzdExpbmUgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKG1vZGUgPT09IFwicHJlcGVuZFwiKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgdmlldy5sZWFmLnNldFZpZXdTdGF0ZSh2aWV3U3RhdGUsIHsgZm9jdXM6IHRydWUgfSk7XG5cbiAgICAgICAgICAgICAgICBlZGl0b3Iuc2V0Q3Vyc29yKHsgY2g6IDAsIGxpbmU6IDAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRDdXJzb3JJbkxpbmUocmF3TGluZTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHZpZXcgPSB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlVmlld09mVHlwZShNYXJrZG93blZpZXcpO1xuICAgICAgICBpZiAoIXZpZXcpIHJldHVybjtcbiAgICAgICAgY29uc3QgbGluZSA9IE1hdGgubWluKHJhd0xpbmUgLSAxLCB2aWV3LmVkaXRvci5saW5lQ291bnQoKSAtIDEpO1xuICAgICAgICB2aWV3LmVkaXRvci5mb2N1cygpO1xuICAgICAgICB2aWV3LmVkaXRvci5zZXRDdXJzb3IoeyBsaW5lOiBsaW5lLCBjaDogdmlldy5lZGl0b3IuZ2V0TGluZShsaW5lKS5sZW5ndGggfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ29weUZpbGVVUkkod2l0aG91dERhdGE6IGJvb2xlYW4sIGZpbGU/OiBURmlsZSkge1xuICAgICAgICBjb25zdCB2aWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcbiAgICAgICAgaWYgKCF2aWV3ICYmICFmaWxlKSByZXR1cm47XG4gICAgICAgIGlmICh2aWV3KSB7XG4gICAgICAgICAgICBjb25zdCBwb3MgPSB2aWV3LmVkaXRvci5nZXRDdXJzb3IoKTtcbiAgICAgICAgICAgIGNvbnN0IGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUodmlldy5maWxlKTtcbiAgICAgICAgICAgIGlmIChjYWNoZS5oZWFkaW5ncykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgaGVhZGluZyBvZiBjYWNoZS5oZWFkaW5ncykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaGVhZGluZy5wb3NpdGlvbi5zdGFydC5saW5lIDw9IHBvcy5saW5lICYmIGhlYWRpbmcucG9zaXRpb24uZW5kLmxpbmUgPj0gcG9zLmxpbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29weVVSSSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXBhdGg6IHZpZXcuZmlsZS5wYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRpbmc6IGhlYWRpbmcuaGVhZGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY2FjaGUuYmxvY2tzKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBibG9ja0lEIG9mIE9iamVjdC5rZXlzKGNhY2hlLmJsb2NrcykpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBjYWNoZS5ibG9ja3NbYmxvY2tJRF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChibG9jay5wb3NpdGlvbi5zdGFydC5saW5lIDw9IHBvcy5saW5lICYmIGJsb2NrLnBvc2l0aW9uLmVuZC5saW5lID49IHBvcy5saW5lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvcHlVUkkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVwYXRoOiB2aWV3LmZpbGUucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jazogYmxvY2tJRFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAod2l0aG91dERhdGEpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpbGUyID0gZmlsZSA/PyB0aGlzLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpO1xuICAgICAgICAgICAgaWYgKCFmaWxlMikge1xuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UoXCJObyBmaWxlIG9wZW5lZFwiKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNvcHlVUkkoe1xuICAgICAgICAgICAgICAgIGZpbGVwYXRoOiBmaWxlMi5wYXRoLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBmaWxlTW9kYWwgPSBuZXcgRmlsZU1vZGFsKHRoaXMsIFwiQ2hvb3NlIGEgZmlsZVwiLCBmYWxzZSk7XG4gICAgICAgICAgICBmaWxlTW9kYWwub3BlbigpO1xuICAgICAgICAgICAgZmlsZU1vZGFsLm9uQ2hvb3NlSXRlbSA9IChpdGVtLCBfKSA9PiB7XG5cbiAgICAgICAgICAgICAgICBuZXcgRW50ZXJEYXRhTW9kYWwodGhpcywgaXRlbS5zb3VyY2UpLm9wZW4oKTtcblxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgaGFuZGxlT3BlblNldHRpbmdzKHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwLnNldHRpbmcuY29udGFpbmVyRWwucGFyZW50RWxlbWVudCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5hcHAuc2V0dGluZy5vcGVuKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2V0dGluZ2lkID09IFwicGx1Z2luLWJyb3dzZXJcIikge1xuICAgICAgICAgICAgdGhpcy5hcHAuc2V0dGluZy5vcGVuVGFiQnlJZChcImNvbW11bml0eS1wbHVnaW5zXCIpO1xuICAgICAgICAgICAgdGhpcy5hcHAuc2V0dGluZy5hY3RpdmVUYWIuY29udGFpbmVyRWwuZmluZChcIi5tb2QtY3RhXCIpLmNsaWNrKCk7XG4gICAgICAgIH0gZWxzZSBpZiAocGFyYW1ldGVycy5zZXR0aW5naWQgPT0gXCJ0aGVtZS1icm93c2VyXCIpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwLnNldHRpbmcub3BlblRhYkJ5SWQoXCJhcHBlYXJhbmNlXCIpO1xuICAgICAgICAgICAgdGhpcy5hcHAuc2V0dGluZy5hY3RpdmVUYWIuY29udGFpbmVyRWwuZmluZChcIi5tb2QtY3RhXCIpLmNsaWNrKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5zZXR0aW5nLm9wZW5UYWJCeUlkKHBhcmFtZXRlcnMuc2V0dGluZ2lkKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnN1Y2Nlc3MocGFyYW1ldGVycyk7XG4gICAgfVxuXG4gICAgYXN5bmMgaGFuZGxlVXBkYXRlUGx1Z2lucyhwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKSB7XG4gICAgICAgIHBhcmFtZXRlcnMuc2V0dGluZ2lkID0gXCJjb21tdW5pdHktcGx1Z2luc1wiO1xuICAgICAgICB0aGlzLmhhbmRsZU9wZW5TZXR0aW5ncyhwYXJhbWV0ZXJzKTtcbiAgICAgICAgdGhpcy5hcHAuc2V0dGluZy5hY3RpdmVUYWIuY29udGFpbmVyRWwuZmluZEFsbChcIi5tb2QtY3RhXCIpLmxhc3QoKS5jbGljaygpO1xuICAgICAgICBuZXcgTm90aWNlKFwiV2FpdGluZyAxMCBzZWNvbmRzXCIpO1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAgKiAxMDAwKSk7XG5cbiAgICAgICAgaWYgKE9iamVjdC5rZXlzKCh0aGlzLmFwcCBhcyBhbnkpLnBsdWdpbnMudXBkYXRlcykubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFwcC5zZXR0aW5nLmFjdGl2ZVRhYi5jb250YWluZXJFbC5maW5kQWxsKFwiLm1vZC1jdGFcIikubGFzdCgpLmNsaWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zdWNjZXNzKHBhcmFtZXRlcnMpO1xuICAgIH1cblxuICAgIGdldEFsdGVybmF0aXZlRmlsZVBhdGgoZmlsZTogVEZpbGUpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBkaXIgPSBmaWxlLnBhcmVudD8ucGF0aDtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkRGlyID0gZGlyID09PSBcIi9cIiA/IFwiXCIgOiBkaXI7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBmaWxlLm5hbWU7XG4gICAgICAgIGZvciAobGV0IGluZGV4ID0gMTsgaW5kZXggPCAxMDA7IGluZGV4KyspIHtcblxuICAgICAgICAgICAgY29uc3QgYmFzZSA9IHN0cmlwTUQobmFtZSk7XG4gICAgICAgICAgICBjb25zdCBhbHRlcm5hdGl2ZSA9IGZvcm1hdHRlZERpciArIChmb3JtYXR0ZWREaXIgPT0gXCJcIiA/IFwiXCIgOiBcIi9cIikgKyBiYXNlICsgYCAke2luZGV4fS5tZGA7XG5cbiAgICAgICAgICAgIGNvbnN0IGV4aXN0cyA9IHRoaXMuYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChhbHRlcm5hdGl2ZSkgIT09IG51bGw7XG4gICAgICAgICAgICBpZiAoIWV4aXN0cykge1xuICAgICAgICAgICAgICAgIHJldHVybiBhbHRlcm5hdGl2ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFzeW5jIGdlbmVyYXRlVVJJKHBhcmFtZXRlcnM6IFBhcmFtZXRlcnMpIHtcbiAgICAgICAgbGV0IHVyaSA9IGBvYnNpZGlhbjovL2FkdmFuY2VkLXVyaT92YXVsdD0ke3RoaXMuYXBwLnZhdWx0LmdldE5hbWUoKX1gO1xuICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5hcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKHBhcmFtZXRlcnMuZmlsZXBhdGgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNldHRpbmdzLnVzZVVJRCAmJiBmaWxlIGluc3RhbmNlb2YgVEZpbGUpIHtcbiAgICAgICAgICAgIHBhcmFtZXRlcnMuZmlsZXBhdGggPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBwYXJhbWV0ZXJzLnVpZCA9IGF3YWl0IHRoaXMuZ2V0VUlERnJvbUZpbGUoZmlsZSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBwYXJhbWV0ZXIgaW4gcGFyYW1ldGVycykge1xuXG4gICAgICAgICAgICBpZiAoKHBhcmFtZXRlcnMgYXMgYW55KVtwYXJhbWV0ZXJdICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHVyaSA9IHVyaSArIGAmJHtwYXJhbWV0ZXJ9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KChwYXJhbWV0ZXJzIGFzIGFueSlbcGFyYW1ldGVyXSl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdXJpO1xuICAgIH1cblxuICAgIGFzeW5jIGNvcHlVUkkocGFyYW1ldGVyczogUGFyYW1ldGVycykge1xuICAgICAgICBjb25zdCB1cmkgPSBhd2FpdCB0aGlzLmdlbmVyYXRlVVJJKHBhcmFtZXRlcnMpO1xuICAgICAgICBhd2FpdCB0aGlzLmNvcHlUZXh0KGVuY29kZVVSSSh1cmkpKTtcblxuICAgICAgICBuZXcgTm90aWNlKFwiQWR2YW5jZWQgVVJJIGNvcGllZCB0byB5b3VyIGNsaXBib2FyZFwiKTtcbiAgICB9XG5cbiAgICBjb3B5VGV4dCh0ZXh0OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgIH07XG5cbiAgICBhc3luYyBnZXRVSURGcm9tRmlsZShmaWxlOiBURmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGxldCBjYWNoZTogQ2FjaGVkTWV0YWRhdGE7XG5cbiAgICAgICAgLy9hd2FpdCBwYXJzaW5nIG9mIGZyb250bWF0dGVyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IDIwOyBpKyspIHtcbiAgICAgICAgICAgIGNhY2hlID0gdGhpcy5hcHAubWV0YWRhdGFDYWNoZS5nZXRGaWxlQ2FjaGUoZmlsZSk7XG5cbiAgICAgICAgICAgIGlmIChjYWNoZSAhPT0gdW5kZWZpbmVkKSBicmVhaztcbiAgICAgICAgICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCAxNTApKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1aWQgPSBwYXJzZUZyb250TWF0dGVyRW50cnkoY2FjaGUuZnJvbnRtYXR0ZXIsIHRoaXMuc2V0dGluZ3MuaWRGaWVsZCk7XG4gICAgICAgIGlmICh1aWQgIT0gdW5kZWZpbmVkKSByZXR1cm4gdWlkO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy53cml0ZVVJRFRvRmlsZShmaWxlLCB1dWlkdjQoKSk7XG4gICAgfTtcblxuICAgIGFzeW5jIHdyaXRlVUlEVG9GaWxlKGZpbGU6IFRGaWxlLCB1aWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG5cbiAgICAgICAgY29uc3QgZnJvbnRtYXR0ZXIgPSB0aGlzLmFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKT8uZnJvbnRtYXR0ZXI7XG4gICAgICAgIGNvbnN0IGZpbGVDb250ZW50OiBzdHJpbmcgPSBhd2FpdCB0aGlzLmFwcC52YXVsdC5yZWFkKGZpbGUpO1xuICAgICAgICBjb25zdCBpc1lhbWxFbXB0eTogYm9vbGVhbiA9ICgoIWZyb250bWF0dGVyIHx8IGZyb250bWF0dGVyLmxlbmd0aCA9PT0gMCkgJiYgIWZpbGVDb250ZW50Lm1hdGNoKC9eLXszfVxccypcXG4qXFxyKi17M30vKSk7XG4gICAgICAgIGxldCBzcGxpdENvbnRlbnQgPSBmaWxlQ29udGVudC5zcGxpdChcIlxcblwiKTtcbiAgICAgICAgaWYgKGlzWWFtbEVtcHR5KSB7XG4gICAgICAgICAgICBzcGxpdENvbnRlbnQudW5zaGlmdChcIi0tLVwiKTtcbiAgICAgICAgICAgIHNwbGl0Q29udGVudC51bnNoaWZ0KGAke3RoaXMuc2V0dGluZ3MuaWRGaWVsZH06ICR7dWlkfWApO1xuICAgICAgICAgICAgc3BsaXRDb250ZW50LnVuc2hpZnQoXCItLS1cIik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzcGxpdENvbnRlbnQuc3BsaWNlKDEsIDAsIGAke3RoaXMuc2V0dGluZ3MuaWRGaWVsZH06ICR7dWlkfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3RmlsZUNvbnRlbnQgPSBzcGxpdENvbnRlbnQuam9pbihcIlxcblwiKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hcHAudmF1bHQubW9kaWZ5KGZpbGUsIG5ld0ZpbGVDb250ZW50KTtcbiAgICAgICAgcmV0dXJuIHVpZDtcbiAgICB9XG5cbiAgICBnZXRWaWV3U3RhdGVGcm9tTW9kZShwYXJhbWV0ZXJzOiBQYXJhbWV0ZXJzKSB7XG4gICAgICAgIHJldHVybiBwYXJhbWV0ZXJzLnZpZXdtb2RlID8geyBzdGF0ZTogeyBtb2RlOiBwYXJhbWV0ZXJzLnZpZXdtb2RlIH0gfSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gICAgYXN5bmMgbG9hZFNldHRpbmdzKCkge1xuICAgICAgICB0aGlzLnNldHRpbmdzID0gT2JqZWN0LmFzc2lnbihERUZBVUxUX1NFVFRJTkdTLCBhd2FpdCB0aGlzLmxvYWREYXRhKCkpO1xuICAgIH1cblxuICAgIGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcbiAgICB9XG59XG4iXSwibmFtZXMiOlsidGhpcyIsIm9ic2lkaWFuIiwibm9ybWFsaXplUGF0aCIsImdldERhaWx5Tm90ZVNldHRpbmdzIiwiRnV6enlTdWdnZXN0TW9kYWwiLCJTdWdnZXN0TW9kYWwiLCJTZXR0aW5nIiwiUGx1Z2luU2V0dGluZ1RhYiIsInBhcnNlRnJvbnRNYXR0ZXJBbGlhc2VzIiwiYXBwSGFzRGFpbHlOb3Rlc1BsdWdpbkxvYWRlZCIsIk5vdGljZSIsImdldEFsbERhaWx5Tm90ZXMiLCJnZXREYWlseU5vdGUiLCJjcmVhdGVEYWlseU5vdGUiLCJURmlsZSIsInBhcnNlRnJvbnRNYXR0ZXJFbnRyeSIsIk1hcmtkb3duVmlldyIsIlRGb2xkZXIiLCJiYXNlNjRUb0FycmF5QnVmZmVyIiwidXVpZHY0IiwiUGx1Z2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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U0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUN0RyxRQUFRLFNBQVMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRTtBQUN0SCxRQUFRLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RSxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRDtBQUNPLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUU7QUFDM0MsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JILElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sTUFBTSxLQUFLLFVBQVUsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFdBQVcsRUFBRSxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDN0osSUFBSSxTQUFTLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxPQUFPLFVBQVUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUN0RSxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsRUFBRTtBQUN0QixRQUFRLElBQUksQ0FBQyxFQUFFLE1BQU0sSUFBSSxTQUFTLENBQUMsaUNBQWlDLENBQUMsQ0FBQztBQUN0RSxRQUFRLE9BQU8sQ0FBQyxFQUFFLElBQUk7QUFDdEIsWUFBWSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVB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Q0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO0FBQ2xFLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUN6RixLQUFLO0FBQ0wsQ0FBQztBQTBERDtBQUNPLFNBQVMsYUFBYSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQzlDLElBQUksSUFBSSxJQUFJLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDekYsUUFBUSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBRTtBQUNoQyxZQUFZLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENB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Q0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7QUFDdnhQO0FBQ0EsT0FBTyxDQUFDO0FBQ1I7QUFDQSxNQUFNLGlCQUFpQjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBUyxNQUFNLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFO0FBR3REO0FBQ0E7QUFDQSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUU7QUFDN0MsRUFBRSxLQUFLLEVBQUUsSUFBSTtBQUNiLENBQUMsQ0FBQyxDQUFDO0FBQ0g7QUFDQSxJQUFJLE1BQU0sR0FBRyxtQkFBbUIsZ0JBQWdCLGdCQUFnQixDQUFDLENBQUM7QUFDbEU7QUFDQSxJQUFJLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3QztBQUNBLFNBQVMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtBQUMvRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxLQUFLLENBQUMsSUFBSSxFQUFFO0FBQ3JCLEVBQUUsSUFBSSxLQUFLLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLFNBQVMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3JGO0FBQ0EsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLGdGQUFnRixDQUFDLENBQUM7QUFDakc7QUFDQSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDYixJQUFJLE1BQU0sSUFBSSxLQUFLLENBQUMsc0RBQXNELENBQUMsQ0FBQztBQUM1RSxHQUFHO0FBQ0g7QUFDQSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzlCLElBQUksTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsZ0VBQWdFLENBQUMsQ0FBQztBQUNySCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUNEO0FBQ0EsT0FBTyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDeEI7QUFDQSxPQUFPLENBQUM7QUFDUjtBQUNBLE1BQU0sQ0FBQztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTLE1BQU0sRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUU7QUFDdEQ7QUFDQSxtQkFBbUIsNkJBQTZCLHlDQUF5QyxDQUFDLENBQUM7QUFDM0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxtQkFBbUIsNERBQTRELGdCQUFnQixDQUFDLENBQUM7QUFDbEg7QUFDQTtBQUNBLE9BQU8sQ0FBQztBQUNSO0FBQ0EsVUFBVSxDQUFDLENBQUM7QUFDWixDQUFDLENBQUMsQ0FBQztBQUNIOzs7QUM1MkVBO0FBQ0E7QUFDQTtBQUNBO0FBMkpBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTSxPQUFPLEdBQUcsQ0FBQyxRQUFRLEtBQUs7QUFDckMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEVBQUU7QUFDeEMsUUFBUSxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN2RSxLQUFLO0FBQ0w7QUFDQSxRQUFRLE9BQU8sUUFBUSxDQUFDO0FBQ3hCLENBQUM7OztBQzFLRDtBQUNBLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlEO0FBQ21DO0FBQ25DO0FBQ0EsTUFBTSx5QkFBeUIsR0FBRyxZQUFZLENBQUM7QUFDL0MsTUFBTSwwQkFBMEIsR0FBRyxZQUFZLENBQUM7QUFDaEQsTUFBTSwyQkFBMkIsR0FBRyxTQUFTLENBQUM7QUFDOUMsTUFBTSw2QkFBNkIsR0FBRyxXQUFXLENBQUM7QUFDbEQsTUFBTSwwQkFBMEIsR0FBRyxNQUFNLENBQUM7QUFDMUM7QUFDQSxTQUFTLDhCQUE4QixDQUFDLFdBQVcsRUFBRTtBQUNyRDtBQUNBLElBQUksTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDekUsSUFBSSxPQUFPLGFBQWEsSUFBSSxhQUFhLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQztBQUMzRSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLG9CQUFvQixHQUFHO0FBQ2hDLElBQUksSUFBSTtBQUNSO0FBQ0EsUUFBUSxNQUFNLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDeEQsUUFBUSxJQUFJLDhCQUE4QixDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ3JELFlBQVksTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRSxDQUFDO0FBQzVHLFlBQVksT0FBTztBQUNuQixnQkFBZ0IsTUFBTSxFQUFFLE1BQU0sSUFBSSx5QkFBeUI7QUFDM0QsZ0JBQWdCLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUM1QyxnQkFBZ0IsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ2hELGFBQWEsQ0FBQztBQUNkLFNBQVM7QUFDVCxRQUFRLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLGVBQWUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLEVBQUUsUUFBUSxFQUFFLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDbkgsUUFBUSxPQUFPO0FBQ2YsWUFBWSxNQUFNLEVBQUUsTUFBTSxJQUFJLHlCQUF5QjtBQUN2RCxZQUFZLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUN4QyxZQUFZLFFBQVEsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUM1QyxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxPQUFPLEdBQUcsRUFBRTtBQUNoQixRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsc0NBQXNDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDbEUsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMscUJBQXFCLEdBQUc7QUFDakMsSUFBSSxJQUFJO0FBQ1I7QUFDQSxRQUFRLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO0FBQ2pELFFBQVEsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sQ0FBQztBQUM5RSxRQUFRLE1BQU0scUJBQXFCLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUM7QUFDbEcsUUFBUSxJQUFJLDhCQUE4QixDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ3RELFlBQVksT0FBTztBQUNuQixnQkFBZ0IsTUFBTSxFQUFFLHFCQUFxQixDQUFDLE1BQU0sSUFBSSwwQkFBMEI7QUFDbEYsZ0JBQWdCLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUNsRSxnQkFBZ0IsUUFBUSxFQUFFLHFCQUFxQixDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3RFLGFBQWEsQ0FBQztBQUNkLFNBQVM7QUFDVCxRQUFRLE1BQU0sUUFBUSxHQUFHLGdCQUFnQixJQUFJLEVBQUUsQ0FBQztBQUNoRCxRQUFRLE9BQU87QUFDZixZQUFZLE1BQU0sRUFBRSxRQUFRLENBQUMsZ0JBQWdCLElBQUksMEJBQTBCO0FBQzNFLFlBQVksTUFBTSxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQzNELFlBQVksUUFBUSxFQUFFLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQy9ELFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTCxJQUFJLE9BQU8sR0FBRyxFQUFFO0FBQ2hCLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNuRSxLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxzQkFBc0IsR0FBRztBQUNsQztBQUNBLElBQUksTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUM7QUFDN0MsSUFBSSxJQUFJO0FBQ1IsUUFBUSxNQUFNLFFBQVEsR0FBRyxDQUFDLDhCQUE4QixDQUFDLFNBQVMsQ0FBQztBQUNuRSxZQUFZLGFBQWEsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxRQUFRLEVBQUUsT0FBTztBQUN4RSxZQUFZLEVBQUUsQ0FBQztBQUNmLFFBQVEsT0FBTztBQUNmLFlBQVksTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLElBQUksMkJBQTJCO0FBQ2xFLFlBQVksTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUNqRCxZQUFZLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDckQsU0FBUyxDQUFDO0FBQ1YsS0FBSztBQUNMLElBQUksT0FBTyxHQUFHLEVBQUU7QUFDaEIsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3BFLEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLHdCQUF3QixHQUFHO0FBQ3BDO0FBQ0EsSUFBSSxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztBQUM3QyxJQUFJLElBQUk7QUFDUixRQUFRLE1BQU0sUUFBUSxHQUFHLENBQUMsOEJBQThCLENBQUMsV0FBVyxDQUFDO0FBQ3JFLFlBQVksYUFBYSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTO0FBQzFFLFlBQVksRUFBRSxDQUFDO0FBQ2YsUUFBUSxPQUFPO0FBQ2YsWUFBWSxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sSUFBSSw2QkFBNkI7QUFDcEUsWUFBWSxNQUFNLEVBQUUsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ2pELFlBQVksUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUNyRCxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxPQUFPLEdBQUcsRUFBRTtBQUNoQixRQUFRLE9BQU8sQ0FBQyxJQUFJLENBQUMsMENBQTBDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdEUsS0FBSztBQUNMLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMscUJBQXFCLEdBQUc7QUFDakM7QUFDQSxJQUFJLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO0FBQzdDLElBQUksSUFBSTtBQUNSLFFBQVEsTUFBTSxRQUFRLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxRQUFRLENBQUM7QUFDbEUsWUFBWSxhQUFhLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU07QUFDdkUsWUFBWSxFQUFFLENBQUM7QUFDZixRQUFRLE9BQU87QUFDZixZQUFZLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxJQUFJLDBCQUEwQjtBQUNqRSxZQUFZLE1BQU0sRUFBRSxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDakQsWUFBWSxRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQ3JELFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTCxJQUFJLE9BQU8sR0FBRyxFQUFFO0FBQ2hCLFFBQVEsT0FBTyxDQUFDLElBQUksQ0FBQyx1Q0FBdUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNuRSxLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0E7QUFDQSxTQUFTLElBQUksQ0FBQyxHQUFHLFlBQVksRUFBRTtBQUMvQjtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ25CLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6RCxRQUFRLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6RCxLQUFLO0FBQ0w7QUFDQSxJQUFJLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztBQUN4QixJQUFJLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDbEQsUUFBUSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUI7QUFDQTtBQUNBLFFBQVEsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEtBQUssR0FBRztBQUNqQyxZQUFZLFNBQVM7QUFDckI7QUFDQTtBQUNBLFlBQVksUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNoQyxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDdkIsUUFBUSxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdCO0FBQ0EsSUFBSSxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUNELFNBQVMsUUFBUSxDQUFDLFFBQVEsRUFBRTtBQUM1QixJQUFJLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNqRSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkMsUUFBUSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3hELElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUNELGVBQWUsa0JBQWtCLENBQUMsSUFBSSxFQUFFO0FBQ3hDLElBQUksTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2YsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckIsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUNsQyxRQUFRLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUMxRCxZQUFZLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JELFNBQVM7QUFDVCxLQUFLO0FBQ0wsQ0FBQztBQUNELGVBQWUsV0FBVyxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUU7QUFDaEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNuQyxRQUFRLFFBQVEsSUFBSSxLQUFLLENBQUM7QUFDMUIsS0FBSztBQUNMLElBQUksTUFBTSxJQUFJLEdBQUdDLDRCQUFRLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNuRSxJQUFJLE1BQU0sa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbkMsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBQ0QsZUFBZSxlQUFlLENBQUMsUUFBUSxFQUFFO0FBQ3pDLElBQUksTUFBTSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ2hELElBQUksTUFBTSxZQUFZLEdBQUdBLDRCQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFELElBQUksSUFBSSxZQUFZLEtBQUssR0FBRyxFQUFFO0FBQzlCLFFBQVEsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0MsS0FBSztBQUNMLElBQUksSUFBSTtBQUNSLFFBQVEsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNsRixRQUFRLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUM5RDtBQUNBLFFBQVEsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3BFLFFBQVEsT0FBTyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNyQyxLQUFLO0FBQ0wsSUFBSSxPQUFPLEdBQUcsRUFBRTtBQUNoQixRQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyx3Q0FBd0MsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDdkYsUUFBUSxJQUFJQSw0QkFBUSxDQUFDLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0FBQ3RFLFFBQVEsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMxQixLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFVBQVUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxHQUFHLEtBQUssRUFBRTtBQUMvQyxJQUFJLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDMUQsSUFBSSxPQUFPLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsQ0FBQztBQUNELFNBQVMsdUJBQXVCLENBQUMsTUFBTSxFQUFFO0FBQ3pDLElBQUksT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRTtBQUNoRCxJQUFJLElBQUksV0FBVyxLQUFLLE1BQU0sRUFBRTtBQUNoQyxRQUFRLE1BQU0sV0FBVyxHQUFHLHVCQUF1QixDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVELFFBQVEsUUFBUSxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztBQUMzQyxhQUFhLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFO0FBQ3hFLEtBQUs7QUFDTCxJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFDRCxTQUFTLGVBQWUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQzVDLElBQUksT0FBTyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFDRCxTQUFTLGVBQWUsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQzVDLElBQUksT0FBTyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUNELFNBQVMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLFdBQVcsRUFBRTtBQUNwRCxJQUFJLE1BQU0sV0FBVyxHQUFHO0FBQ3hCLFFBQVEsR0FBRyxFQUFFLG9CQUFvQjtBQUNqQyxRQUFRLElBQUksRUFBRSxxQkFBcUI7QUFDbkMsUUFBUSxLQUFLLEVBQUUsc0JBQXNCO0FBQ3JDLFFBQVEsT0FBTyxFQUFFLHdCQUF3QjtBQUN6QyxRQUFRLElBQUksRUFBRSxxQkFBcUI7QUFDbkMsS0FBSyxDQUFDO0FBQ04sSUFBSSxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3RFLElBQUksTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNELElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsRUFBRTtBQUM3QixRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxJQUFJLElBQUksaUJBQWlCLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxFQUFFO0FBQ2hELFFBQVEsSUFBSSxXQUFXLEtBQUssTUFBTSxFQUFFO0FBQ3BDLFlBQVksTUFBTSxXQUFXLEdBQUcsdUJBQXVCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEUsWUFBWSxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUU7QUFDN0MsZ0JBQWdCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRO0FBQzdDO0FBQ0EsZ0JBQWdCLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0UsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBQ0Q7QUFDQSxNQUFNLDRCQUE0QixTQUFTLEtBQUssQ0FBQztBQUNqRCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGVBQWUsQ0FBQyxJQUFJLEVBQUU7QUFDckMsSUFBSSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQzNCLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQztBQUMxQixJQUFJLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDakMsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0FBQ2hFLElBQUksTUFBTSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFFLElBQUksTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QyxJQUFJLE1BQU0sY0FBYyxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMvRCxJQUFJLElBQUk7QUFDUixRQUFRLE1BQU0sV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCO0FBQy9FLGFBQWEsT0FBTyxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQztBQUNsRCxhQUFhLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEUsYUFBYSxPQUFPLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDO0FBQ25ELGFBQWEsT0FBTyxDQUFDLDBEQUEwRCxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxZQUFZLEtBQUs7QUFDMUksWUFBWSxNQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNqQyxZQUFZLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUM7QUFDakQsZ0JBQWdCLElBQUksRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQztBQUNyQyxnQkFBZ0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0FBQ3pDLGdCQUFnQixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDekMsYUFBYSxDQUFDLENBQUM7QUFDZixZQUFZLElBQUksSUFBSSxFQUFFO0FBQ3RCLGdCQUFnQixXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0QsYUFBYTtBQUNiLFlBQVksSUFBSSxZQUFZLEVBQUU7QUFDOUIsZ0JBQWdCLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7QUFDNUUsYUFBYTtBQUNiLFlBQVksT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLFNBQVMsQ0FBQztBQUNWLGFBQWEsT0FBTyxDQUFDLHVCQUF1QixFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM3RixhQUFhLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZGO0FBQ0EsUUFBUSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDckQsUUFBUSxPQUFPLFdBQVcsQ0FBQztBQUMzQixLQUFLO0FBQ0wsSUFBSSxPQUFPLEdBQUcsRUFBRTtBQUNoQixRQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyx3QkFBd0IsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDekUsUUFBUSxJQUFJQSw0QkFBUSxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0FBQzFELEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtBQUN4QyxJQUFJLE9BQU8sVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUM7QUFDdkQsQ0FBQztBQUNELFNBQVMsZ0JBQWdCLEdBQUc7QUFDNUI7QUFDQTtBQUNBO0FBQ0EsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNqQyxJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxvQkFBb0IsRUFBRSxDQUFDO0FBQzlDLElBQUksTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMscUJBQXFCLENBQUNBLDRCQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDekYsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7QUFDM0IsUUFBUSxNQUFNLElBQUksNEJBQTRCLENBQUMsbUNBQW1DLENBQUMsQ0FBQztBQUNwRixLQUFLO0FBQ0wsSUFBSSxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDMUIsSUFBSUEsNEJBQVEsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUMsSUFBSSxLQUFLO0FBQy9ELFFBQVEsSUFBSSxJQUFJLFlBQVlBLDRCQUFRLENBQUMsS0FBSyxFQUFFO0FBQzVDLFlBQVksTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN0RCxZQUFZLElBQUksSUFBSSxFQUFFO0FBQ3RCLGdCQUFnQixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNELGdCQUFnQixVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzlDLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUM7QUFDRDtBQUNBLE1BQU0sNkJBQTZCLFNBQVMsS0FBSyxDQUFDO0FBQ2xELENBQUM7QUFDRCxTQUFTLGFBQWEsR0FBRztBQUN6QixJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUM7QUFDOUI7QUFDQSxJQUFJLElBQUksU0FBUyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0FBQ2xELElBQUksTUFBTSxVQUFVLEdBQUc7QUFDdkIsUUFBUSxRQUFRO0FBQ2hCLFFBQVEsUUFBUTtBQUNoQixRQUFRLFNBQVM7QUFDakIsUUFBUSxXQUFXO0FBQ25CLFFBQVEsVUFBVTtBQUNsQixRQUFRLFFBQVE7QUFDaEIsUUFBUSxVQUFVO0FBQ2xCLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxTQUFTLEVBQUU7QUFDdEIsUUFBUSxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLFFBQVEsU0FBUyxFQUFFLENBQUM7QUFDcEIsS0FBSztBQUNMLElBQUksT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQztBQUNELFNBQVMsMEJBQTBCLENBQUMsYUFBYSxFQUFFO0FBQ25ELElBQUksT0FBTyxhQUFhLEVBQUUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDaEUsQ0FBQztBQUNELGVBQWUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO0FBQ3RDLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDakMsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0FBQ2pFLElBQUksTUFBTSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFFLElBQUksTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QyxJQUFJLE1BQU0sY0FBYyxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMvRCxJQUFJLElBQUk7QUFDUixRQUFRLE1BQU0sV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCO0FBQy9FLGFBQWEsT0FBTyxDQUFDLDBEQUEwRCxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxZQUFZLEtBQUs7QUFDMUksWUFBWSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDeEMsWUFBWSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDO0FBQ2pELGdCQUFnQixJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDckMsZ0JBQWdCLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUN6QyxnQkFBZ0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0FBQ3pDLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsWUFBWSxJQUFJLElBQUksRUFBRTtBQUN0QixnQkFBZ0IsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9ELGFBQWE7QUFDYixZQUFZLElBQUksWUFBWSxFQUFFO0FBQzlCLGdCQUFnQixPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzVFLGFBQWE7QUFDYixZQUFZLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5QyxTQUFTLENBQUM7QUFDVixhQUFhLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUM7QUFDbkQsYUFBYSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6RSxhQUFhLE9BQU8sQ0FBQyw4RUFBOEUsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsWUFBWSxLQUFLO0FBQ3JJLFlBQVksTUFBTSxHQUFHLEdBQUcsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDOUQsWUFBWSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ2pFLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDWjtBQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM1RCxRQUFRLE9BQU8sV0FBVyxDQUFDO0FBQzNCLEtBQUs7QUFDTCxJQUFJLE9BQU8sR0FBRyxFQUFFO0FBQ2hCLFFBQVEsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLHdCQUF3QixFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN6RSxRQUFRLElBQUlBLDRCQUFRLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFDMUQsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGFBQWEsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQzFDLElBQUksT0FBTyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUN6RCxDQUFDO0FBQ0QsU0FBUyxpQkFBaUIsR0FBRztBQUM3QixJQUFJLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUMzQixJQUFJLElBQUksQ0FBQyw2QkFBNkIsRUFBRSxFQUFFO0FBQzFDLFFBQVEsT0FBTyxXQUFXLENBQUM7QUFDM0IsS0FBSztBQUNMLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDakMsSUFBSSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztBQUMvQyxJQUFJLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixDQUFDQSw0QkFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzFGLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFO0FBQzVCLFFBQVEsTUFBTSxJQUFJLDZCQUE2QixDQUFDLG9DQUFvQyxDQUFDLENBQUM7QUFDdEYsS0FBSztBQUNMLElBQUlBLDRCQUFRLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksS0FBSztBQUNoRSxRQUFRLElBQUksSUFBSSxZQUFZQSw0QkFBUSxDQUFDLEtBQUssRUFBRTtBQUM1QyxZQUFZLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDdkQsWUFBWSxJQUFJLElBQUksRUFBRTtBQUN0QixnQkFBZ0IsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM1RCxnQkFBZ0IsV0FBVyxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMvQyxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxPQUFPLFdBQVcsQ0FBQztBQUN2QixDQUFDO0FBQ0Q7QUFDQSxNQUFNLDhCQUE4QixTQUFTLEtBQUssQ0FBQztBQUNuRCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGlCQUFpQixDQUFDLElBQUksRUFBRTtBQUN2QyxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ2pDLElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztBQUNsRSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsR0FBRyxNQUFNLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRSxJQUFJLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekMsSUFBSSxNQUFNLGNBQWMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDL0QsSUFBSSxJQUFJO0FBQ1IsUUFBUSxNQUFNLFdBQVcsR0FBRyxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLGdCQUFnQjtBQUMvRSxhQUFhLE9BQU8sQ0FBQywwREFBMEQsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsWUFBWSxLQUFLO0FBQzFJLFlBQVksTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3hDLFlBQVksTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQztBQUNqRCxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ3JDLGdCQUFnQixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDekMsZ0JBQWdCLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUN6QyxhQUFhLENBQUMsQ0FBQztBQUNmLFlBQVksSUFBSSxJQUFJLEVBQUU7QUFDdEIsZ0JBQWdCLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvRCxhQUFhO0FBQ2IsWUFBWSxJQUFJLFlBQVksRUFBRTtBQUM5QixnQkFBZ0IsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM1RSxhQUFhO0FBQ2IsWUFBWSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUMsU0FBUyxDQUFDO0FBQ1YsYUFBYSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDO0FBQ2xELGFBQWEsT0FBTyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekUsYUFBYSxPQUFPLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNyRDtBQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM1RCxRQUFRLE9BQU8sV0FBVyxDQUFDO0FBQzNCLEtBQUs7QUFDTCxJQUFJLE9BQU8sR0FBRyxFQUFFO0FBQ2hCLFFBQVEsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLHdCQUF3QixFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN6RSxRQUFRLElBQUlBLDRCQUFRLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFDMUQsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGNBQWMsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO0FBQzVDLElBQUksT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUMzRCxDQUFDO0FBQ0QsU0FBUyxrQkFBa0IsR0FBRztBQUM5QixJQUFJLE1BQU0sWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUM1QixJQUFJLElBQUksQ0FBQyw4QkFBOEIsRUFBRSxFQUFFO0FBQzNDLFFBQVEsT0FBTyxZQUFZLENBQUM7QUFDNUIsS0FBSztBQUNMLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDakMsSUFBSSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsc0JBQXNCLEVBQUUsQ0FBQztBQUNoRCxJQUFJLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixDQUFDQSw0QkFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzNGLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO0FBQzdCLFFBQVEsTUFBTSxJQUFJLDhCQUE4QixDQUFDLHFDQUFxQyxDQUFDLENBQUM7QUFDeEYsS0FBSztBQUNMLElBQUlBLDRCQUFRLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLElBQUksS0FBSztBQUNqRSxRQUFRLElBQUksSUFBSSxZQUFZQSw0QkFBUSxDQUFDLEtBQUssRUFBRTtBQUM1QyxZQUFZLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDeEQsWUFBWSxJQUFJLElBQUksRUFBRTtBQUN0QixnQkFBZ0IsTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUM3RCxnQkFBZ0IsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNoRCxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxPQUFPLFlBQVksQ0FBQztBQUN4QixDQUFDO0FBQ0Q7QUFDQSxNQUFNLGdDQUFnQyxTQUFTLEtBQUssQ0FBQztBQUNyRCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLG1CQUFtQixDQUFDLElBQUksRUFBRTtBQUN6QyxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ2pDLElBQUksTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsd0JBQXdCLEVBQUUsQ0FBQztBQUNwRSxJQUFJLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsR0FBRyxNQUFNLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRSxJQUFJLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDekMsSUFBSSxNQUFNLGNBQWMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDL0QsSUFBSSxJQUFJO0FBQ1IsUUFBUSxNQUFNLFdBQVcsR0FBRyxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLGdCQUFnQjtBQUMvRSxhQUFhLE9BQU8sQ0FBQywwREFBMEQsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsWUFBWSxLQUFLO0FBQzFJLFlBQVksTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0FBQ3hDLFlBQVksTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQztBQUNqRCxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ3JDLGdCQUFnQixNQUFNLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7QUFDekMsZ0JBQWdCLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUN6QyxhQUFhLENBQUMsQ0FBQztBQUNmLFlBQVksSUFBSSxJQUFJLEVBQUU7QUFDdEIsZ0JBQWdCLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUMvRCxhQUFhO0FBQ2IsWUFBWSxJQUFJLFlBQVksRUFBRTtBQUM5QixnQkFBZ0IsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM1RSxhQUFhO0FBQ2IsWUFBWSxPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDOUMsU0FBUyxDQUFDO0FBQ1YsYUFBYSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDO0FBQ2xELGFBQWEsT0FBTyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDekUsYUFBYSxPQUFPLENBQUMsbUJBQW1CLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUNyRDtBQUNBLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUM1RCxRQUFRLE9BQU8sV0FBVyxDQUFDO0FBQzNCLEtBQUs7QUFDTCxJQUFJLE9BQU8sR0FBRyxFQUFFO0FBQ2hCLFFBQVEsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLHdCQUF3QixFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN6RSxRQUFRLElBQUlBLDRCQUFRLENBQUMsTUFBTSxDQUFDLDRCQUE0QixDQUFDLENBQUM7QUFDMUQsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGdCQUFnQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7QUFDM0MsSUFBSSxPQUFPLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQzFELENBQUM7QUFDRCxTQUFTLG9CQUFvQixHQUFHO0FBQ2hDLElBQUksTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ3pCLElBQUksSUFBSSxDQUFDLGdDQUFnQyxFQUFFLEVBQUU7QUFDN0MsUUFBUSxPQUFPLFNBQVMsQ0FBQztBQUN6QixLQUFLO0FBQ0wsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNqQyxJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO0FBQ2xELElBQUksTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixDQUFDQSw0QkFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ3hGLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtBQUMxQixRQUFRLE1BQU0sSUFBSSxnQ0FBZ0MsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0FBQzVGLEtBQUs7QUFDTCxJQUFJQSw0QkFBUSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxLQUFLO0FBQzlELFFBQVEsSUFBSSxJQUFJLFlBQVlBLDRCQUFRLENBQUMsS0FBSyxFQUFFO0FBQzVDLFlBQVksTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMxRCxZQUFZLElBQUksSUFBSSxFQUFFO0FBQ3RCLGdCQUFnQixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQy9ELGdCQUFnQixTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzdDLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLE9BQU8sU0FBUyxDQUFDO0FBQ3JCLENBQUM7QUFDRDtBQUNBLE1BQU0sNkJBQTZCLFNBQVMsS0FBSyxDQUFDO0FBQ2xELENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFO0FBQ3RDLElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDakMsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0FBQ2pFLElBQUksTUFBTSxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFFLElBQUksTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN6QyxJQUFJLE1BQU0sY0FBYyxHQUFHLE1BQU0sV0FBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMvRCxJQUFJLElBQUk7QUFDUixRQUFRLE1BQU0sV0FBVyxHQUFHLE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCO0FBQy9FLGFBQWEsT0FBTyxDQUFDLDBEQUEwRCxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxZQUFZLEtBQUs7QUFDMUksWUFBWSxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDeEMsWUFBWSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDO0FBQ2pELGdCQUFnQixJQUFJLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDckMsZ0JBQWdCLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztBQUN6QyxnQkFBZ0IsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0FBQ3pDLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsWUFBWSxJQUFJLElBQUksRUFBRTtBQUN0QixnQkFBZ0IsV0FBVyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9ELGFBQWE7QUFDYixZQUFZLElBQUksWUFBWSxFQUFFO0FBQzlCLGdCQUFnQixPQUFPLFdBQVcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzVFLGFBQWE7QUFDYixZQUFZLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM5QyxTQUFTLENBQUM7QUFDVixhQUFhLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxRQUFRLENBQUM7QUFDbEQsYUFBYSxPQUFPLENBQUMsa0JBQWtCLEVBQUUsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6RSxhQUFhLE9BQU8sQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ3JEO0FBQ0EsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzVELFFBQVEsT0FBTyxXQUFXLENBQUM7QUFDM0IsS0FBSztBQUNMLElBQUksT0FBTyxHQUFHLEVBQUU7QUFDaEIsUUFBUSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsd0JBQXdCLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3pFLFFBQVEsSUFBSUEsNEJBQVEsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQztBQUMxRCxLQUFLO0FBQ0wsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUU7QUFDMUMsSUFBSSxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ3pELENBQUM7QUFDRCxTQUFTLGlCQUFpQixHQUFHO0FBQzdCLElBQUksTUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDO0FBQzNCLElBQUksSUFBSSxDQUFDLDZCQUE2QixFQUFFLEVBQUU7QUFDMUMsUUFBUSxPQUFPLFdBQVcsQ0FBQztBQUMzQixLQUFLO0FBQ0wsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNqQyxJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0FBQy9DLElBQUksTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMscUJBQXFCLENBQUNBLDRCQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDMUYsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7QUFDNUIsUUFBUSxNQUFNLElBQUksNkJBQTZCLENBQUMsb0NBQW9DLENBQUMsQ0FBQztBQUN0RixLQUFLO0FBQ0wsSUFBSUEsNEJBQVEsQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxLQUFLO0FBQ2hFLFFBQVEsSUFBSSxJQUFJLFlBQVlBLDRCQUFRLENBQUMsS0FBSyxFQUFFO0FBQzVDLFlBQVksTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUN2RCxZQUFZLElBQUksSUFBSSxFQUFFO0FBQ3RCLGdCQUFnQixNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzVELGdCQUFnQixXQUFXLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQy9DLGFBQWE7QUFDYixTQUFTO0FBQ1QsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUM7QUFDRDtBQUNBLFNBQVMsNEJBQTRCLEdBQUc7QUFDeEMsSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDO0FBQzNCO0FBQ0EsSUFBSSxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ3hFLElBQUksSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7QUFDdEQsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQSxJQUFJLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDbEUsSUFBSSxPQUFPLGFBQWEsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUM7QUFDbkUsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyw2QkFBNkIsR0FBRztBQUN6QyxJQUFJLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7QUFDM0I7QUFDQSxJQUFJLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDM0MsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixLQUFLO0FBQ0w7QUFDQSxJQUFJLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDbEUsSUFBSSxPQUFPLGFBQWEsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUM7QUFDcEUsQ0FBQztBQUNELFNBQVMsOEJBQThCLEdBQUc7QUFDMUMsSUFBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDO0FBQzNCO0FBQ0EsSUFBSSxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ2xFLElBQUksT0FBTyxhQUFhLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDO0FBQ3JFLENBQUM7QUFDRCxTQUFTLGdDQUFnQyxHQUFHO0FBQzVDLElBQUksTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztBQUMzQjtBQUNBLElBQUksTUFBTSxhQUFhLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUNsRSxJQUFJLE9BQU8sYUFBYSxJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQztBQUN2RSxDQUFDO0FBQ0QsU0FBUyw2QkFBNkIsR0FBRztBQUN6QyxJQUFJLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7QUFDM0I7QUFDQSxJQUFJLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDbEUsSUFBSSxPQUFPLGFBQWEsSUFBSSxhQUFhLENBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUM7QUFDcEUsQ0FBQztBQUNELFNBQVMsdUJBQXVCLENBQUMsV0FBVyxFQUFFO0FBQzlDLElBQUksTUFBTSxXQUFXLEdBQUc7QUFDeEIsUUFBUSxHQUFHLEVBQUUsb0JBQW9CO0FBQ2pDLFFBQVEsSUFBSSxFQUFFLHFCQUFxQjtBQUNuQyxRQUFRLEtBQUssRUFBRSxzQkFBc0I7QUFDckMsUUFBUSxPQUFPLEVBQUUsd0JBQXdCO0FBQ3pDLFFBQVEsSUFBSSxFQUFFLHFCQUFxQjtBQUNuQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDbkIsSUFBSSxPQUFPLFdBQVcsRUFBRSxDQUFDO0FBQ3pCLENBQUM7QUFDRCxTQUFTLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxJQUFJLEVBQUU7QUFDL0MsSUFBSSxNQUFNLFFBQVEsR0FBRztBQUNyQixRQUFRLEdBQUcsRUFBRSxlQUFlO0FBQzVCLFFBQVEsS0FBSyxFQUFFLGlCQUFpQjtBQUNoQyxRQUFRLElBQUksRUFBRSxnQkFBZ0I7QUFDOUIsS0FBSyxDQUFDO0FBQ04sSUFBSSxPQUFPLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBQ0Q7QUFDQSxPQUFpQyxDQUFBLHlCQUFBLEdBQUcseUJBQXlCLENBQUM7QUFDOUQsT0FBbUMsQ0FBQSwyQkFBQSxHQUFHLDJCQUEyQixDQUFDO0FBQ2xFLE9BQXFDLENBQUEsNkJBQUEsR0FBRyw2QkFBNkIsQ0FBQztBQUN0RSxPQUFrQyxDQUFBLDBCQUFBLEdBQUcsMEJBQTBCLENBQUM7QUFDaEUsT0FBa0MsQ0FBQSwwQkFBQSxHQUFHLDBCQUEwQixDQUFDO0FBQ2hFLE9BQW9DLENBQUEsNEJBQUEsR0FBRyw0QkFBNEIsQ0FBQztBQUNwRSxPQUFzQyxDQUFBLDhCQUFBLEdBQUcsOEJBQThCLENBQUM7QUFDeEUsT0FBd0MsQ0FBQSxnQ0FBQSxHQUFHLGdDQUFnQyxDQUFDO0FBQzVFLE9BQXFDLENBQUEsNkJBQUEsR0FBRyw2QkFBNkIsQ0FBQztBQUN0RSxPQUFxQyxDQUFBLDZCQUFBLEdBQUcsNkJBQTZCLENBQUM7QUFDdEUsT0FBdUIsQ0FBQSxlQUFBLEdBQUcsZUFBZSxDQUFDO0FBQzFDLE9BQXlCLENBQUEsaUJBQUEsR0FBRyxpQkFBaUIsQ0FBQztBQUM5QyxPQUEwQixDQUFBLGtCQUFBLEdBQUcsa0JBQWtCLENBQUM7QUFDaEQsT0FBMkIsQ0FBQSxtQkFBQSxHQUFHLG1CQUFtQixDQUFDO0FBQ2xELE9BQXdCLENBQUEsZ0JBQUEsR0FBRyxnQkFBZ0IsQ0FBQztBQUM1QyxPQUF3QixDQUFBLGdCQUFBLEdBQUcsZ0JBQWdCLENBQUM7QUFDNUMsT0FBd0IsQ0FBQSxnQkFBQSxHQUFHLGdCQUFnQixDQUFDO0FBQzVDLE9BQTBCLENBQUEsa0JBQUEsR0FBRyxrQkFBa0IsQ0FBQztBQUNoRCxPQUE0QixDQUFBLG9CQUFBLEdBQUcsb0JBQW9CLENBQUM7QUFDcEQsT0FBeUIsQ0FBQSxpQkFBQSxHQUFHLGlCQUFpQixDQUFDO0FBQzlDLE9BQXlCLENBQUEsaUJBQUEsR0FBRyxpQkFBaUIsQ0FBQztBQUM5QyxPQUFvQixDQUFBLFlBQUEsR0FBRyxZQUFZLENBQUM7QUFDcEMsT0FBNEIsQ0FBQSxvQkFBQSxHQUFHLG9CQUFvQixDQUFDO0FBQ3BELE9BQXVCLENBQUEsZUFBQSxHQUFHLGVBQWUsQ0FBQztBQUMxQyxPQUF1QixDQUFBLGVBQUEsR0FBRyxlQUFlLENBQUM7QUFDMUMsT0FBa0IsQ0FBQSxVQUFBLEdBQUcsVUFBVSxDQUFDO0FBQ2hDLE9BQXNCLENBQUEsY0FBQSxHQUFHLGNBQWMsQ0FBQztBQUN4QyxPQUE4QixDQUFBLHNCQUFBLEdBQUcsc0JBQXNCLENBQUM7QUFDeEQsT0FBK0IsQ0FBQSx1QkFBQSxHQUFHLHVCQUF1QixDQUFDO0FBQzFELE9BQXdCLENBQUEsZ0JBQUEsR0FBRyxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFnQyxDQUFBLHdCQUFBLEdBQUcsd0JBQXdCLENBQUM7QUFDNUQsT0FBdUIsQ0FBQSxlQUFBLEdBQUcsZUFBZSxDQUFDO0FBQzFDLE9BQXFCLENBQUEsYUFBQSxHQUFHLGFBQWEsQ0FBQztBQUN0QyxPQUE2QixDQUFBLHFCQUFBLEdBQUcscUJBQXFCLENBQUM7QUFDdEQsT0FBcUIsQ0FBQSxhQUFBLEdBQUcsYUFBYSxDQUFDO0FBQ3RDLE9BQUEsQ0FBQSxxQkFBNkIsR0FBRyxxQkFBcUIsQ0FBQTs7O0FDMXRCckQ7QUFDQTtBQUNBO0FBQ0EsSUFBSSxlQUFlLENBQUM7QUFDcEIsSUFBSSxLQUFLLEdBQUcsSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEIsU0FBUyxHQUFHLEdBQUc7QUFDOUI7QUFDQSxFQUFFLElBQUksQ0FBQyxlQUFlLEVBQUU7QUFDeEI7QUFDQTtBQUNBLElBQUksZUFBZSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsZUFBZSxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sUUFBUSxLQUFLLFdBQVcsSUFBSSxPQUFPLFFBQVEsQ0FBQyxlQUFlLEtBQUssVUFBVSxJQUFJLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JQO0FBQ0EsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFO0FBQzFCLE1BQU0sTUFBTSxJQUFJLEtBQUssQ0FBQywwR0FBMEcsQ0FBQyxDQUFDO0FBQ2xJLEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQSxFQUFFLE9BQU8sZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2hDOztBQ2xCQSxZQUFlLHFIQUFxSDs7QUNFcEksU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFO0FBQ3hCLEVBQUUsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RDs7QUNIQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQ25CO0FBQ0EsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUM5QixFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUU7QUFDeEIsRUFBRSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssU0FBUyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckY7QUFDQTtBQUNBLEVBQUUsSUFBSSxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FB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 diff --git a/.obsidian/plugins/obsidian-advanced-uri/manifest.json b/.obsidian/plugins/obsidian-advanced-uri/manifest.json index 7f100924..46788ab8 100644 --- a/.obsidian/plugins/obsidian-advanced-uri/manifest.json +++ b/.obsidian/plugins/obsidian-advanced-uri/manifest.json @@ -4,7 +4,7 @@ "description": "Advanced modes for Obsidian URI", "isDesktopOnly": false, "js": "main.js", - "version": "1.27.1", + "version": "1.28.0", "author": "Vinzent", "authorUrl": "https://github.com/Vinzent03" } diff --git a/.obsidian/plugins/obsidian-camera/main.js b/.obsidian/plugins/obsidian-camera/main.js index c14bd813..3b787b33 100644 --- a/.obsidian/plugins/obsidian-camera/main.js +++ b/.obsidian/plugins/obsidian-camera/main.js @@ -60,39 +60,46 @@ var import_obsidian = __toModule(require("obsidian")); var CameraModal = class extends import_obsidian.Modal { constructor(app2, cameraSettings) { super(app2); + this.videoStream = null; this.chosenFolderPath = cameraSettings.chosenFolderPath; } onOpen() { return __async(this, null, function* () { const { contentEl } = this; const webCamContainer = contentEl.createDiv(); + const statusMsg = webCamContainer.createEl("span", { text: "Loading.." }); const videoEl = webCamContainer.createEl("video"); - videoEl.autoplay = true; - videoEl.muted = true; - const recordVideoButton = webCamContainer.createEl("button", { + const buttonsDiv = webCamContainer.createDiv(); + const firstRow = buttonsDiv.createDiv(); + const secondRow = buttonsDiv.createDiv(); + const recordVideoButton = firstRow.createEl("button", { text: "Start recording" }); - const switchCameraButton = webCamContainer.createEl("button", { + const switchCameraButton = firstRow.createEl("button", { text: "Switch Camera" }); - const snapPhotoButton = webCamContainer.createEl("button", { + const snapPhotoButton = firstRow.createEl("button", { text: "Take a snap" }); - const filePicker = webCamContainer.createEl("input", { + firstRow.style.display = "none"; + secondRow.style.display = "none"; + const filePicker = secondRow.createEl("input", { placeholder: "Choose image file from system", type: "file" }); filePicker.accept = "image/*,video/*"; filePicker.capture = "camera"; - const filePicker2 = webCamContainer.createEl("input", { + const filePicker2 = secondRow.createEl("input", { placeholder: "Choose image file from system", type: "file" }); filePicker2.accept = "image/*"; filePicker2.capture = "camera"; + videoEl.autoplay = true; + videoEl.muted = true; const chunks = []; let recorder = null; - let videoStream = null; + this.videoStream = null; const cameras = (yield navigator.mediaDevices.enumerateDevices()).filter((d) => d.kind === "videoinput"); if (cameras.length <= 1) switchCameraButton.style.display = "none"; @@ -108,13 +115,14 @@ var CameraModal = class extends import_obsidian.Modal { return null; } }); - videoStream = yield getVideoStream(); - if (!videoStream) { - videoEl.style.display = "none"; - snapPhotoButton.style.display = "none"; - recordVideoButton.style.display = "none"; - switchCameraButton.style.display = "none"; - filePicker2.style.display = "block"; + this.videoStream = yield getVideoStream(); + if (this.videoStream) { + firstRow.style.display = "block"; + secondRow.style.display = "block"; + statusMsg.style.display = "none"; + } else { + secondRow.style.display = "block"; + statusMsg.textContent = "Error in loading videostream in your device.."; } const handleImageSelectChange = (file) => __async(this, null, function* () { const chosenFile = file; @@ -145,14 +153,11 @@ var CameraModal = class extends import_obsidian.Modal { ` : ` ![[${filePath}]] `, cursor); - videoStream && videoStream.getTracks().forEach((track) => { - track.stop(); - }); this.close(); }); switchCameraButton.onclick = () => __async(this, null, function* () { cameraIndex = (cameraIndex + 1) % cameras.length; - videoStream = yield getVideoStream(); + this.videoStream = yield getVideoStream(); }); snapPhotoButton.onclick = () => { const canvas = webCamContainer.createEl("canvas"); @@ -166,7 +171,7 @@ var CameraModal = class extends import_obsidian.Modal { saveFile(bufferFile, true); }), "image/png"); }; - videoEl.srcObject = videoStream; + videoEl.srcObject = this.videoStream; recordVideoButton.onclick = () => __async(this, null, function* () { switchCameraButton.disabled = true; let isRecording = recorder && recorder.state === "recording"; @@ -175,12 +180,12 @@ var CameraModal = class extends import_obsidian.Modal { isRecording = !isRecording; recordVideoButton.innerText = isRecording ? "Stop Recording" : "Start Recording"; if (!recorder) { - recorder = new MediaRecorder(videoStream, { + recorder = new MediaRecorder(this.videoStream, { mimeType: "video/webm" }); } recorder.ondataavailable = (e) => chunks.push(e.data); - recorder.onstop = (e) => __async(this, null, function* () { + recorder.onstop = (_) => __async(this, null, function* () { const blob = new Blob(chunks, { type: "audio/ogg; codecs=opus" }); @@ -192,7 +197,11 @@ var CameraModal = class extends import_obsidian.Modal { }); } onClose() { + var _a; const { contentEl } = this; + (_a = this.videoStream) == null ? void 0 : _a.getTracks().forEach((track) => { + track.stop(); + }); contentEl.empty(); } }; @@ -252,4 +261,4 @@ var ObsidianCamera = class extends import_obsidian3.Plugin { // main.ts var main_default = ObsidianCamera; -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyIsICJzcmMvQXBwLnRzIiwgInNyYy9Nb2RhbC50cyIsICJzcmMvU2V0dGluZ3NUYWIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCBPYnNpZGlhbkNhbWVyYSBmcm9tIFwic3JjL0FwcFwiO1xuXG5leHBvcnQgZGVmYXVsdCBPYnNpZGlhbkNhbWVyYSIsICJpbXBvcnQgeyBQbHVnaW4gfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBDYW1lcmFNb2RhbCBmcm9tIFwiLi9Nb2RhbFwiO1xuaW1wb3J0IENhbWVyYVNldHRpbmdzVGFiLCB7IERFRkFVTFRfU0VUVElOR1MsIENhbWVyYVBsdWdpblNldHRpbmdzIH0gZnJvbSBcIi4vU2V0dGluZ3NUYWJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT2JzaWRpYW5DYW1lcmEgZXh0ZW5kcyBQbHVnaW4ge1xuICBzZXR0aW5nczogQ2FtZXJhUGx1Z2luU2V0dGluZ3M7XG4gIGFzeW5jIG9ubG9hZCgpIHtcbiAgICBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xuICAgIHRoaXMuYWRkUmliYm9uSWNvbihcImNhbWVyYVwiLCBcIk9ic2lkaWFuIENhbWVyYVwiLCAoZXZ0OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBuZXcgQ2FtZXJhTW9kYWwodGhpcy5hcHAsIHRoaXMuc2V0dGluZ3MpLm9wZW4oKTtcbiAgICB9KTtcbiAgICB0aGlzLmFkZFNldHRpbmdUYWIobmV3IENhbWVyYVNldHRpbmdzVGFiKHRoaXMuYXBwLCB0aGlzKSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiT3BlbiBjYW1lcmEgbW9kYWxcIixcbiAgICAgIG5hbWU6IFwiT3BlbiBjYW1lcmEgbW9kYWwgLyBGaWxlIFBpY2tlclwiLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgbmV3IENhbWVyYU1vZGFsKHRoaXMuYXBwLCB0aGlzLnNldHRpbmdzKS5vcGVuKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cblxuICBhc3luYyBsb2FkU2V0dGluZ3MoKSB7XG4gICAgdGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfU0VUVElOR1MsIGF3YWl0IHRoaXMubG9hZERhdGEoKSk7XG4gIH1cblxuICBhc3luYyBzYXZlU2V0dGluZ3MoKSB7XG4gICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcbiAgfVxufVxuIiwgImltcG9ydCB7IEFwcCwgTWFya2Rvd25WaWV3LCBNb2RhbCwgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nXG5pbXBvcnQgeyBDYW1lcmFQbHVnaW5TZXR0aW5ncyB9IGZyb20gJy4vU2V0dGluZ3NUYWInO1xuXG5jbGFzcyBDYW1lcmFNb2RhbCBleHRlbmRzIE1vZGFsIHtcbiAgY2hvc2VuRm9sZGVyUGF0aDogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgY2FtZXJhU2V0dGluZ3M6IENhbWVyYVBsdWdpblNldHRpbmdzKSB7XG4gICAgc3VwZXIoYXBwKTtcbiAgICB0aGlzLmNob3NlbkZvbGRlclBhdGggPSBjYW1lcmFTZXR0aW5ncy5jaG9zZW5Gb2xkZXJQYXRoXG4gIH1cblxuICBhc3luYyBvbk9wZW4oKSB7XG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG4gICAgY29uc3Qgd2ViQ2FtQ29udGFpbmVyID0gY29udGVudEVsLmNyZWF0ZURpdigpO1xuICAgIC8vIGNvbnN0IHBUZXh0ID0gd2ViQ2FtQ29udGFpbmVyLmNyZWF0ZUVsXG4gICAgLy8gKCdwJywgeyB0ZXh0OiAnZ2V0VmlkZW9TdHJlYW0gbm90IHlldCBzdXBwb3J0ZWQgb24gdGhpcyBkZXZpY2UuJyB9KTtcbiAgICAvLyBwVGV4dC5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXG4gICAgY29uc3QgdmlkZW9FbCA9IHdlYkNhbUNvbnRhaW5lci5jcmVhdGVFbChcInZpZGVvXCIpO1xuICAgIHZpZGVvRWwuYXV0b3BsYXkgPSB0cnVlO1xuICAgIHZpZGVvRWwubXV0ZWQgPSB0cnVlXG4gICAgY29uc3QgcmVjb3JkVmlkZW9CdXR0b24gPSB3ZWJDYW1Db250YWluZXIuY3JlYXRlRWwoXCJidXR0b25cIiwge1xuICAgICAgdGV4dDogXCJTdGFydCByZWNvcmRpbmdcIixcbiAgICB9KTtcbiAgICBjb25zdCBzd2l0Y2hDYW1lcmFCdXR0b24gPSB3ZWJDYW1Db250YWluZXIuY3JlYXRlRWwoXCJidXR0b25cIiwge1xuICAgICAgdGV4dDogXCJTd2l0Y2ggQ2FtZXJhXCIsXG4gICAgfSk7XG4gICAgY29uc3Qgc25hcFBob3RvQnV0dG9uID0gd2ViQ2FtQ29udGFpbmVyLmNyZWF0ZUVsKFwiYnV0dG9uXCIsIHtcbiAgICAgIHRleHQ6IFwiVGFrZSBhIHNuYXBcIixcbiAgICB9KTtcblxuICAgIGNvbnN0IGZpbGVQaWNrZXIgPSB3ZWJDYW1Db250YWluZXIuY3JlYXRlRWwoXCJpbnB1dFwiLCB7XG4gICAgICBwbGFjZWhvbGRlcjogXCJDaG9vc2UgaW1hZ2UgZmlsZSBmcm9tIHN5c3RlbVwiLFxuICAgICAgdHlwZTogXCJmaWxlXCIsXG4gICAgfSk7XG4gICAgZmlsZVBpY2tlci5hY2NlcHQgPSBcImltYWdlLyosdmlkZW8vKlwiO1xuICAgIGZpbGVQaWNrZXIuY2FwdHVyZSA9IFwiY2FtZXJhXCI7IC8vIGJhY2sgY2FtZXJhIGJ5IGRlZmF1bHQgZm9yIG1vYmlsZSBzY3JlZW5zXG5cbiAgICBjb25zdCBmaWxlUGlja2VyMiA9IHdlYkNhbUNvbnRhaW5lci5jcmVhdGVFbChcImlucHV0XCIsIHtcbiAgICAgIHBsYWNlaG9sZGVyOiBcIkNob29zZSBpbWFnZSBmaWxlIGZyb20gc3lzdGVtXCIsXG4gICAgICB0eXBlOiBcImZpbGVcIixcbiAgICB9KTtcbiAgICBmaWxlUGlja2VyMi5hY2NlcHQgPSBcImltYWdlLypcIjtcbiAgICBmaWxlUGlja2VyMi5jYXB0dXJlID0gXCJjYW1lcmFcIjsgLy8gYmFjayBjYW1lcmEgYnkgZGVmYXVsdCBmb3IgbW9iaWxlIHNjcmVlbnNcbiAgICAvLyBmaWxlUGlja2VyMi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnXG5cblxuICAgIGNvbnN0IGNodW5rczogQmxvYlBhcnRbXSA9IFtdO1xuICAgIGxldCByZWNvcmRlcjogTWVkaWFSZWNvcmRlciA9IG51bGw7XG4gICAgbGV0IHZpZGVvU3RyZWFtOiBNZWRpYVN0cmVhbSA9IG51bGw7XG5cbiAgICBjb25zdCBjYW1lcmFzID0gKFxuICAgICAgYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKClcbiAgICApLmZpbHRlcigoZCkgPT4gZC5raW5kID09PSBcInZpZGVvaW5wdXRcIik7XG5cbiAgICBpZiAoY2FtZXJhcy5sZW5ndGggPD0gMSkgc3dpdGNoQ2FtZXJhQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICBsZXQgY2FtZXJhSW5kZXggPSAwO1xuXG4gICAgY29uc3QgZ2V0VmlkZW9TdHJlYW0gPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe1xuICAgICAgICAgIHZpZGVvOiB7IGRldmljZUlkOiBjYW1lcmFzW2NhbWVyYUluZGV4XS5kZXZpY2VJZCB9LFxuICAgICAgICAgIGF1ZGlvOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHZpZGVvU3RyZWFtID0gYXdhaXQgZ2V0VmlkZW9TdHJlYW0oKTtcbiAgICBpZiAoIXZpZGVvU3RyZWFtKSB7XG4gICAgICB2aWRlb0VsLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcbiAgICAgIC8vIHBUZXh0LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXG4gICAgICBzbmFwUGhvdG9CdXR0b24uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xuICAgICAgcmVjb3JkVmlkZW9CdXR0b24uc3R5bGUuZGlzcGxheSA9ICdub25lJ1xuICAgICAgc3dpdGNoQ2FtZXJhQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSdcbiAgICAgIGZpbGVQaWNrZXIyLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXG4gICAgfVxuXG4gICAgY29uc3QgaGFuZGxlSW1hZ2VTZWxlY3RDaGFuZ2UgPSBhc3luYyAoZmlsZTogRmlsZSkgPT4ge1xuICAgICAgY29uc3QgY2hvc2VuRmlsZSA9IGZpbGU7XG4gICAgICBjb25zdCBidWZmZXJGaWxlID0gYXdhaXQgY2hvc2VuRmlsZS5hcnJheUJ1ZmZlcigpO1xuICAgICAgc2F2ZUZpbGUoYnVmZmVyRmlsZSwgZmFsc2UsIGNob3NlbkZpbGUubmFtZS5zcGxpdCgnICcpLmpvaW4oJy0nKSk7XG4gICAgfTtcbiAgICBmaWxlUGlja2VyLm9uY2hhbmdlID0gKCkgPT4gaGFuZGxlSW1hZ2VTZWxlY3RDaGFuZ2UoZmlsZVBpY2tlci5maWxlc1swXSlcbiAgICBmaWxlUGlja2VyMi5vbmNoYW5nZSA9ICgpID0+IGhhbmRsZUltYWdlU2VsZWN0Q2hhbmdlKGZpbGVQaWNrZXIyLmZpbGVzWzBdKVxuXG5cbiAgICBjb25zdCB2aWV3ID0gdGhpcy5hcHAud29ya3NwYWNlLmdldEFjdGl2ZVZpZXdPZlR5cGUoTWFya2Rvd25WaWV3KTtcblxuICAgIGNvbnN0IHNhdmVGaWxlID0gYXN5bmMgKGZpbGU6IEFycmF5QnVmZmVyLCBpc0ltYWdlID0gZmFsc2UsIGZpbGVOYW1lID0gJycpID0+IHtcbiAgICAgIGlmICghZmlsZU5hbWUpIHtcbiAgICAgICAgY29uc3QgZGF0ZVN0cmluZyA9IChuZXcgRGF0ZSgpICsgXCJcIilcbiAgICAgICAgICAuc2xpY2UoNCwgMjgpXG4gICAgICAgICAgLnNwbGl0KFwiIFwiKVxuICAgICAgICAgIC5qb2luKFwiX1wiKVxuICAgICAgICAgIC5zcGxpdChcIjpcIilcbiAgICAgICAgICAuam9pbihcIi1cIik7XG4gICAgICAgIGZpbGVOYW1lID0gaXNJbWFnZVxuICAgICAgICAgID8gYGltYWdlXyR7ZGF0ZVN0cmluZ30ucG5nYFxuICAgICAgICAgIDogYHZpZGVvXyR7ZGF0ZVN0cmluZ30ud2VibWA7XG4gICAgICB9XG4gICAgICBpZiAoIWlzSW1hZ2UpIG5ldyBOb3RpY2UoXCJBZGRpbmcgdmlkZW8gdG8gdmF1bHQuLi5cIilcblxuICAgICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmNob3NlbkZvbGRlclBhdGggKyBcIi9cIiArIGZpbGVOYW1lO1xuICAgICAgY29uc3QgZm9sZGVyRXhpc3RzID1cbiAgICAgICAgYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aCh0aGlzLmNob3NlbkZvbGRlclBhdGgpO1xuICAgICAgaWYgKCFmb2xkZXJFeGlzdHMpIGF3YWl0IGFwcC52YXVsdC5jcmVhdGVGb2xkZXIodGhpcy5jaG9zZW5Gb2xkZXJQYXRoKTtcbiAgICAgIGNvbnN0IGZpbGVFeGlzdHMgPVxuICAgICAgICBhcHAudmF1bHQuZ2V0QWJzdHJhY3RGaWxlQnlQYXRoKGZpbGVQYXRoKTtcbiAgICAgIGlmICghZmlsZUV4aXN0cylcbiAgICAgICAgYXdhaXQgYXBwLnZhdWx0LmNyZWF0ZUJpbmFyeShmaWxlUGF0aCwgZmlsZSk7XG5cbiAgICAgIGlmICghdmlldykgcmV0dXJuIG5ldyBOb3RpY2UoYFNhdmVkIHRvICR7ZmlsZVBhdGh9YCk7XG5cbiAgICAgIGNvbnN0IGN1cnNvciA9IHZpZXcuZWRpdG9yLmdldEN1cnNvcigpO1xuICAgICAgdmlldy5lZGl0b3IucmVwbGFjZVJhbmdlKFxuICAgICAgICBpc0ltYWdlXG4gICAgICAgICAgPyBgIVske2ZpbGVOYW1lfV0oJHtmaWxlUGF0aH0pXFxuYFxuICAgICAgICAgIDogYFxcbiFbWyR7ZmlsZVBhdGh9XV1cXG5gLFxuICAgICAgICBjdXJzb3JcbiAgICAgICk7XG4gICAgICB2aWRlb1N0cmVhbSAmJiB2aWRlb1N0cmVhbS5nZXRUcmFja3MoKS5mb3JFYWNoKCh0cmFjaykgPT4ge1xuICAgICAgICB0cmFjay5zdG9wKCk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuY2xvc2UoKTsgLy8gY2xvc2luZyB0aGUgbW9kYWxcbiAgICB9O1xuXG5cbiAgICBzd2l0Y2hDYW1lcmFCdXR0b24ub25jbGljayA9IGFzeW5jICgpID0+IHtcbiAgICAgIGNhbWVyYUluZGV4ID0gKGNhbWVyYUluZGV4ICsgMSkgJSBjYW1lcmFzLmxlbmd0aDtcbiAgICAgIHZpZGVvU3RyZWFtID0gYXdhaXQgZ2V0VmlkZW9TdHJlYW0oKTtcbiAgICB9O1xuXG4gICAgc25hcFBob3RvQnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7XG4gICAgICBjb25zdCBjYW52YXMgPSB3ZWJDYW1Db250YWluZXIuY3JlYXRlRWwoXCJjYW52YXNcIik7XG4gICAgICBjYW52YXMuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgY29uc3QgeyB2aWRlb0hlaWdodCwgdmlkZW9XaWR0aCB9ID0gdmlkZW9FbFxuICAgICAgY2FudmFzLmhlaWdodCA9IHZpZGVvSGVpZ2h0O1xuICAgICAgY2FudmFzLndpZHRoID0gdmlkZW9XaWR0aDtcblxuICAgICAgY2FudmFzLmdldENvbnRleHQoXCIyZFwiKS5kcmF3SW1hZ2UodmlkZW9FbCwgMCwgMCwgdmlkZW9XaWR0aCwgdmlkZW9IZWlnaHQpO1xuICAgICAgY2FudmFzLnRvQmxvYihhc3luYyAoYmxvYikgPT4ge1xuICAgICAgICBjb25zdCBidWZmZXJGaWxlID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpO1xuICAgICAgICBzYXZlRmlsZShidWZmZXJGaWxlLCB0cnVlKTtcbiAgICAgIH0sIFwiaW1hZ2UvcG5nXCIpO1xuICAgIH07XG5cbiAgICB2aWRlb0VsLnNyY09iamVjdCA9IHZpZGVvU3RyZWFtO1xuXG4gICAgcmVjb3JkVmlkZW9CdXR0b24ub25jbGljayA9IGFzeW5jICgpID0+IHtcbiAgICAgIHN3aXRjaENhbWVyYUJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XG4gICAgICBsZXQgaXNSZWNvcmRpbmc6IGJvb2xlYW4gPVxuICAgICAgICByZWNvcmRlciAmJiByZWNvcmRlci5zdGF0ZSA9PT0gXCJyZWNvcmRpbmdcIjtcbiAgICAgIGlmIChpc1JlY29yZGluZykgcmVjb3JkZXIuc3RvcCgpO1xuICAgICAgaXNSZWNvcmRpbmcgPSAhaXNSZWNvcmRpbmc7XG4gICAgICByZWNvcmRWaWRlb0J1dHRvbi5pbm5lclRleHQgPSBpc1JlY29yZGluZ1xuICAgICAgICA/IFwiU3RvcCBSZWNvcmRpbmdcIlxuICAgICAgICA6IFwiU3RhcnQgUmVjb3JkaW5nXCI7XG5cbiAgICAgIGlmICghcmVjb3JkZXIpIHtcbiAgICAgICAgcmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcih2aWRlb1N0cmVhbSwge1xuICAgICAgICAgIG1pbWVUeXBlOiBcInZpZGVvL3dlYm1cIixcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJlY29yZGVyLm9uZGF0YWF2YWlsYWJsZSA9IChlKSA9PiBjaHVua3MucHVzaChlLmRhdGEpO1xuICAgICAgcmVjb3JkZXIub25zdG9wID0gYXN5bmMgKGUpID0+IHtcbiAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKGNodW5rcywge1xuICAgICAgICAgIHR5cGU6IFwiYXVkaW8vb2dnOyBjb2RlY3M9b3B1c1wiLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgYnVmZmVyRmlsZSA9IGF3YWl0IGJsb2IuYXJyYXlCdWZmZXIoKTtcbiAgICAgICAgc2F2ZUZpbGUoYnVmZmVyRmlsZSwgZmFsc2UpO1xuICAgICAgfTtcbiAgICAgIHJlY29yZGVyLnN0YXJ0KCk7XG4gICAgfTtcblxuXG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xuICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENhbWVyYU1vZGFsIiwgIlxuaW1wb3J0IE9ic2lkaWFuQ2FtZXJhIGZyb20gXCJtYWluXCI7XG5pbXBvcnQgeyBBcHAsIFBsdWdpblNldHRpbmdUYWIsIFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuZXhwb3J0IGludGVyZmFjZSBDYW1lcmFQbHVnaW5TZXR0aW5ncyB7XG4gIGNob3NlbkZvbGRlclBhdGg6IHN0cmluZztcblxufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogQ2FtZXJhUGx1Z2luU2V0dGluZ3MgPSB7XG4gIGNob3NlbkZvbGRlclBhdGg6ICdhdHRhY2htZW50cy9zbmFwcydcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FtZXJhU2V0dGluZ3NUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgcGx1Z2luOiBPYnNpZGlhbkNhbWVyYTtcblxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBPYnNpZGlhbkNhbWVyYSkge1xuICAgIHN1cGVyKGFwcCwgcGx1Z2luKTtcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgfVxuXG4gIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgY29uc3QgeyBjb250YWluZXJFbCB9ID0gdGhpcztcbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ09ic2lkaWFuLUNhbWVyYSBzZXR0aW5ncycgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdGb2xkZXIgUGF0aCcpXG4gICAgICAuc2V0RGVzYygnRm9sZGVyIHdoZXJlIHRoZSB2aWRlb3MgYW5kIHNuYXBzIHNob3VsZCBiZSBzYXZlZCcpXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHRcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKCdFbnRlciB5b3VyIHNlY3JldCcpXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jaG9zZW5Gb2xkZXJQYXRoKVxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Nob3NlbiBGb2xkZXIgUGF0aDogJyArIHZhbHVlKTtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jaG9zZW5Gb2xkZXJQYXRoID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIH0pKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7OztBQ0FBLHVCQUF1Qjs7O0FDQXZCLHNCQUFpRDtBQUdqRCxnQ0FBMEIsc0JBQU07QUFBQSxFQUU5QixZQUFZLE1BQVUsZ0JBQXNDO0FBQzFELFVBQU07QUFDTixTQUFLLG1CQUFtQixlQUFlO0FBQUE7QUFBQSxFQUduQyxTQUFTO0FBQUE7QUFDYixZQUFNLEVBQUUsY0FBYztBQUN0QixZQUFNLGtCQUFrQixVQUFVO0FBSWxDLFlBQU0sVUFBVSxnQkFBZ0IsU0FBUztBQUN6QyxjQUFRLFdBQVc7QUFDbkIsY0FBUSxRQUFRO0FBQ2hCLFlBQU0sb0JBQW9CLGdCQUFnQixTQUFTLFVBQVU7QUFBQSxRQUMzRCxNQUFNO0FBQUE7QUFFUixZQUFNLHFCQUFxQixnQkFBZ0IsU0FBUyxVQUFVO0FBQUEsUUFDNUQsTUFBTTtBQUFBO0FBRVIsWUFBTSxrQkFBa0IsZ0JBQWdCLFNBQVMsVUFBVTtBQUFBLFFBQ3pELE1BQU07QUFBQTtBQUdSLFlBQU0sYUFBYSxnQkFBZ0IsU0FBUyxTQUFTO0FBQUEsUUFDbkQsYUFBYTtBQUFBLFFBQ2IsTUFBTTtBQUFBO0FBRVIsaUJBQVcsU0FBUztBQUNwQixpQkFBVyxVQUFVO0FBRXJCLFlBQU0sY0FBYyxnQkFBZ0IsU0FBUyxTQUFTO0FBQUEsUUFDcEQsYUFBYTtBQUFBLFFBQ2IsTUFBTTtBQUFBO0FBRVIs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 +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyIsICJzcmMvQXBwLnRzIiwgInNyYy9Nb2RhbC50cyIsICJzcmMvU2V0dGluZ3NUYWIudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCBPYnNpZGlhbkNhbWVyYSBmcm9tIFwic3JjL0FwcFwiO1xuXG5leHBvcnQgZGVmYXVsdCBPYnNpZGlhbkNhbWVyYSIsICJpbXBvcnQgeyBQbHVnaW4gfSBmcm9tIFwib2JzaWRpYW5cIjtcbmltcG9ydCBDYW1lcmFNb2RhbCBmcm9tIFwiLi9Nb2RhbFwiO1xuaW1wb3J0IENhbWVyYVNldHRpbmdzVGFiLCB7IERFRkFVTFRfU0VUVElOR1MsIENhbWVyYVBsdWdpblNldHRpbmdzIH0gZnJvbSBcIi4vU2V0dGluZ3NUYWJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgT2JzaWRpYW5DYW1lcmEgZXh0ZW5kcyBQbHVnaW4ge1xuICBzZXR0aW5nczogQ2FtZXJhUGx1Z2luU2V0dGluZ3M7XG4gIGFzeW5jIG9ubG9hZCgpIHtcbiAgICBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpO1xuICAgIHRoaXMuYWRkUmliYm9uSWNvbihcImNhbWVyYVwiLCBcIk9ic2lkaWFuIENhbWVyYVwiLCAoZXZ0OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBuZXcgQ2FtZXJhTW9kYWwodGhpcy5hcHAsIHRoaXMuc2V0dGluZ3MpLm9wZW4oKTtcbiAgICB9KTtcbiAgICB0aGlzLmFkZFNldHRpbmdUYWIobmV3IENhbWVyYVNldHRpbmdzVGFiKHRoaXMuYXBwLCB0aGlzKSk7XG5cbiAgICB0aGlzLmFkZENvbW1hbmQoe1xuICAgICAgaWQ6IFwiT3BlbiBjYW1lcmEgbW9kYWxcIixcbiAgICAgIG5hbWU6IFwiT3BlbiBjYW1lcmEgbW9kYWwgLyBGaWxlIFBpY2tlclwiLFxuICAgICAgY2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgbmV3IENhbWVyYU1vZGFsKHRoaXMuYXBwLCB0aGlzLnNldHRpbmdzKS5vcGVuKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cblxuICBhc3luYyBsb2FkU2V0dGluZ3MoKSB7XG4gICAgdGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfU0VUVElOR1MsIGF3YWl0IHRoaXMubG9hZERhdGEoKSk7XG4gIH1cblxuICBhc3luYyBzYXZlU2V0dGluZ3MoKSB7XG4gICAgYXdhaXQgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcbiAgfVxufVxuIiwgImltcG9ydCB7IEFwcCwgTWFya2Rvd25WaWV3LCBNb2RhbCwgTm90aWNlIH0gZnJvbSAnb2JzaWRpYW4nXG5pbXBvcnQgeyBDYW1lcmFQbHVnaW5TZXR0aW5ncyB9IGZyb20gJy4vU2V0dGluZ3NUYWInO1xuXG5jbGFzcyBDYW1lcmFNb2RhbCBleHRlbmRzIE1vZGFsIHtcbiAgY2hvc2VuRm9sZGVyUGF0aDogc3RyaW5nO1xuICB2aWRlb1N0cmVhbTogTWVkaWFTdHJlYW0gPSBudWxsO1xuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgY2FtZXJhU2V0dGluZ3M6IENhbWVyYVBsdWdpblNldHRpbmdzKSB7XG4gICAgc3VwZXIoYXBwKTtcbiAgICB0aGlzLmNob3NlbkZvbGRlclBhdGggPSBjYW1lcmFTZXR0aW5ncy5jaG9zZW5Gb2xkZXJQYXRoXG4gIH1cblxuICBhc3luYyBvbk9wZW4oKSB7XG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG4gICAgY29uc3Qgd2ViQ2FtQ29udGFpbmVyID0gY29udGVudEVsLmNyZWF0ZURpdigpO1xuXG4gICAgY29uc3Qgc3RhdHVzTXNnID0gd2ViQ2FtQ29udGFpbmVyLmNyZWF0ZUVsKCdzcGFuJywgeyB0ZXh0OiBcIkxvYWRpbmcuLlwiIH0pXG4gICAgY29uc3QgdmlkZW9FbCA9IHdlYkNhbUNvbnRhaW5lci5jcmVhdGVFbChcInZpZGVvXCIpO1xuICAgIGNvbnN0IGJ1dHRvbnNEaXYgPSB3ZWJDYW1Db250YWluZXIuY3JlYXRlRGl2KCk7XG4gICAgY29uc3QgZmlyc3RSb3cgPSBidXR0b25zRGl2LmNyZWF0ZURpdigpO1xuICAgIGNvbnN0IHNlY29uZFJvdyA9IGJ1dHRvbnNEaXYuY3JlYXRlRGl2KCk7XG4gICAgY29uc3QgcmVjb3JkVmlkZW9CdXR0b24gPSBmaXJzdFJvdy5jcmVhdGVFbChcImJ1dHRvblwiLCB7XG4gICAgICB0ZXh0OiBcIlN0YXJ0IHJlY29yZGluZ1wiLFxuICAgIH0pO1xuICAgIGNvbnN0IHN3aXRjaENhbWVyYUJ1dHRvbiA9IGZpcnN0Um93LmNyZWF0ZUVsKFwiYnV0dG9uXCIsIHtcbiAgICAgIHRleHQ6IFwiU3dpdGNoIENhbWVyYVwiLFxuICAgIH0pO1xuICAgIGNvbnN0IHNuYXBQaG90b0J1dHRvbiA9IGZpcnN0Um93LmNyZWF0ZUVsKFwiYnV0dG9uXCIsIHtcbiAgICAgIHRleHQ6IFwiVGFrZSBhIHNuYXBcIixcbiAgICB9KTtcbiAgICBmaXJzdFJvdy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIHNlY29uZFJvdy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuXG4gICAgY29uc3QgZmlsZVBpY2tlciA9IHNlY29uZFJvdy5jcmVhdGVFbChcImlucHV0XCIsIHtcbiAgICAgIHBsYWNlaG9sZGVyOiBcIkNob29zZSBpbWFnZSBmaWxlIGZyb20gc3lzdGVtXCIsXG4gICAgICB0eXBlOiBcImZpbGVcIixcbiAgICB9KTtcbiAgICBmaWxlUGlja2VyLmFjY2VwdCA9IFwiaW1hZ2UvKix2aWRlby8qXCI7XG4gICAgZmlsZVBpY2tlci5jYXB0dXJlID0gXCJjYW1lcmFcIjsgLy8gYmFjayBjYW1lcmEgYnkgZGVmYXVsdCBmb3IgbW9iaWxlIHNjcmVlbnNcblxuICAgIGNvbnN0IGZpbGVQaWNrZXIyID0gc2Vjb25kUm93LmNyZWF0ZUVsKFwiaW5wdXRcIiwge1xuICAgICAgcGxhY2Vob2xkZXI6IFwiQ2hvb3NlIGltYWdlIGZpbGUgZnJvbSBzeXN0ZW1cIixcbiAgICAgIHR5cGU6IFwiZmlsZVwiLFxuICAgIH0pO1xuICAgIGZpbGVQaWNrZXIyLmFjY2VwdCA9IFwiaW1hZ2UvKlwiO1xuICAgIGZpbGVQaWNrZXIyLmNhcHR1cmUgPSBcImNhbWVyYVwiOyAvLyBiYWNrIGNhbWVyYSBieSBkZWZhdWx0IGZvciBtb2JpbGUgc2NyZWVuc1xuXG5cbiAgICB2aWRlb0VsLmF1dG9wbGF5ID0gdHJ1ZTtcbiAgICB2aWRlb0VsLm11dGVkID0gdHJ1ZVxuICAgIGNvbnN0IGNodW5rczogQmxvYlBhcnRbXSA9IFtdO1xuICAgIGxldCByZWNvcmRlcjogTWVkaWFSZWNvcmRlciA9IG51bGw7XG4gICAgdGhpcy52aWRlb1N0cmVhbSA9IG51bGw7XG5cbiAgICBjb25zdCBjYW1lcmFzID0gKFxuICAgICAgYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5lbnVtZXJhdGVEZXZpY2VzKClcbiAgICApLmZpbHRlcigoZCkgPT4gZC5raW5kID09PSBcInZpZGVvaW5wdXRcIik7XG5cbiAgICBpZiAoY2FtZXJhcy5sZW5ndGggPD0gMSkgc3dpdGNoQ2FtZXJhQnV0dG9uLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICBsZXQgY2FtZXJhSW5kZXggPSAwO1xuXG4gICAgY29uc3QgZ2V0VmlkZW9TdHJlYW0gPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoe1xuICAgICAgICAgIHZpZGVvOiB7IGRldmljZUlkOiBjYW1lcmFzW2NhbWVyYUluZGV4XS5kZXZpY2VJZCB9LFxuICAgICAgICAgIGF1ZGlvOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHRoaXMudmlkZW9TdHJlYW0gPSBhd2FpdCBnZXRWaWRlb1N0cmVhbSgpO1xuICAgIGlmICh0aGlzLnZpZGVvU3RyZWFtKSB7XG4gICAgICBmaXJzdFJvdy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJ1xuICAgICAgc2Vjb25kUm93LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snXG4gICAgICBzdGF0dXNNc2cuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiXG4gICAgfSBlbHNlIHtcbiAgICAgIHNlY29uZFJvdy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJ1xuICAgICAgc3RhdHVzTXNnLnRleHRDb250ZW50ID0gXCJFcnJvciBpbiBsb2FkaW5nIHZpZGVvc3RyZWFtIGluIHlvdXIgZGV2aWNlLi5cIlxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUltYWdlU2VsZWN0Q2hhbmdlID0gYXN5bmMgKGZpbGU6IEZpbGUpID0+IHtcbiAgICAgIGNvbnN0IGNob3NlbkZpbGUgPSBmaWxlO1xuICAgICAgY29uc3QgYnVmZmVyRmlsZSA9IGF3YWl0IGNob3NlbkZpbGUuYXJyYXlCdWZmZXIoKTtcbiAgICAgIHNhdmVGaWxlKGJ1ZmZlckZpbGUsIGZhbHNlLCBjaG9zZW5GaWxlLm5hbWUuc3BsaXQoJyAnKS5qb2luKCctJykpO1xuICAgIH07XG4gICAgZmlsZVBpY2tlci5vbmNoYW5nZSA9ICgpID0+IGhhbmRsZUltYWdlU2VsZWN0Q2hhbmdlKGZpbGVQaWNrZXIuZmlsZXNbMF0pXG4gICAgZmlsZVBpY2tlcjIub25jaGFuZ2UgPSAoKSA9PiBoYW5kbGVJbWFnZVNlbGVjdENoYW5nZShmaWxlUGlja2VyMi5maWxlc1swXSlcblxuXG4gICAgY29uc3QgdmlldyA9IHRoaXMuYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVWaWV3T2ZUeXBlKE1hcmtkb3duVmlldyk7XG5cbiAgICBjb25zdCBzYXZlRmlsZSA9IGFzeW5jIChmaWxlOiBBcnJheUJ1ZmZlciwgaXNJbWFnZSA9IGZhbHNlLCBmaWxlTmFtZSA9ICcnKSA9PiB7XG4gICAgICBpZiAoIWZpbGVOYW1lKSB7XG4gICAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSAobmV3IERhdGUoKSArIFwiXCIpXG4gICAgICAgICAgLnNsaWNlKDQsIDI4KVxuICAgICAgICAgIC5zcGxpdChcIiBcIilcbiAgICAgICAgICAuam9pbihcIl9cIilcbiAgICAgICAgICAuc3BsaXQoXCI6XCIpXG4gICAgICAgICAgLmpvaW4oXCItXCIpO1xuICAgICAgICBmaWxlTmFtZSA9IGlzSW1hZ2VcbiAgICAgICAgICA/IGBpbWFnZV8ke2RhdGVTdHJpbmd9LnBuZ2BcbiAgICAgICAgICA6IGB2aWRlb18ke2RhdGVTdHJpbmd9LndlYm1gO1xuICAgICAgfVxuICAgICAgaWYgKCFpc0ltYWdlKSBuZXcgTm90aWNlKFwiQWRkaW5nIHZpZGVvIHRvIHZhdWx0Li4uXCIpXG5cbiAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5jaG9zZW5Gb2xkZXJQYXRoICsgXCIvXCIgKyBmaWxlTmFtZTtcbiAgICAgIGNvbnN0IGZvbGRlckV4aXN0cyA9XG4gICAgICAgIGFwcC52YXVsdC5nZXRBYnN0cmFjdEZpbGVCeVBhdGgodGhpcy5jaG9zZW5Gb2xkZXJQYXRoKTtcbiAgICAgIGlmICghZm9sZGVyRXhpc3RzKSBhd2FpdCBhcHAudmF1bHQuY3JlYXRlRm9sZGVyKHRoaXMuY2hvc2VuRm9sZGVyUGF0aCk7XG4gICAgICBjb25zdCBmaWxlRXhpc3RzID1cbiAgICAgICAgYXBwLnZhdWx0LmdldEFic3RyYWN0RmlsZUJ5UGF0aChmaWxlUGF0aCk7XG4gICAgICBpZiAoIWZpbGVFeGlzdHMpXG4gICAgICAgIGF3YWl0IGFwcC52YXVsdC5jcmVhdGVCaW5hcnkoZmlsZVBhdGgsIGZpbGUpO1xuXG4gICAgICBpZiAoIXZpZXcpIHJldHVybiBuZXcgTm90aWNlKGBTYXZlZCB0byAke2ZpbGVQYXRofWApO1xuXG4gICAgICBjb25zdCBjdXJzb3IgPSB2aWV3LmVkaXRvci5nZXRDdXJzb3IoKTtcbiAgICAgIHZpZXcuZWRpdG9yLnJlcGxhY2VSYW5nZShcbiAgICAgICAgaXNJbWFnZVxuICAgICAgICAgID8gYCFbJHtmaWxlTmFtZX1dKCR7ZmlsZVBhdGh9KVxcbmBcbiAgICAgICAgICA6IGBcXG4hW1ske2ZpbGVQYXRofV1dXFxuYCxcbiAgICAgICAgY3Vyc29yXG4gICAgICApO1xuICAgICAgdGhpcy5jbG9zZSgpOyAvLyBjbG9zaW5nIHRoZSBtb2RhbFxuICAgIH07XG5cblxuICAgIHN3aXRjaENhbWVyYUJ1dHRvbi5vbmNsaWNrID0gYXN5bmMgKCkgPT4ge1xuICAgICAgY2FtZXJhSW5kZXggPSAoY2FtZXJhSW5kZXggKyAxKSAlIGNhbWVyYXMubGVuZ3RoO1xuICAgICAgdGhpcy52aWRlb1N0cmVhbSA9IGF3YWl0IGdldFZpZGVvU3RyZWFtKCk7XG4gICAgfTtcblxuICAgIHNuYXBQaG90b0J1dHRvbi5vbmNsaWNrID0gKCkgPT4ge1xuICAgICAgY29uc3QgY2FudmFzID0gd2ViQ2FtQ29udGFpbmVyLmNyZWF0ZUVsKFwiY2FudmFzXCIpO1xuICAgICAgY2FudmFzLnN0eWxlLmRpc3BsYXkgPSBcIm5vbmVcIjtcbiAgICAgIGNvbnN0IHsgdmlkZW9IZWlnaHQsIHZpZGVvV2lkdGggfSA9IHZpZGVvRWxcbiAgICAgIGNhbnZhcy5oZWlnaHQgPSB2aWRlb0hlaWdodDtcbiAgICAgIGNhbnZhcy53aWR0aCA9IHZpZGVvV2lkdGg7XG5cbiAgICAgIGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIikuZHJhd0ltYWdlKHZpZGVvRWwsIDAsIDAsIHZpZGVvV2lkdGgsIHZpZGVvSGVpZ2h0KTtcbiAgICAgIGNhbnZhcy50b0Jsb2IoYXN5bmMgKGJsb2IpID0+IHtcbiAgICAgICAgY29uc3QgYnVmZmVyRmlsZSA9IGF3YWl0IGJsb2IuYXJyYXlCdWZmZXIoKTtcbiAgICAgICAgc2F2ZUZpbGUoYnVmZmVyRmlsZSwgdHJ1ZSk7XG4gICAgICB9LCBcImltYWdlL3BuZ1wiKTtcbiAgICB9O1xuXG4gICAgdmlkZW9FbC5zcmNPYmplY3QgPSB0aGlzLnZpZGVvU3RyZWFtO1xuXG4gICAgcmVjb3JkVmlkZW9CdXR0b24ub25jbGljayA9IGFzeW5jICgpID0+IHtcbiAgICAgIHN3aXRjaENhbWVyYUJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7XG4gICAgICBsZXQgaXNSZWNvcmRpbmc6IGJvb2xlYW4gPVxuICAgICAgICByZWNvcmRlciAmJiByZWNvcmRlci5zdGF0ZSA9PT0gXCJyZWNvcmRpbmdcIjtcbiAgICAgIGlmIChpc1JlY29yZGluZykgcmVjb3JkZXIuc3RvcCgpO1xuICAgICAgaXNSZWNvcmRpbmcgPSAhaXNSZWNvcmRpbmc7XG4gICAgICByZWNvcmRWaWRlb0J1dHRvbi5pbm5lclRleHQgPSBpc1JlY29yZGluZ1xuICAgICAgICA/IFwiU3RvcCBSZWNvcmRpbmdcIlxuICAgICAgICA6IFwiU3RhcnQgUmVjb3JkaW5nXCI7XG5cbiAgICAgIGlmICghcmVjb3JkZXIpIHtcbiAgICAgICAgcmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcih0aGlzLnZpZGVvU3RyZWFtLCB7XG4gICAgICAgICAgbWltZVR5cGU6IFwidmlkZW8vd2VibVwiLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgcmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gKGUpID0+IGNodW5rcy5wdXNoKGUuZGF0YSk7XG4gICAgICByZWNvcmRlci5vbnN0b3AgPSBhc3luYyAoXykgPT4ge1xuICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoY2h1bmtzLCB7XG4gICAgICAgICAgdHlwZTogXCJhdWRpby9vZ2c7IGNvZGVjcz1vcHVzXCIsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBidWZmZXJGaWxlID0gYXdhaXQgYmxvYi5hcnJheUJ1ZmZlcigpO1xuICAgICAgICBzYXZlRmlsZShidWZmZXJGaWxlLCBmYWxzZSk7XG4gICAgICB9O1xuICAgICAgcmVjb3JkZXIuc3RhcnQoKTtcbiAgICB9O1xuXG5cbiAgfVxuXG4gIG9uQ2xvc2UoKSB7XG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XG4gICAgdGhpcy52aWRlb1N0cmVhbT8uZ2V0VHJhY2tzKCkuZm9yRWFjaCh0cmFjayA9PiB7XG4gICAgICB0cmFjay5zdG9wKClcbiAgICB9KVxuICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENhbWVyYU1vZGFsIiwgIlxuaW1wb3J0IE9ic2lkaWFuQ2FtZXJhIGZyb20gXCJtYWluXCI7XG5pbXBvcnQgeyBBcHAsIFBsdWdpblNldHRpbmdUYWIsIFNldHRpbmcgfSBmcm9tIFwib2JzaWRpYW5cIjtcblxuZXhwb3J0IGludGVyZmFjZSBDYW1lcmFQbHVnaW5TZXR0aW5ncyB7XG4gIGNob3NlbkZvbGRlclBhdGg6IHN0cmluZztcblxufVxuXG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVRUSU5HUzogQ2FtZXJhUGx1Z2luU2V0dGluZ3MgPSB7XG4gIGNob3NlbkZvbGRlclBhdGg6ICdhdHRhY2htZW50cy9zbmFwcydcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FtZXJhU2V0dGluZ3NUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcbiAgcGx1Z2luOiBPYnNpZGlhbkNhbWVyYTtcblxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBPYnNpZGlhbkNhbWVyYSkge1xuICAgIHN1cGVyKGFwcCwgcGx1Z2luKTtcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgfVxuXG4gIGRpc3BsYXkoKTogdm9pZCB7XG4gICAgY29uc3QgeyBjb250YWluZXJFbCB9ID0gdGhpcztcbiAgICBjb250YWluZXJFbC5lbXB0eSgpO1xuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMicsIHsgdGV4dDogJ09ic2lkaWFuLUNhbWVyYSBzZXR0aW5ncycgfSk7XG5cbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcbiAgICAgIC5zZXROYW1lKCdGb2xkZXIgUGF0aCcpXG4gICAgICAuc2V0RGVzYygnRm9sZGVyIHdoZXJlIHRoZSB2aWRlb3MgYW5kIHNuYXBzIHNob3VsZCBiZSBzYXZlZCcpXG4gICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHRcbiAgICAgICAgLnNldFBsYWNlaG9sZGVyKCdFbnRlciB5b3VyIHNlY3JldCcpXG4gICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jaG9zZW5Gb2xkZXJQYXRoKVxuICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ0Nob3NlbiBGb2xkZXIgUGF0aDogJyArIHZhbHVlKTtcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5jaG9zZW5Gb2xkZXJQYXRoID0gdmFsdWU7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XG4gICAgICAgIH0pKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7OztBQ0FBLHVCQUF1Qjs7O0FDQXZCLHNCQUFpRDtBQUdqRCxnQ0FBMEIsc0JBQU07QUFBQSxFQUc5QixZQUFZLE1BQVUsZ0JBQXNDO0FBQzFELFVBQU07QUFGUix1QkFBMkI7QUFHekIsU0FBSyxtQkFBbUIsZUFBZTtBQUFBO0FBQUEsRUFHbkMsU0FBUztBQUFBO0FBQ2IsWUFBTSxFQUFFLGNBQWM7QUFDdEIsWUFBTSxrQkFBa0IsVUFBVTtBQUVsQyxZQUFNLFlBQVksZ0JBQWdCLFNBQVMsUUFBUSxFQUFFLE1BQU07QUFDM0QsWUFBTSxVQUFVLGdCQUFnQixTQUFTO0FBQ3pDLFlBQU0sYUFBYSxnQkFBZ0I7QUFDbkMsWUFBTSxXQUFXLFdBQVc7QUFDNUIsWUFBTSxZQUFZLFdBQVc7QUFDN0IsWUFBTSxvQkFBb0IsU0FBUyxTQUFTLFVBQVU7QUFBQSxRQUNwRCxNQUFNO0FBQUE7QUFFUixZQUFNLHFCQUFxQixTQUFTLFNBQVMsVUFBVTtBQUFBLFFBQ3JELE1BQU07QUFBQTtBQUVSLFlBQU0sa0JBQWtCLFNBQVMsU0FBUyxVQUFVO0FBQUEsUUFDbEQsTUFBTTtBQUFB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 diff --git a/.obsidian/plugins/obsidian-camera/manifest.json b/.obsidian/plugins/obsidian-camera/manifest.json index fa7e5d4e..eeba9237 100644 --- a/.obsidian/plugins/obsidian-camera/manifest.json +++ b/.obsidian/plugins/obsidian-camera/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-camera", "name": "Obsidian Camera", - "version": "1.3.1", + "version": "1.5.0", "minAppVersion": "0.14.6", "description": "Camera plugin for Obsidian", "author": "Aldrin Jenson", diff --git a/.obsidian/plugins/obsidian-commits/data.json b/.obsidian/plugins/obsidian-commits/data.json index 77688787..96d3348e 100644 --- a/.obsidian/plugins/obsidian-commits/data.json +++ b/.obsidian/plugins/obsidian-commits/data.json @@ -1890,17 +1890,17 @@ "links": 1 }, "01.02 Home/@Main Dashboard.md": { - "size": 5713, + "size": 6315, "tags": 0, "links": 1 }, "01.02 Home/Household.md": { - "size": 3135, + "size": 3517, "tags": 3, "links": 2 }, "01.02 Home/MRCK.md": { - "size": 6790, + "size": 5416, "tags": 1, "links": 7 }, @@ -2081,7 +2081,7 @@ }, "00.03 News/How the NYPD Cracked the Michael K. Williams Overdose Case.md": { "size": 21418, - "tags": 4, + "tags": 5, "links": 2 }, "00.03 News/@News.md": { @@ -2091,7 +2091,7 @@ }, "00.03 News/He spent 25 years infiltrating the Klan.md": { "size": 48093, - "tags": 2, + "tags": 3, "links": 2 }, "01.01 Life Orga/Désert rural. La grande ruée vers les maisons italiennes à 1 euro.md": { @@ -2181,7 +2181,7 @@ }, "00.03 News/My transformative first trip to Japan · Part 4.md": { "size": 18383, - "tags": 1, + "tags": 2, "links": 2 }, "00.03 News/Babies and chicks help solve one of psychology’s oldest puzzles.md": { @@ -2236,7 +2236,7 @@ }, "00.03 News/Imagine Scythia’s fierce warrior women, the real Amazons Aeon Essays.md": { "size": 22315, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/Society has a trust problem. More censorship will only make it worse..md": { @@ -2261,7 +2261,7 @@ }, "00.03 News/Are Today's Portraitists Better Than the Old Masters — Evolve Artist.md": { "size": 9138, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/Could COVID-19 And Alzheimer's Overlaps Point Towards A Solution For Both Diseases.md": { @@ -2271,17 +2271,17 @@ }, "00.03 News/Jackass Oral Hostory.md": { "size": 30285, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/The 1918 flu didn’t end in 1918. Here’s what its third year can teach us..md": { "size": 9566, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/XXX-Files Who Torched the Pornhub Palace.md": { "size": 37911, - "tags": 2, + "tags": 4, "links": 2 }, "00.04 IT/Obsidian website publish - comments.md": { @@ -2296,7 +2296,7 @@ }, "00.03 News/Why Indian universities are ditching English-only education.md": { "size": 11749, - "tags": 2, + "tags": 3, "links": 2 }, "03.03 Food & Wine/Thai Basil Sauce Noodles with Jammy Eggs.md": { @@ -2321,7 +2321,7 @@ }, "00.03 News/Why Black Women Are Divesting From Excellence & Embracing Mediocrity.md": { "size": 16817, - "tags": 3, + "tags": 4, "links": 2 }, "00.06 Professional/6 ways companies screw up their global expansion.md": { @@ -2336,7 +2336,7 @@ }, "00.03 News/What’s the Matter with American Cities.md": { "size": 20649, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/Understanding Argument Styles Is The Secret To A Happy Relationship.md": { @@ -2346,7 +2346,7 @@ }, "00.03 News/What Is the Metaverse A Beginner's Guide to Tech's Latest Obsession.md": { "size": 32838, - "tags": 6, + "tags": 7, "links": 2 }, "01.02 Home/Fashion.md": { @@ -2371,7 +2371,7 @@ }, "00.03 News/Nurses Have Finally Learned What They’re Worth.md": { "size": 36896, - "tags": 2, + "tags": 3, "links": 2 }, "00.03 News/Are Greeting Card Messages Getting Longer A Very Serious Investigation.md": { @@ -2386,7 +2386,7 @@ }, "00.03 News/Cowboys paid $2.4M over cheerleader allegations.md": { "size": 28323, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/If they could turn back time how tech billionaires are trying to reverse the ageing process.md": { @@ -2396,7 +2396,7 @@ }, "00.03 News/Inside a $4-billion family feud.md": { "size": 38245, - "tags": 2, + "tags": 3, "links": 2 }, "00.03 News/Is tech gentrifying Latin America’s cities.md": { @@ -2406,7 +2406,7 @@ }, "00.03 News/TikTok Star Ava Majury Discovers the Dark Side of Fame.md": { "size": 17946, - "tags": 2, + "tags": 3, "links": 2 }, "00.03 News/Will the Bush Dynasty Die With George P. Bush.md": { @@ -2416,12 +2416,12 @@ }, "00.03 News/Google Search Is Dying.md": { "size": 13856, - "tags": 1, + "tags": 2, "links": 2 }, "00.03 News/To Live and Love with a Dying World.md": { "size": 32183, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/Why Are Letters Shaped the Way They Are.md": { @@ -2431,7 +2431,7 @@ }, "00.03 News/Ancient Indian texts reveal the liberating power of metaphysics.md": { "size": 13995, - "tags": 2, + "tags": 3, "links": 2 }, "00.04 IT/Server-side Tagging In Google Tag Manager Simo Ahava's blog.md": { @@ -2521,7 +2521,7 @@ }, "00.03 News/A view from across the river.md": { "size": 25481, - "tags": 3, + "tags": 4, "links": 2 }, "02.03 Zürich/Afghan Anar.md": { @@ -2541,12 +2541,12 @@ }, "00.03 News/In Kashmir, indigenous Muslim healers cure broken bones with spirituality — and science.md": { "size": 14659, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/On the pleasures of hand-writing letters you’ll never send.md": { "size": 12624, - "tags": 2, + "tags": 3, "links": 2 }, "00.03 News/The Power of Emotional Honesty.md": { @@ -2586,7 +2586,7 @@ }, "00.03 News/Reading Simone de Beauvoir’s ‘Ethics of Ambiguity’ in prison Aeon Essays.md": { "size": 21234, - "tags": 2, + "tags": 3, "links": 1 }, "00.06 Professional/Managing people 🤯 Andreas Klinger.md": { @@ -2631,12 +2631,12 @@ }, "00.03 News/Slow sex, long life.md": { "size": 21375, - "tags": 2, + "tags": 3, "links": 2 }, "00.03 News/The twitching generation.md": { "size": 27471, - "tags": 3, + "tags": 4, "links": 2 }, "03.01 Reading list/On the Road.md": { @@ -2661,7 +2661,7 @@ }, "00.03 News/The cells that can give you super-immunity.md": { "size": 17375, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/We Need to Retire the Term “Microaggressions”.md": { @@ -2696,7 +2696,7 @@ }, "00.03 News/Amateur open-source researchers went viral unpacking the war in Ukraine.md": { "size": 9459, - "tags": 3, + "tags": 5, "links": 2 }, "03.01 Reading list/Babylone.md": { @@ -2716,7 +2716,7 @@ }, "00.03 News/Three Bodies in Texas.md": { "size": 49841, - "tags": 2, + "tags": 3, "links": 2 }, "00.03 News/For the West, the Worst Is Yet to Come.md": { @@ -2856,7 +2856,7 @@ }, "00.03 News/The Miseducation of Maria Montessori.md": { "size": 13627, - "tags": 3, + "tags": 4, "links": 2 }, "00.01 Admin/Calendars/2022-03-26 Fiancailles Eloi.md": { @@ -2891,7 +2891,7 @@ }, "00.03 News/What’s in a Black name 400 years of context..md": { "size": 25017, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/How to get the excitement back Psyche Guides.md": { @@ -2951,17 +2951,17 @@ }, "00.03 News/Welcome To The Vice Age How Sex, Drugs And Gambling Help Americans Cope With Covid.md": { "size": 17908, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/What happened to Starbucks How a progressive company lost its way.md": { "size": 31062, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/How Putin’s Oligarchs Bought London.md": { "size": 10189, - "tags": 3, + "tags": 4, "links": 2 }, "00.04 IT/My guiding principles after 20 years of programming.md": { @@ -2971,12 +2971,12 @@ }, "00.03 News/Louisiana Girls.md": { "size": 21064, - "tags": 5, + "tags": 6, "links": 2 }, "00.03 News/The Bullet and the Ballplayer.md": { "size": 46208, - "tags": 3, + "tags": 6, "links": 2 }, "00.03 News/The dark side of Discord for teens.md": { @@ -2986,12 +2986,12 @@ }, "00.03 News/The Shaming-Industrial Complex.md": { "size": 13148, - "tags": 4, + "tags": 5, "links": 2 }, "00.03 News/The real Mission Impossible.md": { "size": 17887, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/You Don’t Know Much About Jay Penske. And He’s Fine With That..md": { @@ -3001,12 +3001,12 @@ }, "00.03 News/The death spiral of an American family.md": { "size": 22546, - "tags": 2, + "tags": 3, "links": 2 }, "00.03 News/Saint Peter’s Is a Miracle.md": { "size": 21796, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/He Chased Silicon Valley Dreams Amid the Cannabis Boom. But Did His Ambition Lead to His Murder.md": { @@ -3411,7 +3411,7 @@ }, "00.03 News/E-commerce giants couldn’t deliver. So these islanders built their own online shopping ecosystem.md": { "size": 24869, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/One Last Trip.md": { @@ -3486,7 +3486,7 @@ }, "00.03 News/Meet the DIY Duo Behind the Amazon Labor Union’s Guerrilla Bid to Make History.md": { "size": 35363, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/The Making of Vladimir Putin.md": { @@ -3571,7 +3571,7 @@ }, "00.03 News/This Whole Thing Has F---ed Me Up’.md": { "size": 20915, - "tags": 3, + "tags": 4, "links": 2 }, "00.01 Admin/Quick shares/Mobile - CH.md": { @@ -3661,7 +3661,7 @@ }, "00.03 News/Jeffrey Epstein, a Rare Cello and an Enduring Mystery.md": { "size": 21091, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/“The Eye in the Sea” camera observes elusive deep sea animals.md": { @@ -3686,7 +3686,7 @@ }, "00.03 News/The Unseen Scars of Those Who Kill Via Remote Control.md": { "size": 28021, - "tags": 3, + "tags": 4, "links": 2 }, "03.03 Food & Wine/Spanakopia pie.md": { @@ -3761,7 +3761,7 @@ }, "00.03 News/Elon Musk Got Twitter Because He Gets Twitter.md": { "size": 11928, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/Massacre in Tadamon how two academics hunted down a Syrian war criminal.md": { @@ -3776,7 +3776,7 @@ }, "00.03 News/The Worst Boyfriend on the Upper East Side.md": { "size": 32043, - "tags": 2, + "tags": 3, "links": 2 }, "00.03 News/A Crime Beyond Belief.md": { @@ -3786,12 +3786,12 @@ }, "00.03 News/S.F. spent millions to shelter homeless in hotels. These are the disastrous results.md": { "size": 72277, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/The man who paid for America's fear.md": { "size": 106425, - "tags": 3, + "tags": 4, "links": 2 }, "00.01 Admin/Calendars/2022-05-02.md": { @@ -3861,12 +3861,12 @@ }, "00.03 News/Did Jesse James Bury Confederate Gold These Treasure Hunters Think So..md": { "size": 40435, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/How a billionaires boys’ club came to dominate the public square.md": { "size": 12608, - "tags": 2, + "tags": 3, "links": 2 }, "00.01 Admin/Calendars/2022-05-09.md": { @@ -3906,7 +3906,7 @@ }, "00.03 News/North Korea Hacked Him. So He Took Down Its Internet.md": { "size": 15654, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/The Clockwork Orgasm - Common Reader.md": { @@ -3981,7 +3981,7 @@ }, "00.03 News/A Search for Family, a Love for Horses and How It All Led to Kentucky Derby Glory.md": { "size": 25921, - "tags": 4, + "tags": 3, "links": 2 }, "00.03 News/A new generation of white supremacist killer - Los Angeles Times.md": { @@ -4131,7 +4131,7 @@ }, "00.03 News/Riding London’s Unexpectedly Fantastic Elizabeth Line.md": { "size": 10032, - "tags": 4, + "tags": 5, "links": 2 }, "00.05 Media/The Mafia, The CIA and George Bush.md": { @@ -4191,12 +4191,12 @@ }, "00.03 News/Deshaun Watson’s Massages Were Enabled by the Texans and a Spa Owner.md": { "size": 23179, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/Waiting for keys, unable to break down doors Uvalde schools police chief defends delay in confronting gunman.md": { "size": 33818, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/Dianne Feinstein, the Institutionalist.md": { @@ -4206,7 +4206,7 @@ }, "00.03 News/The Follower.md": { "size": 39302, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/What did the ancient Maya see in the stars Their descendants team up with scientists to find out.md": { @@ -4216,7 +4216,7 @@ }, "00.03 News/Hazing, fighting, sexual assaults How Valley Forge Military Academy devolved into “Lord of the Flies”.md": { "size": 43841, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/Two Professors Found What Creates a Mass Shooter. Will Politicians Pay Attention.md": { @@ -4461,17 +4461,17 @@ }, "00.03 News/Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community.md": { "size": 29978, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/He Had a Dark Secret. It Changed His Best Friend’s Life..md": { "size": 22018, - "tags": 2, + "tags": 3, "links": 2 }, "00.03 News/Meet Richard Fritz, America’s Most Unelectable Elected Official Defector.md": { "size": 57378, - "tags": 3, + "tags": 4, "links": 2 }, "00.01 Admin/Calendars/2022-07-11.md": { @@ -4526,7 +4526,7 @@ }, "00.03 News/It was a secret road map for breaking the law to get an abortion. Now, ‘The List’ and its tactics are resurfacing.md": { "size": 41896, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/Saudi Crown Prince’s $500 Billion ’Smart City’ Faces Major Setbacks.md": { @@ -4536,12 +4536,12 @@ }, "00.03 News/Scenes from an Open Marriage - The Paris Review.md": { "size": 31566, - "tags": 2, + "tags": 3, "links": 2 }, "00.03 News/The metamorphosis of J.K. Rowling.md": { "size": 33566, - "tags": 5, + "tags": 6, "links": 2 }, "00.01 Admin/Calendars/2022-07-18.md": { @@ -4681,7 +4681,7 @@ }, "00.03 News/Remembering Bill Russell The Greatest Winner in Sports.md": { "size": 13978, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/Librarian finds love notes, doodles in books and shares them with a grateful public.md": { @@ -4696,7 +4696,7 @@ }, "00.03 News/Seven years of sex abuse How Mormon officials let it happen.md": { "size": 27161, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/The Most Surveilled Place in America.md": { @@ -4771,7 +4771,7 @@ }, "00.03 News/Twitter is becoming a lost city.md": { "size": 8710, - "tags": 4, + "tags": 5, "links": 2 }, "00.03 News/The Unlikely Rise of Slim Pickins, the First Black-Owned Outdoors Retailer in the Country.md": { @@ -4791,7 +4791,7 @@ }, "00.03 News/YouTube Fraud Led to $23 Million in Royalties for 2 Men, IRS Says.md": { "size": 31648, - "tags": 4, + "tags": 5, "links": 2 }, "00.03 News/After the Zodiac Killer's '340' Cipher Stumped the FBI, Three Amateurs Made a Breakthrough.md": { @@ -5246,7 +5246,7 @@ }, "00.03 News/“Republicans Buy Sneakers Too”.md": { "size": 9159, - "tags": 3, + "tags": 4, "links": 2 }, "03.01 Reading list/La promesse de l'aube.md": { @@ -5335,7 +5335,7 @@ "links": 1 }, "03.02 Travels/Skiing in Switzerland.md": { - "size": 1452, + "size": 4236, "tags": 3, "links": 1 }, @@ -5381,12 +5381,12 @@ }, "00.03 News/Was King Arthur a Real Person.md": { "size": 36763, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/Opinion Maternal Instinct Is a Myth That Men Created.md": { "size": 23951, - "tags": 2, + "tags": 3, "links": 2 }, "00.03 News/The Deacon and the Dog City Journal.md": { @@ -5479,11 +5479,6 @@ "tags": 0, "links": 8 }, - "00.01 Admin/Calendars/2022-08-31 Toulouse - Paris SG (0-3).md": { - "size": 200, - "tags": 0, - "links": 2 - }, "00.01 Admin/Calendars/2022-09-03 Nantes - Paris SG (0-3).md": { "size": 220, "tags": 0, @@ -5540,7 +5535,7 @@ "links": 4 }, "00.01 Admin/Calendars/2022-09-06 PSG - Juventus (2-1).md": { - "size": 211, + "size": 237, "tags": 0, "links": 2 }, @@ -5586,7 +5581,7 @@ }, "00.03 News/Meghan of Montecito.md": { "size": 42537, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/Why Are Black Families Leaving Cities.md": { @@ -5601,7 +5596,7 @@ }, "00.03 News/The Victim Who Became the Accused.md": { "size": 47446, - "tags": 4, + "tags": 5, "links": 2 }, "00.03 News/Revolut chief Nikolay Storonsky We can still be banking’s super app.md": { @@ -5674,11 +5669,6 @@ "tags": 0, "links": 9 }, - "00.01 Admin/Calendars/2022-09-14 Maccabi Haifa - Paris SG (1-3).md": { - "size": 222, - "tags": 0, - "links": 2 - }, "00.01 Admin/Calendars/2022-09-15.md": { "size": 1135, "tags": 0, @@ -5805,9 +5795,9 @@ "links": 5 }, "00.01 Admin/Test Sheet 2.md": { - "size": 703, + "size": 916, "tags": 0, - "links": 0 + "links": 1 }, "00.01 Admin/Calendars/2022-09-23.md": { "size": 1136, @@ -5856,7 +5846,7 @@ }, "00.03 News/What Makes Brain Fog So Unforgiving.md": { "size": 20773, - "tags": 2, + "tags": 3, "links": 2 }, "00.03 News/The Great Bluff How the Ukrainians Outwitted Putin's Army.md": { @@ -5866,7 +5856,7 @@ }, "00.03 News/In Hasidic Enclaves, Failing Yeshivas Flush With Public Money.md": { "size": 39332, - "tags": 3, + "tags": 4, "links": 2 }, "00.03 News/How Owamni Became the Best New Restaurant in the United States.md": { @@ -6063,14 +6053,84 @@ "size": 14403, "tags": 3, "links": 2 + }, + "00.01 Admin/Calendars/2022-10-01.md": { + "size": 1225, + "tags": 0, + "links": 8 + }, + "02.02 Paris/Early June.md": { + "size": 1376, + "tags": 2, + "links": 3 + }, + "00.08 Bookmarks/Bookmarks - Work.md": { + "size": 1280, + "tags": 1, + "links": 4 + }, + "00.01 Admin/URL table.md": { + "size": 1154, + "tags": 0, + "links": 0 + }, + "00.01 Admin/Calendars/2022-10-02.md": { + "size": 1212, + "tags": 0, + "links": 8 + }, + "00.01 Admin/Calendars/2022-10-16 Paris SG - Marseille.md": { + "size": 200, + "tags": 0, + "links": 2 + }, + "00.01 Admin/Calendars/2022-10-01 PSG - 0GC Nice (2-1).md": { + "size": 229, + "tags": 0, + "links": 2 + }, + "00.01 Admin/Calendars/2022-09-14 Maccabi Haifa - PSG (1-3).md": { + "size": 261, + "tags": 0, + "links": 2 + }, + "00.01 Admin/Calendars/2022-08-31 Toulouse - PSG (0-3).md": { + "size": 246, + "tags": 0, + "links": 2 + }, + "00.03 News/The family that built a ballpark nachos monopoly.md": { + "size": 14793, + "tags": 3, + "links": 1 + }, + "00.03 News/Liz Truss learns the hard way that Britain is not the US.md": { + "size": 5422, + "tags": 4, + "links": 1 + }, + "00.03 News/‘She Captured All Before Her’ Darryl Pinckney.md": { + "size": 22271, + "tags": 3, + "links": 1 + }, + "00.03 News/Solomun, the D.J. Who Keeps Ibiza Dancing.md": { + "size": 55775, + "tags": 3, + "links": 1 + }, + "00.03 News/This developer sold pre-construction townhouses for $400,000. Three years later, they told their buyers to pay another $100K or lose their homes.md": { + "size": 25854, + "tags": 3, + "links": 1 } }, "commitTypes": { "/": { - "Refactor": 935, - "Create": 957, - "Link": 2017, - "Expand": 901 + "Refactor": 951, + "Create": 970, + "Link": 2113, + "Expand": 917 } }, "dailyCommits": { @@ -6083,22 +6143,22 @@ "5": 9, "6": 57, "7": 311, - "8": 453, - "9": 455, - "10": 339, - "11": 239, - "12": 180, - "13": 275, - "14": 238, + "8": 454, + "9": 461, + "10": 344, + "11": 245, + "12": 185, + "13": 279, + "14": 240, "15": 247, "16": 225, - "17": 215, + "17": 237, "18": 418, - "19": 224, - "20": 187, - "21": 151, - "22": 309, - "23": 138 + "19": 228, + "20": 195, + "21": 212, + "22": 323, + "23": 141 } }, "weeklyCommits": { @@ -6107,14 +6167,30 @@ "Tue": 777, "Wed": 624, "Thu": 441, - "Fri": 474, + "Fri": 476, "Sat": 0, - "Sun": 1765 + "Sun": 1904 } }, "recentCommits": { "/": { "Expanded": [ + " Household ", + " 2022-10-16 Paris SG - Marseille ", + " 2022-09-14 Maccabi Haifa - PSG (1-3) ", + " 2022-08-31 Toulouse - PSG (0-3) ", + " 2022-10-16 Paris SG - Marseille ", + " 2022-09-06 PSG - Juventus (2-1) ", + " 2022-10-01 Paris SG - 0GC Nice ", + " 2022-10-01 Paris SG - 0GC Nice ", + " Skiing in Switzerland ", + " @Main Dashboard ", + " Skiing in Switzerland ", + " 2022-10-01 ", + " URL table ", + " Bookmarks - Work ", + " Early June ", + " Test Sheet 2 ", " VC Tasks ", " Equity Tasks ", " Bookmarks - Obsidian ", @@ -6149,25 +6225,22 @@ " Utilities ", " MRCK ", " Selfhosted Apps ", - " Obsidian ", - " Media ", - " Selfhosted Apps ", - " Media ", - " Test ", - " Test Sheet 2 ", - " NewBookmark ", - " Template Bookmark ", - " Button gallery ", - " NewBookmark ", - " Ticino ", - " Palermo ", - " Milan ", - " Florence ", - " La Tonnara di Scopello ", - " Masseria Moroseta ", - " @Italy " + " Obsidian " ], "Created": [ + " This developer sold pre-construction townhouses for $400,000. Three years later, they told their buyers to pay another $100K or lose their homes ", + " Solomun, the D.J. Who Keeps Ibiza Dancing ", + " ‘She Captured All Before Her’ Darryl Pinckney ", + " Liz Truss learns the hard way that Britain is not the US ", + " The family that built a ballpark nachos monopoly ", + " The Daily - Florida After Hurricane Ian ", + " 2022-10-16 Paris SG - Marseille ", + " 2022-10-02 ", + " 2022-10-01 Paris SG - 0GC Nice ", + " URL characters 1 ", + " Untitled ", + " Untitled ", + " 2022-10-01 ", " Iran’s Women Are (Once Again) the Vanguards of a Revolution ", " 2022-09-30 ", " Smelling Farts Is Healthy Research, Potential Benefits, and More ", @@ -6205,22 +6278,21 @@ " You're Not Addicted to Technology. Here's What's Happening Instead. ", " Untitled ", " Untitled ", - " Untitled ", - " 2022-09-26 ", - " Untitled ", - " Untitled ", - " The Sordid Saga of Hunter Biden’s Laptop ", - " Fat Leonard (Almost) Flees to Russia ", - " How Owamni Became the Best New Restaurant in the United States ", - " This Is What Life’s Like in the World’s Strictest Covid Zero City ", - " In Hasidic Enclaves, Failing Yeshivas Flush With Public Money ", - " The Great Bluff How the Ukrainians Outwitted Putin's Army ", - " What Makes Brain Fog So Unforgiving ", - " The super-rich ‘preppers’ planning to save themselves from the apocalypse ", - " 2022-09-25 ", - " Goodbye Cron, Hello… - Francesco D'Alessio - Medium " + " Untitled " ], "Renamed": [ + " This developer sold pre-construction townhouses for $400,000. Three years later, they told their buyers to pay another $100K or lose their homes ", + " Solomun, the D.J. Who Keeps Ibiza Dancing ", + " ‘She Captured All Before Her’ Darryl Pinckney ", + " Liz Truss learns the hard way that Britain is not the US ", + " The family that built a ballpark nachos monopoly ", + " 2022-08-31 Toulouse - PSG (0-3) ", + " 2022-09-14 Maccabi Haifa - PSG (1-3) ", + " 2022-10-01 PSG - 0GC Nice (2-1) ", + " 2022-10-01 Paris SG - 0GC Nice (2-1) ", + " URL table ", + " Bookmarks - Work ", + " Early June ", " Iran’s Women Are (Once Again) the Vanguards of a Revolution ", " Bruxelles ", " Smelling Farts Is Healthy Research, Potential Benefits, and More ", @@ -6259,74 +6331,63 @@ " Ethiopian holiday ", " @Short breaks ", " @Travel guides ", - " @United States ", - " @Spain ", - " Owamni ", - " The Sordid Saga of Hunter Biden’s Laptop ", - " Fat Leonard (Almost) Flees to Russia ", - " How Owamni Became the Best New Restaurant in the United States ", - " In Hasidic Enclaves, Failing Yeshivas Flush With Public Money ", - " The Great Bluff How the Ukrainians Outwitted Putin's Army ", - " What Makes Brain Fog So Unforgiving ", - " The super-rich ‘preppers’ planning to save themselves from the apocalypse ", - " Nano Iturroz ", - " Lucho Irazabal ", - " Lucho Gonzalez " + " @United States " ], "Tagged": [ - " Iran’s Women Are (Once Again) the Vanguards of a Revolution ", - " Smelling Farts Is Healthy Research, Potential Benefits, and More ", - " ‘Putin Is a Fool’ Intercepted Calls Reveal Russian Army in Disarray ", - " Bookmarks - Mac applications ", - " Dar ", - " The markets are in meltdown – but at least Kwasi Kwarteng’s doomsday cult isn’t to blame Marina Hyde ", - " Ticino ", - " Milan ", - " Palermo ", - " Florence ", - " La Tonnara di Scopello ", - " Masseria Moroseta ", - " @Italy ", - " Al Hossoun ", - " Al Hossoun ", - " @Africa ", - " Aire de Bardenas ", - " @United States ", - " @Spain ", - " Owamni ", - " Owamni ", - " The Sordid Saga of Hunter Biden’s Laptop ", - " How Owamni Became the Best New Restaurant in the United States ", - " The Great Bluff How the Ukrainians Outwitted Putin's Army ", - " In Hasidic Enclaves, Failing Yeshivas Flush With Public Money ", - " The Great Bluff How the Ukrainians Outwitted Putin's Army ", - " The super-rich ‘preppers’ planning to save themselves from the apocalypse ", + " Amateur open-source researchers went viral unpacking the war in Ukraine ", + " Google Search Is Dying ", + " Elon Musk Got Twitter Because He Gets Twitter ", + " North Korea Hacked Him. So He Took Down Its Internet ", + " To Live and Love with a Dying World ", + " Opinion Maternal Instinct Is a Myth That Men Created ", + " On the pleasures of hand-writing letters you’ll never send ", + " Imagine Scythia’s fierce warrior women, the real Amazons Aeon Essays ", + " E-commerce giants couldn’t deliver. So these islanders built their own online shopping ecosystem ", + " Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community ", + " It was a secret road map for breaking the law to get an abortion. Now, ‘The List’ and its tactics are resurfacing ", + " YouTube Fraud Led to $23 Million in Royalties for 2 Men, IRS Says ", + " What’s the Matter with American Cities ", + " Why Black Women Are Divesting From Excellence & Embracing Mediocrity ", + " What’s in a Black name 400 years of context. ", + " XXX-Files Who Torched the Pornhub Palace ", + " Why Indian universities are ditching English-only education ", + " Waiting for keys, unable to break down doors Uvalde schools police chief defends delay in confronting gunman ", + " Welcome To The Vice Age How Sex, Drugs And Gambling Help Americans Cope With Covid ", " What Makes Brain Fog So Unforgiving ", - " Nano Iturroz ", - " Lucho Irazabal ", - " Lucho Irazabal ", - " Iridike Polo Club ", - " Ace & Tate ", - " Inside the Silent ADHD Epidemic Among Women ", - " Nashville (1975) ", - " Ryan Anderson ", - " Polo Park Zürich ", - " Domaine de Courances ", - " Callum Anderson ", - " Epsom Polo Club ", - " Chez Robert ", - " Inavoué ", - " Toto ", - " Shilla ", - " No Idea ", - " Le Raymond Bar ", - " Grande ", - " Luca2 ", - " Luigia ", - " Modo ", - " La Baracca " + " What Is the Metaverse A Beginner's Guide to Tech's Latest Obsession ", + " What happened to Starbucks How a progressive company lost its way ", + " Twitter is becoming a lost city ", + " Was King Arthur a Real Person ", + " This Whole Thing Has F---ed Me Up’ ", + " Three Bodies in Texas ", + " The Worst Boyfriend on the Upper East Side ", + " The Victim Who Became the Accused ", + " The Unseen Scars of Those Who Kill Via Remote Control ", + " TikTok Star Ava Majury Discovers the Dark Side of Fame ", + " The Shaming-Industrial Complex ", + " The metamorphosis of J.K. Rowling ", + " The twitching generation ", + " The man who paid for America's fear ", + " The Miseducation of Maria Montessori ", + " The real Mission Impossible ", + " The death spiral of an American family ", + " The cells that can give you super-immunity ", + " The 1918 flu didn’t end in 1918. Here’s what its third year can teach us. ", + " The Bullet and the Ballplayer ", + " The Follower ", + " Seven years of sex abuse How Mormon officials let it happen ", + " S.F. spent millions to shelter homeless in hotels. These are the disastrous results ", + " Slow sex, long life ", + " Scenes from an Open Marriage - The Paris Review ", + " Saint Peter’s Is a Miracle ", + " Nurses Have Finally Learned What They’re Worth ", + " Remembering Bill Russell The Greatest Winner in Sports ", + " My transformative first trip to Japan · Part 4 ", + " Meghan of Montecito ", + " Riding London’s Unexpectedly Fantastic Elizabeth Line " ], "Refactored": [ + " MRCK ", " NewBookmark ", " NewBookmark ", " @Short breaks ", @@ -6376,10 +6437,10 @@ " How to Install and Configure Prometheus Alert Manager on Ubuntu 20.04 LTS ", " Configuring Prometheus ", " Configuring Prometheus ", - " Configuring Prometheus ", - " Installer Node Exporte... Doc SysNetAdmin " + " Configuring Prometheus " ], "Deleted": [ + " The Daily - Florida After Hurricane Ian ", " Obsidian plugins ", " Test ", " GitHub - iptv-orgiptv Collection of publicly available IPTV channels from all over the world ", @@ -6429,10 +6490,25 @@ " 2022-09-05 ", " 2022-09-05 ", " You Must Remember This - 1989 sex lies and videotape Rob Lowe and James Spader (Erotic 80s Part 12) ", - " You Must Remember This - 1989 sex lies and videotape Rob Lowe and James Spader (Erotic 80s Part 12) ", - " Romain Gary 2 " + " You Must Remember This - 1989 sex lies and videotape Rob Lowe and James Spader (Erotic 80s Part 12) " ], "Linked": [ + " 2022-10-02 ", + " Solomun, the D.J. Who Keeps Ibiza Dancing ", + " This developer sold pre-construction townhouses for $400,000. Three years later, they told their buyers to pay another $100K or lose their homes ", + " The family that built a ballpark nachos monopoly ", + " Liz Truss learns the hard way that Britain is not the US ", + " ‘She Captured All Before Her’ Darryl Pinckney ", + " 2022-10-02 ", + " 2022-10-16 Paris SG - Marseille ", + " 2022-10-02 ", + " 2022-10-01 Paris SG - 0GC Nice ", + " 2022-10-01 ", + " 2022-10-01 ", + " Bookmarks - Work ", + " Early June ", + " 2022-10-01 ", + " Test Sheet 2 ", " Iran’s Women Are (Once Again) the Vanguards of a Revolution ", " ‘Putin Is a Fool’ Intercepted Calls Reveal Russian Army in Disarray ", " Iran’s Women Are (Once Again) the Vanguards of a Revolution ", @@ -6467,23 +6543,7 @@ " Creamy Mushroom & Rice Soup ", " Vanilla mashed potatoes ", " Pancackes ", - " Chocolate Chip Cookie ", - " Braised Short Ribs w Curry Leaves ", - " Blueberry cheesecake ", - " Sheet-pan gnocchi ", - " Torched Banana Cake ", - " Harissa-Honey Popcorn Chicken ", - " Vanilla mashed potatoes ", - " Pancackes ", - " Braised Short Ribs with Squash and Chile ", - " Potato Hash with Fixins ", - " Banana Foster ", - " Honeycomb-candy butter ", - " Ultimate Sugar Cookies ", - " Hoppin' John ", - " Chicken Schnitzel ", - " Peperoncini Chicken ", - " Churros with Bittersweet Chocolate Sauce " + " Chocolate Chip Cookie " ], "Removed Tags from": [ " Le Miel de Paris ", @@ -6497,7 +6557,9 @@ " Cinematheque ", " Le Miel de Paris ", " Apple processes ", - " Bruxelles " + " Bruxelles ", + " A Search for Family, a Love for Horses and How It All Led to Kentucky Derby Glory ", + " YouTube Fraud Led to $23 Million in Royalties for 2 Men, IRS Says " ], "Removed Links from": [ " 2022-01-22 ", diff --git a/.obsidian/plugins/obsidian-dice-roller/main.js b/.obsidian/plugins/obsidian-dice-roller/main.js index 21979a45..d084a067 100644 --- a/.obsidian/plugins/obsidian-dice-roller/main.js +++ b/.obsidian/plugins/obsidian-dice-roller/main.js @@ -18,7 +18,7 @@ Use (?: \u2026 ) instead`);if(!N.lineBreaks&&Q.test(` `):_.text.length,A=this.buffer.substring(M,_.offset+D);return P+=" at line "+_.line+" col "+_.col+`: `,P+=" "+A+` -`,P+=" "+Array(_.col).join(" ")+"^",P},b.prototype.clone=function(){return new b(this.states,this.state)},b.prototype.has=function(_){return!0},{compile:x,states:d,error:Object.freeze({error:!0}),fallback:Object.freeze({fallback:!0}),keywords:z}})});Fo(exports,{DEFAULT_SETTINGS:()=>l6,default:()=>Hi});var u2=Z2(require("obsidian")),_o=Z2(Ri());var Fi={prefix:"fas",iconName:"dice",icon:[640,512,[],"f522","M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]};var Bi={prefix:"far",iconName:"copy",icon:[448,512,[],"f0c5","M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"]};function pt(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?pt=function(e){return typeof e}:pt=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},pt(n)}function ko(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}function Pi(n,e){for(var t=0;t-1;a--){var r=t[a],s=(r.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(s)>-1&&(i=r)}return C2.head.insertBefore(e,i),n}}var lc="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function t6(){for(var n=12,e="";n-- >0;)e+=lc[Math.random()*62|0];return e}function ia(n){return"".concat(n).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function uc(n){return Object.keys(n||{}).reduce(function(e,t){return e+"".concat(t,'="').concat(ia(n[t]),'" ')},"").trim()}function aa(n){return Object.keys(n||{}).reduce(function(e,t){return e+"".concat(t,": ").concat(n[t],";")},"")}function ra(n){return n.size!==N4.size||n.x!==N4.x||n.y!==N4.y||n.rotate!==N4.rotate||n.flipX||n.flipY}function na(n){var e=n.transform,t=n.containerWidth,i=n.iconWidth,a={transform:"translate(".concat(t/2," 256)")},r="translate(".concat(e.x*32,", ").concat(e.y*32,") "),s="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),o="rotate(".concat(e.rotate," 0 0)"),l={transform:"".concat(r," ").concat(s," ").concat(o)},c={transform:"translate(".concat(i/2*-1," -256)")};return{outer:a,inner:l,path:c}}var w0={x:0,y:0,width:"100%",height:"100%"};function sa(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return n.attributes&&(n.attributes.fill||e)&&(n.attributes.fill="black"),n}function hc(n){return n.tag==="g"?n.children:[n]}function fc(n){var e=n.children,t=n.attributes,i=n.main,a=n.mask,r=n.maskId,s=n.transform,o=i.width,l=i.icon,c=a.width,u=a.icon,f=na({transform:s,containerWidth:c,iconWidth:o}),h={tag:"rect",attributes:F1({},w0,{fill:"white"})},m=l.children?{children:l.children.map(sa)}:{},v={tag:"g",attributes:F1({},f.inner),children:[sa(F1({tag:l.tag,attributes:F1({},l.attributes,f.path)},m))]},g={tag:"g",attributes:F1({},f.outer),children:[v]},x="mask-".concat(r||t6()),p="clip-".concat(r||t6()),d={tag:"mask",attributes:F1({},w0,{id:x,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,g]},z={tag:"defs",children:[{tag:"clipPath",attributes:{id:p},children:hc(u)},d]};return e.push(z,{tag:"rect",attributes:F1({fill:"currentColor","clip-path":"url(#".concat(p,")"),mask:"url(#".concat(x,")")},w0)}),{children:e,attributes:t}}function dc(n){var e=n.children,t=n.attributes,i=n.main,a=n.transform,r=n.styles,s=aa(r);if(s.length>0&&(t.style=s),ra(a)){var o=na({transform:a,containerWidth:i.width,iconWidth:i.width});e.push({tag:"g",attributes:F1({},o.outer),children:[{tag:"g",attributes:F1({},o.inner),children:[{tag:i.icon.tag,children:i.icon.children,attributes:F1({},i.icon.attributes,o.path)}]}]})}else e.push(i.icon);return{children:e,attributes:t}}function pc(n){var e=n.children,t=n.main,i=n.mask,a=n.attributes,r=n.styles,s=n.transform;if(ra(s)&&t.found&&!i.found){var o=t.width,l=t.height,c={x:o/l/2,y:.5};a.style=aa(F1({},r,{"transform-origin":"".concat(c.x+s.x/16,"em ").concat(c.y+s.y/16,"em")}))}return[{tag:"svg",attributes:a,children:e}]}function mc(n){var e=n.prefix,t=n.iconName,i=n.children,a=n.attributes,r=n.symbol,s=r===!0?"".concat(e,"-").concat(T2.familyPrefix,"-").concat(t):r;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:F1({},a,{id:s}),children:i}]}]}function vc(n){var e=n.icons,t=e.main,i=e.mask,a=n.prefix,r=n.iconName,s=n.transform,o=n.symbol,l=n.title,c=n.maskId,u=n.titleId,f=n.extra,h=n.watchable,m=h===void 0?!1:h,v=i.found?i:t,g=v.width,x=v.height,p=a==="fak",d=p?"":"fa-w-".concat(Math.ceil(g/x*16)),z=[T2.replacementClass,r?"".concat(T2.familyPrefix,"-").concat(r):"",d].filter(function(F){return f.classes.indexOf(F)===-1}).filter(function(F){return F!==""||!!F}).concat(f.classes).join(" "),b={children:[],attributes:F1({},f.attributes,{"data-prefix":a,"data-icon":r,class:z,role:f.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(g," ").concat(x)})},C=p&&!~f.classes.indexOf("fa-fw")?{width:"".concat(g/x*16*.0625,"em")}:{};m&&(b.attributes[Zo]=""),l&&b.children.push({tag:"title",attributes:{id:b.attributes["aria-labelledby"]||"title-".concat(u||t6())},children:[l]});var E=F1({},b,{prefix:a,iconName:r,main:t,mask:i,maskId:c,transform:s,symbol:o,styles:F1({},C,f.styles)}),T=i.found&&t.found?fc(E):dc(E),_=T.children,P=T.attributes;return E.children=_,E.attributes=P,o?mc(E):pc(E)}var oa=function(){},fh=T2.measurePerformance&&Kt&&Kt.mark&&Kt.measure?Kt:{mark:oa,measure:oa};var gc=function(e,t){return function(i,a,r,s){return e.call(t,i,a,r,s)}},_0=function(e,t,i,a){var r=Object.keys(e),s=r.length,o=a!==void 0?gc(t,a):t,l,c,u;for(i===void 0?(l=1,u=e[r[0]]):(l=0,u=i);l2&&arguments[2]!==void 0?arguments[2]:{},i=t.skipHooks,a=i===void 0?!1:i,r=Object.keys(e).reduce(function(s,o){var l=e[o],c=!!l.icon;return c?s[l.iconName]=l.icon:s[o]=l,s},{});typeof fe.hooks.addPack=="function"&&!a?fe.hooks.addPack(n,r):fe.styles[n]=F1({},fe.styles[n]||{},r),n==="fas"&&ca("fa",e)}var la=fe.styles,xc=fe.shims,Mc={},bc={},yc={},ua=function(){var e=function(a){return _0(la,function(r,s,o){return r[o]=_0(s,a,{}),r},{})};Mc=e(function(i,a,r){return a[3]&&(i[a[3]]=r),i}),bc=e(function(i,a,r){var s=a[2];return i[r]=r,s.forEach(function(o){i[o]=r}),i});var t="far"in la;yc=_0(xc,function(i,a){var r=a[0],s=a[1],o=a[2];return s==="far"&&!t&&(s="fas"),i[r]={prefix:s,iconName:o},i},{})};ua();var dh=fe.styles;function ha(n,e,t){if(n&&n[e]&&n[e][t])return{prefix:e,iconName:t,icon:n[e][t]}}function fa(n){var e=n.tag,t=n.attributes,i=t===void 0?{}:t,a=n.children,r=a===void 0?[]:a;return typeof n=="string"?ia(n):"<".concat(e," ").concat(uc(i),">").concat(r.map(fa).join(""),"")}function S0(n){this.name="MissingIcon",this.message=n||"Icon unavailable",this.stack=new Error().stack}S0.prototype=Object.create(Error.prototype);S0.prototype.constructor=S0;var i6={fill:"currentColor"},da={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},ph={tag:"path",attributes:F1({},i6,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})},E0=F1({},da,{attributeName:"opacity"}),mh={tag:"circle",attributes:F1({},i6,{cx:"256",cy:"364",r:"28"}),children:[{tag:"animate",attributes:F1({},da,{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:F1({},E0,{values:"1;0;1;1;0;1;"})}]},vh={tag:"path",attributes:F1({},i6,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:[{tag:"animate",attributes:F1({},E0,{values:"1;0;0;0;0;1;"})}]},gh={tag:"path",attributes:F1({},i6,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:F1({},E0,{values:"0;0;1;1;0;0;"})}]};var xh=fe.styles;function pa(n){var e=n[0],t=n[1],i=n.slice(4),a=Ii(i,1),r=a[0],s=null;return Array.isArray(r)?s={tag:"g",attributes:{class:"".concat(T2.familyPrefix,"-").concat(p4.GROUP)},children:[{tag:"path",attributes:{class:"".concat(T2.familyPrefix,"-").concat(p4.SECONDARY),fill:"currentColor",d:r[0]}},{tag:"path",attributes:{class:"".concat(T2.familyPrefix,"-").concat(p4.PRIMARY),fill:"currentColor",d:r[1]}}]}:s={tag:"path",attributes:{fill:"currentColor",d:r}},{found:!0,width:e,height:t,icon:s}}var Mh=fe.styles;var Cc=`svg:not(:root).svg-inline--fa { +`,P+=" "+Array(_.col).join(" ")+"^",P},b.prototype.clone=function(){return new b(this.states,this.state)},b.prototype.has=function(_){return!0},{compile:x,states:d,error:Object.freeze({error:!0}),fallback:Object.freeze({fallback:!0}),keywords:z}})});Fo(exports,{DEFAULT_SETTINGS:()=>l6,default:()=>Hi});var u2=Z2(require("obsidian")),_o=Z2(Ri());var Fi={prefix:"fas",iconName:"dice",icon:[640,512,[],"f522","M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z"]};var Bi={prefix:"far",iconName:"copy",icon:[448,512,[],"f0c5","M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"]};function pt(n){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?pt=function(e){return typeof e}:pt=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},pt(n)}function ko(n,e){if(!(n instanceof e))throw new TypeError("Cannot call a class as a function")}function Pi(n,e){for(var t=0;t-1;a--){var r=t[a],s=(r.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(s)>-1&&(i=r)}return C2.head.insertBefore(e,i),n}}var lc="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function t6(){for(var n=12,e="";n-- >0;)e+=lc[Math.random()*62|0];return e}function ia(n){return"".concat(n).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function uc(n){return Object.keys(n||{}).reduce(function(e,t){return e+"".concat(t,'="').concat(ia(n[t]),'" ')},"").trim()}function aa(n){return Object.keys(n||{}).reduce(function(e,t){return e+"".concat(t,": ").concat(n[t],";")},"")}function ra(n){return n.size!==N4.size||n.x!==N4.x||n.y!==N4.y||n.rotate!==N4.rotate||n.flipX||n.flipY}function na(n){var e=n.transform,t=n.containerWidth,i=n.iconWidth,a={transform:"translate(".concat(t/2," 256)")},r="translate(".concat(e.x*32,", ").concat(e.y*32,") "),s="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),o="rotate(".concat(e.rotate," 0 0)"),l={transform:"".concat(r," ").concat(s," ").concat(o)},c={transform:"translate(".concat(i/2*-1," -256)")};return{outer:a,inner:l,path:c}}var w0={x:0,y:0,width:"100%",height:"100%"};function sa(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return n.attributes&&(n.attributes.fill||e)&&(n.attributes.fill="black"),n}function hc(n){return n.tag==="g"?n.children:[n]}function fc(n){var e=n.children,t=n.attributes,i=n.main,a=n.mask,r=n.maskId,s=n.transform,o=i.width,l=i.icon,c=a.width,u=a.icon,f=na({transform:s,containerWidth:c,iconWidth:o}),h={tag:"rect",attributes:F1({},w0,{fill:"white"})},m=l.children?{children:l.children.map(sa)}:{},v={tag:"g",attributes:F1({},f.inner),children:[sa(F1({tag:l.tag,attributes:F1({},l.attributes,f.path)},m))]},g={tag:"g",attributes:F1({},f.outer),children:[v]},x="mask-".concat(r||t6()),p="clip-".concat(r||t6()),d={tag:"mask",attributes:F1({},w0,{id:x,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[h,g]},z={tag:"defs",children:[{tag:"clipPath",attributes:{id:p},children:hc(u)},d]};return e.push(z,{tag:"rect",attributes:F1({fill:"currentColor","clip-path":"url(#".concat(p,")"),mask:"url(#".concat(x,")")},w0)}),{children:e,attributes:t}}function dc(n){var e=n.children,t=n.attributes,i=n.main,a=n.transform,r=n.styles,s=aa(r);if(s.length>0&&(t.style=s),ra(a)){var o=na({transform:a,containerWidth:i.width,iconWidth:i.width});e.push({tag:"g",attributes:F1({},o.outer),children:[{tag:"g",attributes:F1({},o.inner),children:[{tag:i.icon.tag,children:i.icon.children,attributes:F1({},i.icon.attributes,o.path)}]}]})}else e.push(i.icon);return{children:e,attributes:t}}function pc(n){var e=n.children,t=n.main,i=n.mask,a=n.attributes,r=n.styles,s=n.transform;if(ra(s)&&t.found&&!i.found){var o=t.width,l=t.height,c={x:o/l/2,y:.5};a.style=aa(F1({},r,{"transform-origin":"".concat(c.x+s.x/16,"em ").concat(c.y+s.y/16,"em")}))}return[{tag:"svg",attributes:a,children:e}]}function mc(n){var e=n.prefix,t=n.iconName,i=n.children,a=n.attributes,r=n.symbol,s=r===!0?"".concat(e,"-").concat(T2.familyPrefix,"-").concat(t):r;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:F1({},a,{id:s}),children:i}]}]}function vc(n){var e=n.icons,t=e.main,i=e.mask,a=n.prefix,r=n.iconName,s=n.transform,o=n.symbol,l=n.title,c=n.maskId,u=n.titleId,f=n.extra,h=n.watchable,m=h===void 0?!1:h,v=i.found?i:t,g=v.width,x=v.height,p=a==="fak",d=p?"":"fa-w-".concat(Math.ceil(g/x*16)),z=[T2.replacementClass,r?"".concat(T2.familyPrefix,"-").concat(r):"",d].filter(function(F){return f.classes.indexOf(F)===-1}).filter(function(F){return F!==""||!!F}).concat(f.classes).join(" "),b={children:[],attributes:F1({},f.attributes,{"data-prefix":a,"data-icon":r,class:z,role:f.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(g," ").concat(x)})},C=p&&!~f.classes.indexOf("fa-fw")?{width:"".concat(g/x*16*.0625,"em")}:{};m&&(b.attributes[Zo]=""),l&&b.children.push({tag:"title",attributes:{id:b.attributes["aria-labelledby"]||"title-".concat(u||t6())},children:[l]});var E=F1({},b,{prefix:a,iconName:r,main:t,mask:i,maskId:c,transform:s,symbol:o,styles:F1({},C,f.styles)}),T=i.found&&t.found?fc(E):dc(E),_=T.children,P=T.attributes;return E.children=_,E.attributes=P,o?mc(E):pc(E)}var oa=function(){},fh=T2.measurePerformance&&Kt&&Kt.mark&&Kt.measure?Kt:{mark:oa,measure:oa};var gc=function(e,t){return function(i,a,r,s){return e.call(t,i,a,r,s)}},_0=function(e,t,i,a){var r=Object.keys(e),s=r.length,o=a!==void 0?gc(t,a):t,l,c,u;for(i===void 0?(l=1,u=e[r[0]]):(l=0,u=i);l2&&arguments[2]!==void 0?arguments[2]:{},i=t.skipHooks,a=i===void 0?!1:i,r=Object.keys(e).reduce(function(s,o){var l=e[o],c=!!l.icon;return c?s[l.iconName]=l.icon:s[o]=l,s},{});typeof fe.hooks.addPack=="function"&&!a?fe.hooks.addPack(n,r):fe.styles[n]=F1({},fe.styles[n]||{},r),n==="fas"&&ca("fa",e)}var la=fe.styles,xc=fe.shims,Mc={},bc={},yc={},ua=function(){var e=function(a){return _0(la,function(r,s,o){return r[o]=_0(s,a,{}),r},{})};Mc=e(function(i,a,r){return a[3]&&(i[a[3]]=r),i}),bc=e(function(i,a,r){var s=a[2];return i[r]=r,s.forEach(function(o){i[o]=r}),i});var t="far"in la;yc=_0(xc,function(i,a){var r=a[0],s=a[1],o=a[2];return s==="far"&&!t&&(s="fas"),i[r]={prefix:s,iconName:o},i},{})};ua();var dh=fe.styles;function ha(n,e,t){if(n&&n[e]&&n[e][t])return{prefix:e,iconName:t,icon:n[e][t]}}function fa(n){var e=n.tag,t=n.attributes,i=t===void 0?{}:t,a=n.children,r=a===void 0?[]:a;return typeof n=="string"?ia(n):"<".concat(e," ").concat(uc(i),">").concat(r.map(fa).join(""),"")}function S0(n){this.name="MissingIcon",this.message=n||"Icon unavailable",this.stack=new Error().stack}S0.prototype=Object.create(Error.prototype);S0.prototype.constructor=S0;var i6={fill:"currentColor"},da={attributeType:"XML",repeatCount:"indefinite",dur:"2s"},ph={tag:"path",attributes:F1({},i6,{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})},E0=F1({},da,{attributeName:"opacity"}),mh={tag:"circle",attributes:F1({},i6,{cx:"256",cy:"364",r:"28"}),children:[{tag:"animate",attributes:F1({},da,{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:F1({},E0,{values:"1;0;1;1;0;1;"})}]},vh={tag:"path",attributes:F1({},i6,{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:[{tag:"animate",attributes:F1({},E0,{values:"1;0;0;0;0;1;"})}]},gh={tag:"path",attributes:F1({},i6,{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:F1({},E0,{values:"0;0;1;1;0;0;"})}]};var xh=fe.styles;function pa(n){var e=n[0],t=n[1],i=n.slice(4),a=Ii(i,1),r=a[0],s=null;return Array.isArray(r)?s={tag:"g",attributes:{class:"".concat(T2.familyPrefix,"-").concat(p4.GROUP)},children:[{tag:"path",attributes:{class:"".concat(T2.familyPrefix,"-").concat(p4.SECONDARY),fill:"currentColor",d:r[0]}},{tag:"path",attributes:{class:"".concat(T2.familyPrefix,"-").concat(p4.PRIMARY),fill:"currentColor",d:r[1]}}]}:s={tag:"path",attributes:{fill:"currentColor",d:r}},{found:!0,width:e,height:t,icon:s}}var Mh=fe.styles;var Cc=`svg:not(:root).svg-inline--fa { overflow: visible; } @@ -472,14 +472,14 @@ Use (?: \u2026 ) instead`);if(!N.lineBreaks&&Q.test(` }`;function zc(){var n=Wi,e=ji,t=T2.familyPrefix,i=T2.replacementClass,a=Cc;if(t!==n||i!==e){var r=new RegExp("\\.".concat(n,"\\-"),"g"),s=new RegExp("\\--".concat(n,"\\-"),"g"),o=new RegExp("\\.".concat(e),"g");a=a.replace(r,".".concat(t,"-")).replace(s,"--".concat(t,"-")).replace(o,".".concat(i))}return a}var Ac=function(){function n(){ko(this,n),this.definitions={}}return Uo(n,[{key:"add",value:function(){for(var t=this,i=arguments.length,a=new Array(i),r=0;r1&&arguments[1]!==void 0?arguments[1]:{},i=(e||{}).icon?e:ma(e||{}),a=t.mask;return a&&(a=(a||{}).icon?a:ma(a||{})),n(i,F1({},t,{mask:a}))}}var Ec=new Ac;var va=!1;var L0=Sc(function(n){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},t=e.transform,i=t===void 0?N4:t,a=e.symbol,r=a===void 0?!1:a,s=e.mask,o=s===void 0?null:s,l=e.maskId,c=l===void 0?null:l,u=e.title,f=u===void 0?null:u,h=e.titleId,m=h===void 0?null:h,v=e.classes,g=v===void 0?[]:v,x=e.attributes,p=x===void 0?{}:x,d=e.styles,z=d===void 0?{}:d;if(!!n){var b=n.prefix,C=n.iconName,E=n.icon;return _c(F1({type:"icon"},n),function(){return wc(),T2.autoA11y&&(f?p["aria-labelledby"]="".concat(T2.replacementClass,"-title-").concat(m||t6()):(p["aria-hidden"]="true",p.focusable="false")),vc({icons:{main:pa(E),mask:o?pa(o.icon):{found:!1,width:null,height:null,icon:{}}},prefix:b,iconName:C,transform:F1({},N4,i),symbol:r,title:f,maskId:c,titleId:m,extra:{attributes:p,styles:z,classes:g}})})}});function D0(n,e){let t=Object.keys(e).map(i=>Lc(n,i,e[i]));return t.length===1?t[0]:function(){t.forEach(i=>i())}}function Lc(n,e,t){let i=n[e],a=n.hasOwnProperty(e),r=t(i);return i&&Object.setPrototypeOf(r,i),Object.setPrototypeOf(s,r),n[e]=s,o;function s(...l){return r===i&&n[e]===s&&o(),r.apply(this,l)}function o(){n[e]===s&&(a?n[e]=i:delete n[e]),r!==i&&(r=i,Object.setPrototypeOf(s,i||Function))}}var Ti=Z2(ga());var T0=/(?:(?\d+)[Dd])?#(?[\p{Letter}\p{Emoji_Presentation}\w/-]+)(?:\|(?[\+-]))?(?:\|(?[^\+-]+))?/u,xa=/(?:(?\d+)[Dd])?(?:\[.*\]\(|\[\[)(?.+?)#?\^(?.+?)(?:\]\]|\))(?:\|(?
.+))?/,H0=/(?:(?\d+)[Dd])?(?:\[.*\]\(|\[\[)(?.+)(?:\]\]|\))\|?(?.+)?/;var Le="dice-roller-icon",De="dice-roller-copy";var v4=Z2(require("obsidian"));var de=(a=>(a.None="None",a.Normal="Normal",a.Up="Up",a.Down="Down",a))(de||{}),f2=(i=>(i.None="None",i.Average="Average",i.Roll="Roll",i))(f2||{});function Ma(n,e,t){[...n].slice(e).reverse().forEach(([a,r])=>{n.set(a+1,r)}),n.set(e,t)}var R4=Z2(require("obsidian"));var V0=class extends R4.Events{constructor(e,t="",i=e.data.showDice){super();this.plugin=e;this.original=t;this.loaded=!1;this.containerEl=createSpan({cls:"dice-roller",attr:{"aria-label-position":"top","data-dice":this.original}});this.resultEl=this.containerEl.createSpan("dice-roller-result");if(i){let a=this.containerEl.createSpan({cls:"dice-roller-button"});(0,R4.setIcon)(a,Le),a.onclick=this.onClick.bind(this)}else this.containerEl.addClass("no-icon");this.containerEl.onclick=this.onClick.bind(this)}setTooltip(){this.plugin.data.displayResultsInline||this.containerEl.setAttrs({"aria-label":this.tooltip})}getRandomBetween(e,t){let i=new Uint32Array(1);crypto.getRandomValues(i);let a=i[0]/(4294967295+1);return Math.floor(a*(t-e+1))+e}async render(){this.setTooltip(),await this.build()}async onClick(e){e.stopPropagation(),e.stopImmediatePropagation(),window.getSelection()?.isCollapsed&&await this.roll()}},ba=class extends V0{constructor(e,t,i,a=e.data.showDice){super(e,t,a);this.plugin=e;this.original=t;this.lexemes=i;this.showDice=a;this.save=!1}get inlineText(){return`${this.tooltip.split(` `).join(" -> ")} -> `}},m4=class extends ba{},F4=class extends m4{constructor(e,t,i,a,r=e.data.showDice){super(e,t,[i],r);this.plugin=e;this.original=t;this.lexeme=i;this.source=a;this.watch=!0;this.getPath(),this.init=this.getFile()}async getFile(){if(this.file=this.plugin.app.metadataCache.getFirstLinkpathDest(this.path,this.source),!this.file||!(this.file instanceof R4.TFile))throw new Error("Could not load file.");await this.load(),this.registerFileWatcher()}registerFileWatcher(){this.plugin.registerEvent(this.plugin.app.vault.on("modify",async e=>{!this.watch||this.save||e===this.file&&await this.getOptions()}))}},N0=class extends V0{constructor(e,t,i){super(e,"");this.options=t;this.rolls=i}get tooltip(){return`${this.options.toString()} -${this.results.toString()}`}async roll(){let e=[...this.options];return this.results=[...Array(this.rolls)].map(()=>{let t=e[this.getRandomBetween(0,e.length-1)];return e.splice(e.indexOf(t),1),t}).filter(t=>t),this.render(),this.trigger("new-result"),this.result=this.results[0],this.results[0]}async build(){this.resultEl.empty(),this.resultEl.setText(this.results.toString())}};var P2=class{constructor(e,t={value:e,conditions:[],type:"dice"}){this.lexeme=t;this.modifiers=new Map;this.modifiersAllowed=!0;this.static=!1;this.conditions=[];this.fudge=!1;if(!/(\-?\d+)[dD]?(\d+|%|\[\d+,\s?\d+\])?/.test(e))throw new Error("Non parseable dice string passed to DiceRoll.");this.dice=e.split(" ").join(""),/^-?\d+(?:\.\d+)?$/.test(this.dice)&&(this.static=!0,this.modifiersAllowed=!1);let[,i,a=null,r=1]=this.dice.match(/(\-?\d+)[dD]\[?(?:(-?\d+)\s?,)?\s?(-?\d+|%|F)\]?/)||[,1,null,1];this.multiplier=i<0?-1:1,this.rolls=Math.abs(Number(i))||1,Number(r)<0&&!a&&(a=-1),r==="%"&&(r=100),r==="F"&&(r=1,a=-1,this.fudge=!0),Number(r)[o,{usable:!0,value:s,display:`${s}`,modifiers:new Set}]))}get text(){return`${this.result}`}get result(){return this.static?Number(this.dice):[...this.results].map(([,{usable:t,value:i}])=>t?i:0).reduce((t,i)=>t+i,0)}get display(){return this.static?`${this.result}`:`[${[...this.results].map(([,{modifiers:e,display:t}])=>`${t}${[...e].join("")}`).join(", ")}]`}get modifierText(){if(!this.modifiers.size)return"";let e=[...this.conditions].map(({value:i})=>i).join(""),t=[...this.modifiers].map(([i,{conditionals:a,value:r}])=>{let s=a.map(o=>o.value);return`${r}${s.join("")}`}).join("");return`${e}${t}`}keepLow(e=1){if(!this.modifiersAllowed){new v4.Notice("Modifiers are only allowed on dice rolls.");return}[...this.results].sort((t,i)=>t[1].value-i[1].value).slice(e-this.results.size).forEach(([t])=>{let i=this.results.get(t);i.usable=!1,i.modifiers.add("d"),this.results.set(t,{...i})})}keepHigh(e=1){if(!this.modifiersAllowed){new v4.Notice("Modifiers are only allowed on dice rolls.");return}[...this.results].sort((t,i)=>i[1].value-t[1].value).slice(e).forEach(([t])=>{let i=this.results.get(t);i.usable=!1,i.modifiers.add("d"),this.results.set(t,{...i})})}reroll(e,t){if(!this.modifiersAllowed){new v4.Notice("Modifiers are only allowed on dice rolls.");return}t.length||t.push({operator:"=",comparer:this.faces.min,value:""});let i=0,a=[...this.results].filter(([,{value:r}])=>this.checkCondition(r,t));for(;ithis.checkCondition(r,t)).length>0;)i++,a.map(([,r])=>{r.modifiers.add("r"),r.value=this.getRandomBetween(this.faces.min,this.faces.max)});a.forEach(([r,s])=>{this.results.set(r,s)})}explodeAndCombine(e,t){if(!this.modifiersAllowed){new v4.Notice("Modifiers are only allowed on dice rolls.");return}t.length||t.push({operator:"=",comparer:this.faces.max,value:""});let i=0;[...this.results].filter(([,{value:r}])=>this.checkCondition(r,t)).forEach(([r,s])=>{let o=this.getRandomBetween(this.faces.min,this.faces.max);for(i++,s.modifiers.add("!"),s.value+=o,s.display=`${s.value}`,this.results.set(r,s);ithis.checkCondition(r,t)),a=0;i.forEach(([r,s])=>{let o=s.value,l=0;for(;lthis.multiplier*this.getRandomBetween(this.faces.min,this.faces.max))}setResults(e){this.results=new Map([...e].map((t,i)=>[i,{usable:!0,value:t,display:`${t}`,modifiers:new Set}]))}applyModifiers(){for(let[e,t]of this.modifiers)this.applyModifier(e,t)}roll(){let e=this._roll();return this.results=new Map([...e].map((t,i)=>[i,{usable:!0,value:t,display:`${t}`,modifiers:new Set}])),this.applyModifiers(),this.conditions?.length&&this.applyConditions(),e}applyConditions(){for(let[e,t]of this.results){let i=this.conditions.find(({operator:r})=>r==="-="||r==="=-");if(i&&t.value===i.comparer){t.value=-1,t.modifiers.add("-");continue}this.checkCondition(t.value,this.conditions)?(t.modifiers.add("*"),t.value=1):t.usable=!1}}applyModifier(e,t){switch(e){case"kh":{this.keepHigh(t.data);break}case"kl":{this.keepLow(t.data);break}case"!":{this.explode(t.data,t.conditionals);break}case"!!":{this.explodeAndCombine(t.data,t.conditionals);break}case"r":{this.reroll(t.data,t.conditionals);break}case"condition":}}checkCondition(e,t){return!t||!t.length?e:t.some(({operator:i,comparer:a})=>{if(Number.isNaN(e)||Number.isNaN(a))return!1;let r=!1;switch(i){case"=":r=e===a;break;case"!=":case"=!":r=e!==a;break;case"<":r=e":r=e>a;break;case">=":r=e>=a;break}return r})}allowAverage(){return!0}average(){return(this.faces.min+this.faces.max)/2}getRandomBetween(e,t){return Math.floor(Math.random()*(t-e+1))+e}},xt=class extends P2{constructor(e,t){super("3d6",t);this.dice=e;this.lexeme=t}get doubles(){return new Set([...this.results].map(([,{usable:e,value:t}])=>e?t:0)).size<3}get result(){return this.static?Number(this.dice):[...this.results].map(([,{usable:t,value:i}])=>t?i:0).reduce((t,i)=>t+i,0)}get display(){let e=[];for(let t of this.results){if(t[0]==0&&this.doubles){e.push(`${t[1].value}S`);continue}e.push(`${t[1].value}`)}return`[${e.join(", ")}]`}allowAverage(){return!1}},ya=class extends P2{constructor(e,t){super(e,t);this.dice=e;this.lexeme=t;this.stack=[];let i=`${this.faces.max}`.split("");for(let a=0;aNumber(e.map(t=>t.result).join(""))).reduce((e,t)=>e+t)}get display(){return this.stack.map(e=>e.map(t=>t.result).join(",")).join("|")}roll(){return!this.stack||!this.stack.length?super.roll():(this.stack.forEach(e=>e.map(t=>t.roll())),[...this.stack.map(e=>e.map(t=>t.result)).flat()])}allowAverage(){return!1}},I2=class extends m4{constructor(e,t,i,a=e.data.showDice,r,s){super(e,t,i,a);this.plugin=e;this.original=t;this.lexemes=i;this.displayFixedText=!1;this.stunted="";this.shouldRender=!1;this.showFormula=!1;this.operators={"+":(e,t)=>e+t,"-":(e,t)=>e-t,"*":(e,t)=>e*t,"/":(e,t)=>e/t,"^":(e,t)=>Math.pow(e,t)};this.stack=[];this.stackCopy=[];this.dice=[];this.fixedText=r,this.expectedValue=s,this.displayFixedText=this.fixedText!=="",this.loaded=!0,this.trigger("loaded")}get replacer(){return`${this.result}`}get resultText(){let e=[],t=0;return this.dice.forEach(i=>{let a=this.original.slice(t);e.push(a.slice(0,a.indexOf(i.lexeme.text)),i.display),t+=a.indexOf(i.lexeme.text)+i.lexeme.text.length+i.modifierText.length}),e.push(this.original.slice(t)),e.join("")}get tooltip(){return this._tooltip?this._tooltip:this.expectedValue===f2.Roll||this.shouldRender?this.displayFixedText?`${this.original} +${this.results.toString()}`}async roll(){let e=[...this.options];return this.results=[...Array(this.rolls)].map(()=>{let t=e[this.getRandomBetween(0,e.length-1)];return e.splice(e.indexOf(t),1),t}).filter(t=>t),this.render(),this.trigger("new-result"),this.result=this.results[0],this.results[0]}async build(){this.resultEl.empty(),this.resultEl.setText(this.results.toString())}};var I2=class{constructor(e,t={value:e,conditions:[],type:"dice"}){this.lexeme=t;this.modifiers=new Map;this.modifiersAllowed=!0;this.static=!1;this.conditions=[];this.fudge=!1;if(!/(\-?\d+)[dD]?(\d+|%|\[\d+,\s?\d+\])?/.test(e))throw new Error("Non parseable dice string passed to DiceRoll.");this.dice=e.split(" ").join(""),/^-?\d+(?:\.\d+)?$/.test(this.dice)&&(this.static=!0,this.modifiersAllowed=!1);let[,i,a=null,r=1]=this.dice.match(/(\-?\d+)[dD]\[?(?:(-?\d+)\s?,)?\s?(-?\d+|%|F)\]?/)||[,1,null,1];this.multiplier=i<0?-1:1,this.rolls=Math.abs(Number(i))||1,Number(r)<0&&!a&&(a=-1),r==="%"&&(r=100),r==="F"&&(r=1,a=-1,this.fudge=!0),Number(r)[o,{usable:!0,value:s,display:`${s}`,modifiers:new Set}]))}get text(){return`${this.result}`}get result(){return this.static?Number(this.dice):[...this.results].map(([,{usable:t,value:i}])=>t?i:0).reduce((t,i)=>t+i,0)}get display(){return this.static?`${this.result}`:`[${[...this.results].map(([,{modifiers:e,display:t}])=>`${t}${[...e].join("")}`).join(", ")}]`}get modifierText(){if(!this.modifiers.size)return"";let e=[...this.conditions].map(({value:i})=>i).join(""),t=[...this.modifiers].map(([i,{conditionals:a,value:r}])=>{let s=a.map(o=>o.value);return`${r}${s.join("")}`}).join("");return`${e}${t}`}keepLow(e=1){if(!this.modifiersAllowed){new v4.Notice("Modifiers are only allowed on dice rolls.");return}[...this.results].sort((t,i)=>t[1].value-i[1].value).slice(e-this.results.size).forEach(([t])=>{let i=this.results.get(t);i.usable=!1,i.modifiers.add("d"),this.results.set(t,{...i})})}keepHigh(e=1){if(!this.modifiersAllowed){new v4.Notice("Modifiers are only allowed on dice rolls.");return}[...this.results].sort((t,i)=>i[1].value-t[1].value).slice(e).forEach(([t])=>{let i=this.results.get(t);i.usable=!1,i.modifiers.add("d"),this.results.set(t,{...i})})}reroll(e,t){if(!this.modifiersAllowed){new v4.Notice("Modifiers are only allowed on dice rolls.");return}t.length||t.push({operator:"=",comparer:this.faces.min,value:""});let i=0,a=[...this.results].filter(([,{value:r}])=>this.checkCondition(r,t));for(;ithis.checkCondition(r,t)).length>0;)i++,a.map(([,r])=>{r.modifiers.add("r"),r.value=this.getRandomBetween(this.faces.min,this.faces.max)});a.forEach(([r,s])=>{this.results.set(r,s)})}explodeAndCombine(e,t){if(!this.modifiersAllowed){new v4.Notice("Modifiers are only allowed on dice rolls.");return}t.length||t.push({operator:"=",comparer:this.faces.max,value:""});let i=0;[...this.results].filter(([,{value:r}])=>this.checkCondition(r,t)).forEach(([r,s])=>{let o=this.getRandomBetween(this.faces.min,this.faces.max);for(i++,s.modifiers.add("!"),s.value+=o,s.display=`${s.value}`,this.results.set(r,s);ithis.checkCondition(r,t)),a=0;i.forEach(([r,s])=>{let o=s.value,l=0;for(;lthis.multiplier*this.getRandomBetween(this.faces.min,this.faces.max))}setResults(e){this.results=new Map([...e].map((t,i)=>[i,{usable:!0,value:t,display:`${t}`,modifiers:new Set}]))}applyModifiers(){for(let[e,t]of this.modifiers)this.applyModifier(e,t)}roll(){let e=this._roll();return this.results=new Map([...e].map((t,i)=>[i,{usable:!0,value:t,display:`${t}`,modifiers:new Set}])),this.applyModifiers(),this.conditions?.length&&this.applyConditions(),e}applyConditions(){for(let[e,t]of this.results){let i=this.conditions.find(({operator:r})=>r==="-="||r==="=-");if(i&&t.value===i.comparer){t.value=-1,t.modifiers.add("-");continue}this.checkCondition(t.value,this.conditions)?(t.modifiers.add("*"),t.value=1):t.usable=!1}}applyModifier(e,t){switch(e){case"kh":{this.keepHigh(t.data);break}case"kl":{this.keepLow(t.data);break}case"!":{this.explode(t.data,t.conditionals);break}case"!!":{this.explodeAndCombine(t.data,t.conditionals);break}case"r":{this.reroll(t.data,t.conditionals);break}case"condition":}}checkCondition(e,t){return!t||!t.length?e:t.some(({operator:i,comparer:a})=>{if(Number.isNaN(e)||Number.isNaN(a))return!1;let r=!1;switch(i){case"=":r=e===a;break;case"!=":case"=!":r=e!==a;break;case"<":r=e":r=e>a;break;case">=":r=e>=a;break}return r})}allowAverage(){return!0}average(){return(this.faces.min+this.faces.max)/2}getRandomBetween(e,t){return Math.floor(Math.random()*(t-e+1))+e}},xt=class extends I2{constructor(e,t){super("3d6",t);this.dice=e;this.lexeme=t}get doubles(){return new Set([...this.results].map(([,{usable:e,value:t}])=>e?t:0)).size<3}get result(){return this.static?Number(this.dice):[...this.results].map(([,{usable:t,value:i}])=>t?i:0).reduce((t,i)=>t+i,0)}get display(){let e=[];for(let t of this.results){if(t[0]==0&&this.doubles){e.push(`${t[1].value}S`);continue}e.push(`${t[1].value}`)}return`[${e.join(", ")}]`}allowAverage(){return!1}},ya=class extends I2{constructor(e,t){super(e,t);this.dice=e;this.lexeme=t;this.stack=[];let i=`${this.faces.max}`.split("");for(let a=0;aNumber(e.map(t=>t.result).join(""))).reduce((e,t)=>e+t)}get display(){return this.stack.map(e=>e.map(t=>t.result).join(",")).join("|")}roll(){return!this.stack||!this.stack.length?super.roll():(this.stack.forEach(e=>e.map(t=>t.roll())),[...this.stack.map(e=>e.map(t=>t.result)).flat()])}allowAverage(){return!1}},H2=class extends m4{constructor(e,t,i,a=e.data.showDice,r,s){super(e,t,i,a);this.plugin=e;this.original=t;this.lexemes=i;this.displayFixedText=!1;this.stunted="";this.shouldRender=!1;this.showFormula=!1;this.operators={"+":(e,t)=>e+t,"-":(e,t)=>e-t,"*":(e,t)=>e*t,"/":(e,t)=>e/t,"^":(e,t)=>Math.pow(e,t)};this.stack=[];this.stackCopy=[];this.dice=[];this.fixedText=r,this.expectedValue=s,this.displayFixedText=this.fixedText!=="",this.loaded=!0,this.trigger("loaded")}get replacer(){return`${this.result}`}get resultText(){let e=[],t=0;return this.dice.forEach(i=>{let a=this.original.slice(t);e.push(a.slice(0,a.indexOf(i.lexeme.text)),i.display),t+=a.indexOf(i.lexeme.text)+i.lexeme.text.length+i.modifierText.length}),e.push(this.original.slice(t)),e.join("")}get tooltip(){return this._tooltip?this._tooltip:this.expectedValue===f2.Roll||this.shouldRender?this.displayFixedText?`${this.original} ${this.result} = ${this.resultText}`:`${this.original} ${this.resultText}`:this.expectedValue===f2.Average?this.displayFixedText?`${this.original} ${this.result} = average: ${this.resultText}`:`${this.original} average: ${this.resultText}`:`${this.original} -empty`}allowAverage(){let e=t=>t.allowAverage();return this.dynamic.every(e)}async build(){if(this.expectedValue===f2.Average&&!this.shouldRender){if(this.allowAverage())for(let a of this.dynamic){let r=a.average();var e=Array(a.rolls).fill(r);a.setResults(e),this.recalculate()}else this.expectedValue=f2.Roll;this.result=Math.floor(this.result),this.setTooltip()}let t=this.result;switch(this.plugin.data.round){case de.None:{t=Math.trunc(t*100)/100;break}case de.Normal:{t=Math.round(t);break}case de.Up:{t=Math.ceil(t);break}case de.Down:{t=Math.floor(t);break}}let i;this.expectedValue===f2.None&&!this.shouldRender?(this.showDice?i=[""]:i=["\xA0"],this.showFormula&&i.unshift(this.original+" -> ")):(i=[`${t}`],this.showFormula&&i.unshift(this.inlineText)),this.expectedValue=f2.Roll,this.displayFixedText?this.resultEl.setText(this.fixedText):this.resultEl.setText(i.join("")+this.stunted)}async onClick(e){e.stopPropagation(),e.stopImmediatePropagation(),e.getModifierState("Alt")?this.expectedValue=f2.Average:e.getModifierState("Control")&&(this.expectedValue=f2.None),window.getSelection()?.isCollapsed&&await this.roll()}get dynamic(){return this.dice.filter(e=>!e.static)}get static(){return this.dice.filter(e=>e.static)}get isStatic(){return this.dice.every(e=>e.static)}async roll(){let e=0;this.stunted="";for(let t of this.lexemes)switch(t.type){case"+":case"-":case"*":case"/":case"^":case"math":let i=this.stack.pop(),a=this.stack.pop();if(!a){t.value==="-"&&(i=new P2(`-${i.dice}`,i.lexeme)),this.stackCopy.push(t.value),this.stack.push(i);continue}i.roll(),i instanceof xt&&i.doubles&&(this.stunted=` - ${i.results.get(0).value} Stunt Points`),a.roll(),a instanceof xt&&a.doubles&&(this.stunted=` - ${a.results.get(0).value} Stunt Points`);let r=this.operators[t.value](a.result,i.result);this.stackCopy.push(t.value),this.stack.push(new P2(`${r}`,t));break;case"kh":{let s=this.dice[e-1],o=t.value?Number(t.value):1;s.modifiers.set("kh",{data:o,conditionals:[],value:t.text});break}case"dl":{let s=this.dice[e-1],o=t.value?Number(t.value):1;o=s.results.size-o,s.modifiers.set("kh",{data:o,conditionals:[],value:t.text});break}case"kl":{let s=this.dice[e-1],o=t.value?Number(t.value):1;s.modifiers.set("kl",{data:o,conditionals:[],value:t.text});break}case"dh":{let s=this.dice[e-1],o=t.value?Number(t.value):1;o=s.results.size-o,s.modifiers.set("kl",{data:o,conditionals:[],value:t.text});break}case"!":{let s=this.dice[e-1],o=Number(t.value)||1;s.modifiers.set("!",{data:o,conditionals:t.conditions??[],value:t.text});break}case"!!":{let s=this.dice[e-1],o=Number(t.value)||1;s.modifiers.set("!!",{data:o,conditionals:t.conditions??[],value:t.text});break}case"r":{let s=this.dice[e-1],o=Number(t.value)||1;s.modifiers.set("r",{data:o,conditionals:t.conditions??[],value:t.text});break}case"dice":{if(t.parenedDice&&/^d/.test(t.value)&&this.stack.length){let s=this.stack.pop();t.value=`${s.result}${t.value}`,this.dice[e]=new P2(t.value,t)}this.dice[e]||(this.dice[e]=new P2(t.value,t)),this.stack.push(this.dice[e]),this.stackCopy.push(this.dice[e]),e++;break}case"stunt":{this.dice[e]||(this.dice[e]=new xt(t.value,t)),this.stack.push(this.dice[e]),this.stackCopy.push(this.dice[e]),e++;break}case"%":{this.dice[e]||(this.dice[e]=new ya(t.value,t)),this.stack.push(this.dice[e]),this.stackCopy.push(this.dice[e]),e++;break}}if(this.shouldRender)await this.plugin.renderRoll(this),new v4.Notice(`${this.tooltip} +empty`}allowAverage(){let e=t=>t.allowAverage();return this.dynamic.every(e)}async build(){if(this.expectedValue===f2.Average&&!this.shouldRender){if(this.allowAverage())for(let a of this.dynamic){let r=a.average();var e=Array(a.rolls).fill(r);a.setResults(e),this.recalculate()}else this.expectedValue=f2.Roll;this.result=Math.floor(this.result),this.setTooltip()}let t=this.result;switch(this.plugin.data.round){case de.None:{t=Math.trunc(t*100)/100;break}case de.Normal:{t=Math.round(t);break}case de.Up:{t=Math.ceil(t);break}case de.Down:{t=Math.floor(t);break}}let i;this.expectedValue===f2.None&&!this.shouldRender?(this.showDice?i=[""]:i=["\xA0"],this.showFormula&&i.unshift(this.original+" -> ")):(i=[`${t}`],this.showFormula&&i.unshift(this.inlineText)),this.expectedValue=f2.Roll,this.displayFixedText?this.resultEl.setText(this.fixedText):this.resultEl.setText(i.join("")+this.stunted)}async onClick(e){e.stopPropagation(),e.stopImmediatePropagation(),e.getModifierState("Alt")?this.expectedValue=f2.Average:e.getModifierState("Control")&&(this.expectedValue=f2.None),window.getSelection()?.isCollapsed&&await this.roll()}get dynamic(){return this.dice.filter(e=>!e.static)}get static(){return this.dice.filter(e=>e.static)}get isStatic(){return this.dice.every(e=>e.static)}async roll(){let e=0;this.stunted="";for(let t of this.lexemes)switch(t.type){case"+":case"-":case"*":case"/":case"^":case"math":let i=this.stack.pop(),a=this.stack.pop();if(!a){t.value==="-"&&(i=new I2(`-${i.dice}`,i.lexeme)),this.stackCopy.push(t.value),this.stack.push(i);continue}i.roll(),i instanceof xt&&i.doubles&&(this.stunted=` - ${i.results.get(0).value} Stunt Points`),a.roll(),a instanceof xt&&a.doubles&&(this.stunted=` - ${a.results.get(0).value} Stunt Points`);let r=this.operators[t.value](a.result,i.result);this.stackCopy.push(t.value),this.stack.push(new I2(`${r}`,t));break;case"kh":{let s=this.dice[e-1],o=t.value?Number(t.value):1;s.modifiers.set("kh",{data:o,conditionals:[],value:t.text});break}case"dl":{let s=this.dice[e-1],o=t.value?Number(t.value):1;o=s.results.size-o,s.modifiers.set("kh",{data:o,conditionals:[],value:t.text});break}case"kl":{let s=this.dice[e-1],o=t.value?Number(t.value):1;s.modifiers.set("kl",{data:o,conditionals:[],value:t.text});break}case"dh":{let s=this.dice[e-1],o=t.value?Number(t.value):1;o=s.results.size-o,s.modifiers.set("kl",{data:o,conditionals:[],value:t.text});break}case"!":{let s=this.dice[e-1],o=Number(t.value)||1;s.modifiers.set("!",{data:o,conditionals:t.conditions??[],value:t.text});break}case"!!":{let s=this.dice[e-1],o=Number(t.value)||1;s.modifiers.set("!!",{data:o,conditionals:t.conditions??[],value:t.text});break}case"r":{let s=this.dice[e-1],o=Number(t.value)||1;s.modifiers.set("r",{data:o,conditionals:t.conditions??[],value:t.text});break}case"dice":{if(t.parenedDice&&/^d/.test(t.value)&&this.stack.length){let s=this.stack.pop();t.value=`${s.result}${t.value}`,this.dice[e]=new I2(t.value,t)}this.dice[e]||(this.dice[e]=new I2(t.value,t)),this.stack.push(this.dice[e]),this.stackCopy.push(this.dice[e]),e++;break}case"stunt":{this.dice[e]||(this.dice[e]=new xt(t.value,t)),this.stack.push(this.dice[e]),this.stackCopy.push(this.dice[e]),e++;break}case"%":{this.dice[e]||(this.dice[e]=new ya(t.value,t)),this.stack.push(this.dice[e]),this.stackCopy.push(this.dice[e]),e++;break}}if(this.shouldRender)await this.plugin.renderRoll(this),new v4.Notice(`${this.tooltip} -Result: ${this.result}`);else{let t=this.stack.pop();t.roll(),t instanceof xt&&t.doubles&&(this.stunted=` - ${t.results.get(0).value} Stunt Points`),this.result=t.result,this._tooltip=null}return this.render(),this.trigger("new-result"),this.result}recalculate(){let e=[],t=0;for(let i of this.stackCopy)if(typeof i=="string"){let a=e.pop(),r=e.pop();if(!r){i==="-"&&(a=new P2(`-${a.result}`,a.lexeme)),e.push(a);continue}let s=this.operators[i](r.result,a.result);e.push(new P2(`${s}`))}else e.push(i),i instanceof P2&&i.applyModifiers();e.length&&e[0]instanceof P2&&(e[0].applyModifiers(),t+=e[0].result),this.result=t}toResult(){return{type:"dice",result:this.result,tooltip:this.tooltip}}async applyResult(e){e.type==="dice"&&(e.result&&(this.result=e.result),e.tooltip&&(this._tooltip=e.tooltip),await this.render())}setResult(e){}};var n2=Z2(require("obsidian"));function Dc(n){let e="",t="abcdefghijklmnopqrstuvwxyz0123456789",i=t.length;for(let a=0;a{o.stopPropagation(),navigator.clipboard.writeText(this.displayFromCache(...this.results).trim()).then(async()=>{new n2.Notice("Result copied to clipboard.")})}),(0,n2.setIcon)(this.copy,De)}get replacer(){let e=this.getBlockId(this.result);return e?`![[${this.path}#^${e}]]`:""}get tooltip(){return`${this.original} +Result: ${this.result}`);else{let t=this.stack.pop();t.roll(),t instanceof xt&&t.doubles&&(this.stunted=` - ${t.results.get(0).value} Stunt Points`),this.result=t.result,this._tooltip=null}return this.render(),this.trigger("new-result"),this.result}recalculate(){let e=[],t=0;for(let i of this.stackCopy)if(typeof i=="string"){let a=e.pop(),r=e.pop();if(!r){i==="-"&&(a=new I2(`-${a.result}`,a.lexeme)),e.push(a);continue}let s=this.operators[i](r.result,a.result);e.push(new I2(`${s}`))}else e.push(i),i instanceof I2&&i.applyModifiers();e.length&&e[0]instanceof I2&&(e[0].applyModifiers(),t+=e[0].result),this.result=t}toResult(){return{type:"dice",result:this.result,tooltip:this.tooltip}}async applyResult(e){e.type==="dice"&&(e.result&&(this.result=e.result),e.tooltip&&(this._tooltip=e.tooltip),await this.render())}setResult(e){}};var n2=Z2(require("obsidian"));function Dc(n){let e="",t="abcdefghijklmnopqrstuvwxyz0123456789",i=t.length;for(let a=0;a{o.stopPropagation(),navigator.clipboard.writeText(this.displayFromCache(...this.results).trim()).then(async()=>{new n2.Notice("Result copied to clipboard.")})}),(0,n2.setIcon)(this.copy,De)}get replacer(){let e=this.getBlockId(this.result);return e?`![[${this.path}#^${e}]]`:""}get tooltip(){return`${this.original} ${this.path}`}async build(){if(this.resultEl.empty(),this.plugin.data.displayResultsInline&&this.inline&&this.resultEl.createSpan({text:this.inlineText}),!this.results||!this.results.length){this.resultEl.createDiv({cls:"dice-no-results",text:"No results."});return}this.plugin.data.copyContentButton&&this.copy.removeClass("no-show");for(let e of this.results){this.resultEl.onclick=async i=>{if(i&&i.getModifierState("Control")||i.getModifierState("Meta")){i.stopPropagation();return}};let t=this.resultEl.createDiv({cls:"markdown-embed"});if(!this.plugin.data.displayResultsInline){let i="type"in e?e.type:"List Item";t.setAttrs({"aria-label":`${this.file.basename}: ${i}`})}if(!e){t.createDiv({cls:"dice-no-results",text:"No results."});continue}if(n2.MarkdownRenderer.renderMarkdown(this.displayFromCache(e),t.createDiv(),this.source,null),this.plugin.data.copyContentButton&&this.results.length>1){let i=t.createDiv({cls:"dice-content-copy dice-roller-button",attr:{"aria-label":"Copy Contents"}});i.addEventListener("click",a=>{a.stopPropagation(),navigator.clipboard.writeText(this.displayFromCache(e).trim()).then(async()=>{new n2.Notice("Result copied to clipboard.")})}),(0,n2.setIcon)(i,De)}}}async load(){await this.getOptions()}displayFromCache(...e){let t=[];for(let i of e)t.push(this.content.slice(i.position.start.offset,i.position.end.offset));return t.join(` `)}getBlockId(e){let t=this.cache.blocks??{},i=Object.entries(t).find(([a,r])=>Ca(r.position,e.position));if(!i){let a=`${Tc(4)}`,r=`${this.content.slice(0,this.result.position.end.offset+1)}^${a}${this.content.slice(this.result.position.end.offset)}`;return this.watch=!1,this.plugin.app.vault.modify(this.file,r),a}return i[0]}getPath(){let{groups:e}=this.lexeme.value.match(H0),{roll:t=1,link:i,types:a}=e;if(!i)throw new Error("Could not parse link.");this.rolls=(t&&!isNaN(Number(t))&&Number(t))??1,this.path=decodeURIComponent(i.replace(/(\[|\]|\(|\))/g,"")),this.types=a?.split(","),this.levels=a?.split(",").map(r=>/heading\-\d+/.test(r)?r.split("-").pop():null).filter(r=>r),this.types=a?.split(",").map(r=>/heading\-\d+/.test(r)?r.split("-").shift():r)}async getOptions(){if(this.cache=this.plugin.app.metadataCache.getFileCache(this.file),!this.cache||!this.cache.sections)throw new Error("Could not read file cache.");this.content=await this.plugin.app.vault.cachedRead(this.file),this.options=this.cache.sections.filter(({type:e,position:t})=>this.types?e=="heading"&&this.types.includes(e)&&this.levels.length?(this.cache.headings??[]).filter(({level:a})=>this.levels.includes(`${a}`)).some(({position:a})=>Ca(a,t)):this.types.includes(e):!["yaml","thematicBreak"].includes(e)),this.types&&this.types.includes("listItem")&&this.options.push(...this.cache.listItems),this.loaded=!0,this.trigger("loaded")}async roll(){return new Promise((e,t)=>{if(!this.loaded)this.on("loaded",()=>{let i=[...this.options];this.results=[...Array(this.rolls)].map(()=>{let a=i[this.getRandomBetween(0,i.length-1)];return i.splice(i.indexOf(a),1),a}).filter(a=>a),this.render(),this.trigger("new-result"),this.result=this.results[0],e(this.results[0])});else{let i=[...this.options];this.results=[...Array(this.rolls)].map(()=>{let a=i[this.getRandomBetween(0,i.length-1)];return i.splice(i.indexOf(a),1),a}).filter(a=>a),this.render(),this.trigger("new-result"),this.result=this.results[0],e(this.results[0])}})}toResult(){return{type:"section",result:this.results}}async applyResult(e){e.type==="section"&&(e.result&&(this.results=e.result),await this.render())}},r6=class extends m4{constructor(e,t,i,a,r=e.data.showDice){super(e,t,[i],r);this.plugin=e;this.original=t;this.lexeme=i;this.source=a;this.loaded=!1;if(!this.plugin.canUseDataview)throw new n2.Notice("A tag can only be rolled with the Dataview plugin enabled."),new Error("A tag can only be rolled with the Dataview plugin enabled.");this.containerEl.addClasses(["has-embed","markdown-embed"]);let{roll:s=1,tag:o,collapse:l,types:c}=i.value.match(T0).groups;this.collapse=l==="-"?!0:l==="+"?!1:!this.plugin.data.returnAllTags,this.tag=`#${o}`,this.rolls=Number(s),this.types=c,this.getFiles()}get replacer(){return this.result.replacer}get typeText(){return this.types?.length?`|${this.types}`:""}async getFiles(){if(!this.plugin.dataviewAPI){new n2.Notice("Dice Roller: Dataview must be installed and enabled to use tag rollers.");return}await this.plugin.dataviewReady();let e=await this.plugin.dataviewAPI.query(`list from ${this.tag}`);if(!e.successful)throw new Error(`No files found with that tag. Is the tag correct? @@ -500,8 +500,8 @@ ${this.path}`}async build(){if(this.resultEl.empty(),this.plugin.data.displayRes `);i.push(f+" --> "+h)}}}return t.combinedTooltip=i.join(";"),t}async getResult(){let e=[],t=[];for(let i=0;ic[1]===void 0&&o===c[0]||o>=c[0]&&c[1]>=o);l&&(a=this.lookupRoller.original.trim()+" --> "+`${this.lookupRoller.resultText}${this.header?" | "+this.header:""}`.trim(),s=l[1])}else{let o=[...this.options],l=this.getRandomBetween(0,o.length-1);a=o.length+" rows --> [row "+(l+1)+"]",s=o[l]}r=await this.getSubResult(s),e.push(r.result),r.combinedTooltip&&(a+=" > ("+r.combinedTooltip+")"),t.push(a)}return t.length==0?this.combinedTooltip=this.original:t.length==1?this.combinedTooltip=this.original+" "+t.join(""):this.combinedTooltip=this.original+" ==> ("+t.join(" ||")+")",this.prettyTooltip=this.prettify(this.combinedTooltip),e.join("||")}async roll(){return new Promise(async e=>{this.loaded?(this.result=await this.getResult(),this.render(),this.trigger("new-result"),e(this.result)):this.on("loaded",async()=>{this.result=await this.getResult(),this.render(),this.trigger("new-result"),e(this.result)})})}async load(){await this.getOptions()}async getOptions(){if(this.cache=this.plugin.app.metadataCache.getFileCache(this.file),!this.cache||!this.cache.blocks||!(this.block in this.cache.blocks))throw new Error(`Could not read file cache. Does the block reference exist? ${this.path} > ${this.block}`);let e=this.cache.sections?.find(t=>t.position==this.cache.blocks[this.block].position);if(this.position=this.cache.blocks[this.block].position,this.content=(await this.plugin.app.vault.cachedRead(this.file))?.slice(this.position.start.offset,this.position.end.offset),e&&e.type==="list")this.options=this.content.split(` -`);else{let t=Vc(this.content);if(Object.keys(t.columns).length===2&&/dice:\s*([\s\S]+)\s*?/.test(Object.keys(t.columns)[0])){let i=await this.plugin.getRoller(Object.keys(t.columns)[0].split(":").pop(),this.source);i instanceof I2&&(this.lookupRoller=i,this.lookupRanges=t.rows.map(a=>{let[r,s]=a.replace(/\\\|/g,"{ESCAPED_PIPE}").split("|").map(c=>c.replace(/{ESCAPED_PIPE}/g,"\\|")).map(c=>c.trim()),[,o,l]=r.match(/(\d+)(?:[^\d]+?(\d+))?/)??[];if(!(!o&&!l))return[[Number(o),l?Number(l):void 0],s]}),this.isLookup=!0)}if(this.header&&t.columns[this.header])this.options=t.columns[this.header];else{if(this.header)throw new Error(`Header ${this.header} was not found in table ${this.path} > ${this.block}.`);this.options=t.rows}}this.loaded=!0,this.trigger("loaded")}toResult(){return{type:"table",result:this.result}}async applyResult(e){e.type==="table"&&(e.result&&(this.result=e.result),await this.render())}},Hc=/^\|?([\s\S]+?)\|?$/,Aa=/\|/g;function Vc(n){let e=n.split(` -`),i=e.map(s=>(s.trim().match(Hc)??[,s.trim()])[1])[0].replace("\\|","{ESCAPED_PIPE}").split(Aa),a=[],r=[];for(let s in i){let o=i[s];o.trim().length||(o=s),r.push([o.trim(),[]])}for(let s of e.slice(2)){let o=s.trim().replace(/\\\|/g,"{ESCAPED_PIPE}").split(Aa).map(l=>l.replace(/{ESCAPED_PIPE}/g,"\\|")).map(l=>l.trim()).filter(l=>l.length);a.push(o.join(" | "));for(let l in o){let c=o[l].trim();!c.length||!r[l]||r[l][1].push(c)}}return{columns:Object.fromEntries(r),rows:a}}var D1=Z2(require("obsidian"));var c6=class extends D1.PluginSettingTab{constructor(e,t){super(e,t);this.plugin=t;this.plugin=t}async display(){let{containerEl:e}=this;e.empty(),e.addClass("dice-roller-settings"),e.createEl("h2",{text:"Dice Roller Settings"}),this.buildGenerics(e.createDiv()),this.buildDisplay(e.createDiv()),this.buildDice(e.createDiv()),this.buildTables(e.createDiv()),this.buildSections(e.createDiv()),this.buildTags(e.createDiv()),this.buildView(e.createDiv()),this.buildRender(e.createDiv()),this.buildFormulaSettings(e.createDiv("dice-roller-setting-additional-container")),e.createDiv("coffee").createEl("a",{href:"https://www.buymeacoffee.com/valentine195"}).createEl("img",{attr:{src:"https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=\u2615&slug=valentine195&button_colour=e3e7ef&font_colour=262626&font_family=Inter&outline_colour=262626&coffee_colour=ff0000"}})}buildGenerics(e){e.empty(),new D1.Setting(e).setName("Globally Save Results").setDesc(createFragment(t=>{t.createSpan({text:"Dice results will be saved by default. This can be overridden using "}),t.createEl("code",{text:"dice-: formula"}),t.createEl("p",{text:"Please note that the plugin will attempt to save the result but may not be able to."})})).addToggle(t=>{t.setValue(this.plugin.data.persistResults),t.onChange(async i=>{this.plugin.data.persistResults=i,await this.plugin.saveSettings()})})}buildDisplay(e){e.empty(),new D1.Setting(e).setHeading().setName("Dice Display"),new D1.Setting(e).setName("Display Formula With Results").setDesc("Both the formula and the results will both be displayed in preview mode.").addToggle(t=>{t.setValue(this.plugin.data.displayResultsInline),t.onChange(async i=>{this.plugin.data.displayResultsInline=i,await this.plugin.saveSettings()})}),new D1.Setting(e).setName("Display Dice Button With Results").setDesc("A dice button will appear next to results.").addToggle(t=>{t.setValue(this.plugin.data.showDice),t.onChange(async i=>{this.plugin.data.showDice=i,await this.plugin.saveSettings()})}),new D1.Setting(e).setName("Add Formula When Using Modify Dice").setDesc(createFragment(t=>{t.createSpan({text:"Both the formula and the results will both be added to the note when using "}),t.createEl("code",{text:"dice-mod"}),t.createSpan({text:"."})})).addToggle(t=>{t.setValue(this.plugin.data.displayFormulaForMod),t.onChange(async i=>{this.plugin.data.displayFormulaForMod=i,await this.plugin.saveSettings()})})}buildDice(e){e.empty(),new D1.Setting(e).setHeading().setName("Dice Rollers"),new D1.Setting(e).setName("Default Face").setDesc("Use this as the number of faces when it is omitted.").addText(t=>{t.setValue(`${this.plugin.data.defaultFace}`),t.inputEl.onblur=async()=>{isNaN(Number(t.inputEl.value))&&new D1.Notice("The default face must be a number."),this.plugin.data.defaultFace=Number(t.inputEl.value),await this.plugin.saveSettings()}}),new D1.Setting(e).setName("Round Results").setDesc("Determine the rounding behavior for dice results.").addDropdown(t=>{t.addOptions(de).setValue(this.plugin.data.round).onChange(i=>{this.plugin.data.round=i,this.plugin.saveSettings()})}),new D1.Setting(e).setName("Always Render Dice").setDesc(createFragment(t=>{t.createSpan({text:"Dice rolled in notes will always be rendered. Use the "}),t.createEl("code",{text:"|norender"}),t.createSpan({text:" flag to prevent it."})})).addToggle(t=>{t.setValue(this.plugin.data.renderAllDice).onChange(i=>{this.plugin.data.renderAllDice=i,this.plugin.saveSettings()})})}buildTables(e){e.empty(),new D1.Setting(e).setHeading().setName("Table Rollers"),new D1.Setting(e).setName("Display Lookup Table Roll").setDesc("Lookup table rolls will display the rolled number along with the result.").addToggle(t=>{t.setValue(this.plugin.data.displayLookupRoll),t.onChange(async i=>{this.plugin.data.displayLookupRoll=i,await this.plugin.saveSettings()})})}buildSections(e){e.empty(),new D1.Setting(e).setHeading().setName("Section Rollers"),new D1.Setting(e).setName("Add Copy Button to Section Results").setDesc("Randomly rolled sections will have a copy-content button to easy add result to clipboard.").addToggle(t=>{t.setValue(this.plugin.data.copyContentButton),t.onChange(async i=>{this.plugin.data.copyContentButton=i,await this.plugin.saveSettings()})})}buildTags(e){e.empty(),new D1.Setting(e).setHeading().setName("Tag Rollers"),new D1.Setting(e).setName("Roll All Files for Tags").setDesc("Return a result for each file when rolling tags.").addToggle(t=>{t.setValue(this.plugin.data.returnAllTags),t.onChange(async i=>{this.plugin.data.returnAllTags=i,await this.plugin.saveSettings()})}),new D1.Setting(e).setName("Always Return Links for Tags").setDesc("Enables random link rolling with the link parameter. Override by specifying a section type.").addToggle(t=>{t.setValue(this.plugin.data.rollLinksForTags),t.onChange(async i=>{this.plugin.data.rollLinksForTags=i,await this.plugin.saveSettings()})})}buildView(e){e.empty(),new D1.Setting(e).setHeading().setName("Dice View"),new D1.Setting(e).setName("Open Dice View on Startup").setDesc("The dice view can always be opened using the command from the command palette.").addToggle(t=>{t.setValue(this.plugin.data.showLeafOnStartup),t.onChange(async i=>{this.plugin.data.showLeafOnStartup=i,await this.plugin.saveSettings()})})}buildRender(e){e.empty(),new D1.Setting(e).setHeading().setName("Graphical Dice"),new D1.Setting(e).setName("Display graphics for Dice View Rolls").setDesc("Dice rolls from dice view will be displayed on screen.").addToggle(a=>{a.setValue(this.plugin.data.renderer),a.onChange(async r=>{this.plugin.data.renderer=r,await this.plugin.saveSettings()})}),new D1.Setting(e).setName("Display Time for Dice Graphics").setDesc("Rendered dice will stay on screen for this number of milliseconds. Leave blank to require a click to clear dice.").addText(a=>{a.inputEl.setAttr("type","number"),a.inputEl.onblur=r=>{Number(a.getValue())<0&&(new D1.Notice("Render time cannot be less than 0."),a.setValue("0"))},a.setValue(`${this.plugin.data.renderTime}`),a.onChange(async r=>{r&&Number(r)<0||isNaN(Number(r))||(this.plugin.data.renderTime=Number(r),await this.plugin.saveSettings())})}).addExtraButton(a=>{a.setIcon("reset").setTooltip("Reset to Default").onClick(async()=>{this.plugin.data.renderTime=l6.renderTime,await this.plugin.saveSettings(),this.buildRender(e)})}),new D1.Setting(e).setName("Dice Base Color").setDesc("Rendered dice will be this color.").controlEl.createEl("input",{type:"color",value:this.plugin.data.diceColor},a=>{a.value=this.plugin.data.diceColor,a.onchange=async({target:r})=>{let s=r.value;this.plugin.data.diceColor=s,await this.plugin.saveSettings(),this.plugin.app.workspace.trigger("dice-roller:update-colors")}}),new D1.Setting(e).setName("Dice Text Color").setDesc("Rendered dice will use this color for their numbers.").controlEl.createEl("input",{type:"color",value:this.plugin.data.textColor},a=>{a.value=this.plugin.data.textColor,a.onchange=async({target:r})=>{let s=r.value;!s||(this.plugin.data.textColor=s,await this.plugin.saveSettings(),this.plugin.app.workspace.trigger("dice-roller:update-colors"))}})}buildFormulaSettings(e){e.empty(),new D1.Setting(e).setHeading().setName("Saved Formulas");let t=e.createDiv();new D1.Setting(t).setName("Add Formula").setDesc("Add a new formula shortcut.").addButton(r=>r.setTooltip("Add Formula").setButtonText("+").onClick(async()=>{let o=await this.buildFormulaForm(t);o&&(this.plugin.data.formulas[o.alias]=o.formula,this.buildFormulaSettings(e),await this.plugin.saveSettings())}));let i=e.createDiv("additional"),a=this.plugin.data.formulas;for(let[r,s]of Object.entries(a)){let o=new D1.Setting(i).setName(r);o.controlEl.createSpan({text:s}),o.addExtraButton(l=>l.setIcon("pencil").setTooltip("Edit").onClick(async()=>{let c=await this.buildFormulaForm(t,{alias:r,formula:s});c&&(delete this.plugin.data.formulas[r],this.plugin.data.formulas[c.alias]=c.formula,this.buildFormulaSettings(e),await this.plugin.saveSettings())})).addExtraButton(l=>l.setIcon("trash").setTooltip("Delete").onClick(async()=>{delete this.plugin.data.formulas[r],await this.plugin.saveSettings(),this.buildFormulaSettings(e)}))}Object.values(a).length||i.createSpan({text:"Create a formula to see it here!",cls:"no-formulas"})}async buildFormulaForm(e,t={alias:null,formula:null}){return new Promise(i=>{let a=e.createDiv("add-new-formula"),r=a.createDiv("formula-data");new D1.Setting(r).setName("Alias").addText(o=>{o.setValue(t.alias).onChange(l=>t.alias=l)}),new D1.Setting(r).setName("Formula").addText(o=>{o.setValue(t.formula).onChange(l=>t.formula=l)});let s=a.createDiv("formula-buttons");new D1.Setting(s).addButton(o=>o.setCta().setButtonText("Save").onClick(async()=>{a.detach(),i(t)})).addExtraButton(o=>o.setIcon("cross").setTooltip("Cancel").onClick(()=>{a.detach(),i(null)}))})}};var E1=Z2(require("obsidian"));var g4="DICE_ROLLER_VIEW",Nc='',Rc='',Fc='',Bc='',Pc='',Ic='',kc='';(0,E1.addIcon)("d4",Nc);(0,E1.addIcon)("d6",Rc);(0,E1.addIcon)("d8",Fc);(0,E1.addIcon)("d10",Bc);(0,E1.addIcon)("d12",Pc);(0,E1.addIcon)("d20",Ic);(0,E1.addIcon)("d100",kc);(0,E1.addIcon)("dice-roller-save",'');(0,E1.addIcon)("dice-roller-plus",'');(0,E1.addIcon)("dice-roller-minus",'');var Ke=class extends E1.ItemView{constructor(e,t){super(t);this.plugin=e;this.leaf=t;this.dice=Ke.DICE();this.custom="";this.adv=!1;this.dis=!1;this.add=0;this.contentEl.addClass("dice-roller-view"),this.registerEvent(this.plugin.app.workspace.on("dice-roller:update-colors",()=>{this.renderer.factory.updateColors()}))}static DICE(){return{d4:0,d6:0,d8:0,d10:0,d12:0,d20:0,d100:0}}get customFormulas(){return this.plugin.data.customFormulas}get renderer(){return this.plugin.renderer}async onOpen(){this.display()}async display(){this.contentEl.empty(),this.gridEl=this.contentEl.createDiv("dice-roller-grid"),this.formulaEl=this.contentEl.createDiv("dice-roller-formula");let e=this.contentEl.createDiv("dice-roller-results-container"),t=e.createDiv("dice-roller-results-header");t.createEl("h4",{text:"Results"}),new E1.ExtraButtonComponent(t.createDiv("clear-all")).setIcon("trash").setTooltip("Clear All").onClick(()=>{this.resultEl.empty(),this.resultEl.append(this.noResultsEl)}),this.resultEl=e.createDiv("dice-roller-results"),this.noResultsEl=this.resultEl.createSpan({text:"No results yet! Roll some dice to get started :)"}),this.buildButtons(),this.buildFormula()}buildButtons(){this.gridEl.empty();let e=this.gridEl.createDiv("dice-buttons");for(let o in this.dice){let l=new E1.ExtraButtonComponent(e.createDiv("dice-button")).setIcon(o);l.extraSettingsEl.onclick=async c=>{let u=c.getModifierState("Shift")?-1:1;this.dice[o]+=u,this.setFormula();let f=await this.plugin.getRoller(this.formulaComponent.inputEl.value,"view");f instanceof I2&&(this.stack=f)}}let t=this.gridEl.createDiv("advantage-disadvantage"),i=new E1.ButtonComponent(t).setButtonText("ADV").onClick(()=>{this.adv=!this.adv,this.dis=!1,this.adv?(i.setCta(),a.removeCta()):i.removeCta(),this.setFormula()}),a=new E1.ButtonComponent(t).setButtonText("DIS").onClick(()=>{this.dis=!this.dis,this.dis?(a.setCta(),i.removeCta()):a.removeCta(),this.adv=!1,this.setFormula()}),r=this.gridEl.createDiv("dice-context").createDiv("add-subtract");new E1.ExtraButtonComponent(r).setIcon("dice-roller-minus").onClick(()=>{this.add-=1,s.setValue(`${this.add}`),this.setFormula()});let s=new E1.TextComponent(r).setValue(`${this.add?this.add:""}`).onChange(o=>{isNaN(Number(o))||(this.add=Number(o)),this.setFormula()});if(new E1.ExtraButtonComponent(r).setIcon("dice-roller-plus").onClick(()=>{this.add+=1,s.setValue(`${this.add}`),this.setFormula()}),this.customFormulas.length){let o=this.gridEl.createDiv("dice-roller-results-container");o.createDiv("dice-roller-results-header").createEl("h4",{text:"Saved Formulas"});for(let c of this.customFormulas){let u=o.createDiv("dice-custom-formula-container"),f=u.createDiv("dice-custom-formula");new E1.ExtraButtonComponent(f).setIcon(Le).setTooltip("Roll").onClick(()=>this.roll(c)),f.createSpan({text:c}),new E1.ExtraButtonComponent(u).setIcon("trash").setTooltip("Remove").onClick(()=>{this.plugin.data.customFormulas=this.plugin.data.customFormulas.filter(h=>h!=c),this.plugin.saveSettings(),this.buildButtons()})}}}async roll(e=this.formulaComponent.inputEl.value){if(!e)return;this.rollButton.setDisabled(!0);let t=await this.plugin.getRoller(e,"view");if(!(t instanceof I2)){new E1.Notice("The Dice View only supports dice rolls.");return}if(await t.roll(),!t.dice.length){new E1.Notice("Invalid formula.");return}try{this.plugin.data.renderer&&(this.addChild(this.renderer),this.renderer.setDice(t),await this.renderer.start(),t.recalculate())}catch(i){new E1.Notice("There was an error rendering the roll."),console.error(i)}this.rollButton.setDisabled(!1),this.addResult({result:t.result,original:t.original,resultText:t.resultText}),this.dice=Ke.DICE(),this.add=null,this.adv=!1,this.dis=!1,this.buildButtons(),this.setFormula()}buildFormula(){this.formulaEl.empty(),this.formulaComponent=new E1.TextAreaComponent(this.formulaEl).setPlaceholder("Dice Formula"),this.formulaComponent.onChange((0,E1.debounce)(async t=>{},500,!0));let e=this.formulaEl.createDiv("action-buttons");this.saveButton=new E1.ButtonComponent(e).setIcon("plus-with-circle").setCta().setTooltip("Save Formula").onClick(()=>this.save()),this.saveButton.buttonEl.addClass("dice-roller-roll"),this.rollButton=new E1.ButtonComponent(e).setIcon(Le).setCta().setTooltip("Roll").onClick(()=>this.roll()),this.rollButton.buttonEl.addClass("dice-roller-roll")}save(){!this.formulaComponent.inputEl.value||(this.plugin.data.customFormulas.push(this.formulaComponent.inputEl.value),this.buildButtons(),this.plugin.saveSettings())}addResult(e){this.noResultsEl&&this.noResultsEl.detach();let t=createDiv("view-result");t.createSpan({text:e.original}),t.createEl("strong",{text:`${e.result}`,attr:{"aria-label":e.resultText}});let i=t.createDiv("result-context");i.createEl("em",{text:new Date().toLocaleString()}),new E1.ExtraButtonComponent(i).setIcon("trash").onClick(()=>{t.detach(),this.resultEl.children.length===0&&this.resultEl.prepend(this.noResultsEl)}),new E1.ExtraButtonComponent(i).setIcon(De).setTooltip("Copy Result").onClick(async()=>{await navigator.clipboard.writeText(`${e.result}`)}).extraSettingsEl.addClass("dice-content-copy"),new E1.ExtraButtonComponent(i).setIcon(Le).setTooltip("Roll Again").onClick(()=>this.roll(e.original)).extraSettingsEl.addClass("dice-result-reroll"),this.resultEl.prepend(t)}get formulaString(){let e=[],t=Object.entries(this.dice).filter(([a,r])=>r!=0);if(!t.length)return"";t.sort((a,r)=>Number(r[0].slice(1))-Number(a[0].slice(1)));let i=t.shift();return e.push(`${i[1]}${i[0]}`),this.adv?e.push("kh"):this.dis&&e.push("dh"),t.length&&e.push(...t.map(([a,r])=>`${r>0?"+":"-"}${Math.abs(r)}${a}`)),this.add&&this.add!=0&&(e.push(this.add>0?"+":"-"),e.push(Math.abs(this.add))),e.join("")}setFormula(){this.formulaComponent.setValue(this.formulaString)}getDisplayText(){return"Dice Roller"}getViewType(){return g4}getIcon(){return Le}async onClose(){await super.onClose(),this.renderer.unload()}};var qt=Z2(require("obsidian"));var w2=class{constructor(e=[0,0,0,0,0,0,0,0,0]){this.elements=void 0,this.elements=e}identity(){let e=this.elements;e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1}setZero(){let e=this.elements;e[0]=0,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=0,e[6]=0,e[7]=0,e[8]=0}setTrace(e){let t=this.elements;t[0]=e.x,t[4]=e.y,t[8]=e.z}getTrace(e=new y){let t=this.elements;return e.x=t[0],e.y=t[4],e.z=t[8],e}vmult(e,t=new y){let i=this.elements,a=e.x,r=e.y,s=e.z;return t.x=i[0]*a+i[1]*r+i[2]*s,t.y=i[3]*a+i[4]*r+i[5]*s,t.z=i[6]*a+i[7]*r+i[8]*s,t}smult(e){for(let t=0;t0){let r=1/a;this.x*=r,this.y*=r,this.z*=r}else this.x=0,this.y=0,this.z=0;return a}unit(e=new y){let t=this.x,i=this.y,a=this.z,r=Math.sqrt(t*t+i*i+a*a);return r>0?(r=1/r,e.x=t*r,e.y=i*r,e.z=a*r):(e.x=1,e.y=0,e.z=0),e}length(){let e=this.x,t=this.y,i=this.z;return Math.sqrt(e*e+t*t+i*i)}lengthSquared(){return this.dot(this)}distanceTo(e){let t=this.x,i=this.y,a=this.z,r=e.x,s=e.y,o=e.z;return Math.sqrt((r-t)*(r-t)+(s-i)*(s-i)+(o-a)*(o-a))}distanceSquared(e){let t=this.x,i=this.y,a=this.z,r=e.x,s=e.y,o=e.z;return(r-t)*(r-t)+(s-i)*(s-i)+(o-a)*(o-a)}scale(e,t=new y){let i=this.x,a=this.y,r=this.z;return t.x=e*i,t.y=e*a,t.z=e*r,t}vmul(e,t=new y){return t.x=e.x*this.x,t.y=e.y*this.y,t.z=e.z*this.z,t}addScaledVector(e,t,i=new y){return i.x=this.x+e*t.x,i.y=this.y+e*t.y,i.z=this.z+e*t.z,i}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}isZero(){return this.x===0&&this.y===0&&this.z===0}negate(e=new y){return e.x=-this.x,e.y=-this.y,e.z=-this.z,e}tangents(e,t){let i=this.length();if(i>0){let a=Oc,r=1/i;a.set(this.x*r,this.y*r,this.z*r);let s=Gc;Math.abs(a.x)<.9?(s.set(1,0,0),a.cross(s,e)):(s.set(0,1,0),a.cross(s,e)),a.cross(e,t)}else e.set(1,0,0),t.set(0,1,0)}toString(){return this.x+","+this.y+","+this.z}toArray(){return[this.x,this.y,this.z]}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}lerp(e,t,i){let a=this.x,r=this.y,s=this.z;i.x=a+(e.x-a)*t,i.y=r+(e.y-r)*t,i.z=s+(e.z-s)*t}almostEquals(e,t=1e-6){return!(Math.abs(this.x-e.x)>t||Math.abs(this.y-e.y)>t||Math.abs(this.z-e.z)>t)}almostZero(e=1e-6){return!(Math.abs(this.x)>e||Math.abs(this.y)>e||Math.abs(this.z)>e)}isAntiparallelTo(e,t){return this.negate(wa),wa.almostEquals(e,t)}clone(){return new y(this.x,this.y,this.z)}};y.ZERO=void 0;y.UNIT_X=void 0;y.UNIT_Y=void 0;y.UNIT_Z=void 0;y.ZERO=new y(0,0,0);y.UNIT_X=new y(1,0,0);y.UNIT_Y=new y(0,1,0);y.UNIT_Z=new y(0,0,1);var Oc=new y,Gc=new y,wa=new y,_2=class{constructor(e={}){this.lowerBound=void 0,this.upperBound=void 0,this.lowerBound=new y,this.upperBound=new y,e.lowerBound&&this.lowerBound.copy(e.lowerBound),e.upperBound&&this.upperBound.copy(e.upperBound)}setFromPoints(e,t,i,a){let r=this.lowerBound,s=this.upperBound,o=i;r.copy(e[0]),o&&o.vmult(r,r),s.copy(r);for(let l=1;ls.x&&(s.x=c.x),c.xs.y&&(s.y=c.y),c.ys.z&&(s.z=c.z),c.z=r.x&&t.y<=a.y&&i.y>=r.y&&t.z<=a.z&&i.z>=r.z}getCorners(e,t,i,a,r,s,o,l){let c=this.lowerBound,u=this.upperBound;e.copy(c),t.set(u.x,c.y,c.z),i.set(u.x,u.y,c.z),a.set(c.x,u.y,u.z),r.set(u.x,c.y,u.z),s.set(c.x,u.y,c.z),o.set(c.x,c.y,u.z),l.copy(u)}toLocalFrame(e,t){let i=Sa,a=i[0],r=i[1],s=i[2],o=i[3],l=i[4],c=i[5],u=i[6],f=i[7];this.getCorners(a,r,s,o,l,c,u,f);for(let h=0;h!==8;h++){let m=i[h];e.pointToLocal(m,m)}return t.setFromPoints(i)}toWorldFrame(e,t){let i=Sa,a=i[0],r=i[1],s=i[2],o=i[3],l=i[4],c=i[5],u=i[6],f=i[7];this.getCorners(a,r,s,o,l,c,u,f);for(let h=0;h!==8;h++){let m=i[h];e.pointToWorld(m,m)}return t.setFromPoints(i)}overlapsRay(e){let{direction:t,from:i}=e,a=1/t.x,r=1/t.y,s=1/t.z,o=(this.lowerBound.x-i.x)*a,l=(this.upperBound.x-i.x)*a,c=(this.lowerBound.y-i.y)*r,u=(this.upperBound.y-i.y)*r,f=(this.lowerBound.z-i.z)*s,h=(this.upperBound.z-i.z)*s,m=Math.max(Math.max(Math.min(o,l),Math.min(c,u)),Math.min(f,h)),v=Math.min(Math.min(Math.max(o,l),Math.max(c,u)),Math.max(f,h));return!(v<0||m>v)}},_a=new y,Sa=[new y,new y,new y,new y,new y,new y,new y,new y],R0=class{constructor(){this.matrix=void 0,this.matrix=[]}get(e,t){let{index:i}=e,{index:a}=t;if(a>i){let r=a;a=i,i=r}return this.matrix[(i*(i+1)>>1)+a-1]}set(e,t,i){let{index:a}=e,{index:r}=t;if(r>a){let s=r;r=a,a=s}this.matrix[(a*(a+1)>>1)+r-1]=i?1:0}reset(){for(let e=0,t=this.matrix.length;e!==t;e++)this.matrix[e]=0}setNumObjects(e){this.matrix.length=e*(e-1)>>1}},F0=class{constructor(){this._listeners=void 0}addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let i=this._listeners;return i[e]===void 0&&(i[e]=[]),i[e].includes(t)||i[e].push(t),this}hasEventListener(e,t){if(this._listeners===void 0)return!1;let i=this._listeners;return!!(i[e]!==void 0&&i[e].includes(t))}hasAnyEventListener(e){return this._listeners===void 0?!1:this._listeners[e]!==void 0}removeEventListener(e,t){if(this._listeners===void 0)return this;let i=this._listeners;if(i[e]===void 0)return this;let a=i[e].indexOf(t);return a!==-1&&i[e].splice(a,1),this}dispatchEvent(e){if(this._listeners===void 0)return this;let i=this._listeners[e.type];if(i!==void 0){e.target=this;for(let a=0,r=i.length;a.499&&(i=2*Math.atan2(s,c),a=Math.PI/2,r=0),u<-.499&&(i=-2*Math.atan2(s,c),a=-Math.PI/2,r=0),i===void 0){let f=s*s,h=o*o,m=l*l;i=Math.atan2(2*o*c-2*s*l,1-2*h-2*m),a=Math.asin(2*u),r=Math.atan2(2*s*c-2*o*l,1-2*f-2*m)}break;default:throw new Error("Euler order "+t+" not supported yet.")}e.y=i,e.z=a,e.x=r}setFromEuler(e,t,i,a="XYZ"){let r=Math.cos(e/2),s=Math.cos(t/2),o=Math.cos(i/2),l=Math.sin(e/2),c=Math.sin(t/2),u=Math.sin(i/2);return a==="XYZ"?(this.x=l*s*o+r*c*u,this.y=r*c*o-l*s*u,this.z=r*s*u+l*c*o,this.w=r*s*o-l*c*u):a==="YXZ"?(this.x=l*s*o+r*c*u,this.y=r*c*o-l*s*u,this.z=r*s*u-l*c*o,this.w=r*s*o+l*c*u):a==="ZXY"?(this.x=l*s*o-r*c*u,this.y=r*c*o+l*s*u,this.z=r*s*u+l*c*o,this.w=r*s*o-l*c*u):a==="ZYX"?(this.x=l*s*o-r*c*u,this.y=r*c*o+l*s*u,this.z=r*s*u-l*c*o,this.w=r*s*o+l*c*u):a==="YZX"?(this.x=l*s*o+r*c*u,this.y=r*c*o+l*s*u,this.z=r*s*u-l*c*o,this.w=r*s*o-l*c*u):a==="XZY"&&(this.x=l*s*o-r*c*u,this.y=r*c*o-l*s*u,this.z=r*s*u+l*c*o,this.w=r*s*o+l*c*u),this}clone(){return new O1(this.x,this.y,this.z,this.w)}slerp(e,t,i=new O1){let a=this.x,r=this.y,s=this.z,o=this.w,l=e.x,c=e.y,u=e.z,f=e.w,h,m,v,g,x;return m=a*l+r*c+s*u+o*f,m<0&&(m=-m,l=-l,c=-c,u=-u,f=-f),1-m>1e-6?(h=Math.acos(m),v=Math.sin(h),g=Math.sin((1-t)*h)/v,x=Math.sin(t*h)/v):(g=1-t,x=t),i.x=g*a+x*l,i.y=g*r+x*c,i.z=g*s+x*u,i.w=g*o+x*f,i}integrate(e,t,i,a=new O1){let r=e.x*i.x,s=e.y*i.y,o=e.z*i.z,l=this.x,c=this.y,u=this.z,f=this.w,h=t*.5;return a.x+=h*(r*f+s*u-o*c),a.y+=h*(s*f+o*l-r*u),a.z+=h*(o*f+r*c-s*l),a.w+=h*(-r*l-s*c-o*u),a}},qc=new y,Wc=new y,jc={SPHERE:1,PLANE:2,BOX:4,COMPOUND:8,CONVEXPOLYHEDRON:16,HEIGHTFIELD:32,PARTICLE:64,CYLINDER:128,TRIMESH:256},c1=class{constructor(e={}){this.id=void 0,this.type=void 0,this.boundingSphereRadius=void 0,this.collisionResponse=void 0,this.collisionFilterGroup=void 0,this.collisionFilterMask=void 0,this.material=void 0,this.body=void 0,this.id=c1.idCounter++,this.type=e.type||0,this.boundingSphereRadius=0,this.collisionResponse=e.collisionResponse?e.collisionResponse:!0,this.collisionFilterGroup=e.collisionFilterGroup!==void 0?e.collisionFilterGroup:1,this.collisionFilterMask=e.collisionFilterMask!==void 0?e.collisionFilterMask:-1,this.material=e.material?e.material:null,this.body=null}updateBoundingSphereRadius(){throw"computeBoundingSphereRadius() not implemented for shape type "+this.type}volume(){throw"volume() not implemented for shape type "+this.type}calculateLocalInertia(e,t){throw"calculateLocalInertia() not implemented for shape type "+this.type}calculateWorldAABB(e,t,i,a){throw"calculateWorldAABB() not implemented for shape type "+this.type}};c1.idCounter=0;c1.types=jc;var N1=class{constructor(e={}){this.position=void 0,this.quaternion=void 0,this.position=new y,this.quaternion=new O1,e.position&&this.position.copy(e.position),e.quaternion&&this.quaternion.copy(e.quaternion)}pointToLocal(e,t){return N1.pointToLocalFrame(this.position,this.quaternion,e,t)}pointToWorld(e,t){return N1.pointToWorldFrame(this.position,this.quaternion,e,t)}vectorToWorldFrame(e,t=new y){return this.quaternion.vmult(e,t),t}static pointToLocalFrame(e,t,i,a=new y){return i.vsub(e,a),t.conjugate(Ea),Ea.vmult(a,a),a}static pointToWorldFrame(e,t,i,a=new y){return t.vmult(i,a),a.vadd(e,a),a}static vectorToWorldFrame(e,t,i=new y){return e.vmult(t,i),i}static vectorToLocalFrame(e,t,i,a=new y){return t.w*=-1,t.vmult(i,a),t.w*=-1,a}},Ea=new O1,Je=class extends c1{constructor(e={}){let{vertices:t=[],faces:i=[],normals:a=[],axes:r,boundingSphereRadius:s}=e;super({type:c1.types.CONVEXPOLYHEDRON});this.vertices=void 0,this.faces=void 0,this.faceNormals=void 0,this.worldVertices=void 0,this.worldVerticesNeedsUpdate=void 0,this.worldFaceNormals=void 0,this.worldFaceNormalsNeedsUpdate=void 0,this.uniqueAxes=void 0,this.uniqueEdges=void 0,this.vertices=t,this.faces=i,this.faceNormals=a,this.faceNormals.length===0&&this.computeNormals(),s?this.boundingSphereRadius=s:this.updateBoundingSphereRadius(),this.worldVertices=[],this.worldVerticesNeedsUpdate=!0,this.worldFaceNormals=[],this.worldFaceNormalsNeedsUpdate=!0,this.uniqueAxes=r?r.slice():null,this.uniqueEdges=[],this.computeEdges()}computeEdges(){let e=this.faces,t=this.vertices,i=this.uniqueEdges;i.length=0;let a=new y;for(let r=0;r!==e.length;r++){let s=e[r],o=s.length;for(let l=0;l!==o;l++){let c=(l+1)%o;t[s[l]].vsub(t[s[c]],a),a.normalize();let u=!1;for(let f=0;f!==i.length;f++)if(i[f].almostEquals(a)||i[f].almostEquals(a)){u=!0;break}u||i.push(a.clone())}}}computeNormals(){this.faceNormals.length=this.faces.length;for(let e=0;eh&&(h=g,f=v)}let m=[];for(let v=0;v=0&&this.clipFaceAgainstHull(s,e,t,m,o,l,c)}findSeparatingAxis(e,t,i,a,r,s,o,l){let c=new y,u=new y,f=new y,h=new y,m=new y,v=new y,g=Number.MAX_VALUE,x=this;if(x.uniqueAxes)for(let p=0;p!==x.uniqueAxes.length;p++){i.vmult(x.uniqueAxes[p],c);let d=x.testSepAxis(c,e,t,i,a,r);if(d===!1)return!1;d0&&s.negate(s),!0}testSepAxis(e,t,i,a,r,s){let o=this;Je.project(o,e,i,a,B0),Je.project(t,e,r,s,P0);let l=B0[0],c=B0[1],u=P0[0],f=P0[1];if(l0?1/t:0,this.material=e.material||null,this.linearDamping=typeof e.linearDamping=="number"?e.linearDamping:.01,this.type=t<=0?i1.STATIC:i1.DYNAMIC,typeof e.type==typeof i1.STATIC&&(this.type=e.type),this.allowSleep=typeof e.allowSleep!="undefined"?e.allowSleep:!0,this.sleepState=i1.AWAKE,this.sleepSpeedLimit=typeof e.sleepSpeedLimit!="undefined"?e.sleepSpeedLimit:.1,this.sleepTimeLimit=typeof e.sleepTimeLimit!="undefined"?e.sleepTimeLimit:1,this.timeLastSleepy=0,this.wakeUpAfterNarrowphase=!1,this.torque=new y,this.quaternion=new O1,this.initQuaternion=new O1,this.previousQuaternion=new O1,this.interpolatedQuaternion=new O1,e.quaternion&&(this.quaternion.copy(e.quaternion),this.initQuaternion.copy(e.quaternion),this.previousQuaternion.copy(e.quaternion),this.interpolatedQuaternion.copy(e.quaternion)),this.angularVelocity=new y,e.angularVelocity&&this.angularVelocity.copy(e.angularVelocity),this.initAngularVelocity=new y,this.shapes=[],this.shapeOffsets=[],this.shapeOrientations=[],this.inertia=new y,this.invInertia=new y,this.invInertiaWorld=new w2,this.invMassSolve=0,this.invInertiaSolve=new y,this.invInertiaWorldSolve=new w2,this.fixedRotation=typeof e.fixedRotation!="undefined"?e.fixedRotation:!1,this.angularDamping=typeof e.angularDamping!="undefined"?e.angularDamping:.01,this.linearFactor=new y(1,1,1),e.linearFactor&&this.linearFactor.copy(e.linearFactor),this.angularFactor=new y(1,1,1),e.angularFactor&&this.angularFactor.copy(e.angularFactor),this.aabb=new _2,this.aabbNeedsUpdate=!0,this.boundingRadius=0,this.wlambda=new y,this.isTrigger=Boolean(e.isTrigger),e.shape&&this.addShape(e.shape),this.updateMassProperties()}wakeUp(){let e=this.sleepState;this.sleepState=i1.AWAKE,this.wakeUpAfterNarrowphase=!1,e===i1.SLEEPING&&this.dispatchEvent(i1.wakeupEvent)}sleep(){this.sleepState=i1.SLEEPING,this.velocity.set(0,0,0),this.angularVelocity.set(0,0,0),this.wakeUpAfterNarrowphase=!1}sleepTick(e){if(this.allowSleep){let t=this.sleepState,i=this.velocity.lengthSquared()+this.angularVelocity.lengthSquared(),a=this.sleepSpeedLimit**2;t===i1.AWAKE&&ia?this.wakeUp():t===i1.SLEEPY&&e-this.timeLastSleepy>this.sleepTimeLimit&&(this.sleep(),this.dispatchEvent(i1.sleepEvent))}}updateSolveMassProperties(){this.sleepState===i1.SLEEPING||this.type===i1.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve.setZero(),this.invInertiaWorldSolve.setZero()):(this.invMassSolve=this.invMass,this.invInertiaSolve.copy(this.invInertia),this.invInertiaWorldSolve.copy(this.invInertiaWorld))}pointToLocalFrame(e,t=new y){return e.vsub(this.position,t),this.quaternion.conjugate().vmult(t,t),t}vectorToLocalFrame(e,t=new y){return this.quaternion.conjugate().vmult(e,t),t}pointToWorldFrame(e,t=new y){return this.quaternion.vmult(e,t),t.vadd(this.position,t),t}vectorToWorldFrame(e,t=new y){return this.quaternion.vmult(e,t),t}addShape(e,t,i){let a=new y,r=new O1;return t&&a.copy(t),i&&r.copy(i),this.shapes.push(e),this.shapeOffsets.push(a),this.shapeOrientations.push(r),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0,e.body=this,this}removeShape(e){let t=this.shapes.indexOf(e);return t===-1?(console.warn("Shape does not belong to the body"),this):(this.shapes.splice(t,1),this.shapeOffsets.splice(t,1),this.shapeOrientations.splice(t,1),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0,e.body=null,this)}updateBoundingRadius(){let e=this.shapes,t=this.shapeOffsets,i=e.length,a=0;for(let r=0;r!==i;r++){let s=e[r];s.updateBoundingSphereRadius();let o=t[r].length(),l=s.boundingSphereRadius;o+l>a&&(a=o+l)}this.boundingRadius=a}updateAABB(){let e=this.shapes,t=this.shapeOffsets,i=this.shapeOrientations,a=e.length,r=Yc,s=$c,o=this.quaternion,l=this.aabb,c=Kc;for(let u=0;u!==a;u++){let f=e[u];o.vmult(t[u],r),r.vadd(this.position,r),o.mult(i[u],s),f.calculateWorldAABB(r,s,c.lowerBound,c.upperBound),u===0?l.copy(c):l.extend(c)}this.aabbNeedsUpdate=!1}updateInertiaWorld(e){let t=this.invInertia;if(!(t.x===t.y&&t.y===t.z&&!e)){let i=Jc,a=Qc;i.setRotationFromQuaternion(this.quaternion),i.transpose(a),i.scale(t,i),i.mmult(a,this.invInertiaWorld)}}applyForce(e,t=new y){if(this.type!==i1.DYNAMIC)return;this.sleepState===i1.SLEEPING&&this.wakeUp();let i=e7;t.cross(e,i),this.force.vadd(e,this.force),this.torque.vadd(i,this.torque)}applyLocalForce(e,t=new y){if(this.type!==i1.DYNAMIC)return;let i=t7,a=i7;this.vectorToWorldFrame(e,i),this.vectorToWorldFrame(t,a),this.applyForce(i,a)}applyTorque(e){this.type===i1.DYNAMIC&&(this.sleepState===i1.SLEEPING&&this.wakeUp(),this.torque.vadd(e,this.torque))}applyImpulse(e,t=new y){if(this.type!==i1.DYNAMIC)return;this.sleepState===i1.SLEEPING&&this.wakeUp();let i=t,a=a7;a.copy(e),a.scale(this.invMass,a),this.velocity.vadd(a,this.velocity);let r=r7;i.cross(e,r),this.invInertiaWorld.vmult(r,r),this.angularVelocity.vadd(r,this.angularVelocity)}applyLocalImpulse(e,t=new y){if(this.type!==i1.DYNAMIC)return;let i=n7,a=s7;this.vectorToWorldFrame(e,i),this.vectorToWorldFrame(t,a),this.applyImpulse(i,a)}updateMassProperties(){let e=o7;this.invMass=this.mass>0?1/this.mass:0;let t=this.inertia,i=this.fixedRotation;this.updateAABB(),e.set((this.aabb.upperBound.x-this.aabb.lowerBound.x)/2,(this.aabb.upperBound.y-this.aabb.lowerBound.y)/2,(this.aabb.upperBound.z-this.aabb.lowerBound.z)/2),u6.calculateInertia(e,this.mass,t),this.invInertia.set(t.x>0&&!i?1/t.x:0,t.y>0&&!i?1/t.y:0,t.z>0&&!i?1/t.z:0),this.updateInertiaWorld(!0)}getVelocityAtWorldPoint(e,t){let i=new y;return e.vsub(this.position,i),this.angularVelocity.cross(i,t),this.velocity.vadd(t,t),t}integrate(e,t,i){if(this.previousPosition.copy(this.position),this.previousQuaternion.copy(this.quaternion),!(this.type===i1.DYNAMIC||this.type===i1.KINEMATIC)||this.sleepState===i1.SLEEPING)return;let a=this.velocity,r=this.angularVelocity,s=this.position,o=this.force,l=this.torque,c=this.quaternion,u=this.invMass,f=this.invInertiaWorld,h=this.linearFactor,m=u*e;a.x+=o.x*m*h.x,a.y+=o.y*m*h.y,a.z+=o.z*m*h.z;let v=f.elements,g=this.angularFactor,x=l.x*g.x,p=l.y*g.y,d=l.z*g.z;r.x+=e*(v[0]*x+v[1]*p+v[2]*d),r.y+=e*(v[3]*x+v[4]*p+v[5]*d),r.z+=e*(v[6]*x+v[7]*p+v[8]*d),s.x+=a.x*e,s.y+=a.y*e,s.z+=a.z*e,c.integrate(this.angularVelocity,e,this.angularFactor,c),t&&(i?c.normalizeFast():c.normalize()),this.aabbNeedsUpdate=!0,this.updateInertiaWorld()}};i1.idCounter=0;i1.COLLIDE_EVENT_NAME="collide";i1.DYNAMIC=I0.DYNAMIC;i1.STATIC=I0.STATIC;i1.KINEMATIC=I0.KINEMATIC;i1.AWAKE=k0.AWAKE;i1.SLEEPY=k0.SLEEPY;i1.SLEEPING=k0.SLEEPING;i1.wakeupEvent={type:"wakeup"};i1.sleepyEvent={type:"sleepy"};i1.sleepEvent={type:"sleep"};var Yc=new y,$c=new O1,Kc=new _2,Jc=new w2,Qc=new w2,e7=new y,t7=new y,i7=new y,a7=new y,r7=new y,n7=new y,s7=new y,o7=new y,La=class{constructor(){this.world=void 0,this.useBoundingBoxes=void 0,this.dirty=void 0,this.world=null,this.useBoundingBoxes=!1,this.dirty=!0}collisionPairs(e,t,i){throw new Error("collisionPairs not implemented for this BroadPhase class!")}needBroadphaseCollision(e,t){return!((e.collisionFilterGroup&t.collisionFilterMask)==0||(t.collisionFilterGroup&e.collisionFilterMask)==0||((e.type&i1.STATIC)!=0||e.sleepState===i1.SLEEPING)&&((t.type&i1.STATIC)!=0||t.sleepState===i1.SLEEPING))}intersectionTest(e,t,i,a){this.useBoundingBoxes?this.doBoundingBoxBroadphase(e,t,i,a):this.doBoundingSphereBroadphase(e,t,i,a)}doBoundingSphereBroadphase(e,t,i,a){let r=c7;t.position.vsub(e.position,r);let s=(e.boundingRadius+t.boundingRadius)**2;r.lengthSquared()i.lengthSquared()}aabbQuery(e,t,i){return console.warn(".aabbQuery is not implemented in this Broadphase subclass."),[]}},c7=new y,l7={keys:[]},u7=[],h7=[];var uf=new y,h6=class extends La{constructor(){super()}collisionPairs(e,t,i){let a=e.bodies,r=a.length,s,o;for(let l=0;l!==r;l++)for(let c=0;c!==l;c++)s=a[l],o=a[c],!!this.needBroadphaseCollision(s,o)&&this.intersectionTest(s,o,t,i)}aabbQuery(e,t,i=[]){for(let a=0;a{}}intersectWorld(e,t){return this.mode=t.mode||J1.ANY,this.result=t.result||new f6,this.skipBackfaces=!!t.skipBackfaces,this.collisionFilterMask=typeof t.collisionFilterMask!="undefined"?t.collisionFilterMask:-1,this.collisionFilterGroup=typeof t.collisionFilterGroup!="undefined"?t.collisionFilterGroup:-1,this.checkCollisionResponse=typeof t.checkCollisionResponse!="undefined"?t.checkCollisionResponse:!0,t.from&&this.from.copy(t.from),t.to&&this.to.copy(t.to),this.callback=t.callback||(()=>{}),this.hasHit=!1,this.result.reset(),this.updateDirection(),this.getAABB(Ba),O0.length=0,e.broadphase.aabbQuery(e,Ba,O0),this.intersectBodies(O0),this.hasHit}intersectBody(e,t){t&&(this.result=t,this.updateDirection());let i=this.checkCollisionResponse;if(i&&!e.collisionResponse||(this.collisionFilterGroup&e.collisionFilterMask)==0||(e.collisionFilterGroup&this.collisionFilterMask)==0)return;let a=f7,r=d7;for(let s=0,o=e.shapes.length;se.boundingSphereRadius)return;let o=this[e.type];o&&o.call(this,e,t,i,a,e)}_intersectBox(e,t,i,a,r){return this._intersectConvex(e.convexPolyhedronRepresentation,t,i,a,r)}_intersectPlane(e,t,i,a,r){let s=this.from,o=this.to,l=this.direction,c=new y(0,0,1);t.vmult(c,c);let u=new y;s.vsub(i,u);let f=u.dot(c);o.vsub(i,u);let h=u.dot(c);if(f*h>0||s.distanceTo(o)=0&&g<=1&&(s.lerp(o,g,m),m.vsub(i,v),v.normalize(),this.reportIntersection(v,m,r,a,-1)),this.result.shouldStop)return;x>=0&&x<=1&&(s.lerp(o,x,m),m.vsub(i,v),v.normalize(),this.reportIntersection(v,m,r,a,-1))}}_intersectConvex(e,t,i,a,r,s){let o=x7,l=Ia,c=s&&s.faceList||null,u=e.faces,f=e.vertices,h=e.faceNormals,m=this.direction,v=this.from,g=this.to,x=v.distanceTo(g),p=c?c.length:u.length,d=this.result;for(let z=0;!d.shouldStop&&zx||this.reportIntersection(o,S2,r,a,b)}}}}_intersectTrimesh(e,t,i,a,r,s){let o=M7,l=w7,c=_7,u=Ia,f=b7,h=y7,m=C7,v=A7,g=z7,x=e.indices;e.vertices;let p=this.from,d=this.to,z=this.direction;c.position.copy(i),c.quaternion.copy(t),N1.vectorToLocalFrame(i,t,z,f),N1.pointToLocalFrame(i,t,p,h),N1.pointToLocalFrame(i,t,d,m),m.x*=e.scale.x,m.y*=e.scale.y,m.z*=e.scale.z,h.x*=e.scale.x,h.y*=e.scale.y,h.z*=e.scale.z,m.vsub(h,f),f.normalize();let b=h.distanceSquared(m);e.tree.rayQuery(this,c,l);for(let C=0,E=l.length;!this.result.shouldStop&&C!==E;C++){let T=l[C];e.getNormal(T,o),e.getVertex(x[T*3],Y2),Y2.vsub(h,u);let _=f.dot(o),P=o.dot(u)/_;if(P<0)continue;f.scale(P,S2),S2.vadd(h,S2),e.getVertex(x[T*3+1],me),e.getVertex(x[T*3+2],ve);let F=S2.distanceSquared(h);!(J1.pointInTriangle(S2,me,Y2,ve)||J1.pointInTriangle(S2,Y2,me,ve))||F>b||(N1.vectorToWorldFrame(t,o,g),N1.pointToWorldFrame(i,t,S2,v),this.reportIntersection(g,v,r,a,T))}l.length=0}reportIntersection(e,t,i,a,r){let s=this.from,o=this.to,l=s.distanceTo(t),c=this.result;if(!(this.skipBackfaces&&e.dot(this.direction)>0))switch(c.hitFaceIndex=typeof r!="undefined"?r:-1,this.mode){case J1.ALL:this.hasHit=!0,c.set(s,o,e,t,i,a,l),c.hasHit=!0,this.callback(c);break;case J1.CLOSEST:(l=0&&(f=r*c-s*o)>=0&&u+fT.maxForce&&(m=T.maxForce-x),z[E]+=m,v+=m>0?m:-m,T.addToWlambda(m)}if(v*ve;)t.pop();for(;t.length=0&&u.restitution>=0&&(o.restitution=c.restitution*u.restitution),o.si=r||i,o.sj=s||a,o}createFrictionEquationsFromContact(e,t){let i=e.bi,a=e.bj,r=e.si,s=e.sj,o=this.world,l=this.currentContactMaterial,c=l.friction,u=r.material||i.material,f=s.material||a.material;if(u&&f&&u.friction>=0&&f.friction>=0&&(c=u.friction*f.friction),c>0){let h=c*o.gravity.length(),m=i.invMass+a.invMass;m>0&&(m=1/m);let v=this.frictionEquationPool,g=v.length?v.pop():new j0(i,a,h*m),x=v.length?v.pop():new j0(i,a,h*m);return g.bi=x.bi=i,g.bj=x.bj=a,g.minForce=x.minForce=-h*m,g.maxForce=x.maxForce=h*m,g.ri.copy(e.ri),g.rj.copy(e.rj),x.ri.copy(e.ri),x.rj.copy(e.rj),e.ni.tangents(g.t,x.t),g.setSpookParams(l.frictionEquationStiffness,l.frictionEquationRelaxation,o.dt),x.setSpookParams(l.frictionEquationStiffness,l.frictionEquationRelaxation,o.dt),g.enabled=x.enabled=e.enabled,t.push(g,x),!0}return!1}createFrictionFromAverage(e){let t=this.result[this.result.length-1];if(!this.createFrictionEquationsFromContact(t,this.frictionResult)||e===1)return;let i=this.frictionResult[this.frictionResult.length-2],a=this.frictionResult[this.frictionResult.length-1];M4.setZero(),I4.setZero(),k4.setZero();let r=t.bi;t.bj;for(let o=0;o!==e;o++)t=this.result[this.result.length-1-o],t.bi!==r?(M4.vadd(t.ni,M4),I4.vadd(t.ri,I4),k4.vadd(t.rj,k4)):(M4.vsub(t.ni,M4),I4.vadd(t.rj,I4),k4.vadd(t.ri,k4));let s=1/e;I4.scale(s,i.ri),k4.scale(s,i.rj),a.ri.copy(i.ri),a.rj.copy(i.rj),M4.normalize(),M4.tangents(i.t,a.t)}getContacts(e,t,i,a,r,s,o){this.contactPointPool=r,this.frictionEquationPool=o,this.result=a,this.frictionResult=s;let l=q7,c=W7,u=O7,f=G7;for(let h=0,m=e.length;h!==m;h++){let v=e[h],g=t[h],x=null;v.material&&g.material&&(x=i.getContactMaterial(v.material,g.material)||null);let p=v.type&i1.KINEMATIC&&g.type&i1.STATIC||v.type&i1.STATIC&&g.type&i1.KINEMATIC||v.type&i1.KINEMATIC&&g.type&i1.KINEMATIC;for(let d=0;dz.boundingSphereRadius+C.boundingSphereRadius)continue;let E=null;z.material&&C.material&&(E=i.getContactMaterial(z.material,C.material)||null),this.currentContactMaterial=E||x||i.defaultContactMaterial;let T=z.type|C.type,_=this[T];if(_){let P=!1;z.type0){let W=ml,X=vl;W.copy(m[(L+1)%3]),X.copy(m[(L+2)%3]);let Q=W.length(),a1=X.length();W.normalize(),X.normalize();let B=x6.dot(W),M1=x6.dot(X);if(B-Q&&M1-a1){let u1=Math.abs(O-Z-v);if((T===null||u1e.boundingSphereRadius+t.boundingSphereRadius)&&e.findSeparatingAxis(t,i,r,a,s,v,h,m)){let g=[],x=Bl;e.clipAgainstHull(i,r,t,a,s,v,-100,100,g);let p=0;for(let d=0;d!==g.length;d++){if(f)return!0;let z=this.createContactEquation(o,l,e,t,c,u),b=z.ri,C=z.rj;v.negate(z.ni),g[d].normal.negate(x),x.scale(g[d].depth,x),g[d].point.vadd(x,b),C.copy(g[d].point),b.vsub(i,b),C.vsub(a,C),b.vadd(i,b),b.vsub(o.position,b),C.vadd(a,C),C.vsub(l.position,C),this.result.push(z),p++,this.enableFrictionReduction||this.createFrictionEquationsFromContact(z,this.frictionResult)}this.enableFrictionReduction&&p&&this.createFrictionFromAverage(p)}}sphereConvex(e,t,i,a,r,s,o,l,c,u,f){let h=this.v3pool;i.vsub(a,Cl);let m=t.faceNormals,v=t.faces,g=t.vertices,x=e.radius,p=!1;for(let d=0;d!==g.length;d++){let z=g[d],b=_l;s.vmult(z,b),a.vadd(b,b);let C=wl;if(b.vsub(i,C),C.lengthSquared()0){let D=[];for(let A=0,H=C.length;A!==H;A++){let V=h.get();s.vmult(g[C[A]],V),a.vadd(V,V),D.push(V)}if(dl(D,E,i)){if(f)return!0;p=!0;let A=this.createContactEquation(o,l,e,t,c,u);E.scale(-x,A.ri),E.negate(A.ni);let H=h.get();E.scale(-F,H);let V=h.get();E.scale(-x,V),i.vsub(a,A.rj),A.rj.vadd(V,A.rj),A.rj.vadd(H,A.rj),A.rj.vadd(a,A.rj),A.rj.vsub(l.position,A.rj),A.ri.vadd(i,A.ri),A.ri.vsub(o.position,A.ri),h.release(H),h.release(V),this.result.push(A),this.createFrictionEquationsFromContact(A,this.frictionResult);for(let L=0,N=D.length;L!==N;L++)h.release(D[L]);return}else for(let A=0;A!==C.length;A++){let H=h.get(),V=h.get();s.vmult(g[C[(A+1)%C.length]],H),s.vmult(g[C[(A+2)%C.length]],V),a.vadd(H,H),a.vadd(V,V);let L=zl;V.vsub(H,L);let N=Al;L.unit(N);let U=h.get(),Z=h.get();i.vsub(H,Z);let O=Z.dot(N);N.scale(O,U),U.vadd(H,U);let W=h.get();if(U.vsub(i,W),O>0&&O*Oh.length||z>h[0].length)return;p<0&&(p=0),d<0&&(d=0),z<0&&(z=0),b<0&&(b=0),p>=h.length&&(p=h.length-1),d>=h.length&&(d=h.length-1),b>=h[0].length&&(b=h[0].length-1),z>=h[0].length&&(z=h[0].length-1);let C=[];t.getRectMinMax(p,z,d,b,C);let E=C[0],T=C[1];if(x.z-m>T||x.z+m2)return}}boxHeightfield(e,t,i,a,r,s,o,l,c,u,f){return e.convexPolyhedronRepresentation.material=e.material,e.convexPolyhedronRepresentation.collisionResponse=e.collisionResponse,this.convexHeightfield(e.convexPolyhedronRepresentation,t,i,a,r,s,o,l,e,t,f)}convexHeightfield(e,t,i,a,r,s,o,l,c,u,f){let h=t.data,m=t.elementSize,v=e.boundingSphereRadius,g=jl,x=Xl,p=Wl;N1.pointToLocalFrame(a,s,i,p);let d=Math.floor((p.x-v)/m)-1,z=Math.ceil((p.x+v)/m)+1,b=Math.floor((p.y-v)/m)-1,C=Math.ceil((p.y+v)/m)+1;if(z<0||C<0||d>h.length||b>h[0].length)return;d<0&&(d=0),z<0&&(z=0),b<0&&(b=0),C<0&&(C=0),d>=h.length&&(d=h.length-1),z>=h.length&&(z=h.length-1),C>=h[0].length&&(C=h[0].length-1),b>=h[0].length&&(b=h[0].length-1);let E=[];t.getRectMinMax(d,b,z,C,E);let T=E[0],_=E[1];if(!(p.z-v>_||p.z+v0&&V<0&&(x.vsub(h,p),g.copy(v),g.normalize(),L=p.dot(g),g.scale(L,p),p.vadd(h,p),p.distanceTo(x)0&&i===!0||u<=0&&i===!1){i===null&&(i=u>0);continue}else return!1}return!0}var x6=new y,pl=new y,ml=new y,vl=new y,gl=[new y,new y,new y,new y,new y,new y],xl=new y,Ml=new y,bl=new y,yl=new y,Cl=new y,zl=new y,Al=new y,wl=new y,_l=new y,Sl=new y,El=new y,Ll=new y,Dl=new y,Tl=new y,Hl=new y,Vl=new y,Nl=new y,Rl=new y,Fl=new y,Bl=new y,Pl=new y,Il=new y,kl=new y,Ul=new y,Cr=new O1,Ol=new y,Gl=new y,zr=new y,ql=new y,Wl=new y,jl=new y,Xl=[0],Zl=new y,Yl=new y,X0=class{constructor(){this.current=void 0,this.previous=void 0,this.current=[],this.previous=[]}getKey(e,t){if(ta[r];)r++;if(i!==a[r]){for(let s=a.length-1;s>=r;s--)a[s+1]=a[s];a[r]=i}}tick(){let e=this.current;this.current=this.previous,this.previous=e,this.current.length=0}getDiff(e,t){let i=this.current,a=this.previous,r=i.length,s=a.length,o=0;for(let l=0;la[o];)o++;c=u===a[o],c||Ar(e,u)}o=0;for(let l=0;li[o];)o++;c=i[o]===u,c||Ar(t,u)}}};function Ar(n,e){n.push((e&4294901760)>>16,e&65535)}var wr=class{constructor(){this.data={keys:[]}}get(e,t){if(e>t){let i=t;t=e,e=i}return this.data[e+"-"+t]}set(e,t,i){if(e>t){let r=t;t=e,e=r}let a=e+"-"+t;this.get(e,t)||this.data.keys.push(a),this.data[a]=i}reset(){let e=this.data,t=e.keys;for(;t.length>0;){let i=t.pop();delete e[i]}}},Z0=class extends F0{constructor(e={}){super();this.dt=void 0,this.allowSleep=void 0,this.contacts=void 0,this.frictionEquations=void 0,this.quatNormalizeSkip=void 0,this.quatNormalizeFast=void 0,this.time=void 0,this.stepnumber=void 0,this.default_dt=void 0,this.nextId=void 0,this.gravity=void 0,this.broadphase=void 0,this.bodies=void 0,this.hasActiveBodies=void 0,this.solver=void 0,this.constraints=void 0,this.narrowphase=void 0,this.collisionMatrix=void 0,this.collisionMatrixPrevious=void 0,this.bodyOverlapKeeper=void 0,this.shapeOverlapKeeper=void 0,this.materials=void 0,this.contactmaterials=void 0,this.contactMaterialTable=void 0,this.defaultMaterial=void 0,this.defaultContactMaterial=void 0,this.doProfiling=void 0,this.profile=void 0,this.accumulator=void 0,this.subsystems=void 0,this.addBodyEvent=void 0,this.removeBodyEvent=void 0,this.idToBodyMap=void 0,this.dt=-1,this.allowSleep=!!e.allowSleep,this.contacts=[],this.frictionEquations=[],this.quatNormalizeSkip=e.quatNormalizeSkip!==void 0?e.quatNormalizeSkip:0,this.quatNormalizeFast=e.quatNormalizeFast!==void 0?e.quatNormalizeFast:!1,this.time=0,this.stepnumber=0,this.default_dt=1/60,this.nextId=0,this.gravity=new y,e.gravity&&this.gravity.copy(e.gravity),this.broadphase=e.broadphase!==void 0?e.broadphase:new h6,this.bodies=[],this.hasActiveBodies=!1,this.solver=e.solver!==void 0?e.solver:new ja,this.constraints=[],this.narrowphase=new br(this),this.collisionMatrix=new R0,this.collisionMatrixPrevious=new R0,this.bodyOverlapKeeper=new X0,this.shapeOverlapKeeper=new X0,this.materials=[],this.contactmaterials=[],this.contactMaterialTable=new wr,this.defaultMaterial=new He("default"),this.defaultContactMaterial=new Te(this.defaultMaterial,this.defaultMaterial,{friction:.3,restitution:0}),this.doProfiling=!1,this.profile={solve:0,makeContactConstraints:0,broadphase:0,integrate:0,narrowphase:0},this.accumulator=0,this.subsystems=[],this.addBodyEvent={type:"addBody",body:null},this.removeBodyEvent={type:"removeBody",body:null},this.idToBodyMap={},this.broadphase.setWorld(this)}getContactMaterial(e,t){return this.contactMaterialTable.get(e.id,t.id)}numObjects(){return this.bodies.length}collisionMatrixTick(){let e=this.collisionMatrixPrevious;this.collisionMatrixPrevious=this.collisionMatrix,this.collisionMatrix=e,this.collisionMatrix.reset(),this.bodyOverlapKeeper.tick(),this.shapeOverlapKeeper.tick()}addConstraint(e){this.constraints.push(e)}removeConstraint(e){let t=this.constraints.indexOf(e);t!==-1&&this.constraints.splice(t,1)}rayTest(e,t,i){i instanceof f6?this.raycastClosest(e,t,{skipBackfaces:!0},i):this.raycastAll(e,t,{skipBackfaces:!0},i)}raycastAll(e,t,i={},a){return i.mode=J1.ALL,i.from=e,i.to=t,i.callback=a,Y0.intersectWorld(this,i)}raycastAny(e,t,i={},a){return i.mode=J1.ANY,i.from=e,i.to=t,i.result=a,Y0.intersectWorld(this,i)}raycastClosest(e,t,i={},a){return i.mode=J1.CLOSEST,i.from=e,i.to=t,i.result=a,Y0.intersectWorld(this,i)}addBody(e){this.bodies.includes(e)||(e.index=this.bodies.length,this.bodies.push(e),e.world=this,e.initPosition.copy(e.position),e.initVelocity.copy(e.velocity),e.timeLastSleepy=this.time,e instanceof i1&&(e.initAngularVelocity.copy(e.angularVelocity),e.initQuaternion.copy(e.quaternion)),this.collisionMatrix.setNumObjects(this.bodies.length),this.addBodyEvent.body=e,this.idToBodyMap[e.id]=e,this.dispatchEvent(this.addBodyEvent))}removeBody(e){e.world=null;let t=this.bodies.length-1,i=this.bodies,a=i.indexOf(e);if(a!==-1){i.splice(a,1);for(let r=0;r!==i.length;r++)i[r].index=r;this.collisionMatrix.setNumObjects(t),this.removeBodyEvent.body=e,delete this.idToBodyMap[e.id],this.dispatchEvent(this.removeBodyEvent)}}getBodyById(e){return this.idToBodyMap[e]}getShapeById(e){let t=this.bodies;for(let i=0;i=e&&re*1e3)););this.accumulator=this.accumulator%e;let s=this.accumulator/e;for(let o=0;o!==this.bodies.length;o++){let l=this.bodies[o];l.previousPosition.lerp(l.position,s,l.interpolatedPosition),l.previousQuaternion.slerp(l.quaternion,s,l.interpolatedQuaternion),l.previousQuaternion.normalize()}this.time+=t}}internalStep(e){this.dt=e;let t=this.contacts,i=e9,a=t9,r=this.numObjects(),s=this.bodies,o=this.solver,l=this.gravity,c=this.doProfiling,u=this.profile,f=i1.DYNAMIC,h=-1/0,m=this.constraints,v=Ql;l.length();let g=l.x,x=l.y,p=l.z,d=0;for(c&&(h=s2.now()),d=0;d!==r;d++){let A=s[d];if(A.type===f){let H=A.force,V=A.mass;H.x+=V*g,H.y+=V*x,H.z+=V*p}}for(let A=0,H=this.subsystems.length;A!==H;A++)this.subsystems[A].update();c&&(h=s2.now()),i.length=0,a.length=0,this.broadphase.collisionPairs(this,i,a),c&&(u.broadphase=s2.now()-h);let z=m.length;for(d=0;d!==z;d++){let A=m[d];if(!A.collideConnected)for(let H=i.length-1;H>=0;H-=1)(A.bodyA===i[H]&&A.bodyB===a[H]||A.bodyB===i[H]&&A.bodyA===a[H])&&(i.splice(H,1),a.splice(H,1))}this.collisionMatrixTick(),c&&(h=s2.now());let b=Jl,C=t.length;for(d=0;d!==C;d++)b.push(t[d]);t.length=0;let E=this.frictionEquations.length;for(d=0;d!==E;d++)v.push(this.frictionEquations[d]);for(this.frictionEquations.length=0,this.narrowphase.getContacts(i,a,this,t,b,this.frictionEquations,v),c&&(u.narrowphase=s2.now()-h),c&&(h=s2.now()),d=0;d=0&&L.material.friction>=0&&V.material.friction*L.material.friction,V.material.restitution>=0&&L.material.restitution>=0&&(H.restitution=V.material.restitution*L.material.restitution)),o.addEquation(H),V.allowSleep&&V.type===i1.DYNAMIC&&V.sleepState===i1.SLEEPING&&L.sleepState===i1.AWAKE&&L.type!==i1.STATIC){let O=L.velocity.lengthSquared()+L.angularVelocity.lengthSquared(),W=L.sleepSpeedLimit**2;O>=W*2&&(V.wakeUpAfterNarrowphase=!0)}if(L.allowSleep&&L.type===i1.DYNAMIC&&L.sleepState===i1.SLEEPING&&V.sleepState===i1.AWAKE&&V.type!==i1.STATIC){let O=V.velocity.lengthSquared()+V.angularVelocity.lengthSquared(),W=V.sleepSpeedLimit**2;O>=W*2&&(L.wakeUpAfterNarrowphase=!0)}this.collisionMatrix.set(V,L,!0),this.collisionMatrixPrevious.get(V,L)||(yt.body=L,yt.contact=H,V.dispatchEvent(yt),yt.body=V,L.dispatchEvent(yt)),this.bodyOverlapKeeper.set(V.id,L.id),this.shapeOverlapKeeper.set(N.id,U.id)}for(this.emitContactEvents(),c&&(u.makeContactConstraints=s2.now()-h,h=s2.now()),d=0;d!==r;d++){let A=s[d];A.wakeUpAfterNarrowphase&&(A.wakeUp(),A.wakeUpAfterNarrowphase=!1)}for(z=m.length,d=0;d!==z;d++){let A=m[d];A.update();for(let H=0,V=A.equations.length;H!==V;H++){let L=A.equations[H];o.addEquation(L)}}o.solve(e,this),c&&(u.solve=s2.now()-h),o.removeAllEquations();let _=Math.pow;for(d=0;d!==r;d++){let A=s[d];if(A.type&f){let H=_(1-A.linearDamping,e),V=A.velocity;V.scale(H,V);let L=A.angularVelocity;if(L){let N=_(1-A.angularDamping,e);L.scale(N,L)}}}for(this.dispatchEvent(Kl),d=0;d!==r;d++){let A=s[d];A.preStep&&A.preStep.call(A)}c&&(h=s2.now());let F=this.stepnumber%(this.quatNormalizeSkip+1)==0,M=this.quatNormalizeFast;for(d=0;d!==r;d++)s[d].integrate(e,F,M);for(this.clearForces(),this.broadphase.dirty=!0,c&&(u.integrate=s2.now()-h),this.stepnumber+=1,this.dispatchEvent($l),d=0;d!==r;d++){let A=s[d],H=A.postStep;H&&H.call(A)}let D=!0;if(this.allowSleep)for(D=!1,d=0;d!==r;d++){let A=s[d];A.sleepTick(this.time),A.sleepState!==i1.SLEEPING&&(D=!0)}this.hasActiveBodies=D}emitContactEvents(){let e=this.hasAnyEventListener("beginContact"),t=this.hasAnyEventListener("endContact");if((e||t)&&this.bodyOverlapKeeper.getDiff(Ne,Re),e){for(let r=0,s=Ne.length;rDate.now()-n}var $l={type:"postStep"},Kl={type:"preStep"},yt={type:i1.COLLIDE_EVENT_NAME,body:null,contact:null},Jl=[],Ql=[],e9=[],t9=[],Ne=[],Re=[],Ct={type:"beginContact",bodyA:null,bodyB:null},zt={type:"endContact",bodyA:null,bodyB:null},Fe={type:"beginShapeContact",bodyA:null,bodyB:null,shapeA:null,shapeB:null},Be={type:"endShapeContact",bodyA:null,bodyB:null,shapeA:null,shapeB:null};var q1=class{constructor(e=0,t=0,i=0,a=1){this.x=e,this.y=t,this.z=i,this.w=a}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,a){return this.x=e,this.y=t,this.z=i,this.w=a,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,i=this.y,a=this.z,r=this.w,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*a+s[12]*r,this.y=s[1]*t+s[5]*i+s[9]*a+s[13]*r,this.z=s[2]*t+s[6]*i+s[10]*a+s[14]*r,this.w=s[3]*t+s[7]*i+s[11]*a+s[15]*r,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,a,r,s=.01,o=.1,l=e.elements,c=l[0],u=l[4],f=l[8],h=l[1],m=l[5],v=l[9],g=l[2],x=l[6],p=l[10];if(Math.abs(u-h)b&&z>C?zC?b>8&255]+d2[n>>16&255]+d2[n>>24&255]+"-"+d2[e&255]+d2[e>>8&255]+"-"+d2[e>>16&15|64]+d2[e>>24&255]+"-"+d2[t&63|128]+d2[t>>8&255]+"-"+d2[t>>16&255]+d2[t>>24&255]+d2[i&255]+d2[i>>8&255]+d2[i>>16&255]+d2[i>>24&255]).toUpperCase()}function E2(n,e,t){return Math.max(e,Math.min(t,n))}function _r(n,e){return(n%e+e)%e}function b6(n,e,t){return(1-t)*n+t*e}function $0(n){return(n&n-1)==0&&n!==0}function Sr(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}var xe=class{constructor(e=0,t=0,i=0,a=1){this._x=e,this._y=t,this._z=i,this._w=a}static slerp(e,t,i,a){return console.warn("THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead."),i.slerpQuaternions(e,t,a)}static slerpFlat(e,t,i,a,r,s,o){let l=i[a+0],c=i[a+1],u=i[a+2],f=i[a+3],h=r[s+0],m=r[s+1],v=r[s+2],g=r[s+3];if(o===0){e[t+0]=l,e[t+1]=c,e[t+2]=u,e[t+3]=f;return}if(o===1){e[t+0]=h,e[t+1]=m,e[t+2]=v,e[t+3]=g;return}if(f!==g||l!==h||c!==m||u!==v){let x=1-o,p=l*h+c*m+u*v+f*g,d=p>=0?1:-1,z=1-p*p;if(z>Number.EPSILON){let C=Math.sqrt(z),E=Math.atan2(C,p*d);x=Math.sin(x*E)/C,o=Math.sin(o*E)/C}let b=o*d;if(l=l*x+h*b,c=c*x+m*b,u=u*x+v*b,f=f*x+g*b,x===1-o){let C=1/Math.sqrt(l*l+c*c+u*u+f*f);l*=C,c*=C,u*=C,f*=C}}e[t]=l,e[t+1]=c,e[t+2]=u,e[t+3]=f}static multiplyQuaternionsFlat(e,t,i,a,r,s){let o=i[a],l=i[a+1],c=i[a+2],u=i[a+3],f=r[s],h=r[s+1],m=r[s+2],v=r[s+3];return e[t]=o*v+u*f+l*m-c*h,e[t+1]=l*v+u*h+c*f-o*m,e[t+2]=c*v+u*m+o*h-l*f,e[t+3]=u*v-o*f-l*h-c*m,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,a){return this._x=e,this._y=t,this._z=i,this._w=a,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){if(!(e&&e.isEuler))throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");let i=e._x,a=e._y,r=e._z,s=e._order,o=Math.cos,l=Math.sin,c=o(i/2),u=o(a/2),f=o(r/2),h=l(i/2),m=l(a/2),v=l(r/2);switch(s){case"XYZ":this._x=h*u*f+c*m*v,this._y=c*m*f-h*u*v,this._z=c*u*v+h*m*f,this._w=c*u*f-h*m*v;break;case"YXZ":this._x=h*u*f+c*m*v,this._y=c*m*f-h*u*v,this._z=c*u*v-h*m*f,this._w=c*u*f+h*m*v;break;case"ZXY":this._x=h*u*f-c*m*v,this._y=c*m*f+h*u*v,this._z=c*u*v+h*m*f,this._w=c*u*f-h*m*v;break;case"ZYX":this._x=h*u*f-c*m*v,this._y=c*m*f+h*u*v,this._z=c*u*v-h*m*f,this._w=c*u*f+h*m*v;break;case"YZX":this._x=h*u*f+c*m*v,this._y=c*m*f+h*u*v,this._z=c*u*v-h*m*f,this._w=c*u*f-h*m*v;break;case"XZY":this._x=h*u*f-c*m*v,this._y=c*m*f-h*u*v,this._z=c*u*v+h*m*f,this._w=c*u*f+h*m*v;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let i=t/2,a=Math.sin(i);return this._x=e.x*a,this._y=e.y*a,this._z=e.z*a,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,i=t[0],a=t[4],r=t[8],s=t[1],o=t[5],l=t[9],c=t[2],u=t[6],f=t[10],h=i+o+f;if(h>0){let m=.5/Math.sqrt(h+1);this._w=.25/m,this._x=(u-l)*m,this._y=(r-c)*m,this._z=(s-a)*m}else if(i>o&&i>f){let m=2*Math.sqrt(1+i-o-f);this._w=(u-l)/m,this._x=.25*m,this._y=(a+s)/m,this._z=(r+c)/m}else if(o>f){let m=2*Math.sqrt(1+o-i-f);this._w=(r-c)/m,this._x=(a+s)/m,this._y=.25*m,this._z=(l+u)/m}else{let m=2*Math.sqrt(1+f-i-o);this._w=(s-a)/m,this._x=(r+c)/m,this._y=(l+u)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(E2(this.dot(e),-1,1)))}rotateTowards(e,t){let i=this.angleTo(e);if(i===0)return this;let a=Math.min(1,t/i);return this.slerp(e,a),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e,t){return t!==void 0?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let i=e._x,a=e._y,r=e._z,s=e._w,o=t._x,l=t._y,c=t._z,u=t._w;return this._x=i*u+s*o+a*c-r*l,this._y=a*u+s*l+r*o-i*c,this._z=r*u+s*c+i*l-a*o,this._w=s*u-i*o-a*l-r*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);let i=this._x,a=this._y,r=this._z,s=this._w,o=s*e._w+i*e._x+a*e._y+r*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=s,this._x=i,this._y=a,this._z=r,this;let l=1-o*o;if(l<=Number.EPSILON){let m=1-t;return this._w=m*s+t*this._w,this._x=m*i+t*this._x,this._y=m*a+t*this._y,this._z=m*r+t*this._z,this.normalize(),this._onChangeCallback(),this}let c=Math.sqrt(l),u=Math.atan2(c,o),f=Math.sin((1-t)*u)/c,h=Math.sin(t*u)/c;return this._w=s*f+this._w*h,this._x=i*f+this._x*h,this._y=a*f+this._y*h,this._z=r*f+this._z*h,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){let e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),a=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(t*Math.cos(a),i*Math.sin(r),i*Math.cos(r),t*Math.sin(a))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}};xe.prototype.isQuaternion=!0;var k=class{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e,t){return t!==void 0?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(Er.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Er.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,i=this.y,a=this.z,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6]*a,this.y=r[1]*t+r[4]*i+r[7]*a,this.z=r[2]*t+r[5]*i+r[8]*a,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,i=this.y,a=this.z,r=e.elements,s=1/(r[3]*t+r[7]*i+r[11]*a+r[15]);return this.x=(r[0]*t+r[4]*i+r[8]*a+r[12])*s,this.y=(r[1]*t+r[5]*i+r[9]*a+r[13])*s,this.z=(r[2]*t+r[6]*i+r[10]*a+r[14])*s,this}applyQuaternion(e){let t=this.x,i=this.y,a=this.z,r=e.x,s=e.y,o=e.z,l=e.w,c=l*t+s*a-o*i,u=l*i+o*t-r*a,f=l*a+r*i-s*t,h=-r*t-s*i-o*a;return this.x=c*l+h*-r+u*-o-f*-s,this.y=u*l+h*-s+f*-r-c*-o,this.z=f*l+h*-o+c*-s-u*-r,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,i=this.y,a=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*a,this.y=r[1]*t+r[5]*i+r[9]*a,this.z=r[2]*t+r[6]*i+r[10]*a,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e,t){return t!==void 0?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)}crossVectors(e,t){let i=e.x,a=e.y,r=e.z,s=t.x,o=t.y,l=t.z;return this.x=a*l-r*o,this.y=r*s-i*l,this.z=i*o-a*s,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return K0.copy(this).projectOnVector(e),this.sub(K0)}reflect(e){return this.sub(K0.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let i=this.dot(e)/t;return Math.acos(E2(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y,a=this.z-e.z;return t*t+i*i+a*a}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){let a=Math.sin(t)*e;return this.x=a*Math.sin(i),this.y=Math.cos(t)*e,this.z=a*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),a=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=a,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t,i){return i!==void 0&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=(Math.random()-.5)*2,t=Math.random()*Math.PI*2,i=Math.sqrt(1-e**2);return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};k.prototype.isVector3=!0;var K0=new k,Er=new xe;var z1=class{constructor(e=0,t=0){this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,i=this.y,a=e.elements;return this.x=a[0]*t+a[3]*i+a[6],this.y=a[1]*t+a[4]*i+a[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t,i){return i!==void 0&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let i=Math.cos(t),a=Math.sin(t),r=this.x-e.x,s=this.y-e.y;return this.x=r*i-s*a+e.x,this.y=r*a+s*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}};z1.prototype.isVector2=!0;var Lr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},$2={h:0,s:0,l:0},y6={h:0,s:0,l:0};function J0(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}function b4(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function Q0(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}var x1=class{constructor(e,t,i){return t===void 0&&i===void 0?this.set(e):this.setRGB(e,t,i)}set(e){return e&&e.isColor?this.copy(e):typeof e=="number"?this.setHex(e):typeof e=="string"&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,this}setRGB(e,t,i){return this.r=e,this.g=t,this.b=i,this}setHSL(e,t,i){if(e=_r(e,1),t=E2(t,0,1),i=E2(i,0,1),t===0)this.r=this.g=this.b=i;else{let a=i<=.5?i*(1+t):i+t-i*t,r=2*i-a;this.r=J0(r,a,e+1/3),this.g=J0(r,a,e),this.b=J0(r,a,e-1/3)}return this}setStyle(e){function t(a){a!==void 0&&parseFloat(a)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)){let a,r=i[1],s=i[2];switch(r){case"rgb":case"rgba":if(a=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(255,parseInt(a[1],10))/255,this.g=Math.min(255,parseInt(a[2],10))/255,this.b=Math.min(255,parseInt(a[3],10))/255,t(a[4]),this;if(a=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(100,parseInt(a[1],10))/100,this.g=Math.min(100,parseInt(a[2],10))/100,this.b=Math.min(100,parseInt(a[3],10))/100,t(a[4]),this;break;case"hsl":case"hsla":if(a=/^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s)){let o=parseFloat(a[1])/360,l=parseInt(a[2],10)/100,c=parseInt(a[3],10)/100;return t(a[4]),this.setHSL(o,l,c)}break}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){let a=i[1],r=a.length;if(r===3)return this.r=parseInt(a.charAt(0)+a.charAt(0),16)/255,this.g=parseInt(a.charAt(1)+a.charAt(1),16)/255,this.b=parseInt(a.charAt(2)+a.charAt(2),16)/255,this;if(r===6)return this.r=parseInt(a.charAt(0)+a.charAt(1),16)/255,this.g=parseInt(a.charAt(2)+a.charAt(3),16)/255,this.b=parseInt(a.charAt(4)+a.charAt(5),16)/255,this}return e&&e.length>0?this.setColorName(e):this}setColorName(e){let t=Lr[e.toLowerCase()];return t!==void 0?this.setHex(t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=b4(e.r),this.g=b4(e.g),this.b=b4(e.b),this}copyLinearToSRGB(e){return this.r=Q0(e.r),this.g=Q0(e.g),this.b=Q0(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(){return this.r*255<<16^this.g*255<<8^this.b*255<<0}getHexString(){return("000000"+this.getHex().toString(16)).slice(-6)}getHSL(e){let t=this.r,i=this.g,a=this.b,r=Math.max(t,i,a),s=Math.min(t,i,a),o,l,c=(s+r)/2;if(s===r)o=0,l=0;else{let u=r-s;switch(l=c<=.5?u/(r+s):u/(2-r-s),r){case t:o=(i-a)/u+(ir&&(r=u),f>s&&(s=f),h>o&&(o=h)}return this.min.set(t,i,a),this.max.set(r,s,o),this}setFromBufferAttribute(e){let t=1/0,i=1/0,a=1/0,r=-1/0,s=-1/0,o=-1/0;for(let l=0,c=e.count;lr&&(r=u),f>s&&(s=f),h>o&&(o=h)}return this.min.set(t,i,a),this.max.set(r,s,o),this}setFromPoints(e){this.makeEmpty();for(let t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,z4),z4.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Nt),V6.subVectors(this.max,Nt),G4.subVectors(e.a,Nt),q4.subVectors(e.b,Nt),W4.subVectors(e.c,Nt),r4.subVectors(q4,G4),n4.subVectors(W4,q4),A4.subVectors(G4,W4);let t=[0,-r4.z,r4.y,0,-n4.z,n4.y,0,-A4.z,A4.y,r4.z,0,-r4.x,n4.z,0,-n4.x,A4.z,0,-A4.x,-r4.y,r4.x,0,-n4.y,n4.x,0,-A4.y,A4.x,0];return!V3(t,G4,q4,W4,V6)||(t=[1,0,0,0,1,0,0,0,1],!V3(t,G4,q4,W4,V6))?!1:(N6.crossVectors(r4,n4),t=[N6.x,N6.y,N6.z],V3(t,G4,q4,W4,V6))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return z4.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=this.getSize(z4).length()*.5,e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Ge[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Ge[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Ge[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Ge[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Ge[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Ge[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Ge[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Ge[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Ge),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}};Oe.prototype.isBox3=!0;var Ge=[new k,new k,new k,new k,new k,new k,new k,new k],z4=new k,H3=new Oe,G4=new k,q4=new k,W4=new k,r4=new k,n4=new k,A4=new k,Nt=new k,V6=new k,N6=new k,w4=new k;function V3(n,e,t,i,a){for(let r=0,s=n.length-3;r<=s;r+=3){w4.fromArray(n,r);let o=a.x*Math.abs(w4.x)+a.y*Math.abs(w4.y)+a.z*Math.abs(w4.z),l=e.dot(w4),c=t.dot(w4),u=i.dot(w4);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>o)return!1}return!0}var N2=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;let i=this._listeners;return i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;let a=this._listeners[e];if(a!==void 0){let r=a.indexOf(t);r!==-1&&a.splice(r,1)}}dispatchEvent(e){if(this._listeners===void 0)return;let i=this._listeners[e.type];if(i!==void 0){e.target=this;let a=i.slice(0);for(let r=0,s=a.length;rthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){N3.subVectors(e,this.center);let t=N3.lengthSq();if(t>this.radius*this.radius){let i=Math.sqrt(t),a=(i-this.radius)*.5;this.center.add(N3.multiplyScalar(a/i)),this.radius+=a}return this}union(e){return this.center.equals(e.center)===!0?R6.set(0,0,1).multiplyScalar(e.radius):R6.subVectors(e.center,this.center).normalize().multiplyScalar(e.radius),this.expandByPoint(_8.copy(e.center).add(R6)),this.expandByPoint(_8.copy(e.center).sub(R6)),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}};var k1=class{constructor(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}set(e,t,i,a,r,s,o,l,c,u,f,h,m,v,g,x){let p=this.elements;return p[0]=e,p[4]=t,p[8]=i,p[12]=a,p[1]=r,p[5]=s,p[9]=o,p[13]=l,p[2]=c,p[6]=u,p[10]=f,p[14]=h,p[3]=m,p[7]=v,p[11]=g,p[15]=x,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new k1().fromArray(this.elements)}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){let t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,i=e.elements,a=1/j4.setFromMatrixColumn(e,0).length(),r=1/j4.setFromMatrixColumn(e,1).length(),s=1/j4.setFromMatrixColumn(e,2).length();return t[0]=i[0]*a,t[1]=i[1]*a,t[2]=i[2]*a,t[3]=0,t[4]=i[4]*r,t[5]=i[5]*r,t[6]=i[6]*r,t[7]=0,t[8]=i[8]*s,t[9]=i[9]*s,t[10]=i[10]*s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");let t=this.elements,i=e.x,a=e.y,r=e.z,s=Math.cos(i),o=Math.sin(i),l=Math.cos(a),c=Math.sin(a),u=Math.cos(r),f=Math.sin(r);if(e.order==="XYZ"){let h=s*u,m=s*f,v=o*u,g=o*f;t[0]=l*u,t[4]=-l*f,t[8]=c,t[1]=m+v*c,t[5]=h-g*c,t[9]=-o*l,t[2]=g-h*c,t[6]=v+m*c,t[10]=s*l}else if(e.order==="YXZ"){let h=l*u,m=l*f,v=c*u,g=c*f;t[0]=h+g*o,t[4]=v*o-m,t[8]=s*c,t[1]=s*f,t[5]=s*u,t[9]=-o,t[2]=m*o-v,t[6]=g+h*o,t[10]=s*l}else if(e.order==="ZXY"){let h=l*u,m=l*f,v=c*u,g=c*f;t[0]=h-g*o,t[4]=-s*f,t[8]=v+m*o,t[1]=m+v*o,t[5]=s*u,t[9]=g-h*o,t[2]=-s*c,t[6]=o,t[10]=s*l}else if(e.order==="ZYX"){let h=s*u,m=s*f,v=o*u,g=o*f;t[0]=l*u,t[4]=v*c-m,t[8]=h*c+g,t[1]=l*f,t[5]=g*c+h,t[9]=m*c-v,t[2]=-c,t[6]=o*l,t[10]=s*l}else if(e.order==="YZX"){let h=s*l,m=s*c,v=o*l,g=o*c;t[0]=l*u,t[4]=g-h*f,t[8]=v*f+m,t[1]=f,t[5]=s*u,t[9]=-o*u,t[2]=-c*u,t[6]=m*f+v,t[10]=h-g*f}else if(e.order==="XZY"){let h=s*l,m=s*c,v=o*l,g=o*c;t[0]=l*u,t[4]=-f,t[8]=c*u,t[1]=h*f+g,t[5]=s*u,t[9]=m*f-v,t[2]=v*f-m,t[6]=o*u,t[10]=g*f+h}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(a9,e,r9)}lookAt(e,t,i){let a=this.elements;return R2.subVectors(e,t),R2.lengthSq()===0&&(R2.z=1),R2.normalize(),s4.crossVectors(i,R2),s4.lengthSq()===0&&(Math.abs(i.z)===1?R2.x+=1e-4:R2.z+=1e-4,R2.normalize(),s4.crossVectors(i,R2)),s4.normalize(),F6.crossVectors(R2,s4),a[0]=s4.x,a[4]=F6.x,a[8]=R2.x,a[1]=s4.y,a[5]=F6.y,a[9]=R2.y,a[2]=s4.z,a[6]=F6.z,a[10]=R2.z,this}multiply(e,t){return t!==void 0?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,a=t.elements,r=this.elements,s=i[0],o=i[4],l=i[8],c=i[12],u=i[1],f=i[5],h=i[9],m=i[13],v=i[2],g=i[6],x=i[10],p=i[14],d=i[3],z=i[7],b=i[11],C=i[15],E=a[0],T=a[4],_=a[8],P=a[12],F=a[1],M=a[5],D=a[9],A=a[13],H=a[2],V=a[6],L=a[10],N=a[14],U=a[3],Z=a[7],O=a[11],W=a[15];return r[0]=s*E+o*F+l*H+c*U,r[4]=s*T+o*M+l*V+c*Z,r[8]=s*_+o*D+l*L+c*O,r[12]=s*P+o*A+l*N+c*W,r[1]=u*E+f*F+h*H+m*U,r[5]=u*T+f*M+h*V+m*Z,r[9]=u*_+f*D+h*L+m*O,r[13]=u*P+f*A+h*N+m*W,r[2]=v*E+g*F+x*H+p*U,r[6]=v*T+g*M+x*V+p*Z,r[10]=v*_+g*D+x*L+p*O,r[14]=v*P+g*A+x*N+p*W,r[3]=d*E+z*F+b*H+C*U,r[7]=d*T+z*M+b*V+C*Z,r[11]=d*_+z*D+b*L+C*O,r[15]=d*P+z*A+b*N+C*W,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[4],a=e[8],r=e[12],s=e[1],o=e[5],l=e[9],c=e[13],u=e[2],f=e[6],h=e[10],m=e[14],v=e[3],g=e[7],x=e[11],p=e[15];return v*(+r*l*f-a*c*f-r*o*h+i*c*h+a*o*m-i*l*m)+g*(+t*l*m-t*c*h+r*s*h-a*s*m+a*c*u-r*l*u)+x*(+t*c*f-t*o*m-r*s*f+i*s*m+r*o*u-i*c*u)+p*(-a*o*u-t*l*f+t*o*h+a*s*f-i*s*h+i*l*u)}transpose(){let e=this.elements,t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){let a=this.elements;return e.isVector3?(a[12]=e.x,a[13]=e.y,a[14]=e.z):(a[12]=e,a[13]=t,a[14]=i),this}invert(){let e=this.elements,t=e[0],i=e[1],a=e[2],r=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8],f=e[9],h=e[10],m=e[11],v=e[12],g=e[13],x=e[14],p=e[15],d=f*x*c-g*h*c+g*l*m-o*x*m-f*l*p+o*h*p,z=v*h*c-u*x*c-v*l*m+s*x*m+u*l*p-s*h*p,b=u*g*c-v*f*c+v*o*m-s*g*m-u*o*p+s*f*p,C=v*f*l-u*g*l-v*o*h+s*g*h+u*o*x-s*f*x,E=t*d+i*z+a*b+r*C;if(E===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let T=1/E;return e[0]=d*T,e[1]=(g*h*r-f*x*r-g*a*m+i*x*m+f*a*p-i*h*p)*T,e[2]=(o*x*r-g*l*r+g*a*c-i*x*c-o*a*p+i*l*p)*T,e[3]=(f*l*r-o*h*r-f*a*c+i*h*c+o*a*m-i*l*m)*T,e[4]=z*T,e[5]=(u*x*r-v*h*r+v*a*m-t*x*m-u*a*p+t*h*p)*T,e[6]=(v*l*r-s*x*r-v*a*c+t*x*c+s*a*p-t*l*p)*T,e[7]=(s*h*r-u*l*r+u*a*c-t*h*c-s*a*m+t*l*m)*T,e[8]=b*T,e[9]=(v*f*r-u*g*r-v*i*m+t*g*m+u*i*p-t*f*p)*T,e[10]=(s*g*r-v*o*r+v*i*c-t*g*c-s*i*p+t*o*p)*T,e[11]=(u*o*r-s*f*r-u*i*c+t*f*c+s*i*m-t*o*m)*T,e[12]=C*T,e[13]=(u*g*a-v*f*a+v*i*h-t*g*h-u*i*x+t*f*x)*T,e[14]=(v*o*a-s*g*a-v*i*l+t*g*l+s*i*x-t*o*x)*T,e[15]=(s*f*a-u*o*a+u*i*l-t*f*l-s*i*h+t*o*h)*T,this}scale(e){let t=this.elements,i=e.x,a=e.y,r=e.z;return t[0]*=i,t[4]*=a,t[8]*=r,t[1]*=i,t[5]*=a,t[9]*=r,t[2]*=i,t[6]*=a,t[10]*=r,t[3]*=i,t[7]*=a,t[11]*=r,this}getMaxScaleOnAxis(){let e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],a=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,a))}makeTranslation(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let i=Math.cos(t),a=Math.sin(t),r=1-i,s=e.x,o=e.y,l=e.z,c=r*s,u=r*o;return this.set(c*s+i,c*o-a*l,c*l+a*o,0,c*o+a*l,u*o+i,u*l-a*s,0,c*l-a*o,u*l+a*s,r*l*l+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,a,r,s){return this.set(1,i,r,0,e,1,s,0,t,a,1,0,0,0,0,1),this}compose(e,t,i){let a=this.elements,r=t._x,s=t._y,o=t._z,l=t._w,c=r+r,u=s+s,f=o+o,h=r*c,m=r*u,v=r*f,g=s*u,x=s*f,p=o*f,d=l*c,z=l*u,b=l*f,C=i.x,E=i.y,T=i.z;return a[0]=(1-(g+p))*C,a[1]=(m+b)*C,a[2]=(v-z)*C,a[3]=0,a[4]=(m-b)*E,a[5]=(1-(h+p))*E,a[6]=(x+d)*E,a[7]=0,a[8]=(v+z)*T,a[9]=(x-d)*T,a[10]=(1-(h+g))*T,a[11]=0,a[12]=e.x,a[13]=e.y,a[14]=e.z,a[15]=1,this}decompose(e,t,i){let a=this.elements,r=j4.set(a[0],a[1],a[2]).length(),s=j4.set(a[4],a[5],a[6]).length(),o=j4.set(a[8],a[9],a[10]).length();this.determinant()<0&&(r=-r),e.x=a[12],e.y=a[13],e.z=a[14],ee.copy(this);let c=1/r,u=1/s,f=1/o;return ee.elements[0]*=c,ee.elements[1]*=c,ee.elements[2]*=c,ee.elements[4]*=u,ee.elements[5]*=u,ee.elements[6]*=u,ee.elements[8]*=f,ee.elements[9]*=f,ee.elements[10]*=f,t.setFromRotationMatrix(ee),i.x=r,i.y=s,i.z=o,this}makePerspective(e,t,i,a,r,s){s===void 0&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");let o=this.elements,l=2*r/(t-e),c=2*r/(i-a),u=(t+e)/(t-e),f=(i+a)/(i-a),h=-(s+r)/(s-r),m=-2*s*r/(s-r);return o[0]=l,o[4]=0,o[8]=u,o[12]=0,o[1]=0,o[5]=c,o[9]=f,o[13]=0,o[2]=0,o[6]=0,o[10]=h,o[14]=m,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(e,t,i,a,r,s){let o=this.elements,l=1/(t-e),c=1/(i-a),u=1/(s-r),f=(t+e)*l,h=(i+a)*c,m=(s+r)*u;return o[0]=2*l,o[4]=0,o[8]=0,o[12]=-f,o[1]=0,o[5]=2*c,o[9]=0,o[13]=-h,o[2]=0,o[6]=0,o[10]=-2*u,o[14]=-m,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(e){let t=this.elements,i=e.elements;for(let a=0;a<16;a++)if(t[a]!==i[a])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}};k1.prototype.isMatrix4=!0;var j4=new k,ee=new k1,a9=new k(0,0,0),r9=new k(1,1,1),s4=new k,F6=new k,R2=new k;var S8=new k1,E8=new xe,o4=class{constructor(e=0,t=0,i=0,a=o4.DefaultOrder){this._x=e,this._y=t,this._z=i,this._order=a}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,a=this._order){return this._x=e,this._y=t,this._z=i,this._order=a,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){let a=e.elements,r=a[0],s=a[4],o=a[8],l=a[1],c=a[5],u=a[9],f=a[2],h=a[6],m=a[10];switch(t){case"XYZ":this._y=Math.asin(E2(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,m),this._z=Math.atan2(-s,r)):(this._x=Math.atan2(h,c),this._z=0);break;case"YXZ":this._x=Math.asin(-E2(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-f,r),this._z=0);break;case"ZXY":this._x=Math.asin(E2(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-s,c)):(this._y=0,this._z=Math.atan2(l,r));break;case"ZYX":this._y=Math.asin(-E2(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(h,m),this._z=Math.atan2(l,r)):(this._x=0,this._z=Math.atan2(-s,c));break;case"YZX":this._z=Math.asin(E2(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-f,r)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-E2(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(h,c),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-u,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,i===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return S8.makeRotationFromQuaternion(e),this.setFromRotationMatrix(S8,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return E8.setFromEuler(this),this.setFromQuaternion(E8,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}toVector3(e){return e?e.set(this._x,this._y,this._z):new k(this._x,this._y,this._z)}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}};o4.prototype.isEuler=!0;o4.DefaultOrder="XYZ";o4.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];var Rt=class{constructor(){this.mask=1|0}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}set(e,t,i,a,r,s,o,l,c){let u=this.elements;return u[0]=e,u[1]=a,u[2]=o,u[3]=t,u[4]=r,u[5]=l,u[6]=i,u[7]=s,u[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,a=t.elements,r=this.elements,s=i[0],o=i[3],l=i[6],c=i[1],u=i[4],f=i[7],h=i[2],m=i[5],v=i[8],g=a[0],x=a[3],p=a[6],d=a[1],z=a[4],b=a[7],C=a[2],E=a[5],T=a[8];return r[0]=s*g+o*d+l*C,r[3]=s*x+o*z+l*E,r[6]=s*p+o*b+l*T,r[1]=c*g+u*d+f*C,r[4]=c*x+u*z+f*E,r[7]=c*p+u*b+f*T,r[2]=h*g+m*d+v*C,r[5]=h*x+m*z+v*E,r[8]=h*p+m*b+v*T,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[1],a=e[2],r=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8];return t*s*u-t*o*c-i*r*u+i*o*l+a*r*c-a*s*l}invert(){let e=this.elements,t=e[0],i=e[1],a=e[2],r=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8],f=u*s-o*c,h=o*l-u*r,m=c*r-s*l,v=t*f+i*h+a*m;if(v===0)return this.set(0,0,0,0,0,0,0,0,0);let g=1/v;return e[0]=f*g,e[1]=(a*c-u*i)*g,e[2]=(o*i-a*s)*g,e[3]=h*g,e[4]=(u*t-a*l)*g,e[5]=(a*r-o*t)*g,e[6]=m*g,e[7]=(i*l-c*t)*g,e[8]=(s*t-i*r)*g,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,a,r,s,o){let l=Math.cos(r),c=Math.sin(r);return this.set(i*l,i*c,-i*(l*s+c*o)+s+e,-a*c,a*l,-a*(-c*s+l*o)+o+t,0,0,1),this}scale(e,t){let i=this.elements;return i[0]*=e,i[3]*=e,i[6]*=e,i[1]*=t,i[4]*=t,i[7]*=t,this}rotate(e){let t=Math.cos(e),i=Math.sin(e),a=this.elements,r=a[0],s=a[3],o=a[6],l=a[1],c=a[4],u=a[7];return a[0]=t*r+i*l,a[3]=t*s+i*c,a[6]=t*o+i*u,a[1]=-i*r+t*l,a[4]=-i*s+t*c,a[7]=-i*o+t*u,this}translate(e,t){let i=this.elements;return i[0]+=e*i[2],i[3]+=e*i[5],i[6]+=e*i[8],i[1]+=t*i[2],i[4]+=t*i[5],i[7]+=t*i[8],this}equals(e){let t=this.elements,i=e.elements;for(let a=0;a<9;a++)if(t[a]!==i[a])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}};r2.prototype.isMatrix3=!0;var n9=0,L8=new k,X4=new xe,We=new k1,B6=new k,Ft=new k,s9=new k,o9=new xe,D8=new k(1,0,0),T8=new k(0,1,0),H8=new k(0,0,1),c9={type:"added"},V8={type:"removed"},j1=class extends N2{constructor(){super();Object.defineProperty(this,"id",{value:n9++}),this.uuid=Pe(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=j1.DefaultUp.clone();let e=new k,t=new o4,i=new xe,a=new k(1,1,1);function r(){i.setFromEuler(t,!1)}function s(){t.setFromQuaternion(i,void 0,!1)}t._onChange(r),i._onChange(s),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:i},scale:{configurable:!0,enumerable:!0,value:a},modelViewMatrix:{value:new k1},normalMatrix:{value:new r2}}),this.matrix=new k1,this.matrixWorld=new k1,this.matrixAutoUpdate=j1.DefaultMatrixAutoUpdate,this.matrixWorldNeedsUpdate=!1,this.layers=new Rt,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return X4.setFromAxisAngle(e,t),this.quaternion.multiply(X4),this}rotateOnWorldAxis(e,t){return X4.setFromAxisAngle(e,t),this.quaternion.premultiply(X4),this}rotateX(e){return this.rotateOnAxis(D8,e)}rotateY(e){return this.rotateOnAxis(T8,e)}rotateZ(e){return this.rotateOnAxis(H8,e)}translateOnAxis(e,t){return L8.copy(e).applyQuaternion(this.quaternion),this.position.add(L8.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(D8,e)}translateY(e){return this.translateOnAxis(T8,e)}translateZ(e){return this.translateOnAxis(H8,e)}localToWorld(e){return e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return e.applyMatrix4(We.copy(this.matrixWorld).invert())}lookAt(e,t,i){e.isVector3?B6.copy(e):B6.set(e,t,i);let a=this.parent;this.updateWorldMatrix(!0,!1),Ft.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?We.lookAt(Ft,B6,this.up):We.lookAt(B6,Ft,this.up),this.quaternion.setFromRotationMatrix(We),a&&(We.extractRotation(a.matrixWorld),X4.setFromRotationMatrix(We),this.quaternion.premultiply(X4.invert()))}add(e){if(arguments.length>1){for(let t=0;t1){for(let i=0;i0){a.children=[];for(let o=0;o0){a.animations=[];for(let o=0;o0&&(i.geometries=o),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),u.length>0&&(i.images=u),f.length>0&&(i.shapes=f),h.length>0&&(i.skeletons=h),m.length>0&&(i.animations=m)}return i.object=a,i;function s(o){let l=[];for(let c in o){let u=o[c];delete u.metadata,l.push(u)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;i=0;--e)if(n[e]>65535)return!0;return!1}function _4(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}var l9=0,O2=new k1,R3=new j1,Z4=new k,F2=new Oe,Bt=new Oe,c2=new k,b2=class extends N2{constructor(){super();Object.defineProperty(this,"id",{value:l9++}),this.uuid=Pe(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(P6(e)?Vt:Ht)(e,1):this.index=e,this}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,i=0){this.groups.push({start:e,count:t,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);let i=this.attributes.normal;if(i!==void 0){let r=new r2().getNormalMatrix(e);i.applyNormalMatrix(r),i.needsUpdate=!0}let a=this.attributes.tangent;return a!==void 0&&(a.transformDirection(e),a.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return O2.makeRotationFromQuaternion(e),this.applyMatrix4(O2),this}rotateX(e){return O2.makeRotationX(e),this.applyMatrix4(O2),this}rotateY(e){return O2.makeRotationY(e),this.applyMatrix4(O2),this}rotateZ(e){return O2.makeRotationZ(e),this.applyMatrix4(O2),this}translate(e,t,i){return O2.makeTranslation(e,t,i),this.applyMatrix4(O2),this}scale(e,t,i){return O2.makeScale(e,t,i),this.applyMatrix4(O2),this}lookAt(e){return R3.lookAt(e),R3.updateMatrix(),this.applyMatrix4(R3.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Z4).negate(),this.translate(Z4.x,Z4.y,Z4.z),this}setFromPoints(e){let t=[];for(let i=0,a=e.length;i0&&(e.userData=this.userData),this.parameters!==void 0){let l=this.parameters;for(let c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let i=this.attributes;for(let l in i){let c=i[l];e.data.attributes[l]=c.toJSON(e.data)}let a={},r=!1;for(let l in this.morphAttributes){let c=this.morphAttributes[l],u=[];for(let f=0,h=c.length;f0&&(a[l]=u,r=!0)}r&&(e.data.morphAttributes=a,e.data.morphTargetsRelative=this.morphTargetsRelative);let s=this.groups;s.length>0&&(e.data.groups=JSON.parse(JSON.stringify(s)));let o=this.boundingSphere;return o!==null&&(e.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let i=e.index;i!==null&&this.setIndex(i.clone(t));let a=e.attributes;for(let c in a){let u=a[c];this.setAttribute(c,u.clone(t))}let r=e.morphAttributes;for(let c in r){let u=[],f=r[c];for(let h=0,m=f.length;h0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let i=e[t];if(i===void 0){console.warn("THREE.Material: '"+t+"' parameter is undefined.");continue}if(t==="shading"){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=i===Vr;continue}let a=this[t];if(a===void 0){console.warn("THREE."+this.type+": '"+t+"' is not a property of this material.");continue}a&&a.isColor?a.set(i):a&&a.isVector3&&i&&i.isVector3?a.copy(i):this[t]=i}}toJSON(e){let t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});let i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==C4&&(i.blending=this.blending),this.side!==Ie&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.alphaWrite=this.alphaWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,this.rotation&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(i.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=this.premultipliedAlpha),this.wireframe===!0&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=this.flatShading),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),JSON.stringify(this.userData)!=="{}"&&(i.userData=this.userData);function a(r){let s=[];for(let o in r){let l=r[o];delete l.metadata,s.push(l)}return s}if(t){let r=a(e.textures),s=a(e.images);r.length>0&&(i.textures=r),s.length>0&&(i.images=s)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.fog=e.fog,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,i=null;if(t!==null){let a=t.length;i=new Array(a);for(let r=0;r!==a;++r)i[r]=t[r].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.alphaWrite=e.alphaWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}};L2.prototype.isMaterial=!0;var Pt=class extends L2{constructor(e){super();this.type="MeshPhongMaterial",this.color=new x1(16777215),this.specular=new x1(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new x1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=D6,this.normalScale=new z1(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=U4,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this}};Pt.prototype.isMeshPhongMaterial=!0;var je=new k,F3=new k,I6=new k,c4=new k,B3=new k,k6=new k,P3=new k,I3=class{constructor(e=new k,t=new k(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,je)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(i).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=je.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(je.copy(this.direction).multiplyScalar(t).add(this.origin),je.distanceToSquared(e))}distanceSqToSegment(e,t,i,a){F3.copy(e).add(t).multiplyScalar(.5),I6.copy(t).sub(e).normalize(),c4.copy(this.origin).sub(F3);let r=e.distanceTo(t)*.5,s=-this.direction.dot(I6),o=c4.dot(this.direction),l=-c4.dot(I6),c=c4.lengthSq(),u=Math.abs(1-s*s),f,h,m,v;if(u>0)if(f=s*l-o,h=s*o-l,v=r*u,f>=0)if(h>=-v)if(h<=v){let g=1/u;f*=g,h*=g,m=f*(f+s*h+2*o)+h*(s*f+h+2*l)+c}else h=r,f=Math.max(0,-(s*h+o)),m=-f*f+h*(h+2*l)+c;else h=-r,f=Math.max(0,-(s*h+o)),m=-f*f+h*(h+2*l)+c;else h<=-v?(f=Math.max(0,-(-s*r+o)),h=f>0?-r:Math.min(Math.max(-r,-l),r),m=-f*f+h*(h+2*l)+c):h<=v?(f=0,h=Math.min(Math.max(-r,-l),r),m=h*(h+2*l)+c):(f=Math.max(0,-(s*r+o)),h=f>0?r:Math.min(Math.max(-r,-l),r),m=-f*f+h*(h+2*l)+c);else h=s>0?-r:r,f=Math.max(0,-(s*h+o)),m=-f*f+h*(h+2*l)+c;return i&&i.copy(this.direction).multiplyScalar(f).add(this.origin),a&&a.copy(I6).multiplyScalar(h).add(F3),m}intersectSphere(e,t){je.subVectors(e.center,this.origin);let i=je.dot(this.direction),a=je.dot(je)-i*i,r=e.radius*e.radius;if(a>r)return null;let s=Math.sqrt(r-a),o=i-s,l=i+s;return o<0&&l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){let i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,a,r,s,o,l,c=1/this.direction.x,u=1/this.direction.y,f=1/this.direction.z,h=this.origin;return c>=0?(i=(e.min.x-h.x)*c,a=(e.max.x-h.x)*c):(i=(e.max.x-h.x)*c,a=(e.min.x-h.x)*c),u>=0?(r=(e.min.y-h.y)*u,s=(e.max.y-h.y)*u):(r=(e.max.y-h.y)*u,s=(e.min.y-h.y)*u),i>s||r>a||((r>i||i!==i)&&(i=r),(s=0?(o=(e.min.z-h.z)*f,l=(e.max.z-h.z)*f):(o=(e.max.z-h.z)*f,l=(e.min.z-h.z)*f),i>l||o>a)||((o>i||i!==i)&&(i=o),(l=0?i:a,t)}intersectsBox(e){return this.intersectBox(e,je)!==null}intersectTriangle(e,t,i,a,r){B3.subVectors(t,e),k6.subVectors(i,e),P3.crossVectors(B3,k6);let s=this.direction.dot(P3),o;if(s>0){if(a)return null;o=1}else if(s<0)o=-1,s=-s;else return null;c4.subVectors(this.origin,e);let l=o*this.direction.dot(k6.crossVectors(c4,k6));if(l<0)return null;let c=o*this.direction.dot(B3.cross(c4));if(c<0||l+c>s)return null;let u=-o*c4.dot(P3);return u<0?null:this.at(u/s,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}};var te=new k,Xe=new k,k3=new k,Ze=new k,Y4=new k,$4=new k,N8=new k,U3=new k,O3=new k,G3=new k,ie=class{constructor(e=new k,t=new k,i=new k){this.a=e,this.b=t,this.c=i}static getNormal(e,t,i,a){a.subVectors(i,t),te.subVectors(e,t),a.cross(te);let r=a.lengthSq();return r>0?a.multiplyScalar(1/Math.sqrt(r)):a.set(0,0,0)}static getBarycoord(e,t,i,a,r){te.subVectors(a,t),Xe.subVectors(i,t),k3.subVectors(e,t);let s=te.dot(te),o=te.dot(Xe),l=te.dot(k3),c=Xe.dot(Xe),u=Xe.dot(k3),f=s*c-o*o;if(f===0)return r.set(-2,-1,-1);let h=1/f,m=(c*l-o*u)*h,v=(s*u-o*l)*h;return r.set(1-m-v,v,m)}static containsPoint(e,t,i,a){return this.getBarycoord(e,t,i,a,Ze),Ze.x>=0&&Ze.y>=0&&Ze.x+Ze.y<=1}static getUV(e,t,i,a,r,s,o,l){return this.getBarycoord(e,t,i,a,Ze),l.set(0,0),l.addScaledVector(r,Ze.x),l.addScaledVector(s,Ze.y),l.addScaledVector(o,Ze.z),l}static isFrontFacing(e,t,i,a){return te.subVectors(i,t),Xe.subVectors(e,t),te.cross(Xe).dot(a)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,a){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[a]),this}setFromAttributeAndIndices(e,t,i,a){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,a),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return te.subVectors(this.c,this.b),Xe.subVectors(this.a,this.b),te.cross(Xe).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return ie.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return ie.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,a,r){return ie.getUV(e,this.a,this.b,this.c,t,i,a,r)}containsPoint(e){return ie.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return ie.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let i=this.a,a=this.b,r=this.c,s,o;Y4.subVectors(a,i),$4.subVectors(r,i),U3.subVectors(e,i);let l=Y4.dot(U3),c=$4.dot(U3);if(l<=0&&c<=0)return t.copy(i);O3.subVectors(e,a);let u=Y4.dot(O3),f=$4.dot(O3);if(u>=0&&f<=u)return t.copy(a);let h=l*f-u*c;if(h<=0&&l>=0&&u<=0)return s=l/(l-u),t.copy(i).addScaledVector(Y4,s);G3.subVectors(e,r);let m=Y4.dot(G3),v=$4.dot(G3);if(v>=0&&m<=v)return t.copy(r);let g=m*c-l*v;if(g<=0&&c>=0&&v<=0)return o=c/(c-v),t.copy(i).addScaledVector($4,o);let x=u*v-m*f;if(x<=0&&f-u>=0&&m-v>=0)return N8.subVectors(r,a),o=(f-u)/(f-u+(m-v)),t.copy(a).addScaledVector(N8,o);let p=1/(x+g+h);return s=g*p,o=h*p,t.copy(i).addScaledVector(Y4,s).addScaledVector($4,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}};var K4=class extends L2{constructor(e){super();this.type="MeshBasicMaterial",this.color=new x1(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=U4,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this}};K4.prototype.isMeshBasicMaterial=!0;var R8=new k1,J4=new I3,q3=new qe,l4=new k,u4=new k,h4=new k,W3=new k,j3=new k,X3=new k,U6=new k,O6=new k,G6=new k,q6=new z1,W6=new z1,j6=new z1,Z3=new k,X6=new k,l2=class extends j1{constructor(e=new b2,t=new K4){super();this.type="Mesh",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e){return super.copy(e),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=e.material,this.geometry=e.geometry,this}updateMorphTargets(){let e=this.geometry;if(e.isBufferGeometry){let t=e.morphAttributes,i=Object.keys(t);if(i.length>0){let a=t[i[0]];if(a!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,s=a.length;r0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}raycast(e,t){let i=this.geometry,a=this.material,r=this.matrixWorld;if(a===void 0||(i.boundingSphere===null&&i.computeBoundingSphere(),q3.copy(i.boundingSphere),q3.applyMatrix4(r),e.ray.intersectsSphere(q3)===!1)||(R8.copy(r).invert(),J4.copy(e.ray).applyMatrix4(R8),i.boundingBox!==null&&J4.intersectsBox(i.boundingBox)===!1))return;let s;if(i.isBufferGeometry){let o=i.index,l=i.attributes.position,c=i.morphAttributes.position,u=i.morphTargetsRelative,f=i.attributes.uv,h=i.attributes.uv2,m=i.groups,v=i.drawRange;if(o!==null)if(Array.isArray(a))for(let g=0,x=m.length;gt.far?null:{distance:c,point:X6.clone(),object:n}}function Z6(n,e,t,i,a,r,s,o,l,c,u,f){l4.fromBufferAttribute(a,c),u4.fromBufferAttribute(a,u),h4.fromBufferAttribute(a,f);let h=n.morphTargetInfluences;if(r&&h){U6.set(0,0,0),O6.set(0,0,0),G6.set(0,0,0);for(let v=0,g=r.length;v2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap){let t=_4("canvas");t.width=e.width,t.height=e.height;let i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);let a=i.getImageData(0,0,e.width,e.height),r=a.data;for(let s=0;s1)switch(this.wrapS){case Lt:e.x=e.x-Math.floor(e.x);break;case o2:e.x=e.x<0?0:1;break;case Dt:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Lt:e.y=e.y-Math.floor(e.y);break;case o2:e.y=e.y<0?0:1;break;case Dt:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&this.version++}};$1.DEFAULT_IMAGE=void 0;$1.DEFAULT_MAPPING=s3;$1.prototype.isTexture=!0;function Y3(n){return typeof HTMLImageElement!="undefined"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&n instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&n instanceof ImageBitmap?It.getDataURL(n):n.data?{data:Array.prototype.slice.call(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}var F8={specular:1515554,color:15790320,shininess:60,flatShading:!0},G2={diceColor:"#202020",textColor:"#ffffff"},ae=class{constructor(e,t,i={diceColor:"#202020",textColor:"#aaaaaa"}){this.w=e;this.h=t;this.options=i;this.scale=50;this.labels=[" ","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"];this.fontFace="Arial";this.options={...G2,...i}}setColor({diceColor:e,textColor:t}){e&&(this.options.diceColor=e),t&&(this.options.textColor=t)}get radius(){return this.scale*this.scaleFactor}get diceColor(){return this.options.diceColor}get textColor(){return this.options.textColor}get buffer(){return this.geometry.geometry}create(){this.textureSize=this.calculateTextureSize(this.scale/2+this.scale*this.margin)*2;let e=this.getGeometry(),t=this.getMaterials();return this.geometry=new l2(e,t),this.geometry.receiveShadow=!0,this.geometry.castShadow=!0,this.body.position.set(0+this.radius*2*Math.random(),0+this.radius*2*Math.random(),0+this.radius*4),this.body.velocity.x=500*Math.random()*2-1,this.body.velocity.y=500*Math.random()*2-1,this.body.angularVelocity.x=100*Math.random(),this.body.angularVelocity.y=100*Math.random(),this}getGeometry(){let e=new Array(this.vertices.length);for(let i=0;i=0&&u=0&&c!==l+1?o.unshift([r,c],[s,u]):o.push([r,c],[s,u]),l=c)}o.length===4&&i.push([i[o[0][0]][o[0][1]],i[o[1][0]][o[1][1]],i[o[3][0]][o[3][1]],i[o[2][0]][o[2][1]],-1])}for(let r=0;r=0&&u<4){--u==-1&&(u=3);let f=i[c][u];if(s.indexOf(f)>=0){o.push(f);break}}}--l}o.push(-1),i.push(o)}return{vectors:t,faces:i}}makeGeometry(e,t){let i=new b2;for(let f=0;f{let[r,s]=a.replace(/\\\|/g,"{ESCAPED_PIPE}").split("|").map(c=>c.replace(/{ESCAPED_PIPE}/g,"\\|")).map(c=>c.trim()),[,o,l]=r.match(/(\d+)(?:[^\d]+?(\d+))?/)??[];if(!(!o&&!l))return[[Number(o),l?Number(l):void 0],s]}),this.isLookup=!0)}if(this.header&&t.columns[this.header])this.options=t.columns[this.header];else{if(this.header)throw new Error(`Header ${this.header} was not found in table ${this.path} > ${this.block}.`);this.options=t.rows}}this.loaded=!0,this.trigger("loaded")}toResult(){return{type:"table",result:this.result}}async applyResult(e){e.type==="table"&&(e.result&&(this.result=e.result),await this.render())}},Hc=/^\|?([\s\S]+?)\|?$/,Aa=/\|/g;function Vc(n){let e=n.split(` +`),i=e.map(s=>(s.trim().match(Hc)??[,s.trim()])[1])[0].replace("\\|","{ESCAPED_PIPE}").split(Aa),a=[],r=[];for(let s in i){let o=i[s];o.trim().length||(o=s),r.push([o.trim(),[]])}for(let s of e.slice(2)){let o=s.trim().replace(/\\\|/g,"{ESCAPED_PIPE}").split(Aa).map(l=>l.replace(/{ESCAPED_PIPE}/g,"\\|")).map(l=>l.trim()).filter(l=>l.length);a.push(o.join(" | "));for(let l in o){let c=o[l].trim();!c.length||!r[l]||r[l][1].push(c)}}return{columns:Object.fromEntries(r),rows:a}}var D1=Z2(require("obsidian"));var c6=class extends D1.PluginSettingTab{constructor(e,t){super(e,t);this.plugin=t;this.plugin=t}async display(){let{containerEl:e}=this;e.empty(),e.addClass("dice-roller-settings"),e.createEl("h2",{text:"Dice Roller Settings"}),this.buildGenerics(e.createDiv()),this.buildDisplay(e.createDiv()),this.buildDice(e.createDiv()),this.buildTables(e.createDiv()),this.buildSections(e.createDiv()),this.buildTags(e.createDiv()),this.buildView(e.createDiv()),this.buildRender(e.createDiv()),this.buildFormulaSettings(e.createDiv("dice-roller-setting-additional-container")),e.createDiv("coffee").createEl("a",{href:"https://www.buymeacoffee.com/valentine195"}).createEl("img",{attr:{src:"https://img.buymeacoffee.com/button-api/?text=Buy me a coffee&emoji=\u2615&slug=valentine195&button_colour=e3e7ef&font_colour=262626&font_family=Inter&outline_colour=262626&coffee_colour=ff0000"}})}buildGenerics(e){e.empty(),new D1.Setting(e).setName("Globally Save Results").setDesc(createFragment(t=>{t.createSpan({text:"Dice results will be saved by default. This can be overridden using "}),t.createEl("code",{text:"dice-: formula"}),t.createEl("p",{text:"Please note that the plugin will attempt to save the result but may not be able to."})})).addToggle(t=>{t.setValue(this.plugin.data.persistResults),t.onChange(async i=>{this.plugin.data.persistResults=i,await this.plugin.saveSettings()})})}buildDisplay(e){e.empty(),new D1.Setting(e).setHeading().setName("Dice Display"),new D1.Setting(e).setName("Display Formula With Results").setDesc("Both the formula and the results will both be displayed in preview mode.").addToggle(t=>{t.setValue(this.plugin.data.displayResultsInline),t.onChange(async i=>{this.plugin.data.displayResultsInline=i,await this.plugin.saveSettings()})}),new D1.Setting(e).setName("Display Dice Button With Results").setDesc("A dice button will appear next to results.").addToggle(t=>{t.setValue(this.plugin.data.showDice),t.onChange(async i=>{this.plugin.data.showDice=i,await this.plugin.saveSettings()})}),new D1.Setting(e).setName("Add Formula When Using Modify Dice").setDesc(createFragment(t=>{t.createSpan({text:"Both the formula and the results will both be added to the note when using "}),t.createEl("code",{text:"dice-mod"}),t.createSpan({text:"."})})).addToggle(t=>{t.setValue(this.plugin.data.displayFormulaForMod),t.onChange(async i=>{this.plugin.data.displayFormulaForMod=i,await this.plugin.saveSettings()})})}buildDice(e){e.empty(),new D1.Setting(e).setHeading().setName("Dice Rollers"),new D1.Setting(e).setName("Default Face").setDesc("Use this as the number of faces when it is omitted.").addText(t=>{t.setValue(`${this.plugin.data.defaultFace}`),t.inputEl.onblur=async()=>{isNaN(Number(t.inputEl.value))&&new D1.Notice("The default face must be a number."),this.plugin.data.defaultFace=Number(t.inputEl.value),await this.plugin.saveSettings()}}),new D1.Setting(e).setName("Round Results").setDesc("Determine the rounding behavior for dice results.").addDropdown(t=>{t.addOptions(de).setValue(this.plugin.data.round).onChange(i=>{this.plugin.data.round=i,this.plugin.saveSettings()})}),new D1.Setting(e).setName("Always Render Dice").setDesc(createFragment(t=>{t.createSpan({text:"Dice rolled in notes will always be rendered. Use the "}),t.createEl("code",{text:"|norender"}),t.createSpan({text:" flag to prevent it."})})).addToggle(t=>{t.setValue(this.plugin.data.renderAllDice).onChange(i=>{this.plugin.data.renderAllDice=i,this.plugin.saveSettings()})})}buildTables(e){e.empty(),new D1.Setting(e).setHeading().setName("Table Rollers"),new D1.Setting(e).setName("Display Lookup Table Roll").setDesc("Lookup table rolls will display the rolled number along with the result.").addToggle(t=>{t.setValue(this.plugin.data.displayLookupRoll),t.onChange(async i=>{this.plugin.data.displayLookupRoll=i,await this.plugin.saveSettings()})})}buildSections(e){e.empty(),new D1.Setting(e).setHeading().setName("Section Rollers"),new D1.Setting(e).setName("Add Copy Button to Section Results").setDesc("Randomly rolled sections will have a copy-content button to easy add result to clipboard.").addToggle(t=>{t.setValue(this.plugin.data.copyContentButton),t.onChange(async i=>{this.plugin.data.copyContentButton=i,await this.plugin.saveSettings()})})}buildTags(e){e.empty(),new D1.Setting(e).setHeading().setName("Tag Rollers"),new D1.Setting(e).setName("Roll All Files for Tags").setDesc("Return a result for each file when rolling tags.").addToggle(t=>{t.setValue(this.plugin.data.returnAllTags),t.onChange(async i=>{this.plugin.data.returnAllTags=i,await this.plugin.saveSettings()})}),new D1.Setting(e).setName("Always Return Links for Tags").setDesc("Enables random link rolling with the link parameter. Override by specifying a section type.").addToggle(t=>{t.setValue(this.plugin.data.rollLinksForTags),t.onChange(async i=>{this.plugin.data.rollLinksForTags=i,await this.plugin.saveSettings()})})}buildView(e){e.empty(),new D1.Setting(e).setHeading().setName("Dice View"),new D1.Setting(e).setName("Open Dice View on Startup").setDesc("The dice view can always be opened using the command from the command palette.").addToggle(t=>{t.setValue(this.plugin.data.showLeafOnStartup),t.onChange(async i=>{this.plugin.data.showLeafOnStartup=i,await this.plugin.saveSettings()})})}buildRender(e){e.empty(),new D1.Setting(e).setHeading().setName("Graphical Dice"),new D1.Setting(e).setName("Display graphics for Dice View Rolls").setDesc("Dice rolls from dice view will be displayed on screen.").addToggle(a=>{a.setValue(this.plugin.data.renderer),a.onChange(async r=>{this.plugin.data.renderer=r,await this.plugin.saveSettings()})}),new D1.Setting(e).setName("Display Time for Dice Graphics").setDesc("Rendered dice will stay on screen for this number of milliseconds. Leave blank to require a click to clear dice.").addText(a=>{a.inputEl.setAttr("type","number"),a.inputEl.onblur=r=>{Number(a.getValue())<0&&(new D1.Notice("Render time cannot be less than 0."),a.setValue("0"))},a.setValue(`${this.plugin.data.renderTime}`),a.onChange(async r=>{r&&Number(r)<0||isNaN(Number(r))||(this.plugin.data.renderTime=Number(r),await this.plugin.saveSettings())})}).addExtraButton(a=>{a.setIcon("reset").setTooltip("Reset to Default").onClick(async()=>{this.plugin.data.renderTime=l6.renderTime,await this.plugin.saveSettings(),this.buildRender(e)})}),new D1.Setting(e).setName("Dice Base Color").setDesc("Rendered dice will be this color.").controlEl.createEl("input",{type:"color",value:this.plugin.data.diceColor},a=>{a.value=this.plugin.data.diceColor,a.onchange=async({target:r})=>{let s=r.value;this.plugin.data.diceColor=s,await this.plugin.saveSettings(),this.plugin.app.workspace.trigger("dice-roller:update-colors")}}),new D1.Setting(e).setName("Dice Text Color").setDesc("Rendered dice will use this color for their numbers.").controlEl.createEl("input",{type:"color",value:this.plugin.data.textColor},a=>{a.value=this.plugin.data.textColor,a.onchange=async({target:r})=>{let s=r.value;!s||(this.plugin.data.textColor=s,await this.plugin.saveSettings(),this.plugin.app.workspace.trigger("dice-roller:update-colors"))}})}buildFormulaSettings(e){e.empty(),new D1.Setting(e).setHeading().setName("Saved Formulas");let t=e.createDiv();new D1.Setting(t).setName("Add Formula").setDesc("Add a new formula shortcut.").addButton(r=>r.setTooltip("Add Formula").setButtonText("+").onClick(async()=>{let o=await this.buildFormulaForm(t);o&&(this.plugin.data.formulas[o.alias]=o.formula,this.buildFormulaSettings(e),await this.plugin.saveSettings())}));let i=e.createDiv("additional"),a=this.plugin.data.formulas;for(let[r,s]of Object.entries(a)){let o=new D1.Setting(i).setName(r);o.controlEl.createSpan({text:s}),o.addExtraButton(l=>l.setIcon("pencil").setTooltip("Edit").onClick(async()=>{let c=await this.buildFormulaForm(t,{alias:r,formula:s});c&&(delete this.plugin.data.formulas[r],this.plugin.data.formulas[c.alias]=c.formula,this.buildFormulaSettings(e),await this.plugin.saveSettings())})).addExtraButton(l=>l.setIcon("trash").setTooltip("Delete").onClick(async()=>{delete this.plugin.data.formulas[r],await this.plugin.saveSettings(),this.buildFormulaSettings(e)}))}Object.values(a).length||i.createSpan({text:"Create a formula to see it here!",cls:"no-formulas"})}async buildFormulaForm(e,t={alias:null,formula:null}){return new Promise(i=>{let a=e.createDiv("add-new-formula"),r=a.createDiv("formula-data");new D1.Setting(r).setName("Alias").addText(o=>{o.setValue(t.alias).onChange(l=>t.alias=l)}),new D1.Setting(r).setName("Formula").addText(o=>{o.setValue(t.formula).onChange(l=>t.formula=l)});let s=a.createDiv("formula-buttons");new D1.Setting(s).addButton(o=>o.setCta().setButtonText("Save").onClick(async()=>{a.detach(),i(t)})).addExtraButton(o=>o.setIcon("cross").setTooltip("Cancel").onClick(()=>{a.detach(),i(null)}))})}};var E1=Z2(require("obsidian"));var g4="DICE_ROLLER_VIEW",Nc='',Rc='',Fc='',Bc='',Pc='',Ic='',kc='';(0,E1.addIcon)("d4",Nc);(0,E1.addIcon)("d6",Rc);(0,E1.addIcon)("d8",Fc);(0,E1.addIcon)("d10",Bc);(0,E1.addIcon)("d12",Pc);(0,E1.addIcon)("d20",Ic);(0,E1.addIcon)("d100",kc);(0,E1.addIcon)("dice-roller-save",'');(0,E1.addIcon)("dice-roller-plus",'');(0,E1.addIcon)("dice-roller-minus",'');var Ke=class extends E1.ItemView{constructor(e,t){super(t);this.plugin=e;this.leaf=t;this.dice=Ke.DICE();this.custom="";this.adv=!1;this.dis=!1;this.add=0;this.contentEl.addClass("dice-roller-view"),this.registerEvent(this.plugin.app.workspace.on("dice-roller:update-colors",()=>{this.renderer.factory.updateColors()}))}static DICE(){return{d4:0,d6:0,d8:0,d10:0,d12:0,d20:0,d100:0}}get customFormulas(){return this.plugin.data.customFormulas}get renderer(){return this.plugin.renderer}async onOpen(){this.display()}async display(){this.contentEl.empty(),this.gridEl=this.contentEl.createDiv("dice-roller-grid"),this.formulaEl=this.contentEl.createDiv("dice-roller-formula");let e=this.contentEl.createDiv("dice-roller-results-container"),t=e.createDiv("dice-roller-results-header");t.createEl("h4",{text:"Results"}),new E1.ExtraButtonComponent(t.createDiv("clear-all")).setIcon("trash").setTooltip("Clear All").onClick(()=>{this.resultEl.empty(),this.resultEl.append(this.noResultsEl)}),this.resultEl=e.createDiv("dice-roller-results"),this.noResultsEl=this.resultEl.createSpan({text:"No results yet! Roll some dice to get started :)"}),this.buildButtons(),this.buildFormula()}buildButtons(){this.gridEl.empty();let e=this.gridEl.createDiv("dice-buttons");for(let o in this.dice){let l=new E1.ExtraButtonComponent(e.createDiv("dice-button")).setIcon(o);l.extraSettingsEl.onclick=async c=>{let u=c.getModifierState("Shift")?-1:1;this.dice[o]+=u,this.setFormula();let f=await this.plugin.getRoller(this.formulaComponent.inputEl.value,"view");f instanceof H2&&(this.stack=f)}}let t=this.gridEl.createDiv("advantage-disadvantage"),i=new E1.ButtonComponent(t).setButtonText("ADV").onClick(()=>{this.adv=!this.adv,this.dis=!1,this.adv?(i.setCta(),a.removeCta()):i.removeCta(),this.setFormula()}),a=new E1.ButtonComponent(t).setButtonText("DIS").onClick(()=>{this.dis=!this.dis,this.dis?(a.setCta(),i.removeCta()):a.removeCta(),this.adv=!1,this.setFormula()}),r=this.gridEl.createDiv("dice-context").createDiv("add-subtract");new E1.ExtraButtonComponent(r).setIcon("dice-roller-minus").onClick(()=>{this.add-=1,s.setValue(`${this.add}`),this.setFormula()});let s=new E1.TextComponent(r).setValue(`${this.add?this.add:""}`).onChange(o=>{isNaN(Number(o))||(this.add=Number(o)),this.setFormula()});if(new E1.ExtraButtonComponent(r).setIcon("dice-roller-plus").onClick(()=>{this.add+=1,s.setValue(`${this.add}`),this.setFormula()}),this.customFormulas.length){let o=this.gridEl.createDiv("dice-roller-results-container");o.createDiv("dice-roller-results-header").createEl("h4",{text:"Saved Formulas"});for(let c of this.customFormulas){let u=o.createDiv("dice-custom-formula-container"),f=u.createDiv("dice-custom-formula");new E1.ExtraButtonComponent(f).setIcon(Le).setTooltip("Roll").onClick(()=>this.roll(c)),f.createSpan({text:c}),new E1.ExtraButtonComponent(u).setIcon("trash").setTooltip("Remove").onClick(()=>{this.plugin.data.customFormulas=this.plugin.data.customFormulas.filter(h=>h!=c),this.plugin.saveSettings(),this.buildButtons()})}}}async roll(e=this.formulaComponent.inputEl.value){if(!e)return;this.rollButton.setDisabled(!0);let t=await this.plugin.getRoller(e,"view");if(!(t instanceof H2)){new E1.Notice("The Dice View only supports dice rolls.");return}if(await t.roll(),!t.dice.length){new E1.Notice("Invalid formula.");return}try{this.plugin.data.renderer&&(this.addChild(this.renderer),this.renderer.setDice(t),await this.renderer.start(),t.recalculate())}catch(i){new E1.Notice("There was an error rendering the roll."),console.error(i)}this.rollButton.setDisabled(!1),this.addResult({result:t.result,original:t.original,resultText:t.resultText}),this.dice=Ke.DICE(),this.add=null,this.adv=!1,this.dis=!1,this.buildButtons(),this.setFormula()}buildFormula(){this.formulaEl.empty(),this.formulaComponent=new E1.TextAreaComponent(this.formulaEl).setPlaceholder("Dice Formula"),this.formulaComponent.onChange((0,E1.debounce)(async t=>{},500,!0));let e=this.formulaEl.createDiv("action-buttons");this.saveButton=new E1.ButtonComponent(e).setIcon("plus-with-circle").setCta().setTooltip("Save Formula").onClick(()=>this.save()),this.saveButton.buttonEl.addClass("dice-roller-roll"),this.rollButton=new E1.ButtonComponent(e).setIcon(Le).setCta().setTooltip("Roll").onClick(()=>this.roll()),this.rollButton.buttonEl.addClass("dice-roller-roll")}save(){!this.formulaComponent.inputEl.value||(this.plugin.data.customFormulas.push(this.formulaComponent.inputEl.value),this.buildButtons(),this.plugin.saveSettings())}addResult(e){this.noResultsEl&&this.noResultsEl.detach();let t=createDiv("view-result");t.createSpan({text:e.original}),t.createEl("strong",{text:`${e.result}`,attr:{"aria-label":e.resultText}});let i=t.createDiv("result-context");i.createEl("em",{text:new Date().toLocaleString()}),new E1.ExtraButtonComponent(i).setIcon("trash").onClick(()=>{t.detach(),this.resultEl.children.length===0&&this.resultEl.prepend(this.noResultsEl)}),new E1.ExtraButtonComponent(i).setIcon(De).setTooltip("Copy Result").onClick(async()=>{await navigator.clipboard.writeText(`${e.result}`)}).extraSettingsEl.addClass("dice-content-copy"),new E1.ExtraButtonComponent(i).setIcon(Le).setTooltip("Roll Again").onClick(()=>this.roll(e.original)).extraSettingsEl.addClass("dice-result-reroll"),this.resultEl.prepend(t)}get formulaString(){let e=[],t=Object.entries(this.dice).filter(([a,r])=>r!=0);if(!t.length)return"";t.sort((a,r)=>Number(r[0].slice(1))-Number(a[0].slice(1)));let i=t.shift();return e.push(`${i[1]}${i[0]}`),this.adv?e.push("kh"):this.dis&&e.push("dh"),t.length&&e.push(...t.map(([a,r])=>`${r>0?"+":"-"}${Math.abs(r)}${a}`)),this.add&&this.add!=0&&(e.push(this.add>0?"+":"-"),e.push(Math.abs(this.add))),e.join("")}setFormula(){this.formulaComponent.setValue(this.formulaString)}getDisplayText(){return"Dice Roller"}getViewType(){return g4}getIcon(){return Le}async onClose(){await super.onClose(),this.renderer.unload()}};var qt=Z2(require("obsidian"));var w2=class{constructor(e=[0,0,0,0,0,0,0,0,0]){this.elements=void 0,this.elements=e}identity(){let e=this.elements;e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1}setZero(){let e=this.elements;e[0]=0,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=0,e[6]=0,e[7]=0,e[8]=0}setTrace(e){let t=this.elements;t[0]=e.x,t[4]=e.y,t[8]=e.z}getTrace(e=new y){let t=this.elements;return e.x=t[0],e.y=t[4],e.z=t[8],e}vmult(e,t=new y){let i=this.elements,a=e.x,r=e.y,s=e.z;return t.x=i[0]*a+i[1]*r+i[2]*s,t.y=i[3]*a+i[4]*r+i[5]*s,t.z=i[6]*a+i[7]*r+i[8]*s,t}smult(e){for(let t=0;t0){let r=1/a;this.x*=r,this.y*=r,this.z*=r}else this.x=0,this.y=0,this.z=0;return a}unit(e=new y){let t=this.x,i=this.y,a=this.z,r=Math.sqrt(t*t+i*i+a*a);return r>0?(r=1/r,e.x=t*r,e.y=i*r,e.z=a*r):(e.x=1,e.y=0,e.z=0),e}length(){let e=this.x,t=this.y,i=this.z;return Math.sqrt(e*e+t*t+i*i)}lengthSquared(){return this.dot(this)}distanceTo(e){let t=this.x,i=this.y,a=this.z,r=e.x,s=e.y,o=e.z;return Math.sqrt((r-t)*(r-t)+(s-i)*(s-i)+(o-a)*(o-a))}distanceSquared(e){let t=this.x,i=this.y,a=this.z,r=e.x,s=e.y,o=e.z;return(r-t)*(r-t)+(s-i)*(s-i)+(o-a)*(o-a)}scale(e,t=new y){let i=this.x,a=this.y,r=this.z;return t.x=e*i,t.y=e*a,t.z=e*r,t}vmul(e,t=new y){return t.x=e.x*this.x,t.y=e.y*this.y,t.z=e.z*this.z,t}addScaledVector(e,t,i=new y){return i.x=this.x+e*t.x,i.y=this.y+e*t.y,i.z=this.z+e*t.z,i}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}isZero(){return this.x===0&&this.y===0&&this.z===0}negate(e=new y){return e.x=-this.x,e.y=-this.y,e.z=-this.z,e}tangents(e,t){let i=this.length();if(i>0){let a=Oc,r=1/i;a.set(this.x*r,this.y*r,this.z*r);let s=Gc;Math.abs(a.x)<.9?(s.set(1,0,0),a.cross(s,e)):(s.set(0,1,0),a.cross(s,e)),a.cross(e,t)}else e.set(1,0,0),t.set(0,1,0)}toString(){return this.x+","+this.y+","+this.z}toArray(){return[this.x,this.y,this.z]}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}lerp(e,t,i){let a=this.x,r=this.y,s=this.z;i.x=a+(e.x-a)*t,i.y=r+(e.y-r)*t,i.z=s+(e.z-s)*t}almostEquals(e,t=1e-6){return!(Math.abs(this.x-e.x)>t||Math.abs(this.y-e.y)>t||Math.abs(this.z-e.z)>t)}almostZero(e=1e-6){return!(Math.abs(this.x)>e||Math.abs(this.y)>e||Math.abs(this.z)>e)}isAntiparallelTo(e,t){return this.negate(wa),wa.almostEquals(e,t)}clone(){return new y(this.x,this.y,this.z)}};y.ZERO=void 0;y.UNIT_X=void 0;y.UNIT_Y=void 0;y.UNIT_Z=void 0;y.ZERO=new y(0,0,0);y.UNIT_X=new y(1,0,0);y.UNIT_Y=new y(0,1,0);y.UNIT_Z=new y(0,0,1);var Oc=new y,Gc=new y,wa=new y,_2=class{constructor(e={}){this.lowerBound=void 0,this.upperBound=void 0,this.lowerBound=new y,this.upperBound=new y,e.lowerBound&&this.lowerBound.copy(e.lowerBound),e.upperBound&&this.upperBound.copy(e.upperBound)}setFromPoints(e,t,i,a){let r=this.lowerBound,s=this.upperBound,o=i;r.copy(e[0]),o&&o.vmult(r,r),s.copy(r);for(let l=1;ls.x&&(s.x=c.x),c.xs.y&&(s.y=c.y),c.ys.z&&(s.z=c.z),c.z=r.x&&t.y<=a.y&&i.y>=r.y&&t.z<=a.z&&i.z>=r.z}getCorners(e,t,i,a,r,s,o,l){let c=this.lowerBound,u=this.upperBound;e.copy(c),t.set(u.x,c.y,c.z),i.set(u.x,u.y,c.z),a.set(c.x,u.y,u.z),r.set(u.x,c.y,u.z),s.set(c.x,u.y,c.z),o.set(c.x,c.y,u.z),l.copy(u)}toLocalFrame(e,t){let i=Sa,a=i[0],r=i[1],s=i[2],o=i[3],l=i[4],c=i[5],u=i[6],f=i[7];this.getCorners(a,r,s,o,l,c,u,f);for(let h=0;h!==8;h++){let m=i[h];e.pointToLocal(m,m)}return t.setFromPoints(i)}toWorldFrame(e,t){let i=Sa,a=i[0],r=i[1],s=i[2],o=i[3],l=i[4],c=i[5],u=i[6],f=i[7];this.getCorners(a,r,s,o,l,c,u,f);for(let h=0;h!==8;h++){let m=i[h];e.pointToWorld(m,m)}return t.setFromPoints(i)}overlapsRay(e){let{direction:t,from:i}=e,a=1/t.x,r=1/t.y,s=1/t.z,o=(this.lowerBound.x-i.x)*a,l=(this.upperBound.x-i.x)*a,c=(this.lowerBound.y-i.y)*r,u=(this.upperBound.y-i.y)*r,f=(this.lowerBound.z-i.z)*s,h=(this.upperBound.z-i.z)*s,m=Math.max(Math.max(Math.min(o,l),Math.min(c,u)),Math.min(f,h)),v=Math.min(Math.min(Math.max(o,l),Math.max(c,u)),Math.max(f,h));return!(v<0||m>v)}},_a=new y,Sa=[new y,new y,new y,new y,new y,new y,new y,new y],R0=class{constructor(){this.matrix=void 0,this.matrix=[]}get(e,t){let{index:i}=e,{index:a}=t;if(a>i){let r=a;a=i,i=r}return this.matrix[(i*(i+1)>>1)+a-1]}set(e,t,i){let{index:a}=e,{index:r}=t;if(r>a){let s=r;r=a,a=s}this.matrix[(a*(a+1)>>1)+r-1]=i?1:0}reset(){for(let e=0,t=this.matrix.length;e!==t;e++)this.matrix[e]=0}setNumObjects(e){this.matrix.length=e*(e-1)>>1}},F0=class{constructor(){this._listeners=void 0}addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let i=this._listeners;return i[e]===void 0&&(i[e]=[]),i[e].includes(t)||i[e].push(t),this}hasEventListener(e,t){if(this._listeners===void 0)return!1;let i=this._listeners;return!!(i[e]!==void 0&&i[e].includes(t))}hasAnyEventListener(e){return this._listeners===void 0?!1:this._listeners[e]!==void 0}removeEventListener(e,t){if(this._listeners===void 0)return this;let i=this._listeners;if(i[e]===void 0)return this;let a=i[e].indexOf(t);return a!==-1&&i[e].splice(a,1),this}dispatchEvent(e){if(this._listeners===void 0)return this;let i=this._listeners[e.type];if(i!==void 0){e.target=this;for(let a=0,r=i.length;a.499&&(i=2*Math.atan2(s,c),a=Math.PI/2,r=0),u<-.499&&(i=-2*Math.atan2(s,c),a=-Math.PI/2,r=0),i===void 0){let f=s*s,h=o*o,m=l*l;i=Math.atan2(2*o*c-2*s*l,1-2*h-2*m),a=Math.asin(2*u),r=Math.atan2(2*s*c-2*o*l,1-2*f-2*m)}break;default:throw new Error("Euler order "+t+" not supported yet.")}e.y=i,e.z=a,e.x=r}setFromEuler(e,t,i,a="XYZ"){let r=Math.cos(e/2),s=Math.cos(t/2),o=Math.cos(i/2),l=Math.sin(e/2),c=Math.sin(t/2),u=Math.sin(i/2);return a==="XYZ"?(this.x=l*s*o+r*c*u,this.y=r*c*o-l*s*u,this.z=r*s*u+l*c*o,this.w=r*s*o-l*c*u):a==="YXZ"?(this.x=l*s*o+r*c*u,this.y=r*c*o-l*s*u,this.z=r*s*u-l*c*o,this.w=r*s*o+l*c*u):a==="ZXY"?(this.x=l*s*o-r*c*u,this.y=r*c*o+l*s*u,this.z=r*s*u+l*c*o,this.w=r*s*o-l*c*u):a==="ZYX"?(this.x=l*s*o-r*c*u,this.y=r*c*o+l*s*u,this.z=r*s*u-l*c*o,this.w=r*s*o+l*c*u):a==="YZX"?(this.x=l*s*o+r*c*u,this.y=r*c*o+l*s*u,this.z=r*s*u-l*c*o,this.w=r*s*o-l*c*u):a==="XZY"&&(this.x=l*s*o-r*c*u,this.y=r*c*o-l*s*u,this.z=r*s*u+l*c*o,this.w=r*s*o+l*c*u),this}clone(){return new O1(this.x,this.y,this.z,this.w)}slerp(e,t,i=new O1){let a=this.x,r=this.y,s=this.z,o=this.w,l=e.x,c=e.y,u=e.z,f=e.w,h,m,v,g,x;return m=a*l+r*c+s*u+o*f,m<0&&(m=-m,l=-l,c=-c,u=-u,f=-f),1-m>1e-6?(h=Math.acos(m),v=Math.sin(h),g=Math.sin((1-t)*h)/v,x=Math.sin(t*h)/v):(g=1-t,x=t),i.x=g*a+x*l,i.y=g*r+x*c,i.z=g*s+x*u,i.w=g*o+x*f,i}integrate(e,t,i,a=new O1){let r=e.x*i.x,s=e.y*i.y,o=e.z*i.z,l=this.x,c=this.y,u=this.z,f=this.w,h=t*.5;return a.x+=h*(r*f+s*u-o*c),a.y+=h*(s*f+o*l-r*u),a.z+=h*(o*f+r*c-s*l),a.w+=h*(-r*l-s*c-o*u),a}},qc=new y,Wc=new y,jc={SPHERE:1,PLANE:2,BOX:4,COMPOUND:8,CONVEXPOLYHEDRON:16,HEIGHTFIELD:32,PARTICLE:64,CYLINDER:128,TRIMESH:256},c1=class{constructor(e={}){this.id=void 0,this.type=void 0,this.boundingSphereRadius=void 0,this.collisionResponse=void 0,this.collisionFilterGroup=void 0,this.collisionFilterMask=void 0,this.material=void 0,this.body=void 0,this.id=c1.idCounter++,this.type=e.type||0,this.boundingSphereRadius=0,this.collisionResponse=e.collisionResponse?e.collisionResponse:!0,this.collisionFilterGroup=e.collisionFilterGroup!==void 0?e.collisionFilterGroup:1,this.collisionFilterMask=e.collisionFilterMask!==void 0?e.collisionFilterMask:-1,this.material=e.material?e.material:null,this.body=null}updateBoundingSphereRadius(){throw"computeBoundingSphereRadius() not implemented for shape type "+this.type}volume(){throw"volume() not implemented for shape type "+this.type}calculateLocalInertia(e,t){throw"calculateLocalInertia() not implemented for shape type "+this.type}calculateWorldAABB(e,t,i,a){throw"calculateWorldAABB() not implemented for shape type "+this.type}};c1.idCounter=0;c1.types=jc;var N1=class{constructor(e={}){this.position=void 0,this.quaternion=void 0,this.position=new y,this.quaternion=new O1,e.position&&this.position.copy(e.position),e.quaternion&&this.quaternion.copy(e.quaternion)}pointToLocal(e,t){return N1.pointToLocalFrame(this.position,this.quaternion,e,t)}pointToWorld(e,t){return N1.pointToWorldFrame(this.position,this.quaternion,e,t)}vectorToWorldFrame(e,t=new y){return this.quaternion.vmult(e,t),t}static pointToLocalFrame(e,t,i,a=new y){return i.vsub(e,a),t.conjugate(Ea),Ea.vmult(a,a),a}static pointToWorldFrame(e,t,i,a=new y){return t.vmult(i,a),a.vadd(e,a),a}static vectorToWorldFrame(e,t,i=new y){return e.vmult(t,i),i}static vectorToLocalFrame(e,t,i,a=new y){return t.w*=-1,t.vmult(i,a),t.w*=-1,a}},Ea=new O1,Je=class extends c1{constructor(e={}){let{vertices:t=[],faces:i=[],normals:a=[],axes:r,boundingSphereRadius:s}=e;super({type:c1.types.CONVEXPOLYHEDRON});this.vertices=void 0,this.faces=void 0,this.faceNormals=void 0,this.worldVertices=void 0,this.worldVerticesNeedsUpdate=void 0,this.worldFaceNormals=void 0,this.worldFaceNormalsNeedsUpdate=void 0,this.uniqueAxes=void 0,this.uniqueEdges=void 0,this.vertices=t,this.faces=i,this.faceNormals=a,this.faceNormals.length===0&&this.computeNormals(),s?this.boundingSphereRadius=s:this.updateBoundingSphereRadius(),this.worldVertices=[],this.worldVerticesNeedsUpdate=!0,this.worldFaceNormals=[],this.worldFaceNormalsNeedsUpdate=!0,this.uniqueAxes=r?r.slice():null,this.uniqueEdges=[],this.computeEdges()}computeEdges(){let e=this.faces,t=this.vertices,i=this.uniqueEdges;i.length=0;let a=new y;for(let r=0;r!==e.length;r++){let s=e[r],o=s.length;for(let l=0;l!==o;l++){let c=(l+1)%o;t[s[l]].vsub(t[s[c]],a),a.normalize();let u=!1;for(let f=0;f!==i.length;f++)if(i[f].almostEquals(a)||i[f].almostEquals(a)){u=!0;break}u||i.push(a.clone())}}}computeNormals(){this.faceNormals.length=this.faces.length;for(let e=0;eh&&(h=g,f=v)}let m=[];for(let v=0;v=0&&this.clipFaceAgainstHull(s,e,t,m,o,l,c)}findSeparatingAxis(e,t,i,a,r,s,o,l){let c=new y,u=new y,f=new y,h=new y,m=new y,v=new y,g=Number.MAX_VALUE,x=this;if(x.uniqueAxes)for(let p=0;p!==x.uniqueAxes.length;p++){i.vmult(x.uniqueAxes[p],c);let d=x.testSepAxis(c,e,t,i,a,r);if(d===!1)return!1;d0&&s.negate(s),!0}testSepAxis(e,t,i,a,r,s){let o=this;Je.project(o,e,i,a,B0),Je.project(t,e,r,s,P0);let l=B0[0],c=B0[1],u=P0[0],f=P0[1];if(l0?1/t:0,this.material=e.material||null,this.linearDamping=typeof e.linearDamping=="number"?e.linearDamping:.01,this.type=t<=0?i1.STATIC:i1.DYNAMIC,typeof e.type==typeof i1.STATIC&&(this.type=e.type),this.allowSleep=typeof e.allowSleep!="undefined"?e.allowSleep:!0,this.sleepState=i1.AWAKE,this.sleepSpeedLimit=typeof e.sleepSpeedLimit!="undefined"?e.sleepSpeedLimit:.1,this.sleepTimeLimit=typeof e.sleepTimeLimit!="undefined"?e.sleepTimeLimit:1,this.timeLastSleepy=0,this.wakeUpAfterNarrowphase=!1,this.torque=new y,this.quaternion=new O1,this.initQuaternion=new O1,this.previousQuaternion=new O1,this.interpolatedQuaternion=new O1,e.quaternion&&(this.quaternion.copy(e.quaternion),this.initQuaternion.copy(e.quaternion),this.previousQuaternion.copy(e.quaternion),this.interpolatedQuaternion.copy(e.quaternion)),this.angularVelocity=new y,e.angularVelocity&&this.angularVelocity.copy(e.angularVelocity),this.initAngularVelocity=new y,this.shapes=[],this.shapeOffsets=[],this.shapeOrientations=[],this.inertia=new y,this.invInertia=new y,this.invInertiaWorld=new w2,this.invMassSolve=0,this.invInertiaSolve=new y,this.invInertiaWorldSolve=new w2,this.fixedRotation=typeof e.fixedRotation!="undefined"?e.fixedRotation:!1,this.angularDamping=typeof e.angularDamping!="undefined"?e.angularDamping:.01,this.linearFactor=new y(1,1,1),e.linearFactor&&this.linearFactor.copy(e.linearFactor),this.angularFactor=new y(1,1,1),e.angularFactor&&this.angularFactor.copy(e.angularFactor),this.aabb=new _2,this.aabbNeedsUpdate=!0,this.boundingRadius=0,this.wlambda=new y,this.isTrigger=Boolean(e.isTrigger),e.shape&&this.addShape(e.shape),this.updateMassProperties()}wakeUp(){let e=this.sleepState;this.sleepState=i1.AWAKE,this.wakeUpAfterNarrowphase=!1,e===i1.SLEEPING&&this.dispatchEvent(i1.wakeupEvent)}sleep(){this.sleepState=i1.SLEEPING,this.velocity.set(0,0,0),this.angularVelocity.set(0,0,0),this.wakeUpAfterNarrowphase=!1}sleepTick(e){if(this.allowSleep){let t=this.sleepState,i=this.velocity.lengthSquared()+this.angularVelocity.lengthSquared(),a=this.sleepSpeedLimit**2;t===i1.AWAKE&&ia?this.wakeUp():t===i1.SLEEPY&&e-this.timeLastSleepy>this.sleepTimeLimit&&(this.sleep(),this.dispatchEvent(i1.sleepEvent))}}updateSolveMassProperties(){this.sleepState===i1.SLEEPING||this.type===i1.KINEMATIC?(this.invMassSolve=0,this.invInertiaSolve.setZero(),this.invInertiaWorldSolve.setZero()):(this.invMassSolve=this.invMass,this.invInertiaSolve.copy(this.invInertia),this.invInertiaWorldSolve.copy(this.invInertiaWorld))}pointToLocalFrame(e,t=new y){return e.vsub(this.position,t),this.quaternion.conjugate().vmult(t,t),t}vectorToLocalFrame(e,t=new y){return this.quaternion.conjugate().vmult(e,t),t}pointToWorldFrame(e,t=new y){return this.quaternion.vmult(e,t),t.vadd(this.position,t),t}vectorToWorldFrame(e,t=new y){return this.quaternion.vmult(e,t),t}addShape(e,t,i){let a=new y,r=new O1;return t&&a.copy(t),i&&r.copy(i),this.shapes.push(e),this.shapeOffsets.push(a),this.shapeOrientations.push(r),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0,e.body=this,this}removeShape(e){let t=this.shapes.indexOf(e);return t===-1?(console.warn("Shape does not belong to the body"),this):(this.shapes.splice(t,1),this.shapeOffsets.splice(t,1),this.shapeOrientations.splice(t,1),this.updateMassProperties(),this.updateBoundingRadius(),this.aabbNeedsUpdate=!0,e.body=null,this)}updateBoundingRadius(){let e=this.shapes,t=this.shapeOffsets,i=e.length,a=0;for(let r=0;r!==i;r++){let s=e[r];s.updateBoundingSphereRadius();let o=t[r].length(),l=s.boundingSphereRadius;o+l>a&&(a=o+l)}this.boundingRadius=a}updateAABB(){let e=this.shapes,t=this.shapeOffsets,i=this.shapeOrientations,a=e.length,r=Yc,s=$c,o=this.quaternion,l=this.aabb,c=Kc;for(let u=0;u!==a;u++){let f=e[u];o.vmult(t[u],r),r.vadd(this.position,r),o.mult(i[u],s),f.calculateWorldAABB(r,s,c.lowerBound,c.upperBound),u===0?l.copy(c):l.extend(c)}this.aabbNeedsUpdate=!1}updateInertiaWorld(e){let t=this.invInertia;if(!(t.x===t.y&&t.y===t.z&&!e)){let i=Jc,a=Qc;i.setRotationFromQuaternion(this.quaternion),i.transpose(a),i.scale(t,i),i.mmult(a,this.invInertiaWorld)}}applyForce(e,t=new y){if(this.type!==i1.DYNAMIC)return;this.sleepState===i1.SLEEPING&&this.wakeUp();let i=e7;t.cross(e,i),this.force.vadd(e,this.force),this.torque.vadd(i,this.torque)}applyLocalForce(e,t=new y){if(this.type!==i1.DYNAMIC)return;let i=t7,a=i7;this.vectorToWorldFrame(e,i),this.vectorToWorldFrame(t,a),this.applyForce(i,a)}applyTorque(e){this.type===i1.DYNAMIC&&(this.sleepState===i1.SLEEPING&&this.wakeUp(),this.torque.vadd(e,this.torque))}applyImpulse(e,t=new y){if(this.type!==i1.DYNAMIC)return;this.sleepState===i1.SLEEPING&&this.wakeUp();let i=t,a=a7;a.copy(e),a.scale(this.invMass,a),this.velocity.vadd(a,this.velocity);let r=r7;i.cross(e,r),this.invInertiaWorld.vmult(r,r),this.angularVelocity.vadd(r,this.angularVelocity)}applyLocalImpulse(e,t=new y){if(this.type!==i1.DYNAMIC)return;let i=n7,a=s7;this.vectorToWorldFrame(e,i),this.vectorToWorldFrame(t,a),this.applyImpulse(i,a)}updateMassProperties(){let e=o7;this.invMass=this.mass>0?1/this.mass:0;let t=this.inertia,i=this.fixedRotation;this.updateAABB(),e.set((this.aabb.upperBound.x-this.aabb.lowerBound.x)/2,(this.aabb.upperBound.y-this.aabb.lowerBound.y)/2,(this.aabb.upperBound.z-this.aabb.lowerBound.z)/2),u6.calculateInertia(e,this.mass,t),this.invInertia.set(t.x>0&&!i?1/t.x:0,t.y>0&&!i?1/t.y:0,t.z>0&&!i?1/t.z:0),this.updateInertiaWorld(!0)}getVelocityAtWorldPoint(e,t){let i=new y;return e.vsub(this.position,i),this.angularVelocity.cross(i,t),this.velocity.vadd(t,t),t}integrate(e,t,i){if(this.previousPosition.copy(this.position),this.previousQuaternion.copy(this.quaternion),!(this.type===i1.DYNAMIC||this.type===i1.KINEMATIC)||this.sleepState===i1.SLEEPING)return;let a=this.velocity,r=this.angularVelocity,s=this.position,o=this.force,l=this.torque,c=this.quaternion,u=this.invMass,f=this.invInertiaWorld,h=this.linearFactor,m=u*e;a.x+=o.x*m*h.x,a.y+=o.y*m*h.y,a.z+=o.z*m*h.z;let v=f.elements,g=this.angularFactor,x=l.x*g.x,p=l.y*g.y,d=l.z*g.z;r.x+=e*(v[0]*x+v[1]*p+v[2]*d),r.y+=e*(v[3]*x+v[4]*p+v[5]*d),r.z+=e*(v[6]*x+v[7]*p+v[8]*d),s.x+=a.x*e,s.y+=a.y*e,s.z+=a.z*e,c.integrate(this.angularVelocity,e,this.angularFactor,c),t&&(i?c.normalizeFast():c.normalize()),this.aabbNeedsUpdate=!0,this.updateInertiaWorld()}};i1.idCounter=0;i1.COLLIDE_EVENT_NAME="collide";i1.DYNAMIC=I0.DYNAMIC;i1.STATIC=I0.STATIC;i1.KINEMATIC=I0.KINEMATIC;i1.AWAKE=k0.AWAKE;i1.SLEEPY=k0.SLEEPY;i1.SLEEPING=k0.SLEEPING;i1.wakeupEvent={type:"wakeup"};i1.sleepyEvent={type:"sleepy"};i1.sleepEvent={type:"sleep"};var Yc=new y,$c=new O1,Kc=new _2,Jc=new w2,Qc=new w2,e7=new y,t7=new y,i7=new y,a7=new y,r7=new y,n7=new y,s7=new y,o7=new y,La=class{constructor(){this.world=void 0,this.useBoundingBoxes=void 0,this.dirty=void 0,this.world=null,this.useBoundingBoxes=!1,this.dirty=!0}collisionPairs(e,t,i){throw new Error("collisionPairs not implemented for this BroadPhase class!")}needBroadphaseCollision(e,t){return!((e.collisionFilterGroup&t.collisionFilterMask)==0||(t.collisionFilterGroup&e.collisionFilterMask)==0||((e.type&i1.STATIC)!=0||e.sleepState===i1.SLEEPING)&&((t.type&i1.STATIC)!=0||t.sleepState===i1.SLEEPING))}intersectionTest(e,t,i,a){this.useBoundingBoxes?this.doBoundingBoxBroadphase(e,t,i,a):this.doBoundingSphereBroadphase(e,t,i,a)}doBoundingSphereBroadphase(e,t,i,a){let r=c7;t.position.vsub(e.position,r);let s=(e.boundingRadius+t.boundingRadius)**2;r.lengthSquared()i.lengthSquared()}aabbQuery(e,t,i){return console.warn(".aabbQuery is not implemented in this Broadphase subclass."),[]}},c7=new y,l7={keys:[]},u7=[],h7=[];var uf=new y,h6=class extends La{constructor(){super()}collisionPairs(e,t,i){let a=e.bodies,r=a.length,s,o;for(let l=0;l!==r;l++)for(let c=0;c!==l;c++)s=a[l],o=a[c],!!this.needBroadphaseCollision(s,o)&&this.intersectionTest(s,o,t,i)}aabbQuery(e,t,i=[]){for(let a=0;a{}}intersectWorld(e,t){return this.mode=t.mode||J1.ANY,this.result=t.result||new f6,this.skipBackfaces=!!t.skipBackfaces,this.collisionFilterMask=typeof t.collisionFilterMask!="undefined"?t.collisionFilterMask:-1,this.collisionFilterGroup=typeof t.collisionFilterGroup!="undefined"?t.collisionFilterGroup:-1,this.checkCollisionResponse=typeof t.checkCollisionResponse!="undefined"?t.checkCollisionResponse:!0,t.from&&this.from.copy(t.from),t.to&&this.to.copy(t.to),this.callback=t.callback||(()=>{}),this.hasHit=!1,this.result.reset(),this.updateDirection(),this.getAABB(Ba),O0.length=0,e.broadphase.aabbQuery(e,Ba,O0),this.intersectBodies(O0),this.hasHit}intersectBody(e,t){t&&(this.result=t,this.updateDirection());let i=this.checkCollisionResponse;if(i&&!e.collisionResponse||(this.collisionFilterGroup&e.collisionFilterMask)==0||(e.collisionFilterGroup&this.collisionFilterMask)==0)return;let a=f7,r=d7;for(let s=0,o=e.shapes.length;se.boundingSphereRadius)return;let o=this[e.type];o&&o.call(this,e,t,i,a,e)}_intersectBox(e,t,i,a,r){return this._intersectConvex(e.convexPolyhedronRepresentation,t,i,a,r)}_intersectPlane(e,t,i,a,r){let s=this.from,o=this.to,l=this.direction,c=new y(0,0,1);t.vmult(c,c);let u=new y;s.vsub(i,u);let f=u.dot(c);o.vsub(i,u);let h=u.dot(c);if(f*h>0||s.distanceTo(o)=0&&g<=1&&(s.lerp(o,g,m),m.vsub(i,v),v.normalize(),this.reportIntersection(v,m,r,a,-1)),this.result.shouldStop)return;x>=0&&x<=1&&(s.lerp(o,x,m),m.vsub(i,v),v.normalize(),this.reportIntersection(v,m,r,a,-1))}}_intersectConvex(e,t,i,a,r,s){let o=x7,l=Ia,c=s&&s.faceList||null,u=e.faces,f=e.vertices,h=e.faceNormals,m=this.direction,v=this.from,g=this.to,x=v.distanceTo(g),p=c?c.length:u.length,d=this.result;for(let z=0;!d.shouldStop&&zx||this.reportIntersection(o,S2,r,a,b)}}}}_intersectTrimesh(e,t,i,a,r,s){let o=M7,l=w7,c=_7,u=Ia,f=b7,h=y7,m=C7,v=A7,g=z7,x=e.indices;e.vertices;let p=this.from,d=this.to,z=this.direction;c.position.copy(i),c.quaternion.copy(t),N1.vectorToLocalFrame(i,t,z,f),N1.pointToLocalFrame(i,t,p,h),N1.pointToLocalFrame(i,t,d,m),m.x*=e.scale.x,m.y*=e.scale.y,m.z*=e.scale.z,h.x*=e.scale.x,h.y*=e.scale.y,h.z*=e.scale.z,m.vsub(h,f),f.normalize();let b=h.distanceSquared(m);e.tree.rayQuery(this,c,l);for(let C=0,E=l.length;!this.result.shouldStop&&C!==E;C++){let T=l[C];e.getNormal(T,o),e.getVertex(x[T*3],Y2),Y2.vsub(h,u);let _=f.dot(o),P=o.dot(u)/_;if(P<0)continue;f.scale(P,S2),S2.vadd(h,S2),e.getVertex(x[T*3+1],me),e.getVertex(x[T*3+2],ve);let F=S2.distanceSquared(h);!(J1.pointInTriangle(S2,me,Y2,ve)||J1.pointInTriangle(S2,Y2,me,ve))||F>b||(N1.vectorToWorldFrame(t,o,g),N1.pointToWorldFrame(i,t,S2,v),this.reportIntersection(g,v,r,a,T))}l.length=0}reportIntersection(e,t,i,a,r){let s=this.from,o=this.to,l=s.distanceTo(t),c=this.result;if(!(this.skipBackfaces&&e.dot(this.direction)>0))switch(c.hitFaceIndex=typeof r!="undefined"?r:-1,this.mode){case J1.ALL:this.hasHit=!0,c.set(s,o,e,t,i,a,l),c.hasHit=!0,this.callback(c);break;case J1.CLOSEST:(l=0&&(f=r*c-s*o)>=0&&u+fT.maxForce&&(m=T.maxForce-x),z[E]+=m,v+=m>0?m:-m,T.addToWlambda(m)}if(v*ve;)t.pop();for(;t.length=0&&u.restitution>=0&&(o.restitution=c.restitution*u.restitution),o.si=r||i,o.sj=s||a,o}createFrictionEquationsFromContact(e,t){let i=e.bi,a=e.bj,r=e.si,s=e.sj,o=this.world,l=this.currentContactMaterial,c=l.friction,u=r.material||i.material,f=s.material||a.material;if(u&&f&&u.friction>=0&&f.friction>=0&&(c=u.friction*f.friction),c>0){let h=c*o.gravity.length(),m=i.invMass+a.invMass;m>0&&(m=1/m);let v=this.frictionEquationPool,g=v.length?v.pop():new j0(i,a,h*m),x=v.length?v.pop():new j0(i,a,h*m);return g.bi=x.bi=i,g.bj=x.bj=a,g.minForce=x.minForce=-h*m,g.maxForce=x.maxForce=h*m,g.ri.copy(e.ri),g.rj.copy(e.rj),x.ri.copy(e.ri),x.rj.copy(e.rj),e.ni.tangents(g.t,x.t),g.setSpookParams(l.frictionEquationStiffness,l.frictionEquationRelaxation,o.dt),x.setSpookParams(l.frictionEquationStiffness,l.frictionEquationRelaxation,o.dt),g.enabled=x.enabled=e.enabled,t.push(g,x),!0}return!1}createFrictionFromAverage(e){let t=this.result[this.result.length-1];if(!this.createFrictionEquationsFromContact(t,this.frictionResult)||e===1)return;let i=this.frictionResult[this.frictionResult.length-2],a=this.frictionResult[this.frictionResult.length-1];M4.setZero(),I4.setZero(),k4.setZero();let r=t.bi;t.bj;for(let o=0;o!==e;o++)t=this.result[this.result.length-1-o],t.bi!==r?(M4.vadd(t.ni,M4),I4.vadd(t.ri,I4),k4.vadd(t.rj,k4)):(M4.vsub(t.ni,M4),I4.vadd(t.rj,I4),k4.vadd(t.ri,k4));let s=1/e;I4.scale(s,i.ri),k4.scale(s,i.rj),a.ri.copy(i.ri),a.rj.copy(i.rj),M4.normalize(),M4.tangents(i.t,a.t)}getContacts(e,t,i,a,r,s,o){this.contactPointPool=r,this.frictionEquationPool=o,this.result=a,this.frictionResult=s;let l=q7,c=W7,u=O7,f=G7;for(let h=0,m=e.length;h!==m;h++){let v=e[h],g=t[h],x=null;v.material&&g.material&&(x=i.getContactMaterial(v.material,g.material)||null);let p=v.type&i1.KINEMATIC&&g.type&i1.STATIC||v.type&i1.STATIC&&g.type&i1.KINEMATIC||v.type&i1.KINEMATIC&&g.type&i1.KINEMATIC;for(let d=0;dz.boundingSphereRadius+C.boundingSphereRadius)continue;let E=null;z.material&&C.material&&(E=i.getContactMaterial(z.material,C.material)||null),this.currentContactMaterial=E||x||i.defaultContactMaterial;let T=z.type|C.type,_=this[T];if(_){let P=!1;z.type0){let W=ml,X=vl;W.copy(m[(L+1)%3]),X.copy(m[(L+2)%3]);let Q=W.length(),a1=X.length();W.normalize(),X.normalize();let B=x6.dot(W),M1=x6.dot(X);if(B-Q&&M1-a1){let u1=Math.abs(O-Z-v);if((T===null||u1e.boundingSphereRadius+t.boundingSphereRadius)&&e.findSeparatingAxis(t,i,r,a,s,v,h,m)){let g=[],x=Bl;e.clipAgainstHull(i,r,t,a,s,v,-100,100,g);let p=0;for(let d=0;d!==g.length;d++){if(f)return!0;let z=this.createContactEquation(o,l,e,t,c,u),b=z.ri,C=z.rj;v.negate(z.ni),g[d].normal.negate(x),x.scale(g[d].depth,x),g[d].point.vadd(x,b),C.copy(g[d].point),b.vsub(i,b),C.vsub(a,C),b.vadd(i,b),b.vsub(o.position,b),C.vadd(a,C),C.vsub(l.position,C),this.result.push(z),p++,this.enableFrictionReduction||this.createFrictionEquationsFromContact(z,this.frictionResult)}this.enableFrictionReduction&&p&&this.createFrictionFromAverage(p)}}sphereConvex(e,t,i,a,r,s,o,l,c,u,f){let h=this.v3pool;i.vsub(a,Cl);let m=t.faceNormals,v=t.faces,g=t.vertices,x=e.radius,p=!1;for(let d=0;d!==g.length;d++){let z=g[d],b=_l;s.vmult(z,b),a.vadd(b,b);let C=wl;if(b.vsub(i,C),C.lengthSquared()0){let D=[];for(let A=0,H=C.length;A!==H;A++){let V=h.get();s.vmult(g[C[A]],V),a.vadd(V,V),D.push(V)}if(dl(D,E,i)){if(f)return!0;p=!0;let A=this.createContactEquation(o,l,e,t,c,u);E.scale(-x,A.ri),E.negate(A.ni);let H=h.get();E.scale(-F,H);let V=h.get();E.scale(-x,V),i.vsub(a,A.rj),A.rj.vadd(V,A.rj),A.rj.vadd(H,A.rj),A.rj.vadd(a,A.rj),A.rj.vsub(l.position,A.rj),A.ri.vadd(i,A.ri),A.ri.vsub(o.position,A.ri),h.release(H),h.release(V),this.result.push(A),this.createFrictionEquationsFromContact(A,this.frictionResult);for(let L=0,N=D.length;L!==N;L++)h.release(D[L]);return}else for(let A=0;A!==C.length;A++){let H=h.get(),V=h.get();s.vmult(g[C[(A+1)%C.length]],H),s.vmult(g[C[(A+2)%C.length]],V),a.vadd(H,H),a.vadd(V,V);let L=zl;V.vsub(H,L);let N=Al;L.unit(N);let U=h.get(),Z=h.get();i.vsub(H,Z);let O=Z.dot(N);N.scale(O,U),U.vadd(H,U);let W=h.get();if(U.vsub(i,W),O>0&&O*Oh.length||z>h[0].length)return;p<0&&(p=0),d<0&&(d=0),z<0&&(z=0),b<0&&(b=0),p>=h.length&&(p=h.length-1),d>=h.length&&(d=h.length-1),b>=h[0].length&&(b=h[0].length-1),z>=h[0].length&&(z=h[0].length-1);let C=[];t.getRectMinMax(p,z,d,b,C);let E=C[0],T=C[1];if(x.z-m>T||x.z+m2)return}}boxHeightfield(e,t,i,a,r,s,o,l,c,u,f){return e.convexPolyhedronRepresentation.material=e.material,e.convexPolyhedronRepresentation.collisionResponse=e.collisionResponse,this.convexHeightfield(e.convexPolyhedronRepresentation,t,i,a,r,s,o,l,e,t,f)}convexHeightfield(e,t,i,a,r,s,o,l,c,u,f){let h=t.data,m=t.elementSize,v=e.boundingSphereRadius,g=jl,x=Xl,p=Wl;N1.pointToLocalFrame(a,s,i,p);let d=Math.floor((p.x-v)/m)-1,z=Math.ceil((p.x+v)/m)+1,b=Math.floor((p.y-v)/m)-1,C=Math.ceil((p.y+v)/m)+1;if(z<0||C<0||d>h.length||b>h[0].length)return;d<0&&(d=0),z<0&&(z=0),b<0&&(b=0),C<0&&(C=0),d>=h.length&&(d=h.length-1),z>=h.length&&(z=h.length-1),C>=h[0].length&&(C=h[0].length-1),b>=h[0].length&&(b=h[0].length-1);let E=[];t.getRectMinMax(d,b,z,C,E);let T=E[0],_=E[1];if(!(p.z-v>_||p.z+v0&&V<0&&(x.vsub(h,p),g.copy(v),g.normalize(),L=p.dot(g),g.scale(L,p),p.vadd(h,p),p.distanceTo(x)0&&i===!0||u<=0&&i===!1){i===null&&(i=u>0);continue}else return!1}return!0}var x6=new y,pl=new y,ml=new y,vl=new y,gl=[new y,new y,new y,new y,new y,new y],xl=new y,Ml=new y,bl=new y,yl=new y,Cl=new y,zl=new y,Al=new y,wl=new y,_l=new y,Sl=new y,El=new y,Ll=new y,Dl=new y,Tl=new y,Hl=new y,Vl=new y,Nl=new y,Rl=new y,Fl=new y,Bl=new y,Pl=new y,Il=new y,kl=new y,Ul=new y,Cr=new O1,Ol=new y,Gl=new y,zr=new y,ql=new y,Wl=new y,jl=new y,Xl=[0],Zl=new y,Yl=new y,X0=class{constructor(){this.current=void 0,this.previous=void 0,this.current=[],this.previous=[]}getKey(e,t){if(ta[r];)r++;if(i!==a[r]){for(let s=a.length-1;s>=r;s--)a[s+1]=a[s];a[r]=i}}tick(){let e=this.current;this.current=this.previous,this.previous=e,this.current.length=0}getDiff(e,t){let i=this.current,a=this.previous,r=i.length,s=a.length,o=0;for(let l=0;la[o];)o++;c=u===a[o],c||Ar(e,u)}o=0;for(let l=0;li[o];)o++;c=i[o]===u,c||Ar(t,u)}}};function Ar(n,e){n.push((e&4294901760)>>16,e&65535)}var wr=class{constructor(){this.data={keys:[]}}get(e,t){if(e>t){let i=t;t=e,e=i}return this.data[e+"-"+t]}set(e,t,i){if(e>t){let r=t;t=e,e=r}let a=e+"-"+t;this.get(e,t)||this.data.keys.push(a),this.data[a]=i}reset(){let e=this.data,t=e.keys;for(;t.length>0;){let i=t.pop();delete e[i]}}},Z0=class extends F0{constructor(e={}){super();this.dt=void 0,this.allowSleep=void 0,this.contacts=void 0,this.frictionEquations=void 0,this.quatNormalizeSkip=void 0,this.quatNormalizeFast=void 0,this.time=void 0,this.stepnumber=void 0,this.default_dt=void 0,this.nextId=void 0,this.gravity=void 0,this.broadphase=void 0,this.bodies=void 0,this.hasActiveBodies=void 0,this.solver=void 0,this.constraints=void 0,this.narrowphase=void 0,this.collisionMatrix=void 0,this.collisionMatrixPrevious=void 0,this.bodyOverlapKeeper=void 0,this.shapeOverlapKeeper=void 0,this.materials=void 0,this.contactmaterials=void 0,this.contactMaterialTable=void 0,this.defaultMaterial=void 0,this.defaultContactMaterial=void 0,this.doProfiling=void 0,this.profile=void 0,this.accumulator=void 0,this.subsystems=void 0,this.addBodyEvent=void 0,this.removeBodyEvent=void 0,this.idToBodyMap=void 0,this.dt=-1,this.allowSleep=!!e.allowSleep,this.contacts=[],this.frictionEquations=[],this.quatNormalizeSkip=e.quatNormalizeSkip!==void 0?e.quatNormalizeSkip:0,this.quatNormalizeFast=e.quatNormalizeFast!==void 0?e.quatNormalizeFast:!1,this.time=0,this.stepnumber=0,this.default_dt=1/60,this.nextId=0,this.gravity=new y,e.gravity&&this.gravity.copy(e.gravity),this.broadphase=e.broadphase!==void 0?e.broadphase:new h6,this.bodies=[],this.hasActiveBodies=!1,this.solver=e.solver!==void 0?e.solver:new ja,this.constraints=[],this.narrowphase=new br(this),this.collisionMatrix=new R0,this.collisionMatrixPrevious=new R0,this.bodyOverlapKeeper=new X0,this.shapeOverlapKeeper=new X0,this.materials=[],this.contactmaterials=[],this.contactMaterialTable=new wr,this.defaultMaterial=new He("default"),this.defaultContactMaterial=new Te(this.defaultMaterial,this.defaultMaterial,{friction:.3,restitution:0}),this.doProfiling=!1,this.profile={solve:0,makeContactConstraints:0,broadphase:0,integrate:0,narrowphase:0},this.accumulator=0,this.subsystems=[],this.addBodyEvent={type:"addBody",body:null},this.removeBodyEvent={type:"removeBody",body:null},this.idToBodyMap={},this.broadphase.setWorld(this)}getContactMaterial(e,t){return this.contactMaterialTable.get(e.id,t.id)}numObjects(){return this.bodies.length}collisionMatrixTick(){let e=this.collisionMatrixPrevious;this.collisionMatrixPrevious=this.collisionMatrix,this.collisionMatrix=e,this.collisionMatrix.reset(),this.bodyOverlapKeeper.tick(),this.shapeOverlapKeeper.tick()}addConstraint(e){this.constraints.push(e)}removeConstraint(e){let t=this.constraints.indexOf(e);t!==-1&&this.constraints.splice(t,1)}rayTest(e,t,i){i instanceof f6?this.raycastClosest(e,t,{skipBackfaces:!0},i):this.raycastAll(e,t,{skipBackfaces:!0},i)}raycastAll(e,t,i={},a){return i.mode=J1.ALL,i.from=e,i.to=t,i.callback=a,Y0.intersectWorld(this,i)}raycastAny(e,t,i={},a){return i.mode=J1.ANY,i.from=e,i.to=t,i.result=a,Y0.intersectWorld(this,i)}raycastClosest(e,t,i={},a){return i.mode=J1.CLOSEST,i.from=e,i.to=t,i.result=a,Y0.intersectWorld(this,i)}addBody(e){this.bodies.includes(e)||(e.index=this.bodies.length,this.bodies.push(e),e.world=this,e.initPosition.copy(e.position),e.initVelocity.copy(e.velocity),e.timeLastSleepy=this.time,e instanceof i1&&(e.initAngularVelocity.copy(e.angularVelocity),e.initQuaternion.copy(e.quaternion)),this.collisionMatrix.setNumObjects(this.bodies.length),this.addBodyEvent.body=e,this.idToBodyMap[e.id]=e,this.dispatchEvent(this.addBodyEvent))}removeBody(e){e.world=null;let t=this.bodies.length-1,i=this.bodies,a=i.indexOf(e);if(a!==-1){i.splice(a,1);for(let r=0;r!==i.length;r++)i[r].index=r;this.collisionMatrix.setNumObjects(t),this.removeBodyEvent.body=e,delete this.idToBodyMap[e.id],this.dispatchEvent(this.removeBodyEvent)}}getBodyById(e){return this.idToBodyMap[e]}getShapeById(e){let t=this.bodies;for(let i=0;i=e&&re*1e3)););this.accumulator=this.accumulator%e;let s=this.accumulator/e;for(let o=0;o!==this.bodies.length;o++){let l=this.bodies[o];l.previousPosition.lerp(l.position,s,l.interpolatedPosition),l.previousQuaternion.slerp(l.quaternion,s,l.interpolatedQuaternion),l.previousQuaternion.normalize()}this.time+=t}}internalStep(e){this.dt=e;let t=this.contacts,i=e9,a=t9,r=this.numObjects(),s=this.bodies,o=this.solver,l=this.gravity,c=this.doProfiling,u=this.profile,f=i1.DYNAMIC,h=-1/0,m=this.constraints,v=Ql;l.length();let g=l.x,x=l.y,p=l.z,d=0;for(c&&(h=s2.now()),d=0;d!==r;d++){let A=s[d];if(A.type===f){let H=A.force,V=A.mass;H.x+=V*g,H.y+=V*x,H.z+=V*p}}for(let A=0,H=this.subsystems.length;A!==H;A++)this.subsystems[A].update();c&&(h=s2.now()),i.length=0,a.length=0,this.broadphase.collisionPairs(this,i,a),c&&(u.broadphase=s2.now()-h);let z=m.length;for(d=0;d!==z;d++){let A=m[d];if(!A.collideConnected)for(let H=i.length-1;H>=0;H-=1)(A.bodyA===i[H]&&A.bodyB===a[H]||A.bodyB===i[H]&&A.bodyA===a[H])&&(i.splice(H,1),a.splice(H,1))}this.collisionMatrixTick(),c&&(h=s2.now());let b=Jl,C=t.length;for(d=0;d!==C;d++)b.push(t[d]);t.length=0;let E=this.frictionEquations.length;for(d=0;d!==E;d++)v.push(this.frictionEquations[d]);for(this.frictionEquations.length=0,this.narrowphase.getContacts(i,a,this,t,b,this.frictionEquations,v),c&&(u.narrowphase=s2.now()-h),c&&(h=s2.now()),d=0;d=0&&L.material.friction>=0&&V.material.friction*L.material.friction,V.material.restitution>=0&&L.material.restitution>=0&&(H.restitution=V.material.restitution*L.material.restitution)),o.addEquation(H),V.allowSleep&&V.type===i1.DYNAMIC&&V.sleepState===i1.SLEEPING&&L.sleepState===i1.AWAKE&&L.type!==i1.STATIC){let O=L.velocity.lengthSquared()+L.angularVelocity.lengthSquared(),W=L.sleepSpeedLimit**2;O>=W*2&&(V.wakeUpAfterNarrowphase=!0)}if(L.allowSleep&&L.type===i1.DYNAMIC&&L.sleepState===i1.SLEEPING&&V.sleepState===i1.AWAKE&&V.type!==i1.STATIC){let O=V.velocity.lengthSquared()+V.angularVelocity.lengthSquared(),W=V.sleepSpeedLimit**2;O>=W*2&&(L.wakeUpAfterNarrowphase=!0)}this.collisionMatrix.set(V,L,!0),this.collisionMatrixPrevious.get(V,L)||(yt.body=L,yt.contact=H,V.dispatchEvent(yt),yt.body=V,L.dispatchEvent(yt)),this.bodyOverlapKeeper.set(V.id,L.id),this.shapeOverlapKeeper.set(N.id,U.id)}for(this.emitContactEvents(),c&&(u.makeContactConstraints=s2.now()-h,h=s2.now()),d=0;d!==r;d++){let A=s[d];A.wakeUpAfterNarrowphase&&(A.wakeUp(),A.wakeUpAfterNarrowphase=!1)}for(z=m.length,d=0;d!==z;d++){let A=m[d];A.update();for(let H=0,V=A.equations.length;H!==V;H++){let L=A.equations[H];o.addEquation(L)}}o.solve(e,this),c&&(u.solve=s2.now()-h),o.removeAllEquations();let _=Math.pow;for(d=0;d!==r;d++){let A=s[d];if(A.type&f){let H=_(1-A.linearDamping,e),V=A.velocity;V.scale(H,V);let L=A.angularVelocity;if(L){let N=_(1-A.angularDamping,e);L.scale(N,L)}}}for(this.dispatchEvent(Kl),d=0;d!==r;d++){let A=s[d];A.preStep&&A.preStep.call(A)}c&&(h=s2.now());let F=this.stepnumber%(this.quatNormalizeSkip+1)==0,M=this.quatNormalizeFast;for(d=0;d!==r;d++)s[d].integrate(e,F,M);for(this.clearForces(),this.broadphase.dirty=!0,c&&(u.integrate=s2.now()-h),this.stepnumber+=1,this.dispatchEvent($l),d=0;d!==r;d++){let A=s[d],H=A.postStep;H&&H.call(A)}let D=!0;if(this.allowSleep)for(D=!1,d=0;d!==r;d++){let A=s[d];A.sleepTick(this.time),A.sleepState!==i1.SLEEPING&&(D=!0)}this.hasActiveBodies=D}emitContactEvents(){let e=this.hasAnyEventListener("beginContact"),t=this.hasAnyEventListener("endContact");if((e||t)&&this.bodyOverlapKeeper.getDiff(Ne,Re),e){for(let r=0,s=Ne.length;rDate.now()-n}var $l={type:"postStep"},Kl={type:"preStep"},yt={type:i1.COLLIDE_EVENT_NAME,body:null,contact:null},Jl=[],Ql=[],e9=[],t9=[],Ne=[],Re=[],Ct={type:"beginContact",bodyA:null,bodyB:null},zt={type:"endContact",bodyA:null,bodyB:null},Fe={type:"beginShapeContact",bodyA:null,bodyB:null,shapeA:null,shapeB:null},Be={type:"endShapeContact",bodyA:null,bodyB:null,shapeA:null,shapeB:null};var q1=class{constructor(e=0,t=0,i=0,a=1){this.x=e,this.y=t,this.z=i,this.w=a}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,a){return this.x=e,this.y=t,this.z=i,this.w=a,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this)}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this)}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,i=this.y,a=this.z,r=this.w,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*a+s[12]*r,this.y=s[1]*t+s[5]*i+s[9]*a+s[13]*r,this.z=s[2]*t+s[6]*i+s[10]*a+s[14]*r,this.w=s[3]*t+s[7]*i+s[11]*a+s[15]*r,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,i,a,r,s=.01,o=.1,l=e.elements,c=l[0],u=l[4],f=l[8],h=l[1],m=l[5],v=l[9],g=l[2],x=l[6],p=l[10];if(Math.abs(u-h)b&&z>C?zC?b>8&255]+d2[n>>16&255]+d2[n>>24&255]+"-"+d2[e&255]+d2[e>>8&255]+"-"+d2[e>>16&15|64]+d2[e>>24&255]+"-"+d2[t&63|128]+d2[t>>8&255]+"-"+d2[t>>16&255]+d2[t>>24&255]+d2[i&255]+d2[i>>8&255]+d2[i>>16&255]+d2[i>>24&255]).toUpperCase()}function E2(n,e,t){return Math.max(e,Math.min(t,n))}function _r(n,e){return(n%e+e)%e}function b6(n,e,t){return(1-t)*n+t*e}function $0(n){return(n&n-1)==0&&n!==0}function Sr(n){return Math.pow(2,Math.floor(Math.log(n)/Math.LN2))}var xe=class{constructor(e=0,t=0,i=0,a=1){this._x=e,this._y=t,this._z=i,this._w=a}static slerp(e,t,i,a){return console.warn("THREE.Quaternion: Static .slerp() has been deprecated. Use qm.slerpQuaternions( qa, qb, t ) instead."),i.slerpQuaternions(e,t,a)}static slerpFlat(e,t,i,a,r,s,o){let l=i[a+0],c=i[a+1],u=i[a+2],f=i[a+3],h=r[s+0],m=r[s+1],v=r[s+2],g=r[s+3];if(o===0){e[t+0]=l,e[t+1]=c,e[t+2]=u,e[t+3]=f;return}if(o===1){e[t+0]=h,e[t+1]=m,e[t+2]=v,e[t+3]=g;return}if(f!==g||l!==h||c!==m||u!==v){let x=1-o,p=l*h+c*m+u*v+f*g,d=p>=0?1:-1,z=1-p*p;if(z>Number.EPSILON){let C=Math.sqrt(z),E=Math.atan2(C,p*d);x=Math.sin(x*E)/C,o=Math.sin(o*E)/C}let b=o*d;if(l=l*x+h*b,c=c*x+m*b,u=u*x+v*b,f=f*x+g*b,x===1-o){let C=1/Math.sqrt(l*l+c*c+u*u+f*f);l*=C,c*=C,u*=C,f*=C}}e[t]=l,e[t+1]=c,e[t+2]=u,e[t+3]=f}static multiplyQuaternionsFlat(e,t,i,a,r,s){let o=i[a],l=i[a+1],c=i[a+2],u=i[a+3],f=r[s],h=r[s+1],m=r[s+2],v=r[s+3];return e[t]=o*v+u*f+l*m-c*h,e[t+1]=l*v+u*h+c*f-o*m,e[t+2]=c*v+u*m+o*h-l*f,e[t+3]=u*v-o*f-l*h-c*m,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,a){return this._x=e,this._y=t,this._z=i,this._w=a,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){if(!(e&&e.isEuler))throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");let i=e._x,a=e._y,r=e._z,s=e._order,o=Math.cos,l=Math.sin,c=o(i/2),u=o(a/2),f=o(r/2),h=l(i/2),m=l(a/2),v=l(r/2);switch(s){case"XYZ":this._x=h*u*f+c*m*v,this._y=c*m*f-h*u*v,this._z=c*u*v+h*m*f,this._w=c*u*f-h*m*v;break;case"YXZ":this._x=h*u*f+c*m*v,this._y=c*m*f-h*u*v,this._z=c*u*v-h*m*f,this._w=c*u*f+h*m*v;break;case"ZXY":this._x=h*u*f-c*m*v,this._y=c*m*f+h*u*v,this._z=c*u*v+h*m*f,this._w=c*u*f-h*m*v;break;case"ZYX":this._x=h*u*f-c*m*v,this._y=c*m*f+h*u*v,this._z=c*u*v-h*m*f,this._w=c*u*f+h*m*v;break;case"YZX":this._x=h*u*f+c*m*v,this._y=c*m*f+h*u*v,this._z=c*u*v-h*m*f,this._w=c*u*f-h*m*v;break;case"XZY":this._x=h*u*f-c*m*v,this._y=c*m*f-h*u*v,this._z=c*u*v+h*m*f,this._w=c*u*f+h*m*v;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return t!==!1&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let i=t/2,a=Math.sin(i);return this._x=e.x*a,this._y=e.y*a,this._z=e.z*a,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,i=t[0],a=t[4],r=t[8],s=t[1],o=t[5],l=t[9],c=t[2],u=t[6],f=t[10],h=i+o+f;if(h>0){let m=.5/Math.sqrt(h+1);this._w=.25/m,this._x=(u-l)*m,this._y=(r-c)*m,this._z=(s-a)*m}else if(i>o&&i>f){let m=2*Math.sqrt(1+i-o-f);this._w=(u-l)/m,this._x=.25*m,this._y=(a+s)/m,this._z=(r+c)/m}else if(o>f){let m=2*Math.sqrt(1+o-i-f);this._w=(r-c)/m,this._x=(a+s)/m,this._y=.25*m,this._z=(l+u)/m}else{let m=2*Math.sqrt(1+f-i-o);this._w=(s-a)/m,this._x=(r+c)/m,this._y=(l+u)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(E2(this.dot(e),-1,1)))}rotateTowards(e,t){let i=this.angleTo(e);if(i===0)return this;let a=Math.min(1,t/i);return this.slerp(e,a),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e,t){return t!==void 0?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(e,t)):this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let i=e._x,a=e._y,r=e._z,s=e._w,o=t._x,l=t._y,c=t._z,u=t._w;return this._x=i*u+s*o+a*c-r*l,this._y=a*u+s*l+r*o-i*c,this._z=r*u+s*c+i*l-a*o,this._w=s*u-i*o-a*l-r*c,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);let i=this._x,a=this._y,r=this._z,s=this._w,o=s*e._w+i*e._x+a*e._y+r*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=s,this._x=i,this._y=a,this._z=r,this;let l=1-o*o;if(l<=Number.EPSILON){let m=1-t;return this._w=m*s+t*this._w,this._x=m*i+t*this._x,this._y=m*a+t*this._y,this._z=m*r+t*this._z,this.normalize(),this._onChangeCallback(),this}let c=Math.sqrt(l),u=Math.atan2(c,o),f=Math.sin((1-t)*u)/c,h=Math.sin(t*u)/c;return this._w=s*f+this._w*h,this._x=i*f+this._x*h,this._y=a*f+this._y*h,this._z=r*f+this._z*h,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){let e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),a=2*Math.PI*Math.random(),r=2*Math.PI*Math.random();return this.set(t*Math.cos(a),i*Math.sin(r),i*Math.cos(r),t*Math.sin(a))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}};xe.prototype.isQuaternion=!0;var k=class{constructor(e=0,t=0,i=0){this.x=e,this.y=t,this.z=i}set(e,t,i){return i===void 0&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this.z+=e.z,this)}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this.z-=e.z,this)}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e,t){return t!==void 0?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(e,t)):(this.x*=e.x,this.y*=e.y,this.z*=e.z,this)}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return e&&e.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(Er.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Er.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,i=this.y,a=this.z,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6]*a,this.y=r[1]*t+r[4]*i+r[7]*a,this.z=r[2]*t+r[5]*i+r[8]*a,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,i=this.y,a=this.z,r=e.elements,s=1/(r[3]*t+r[7]*i+r[11]*a+r[15]);return this.x=(r[0]*t+r[4]*i+r[8]*a+r[12])*s,this.y=(r[1]*t+r[5]*i+r[9]*a+r[13])*s,this.z=(r[2]*t+r[6]*i+r[10]*a+r[14])*s,this}applyQuaternion(e){let t=this.x,i=this.y,a=this.z,r=e.x,s=e.y,o=e.z,l=e.w,c=l*t+s*a-o*i,u=l*i+o*t-r*a,f=l*a+r*i-s*t,h=-r*t-s*i-o*a;return this.x=c*l+h*-r+u*-o-f*-s,this.y=u*l+h*-s+f*-r-c*-o,this.z=f*l+h*-o+c*-s-u*-r,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,i=this.y,a=this.z,r=e.elements;return this.x=r[0]*t+r[4]*i+r[8]*a,this.y=r[1]*t+r[5]*i+r[9]*a,this.z=r[2]*t+r[6]*i+r[10]*a,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e,t){return t!==void 0?(console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(e,t)):this.crossVectors(this,e)}crossVectors(e,t){let i=e.x,a=e.y,r=e.z,s=t.x,o=t.y,l=t.z;return this.x=a*l-r*o,this.y=r*s-i*l,this.z=i*o-a*s,this}projectOnVector(e){let t=e.lengthSq();if(t===0)return this.set(0,0,0);let i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return K0.copy(this).projectOnVector(e),this.sub(K0)}reflect(e){return this.sub(K0.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;let i=this.dot(e)/t;return Math.acos(E2(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y,a=this.z-e.z;return t*t+i*i+a*a}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){let a=Math.sin(t)*e;return this.x=a*Math.sin(i),this.y=Math.cos(t)*e,this.z=a*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),a=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=a,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t,i){return i!==void 0&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=(Math.random()-.5)*2,t=Math.random()*Math.PI*2,i=Math.sqrt(1-e**2);return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}};k.prototype.isVector3=!0;var K0=new k,Er=new xe;var z1=class{constructor(e=0,t=0){this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e,t){return t!==void 0?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(e,t)):(this.x+=e.x,this.y+=e.y,this)}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e,t){return t!==void 0?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(e,t)):(this.x-=e.x,this.y-=e.y,this)}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,i=this.y,a=e.elements;return this.x=a[0]*t+a[3]*i+a[6],this.y=a[1]*t+a[4]*i+a[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t,i){return i!==void 0&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let i=Math.cos(t),a=Math.sin(t),r=this.x-e.x,s=this.y-e.y;return this.x=r*i-s*a+e.x,this.y=r*a+s*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}};z1.prototype.isVector2=!0;var Lr={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},$2={h:0,s:0,l:0},y6={h:0,s:0,l:0};function J0(n,e,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?n+(e-n)*6*t:t<1/2?e:t<2/3?n+(e-n)*6*(2/3-t):n}function b4(n){return n<.04045?n*.0773993808:Math.pow(n*.9478672986+.0521327014,2.4)}function Q0(n){return n<.0031308?n*12.92:1.055*Math.pow(n,.41666)-.055}var x1=class{constructor(e,t,i){return t===void 0&&i===void 0?this.set(e):this.setRGB(e,t,i)}set(e){return e&&e.isColor?this.copy(e):typeof e=="number"?this.setHex(e):typeof e=="string"&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,this}setRGB(e,t,i){return this.r=e,this.g=t,this.b=i,this}setHSL(e,t,i){if(e=_r(e,1),t=E2(t,0,1),i=E2(i,0,1),t===0)this.r=this.g=this.b=i;else{let a=i<=.5?i*(1+t):i+t-i*t,r=2*i-a;this.r=J0(r,a,e+1/3),this.g=J0(r,a,e),this.b=J0(r,a,e-1/3)}return this}setStyle(e){function t(a){a!==void 0&&parseFloat(a)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)){let a,r=i[1],s=i[2];switch(r){case"rgb":case"rgba":if(a=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(255,parseInt(a[1],10))/255,this.g=Math.min(255,parseInt(a[2],10))/255,this.b=Math.min(255,parseInt(a[3],10))/255,t(a[4]),this;if(a=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(100,parseInt(a[1],10))/100,this.g=Math.min(100,parseInt(a[2],10))/100,this.b=Math.min(100,parseInt(a[3],10))/100,t(a[4]),this;break;case"hsl":case"hsla":if(a=/^\s*(\d*\.?\d+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s)){let o=parseFloat(a[1])/360,l=parseInt(a[2],10)/100,c=parseInt(a[3],10)/100;return t(a[4]),this.setHSL(o,l,c)}break}}else if(i=/^\#([A-Fa-f\d]+)$/.exec(e)){let a=i[1],r=a.length;if(r===3)return this.r=parseInt(a.charAt(0)+a.charAt(0),16)/255,this.g=parseInt(a.charAt(1)+a.charAt(1),16)/255,this.b=parseInt(a.charAt(2)+a.charAt(2),16)/255,this;if(r===6)return this.r=parseInt(a.charAt(0)+a.charAt(1),16)/255,this.g=parseInt(a.charAt(2)+a.charAt(3),16)/255,this.b=parseInt(a.charAt(4)+a.charAt(5),16)/255,this}return e&&e.length>0?this.setColorName(e):this}setColorName(e){let t=Lr[e.toLowerCase()];return t!==void 0?this.setHex(t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=b4(e.r),this.g=b4(e.g),this.b=b4(e.b),this}copyLinearToSRGB(e){return this.r=Q0(e.r),this.g=Q0(e.g),this.b=Q0(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(){return this.r*255<<16^this.g*255<<8^this.b*255<<0}getHexString(){return("000000"+this.getHex().toString(16)).slice(-6)}getHSL(e){let t=this.r,i=this.g,a=this.b,r=Math.max(t,i,a),s=Math.min(t,i,a),o,l,c=(s+r)/2;if(s===r)o=0,l=0;else{let u=r-s;switch(l=c<=.5?u/(r+s):u/(2-r-s),r){case t:o=(i-a)/u+(ir&&(r=u),f>s&&(s=f),h>o&&(o=h)}return this.min.set(t,i,a),this.max.set(r,s,o),this}setFromBufferAttribute(e){let t=1/0,i=1/0,a=1/0,r=-1/0,s=-1/0,o=-1/0;for(let l=0,c=e.count;lr&&(r=u),f>s&&(s=f),h>o&&(o=h)}return this.min.set(t,i,a),this.max.set(r,s,o),this}setFromPoints(e){this.makeEmpty();for(let t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,z4),z4.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Nt),V6.subVectors(this.max,Nt),G4.subVectors(e.a,Nt),q4.subVectors(e.b,Nt),W4.subVectors(e.c,Nt),r4.subVectors(q4,G4),n4.subVectors(W4,q4),A4.subVectors(G4,W4);let t=[0,-r4.z,r4.y,0,-n4.z,n4.y,0,-A4.z,A4.y,r4.z,0,-r4.x,n4.z,0,-n4.x,A4.z,0,-A4.x,-r4.y,r4.x,0,-n4.y,n4.x,0,-A4.y,A4.x,0];return!V3(t,G4,q4,W4,V6)||(t=[1,0,0,0,1,0,0,0,1],!V3(t,G4,q4,W4,V6))?!1:(N6.crossVectors(r4,n4),t=[N6.x,N6.y,N6.z],V3(t,G4,q4,W4,V6))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return z4.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=this.getSize(z4).length()*.5,e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Ge[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Ge[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Ge[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Ge[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Ge[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Ge[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Ge[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Ge[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Ge),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}};Oe.prototype.isBox3=!0;var Ge=[new k,new k,new k,new k,new k,new k,new k,new k],z4=new k,H3=new Oe,G4=new k,q4=new k,W4=new k,r4=new k,n4=new k,A4=new k,Nt=new k,V6=new k,N6=new k,w4=new k;function V3(n,e,t,i,a){for(let r=0,s=n.length-3;r<=s;r+=3){w4.fromArray(n,r);let o=a.x*Math.abs(w4.x)+a.y*Math.abs(w4.y)+a.z*Math.abs(w4.z),l=e.dot(w4),c=t.dot(w4),u=i.dot(w4);if(Math.max(-Math.max(l,c,u),Math.min(l,c,u))>o)return!1}return!0}var R2=class{addEventListener(e,t){this._listeners===void 0&&(this._listeners={});let i=this._listeners;i[e]===void 0&&(i[e]=[]),i[e].indexOf(t)===-1&&i[e].push(t)}hasEventListener(e,t){if(this._listeners===void 0)return!1;let i=this._listeners;return i[e]!==void 0&&i[e].indexOf(t)!==-1}removeEventListener(e,t){if(this._listeners===void 0)return;let a=this._listeners[e];if(a!==void 0){let r=a.indexOf(t);r!==-1&&a.splice(r,1)}}dispatchEvent(e){if(this._listeners===void 0)return;let i=this._listeners[e.type];if(i!==void 0){e.target=this;let a=i.slice(0);for(let r=0,s=a.length;rthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){N3.subVectors(e,this.center);let t=N3.lengthSq();if(t>this.radius*this.radius){let i=Math.sqrt(t),a=(i-this.radius)*.5;this.center.add(N3.multiplyScalar(a/i)),this.radius+=a}return this}union(e){return this.center.equals(e.center)===!0?R6.set(0,0,1).multiplyScalar(e.radius):R6.subVectors(e.center,this.center).normalize().multiplyScalar(e.radius),this.expandByPoint(_8.copy(e.center).add(R6)),this.expandByPoint(_8.copy(e.center).sub(R6)),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}};var k1=class{constructor(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}set(e,t,i,a,r,s,o,l,c,u,f,h,m,v,g,x){let p=this.elements;return p[0]=e,p[4]=t,p[8]=i,p[12]=a,p[1]=r,p[5]=s,p[9]=o,p[13]=l,p[2]=c,p[6]=u,p[10]=f,p[14]=h,p[3]=m,p[7]=v,p[11]=g,p[15]=x,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new k1().fromArray(this.elements)}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){let t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(e,t,i){return this.set(e.x,t.x,i.x,0,e.y,t.y,i.y,0,e.z,t.z,i.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,i=e.elements,a=1/j4.setFromMatrixColumn(e,0).length(),r=1/j4.setFromMatrixColumn(e,1).length(),s=1/j4.setFromMatrixColumn(e,2).length();return t[0]=i[0]*a,t[1]=i[1]*a,t[2]=i[2]*a,t[3]=0,t[4]=i[4]*r,t[5]=i[5]*r,t[6]=i[6]*r,t[7]=0,t[8]=i[8]*s,t[9]=i[9]*s,t[10]=i[10]*s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){e&&e.isEuler||console.error("THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");let t=this.elements,i=e.x,a=e.y,r=e.z,s=Math.cos(i),o=Math.sin(i),l=Math.cos(a),c=Math.sin(a),u=Math.cos(r),f=Math.sin(r);if(e.order==="XYZ"){let h=s*u,m=s*f,v=o*u,g=o*f;t[0]=l*u,t[4]=-l*f,t[8]=c,t[1]=m+v*c,t[5]=h-g*c,t[9]=-o*l,t[2]=g-h*c,t[6]=v+m*c,t[10]=s*l}else if(e.order==="YXZ"){let h=l*u,m=l*f,v=c*u,g=c*f;t[0]=h+g*o,t[4]=v*o-m,t[8]=s*c,t[1]=s*f,t[5]=s*u,t[9]=-o,t[2]=m*o-v,t[6]=g+h*o,t[10]=s*l}else if(e.order==="ZXY"){let h=l*u,m=l*f,v=c*u,g=c*f;t[0]=h-g*o,t[4]=-s*f,t[8]=v+m*o,t[1]=m+v*o,t[5]=s*u,t[9]=g-h*o,t[2]=-s*c,t[6]=o,t[10]=s*l}else if(e.order==="ZYX"){let h=s*u,m=s*f,v=o*u,g=o*f;t[0]=l*u,t[4]=v*c-m,t[8]=h*c+g,t[1]=l*f,t[5]=g*c+h,t[9]=m*c-v,t[2]=-c,t[6]=o*l,t[10]=s*l}else if(e.order==="YZX"){let h=s*l,m=s*c,v=o*l,g=o*c;t[0]=l*u,t[4]=g-h*f,t[8]=v*f+m,t[1]=f,t[5]=s*u,t[9]=-o*u,t[2]=-c*u,t[6]=m*f+v,t[10]=h-g*f}else if(e.order==="XZY"){let h=s*l,m=s*c,v=o*l,g=o*c;t[0]=l*u,t[4]=-f,t[8]=c*u,t[1]=h*f+g,t[5]=s*u,t[9]=m*f-v,t[2]=v*f-m,t[6]=o*u,t[10]=g*f+h}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(a9,e,r9)}lookAt(e,t,i){let a=this.elements;return F2.subVectors(e,t),F2.lengthSq()===0&&(F2.z=1),F2.normalize(),s4.crossVectors(i,F2),s4.lengthSq()===0&&(Math.abs(i.z)===1?F2.x+=1e-4:F2.z+=1e-4,F2.normalize(),s4.crossVectors(i,F2)),s4.normalize(),F6.crossVectors(F2,s4),a[0]=s4.x,a[4]=F6.x,a[8]=F2.x,a[1]=s4.y,a[5]=F6.y,a[9]=F2.y,a[2]=s4.z,a[6]=F6.z,a[10]=F2.z,this}multiply(e,t){return t!==void 0?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(e,t)):this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,a=t.elements,r=this.elements,s=i[0],o=i[4],l=i[8],c=i[12],u=i[1],f=i[5],h=i[9],m=i[13],v=i[2],g=i[6],x=i[10],p=i[14],d=i[3],z=i[7],b=i[11],C=i[15],E=a[0],T=a[4],_=a[8],P=a[12],F=a[1],M=a[5],D=a[9],A=a[13],H=a[2],V=a[6],L=a[10],N=a[14],U=a[3],Z=a[7],O=a[11],W=a[15];return r[0]=s*E+o*F+l*H+c*U,r[4]=s*T+o*M+l*V+c*Z,r[8]=s*_+o*D+l*L+c*O,r[12]=s*P+o*A+l*N+c*W,r[1]=u*E+f*F+h*H+m*U,r[5]=u*T+f*M+h*V+m*Z,r[9]=u*_+f*D+h*L+m*O,r[13]=u*P+f*A+h*N+m*W,r[2]=v*E+g*F+x*H+p*U,r[6]=v*T+g*M+x*V+p*Z,r[10]=v*_+g*D+x*L+p*O,r[14]=v*P+g*A+x*N+p*W,r[3]=d*E+z*F+b*H+C*U,r[7]=d*T+z*M+b*V+C*Z,r[11]=d*_+z*D+b*L+C*O,r[15]=d*P+z*A+b*N+C*W,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[4],a=e[8],r=e[12],s=e[1],o=e[5],l=e[9],c=e[13],u=e[2],f=e[6],h=e[10],m=e[14],v=e[3],g=e[7],x=e[11],p=e[15];return v*(+r*l*f-a*c*f-r*o*h+i*c*h+a*o*m-i*l*m)+g*(+t*l*m-t*c*h+r*s*h-a*s*m+a*c*u-r*l*u)+x*(+t*c*f-t*o*m-r*s*f+i*s*m+r*o*u-i*c*u)+p*(-a*o*u-t*l*f+t*o*h+a*s*f-i*s*h+i*l*u)}transpose(){let e=this.elements,t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,i){let a=this.elements;return e.isVector3?(a[12]=e.x,a[13]=e.y,a[14]=e.z):(a[12]=e,a[13]=t,a[14]=i),this}invert(){let e=this.elements,t=e[0],i=e[1],a=e[2],r=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8],f=e[9],h=e[10],m=e[11],v=e[12],g=e[13],x=e[14],p=e[15],d=f*x*c-g*h*c+g*l*m-o*x*m-f*l*p+o*h*p,z=v*h*c-u*x*c-v*l*m+s*x*m+u*l*p-s*h*p,b=u*g*c-v*f*c+v*o*m-s*g*m-u*o*p+s*f*p,C=v*f*l-u*g*l-v*o*h+s*g*h+u*o*x-s*f*x,E=t*d+i*z+a*b+r*C;if(E===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let T=1/E;return e[0]=d*T,e[1]=(g*h*r-f*x*r-g*a*m+i*x*m+f*a*p-i*h*p)*T,e[2]=(o*x*r-g*l*r+g*a*c-i*x*c-o*a*p+i*l*p)*T,e[3]=(f*l*r-o*h*r-f*a*c+i*h*c+o*a*m-i*l*m)*T,e[4]=z*T,e[5]=(u*x*r-v*h*r+v*a*m-t*x*m-u*a*p+t*h*p)*T,e[6]=(v*l*r-s*x*r-v*a*c+t*x*c+s*a*p-t*l*p)*T,e[7]=(s*h*r-u*l*r+u*a*c-t*h*c-s*a*m+t*l*m)*T,e[8]=b*T,e[9]=(v*f*r-u*g*r-v*i*m+t*g*m+u*i*p-t*f*p)*T,e[10]=(s*g*r-v*o*r+v*i*c-t*g*c-s*i*p+t*o*p)*T,e[11]=(u*o*r-s*f*r-u*i*c+t*f*c+s*i*m-t*o*m)*T,e[12]=C*T,e[13]=(u*g*a-v*f*a+v*i*h-t*g*h-u*i*x+t*f*x)*T,e[14]=(v*o*a-s*g*a-v*i*l+t*g*l+s*i*x-t*o*x)*T,e[15]=(s*f*a-u*o*a+u*i*l-t*f*l-s*i*h+t*o*h)*T,this}scale(e){let t=this.elements,i=e.x,a=e.y,r=e.z;return t[0]*=i,t[4]*=a,t[8]*=r,t[1]*=i,t[5]*=a,t[9]*=r,t[2]*=i,t[6]*=a,t[10]*=r,t[3]*=i,t[7]*=a,t[11]*=r,this}getMaxScaleOnAxis(){let e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],i=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],a=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,a))}makeTranslation(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),i=Math.sin(e);return this.set(1,0,0,0,0,t,-i,0,0,i,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,0,i,0,0,1,0,0,-i,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,0,i,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let i=Math.cos(t),a=Math.sin(t),r=1-i,s=e.x,o=e.y,l=e.z,c=r*s,u=r*o;return this.set(c*s+i,c*o-a*l,c*l+a*o,0,c*o+a*l,u*o+i,u*l-a*s,0,c*l-a*o,u*l+a*s,r*l*l+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,a,r,s){return this.set(1,i,r,0,e,1,s,0,t,a,1,0,0,0,0,1),this}compose(e,t,i){let a=this.elements,r=t._x,s=t._y,o=t._z,l=t._w,c=r+r,u=s+s,f=o+o,h=r*c,m=r*u,v=r*f,g=s*u,x=s*f,p=o*f,d=l*c,z=l*u,b=l*f,C=i.x,E=i.y,T=i.z;return a[0]=(1-(g+p))*C,a[1]=(m+b)*C,a[2]=(v-z)*C,a[3]=0,a[4]=(m-b)*E,a[5]=(1-(h+p))*E,a[6]=(x+d)*E,a[7]=0,a[8]=(v+z)*T,a[9]=(x-d)*T,a[10]=(1-(h+g))*T,a[11]=0,a[12]=e.x,a[13]=e.y,a[14]=e.z,a[15]=1,this}decompose(e,t,i){let a=this.elements,r=j4.set(a[0],a[1],a[2]).length(),s=j4.set(a[4],a[5],a[6]).length(),o=j4.set(a[8],a[9],a[10]).length();this.determinant()<0&&(r=-r),e.x=a[12],e.y=a[13],e.z=a[14],ee.copy(this);let c=1/r,u=1/s,f=1/o;return ee.elements[0]*=c,ee.elements[1]*=c,ee.elements[2]*=c,ee.elements[4]*=u,ee.elements[5]*=u,ee.elements[6]*=u,ee.elements[8]*=f,ee.elements[9]*=f,ee.elements[10]*=f,t.setFromRotationMatrix(ee),i.x=r,i.y=s,i.z=o,this}makePerspective(e,t,i,a,r,s){s===void 0&&console.warn("THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.");let o=this.elements,l=2*r/(t-e),c=2*r/(i-a),u=(t+e)/(t-e),f=(i+a)/(i-a),h=-(s+r)/(s-r),m=-2*s*r/(s-r);return o[0]=l,o[4]=0,o[8]=u,o[12]=0,o[1]=0,o[5]=c,o[9]=f,o[13]=0,o[2]=0,o[6]=0,o[10]=h,o[14]=m,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(e,t,i,a,r,s){let o=this.elements,l=1/(t-e),c=1/(i-a),u=1/(s-r),f=(t+e)*l,h=(i+a)*c,m=(s+r)*u;return o[0]=2*l,o[4]=0,o[8]=0,o[12]=-f,o[1]=0,o[5]=2*c,o[9]=0,o[13]=-h,o[2]=0,o[6]=0,o[10]=-2*u,o[14]=-m,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(e){let t=this.elements,i=e.elements;for(let a=0;a<16;a++)if(t[a]!==i[a])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e[t+9]=i[9],e[t+10]=i[10],e[t+11]=i[11],e[t+12]=i[12],e[t+13]=i[13],e[t+14]=i[14],e[t+15]=i[15],e}};k1.prototype.isMatrix4=!0;var j4=new k,ee=new k1,a9=new k(0,0,0),r9=new k(1,1,1),s4=new k,F6=new k,F2=new k;var S8=new k1,E8=new xe,o4=class{constructor(e=0,t=0,i=0,a=o4.DefaultOrder){this._x=e,this._y=t,this._z=i,this._order=a}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,i,a=this._order){return this._x=e,this._y=t,this._z=i,this._order=a,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){let a=e.elements,r=a[0],s=a[4],o=a[8],l=a[1],c=a[5],u=a[9],f=a[2],h=a[6],m=a[10];switch(t){case"XYZ":this._y=Math.asin(E2(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,m),this._z=Math.atan2(-s,r)):(this._x=Math.atan2(h,c),this._z=0);break;case"YXZ":this._x=Math.asin(-E2(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(l,c)):(this._y=Math.atan2(-f,r),this._z=0);break;case"ZXY":this._x=Math.asin(E2(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-s,c)):(this._y=0,this._z=Math.atan2(l,r));break;case"ZYX":this._y=Math.asin(-E2(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(h,m),this._z=Math.atan2(l,r)):(this._x=0,this._z=Math.atan2(-s,c));break;case"YZX":this._z=Math.asin(E2(l,-1,1)),Math.abs(l)<.9999999?(this._x=Math.atan2(-u,c),this._y=Math.atan2(-f,r)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-E2(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(h,c),this._y=Math.atan2(o,r)):(this._x=Math.atan2(-u,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,i===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return S8.makeRotationFromQuaternion(e),this.setFromRotationMatrix(S8,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return E8.setFromEuler(this),this.setFromQuaternion(E8,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}toVector3(e){return e?e.set(this._x,this._y,this._z):new k(this._x,this._y,this._z)}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}};o4.prototype.isEuler=!0;o4.DefaultOrder="XYZ";o4.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"];var Rt=class{constructor(){this.mask=1|0}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}set(e,t,i,a,r,s,o,l,c){let u=this.elements;return u[0]=e,u[1]=a,u[2]=o,u[3]=t,u[4]=r,u[5]=l,u[6]=i,u[7]=s,u[8]=c,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,a=t.elements,r=this.elements,s=i[0],o=i[3],l=i[6],c=i[1],u=i[4],f=i[7],h=i[2],m=i[5],v=i[8],g=a[0],x=a[3],p=a[6],d=a[1],z=a[4],b=a[7],C=a[2],E=a[5],T=a[8];return r[0]=s*g+o*d+l*C,r[3]=s*x+o*z+l*E,r[6]=s*p+o*b+l*T,r[1]=c*g+u*d+f*C,r[4]=c*x+u*z+f*E,r[7]=c*p+u*b+f*T,r[2]=h*g+m*d+v*C,r[5]=h*x+m*z+v*E,r[8]=h*p+m*b+v*T,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[1],a=e[2],r=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8];return t*s*u-t*o*c-i*r*u+i*o*l+a*r*c-a*s*l}invert(){let e=this.elements,t=e[0],i=e[1],a=e[2],r=e[3],s=e[4],o=e[5],l=e[6],c=e[7],u=e[8],f=u*s-o*c,h=o*l-u*r,m=c*r-s*l,v=t*f+i*h+a*m;if(v===0)return this.set(0,0,0,0,0,0,0,0,0);let g=1/v;return e[0]=f*g,e[1]=(a*c-u*i)*g,e[2]=(o*i-a*s)*g,e[3]=h*g,e[4]=(u*t-a*l)*g,e[5]=(a*r-o*t)*g,e[6]=m*g,e[7]=(i*l-c*t)*g,e[8]=(s*t-i*r)*g,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,a,r,s,o){let l=Math.cos(r),c=Math.sin(r);return this.set(i*l,i*c,-i*(l*s+c*o)+s+e,-a*c,a*l,-a*(-c*s+l*o)+o+t,0,0,1),this}scale(e,t){let i=this.elements;return i[0]*=e,i[3]*=e,i[6]*=e,i[1]*=t,i[4]*=t,i[7]*=t,this}rotate(e){let t=Math.cos(e),i=Math.sin(e),a=this.elements,r=a[0],s=a[3],o=a[6],l=a[1],c=a[4],u=a[7];return a[0]=t*r+i*l,a[3]=t*s+i*c,a[6]=t*o+i*u,a[1]=-i*r+t*l,a[4]=-i*s+t*c,a[7]=-i*o+t*u,this}translate(e,t){let i=this.elements;return i[0]+=e*i[2],i[3]+=e*i[5],i[6]+=e*i[8],i[1]+=t*i[2],i[4]+=t*i[5],i[7]+=t*i[8],this}equals(e){let t=this.elements,i=e.elements;for(let a=0;a<9;a++)if(t[a]!==i[a])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let i=this.elements;return e[t]=i[0],e[t+1]=i[1],e[t+2]=i[2],e[t+3]=i[3],e[t+4]=i[4],e[t+5]=i[5],e[t+6]=i[6],e[t+7]=i[7],e[t+8]=i[8],e}clone(){return new this.constructor().fromArray(this.elements)}};r2.prototype.isMatrix3=!0;var n9=0,L8=new k,X4=new xe,We=new k1,B6=new k,Ft=new k,s9=new k,o9=new xe,D8=new k(1,0,0),T8=new k(0,1,0),H8=new k(0,0,1),c9={type:"added"},V8={type:"removed"},j1=class extends R2{constructor(){super();Object.defineProperty(this,"id",{value:n9++}),this.uuid=Pe(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=j1.DefaultUp.clone();let e=new k,t=new o4,i=new xe,a=new k(1,1,1);function r(){i.setFromEuler(t,!1)}function s(){t.setFromQuaternion(i,void 0,!1)}t._onChange(r),i._onChange(s),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:i},scale:{configurable:!0,enumerable:!0,value:a},modelViewMatrix:{value:new k1},normalMatrix:{value:new r2}}),this.matrix=new k1,this.matrixWorld=new k1,this.matrixAutoUpdate=j1.DefaultMatrixAutoUpdate,this.matrixWorldNeedsUpdate=!1,this.layers=new Rt,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,t){this.quaternion.setFromAxisAngle(e,t)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,t){return X4.setFromAxisAngle(e,t),this.quaternion.multiply(X4),this}rotateOnWorldAxis(e,t){return X4.setFromAxisAngle(e,t),this.quaternion.premultiply(X4),this}rotateX(e){return this.rotateOnAxis(D8,e)}rotateY(e){return this.rotateOnAxis(T8,e)}rotateZ(e){return this.rotateOnAxis(H8,e)}translateOnAxis(e,t){return L8.copy(e).applyQuaternion(this.quaternion),this.position.add(L8.multiplyScalar(t)),this}translateX(e){return this.translateOnAxis(D8,e)}translateY(e){return this.translateOnAxis(T8,e)}translateZ(e){return this.translateOnAxis(H8,e)}localToWorld(e){return e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return e.applyMatrix4(We.copy(this.matrixWorld).invert())}lookAt(e,t,i){e.isVector3?B6.copy(e):B6.set(e,t,i);let a=this.parent;this.updateWorldMatrix(!0,!1),Ft.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?We.lookAt(Ft,B6,this.up):We.lookAt(B6,Ft,this.up),this.quaternion.setFromRotationMatrix(We),a&&(We.extractRotation(a.matrixWorld),X4.setFromRotationMatrix(We),this.quaternion.premultiply(X4.invert()))}add(e){if(arguments.length>1){for(let t=0;t1){for(let i=0;i0){a.children=[];for(let o=0;o0){a.animations=[];for(let o=0;o0&&(i.geometries=o),l.length>0&&(i.materials=l),c.length>0&&(i.textures=c),u.length>0&&(i.images=u),f.length>0&&(i.shapes=f),h.length>0&&(i.skeletons=h),m.length>0&&(i.animations=m)}return i.object=a,i;function s(o){let l=[];for(let c in o){let u=o[c];delete u.metadata,l.push(u)}return l}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),t===!0)for(let i=0;i=0;--e)if(n[e]>65535)return!0;return!1}function _4(n){return document.createElementNS("http://www.w3.org/1999/xhtml",n)}var l9=0,O2=new k1,R3=new j1,Z4=new k,B2=new Oe,Bt=new Oe,c2=new k,b2=class extends R2{constructor(){super();Object.defineProperty(this,"id",{value:l9++}),this.uuid=Pe(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(P6(e)?Vt:Ht)(e,1):this.index=e,this}getAttribute(e){return this.attributes[e]}setAttribute(e,t){return this.attributes[e]=t,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,t,i=0){this.groups.push({start:e,count:t,materialIndex:i})}clearGroups(){this.groups=[]}setDrawRange(e,t){this.drawRange.start=e,this.drawRange.count=t}applyMatrix4(e){let t=this.attributes.position;t!==void 0&&(t.applyMatrix4(e),t.needsUpdate=!0);let i=this.attributes.normal;if(i!==void 0){let r=new r2().getNormalMatrix(e);i.applyNormalMatrix(r),i.needsUpdate=!0}let a=this.attributes.tangent;return a!==void 0&&(a.transformDirection(e),a.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return O2.makeRotationFromQuaternion(e),this.applyMatrix4(O2),this}rotateX(e){return O2.makeRotationX(e),this.applyMatrix4(O2),this}rotateY(e){return O2.makeRotationY(e),this.applyMatrix4(O2),this}rotateZ(e){return O2.makeRotationZ(e),this.applyMatrix4(O2),this}translate(e,t,i){return O2.makeTranslation(e,t,i),this.applyMatrix4(O2),this}scale(e,t,i){return O2.makeScale(e,t,i),this.applyMatrix4(O2),this}lookAt(e){return R3.lookAt(e),R3.updateMatrix(),this.applyMatrix4(R3.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(Z4).negate(),this.translate(Z4.x,Z4.y,Z4.z),this}setFromPoints(e){let t=[];for(let i=0,a=e.length;i0&&(e.userData=this.userData),this.parameters!==void 0){let l=this.parameters;for(let c in l)l[c]!==void 0&&(e[c]=l[c]);return e}e.data={attributes:{}};let t=this.index;t!==null&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let i=this.attributes;for(let l in i){let c=i[l];e.data.attributes[l]=c.toJSON(e.data)}let a={},r=!1;for(let l in this.morphAttributes){let c=this.morphAttributes[l],u=[];for(let f=0,h=c.length;f0&&(a[l]=u,r=!0)}r&&(e.data.morphAttributes=a,e.data.morphTargetsRelative=this.morphTargetsRelative);let s=this.groups;s.length>0&&(e.data.groups=JSON.parse(JSON.stringify(s)));let o=this.boundingSphere;return o!==null&&(e.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let i=e.index;i!==null&&this.setIndex(i.clone(t));let a=e.attributes;for(let c in a){let u=a[c];this.setAttribute(c,u.clone(t))}let r=e.morphAttributes;for(let c in r){let u=[],f=r[c];for(let h=0,m=f.length;h0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(let t in e){let i=e[t];if(i===void 0){console.warn("THREE.Material: '"+t+"' parameter is undefined.");continue}if(t==="shading"){console.warn("THREE."+this.type+": .shading has been removed. Use the boolean .flatShading instead."),this.flatShading=i===Vr;continue}let a=this[t];if(a===void 0){console.warn("THREE."+this.type+": '"+t+"' is not a property of this material.");continue}a&&a.isColor?a.set(i):a&&a.isVector3&&i&&i.isVector3?a.copy(i):this[t]=i}}toJSON(e){let t=e===void 0||typeof e=="string";t&&(e={textures:{},images:{}});let i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};i.uuid=this.uuid,i.type=this.type,this.name!==""&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),this.roughness!==void 0&&(i.roughness=this.roughness),this.metalness!==void 0&&(i.metalness=this.metalness),this.sheen!==void 0&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(i.shininess=this.shininess),this.clearcoat!==void 0&&(i.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(i.combine=this.combine)),this.envMapIntensity!==void 0&&(i.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(i.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&(i.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(i.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(i.size=this.size),this.shadowSide!==null&&(i.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==C4&&(i.blending=this.blending),this.side!==Ie&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),this.transparent===!0&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.alphaWrite=this.alphaWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,this.rotation&&this.rotation!==0&&(i.rotation=this.rotation),this.polygonOffset===!0&&(i.polygonOffset=!0),this.polygonOffsetFactor!==0&&(i.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(i.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth&&this.linewidth!==1&&(i.linewidth=this.linewidth),this.dashSize!==void 0&&(i.dashSize=this.dashSize),this.gapSize!==void 0&&(i.gapSize=this.gapSize),this.scale!==void 0&&(i.scale=this.scale),this.dithering===!0&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(i.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(i.premultipliedAlpha=this.premultipliedAlpha),this.wireframe===!0&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(i.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(i.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(i.flatShading=this.flatShading),this.visible===!1&&(i.visible=!1),this.toneMapped===!1&&(i.toneMapped=!1),JSON.stringify(this.userData)!=="{}"&&(i.userData=this.userData);function a(r){let s=[];for(let o in r){let l=r[o];delete l.metadata,s.push(l)}return s}if(t){let r=a(e.textures),s=a(e.images);r.length>0&&(i.textures=r),s.length>0&&(i.images=s)}return i}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.fog=e.fog,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,i=null;if(t!==null){let a=t.length;i=new Array(a);for(let r=0;r!==a;++r)i[r]=t[r].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.alphaWrite=e.alphaWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}};L2.prototype.isMaterial=!0;var Pt=class extends L2{constructor(e){super();this.type="MeshPhongMaterial",this.color=new x1(16777215),this.specular=new x1(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new x1(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=D6,this.normalScale=new z1(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=U4,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this}};Pt.prototype.isMeshPhongMaterial=!0;var je=new k,F3=new k,I6=new k,c4=new k,B3=new k,k6=new k,P3=new k,I3=class{constructor(e=new k,t=new k(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,je)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(i).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=je.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(je.copy(this.direction).multiplyScalar(t).add(this.origin),je.distanceToSquared(e))}distanceSqToSegment(e,t,i,a){F3.copy(e).add(t).multiplyScalar(.5),I6.copy(t).sub(e).normalize(),c4.copy(this.origin).sub(F3);let r=e.distanceTo(t)*.5,s=-this.direction.dot(I6),o=c4.dot(this.direction),l=-c4.dot(I6),c=c4.lengthSq(),u=Math.abs(1-s*s),f,h,m,v;if(u>0)if(f=s*l-o,h=s*o-l,v=r*u,f>=0)if(h>=-v)if(h<=v){let g=1/u;f*=g,h*=g,m=f*(f+s*h+2*o)+h*(s*f+h+2*l)+c}else h=r,f=Math.max(0,-(s*h+o)),m=-f*f+h*(h+2*l)+c;else h=-r,f=Math.max(0,-(s*h+o)),m=-f*f+h*(h+2*l)+c;else h<=-v?(f=Math.max(0,-(-s*r+o)),h=f>0?-r:Math.min(Math.max(-r,-l),r),m=-f*f+h*(h+2*l)+c):h<=v?(f=0,h=Math.min(Math.max(-r,-l),r),m=h*(h+2*l)+c):(f=Math.max(0,-(s*r+o)),h=f>0?r:Math.min(Math.max(-r,-l),r),m=-f*f+h*(h+2*l)+c);else h=s>0?-r:r,f=Math.max(0,-(s*h+o)),m=-f*f+h*(h+2*l)+c;return i&&i.copy(this.direction).multiplyScalar(f).add(this.origin),a&&a.copy(I6).multiplyScalar(h).add(F3),m}intersectSphere(e,t){je.subVectors(e.center,this.origin);let i=je.dot(this.direction),a=je.dot(je)-i*i,r=e.radius*e.radius;if(a>r)return null;let s=Math.sqrt(r-a),o=i-s,l=i+s;return o<0&&l<0?null:o<0?this.at(l,t):this.at(o,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(t===0)return e.distanceToPoint(this.origin)===0?0:null;let i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){let i=this.distanceToPlane(e);return i===null?null:this.at(i,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return t===0||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,a,r,s,o,l,c=1/this.direction.x,u=1/this.direction.y,f=1/this.direction.z,h=this.origin;return c>=0?(i=(e.min.x-h.x)*c,a=(e.max.x-h.x)*c):(i=(e.max.x-h.x)*c,a=(e.min.x-h.x)*c),u>=0?(r=(e.min.y-h.y)*u,s=(e.max.y-h.y)*u):(r=(e.max.y-h.y)*u,s=(e.min.y-h.y)*u),i>s||r>a||((r>i||i!==i)&&(i=r),(s=0?(o=(e.min.z-h.z)*f,l=(e.max.z-h.z)*f):(o=(e.max.z-h.z)*f,l=(e.min.z-h.z)*f),i>l||o>a)||((o>i||i!==i)&&(i=o),(l=0?i:a,t)}intersectsBox(e){return this.intersectBox(e,je)!==null}intersectTriangle(e,t,i,a,r){B3.subVectors(t,e),k6.subVectors(i,e),P3.crossVectors(B3,k6);let s=this.direction.dot(P3),o;if(s>0){if(a)return null;o=1}else if(s<0)o=-1,s=-s;else return null;c4.subVectors(this.origin,e);let l=o*this.direction.dot(k6.crossVectors(c4,k6));if(l<0)return null;let c=o*this.direction.dot(B3.cross(c4));if(c<0||l+c>s)return null;let u=-o*c4.dot(P3);return u<0?null:this.at(u/s,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}};var te=new k,Xe=new k,k3=new k,Ze=new k,Y4=new k,$4=new k,N8=new k,U3=new k,O3=new k,G3=new k,ie=class{constructor(e=new k,t=new k,i=new k){this.a=e,this.b=t,this.c=i}static getNormal(e,t,i,a){a.subVectors(i,t),te.subVectors(e,t),a.cross(te);let r=a.lengthSq();return r>0?a.multiplyScalar(1/Math.sqrt(r)):a.set(0,0,0)}static getBarycoord(e,t,i,a,r){te.subVectors(a,t),Xe.subVectors(i,t),k3.subVectors(e,t);let s=te.dot(te),o=te.dot(Xe),l=te.dot(k3),c=Xe.dot(Xe),u=Xe.dot(k3),f=s*c-o*o;if(f===0)return r.set(-2,-1,-1);let h=1/f,m=(c*l-o*u)*h,v=(s*u-o*l)*h;return r.set(1-m-v,v,m)}static containsPoint(e,t,i,a){return this.getBarycoord(e,t,i,a,Ze),Ze.x>=0&&Ze.y>=0&&Ze.x+Ze.y<=1}static getUV(e,t,i,a,r,s,o,l){return this.getBarycoord(e,t,i,a,Ze),l.set(0,0),l.addScaledVector(r,Ze.x),l.addScaledVector(s,Ze.y),l.addScaledVector(o,Ze.z),l}static isFrontFacing(e,t,i,a){return te.subVectors(i,t),Xe.subVectors(e,t),te.cross(Xe).dot(a)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,a){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[a]),this}setFromAttributeAndIndices(e,t,i,a){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,a),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return te.subVectors(this.c,this.b),Xe.subVectors(this.a,this.b),te.cross(Xe).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return ie.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return ie.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,a,r){return ie.getUV(e,this.a,this.b,this.c,t,i,a,r)}containsPoint(e){return ie.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return ie.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let i=this.a,a=this.b,r=this.c,s,o;Y4.subVectors(a,i),$4.subVectors(r,i),U3.subVectors(e,i);let l=Y4.dot(U3),c=$4.dot(U3);if(l<=0&&c<=0)return t.copy(i);O3.subVectors(e,a);let u=Y4.dot(O3),f=$4.dot(O3);if(u>=0&&f<=u)return t.copy(a);let h=l*f-u*c;if(h<=0&&l>=0&&u<=0)return s=l/(l-u),t.copy(i).addScaledVector(Y4,s);G3.subVectors(e,r);let m=Y4.dot(G3),v=$4.dot(G3);if(v>=0&&m<=v)return t.copy(r);let g=m*c-l*v;if(g<=0&&c>=0&&v<=0)return o=c/(c-v),t.copy(i).addScaledVector($4,o);let x=u*v-m*f;if(x<=0&&f-u>=0&&m-v>=0)return N8.subVectors(r,a),o=(f-u)/(f-u+(m-v)),t.copy(a).addScaledVector(N8,o);let p=1/(x+g+h);return s=g*p,o=h*p,t.copy(i).addScaledVector(Y4,s).addScaledVector($4,o)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}};var K4=class extends L2{constructor(e){super();this.type="MeshBasicMaterial",this.color=new x1(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=U4,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this}};K4.prototype.isMeshBasicMaterial=!0;var R8=new k1,J4=new I3,q3=new qe,l4=new k,u4=new k,h4=new k,W3=new k,j3=new k,X3=new k,U6=new k,O6=new k,G6=new k,q6=new z1,W6=new z1,j6=new z1,Z3=new k,X6=new k,l2=class extends j1{constructor(e=new b2,t=new K4){super();this.type="Mesh",this.geometry=e,this.material=t,this.updateMorphTargets()}copy(e){return super.copy(e),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=e.material,this.geometry=e.geometry,this}updateMorphTargets(){let e=this.geometry;if(e.isBufferGeometry){let t=e.morphAttributes,i=Object.keys(t);if(i.length>0){let a=t[i[0]];if(a!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let r=0,s=a.length;r0&&console.error("THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.")}}raycast(e,t){let i=this.geometry,a=this.material,r=this.matrixWorld;if(a===void 0||(i.boundingSphere===null&&i.computeBoundingSphere(),q3.copy(i.boundingSphere),q3.applyMatrix4(r),e.ray.intersectsSphere(q3)===!1)||(R8.copy(r).invert(),J4.copy(e.ray).applyMatrix4(R8),i.boundingBox!==null&&J4.intersectsBox(i.boundingBox)===!1))return;let s;if(i.isBufferGeometry){let o=i.index,l=i.attributes.position,c=i.morphAttributes.position,u=i.morphTargetsRelative,f=i.attributes.uv,h=i.attributes.uv2,m=i.groups,v=i.drawRange;if(o!==null)if(Array.isArray(a))for(let g=0,x=m.length;gt.far?null:{distance:c,point:X6.clone(),object:n}}function Z6(n,e,t,i,a,r,s,o,l,c,u,f){l4.fromBufferAttribute(a,c),u4.fromBufferAttribute(a,u),h4.fromBufferAttribute(a,f);let h=n.morphTargetInfluences;if(r&&h){U6.set(0,0,0),O6.set(0,0,0),G6.set(0,0,0);for(let v=0,g=r.length;v2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&e instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap){let t=_4("canvas");t.width=e.width,t.height=e.height;let i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);let a=i.getImageData(0,0,e.width,e.height),r=a.data;for(let s=0;s1)switch(this.wrapS){case Lt:e.x=e.x-Math.floor(e.x);break;case o2:e.x=e.x<0?0:1;break;case Dt:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case Lt:e.y=e.y-Math.floor(e.y);break;case o2:e.y=e.y<0?0:1;break;case Dt:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&this.version++}};$1.DEFAULT_IMAGE=void 0;$1.DEFAULT_MAPPING=s3;$1.prototype.isTexture=!0;function Y3(n){return typeof HTMLImageElement!="undefined"&&n instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&n instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&n instanceof ImageBitmap?It.getDataURL(n):n.data?{data:Array.prototype.slice.call(n.data),width:n.width,height:n.height,type:n.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}var F8={specular:1515554,color:15790320,shininess:60,flatShading:!0},G2={diceColor:"#202020",textColor:"#ffffff"},ae=class{constructor(e,t,i={diceColor:"#202020",textColor:"#aaaaaa"}){this.w=e;this.h=t;this.options=i;this.scale=50;this.labels=[" ","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20"];this.fontFace="Arial";this.options={...G2,...i}}setColor({diceColor:e,textColor:t}){e&&(this.options.diceColor=e),t&&(this.options.textColor=t)}get radius(){return this.scale*this.scaleFactor}get diceColor(){return this.options.diceColor}get textColor(){return this.options.textColor}get buffer(){return this.geometry.geometry}create(){this.textureSize=this.calculateTextureSize(this.scale/2+this.scale*this.margin)*2;let e=this.getGeometry(),t=this.getMaterials();return this.geometry=new l2(e,t),this.geometry.receiveShadow=!0,this.geometry.castShadow=!0,this.body.position.set(0+this.radius*2*Math.random(),0+this.radius*2*Math.random(),0+this.radius*4),this.body.velocity.x=500*Math.random()*2-1,this.body.velocity.y=500*Math.random()*2-1,this.body.angularVelocity.x=100*Math.random(),this.body.angularVelocity.y=100*Math.random(),this}getGeometry(){let e=new Array(this.vertices.length);for(let i=0;i=0&&u=0&&c!==l+1?o.unshift([r,c],[s,u]):o.push([r,c],[s,u]),l=c)}o.length===4&&i.push([i[o[0][0]][o[0][1]],i[o[1][0]][o[1][1]],i[o[3][0]][o[3][1]],i[o[2][0]][o[2][1]],-1])}for(let r=0;r=0&&u<4){--u==-1&&(u=3);let f=i[c][u];if(s.indexOf(f)>=0){o.push(f);break}}}--l}o.push(-1),i.push(o)}return{vectors:t,faces:i}}makeGeometry(e,t){let i=new b2;for(let f=0;f1&&(o=o/c.length,s.font=`${o}pt '${this.fontFace}'`,l=s.measureText("M").width*1.2,a-=l*c.length/2);for(let f=0,h=c.length;f } -`;var _1={alphamap_fragment:U8,alphamap_pars_fragment:O8,alphatest_fragment:G8,alphatest_pars_fragment:q8,aomap_fragment:W8,aomap_pars_fragment:j8,begin_vertex:X8,beginnormal_vertex:Z8,bsdfs:Y8,bumpmap_pars_fragment:$8,clipping_planes_fragment:K8,clipping_planes_pars_fragment:J8,clipping_planes_pars_vertex:Q8,clipping_planes_vertex:en,color_fragment:tn,color_pars_fragment:an,color_pars_vertex:rn,color_vertex:nn,common:sn,cube_uv_reflection_fragment:on,defaultnormal_vertex:cn,displacementmap_pars_vertex:ln,displacementmap_vertex:un,emissivemap_fragment:hn,emissivemap_pars_fragment:fn,encodings_fragment:dn,encodings_pars_fragment:pn,envmap_fragment:mn,envmap_common_pars_fragment:vn,envmap_pars_fragment:gn,envmap_pars_vertex:xn,envmap_physical_pars_fragment:Ln,envmap_vertex:Mn,fog_vertex:bn,fog_pars_vertex:yn,fog_fragment:Cn,fog_pars_fragment:zn,gradientmap_pars_fragment:An,lightmap_fragment:wn,lightmap_pars_fragment:_n,lights_lambert_vertex:Sn,lights_pars_begin:En,lights_toon_fragment:Dn,lights_toon_pars_fragment:Tn,lights_phong_fragment:Hn,lights_phong_pars_fragment:Vn,lights_physical_fragment:Nn,lights_physical_pars_fragment:Rn,lights_fragment_begin:Fn,lights_fragment_maps:Bn,lights_fragment_end:Pn,logdepthbuf_fragment:In,logdepthbuf_pars_fragment:kn,logdepthbuf_pars_vertex:Un,logdepthbuf_vertex:On,map_fragment:Gn,map_pars_fragment:qn,map_particle_fragment:Wn,map_particle_pars_fragment:jn,metalnessmap_fragment:Xn,metalnessmap_pars_fragment:Zn,morphnormal_vertex:Yn,morphtarget_pars_vertex:$n,morphtarget_vertex:Kn,normal_fragment_begin:Jn,normal_fragment_maps:Qn,normal_pars_fragment:es,normal_pars_vertex:ts,normal_vertex:is,normalmap_pars_fragment:as,clearcoat_normal_fragment_begin:rs,clearcoat_normal_fragment_maps:ns,clearcoat_pars_fragment:ss,output_fragment:os,packing:cs,premultiplied_alpha_fragment:ls,project_vertex:us,dithering_fragment:hs,dithering_pars_fragment:fs,roughnessmap_fragment:ds,roughnessmap_pars_fragment:ps,shadowmap_pars_fragment:ms,shadowmap_pars_vertex:vs,shadowmap_vertex:gs,shadowmask_pars_fragment:xs,skinbase_vertex:Ms,skinning_pars_vertex:bs,skinning_vertex:ys,skinnormal_vertex:Cs,specularmap_fragment:zs,specularmap_pars_fragment:As,tonemapping_fragment:ws,tonemapping_pars_fragment:_s,transmission_fragment:Ss,transmission_pars_fragment:Es,uv_pars_fragment:Ls,uv_pars_vertex:Ds,uv_vertex:Ts,uv2_pars_fragment:Hs,uv2_pars_vertex:Vs,uv2_vertex:Ns,worldpos_vertex:Rs,background_vert:Fs,background_frag:Bs,cube_vert:Ps,cube_frag:Is,depth_vert:ks,depth_frag:Us,distanceRGBA_vert:Os,distanceRGBA_frag:Gs,equirect_vert:qs,equirect_frag:Ws,linedashed_vert:js,linedashed_frag:Xs,meshbasic_vert:Zs,meshbasic_frag:Ys,meshlambert_vert:$s,meshlambert_frag:Ks,meshmatcap_vert:Js,meshmatcap_frag:Qs,meshnormal_vert:e5,meshnormal_frag:t5,meshphong_vert:i5,meshphong_frag:a5,meshphysical_vert:r5,meshphysical_frag:n5,meshtoon_vert:s5,meshtoon_frag:o5,points_vert:c5,points_frag:l5,shadow_vert:u5,shadow_frag:h5,sprite_vert:f5,sprite_frag:d5};var e1={common:{diffuse:{value:new x1(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new r2},uv2Transform:{value:new r2},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new z1(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new x1(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotShadowMap:{value:[]},spotShadowMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new x1(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new r2}},sprite:{diffuse:{value:new x1(16777215)},opacity:{value:1},center:{value:new z1(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new r2}}};var q2={basic:{uniforms:p2([e1.common,e1.specularmap,e1.envmap,e1.aomap,e1.lightmap,e1.fog]),vertexShader:_1.meshbasic_vert,fragmentShader:_1.meshbasic_frag},lambert:{uniforms:p2([e1.common,e1.specularmap,e1.envmap,e1.aomap,e1.lightmap,e1.emissivemap,e1.fog,e1.lights,{emissive:{value:new x1(0)}}]),vertexShader:_1.meshlambert_vert,fragmentShader:_1.meshlambert_frag},phong:{uniforms:p2([e1.common,e1.specularmap,e1.envmap,e1.aomap,e1.lightmap,e1.emissivemap,e1.bumpmap,e1.normalmap,e1.displacementmap,e1.fog,e1.lights,{emissive:{value:new x1(0)},specular:{value:new x1(1118481)},shininess:{value:30}}]),vertexShader:_1.meshphong_vert,fragmentShader:_1.meshphong_frag},standard:{uniforms:p2([e1.common,e1.envmap,e1.aomap,e1.lightmap,e1.emissivemap,e1.bumpmap,e1.normalmap,e1.displacementmap,e1.roughnessmap,e1.metalnessmap,e1.fog,e1.lights,{emissive:{value:new x1(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:_1.meshphysical_vert,fragmentShader:_1.meshphysical_frag},toon:{uniforms:p2([e1.common,e1.aomap,e1.lightmap,e1.emissivemap,e1.bumpmap,e1.normalmap,e1.displacementmap,e1.gradientmap,e1.fog,e1.lights,{emissive:{value:new x1(0)}}]),vertexShader:_1.meshtoon_vert,fragmentShader:_1.meshtoon_frag},matcap:{uniforms:p2([e1.common,e1.bumpmap,e1.normalmap,e1.displacementmap,e1.fog,{matcap:{value:null}}]),vertexShader:_1.meshmatcap_vert,fragmentShader:_1.meshmatcap_frag},points:{uniforms:p2([e1.points,e1.fog]),vertexShader:_1.points_vert,fragmentShader:_1.points_frag},dashed:{uniforms:p2([e1.common,e1.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:_1.linedashed_vert,fragmentShader:_1.linedashed_frag},depth:{uniforms:p2([e1.common,e1.displacementmap]),vertexShader:_1.depth_vert,fragmentShader:_1.depth_frag},normal:{uniforms:p2([e1.common,e1.bumpmap,e1.normalmap,e1.displacementmap,{opacity:{value:1}}]),vertexShader:_1.meshnormal_vert,fragmentShader:_1.meshnormal_frag},sprite:{uniforms:p2([e1.sprite,e1.fog]),vertexShader:_1.sprite_vert,fragmentShader:_1.sprite_frag},background:{uniforms:{uvTransform:{value:new r2},t2D:{value:null}},vertexShader:_1.background_vert,fragmentShader:_1.background_frag},cube:{uniforms:p2([e1.envmap,{opacity:{value:1}}]),vertexShader:_1.cube_vert,fragmentShader:_1.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:_1.equirect_vert,fragmentShader:_1.equirect_frag},distanceRGBA:{uniforms:p2([e1.common,e1.displacementmap,{referencePosition:{value:new k},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:_1.distanceRGBA_vert,fragmentShader:_1.distanceRGBA_frag},shadow:{uniforms:p2([e1.lights,e1.fog,{color:{value:new x1(0)},opacity:{value:1}}]),vertexShader:_1.shadow_vert,fragmentShader:_1.shadow_frag}};q2.physical={uniforms:p2([q2.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new z1(1,1)},clearcoatNormalMap:{value:null},sheen:{value:0},sheenColor:{value:new x1(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new z1},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new x1(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new x1(1,1,1)},specularColorMap:{value:null}}]),vertexShader:_1.meshphysical_vert,fragmentShader:_1.meshphysical_frag};function p5(n,e,t,i,a,r){let s=new x1(0),o=a===!0?0:1,l,c,u=null,f=0,h=null;function m(g,x){let p=!1,d=x.isScene===!0?x.background:null;d&&d.isTexture&&(d=e.get(d));let z=n.xr,b=z.getSession&&z.getSession();b&&b.environmentBlendMode==="additive"&&(d=null),d===null?v(s,o):d&&d.isColor&&(v(d,1),p=!0),(n.autoClear||p)&&n.clear(n.autoClearColor,n.autoClearDepth,n.autoClearStencil),d&&(d.isCubeTexture||d.mapping===i4)?(c===void 0&&(c=new l2(new Ye(1,1,1),new ne({name:"BackgroundCubeMaterial",uniforms:$e(q2.cube.uniforms),vertexShader:q2.cube.vertexShader,fragmentShader:q2.cube.fragmentShader,side:P1,depthTest:!1,depthWrite:!1,fog:!1})),c.geometry.deleteAttribute("normal"),c.geometry.deleteAttribute("uv"),c.onBeforeRender=function(C,E,T){this.matrixWorld.copyPosition(T.matrixWorld)},Object.defineProperty(c.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(c)),c.material.uniforms.envMap.value=d,c.material.uniforms.flipEnvMap.value=d.isCubeTexture&&d.isRenderTargetTexture===!1?-1:1,(u!==d||f!==d.version||h!==n.toneMapping)&&(c.material.needsUpdate=!0,u=d,f=d.version,h=n.toneMapping),g.unshift(c,c.geometry,c.material,0,0,null)):d&&d.isTexture&&(l===void 0&&(l=new l2(new D4(2,2),new ne({name:"BackgroundMaterial",uniforms:$e(q2.background.uniforms),vertexShader:q2.background.vertexShader,fragmentShader:q2.background.fragmentShader,side:Ie,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=d,d.matrixAutoUpdate===!0&&d.updateMatrix(),l.material.uniforms.uvTransform.value.copy(d.matrix),(u!==d||f!==d.version||h!==n.toneMapping)&&(l.material.needsUpdate=!0,u=d,f=d.version,h=n.toneMapping),g.unshift(l,l.geometry,l.material,0,0,null))}function v(g,x){t.buffers.color.setClear(g.r,g.g,g.b,x,r)}return{getClearColor:function(){return s},setClearColor:function(g,x=1){s.set(g),o=x,v(s,o)},getClearAlpha:function(){return o},setClearAlpha:function(g){o=g,v(s,o)},render:m}}function m5(n,e,t,i){let a=n.getParameter(n.MAX_VERTEX_ATTRIBS),r=i.isWebGL2?null:e.get("OES_vertex_array_object"),s=i.isWebGL2||r!==null,o={},l=g(null),c=l;function u(A,H,V,L,N){let U=!1;if(s){let Z=v(L,V,H);c!==Z&&(c=Z,h(c.object)),U=x(L,N),U&&p(L,N)}else{let Z=H.wireframe===!0;(c.geometry!==L.id||c.program!==V.id||c.wireframe!==Z)&&(c.geometry=L.id,c.program=V.id,c.wireframe=Z,U=!0)}A.isInstancedMesh===!0&&(U=!0),N!==null&&t.update(N,n.ELEMENT_ARRAY_BUFFER),U&&(T(A,H,V,L),N!==null&&n.bindBuffer(n.ELEMENT_ARRAY_BUFFER,t.get(N).buffer))}function f(){return i.isWebGL2?n.createVertexArray():r.createVertexArrayOES()}function h(A){return i.isWebGL2?n.bindVertexArray(A):r.bindVertexArrayOES(A)}function m(A){return i.isWebGL2?n.deleteVertexArray(A):r.deleteVertexArrayOES(A)}function v(A,H,V){let L=V.wireframe===!0,N=o[A.id];N===void 0&&(N={},o[A.id]=N);let U=N[H.id];U===void 0&&(U={},N[H.id]=U);let Z=U[L];return Z===void 0&&(Z=g(f()),U[L]=Z),Z}function g(A){let H=[],V=[],L=[];for(let N=0;N=0){let X=N[O];if(X===void 0&&(O==="instanceMatrix"&&A.instanceMatrix&&(X=A.instanceMatrix),O==="instanceColor"&&A.instanceColor&&(X=A.instanceColor)),X!==void 0){let Q=X.normalized,a1=X.itemSize,B=t.get(X);if(B===void 0)continue;let M1=B.buffer,u1=B.type,v1=B.bytesPerElement;if(X.isInterleavedBufferAttribute){let n1=X.data,T1=n1.stride,A1=X.offset;if(n1&&n1.isInstancedInterleavedBuffer){for(let C1=0;C10&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";T="mediump"}return T==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let s=typeof WebGL2RenderingContext!="undefined"&&n instanceof WebGL2RenderingContext||typeof WebGL2ComputeRenderingContext!="undefined"&&n instanceof WebGL2ComputeRenderingContext,o=t.precision!==void 0?t.precision:"highp",l=r(o);l!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",l,"instead."),o=l);let c=s||e.has("WEBGL_draw_buffers"),u=t.logarithmicDepthBuffer===!0,f=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),h=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),m=n.getParameter(n.MAX_TEXTURE_SIZE),v=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),g=n.getParameter(n.MAX_VERTEX_ATTRIBS),x=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),p=n.getParameter(n.MAX_VARYING_VECTORS),d=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),z=h>0,b=s||e.has("OES_texture_float"),C=z&&b,E=s?n.getParameter(n.MAX_SAMPLES):0;return{isWebGL2:s,drawBuffers:c,getMaxAnisotropy:a,getMaxPrecision:r,precision:o,logarithmicDepthBuffer:u,maxTextures:f,maxVertexTextures:h,maxTextureSize:m,maxCubemapSize:v,maxAttributes:g,maxVertexUniforms:x,maxVaryings:p,maxFragmentUniforms:d,vertexTextures:z,floatFragmentTextures:b,floatVertexTextures:C,maxSamples:E}}function x5(n){let e=this,t=null,i=0,a=!1,r=!1,s=new re,o=new r2,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(f,h,m){let v=f.length!==0||h||i!==0||a;return a=h,t=u(f,m,0),i=f.length,v},this.beginShadows=function(){r=!0,u(null)},this.endShadows=function(){r=!1,c()},this.setState=function(f,h,m){let v=f.clippingPlanes,g=f.clipIntersection,x=f.clipShadows,p=n.get(f);if(!a||v===null||v.length===0||r&&!x)r?u(null):c();else{let d=r?0:i,z=d*4,b=p.clippingState||null;l.value=b,b=u(v,h,z,m);for(let C=0;C!==z;++C)b[C]=t[C];p.clippingState=b,this.numIntersection=g?this.numPlanes:0,this.numPlanes+=d}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function u(f,h,m,v){let g=f!==null?f.length:0,x=null;if(g!==0){if(x=l.value,v!==!0||x===null){let p=m+g*4,d=h.matrixWorldInverse;o.getNormalMatrix(d),(x===null||x.length=0){let X=N[O];if(X===void 0&&(O==="instanceMatrix"&&A.instanceMatrix&&(X=A.instanceMatrix),O==="instanceColor"&&A.instanceColor&&(X=A.instanceColor)),X!==void 0){let Q=X.normalized,a1=X.itemSize,B=t.get(X);if(B===void 0)continue;let M1=B.buffer,u1=B.type,v1=B.bytesPerElement;if(X.isInterleavedBufferAttribute){let n1=X.data,T1=n1.stride,A1=X.offset;if(n1&&n1.isInstancedInterleavedBuffer){for(let C1=0;C10&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.HIGH_FLOAT).precision>0)return"highp";T="mediump"}return T==="mediump"&&n.getShaderPrecisionFormat(n.VERTEX_SHADER,n.MEDIUM_FLOAT).precision>0&&n.getShaderPrecisionFormat(n.FRAGMENT_SHADER,n.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let s=typeof WebGL2RenderingContext!="undefined"&&n instanceof WebGL2RenderingContext||typeof WebGL2ComputeRenderingContext!="undefined"&&n instanceof WebGL2ComputeRenderingContext,o=t.precision!==void 0?t.precision:"highp",l=r(o);l!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",l,"instead."),o=l);let c=s||e.has("WEBGL_draw_buffers"),u=t.logarithmicDepthBuffer===!0,f=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS),h=n.getParameter(n.MAX_VERTEX_TEXTURE_IMAGE_UNITS),m=n.getParameter(n.MAX_TEXTURE_SIZE),v=n.getParameter(n.MAX_CUBE_MAP_TEXTURE_SIZE),g=n.getParameter(n.MAX_VERTEX_ATTRIBS),x=n.getParameter(n.MAX_VERTEX_UNIFORM_VECTORS),p=n.getParameter(n.MAX_VARYING_VECTORS),d=n.getParameter(n.MAX_FRAGMENT_UNIFORM_VECTORS),z=h>0,b=s||e.has("OES_texture_float"),C=z&&b,E=s?n.getParameter(n.MAX_SAMPLES):0;return{isWebGL2:s,drawBuffers:c,getMaxAnisotropy:a,getMaxPrecision:r,precision:o,logarithmicDepthBuffer:u,maxTextures:f,maxVertexTextures:h,maxTextureSize:m,maxCubemapSize:v,maxAttributes:g,maxVertexUniforms:x,maxVaryings:p,maxFragmentUniforms:d,vertexTextures:z,floatFragmentTextures:b,floatVertexTextures:C,maxSamples:E}}function x5(n){let e=this,t=null,i=0,a=!1,r=!1,s=new re,o=new r2,l={value:null,needsUpdate:!1};this.uniform=l,this.numPlanes=0,this.numIntersection=0,this.init=function(f,h,m){let v=f.length!==0||h||i!==0||a;return a=h,t=u(f,m,0),i=f.length,v},this.beginShadows=function(){r=!0,u(null)},this.endShadows=function(){r=!1,c()},this.setState=function(f,h,m){let v=f.clippingPlanes,g=f.clipIntersection,x=f.clipShadows,p=n.get(f);if(!a||v===null||v.length===0||r&&!x)r?u(null):c();else{let d=r?0:i,z=d*4,b=p.clippingState||null;l.value=b,b=u(v,h,z,m);for(let C=0;C!==z;++C)b[C]=t[C];p.clippingState=b,this.numIntersection=g?this.numPlanes:0,this.numPlanes+=d}};function c(){l.value!==t&&(l.value=t,l.needsUpdate=i>0),e.numPlanes=i,e.numIntersection=0}function u(f,h,m,v){let g=f!==null?f.length:0,x=null;if(g!==0){if(x=l.value,v!==!0||x===null){let p=m+g*4,d=h.matrixWorldInverse;o.getNormalMatrix(d),(x===null||x.length0){let c=new J6(l.height/2);return c.fromEquirectangularTexture(n,s),e.set(s,c),s.addEventListener("dispose",a),t(c.texture,s.mapping)}else return null}}return s}function a(s){let o=s.target;o.removeEventListener("dispose",a);let l=e.get(o);l!==void 0&&(e.delete(o),l.dispose())}function r(){e=new WeakMap}return{get:i,dispose:r}}var Q6=class extends tt{constructor(e=-1,t=1,i=1,a=-1,r=.1,s=2e3){super();this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=a,this.near=r,this.far=s,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,i,a,r,s){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=a,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,a=(this.top+this.bottom)/2,r=i-e,s=i+e,o=a+t,l=a-t;if(this.view!==null&&this.view.enabled){let c=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=c*this.view.offsetX,s=r+c*this.view.width,o-=u*this.view.offsetY,l=o-u*this.view.height}this.projectionMatrix.makeOrthographic(r,s,o,l,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}};Q6.prototype.isOrthographicCamera=!0;var nt=class extends ne{constructor(e){super(e);this.type="RawShaderMaterial"}};nt.prototype.isRawShaderMaterial=!0;var st=4,f4=8,ze=Math.pow(2,f4),b5=[.125,.215,.35,.446,.526,.582],y5=f4-st+1+b5.length,ot=20,bi=new Q6,{_lodPlanes:kt,_sizeLods:C5,_sigmas:e0}=H9(),z5=new x1,yi=null,T4=(1+Math.sqrt(5))/2,ct=1/T4,A5=[new k(1,1,1),new k(-1,1,1),new k(1,1,-1),new k(-1,1,-1),new k(0,T4,ct),new k(0,T4,-ct),new k(ct,0,T4),new k(-ct,0,T4),new k(T4,ct,0),new k(-T4,ct,0)],t0=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._blurMaterial=V9(ot),this._equirectShader=null,this._cubemapShader=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,a=100){yi=this._renderer.getRenderTarget();let r=this._allocateTargets();return this._sceneToCubeUV(e,i,a,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapShader===null&&(this._cubemapShader=S5(),this._compileMaterial(this._cubemapShader))}compileEquirectangularShader(){this._equirectShader===null&&(this._equirectShader=_5(),this._compileMaterial(this._equirectShader))}dispose(){this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose(),this._cubemapShader!==null&&this._cubemapShader.dispose(),this._equirectShader!==null&&this._equirectShader.dispose();for(let e=0;e2?ze:0,ze,ze),u.setRenderTarget(a),g&&u.render(v,o),u.render(e,o)}v.geometry.dispose(),v.material.dispose(),u.toneMapping=h,u.autoClear=f,e.background=x}_textureToCubeUV(e,t){let i=this._renderer,a=e.mapping===Me||e.mapping===ke;a?(this._cubemapShader===null&&(this._cubemapShader=S5()),this._cubemapShader.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectShader===null&&(this._equirectShader=_5());let r=a?this._cubemapShader:this._equirectShader,s=new l2(kt[0],r),o=r.uniforms;o.envMap.value=e,a||o.texelSize.value.set(1/e.image.width,1/e.image.height),i0(t,0,0,3*ze,2*ze),i.setRenderTarget(t),i.render(s,bi)}_applyPMREM(e){let t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let a=1;aot&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${x} samples when the maximum is set to ${ot}`);let p=[],d=0;for(let E=0;Ef4-st?a-f4+st:0);i0(t,b,C,3*z,2*z),l.setRenderTarget(t),l.render(f,bi)}};function H9(){let n=[],e=[],t=[],i=f4;for(let a=0;af4-st?s=b5[a-f4+st-1]:a===0&&(s=0),t.push(s);let o=1/(r-1),l=-o/2,c=1+o/2,u=[l,l,c,l,c,c,l,l,c,c,l,c],f=6,h=6,m=3,v=2,g=1,x=new Float32Array(m*h*f),p=new Float32Array(v*h*f),d=new Float32Array(g*h*f);for(let b=0;b2?0:-1,T=[C,E,0,C+2/3,E,0,C+2/3,E+1,0,C,E,0,C+2/3,E+1,0,C,E+1,0];x.set(T,m*h*b),p.set(u,v*h*b);let _=[b,b,b,b,b,b];d.set(_,g*h*b)}let z=new b2;z.setAttribute("position",new M2(x,m)),z.setAttribute("uv",new M2(p,v)),z.setAttribute("faceIndex",new M2(d,g)),n.push(z),i>st&&i--}return{_lodPlanes:n,_sizeLods:e,_sigmas:t}}function w5(n){let e=new m2(3*ze,3*ze,n);return e.texture.mapping=i4,e.texture.name="PMREM.cubeUv",e.scissorTest=!0,e}function i0(n,e,t,i,a){n.viewport.set(e,t,i,a),n.scissor.set(e,t,i,a)}function V9(n){let e=new Float32Array(n),t=new k(0,1,0);return new nt({name:"SphericalGaussianBlur",defines:{n},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:e},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:t}},vertexShader:Ci(),fragmentShader:` + `},a=new Ye(5,5,5),r=new ne({name:"CubemapFromEquirect",uniforms:$e(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:P1,blending:k2});r.uniforms.tEquirect.value=t;let s=new l2(a,r),o=t.minFilter;return t.minFilter===a4&&(t.minFilter=e2),new Mi(1,10,this).update(e,s),t.minFilter=o,s.geometry.dispose(),s.material.dispose(),this}clear(e,t,i,a){let r=e.getRenderTarget();for(let s=0;s<6;s++)e.setRenderTarget(this,s),e.clear(t,i,a);e.setRenderTarget(r)}};J6.prototype.isWebGLCubeRenderTarget=!0;function M5(n){let e=new WeakMap;function t(s,o){return o===_t?s.mapping=Me:o===St&&(s.mapping=ke),s}function i(s){if(s&&s.isTexture&&s.isRenderTargetTexture===!1){let o=s.mapping;if(o===_t||o===St)if(e.has(s)){let l=e.get(s).texture;return t(l,s.mapping)}else{let l=s.image;if(l&&l.height>0){let c=new J6(l.height/2);return c.fromEquirectangularTexture(n,s),e.set(s,c),s.addEventListener("dispose",a),t(c.texture,s.mapping)}else return null}}return s}function a(s){let o=s.target;o.removeEventListener("dispose",a);let l=e.get(o);l!==void 0&&(e.delete(o),l.dispose())}function r(){e=new WeakMap}return{get:i,dispose:r}}var Q6=class extends tt{constructor(e=-1,t=1,i=1,a=-1,r=.1,s=2e3){super();this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=a,this.near=r,this.far=s,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,t,i,a,r,s){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=a,this.view.width=r,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,a=(this.top+this.bottom)/2,r=i-e,s=i+e,o=a+t,l=a-t;if(this.view!==null&&this.view.enabled){let c=(this.right-this.left)/this.view.fullWidth/this.zoom,u=(this.top-this.bottom)/this.view.fullHeight/this.zoom;r+=c*this.view.offsetX,s=r+c*this.view.width,o-=u*this.view.offsetY,l=o-u*this.view.height}this.projectionMatrix.makeOrthographic(r,s,o,l,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}};Q6.prototype.isOrthographicCamera=!0;var nt=class extends ne{constructor(e){super(e);this.type="RawShaderMaterial"}};nt.prototype.isRawShaderMaterial=!0;var st=4,f4=8,ze=Math.pow(2,f4),b5=[.125,.215,.35,.446,.526,.582],y5=f4-st+1+b5.length,ot=20,bi=new Q6,{_lodPlanes:kt,_sizeLods:C5,_sigmas:e0}=H9(),z5=new x1,yi=null,T4=(1+Math.sqrt(5))/2,ct=1/T4,A5=[new k(1,1,1),new k(-1,1,1),new k(1,1,-1),new k(-1,1,-1),new k(0,T4,ct),new k(0,T4,-ct),new k(ct,0,T4),new k(-ct,0,T4),new k(T4,ct,0),new k(-T4,ct,0)],t0=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._blurMaterial=V9(ot),this._equirectShader=null,this._cubemapShader=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,a=100){yi=this._renderer.getRenderTarget();let r=this._allocateTargets();return this._sceneToCubeUV(e,i,a,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){this._cubemapShader===null&&(this._cubemapShader=S5(),this._compileMaterial(this._cubemapShader))}compileEquirectangularShader(){this._equirectShader===null&&(this._equirectShader=_5(),this._compileMaterial(this._equirectShader))}dispose(){this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose(),this._cubemapShader!==null&&this._cubemapShader.dispose(),this._equirectShader!==null&&this._equirectShader.dispose();for(let e=0;e2?ze:0,ze,ze),u.setRenderTarget(a),g&&u.render(v,o),u.render(e,o)}v.geometry.dispose(),v.material.dispose(),u.toneMapping=h,u.autoClear=f,e.background=x}_textureToCubeUV(e,t){let i=this._renderer,a=e.mapping===Me||e.mapping===ke;a?(this._cubemapShader===null&&(this._cubemapShader=S5()),this._cubemapShader.uniforms.flipEnvMap.value=e.isRenderTargetTexture===!1?-1:1):this._equirectShader===null&&(this._equirectShader=_5());let r=a?this._cubemapShader:this._equirectShader,s=new l2(kt[0],r),o=r.uniforms;o.envMap.value=e,a||o.texelSize.value.set(1/e.image.width,1/e.image.height),i0(t,0,0,3*ze,2*ze),i.setRenderTarget(t),i.render(s,bi)}_applyPMREM(e){let t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let a=1;aot&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${x} samples when the maximum is set to ${ot}`);let p=[],d=0;for(let E=0;Ef4-st?a-f4+st:0);i0(t,b,C,3*z,2*z),l.setRenderTarget(t),l.render(f,bi)}};function H9(){let n=[],e=[],t=[],i=f4;for(let a=0;af4-st?s=b5[a-f4+st-1]:a===0&&(s=0),t.push(s);let o=1/(r-1),l=-o/2,c=1+o/2,u=[l,l,c,l,c,c,l,l,c,c,l,c],f=6,h=6,m=3,v=2,g=1,x=new Float32Array(m*h*f),p=new Float32Array(v*h*f),d=new Float32Array(g*h*f);for(let b=0;b2?0:-1,T=[C,E,0,C+2/3,E,0,C+2/3,E+1,0,C,E,0,C+2/3,E+1,0,C,E+1,0];x.set(T,m*h*b),p.set(u,v*h*b);let _=[b,b,b,b,b,b];d.set(_,g*h*b)}let z=new b2;z.setAttribute("position",new M2(x,m)),z.setAttribute("uv",new M2(p,v)),z.setAttribute("faceIndex",new M2(d,g)),n.push(z),i>st&&i--}return{_lodPlanes:n,_sizeLods:e,_sigmas:t}}function w5(n){let e=new m2(3*ze,3*ze,n);return e.texture.mapping=i4,e.texture.name="PMREM.cubeUv",e.scissorTest=!0,e}function i0(n,e,t,i,a){n.viewport.set(e,t,i,a),n.scissor.set(e,t,i,a)}function V9(n){let e=new Float32Array(n),t=new k(0,1,0);return new nt({name:"SphericalGaussianBlur",defines:{n},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:e},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:t}},vertexShader:Ci(),fragmentShader:` precision mediump float; precision mediump int; @@ -5647,7 +5647,7 @@ void main() { } `}function E5(n){let e=new WeakMap,t=null;function i(o){if(o&&o.isTexture){let l=o.mapping,c=l===_t||l===St,u=l===Me||l===ke;if(c||u)if(o.isRenderTargetTexture&&o.needsPMREMUpdate===!0){o.needsPMREMUpdate=!1;let f=e.get(o);return t===null&&(t=new t0(n)),f=c?t.fromEquirectangular(o,f):t.fromCubemap(o,f),e.set(o,f),f.texture}else{if(e.has(o))return e.get(o).texture;{let f=o.image;if(c&&f&&f.height>0||u&&f&&a(f)){t===null&&(t=new t0(n));let h=c?t.fromEquirectangular(o):t.fromCubemap(o);return e.set(o,h),o.addEventListener("dispose",r),h.texture}else return null}}}return o}function a(o){let l=0,c=6;for(let u=0;ue.maxTextureSize&&(_=Math.ceil(T/e.maxTextureSize),T=e.maxTextureSize);let P=new Float32Array(T*_*4*v),F=new lt(P,T,_,v);F.format=W1,F.type=J2,F.needsUpdate=!0;let M=E*4;for(let A=0;A0)return n;let a=e*t,r=k5[a];if(r===void 0&&(r=new Float32Array(a),k5[a]=r),e!==0){i.toArray(r,0);for(let s=1,o=0;s!==e;++s)o+=t,n[s].toArray(r,o)}return r}function A2(n,e){if(n.length!==e.length)return!1;for(let t=0,i=n.length;t0,u1=M.clearcoat>0;return{isWebGL2:u,shaderID:Z,shaderName:M.type,vertexShader:W,fragmentShader:X,defines:M.defines,customVertexShaderID:Q,customFragmentShaderID:a1,isRawShaderMaterial:M.isRawShaderMaterial===!0,glslVersion:M.glslVersion,precision:g,instancing:V.isInstancedMesh===!0,instancingColor:V.isInstancedMesh===!0&&V.instanceColor!==null,supportsVertexTextures:v,outputEncoding:B===null?n.outputEncoding:B.isXRRenderTarget===!0?B.texture.encoding:V2,map:!!M.map,matcap:!!M.matcap,envMap:!!U,envMapMode:U&&U.mapping,envMapCubeUV:!!U&&(U.mapping===i4||U.mapping===Et),lightMap:!!M.lightMap,aoMap:!!M.aoMap,emissiveMap:!!M.emissiveMap,bumpMap:!!M.bumpMap,normalMap:!!M.normalMap,objectSpaceNormalMap:M.normalMapType===z8,tangentSpaceNormalMap:M.normalMapType===D6,decodeVideoTexture:!!M.map&&M.map.isVideoTexture===!0&&M.map.encoding===I1,clearcoat:u1,clearcoatMap:u1&&!!M.clearcoatMap,clearcoatRoughnessMap:u1&&!!M.clearcoatRoughnessMap,clearcoatNormalMap:u1&&!!M.clearcoatNormalMap,displacementMap:!!M.displacementMap,roughnessMap:!!M.roughnessMap,metalnessMap:!!M.metalnessMap,specularMap:!!M.specularMap,specularIntensityMap:!!M.specularIntensityMap,specularColorMap:!!M.specularColorMap,alphaMap:!!M.alphaMap,alphaTest:M1,alphaWrite:M.alphaWrite||M.transparent,gradientMap:!!M.gradientMap,sheen:M.sheen>0,sheenColorMap:!!M.sheenColorMap,sheenRoughnessMap:!!M.sheenRoughnessMap,transmission:M.transmission>0,transmissionMap:!!M.transmissionMap,thicknessMap:!!M.thicknessMap,combine:M.combine,vertexTangents:!!M.normalMap&&!!V.geometry&&!!V.geometry.attributes.tangent,vertexColors:M.vertexColors,vertexAlphas:M.vertexColors===!0&&!!V.geometry&&!!V.geometry.attributes.color&&V.geometry.attributes.color.itemSize===4,vertexUvs:!!M.map||!!M.bumpMap||!!M.normalMap||!!M.specularMap||!!M.alphaMap||!!M.emissiveMap||!!M.roughnessMap||!!M.metalnessMap||!!M.clearcoatMap||!!M.clearcoatRoughnessMap||!!M.clearcoatNormalMap||!!M.displacementMap||!!M.transmissionMap||!!M.thicknessMap||!!M.specularIntensityMap||!!M.specularColorMap||!!M.sheenColorMap||!!M.sheenRoughnessMap,uvsVertexOnly:!(!!M.map||!!M.bumpMap||!!M.normalMap||!!M.specularMap||!!M.alphaMap||!!M.emissiveMap||!!M.roughnessMap||!!M.metalnessMap||!!M.clearcoatNormalMap||M.transmission>0||!!M.transmissionMap||!!M.thicknessMap||!!M.specularIntensityMap||!!M.specularColorMap||M.sheen>0||!!M.sheenColorMap||!!M.sheenRoughnessMap)&&!!M.displacementMap,fog:!!L,useFog:M.fog,fogExp2:L&&L.isFogExp2,flatShading:!!M.flatShading,sizeAttenuation:M.sizeAttenuation,logarithmicDepthBuffer:f,skinning:V.isSkinnedMesh===!0&&O>0,maxBones:O,useVertexTexture:h,morphTargets:!!V.geometry&&!!V.geometry.morphAttributes.position,morphNormals:!!V.geometry&&!!V.geometry.morphAttributes.normal,morphTargetsCount:!!V.geometry&&!!V.geometry.morphAttributes.position?V.geometry.morphAttributes.position.length:0,numDirLights:D.directional.length,numPointLights:D.point.length,numSpotLights:D.spot.length,numRectAreaLights:D.rectArea.length,numHemiLights:D.hemi.length,numDirLightShadows:D.directionalShadowMap.length,numPointLightShadows:D.pointShadowMap.length,numSpotLightShadows:D.spotShadowMap.length,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:M.dithering,shadowMapEnabled:n.shadowMap.enabled&&A.length>0,shadowMapType:n.shadowMap.type,toneMapping:M.toneMapped?n.toneMapping:U2,physicallyCorrectLights:n.physicallyCorrectLights,premultipliedAlpha:M.premultipliedAlpha,doubleSided:M.side===K2,flipSided:M.side===P1,depthPacking:M.depthPacking!==void 0?M.depthPacking:!1,index0AttributeName:M.index0AttributeName,extensionDerivatives:M.extensions&&M.extensions.derivatives,extensionFragDepth:M.extensions&&M.extensions.fragDepth,extensionDrawBuffers:M.extensions&&M.extensions.drawBuffers,extensionShaderTextureLOD:M.extensions&&M.extensions.shaderTextureLOD,rendererExtensionFragDepth:u||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||i.has("EXT_shader_texture_lod"),customProgramCacheKey:M.customProgramCacheKey()}}function z(M){let D=[];if(M.shaderID?D.push(M.shaderID):(D.push(M.customVertexShaderID),D.push(M.customFragmentShaderID)),M.defines!==void 0)for(let A in M.defines)D.push(A),D.push(M.defines[A]);return M.isRawShaderMaterial===!1&&(b(D,M),C(D,M),D.push(n.outputEncoding)),D.push(M.customProgramCacheKey),D.join()}function b(M,D){M.push(D.precision),M.push(D.outputEncoding),M.push(D.envMapMode),M.push(D.combine),M.push(D.vertexUvs),M.push(D.fogExp2),M.push(D.sizeAttenuation),M.push(D.maxBones),M.push(D.morphTargetsCount),M.push(D.numDirLights),M.push(D.numPointLights),M.push(D.numSpotLights),M.push(D.numHemiLights),M.push(D.numRectAreaLights),M.push(D.numDirLightShadows),M.push(D.numPointLightShadows),M.push(D.numSpotLightShadows),M.push(D.shadowMapType),M.push(D.toneMapping),M.push(D.numClippingPlanes),M.push(D.numClipIntersection),M.push(D.alphaWrite)}function C(M,D){o.disableAll(),D.isWebGL2&&o.enable(0),D.supportsVertexTextures&&o.enable(1),D.instancing&&o.enable(2),D.instancingColor&&o.enable(3),D.map&&o.enable(4),D.matcap&&o.enable(5),D.envMap&&o.enable(6),D.envMapCubeUV&&o.enable(7),D.lightMap&&o.enable(8),D.aoMap&&o.enable(9),D.emissiveMap&&o.enable(10),D.bumpMap&&o.enable(11),D.normalMap&&o.enable(12),D.objectSpaceNormalMap&&o.enable(13),D.tangentSpaceNormalMap&&o.enable(14),D.clearcoat&&o.enable(15),D.clearcoatMap&&o.enable(16),D.clearcoatRoughnessMap&&o.enable(17),D.clearcoatNormalMap&&o.enable(18),D.displacementMap&&o.enable(19),D.specularMap&&o.enable(20),D.roughnessMap&&o.enable(21),D.metalnessMap&&o.enable(22),D.gradientMap&&o.enable(23),D.alphaMap&&o.enable(24),D.alphaTest&&o.enable(25),D.vertexColors&&o.enable(26),D.vertexAlphas&&o.enable(27),D.vertexUvs&&o.enable(28),D.vertexTangents&&o.enable(29),D.uvsVertexOnly&&o.enable(30),D.fog&&o.enable(31),M.push(o.mask),o.disableAll(),D.useFog&&o.enable(0),D.flatShading&&o.enable(1),D.logarithmicDepthBuffer&&o.enable(2),D.skinning&&o.enable(3),D.useVertexTexture&&o.enable(4),D.morphTargets&&o.enable(5),D.morphNormals&&o.enable(6),D.premultipliedAlpha&&o.enable(7),D.shadowMapEnabled&&o.enable(8),D.physicallyCorrectLights&&o.enable(9),D.doubleSided&&o.enable(10),D.flipSided&&o.enable(11),D.depthPacking&&o.enable(12),D.dithering&&o.enable(13),D.specularIntensityMap&&o.enable(14),D.specularColorMap&&o.enable(15),D.transmission&&o.enable(16),D.transmissionMap&&o.enable(17),D.thicknessMap&&o.enable(18),D.sheen&&o.enable(19),D.sheenColorMap&&o.enable(20),D.sheenRoughnessMap&&o.enable(21),D.decodeVideoTexture&&o.enable(22),M.push(o.mask)}function E(M){let D=x[M.type],A;if(D){let H=q2[D];A=P8.clone(H.uniforms)}else A=M.uniforms;return A}function T(M,D){let A;for(let H=0,V=c.length;H0?i.push(p):m.transparent===!0?a.push(p):t.push(p)}function l(f,h,m,v,g,x){let p=s(f,h,m,v,g,x);m.transmission>0?i.unshift(p):m.transparent===!0?a.unshift(p):t.unshift(p)}function c(f,h){t.length>1&&t.sort(f||Ou),i.length>1&&i.sort(h||ro),a.length>1&&a.sort(h||ro)}function u(){for(let f=e,h=n.length;f=n.get(i).length?(r=new no,n.get(i).push(r)):r=n.get(i)[a],r}function t(){n=new WeakMap}return{get:e,dispose:t}}function Gu(){let n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new k,color:new x1};break;case"SpotLight":t={position:new k,direction:new k,color:new x1,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new k,color:new x1,distance:0,decay:0};break;case"HemisphereLight":t={direction:new k,skyColor:new x1,groundColor:new x1};break;case"RectAreaLight":t={color:new x1,position:new k,halfWidth:new k,halfHeight:new k};break}return n[e.id]=t,t}}}function qu(){let n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new z1};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new z1};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new z1,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}var Wu=0;function ju(n,e){return(e.castShadow?1:0)-(n.castShadow?1:0)}function oo(n,e){let t=new Gu,i=qu(),a={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};for(let u=0;u<9;u++)a.probe.push(new k);let r=new k,s=new k1,o=new k1;function l(u,f){let h=0,m=0,v=0;for(let P=0;P<9;P++)a.probe[P].set(0,0,0);let g=0,x=0,p=0,d=0,z=0,b=0,C=0,E=0;u.sort(ju);let T=f!==!0?Math.PI:1;for(let P=0,F=u.length;P0&&(e.isWebGL2?(a.rectAreaLTC1=e1.LTC_FLOAT_1,a.rectAreaLTC2=e1.LTC_FLOAT_2):n.has("OES_texture_float_linear")===!0?(a.rectAreaLTC1=e1.LTC_FLOAT_1,a.rectAreaLTC2=e1.LTC_FLOAT_2):n.has("OES_texture_half_float_linear")===!0?(a.rectAreaLTC1=e1.LTC_HALF_1,a.rectAreaLTC2=e1.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),a.ambient[0]=h,a.ambient[1]=m,a.ambient[2]=v;let _=a.hash;(_.directionalLength!==g||_.pointLength!==x||_.spotLength!==p||_.rectAreaLength!==d||_.hemiLength!==z||_.numDirectionalShadows!==b||_.numPointShadows!==C||_.numSpotShadows!==E)&&(a.directional.length=g,a.spot.length=p,a.rectArea.length=d,a.point.length=x,a.hemi.length=z,a.directionalShadow.length=b,a.directionalShadowMap.length=b,a.pointShadow.length=C,a.pointShadowMap.length=C,a.spotShadow.length=E,a.spotShadowMap.length=E,a.directionalShadowMatrix.length=b,a.pointShadowMatrix.length=C,a.spotShadowMatrix.length=E,_.directionalLength=g,_.pointLength=x,_.spotLength=p,_.rectAreaLength=d,_.hemiLength=z,_.numDirectionalShadows=b,_.numPointShadows=C,_.numSpotShadows=E,a.version=Wu++)}function c(u,f){let h=0,m=0,v=0,g=0,x=0,p=f.matrixWorldInverse;for(let d=0,z=u.length;d=t.get(r).length?(o=new co(n,e),t.get(r).push(o)):o=t.get(r)[s],o}function a(){t=new WeakMap}return{get:i,dispose:a}}var n0=class extends L2{constructor(e){super();this.type="MeshDepthMaterial",this.depthPacking=y8,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}};n0.prototype.isMeshDepthMaterial=!0;var s0=class extends L2{constructor(e){super();this.type="MeshDistanceMaterial",this.referencePosition=new k,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.fog=!1,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}};s0.prototype.isMeshDistanceMaterial=!0;var uo=` +`+H)}else _!==""?console.warn("THREE.WebGLProgram: Program Info Log:",_):(P===""||F==="")&&(D=!1);D&&(this.diagnostics={runnable:M,programLog:_,vertexShader:{log:P,prefix:g},fragmentShader:{log:F,prefix:x}})}a.deleteShader(b),a.deleteShader(C);let E;this.getUniforms=function(){return E===void 0&&(E=new Ae(a,v)),E};let T;return this.getAttributes=function(){return T===void 0&&(T=Tu(a,v)),T},this.destroy=function(){i.releaseStatesOfProgram(this),a.deleteProgram(v),this.program=void 0},this.name=t.shaderName,this.id=Au++,this.cacheKey=e,this.usedTimes=1,this.program=v,this.vertexShader=b,this.fragmentShader=C,this}var Uu=0,_i=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,i=e.fragmentShader,a=this._getShaderStage(t),r=this._getShaderStage(i),s=this._getShaderCacheForMaterial(e);return s.has(a)===!1&&(s.add(a),a.usedTimes++),s.has(r)===!1&&(s.add(r),r.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let i of t)i.usedTimes--,i.usedTimes===0&&this.shaderCache.delete(i);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache;return t.has(e)===!1&&t.set(e,new Set),t.get(e)}_getShaderStage(e){let t=this.shaderCache;if(t.has(e)===!1){let i=new to;t.set(e,i)}return t.get(e)}},to=class{constructor(){this.id=Uu++,this.usedTimes=0}};function io(n,e,t,i,a,r,s){let o=new Rt,l=new _i,c=[],u=a.isWebGL2,f=a.logarithmicDepthBuffer,h=a.floatVertexTextures,m=a.maxVertexUniforms,v=a.vertexTextures,g=a.precision,x={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function p(M){let A=M.skeleton.bones;if(h)return 1024;{let V=Math.floor((m-20)/4),L=Math.min(V,A.length);return L0,u1=M.clearcoat>0;return{isWebGL2:u,shaderID:Z,shaderName:M.type,vertexShader:W,fragmentShader:X,defines:M.defines,customVertexShaderID:Q,customFragmentShaderID:a1,isRawShaderMaterial:M.isRawShaderMaterial===!0,glslVersion:M.glslVersion,precision:g,instancing:V.isInstancedMesh===!0,instancingColor:V.isInstancedMesh===!0&&V.instanceColor!==null,supportsVertexTextures:v,outputEncoding:B===null?n.outputEncoding:B.isXRRenderTarget===!0?B.texture.encoding:N2,map:!!M.map,matcap:!!M.matcap,envMap:!!U,envMapMode:U&&U.mapping,envMapCubeUV:!!U&&(U.mapping===i4||U.mapping===Et),lightMap:!!M.lightMap,aoMap:!!M.aoMap,emissiveMap:!!M.emissiveMap,bumpMap:!!M.bumpMap,normalMap:!!M.normalMap,objectSpaceNormalMap:M.normalMapType===z8,tangentSpaceNormalMap:M.normalMapType===D6,decodeVideoTexture:!!M.map&&M.map.isVideoTexture===!0&&M.map.encoding===I1,clearcoat:u1,clearcoatMap:u1&&!!M.clearcoatMap,clearcoatRoughnessMap:u1&&!!M.clearcoatRoughnessMap,clearcoatNormalMap:u1&&!!M.clearcoatNormalMap,displacementMap:!!M.displacementMap,roughnessMap:!!M.roughnessMap,metalnessMap:!!M.metalnessMap,specularMap:!!M.specularMap,specularIntensityMap:!!M.specularIntensityMap,specularColorMap:!!M.specularColorMap,alphaMap:!!M.alphaMap,alphaTest:M1,alphaWrite:M.alphaWrite||M.transparent,gradientMap:!!M.gradientMap,sheen:M.sheen>0,sheenColorMap:!!M.sheenColorMap,sheenRoughnessMap:!!M.sheenRoughnessMap,transmission:M.transmission>0,transmissionMap:!!M.transmissionMap,thicknessMap:!!M.thicknessMap,combine:M.combine,vertexTangents:!!M.normalMap&&!!V.geometry&&!!V.geometry.attributes.tangent,vertexColors:M.vertexColors,vertexAlphas:M.vertexColors===!0&&!!V.geometry&&!!V.geometry.attributes.color&&V.geometry.attributes.color.itemSize===4,vertexUvs:!!M.map||!!M.bumpMap||!!M.normalMap||!!M.specularMap||!!M.alphaMap||!!M.emissiveMap||!!M.roughnessMap||!!M.metalnessMap||!!M.clearcoatMap||!!M.clearcoatRoughnessMap||!!M.clearcoatNormalMap||!!M.displacementMap||!!M.transmissionMap||!!M.thicknessMap||!!M.specularIntensityMap||!!M.specularColorMap||!!M.sheenColorMap||!!M.sheenRoughnessMap,uvsVertexOnly:!(!!M.map||!!M.bumpMap||!!M.normalMap||!!M.specularMap||!!M.alphaMap||!!M.emissiveMap||!!M.roughnessMap||!!M.metalnessMap||!!M.clearcoatNormalMap||M.transmission>0||!!M.transmissionMap||!!M.thicknessMap||!!M.specularIntensityMap||!!M.specularColorMap||M.sheen>0||!!M.sheenColorMap||!!M.sheenRoughnessMap)&&!!M.displacementMap,fog:!!L,useFog:M.fog,fogExp2:L&&L.isFogExp2,flatShading:!!M.flatShading,sizeAttenuation:M.sizeAttenuation,logarithmicDepthBuffer:f,skinning:V.isSkinnedMesh===!0&&O>0,maxBones:O,useVertexTexture:h,morphTargets:!!V.geometry&&!!V.geometry.morphAttributes.position,morphNormals:!!V.geometry&&!!V.geometry.morphAttributes.normal,morphTargetsCount:!!V.geometry&&!!V.geometry.morphAttributes.position?V.geometry.morphAttributes.position.length:0,numDirLights:D.directional.length,numPointLights:D.point.length,numSpotLights:D.spot.length,numRectAreaLights:D.rectArea.length,numHemiLights:D.hemi.length,numDirLightShadows:D.directionalShadowMap.length,numPointLightShadows:D.pointShadowMap.length,numSpotLightShadows:D.spotShadowMap.length,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:M.dithering,shadowMapEnabled:n.shadowMap.enabled&&A.length>0,shadowMapType:n.shadowMap.type,toneMapping:M.toneMapped?n.toneMapping:U2,physicallyCorrectLights:n.physicallyCorrectLights,premultipliedAlpha:M.premultipliedAlpha,doubleSided:M.side===K2,flipSided:M.side===P1,depthPacking:M.depthPacking!==void 0?M.depthPacking:!1,index0AttributeName:M.index0AttributeName,extensionDerivatives:M.extensions&&M.extensions.derivatives,extensionFragDepth:M.extensions&&M.extensions.fragDepth,extensionDrawBuffers:M.extensions&&M.extensions.drawBuffers,extensionShaderTextureLOD:M.extensions&&M.extensions.shaderTextureLOD,rendererExtensionFragDepth:u||i.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||i.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||i.has("EXT_shader_texture_lod"),customProgramCacheKey:M.customProgramCacheKey()}}function z(M){let D=[];if(M.shaderID?D.push(M.shaderID):(D.push(M.customVertexShaderID),D.push(M.customFragmentShaderID)),M.defines!==void 0)for(let A in M.defines)D.push(A),D.push(M.defines[A]);return M.isRawShaderMaterial===!1&&(b(D,M),C(D,M),D.push(n.outputEncoding)),D.push(M.customProgramCacheKey),D.join()}function b(M,D){M.push(D.precision),M.push(D.outputEncoding),M.push(D.envMapMode),M.push(D.combine),M.push(D.vertexUvs),M.push(D.fogExp2),M.push(D.sizeAttenuation),M.push(D.maxBones),M.push(D.morphTargetsCount),M.push(D.numDirLights),M.push(D.numPointLights),M.push(D.numSpotLights),M.push(D.numHemiLights),M.push(D.numRectAreaLights),M.push(D.numDirLightShadows),M.push(D.numPointLightShadows),M.push(D.numSpotLightShadows),M.push(D.shadowMapType),M.push(D.toneMapping),M.push(D.numClippingPlanes),M.push(D.numClipIntersection),M.push(D.alphaWrite)}function C(M,D){o.disableAll(),D.isWebGL2&&o.enable(0),D.supportsVertexTextures&&o.enable(1),D.instancing&&o.enable(2),D.instancingColor&&o.enable(3),D.map&&o.enable(4),D.matcap&&o.enable(5),D.envMap&&o.enable(6),D.envMapCubeUV&&o.enable(7),D.lightMap&&o.enable(8),D.aoMap&&o.enable(9),D.emissiveMap&&o.enable(10),D.bumpMap&&o.enable(11),D.normalMap&&o.enable(12),D.objectSpaceNormalMap&&o.enable(13),D.tangentSpaceNormalMap&&o.enable(14),D.clearcoat&&o.enable(15),D.clearcoatMap&&o.enable(16),D.clearcoatRoughnessMap&&o.enable(17),D.clearcoatNormalMap&&o.enable(18),D.displacementMap&&o.enable(19),D.specularMap&&o.enable(20),D.roughnessMap&&o.enable(21),D.metalnessMap&&o.enable(22),D.gradientMap&&o.enable(23),D.alphaMap&&o.enable(24),D.alphaTest&&o.enable(25),D.vertexColors&&o.enable(26),D.vertexAlphas&&o.enable(27),D.vertexUvs&&o.enable(28),D.vertexTangents&&o.enable(29),D.uvsVertexOnly&&o.enable(30),D.fog&&o.enable(31),M.push(o.mask),o.disableAll(),D.useFog&&o.enable(0),D.flatShading&&o.enable(1),D.logarithmicDepthBuffer&&o.enable(2),D.skinning&&o.enable(3),D.useVertexTexture&&o.enable(4),D.morphTargets&&o.enable(5),D.morphNormals&&o.enable(6),D.premultipliedAlpha&&o.enable(7),D.shadowMapEnabled&&o.enable(8),D.physicallyCorrectLights&&o.enable(9),D.doubleSided&&o.enable(10),D.flipSided&&o.enable(11),D.depthPacking&&o.enable(12),D.dithering&&o.enable(13),D.specularIntensityMap&&o.enable(14),D.specularColorMap&&o.enable(15),D.transmission&&o.enable(16),D.transmissionMap&&o.enable(17),D.thicknessMap&&o.enable(18),D.sheen&&o.enable(19),D.sheenColorMap&&o.enable(20),D.sheenRoughnessMap&&o.enable(21),D.decodeVideoTexture&&o.enable(22),M.push(o.mask)}function E(M){let D=x[M.type],A;if(D){let H=q2[D];A=P8.clone(H.uniforms)}else A=M.uniforms;return A}function T(M,D){let A;for(let H=0,V=c.length;H0?i.push(p):m.transparent===!0?a.push(p):t.push(p)}function l(f,h,m,v,g,x){let p=s(f,h,m,v,g,x);m.transmission>0?i.unshift(p):m.transparent===!0?a.unshift(p):t.unshift(p)}function c(f,h){t.length>1&&t.sort(f||Ou),i.length>1&&i.sort(h||ro),a.length>1&&a.sort(h||ro)}function u(){for(let f=e,h=n.length;f=n.get(i).length?(r=new no,n.get(i).push(r)):r=n.get(i)[a],r}function t(){n=new WeakMap}return{get:e,dispose:t}}function Gu(){let n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={direction:new k,color:new x1};break;case"SpotLight":t={position:new k,direction:new k,color:new x1,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new k,color:new x1,distance:0,decay:0};break;case"HemisphereLight":t={direction:new k,skyColor:new x1,groundColor:new x1};break;case"RectAreaLight":t={color:new x1,position:new k,halfWidth:new k,halfHeight:new k};break}return n[e.id]=t,t}}}function qu(){let n={};return{get:function(e){if(n[e.id]!==void 0)return n[e.id];let t;switch(e.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new z1};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new z1};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new z1,shadowCameraNear:1,shadowCameraFar:1e3};break}return n[e.id]=t,t}}}var Wu=0;function ju(n,e){return(e.castShadow?1:0)-(n.castShadow?1:0)}function oo(n,e){let t=new Gu,i=qu(),a={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotShadow:[],spotShadowMap:[],spotShadowMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[]};for(let u=0;u<9;u++)a.probe.push(new k);let r=new k,s=new k1,o=new k1;function l(u,f){let h=0,m=0,v=0;for(let P=0;P<9;P++)a.probe[P].set(0,0,0);let g=0,x=0,p=0,d=0,z=0,b=0,C=0,E=0;u.sort(ju);let T=f!==!0?Math.PI:1;for(let P=0,F=u.length;P0&&(e.isWebGL2?(a.rectAreaLTC1=e1.LTC_FLOAT_1,a.rectAreaLTC2=e1.LTC_FLOAT_2):n.has("OES_texture_float_linear")===!0?(a.rectAreaLTC1=e1.LTC_FLOAT_1,a.rectAreaLTC2=e1.LTC_FLOAT_2):n.has("OES_texture_half_float_linear")===!0?(a.rectAreaLTC1=e1.LTC_HALF_1,a.rectAreaLTC2=e1.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),a.ambient[0]=h,a.ambient[1]=m,a.ambient[2]=v;let _=a.hash;(_.directionalLength!==g||_.pointLength!==x||_.spotLength!==p||_.rectAreaLength!==d||_.hemiLength!==z||_.numDirectionalShadows!==b||_.numPointShadows!==C||_.numSpotShadows!==E)&&(a.directional.length=g,a.spot.length=p,a.rectArea.length=d,a.point.length=x,a.hemi.length=z,a.directionalShadow.length=b,a.directionalShadowMap.length=b,a.pointShadow.length=C,a.pointShadowMap.length=C,a.spotShadow.length=E,a.spotShadowMap.length=E,a.directionalShadowMatrix.length=b,a.pointShadowMatrix.length=C,a.spotShadowMatrix.length=E,_.directionalLength=g,_.pointLength=x,_.spotLength=p,_.rectAreaLength=d,_.hemiLength=z,_.numDirectionalShadows=b,_.numPointShadows=C,_.numSpotShadows=E,a.version=Wu++)}function c(u,f){let h=0,m=0,v=0,g=0,x=0,p=f.matrixWorldInverse;for(let d=0,z=u.length;d=t.get(r).length?(o=new co(n,e),t.get(r).push(o)):o=t.get(r)[s],o}function a(){t=new WeakMap}return{get:i,dispose:a}}var n0=class extends L2{constructor(e){super();this.type="MeshDepthMaterial",this.depthPacking=y8,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}};n0.prototype.isMeshDepthMaterial=!0;var s0=class extends L2{constructor(e){super();this.type="MeshDistanceMaterial",this.referencePosition=new k,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.fog=!1,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}};s0.prototype.isMeshDistanceMaterial=!0;var uo=` void main() { gl_Position = vec4( position, 1.0 ); @@ -5728,13 +5728,13 @@ void main() { gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) ); } -`;function fo(n,e,t){let i=new L4,a=new z1,r=new z1,s=new q1,o=new n0({depthPacking:C8}),l=new s0,c={},u=t.maxTextureSize,f={0:P1,1:Ie,2:K2},h=new ne({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new z1},radius:{value:4}},vertexShader:uo,fragmentShader:ho}),m=h.clone();m.defines.HORIZONTAL_PASS=1;let v=new b2;v.setAttribute("position",new M2(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let g=new l2(v,h),x=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=C6,this.render=function(b,C,E){if(x.enabled===!1||x.autoUpdate===!1&&x.needsUpdate===!1||b.length===0)return;let T=n.getRenderTarget(),_=n.getActiveCubeFace(),P=n.getActiveMipmapLevel(),F=n.state;F.setBlending(k2),F.buffers.color.setClear(1,1,1,1),F.buffers.depth.setTest(!0),F.setScissorTest(!1);for(let M=0,D=b.length;Mu||a.y>u)&&(a.x>u&&(r.x=Math.floor(u/V.x),a.x=r.x*V.x,H.mapSize.x=r.x),a.y>u&&(r.y=Math.floor(u/V.y),a.y=r.y*V.y,H.mapSize.y=r.y)),H.map===null&&!H.isPointLightShadow&&this.type===y4){let N={minFilter:e2,magFilter:e2,format:W1};H.map=new m2(a.x,a.y,N),H.map.texture.name=A.name+".shadowMap",H.mapPass=new m2(a.x,a.y,N),H.camera.updateProjectionMatrix()}if(H.map===null){let N={minFilter:Q1,magFilter:Q1,format:W1};H.map=new m2(a.x,a.y,N),H.map.texture.name=A.name+".shadowMap",H.camera.updateProjectionMatrix()}n.setRenderTarget(H.map),n.clear();let L=H.getViewportCount();for(let N=0;N0){let A=M.uuid,H=E.uuid,V=c[A];V===void 0&&(V={},c[A]=V);let L=V[H];L===void 0&&(L=M.clone(),V[H]=L),M=L}return M.visible=E.visible,M.wireframe=E.wireframe,F===y4?M.side=E.shadowSide!==null?E.shadowSide:E.side:M.side=E.shadowSide!==null?E.shadowSide:f[E.side],M.alphaMap=E.alphaMap,M.alphaTest=E.alphaTest,M.clipShadows=E.clipShadows,M.clippingPlanes=E.clippingPlanes,M.clipIntersection=E.clipIntersection,M.displacementMap=E.displacementMap,M.displacementScale=E.displacementScale,M.displacementBias=E.displacementBias,M.wireframeLinewidth=E.wireframeLinewidth,M.linewidth=E.linewidth,T.isPointLight===!0&&M.isMeshDistanceMaterial===!0&&(M.referencePosition.setFromMatrixPosition(T.matrixWorld),M.nearDistance=_,M.farDistance=P),M}function z(b,C,E,T,_){if(b.visible===!1)return;if(b.layers.test(C.layers)&&(b.isMesh||b.isLine||b.isPoints)&&(b.castShadow||b.receiveShadow&&_===y4)&&(!b.frustumCulled||i.intersectsObject(b))){b.modelViewMatrix.multiplyMatrices(E.matrixWorldInverse,b.matrixWorld);let M=e.update(b),D=b.material;if(Array.isArray(D)){let A=M.groups;for(let H=0,V=A.length;H=1):L.indexOf("OpenGL ES")!==-1&&(V=parseFloat(/^OpenGL ES (\d)/.exec(L)[1]),H=V>=2);let N=null,U={},Z=n.getParameter(n.SCISSOR_BOX),O=n.getParameter(n.VIEWPORT),W=new q1().fromArray(Z),X=new q1().fromArray(O);function Q(I,l1,o1){let m1=new Uint8Array(4),$=n.createTexture();n.bindTexture(I,$),n.texParameteri(I,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(I,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let p1=0;p1t1||R.height>t1)&&(h1=t1/Math.max(R.width,R.height)),h1<1||w===!0)if(typeof HTMLImageElement!="undefined"&&R instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&R instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&R instanceof ImageBitmap){let Y=w?Sr:Math.floor,d1=Y(h1*R.width),f1=Y(h1*R.height);g===void 0&&(g=p(d1,f1));let s1=J?p(d1,f1):g;return s1.width=d1,s1.height=f1,s1.getContext("2d").drawImage(R,0,0,d1,f1),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+R.width+"x"+R.height+") to ("+d1+"x"+f1+")."),s1}else return"data"in R&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+R.width+"x"+R.height+")."),R;return R}function z(R){return $0(R.width)&&$0(R.height)}function b(R){return o?!1:R.wrapS!==o2||R.wrapT!==o2||R.minFilter!==Q1&&R.minFilter!==e2}function C(R,w){return R.generateMipmaps&&w&&R.minFilter!==Q1&&R.minFilter!==e2}function E(R){n.generateMipmap(R)}function T(R,w,J,t1,h1=!1){if(o===!1)return w;if(R!==null){if(n[R]!==void 0)return n[R];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+R+"'")}let Y=w;return w===n.RED&&(J===n.FLOAT&&(Y=n.R32F),J===n.HALF_FLOAT&&(Y=n.R16F),J===n.UNSIGNED_BYTE&&(Y=n.R8)),w===n.RG&&(J===n.FLOAT&&(Y=n.RG32F),J===n.HALF_FLOAT&&(Y=n.RG16F),J===n.UNSIGNED_BYTE&&(Y=n.RG8)),w===n.RGBA&&(J===n.FLOAT&&(Y=n.RGBA32F),J===n.HALF_FLOAT&&(Y=n.RGBA16F),J===n.UNSIGNED_BYTE&&(Y=t1===I1&&h1===!1?n.SRGB8_ALPHA8:n.RGBA8),J===n.UNSIGNED_SHORT_4_4_4_4&&(Y=n.RGBA4),J===n.UNSIGNED_SHORT_5_5_5_1&&(Y=n.RGB5_A1)),(Y===n.R16F||Y===n.R32F||Y===n.RG16F||Y===n.RG32F||Y===n.RGBA16F||Y===n.RGBA32F)&&e.get("EXT_color_buffer_float"),Y}function _(R,w,J){return C(R,J)===!0||R.isFramebufferTexture&&R.minFilter!==Q1&&R.minFilter!==e2?Math.log2(Math.max(w.width,w.height))+1:R.mipmaps!==void 0&&R.mipmaps.length>0?R.mipmaps.length:R.isCompressedTexture&&Array.isArray(R.image)?w.mipmaps.length:1}function P(R){return R===Q1||R===o3||R===c3?n.NEAREST:n.LINEAR}function F(R){let w=R.target;w.removeEventListener("dispose",F),D(w),w.isVideoTexture&&v.delete(w),s.memory.textures--}function M(R){let w=R.target;w.removeEventListener("dispose",M),A(w)}function D(R){let w=i.get(R);w.__webglInit!==void 0&&(n.deleteTexture(w.__webglTexture),i.remove(R))}function A(R){let w=R.texture,J=i.get(R),t1=i.get(w);if(!!R){if(t1.__webglTexture!==void 0&&(n.deleteTexture(t1.__webglTexture),s.memory.textures--),R.depthTexture&&R.depthTexture.dispose(),R.isWebGLCubeRenderTarget)for(let h1=0;h1<6;h1++)n.deleteFramebuffer(J.__webglFramebuffer[h1]),J.__webglDepthbuffer&&n.deleteRenderbuffer(J.__webglDepthbuffer[h1]);else n.deleteFramebuffer(J.__webglFramebuffer),J.__webglDepthbuffer&&n.deleteRenderbuffer(J.__webglDepthbuffer),J.__webglMultisampledFramebuffer&&n.deleteFramebuffer(J.__webglMultisampledFramebuffer),J.__webglColorRenderbuffer&&n.deleteRenderbuffer(J.__webglColorRenderbuffer),J.__webglDepthRenderbuffer&&n.deleteRenderbuffer(J.__webglDepthRenderbuffer);if(R.isWebGLMultipleRenderTargets)for(let h1=0,Y=w.length;h1=l&&console.warn("THREE.WebGLTextures: Trying to use "+R+" texture units while this GPU supports only "+l),H+=1,R}function N(R,w){let J=i.get(R);if(R.isVideoTexture&&W2(R),R.version>0&&J.__version!==R.version){let t1=R.image;if(t1===void 0)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else if(t1.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{B(J,R,w);return}}t.activeTexture(n.TEXTURE0+w),t.bindTexture(n.TEXTURE_2D,J.__webglTexture)}function U(R,w){let J=i.get(R);if(R.version>0&&J.__version!==R.version){B(J,R,w);return}t.activeTexture(n.TEXTURE0+w),t.bindTexture(n.TEXTURE_2D_ARRAY,J.__webglTexture)}function Z(R,w){let J=i.get(R);if(R.version>0&&J.__version!==R.version){B(J,R,w);return}t.activeTexture(n.TEXTURE0+w),t.bindTexture(n.TEXTURE_3D,J.__webglTexture)}function O(R,w){let J=i.get(R);if(R.version>0&&J.__version!==R.version){M1(J,R,w);return}t.activeTexture(n.TEXTURE0+w),t.bindTexture(n.TEXTURE_CUBE_MAP,J.__webglTexture)}let W={[Lt]:n.REPEAT,[o2]:n.CLAMP_TO_EDGE,[Dt]:n.MIRRORED_REPEAT},X={[Q1]:n.NEAREST,[o3]:n.NEAREST_MIPMAP_NEAREST,[c3]:n.NEAREST_MIPMAP_LINEAR,[e2]:n.LINEAR,[s8]:n.LINEAR_MIPMAP_NEAREST,[a4]:n.LINEAR_MIPMAP_LINEAR};function Q(R,w,J){if(J?(n.texParameteri(R,n.TEXTURE_WRAP_S,W[w.wrapS]),n.texParameteri(R,n.TEXTURE_WRAP_T,W[w.wrapT]),(R===n.TEXTURE_3D||R===n.TEXTURE_2D_ARRAY)&&n.texParameteri(R,n.TEXTURE_WRAP_R,W[w.wrapR]),n.texParameteri(R,n.TEXTURE_MAG_FILTER,X[w.magFilter]),n.texParameteri(R,n.TEXTURE_MIN_FILTER,X[w.minFilter])):(n.texParameteri(R,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(R,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),(R===n.TEXTURE_3D||R===n.TEXTURE_2D_ARRAY)&&n.texParameteri(R,n.TEXTURE_WRAP_R,n.CLAMP_TO_EDGE),(w.wrapS!==o2||w.wrapT!==o2)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),n.texParameteri(R,n.TEXTURE_MAG_FILTER,P(w.magFilter)),n.texParameteri(R,n.TEXTURE_MIN_FILTER,P(w.minFilter)),w.minFilter!==Q1&&w.minFilter!==e2&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),e.has("EXT_texture_filter_anisotropic")===!0){let t1=e.get("EXT_texture_filter_anisotropic");if(w.type===J2&&e.has("OES_texture_float_linear")===!1||o===!1&&w.type===be&&e.has("OES_texture_half_float_linear")===!1)return;(w.anisotropy>1||i.get(w).__currentAnisotropy)&&(n.texParameterf(R,t1.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(w.anisotropy,a.getMaxAnisotropy())),i.get(w).__currentAnisotropy=w.anisotropy)}}function a1(R,w){R.__webglInit===void 0&&(R.__webglInit=!0,w.addEventListener("dispose",F),R.__webglTexture=n.createTexture(),s.memory.textures++)}function B(R,w,J){let t1=n.TEXTURE_2D;w.isDataTexture2DArray&&(t1=n.TEXTURE_2D_ARRAY),w.isDataTexture3D&&(t1=n.TEXTURE_3D),a1(R,w),t.activeTexture(n.TEXTURE0+J),t.bindTexture(t1,R.__webglTexture),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,w.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,w.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,w.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE);let h1=b(w)&&z(w.image)===!1,Y=d(w.image,h1,!1,u);Y=v2(w,Y);let d1=z(Y)||o,f1=r.convert(w.format,w.encoding),s1=r.convert(w.type),r1=T(w.internalFormat,f1,s1,w.encoding,w.isVideoTexture);Q(t1,w,d1);let b1,I=w.mipmaps,l1=o&&w.isVideoTexture!==!0,o1=R.__version===void 0,m1=_(w,Y,d1);if(w.isDepthTexture)r1=n.DEPTH_COMPONENT,o?w.type===J2?r1=n.DEPTH_COMPONENT32F:w.type===O4?r1=n.DEPTH_COMPONENT24:w.type===ye?r1=n.DEPTH24_STENCIL8:r1=n.DEPTH_COMPONENT16:w.type===J2&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),w.format===Q2&&r1===n.DEPTH_COMPONENT&&w.type!==Ue&&w.type!==O4&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),w.type=Ue,s1=r.convert(w.type)),w.format===Ce&&r1===n.DEPTH_COMPONENT&&(r1=n.DEPTH_STENCIL,w.type!==ye&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),w.type=ye,s1=r.convert(w.type))),l1&&o1?t.texStorage2D(n.TEXTURE_2D,1,r1,Y.width,Y.height):t.texImage2D(n.TEXTURE_2D,0,r1,Y.width,Y.height,0,f1,s1,null);else if(w.isDataTexture)if(I.length>0&&d1){l1&&o1&&t.texStorage2D(n.TEXTURE_2D,m1,r1,I[0].width,I[0].height);for(let $=0,p1=I.length;$0&&d1){l1&&o1&&t.texStorage2D(n.TEXTURE_2D,m1,r1,I[0].width,I[0].height);for(let $=0,p1=I.length;$0&&o1++,t.texStorage2D(n.TEXTURE_CUBE_MAP,o1,b1,Y[0].width,Y[0].height));for(let $=0;$<6;$++)if(h1){I?t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+$,0,0,0,Y[$].width,Y[$].height,s1,r1,Y[$].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+$,0,b1,Y[$].width,Y[$].height,0,s1,r1,Y[$].data);for(let p1=0;p1m+v?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&h<=m-v&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(r=t.getPose(e.gripSpace,i),r!==null&&(l.matrix.fromArray(r.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),r.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(r.linearVelocity)):l.hasLinearVelocity=!1,r.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(r.angularVelocity)):l.hasAngularVelocity=!1));return o!==null&&(o.visible=a!==null),l!==null&&(l.visible=r!==null),c!==null&&(c.visible=s!==null),this}};var Gt=class extends $1{constructor(e,t,i,a,r,s,o,l,c,u){if(u=u!==void 0?u:Q2,u!==Q2&&u!==Ce)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");i===void 0&&u===Q2&&(i=Ue),i===void 0&&u===Ce&&(i=ye);super(null,a,r,s,o,l,u,i,c);this.image={width:e,height:t},this.magFilter=o!==void 0?o:Q1,this.minFilter=l!==void 0?l:Q1,this.flipY=!1,this.generateMipmaps=!1}};Gt.prototype.isDepthTexture=!0;var Si=class extends N2{constructor(e,t){super();let i=this,a=null,r=1,s=null,o="local-floor",l=e.extensions.has("WEBGL_multisampled_render_to_texture"),c=null,u=null,f=null,h=null,m=!1,v=null,g=t.getContextAttributes(),x=null,p=null,d=[],z=new Map,b=new t2;b.layers.enable(1),b.viewport=new q1;let C=new t2;C.layers.enable(2),C.viewport=new q1;let E=[b,C],T=new o0;T.layers.enable(1),T.layers.enable(2);let _=null,P=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(O){let W=d[O];return W===void 0&&(W=new Ot,d[O]=W),W.getTargetRaySpace()},this.getControllerGrip=function(O){let W=d[O];return W===void 0&&(W=new Ot,d[O]=W),W.getGripSpace()},this.getHand=function(O){let W=d[O];return W===void 0&&(W=new Ot,d[O]=W),W.getHandSpace()};function F(O){let W=z.get(O.inputSource);W&&W.dispatchEvent({type:O.type,data:O.inputSource})}function M(){z.forEach(function(O,W){O.disconnect(W)}),z.clear(),_=null,P=null,e.setRenderTarget(x),h=null,f=null,u=null,a=null,p=null,Z.stop(),i.isPresenting=!1,i.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(O){r=O,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(O){o=O,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return s},this.getBaseLayer=function(){return f!==null?f:h},this.getBinding=function(){return u},this.getFrame=function(){return v},this.getSession=function(){return a},this.setSession=async function(O){if(a=O,a!==null){if(x=e.getRenderTarget(),a.addEventListener("select",F),a.addEventListener("selectstart",F),a.addEventListener("selectend",F),a.addEventListener("squeeze",F),a.addEventListener("squeezestart",F),a.addEventListener("squeezeend",F),a.addEventListener("end",M),a.addEventListener("inputsourceschange",D),g.xrCompatible!==!0&&await t.makeXRCompatible(),a.renderState.layers===void 0||e.capabilities.isWebGL2===!1){let W={antialias:a.renderState.layers===void 0?g.antialias:!0,alpha:g.alpha,depth:g.depth,stencil:g.stencil,framebufferScaleFactor:r};h=new XRWebGLLayer(a,t,W),a.updateRenderState({baseLayer:h}),p=new m2(h.framebufferWidth,h.framebufferHeight,{format:W1,type:H2,encoding:e.outputEncoding})}else{m=g.antialias;let W=null,X=null,Q=null;g.depth&&(Q=g.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,W=g.stencil?Ce:Q2,X=g.stencil?ye:Ue);let a1={colorFormat:e.outputEncoding===I1?t.SRGB8_ALPHA8:t.RGBA8,depthFormat:Q,scaleFactor:r};u=new XRWebGLBinding(a,t),f=u.createProjectionLayer(a1),a.updateRenderState({layers:[f]}),m?p=new ut(f.textureWidth,f.textureHeight,{format:W1,type:H2,depthTexture:new Gt(f.textureWidth,f.textureHeight,X,void 0,void 0,void 0,void 0,void 0,void 0,W),stencilBuffer:g.stencil,ignoreDepth:f.ignoreDepthValues,useRenderToTexture:l,encoding:e.outputEncoding}):p=new m2(f.textureWidth,f.textureHeight,{format:W1,type:H2,depthTexture:new Gt(f.textureWidth,f.textureHeight,X,void 0,void 0,void 0,void 0,void 0,void 0,W),stencilBuffer:g.stencil,ignoreDepth:f.ignoreDepthValues,encoding:e.outputEncoding})}p.isXRRenderTarget=!0,this.setFoveation(1),s=await a.requestReferenceSpace(o),Z.setContext(a),Z.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}};function D(O){let W=a.inputSources;for(let X=0;X0&&(p.alphaTest.value=d.alphaTest);let z=n.get(d).envMap;z&&(p.envMap.value=z,p.flipEnvMap.value=z.isCubeTexture&&z.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=d.reflectivity,p.ior.value=d.ior,p.refractionRatio.value=d.refractionRatio),d.lightMap&&(p.lightMap.value=d.lightMap,p.lightMapIntensity.value=d.lightMapIntensity),d.aoMap&&(p.aoMap.value=d.aoMap,p.aoMapIntensity.value=d.aoMapIntensity);let b;d.map?b=d.map:d.specularMap?b=d.specularMap:d.displacementMap?b=d.displacementMap:d.normalMap?b=d.normalMap:d.bumpMap?b=d.bumpMap:d.roughnessMap?b=d.roughnessMap:d.metalnessMap?b=d.metalnessMap:d.alphaMap?b=d.alphaMap:d.emissiveMap?b=d.emissiveMap:d.clearcoatMap?b=d.clearcoatMap:d.clearcoatNormalMap?b=d.clearcoatNormalMap:d.clearcoatRoughnessMap?b=d.clearcoatRoughnessMap:d.specularIntensityMap?b=d.specularIntensityMap:d.specularColorMap?b=d.specularColorMap:d.transmissionMap?b=d.transmissionMap:d.thicknessMap?b=d.thicknessMap:d.sheenColorMap?b=d.sheenColorMap:d.sheenRoughnessMap&&(b=d.sheenRoughnessMap),b!==void 0&&(b.isWebGLRenderTarget&&(b=b.texture),b.matrixAutoUpdate===!0&&b.updateMatrix(),p.uvTransform.value.copy(b.matrix));let C;d.aoMap?C=d.aoMap:d.lightMap&&(C=d.lightMap),C!==void 0&&(C.isWebGLRenderTarget&&(C=C.texture),C.matrixAutoUpdate===!0&&C.updateMatrix(),p.uv2Transform.value.copy(C.matrix))}function a(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity}function r(p,d){p.dashSize.value=d.dashSize,p.totalSize.value=d.dashSize+d.gapSize,p.scale.value=d.scale}function s(p,d,z,b){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.size.value=d.size*z,p.scale.value=b*.5,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let C;d.map?C=d.map:d.alphaMap&&(C=d.alphaMap),C!==void 0&&(C.matrixAutoUpdate===!0&&C.updateMatrix(),p.uvTransform.value.copy(C.matrix))}function o(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.rotation.value=d.rotation,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let z;d.map?z=d.map:d.alphaMap&&(z=d.alphaMap),z!==void 0&&(z.matrixAutoUpdate===!0&&z.updateMatrix(),p.uvTransform.value.copy(z.matrix))}function l(p,d){d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap)}function c(p,d){p.specular.value.copy(d.specular),p.shininess.value=Math.max(d.shininess,1e-4),d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===P1&&(p.bumpScale.value*=-1)),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===P1&&p.normalScale.value.negate()),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias)}function u(p,d){d.gradientMap&&(p.gradientMap.value=d.gradientMap),d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===P1&&(p.bumpScale.value*=-1)),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===P1&&p.normalScale.value.negate()),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias)}function f(p,d){p.roughness.value=d.roughness,p.metalness.value=d.metalness,d.roughnessMap&&(p.roughnessMap.value=d.roughnessMap),d.metalnessMap&&(p.metalnessMap.value=d.metalnessMap),d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===P1&&(p.bumpScale.value*=-1)),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===P1&&p.normalScale.value.negate()),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias),n.get(d).envMap&&(p.envMapIntensity.value=d.envMapIntensity)}function h(p,d,z){f(p,d),p.ior.value=d.ior,d.sheen>0&&(p.sheenColor.value.copy(d.sheenColor).multiplyScalar(d.sheen),p.sheenRoughness.value=d.sheenRoughness,d.sheenColorMap&&(p.sheenColorMap.value=d.sheenColorMap),d.sheenRoughnessMap&&(p.sheenRoughnessMap.value=d.sheenRoughnessMap)),d.clearcoat>0&&(p.clearcoat.value=d.clearcoat,p.clearcoatRoughness.value=d.clearcoatRoughness,d.clearcoatMap&&(p.clearcoatMap.value=d.clearcoatMap),d.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=d.clearcoatRoughnessMap),d.clearcoatNormalMap&&(p.clearcoatNormalScale.value.copy(d.clearcoatNormalScale),p.clearcoatNormalMap.value=d.clearcoatNormalMap,d.side===P1&&p.clearcoatNormalScale.value.negate())),d.transmission>0&&(p.transmission.value=d.transmission,p.transmissionSamplerMap.value=z.texture,p.transmissionSamplerSize.value.set(z.width,z.height),d.transmissionMap&&(p.transmissionMap.value=d.transmissionMap),p.thickness.value=d.thickness,d.thicknessMap&&(p.thicknessMap.value=d.thicknessMap),p.attenuationDistance.value=d.attenuationDistance,p.attenuationColor.value.copy(d.attenuationColor)),p.specularIntensity.value=d.specularIntensity,p.specularColor.value.copy(d.specularColor),d.specularIntensityMap&&(p.specularIntensityMap.value=d.specularIntensityMap),d.specularColorMap&&(p.specularColorMap.value=d.specularColorMap)}function m(p,d){d.matcap&&(p.matcap.value=d.matcap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===P1&&(p.bumpScale.value*=-1)),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===P1&&p.normalScale.value.negate()),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias)}function v(p,d){d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias)}function g(p,d){d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias),p.referencePosition.value.copy(d.referencePosition),p.nearDistance.value=d.nearDistance,p.farDistance.value=d.farDistance}function x(p,d){d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===P1&&(p.bumpScale.value*=-1)),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===P1&&p.normalScale.value.negate()),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias)}return{refreshFogUniforms:e,refreshMaterialUniforms:t}}function Yu(){let n=_4("canvas");return n.style.display="block",n}function Ei(n={}){let e=n.canvas!==void 0?n.canvas:Yu(),t=n.context!==void 0?n.context:null,i=n.alpha!==void 0?n.alpha:!1,a=n.depth!==void 0?n.depth:!0,r=n.stencil!==void 0?n.stencil:!0,s=n.antialias!==void 0?n.antialias:!1,o=n.premultipliedAlpha!==void 0?n.premultipliedAlpha:!0,l=n.preserveDrawingBuffer!==void 0?n.preserveDrawingBuffer:!1,c=n.powerPreference!==void 0?n.powerPreference:"default",u=n.failIfMajorPerformanceCaveat!==void 0?n.failIfMajorPerformanceCaveat:!1,f=null,h=null,m=[],v=[];this.domElement=e,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=V2,this.physicallyCorrectLights=!1,this.toneMapping=U2,this.toneMappingExposure=1;let g=this,x=!1,p=0,d=0,z=null,b=-1,C=null,E=new q1,T=new q1,_=null,P=e.width,F=e.height,M=1,D=null,A=null,H=new q1(0,0,P,F),V=new q1(0,0,P,F),L=!1,N=new L4,U=!1,Z=!1,O=null,W=new k1,X=new k,Q={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function a1(){return z===null?M:1}let B=t;function M1(S,G){for(let j=0;j0?h=v[v.length-1]:h=null,m.pop(),m.length>0?f=m[m.length-1]:f=null};function Z1(S,G,j,q){if(S.visible===!1)return;if(S.layers.test(G.layers)){if(S.isGroup)j=S.renderOrder;else if(S.isLOD)S.autoUpdate===!0&&S.update(G);else if(S.isLight)h.pushLight(S),S.castShadow&&h.pushShadow(S);else if(S.isSprite){if(!S.frustumCulled||N.intersectsSprite(S)){q&&X.setFromMatrixPosition(S.matrixWorld).applyMatrix4(W);let y1=v2.update(S),S1=S.material;S1.visible&&f.push(S,y1,S1,j,X.z,null)}}else if((S.isMesh||S.isLine||S.isPoints)&&(S.isSkinnedMesh&&S.skeleton.frame!==T1.render.frame&&(S.skeleton.update(),S.skeleton.frame=T1.render.frame),!S.frustumCulled||N.intersectsObject(S))){q&&X.setFromMatrixPosition(S.matrixWorld).applyMatrix4(W);let y1=v2.update(S),S1=S.material;if(Array.isArray(S1)){let w1=y1.groups;for(let B1=0,H1=w1.length;B10&&we(K,G,j),q&&n1.viewport(E.copy(q)),K.length>0&&jt(K,G,j),g1.length>0&&jt(g1,G,j),y1.length>0&&jt(y1,G,j)}function we(S,G,j){if(O===null){let y1=s===!0&&v1.isWebGL2===!0?ut:m2;O=new y1(1024,1024,{generateMipmaps:!0,type:d1.convert(be)!==null?be:H2,minFilter:a4,magFilter:Q1,wrapS:o2,wrapT:o2,useRenderToTexture:u1.has("WEBGL_multisampled_render_to_texture")})}let q=g.getRenderTarget();g.setRenderTarget(O),g.clear();let K=g.toneMapping;g.toneMapping=U2,jt(S,G,j),g.toneMapping=K,C1.updateMultisampleRenderTarget(O),C1.updateRenderTargetMipmap(O),g.setRenderTarget(q)}function jt(S,G,j){let q=G.isScene===!0?G.overrideMaterial:null;for(let K=0,g1=S.length;K=0&&G<=S.width-q&&j>=0&&j<=S.height-K&&B.readPixels(G,j,q,K,d1.convert(B1),d1.convert(H1),g1):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{let w1=z!==null?A1.get(z).__webglFramebuffer:null;n1.bindFramebuffer(B.FRAMEBUFFER,w1)}}},this.copyFramebufferToTexture=function(S,G,j=0){if(G.isFramebufferTexture!==!0){console.error("THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.");return}let q=Math.pow(2,-j),K=Math.floor(G.image.width*q),g1=Math.floor(G.image.height*q);C1.setTexture2D(G,0),B.copyTexSubImage2D(B.TEXTURE_2D,j,0,0,S.x,S.y,K,g1),n1.unbindTexture()},this.copyTextureToTexture=function(S,G,j,q=0){let K=G.image.width,g1=G.image.height,y1=d1.convert(j.format),S1=d1.convert(j.type);C1.setTexture2D(j,0),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,j.flipY),B.pixelStorei(B.UNPACK_PREMULTIPLY_ALPHA_WEBGL,j.premultiplyAlpha),B.pixelStorei(B.UNPACK_ALIGNMENT,j.unpackAlignment),G.isDataTexture?B.texSubImage2D(B.TEXTURE_2D,q,S.x,S.y,K,g1,y1,S1,G.image.data):G.isCompressedTexture?B.compressedTexSubImage2D(B.TEXTURE_2D,q,S.x,S.y,G.mipmaps[0].width,G.mipmaps[0].height,y1,G.mipmaps[0].data):B.texSubImage2D(B.TEXTURE_2D,q,S.x,S.y,y1,S1,G.image),q===0&&j.generateMipmaps&&B.generateMipmap(B.TEXTURE_2D),n1.unbindTexture()},this.copyTextureToTexture3D=function(S,G,j,q,K=0){if(g.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let g1=S.max.x-S.min.x+1,y1=S.max.y-S.min.y+1,S1=S.max.z-S.min.z+1,w1=d1.convert(q.format),B1=d1.convert(q.type),H1;if(q.isDataTexture3D)C1.setTexture3D(q,0),H1=B.TEXTURE_3D;else if(q.isDataTexture2DArray)C1.setTexture2DArray(q,0),H1=B.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,q.flipY),B.pixelStorei(B.UNPACK_PREMULTIPLY_ALPHA_WEBGL,q.premultiplyAlpha),B.pixelStorei(B.UNPACK_ALIGNMENT,q.unpackAlignment);let V1=B.getParameter(B.UNPACK_ROW_LENGTH),Y1=B.getParameter(B.UNPACK_IMAGE_HEIGHT),d4=B.getParameter(B.UNPACK_SKIP_PIXELS),V4=B.getParameter(B.UNPACK_SKIP_ROWS),R1=B.getParameter(B.UNPACK_SKIP_IMAGES),le=j.isCompressedTexture?j.mipmaps[0]:j.image;B.pixelStorei(B.UNPACK_ROW_LENGTH,le.width),B.pixelStorei(B.UNPACK_IMAGE_HEIGHT,le.height),B.pixelStorei(B.UNPACK_SKIP_PIXELS,S.min.x),B.pixelStorei(B.UNPACK_SKIP_ROWS,S.min.y),B.pixelStorei(B.UNPACK_SKIP_IMAGES,S.min.z),j.isDataTexture||j.isDataTexture3D?B.texSubImage3D(H1,K,G.x,G.y,G.z,g1,y1,S1,w1,B1,le.data):j.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),B.compressedTexSubImage3D(H1,K,G.x,G.y,G.z,g1,y1,S1,w1,le.data)):B.texSubImage3D(H1,K,G.x,G.y,G.z,g1,y1,S1,w1,B1,le),B.pixelStorei(B.UNPACK_ROW_LENGTH,V1),B.pixelStorei(B.UNPACK_IMAGE_HEIGHT,Y1),B.pixelStorei(B.UNPACK_SKIP_PIXELS,d4),B.pixelStorei(B.UNPACK_SKIP_ROWS,V4),B.pixelStorei(B.UNPACK_SKIP_IMAGES,R1),K===0&&q.generateMipmaps&&B.generateMipmap(H1),n1.unbindTexture()},this.initTexture=function(S){C1.setTexture2D(S,0),n1.unbindTexture()},this.resetState=function(){p=0,d=0,z=null,n1.reset(),f1.reset()},typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}Ei.prototype.isWebGLRenderer=!0;var c0=class extends j1{constructor(){super();this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),t}};c0.prototype.isScene=!0;var ft=class extends j1{constructor(e,t=1){super();this.type="Light",this.color=new x1(e),this.intensity=t}dispose(){}copy(e){return super.copy(e),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){let t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),t}};ft.prototype.isLight=!0;var l0=class extends ft{constructor(e,t){super(e,t);this.type="AmbientLight"}};l0.prototype.isAmbientLight=!0;var xo=new k1,Mo=new k,bo=new k,Li=class{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new z1(512,512),this.map=null,this.mapPass=null,this.matrix=new k1,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new L4,this._frameExtents=new z1(1,1),this._viewportCount=1,this._viewports=[new q1(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){let t=this.camera,i=this.matrix;Mo.setFromMatrixPosition(e.matrixWorld),t.position.copy(Mo),bo.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(bo),t.updateMatrixWorld(),xo.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(xo),i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(t.projectionMatrix),i.multiply(t.matrixWorldInverse)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let e={};return this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}};var u0=class extends Li{constructor(){super(new t2(50,1,.5,500));this.focus=1}updateMatrices(e){let t=this.camera,i=At*2*e.angle*this.focus,a=this.mapSize.width/this.mapSize.height,r=e.distance||t.far;(i!==t.fov||a!==t.aspect||r!==t.far)&&(t.fov=i,t.aspect=a,t.far=r,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}};u0.prototype.isSpotLightShadow=!0;var h0=class extends ft{constructor(e,t,i=0,a=Math.PI/3,r=0,s=1){super(e,t);this.type="SpotLight",this.position.copy(j1.DefaultUp),this.updateMatrix(),this.target=new j1,this.distance=i,this.angle=a,this.penumbra=r,this.decay=s,this.shadow=new u0}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}};h0.prototype.isSpotLight=!0;var f0=class extends L2{constructor(e){super();this.type="ShadowMaterial",this.color=new x1(0),this.transparent=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this}};f0.prototype.isShadowMaterial=!0;var d0=class extends qt.Component{constructor(e){super();this.plugin=e;this.event=new qt.Events;this.container=createDiv("renderer-container");this.shadows=!0;this.iterations=0;this.frame_rate=1/60;this.animating=!1;this.factory=new Co(this.WIDTH,this.HEIGHT,this.plugin);this.colors={ambient:16777215,spotlight:16777215};this.display={currentWidth:null,currentHeight:null,containerWidth:null,containerHeight:null,aspect:null,scale:null};this.cameraHeight={max:null,close:null,medium:null,far:null};this.extraFrames=d0.DEFAULT_EXTRA_FRAMES;this.renderer=new Ei({alpha:!0,antialias:!0})}get WIDTH(){return this.container.clientWidth/2}get HEIGHT(){return this.container.clientHeight/2}get ASPECT(){return this.WIDTH/this.HEIGHT}get scale(){return(this.WIDTH*this.WIDTH+this.HEIGHT*this.HEIGHT)/13}get canvasEl(){return this.renderer?this.renderer.domElement:null}setDice(e){this.animating&&(this.unload(),this.load()),this.stack=e,this.current=this.factory.getDice(this.stack,{x:(Math.random()*2-1)*this.WIDTH,y:-(Math.random()*2-1)*this.HEIGHT}),this.scene.add(...[...this.current.values()].flat().map(t=>t.geometry)),this.world.add(...[...this.current.values()].flat())}onload(){this.addChild(this.factory),this.container.empty(),this.container.style.opacity="1",document.body.appendChild(this.container),this.renderer.shadowMap.enabled=this.shadows,this.renderer.shadowMap.type=z6,this.container.appendChild(this.renderer.domElement),this.renderer.setClearColor(0,0),this.scene=new c0,this.initScene(),this.registerDomEvent(window,"resize",()=>{this.initScene()}),this.initWorld()}async start(){return new Promise(async(e,t)=>{this.current.size||t(),this.event.on("throw-finished",i=>{e(i)}),this.event.on("error",i=>{t(i)}),this.animating=!0,this.extraFrames=d0.DEFAULT_EXTRA_FRAMES,this.render()})}enableShadows(){this.shadows=!0,this.renderer&&(this.renderer.shadowMap.enabled=this.shadows),this.light&&(this.light.castShadow=this.shadows),this.desk&&(this.desk.receiveShadow=this.shadows)}disableShadows(){this.shadows=!1,this.renderer&&(this.renderer.shadowMap.enabled=this.shadows),this.light&&(this.light.castShadow=this.shadows),this.desk&&(this.desk.receiveShadow=this.shadows)}get mw(){return Math.max(this.WIDTH,this.HEIGHT)}setDimensions(e){this.display.currentWidth=this.container.clientWidth/2,this.display.currentHeight=this.container.clientHeight/2,e?(this.display.containerWidth=e.w,this.display.containerHeight=e.h):(this.display.containerWidth=this.display.currentWidth,this.display.containerHeight=this.display.currentHeight),this.display.aspect=Math.min(this.display.currentWidth/this.display.containerWidth,this.display.currentHeight/this.display.containerHeight),this.display.scale=Math.sqrt(this.display.containerWidth*this.display.containerWidth+this.display.containerHeight*this.display.containerHeight)/13,this.renderer.setSize(this.display.currentWidth*2,this.display.currentHeight*2),this.cameraHeight.max=this.display.currentHeight/this.display.aspect/Math.tan(10*Math.PI/180),this.factory.width=this.display.currentWidth,this.factory.height=this.display.currentHeight,this.cameraHeight.medium=this.cameraHeight.max/1.5,this.cameraHeight.far=this.cameraHeight.max,this.cameraHeight.close=this.cameraHeight.max/2}initCamera(){this.camera&&this.scene.remove(this.camera),this.camera=new t2(20,this.display.currentWidth/this.display.currentHeight,1,this.cameraHeight.max*1.3),this.camera.position.z=this.cameraHeight.far,this.camera.lookAt(new k(0,0,0))}initLighting(){let e=Math.max(this.display.containerWidth,this.display.containerHeight);this.light&&this.scene.remove(this.light),this.ambientLight&&this.scene.remove(this.ambientLight),this.light=new h0(this.colors.spotlight,.25),this.light.position.set(-e/2,e/2,e*3),this.light.target.position.set(0,0,0),this.light.distance=e*5,this.light.angle=Math.PI/4,this.light.castShadow=this.shadows,this.light.shadow.camera.near=e/10,this.light.shadow.camera.far=e*5,this.light.shadow.camera.fov=50,this.light.shadow.bias=.001,this.light.shadow.mapSize.width=1024,this.light.shadow.mapSize.height=1024,this.scene.add(this.light),this.ambientLight=new l0(16777215,.9),this.scene.add(this.ambientLight)}initDesk(){this.desk&&this.scene.remove(this.desk);let e=new f0;e.opacity=.5,this.desk=new l2(new D4(this.display.containerWidth*6,this.display.containerHeight*6,1,1),e),this.desk.receiveShadow=this.shadows,this.scene.add(this.desk)}initScene(){this.setDimensions(),this.initCamera(),this.initLighting(),this.initDesk(),this.camera.updateProjectionMatrix(),this.renderer.render(this.scene,this.camera)}initWorld(){this.world=new yo(this.WIDTH,this.HEIGHT),this.iterations=0}getResultsForRoller(e){let t=this.current.get(e),i=t.filter(s=>s instanceof E4&&s.isPercentile),a=[];for(let s=0;s!(s instanceof E4&&s.isPercentile)).map(s=>s.getUpsideValue()).filter(s=>s),...a.map(([s,o])=>{let l=s.getUpsideValue();if(!o)return l;let c=o.getUpsideValue();return l===10&&c==10?100:(c==10&&(c=0),l==10&&(l=0),l*10+c)}).filter(s=>s)]}returnResult(){for(let e of this.stack.dynamic){if(!this.current.has(e))continue;let t=this.getResultsForRoller(e);!t||e.setResults(t)}this.event.trigger("throw-finished",this.stack)}unrender(e=this){e.container.style.opacity="0",e.registerInterval(window.setTimeout(()=>{e.animating=!1,e.unload()},1e3))}render(){if(this.throwFinished())if(this.extraFrames>10)this.extraFrames--;else{try{for(let[e,t]of this.current)if(!(!e.modifiers.size||!this.getResultsForRoller(e))&&e.modifiers.has("r")){let a=t.filter(r=>(e.conditions.length||e.conditions.push({operator:"=",comparer:e.faces.min,value:""}),e.checkCondition(r.result,e.conditions)&&r.rerolled{r.rerolled++;let s={x:(Math.random()*2-1)*this.WIDTH,y:-(Math.random()*2-1)*this.HEIGHT};r.vector=r.generateVector(s),r.create(),r.set(),r.stopped=!1}),this.animation=requestAnimationFrame(()=>this.render());return}}if(this.returnResult(),this.plugin.data.renderTime)this.registerInterval(window.setTimeout(()=>this.unrender(),this.plugin.data.renderTime));else{let t=function(){e.unrender(e),document.body.removeEventListener("click",t)},e=this;this.registerDomEvent(document.body,"click",t)}}catch(e){this.event.trigger("error",e)}return}this.animation=requestAnimationFrame(()=>this.render()),this.world.step(this.frame_rate),this.iterations++,this.current.forEach(e=>{e.map(t=>t.set())}),this.renderer.render(this.scene,this.camera)}dispose(...e){e.forEach(t=>{"dispose"in t&&t.dispose(),t.children&&this.dispose(...t.children)})}detach(){}onunload(){cancelAnimationFrame(this.animation),this.container.detach(),this.container.empty(),this.renderer.domElement.detach(),this.renderer.dispose(),this.factory.dispose(),this.ambientLight.dispose(),this.light.dispose(),this.scene.children.forEach(e=>this.dispose(e)),this.scene.remove(this.scene,...this.scene.children,...[...this.current.values()].flat().map(e=>e.geometry)),this.current.forEach(e=>{e.forEach(t=>{[...Array.isArray(t.geometry.material)?t.geometry.material:[t.geometry.material]].forEach(a=>a&&a.dispose()),this.world.world.removeBody(t.body)})}),this.current=new Map}onThrowFinished(){}throwFinished(){let e=!0,t=4;if(this.iterations<10/this.frame_rate)for(let i of this.current.values())for(let a of i){if(a.stopped===!0)continue;let r=a.body.angularVelocity,s=a.body.velocity;if(Math.abs(r.x)3){a.stopped=!0;continue}}else a.stopped=this.iterations;e=!1}else a.stopped=void 0,e=!1}return e}},Wt=d0;Wt.DEFAULT_EXTRA_FRAMES=30;var yo=class{constructor(e,t){this.WIDTH=e;this.HEIGHT=t;this.world=new Z0({gravity:new y(0,0,-9.82*400)});this.ground=this.getPlane();this.diceMaterial=new He;this.deskMaterial=new He;this.barrierMaterial=new He;this.world.broadphase=new h6,this.world.allowSleep=!0,this.ground.position.set(0,0,0),this.world.addBody(this.ground),this.buildWalls()}add(...e){e.forEach(t=>{this.world.addBody(t.body)})}step(e=1/60){let t=performance.now()/1e3;if(!this.lastCallTime)this.world.step(e);else{let i=t-this.lastCallTime;this.world.step(e,i)}this.lastCallTime=t}buildWalls(){this.world.addContactMaterial(new Te(this.deskMaterial,this.diceMaterial,{friction:.01,restitution:.5,contactEquationRelaxation:3,contactEquationStiffness:1e8})),this.world.addContactMaterial(new Te(this.barrierMaterial,this.diceMaterial,{friction:.01,restitution:1,contactEquationRelaxation:3,contactEquationStiffness:1e8})),this.world.addContactMaterial(new Te(this.diceMaterial,this.diceMaterial,{friction:.1,restitution:.5,contactEquationRelaxation:3,contactEquationStiffness:1e8})),this.world.addBody(new i1({allowSleep:!1,mass:0,shape:new e4,material:this.deskMaterial}));let e=new i1({allowSleep:!1,mass:0,shape:new e4,material:this.barrierMaterial});e.quaternion.setFromAxisAngle(new y(1,0,0),Math.PI/2),e.position.set(0,this.HEIGHT*.93,0),this.world.addBody(e),e=new i1({allowSleep:!1,mass:0,shape:new e4,material:this.barrierMaterial}),e.quaternion.setFromAxisAngle(new y(1,0,0),-Math.PI/2),e.position.set(0,-this.HEIGHT*.93,0),this.world.addBody(e),e=new i1({allowSleep:!1,mass:0,shape:new e4,material:this.barrierMaterial}),e.quaternion.setFromAxisAngle(new y(0,1,0),-Math.PI/2),e.position.set(this.WIDTH*.93,0,0),this.world.addBody(e),e=new i1({allowSleep:!1,mass:0,shape:new e4,material:this.barrierMaterial}),e.quaternion.setFromAxisAngle(new y(0,1,0),Math.PI/2),e.position.set(-this.WIDTH*.93,0,0),this.world.addBody(e)}getPlane(){return new i1({type:i1.STATIC,shape:new e4})}},Co=class extends qt.Component{constructor(e,t,i){super();this.width=e;this.height=t;this.plugin=i;this.dice={};this.buildDice()}get colors(){return{diceColor:this.plugin.data.diceColor,textColor:this.plugin.data.textColor}}updateColors(){this.dispose(),this.buildDice()}onunload(){this.dispose()}disposeChildren(...e){e.forEach(t=>{"dispose"in t&&t.dispose(),t.children&&this.disposeChildren(...t.children)})}dispose(){for(let e of Object.values(this.dice))this.disposeChildren(e.geometry.children)}getDiceForRoller(e,t){let i=[];switch(e.faces.max){case 4:{i.push(...new Array(e.rolls).fill(0).map(a=>new gi(this.width,this.height,this.clone("d4"),t)));break}case 1:case 6:{i.push(...new Array(e.rolls).fill(0).map(a=>new vi(this.width,this.height,e.fudge?this.clone("fudge"):this.clone("d6"),t)));break}case 8:{i.push(...new Array(e.rolls).fill(0).map(a=>new mi(this.width,this.height,this.clone("d8"),t)));break}case 10:{i.push(...new Array(e.rolls).fill(0).map(a=>new E4(this.width,this.height,this.clone("d10"),t)));break}case 12:{i.push(...new Array(e.rolls).fill(0).map(a=>new pi(this.width,this.height,this.clone("d12"),t)));break}case 20:{i.push(...new Array(e.rolls).fill(0).map(a=>new di(this.width,this.height,this.clone("d20"),t)));break}case 100:{i.push(...new Array(e.rolls).fill(0).map(a=>[new E4(this.width,this.height,this.clone("d100"),t,!0),new E4(this.width,this.height,this.clone("d10"),t,!0)]).flat());break}}return i}getDice(e,t){let i=new Map;for(let a of e.dynamic){let r=this.getDiceForRoller(a,t);r.length&&i.set(a,r)}return i}clone(e){if(!(e in this.dice))throw new Error("That dice type does not exist!");return this.dice[e].clone()}buildDice(){this.dice.d100=new Q3(this.width,this.height,this.colors).create(),this.dice.d20=new $3(this.width,this.height,this.colors).create(),this.dice.d12=new K3(this.width,this.height,this.colors).create(),this.dice.d10=new J3(this.width,this.height,this.colors).create(),this.dice.d8=new ei(this.width,this.height,this.colors).create(),this.dice.d6=new ti(this.width,this.height,this.colors).create(),this.dice.d4=new ai(this.width,this.height,this.colors).create(),this.dice.fudge=new ii(this.width,this.height,this.colors).create(),this.dice.boost=new hi(this.width,this.height,this.colors).create(),this.dice.ability=new ci(this.width,this.height,this.colors).create(),this.dice.difficulty=new li(this.width,this.height,this.colors).create(),this.dice.challenge=new si(this.width,this.height,this.colors).create(),this.dice.proficiency=new ni(this.width,this.height,this.colors).create(),this.dice.setback=new fi(this.width,this.height,this.colors).create()}};var wo=Z2(Ao());var Di=class{constructor(e){this.table=e}parse(e){let t=e.length,i=this.table,a=[],r=[],s=0;for(;sf||u===f&&c.associativity==="right")break;a.push(r.shift())}r.unshift(o)}else a.push(o)}}for(;r.length;){let o=r.shift();if(o.value!=="(")a.push(o);else throw new Error("Mismatched parentheses.")}return a}};var $u=/(?:\d+[Dd])?#(?:[\p{Letter}\p{Emoji_Presentation}\w/-]+)(?:\|(?:[+-]))?(?:\|(?:[^+-]+))?/u,Ku=/(?:\d+[Dd])?#(?:[\p{Letter}\p{Emoji_Presentation}\w/-]+)(?:\|(?:[+-]))?\|link/u,Ju=/(?:\d+[Dd])?(?:\[.*\]\(|\[\[)(?:.+?)#?\^(?:.+?)(?:\)|\]\])\|?(?:.+)?/u,Qu=/(?:\d+[Dd])?(?:\[.*\]\(|\[\[)(?:.+)(?:\)|\]\])\|?(?:.+)?/u,eh=/(?:\d+[Dd])?(?:\[.*\]\(|\[\[)(?:.+)(?:\)|\]\])\|line/u,th=/[\(\^\+\-\*\/\)]/u,ih=/(?:\d+|\b)[Dd](?:\[?(?:-?\d+[ \t]?,)?[ \t]?(?:-?\d+|%|F)\]?|\b)/u,ah=/(?:=|=!|<|>|<=|>=|=<|=>|-=|=-)\d+/u,m0=class{constructor(e){this.plugin=e;this.lexer=wo.compile({WS:[{match:/[ \t]+/u},{match:/[{}]+/u}],table:Ju,line:eh,section:Qu,link:Ku,tag:$u,condition:ah,kl:{match:/kl\d*/u,value:this.clampInfinite},kh:[{match:/kh\d*/u,value:this.clampInfinite},{match:/k\d*/u,value:this.clampInfinite}],dh:{match:/dh\d*/u,value:this.clampInfinite},dl:[{match:/dl\d*/u,value:this.clampInfinite}],"!!":{match:/!!(?:i|\d+)?/u,value:this.clampInfinite},"!":{match:/!(?:i|\d+)?/u,value:this.clampInfinite},r:{match:/r(?:i|\d+)?/u,value:this.clampInfinite},stunt:/1[Dd]S/u,"%":/\d+[Dd]\d+%/u,dice:[{match:ih,value:e=>{let{roll:t=this.plugin.data.defaultRoll,faces:i=this.plugin.data.defaultFace}=e.match(/(?\d+)?[Dd](?\[?(?:-?\d+[ \t]?,)?[ \t]?(?:-?\d+|%|F)\]?)?/).groups;return`${t}d${i}`}},{match:/\d+/u},{match:/\b[A-Za-z][A-Za-z0-9_]+\b/u,value:e=>this.plugin.inline.has(e)?`${this.plugin.inline.get(e)}`:e}],math:th});let t={precedence:3,associativity:"right"},i={precedence:2,associativity:"left"},a={precedence:1,associativity:"left"};this.parser=new Di({"+":a,"-":a,"*":i,"/":i,"^":t})}clampInfinite(e){return/i$/.test(e)?"100":e.replace(/^\D+/g,"")}parse(e){let t=Array.from(this.lexer.reset(e));return this.lexer.reset(),this.parser.parse(this.transform(t))}transform(e){e=e.filter(i=>i.type!="WS");let t=[];for(let i of e)if(i.type=="condition"&&t.length>0){let a=t[t.length-1];a.conditions||(a.conditions=[]);let[r,s,o]=i.value.match(/(?=|=!|<|>|<=|>=|=<|=>|\-=|=\-)(?\d+)/)??[];a.conditions.push({operator:s,comparer:Number(o),value:i.value})}else t.push(i);return t}getTypeFromLexemes(e){return e.some(({type:t})=>t==="table")?"table":e.some(({type:t})=>t==="section")?"section":e.some(({type:t})=>t==="tag")?"tag":e.some(({type:t})=>t==="link")?"link":e.some(({type:t})=>t==="line")?"line":"dice"}};String.prototype.matchAll=String.prototype.matchAll||function*(e){let t=e.global?e.flags:e.flags+"g",i=new RegExp(e,t),a;for(;a=i.exec(this);)yield a};var l6={returnAllTags:!0,rollLinksForTags:!1,copyContentButton:!0,customFormulas:[],displayFormulaForMod:!0,displayResultsInline:!1,displayLookupRoll:!0,formulas:{},persistResults:!1,results:{},defaultRoll:1,defaultFace:100,renderer:!1,renderAllDice:!1,renderTime:2e3,diceColor:"#202020",textColor:"#ffffff",showLeafOnStartup:!0,showDice:!0,round:de.None},Hi=class extends u2.Plugin{constructor(){super(...arguments);this.fileMap=new Map;this.inline=new Map;this.operators={"+":(e,t)=>e+t,"-":(e,t)=>e-t,"*":(e,t)=>e*t,"/":(e,t)=>e/t,"^":(e,t)=>Math.pow(e,t)};this.parser=new m0(this);this.persistingFiles=new Set}async onload(){console.log("DiceRoller plugin loaded"),this.data=Object.assign({},l6,await this.loadData()),this.renderer=new Wt(this),this.addSettingTab(new c6(this.app,this)),console.log(this.dataviewAPI),this.registerView(g4,i=>new Ke(this,i)),this.app.workspace.onLayoutReady(()=>this.addDiceView(!0)),this.registerEvent(this.app.workspace.on("dice-roller:update-colors",()=>{this.renderer.factory.updateColors()})),this.registerEvent(this.app.workspace.on("dice-roller:render-dice",async i=>{let a=await this.getRoller(i,"external");if(!(a instanceof I2)){new u2.Notice("The Dice View only supports dice rolls.");return}if(await a.roll(),!a.dice.length){new u2.Notice("Invalid formula.");return}try{this.renderRoll(a)}catch(r){new u2.Notice("There was an error rendering the roll."),console.error(r)}this.app.workspace.trigger("dice-roller:rendered-result",a.result)})),this.addCommand({id:"open-view",name:"Open Dice View",checkCallback:i=>{if(!this.view)return i||this.addDiceView(),!0}}),this.addCommand({id:"reroll",name:"Re-roll Dice",checkCallback:i=>{let a=this.app.workspace.getActiveViewOfType(u2.MarkdownView);if(a&&a.getMode()==="preview"&&this.fileMap.has(a.file))return i||this.fileMap.get(a.file).forEach(s=>{s.roll()}),!0}});let e=L0(Fi).html[0];(0,u2.addIcon)(Le,e);let t=L0(Bi).html[0];(0,u2.addIcon)(De,t),this.registerMarkdownPostProcessor(async(i,a)=>{let r=i.querySelectorAll("code");if(!r.length)return;let s=a.sourcePath,o=a.getSectionInfo(i),l=a.getSectionInfo(i)?.lineStart,c=this.app.vault.getAbstractFileByPath(a.sourcePath);if(!c||!(c instanceof u2.TFile))return;let u={},f,h=!1,m=[];for(let v=0;vu||a.y>u)&&(a.x>u&&(r.x=Math.floor(u/V.x),a.x=r.x*V.x,H.mapSize.x=r.x),a.y>u&&(r.y=Math.floor(u/V.y),a.y=r.y*V.y,H.mapSize.y=r.y)),H.map===null&&!H.isPointLightShadow&&this.type===y4){let N={minFilter:e2,magFilter:e2,format:W1};H.map=new m2(a.x,a.y,N),H.map.texture.name=A.name+".shadowMap",H.mapPass=new m2(a.x,a.y,N),H.camera.updateProjectionMatrix()}if(H.map===null){let N={minFilter:Q1,magFilter:Q1,format:W1};H.map=new m2(a.x,a.y,N),H.map.texture.name=A.name+".shadowMap",H.camera.updateProjectionMatrix()}n.setRenderTarget(H.map),n.clear();let L=H.getViewportCount();for(let N=0;N0){let A=M.uuid,H=E.uuid,V=c[A];V===void 0&&(V={},c[A]=V);let L=V[H];L===void 0&&(L=M.clone(),V[H]=L),M=L}return M.visible=E.visible,M.wireframe=E.wireframe,F===y4?M.side=E.shadowSide!==null?E.shadowSide:E.side:M.side=E.shadowSide!==null?E.shadowSide:f[E.side],M.alphaMap=E.alphaMap,M.alphaTest=E.alphaTest,M.clipShadows=E.clipShadows,M.clippingPlanes=E.clippingPlanes,M.clipIntersection=E.clipIntersection,M.displacementMap=E.displacementMap,M.displacementScale=E.displacementScale,M.displacementBias=E.displacementBias,M.wireframeLinewidth=E.wireframeLinewidth,M.linewidth=E.linewidth,T.isPointLight===!0&&M.isMeshDistanceMaterial===!0&&(M.referencePosition.setFromMatrixPosition(T.matrixWorld),M.nearDistance=_,M.farDistance=P),M}function z(b,C,E,T,_){if(b.visible===!1)return;if(b.layers.test(C.layers)&&(b.isMesh||b.isLine||b.isPoints)&&(b.castShadow||b.receiveShadow&&_===y4)&&(!b.frustumCulled||i.intersectsObject(b))){b.modelViewMatrix.multiplyMatrices(E.matrixWorldInverse,b.matrixWorld);let M=e.update(b),D=b.material;if(Array.isArray(D)){let A=M.groups;for(let H=0,V=A.length;H=1):L.indexOf("OpenGL ES")!==-1&&(V=parseFloat(/^OpenGL ES (\d)/.exec(L)[1]),H=V>=2);let N=null,U={},Z=n.getParameter(n.SCISSOR_BOX),O=n.getParameter(n.VIEWPORT),W=new q1().fromArray(Z),X=new q1().fromArray(O);function Q(I,l1,o1){let m1=new Uint8Array(4),$=n.createTexture();n.bindTexture(I,$),n.texParameteri(I,n.TEXTURE_MIN_FILTER,n.NEAREST),n.texParameteri(I,n.TEXTURE_MAG_FILTER,n.NEAREST);for(let p1=0;p1t1||R.height>t1)&&(h1=t1/Math.max(R.width,R.height)),h1<1||w===!0)if(typeof HTMLImageElement!="undefined"&&R instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&R instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&R instanceof ImageBitmap){let Y=w?Sr:Math.floor,d1=Y(h1*R.width),f1=Y(h1*R.height);g===void 0&&(g=p(d1,f1));let s1=J?p(d1,f1):g;return s1.width=d1,s1.height=f1,s1.getContext("2d").drawImage(R,0,0,d1,f1),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+R.width+"x"+R.height+") to ("+d1+"x"+f1+")."),s1}else return"data"in R&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+R.width+"x"+R.height+")."),R;return R}function z(R){return $0(R.width)&&$0(R.height)}function b(R){return o?!1:R.wrapS!==o2||R.wrapT!==o2||R.minFilter!==Q1&&R.minFilter!==e2}function C(R,w){return R.generateMipmaps&&w&&R.minFilter!==Q1&&R.minFilter!==e2}function E(R){n.generateMipmap(R)}function T(R,w,J,t1,h1=!1){if(o===!1)return w;if(R!==null){if(n[R]!==void 0)return n[R];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+R+"'")}let Y=w;return w===n.RED&&(J===n.FLOAT&&(Y=n.R32F),J===n.HALF_FLOAT&&(Y=n.R16F),J===n.UNSIGNED_BYTE&&(Y=n.R8)),w===n.RG&&(J===n.FLOAT&&(Y=n.RG32F),J===n.HALF_FLOAT&&(Y=n.RG16F),J===n.UNSIGNED_BYTE&&(Y=n.RG8)),w===n.RGBA&&(J===n.FLOAT&&(Y=n.RGBA32F),J===n.HALF_FLOAT&&(Y=n.RGBA16F),J===n.UNSIGNED_BYTE&&(Y=t1===I1&&h1===!1?n.SRGB8_ALPHA8:n.RGBA8),J===n.UNSIGNED_SHORT_4_4_4_4&&(Y=n.RGBA4),J===n.UNSIGNED_SHORT_5_5_5_1&&(Y=n.RGB5_A1)),(Y===n.R16F||Y===n.R32F||Y===n.RG16F||Y===n.RG32F||Y===n.RGBA16F||Y===n.RGBA32F)&&e.get("EXT_color_buffer_float"),Y}function _(R,w,J){return C(R,J)===!0||R.isFramebufferTexture&&R.minFilter!==Q1&&R.minFilter!==e2?Math.log2(Math.max(w.width,w.height))+1:R.mipmaps!==void 0&&R.mipmaps.length>0?R.mipmaps.length:R.isCompressedTexture&&Array.isArray(R.image)?w.mipmaps.length:1}function P(R){return R===Q1||R===o3||R===c3?n.NEAREST:n.LINEAR}function F(R){let w=R.target;w.removeEventListener("dispose",F),D(w),w.isVideoTexture&&v.delete(w),s.memory.textures--}function M(R){let w=R.target;w.removeEventListener("dispose",M),A(w)}function D(R){let w=i.get(R);w.__webglInit!==void 0&&(n.deleteTexture(w.__webglTexture),i.remove(R))}function A(R){let w=R.texture,J=i.get(R),t1=i.get(w);if(!!R){if(t1.__webglTexture!==void 0&&(n.deleteTexture(t1.__webglTexture),s.memory.textures--),R.depthTexture&&R.depthTexture.dispose(),R.isWebGLCubeRenderTarget)for(let h1=0;h1<6;h1++)n.deleteFramebuffer(J.__webglFramebuffer[h1]),J.__webglDepthbuffer&&n.deleteRenderbuffer(J.__webglDepthbuffer[h1]);else n.deleteFramebuffer(J.__webglFramebuffer),J.__webglDepthbuffer&&n.deleteRenderbuffer(J.__webglDepthbuffer),J.__webglMultisampledFramebuffer&&n.deleteFramebuffer(J.__webglMultisampledFramebuffer),J.__webglColorRenderbuffer&&n.deleteRenderbuffer(J.__webglColorRenderbuffer),J.__webglDepthRenderbuffer&&n.deleteRenderbuffer(J.__webglDepthRenderbuffer);if(R.isWebGLMultipleRenderTargets)for(let h1=0,Y=w.length;h1=l&&console.warn("THREE.WebGLTextures: Trying to use "+R+" texture units while this GPU supports only "+l),H+=1,R}function N(R,w){let J=i.get(R);if(R.isVideoTexture&&W2(R),R.version>0&&J.__version!==R.version){let t1=R.image;if(t1===void 0)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined");else if(t1.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{B(J,R,w);return}}t.activeTexture(n.TEXTURE0+w),t.bindTexture(n.TEXTURE_2D,J.__webglTexture)}function U(R,w){let J=i.get(R);if(R.version>0&&J.__version!==R.version){B(J,R,w);return}t.activeTexture(n.TEXTURE0+w),t.bindTexture(n.TEXTURE_2D_ARRAY,J.__webglTexture)}function Z(R,w){let J=i.get(R);if(R.version>0&&J.__version!==R.version){B(J,R,w);return}t.activeTexture(n.TEXTURE0+w),t.bindTexture(n.TEXTURE_3D,J.__webglTexture)}function O(R,w){let J=i.get(R);if(R.version>0&&J.__version!==R.version){M1(J,R,w);return}t.activeTexture(n.TEXTURE0+w),t.bindTexture(n.TEXTURE_CUBE_MAP,J.__webglTexture)}let W={[Lt]:n.REPEAT,[o2]:n.CLAMP_TO_EDGE,[Dt]:n.MIRRORED_REPEAT},X={[Q1]:n.NEAREST,[o3]:n.NEAREST_MIPMAP_NEAREST,[c3]:n.NEAREST_MIPMAP_LINEAR,[e2]:n.LINEAR,[s8]:n.LINEAR_MIPMAP_NEAREST,[a4]:n.LINEAR_MIPMAP_LINEAR};function Q(R,w,J){if(J?(n.texParameteri(R,n.TEXTURE_WRAP_S,W[w.wrapS]),n.texParameteri(R,n.TEXTURE_WRAP_T,W[w.wrapT]),(R===n.TEXTURE_3D||R===n.TEXTURE_2D_ARRAY)&&n.texParameteri(R,n.TEXTURE_WRAP_R,W[w.wrapR]),n.texParameteri(R,n.TEXTURE_MAG_FILTER,X[w.magFilter]),n.texParameteri(R,n.TEXTURE_MIN_FILTER,X[w.minFilter])):(n.texParameteri(R,n.TEXTURE_WRAP_S,n.CLAMP_TO_EDGE),n.texParameteri(R,n.TEXTURE_WRAP_T,n.CLAMP_TO_EDGE),(R===n.TEXTURE_3D||R===n.TEXTURE_2D_ARRAY)&&n.texParameteri(R,n.TEXTURE_WRAP_R,n.CLAMP_TO_EDGE),(w.wrapS!==o2||w.wrapT!==o2)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),n.texParameteri(R,n.TEXTURE_MAG_FILTER,P(w.magFilter)),n.texParameteri(R,n.TEXTURE_MIN_FILTER,P(w.minFilter)),w.minFilter!==Q1&&w.minFilter!==e2&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),e.has("EXT_texture_filter_anisotropic")===!0){let t1=e.get("EXT_texture_filter_anisotropic");if(w.type===J2&&e.has("OES_texture_float_linear")===!1||o===!1&&w.type===be&&e.has("OES_texture_half_float_linear")===!1)return;(w.anisotropy>1||i.get(w).__currentAnisotropy)&&(n.texParameterf(R,t1.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(w.anisotropy,a.getMaxAnisotropy())),i.get(w).__currentAnisotropy=w.anisotropy)}}function a1(R,w){R.__webglInit===void 0&&(R.__webglInit=!0,w.addEventListener("dispose",F),R.__webglTexture=n.createTexture(),s.memory.textures++)}function B(R,w,J){let t1=n.TEXTURE_2D;w.isDataTexture2DArray&&(t1=n.TEXTURE_2D_ARRAY),w.isDataTexture3D&&(t1=n.TEXTURE_3D),a1(R,w),t.activeTexture(n.TEXTURE0+J),t.bindTexture(t1,R.__webglTexture),n.pixelStorei(n.UNPACK_FLIP_Y_WEBGL,w.flipY),n.pixelStorei(n.UNPACK_PREMULTIPLY_ALPHA_WEBGL,w.premultiplyAlpha),n.pixelStorei(n.UNPACK_ALIGNMENT,w.unpackAlignment),n.pixelStorei(n.UNPACK_COLORSPACE_CONVERSION_WEBGL,n.NONE);let h1=b(w)&&z(w.image)===!1,Y=d(w.image,h1,!1,u);Y=v2(w,Y);let d1=z(Y)||o,f1=r.convert(w.format,w.encoding),s1=r.convert(w.type),r1=T(w.internalFormat,f1,s1,w.encoding,w.isVideoTexture);Q(t1,w,d1);let b1,I=w.mipmaps,l1=o&&w.isVideoTexture!==!0,o1=R.__version===void 0,m1=_(w,Y,d1);if(w.isDepthTexture)r1=n.DEPTH_COMPONENT,o?w.type===J2?r1=n.DEPTH_COMPONENT32F:w.type===O4?r1=n.DEPTH_COMPONENT24:w.type===ye?r1=n.DEPTH24_STENCIL8:r1=n.DEPTH_COMPONENT16:w.type===J2&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),w.format===Q2&&r1===n.DEPTH_COMPONENT&&w.type!==Ue&&w.type!==O4&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),w.type=Ue,s1=r.convert(w.type)),w.format===Ce&&r1===n.DEPTH_COMPONENT&&(r1=n.DEPTH_STENCIL,w.type!==ye&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),w.type=ye,s1=r.convert(w.type))),l1&&o1?t.texStorage2D(n.TEXTURE_2D,1,r1,Y.width,Y.height):t.texImage2D(n.TEXTURE_2D,0,r1,Y.width,Y.height,0,f1,s1,null);else if(w.isDataTexture)if(I.length>0&&d1){l1&&o1&&t.texStorage2D(n.TEXTURE_2D,m1,r1,I[0].width,I[0].height);for(let $=0,p1=I.length;$0&&d1){l1&&o1&&t.texStorage2D(n.TEXTURE_2D,m1,r1,I[0].width,I[0].height);for(let $=0,p1=I.length;$0&&o1++,t.texStorage2D(n.TEXTURE_CUBE_MAP,o1,b1,Y[0].width,Y[0].height));for(let $=0;$<6;$++)if(h1){I?t.texSubImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+$,0,0,0,Y[$].width,Y[$].height,s1,r1,Y[$].data):t.texImage2D(n.TEXTURE_CUBE_MAP_POSITIVE_X+$,0,b1,Y[$].width,Y[$].height,0,s1,r1,Y[$].data);for(let p1=0;p1m+v?(c.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!c.inputState.pinching&&h<=m-v&&(c.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else l!==null&&e.gripSpace&&(r=t.getPose(e.gripSpace,i),r!==null&&(l.matrix.fromArray(r.transform.matrix),l.matrix.decompose(l.position,l.rotation,l.scale),r.linearVelocity?(l.hasLinearVelocity=!0,l.linearVelocity.copy(r.linearVelocity)):l.hasLinearVelocity=!1,r.angularVelocity?(l.hasAngularVelocity=!0,l.angularVelocity.copy(r.angularVelocity)):l.hasAngularVelocity=!1));return o!==null&&(o.visible=a!==null),l!==null&&(l.visible=r!==null),c!==null&&(c.visible=s!==null),this}};var Gt=class extends $1{constructor(e,t,i,a,r,s,o,l,c,u){if(u=u!==void 0?u:Q2,u!==Q2&&u!==Ce)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");i===void 0&&u===Q2&&(i=Ue),i===void 0&&u===Ce&&(i=ye);super(null,a,r,s,o,l,u,i,c);this.image={width:e,height:t},this.magFilter=o!==void 0?o:Q1,this.minFilter=l!==void 0?l:Q1,this.flipY=!1,this.generateMipmaps=!1}};Gt.prototype.isDepthTexture=!0;var Si=class extends R2{constructor(e,t){super();let i=this,a=null,r=1,s=null,o="local-floor",l=e.extensions.has("WEBGL_multisampled_render_to_texture"),c=null,u=null,f=null,h=null,m=!1,v=null,g=t.getContextAttributes(),x=null,p=null,d=[],z=new Map,b=new t2;b.layers.enable(1),b.viewport=new q1;let C=new t2;C.layers.enable(2),C.viewport=new q1;let E=[b,C],T=new o0;T.layers.enable(1),T.layers.enable(2);let _=null,P=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(O){let W=d[O];return W===void 0&&(W=new Ot,d[O]=W),W.getTargetRaySpace()},this.getControllerGrip=function(O){let W=d[O];return W===void 0&&(W=new Ot,d[O]=W),W.getGripSpace()},this.getHand=function(O){let W=d[O];return W===void 0&&(W=new Ot,d[O]=W),W.getHandSpace()};function F(O){let W=z.get(O.inputSource);W&&W.dispatchEvent({type:O.type,data:O.inputSource})}function M(){z.forEach(function(O,W){O.disconnect(W)}),z.clear(),_=null,P=null,e.setRenderTarget(x),h=null,f=null,u=null,a=null,p=null,Z.stop(),i.isPresenting=!1,i.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(O){r=O,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(O){o=O,i.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return s},this.getBaseLayer=function(){return f!==null?f:h},this.getBinding=function(){return u},this.getFrame=function(){return v},this.getSession=function(){return a},this.setSession=async function(O){if(a=O,a!==null){if(x=e.getRenderTarget(),a.addEventListener("select",F),a.addEventListener("selectstart",F),a.addEventListener("selectend",F),a.addEventListener("squeeze",F),a.addEventListener("squeezestart",F),a.addEventListener("squeezeend",F),a.addEventListener("end",M),a.addEventListener("inputsourceschange",D),g.xrCompatible!==!0&&await t.makeXRCompatible(),a.renderState.layers===void 0||e.capabilities.isWebGL2===!1){let W={antialias:a.renderState.layers===void 0?g.antialias:!0,alpha:g.alpha,depth:g.depth,stencil:g.stencil,framebufferScaleFactor:r};h=new XRWebGLLayer(a,t,W),a.updateRenderState({baseLayer:h}),p=new m2(h.framebufferWidth,h.framebufferHeight,{format:W1,type:V2,encoding:e.outputEncoding})}else{m=g.antialias;let W=null,X=null,Q=null;g.depth&&(Q=g.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,W=g.stencil?Ce:Q2,X=g.stencil?ye:Ue);let a1={colorFormat:e.outputEncoding===I1?t.SRGB8_ALPHA8:t.RGBA8,depthFormat:Q,scaleFactor:r};u=new XRWebGLBinding(a,t),f=u.createProjectionLayer(a1),a.updateRenderState({layers:[f]}),m?p=new ut(f.textureWidth,f.textureHeight,{format:W1,type:V2,depthTexture:new Gt(f.textureWidth,f.textureHeight,X,void 0,void 0,void 0,void 0,void 0,void 0,W),stencilBuffer:g.stencil,ignoreDepth:f.ignoreDepthValues,useRenderToTexture:l,encoding:e.outputEncoding}):p=new m2(f.textureWidth,f.textureHeight,{format:W1,type:V2,depthTexture:new Gt(f.textureWidth,f.textureHeight,X,void 0,void 0,void 0,void 0,void 0,void 0,W),stencilBuffer:g.stencil,ignoreDepth:f.ignoreDepthValues,encoding:e.outputEncoding})}p.isXRRenderTarget=!0,this.setFoveation(1),s=await a.requestReferenceSpace(o),Z.setContext(a),Z.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}};function D(O){let W=a.inputSources;for(let X=0;X0&&(p.alphaTest.value=d.alphaTest);let z=n.get(d).envMap;z&&(p.envMap.value=z,p.flipEnvMap.value=z.isCubeTexture&&z.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=d.reflectivity,p.ior.value=d.ior,p.refractionRatio.value=d.refractionRatio),d.lightMap&&(p.lightMap.value=d.lightMap,p.lightMapIntensity.value=d.lightMapIntensity),d.aoMap&&(p.aoMap.value=d.aoMap,p.aoMapIntensity.value=d.aoMapIntensity);let b;d.map?b=d.map:d.specularMap?b=d.specularMap:d.displacementMap?b=d.displacementMap:d.normalMap?b=d.normalMap:d.bumpMap?b=d.bumpMap:d.roughnessMap?b=d.roughnessMap:d.metalnessMap?b=d.metalnessMap:d.alphaMap?b=d.alphaMap:d.emissiveMap?b=d.emissiveMap:d.clearcoatMap?b=d.clearcoatMap:d.clearcoatNormalMap?b=d.clearcoatNormalMap:d.clearcoatRoughnessMap?b=d.clearcoatRoughnessMap:d.specularIntensityMap?b=d.specularIntensityMap:d.specularColorMap?b=d.specularColorMap:d.transmissionMap?b=d.transmissionMap:d.thicknessMap?b=d.thicknessMap:d.sheenColorMap?b=d.sheenColorMap:d.sheenRoughnessMap&&(b=d.sheenRoughnessMap),b!==void 0&&(b.isWebGLRenderTarget&&(b=b.texture),b.matrixAutoUpdate===!0&&b.updateMatrix(),p.uvTransform.value.copy(b.matrix));let C;d.aoMap?C=d.aoMap:d.lightMap&&(C=d.lightMap),C!==void 0&&(C.isWebGLRenderTarget&&(C=C.texture),C.matrixAutoUpdate===!0&&C.updateMatrix(),p.uv2Transform.value.copy(C.matrix))}function a(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity}function r(p,d){p.dashSize.value=d.dashSize,p.totalSize.value=d.dashSize+d.gapSize,p.scale.value=d.scale}function s(p,d,z,b){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.size.value=d.size*z,p.scale.value=b*.5,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let C;d.map?C=d.map:d.alphaMap&&(C=d.alphaMap),C!==void 0&&(C.matrixAutoUpdate===!0&&C.updateMatrix(),p.uvTransform.value.copy(C.matrix))}function o(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.rotation.value=d.rotation,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let z;d.map?z=d.map:d.alphaMap&&(z=d.alphaMap),z!==void 0&&(z.matrixAutoUpdate===!0&&z.updateMatrix(),p.uvTransform.value.copy(z.matrix))}function l(p,d){d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap)}function c(p,d){p.specular.value.copy(d.specular),p.shininess.value=Math.max(d.shininess,1e-4),d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===P1&&(p.bumpScale.value*=-1)),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===P1&&p.normalScale.value.negate()),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias)}function u(p,d){d.gradientMap&&(p.gradientMap.value=d.gradientMap),d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===P1&&(p.bumpScale.value*=-1)),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===P1&&p.normalScale.value.negate()),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias)}function f(p,d){p.roughness.value=d.roughness,p.metalness.value=d.metalness,d.roughnessMap&&(p.roughnessMap.value=d.roughnessMap),d.metalnessMap&&(p.metalnessMap.value=d.metalnessMap),d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===P1&&(p.bumpScale.value*=-1)),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===P1&&p.normalScale.value.negate()),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias),n.get(d).envMap&&(p.envMapIntensity.value=d.envMapIntensity)}function h(p,d,z){f(p,d),p.ior.value=d.ior,d.sheen>0&&(p.sheenColor.value.copy(d.sheenColor).multiplyScalar(d.sheen),p.sheenRoughness.value=d.sheenRoughness,d.sheenColorMap&&(p.sheenColorMap.value=d.sheenColorMap),d.sheenRoughnessMap&&(p.sheenRoughnessMap.value=d.sheenRoughnessMap)),d.clearcoat>0&&(p.clearcoat.value=d.clearcoat,p.clearcoatRoughness.value=d.clearcoatRoughness,d.clearcoatMap&&(p.clearcoatMap.value=d.clearcoatMap),d.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=d.clearcoatRoughnessMap),d.clearcoatNormalMap&&(p.clearcoatNormalScale.value.copy(d.clearcoatNormalScale),p.clearcoatNormalMap.value=d.clearcoatNormalMap,d.side===P1&&p.clearcoatNormalScale.value.negate())),d.transmission>0&&(p.transmission.value=d.transmission,p.transmissionSamplerMap.value=z.texture,p.transmissionSamplerSize.value.set(z.width,z.height),d.transmissionMap&&(p.transmissionMap.value=d.transmissionMap),p.thickness.value=d.thickness,d.thicknessMap&&(p.thicknessMap.value=d.thicknessMap),p.attenuationDistance.value=d.attenuationDistance,p.attenuationColor.value.copy(d.attenuationColor)),p.specularIntensity.value=d.specularIntensity,p.specularColor.value.copy(d.specularColor),d.specularIntensityMap&&(p.specularIntensityMap.value=d.specularIntensityMap),d.specularColorMap&&(p.specularColorMap.value=d.specularColorMap)}function m(p,d){d.matcap&&(p.matcap.value=d.matcap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===P1&&(p.bumpScale.value*=-1)),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===P1&&p.normalScale.value.negate()),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias)}function v(p,d){d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias)}function g(p,d){d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias),p.referencePosition.value.copy(d.referencePosition),p.nearDistance.value=d.nearDistance,p.farDistance.value=d.farDistance}function x(p,d){d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===P1&&(p.bumpScale.value*=-1)),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===P1&&p.normalScale.value.negate()),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias)}return{refreshFogUniforms:e,refreshMaterialUniforms:t}}function Yu(){let n=_4("canvas");return n.style.display="block",n}function Ei(n={}){let e=n.canvas!==void 0?n.canvas:Yu(),t=n.context!==void 0?n.context:null,i=n.alpha!==void 0?n.alpha:!1,a=n.depth!==void 0?n.depth:!0,r=n.stencil!==void 0?n.stencil:!0,s=n.antialias!==void 0?n.antialias:!1,o=n.premultipliedAlpha!==void 0?n.premultipliedAlpha:!0,l=n.preserveDrawingBuffer!==void 0?n.preserveDrawingBuffer:!1,c=n.powerPreference!==void 0?n.powerPreference:"default",u=n.failIfMajorPerformanceCaveat!==void 0?n.failIfMajorPerformanceCaveat:!1,f=null,h=null,m=[],v=[];this.domElement=e,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=N2,this.physicallyCorrectLights=!1,this.toneMapping=U2,this.toneMappingExposure=1;let g=this,x=!1,p=0,d=0,z=null,b=-1,C=null,E=new q1,T=new q1,_=null,P=e.width,F=e.height,M=1,D=null,A=null,H=new q1(0,0,P,F),V=new q1(0,0,P,F),L=!1,N=new L4,U=!1,Z=!1,O=null,W=new k1,X=new k,Q={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function a1(){return z===null?M:1}let B=t;function M1(S,G){for(let j=0;j0?h=v[v.length-1]:h=null,m.pop(),m.length>0?f=m[m.length-1]:f=null};function Z1(S,G,j,q){if(S.visible===!1)return;if(S.layers.test(G.layers)){if(S.isGroup)j=S.renderOrder;else if(S.isLOD)S.autoUpdate===!0&&S.update(G);else if(S.isLight)h.pushLight(S),S.castShadow&&h.pushShadow(S);else if(S.isSprite){if(!S.frustumCulled||N.intersectsSprite(S)){q&&X.setFromMatrixPosition(S.matrixWorld).applyMatrix4(W);let y1=v2.update(S),S1=S.material;S1.visible&&f.push(S,y1,S1,j,X.z,null)}}else if((S.isMesh||S.isLine||S.isPoints)&&(S.isSkinnedMesh&&S.skeleton.frame!==T1.render.frame&&(S.skeleton.update(),S.skeleton.frame=T1.render.frame),!S.frustumCulled||N.intersectsObject(S))){q&&X.setFromMatrixPosition(S.matrixWorld).applyMatrix4(W);let y1=v2.update(S),S1=S.material;if(Array.isArray(S1)){let w1=y1.groups;for(let B1=0,H1=w1.length;B10&&we(K,G,j),q&&n1.viewport(E.copy(q)),K.length>0&&jt(K,G,j),g1.length>0&&jt(g1,G,j),y1.length>0&&jt(y1,G,j)}function we(S,G,j){if(O===null){let y1=s===!0&&v1.isWebGL2===!0?ut:m2;O=new y1(1024,1024,{generateMipmaps:!0,type:d1.convert(be)!==null?be:V2,minFilter:a4,magFilter:Q1,wrapS:o2,wrapT:o2,useRenderToTexture:u1.has("WEBGL_multisampled_render_to_texture")})}let q=g.getRenderTarget();g.setRenderTarget(O),g.clear();let K=g.toneMapping;g.toneMapping=U2,jt(S,G,j),g.toneMapping=K,C1.updateMultisampleRenderTarget(O),C1.updateRenderTargetMipmap(O),g.setRenderTarget(q)}function jt(S,G,j){let q=G.isScene===!0?G.overrideMaterial:null;for(let K=0,g1=S.length;K=0&&G<=S.width-q&&j>=0&&j<=S.height-K&&B.readPixels(G,j,q,K,d1.convert(B1),d1.convert(H1),g1):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{let w1=z!==null?A1.get(z).__webglFramebuffer:null;n1.bindFramebuffer(B.FRAMEBUFFER,w1)}}},this.copyFramebufferToTexture=function(S,G,j=0){if(G.isFramebufferTexture!==!0){console.error("THREE.WebGLRenderer: copyFramebufferToTexture() can only be used with FramebufferTexture.");return}let q=Math.pow(2,-j),K=Math.floor(G.image.width*q),g1=Math.floor(G.image.height*q);C1.setTexture2D(G,0),B.copyTexSubImage2D(B.TEXTURE_2D,j,0,0,S.x,S.y,K,g1),n1.unbindTexture()},this.copyTextureToTexture=function(S,G,j,q=0){let K=G.image.width,g1=G.image.height,y1=d1.convert(j.format),S1=d1.convert(j.type);C1.setTexture2D(j,0),B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,j.flipY),B.pixelStorei(B.UNPACK_PREMULTIPLY_ALPHA_WEBGL,j.premultiplyAlpha),B.pixelStorei(B.UNPACK_ALIGNMENT,j.unpackAlignment),G.isDataTexture?B.texSubImage2D(B.TEXTURE_2D,q,S.x,S.y,K,g1,y1,S1,G.image.data):G.isCompressedTexture?B.compressedTexSubImage2D(B.TEXTURE_2D,q,S.x,S.y,G.mipmaps[0].width,G.mipmaps[0].height,y1,G.mipmaps[0].data):B.texSubImage2D(B.TEXTURE_2D,q,S.x,S.y,y1,S1,G.image),q===0&&j.generateMipmaps&&B.generateMipmap(B.TEXTURE_2D),n1.unbindTexture()},this.copyTextureToTexture3D=function(S,G,j,q,K=0){if(g.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let g1=S.max.x-S.min.x+1,y1=S.max.y-S.min.y+1,S1=S.max.z-S.min.z+1,w1=d1.convert(q.format),B1=d1.convert(q.type),H1;if(q.isDataTexture3D)C1.setTexture3D(q,0),H1=B.TEXTURE_3D;else if(q.isDataTexture2DArray)C1.setTexture2DArray(q,0),H1=B.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}B.pixelStorei(B.UNPACK_FLIP_Y_WEBGL,q.flipY),B.pixelStorei(B.UNPACK_PREMULTIPLY_ALPHA_WEBGL,q.premultiplyAlpha),B.pixelStorei(B.UNPACK_ALIGNMENT,q.unpackAlignment);let V1=B.getParameter(B.UNPACK_ROW_LENGTH),Y1=B.getParameter(B.UNPACK_IMAGE_HEIGHT),d4=B.getParameter(B.UNPACK_SKIP_PIXELS),V4=B.getParameter(B.UNPACK_SKIP_ROWS),R1=B.getParameter(B.UNPACK_SKIP_IMAGES),le=j.isCompressedTexture?j.mipmaps[0]:j.image;B.pixelStorei(B.UNPACK_ROW_LENGTH,le.width),B.pixelStorei(B.UNPACK_IMAGE_HEIGHT,le.height),B.pixelStorei(B.UNPACK_SKIP_PIXELS,S.min.x),B.pixelStorei(B.UNPACK_SKIP_ROWS,S.min.y),B.pixelStorei(B.UNPACK_SKIP_IMAGES,S.min.z),j.isDataTexture||j.isDataTexture3D?B.texSubImage3D(H1,K,G.x,G.y,G.z,g1,y1,S1,w1,B1,le.data):j.isCompressedTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),B.compressedTexSubImage3D(H1,K,G.x,G.y,G.z,g1,y1,S1,w1,le.data)):B.texSubImage3D(H1,K,G.x,G.y,G.z,g1,y1,S1,w1,B1,le),B.pixelStorei(B.UNPACK_ROW_LENGTH,V1),B.pixelStorei(B.UNPACK_IMAGE_HEIGHT,Y1),B.pixelStorei(B.UNPACK_SKIP_PIXELS,d4),B.pixelStorei(B.UNPACK_SKIP_ROWS,V4),B.pixelStorei(B.UNPACK_SKIP_IMAGES,R1),K===0&&q.generateMipmaps&&B.generateMipmap(H1),n1.unbindTexture()},this.initTexture=function(S){C1.setTexture2D(S,0),n1.unbindTexture()},this.resetState=function(){p=0,d=0,z=null,n1.reset(),f1.reset()},typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}Ei.prototype.isWebGLRenderer=!0;var c0=class extends j1{constructor(){super();this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0,typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.autoUpdate=e.autoUpdate,this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),t}};c0.prototype.isScene=!0;var ft=class extends j1{constructor(e,t=1){super();this.type="Light",this.color=new x1(e),this.intensity=t}dispose(){}copy(e){return super.copy(e),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){let t=super.toJSON(e);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),t}};ft.prototype.isLight=!0;var l0=class extends ft{constructor(e,t){super(e,t);this.type="AmbientLight"}};l0.prototype.isAmbientLight=!0;var xo=new k1,Mo=new k,bo=new k,Li=class{constructor(e){this.camera=e,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new z1(512,512),this.map=null,this.mapPass=null,this.matrix=new k1,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new L4,this._frameExtents=new z1(1,1),this._viewportCount=1,this._viewports=[new q1(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){let t=this.camera,i=this.matrix;Mo.setFromMatrixPosition(e.matrixWorld),t.position.copy(Mo),bo.setFromMatrixPosition(e.target.matrixWorld),t.lookAt(bo),t.updateMatrixWorld(),xo.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(xo),i.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),i.multiply(t.projectionMatrix),i.multiply(t.matrixWorldInverse)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){let e={};return this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}};var u0=class extends Li{constructor(){super(new t2(50,1,.5,500));this.focus=1}updateMatrices(e){let t=this.camera,i=At*2*e.angle*this.focus,a=this.mapSize.width/this.mapSize.height,r=e.distance||t.far;(i!==t.fov||a!==t.aspect||r!==t.far)&&(t.fov=i,t.aspect=a,t.far=r,t.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}};u0.prototype.isSpotLightShadow=!0;var h0=class extends ft{constructor(e,t,i=0,a=Math.PI/3,r=0,s=1){super(e,t);this.type="SpotLight",this.position.copy(j1.DefaultUp),this.updateMatrix(),this.target=new j1,this.distance=i,this.angle=a,this.penumbra=r,this.decay=s,this.shadow=new u0}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}};h0.prototype.isSpotLight=!0;var f0=class extends L2{constructor(e){super();this.type="ShadowMaterial",this.color=new x1(0),this.transparent=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this}};f0.prototype.isShadowMaterial=!0;var d0=class extends qt.Component{constructor(e){super();this.plugin=e;this.event=new qt.Events;this.container=createDiv("renderer-container");this.shadows=!0;this.iterations=0;this.frame_rate=1/60;this.animating=!1;this.factory=new Co(this.WIDTH,this.HEIGHT,this.plugin);this.colors={ambient:16777215,spotlight:16777215};this.display={currentWidth:null,currentHeight:null,containerWidth:null,containerHeight:null,aspect:null,scale:null};this.cameraHeight={max:null,close:null,medium:null,far:null};this.extraFrames=d0.DEFAULT_EXTRA_FRAMES;this.renderer=new Ei({alpha:!0,antialias:!0})}get WIDTH(){return this.container.clientWidth/2}get HEIGHT(){return this.container.clientHeight/2}get ASPECT(){return this.WIDTH/this.HEIGHT}get scale(){return(this.WIDTH*this.WIDTH+this.HEIGHT*this.HEIGHT)/13}get canvasEl(){return this.renderer?this.renderer.domElement:null}setDice(e){this.animating&&(this.unload(),this.load()),this.stack=e,this.current=this.factory.getDice(this.stack,{x:(Math.random()*2-1)*this.WIDTH,y:-(Math.random()*2-1)*this.HEIGHT}),this.scene.add(...[...this.current.values()].flat().map(t=>t.geometry)),this.world.add(...[...this.current.values()].flat())}onload(){this.addChild(this.factory),this.container.empty(),this.container.style.opacity="1",document.body.appendChild(this.container),this.renderer.shadowMap.enabled=this.shadows,this.renderer.shadowMap.type=z6,this.container.appendChild(this.renderer.domElement),this.renderer.setClearColor(0,0),this.scene=new c0,this.initScene(),this.registerDomEvent(window,"resize",()=>{this.initScene()}),this.initWorld()}async start(){return new Promise(async(e,t)=>{this.current.size||t(),this.event.on("throw-finished",i=>{e(i)}),this.event.on("error",i=>{t(i)}),this.animating=!0,this.extraFrames=d0.DEFAULT_EXTRA_FRAMES,this.render()})}enableShadows(){this.shadows=!0,this.renderer&&(this.renderer.shadowMap.enabled=this.shadows),this.light&&(this.light.castShadow=this.shadows),this.desk&&(this.desk.receiveShadow=this.shadows)}disableShadows(){this.shadows=!1,this.renderer&&(this.renderer.shadowMap.enabled=this.shadows),this.light&&(this.light.castShadow=this.shadows),this.desk&&(this.desk.receiveShadow=this.shadows)}get mw(){return Math.max(this.WIDTH,this.HEIGHT)}setDimensions(e){this.display.currentWidth=this.container.clientWidth/2,this.display.currentHeight=this.container.clientHeight/2,e?(this.display.containerWidth=e.w,this.display.containerHeight=e.h):(this.display.containerWidth=this.display.currentWidth,this.display.containerHeight=this.display.currentHeight),this.display.aspect=Math.min(this.display.currentWidth/this.display.containerWidth,this.display.currentHeight/this.display.containerHeight),this.display.scale=Math.sqrt(this.display.containerWidth*this.display.containerWidth+this.display.containerHeight*this.display.containerHeight)/13,this.renderer.setSize(this.display.currentWidth*2,this.display.currentHeight*2),this.cameraHeight.max=this.display.currentHeight/this.display.aspect/Math.tan(10*Math.PI/180),this.factory.width=this.display.currentWidth,this.factory.height=this.display.currentHeight,this.cameraHeight.medium=this.cameraHeight.max/1.5,this.cameraHeight.far=this.cameraHeight.max,this.cameraHeight.close=this.cameraHeight.max/2}initCamera(){this.camera&&this.scene.remove(this.camera),this.camera=new t2(20,this.display.currentWidth/this.display.currentHeight,1,this.cameraHeight.max*1.3),this.camera.position.z=this.cameraHeight.far,this.camera.lookAt(new k(0,0,0))}initLighting(){let e=Math.max(this.display.containerWidth,this.display.containerHeight);this.light&&this.scene.remove(this.light),this.ambientLight&&this.scene.remove(this.ambientLight),this.light=new h0(this.colors.spotlight,.25),this.light.position.set(-e/2,e/2,e*3),this.light.target.position.set(0,0,0),this.light.distance=e*5,this.light.angle=Math.PI/4,this.light.castShadow=this.shadows,this.light.shadow.camera.near=e/10,this.light.shadow.camera.far=e*5,this.light.shadow.camera.fov=50,this.light.shadow.bias=.001,this.light.shadow.mapSize.width=1024,this.light.shadow.mapSize.height=1024,this.scene.add(this.light),this.ambientLight=new l0(16777215,.9),this.scene.add(this.ambientLight)}initDesk(){this.desk&&this.scene.remove(this.desk);let e=new f0;e.opacity=.5,this.desk=new l2(new D4(this.display.containerWidth*6,this.display.containerHeight*6,1,1),e),this.desk.receiveShadow=this.shadows,this.scene.add(this.desk)}initScene(){this.setDimensions(),this.initCamera(),this.initLighting(),this.initDesk(),this.camera.updateProjectionMatrix(),this.renderer.render(this.scene,this.camera)}initWorld(){this.world=new yo(this.WIDTH,this.HEIGHT),this.iterations=0}getResultsForRoller(e){let t=this.current.get(e),i=t.filter(s=>s instanceof E4&&s.isPercentile),a=[];for(let s=0;s!(s instanceof E4&&s.isPercentile)).map(s=>s.getUpsideValue()).filter(s=>s),...a.map(([s,o])=>{let l=s.getUpsideValue();if(!o)return l;let c=o.getUpsideValue();return l===10&&c==10?100:(c==10&&(c=0),l==10&&(l=0),l*10+c)}).filter(s=>s)]}returnResult(){for(let e of this.stack.dynamic){if(!this.current.has(e))continue;let t=this.getResultsForRoller(e);!t||e.setResults(t)}this.event.trigger("throw-finished",this.stack)}unrender(e=this){e.container.style.opacity="0",e.registerInterval(window.setTimeout(()=>{e.animating=!1,e.unload()},1e3))}render(){if(this.throwFinished())if(this.extraFrames>10)this.extraFrames--;else{try{for(let[e,t]of this.current)if(!(!e.modifiers.size||!this.getResultsForRoller(e))&&e.modifiers.has("r")){let a=t.filter(r=>(e.conditions.length||e.conditions.push({operator:"=",comparer:e.faces.min,value:""}),e.checkCondition(r.result,e.conditions)&&r.rerolled{r.rerolled++;let s={x:(Math.random()*2-1)*this.WIDTH,y:-(Math.random()*2-1)*this.HEIGHT};r.vector=r.generateVector(s),r.create(),r.set(),r.stopped=!1}),this.animation=requestAnimationFrame(()=>this.render());return}}if(this.returnResult(),this.plugin.data.renderTime)this.registerInterval(window.setTimeout(()=>this.unrender(),this.plugin.data.renderTime));else{let t=function(){e.unrender(e),document.body.removeEventListener("click",t)},e=this;this.registerDomEvent(document.body,"click",t)}}catch(e){this.event.trigger("error",e)}return}this.animation=requestAnimationFrame(()=>this.render()),this.world.step(this.frame_rate),this.iterations++,this.current.forEach(e=>{e.map(t=>t.set())}),this.renderer.render(this.scene,this.camera)}dispose(...e){e.forEach(t=>{"dispose"in t&&t.dispose(),t.children&&this.dispose(...t.children)})}detach(){}onunload(){cancelAnimationFrame(this.animation),this.container.detach(),this.container.empty(),this.renderer.domElement.detach(),this.renderer.dispose(),this.factory.dispose(),this.ambientLight.dispose(),this.light.dispose(),this.scene.children.forEach(e=>this.dispose(e)),this.scene.remove(this.scene,...this.scene.children,...[...this.current.values()].flat().map(e=>e.geometry)),this.current.forEach(e=>{e.forEach(t=>{[...Array.isArray(t.geometry.material)?t.geometry.material:[t.geometry.material]].forEach(a=>a&&a.dispose()),this.world.world.removeBody(t.body)})}),this.current=new Map}onThrowFinished(){}throwFinished(){let e=!0,t=4;if(this.iterations<10/this.frame_rate)for(let i of this.current.values())for(let a of i){if(a.stopped===!0)continue;let r=a.body.angularVelocity,s=a.body.velocity;if(Math.abs(r.x)3){a.stopped=!0;continue}}else a.stopped=this.iterations;e=!1}else a.stopped=void 0,e=!1}return e}},Wt=d0;Wt.DEFAULT_EXTRA_FRAMES=30;var yo=class{constructor(e,t){this.WIDTH=e;this.HEIGHT=t;this.world=new Z0({gravity:new y(0,0,-9.82*400)});this.ground=this.getPlane();this.diceMaterial=new He;this.deskMaterial=new He;this.barrierMaterial=new He;this.world.broadphase=new h6,this.world.allowSleep=!0,this.ground.position.set(0,0,0),this.world.addBody(this.ground),this.buildWalls()}add(...e){e.forEach(t=>{this.world.addBody(t.body)})}step(e=1/60){let t=performance.now()/1e3;if(!this.lastCallTime)this.world.step(e);else{let i=t-this.lastCallTime;this.world.step(e,i)}this.lastCallTime=t}buildWalls(){this.world.addContactMaterial(new Te(this.deskMaterial,this.diceMaterial,{friction:.01,restitution:.5,contactEquationRelaxation:3,contactEquationStiffness:1e8})),this.world.addContactMaterial(new Te(this.barrierMaterial,this.diceMaterial,{friction:.01,restitution:1,contactEquationRelaxation:3,contactEquationStiffness:1e8})),this.world.addContactMaterial(new Te(this.diceMaterial,this.diceMaterial,{friction:.1,restitution:.5,contactEquationRelaxation:3,contactEquationStiffness:1e8})),this.world.addBody(new i1({allowSleep:!1,mass:0,shape:new e4,material:this.deskMaterial}));let e=new i1({allowSleep:!1,mass:0,shape:new e4,material:this.barrierMaterial});e.quaternion.setFromAxisAngle(new y(1,0,0),Math.PI/2),e.position.set(0,this.HEIGHT*.93,0),this.world.addBody(e),e=new i1({allowSleep:!1,mass:0,shape:new e4,material:this.barrierMaterial}),e.quaternion.setFromAxisAngle(new y(1,0,0),-Math.PI/2),e.position.set(0,-this.HEIGHT*.93,0),this.world.addBody(e),e=new i1({allowSleep:!1,mass:0,shape:new e4,material:this.barrierMaterial}),e.quaternion.setFromAxisAngle(new y(0,1,0),-Math.PI/2),e.position.set(this.WIDTH*.93,0,0),this.world.addBody(e),e=new i1({allowSleep:!1,mass:0,shape:new e4,material:this.barrierMaterial}),e.quaternion.setFromAxisAngle(new y(0,1,0),Math.PI/2),e.position.set(-this.WIDTH*.93,0,0),this.world.addBody(e)}getPlane(){return new i1({type:i1.STATIC,shape:new e4})}},Co=class extends qt.Component{constructor(e,t,i){super();this.width=e;this.height=t;this.plugin=i;this.dice={};this.buildDice()}get colors(){return{diceColor:this.plugin.data.diceColor,textColor:this.plugin.data.textColor}}updateColors(){this.dispose(),this.buildDice()}onunload(){this.dispose()}disposeChildren(...e){e.forEach(t=>{"dispose"in t&&t.dispose(),t.children&&this.disposeChildren(...t.children)})}dispose(){for(let e of Object.values(this.dice))this.disposeChildren(e.geometry.children)}getDiceForRoller(e,t){let i=[];switch(e.faces.max){case 4:{i.push(...new Array(e.rolls).fill(0).map(a=>new gi(this.width,this.height,this.clone("d4"),t)));break}case 1:case 6:{i.push(...new Array(e.rolls).fill(0).map(a=>new vi(this.width,this.height,e.fudge?this.clone("fudge"):this.clone("d6"),t)));break}case 8:{i.push(...new Array(e.rolls).fill(0).map(a=>new mi(this.width,this.height,this.clone("d8"),t)));break}case 10:{i.push(...new Array(e.rolls).fill(0).map(a=>new E4(this.width,this.height,this.clone("d10"),t)));break}case 12:{i.push(...new Array(e.rolls).fill(0).map(a=>new pi(this.width,this.height,this.clone("d12"),t)));break}case 20:{i.push(...new Array(e.rolls).fill(0).map(a=>new di(this.width,this.height,this.clone("d20"),t)));break}case 100:{i.push(...new Array(e.rolls).fill(0).map(a=>[new E4(this.width,this.height,this.clone("d100"),t,!0),new E4(this.width,this.height,this.clone("d10"),t,!0)]).flat());break}}return i}getDice(e,t){let i=new Map;for(let a of e.dynamic){let r=this.getDiceForRoller(a,t);r.length&&i.set(a,r)}return i}clone(e){if(!(e in this.dice))throw new Error("That dice type does not exist!");return this.dice[e].clone()}buildDice(){this.dice.d100=new Q3(this.width,this.height,this.colors).create(),this.dice.d20=new $3(this.width,this.height,this.colors).create(),this.dice.d12=new K3(this.width,this.height,this.colors).create(),this.dice.d10=new J3(this.width,this.height,this.colors).create(),this.dice.d8=new ei(this.width,this.height,this.colors).create(),this.dice.d6=new ti(this.width,this.height,this.colors).create(),this.dice.d4=new ai(this.width,this.height,this.colors).create(),this.dice.fudge=new ii(this.width,this.height,this.colors).create(),this.dice.boost=new hi(this.width,this.height,this.colors).create(),this.dice.ability=new ci(this.width,this.height,this.colors).create(),this.dice.difficulty=new li(this.width,this.height,this.colors).create(),this.dice.challenge=new si(this.width,this.height,this.colors).create(),this.dice.proficiency=new ni(this.width,this.height,this.colors).create(),this.dice.setback=new fi(this.width,this.height,this.colors).create()}};var wo=Z2(Ao());var Di=class{constructor(e){this.table=e}parse(e){let t=e.length,i=this.table,a=[],r=[],s=0;for(;sf||u===f&&c.associativity==="right")break;a.push(r.shift())}r.unshift(o)}else a.push(o)}}for(;r.length;){let o=r.shift();if(o.value!=="(")a.push(o);else throw new Error("Mismatched parentheses.")}return a}};var $u=/(?:\d+[Dd])?#(?:[\p{Letter}\p{Emoji_Presentation}\w/-]+)(?:\|(?:[+-]))?(?:\|(?:[^+-]+))?/u,Ku=/(?:\d+[Dd])?#(?:[\p{Letter}\p{Emoji_Presentation}\w/-]+)(?:\|(?:[+-]))?\|link/u,Ju=/(?:\d+[Dd])?(?:\[.*\]\(|\[\[)(?:.+?)#?\^(?:.+?)(?:\)|\]\])\|?(?:.+)?/u,Qu=/(?:\d+[Dd])?(?:\[.*\]\(|\[\[)(?:.+)(?:\)|\]\])\|?(?:.+)?/u,eh=/(?:\d+[Dd])?(?:\[.*\]\(|\[\[)(?:.+)(?:\)|\]\])\|line/u,th=/[\(\^\+\-\*\/\)]/u,ih=/(?:\d+|\b)[Dd](?:\[?(?:-?\d+[ \t]?,)?[ \t]?(?:-?\d+|%|F)\]?|\b)/u,ah=/(?:=|=!|<|>|<=|>=|=<|=>|-=|=-)\d+/u,m0=class{constructor(e){this.plugin=e;this.lexer=wo.compile({WS:[{match:/[ \t]+/u},{match:/[{}]+/u}],table:Ju,line:eh,section:Qu,link:Ku,tag:$u,condition:ah,kl:{match:/kl\d*/u,value:this.clampInfinite},kh:[{match:/kh\d*/u,value:this.clampInfinite},{match:/k\d*/u,value:this.clampInfinite}],dh:{match:/dh\d*/u,value:this.clampInfinite},dl:[{match:/dl\d*/u,value:this.clampInfinite}],"!!":{match:/!!(?:i|\d+)?/u,value:this.clampInfinite},"!":{match:/!(?:i|\d+)?/u,value:this.clampInfinite},r:{match:/r(?:i|\d+)?/u,value:this.clampInfinite},stunt:/1[Dd]S/u,"%":/\d+[Dd]\d+%/u,dice:[{match:ih,value:e=>{let{roll:t=this.plugin.data.defaultRoll,faces:i=this.plugin.data.defaultFace}=e.match(/(?\d+)?[Dd](?\[?(?:-?\d+[ \t]?,)?[ \t]?(?:-?\d+|%|F)\]?)?/).groups;return`${t}d${i}`}},{match:/\d+/u},{match:/\b[A-Za-z][A-Za-z0-9_]+\b/u,value:e=>this.plugin.inline.has(e)?`${this.plugin.inline.get(e)}`:e}],math:th});let t={precedence:3,associativity:"right"},i={precedence:2,associativity:"left"},a={precedence:1,associativity:"left"};this.parser=new Di({"+":a,"-":a,"*":i,"/":i,"^":t})}clampInfinite(e){return/i$/.test(e)?"100":e.replace(/^\D+/g,"")}parse(e){let t=Array.from(this.lexer.reset(e));return this.lexer.reset(),this.parser.parse(this.transform(t))}transform(e){e=e.filter(i=>i.type!="WS");let t=[];for(let i of e)if(i.type=="condition"&&t.length>0){let a=t[t.length-1];a.conditions||(a.conditions=[]);let[r,s,o]=i.value.match(/(?=|=!|<|>|<=|>=|=<|=>|\-=|=\-)(?\d+)/)??[];a.conditions.push({operator:s,comparer:Number(o),value:i.value})}else t.push(i);return t}getTypeFromLexemes(e){return e.some(({type:t})=>t==="table")?"table":e.some(({type:t})=>t==="section")?"section":e.some(({type:t})=>t==="tag")?"tag":e.some(({type:t})=>t==="link")?"link":e.some(({type:t})=>t==="line")?"line":"dice"}};String.prototype.matchAll=String.prototype.matchAll||function*(e){let t=e.global?e.flags:e.flags+"g",i=new RegExp(e,t),a;for(;a=i.exec(this);)yield a};var l6={returnAllTags:!0,rollLinksForTags:!1,copyContentButton:!0,customFormulas:[],displayFormulaForMod:!0,displayResultsInline:!1,displayLookupRoll:!0,formulas:{},persistResults:!1,results:{},defaultRoll:1,defaultFace:100,renderer:!1,renderAllDice:!1,renderTime:2e3,diceColor:"#202020",textColor:"#ffffff",showLeafOnStartup:!0,showDice:!0,round:de.None},Hi=class extends u2.Plugin{constructor(){super(...arguments);this.fileMap=new Map;this.inline=new Map;this.operators={"+":(e,t)=>e+t,"-":(e,t)=>e-t,"*":(e,t)=>e*t,"/":(e,t)=>e/t,"^":(e,t)=>Math.pow(e,t)};this.parser=new m0(this);this.persistingFiles=new Set}async onload(){console.log("DiceRoller plugin loaded"),this.data=Object.assign({},l6,await this.loadData()),this.renderer=new Wt(this),this.addSettingTab(new c6(this.app,this)),console.log(this.dataviewAPI),this.registerView(g4,i=>new Ke(this,i)),this.app.workspace.onLayoutReady(()=>this.addDiceView(!0)),this.registerEvent(this.app.workspace.on("dice-roller:update-colors",()=>{this.renderer.factory.updateColors()})),this.registerEvent(this.app.workspace.on("dice-roller:render-dice",async i=>{let a=await this.getRoller(i,"external");if(!(a instanceof H2)){new u2.Notice("The Dice View only supports dice rolls.");return}if(await a.roll(),!a.dice.length){new u2.Notice("Invalid formula.");return}try{this.renderRoll(a)}catch(r){new u2.Notice("There was an error rendering the roll."),console.error(r)}this.app.workspace.trigger("dice-roller:rendered-result",a.result)})),this.addCommand({id:"open-view",name:"Open Dice View",checkCallback:i=>{if(!this.view)return i||this.addDiceView(),!0}}),this.addCommand({id:"reroll",name:"Re-roll Dice",checkCallback:i=>{let a=this.app.workspace.getActiveViewOfType(u2.MarkdownView);if(a&&a.getMode()==="preview"&&this.fileMap.has(a.file))return i||this.fileMap.get(a.file).forEach(s=>{s.roll()}),!0}});let e=L0(Fi).html[0];(0,u2.addIcon)(Le,e);let t=L0(Bi).html[0];(0,u2.addIcon)(De,t),this.registerMarkdownPostProcessor(async(i,a)=>{let r=i.querySelectorAll("code");if(!r.length)return;let s=a.sourcePath,o=a.getSectionInfo(i),l=a.getSectionInfo(i)?.lineStart,c=this.app.vault.getAbstractFileByPath(a.sourcePath);if(!c||!(c instanceof u2.TFile))return;let u={},f,h=!1,m=[];for(let v=0;v{z.on("new-result",async()=>{let E=f.slice(o.lineStart,o.lineEnd+1),T=z.replacer;if(!T){new u2.Notice("Dice Roller: There was an issue modifying the file.");return}let _=d?`${z.inlineText} **${T}**`:`${T}`;E=E.join(` `).replace(`\`${x}\``,_).split(` -`),f.splice(o.lineStart,o.lineEnd-o.lineStart+1,...E),b()})})),await z.roll();continue}catch(x){console.error(x)}if(!!/^dice(?:\+|\-|\-mod)?:\s*([\s\S]+)\s*?/.test(g.innerText))try{let[,x]=g.innerText.match(/^dice(?:\+|\-|\-mod)?:\s*([\s\S]+)\s*?/),p=await this.getRoller(x,a.sourcePath),d=this.data.results?.[s]?.[l]?.[v]??null;(this.data.persistResults&&!/dice\-/.test(g.innerText)||/dice\+/.test(g.innerText))&&(this.persistingFiles.add(a.sourcePath),u[v]=p,p.save=!0);let z=this.data.renderAllDice;x.includes("|render")&&(z=!0),x.includes("|norender")&&(z=!1);let b=async()=>{await p.roll(),p.save&&d&&await p.applyResult(d),p instanceof I2&&(p.shouldRender=z),g.replaceWith(p.containerEl)};p.loaded?await b():p.on("loaded",async()=>{await b()}),this.fileMap.has(c)||this.fileMap.set(c,[]),this.fileMap.set(c,[...this.fileMap.get(c),p]);let C=this.app.workspace.getActiveViewOfType(u2.MarkdownView);if(C&&this.fileMap.has(c)&&this.fileMap.get(c).length===1){let E=this,T=D0(C,{onUnloadFile:function(_){return async function(P){return P==c&&(E.fileMap.delete(c),T()),await _.call(this,P)}}});C.register(T),C.register(()=>this.fileMap.delete(c))}}catch(x){console.error(x),new u2.Notice(`There was an error parsing the dice string: ${g.innerText}. +`),f.splice(o.lineStart,o.lineEnd-o.lineStart+1,...E),b()})})),await z.roll();continue}catch(x){console.error(x)}if(!!/^dice(?:\+|\-|\-mod)?:\s*([\s\S]+)\s*?/.test(g.innerText))try{let[,x]=g.innerText.match(/^dice(?:\+|\-|\-mod)?:\s*([\s\S]+)\s*?/),p=await this.getRoller(x,a.sourcePath),d=this.data.results?.[s]?.[l]?.[v]??null;(this.data.persistResults&&!/dice\-/.test(g.innerText)||/dice\+/.test(g.innerText))&&(this.persistingFiles.add(a.sourcePath),u[v]=p,p.save=!0);let z=this.data.renderAllDice;x.includes("|render")&&(z=!0),x.includes("|norender")&&(z=!1);let b=async()=>{await p.roll(),p.save&&d&&await p.applyResult(d),p instanceof H2&&(p.shouldRender=z),g.replaceWith(p.containerEl)};p.loaded?await b():p.on("loaded",async()=>{await b()}),this.fileMap.has(c)||this.fileMap.set(c,[]),this.fileMap.set(c,[...this.fileMap.get(c),p]);let C=this.app.workspace.getActiveViewOfType(u2.MarkdownView);if(C&&this.fileMap.has(c)&&this.fileMap.get(c).length===1){let E=this,T=D0(C,{onUnloadFile:function(_){return async function(P){return P==c&&(E.fileMap.delete(c),T()),await _.call(this,P)}}});C.register(T),C.register(()=>this.fileMap.delete(c))}}catch(x){console.error(x),new u2.Notice(`There was an error parsing the dice string: ${g.innerText}. ${x}`,5e3);continue}}if(h&&m.length&&(await Promise.all(m),await this.app.vault.modify(c,f.join(` -`))),s in this.data.results&&(this.data.results[s][l]={}),Object.entries(u).length){let v=this.app.workspace.getActiveViewOfType(u2.MarkdownView);if(v){let g=this,x=D0(v,{onUnloadFile:function(p){return async function(d){if(d=c){g.persistingFiles.has(s)&&(g.persistingFiles.delete(s),g.data.results[s]={});for(let z in u){let b=u[z],C=a.getSectionInfo(i)?.lineStart;if(C==null)continue;let E={[C]:{...g.data.results[s]?.[C]??{},[z]:b.toResult()}};g.data.results[s]={...g.data.results[s]??{},...E},await g.saveSettings()}}return x(),await p.call(this,d)}}});v.register(x),v.register(async()=>{this.persistingFiles.has(s)&&(this.persistingFiles.delete(s),this.data.results[s]={});for(let p in u){let d=u[p],z=a.getSectionInfo(i)?.lineStart;if(z==null)continue;let b={[z]:{...this.data.results[s]?.[z]??{},[p]:d.toResult()}};this.data.results[s]={...this.data.results[s]??{},...b},await this.saveSettings()}})}}}),this.app.workspace.onLayoutReady(async()=>{await this.registerDataviewInlineFields()})}get canUseDataview(){return this.app.plugins.getPlugin("dataview")!=null}get dataview(){return this.app.plugins.getPlugin("dataview")}get dataviewAPI(){return(0,_o.getAPI)()}async dataviewReady(){return new Promise(e=>{this.canUseDataview||e(!1),this.dataview.api&&e(!0),this.registerEvent(this.app.metadataCache.on("dataview:api-ready",()=>{e(!0)}))})}get view(){let e=this.app.workspace.getLeavesOfType(g4),t=e.length?e[0]:null;if(t&&t.view&&t.view instanceof Ke)return t.view}async getArrayRoller(e,t=1){let i=new N0(this,e,t);return await i.roll(),i}async addDiceView(e=!1){e&&!this.data.showLeafOnStartup||this.app.workspace.getLeavesOfType(g4).length||await this.app.workspace.getRightLeaf(!1).setViewState({type:g4})}async registerDataviewInlineFields(){if(!this.canUseDataview)return;await this.dataviewReady(),this.dataview.index.pages.forEach(({fields:t})=>{for(let[i,a]of t)typeof a!="number"||Number.isNaN(a)||a==null||this.inline.set(i,a)}),this.registerEvent(this.app.metadataCache.on("dataview:metadata-change",(t,i)=>{if(t==="update"){let a=this.dataview.api.page(i.path);if(!a)return;for(let r in a){let s=a[r];typeof s!="number"||Number.isNaN(s)||s==null||this.inline.set(r,s)}}}))}async renderRoll(e){if(!(e instanceof I2)||!e?.dice?.length){new u2.Notice(`This dice roll can't be rendered: ${e.original}`);return}this.addChild(this.renderer),this.renderer.setDice(e),await this.renderer.start(),e.recalculate()}async parseDice(e,t){let i=await this.getRoller(e,t);return{result:await i.roll(),roller:i}}parseDiceSync(e,t){let i=this.getRollerSync(e,t);return{result:i.roll(),roller:i}}clearEmpties(e){for(var t in e)!e[t]||typeof e[t]!="object"||(this.clearEmpties(e[t]),Object.keys(e[t]).length===0&&delete e[t])}async saveSettings(){this.clearEmpties(this.data.results),await this.saveData(this.data)}get dataview_regex(){let e=Array.from(this.inline.keys());return e.length?new RegExp(`(${e.join("|")})`,"g"):null}async getRoller(e,t="",i=this.data.showDice){e=e.replace(/\\\|/g,"|");let a=e.includes("|nodice")?!1:i,r=this.data.displayResultsInline,s=f2.Roll,o="",l=/\|text\((.*)\)/;if(e.includes("|form")&&(r=!0),e.includes("|noform")&&(r=!1),e.includes("|avg")&&(s=f2.Average),e.includes("|none")&&(s=f2.None),e.includes("|text(")){let[,f]=e.match(l)??[null,""];o=f}e=(0,Ti.decode)(e.replace("|nodice","").replace("|render","").replace("|norender","").replace("|noform","").replace("|form","").replace("|avg","").replace("|none","").replace(l,"")),e in this.data.formulas&&(e=this.data.formulas[e]);let c=this.parse(e);switch(this.getTypeFromLexemes(c)){case"dice":{let f=new I2(this,e,c,a,o,s);return f.showFormula=r,f}case"table":{let f=new B4(this,e,c[0],t,a);return await f.init,f}case"section":return new Mt(this,e,c[0],t,a);case"tag":{if(!this.canUseDataview)throw new Error("Tags are only supported with the Dataview plugin installed.");return new r6(this,e,c[0],t,a)}case"link":return new n6(this,e,c[0],t,a);case"line":return new s6(this,e,c[0],t,a)}}getRollerSync(e,t,i=this.data.showDice){e=e.replace(/\\\|/g,"|");let a=e.includes("|nodice")?!1:i,r=this.data.renderAllDice,s=!1,o=f2.Roll,l="",c=/\|text\((.*)\)/;if(e.includes("|form")&&(s=!0),e.includes("|noform")&&(s=!1),e.includes("|avg")&&(o=f2.Average),e.includes("|none")&&(o=f2.None),e.includes("|text(")){let[,h]=e.match(c)??[null,""];l=h}e=(0,Ti.decode)(e.replace("|nodice","").replace("|render","").replace("|norender","").replace("|noform","").replace("|form","").replace("|avg","").replace("|none","").replace(c,"")),e in this.data.formulas&&(e=this.data.formulas[e]);let u=this.parse(e);switch(this.getTypeFromLexemes(u)){case"dice":{let h=new I2(this,e,u,a,l,o);return h.shouldRender=r,h.showFormula=s,h}case"table":{let h=new B4(this,e,u[0],t,a);return h.init,h}case"section":return new Mt(this,e,u[0],t,a);case"tag":{if(!this.canUseDataview)throw new Error("Tags are only supported with the Dataview plugin installed.");return new r6(this,e,u[0],t,a)}case"link":return new n6(this,e,u[0],t,a);case"line":return new s6(this,e,u[0],t,a)}}getTypeFromLexemes(e){return e.some(({type:t})=>t==="table")?"table":e.some(({type:t})=>t==="section")?"section":e.some(({type:t})=>t==="tag")?"tag":e.some(({type:t})=>t==="link")?"link":e.some(({type:t})=>t==="line")?"line":"dice"}onunload(){console.log("DiceRoller unloaded"),this.app.workspace.getLeavesOfType(g4).forEach(e=>e.detach()),"__THREE__"in window&&delete window.__THREE__,this.renderer.unload(),this.app.workspace.trigger("dice-roller:unload")}parse(e){return this.parser.parse(e)}}; +`))),s in this.data.results&&(this.data.results[s][l]={}),Object.entries(u).length){let v=this.app.workspace.getActiveViewOfType(u2.MarkdownView);if(v){let g=this,x=D0(v,{onUnloadFile:function(p){return async function(d){if(d=c){g.persistingFiles.has(s)&&(g.persistingFiles.delete(s),g.data.results[s]={});for(let z in u){let b=u[z],C=a.getSectionInfo(i)?.lineStart;if(C==null)continue;let E={[C]:{...g.data.results[s]?.[C]??{},[z]:b.toResult()}};g.data.results[s]={...g.data.results[s]??{},...E},await g.saveSettings()}}return x(),await p.call(this,d)}}});v.register(x),v.register(async()=>{this.persistingFiles.has(s)&&(this.persistingFiles.delete(s),this.data.results[s]={});for(let p in u){let d=u[p],z=a.getSectionInfo(i)?.lineStart;if(z==null)continue;let b={[z]:{...this.data.results[s]?.[z]??{},[p]:d.toResult()}};this.data.results[s]={...this.data.results[s]??{},...b},await this.saveSettings()}})}}}),this.app.workspace.onLayoutReady(async()=>{await this.registerDataviewInlineFields()})}get canUseDataview(){return this.app.plugins.getPlugin("dataview")!=null}get dataview(){return this.app.plugins.getPlugin("dataview")}get dataviewAPI(){return(0,_o.getAPI)()}async dataviewReady(){return new Promise(e=>{this.canUseDataview||e(!1),this.dataview.api&&e(!0),this.registerEvent(this.app.metadataCache.on("dataview:api-ready",()=>{e(!0)}))})}get view(){let e=this.app.workspace.getLeavesOfType(g4),t=e.length?e[0]:null;if(t&&t.view&&t.view instanceof Ke)return t.view}async getArrayRoller(e,t=1){let i=new N0(this,e,t);return await i.roll(),i}async addDiceView(e=!1){e&&!this.data.showLeafOnStartup||this.app.workspace.getLeavesOfType(g4).length||await this.app.workspace.getRightLeaf(!1).setViewState({type:g4})}async registerDataviewInlineFields(){if(!this.canUseDataview)return;await this.dataviewReady(),this.dataview.index.pages.forEach(({fields:t})=>{for(let[i,a]of t)typeof a!="number"||Number.isNaN(a)||a==null||this.inline.set(i,a)}),this.registerEvent(this.app.metadataCache.on("dataview:metadata-change",(t,i)=>{if(t==="update"){let a=this.dataview.api.page(i.path);if(!a)return;for(let r in a){let s=a[r];typeof s!="number"||Number.isNaN(s)||s==null||this.inline.set(r,s)}}}))}async renderRoll(e){if(!(e instanceof H2)||!e?.dice?.length){new u2.Notice(`This dice roll can't be rendered: ${e.original}`);return}this.addChild(this.renderer),this.renderer.setDice(e),await this.renderer.start(),e.recalculate()}async parseDice(e,t){let i=await this.getRoller(e,t);return{result:await i.roll(),roller:i}}parseDiceSync(e,t){let i=this.getRollerSync(e,t);if(i instanceof H2)return{result:i.result,roller:i}}clearEmpties(e){for(var t in e)!e[t]||typeof e[t]!="object"||(this.clearEmpties(e[t]),Object.keys(e[t]).length===0&&delete e[t])}async saveSettings(){this.clearEmpties(this.data.results),await this.saveData(this.data)}get dataview_regex(){let e=Array.from(this.inline.keys());return e.length?new RegExp(`(${e.join("|")})`,"g"):null}async getRoller(e,t="",i=this.data.showDice){e=e.replace(/\\\|/g,"|");let a=e.includes("|nodice")?!1:i,r=this.data.displayResultsInline,s=f2.Roll,o="",l=/\|text\((.*)\)/;if(e.includes("|form")&&(r=!0),e.includes("|noform")&&(r=!1),e.includes("|avg")&&(s=f2.Average),e.includes("|none")&&(s=f2.None),e.includes("|text(")){let[,f]=e.match(l)??[null,""];o=f}e=(0,Ti.decode)(e.replace("|nodice","").replace("|render","").replace("|norender","").replace("|noform","").replace("|form","").replace("|avg","").replace("|none","").replace(l,"")),e in this.data.formulas&&(e=this.data.formulas[e]);let c=this.parse(e);switch(this.getTypeFromLexemes(c)){case"dice":{let f=new H2(this,e,c,a,o,s);return f.showFormula=r,f}case"table":{let f=new B4(this,e,c[0],t,a);return await f.init,f}case"section":return new Mt(this,e,c[0],t,a);case"tag":{if(!this.canUseDataview)throw new Error("Tags are only supported with the Dataview plugin installed.");return new r6(this,e,c[0],t,a)}case"link":return new n6(this,e,c[0],t,a);case"line":return new s6(this,e,c[0],t,a)}}getRollerSync(e,t,i=this.data.showDice){e=e.replace(/\\\|/g,"|");let a=e.includes("|nodice")?!1:i,r=this.data.renderAllDice,s=!1,o=f2.Roll,l="",c=/\|text\((.*)\)/;if(e.includes("|form")&&(s=!0),e.includes("|noform")&&(s=!1),e.includes("|avg")&&(o=f2.Average),e.includes("|none")&&(o=f2.None),e.includes("|text(")){let[,h]=e.match(c)??[null,""];l=h}e=(0,Ti.decode)(e.replace("|nodice","").replace("|render","").replace("|norender","").replace("|noform","").replace("|form","").replace("|avg","").replace("|none","").replace(c,"")),e in this.data.formulas&&(e=this.data.formulas[e]);let u=this.parse(e);switch(this.getTypeFromLexemes(u)){case"dice":{let h=new H2(this,e,u,a,l,o);return h.shouldRender=r,h.showFormula=s,h}case"table":{let h=new B4(this,e,u[0],t,a);return h.init,h}case"section":return new Mt(this,e,u[0],t,a);case"tag":{if(!this.canUseDataview)throw new Error("Tags are only supported with the Dataview plugin installed.");return new r6(this,e,u[0],t,a)}case"link":return new n6(this,e,u[0],t,a);case"line":return new s6(this,e,u[0],t,a)}}getTypeFromLexemes(e){return e.some(({type:t})=>t==="table")?"table":e.some(({type:t})=>t==="section")?"section":e.some(({type:t})=>t==="tag")?"tag":e.some(({type:t})=>t==="link")?"link":e.some(({type:t})=>t==="line")?"line":"dice"}onunload(){console.log("DiceRoller unloaded"),this.app.workspace.getLeavesOfType(g4).forEach(e=>e.detach()),"__THREE__"in window&&delete window.__THREE__,this.renderer.unload(),this.app.workspace.trigger("dice-roller:unload")}parse(e){return this.parser.parse(e)}}; /*! * Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) diff --git a/.obsidian/plugins/obsidian-dice-roller/manifest.json b/.obsidian/plugins/obsidian-dice-roller/manifest.json index f1cb01b2..0ca42f3a 100644 --- a/.obsidian/plugins/obsidian-dice-roller/manifest.json +++ b/.obsidian/plugins/obsidian-dice-roller/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-dice-roller", "name": "Dice Roller", - "version": "8.6.8", + "version": "8.6.9", "minAppVersion": "0.12.15", "description": "Inline dice rolling for Obsidian.md", "author": "Jeremy Valentine", diff --git a/.obsidian/plugins/obsidian-kanban/main.js b/.obsidian/plugins/obsidian-kanban/main.js index 8a366a31..d93e5beb 100644 --- a/.obsidian/plugins/obsidian-kanban/main.js +++ b/.obsidian/plugins/obsidian-kanban/main.js @@ -7,74 +7,74 @@ const cancelAnimationFrame = (id) => activeWindow.cancelAnimationFrame(id); const setTimeout = (...args) => activeWindow.setTimeout(...args); const clearTimeout = (id) => activeWindow.clearTimeout(id); -var UE=Object.create;var eo=Object.defineProperty;var WE=Object.getOwnPropertyDescriptor;var VE=Object.getOwnPropertyNames;var zE=Object.getPrototypeOf,jE=Object.prototype.hasOwnProperty;var kf=e=>eo(e,"__esModule",{value:!0});var El=(e,t)=>()=>(e&&(t=e(e=0)),t);var ft=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),zi=(e,t)=>{kf(e);for(var r in t)eo(e,r,{get:t[r],enumerable:!0})},qE=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of VE(t))!jE.call(e,n)&&n!=="default"&&eo(e,n,{get:()=>t[n],enumerable:!(r=WE(t,n))||r.enumerable});return e},ge=e=>qE(kf(eo(e!=null?UE(zE(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);function Wn(e,t){for(var r in t)e[r]=t[r];return e}function Mf(e){var t=e.parentNode;t&&t.removeChild(e)}function g(e,t,r){var n,i,a,o={};for(a in t)a=="key"?n=t[a]:a=="ref"?i=t[a]:o[a]=t[a];if(arguments.length>2&&(o.children=arguments.length>3?ji.call(arguments,2):r),typeof e=="function"&&e.defaultProps!=null)for(a in e.defaultProps)o[a]===void 0&&(o[a]=e.defaultProps[a]);return Yi(e,o,n,i,null)}function Yi(e,t,r,n,i){var a={type:e,props:t,key:r,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i??++Sf};return i==null&&fe.vnode!=null&&fe.vnode(a),a}function ei(){return{current:null}}function S(e){return e.children}function pt(e,t){this.props=e,this.context=t}function ti(e,t){if(t==null)return e.__?ti(e.__,e.__.__k.indexOf(e)+1):null;for(var r;t0?Yi(p.type,p.props,p.key,null,p.__v):p)!=null){if(p.__=r,p.__b=r.__b+1,(f=x[c])===null||f&&p.key==f.key&&p.type===f.type)x[c]=void 0;else for(d=0;d2&&(o.children=arguments.length>3?ji.call(arguments,2):r),Yi(e.type,o,n||e.key,i||e.ref,null)}function ni(e,t){var r={__c:t="__cC"+Tf++,__:e,Consumer:function(n,i){return n.children(i)},Provider:function(n){var i,a;return this.getChildContext||(i=[],(a={})[t]=this,this.getChildContext=function(){return a},this.shouldComponentUpdate=function(o){this.props.value!==o.value&&i.some(xl)},this.sub=function(o){i.push(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){i.splice(i.indexOf(o),1),s&&s.call(o)}}),n.children}};return r.Provider.__=r.Consumer.contextType=r}var ji,fe,Sf,YE,qi,_f,Cf,Tf,to,Df,JE,Mr=El(()=>{h();to={},Df=[],JE=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;ji=Df.slice,fe={__e:function(e,t,r,n){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,n||{}),o=i.__d),o)return i.__E=i}catch(s){e=s}throw e}},Sf=0,YE=function(e){return e!=null&&e.constructor===void 0},pt.prototype.setState=function(e,t){var r;r=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=Wn({},this.state),typeof e=="function"&&(e=e(Wn({},r),this.props)),e&&Wn(r,e),e!=null&&this.__v&&(t&&this.__h.push(t),xl(this))},pt.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),xl(this))},pt.prototype.render=S,qi=[],_f=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,no.__r=0,Tf=0});var h=El(()=>{Mr()});var xt=ft((An,fp)=>{h();"use strict";Object.defineProperty(An,"__esModule",{value:!0});function _n(e){return typeof e=="object"&&!("toString"in e)?Object.prototype.toString.call(e).slice(8,-1):e}var _x=typeof process=="object"&&!0;function pn(e,t){if(!e)throw _x?new Error("Invariant failed"):new Error(t())}An.invariant=pn;var Il=Object.prototype.hasOwnProperty,Cx=Array.prototype.splice,Tx=Object.prototype.toString;function Ar(e){return Tx.call(e).slice(8,-1)}var fo=Object.assign||function(e,t){return Al(t).forEach(function(r){Il.call(t,r)&&(e[r]=t[r])}),e},Al=typeof Object.getOwnPropertySymbols=="function"?function(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.keys(e)};function ur(e){return Array.isArray(e)?fo(e.constructor(e.length),e):Ar(e)==="Map"?new Map(e):Ar(e)==="Set"?new Set(e):e&&typeof e=="object"?fo(Object.create(Object.getPrototypeOf(e)),e):e}var lp=function(){function e(){this.commands=fo({},Dx),this.update=this.update.bind(this),this.update.extend=this.extend=this.extend.bind(this),this.update.isEquals=function(t,r){return t===r},this.update.newContext=function(){return new e().update}}return Object.defineProperty(e.prototype,"isEquals",{get:function(){return this.update.isEquals},set:function(t){this.update.isEquals=t},enumerable:!0,configurable:!0}),e.prototype.extend=function(t,r){this.commands[t]=r},e.prototype.update=function(t,r){var n=this,i=typeof r=="function"?{$apply:r}:r;Array.isArray(t)&&Array.isArray(i)||pn(!Array.isArray(i),function(){return"update(): You provided an invalid spec to update(). The spec may not contain an array except as the value of $set, $push, $unshift, $splice or any custom command allowing an array value."}),pn(typeof i=="object"&&i!==null,function(){return"update(): You provided an invalid spec to update(). The spec and every included key path must be plain objects containing one of the "+("following commands: "+Object.keys(n.commands).join(", ")+".")});var a=t;return Al(i).forEach(function(o){if(Il.call(n.commands,o)){var s=t===a;a=n.commands[o](i[o],a,i,t),s&&n.isEquals(a,t)&&(a=t)}else{var u=Ar(t)==="Map"?n.update(t.get(o),i[o]):n.update(t[o],i[o]),l=Ar(a)==="Map"?a.get(o):a[o];(!n.isEquals(u,l)||typeof u=="undefined"&&!Il.call(t,o))&&(a===t&&(a=ur(t)),Ar(a)==="Map"?a.set(o,u):a[o]=u)}}),a},e}();An.Context=lp;var Dx={$push:function(e,t,r){return cp(t,r,"$push"),e.length?t.concat(e):t},$unshift:function(e,t,r){return cp(t,r,"$unshift"),e.length?e.concat(t):t},$splice:function(e,t,r,n){return Mx(t,r),e.forEach(function(i){up(i),t===n&&i.length&&(t=ur(n)),Cx.apply(t,i)}),t},$set:function(e,t,r){return Ax(r),e},$toggle:function(e,t){Zi(e,"$toggle");var r=e.length?ur(t):t;return e.forEach(function(n){r[n]=!t[n]}),r},$unset:function(e,t,r,n){return Zi(e,"$unset"),e.forEach(function(i){Object.hasOwnProperty.call(t,i)&&(t===n&&(t=ur(n)),delete t[i])}),t},$add:function(e,t,r,n){return dp(t,"$add"),Zi(e,"$add"),Ar(t)==="Map"?e.forEach(function(i){var a=i[0],o=i[1];t===n&&t.get(a)!==o&&(t=ur(n)),t.set(a,o)}):e.forEach(function(i){t===n&&!t.has(i)&&(t=ur(n)),t.add(i)}),t},$remove:function(e,t,r,n){return dp(t,"$remove"),Zi(e,"$remove"),e.forEach(function(i){t===n&&t.has(i)&&(t=ur(n)),t.delete(i)}),t},$merge:function(e,t,r,n){return Lx(t,e),Al(e).forEach(function(i){e[i]!==t[i]&&(t===n&&(t=ur(n)),t[i]=e[i])}),t},$apply:function(e,t){return Ix(e),e(t)}},Ll=new lp;An.isEquals=Ll.update.isEquals;An.extend=Ll.extend;An.default=Ll.update;An.default.default=fp.exports=fo(An.default,An);function cp(e,t,r){pn(Array.isArray(e),function(){return"update(): expected target of "+_n(r)+" to be an array; got "+_n(e)+"."}),Zi(t[r],r)}function Zi(e,t){pn(Array.isArray(e),function(){return"update(): expected spec of "+_n(t)+" to be an array; got "+_n(e)+". Did you forget to wrap your parameter in an array?"})}function Mx(e,t){pn(Array.isArray(e),function(){return"Expected $splice target to be an array; got "+_n(e)}),up(t.$splice)}function up(e){pn(Array.isArray(e),function(){return"update(): expected spec of $splice to be an array of arrays; got "+_n(e)+". Did you forget to wrap your parameters in an array?"})}function Ix(e){pn(typeof e=="function",function(){return"update(): expected spec of $apply to be a function; got "+_n(e)+"."})}function Ax(e){pn(Object.keys(e).length===1,function(){return"Cannot have more than one key in an object with $set"})}function Lx(e,t){pn(t&&typeof t=="object",function(){return"update(): $merge expects a spec of type 'object'; got "+_n(t)}),pn(e&&typeof e=="object",function(){return"update(): $merge expects a target of type 'object'; got "+_n(e)})}function dp(e,t){var r=Ar(e);pn(r==="Map"||r==="Set",function(){return"update(): "+_n(t)+" expects a target of type Set or Map; got "+_n(r)})}});var gp=ft((jD,mp)=>{h();"use strict";var Px=function(t){return Fx(t)&&!Nx(t)};function Fx(e){return!!e&&typeof e=="object"}function Nx(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||Hx(e)}var Ox=typeof Symbol=="function"&&Symbol.for,Rx=Ox?Symbol.for("react.element"):60103;function Hx(e){return e.$$typeof===Rx}function Bx(e){return Array.isArray(e)?[]:{}}function ea(e,t){return t.clone!==!1&&t.isMergeableObject(e)?oi(Bx(e),e,t):e}function Kx(e,t,r){return e.concat(t).map(function(n){return ea(n,r)})}function $x(e,t){if(!t.customMerge)return oi;var r=t.customMerge(e);return typeof r=="function"?r:oi}function Ux(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return e.propertyIsEnumerable(t)}):[]}function pp(e){return Object.keys(e).concat(Ux(e))}function hp(e,t){try{return t in e}catch(r){return!1}}function Wx(e,t){return hp(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function Vx(e,t,r){var n={};return r.isMergeableObject(e)&&pp(e).forEach(function(i){n[i]=ea(e[i],r)}),pp(t).forEach(function(i){Wx(e,i)||(hp(e,i)&&r.isMergeableObject(t[i])?n[i]=$x(i,r)(e[i],t[i],r):n[i]=ea(t[i],r))}),n}function oi(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||Kx,r.isMergeableObject=r.isMergeableObject||Px,r.cloneUnlessOtherwiseSpecified=ea;var n=Array.isArray(t),i=Array.isArray(e),a=n===i;return a?n?r.arrayMerge(e,t,r):Vx(e,t,r):ea(t,r)}oi.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(n,i){return oi(n,i,r)},{})};var zx=oi;mp.exports=zx});var Eo=ft(rt=>{h();"use strict";var Wl=32;rt.INT_BITS=Wl;rt.INT_MAX=2147483647;rt.INT_MIN=-1<0)-(e<0)};rt.abs=function(e){var t=e>>Wl-1;return(e^t)-t};rt.min=function(e,t){return t^(e^t)&-(e65535)<<4,e>>>=t,r=(e>255)<<3,e>>>=r,t|=r,r=(e>15)<<2,e>>>=r,t|=r,r=(e>3)<<1,e>>>=r,t|=r,t|e>>1};rt.log10=function(e){return e>=1e9?9:e>=1e8?8:e>=1e7?7:e>=1e6?6:e>=1e5?5:e>=1e4?4:e>=1e3?3:e>=100?2:e>=10?1:0};rt.popCount=function(e){return e=e-(e>>>1&1431655765),e=(e&858993459)+(e>>>2&858993459),(e+(e>>>4)&252645135)*16843009>>>24};function Lp(e){var t=32;return e&=-e,e&&t--,e&65535&&(t-=16),e&16711935&&(t-=8),e&252645135&&(t-=4),e&858993459&&(t-=2),e&1431655765&&(t-=1),t}rt.countTrailingZeros=Lp;rt.nextPow2=function(e){return e+=e===0,--e,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e+1};rt.prevPow2=function(e){return e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e-(e>>>1)};rt.parity=function(e){return e^=e>>>16,e^=e>>>8,e^=e>>>4,e&=15,27030>>>e&1};var sa=new Array(256);(function(e){for(var t=0;t<256;++t){var r=t,n=t,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=r&1,--i;e[t]=n<>>8&255]<<16|sa[e>>>16&255]<<8|sa[e>>>24&255]};rt.interleave2=function(e,t){return e&=65535,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t&=65535,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1};rt.deinterleave2=function(e,t){return e=e>>>t&1431655765,e=(e|e>>>1)&858993459,e=(e|e>>>2)&252645135,e=(e|e>>>4)&16711935,e=(e|e>>>16)&65535,e<<16>>16};rt.interleave3=function(e,t,r){return e&=1023,e=(e|e<<16)&4278190335,e=(e|e<<8)&251719695,e=(e|e<<4)&3272356035,e=(e|e<<2)&1227133513,t&=1023,t=(t|t<<16)&4278190335,t=(t|t<<8)&251719695,t=(t|t<<4)&3272356035,t=(t|t<<2)&1227133513,e|=t<<1,r&=1023,r=(r|r<<16)&4278190335,r=(r|r<<8)&251719695,r=(r|r<<4)&3272356035,r=(r|r<<2)&1227133513,e|r<<2};rt.deinterleave3=function(e,t){return e=e>>>t&1227133513,e=(e|e>>>2)&3272356035,e=(e|e>>>4)&251719695,e=(e|e>>>8)&4278190335,e=(e|e>>>16)&1023,e<<22>>22};rt.nextCombination=function(e){var t=e|e-1;return t+1|(~t&-~t)-1>>>Lp(e)+1}});var Np=ft((_M,Fp)=>{h();"use strict";function Pp(e,t,r){var n=e[r]|0;if(n<=0)return[];var i=new Array(n),a;if(r===e.length-1)for(a=0;a0)return nk(e|0,t);break;case"object":if(typeof e.length=="number")return Pp(e,t,0);break}return[]}Fp.exports=rk});var th={};zi(th,{Buffer:()=>ne,INSPECT_MAX_BYTES:()=>Kp,SlowBuffer:()=>hk,isBuffer:()=>Zp,kMaxLength:()=>ck});function Op(){Vl=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,r=e.length;t0)throw new Error("Invalid string. Length must be a multiple of 4");a=e[s-2]==="="?2:e[s-1]==="="?1:0,o=new ik(s*3/4-a),n=a>0?s-4:s;var u=0;for(t=0,r=0;t>16&255,o[u++]=i>>8&255,o[u++]=i&255;return a===2?(i=hn[e.charCodeAt(t)]<<2|hn[e.charCodeAt(t+1)]>>4,o[u++]=i&255):a===1&&(i=hn[e.charCodeAt(t)]<<10|hn[e.charCodeAt(t+1)]<<4|hn[e.charCodeAt(t+2)]>>2,o[u++]=i>>8&255,o[u++]=i&255),o}function ok(e){return Fn[e>>18&63]+Fn[e>>12&63]+Fn[e>>6&63]+Fn[e&63]}function sk(e,t,r){for(var n,i=[],a=t;au?u:s+o));return n===1?(t=e[r-1],i+=Fn[t>>2],i+=Fn[t<<4&63],i+="=="):n===2&&(t=(e[r-2]<<8)+e[r-1],i+=Fn[t>>10],i+=Fn[t>>4&63],i+=Fn[t<<2&63],i+="="),a.push(i),a.join("")}function xo(e,t,r,n,i){var a,o,s=i*8-n-1,u=(1<>1,c=-7,d=r?i-1:0,f=r?-1:1,p=e[t+d];for(d+=f,a=p&(1<<-c)-1,p>>=-c,c+=s;c>0;a=a*256+e[t+d],d+=f,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=o*256+e[t+d],d+=f,c-=8);if(a===0)a=1-l;else{if(a===u)return o?NaN:(p?-1:1)*(1/0);o=o+Math.pow(2,n),a=a-l}return(p?-1:1)*o*Math.pow(2,a-n)}function Hp(e,t,r,n,i,a){var o,s,u,l=a*8-i-1,c=(1<>1,f=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,m=n?1:-1,y=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),o+d>=1?t+=f/u:t+=f*Math.pow(2,1-d),t*u>=2&&(o++,u/=2),o+d>=c?(s=0,o=c):o+d>=1?(s=(t*u-1)*Math.pow(2,i),o=o+d):(s=t*Math.pow(2,d-1)*Math.pow(2,i),o=0));i>=8;e[r+p]=s&255,p+=m,s/=256,i-=8);for(o=o<0;e[r+p]=o&255,p+=m,o/=256,l-=8);e[r+p-m]|=y*128}function ko(){return ne.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function zn(e,t){if(ko()=ko())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+ko().toString(16)+" bytes");return e|0}function hk(e){return+e!=e&&(e=0),ne.alloc(+e)}function Nn(e){return!!(e!=null&&e._isBuffer)}function Wp(e,t){if(Nn(e))return e.length;if(typeof ArrayBuffer!="undefined"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;typeof e!="string"&&(e=""+e);var r=e.length;if(r===0)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return Co(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return Xp(e).length;default:if(n)return Co(e).length;t=(""+t).toLowerCase(),n=!0}}function mk(e,t,r){var n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return _k(this,t,r);case"utf8":case"utf-8":return qp(this,t,r);case"ascii":return kk(this,t,r);case"latin1":case"binary":return Sk(this,t,r);case"base64":return Ek(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Ck(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function Pr(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function Vp(e,t,r,n,i){if(e.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=ne.from(t,n)),Nn(t))return t.length===0?-1:zp(e,t,r,n,i);if(typeof t=="number")return t=t&255,ne.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):zp(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function zp(e,t,r,n,i){var a=1,o=e.length,s=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;a=2,o/=2,s/=2,r/=2}function u(p,m){return a===1?p[m]:p.readUInt16BE(m*a)}var l;if(i){var c=-1;for(l=r;lo&&(r=o-s),l=r;l>=0;l--){for(var d=!0,f=0;fi&&(n=i)):n=i;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var o=0;o239?4:a>223?3:a>191?2:1;if(i+s<=r){var u,l,c,d;switch(s){case 1:a<128&&(o=a);break;case 2:u=e[i+1],(u&192)==128&&(d=(a&31)<<6|u&63,d>127&&(o=d));break;case 3:u=e[i+1],l=e[i+2],(u&192)==128&&(l&192)==128&&(d=(a&15)<<12|(u&63)<<6|l&63,d>2047&&(d<55296||d>57343)&&(o=d));break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],(u&192)==128&&(l&192)==128&&(c&192)==128&&(d=(a&15)<<18|(u&63)<<12|(l&63)<<6|c&63,d>65535&&d<1114112&&(o=d))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=s}return xk(n)}function xk(e){var t=e.length;if(t<=Yp)return String.fromCharCode.apply(String,e);for(var r="",n=0;nn)&&(r=n);for(var i="",a=t;ar)throw new RangeError("Trying to access beyond buffer length")}function Zt(e,t,r,n,i,a){if(!Nn(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function So(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i>>(n?i:1-i)*8}function _o(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i>>(n?i:3-i)*8&255}function Jp(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function Gp(e,t,r,n,i){return i||Jp(e,t,r,4),Hp(e,t,r,n,23,4),r+4}function Qp(e,t,r,n,i){return i||Jp(e,t,r,8),Hp(e,t,r,n,52,8),r+8}function Dk(e){if(e=Mk(e).replace(Tk,""),e.length<2)return"";for(;e.length%4!=0;)e=e+"=";return e}function Mk(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function Ik(e){return e<16?"0"+e.toString(16):e.toString(16)}function Co(e,t){t=t||1/0;for(var r,n=e.length,i=null,a=[],o=0;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}else if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function Ak(e){for(var t=[],r=0;r>8,i=r%256,a.push(i),a.push(n);return a}function Xp(e){return ak(Dk(e))}function To(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function Pk(e){return e!==e}function Zp(e){return e!=null&&(!!e._isBuffer||eh(e)||Fk(e))}function eh(e){return!!e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}function Fk(e){return typeof e.readFloatLE=="function"&&typeof e.slice=="function"&&eh(e.slice(0,0))}var Fn,hn,ik,Vl,lk,Bp,Kp,ck,Yp,Tk,nh=El(()=>{h();Fn=[],hn=[],ik=typeof Uint8Array!="undefined"?Uint8Array:Array,Vl=!1;lk={}.toString,Bp=Array.isArray||function(e){return lk.call(e)=="[object Array]"};Kp=50;ne.TYPED_ARRAY_SUPPORT=window.TYPED_ARRAY_SUPPORT!==void 0?window.TYPED_ARRAY_SUPPORT:!0;ck=ko();ne.poolSize=8192;ne._augment=function(e){return e.__proto__=ne.prototype,e};ne.from=function(e,t,r){return $p(null,e,t,r)};ne.TYPED_ARRAY_SUPPORT&&(ne.prototype.__proto__=Uint8Array.prototype,ne.__proto__=Uint8Array);ne.alloc=function(e,t,r){return uk(null,e,t,r)};ne.allocUnsafe=function(e){return zl(null,e)};ne.allocUnsafeSlow=function(e){return zl(null,e)};ne.isBuffer=Zp;ne.compare=function(t,r){if(!Nn(t)||!Nn(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var n=t.length,i=r.length,a=0,o=Math.min(n,i);a0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""};ne.prototype.compare=function(t,r,n,i,a){if(!Nn(t))throw new TypeError("Argument must be a Buffer");if(r===void 0&&(r=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>t.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===t)return 0;for(var o=a-i,s=n-r,u=Math.min(o,s),l=this.slice(i,a),c=t.slice(r,n),d=0;da)&&(n=a),t.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return gk(this,t,r,n);case"utf8":case"utf-8":return vk(this,t,r,n);case"ascii":return jp(this,t,r,n);case"latin1":case"binary":return yk(this,t,r,n);case"base64":return bk(this,t,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return wk(this,t,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}};ne.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};Yp=4096;ne.prototype.slice=function(t,r){var n=this.length;t=~~t,r=r===void 0?n:~~r,t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),r0&&(a*=256);)i+=this[t+--r]*a;return i};ne.prototype.readUInt8=function(t,r){return r||St(t,1,this.length),this[t]};ne.prototype.readUInt16LE=function(t,r){return r||St(t,2,this.length),this[t]|this[t+1]<<8};ne.prototype.readUInt16BE=function(t,r){return r||St(t,2,this.length),this[t]<<8|this[t+1]};ne.prototype.readUInt32LE=function(t,r){return r||St(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};ne.prototype.readUInt32BE=function(t,r){return r||St(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};ne.prototype.readIntLE=function(t,r,n){t=t|0,r=r|0,n||St(t,r,this.length);for(var i=this[t],a=1,o=0;++o=a&&(i-=Math.pow(2,8*r)),i};ne.prototype.readIntBE=function(t,r,n){t=t|0,r=r|0,n||St(t,r,this.length);for(var i=r,a=1,o=this[t+--i];i>0&&(a*=256);)o+=this[t+--i]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o};ne.prototype.readInt8=function(t,r){return r||St(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};ne.prototype.readInt16LE=function(t,r){r||St(t,2,this.length);var n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n};ne.prototype.readInt16BE=function(t,r){r||St(t,2,this.length);var n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n};ne.prototype.readInt32LE=function(t,r){return r||St(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};ne.prototype.readInt32BE=function(t,r){return r||St(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};ne.prototype.readFloatLE=function(t,r){return r||St(t,4,this.length),xo(this,t,!0,23,4)};ne.prototype.readFloatBE=function(t,r){return r||St(t,4,this.length),xo(this,t,!1,23,4)};ne.prototype.readDoubleLE=function(t,r){return r||St(t,8,this.length),xo(this,t,!0,52,8)};ne.prototype.readDoubleBE=function(t,r){return r||St(t,8,this.length),xo(this,t,!1,52,8)};ne.prototype.writeUIntLE=function(t,r,n,i){if(t=+t,r=r|0,n=n|0,!i){var a=Math.pow(2,8*n)-1;Zt(this,t,r,n,a,0)}var o=1,s=0;for(this[r]=t&255;++s=0&&(s*=256);)this[r+o]=t/s&255;return r+n};ne.prototype.writeUInt8=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,1,255,0),ne.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=t&255,r+1};ne.prototype.writeUInt16LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,65535,0),ne.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8):So(this,t,r,!0),r+2};ne.prototype.writeUInt16BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,65535,0),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=t&255):So(this,t,r,!1),r+2};ne.prototype.writeUInt32LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,4294967295,0),ne.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=t&255):_o(this,t,r,!0),r+4};ne.prototype.writeUInt32BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,4294967295,0),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255):_o(this,t,r,!1),r+4};ne.prototype.writeIntLE=function(t,r,n,i){if(t=+t,r=r|0,!i){var a=Math.pow(2,8*n-1);Zt(this,t,r,n,a-1,-a)}var o=0,s=1,u=0;for(this[r]=t&255;++o>0)-u&255;return r+n};ne.prototype.writeIntBE=function(t,r,n,i){if(t=+t,r=r|0,!i){var a=Math.pow(2,8*n-1);Zt(this,t,r,n,a-1,-a)}var o=n-1,s=1,u=0;for(this[r+o]=t&255;--o>=0&&(s*=256);)t<0&&u===0&&this[r+o+1]!==0&&(u=1),this[r+o]=(t/s>>0)-u&255;return r+n};ne.prototype.writeInt8=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,1,127,-128),ne.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=t&255,r+1};ne.prototype.writeInt16LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,32767,-32768),ne.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8):So(this,t,r,!0),r+2};ne.prototype.writeInt16BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,32767,-32768),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=t&255):So(this,t,r,!1),r+2};ne.prototype.writeInt32LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,2147483647,-2147483648),ne.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):_o(this,t,r,!0),r+4};ne.prototype.writeInt32BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255):_o(this,t,r,!1),r+4};ne.prototype.writeFloatLE=function(t,r,n){return Gp(this,t,r,!0,n)};ne.prototype.writeFloatBE=function(t,r,n){return Gp(this,t,r,!1,n)};ne.prototype.writeDoubleLE=function(t,r,n){return Qp(this,t,r,!0,n)};ne.prototype.writeDoubleBE=function(t,r,n){return Qp(this,t,r,!1,n)};ne.prototype.copy=function(t,r,n,i){if(n||(n=0),!i&&i!==0&&(i=this.length),r>=t.length&&(r=t.length),r||(r=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-r=0;--o)t[o+r]=this[o+n];else if(a<1e3||!ne.TYPED_ARRAY_SUPPORT)for(o=0;o>>0,n=n===void 0?this.length:n>>>0,t||(t=0);var o;if(typeof t=="number")for(o=r;o{h();var Fr=(nh(),th);if(Fr&&Fr.default){Do.exports=Fr.default;for(let e in Fr)Do.exports[e]=Fr[e]}else Fr&&(Do.exports=Fr)});var Ao=ft(He=>{h();"use strict";var mr=Eo(),Mt=Np(),ih=rh().Buffer;window.__TYPEDARRAY_POOL||(window.__TYPEDARRAY_POOL={UINT8:Mt([32,0]),UINT16:Mt([32,0]),UINT32:Mt([32,0]),BIGUINT64:Mt([32,0]),INT8:Mt([32,0]),INT16:Mt([32,0]),INT32:Mt([32,0]),BIGINT64:Mt([32,0]),FLOAT:Mt([32,0]),DOUBLE:Mt([32,0]),DATA:Mt([32,0]),UINT8C:Mt([32,0]),BUFFER:Mt([32,0])});var Nk=typeof Uint8ClampedArray!="undefined",Ok=typeof BigUint64Array!="undefined",Rk=typeof BigInt64Array!="undefined",st=window.__TYPEDARRAY_POOL;st.UINT8C||(st.UINT8C=Mt([32,0]));st.BIGUINT64||(st.BIGUINT64=Mt([32,0]));st.BIGINT64||(st.BIGINT64=Mt([32,0]));st.BUFFER||(st.BUFFER=Mt([32,0]));var Mo=st.DATA,Io=st.BUFFER;He.free=function(t){if(ih.isBuffer(t))Io[mr.log2(t.length)].push(t);else{if(Object.prototype.toString.call(t)!=="[object ArrayBuffer]"&&(t=t.buffer),!t)return;var r=t.length||t.byteLength,n=mr.log2(r)|0;Mo[n].push(t)}};function ah(e){if(!!e){var t=e.length||e.byteLength,r=mr.log2(t);Mo[r].push(e)}}function Hk(e){ah(e.buffer)}He.freeUint8=He.freeUint16=He.freeUint32=He.freeBigUint64=He.freeInt8=He.freeInt16=He.freeInt32=He.freeBigInt64=He.freeFloat32=He.freeFloat=He.freeFloat64=He.freeDouble=He.freeUint8Clamped=He.freeDataView=Hk;He.freeArrayBuffer=ah;He.freeBuffer=function(t){Io[mr.log2(t.length)].push(t)};He.malloc=function(t,r){if(r===void 0||r==="arraybuffer")return en(t);switch(r){case"uint8":return Yl(t);case"uint16":return oh(t);case"uint32":return sh(t);case"int8":return lh(t);case"int16":return ch(t);case"int32":return uh(t);case"float":case"float32":return dh(t);case"double":case"float64":return fh(t);case"uint8_clamped":return ph(t);case"bigint64":return mh(t);case"biguint64":return hh(t);case"buffer":return vh(t);case"data":case"dataview":return gh(t);default:return null}return null};function en(e){var e=mr.nextPow2(e),t=mr.log2(e),r=Mo[t];return r.length>0?r.pop():new ArrayBuffer(e)}He.mallocArrayBuffer=en;function Yl(e){return new Uint8Array(en(e),0,e)}He.mallocUint8=Yl;function oh(e){return new Uint16Array(en(2*e),0,e)}He.mallocUint16=oh;function sh(e){return new Uint32Array(en(4*e),0,e)}He.mallocUint32=sh;function lh(e){return new Int8Array(en(e),0,e)}He.mallocInt8=lh;function ch(e){return new Int16Array(en(2*e),0,e)}He.mallocInt16=ch;function uh(e){return new Int32Array(en(4*e),0,e)}He.mallocInt32=uh;function dh(e){return new Float32Array(en(4*e),0,e)}He.mallocFloat32=He.mallocFloat=dh;function fh(e){return new Float64Array(en(8*e),0,e)}He.mallocFloat64=He.mallocDouble=fh;function ph(e){return Nk?new Uint8ClampedArray(en(e),0,e):Yl(e)}He.mallocUint8Clamped=ph;function hh(e){return Ok?new BigUint64Array(en(8*e),0,e):null}He.mallocBigUint64=hh;function mh(e){return Rk?new BigInt64Array(en(8*e),0,e):null}He.mallocBigInt64=mh;function gh(e){return new DataView(en(e),0,e)}He.mallocDataView=gh;function vh(e){e=mr.nextPow2(e);var t=mr.log2(e),r=Io[t];return r.length>0?r.pop():new ih(e)}He.mallocBuffer=vh;He.clearCache=function(){for(var t=0;t<32;++t)st.UINT8[t].length=0,st.UINT16[t].length=0,st.UINT32[t].length=0,st.INT8[t].length=0,st.INT16[t].length=0,st.INT32[t].length=0,st.FLOAT[t].length=0,st.DOUBLE[t].length=0,st.BIGUINT64[t].length=0,st.BIGINT64[t].length=0,st.UINT8C[t].length=0,Mo[t].length=0,Io[t].length=0}});var xh=ft((DM,Eh)=>{h();"use strict";Eh.exports=Bk;var Lo=32;function Bk(e,t){t<=4*Lo?Po(0,t-1,e):No(0,t-1,e)}function Po(e,t,r){for(var n=2*(e+1),i=e+1;i<=t;++i){for(var a=r[n++],o=r[n++],s=i,u=n-2;s-- >e;){var l=r[u-2],c=r[u-1];if(lr[t+1]:!0}function Fo(e,t,r,n){e*=2;var i=n[e];return i>1,s=o-n,u=o+n,l=i,c=s,d=o,f=u,p=a,m=e+1,y=t-1,b=0;jn(l,c,r)&&(b=l,l=c,c=b),jn(f,p,r)&&(b=f,f=p,p=b),jn(l,d,r)&&(b=l,l=d,d=b),jn(c,d,r)&&(b=c,c=d,d=b),jn(l,f,r)&&(b=l,l=f,f=b),jn(d,f,r)&&(b=d,d=f,f=b),jn(c,p,r)&&(b=c,c=p,p=b),jn(c,d,r)&&(b=c,c=d,d=b),jn(f,p,r)&&(b=f,f=p,p=b);for(var x=r[2*c],D=r[2*c+1],C=r[2*f],A=r[2*f+1],N=2*l,T=2*d,O=2*p,W=2*i,z=2*o,ee=2*a,Z=0;Z<2;++Z){var le=r[N+Z],X=r[T+Z],G=r[O+Z];r[W+Z]=le,r[z+Z]=X,r[ee+Z]=G}bh(s,e,r),bh(u,t,r);for(var re=m;re<=y;++re)if(Fo(re,x,D,r))re!==m&&yh(re,m,r),++m;else if(!Fo(re,C,A,r))for(;;)if(Fo(y,C,A,r)){Fo(y,x,D,r)?(Kk(re,m,y,r),++m,--y):(yh(re,y,r),--y);break}else{if(--y{h();"use strict";kh.exports={init:Uk,sweepBipartite:Wk,sweepComplete:Vk,scanBipartite:zk,scanComplete:jk};var lt=Ao(),$k=Eo(),Oo=xh(),sn=1<<28,Nr=1024,It=lt.mallocInt32(Nr),qn=lt.mallocInt32(Nr),Yn=lt.mallocInt32(Nr),Or=lt.mallocInt32(Nr),ui=lt.mallocInt32(Nr),la=lt.mallocInt32(Nr),Te=lt.mallocDouble(Nr*8);function Uk(e){var t=$k.nextPow2(e);It.length>>1;Oo(Te,D);for(var C=0,A=0,m=0;m=sn)N=N-sn|0,di(Yn,Or,A--,N);else if(N>=0)di(It,qn,C--,N);else if(N<=-sn){N=-N-sn|0;for(var T=0;T>>1;Oo(Te,D);for(var C=0,A=0,N=0,m=0;m>1==Te[2*m+3]>>1&&(O=2,m+=1),T<0){for(var W=-(T>>1)-1,z=0;z>1)-1;O===0?di(It,qn,C--,W):O===1?di(Yn,Or,A--,W):O===2&&di(ui,la,N--,W)}}}function zk(e,t,r,n,i,a,o,s,u,l,c,d){var f=0,p=2*e,m=t,y=t+e,b=1,x=1;n?x=sn:b=sn;for(var D=i;D>>1;Oo(Te,T);for(var O=0,D=0;D=sn?(z=!n,C-=sn):(z=!!n,C-=1),z)fi(It,qn,O++,C);else{var ee=d[C],Z=p*C,le=c[Z+t+1],X=c[Z+t+1+e];e:for(var G=0;G>>1;Oo(Te,C);for(var A=0,y=0;y=sn)It[A++]=b-sn;else{b-=1;var T=c[b],O=f*b,W=l[O+t+1],z=l[O+t+1+e];e:for(var ee=0;ee=0;--ee)if(It[ee]===b){for(var G=ee+1;G{h();"use strict";var Rr="d",pi="ax",Sh="vv",Gl="fp",ca="es",Ro="rs",Ql="re",ua="rb",_h="ri",hi="rp",Ho="bs",Xl="be",da="bb",Ch="bi",mi="bp",Zl="rv",ec="Q",tc=[Rr,pi,Sh,Ro,Ql,ua,_h,Ho,Xl,da,Ch];function qk(e,t,r){var n="bruteForce"+(e?"Red":"Blue")+(t?"Flip":"")+(r?"Full":""),i=["function ",n,"(",tc.join(),"){","var ",ca,"=2*",Rr,";"],a="for(var i="+Ro+","+hi+"="+ca+"*"+Ro+";i<"+Ql+";++i,"+hi+"+="+ca+"){var x0="+ua+"["+pi+"+"+hi+"],x1="+ua+"["+pi+"+"+hi+"+"+Rr+"],xi="+_h+"[i];",o="for(var j="+Ho+","+mi+"="+ca+"*"+Ho+";j<"+Xl+";++j,"+mi+"+="+ca+"){var y0="+da+"["+pi+"+"+mi+"],"+(r?"y1="+da+"["+pi+"+"+mi+"+"+Rr+"],":"")+"yi="+Ch+"[j];";return e?i.push(a,ec,":",o):i.push(o,ec,":",a),r?i.push("if(y1"+Xl+"-"+Ho+"){"),e?(a(!0,!1),i.push("}else{"),a(!1,!1)):(i.push("if("+Gl+"){"),a(!0,!0),i.push("}else{"),a(!0,!1),i.push("}}else{if("+Gl+"){"),a(!1,!0),i.push("}else{"),a(!1,!1),i.push("}")),i.push("}}return "+t);var o=r.join("")+i.join(""),s=new Function(o);return s()}nc.partial=Th(!1);nc.full=Th(!0)});var rc=ft((AM,Mh)=>{h();"use strict";Mh.exports=Jk;var Yk="for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var _;if($)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t}var u=f[p];f[p]=f[m],f[m++]=u}}return m";function Jk(e,t){var r="abcdef".split("").concat(t),n=[];return e.indexOf("lo")>=0&&n.push("lo=e[k+n]"),e.indexOf("hi")>=0&&n.push("hi=e[k+o]"),r.push(Yk.replace("_",n.join()).replace("$",e)),Function.apply(void 0,r)}});var Lh=ft((LM,Ah)=>{h();"use strict";Ah.exports=Zk;var Gk=rc(),Ih=Gk("lor&&i[d+t]>l;--c,d-=o){for(var f=d,p=d+o,m=0;m>>1,l=2*e,c=u,d=i[l*u+t];o=b?(c=y,d=b):m>=D?(c=p,d=m):(c=x,d=D):b>=D?(c=y,d=b):D>=m?(c=p,d=m):(c=x,d=D);for(var C=l*(s-1),A=l*c,N=0;N{h();"use strict";Hh.exports=f0;var gi=Ao(),ic=Eo(),Ph=Dh(),e0=Ph.partial,t0=Ph.full,gr=Jl(),n0=Lh(),vi=rc(),Fh=128,r0=1<<22,i0=1<<22,a0=vi("!(lo>=p0)&&!(p1>=hi)",["p0","p1"]),Nh=vi("lo===p0",["p0"]),o0=vi("lo0;){l-=1;var f=l*ac,p=jt[f],m=jt[f+1],y=jt[f+2],b=jt[f+3],x=jt[f+4],D=jt[f+5],C=l*oc,A=Hr[C],N=Hr[C+1],T=D&1,O=!!(D&16),W=i,z=a,ee=s,Z=u;if(T&&(W=s,z=u,ee=i,Z=a),!(D&2&&(y=o0(e,p,m,y,W,z,N),m>=y))&&!(D&4&&(m=s0(e,p,m,y,W,z,A),m>=y))){var le=y-m,X=x-b;if(O){if(e*le*(le+X){h();"use strict";Uh.exports=v0;var vr=Ao(),Bo=Jl(),p0=Bh();function h0(e,t){for(var r=0;r>>1;if(!(o<=0)){var s,u=vr.mallocDouble(2*o*i),l=vr.mallocInt32(i);if(i=Kh(e,o,u,l),i>0){if(o===1&&n)Bo.init(i),s=Bo.sweepComplete(o,r,0,i,u,l,0,i,u,l);else{var c=vr.mallocDouble(2*o*a),d=vr.mallocInt32(a);a=Kh(t,o,c,d),a>0&&(Bo.init(i+a),o===1?s=Bo.sweepBipartite(o,r,0,i,u,l,0,a,c,d):s=p0(o,r,n,i,u,l,a,c,d),vr.free(c),vr.free(d))}vr.free(u),vr.free(l)}return s}}}var fa;function $h(e,t){fa.push([e,t])}function m0(e){return fa=[],Ko(e,e,$h,!0),fa}function g0(e,t){return fa=[],Ko(e,t,$h,!1),fa}function v0(e,t,r){var n;switch(arguments.length){case 1:return m0(e);case 2:return typeof t=="function"?Ko(e,e,t,!0):g0(e,t);case 3:return Ko(e,t,r,!1);default:throw new Error("box-intersect: Invalid arguments")}}});var dm=ft((NM,Wo)=>{h();var Vh,zh,jh,qh,Yh,Jh,Gh,Qh,Xh,$o,sc,Zh,em,tm,yi,nm,rm,im,am,om,sm,lm,cm,um,Uo;(function(e){var t=typeof window=="object"?window:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){e(r(t,r(n)))}):typeof Wo=="object"&&typeof Wo.exports=="object"?e(r(t,r(Wo.exports))):e(r(t));function r(n,i){return n!==t&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(a,o){return n[a]=i?i(a,o):o}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])};Vh=function(n,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");t(n,i);function a(){this.constructor=n}n.prototype=i===null?Object.create(i):(a.prototype=i.prototype,new a)},zh=Object.assign||function(n){for(var i,a=1,o=arguments.length;a=0;c--)(l=n[c])&&(u=(s<3?l(u):s>3?l(i,a,u):l(i,a))||u);return s>3&&u&&Object.defineProperty(i,a,u),u},Yh=function(n,i){return function(a,o){i(a,o,n)}},Jh=function(n,i){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,i)},Gh=function(n,i,a,o){function s(u){return u instanceof a?u:new a(function(l){l(u)})}return new(a||(a=Promise))(function(u,l){function c(p){try{f(o.next(p))}catch(m){l(m)}}function d(p){try{f(o.throw(p))}catch(m){l(m)}}function f(p){p.done?u(p.value):s(p.value).then(c,d)}f((o=o.apply(n,i||[])).next())})},Qh=function(n,i){var a={label:0,sent:function(){if(u[0]&1)throw u[1];return u[1]},trys:[],ops:[]},o,s,u,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(f){return function(p){return d([f,p])}}function d(f){if(o)throw new TypeError("Generator is already executing.");for(;a;)try{if(o=1,s&&(u=f[0]&2?s.return:f[0]?s.throw||((u=s.return)&&u.call(s),0):s.next)&&!(u=u.call(s,f[1])).done)return u;switch(s=0,u&&(f=[f[0]&2,u.value]),f[0]){case 0:case 1:u=f;break;case 4:return a.label++,{value:f[1],done:!1};case 5:a.label++,s=f[1],f=[0];continue;case 7:f=a.ops.pop(),a.trys.pop();continue;default:if(u=a.trys,!(u=u.length>0&&u[u.length-1])&&(f[0]===6||f[0]===2)){a=0;continue}if(f[0]===3&&(!u||f[1]>u[0]&&f[1]=n.length&&(n=void 0),{value:n&&n[o++],done:!n}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")},sc=function(n,i){var a=typeof Symbol=="function"&&n[Symbol.iterator];if(!a)return n;var o=a.call(n),s,u=[],l;try{for(;(i===void 0||i-- >0)&&!(s=o.next()).done;)u.push(s.value)}catch(c){l={error:c}}finally{try{s&&!s.done&&(a=o.return)&&a.call(o)}finally{if(l)throw l.error}}return u},Zh=function(){for(var n=[],i=0;i1||c(y,b)})})}function c(y,b){try{d(o[y](b))}catch(x){m(u[0][3],x)}}function d(y){y.value instanceof yi?Promise.resolve(y.value.v).then(f,p):m(u[0][2],y)}function f(y){c("next",y)}function p(y){c("throw",y)}function m(y,b){y(b),u.shift(),u.length&&c(u[0][0],u[0][1])}},rm=function(n){var i,a;return i={},o("next"),o("throw",function(s){throw s}),o("return"),i[Symbol.iterator]=function(){return this},i;function o(s,u){i[s]=n[s]?function(l){return(a=!a)?{value:yi(n[s](l)),done:s==="return"}:u?u(l):l}:u}},im=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=n[Symbol.asyncIterator],a;return i?i.call(n):(n=typeof $o=="function"?$o(n):n[Symbol.iterator](),a={},o("next"),o("throw"),o("return"),a[Symbol.asyncIterator]=function(){return this},a);function o(u){a[u]=n[u]&&function(l){return new Promise(function(c,d){l=n[u](l),s(c,d,l.done,l.value)})}}function s(u,l,c,d){Promise.resolve(d).then(function(f){u({value:f,done:c})},l)}},am=function(n,i){return Object.defineProperty?Object.defineProperty(n,"raw",{value:i}):n.raw=i,n};var r=Object.create?function(n,i){Object.defineProperty(n,"default",{enumerable:!0,value:i})}:function(n,i){n.default=i};om=function(n){if(n&&n.__esModule)return n;var i={};if(n!=null)for(var a in n)a!=="default"&&Object.prototype.hasOwnProperty.call(n,a)&&Uo(i,n,a);return r(i,n),i},sm=function(n){return n&&n.__esModule?n:{default:n}},lm=function(n,i,a,o){if(a==="a"&&!o)throw new TypeError("Private accessor was defined without a getter");if(typeof i=="function"?n!==i||!o:!i.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return a==="m"?o:a==="a"?o.call(n):o?o.value:i.get(n)},cm=function(n,i,a,o,s){if(o==="m")throw new TypeError("Private method is not writable");if(o==="a"&&!s)throw new TypeError("Private accessor was defined without a setter");if(typeof i=="function"?n!==i||!s:!i.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return o==="a"?s.call(n,a):s?s.value=a:i.set(n,a),a},um=function(n,i){if(i===null||typeof i!="object"&&typeof i!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof n=="function"?i===n:n.has(i)},e("__extends",Vh),e("__assign",zh),e("__rest",jh),e("__decorate",qh),e("__param",Yh),e("__metadata",Jh),e("__awaiter",Gh),e("__generator",Qh),e("__exportStar",Xh),e("__createBinding",Uo),e("__values",$o),e("__read",sc),e("__spread",Zh),e("__spreadArrays",em),e("__spreadArray",tm),e("__await",yi),e("__asyncGenerator",nm),e("__asyncDelegator",rm),e("__asyncValues",im),e("__makeTemplateObject",am),e("__importStar",om),e("__importDefault",sm),e("__classPrivateFieldGet",lm),e("__classPrivateFieldSet",cm),e("__classPrivateFieldIn",um)})});var fc=ft(Le=>{h();"use strict";Object.defineProperty(Le,"__esModule",{value:!0});var tt=require("obsidian"),uc="YYYY-MM-DD",dc="gggg-[W]ww",ym="YYYY-MM",bm="YYYY-[Q]Q",wm="YYYY";function ha(e){let t=window.app.plugins.getPlugin("periodic-notes");return t&&t.settings?.[e]?.enabled}function ma(){try{let{internalPlugins:e,plugins:t}=window.app;if(ha("daily")){let{format:a,folder:o,template:s}=t.getPlugin("periodic-notes")?.settings?.daily||{};return{format:a||uc,folder:o?.trim()||"",template:s?.trim()||""}}let{folder:r,format:n,template:i}=e.getPluginById("daily-notes")?.instance?.options||{};return{format:n||uc,folder:r?.trim()||"",template:i?.trim()||""}}catch(e){console.info("No custom daily note settings found!",e)}}function ga(){try{let e=window.app.plugins,t=e.getPlugin("calendar")?.options,r=e.getPlugin("periodic-notes")?.settings?.weekly;if(ha("weekly"))return{format:r.format||dc,folder:r.folder?.trim()||"",template:r.template?.trim()||""};let n=t||{};return{format:n.weeklyNoteFormat||dc,folder:n.weeklyNoteFolder?.trim()||"",template:n.weeklyNoteTemplate?.trim()||""}}catch(e){console.info("No custom weekly note settings found!",e)}}function va(){let e=window.app.plugins;try{let t=ha("monthly")&&e.getPlugin("periodic-notes")?.settings?.monthly||{};return{format:t.format||ym,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom monthly note settings found!",t)}}function ya(){let e=window.app.plugins;try{let t=ha("quarterly")&&e.getPlugin("periodic-notes")?.settings?.quarterly||{};return{format:t.format||bm,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom quarterly note settings found!",t)}}function ba(){let e=window.app.plugins;try{let t=ha("yearly")&&e.getPlugin("periodic-notes")?.settings?.yearly||{};return{format:t.format||wm,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom yearly note settings found!",t)}}function Em(...e){let t=[];for(let n=0,i=e.length;n{let D=n(),C=e.clone().set({hour:D.get("hour"),minute:D.get("minute"),second:D.get("second")});return m&&C.add(parseInt(y,10),b),x?C.format(x.substring(1).trim()):C.format(a)}).replace(/{{\s*yesterday\s*}}/gi,e.clone().subtract(1,"day").format(a)).replace(/{{\s*tomorrow\s*}}/gi,e.clone().add(1,"d").format(a)));return t.foldManager.save(d,u),d}catch(d){console.error(`Failed to create file: '${c}'`,d),new tt.Notice("Unable to create new file.")}}function L0(e,t){return t[Tn(e,"day")]??null}function P0(){let{vault:e}=window.app,{folder:t}=ma(),r=e.getAbstractFileByPath(tt.normalizePath(t));if(!r)throw new Sm("Failed to find daily notes folder");let n={};return tt.Vault.recurseChildren(r,i=>{if(i instanceof tt.TFile){let a=xi(i,"day");if(a){let o=Tn(a,"day");n[o]=i}}}),n}var Cm=class extends Error{};function F0(){let{moment:e}=window,t=e.localeData()._week.dow,r=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];for(;t;)r.push(r.shift()),t--;return r}function N0(e){return F0().indexOf(e.toLowerCase())}async function Tm(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=ga(),[a,o]=await Ei(r),s=e.format(n),u=await wa(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,m,y)=>{let b=window.moment(),x=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&x.add(parseInt(p,10),m),y?x.format(y.substring(1).trim()):x.format(n)}).replace(/{{\s*title\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi,(c,d,f)=>{let p=N0(d);return e.weekday(p).format(f.trim())}));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new tt.Notice("Unable to create new file.")}}function O0(e,t){return t[Tn(e,"week")]??null}function R0(){let e={};if(!Lm())return e;let{vault:t}=window.app,{folder:r}=ga(),n=t.getAbstractFileByPath(tt.normalizePath(r));if(!n)throw new Cm("Failed to find weekly notes folder");return tt.Vault.recurseChildren(n,i=>{if(i instanceof tt.TFile){let a=xi(i,"week");if(a){let o=Tn(a,"week");e[o]=i}}}),e}var Dm=class extends Error{};async function Mm(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=va(),[a,o]=await Ei(r),s=e.format(n),u=await wa(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,m,y)=>{let b=window.moment(),x=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&x.add(parseInt(p,10),m),y?x.format(y.substring(1).trim()):x.format(n)}).replace(/{{\s*date\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new tt.Notice("Unable to create new file.")}}function H0(e,t){return t[Tn(e,"month")]??null}function B0(){let e={};if(!Pm())return e;let{vault:t}=window.app,{folder:r}=va(),n=t.getAbstractFileByPath(tt.normalizePath(r));if(!n)throw new Dm("Failed to find monthly notes folder");return tt.Vault.recurseChildren(n,i=>{if(i instanceof tt.TFile){let a=xi(i,"month");if(a){let o=Tn(a,"month");e[o]=i}}}),e}var Im=class extends Error{};async function K0(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=ya(),[a,o]=await Ei(r),s=e.format(n),u=await wa(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,m,y)=>{let b=window.moment(),x=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&x.add(parseInt(p,10),m),y?x.format(y.substring(1).trim()):x.format(n)}).replace(/{{\s*date\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new tt.Notice("Unable to create new file.")}}function $0(e,t){return t[Tn(e,"quarter")]??null}function U0(){let e={};if(!Fm())return e;let{vault:t}=window.app,{folder:r}=ya(),n=t.getAbstractFileByPath(tt.normalizePath(r));if(!n)throw new Im("Failed to find quarterly notes folder");return tt.Vault.recurseChildren(n,i=>{if(i instanceof tt.TFile){let a=xi(i,"quarter");if(a){let o=Tn(a,"quarter");e[o]=i}}}),e}var Am=class extends Error{};async function W0(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=ba(),[a,o]=await Ei(r),s=e.format(n),u=await wa(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,m,y)=>{let b=window.moment(),x=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&x.add(parseInt(p,10),m),y?x.format(y.substring(1).trim()):x.format(n)}).replace(/{{\s*date\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new tt.Notice("Unable to create new file.")}}function V0(e,t){return t[Tn(e,"year")]??null}function z0(){let e={};if(!Nm())return e;let{vault:t}=window.app,{folder:r}=ba(),n=t.getAbstractFileByPath(tt.normalizePath(r));if(!n)throw new Am("Failed to find yearly notes folder");return tt.Vault.recurseChildren(n,i=>{if(i instanceof tt.TFile){let a=xi(i,"year");if(a){let o=Tn(a,"year");e[o]=i}}}),e}function j0(){let{app:e}=window,t=e.internalPlugins.plugins["daily-notes"];if(t&&t.enabled)return!0;let r=e.plugins.getPlugin("periodic-notes");return r&&r.settings?.daily?.enabled}function Lm(){let{app:e}=window;if(e.plugins.getPlugin("calendar"))return!0;let t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.weekly?.enabled}function Pm(){let{app:e}=window,t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.monthly?.enabled}function Fm(){let{app:e}=window,t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.quarterly?.enabled}function Nm(){let{app:e}=window,t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.yearly?.enabled}function q0(e){return{day:ma,week:ga,month:va,quarter:ya,year:ba}[e]()}function Y0(e,t){return{day:_m,month:Mm,week:Tm}[e](t)}Le.DEFAULT_DAILY_NOTE_FORMAT=uc;Le.DEFAULT_MONTHLY_NOTE_FORMAT=ym;Le.DEFAULT_QUARTERLY_NOTE_FORMAT=bm;Le.DEFAULT_WEEKLY_NOTE_FORMAT=dc;Le.DEFAULT_YEARLY_NOTE_FORMAT=wm;Le.appHasDailyNotesPluginLoaded=j0;Le.appHasMonthlyNotesPluginLoaded=Pm;Le.appHasQuarterlyNotesPluginLoaded=Fm;Le.appHasWeeklyNotesPluginLoaded=Lm;Le.appHasYearlyNotesPluginLoaded=Nm;Le.createDailyNote=_m;Le.createMonthlyNote=Mm;Le.createPeriodicNote=Y0;Le.createQuarterlyNote=K0;Le.createWeeklyNote=Tm;Le.createYearlyNote=W0;Le.getAllDailyNotes=P0;Le.getAllMonthlyNotes=B0;Le.getAllQuarterlyNotes=U0;Le.getAllWeeklyNotes=R0;Le.getAllYearlyNotes=z0;Le.getDailyNote=L0;Le.getDailyNoteSettings=ma;Le.getDateFromFile=xi;Le.getDateFromPath=A0;Le.getDateUID=Tn;Le.getMonthlyNote=H0;Le.getMonthlyNoteSettings=va;Le.getPeriodicNoteSettings=q0;Le.getQuarterlyNote=$0;Le.getQuarterlyNoteSettings=ya;Le.getTemplateInfo=Ei;Le.getWeeklyNote=O0;Le.getWeeklyNoteSettings=ga;Le.getYearlyNote=V0;Le.getYearlyNoteSettings=ba});var Ta=ft((iO,Yu)=>{h();"use strict";var r_=Object.prototype.hasOwnProperty,qt="~";function Ca(){}Object.create&&(Ca.prototype=Object.create(null),new Ca().__proto__||(qt=!1));function i_(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function oy(e,t,r,n,i){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new i_(r,n||e,i),o=qt?qt+t:t;return e._events[o]?e._events[o].fn?e._events[o]=[e._events[o],a]:e._events[o].push(a):(e._events[o]=a,e._eventsCount++),e}function Es(e,t){--e._eventsCount==0?e._events=new Ca:delete e._events[t]}function $t(){this._events=new Ca,this._eventsCount=0}$t.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)r_.call(r,n)&&t.push(qt?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};$t.prototype.listeners=function(t){var r=qt?qt+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=new Array(a);i{h();(function(e,t){typeof sd=="object"&&typeof ld!="undefined"?ld.exports=t():typeof define=="function"&&define.amd?define(t):e.Mark=t()})(sd,function(){"use strict";var e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(s){return typeof s}:function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},t=function(s,u){if(!(s instanceof u))throw new TypeError("Cannot call a class as a function")},r=function(){function s(u,l){for(var c=0;c1&&arguments[1]!==void 0?arguments[1]:!0,c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:5e3;t(this,s),this.ctx=u,this.iframes=l,this.exclude=c,this.iframesTimeout=d}return r(s,[{key:"getContexts",value:function(){var l=void 0,c=[];return typeof this.ctx=="undefined"||!this.ctx?l=[]:NodeList.prototype.isPrototypeOf(this.ctx)?l=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?l=this.ctx:typeof this.ctx=="string"?l=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):l=[this.ctx],l.forEach(function(d){var f=c.filter(function(p){return p.contains(d)}).length>0;c.indexOf(d)===-1&&!f&&c.push(d)}),c}},{key:"getIframeContents",value:function(l,c){var d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},f=void 0;try{var p=l.contentWindow;if(f=p.document,!p||!f)throw new Error("iframe inaccessible")}catch(m){d()}f&&c(f)}},{key:"isIframeBlank",value:function(l){var c="about:blank",d=l.getAttribute("src").trim(),f=l.contentWindow.location.href;return f===c&&d!==c&&d}},{key:"observeIframeLoad",value:function(l,c,d){var f=this,p=!1,m=null,y=function b(){if(!p){p=!0,clearTimeout(m);try{f.isIframeBlank(l)||(l.removeEventListener("load",b),f.getIframeContents(l,c,d))}catch(x){d()}}};l.addEventListener("load",y),m=setTimeout(y,this.iframesTimeout)}},{key:"onIframeReady",value:function(l,c,d){try{l.contentWindow.document.readyState==="complete"?this.isIframeBlank(l)?this.observeIframeLoad(l,c,d):this.getIframeContents(l,c,d):this.observeIframeLoad(l,c,d)}catch(f){d()}}},{key:"waitForIframes",value:function(l,c){var d=this,f=0;this.forEachIframe(l,function(){return!0},function(p){f++,d.waitForIframes(p.querySelector("html"),function(){--f||c()})},function(p){p||c()})}},{key:"forEachIframe",value:function(l,c,d){var f=this,p=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},m=l.querySelectorAll("iframe"),y=m.length,b=0;m=Array.prototype.slice.call(m);var x=function(){--y<=0&&p(b)};y||x(),m.forEach(function(D){s.matches(D,f.exclude)?x():f.onIframeReady(D,function(C){c(D)&&(b++,d(C)),x()},x)})}},{key:"createIterator",value:function(l,c,d){return document.createNodeIterator(l,c,d,!1)}},{key:"createInstanceOnIframe",value:function(l){return new s(l.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(l,c,d){var f=l.compareDocumentPosition(d),p=Node.DOCUMENT_POSITION_PRECEDING;if(f&p)if(c!==null){var m=c.compareDocumentPosition(d),y=Node.DOCUMENT_POSITION_FOLLOWING;if(m&y)return!0}else return!0;return!1}},{key:"getIteratorNode",value:function(l){var c=l.previousNode(),d=void 0;return c===null?d=l.nextNode():d=l.nextNode()&&l.nextNode(),{prevNode:c,node:d}}},{key:"checkIframeFilter",value:function(l,c,d,f){var p=!1,m=!1;return f.forEach(function(y,b){y.val===d&&(p=b,m=y.handled)}),this.compareNodeIframe(l,c,d)?(p===!1&&!m?f.push({val:d,handled:!0}):p!==!1&&!m&&(f[p].handled=!0),!0):(p===!1&&f.push({val:d,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(l,c,d,f){var p=this;l.forEach(function(m){m.handled||p.getIframeContents(m.val,function(y){p.createInstanceOnIframe(y).forEachNode(c,d,f)})})}},{key:"iterateThroughNodes",value:function(l,c,d,f,p){for(var m=this,y=this.createIterator(c,l,f),b=[],x=[],D=void 0,C=void 0,A=function(){var T=m.getIteratorNode(y);return C=T.prevNode,D=T.node,D};A();)this.iframes&&this.forEachIframe(c,function(N){return m.checkIframeFilter(D,C,N,b)},function(N){m.createInstanceOnIframe(N).forEachNode(l,function(T){return x.push(T)},f)}),x.push(D);x.forEach(function(N){d(N)}),this.iframes&&this.handleOpenIframes(b,l,d,f),p()}},{key:"forEachNode",value:function(l,c,d){var f=this,p=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},m=this.getContexts(),y=m.length;y||p(),m.forEach(function(b){var x=function(){f.iterateThroughNodes(l,b,c,d,function(){--y<=0&&p()})};f.iframes?f.waitForIframes(b,x):x()})}}],[{key:"matches",value:function(l,c){var d=typeof c=="string"?[c]:c,f=l.matches||l.matchesSelector||l.msMatchesSelector||l.mozMatchesSelector||l.oMatchesSelector||l.webkitMatchesSelector;if(f){var p=!1;return d.every(function(m){return f.call(l,m)?(p=!0,!1):!0}),p}else return!1}}]),s}(),a=function(){function s(u){t(this,s),this.ctx=u,this.ie=!1;var l=window.navigator.userAgent;(l.indexOf("MSIE")>-1||l.indexOf("Trident")>-1)&&(this.ie=!0)}return r(s,[{key:"log",value:function(l){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"debug",d=this.opt.log;!this.opt.debug||(typeof d=="undefined"?"undefined":e(d))==="object"&&typeof d[c]=="function"&&d[c]("mark.js: "+l)}},{key:"escapeStr",value:function(l){return l.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(l){return this.opt.wildcards!=="disabled"&&(l=this.setupWildcardsRegExp(l)),l=this.escapeStr(l),Object.keys(this.opt.synonyms).length&&(l=this.createSynonymsRegExp(l)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(l=this.setupIgnoreJoinersRegExp(l)),this.opt.diacritics&&(l=this.createDiacriticsRegExp(l)),l=this.createMergedBlanksRegExp(l),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(l=this.createJoinersRegExp(l)),this.opt.wildcards!=="disabled"&&(l=this.createWildcardsRegExp(l)),l=this.createAccuracyRegExp(l),l}},{key:"createSynonymsRegExp",value:function(l){var c=this.opt.synonyms,d=this.opt.caseSensitive?"":"i",f=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var p in c)if(c.hasOwnProperty(p)){var m=c[p],y=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(p):this.escapeStr(p),b=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(m):this.escapeStr(m);y!==""&&b!==""&&(l=l.replace(new RegExp("("+this.escapeStr(y)+"|"+this.escapeStr(b)+")","gm"+d),f+("("+this.processSynomyms(y)+"|")+(this.processSynomyms(b)+")")+f))}return l}},{key:"processSynomyms",value:function(l){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(l=this.setupIgnoreJoinersRegExp(l)),l}},{key:"setupWildcardsRegExp",value:function(l){return l=l.replace(/(?:\\)*\?/g,function(c){return c.charAt(0)==="\\"?"?":""}),l.replace(/(?:\\)*\*/g,function(c){return c.charAt(0)==="\\"?"*":""})}},{key:"createWildcardsRegExp",value:function(l){var c=this.opt.wildcards==="withSpaces";return l.replace(/\u0001/g,c?"[\\S\\s]?":"\\S?").replace(/\u0002/g,c?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(l){return l.replace(/[^(|)\\]/g,function(c,d,f){var p=f.charAt(d+1);return/[(|)\\]/.test(p)||p===""?c:c+"\0"})}},{key:"createJoinersRegExp",value:function(l){var c=[],d=this.opt.ignorePunctuation;return Array.isArray(d)&&d.length&&c.push(this.escapeStr(d.join(""))),this.opt.ignoreJoiners&&c.push("\\u00ad\\u200b\\u200c\\u200d"),c.length?l.split(/\u0000+/).join("["+c.join("")+"]*"):l}},{key:"createDiacriticsRegExp",value:function(l){var c=this.opt.caseSensitive?"":"i",d=this.opt.caseSensitive?["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105","A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104","c\xE7\u0107\u010D","C\xC7\u0106\u010C","d\u0111\u010F","D\u0110\u010E","e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119","E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118","i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012B","I\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A","l\u0142","L\u0141","n\xF1\u0148\u0144","N\xD1\u0147\u0143","o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014D","O\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C","r\u0159","R\u0158","s\u0161\u015B\u0219\u015F","S\u0160\u015A\u0218\u015E","t\u0165\u021B\u0163","T\u0164\u021A\u0162","u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016B","U\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A","y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFF","Y\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178","z\u017E\u017C\u017A","Z\u017D\u017B\u0179"]:["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104","c\xE7\u0107\u010DC\xC7\u0106\u010C","d\u0111\u010FD\u0110\u010E","e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118","i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012BI\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A","l\u0142L\u0141","n\xF1\u0148\u0144N\xD1\u0147\u0143","o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014DO\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C","r\u0159R\u0158","s\u0161\u015B\u0219\u015FS\u0160\u015A\u0218\u015E","t\u0165\u021B\u0163T\u0164\u021A\u0162","u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016BU\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A","y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFFY\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178","z\u017E\u017C\u017AZ\u017D\u017B\u0179"],f=[];return l.split("").forEach(function(p){d.every(function(m){if(m.indexOf(p)!==-1){if(f.indexOf(m)>-1)return!1;l=l.replace(new RegExp("["+m+"]","gm"+c),"["+m+"]"),f.push(m)}return!0})}),l}},{key:"createMergedBlanksRegExp",value:function(l){return l.replace(/[\s]+/gmi,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(l){var c=this,d="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xA1\xBF",f=this.opt.accuracy,p=typeof f=="string"?f:f.value,m=typeof f=="string"?[]:f.limiters,y="";switch(m.forEach(function(b){y+="|"+c.escapeStr(b)}),p){case"partially":default:return"()("+l+")";case"complementary":return y="\\s"+(y||this.escapeStr(d)),"()([^"+y+"]*"+l+"[^"+y+"]*)";case"exactly":return"(^|\\s"+y+")("+l+")(?=$|\\s"+y+")"}}},{key:"getSeparatedKeywords",value:function(l){var c=this,d=[];return l.forEach(function(f){c.opt.separateWordSearch?f.split(" ").forEach(function(p){p.trim()&&d.indexOf(p)===-1&&d.push(p)}):f.trim()&&d.indexOf(f)===-1&&d.push(f)}),{keywords:d.sort(function(f,p){return p.length-f.length}),length:d.length}}},{key:"isNumeric",value:function(l){return Number(parseFloat(l))==l}},{key:"checkRanges",value:function(l){var c=this;if(!Array.isArray(l)||Object.prototype.toString.call(l[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(l),[];var d=[],f=0;return l.sort(function(p,m){return p.start-m.start}).forEach(function(p){var m=c.callNoMatchOnInvalidRanges(p,f),y=m.start,b=m.end,x=m.valid;x&&(p.start=y,p.length=b-y,d.push(p),f=b)}),d}},{key:"callNoMatchOnInvalidRanges",value:function(l,c){var d=void 0,f=void 0,p=!1;return l&&typeof l.start!="undefined"?(d=parseInt(l.start,10),f=d+parseInt(l.length,10),this.isNumeric(l.start)&&this.isNumeric(l.length)&&f-c>0&&f-d>0?p=!0:(this.log("Ignoring invalid or overlapping range: "+(""+JSON.stringify(l))),this.opt.noMatch(l))):(this.log("Ignoring invalid range: "+JSON.stringify(l)),this.opt.noMatch(l)),{start:d,end:f,valid:p}}},{key:"checkWhitespaceRanges",value:function(l,c,d){var f=void 0,p=!0,m=d.length,y=c-m,b=parseInt(l.start,10)-y;return b=b>m?m:b,f=b+parseInt(l.length,10),f>m&&(f=m,this.log("End range automatically set to the max value of "+m)),b<0||f-b<0||b>m||f>m?(p=!1,this.log("Invalid range: "+JSON.stringify(l)),this.opt.noMatch(l)):d.substring(b,f).replace(/\s+/g,"")===""&&(p=!1,this.log("Skipping whitespace only range: "+JSON.stringify(l)),this.opt.noMatch(l)),{start:b,end:f,valid:p}}},{key:"getTextNodes",value:function(l){var c=this,d="",f=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(p){f.push({start:d.length,end:(d+=p.textContent).length,node:p})},function(p){return c.matchesExclude(p.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){l({value:d,nodes:f})})}},{key:"matchesExclude",value:function(l){return i.matches(l,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(l,c,d){var f=this.opt.element?this.opt.element:"mark",p=l.splitText(c),m=p.splitText(d-c),y=document.createElement(f);return y.setAttribute("data-markjs","true"),this.opt.className&&y.setAttribute("class",this.opt.className),y.textContent=p.textContent,p.parentNode.replaceChild(y,p),m}},{key:"wrapRangeInMappedTextNode",value:function(l,c,d,f,p){var m=this;l.nodes.every(function(y,b){var x=l.nodes[b+1];if(typeof x=="undefined"||x.start>c){if(!f(y.node))return!1;var D=c-y.start,C=(d>y.end?y.end:d)-y.start,A=l.value.substr(0,y.start),N=l.value.substr(C+y.start);if(y.node=m.wrapRangeInTextNode(y.node,D,C),l.value=A+N,l.nodes.forEach(function(T,O){O>=b&&(l.nodes[O].start>0&&O!==b&&(l.nodes[O].start-=C),l.nodes[O].end-=C)}),d-=C,p(y.node.previousSibling,y.start),d>y.end)c=y.end;else return!1}return!0})}},{key:"wrapMatches",value:function(l,c,d,f,p){var m=this,y=c===0?0:c+1;this.getTextNodes(function(b){b.nodes.forEach(function(x){x=x.node;for(var D=void 0;(D=l.exec(x.textContent))!==null&&D[y]!=="";)if(!!d(D[y],x)){var C=D.index;if(y!==0)for(var A=1;A{h();(function(t,r){typeof Bs=="object"&&typeof Sd=="object"?Sd.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Bs=="object"?Bs.Choices=r():t.Choices=r()})(window,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{enumerable:!0,get:a})},r.r=function(n){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.t=function(n,i){if(i&1&&(n=r(n)),i&8||i&4&&typeof n=="object"&&n&&n.__esModule)return n;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:n}),i&2&&typeof n!="string")for(var o in n)r.d(a,o,function(s){return n[s]}.bind(null,o));return a},r.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="/public/assets/scripts/",r(r.s=4)}([function(e,t,r){"use strict";var n=function(A){return i(A)&&!a(A)};function i(C){return!!C&&typeof C=="object"}function a(C){var A=Object.prototype.toString.call(C);return A==="[object RegExp]"||A==="[object Date]"||u(C)}var o=typeof Symbol=="function"&&Symbol.for,s=o?Symbol.for("react.element"):60103;function u(C){return C.$$typeof===s}function l(C){return Array.isArray(C)?[]:{}}function c(C,A){return A.clone!==!1&&A.isMergeableObject(C)?x(l(C),C,A):C}function d(C,A,N){return C.concat(A).map(function(T){return c(T,N)})}function f(C,A){if(!A.customMerge)return x;var N=A.customMerge(C);return typeof N=="function"?N:x}function p(C){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(C).filter(function(A){return C.propertyIsEnumerable(A)}):[]}function m(C){return Object.keys(C).concat(p(C))}function y(C,A){try{return A in C&&!(Object.hasOwnProperty.call(C,A)&&Object.propertyIsEnumerable.call(C,A))}catch(N){return!1}}function b(C,A,N){var T={};return N.isMergeableObject(C)&&m(C).forEach(function(O){T[O]=c(C[O],N)}),m(A).forEach(function(O){y(C,O)||(!N.isMergeableObject(A[O])||!C[O]?T[O]=c(A[O],N):T[O]=f(O,N)(C[O],A[O],N))}),T}function x(C,A,N){N=N||{},N.arrayMerge=N.arrayMerge||d,N.isMergeableObject=N.isMergeableObject||n,N.cloneUnlessOtherwiseSpecified=c;var T=Array.isArray(A),O=Array.isArray(C),W=T===O;return W?T?N.arrayMerge(C,A,N):b(C,A,N):c(A,N)}x.all=function(A,N){if(!Array.isArray(A))throw new Error("first argument should be an array");return A.reduce(function(T,O){return x(T,O,N)},{})};var D=x;e.exports=D},function(e,t,r){"use strict";(function(n,i){var a=r(3),o;typeof self!="undefined"?o=self:typeof window!="undefined"?o=window:typeof n!="undefined"?o=n:o=i;var s=Object(a.a)(o);t.a=s}).call(this,r(5),r(6)(e))},function(e,t,r){(function(n,i){e.exports=i()})(this,function(){return function(n){var i={};function a(o){if(i[o])return i[o].exports;var s=i[o]={i:o,l:!1,exports:{}};return n[o].call(s.exports,s,s.exports,a),s.l=!0,s.exports}return a.m=n,a.c=i,a.d=function(o,s,u){a.o(o,s)||Object.defineProperty(o,s,{enumerable:!0,get:u})},a.r=function(o){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},a.t=function(o,s){if(1&s&&(o=a(o)),8&s||4&s&&typeof o=="object"&&o&&o.__esModule)return o;var u=Object.create(null);if(a.r(u),Object.defineProperty(u,"default",{enumerable:!0,value:o}),2&s&&typeof o!="string")for(var l in o)a.d(u,l,function(c){return o[c]}.bind(null,l));return u},a.n=function(o){var s=o&&o.__esModule?function(){return o.default}:function(){return o};return a.d(s,"a",s),s},a.o=function(o,s){return Object.prototype.hasOwnProperty.call(o,s)},a.p="",a(a.s=1)}([function(n,i){n.exports=function(a){return Array.isArray?Array.isArray(a):Object.prototype.toString.call(a)==="[object Array]"}},function(n,i,a){function o(f){return(o=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p})(f)}function s(f,p){for(var m=0;m1&&arguments[1]!==void 0?arguments[1]:{limit:!1};this._log(`--------- -Search pattern: "`.concat(b,'"'));var D=this._prepareSearchers(b),C=D.tokenSearchers,A=D.fullSearcher,N=this._search(C,A),T=N.weights,O=N.results;return this._computeScore(T,O),this.options.shouldSort&&this._sort(O),x.limit&&typeof x.limit=="number"&&(O=O.slice(0,x.limit)),this._format(O)}},{key:"_prepareSearchers",value:function(){var b=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",x=[];if(this.options.tokenize)for(var D=b.split(this.options.tokenSeparator),C=0,A=D.length;C0&&arguments[0]!==void 0?arguments[0]:[],x=arguments.length>1?arguments[1]:void 0,D=this.list,C={},A=[];if(typeof D[0]=="string"){for(var N=0,T=D.length;N1)throw new Error("Key weight has to be > 0 and <= 1");X=X.name}else O[X]={weight:1};this._analyze({key:X,value:this.options.getFn(ee,X),record:ee,index:W},{resultMap:C,results:A,tokenSearchers:b,fullSearcher:x})}return{weights:O,results:A}}},{key:"_analyze",value:function(b,x){var D=b.key,C=b.arrayIndex,A=C===void 0?-1:C,N=b.value,T=b.record,O=b.index,W=x.tokenSearchers,z=W===void 0?[]:W,ee=x.fullSearcher,Z=ee===void 0?[]:ee,le=x.resultMap,X=le===void 0?{}:le,G=x.results,re=G===void 0?[]:G;if(N!=null){var pe=!1,he=-1,ve=0;if(typeof N=="string"){this._log(` -Key: `.concat(D===""?"-":D));var be=Z.search(N);if(this._log('Full text: "'.concat(N,'", score: ').concat(be.score)),this.options.tokenize){for(var De=N.split(this.options.tokenSeparator),L=[],P=0;P-1&&(Ue=(Ue+he)/2),this._log("Score average:",Ue);var ut=!this.options.tokenize||!this.options.matchAllTokens||ve>=z.length;if(this._log(` -Check Matches: `.concat(ut)),(pe||be.isMatch)&&ut){var vt=X[O];vt?vt.output.push({key:D,arrayIndex:A,value:N,score:Ue,matchedIndices:be.matchedIndices}):(X[O]={item:T,output:[{key:D,arrayIndex:A,value:N,score:Ue,matchedIndices:be.matchedIndices}]},re.push(X[O]))}}else if(c(N))for(var Nt=0,Bn=N.length;Ntro(e,"__esModule",{value:!0});var Dl=(e,t)=>()=>(e&&(t=e(e=0)),t);var pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),qi=(e,t)=>{If(e);for(var r in t)ro(e,r,{get:t[r],enumerable:!0})},ex=(e,t,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of QE(t))!ZE.call(e,n)&&n!=="default"&&ro(e,n,{get:()=>t[n],enumerable:!(r=GE(t,n))||r.enumerable});return e},me=e=>ex(If(ro(e!=null?JE(XE(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);function Vn(e,t){for(var r in t)e[r]=t[r];return e}function Of(e){var t=e.parentNode;t&&t.removeChild(e)}function h(e,t,r){var n,i,a,o={};for(a in t)a=="key"?n=t[a]:a=="ref"?i=t[a]:o[a]=t[a];if(arguments.length>2&&(o.children=arguments.length>3?Yi.call(arguments,2):r),typeof e=="function"&&e.defaultProps!=null)for(a in e.defaultProps)o[a]===void 0&&(o[a]=e.defaultProps[a]);return Gi(e,o,n,i,null)}function Gi(e,t,r,n,i){var a={type:e,props:t,key:r,ref:n,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:i??++Af};return i==null&&fe.vnode!=null&&fe.vnode(a),a}function ri(){return{current:null}}function S(e){return e.children}function ht(e,t){this.props=e,this.context=t}function ii(e,t){if(t==null)return e.__?ii(e.__,e.__.__k.indexOf(e)+1):null;for(var r;t0?Gi(p.type,p.props,p.key,null,p.__v):p)!=null){if(p.__=r,p.__b=r.__b+1,(f=k[c])===null||f&&p.key==f.key&&p.type===f.type)k[c]=void 0;else for(d=0;d2&&(o.children=arguments.length>3?Yi.call(arguments,2):r),Gi(e.type,o,n||e.key,i||e.ref,null)}function ai(e,t){var r={__c:t="__cC"+Ff++,__:e,Consumer:function(n,i){return n.children(i)},Provider:function(n){var i,a;return this.getChildContext||(i=[],(a={})[t]=this,this.getChildContext=function(){return a},this.shouldComponentUpdate=function(o){this.props.value!==o.value&&i.some(Tl)},this.sub=function(o){i.push(o);var s=o.componentWillUnmount;o.componentWillUnmount=function(){i.splice(i.indexOf(o),1),s&&s.call(o)}}),n.children}};return r.Provider.__=r.Consumer.contextType=r}var Yi,fe,Af,tx,Ji,Lf,Pf,Ff,io,Nf,nx,Ar=Dl(()=>{m();io={},Nf=[],nx=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;Yi=Nf.slice,fe={__e:function(e,t,r,n){for(var i,a,o;t=t.__;)if((i=t.__c)&&!i.__)try{if((a=i.constructor)&&a.getDerivedStateFromError!=null&&(i.setState(a.getDerivedStateFromError(e)),o=i.__d),i.componentDidCatch!=null&&(i.componentDidCatch(e,n||{}),o=i.__d),o)return i.__E=i}catch(s){e=s}throw e}},Af=0,tx=function(e){return e!=null&&e.constructor===void 0},ht.prototype.setState=function(e,t){var r;r=this.__s!=null&&this.__s!==this.state?this.__s:this.__s=Vn({},this.state),typeof e=="function"&&(e=e(Vn({},r),this.props)),e&&Vn(r,e),e!=null&&this.__v&&(t&&this.__h.push(t),Tl(this))},ht.prototype.forceUpdate=function(e){this.__v&&(this.__e=!0,e&&this.__h.push(e),Tl(this))},ht.prototype.render=S,Ji=[],Lf=typeof Promise=="function"?Promise.prototype.then.bind(Promise.resolve()):setTimeout,ao.__r=0,Ff=0});var m=Dl(()=>{Ar()});var Et=pt((An,bp)=>{m();"use strict";Object.defineProperty(An,"__esModule",{value:!0});function _n(e){return typeof e=="object"&&!("toString"in e)?Object.prototype.toString.call(e).slice(8,-1):e}var Lx=typeof process=="object"&&!0;function pn(e,t){if(!e)throw Lx?new Error("Invariant failed"):new Error(t())}An.invariant=pn;var Ol=Object.prototype.hasOwnProperty,Px=Array.prototype.splice,Fx=Object.prototype.toString;function Pr(e){return Fx.call(e).slice(8,-1)}var mo=Object.assign||function(e,t){return Rl(t).forEach(function(r){Ol.call(t,r)&&(e[r]=t[r])}),e},Rl=typeof Object.getOwnPropertySymbols=="function"?function(e){return Object.keys(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.keys(e)};function dr(e){return Array.isArray(e)?mo(e.constructor(e.length),e):Pr(e)==="Map"?new Map(e):Pr(e)==="Set"?new Set(e):e&&typeof e=="object"?mo(Object.create(Object.getPrototypeOf(e)),e):e}var mp=function(){function e(){this.commands=mo({},Nx),this.update=this.update.bind(this),this.update.extend=this.extend=this.extend.bind(this),this.update.isEquals=function(t,r){return t===r},this.update.newContext=function(){return new e().update}}return Object.defineProperty(e.prototype,"isEquals",{get:function(){return this.update.isEquals},set:function(t){this.update.isEquals=t},enumerable:!0,configurable:!0}),e.prototype.extend=function(t,r){this.commands[t]=r},e.prototype.update=function(t,r){var n=this,i=typeof r=="function"?{$apply:r}:r;Array.isArray(t)&&Array.isArray(i)||pn(!Array.isArray(i),function(){return"update(): You provided an invalid spec to update(). The spec may not contain an array except as the value of $set, $push, $unshift, $splice or any custom command allowing an array value."}),pn(typeof i=="object"&&i!==null,function(){return"update(): You provided an invalid spec to update(). The spec and every included key path must be plain objects containing one of the "+("following commands: "+Object.keys(n.commands).join(", ")+".")});var a=t;return Rl(i).forEach(function(o){if(Ol.call(n.commands,o)){var s=t===a;a=n.commands[o](i[o],a,i,t),s&&n.isEquals(a,t)&&(a=t)}else{var u=Pr(t)==="Map"?n.update(t.get(o),i[o]):n.update(t[o],i[o]),l=Pr(a)==="Map"?a.get(o):a[o];(!n.isEquals(u,l)||typeof u=="undefined"&&!Ol.call(t,o))&&(a===t&&(a=dr(t)),Pr(a)==="Map"?a.set(o,u):a[o]=u)}}),a},e}();An.Context=mp;var Nx={$push:function(e,t,r){return gp(t,r,"$push"),e.length?t.concat(e):t},$unshift:function(e,t,r){return gp(t,r,"$unshift"),e.length?e.concat(t):t},$splice:function(e,t,r,n){return Ox(t,r),e.forEach(function(i){vp(i),t===n&&i.length&&(t=dr(n)),Px.apply(t,i)}),t},$set:function(e,t,r){return Hx(r),e},$toggle:function(e,t){ta(e,"$toggle");var r=e.length?dr(t):t;return e.forEach(function(n){r[n]=!t[n]}),r},$unset:function(e,t,r,n){return ta(e,"$unset"),e.forEach(function(i){Object.hasOwnProperty.call(t,i)&&(t===n&&(t=dr(n)),delete t[i])}),t},$add:function(e,t,r,n){return yp(t,"$add"),ta(e,"$add"),Pr(t)==="Map"?e.forEach(function(i){var a=i[0],o=i[1];t===n&&t.get(a)!==o&&(t=dr(n)),t.set(a,o)}):e.forEach(function(i){t===n&&!t.has(i)&&(t=dr(n)),t.add(i)}),t},$remove:function(e,t,r,n){return yp(t,"$remove"),ta(e,"$remove"),e.forEach(function(i){t===n&&t.has(i)&&(t=dr(n)),t.delete(i)}),t},$merge:function(e,t,r,n){return Bx(t,e),Rl(e).forEach(function(i){e[i]!==t[i]&&(t===n&&(t=dr(n)),t[i]=e[i])}),t},$apply:function(e,t){return Rx(e),e(t)}},Hl=new mp;An.isEquals=Hl.update.isEquals;An.extend=Hl.extend;An.default=Hl.update;An.default.default=bp.exports=mo(An.default,An);function gp(e,t,r){pn(Array.isArray(e),function(){return"update(): expected target of "+_n(r)+" to be an array; got "+_n(e)+"."}),ta(t[r],r)}function ta(e,t){pn(Array.isArray(e),function(){return"update(): expected spec of "+_n(t)+" to be an array; got "+_n(e)+". Did you forget to wrap your parameter in an array?"})}function Ox(e,t){pn(Array.isArray(e),function(){return"Expected $splice target to be an array; got "+_n(e)}),vp(t.$splice)}function vp(e){pn(Array.isArray(e),function(){return"update(): expected spec of $splice to be an array of arrays; got "+_n(e)+". Did you forget to wrap your parameters in an array?"})}function Rx(e){pn(typeof e=="function",function(){return"update(): expected spec of $apply to be a function; got "+_n(e)+"."})}function Hx(e){pn(Object.keys(e).length===1,function(){return"Cannot have more than one key in an object with $set"})}function Bx(e,t){pn(t&&typeof t=="object",function(){return"update(): $merge expects a spec of type 'object'; got "+_n(t)}),pn(e&&typeof e=="object",function(){return"update(): $merge expects a target of type 'object'; got "+_n(e)})}function yp(e,t){var r=Pr(e);pn(r==="Map"||r==="Set",function(){return"update(): "+_n(t)+" expects a target of type Set or Map; got "+_n(r)})}});var kp=pt((eM,xp)=>{m();"use strict";var Kx=function(t){return $x(t)&&!Ux(t)};function $x(e){return!!e&&typeof e=="object"}function Ux(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||zx(e)}var Vx=typeof Symbol=="function"&&Symbol.for,Wx=Vx?Symbol.for("react.element"):60103;function zx(e){return e.$$typeof===Wx}function jx(e){return Array.isArray(e)?[]:{}}function na(e,t){return t.clone!==!1&&t.isMergeableObject(e)?li(jx(e),e,t):e}function qx(e,t,r){return e.concat(t).map(function(n){return na(n,r)})}function Yx(e,t){if(!t.customMerge)return li;var r=t.customMerge(e);return typeof r=="function"?r:li}function Jx(e){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(e).filter(function(t){return e.propertyIsEnumerable(t)}):[]}function wp(e){return Object.keys(e).concat(Jx(e))}function Ep(e,t){try{return t in e}catch(r){return!1}}function Gx(e,t){return Ep(e,t)&&!(Object.hasOwnProperty.call(e,t)&&Object.propertyIsEnumerable.call(e,t))}function Qx(e,t,r){var n={};return r.isMergeableObject(e)&&wp(e).forEach(function(i){n[i]=na(e[i],r)}),wp(t).forEach(function(i){Gx(e,i)||(Ep(e,i)&&r.isMergeableObject(t[i])?n[i]=Yx(i,r)(e[i],t[i],r):n[i]=na(t[i],r))}),n}function li(e,t,r){r=r||{},r.arrayMerge=r.arrayMerge||qx,r.isMergeableObject=r.isMergeableObject||Kx,r.cloneUnlessOtherwiseSpecified=na;var n=Array.isArray(t),i=Array.isArray(e),a=n===i;return a?n?r.arrayMerge(e,t,r):Qx(e,t,r):na(t,r)}li.all=function(t,r){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(n,i){return li(n,i,r)},{})};var Xx=li;xp.exports=Xx});var _o=pt(it=>{m();"use strict";var Jl=32;it.INT_BITS=Jl;it.INT_MAX=2147483647;it.INT_MIN=-1<0)-(e<0)};it.abs=function(e){var t=e>>Jl-1;return(e^t)-t};it.min=function(e,t){return t^(e^t)&-(e65535)<<4,e>>>=t,r=(e>255)<<3,e>>>=r,t|=r,r=(e>15)<<2,e>>>=r,t|=r,r=(e>3)<<1,e>>>=r,t|=r,t|e>>1};it.log10=function(e){return e>=1e9?9:e>=1e8?8:e>=1e7?7:e>=1e6?6:e>=1e5?5:e>=1e4?4:e>=1e3?3:e>=100?2:e>=10?1:0};it.popCount=function(e){return e=e-(e>>>1&1431655765),e=(e&858993459)+(e>>>2&858993459),(e+(e>>>4)&252645135)*16843009>>>24};function Hp(e){var t=32;return e&=-e,e&&t--,e&65535&&(t-=16),e&16711935&&(t-=8),e&252645135&&(t-=4),e&858993459&&(t-=2),e&1431655765&&(t-=1),t}it.countTrailingZeros=Hp;it.nextPow2=function(e){return e+=e===0,--e,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e+1};it.prevPow2=function(e){return e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e-(e>>>1)};it.parity=function(e){return e^=e>>>16,e^=e>>>8,e^=e>>>4,e&=15,27030>>>e&1};var ca=new Array(256);(function(e){for(var t=0;t<256;++t){var r=t,n=t,i=7;for(r>>>=1;r;r>>>=1)n<<=1,n|=r&1,--i;e[t]=n<>>8&255]<<16|ca[e>>>16&255]<<8|ca[e>>>24&255]};it.interleave2=function(e,t){return e&=65535,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,t&=65535,t=(t|t<<8)&16711935,t=(t|t<<4)&252645135,t=(t|t<<2)&858993459,t=(t|t<<1)&1431655765,e|t<<1};it.deinterleave2=function(e,t){return e=e>>>t&1431655765,e=(e|e>>>1)&858993459,e=(e|e>>>2)&252645135,e=(e|e>>>4)&16711935,e=(e|e>>>16)&65535,e<<16>>16};it.interleave3=function(e,t,r){return e&=1023,e=(e|e<<16)&4278190335,e=(e|e<<8)&251719695,e=(e|e<<4)&3272356035,e=(e|e<<2)&1227133513,t&=1023,t=(t|t<<16)&4278190335,t=(t|t<<8)&251719695,t=(t|t<<4)&3272356035,t=(t|t<<2)&1227133513,e|=t<<1,r&=1023,r=(r|r<<16)&4278190335,r=(r|r<<8)&251719695,r=(r|r<<4)&3272356035,r=(r|r<<2)&1227133513,e|r<<2};it.deinterleave3=function(e,t){return e=e>>>t&1227133513,e=(e|e>>>2)&3272356035,e=(e|e>>>4)&251719695,e=(e|e>>>8)&4278190335,e=(e|e>>>16)&1023,e<<22>>22};it.nextCombination=function(e){var t=e|e-1;return t+1|(~t&-~t)-1>>>Hp(e)+1}});var $p=pt((PM,Kp)=>{m();"use strict";function Bp(e,t,r){var n=e[r]|0;if(n<=0)return[];var i=new Array(n),a;if(r===e.length-1)for(a=0;a0)return ck(e|0,t);break;case"object":if(typeof e.length=="number")return Bp(e,t,0);break}return[]}Kp.exports=uk});var sh={};qi(sh,{Buffer:()=>ne,INSPECT_MAX_BYTES:()=>jp,SlowBuffer:()=>Ek,isBuffer:()=>ah,kMaxLength:()=>gk});function Up(){Gl=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,r=e.length;t0)throw new Error("Invalid string. Length must be a multiple of 4");a=e[s-2]==="="?2:e[s-1]==="="?1:0,o=new dk(s*3/4-a),n=a>0?s-4:s;var u=0;for(t=0,r=0;t>16&255,o[u++]=i>>8&255,o[u++]=i&255;return a===2?(i=hn[e.charCodeAt(t)]<<2|hn[e.charCodeAt(t+1)]>>4,o[u++]=i&255):a===1&&(i=hn[e.charCodeAt(t)]<<10|hn[e.charCodeAt(t+1)]<<4|hn[e.charCodeAt(t+2)]>>2,o[u++]=i>>8&255,o[u++]=i&255),o}function pk(e){return Fn[e>>18&63]+Fn[e>>12&63]+Fn[e>>6&63]+Fn[e&63]}function hk(e,t,r){for(var n,i=[],a=t;au?u:s+o));return n===1?(t=e[r-1],i+=Fn[t>>2],i+=Fn[t<<4&63],i+="=="):n===2&&(t=(e[r-2]<<8)+e[r-1],i+=Fn[t>>10],i+=Fn[t>>4&63],i+=Fn[t<<2&63],i+="="),a.push(i),a.join("")}function Co(e,t,r,n,i){var a,o,s=i*8-n-1,u=(1<>1,c=-7,d=r?i-1:0,f=r?-1:1,p=e[t+d];for(d+=f,a=p&(1<<-c)-1,p>>=-c,c+=s;c>0;a=a*256+e[t+d],d+=f,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=n;c>0;o=o*256+e[t+d],d+=f,c-=8);if(a===0)a=1-l;else{if(a===u)return o?NaN:(p?-1:1)*(1/0);o=o+Math.pow(2,n),a=a-l}return(p?-1:1)*o*Math.pow(2,a-n)}function Wp(e,t,r,n,i,a){var o,s,u,l=a*8-i-1,c=(1<>1,f=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,g=n?1:-1,y=t<0||t===0&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),o+d>=1?t+=f/u:t+=f*Math.pow(2,1-d),t*u>=2&&(o++,u/=2),o+d>=c?(s=0,o=c):o+d>=1?(s=(t*u-1)*Math.pow(2,i),o=o+d):(s=t*Math.pow(2,d-1)*Math.pow(2,i),o=0));i>=8;e[r+p]=s&255,p+=g,s/=256,i-=8);for(o=o<0;e[r+p]=o&255,p+=g,o/=256,l-=8);e[r+p-g]|=y*128}function Do(){return ne.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function zn(e,t){if(Do()=Do())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Do().toString(16)+" bytes");return e|0}function Ek(e){return+e!=e&&(e=0),ne.alloc(+e)}function Nn(e){return!!(e!=null&&e._isBuffer)}function Jp(e,t){if(Nn(e))return e.length;if(typeof ArrayBuffer!="undefined"&&typeof ArrayBuffer.isView=="function"&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;typeof e!="string"&&(e=""+e);var r=e.length;if(r===0)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return Io(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return ih(e).length;default:if(n)return Io(e).length;t=(""+t).toLowerCase(),n=!0}}function xk(e,t,r){var n=!1;if((t===void 0||t<0)&&(t=0),t>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,t>>>=0,r<=t))return"";for(e||(e="utf8");;)switch(e){case"hex":return Lk(this,t,r);case"utf8":case"utf-8":return Zp(this,t,r);case"ascii":return Ik(this,t,r);case"latin1":case"binary":return Ak(this,t,r);case"base64":return Tk(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Pk(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function Or(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function Gp(e,t,r,n,i){if(e.length===0)return-1;if(typeof r=="string"?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0)if(i)r=0;else return-1;if(typeof t=="string"&&(t=ne.from(t,n)),Nn(t))return t.length===0?-1:Qp(e,t,r,n,i);if(typeof t=="number")return t=t&255,ne.TYPED_ARRAY_SUPPORT&&typeof Uint8Array.prototype.indexOf=="function"?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):Qp(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function Qp(e,t,r,n,i){var a=1,o=e.length,s=t.length;if(n!==void 0&&(n=String(n).toLowerCase(),n==="ucs2"||n==="ucs-2"||n==="utf16le"||n==="utf-16le")){if(e.length<2||t.length<2)return-1;a=2,o/=2,s/=2,r/=2}function u(p,g){return a===1?p[g]:p.readUInt16BE(g*a)}var l;if(i){var c=-1;for(l=r;lo&&(r=o-s),l=r;l>=0;l--){for(var d=!0,f=0;fi&&(n=i)):n=i;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var o=0;o239?4:a>223?3:a>191?2:1;if(i+s<=r){var u,l,c,d;switch(s){case 1:a<128&&(o=a);break;case 2:u=e[i+1],(u&192)==128&&(d=(a&31)<<6|u&63,d>127&&(o=d));break;case 3:u=e[i+1],l=e[i+2],(u&192)==128&&(l&192)==128&&(d=(a&15)<<12|(u&63)<<6|l&63,d>2047&&(d<55296||d>57343)&&(o=d));break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],(u&192)==128&&(l&192)==128&&(c&192)==128&&(d=(a&15)<<18|(u&63)<<12|(l&63)<<6|c&63,d>65535&&d<1114112&&(o=d))}}o===null?(o=65533,s=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|o&1023),n.push(o),i+=s}return Mk(n)}function Mk(e){var t=e.length;if(t<=eh)return String.fromCharCode.apply(String,e);for(var r="",n=0;nn)&&(r=n);for(var i="",a=t;ar)throw new RangeError("Trying to access beyond buffer length")}function Zt(e,t,r,n,i,a){if(!Nn(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function To(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i>>(n?i:1-i)*8}function Mo(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i>>(n?i:3-i)*8&255}function th(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function nh(e,t,r,n,i){return i||th(e,t,r,4),Wp(e,t,r,n,23,4),r+4}function rh(e,t,r,n,i){return i||th(e,t,r,8),Wp(e,t,r,n,52,8),r+8}function Nk(e){if(e=Ok(e).replace(Fk,""),e.length<2)return"";for(;e.length%4!=0;)e=e+"=";return e}function Ok(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function Rk(e){return e<16?"0"+e.toString(16):e.toString(16)}function Io(e,t){t=t||1/0;for(var r,n=e.length,i=null,a=[],o=0;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}else if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=(i-55296<<10|r-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,r&63|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return a}function Hk(e){for(var t=[],r=0;r>8,i=r%256,a.push(i),a.push(n);return a}function ih(e){return fk(Nk(e))}function Ao(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function Kk(e){return e!==e}function ah(e){return e!=null&&(!!e._isBuffer||oh(e)||$k(e))}function oh(e){return!!e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e)}function $k(e){return typeof e.readFloatLE=="function"&&typeof e.slice=="function"&&oh(e.slice(0,0))}var Fn,hn,dk,Gl,mk,zp,jp,gk,eh,Fk,lh=Dl(()=>{m();Fn=[],hn=[],dk=typeof Uint8Array!="undefined"?Uint8Array:Array,Gl=!1;mk={}.toString,zp=Array.isArray||function(e){return mk.call(e)=="[object Array]"};jp=50;ne.TYPED_ARRAY_SUPPORT=window.TYPED_ARRAY_SUPPORT!==void 0?window.TYPED_ARRAY_SUPPORT:!0;gk=Do();ne.poolSize=8192;ne._augment=function(e){return e.__proto__=ne.prototype,e};ne.from=function(e,t,r){return qp(null,e,t,r)};ne.TYPED_ARRAY_SUPPORT&&(ne.prototype.__proto__=Uint8Array.prototype,ne.__proto__=Uint8Array);ne.alloc=function(e,t,r){return vk(null,e,t,r)};ne.allocUnsafe=function(e){return Ql(null,e)};ne.allocUnsafeSlow=function(e){return Ql(null,e)};ne.isBuffer=ah;ne.compare=function(t,r){if(!Nn(t)||!Nn(r))throw new TypeError("Arguments must be Buffers");if(t===r)return 0;for(var n=t.length,i=r.length,a=0,o=Math.min(n,i);a0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""};ne.prototype.compare=function(t,r,n,i,a){if(!Nn(t))throw new TypeError("Argument must be a Buffer");if(r===void 0&&(r=0),n===void 0&&(n=t?t.length:0),i===void 0&&(i=0),a===void 0&&(a=this.length),r<0||n>t.length||i<0||a>this.length)throw new RangeError("out of range index");if(i>=a&&r>=n)return 0;if(i>=a)return-1;if(r>=n)return 1;if(r>>>=0,n>>>=0,i>>>=0,a>>>=0,this===t)return 0;for(var o=a-i,s=n-r,u=Math.min(o,s),l=this.slice(i,a),c=t.slice(r,n),d=0;da)&&(n=a),t.length>0&&(n<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");for(var o=!1;;)switch(i){case"hex":return kk(this,t,r,n);case"utf8":case"utf-8":return Sk(this,t,r,n);case"ascii":return Xp(this,t,r,n);case"latin1":case"binary":return _k(this,t,r,n);case"base64":return Ck(this,t,r,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Dk(this,t,r,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}};ne.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};eh=4096;ne.prototype.slice=function(t,r){var n=this.length;t=~~t,r=r===void 0?n:~~r,t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),r<0?(r+=n,r<0&&(r=0)):r>n&&(r=n),r0&&(a*=256);)i+=this[t+--r]*a;return i};ne.prototype.readUInt8=function(t,r){return r||St(t,1,this.length),this[t]};ne.prototype.readUInt16LE=function(t,r){return r||St(t,2,this.length),this[t]|this[t+1]<<8};ne.prototype.readUInt16BE=function(t,r){return r||St(t,2,this.length),this[t]<<8|this[t+1]};ne.prototype.readUInt32LE=function(t,r){return r||St(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+this[t+3]*16777216};ne.prototype.readUInt32BE=function(t,r){return r||St(t,4,this.length),this[t]*16777216+(this[t+1]<<16|this[t+2]<<8|this[t+3])};ne.prototype.readIntLE=function(t,r,n){t=t|0,r=r|0,n||St(t,r,this.length);for(var i=this[t],a=1,o=0;++o=a&&(i-=Math.pow(2,8*r)),i};ne.prototype.readIntBE=function(t,r,n){t=t|0,r=r|0,n||St(t,r,this.length);for(var i=r,a=1,o=this[t+--i];i>0&&(a*=256);)o+=this[t+--i]*a;return a*=128,o>=a&&(o-=Math.pow(2,8*r)),o};ne.prototype.readInt8=function(t,r){return r||St(t,1,this.length),this[t]&128?(255-this[t]+1)*-1:this[t]};ne.prototype.readInt16LE=function(t,r){r||St(t,2,this.length);var n=this[t]|this[t+1]<<8;return n&32768?n|4294901760:n};ne.prototype.readInt16BE=function(t,r){r||St(t,2,this.length);var n=this[t+1]|this[t]<<8;return n&32768?n|4294901760:n};ne.prototype.readInt32LE=function(t,r){return r||St(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24};ne.prototype.readInt32BE=function(t,r){return r||St(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]};ne.prototype.readFloatLE=function(t,r){return r||St(t,4,this.length),Co(this,t,!0,23,4)};ne.prototype.readFloatBE=function(t,r){return r||St(t,4,this.length),Co(this,t,!1,23,4)};ne.prototype.readDoubleLE=function(t,r){return r||St(t,8,this.length),Co(this,t,!0,52,8)};ne.prototype.readDoubleBE=function(t,r){return r||St(t,8,this.length),Co(this,t,!1,52,8)};ne.prototype.writeUIntLE=function(t,r,n,i){if(t=+t,r=r|0,n=n|0,!i){var a=Math.pow(2,8*n)-1;Zt(this,t,r,n,a,0)}var o=1,s=0;for(this[r]=t&255;++s=0&&(s*=256);)this[r+o]=t/s&255;return r+n};ne.prototype.writeUInt8=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,1,255,0),ne.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[r]=t&255,r+1};ne.prototype.writeUInt16LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,65535,0),ne.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8):To(this,t,r,!0),r+2};ne.prototype.writeUInt16BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,65535,0),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=t&255):To(this,t,r,!1),r+2};ne.prototype.writeUInt32LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,4294967295,0),ne.TYPED_ARRAY_SUPPORT?(this[r+3]=t>>>24,this[r+2]=t>>>16,this[r+1]=t>>>8,this[r]=t&255):Mo(this,t,r,!0),r+4};ne.prototype.writeUInt32BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,4294967295,0),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255):Mo(this,t,r,!1),r+4};ne.prototype.writeIntLE=function(t,r,n,i){if(t=+t,r=r|0,!i){var a=Math.pow(2,8*n-1);Zt(this,t,r,n,a-1,-a)}var o=0,s=1,u=0;for(this[r]=t&255;++o>0)-u&255;return r+n};ne.prototype.writeIntBE=function(t,r,n,i){if(t=+t,r=r|0,!i){var a=Math.pow(2,8*n-1);Zt(this,t,r,n,a-1,-a)}var o=n-1,s=1,u=0;for(this[r+o]=t&255;--o>=0&&(s*=256);)t<0&&u===0&&this[r+o+1]!==0&&(u=1),this[r+o]=(t/s>>0)-u&255;return r+n};ne.prototype.writeInt8=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,1,127,-128),ne.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[r]=t&255,r+1};ne.prototype.writeInt16LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,32767,-32768),ne.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8):To(this,t,r,!0),r+2};ne.prototype.writeInt16BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,2,32767,-32768),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>8,this[r+1]=t&255):To(this,t,r,!1),r+2};ne.prototype.writeInt32LE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,2147483647,-2147483648),ne.TYPED_ARRAY_SUPPORT?(this[r]=t&255,this[r+1]=t>>>8,this[r+2]=t>>>16,this[r+3]=t>>>24):Mo(this,t,r,!0),r+4};ne.prototype.writeInt32BE=function(t,r,n){return t=+t,r=r|0,n||Zt(this,t,r,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),ne.TYPED_ARRAY_SUPPORT?(this[r]=t>>>24,this[r+1]=t>>>16,this[r+2]=t>>>8,this[r+3]=t&255):Mo(this,t,r,!1),r+4};ne.prototype.writeFloatLE=function(t,r,n){return nh(this,t,r,!0,n)};ne.prototype.writeFloatBE=function(t,r,n){return nh(this,t,r,!1,n)};ne.prototype.writeDoubleLE=function(t,r,n){return rh(this,t,r,!0,n)};ne.prototype.writeDoubleBE=function(t,r,n){return rh(this,t,r,!1,n)};ne.prototype.copy=function(t,r,n,i){if(n||(n=0),!i&&i!==0&&(i=this.length),r>=t.length&&(r=t.length),r||(r=0),i>0&&i=this.length)throw new RangeError("sourceStart out of bounds");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),t.length-r=0;--o)t[o+r]=this[o+n];else if(a<1e3||!ne.TYPED_ARRAY_SUPPORT)for(o=0;o>>0,n=n===void 0?this.length:n>>>0,t||(t=0);var o;if(typeof t=="number")for(o=r;o{m();var Rr=(lh(),sh);if(Rr&&Rr.default){Lo.exports=Rr.default;for(let e in Rr)Lo.exports[e]=Rr[e]}else Rr&&(Lo.exports=Rr)});var No=pt(He=>{m();"use strict";var vr=_o(),It=$p(),uh=ch().Buffer;window.__TYPEDARRAY_POOL||(window.__TYPEDARRAY_POOL={UINT8:It([32,0]),UINT16:It([32,0]),UINT32:It([32,0]),BIGUINT64:It([32,0]),INT8:It([32,0]),INT16:It([32,0]),INT32:It([32,0]),BIGINT64:It([32,0]),FLOAT:It([32,0]),DOUBLE:It([32,0]),DATA:It([32,0]),UINT8C:It([32,0]),BUFFER:It([32,0])});var Uk=typeof Uint8ClampedArray!="undefined",Vk=typeof BigUint64Array!="undefined",Wk=typeof BigInt64Array!="undefined",lt=window.__TYPEDARRAY_POOL;lt.UINT8C||(lt.UINT8C=It([32,0]));lt.BIGUINT64||(lt.BIGUINT64=It([32,0]));lt.BIGINT64||(lt.BIGINT64=It([32,0]));lt.BUFFER||(lt.BUFFER=It([32,0]));var Po=lt.DATA,Fo=lt.BUFFER;He.free=function(t){if(uh.isBuffer(t))Fo[vr.log2(t.length)].push(t);else{if(Object.prototype.toString.call(t)!=="[object ArrayBuffer]"&&(t=t.buffer),!t)return;var r=t.length||t.byteLength,n=vr.log2(r)|0;Po[n].push(t)}};function dh(e){if(!!e){var t=e.length||e.byteLength,r=vr.log2(t);Po[r].push(e)}}function zk(e){dh(e.buffer)}He.freeUint8=He.freeUint16=He.freeUint32=He.freeBigUint64=He.freeInt8=He.freeInt16=He.freeInt32=He.freeBigInt64=He.freeFloat32=He.freeFloat=He.freeFloat64=He.freeDouble=He.freeUint8Clamped=He.freeDataView=zk;He.freeArrayBuffer=dh;He.freeBuffer=function(t){Fo[vr.log2(t.length)].push(t)};He.malloc=function(t,r){if(r===void 0||r==="arraybuffer")return en(t);switch(r){case"uint8":return ec(t);case"uint16":return fh(t);case"uint32":return ph(t);case"int8":return hh(t);case"int16":return mh(t);case"int32":return gh(t);case"float":case"float32":return vh(t);case"double":case"float64":return yh(t);case"uint8_clamped":return bh(t);case"bigint64":return Eh(t);case"biguint64":return wh(t);case"buffer":return kh(t);case"data":case"dataview":return xh(t);default:return null}return null};function en(e){var e=vr.nextPow2(e),t=vr.log2(e),r=Po[t];return r.length>0?r.pop():new ArrayBuffer(e)}He.mallocArrayBuffer=en;function ec(e){return new Uint8Array(en(e),0,e)}He.mallocUint8=ec;function fh(e){return new Uint16Array(en(2*e),0,e)}He.mallocUint16=fh;function ph(e){return new Uint32Array(en(4*e),0,e)}He.mallocUint32=ph;function hh(e){return new Int8Array(en(e),0,e)}He.mallocInt8=hh;function mh(e){return new Int16Array(en(2*e),0,e)}He.mallocInt16=mh;function gh(e){return new Int32Array(en(4*e),0,e)}He.mallocInt32=gh;function vh(e){return new Float32Array(en(4*e),0,e)}He.mallocFloat32=He.mallocFloat=vh;function yh(e){return new Float64Array(en(8*e),0,e)}He.mallocFloat64=He.mallocDouble=yh;function bh(e){return Uk?new Uint8ClampedArray(en(e),0,e):ec(e)}He.mallocUint8Clamped=bh;function wh(e){return Vk?new BigUint64Array(en(8*e),0,e):null}He.mallocBigUint64=wh;function Eh(e){return Wk?new BigInt64Array(en(8*e),0,e):null}He.mallocBigInt64=Eh;function xh(e){return new DataView(en(e),0,e)}He.mallocDataView=xh;function kh(e){e=vr.nextPow2(e);var t=vr.log2(e),r=Fo[t];return r.length>0?r.pop():new uh(e)}He.mallocBuffer=kh;He.clearCache=function(){for(var t=0;t<32;++t)lt.UINT8[t].length=0,lt.UINT16[t].length=0,lt.UINT32[t].length=0,lt.INT8[t].length=0,lt.INT16[t].length=0,lt.INT32[t].length=0,lt.FLOAT[t].length=0,lt.DOUBLE[t].length=0,lt.BIGUINT64[t].length=0,lt.BIGINT64[t].length=0,lt.UINT8C[t].length=0,Po[t].length=0,Fo[t].length=0}});var Th=pt((OM,Dh)=>{m();"use strict";Dh.exports=jk;var Oo=32;function jk(e,t){t<=4*Oo?Ro(0,t-1,e):Bo(0,t-1,e)}function Ro(e,t,r){for(var n=2*(e+1),i=e+1;i<=t;++i){for(var a=r[n++],o=r[n++],s=i,u=n-2;s-- >e;){var l=r[u-2],c=r[u-1];if(lr[t+1]:!0}function Ho(e,t,r,n){e*=2;var i=n[e];return i>1,s=o-n,u=o+n,l=i,c=s,d=o,f=u,p=a,g=e+1,y=t-1,b=0;jn(l,c,r)&&(b=l,l=c,c=b),jn(f,p,r)&&(b=f,f=p,p=b),jn(l,d,r)&&(b=l,l=d,d=b),jn(c,d,r)&&(b=c,c=d,d=b),jn(l,f,r)&&(b=l,l=f,f=b),jn(d,f,r)&&(b=d,d=f,f=b),jn(c,p,r)&&(b=c,c=p,p=b),jn(c,d,r)&&(b=c,c=d,d=b),jn(f,p,r)&&(b=f,f=p,p=b);for(var k=r[2*c],T=r[2*c+1],C=r[2*f],A=r[2*f+1],H=2*l,D=2*d,K=2*p,z=2*i,U=2*o,Z=2*a,J=0;J<2;++J){var se=r[H+J],G=r[D+J],Q=r[K+J];r[z+J]=se,r[U+J]=G,r[Z+J]=Q}_h(s,e,r),_h(u,t,r);for(var ie=g;ie<=y;++ie)if(Ho(ie,k,T,r))ie!==g&&Sh(ie,g,r),++g;else if(!Ho(ie,C,A,r))for(;;)if(Ho(y,C,A,r)){Ho(y,k,T,r)?(qk(ie,g,y,r),++g,--y):(Sh(ie,y,r),--y);break}else{if(--y{m();"use strict";Mh.exports={init:Jk,sweepBipartite:Gk,sweepComplete:Qk,scanBipartite:Xk,scanComplete:Zk};var ct=No(),Yk=_o(),Ko=Th(),sn=1<<28,Hr=1024,At=ct.mallocInt32(Hr),qn=ct.mallocInt32(Hr),Yn=ct.mallocInt32(Hr),Br=ct.mallocInt32(Hr),fi=ct.mallocInt32(Hr),ua=ct.mallocInt32(Hr),De=ct.mallocDouble(Hr*8);function Jk(e){var t=Yk.nextPow2(e);At.length>>1;Ko(De,T);for(var C=0,A=0,g=0;g=sn)H=H-sn|0,pi(Yn,Br,A--,H);else if(H>=0)pi(At,qn,C--,H);else if(H<=-sn){H=-H-sn|0;for(var D=0;D>>1;Ko(De,T);for(var C=0,A=0,H=0,g=0;g>1==De[2*g+3]>>1&&(K=2,g+=1),D<0){for(var z=-(D>>1)-1,U=0;U>1)-1;K===0?pi(At,qn,C--,z):K===1?pi(Yn,Br,A--,z):K===2&&pi(fi,ua,H--,z)}}}function Xk(e,t,r,n,i,a,o,s,u,l,c,d){var f=0,p=2*e,g=t,y=t+e,b=1,k=1;n?k=sn:b=sn;for(var T=i;T>>1;Ko(De,D);for(var K=0,T=0;T=sn?(U=!n,C-=sn):(U=!!n,C-=1),U)hi(At,qn,K++,C);else{var Z=d[C],J=p*C,se=c[J+t+1],G=c[J+t+1+e];e:for(var Q=0;Q>>1;Ko(De,C);for(var A=0,y=0;y=sn)At[A++]=b-sn;else{b-=1;var D=c[b],K=f*b,z=l[K+t+1],U=l[K+t+1+e];e:for(var Z=0;Z=0;--Z)if(At[Z]===b){for(var Q=Z+1;Q{m();"use strict";var Kr="d",mi="ax",Ih="vv",nc="fp",da="es",$o="rs",rc="re",fa="rb",Ah="ri",gi="rp",Uo="bs",ic="be",pa="bb",Lh="bi",vi="bp",ac="rv",oc="Q",sc=[Kr,mi,Ih,$o,rc,fa,Ah,Uo,ic,pa,Lh];function e0(e,t,r){var n="bruteForce"+(e?"Red":"Blue")+(t?"Flip":"")+(r?"Full":""),i=["function ",n,"(",sc.join(),"){","var ",da,"=2*",Kr,";"],a="for(var i="+$o+","+gi+"="+da+"*"+$o+";i<"+rc+";++i,"+gi+"+="+da+"){var x0="+fa+"["+mi+"+"+gi+"],x1="+fa+"["+mi+"+"+gi+"+"+Kr+"],xi="+Ah+"[i];",o="for(var j="+Uo+","+vi+"="+da+"*"+Uo+";j<"+ic+";++j,"+vi+"+="+da+"){var y0="+pa+"["+mi+"+"+vi+"],"+(r?"y1="+pa+"["+mi+"+"+vi+"+"+Kr+"],":"")+"yi="+Lh+"[j];";return e?i.push(a,oc,":",o):i.push(o,oc,":",a),r?i.push("if(y1"+ic+"-"+Uo+"){"),e?(a(!0,!1),i.push("}else{"),a(!1,!1)):(i.push("if("+nc+"){"),a(!0,!0),i.push("}else{"),a(!0,!1),i.push("}}else{if("+nc+"){"),a(!1,!0),i.push("}else{"),a(!1,!1),i.push("}")),i.push("}}return "+t);var o=r.join("")+i.join(""),s=new Function(o);return s()}lc.partial=Ph(!1);lc.full=Ph(!0)});var cc=pt((BM,Nh)=>{m();"use strict";Nh.exports=n0;var t0="for(var j=2*a,k=j*c,l=k,m=c,n=b,o=a+b,p=c;d>p;++p,k+=j){var _;if($)if(m===p)m+=1,l+=j;else{for(var s=0;j>s;++s){var t=e[k+s];e[k+s]=e[l],e[l++]=t}var u=f[p];f[p]=f[m],f[m++]=u}}return m";function n0(e,t){var r="abcdef".split("").concat(t),n=[];return e.indexOf("lo")>=0&&n.push("lo=e[k+n]"),e.indexOf("hi")>=0&&n.push("hi=e[k+o]"),r.push(t0.replace("_",n.join()).replace("$",e)),Function.apply(void 0,r)}});var Hh=pt((KM,Rh)=>{m();"use strict";Rh.exports=o0;var r0=cc(),Oh=r0("lor&&i[d+t]>l;--c,d-=o){for(var f=d,p=d+o,g=0;g>>1,l=2*e,c=u,d=i[l*u+t];o=b?(c=y,d=b):g>=T?(c=p,d=g):(c=k,d=T):b>=T?(c=y,d=b):T>=g?(c=p,d=g):(c=k,d=T);for(var C=l*(s-1),A=l*c,H=0;H{m();"use strict";Wh.exports=b0;var yi=No(),uc=_o(),Bh=Fh(),s0=Bh.partial,l0=Bh.full,yr=tc(),c0=Hh(),bi=cc(),Kh=128,u0=1<<22,d0=1<<22,f0=bi("!(lo>=p0)&&!(p1>=hi)",["p0","p1"]),$h=bi("lo===p0",["p0"]),p0=bi("lo0;){l-=1;var f=l*dc,p=jt[f],g=jt[f+1],y=jt[f+2],b=jt[f+3],k=jt[f+4],T=jt[f+5],C=l*fc,A=$r[C],H=$r[C+1],D=T&1,K=!!(T&16),z=i,U=a,Z=s,J=u;if(D&&(z=s,U=u,Z=i,J=a),!(T&2&&(y=p0(e,p,g,y,z,U,H),g>=y))&&!(T&4&&(g=h0(e,p,g,y,z,U,A),g>=y))){var se=y-g,G=k-b;if(K){if(e*se*(se+G){m();"use strict";Yh.exports=S0;var br=No(),Vo=tc(),w0=zh();function E0(e,t){for(var r=0;r>>1;if(!(o<=0)){var s,u=br.mallocDouble(2*o*i),l=br.mallocInt32(i);if(i=jh(e,o,u,l),i>0){if(o===1&&n)Vo.init(i),s=Vo.sweepComplete(o,r,0,i,u,l,0,i,u,l);else{var c=br.mallocDouble(2*o*a),d=br.mallocInt32(a);a=jh(t,o,c,d),a>0&&(Vo.init(i+a),o===1?s=Vo.sweepBipartite(o,r,0,i,u,l,0,a,c,d):s=w0(o,r,n,i,u,l,a,c,d),br.free(c),br.free(d))}br.free(u),br.free(l)}return s}}}var ha;function qh(e,t){ha.push([e,t])}function x0(e){return ha=[],Wo(e,e,qh,!0),ha}function k0(e,t){return ha=[],Wo(e,t,qh,!1),ha}function S0(e,t,r){var n;switch(arguments.length){case 1:return x0(e);case 2:return typeof t=="function"?Wo(e,e,t,!0):k0(e,t);case 3:return Wo(e,t,r,!1);default:throw new Error("box-intersect: Invalid arguments")}}});var vm=pt((VM,qo)=>{m();var Gh,Qh,Xh,Zh,em,tm,nm,rm,im,zo,pc,am,om,sm,wi,lm,cm,um,dm,fm,pm,hm,mm,gm,jo;(function(e){var t=typeof window=="object"?window:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){e(r(t,r(n)))}):typeof qo=="object"&&typeof qo.exports=="object"?e(r(t,r(qo.exports))):e(r(t));function r(n,i){return n!==t&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(a,o){return n[a]=i?i(a,o):o}}})(function(e){var t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)Object.prototype.hasOwnProperty.call(i,a)&&(n[a]=i[a])};Gh=function(n,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");t(n,i);function a(){this.constructor=n}n.prototype=i===null?Object.create(i):(a.prototype=i.prototype,new a)},Qh=Object.assign||function(n){for(var i,a=1,o=arguments.length;a=0;c--)(l=n[c])&&(u=(s<3?l(u):s>3?l(i,a,u):l(i,a))||u);return s>3&&u&&Object.defineProperty(i,a,u),u},em=function(n,i){return function(a,o){i(a,o,n)}},tm=function(n,i){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,i)},nm=function(n,i,a,o){function s(u){return u instanceof a?u:new a(function(l){l(u)})}return new(a||(a=Promise))(function(u,l){function c(p){try{f(o.next(p))}catch(g){l(g)}}function d(p){try{f(o.throw(p))}catch(g){l(g)}}function f(p){p.done?u(p.value):s(p.value).then(c,d)}f((o=o.apply(n,i||[])).next())})},rm=function(n,i){var a={label:0,sent:function(){if(u[0]&1)throw u[1];return u[1]},trys:[],ops:[]},o,s,u,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(f){return function(p){return d([f,p])}}function d(f){if(o)throw new TypeError("Generator is already executing.");for(;a;)try{if(o=1,s&&(u=f[0]&2?s.return:f[0]?s.throw||((u=s.return)&&u.call(s),0):s.next)&&!(u=u.call(s,f[1])).done)return u;switch(s=0,u&&(f=[f[0]&2,u.value]),f[0]){case 0:case 1:u=f;break;case 4:return a.label++,{value:f[1],done:!1};case 5:a.label++,s=f[1],f=[0];continue;case 7:f=a.ops.pop(),a.trys.pop();continue;default:if(u=a.trys,!(u=u.length>0&&u[u.length-1])&&(f[0]===6||f[0]===2)){a=0;continue}if(f[0]===3&&(!u||f[1]>u[0]&&f[1]=n.length&&(n=void 0),{value:n&&n[o++],done:!n}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")},pc=function(n,i){var a=typeof Symbol=="function"&&n[Symbol.iterator];if(!a)return n;var o=a.call(n),s,u=[],l;try{for(;(i===void 0||i-- >0)&&!(s=o.next()).done;)u.push(s.value)}catch(c){l={error:c}}finally{try{s&&!s.done&&(a=o.return)&&a.call(o)}finally{if(l)throw l.error}}return u},am=function(){for(var n=[],i=0;i1||c(y,b)})})}function c(y,b){try{d(o[y](b))}catch(k){g(u[0][3],k)}}function d(y){y.value instanceof wi?Promise.resolve(y.value.v).then(f,p):g(u[0][2],y)}function f(y){c("next",y)}function p(y){c("throw",y)}function g(y,b){y(b),u.shift(),u.length&&c(u[0][0],u[0][1])}},cm=function(n){var i,a;return i={},o("next"),o("throw",function(s){throw s}),o("return"),i[Symbol.iterator]=function(){return this},i;function o(s,u){i[s]=n[s]?function(l){return(a=!a)?{value:wi(n[s](l)),done:s==="return"}:u?u(l):l}:u}},um=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=n[Symbol.asyncIterator],a;return i?i.call(n):(n=typeof zo=="function"?zo(n):n[Symbol.iterator](),a={},o("next"),o("throw"),o("return"),a[Symbol.asyncIterator]=function(){return this},a);function o(u){a[u]=n[u]&&function(l){return new Promise(function(c,d){l=n[u](l),s(c,d,l.done,l.value)})}}function s(u,l,c,d){Promise.resolve(d).then(function(f){u({value:f,done:c})},l)}},dm=function(n,i){return Object.defineProperty?Object.defineProperty(n,"raw",{value:i}):n.raw=i,n};var r=Object.create?function(n,i){Object.defineProperty(n,"default",{enumerable:!0,value:i})}:function(n,i){n.default=i};fm=function(n){if(n&&n.__esModule)return n;var i={};if(n!=null)for(var a in n)a!=="default"&&Object.prototype.hasOwnProperty.call(n,a)&&jo(i,n,a);return r(i,n),i},pm=function(n){return n&&n.__esModule?n:{default:n}},hm=function(n,i,a,o){if(a==="a"&&!o)throw new TypeError("Private accessor was defined without a getter");if(typeof i=="function"?n!==i||!o:!i.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return a==="m"?o:a==="a"?o.call(n):o?o.value:i.get(n)},mm=function(n,i,a,o,s){if(o==="m")throw new TypeError("Private method is not writable");if(o==="a"&&!s)throw new TypeError("Private accessor was defined without a setter");if(typeof i=="function"?n!==i||!s:!i.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return o==="a"?s.call(n,a):s?s.value=a:i.set(n,a),a},gm=function(n,i){if(i===null||typeof i!="object"&&typeof i!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof n=="function"?i===n:n.has(i)},e("__extends",Gh),e("__assign",Qh),e("__rest",Xh),e("__decorate",Zh),e("__param",em),e("__metadata",tm),e("__awaiter",nm),e("__generator",rm),e("__exportStar",im),e("__createBinding",jo),e("__values",zo),e("__read",pc),e("__spread",am),e("__spreadArrays",om),e("__spreadArray",sm),e("__await",wi),e("__asyncGenerator",lm),e("__asyncDelegator",cm),e("__asyncValues",um),e("__makeTemplateObject",dm),e("__importStar",fm),e("__importDefault",pm),e("__classPrivateFieldGet",hm),e("__classPrivateFieldSet",mm),e("__classPrivateFieldIn",gm)})});var yc=pt(Pe=>{m();"use strict";Object.defineProperty(Pe,"__esModule",{value:!0});var nt=require("obsidian"),gc="YYYY-MM-DD",vc="gggg-[W]ww",Sm="YYYY-MM",_m="YYYY-[Q]Q",Cm="YYYY";function ga(e){let t=window.app.plugins.getPlugin("periodic-notes");return t&&t.settings?.[e]?.enabled}function va(){try{let{internalPlugins:e,plugins:t}=window.app;if(ga("daily")){let{format:a,folder:o,template:s}=t.getPlugin("periodic-notes")?.settings?.daily||{};return{format:a||gc,folder:o?.trim()||"",template:s?.trim()||""}}let{folder:r,format:n,template:i}=e.getPluginById("daily-notes")?.instance?.options||{};return{format:n||gc,folder:r?.trim()||"",template:i?.trim()||""}}catch(e){console.info("No custom daily note settings found!",e)}}function ya(){try{let e=window.app.plugins,t=e.getPlugin("calendar")?.options,r=e.getPlugin("periodic-notes")?.settings?.weekly;if(ga("weekly"))return{format:r.format||vc,folder:r.folder?.trim()||"",template:r.template?.trim()||""};let n=t||{};return{format:n.weeklyNoteFormat||vc,folder:n.weeklyNoteFolder?.trim()||"",template:n.weeklyNoteTemplate?.trim()||""}}catch(e){console.info("No custom weekly note settings found!",e)}}function ba(){let e=window.app.plugins;try{let t=ga("monthly")&&e.getPlugin("periodic-notes")?.settings?.monthly||{};return{format:t.format||Sm,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom monthly note settings found!",t)}}function wa(){let e=window.app.plugins;try{let t=ga("quarterly")&&e.getPlugin("periodic-notes")?.settings?.quarterly||{};return{format:t.format||_m,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom quarterly note settings found!",t)}}function Ea(){let e=window.app.plugins;try{let t=ga("yearly")&&e.getPlugin("periodic-notes")?.settings?.yearly||{};return{format:t.format||Cm,folder:t.folder?.trim()||"",template:t.template?.trim()||""}}catch(t){console.info("No custom yearly note settings found!",t)}}function Dm(...e){let t=[];for(let n=0,i=e.length;n{let T=n(),C=e.clone().set({hour:T.get("hour"),minute:T.get("minute"),second:T.get("second")});return g&&C.add(parseInt(y,10),b),k?C.format(k.substring(1).trim()):C.format(a)}).replace(/{{\s*yesterday\s*}}/gi,e.clone().subtract(1,"day").format(a)).replace(/{{\s*tomorrow\s*}}/gi,e.clone().add(1,"d").format(a)));return t.foldManager.save(d,u),d}catch(d){console.error(`Failed to create file: '${c}'`,d),new nt.Notice("Unable to create new file.")}}function B0(e,t){return t[Dn(e,"day")]??null}function K0(){let{vault:e}=window.app,{folder:t}=va(),r=e.getAbstractFileByPath(nt.normalizePath(t));if(!r)throw new Im("Failed to find daily notes folder");let n={};return nt.Vault.recurseChildren(r,i=>{if(i instanceof nt.TFile){let a=Si(i,"day");if(a){let o=Dn(a,"day");n[o]=i}}}),n}var Lm=class extends Error{};function $0(){let{moment:e}=window,t=e.localeData()._week.dow,r=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];for(;t;)r.push(r.shift()),t--;return r}function U0(e){return $0().indexOf(e.toLowerCase())}async function Pm(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=ya(),[a,o]=await ki(r),s=e.format(n),u=await xa(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,g,y)=>{let b=window.moment(),k=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&k.add(parseInt(p,10),g),y?k.format(y.substring(1).trim()):k.format(n)}).replace(/{{\s*title\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi,(c,d,f)=>{let p=U0(d);return e.weekday(p).format(f.trim())}));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new nt.Notice("Unable to create new file.")}}function V0(e,t){return t[Dn(e,"week")]??null}function W0(){let e={};if(!Hm())return e;let{vault:t}=window.app,{folder:r}=ya(),n=t.getAbstractFileByPath(nt.normalizePath(r));if(!n)throw new Lm("Failed to find weekly notes folder");return nt.Vault.recurseChildren(n,i=>{if(i instanceof nt.TFile){let a=Si(i,"week");if(a){let o=Dn(a,"week");e[o]=i}}}),e}var Fm=class extends Error{};async function Nm(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=ba(),[a,o]=await ki(r),s=e.format(n),u=await xa(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,g,y)=>{let b=window.moment(),k=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&k.add(parseInt(p,10),g),y?k.format(y.substring(1).trim()):k.format(n)}).replace(/{{\s*date\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new nt.Notice("Unable to create new file.")}}function z0(e,t){return t[Dn(e,"month")]??null}function j0(){let e={};if(!Bm())return e;let{vault:t}=window.app,{folder:r}=ba(),n=t.getAbstractFileByPath(nt.normalizePath(r));if(!n)throw new Fm("Failed to find monthly notes folder");return nt.Vault.recurseChildren(n,i=>{if(i instanceof nt.TFile){let a=Si(i,"month");if(a){let o=Dn(a,"month");e[o]=i}}}),e}var Om=class extends Error{};async function q0(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=wa(),[a,o]=await ki(r),s=e.format(n),u=await xa(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,g,y)=>{let b=window.moment(),k=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&k.add(parseInt(p,10),g),y?k.format(y.substring(1).trim()):k.format(n)}).replace(/{{\s*date\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new nt.Notice("Unable to create new file.")}}function Y0(e,t){return t[Dn(e,"quarter")]??null}function J0(){let e={};if(!Km())return e;let{vault:t}=window.app,{folder:r}=wa(),n=t.getAbstractFileByPath(nt.normalizePath(r));if(!n)throw new Om("Failed to find quarterly notes folder");return nt.Vault.recurseChildren(n,i=>{if(i instanceof nt.TFile){let a=Si(i,"quarter");if(a){let o=Dn(a,"quarter");e[o]=i}}}),e}var Rm=class extends Error{};async function G0(e){let{vault:t}=window.app,{template:r,format:n,folder:i}=Ea(),[a,o]=await ki(r),s=e.format(n),u=await xa(i,s);try{let l=await t.create(u,a.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(c,d,f,p,g,y)=>{let b=window.moment(),k=e.clone().set({hour:b.get("hour"),minute:b.get("minute"),second:b.get("second")});return f&&k.add(parseInt(p,10),g),y?k.format(y.substring(1).trim()):k.format(n)}).replace(/{{\s*date\s*}}/gi,s).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,s));return window.app.foldManager.save(l,o),l}catch(l){console.error(`Failed to create file: '${u}'`,l),new nt.Notice("Unable to create new file.")}}function Q0(e,t){return t[Dn(e,"year")]??null}function X0(){let e={};if(!$m())return e;let{vault:t}=window.app,{folder:r}=Ea(),n=t.getAbstractFileByPath(nt.normalizePath(r));if(!n)throw new Rm("Failed to find yearly notes folder");return nt.Vault.recurseChildren(n,i=>{if(i instanceof nt.TFile){let a=Si(i,"year");if(a){let o=Dn(a,"year");e[o]=i}}}),e}function Z0(){let{app:e}=window,t=e.internalPlugins.plugins["daily-notes"];if(t&&t.enabled)return!0;let r=e.plugins.getPlugin("periodic-notes");return r&&r.settings?.daily?.enabled}function Hm(){let{app:e}=window;if(e.plugins.getPlugin("calendar"))return!0;let t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.weekly?.enabled}function Bm(){let{app:e}=window,t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.monthly?.enabled}function Km(){let{app:e}=window,t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.quarterly?.enabled}function $m(){let{app:e}=window,t=e.plugins.getPlugin("periodic-notes");return t&&t.settings?.yearly?.enabled}function eS(e){return{day:va,week:ya,month:ba,quarter:wa,year:Ea}[e]()}function tS(e,t){return{day:Am,month:Nm,week:Pm}[e](t)}Pe.DEFAULT_DAILY_NOTE_FORMAT=gc;Pe.DEFAULT_MONTHLY_NOTE_FORMAT=Sm;Pe.DEFAULT_QUARTERLY_NOTE_FORMAT=_m;Pe.DEFAULT_WEEKLY_NOTE_FORMAT=vc;Pe.DEFAULT_YEARLY_NOTE_FORMAT=Cm;Pe.appHasDailyNotesPluginLoaded=Z0;Pe.appHasMonthlyNotesPluginLoaded=Bm;Pe.appHasQuarterlyNotesPluginLoaded=Km;Pe.appHasWeeklyNotesPluginLoaded=Hm;Pe.appHasYearlyNotesPluginLoaded=$m;Pe.createDailyNote=Am;Pe.createMonthlyNote=Nm;Pe.createPeriodicNote=tS;Pe.createQuarterlyNote=q0;Pe.createWeeklyNote=Pm;Pe.createYearlyNote=G0;Pe.getAllDailyNotes=K0;Pe.getAllMonthlyNotes=j0;Pe.getAllQuarterlyNotes=J0;Pe.getAllWeeklyNotes=W0;Pe.getAllYearlyNotes=X0;Pe.getDailyNote=B0;Pe.getDailyNoteSettings=va;Pe.getDateFromFile=Si;Pe.getDateFromPath=H0;Pe.getDateUID=Dn;Pe.getMonthlyNote=z0;Pe.getMonthlyNoteSettings=ba;Pe.getPeriodicNoteSettings=eS;Pe.getQuarterlyNote=Y0;Pe.getQuarterlyNoteSettings=wa;Pe.getTemplateInfo=ki;Pe.getWeeklyNote=V0;Pe.getWeeklyNoteSettings=ya;Pe.getYearlyNote=Q0;Pe.getYearlyNoteSettings=Ea});var Ma=pt((fO,ed)=>{m();"use strict";var u_=Object.prototype.hasOwnProperty,qt="~";function Ta(){}Object.create&&(Ta.prototype=Object.create(null),new Ta().__proto__||(qt=!1));function d_(e,t,r){this.fn=e,this.context=t,this.once=r||!1}function fy(e,t,r,n,i){if(typeof r!="function")throw new TypeError("The listener must be a function");var a=new d_(r,n||e,i),o=qt?qt+t:t;return e._events[o]?e._events[o].fn?e._events[o]=[e._events[o],a]:e._events[o].push(a):(e._events[o]=a,e._eventsCount++),e}function Cs(e,t){--e._eventsCount==0?e._events=new Ta:delete e._events[t]}function $t(){this._events=new Ta,this._eventsCount=0}$t.prototype.eventNames=function(){var t=[],r,n;if(this._eventsCount===0)return t;for(n in r=this._events)u_.call(r,n)&&t.push(qt?n.slice(1):n);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(r)):t};$t.prototype.listeners=function(t){var r=qt?qt+t:t,n=this._events[r];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=new Array(a);i{m();(function(e,t){typeof pd=="object"&&typeof hd!="undefined"?hd.exports=t():typeof define=="function"&&define.amd?define(t):e.Mark=t()})(pd,function(){"use strict";var e=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(s){return typeof s}:function(s){return s&&typeof Symbol=="function"&&s.constructor===Symbol&&s!==Symbol.prototype?"symbol":typeof s},t=function(s,u){if(!(s instanceof u))throw new TypeError("Cannot call a class as a function")},r=function(){function s(u,l){for(var c=0;c1&&arguments[1]!==void 0?arguments[1]:!0,c=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:5e3;t(this,s),this.ctx=u,this.iframes=l,this.exclude=c,this.iframesTimeout=d}return r(s,[{key:"getContexts",value:function(){var l=void 0,c=[];return typeof this.ctx=="undefined"||!this.ctx?l=[]:NodeList.prototype.isPrototypeOf(this.ctx)?l=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?l=this.ctx:typeof this.ctx=="string"?l=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):l=[this.ctx],l.forEach(function(d){var f=c.filter(function(p){return p.contains(d)}).length>0;c.indexOf(d)===-1&&!f&&c.push(d)}),c}},{key:"getIframeContents",value:function(l,c){var d=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},f=void 0;try{var p=l.contentWindow;if(f=p.document,!p||!f)throw new Error("iframe inaccessible")}catch(g){d()}f&&c(f)}},{key:"isIframeBlank",value:function(l){var c="about:blank",d=l.getAttribute("src").trim(),f=l.contentWindow.location.href;return f===c&&d!==c&&d}},{key:"observeIframeLoad",value:function(l,c,d){var f=this,p=!1,g=null,y=function b(){if(!p){p=!0,clearTimeout(g);try{f.isIframeBlank(l)||(l.removeEventListener("load",b),f.getIframeContents(l,c,d))}catch(k){d()}}};l.addEventListener("load",y),g=setTimeout(y,this.iframesTimeout)}},{key:"onIframeReady",value:function(l,c,d){try{l.contentWindow.document.readyState==="complete"?this.isIframeBlank(l)?this.observeIframeLoad(l,c,d):this.getIframeContents(l,c,d):this.observeIframeLoad(l,c,d)}catch(f){d()}}},{key:"waitForIframes",value:function(l,c){var d=this,f=0;this.forEachIframe(l,function(){return!0},function(p){f++,d.waitForIframes(p.querySelector("html"),function(){--f||c()})},function(p){p||c()})}},{key:"forEachIframe",value:function(l,c,d){var f=this,p=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},g=l.querySelectorAll("iframe"),y=g.length,b=0;g=Array.prototype.slice.call(g);var k=function(){--y<=0&&p(b)};y||k(),g.forEach(function(T){s.matches(T,f.exclude)?k():f.onIframeReady(T,function(C){c(T)&&(b++,d(C)),k()},k)})}},{key:"createIterator",value:function(l,c,d){return document.createNodeIterator(l,c,d,!1)}},{key:"createInstanceOnIframe",value:function(l){return new s(l.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(l,c,d){var f=l.compareDocumentPosition(d),p=Node.DOCUMENT_POSITION_PRECEDING;if(f&p)if(c!==null){var g=c.compareDocumentPosition(d),y=Node.DOCUMENT_POSITION_FOLLOWING;if(g&y)return!0}else return!0;return!1}},{key:"getIteratorNode",value:function(l){var c=l.previousNode(),d=void 0;return c===null?d=l.nextNode():d=l.nextNode()&&l.nextNode(),{prevNode:c,node:d}}},{key:"checkIframeFilter",value:function(l,c,d,f){var p=!1,g=!1;return f.forEach(function(y,b){y.val===d&&(p=b,g=y.handled)}),this.compareNodeIframe(l,c,d)?(p===!1&&!g?f.push({val:d,handled:!0}):p!==!1&&!g&&(f[p].handled=!0),!0):(p===!1&&f.push({val:d,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(l,c,d,f){var p=this;l.forEach(function(g){g.handled||p.getIframeContents(g.val,function(y){p.createInstanceOnIframe(y).forEachNode(c,d,f)})})}},{key:"iterateThroughNodes",value:function(l,c,d,f,p){for(var g=this,y=this.createIterator(c,l,f),b=[],k=[],T=void 0,C=void 0,A=function(){var D=g.getIteratorNode(y);return C=D.prevNode,T=D.node,T};A();)this.iframes&&this.forEachIframe(c,function(H){return g.checkIframeFilter(T,C,H,b)},function(H){g.createInstanceOnIframe(H).forEachNode(l,function(D){return k.push(D)},f)}),k.push(T);k.forEach(function(H){d(H)}),this.iframes&&this.handleOpenIframes(b,l,d,f),p()}},{key:"forEachNode",value:function(l,c,d){var f=this,p=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},g=this.getContexts(),y=g.length;y||p(),g.forEach(function(b){var k=function(){f.iterateThroughNodes(l,b,c,d,function(){--y<=0&&p()})};f.iframes?f.waitForIframes(b,k):k()})}}],[{key:"matches",value:function(l,c){var d=typeof c=="string"?[c]:c,f=l.matches||l.matchesSelector||l.msMatchesSelector||l.mozMatchesSelector||l.oMatchesSelector||l.webkitMatchesSelector;if(f){var p=!1;return d.every(function(g){return f.call(l,g)?(p=!0,!1):!0}),p}else return!1}}]),s}(),a=function(){function s(u){t(this,s),this.ctx=u,this.ie=!1;var l=window.navigator.userAgent;(l.indexOf("MSIE")>-1||l.indexOf("Trident")>-1)&&(this.ie=!0)}return r(s,[{key:"log",value:function(l){var c=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"debug",d=this.opt.log;!this.opt.debug||(typeof d=="undefined"?"undefined":e(d))==="object"&&typeof d[c]=="function"&&d[c]("mark.js: "+l)}},{key:"escapeStr",value:function(l){return l.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(l){return this.opt.wildcards!=="disabled"&&(l=this.setupWildcardsRegExp(l)),l=this.escapeStr(l),Object.keys(this.opt.synonyms).length&&(l=this.createSynonymsRegExp(l)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(l=this.setupIgnoreJoinersRegExp(l)),this.opt.diacritics&&(l=this.createDiacriticsRegExp(l)),l=this.createMergedBlanksRegExp(l),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(l=this.createJoinersRegExp(l)),this.opt.wildcards!=="disabled"&&(l=this.createWildcardsRegExp(l)),l=this.createAccuracyRegExp(l),l}},{key:"createSynonymsRegExp",value:function(l){var c=this.opt.synonyms,d=this.opt.caseSensitive?"":"i",f=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var p in c)if(c.hasOwnProperty(p)){var g=c[p],y=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(p):this.escapeStr(p),b=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(g):this.escapeStr(g);y!==""&&b!==""&&(l=l.replace(new RegExp("("+this.escapeStr(y)+"|"+this.escapeStr(b)+")","gm"+d),f+("("+this.processSynomyms(y)+"|")+(this.processSynomyms(b)+")")+f))}return l}},{key:"processSynomyms",value:function(l){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(l=this.setupIgnoreJoinersRegExp(l)),l}},{key:"setupWildcardsRegExp",value:function(l){return l=l.replace(/(?:\\)*\?/g,function(c){return c.charAt(0)==="\\"?"?":""}),l.replace(/(?:\\)*\*/g,function(c){return c.charAt(0)==="\\"?"*":""})}},{key:"createWildcardsRegExp",value:function(l){var c=this.opt.wildcards==="withSpaces";return l.replace(/\u0001/g,c?"[\\S\\s]?":"\\S?").replace(/\u0002/g,c?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(l){return l.replace(/[^(|)\\]/g,function(c,d,f){var p=f.charAt(d+1);return/[(|)\\]/.test(p)||p===""?c:c+"\0"})}},{key:"createJoinersRegExp",value:function(l){var c=[],d=this.opt.ignorePunctuation;return Array.isArray(d)&&d.length&&c.push(this.escapeStr(d.join(""))),this.opt.ignoreJoiners&&c.push("\\u00ad\\u200b\\u200c\\u200d"),c.length?l.split(/\u0000+/).join("["+c.join("")+"]*"):l}},{key:"createDiacriticsRegExp",value:function(l){var c=this.opt.caseSensitive?"":"i",d=this.opt.caseSensitive?["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105","A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104","c\xE7\u0107\u010D","C\xC7\u0106\u010C","d\u0111\u010F","D\u0110\u010E","e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119","E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118","i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012B","I\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A","l\u0142","L\u0141","n\xF1\u0148\u0144","N\xD1\u0147\u0143","o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014D","O\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C","r\u0159","R\u0158","s\u0161\u015B\u0219\u015F","S\u0160\u015A\u0218\u015E","t\u0165\u021B\u0163","T\u0164\u021A\u0162","u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016B","U\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A","y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFF","Y\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178","z\u017E\u017C\u017A","Z\u017D\u017B\u0179"]:["a\xE0\xE1\u1EA3\xE3\u1EA1\u0103\u1EB1\u1EAF\u1EB3\u1EB5\u1EB7\xE2\u1EA7\u1EA5\u1EA9\u1EAB\u1EAD\xE4\xE5\u0101\u0105A\xC0\xC1\u1EA2\xC3\u1EA0\u0102\u1EB0\u1EAE\u1EB2\u1EB4\u1EB6\xC2\u1EA6\u1EA4\u1EA8\u1EAA\u1EAC\xC4\xC5\u0100\u0104","c\xE7\u0107\u010DC\xC7\u0106\u010C","d\u0111\u010FD\u0110\u010E","e\xE8\xE9\u1EBB\u1EBD\u1EB9\xEA\u1EC1\u1EBF\u1EC3\u1EC5\u1EC7\xEB\u011B\u0113\u0119E\xC8\xC9\u1EBA\u1EBC\u1EB8\xCA\u1EC0\u1EBE\u1EC2\u1EC4\u1EC6\xCB\u011A\u0112\u0118","i\xEC\xED\u1EC9\u0129\u1ECB\xEE\xEF\u012BI\xCC\xCD\u1EC8\u0128\u1ECA\xCE\xCF\u012A","l\u0142L\u0141","n\xF1\u0148\u0144N\xD1\u0147\u0143","o\xF2\xF3\u1ECF\xF5\u1ECD\xF4\u1ED3\u1ED1\u1ED5\u1ED7\u1ED9\u01A1\u1EDF\u1EE1\u1EDB\u1EDD\u1EE3\xF6\xF8\u014DO\xD2\xD3\u1ECE\xD5\u1ECC\xD4\u1ED2\u1ED0\u1ED4\u1ED6\u1ED8\u01A0\u1EDE\u1EE0\u1EDA\u1EDC\u1EE2\xD6\xD8\u014C","r\u0159R\u0158","s\u0161\u015B\u0219\u015FS\u0160\u015A\u0218\u015E","t\u0165\u021B\u0163T\u0164\u021A\u0162","u\xF9\xFA\u1EE7\u0169\u1EE5\u01B0\u1EEB\u1EE9\u1EED\u1EEF\u1EF1\xFB\xFC\u016F\u016BU\xD9\xDA\u1EE6\u0168\u1EE4\u01AF\u1EEA\u1EE8\u1EEC\u1EEE\u1EF0\xDB\xDC\u016E\u016A","y\xFD\u1EF3\u1EF7\u1EF9\u1EF5\xFFY\xDD\u1EF2\u1EF6\u1EF8\u1EF4\u0178","z\u017E\u017C\u017AZ\u017D\u017B\u0179"],f=[];return l.split("").forEach(function(p){d.every(function(g){if(g.indexOf(p)!==-1){if(f.indexOf(g)>-1)return!1;l=l.replace(new RegExp("["+g+"]","gm"+c),"["+g+"]"),f.push(g)}return!0})}),l}},{key:"createMergedBlanksRegExp",value:function(l){return l.replace(/[\s]+/gmi,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(l){var c=this,d="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~\xA1\xBF",f=this.opt.accuracy,p=typeof f=="string"?f:f.value,g=typeof f=="string"?[]:f.limiters,y="";switch(g.forEach(function(b){y+="|"+c.escapeStr(b)}),p){case"partially":default:return"()("+l+")";case"complementary":return y="\\s"+(y||this.escapeStr(d)),"()([^"+y+"]*"+l+"[^"+y+"]*)";case"exactly":return"(^|\\s"+y+")("+l+")(?=$|\\s"+y+")"}}},{key:"getSeparatedKeywords",value:function(l){var c=this,d=[];return l.forEach(function(f){c.opt.separateWordSearch?f.split(" ").forEach(function(p){p.trim()&&d.indexOf(p)===-1&&d.push(p)}):f.trim()&&d.indexOf(f)===-1&&d.push(f)}),{keywords:d.sort(function(f,p){return p.length-f.length}),length:d.length}}},{key:"isNumeric",value:function(l){return Number(parseFloat(l))==l}},{key:"checkRanges",value:function(l){var c=this;if(!Array.isArray(l)||Object.prototype.toString.call(l[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(l),[];var d=[],f=0;return l.sort(function(p,g){return p.start-g.start}).forEach(function(p){var g=c.callNoMatchOnInvalidRanges(p,f),y=g.start,b=g.end,k=g.valid;k&&(p.start=y,p.length=b-y,d.push(p),f=b)}),d}},{key:"callNoMatchOnInvalidRanges",value:function(l,c){var d=void 0,f=void 0,p=!1;return l&&typeof l.start!="undefined"?(d=parseInt(l.start,10),f=d+parseInt(l.length,10),this.isNumeric(l.start)&&this.isNumeric(l.length)&&f-c>0&&f-d>0?p=!0:(this.log("Ignoring invalid or overlapping range: "+(""+JSON.stringify(l))),this.opt.noMatch(l))):(this.log("Ignoring invalid range: "+JSON.stringify(l)),this.opt.noMatch(l)),{start:d,end:f,valid:p}}},{key:"checkWhitespaceRanges",value:function(l,c,d){var f=void 0,p=!0,g=d.length,y=c-g,b=parseInt(l.start,10)-y;return b=b>g?g:b,f=b+parseInt(l.length,10),f>g&&(f=g,this.log("End range automatically set to the max value of "+g)),b<0||f-b<0||b>g||f>g?(p=!1,this.log("Invalid range: "+JSON.stringify(l)),this.opt.noMatch(l)):d.substring(b,f).replace(/\s+/g,"")===""&&(p=!1,this.log("Skipping whitespace only range: "+JSON.stringify(l)),this.opt.noMatch(l)),{start:b,end:f,valid:p}}},{key:"getTextNodes",value:function(l){var c=this,d="",f=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(p){f.push({start:d.length,end:(d+=p.textContent).length,node:p})},function(p){return c.matchesExclude(p.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){l({value:d,nodes:f})})}},{key:"matchesExclude",value:function(l){return i.matches(l,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(l,c,d){var f=this.opt.element?this.opt.element:"mark",p=l.splitText(c),g=p.splitText(d-c),y=document.createElement(f);return y.setAttribute("data-markjs","true"),this.opt.className&&y.setAttribute("class",this.opt.className),y.textContent=p.textContent,p.parentNode.replaceChild(y,p),g}},{key:"wrapRangeInMappedTextNode",value:function(l,c,d,f,p){var g=this;l.nodes.every(function(y,b){var k=l.nodes[b+1];if(typeof k=="undefined"||k.start>c){if(!f(y.node))return!1;var T=c-y.start,C=(d>y.end?y.end:d)-y.start,A=l.value.substr(0,y.start),H=l.value.substr(C+y.start);if(y.node=g.wrapRangeInTextNode(y.node,T,C),l.value=A+H,l.nodes.forEach(function(D,K){K>=b&&(l.nodes[K].start>0&&K!==b&&(l.nodes[K].start-=C),l.nodes[K].end-=C)}),d-=C,p(y.node.previousSibling,y.start),d>y.end)c=y.end;else return!1}return!0})}},{key:"wrapMatches",value:function(l,c,d,f,p){var g=this,y=c===0?0:c+1;this.getTextNodes(function(b){b.nodes.forEach(function(k){k=k.node;for(var T=void 0;(T=l.exec(k.textContent))!==null&&T[y]!=="";)if(!!d(T[y],k)){var C=T.index;if(y!==0)for(var A=1;A{m();(function(t,r){typeof Ws=="object"&&typeof Id=="object"?Id.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Ws=="object"?Ws.Choices=r():t.Choices=r()})(window,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(n,i,a){r.o(n,i)||Object.defineProperty(n,i,{enumerable:!0,get:a})},r.r=function(n){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},r.t=function(n,i){if(i&1&&(n=r(n)),i&8||i&4&&typeof n=="object"&&n&&n.__esModule)return n;var a=Object.create(null);if(r.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:n}),i&2&&typeof n!="string")for(var o in n)r.d(a,o,function(s){return n[s]}.bind(null,o));return a},r.n=function(n){var i=n&&n.__esModule?function(){return n.default}:function(){return n};return r.d(i,"a",i),i},r.o=function(n,i){return Object.prototype.hasOwnProperty.call(n,i)},r.p="/public/assets/scripts/",r(r.s=4)}([function(e,t,r){"use strict";var n=function(A){return i(A)&&!a(A)};function i(C){return!!C&&typeof C=="object"}function a(C){var A=Object.prototype.toString.call(C);return A==="[object RegExp]"||A==="[object Date]"||u(C)}var o=typeof Symbol=="function"&&Symbol.for,s=o?Symbol.for("react.element"):60103;function u(C){return C.$$typeof===s}function l(C){return Array.isArray(C)?[]:{}}function c(C,A){return A.clone!==!1&&A.isMergeableObject(C)?k(l(C),C,A):C}function d(C,A,H){return C.concat(A).map(function(D){return c(D,H)})}function f(C,A){if(!A.customMerge)return k;var H=A.customMerge(C);return typeof H=="function"?H:k}function p(C){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(C).filter(function(A){return C.propertyIsEnumerable(A)}):[]}function g(C){return Object.keys(C).concat(p(C))}function y(C,A){try{return A in C&&!(Object.hasOwnProperty.call(C,A)&&Object.propertyIsEnumerable.call(C,A))}catch(H){return!1}}function b(C,A,H){var D={};return H.isMergeableObject(C)&&g(C).forEach(function(K){D[K]=c(C[K],H)}),g(A).forEach(function(K){y(C,K)||(!H.isMergeableObject(A[K])||!C[K]?D[K]=c(A[K],H):D[K]=f(K,H)(C[K],A[K],H))}),D}function k(C,A,H){H=H||{},H.arrayMerge=H.arrayMerge||d,H.isMergeableObject=H.isMergeableObject||n,H.cloneUnlessOtherwiseSpecified=c;var D=Array.isArray(A),K=Array.isArray(C),z=D===K;return z?D?H.arrayMerge(C,A,H):b(C,A,H):c(A,H)}k.all=function(A,H){if(!Array.isArray(A))throw new Error("first argument should be an array");return A.reduce(function(D,K){return k(D,K,H)},{})};var T=k;e.exports=T},function(e,t,r){"use strict";(function(n,i){var a=r(3),o;typeof self!="undefined"?o=self:typeof window!="undefined"?o=window:typeof n!="undefined"?o=n:o=i;var s=Object(a.a)(o);t.a=s}).call(this,r(5),r(6)(e))},function(e,t,r){(function(n,i){e.exports=i()})(this,function(){return function(n){var i={};function a(o){if(i[o])return i[o].exports;var s=i[o]={i:o,l:!1,exports:{}};return n[o].call(s.exports,s,s.exports,a),s.l=!0,s.exports}return a.m=n,a.c=i,a.d=function(o,s,u){a.o(o,s)||Object.defineProperty(o,s,{enumerable:!0,get:u})},a.r=function(o){typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(o,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(o,"__esModule",{value:!0})},a.t=function(o,s){if(1&s&&(o=a(o)),8&s||4&s&&typeof o=="object"&&o&&o.__esModule)return o;var u=Object.create(null);if(a.r(u),Object.defineProperty(u,"default",{enumerable:!0,value:o}),2&s&&typeof o!="string")for(var l in o)a.d(u,l,function(c){return o[c]}.bind(null,l));return u},a.n=function(o){var s=o&&o.__esModule?function(){return o.default}:function(){return o};return a.d(s,"a",s),s},a.o=function(o,s){return Object.prototype.hasOwnProperty.call(o,s)},a.p="",a(a.s=1)}([function(n,i){n.exports=function(a){return Array.isArray?Array.isArray(a):Object.prototype.toString.call(a)==="[object Array]"}},function(n,i,a){function o(f){return(o=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(p){return typeof p}:function(p){return p&&typeof Symbol=="function"&&p.constructor===Symbol&&p!==Symbol.prototype?"symbol":typeof p})(f)}function s(f,p){for(var g=0;g1&&arguments[1]!==void 0?arguments[1]:{limit:!1};this._log(`--------- +Search pattern: "`.concat(b,'"'));var T=this._prepareSearchers(b),C=T.tokenSearchers,A=T.fullSearcher,H=this._search(C,A),D=H.weights,K=H.results;return this._computeScore(D,K),this.options.shouldSort&&this._sort(K),k.limit&&typeof k.limit=="number"&&(K=K.slice(0,k.limit)),this._format(K)}},{key:"_prepareSearchers",value:function(){var b=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",k=[];if(this.options.tokenize)for(var T=b.split(this.options.tokenSeparator),C=0,A=T.length;C0&&arguments[0]!==void 0?arguments[0]:[],k=arguments.length>1?arguments[1]:void 0,T=this.list,C={},A=[];if(typeof T[0]=="string"){for(var H=0,D=T.length;H1)throw new Error("Key weight has to be > 0 and <= 1");G=G.name}else K[G]={weight:1};this._analyze({key:G,value:this.options.getFn(Z,G),record:Z,index:z},{resultMap:C,results:A,tokenSearchers:b,fullSearcher:k})}return{weights:K,results:A}}},{key:"_analyze",value:function(b,k){var T=b.key,C=b.arrayIndex,A=C===void 0?-1:C,H=b.value,D=b.record,K=b.index,z=k.tokenSearchers,U=z===void 0?[]:z,Z=k.fullSearcher,J=Z===void 0?[]:Z,se=k.resultMap,G=se===void 0?{}:se,Q=k.results,ie=Q===void 0?[]:Q;if(H!=null){var he=!1,pe=-1,ge=0;if(typeof H=="string"){this._log(` +Key: `.concat(T===""?"-":T));var be=J.search(H);if(this._log('Full text: "'.concat(H,'", score: ').concat(be.score)),this.options.tokenize){for(var Te=H.split(this.options.tokenSeparator),F=[],N=0;N-1&&(Ue=(Ue+pe)/2),this._log("Score average:",Ue);var dt=!this.options.tokenize||!this.options.matchAllTokens||ge>=U.length;if(this._log(` +Check Matches: `.concat(dt)),(he||be.isMatch)&&dt){var vt=G[K];vt?vt.output.push({key:T,arrayIndex:A,value:H,score:Ue,matchedIndices:be.matchedIndices}):(G[K]={item:D,output:[{key:T,arrayIndex:A,value:H,score:Ue,matchedIndices:be.matchedIndices}]},ie.push(G[K]))}}else if(c(H))for(var Ot=0,Bn=H.length;Ot-1&&(pe.arrayIndex=re.arrayIndex),Z.matches.push(pe)}}}),this.options.includeScore&&C.push(function(ee,Z){Z.score=ee.score});for(var A=0,N=b.length;Ax)return s(y,this.pattern,D);var C=this.options,A=C.location,N=C.distance,T=C.threshold,O=C.findAllMatches,W=C.minMatchCharLength;return u(y,this.pattern,this.patternAlphabet,{location:A,distance:N,threshold:T,findAllMatches:O,minMatchCharLength:W})}}])&&o(f.prototype,p),m&&o(f,m),d}();n.exports=c},function(n,i){var a=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;n.exports=function(o,s){var u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:/ +/g,l=new RegExp(s.replace(a,"\\$&").replace(u,"|")),c=o.match(l),d=!!c,f=[];if(d)for(var p=0,m=c.length;p=P;V-=1){var j=V-1,q=c[u.charAt(j)];if(q&&(Z[j]=1),Je[V]=(Je[V+1]<<1|1)&q,be!==0&&(Je[V]|=(re[V+1]|re[V])<<1|1|re[V+1]),Je[V]&ve&&(pe=o(l,{errors:be,currentLocation:j,expectedLocation:T,distance:y}))<=W){if(W=pe,(z=j)<=T)break;P=Math.max(1,2*T-z)}}if(o(l,{errors:be+1,currentLocation:T,expectedLocation:T,distance:y})>W)break;re=Je}return{isMatch:z>=0,score:pe===0?.001:pe,matchedIndices:s(Z,N)}}},function(n,i){n.exports=function(a,o){var s=o.errors,u=s===void 0?0:s,l=o.currentLocation,c=l===void 0?0:l,d=o.expectedLocation,f=d===void 0?0:d,p=o.distance,m=p===void 0?100:p,y=u/a.length,b=Math.abs(f-c);return m?y+b/m:b?1:y}},function(n,i){n.exports=function(){for(var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,s=[],u=-1,l=-1,c=0,d=a.length;c=o&&s.push([u,l]),u=-1)}return a[c-1]&&c-u>=o&&s.push([u,c-1]),s}},function(n,i){n.exports=function(a){for(var o={},s=a.length,u=0;u0)return"Unexpected "+(H.length>1?"keys":"key")+" "+('"'+H.join('", "')+'" found in '+I+". ")+"Expected to find one of the known reducer keys instead: "+('"'+k.join('", "')+'". Unexpected keys will be ignored.')}function y(R){Object.keys(R).forEach(function(w){var E=R[w],v=E(void 0,{type:l.INIT});if(typeof v=="undefined")throw new Error('Reducer "'+w+`" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(typeof E(void 0,{type:l.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error('Reducer "'+w+'" returned undefined when probed with a random type. '+("Don't try to handle "+l.INIT+' or other actions in "redux/*" ')+"namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.")})}function b(R){for(var w=Object.keys(R),E={},v=0;v-1?R.map(function(E){var v=E;return v.id===parseInt(w.choiceId,10)&&(v.selected=!0),v}):R;case"REMOVE_ITEM":return w.choiceId>-1?R.map(function(E){var v=E;return v.id===parseInt(w.choiceId,10)&&(v.selected=!1),v}):R;case"FILTER_CHOICES":return R.map(function(E){var v=E;return v.active=w.results.some(function(k){var I=k.item,H=k.score;return I.id===v.id?(v.score=H,!0):!1}),v});case"ACTIVATE_CHOICES":return R.map(function(E){var v=E;return v.active=w.active,v});case"CLEAR_CHOICES":return X;default:return R}}var re={loading:!1},pe=function(w,E){switch(w===void 0&&(w=re),E.type){case"SET_IS_LOADING":return{loading:E.isLoading};default:return w}},he=pe,ve=function(w,E){return Math.floor(Math.random()*(E-w)+w)},be=function(w){return Array.from({length:w},function(){return ve(0,36).toString(36)}).join("")},De=function(w,E){var v=w.id||w.name&&w.name+"-"+be(2)||be(4);return v=v.replace(/(:|\.|\[|\]|,)/g,""),v=E+"-"+v,v},L=function(w){return Object.prototype.toString.call(w).slice(8,-1)},P=function(w,E){return E!=null&&L(E)===w},ct=function(w,E){return E===void 0&&(E=document.createElement("div")),w.nextSibling?w.parentNode.insertBefore(E,w.nextSibling):w.parentNode.appendChild(E),E.appendChild(w)},Je=function(w,E,v){if(v===void 0&&(v=1),!(!(w instanceof Element)||typeof E!="string")){for(var k=(v>0?"next":"previous")+"ElementSibling",I=w[k];I;){if(I.matches(E))return I;I=I[k]}return I}},V=function(w,E,v){if(v===void 0&&(v=1),!w)return!1;var k;return v>0?k=E.scrollTop+E.offsetHeight>=w.offsetTop+w.offsetHeight:k=w.offsetTop>=E.scrollTop,k},j=function(w){return typeof w!="string"?w:w.replace(/&/g,"&").replace(/>/g,"&rt;").replace(/"'+j(w)+'"'},maxItemText:function(w){return"Only "+w+" values can be added"},valueComparer:function(w,E){return w===E},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:Xr},Ot={showDropdown:"showDropdown",hideDropdown:"hideDropdown",change:"change",choice:"choice",search:"search",addItem:"addItem",removeItem:"removeItem",highlightItem:"highlightItem",highlightChoice:"highlightChoice"},Vt={ADD_CHOICE:"ADD_CHOICE",FILTER_CHOICES:"FILTER_CHOICES",ACTIVATE_CHOICES:"ACTIVATE_CHOICES",CLEAR_CHOICES:"CLEAR_CHOICES",ADD_GROUP:"ADD_GROUP",ADD_ITEM:"ADD_ITEM",REMOVE_ITEM:"REMOVE_ITEM",HIGHLIGHT_ITEM:"HIGHLIGHT_ITEM",CLEAR_ALL:"CLEAR_ALL"},yt={BACK_KEY:46,DELETE_KEY:8,ENTER_KEY:13,A_KEY:65,ESC_KEY:27,UP_KEY:38,DOWN_KEY:40,PAGE_UP_KEY:33,PAGE_DOWN_KEY:34},Y="text",oe="select-one",Ee="select-multiple",ze=4,Tt=function(){function R(E){var v=E.element,k=E.type,I=E.classNames,H=E.position;this.element=v,this.classNames=I,this.type=k,this.position=H,this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var w=R.prototype;return w.addEventListeners=function(){this.element.addEventListener("focus",this._onFocus),this.element.addEventListener("blur",this._onBlur)},w.removeEventListeners=function(){this.element.removeEventListener("focus",this._onFocus),this.element.removeEventListener("blur",this._onBlur)},w.shouldFlip=function(v){if(typeof v!="number")return!1;var k=!1;return this.position==="auto"?k=!window.matchMedia("(min-height: "+(v+1)+"px)").matches:this.position==="top"&&(k=!0),k},w.setActiveDescendant=function(v){this.element.setAttribute("aria-activedescendant",v)},w.removeActiveDescendant=function(){this.element.removeAttribute("aria-activedescendant")},w.open=function(v){this.element.classList.add(this.classNames.openState),this.element.setAttribute("aria-expanded","true"),this.isOpen=!0,this.shouldFlip(v)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)},w.close=function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute("aria-expanded","false"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)},w.focus=function(){this.isFocussed||this.element.focus()},w.addFocusState=function(){this.element.classList.add(this.classNames.focusState)},w.removeFocusState=function(){this.element.classList.remove(this.classNames.focusState)},w.enable=function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute("aria-disabled"),this.type===oe&&this.element.setAttribute("tabindex","0"),this.isDisabled=!1},w.disable=function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute("aria-disabled","true"),this.type===oe&&this.element.setAttribute("tabindex","-1"),this.isDisabled=!0},w.wrap=function(v){ct(v,this.element)},w.unwrap=function(v){this.element.parentNode.insertBefore(v,this.element),this.element.parentNode.removeChild(this.element)},w.addLoadingState=function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute("aria-busy","true"),this.isLoading=!0},w.removeLoadingState=function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute("aria-busy"),this.isLoading=!1},w._onFocus=function(){this.isFocussed=!0},w._onBlur=function(){this.isFocussed=!1},R}();function En(R,w){for(var E=0;E0?this.element.scrollTop+ae-U:v.offsetTop;requestAnimationFrame(function(){I._animateScroll(de,k)})}},w._scrollDown=function(v,k,I){var H=(I-v)/k,U=H>1?H:1;this.element.scrollTop=v+U},w._scrollUp=function(v,k,I){var H=(v-I)/k,U=H>1?H:1;this.element.scrollTop=v-U},w._animateScroll=function(v,k){var I=this,H=ze,U=this.element.scrollTop,J=!1;k>0?(this._scrollDown(U,H,v),Uv&&(J=!0)),J&&requestAnimationFrame(function(){I._animateScroll(v,k)})},R}();function fn(R,w){for(var E=0;E0?"treeitem":"option"),Object.assign(Oe.dataset,{choice:"",id:de,value:xe,selectText:v}),Ce?(Oe.classList.add(J),Oe.dataset.choiceDisabled="",Oe.setAttribute("aria-disabled","true")):(Oe.classList.add(H),Oe.dataset.choiceSelectable=""),Oe},input:function(w,E){var v=w.input,k=w.inputCloned,I=Object.assign(document.createElement("input"),{type:"text",className:v+" "+k,autocomplete:"off",autocapitalize:"off",spellcheck:!1});return I.setAttribute("role","textbox"),I.setAttribute("aria-autocomplete","list"),I.setAttribute("aria-label",E),I},dropdown:function(w){var E=w.list,v=w.listDropdown,k=document.createElement("div");return k.classList.add(E,v),k.setAttribute("aria-expanded","false"),k},notice:function(w,E,v){var k=w.item,I=w.itemChoice,H=w.noResults,U=w.noChoices;v===void 0&&(v="");var J=[k,I];return v==="no-choices"?J.push(U):v==="no-results"&&J.push(H),Object.assign(document.createElement("div"),{innerHTML:E,className:J.join(" ")})},option:function(w){var E=w.label,v=w.value,k=w.customProperties,I=w.active,H=w.disabled,U=new Option(E,v,!1,I);return k&&(U.dataset.customProperties=k),U.disabled=H,U}},se=Q,ie=function(w){var E=w.value,v=w.label,k=w.id,I=w.groupId,H=w.disabled,U=w.elementId,J=w.customProperties,ae=w.placeholder,de=w.keyCode;return{type:Vt.ADD_CHOICE,value:E,label:v,id:k,groupId:I,disabled:H,elementId:U,customProperties:J,placeholder:ae,keyCode:de}},me=function(w){return{type:Vt.FILTER_CHOICES,results:w}},ue=function(w){return w===void 0&&(w=!0),{type:Vt.ACTIVATE_CHOICES,active:w}},Pe=function(){return{type:Vt.CLEAR_CHOICES}},Fe=function(w){var E=w.value,v=w.label,k=w.id,I=w.choiceId,H=w.groupId,U=w.customProperties,J=w.placeholder,ae=w.keyCode;return{type:Vt.ADD_ITEM,value:E,label:v,id:k,choiceId:I,groupId:H,customProperties:U,placeholder:J,keyCode:ae}},Me=function(w,E){return{type:Vt.REMOVE_ITEM,id:w,choiceId:E}},Qt=function(w,E){return{type:Vt.HIGHLIGHT_ITEM,id:w,highlighted:E}},bt=function(w){var E=w.value,v=w.id,k=w.active,I=w.disabled;return{type:Vt.ADD_GROUP,value:E,id:v,active:k,disabled:I}},ar=function(){return{type:"CLEAR_ALL"}},or=function(w){return{type:"RESET_TO",state:w}},Wi=function(w){return{type:"SET_IS_LOADING",isLoading:w}};function Za(R,w){for(var E=0;E=0?this._store.getGroupById(U):null;return this._store.dispatch(Qt(I,!0)),k&&this.passedElement.triggerEvent(Ot.highlightItem,{id:I,value:ae,label:xe,groupValue:ye&&ye.value?ye.value:null}),this},w.unhighlightItem=function(v){if(!v)return this;var k=v.id,I=v.groupId,H=I===void 0?-1:I,U=v.value,J=U===void 0?"":U,ae=v.label,de=ae===void 0?"":ae,xe=H>=0?this._store.getGroupById(H):null;return this._store.dispatch(Qt(k,!1)),this.passedElement.triggerEvent(Ot.highlightItem,{id:k,value:J,label:de,groupValue:xe&&xe.value?xe.value:null}),this},w.highlightAll=function(){var v=this;return this._store.items.forEach(function(k){return v.highlightItem(k)}),this},w.unhighlightAll=function(){var v=this;return this._store.items.forEach(function(k){return v.unhighlightItem(k)}),this},w.removeActiveItemsByValue=function(v){var k=this;return this._store.activeItems.filter(function(I){return I.value===v}).forEach(function(I){return k._removeItem(I)}),this},w.removeActiveItems=function(v){var k=this;return this._store.activeItems.filter(function(I){var H=I.id;return H!==v}).forEach(function(I){return k._removeItem(I)}),this},w.removeHighlightedItems=function(v){var k=this;return v===void 0&&(v=!1),this._store.highlightedActiveItems.forEach(function(I){k._removeItem(I),v&&k._triggerChange(I.value)}),this},w.showDropdown=function(v){var k=this;return this.dropdown.isActive?this:(requestAnimationFrame(function(){k.dropdown.show(),k.containerOuter.open(k.dropdown.distanceFromTopWindow),!v&&k._canSearch&&k.input.focus(),k.passedElement.triggerEvent(Ot.showDropdown,{})}),this)},w.hideDropdown=function(v){var k=this;return this.dropdown.isActive?(requestAnimationFrame(function(){k.dropdown.hide(),k.containerOuter.close(),!v&&k._canSearch&&(k.input.removeActiveDescendant(),k.input.blur()),k.passedElement.triggerEvent(Ot.hideDropdown,{})}),this):this},w.getValue=function(v){v===void 0&&(v=!1);var k=this._store.activeItems.reduce(function(I,H){var U=v?H.value:H;return I.push(U),I},[]);return this._isSelectOneElement?k[0]:k},w.setValue=function(v){var k=this;return this.initialised?(v.forEach(function(I){return k._setChoiceOrItem(I)}),this):this},w.setChoiceByValue=function(v){var k=this;if(!this.initialised||this._isTextElement)return this;var I=Array.isArray(v)?v:[v];return I.forEach(function(H){return k._findAndSelectChoiceByValue(H)}),this},w.setChoices=function(v,k,I,H){var U=this;if(v===void 0&&(v=[]),k===void 0&&(k="value"),I===void 0&&(I="label"),H===void 0&&(H=!1),!this.initialised)throw new ReferenceError("setChoices was called on a non-initialized instance of Choices");if(!this._isSelectElement)throw new TypeError("setChoices can't be used with INPUT based Choices");if(typeof k!="string"||!k)throw new TypeError("value parameter must be a name of 'value' field in passed objects");if(H&&this.clearChoices(),typeof v=="function"){var J=v(this);if(typeof Promise=="function"&&J instanceof Promise)return new Promise(function(ae){return requestAnimationFrame(ae)}).then(function(){return U._handleLoadingState(!0)}).then(function(){return J}).then(function(ae){return U.setChoices(ae,k,I,H)}).catch(function(ae){U.config.silent||console.error(ae)}).then(function(){return U._handleLoadingState(!1)}).then(function(){return U});if(!Array.isArray(J))throw new TypeError(".setChoices first argument function must return either array of choices or Promise, got: "+typeof J);return this.setChoices(J,k,I,!1)}if(!Array.isArray(v))throw new TypeError(".setChoices must be called either with array of choices with a function resulting into Promise of array of choices");return this.containerOuter.removeLoadingState(),this._startLoading(),v.forEach(function(ae){ae.choices?U._addGroup({id:parseInt(ae.id,10)||null,group:ae,valueKey:k,labelKey:I}):U._addChoice({value:ae[k],label:ae[I],isSelected:ae.selected,isDisabled:ae.disabled,customProperties:ae.customProperties,placeholder:ae.placeholder})}),this._stopLoading(),this},w.clearChoices=function(){return this._store.dispatch(Pe()),this},w.clearStore=function(){return this._store.dispatch(ar()),this},w.clearInput=function(){var v=!this._isSelectOneElement;return this.input.clear(v),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch(ue(!0))),this},w._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var v=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,k=this._isSelectElement,I=this._currentState.items!==this._prevState.items;!v||(k&&this._renderChoices(),I&&this._renderItems(),this._prevState=this._currentState)}},w._renderChoices=function(){var v=this,k=this._store,I=k.activeGroups,H=k.activeChoices,U=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame(function(){return v.choiceList.scrollToTop()}),I.length>=1&&!this._isSearching){var J=H.filter(function(Ie){return Ie.placeholder===!0&&Ie.groupId===-1});J.length>=1&&(U=this._createChoicesFragment(J,U)),U=this._createGroupsFragment(I,H,U)}else H.length>=1&&(U=this._createChoicesFragment(H,U));if(U.childNodes&&U.childNodes.length>0){var ae=this._store.activeItems,de=this._canAddItem(ae,this.input.value);de.response?(this.choiceList.append(U),this._highlightChoice()):this.choiceList.append(this._getTemplate("notice",de.notice))}else{var xe,ye;this._isSearching?(ye=typeof this.config.noResultsText=="function"?this.config.noResultsText():this.config.noResultsText,xe=this._getTemplate("notice",ye,"no-results")):(ye=typeof this.config.noChoicesText=="function"?this.config.noChoicesText():this.config.noChoicesText,xe=this._getTemplate("notice",ye,"no-choices")),this.choiceList.append(xe)}},w._renderItems=function(){var v=this._store.activeItems||[];this.itemList.clear();var k=this._createItemsFragment(v);k.childNodes&&this.itemList.append(k)},w._createGroupsFragment=function(v,k,I){var H=this;I===void 0&&(I=document.createDocumentFragment());var U=function(ae){return k.filter(function(de){return H._isSelectOneElement?de.groupId===ae.id:de.groupId===ae.id&&(H.config.renderSelectedChoices==="always"||!de.selected)})};return this.config.shouldSort&&v.sort(this.config.sorter),v.forEach(function(J){var ae=U(J);if(ae.length>=1){var de=H._getTemplate("choiceGroup",J);I.appendChild(de),H._createChoicesFragment(ae,I,!0)}}),I},w._createChoicesFragment=function(v,k,I){var H=this;k===void 0&&(k=document.createDocumentFragment()),I===void 0&&(I=!1);var U=this.config,J=U.renderSelectedChoices,ae=U.searchResultLimit,de=U.renderChoiceLimit,xe=this._isSearching?we:this.config.sorter,ye=function(zt){var Tr=J==="auto"?H._isSelectOneElement||!zt.selected:!0;if(Tr){var Dr=H._getTemplate("choice",zt,H.config.itemSelectText);k.appendChild(Dr)}},Ie=v;J==="auto"&&!this._isSelectOneElement&&(Ie=v.filter(function(Rt){return!Rt.selected}));var Ne=Ie.reduce(function(Rt,zt){return zt.placeholder?Rt.placeholderChoices.push(zt):Rt.normalChoices.push(zt),Rt},{placeholderChoices:[],normalChoices:[]}),Ce=Ne.placeholderChoices,Ke=Ne.normalChoices;(this.config.shouldSort||this._isSearching)&&Ke.sort(xe);var Ae=Ie.length,Oe=this._isSelectOneElement?[].concat(Ce,Ke):Ke;this._isSearching?Ae=ae:de&&de>0&&!I&&(Ae=de);for(var dt=0;dt=H){var ae=U?this._searchChoices(v):0;this.passedElement.triggerEvent(Ot.search,{value:v,resultCount:ae})}else J&&(this._isSearching=!1,this._store.dispatch(ue(!0)))}},w._canAddItem=function(v,k){var I=!0,H=typeof this.config.addItemText=="function"?this.config.addItemText(k):this.config.addItemText;if(!this._isSelectOneElement){var U=Ue(v,k);this.config.maxItemCount>0&&this.config.maxItemCount<=v.length&&(I=!1,H=typeof this.config.maxItemText=="function"?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&U&&I&&(I=!1,H=typeof this.config.uniqueItemText=="function"?this.config.uniqueItemText(k):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&I&&typeof this.config.addItemFilter=="function"&&!this.config.addItemFilter(k)&&(I=!1,H=typeof this.config.customAddItemText=="function"?this.config.customAddItemText(k):this.config.customAddItemText)}return{response:I,notice:H}},w._searchChoices=function(v){var k=typeof v=="string"?v.trim():v,I=typeof this._currentValue=="string"?this._currentValue.trim():this._currentValue;if(k.length<1&&k===I+" ")return 0;var H=this._store.searchableChoices,U=k,J=[].concat(this.config.searchFields),ae=Object.assign(this.config.fuseOptions,{keys:J}),de=new i.a(H,ae),xe=de.search(U);return this._currentValue=k,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch(me(xe)),xe.length},w._addEventListeners=function(){var v=document,k=v.documentElement;k.addEventListener("touchend",this._onTouchEnd,!0),this.containerOuter.element.addEventListener("keydown",this._onKeyDown,!0),this.containerOuter.element.addEventListener("mousedown",this._onMouseDown,!0),k.addEventListener("click",this._onClick,{passive:!0}),k.addEventListener("touchmove",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener("mouseover",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener("focus",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener("blur",this._onBlur,{passive:!0})),this.input.element.addEventListener("keyup",this._onKeyUp,{passive:!0}),this.input.element.addEventListener("focus",this._onFocus,{passive:!0}),this.input.element.addEventListener("blur",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener("reset",this._onFormReset,{passive:!0}),this.input.addEventListeners()},w._removeEventListeners=function(){var v=document,k=v.documentElement;k.removeEventListener("touchend",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener("keydown",this._onKeyDown,!0),this.containerOuter.element.removeEventListener("mousedown",this._onMouseDown,!0),k.removeEventListener("click",this._onClick),k.removeEventListener("touchmove",this._onTouchMove),this.dropdown.element.removeEventListener("mouseover",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener("focus",this._onFocus),this.containerOuter.element.removeEventListener("blur",this._onBlur)),this.input.element.removeEventListener("keyup",this._onKeyUp),this.input.element.removeEventListener("focus",this._onFocus),this.input.element.removeEventListener("blur",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener("reset",this._onFormReset),this.input.removeEventListeners()},w._onKeyDown=function(v){var k,I=v.target,H=v.keyCode,U=v.ctrlKey,J=v.metaKey,ae=this._store.activeItems,de=this.input.isFocussed,xe=this.dropdown.isActive,ye=this.itemList.hasChildren(),Ie=String.fromCharCode(H),Ne=yt.BACK_KEY,Ce=yt.DELETE_KEY,Ke=yt.ENTER_KEY,Ae=yt.A_KEY,Oe=yt.ESC_KEY,dt=yt.UP_KEY,Rt=yt.DOWN_KEY,zt=yt.PAGE_UP_KEY,Tr=yt.PAGE_DOWN_KEY,Dr=U||J;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(Ie)&&this.showDropdown();var Zr=(k={},k[Ae]=this._onAKey,k[Ke]=this._onEnterKey,k[Oe]=this._onEscapeKey,k[dt]=this._onDirectionKey,k[zt]=this._onDirectionKey,k[Rt]=this._onDirectionKey,k[Tr]=this._onDirectionKey,k[Ce]=this._onDeleteKey,k[Ne]=this._onDeleteKey,k);Zr[H]&&Zr[H]({event:v,target:I,keyCode:H,metaKey:J,activeItems:ae,hasFocusedInput:de,hasActiveDropdown:xe,hasItems:ye,hasCtrlDownKeyPressed:Dr})},w._onKeyUp=function(v){var k=v.target,I=v.keyCode,H=this.input.value,U=this._store.activeItems,J=this._canAddItem(U,H),ae=yt.BACK_KEY,de=yt.DELETE_KEY;if(this._isTextElement){var xe=J.notice&&H;if(xe){var ye=this._getTemplate("notice",J.notice);this.dropdown.element.innerHTML=ye.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0)}else{var Ie=(I===ae||I===de)&&!k.value,Ne=!this._isTextElement&&this._isSearching,Ce=this._canSearch&&J.response;Ie&&Ne?(this._isSearching=!1,this._store.dispatch(ue(!0))):Ce&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled},w._onAKey=function(v){var k=v.hasItems,I=v.hasCtrlDownKeyPressed;if(I&&k){this._canSearch=!1;var H=this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement;H&&this.highlightAll()}},w._onEnterKey=function(v){var k=v.event,I=v.target,H=v.activeItems,U=v.hasActiveDropdown,J=yt.ENTER_KEY,ae=I.hasAttribute("data-button");if(this._isTextElement&&I.value){var de=this.input.value,xe=this._canAddItem(H,de);xe.response&&(this.hideDropdown(!0),this._addItem({value:de}),this._triggerChange(de),this.clearInput())}if(ae&&(this._handleButtonAction(H,I),k.preventDefault()),U){var ye=this.dropdown.getChild("."+this.config.classNames.highlightedState);ye&&(H[0]&&(H[0].keyCode=J),this._handleChoiceAction(H,ye)),k.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),k.preventDefault())},w._onEscapeKey=function(v){var k=v.hasActiveDropdown;k&&(this.hideDropdown(!0),this.containerOuter.focus())},w._onDirectionKey=function(v){var k=v.event,I=v.hasActiveDropdown,H=v.keyCode,U=v.metaKey,J=yt.DOWN_KEY,ae=yt.PAGE_UP_KEY,de=yt.PAGE_DOWN_KEY;if(I||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var xe=H===J||H===de?1:-1,ye=U||H===de||H===ae,Ie="[data-choice-selectable]",Ne;if(ye)xe>0?Ne=this.dropdown.element.querySelector(Ie+":last-of-type"):Ne=this.dropdown.element.querySelector(Ie);else{var Ce=this.dropdown.element.querySelector("."+this.config.classNames.highlightedState);Ce?Ne=Je(Ce,Ie,xe):Ne=this.dropdown.element.querySelector(Ie)}Ne&&(V(Ne,this.choiceList.element,xe)||this.choiceList.scrollToChildElement(Ne,xe),this._highlightChoice(Ne)),k.preventDefault()}},w._onDeleteKey=function(v){var k=v.event,I=v.target,H=v.hasFocusedInput,U=v.activeItems;H&&!I.value&&!this._isSelectOneElement&&(this._handleBackspace(U),k.preventDefault())},w._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},w._onTouchEnd=function(v){var k=v||v.touches[0],I=k.target,H=this._wasTap&&this.containerOuter.element.contains(I);if(H){var U=I===this.containerOuter.element||I===this.containerInner.element;U&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),v.stopPropagation()}this._wasTap=!0},w._onMouseDown=function(v){var k=v.target;if(k instanceof HTMLElement){if(Vi&&this.choiceList.element.contains(k)){var I=this.choiceList.element.firstElementChild,H=this._direction==="ltr"?v.offsetX>=I.offsetWidth:v.offsetX0;H&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0)}},w._onFocus=function(v){var k=this,I,H=v.target,U=this.containerOuter.element.contains(H);if(!!U){var J=(I={},I[Y]=function(){H===k.input.element&&k.containerOuter.addFocusState()},I[oe]=function(){k.containerOuter.addFocusState(),H===k.input.element&&k.showDropdown(!0)},I[Ee]=function(){H===k.input.element&&(k.showDropdown(!0),k.containerOuter.addFocusState())},I);J[this.passedElement.element.type]()}},w._onBlur=function(v){var k=this,I=v.target,H=this.containerOuter.element.contains(I);if(H&&!this._isScrollingOnIe){var U,J=this._store.activeItems,ae=J.some(function(xe){return xe.highlighted}),de=(U={},U[Y]=function(){I===k.input.element&&(k.containerOuter.removeFocusState(),ae&&k.unhighlightAll(),k.hideDropdown(!0))},U[oe]=function(){k.containerOuter.removeFocusState(),(I===k.input.element||I===k.containerOuter.element&&!k._canSearch)&&k.hideDropdown(!0)},U[Ee]=function(){I===k.input.element&&(k.containerOuter.removeFocusState(),k.hideDropdown(!0),ae&&k.unhighlightAll())},U);de[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},w._onFormReset=function(){this._store.dispatch(or(this._initialState))},w._highlightChoice=function(v){var k=this;v===void 0&&(v=null);var I=Array.from(this.dropdown.element.querySelectorAll("[data-choice-selectable]"));if(!!I.length){var H=v,U=Array.from(this.dropdown.element.querySelectorAll("."+this.config.classNames.highlightedState));U.forEach(function(J){J.classList.remove(k.config.classNames.highlightedState),J.setAttribute("aria-selected","false")}),H?this._highlightPosition=I.indexOf(H):(I.length>this._highlightPosition?H=I[this._highlightPosition]:H=I[I.length-1],H||(H=I[0])),H.classList.add(this.config.classNames.highlightedState),H.setAttribute("aria-selected","true"),this.passedElement.triggerEvent(Ot.highlightChoice,{el:H}),this.dropdown.isActive&&(this.input.setActiveDescendant(H.id),this.containerOuter.setActiveDescendant(H.id))}},w._addItem=function(v){var k=v.value,I=v.label,H=I===void 0?null:I,U=v.choiceId,J=U===void 0?-1:U,ae=v.groupId,de=ae===void 0?-1:ae,xe=v.customProperties,ye=xe===void 0?null:xe,Ie=v.placeholder,Ne=Ie===void 0?!1:Ie,Ce=v.keyCode,Ke=Ce===void 0?null:Ce,Ae=typeof k=="string"?k.trim():k,Oe=Ke,dt=ye,Rt=this._store.items,zt=H||Ae,Tr=J||-1,Dr=de>=0?this._store.getGroupById(de):null,Zr=Rt?Rt.length+1:1;return this.config.prependValue&&(Ae=this.config.prependValue+Ae.toString()),this.config.appendValue&&(Ae+=this.config.appendValue.toString()),this._store.dispatch(Fe({value:Ae,label:zt,id:Zr,choiceId:Tr,groupId:de,customProperties:ye,placeholder:Ne,keyCode:Oe})),this._isSelectOneElement&&this.removeActiveItems(Zr),this.passedElement.triggerEvent(Ot.addItem,{id:Zr,value:Ae,label:zt,customProperties:dt,groupValue:Dr&&Dr.value?Dr.value:void 0,keyCode:Oe}),this},w._removeItem=function(v){if(!v||!P("Object",v))return this;var k=v.id,I=v.value,H=v.label,U=v.choiceId,J=v.groupId,ae=J>=0?this._store.getGroupById(J):null;return this._store.dispatch(Me(k,U)),ae&&ae.value?this.passedElement.triggerEvent(Ot.removeItem,{id:k,value:I,label:H,groupValue:ae.value}):this.passedElement.triggerEvent(Ot.removeItem,{id:k,value:I,label:H}),this},w._addChoice=function(v){var k=v.value,I=v.label,H=I===void 0?null:I,U=v.isSelected,J=U===void 0?!1:U,ae=v.isDisabled,de=ae===void 0?!1:ae,xe=v.groupId,ye=xe===void 0?-1:xe,Ie=v.customProperties,Ne=Ie===void 0?null:Ie,Ce=v.placeholder,Ke=Ce===void 0?!1:Ce,Ae=v.keyCode,Oe=Ae===void 0?null:Ae;if(!(typeof k=="undefined"||k===null)){var dt=this._store.choices,Rt=H||k,zt=dt?dt.length+1:1,Tr=this._baseId+"-"+this._idNames.itemChoice+"-"+zt;this._store.dispatch(ie({id:zt,groupId:ye,elementId:Tr,value:k,label:Rt,disabled:de,customProperties:Ne,placeholder:Ke,keyCode:Oe})),J&&this._addItem({value:k,label:Rt,choiceId:zt,customProperties:Ne,placeholder:Ke,keyCode:Oe})}},w._addGroup=function(v){var k=this,I=v.group,H=v.id,U=v.valueKey,J=U===void 0?"value":U,ae=v.labelKey,de=ae===void 0?"label":ae,xe=P("Object",I)?I.choices:Array.from(I.getElementsByTagName("OPTION")),ye=H||Math.floor(new Date().valueOf()*Math.random()),Ie=I.disabled?I.disabled:!1;if(xe){this._store.dispatch(bt({value:I.label,id:ye,active:!0,disabled:Ie}));var Ne=function(Ke){var Ae=Ke.disabled||Ke.parentNode&&Ke.parentNode.disabled;k._addChoice({value:Ke[J],label:P("Object",Ke)?Ke[de]:Ke.innerHTML,isSelected:Ke.selected,isDisabled:Ae,groupId:ye,customProperties:Ke.customProperties,placeholder:Ke.placeholder})};xe.forEach(Ne)}else this._store.dispatch(bt({value:I.label,id:I.id,active:!1,disabled:I.disabled}))},w._getTemplate=function(v){var k;if(!v)return null;for(var I=this.config.classNames,H=arguments.length,U=new Array(H>1?H-1:0),J=1;J{h();(function(e,t){typeof tl=="object"&&typeof Dw!="undefined"?t(tl):typeof define=="function"&&define.amd?define(["exports"],t):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e.immutableJSONPatch={}))})(tl,function(e){"use strict";function t(V){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?t=function(q){return typeof q}:t=function(q){return q&&typeof Symbol=="function"&&q.constructor===Symbol&&q!==Symbol.prototype?"symbol":typeof q},t(V)}function r(V,j){return JSON.stringify(V)===JSON.stringify(j)}function n(V,j){return V===j}function i(V){return V.slice(0,V.length-1)}function a(V){return V[V.length-1]}function o(V,j){var q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:n;if(V.length3&&arguments[3]!==void 0?arguments[3]:!1;if(j.length===0)return q;var we=j[0],ke=y(V?V[we]:void 0,j.slice(1),q,te);if(!s(V))if(te){var Ue=typeof we=="number"?[]:{};return Ue[we]=ke,Ue}else throw new Error("Path does not exist");return p(V,we,ke)}function b(V,j,q){if(j.length===0)return q(V);if(!s(V))throw new Error("Path doesn't exist");var te=j[0],we=b(V[te],j.slice(1),q);return p(V,te,we)}function x(V,j){if(j.length===0)return V;if(!s(V))throw new Error("Path does not exist");if(j.length===1){var q=j[0];if(q in V){var te=f(V);return Array.isArray(te)?te.splice(q,1):delete te[q],te}else return V}var we=j[0],ke=x(V[we],j.slice(1));return p(V,we,ke)}function D(V,j,q){var te=j.slice(0,j.length-1),we=j[j.length-1];return b(V,te,function(ke){if(!Array.isArray(ke))throw new TypeError("Array expected at path "+JSON.stringify(te));var Ue=f(ke);return Ue.splice(we,0,q),Ue})}function C(V,j){return V===void 0?!1:j.length===0?!0:C(V[j[0]],j.slice(1))}function A(V){var j=V.split("/");return j.shift(),j.map(function(q){return q.replace(/~1/g,"/").replace(/~0/g,"~")})}function N(V){return V.map(function(j){return"/"+String(j).replace(/~/g,"~0").replace(/\//g,"~1")}).join("")}function T(V,j,q){for(var te=V,we=0;we{h();(function(){var e;typeof pf!="undefined"?e=pf.exports=n:e=function(){return this||(0,eval)("this")}(),e.format=n,e.vsprintf=r,typeof console!="undefined"&&typeof console.log=="function"&&(e.printf=t);function t(){console.log(n.apply(null,arguments))}function r(i,a){return n.apply(null,[i].concat(a))}function n(i){for(var a=1,o=[].slice.call(arguments),s=0,u=i.length,l="",c,d=!1,f,p,m=!1,y,b=function(){return o[a++]},x=function(){for(var D="";/\d/.test(i[s]);)D+=i[s++],c=i[s];return D.length>0?parseInt(D):null};sEf});h();h();function Sl(e,t){let r=Object.keys(t).map(n=>ZE(e,n,t[n]));return r.length===1?r[0]:function(){r.forEach(n=>n())}}function ZE(e,t,r){let n=e[t],i=e.hasOwnProperty(t),a=r(n);return n&&Object.setPrototypeOf(a,n),Object.setPrototypeOf(o,a),e[t]=o,s;function o(...u){return a===n&&e[t]===o&&s(),a.apply(this,u)}function s(){e[t]===o&&(i?e[t]=n:delete e[t]),a!==n&&(a=n,Object.setPrototypeOf(o,n||Function))}}var Ct=ge(require("obsidian"));h();h();Mr();var ri,Et,_l,Kf,ii=0,$f=[],ao=[],Uf=fe.__b,Wf=fe.__r,Vf=fe.diffed,zf=fe.__c,jf=fe.unmount;function Gi(e,t){fe.__h&&fe.__h(Et,e,ii||t),ii=0;var r=Et.__H||(Et.__H={__:[],__h:[]});return e>=r.__.length&&r.__.push({__V:ao}),r.__[e]}function sr(e){return ii=1,Qi(Yf,e)}function Qi(e,t,r){var n=Gi(ri++,2);return n.t=e,n.__c||(n.__=[r?r(t):Yf(void 0,t),function(i){var a=n.t(n.__[0],i);n.__[0]!==a&&(n.__=[a,n.__[1]],n.__c.setState({}))}],n.__c=Et),n.__}function Sn(e,t){var r=Gi(ri++,3);!fe.__s&&Tl(r.__H,t)&&(r.__=e,r.u=t,Et.__H.__h.push(r))}function Ir(e,t){var r=Gi(ri++,4);!fe.__s&&Tl(r.__H,t)&&(r.__=e,r.u=t,Et.__h.push(r))}function Xt(e){return ii=5,lr(function(){return{current:e}},[])}function oo(e,t,r){ii=6,Ir(function(){return typeof e=="function"?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},r==null?r:r.concat(e))}function lr(e,t){var r=Gi(ri++,7);return Tl(r.__H,t)?(r.__V=e(),r.u=t,r.__h=e,r.__V):r.__}function cr(e,t){return ii=8,lr(function(){return e},t)}function so(e){var t=Et.context[e.__c],r=Gi(ri++,9);return r.c=e,t?(r.__==null&&(r.__=!0,t.sub(Et)),t.props.value):e.__}function lo(e,t){fe.useDebugValue&&fe.useDebugValue(t?t(e):e)}function ex(){for(var e;e=$f.shift();)if(e.__P)try{e.__H.__h.forEach(co),e.__H.__h.forEach(Cl),e.__H.__h=[]}catch(t){e.__H.__h=[],fe.__e(t,e.__v)}}fe.__b=function(e){Et=null,Uf&&Uf(e)},fe.__r=function(e){Wf&&Wf(e),ri=0;var t=(Et=e.__c).__H;t&&(_l===Et?(t.__h=[],Et.__h=[],t.__.forEach(function(r){r.__V=ao,r.u=void 0})):(t.__h.forEach(co),t.__h.forEach(Cl),t.__h=[])),_l=Et},fe.diffed=function(e){Vf&&Vf(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&($f.push(t)!==1&&Kf===fe.requestAnimationFrame||((Kf=fe.requestAnimationFrame)||function(r){var n,i=function(){clearTimeout(a),qf&&cancelAnimationFrame(n),setTimeout(r)},a=setTimeout(i,100);qf&&(n=requestAnimationFrame(i))})(ex)),t.__H.__.forEach(function(r){r.u&&(r.__H=r.u),r.__V!==ao&&(r.__=r.__V),r.u=void 0,r.__V=ao})),_l=Et=null},fe.__c=function(e,t){t.some(function(r){try{r.__h.forEach(co),r.__h=r.__h.filter(function(n){return!n.__||Cl(n)})}catch(n){t.some(function(i){i.__h&&(i.__h=[])}),t=[],fe.__e(n,r.__v)}}),zf&&zf(e,t)},fe.unmount=function(e){jf&&jf(e);var t,r=e.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{co(n)}catch(i){t=i}}),t&&fe.__e(t,r.__v))};var qf=typeof requestAnimationFrame=="function";function co(e){var t=Et,r=e.__c;typeof r=="function"&&(e.__c=void 0,r()),Et=t}function Cl(e){var t=Et;e.__c=e.__(),Et=t}function Tl(e,t){return!e||e.length!==t.length||t.some(function(r,n){return r!==e[n]})}function Yf(e,t){return typeof t=="function"?t(e):t}Mr();Mr();function Jf(e,t){for(var r in t)e[r]=t[r];return e}function Dl(e,t){for(var r in e)if(r!=="__source"&&!(r in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function Ml(e){this.props=e}function tx(e,t){function r(i){var a=this.props.ref,o=a==i.ref;return!o&&a&&(a.call?a(null):a.current=null),t?!t(this.props,i)||!o:Dl(this.props,i)}function n(i){return this.shouldComponentUpdate=r,g(e,i)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(Ml.prototype=new pt).isPureReactComponent=!0,Ml.prototype.shouldComponentUpdate=function(e,t){return Dl(this.props,e)||Dl(this.state,t)};var Gf=fe.__b;fe.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),Gf&&Gf(e)};var nx=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function rx(e){function t(r){var n=Jf({},r);return delete n.ref,e(n,r.ref||null)}return t.$$typeof=nx,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var Qf=function(e,t){return e==null?null:wt(wt(e).map(t))},ix={map:Qf,forEach:Qf,count:function(e){return e?wt(e).length:0},only:function(e){var t=wt(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:wt},ax=fe.__e;fe.__e=function(e,t,r,n){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e==null&&(t.__e=r.__e,t.__k=r.__k),i.__c(e,t)}ax(e,t,r,n)};var Xf=fe.unmount;function uo(){this.__u=0,this.t=null,this.__b=null}function Zf(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function ox(e){var t,r,n;function i(a){if(t||(t=e()).then(function(o){r=o.default||o},function(o){n=o}),n)throw n;if(!r)throw t;return g(r,a)}return i.displayName="Lazy",i.__f=!0,i}function Xi(){this.u=null,this.o=null}fe.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),Xf&&Xf(e)},(uo.prototype=new pt).__c=function(e,t){var r=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(r);var i=Zf(n.__v),a=!1,o=function(){a||(a=!0,r.__R=null,i?i(s):s())};r.__R=o;var s=function(){if(!--n.__u){if(n.state.__e){var l=n.state.__e;n.__v.__k[0]=function d(f,p,m){return f&&(f.__v=null,f.__k=f.__k&&f.__k.map(function(y){return d(y,p,m)}),f.__c&&f.__c.__P===p&&(f.__e&&m.insertBefore(f.__e,f.__d),f.__c.__e=!0,f.__c.__P=m)),f}(l,l.__c.__P,l.__c.__O)}var c;for(n.setState({__e:n.__b=null});c=n.t.pop();)c.forceUpdate()}},u=t.__h===!0;n.__u++||u||n.setState({__e:n.__b=n.__v.__k[0]}),e.then(o,o)},uo.prototype.componentWillUnmount=function(){this.t=[]},uo.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=function a(o,s,u){return o&&(o.__c&&o.__c.__H&&(o.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),o.__c.__H=null),(o=Jf({},o)).__c!=null&&(o.__c.__P===u&&(o.__c.__P=s),o.__c=null),o.__k=o.__k&&o.__k.map(function(l){return a(l,s,u)})),o}(this.__b,r,n.__O=n.__P)}this.__b=null}var i=t.__e&&g(S,null,e.fallback);return i&&(i.__h=null),[g(S,null,t.__e?null:e.children),i]};var ep=function(e,t,r){if(++r[1]===r[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(r=e.u;r;){for(;r.length>3;)r.pop()();if(r[1]>>1,1),t.i.removeChild(n)}}),kn(g(sx,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function cx(e,t){var r=g(lx,{__v:e,i:t});return r.containerInfo=t,r}(Xi.prototype=new pt).__e=function(e){var t=this,r=Zf(t.__v),n=t.o.get(e);return n[0]++,function(i){var a=function(){t.props.revealOrder?(n.push(i),ep(t,e,n)):i()};r?r(a):a()}},Xi.prototype.render=function(e){this.u=null,this.o=new Map;var t=wt(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var r=t.length;r--;)this.o.set(t[r],this.u=[1,0,this.u]);return e.children},Xi.prototype.componentDidUpdate=Xi.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,r){ep(e,r,t)})};var tp=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,ux=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|shape|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,dx=typeof document!="undefined",fx=function(e){return(typeof Symbol!="undefined"&&typeof Symbol()=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function px(e,t,r){return t.__k==null&&(t.textContent=""),kn(e,t),typeof r=="function"&&r(),e?e.__c:null}function hx(e,t,r){return Ji(e,t),typeof r=="function"&&r(),e?e.__c:null}pt.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(pt.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var np=fe.event;function mx(){}function gx(){return this.cancelBubble}function vx(){return this.defaultPrevented}fe.event=function(e){return np&&(e=np(e)),e.persist=mx,e.isPropagationStopped=gx,e.isDefaultPrevented=vx,e.nativeEvent=e};var rp,ip={configurable:!0,get:function(){return this.class}},ap=fe.vnode;fe.vnode=function(e){var t=e.type,r=e.props,n=r;if(typeof t=="string"){var i=t.indexOf("-")===-1;for(var a in n={},r){var o=r[a];dx&&a==="children"&&t==="noscript"||a==="value"&&"defaultValue"in r&&o==null||(a==="defaultValue"&&"value"in r&&r.value==null?a="value":a==="download"&&o===!0?o="":/ondoubleclick/i.test(a)?a="ondblclick":/^onchange(textarea|input)/i.test(a+t)&&!fx(r.type)?a="oninput":/^onfocus$/i.test(a)?a="onfocusin":/^onblur$/i.test(a)?a="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(a)?a=a.toLowerCase():i&&ux.test(a)?a=a.replace(/[A-Z0-9]/,"-$&").toLowerCase():o===null&&(o=void 0),/^oninput$/i.test(a)&&(a=a.toLowerCase(),n[a]&&(a="oninputCapture")),n[a]=o)}t=="select"&&n.multiple&&Array.isArray(n.value)&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.value.indexOf(s.props.value)!=-1})),t=="select"&&n.defaultValue!=null&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.multiple?n.defaultValue.indexOf(s.props.value)!=-1:n.defaultValue==s.props.value})),e.props=n,r.class!=r.className&&(ip.enumerable="className"in r,r.className!=null&&(n.class=r.className),Object.defineProperty(n,"className",ip))}e.$$typeof=tp,ap&&ap(e)};var op=fe.__r;fe.__r=function(e){op&&op(e),rp=e.__c};var yx={ReactCurrentDispatcher:{current:{readContext:function(e){return rp.__n[e.__c].props.value}}}};function bx(e){return g.bind(null,e)}function sp(e){return!!e&&e.$$typeof===tp}function wx(e){return sp(e)?io.apply(null,arguments):e}function Ex(e){return!!e.__k&&(kn(null,e),!0)}function xx(e){return e&&(e.base||e.nodeType===1&&e)||null}var kx=function(e,t){return e(t)},Sx=function(e,t){return e(t)};var F={useState:sr,useReducer:Qi,useEffect:Sn,useLayoutEffect:Ir,useRef:Xt,useImperativeHandle:oo,useMemo:lr,useCallback:cr,useContext:so,useDebugValue:lo,version:"17.0.2",Children:ix,render:px,hydrate:hx,unmountComponentAtNode:Ex,createPortal:cx,createElement:g,createContext:ni,createFactory:bx,cloneElement:wx,createRef:ei,Fragment:S,isValidElement:sp,findDOMNode:xx,Component:pt,PureComponent:Ml,memo:tx,forwardRef:rx,flushSync:Sx,unstable_batchedUpdates:kx,StrictMode:S,Suspense:uo,SuspenseList:Xi,lazy:ox,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:yx};h();function Ze(e){return e.win}function ai(e){return e.doc.body}h();var Ob=ge(xt());h();var Ve=F.createContext(null),po=F.createContext(null);h();var Sp=ge(xt()),mo=ge(require("obsidian"));h();var bp=ge(gp()),dr=ge(xt());h();function vp(e){return Object.prototype.toString.call(e)==="[object Object]"}function yp(e){var t,r;return vp(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(vp(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}h();function jx(e,t){return e.length!==t.length?!1:e.every((r,n,i)=>n===i.length-1?r!==t[n]:r===t[n])}function qx(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}var an;(function(i){i[i.Before=0]="Before",i[i.After=1]="After",i[i.Self=2]="Self",i[i.NotSiblings=3]="NotSiblings"})(an||(an={}));function ta(e,t){if(qx(e,t))return 2;if(!jx(e,t))return 3;let r=e.length-1;return e[r]=0;n--)r={children:{[e[n]]:r}};return r}function na(e,t){let r=t;for(let n=e.length-2;n>=0;n--)r={children:{[e[n]]:r}};return r}function wp(e){return na(e,{children:{$splice:[[e[e.length-1],1]]}})}function Ep(e,t,r=0){return na(e,{children:{$splice:[[e[e.length-1]+r,0,...t]]}})}function Jx(e,t){return na(e,{children:{$push:t}})}function Gx(e,t){return na(e,{children:{$unshift:t}})}function xp(e,t,r,n){let i=n?n(ht(e,t)):ht(e,t),o=ta(t,r)===an.After?-1:0,s=wp(t),u=Ep(r,[i],o),l=(0,bp.default)(s,u,{isMergeableObject:d=>yp(d)||Array.isArray(d)});return(0,dr.default)(e,l)}function Lr(e,t){return(0,dr.default)(e,wp(t))}function fr(e,t,r){return(0,dr.default)(e,Ep(t,r))}function Pl(e,t,r){return(0,dr.default)(e,Jx(t,r))}function kp(e,t,r){return(0,dr.default)(e,Gx(t,r))}function ho(e,t,r){return(0,dr.default)(e,Yx(t,r))}function Fl(e,t,r){return(0,dr.default)(e,na(t,r))}var Nl="kanban-plugin";function si(){}function $(e){return`${Nl}__${e}`}function Re(e=9){return Math.random().toString(36).slice(2,2+e)}function Ol(e,t,r,n,i){var l,c;let a=ht(e,t.slice(0,-1)),o=ht(r,n.slice(0,-1)),s=(l=a==null?void 0:a.data)==null?void 0:l.shouldMarkItemsComplete,u=(c=o==null?void 0:o.data)==null?void 0:c.shouldMarkItemsComplete;return!s&&!u||u===!!i.data.isComplete?i:(0,Sp.default)(i,{data:{isComplete:{$set:u}}})}function go(){let e=F.useRef(!1);return{oncompositionstart:()=>{e.current=!0},oncompositionend:()=>{e.current=!1},getShouldIMEBlockAction:()=>e.current}}var Qx=/<%/;async function _p(e,t){let r=t?e.app.vault.getAbstractFileByPath(t):null;if(r&&r instanceof mo.TFile){let n=app.workspace.getActiveViewOfType(mo.MarkdownView);try{(n==null?void 0:n.getMode())!=="source"&&await n.setState({...n.getState(),mode:"source"},{});let{templatesEnabled:i,templaterEnabled:a,templatesPlugin:o,templaterPlugin:s}=Rl(e.app),u=await e.app.vault.read(r);if(i&&a)return Qx.test(u)?await s.append_template_to_active_file(r):await o.instance.insertTemplate(r);if(i)return await o.instance.insertTemplate(r);if(a)return await s.append_template_to_active_file(r);await e.app.vault.modify(e.app.workspace.getActiveFile(),u)}catch(i){console.error(i),e.setError(i)}}}function li(e){var s,u,l,c,d;let t=e.internalPlugins.plugins,r=(s=t["daily-notes"])==null?void 0:s.enabled,n=(u=t["daily-notes"])==null?void 0:u.instance.options.format,i=(l=e.plugins.plugins["nldates-obsidian"])==null?void 0:l.settings.format,a=(c=t.templates)==null?void 0:c.enabled,o=(d=t.templates)==null?void 0:d.instance.options.dateFormat;return r&&n||i||a&&o||"YYYY-MM-DD"}function ra(e){var a,o,s;let t=e.internalPlugins.plugins,r=(a=e.plugins.plugins["nldates-obsidian"])==null?void 0:a.settings.timeFormat,n=(o=t.templates)==null?void 0:o.enabled,i=(s=t.templates)==null?void 0:s.instance.options.timeFormat;return r||n&&i||"HH:mm"}var Cp=/[\\^$.*+?()[\]{}|]/g,Xx=RegExp(Cp.source);function Ln(e){return e&&Xx.test(e)?e.replace(Cp,"\\$&"):e||""}function Rl(e){var s;let t=e.internalPlugins.plugins.templates,r=t.enabled,n=e.plugins.plugins["templater-obsidian"],i=e.plugins.enabledPlugins.has("templater-obsidian"),a=n&&((s=this.app.plugins.plugins["templater-obsidian"].settings)==null?void 0:s.empty_file_template),o=r?t.instance.options.folder:n?n.settings.template_folder:void 0;return{templatesPlugin:t,templatesEnabled:r,templaterPlugin:n==null?void 0:n.templater,templaterEnabled:i,templaterEmptyFileTemplate:a,templateFolder:o}}h();h();function mt(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let r=0,n;r{n.has(t)&&(n.delete(t),n.size===0&&r.push(i))}),r.forEach(n=>{this.idScopes.delete(n),this.scrollStates.delete(n)})}};var kt=F.createContext(null),pr=F.createContext(""),aa=F.createContext(null),oa=F.createContext(new ia),vo=F.createContext(null),yo=F.createContext(null);h();h();h();var Tp={bottom:0,height:0,left:0,right:0,top:0,width:0,x:0,y:0,toJSON(){}},Dp=[0,0,0,0];function Xe(e){return e===void 0?0:e}function bo(e,t,r,n){return[e.left+Xe(t==null?void 0:t.x)+Xe(r==null?void 0:r.x)-Xe(n==null?void 0:n.x),e.top+Xe(t==null?void 0:t.y)+Xe(r==null?void 0:r.y)-Xe(n==null?void 0:n.y),e.left+e.width+Xe(t==null?void 0:t.x)+Xe(r==null?void 0:r.x)-Xe(n==null?void 0:n.x),e.top+e.height+Xe(t==null?void 0:t.y)+Xe(r==null?void 0:r.y)-Xe(n==null?void 0:n.y)]}function Hl(e,t,r,n){let i=bo(e,t,r,null);return n==="top"?(i[3]=i[1]+35,i):n==="right"?(i[0]=i[0]+e.width-35,i):n==="bottom"?(i[1]=i[1]+e.height-35,i):(i[2]=i[0]+35,i)}function wo(e,t,r,n,i,a){return[e-Xe(i==null?void 0:i.x)-Xe(a==null?void 0:a.x),t-Xe(i==null?void 0:i.y)-Xe(a==null?void 0:a.y),r-Xe(i==null?void 0:i.x)-Xe(a==null?void 0:a.x),n-Xe(i==null?void 0:i.y)-Xe(a==null?void 0:a.y)]}var Zx=e=>ek(e,(t,r)=>t{if(o.entityId===r)return 1/0;let s=o.getHitbox(),u=Ip(s)[0],l=tk(t),c=o.getData().sortAxis==="horizontal"?"x":"y",d=l[c]>n[c]?1e3:0;return ci(u,n)+d}),a=Zx(i);return e[a]?e[a]:null}function Kl(e){let{scrollLeft:t,scrollTop:r,scrollWidth:n,scrollHeight:i,offsetWidth:a,offsetHeight:o}=e,s=t,u=r,l=n-a,c=i-o;return{x:s,y:u,maxX:Math.max(l,0),maxY:Math.max(c,0)}}function Ap(e,t,r){let n=Math.trunc((r.x-t.x)*100)/100,i=Math.trunc((r.y-t.y)*100)/100;return[e[0]+n,e[1]+i,e[2]+n,e[3]+i]}function $l(e,t=[0,0,0,0]){let r=e[0]-t[0],n=e[1]-t[1],i=e[2]+t[2],o=e[3]+t[3]-n;return{width:i-r,height:o}}var Ul=class{constructor(t,r,n,i,a,o,s,u,l,c){this.isVisible=!1;this.id=n,this.instanceId=Re(),this.scopeId=r,this.entityId=`${r}-${n}`,this.dndManager=t,this.index=i,this.children=new Map,this.parent=a,this.scrollParent=o,this.getEntityData=c,this.sortManager=s,this.pollForNodes(u,l)}pollForNodes(t,r){!t()||!r()?this.dndManager.win.requestAnimationFrame(()=>this.pollForNodes(t,r)):this.initNodes(t(),r())}initNodes(t,r){var n,i;if(this.entityNode=t,this.measureNode=r,r.dataset.hitboxid=this.entityId,(n=this.sortManager)==null||n.registerSortable(this.entityId,this.getEntity(Tp),t,r),this.scrollParent)this.scrollParent.registerObserverHandler(this.entityId,r,a=>{var s,u;let o=Ze(a.target);if(a.isIntersecting){let l=this.getEntity(a.boundingClientRect);(s=this.parent)==null||s.children.set(this.entityId,{entity:l,manager:this}),this.dndManager.observeResize(r),(!this.parent||this.parent.isVisible)&&(this.dndManager.registerHitboxEntity(this.entityId,l,o),this.children.forEach((c,d)=>{this.dndManager.registerHitboxEntity(d,c.entity,o)}),this.setVisibility(!0))}else this.dndManager.unregisterHitboxEntity(this.entityId,o),this.children.forEach((l,c)=>{this.dndManager.unregisterHitboxEntity(c,o)}),(u=this.parent)==null||u.children.delete(this.entityId),this.dndManager.unobserveResize(r),this.setVisibility(!1)});else{let a=this.getEntity(r.getBoundingClientRect());this.dndManager.observeResize(r),this.dndManager.registerHitboxEntity(this.entityId,a,Ze(t)),(i=this.parent)==null||i.children.set(this.entityId,{entity:a,manager:this}),this.setVisibility(!0)}}setVisibility(t){this.isVisible=t,this.children.forEach(r=>{r.manager.setVisibility(t)})}destroy(){var t,r,n;this.dndManager.unobserveResize(this.measureNode),(t=this.sortManager)==null||t.unregisterSortable(this.entityId),(r=this.scrollParent)==null||r.unregisterObserverHandler(this.entityId,this.measureNode),this.entityNode&&this.dndManager.unregisterHitboxEntity(this.entityId,Ze(this.entityNode)),(n=this.parent)==null||n.children.delete(this.entityId)}getPath(){var t;return[...((t=this.parent)==null?void 0:t.getPath())||[],this.index]}getEntity(t){var n,i;let r=this;return{scopeId:this.scopeId,entityId:this.entityId,initial:bo(t,((n=r.scrollParent)==null?void 0:n.scrollState)||on,((i=r.scrollParent)==null?void 0:i.getScrollShift())||Pn,null),getParentScrollState(){var a;return((a=r.scrollParent)==null?void 0:a.scrollState)||on},getParentScrollShift(){var a;return((a=r.scrollParent)==null?void 0:a.getScrollShift())||Pn},recalcInitial(){var a,o;this.initial=bo(r.measureNode.getBoundingClientRect(),((a=r.scrollParent)==null?void 0:a.scrollState)||on,((o=r.scrollParent)==null?void 0:o.getScrollShift())||Pn,null)},getHitbox(){return wo(this.initial[0],this.initial[1],this.initial[2],this.initial[3],this.getParentScrollState(),this.getParentScrollShift())},getPath(){return r.getPath()},getData(){var a;return{...r.getEntityData(),sortAxis:(a=r.sortManager)==null?void 0:a.axis,win:Ze(r.measureNode)}}}}};var hr=F.memo(function({id:t,index:r,elementRef:n,measureRef:i,children:a,data:o}){let s=F.useContext(kt),u=F.useContext(vo),l=F.useContext(pr),c=F.useContext(yo),d=F.useContext(aa),f=F.useRef(o),p=F.useRef();f.current=o;let m=F.useMemo(()=>{if(s){p.current&&p.current.destroy();let y=new Ul(s,l,t,r,c,d,u,()=>n.current,()=>i.current,()=>f.current);return p.current=y,y}return null},[t,r,s,l,c,d,u]);return F.useEffect(()=>()=>{var y;return(y=p.current)==null?void 0:y.destroy()},[]),m?g(yo.Provider,{value:m},a):null});function Vn(e){let t=F.useContext(yo),r=(t==null?void 0:t.getPath())||[];return e!==void 0&&r.push(e),F.useMemo(()=>r,r)}h();var Du=ge(Wh());h();h();h();h();var fm=ge(dm()),{__extends:OM,__assign:RM,__rest:HM,__decorate:BM,__param:KM,__metadata:$M,__awaiter:bi,__generator:wi,__exportStar:UM,__createBinding:WM,__values:VM,__read:zM,__spread:pm,__spreadArrays:jM,__spreadArray:qM,__await:YM,__asyncGenerator:JM,__asyncDelegator:GM,__asyncValues:QM,__makeTemplateObject:XM,__importStar:ZM,__importDefault:eI,__classPrivateFieldGet:tI,__classPrivateFieldSet:nI,__classPrivateFieldIn:rI}=fm.default;h();var y0=new Map([["avi","video/avi"],["gif","image/gif"],["ico","image/x-icon"],["jpeg","image/jpeg"],["jpg","image/jpeg"],["mkv","video/x-matroska"],["mov","video/quicktime"],["mp4","video/mp4"],["pdf","application/pdf"],["png","image/png"],["zip","application/zip"],["doc","application/msword"],["docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document"]]);function pa(e,t){var r=b0(e);if(typeof r.path!="string"){var n=e.webkitRelativePath;Object.defineProperty(r,"path",{value:typeof t=="string"?t:typeof n=="string"&&n.length>0?n:e.name,writable:!1,configurable:!1,enumerable:!0})}return r}function b0(e){var t=e.name,r=t&&t.lastIndexOf(".")!==-1;if(r&&!e.type){var n=t.split(".").pop().toLowerCase(),i=y0.get(n);i&&Object.defineProperty(e,"type",{value:i,writable:!1,configurable:!1,enumerable:!0})}return e}var w0=[".DS_Store","Thumbs.db"];function lc(e){return bi(this,void 0,void 0,function(){return wi(this,function(t){return[2,E0(e)&&e.dataTransfer?S0(e.dataTransfer,e.type):x0(e)]})})}function E0(e){return!!e.dataTransfer}function x0(e){var t=k0(e.target)?e.target.files?cc(e.target.files):[]:[];return t.map(function(r){return pa(r)})}function k0(e){return e!==null}function S0(e,t){return bi(this,void 0,void 0,function(){var r,n;return wi(this,function(i){switch(i.label){case 0:return e.items?(r=cc(e.items).filter(function(a){return a.kind==="file"}),t!=="drop"?[2,r]:[4,Promise.all(r.map(_0))]):[3,2];case 1:return n=i.sent(),[2,hm(mm(n))];case 2:return[2,hm(cc(e.files).map(function(a){return pa(a)}))]}})})}function hm(e){return e.filter(function(t){return w0.indexOf(t.name)===-1})}function cc(e){for(var t=[],r=0;r".",rangeSeparator:" - ",weekAbbreviation:"Hf",scrollTitle:"Art\u0131rmaq \xFC\xE7\xFCn s\xFCr\xFC\u015Fd\xFCr\xFCn",toggleTitle:"A\xE7 / Ba\u011Fla",amPM:["G\u018F","GS"],time_24hr:!0};$m.l10ns.az=gc;var yI=$m.l10ns;h();var Um=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},vc={weekdays:{shorthand:["\u041D\u0434","\u041F\u043D","\u0410\u045E","\u0421\u0440","\u0427\u0446","\u041F\u0442","\u0421\u0431"],longhand:["\u041D\u044F\u0434\u0437\u0435\u043B\u044F","\u041F\u0430\u043D\u044F\u0434\u0437\u0435\u043B\u0430\u043A","\u0410\u045E\u0442\u043E\u0440\u0430\u043A","\u0421\u0435\u0440\u0430\u0434\u0430","\u0427\u0430\u0446\u0432\u0435\u0440","\u041F\u044F\u0442\u043D\u0456\u0446\u0430","\u0421\u0443\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u0421\u0442\u0443","\u041B\u044E\u0442","\u0421\u0430\u043A","\u041A\u0440\u0430","\u0422\u0440\u0430","\u0427\u044D\u0440","\u041B\u0456\u043F","\u0416\u043D\u0456","\u0412\u0435\u0440","\u041A\u0430\u0441","\u041B\u0456\u0441","\u0421\u043D\u0435"],longhand:["\u0421\u0442\u0443\u0434\u0437\u0435\u043D\u044C","\u041B\u044E\u0442\u044B","\u0421\u0430\u043A\u0430\u0432\u0456\u043A","\u041A\u0440\u0430\u0441\u0430\u0432\u0456\u043A","\u0422\u0440\u0430\u0432\u0435\u043D\u044C","\u0427\u044D\u0440\u0432\u0435\u043D\u044C","\u041B\u0456\u043F\u0435\u043D\u044C","\u0416\u043D\u0456\u0432\u0435\u043D\u044C","\u0412\u0435\u0440\u0430\u0441\u0435\u043D\u044C","\u041A\u0430\u0441\u0442\u0440\u044B\u0447\u043D\u0456\u043A","\u041B\u0456\u0441\u0442\u0430\u043F\u0430\u0434","\u0421\u043D\u0435\u0436\u0430\u043D\u044C"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u0422\u044B\u0434.",scrollTitle:"\u041F\u0440\u0430\u043A\u0440\u0443\u0446\u0456\u0446\u0435 \u0434\u043B\u044F \u043F\u0430\u0432\u0435\u043B\u0456\u0447\u044D\u043D\u043D\u044F",toggleTitle:"\u041D\u0430\u0446\u0456\u0441\u043D\u0456\u0446\u0435 \u0434\u043B\u044F \u043F\u0435\u0440\u0430\u043A\u043B\u044E\u0447\u044D\u043D\u043D\u044F",amPM:["\u0414\u041F","\u041F\u041F"],yearAriaLabel:"\u0413\u043E\u0434",time_24hr:!0};Um.l10ns.be=vc;var wI=Um.l10ns;h();var Wm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},yc={weekdays:{shorthand:["\u041D\u0434","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],longhand:["\u041D\u0435\u0434\u0435\u043B\u044F","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u044F\u0434\u0430","\u0427\u0435\u0442\u0432\u044A\u0440\u0442\u044A\u043A","\u041F\u0435\u0442\u044A\u043A","\u0421\u044A\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u042F\u043D\u0443","\u0424\u0435\u0432","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440","\u041C\u0430\u0439","\u042E\u043D\u0438","\u042E\u043B\u0438","\u0410\u0432\u0433","\u0421\u0435\u043F","\u041E\u043A\u0442","\u041D\u043E\u0435","\u0414\u0435\u043A"],longhand:["\u042F\u043D\u0443\u0430\u0440\u0438","\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0438\u043B","\u041C\u0430\u0439","\u042E\u043D\u0438","\u042E\u043B\u0438","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043F\u0442\u0435\u043C\u0432\u0440\u0438","\u041E\u043A\u0442\u043E\u043C\u0432\u0440\u0438","\u041D\u043E\u0435\u043C\u0432\u0440\u0438","\u0414\u0435\u043A\u0435\u043C\u0432\u0440\u0438"]},time_24hr:!0,firstDayOfWeek:1};Wm.l10ns.bg=yc;var xI=Wm.l10ns;h();var Vm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},bc={weekdays:{shorthand:["\u09B0\u09AC\u09BF","\u09B8\u09CB\u09AE","\u09AE\u0999\u09CD\u0997\u09B2","\u09AC\u09C1\u09A7","\u09AC\u09C3\u09B9\u09B8\u09CD\u09AA\u09A4\u09BF","\u09B6\u09C1\u0995\u09CD\u09B0","\u09B6\u09A8\u09BF"],longhand:["\u09B0\u09AC\u09BF\u09AC\u09BE\u09B0","\u09B8\u09CB\u09AE\u09AC\u09BE\u09B0","\u09AE\u0999\u09CD\u0997\u09B2\u09AC\u09BE\u09B0","\u09AC\u09C1\u09A7\u09AC\u09BE\u09B0","\u09AC\u09C3\u09B9\u09B8\u09CD\u09AA\u09A4\u09BF\u09AC\u09BE\u09B0","\u09B6\u09C1\u0995\u09CD\u09B0\u09AC\u09BE\u09B0","\u09B6\u09A8\u09BF\u09AC\u09BE\u09B0"]},months:{shorthand:["\u099C\u09BE\u09A8\u09C1","\u09AB\u09C7\u09AC\u09CD\u09B0\u09C1","\u09AE\u09BE\u09B0\u09CD\u099A","\u098F\u09AA\u09CD\u09B0\u09BF\u09B2","\u09AE\u09C7","\u099C\u09C1\u09A8","\u099C\u09C1\u09B2\u09BE\u0987","\u0986\u0997","\u09B8\u09C7\u09AA\u09CD\u099F\u09C7","\u0985\u0995\u09CD\u099F\u09CB","\u09A8\u09AD\u09C7","\u09A1\u09BF\u09B8\u09C7"],longhand:["\u099C\u09BE\u09A8\u09C1\u09AF\u09BC\u09BE\u09B0\u09C0","\u09AB\u09C7\u09AC\u09CD\u09B0\u09C1\u09AF\u09BC\u09BE\u09B0\u09C0","\u09AE\u09BE\u09B0\u09CD\u099A","\u098F\u09AA\u09CD\u09B0\u09BF\u09B2","\u09AE\u09C7","\u099C\u09C1\u09A8","\u099C\u09C1\u09B2\u09BE\u0987","\u0986\u0997\u09B8\u09CD\u099F","\u09B8\u09C7\u09AA\u09CD\u099F\u09C7\u09AE\u09CD\u09AC\u09B0","\u0985\u0995\u09CD\u099F\u09CB\u09AC\u09B0","\u09A8\u09AD\u09C7\u09AE\u09CD\u09AC\u09B0","\u09A1\u09BF\u09B8\u09C7\u09AE\u09CD\u09AC\u09B0"]}};Vm.l10ns.bn=bc;var SI=Vm.l10ns;h();var zm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},wc={firstDayOfWeek:1,weekdays:{shorthand:["Ned","Pon","Uto","Sri","\u010Cet","Pet","Sub"],longhand:["Nedjelja","Ponedjeljak","Utorak","Srijeda","\u010Cetvrtak","Petak","Subota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Mart","April","Maj","Juni","Juli","Avgust","Septembar","Oktobar","Novembar","Decembar"]},time_24hr:!0};zm.l10ns.bs=wc;var CI=zm.l10ns;h();var Ec=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},jo={weekdays:{shorthand:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],longhand:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},months:{shorthand:["Gen","Febr","Mar\xE7","Abr","Maig","Juny","Jul","Ag","Set","Oct","Nov","Des"],longhand:["Gener","Febrer","Mar\xE7","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"]},ordinal:e=>{let t=e%100;if(t>3&&t<21)return"\xE8";switch(t%10){case 1:return"r";case 2:return"n";case 3:return"r";case 4:return"t";default:return"\xE8"}},firstDayOfWeek:1,rangeSeparator:" a ",time_24hr:!0};Ec.l10ns.cat=Ec.l10ns.ca=jo;var DI=Ec.l10ns;h();var jm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},xc={weekdays:{shorthand:["\u06CC\u06D5\u06A9\u0634\u06D5\u0645\u0645\u06D5","\u062F\u0648\u0648\u0634\u06D5\u0645\u0645\u06D5","\u0633\u06CE\u0634\u06D5\u0645\u0645\u06D5","\u0686\u0648\u0627\u0631\u0634\u06D5\u0645\u0645\u06D5","\u067E\u06CE\u0646\u062C\u0634\u06D5\u0645\u0645\u06D5","\u0647\u06D5\u06CC\u0646\u06CC","\u0634\u06D5\u0645\u0645\u06D5"],longhand:["\u06CC\u06D5\u06A9\u0634\u06D5\u0645\u0645\u06D5","\u062F\u0648\u0648\u0634\u06D5\u0645\u0645\u06D5","\u0633\u06CE\u0634\u06D5\u0645\u0645\u06D5","\u0686\u0648\u0627\u0631\u0634\u06D5\u0645\u0645\u06D5","\u067E\u06CE\u0646\u062C\u0634\u06D5\u0645\u0645\u06D5","\u0647\u06D5\u06CC\u0646\u06CC","\u0634\u06D5\u0645\u0645\u06D5"]},months:{shorthand:["\u0695\u06CE\u0628\u06D5\u0646\u062F\u0627\u0646","\u0695\u06D5\u0634\u06D5\u0645\u06D5","\u0646\u06D5\u0648\u0631\u06C6\u0632","\u06AF\u0648\u06B5\u0627\u0646","\u062C\u06C6\u0632\u06D5\u0631\u062F\u0627\u0646","\u067E\u0648\u0648\u0634\u067E\u06D5\u0695","\u06AF\u06D5\u0644\u0627\u0648\u06CE\u0698","\u062E\u06D5\u0631\u0645\u0627\u0646\u0627\u0646","\u0695\u06D5\u0632\u0628\u06D5\u0631","\u06AF\u06D5\u06B5\u0627\u0695\u06CE\u0632\u0627\u0646","\u0633\u06D5\u0631\u0645\u0627\u0648\u06D5\u0632","\u0628\u06D5\u0641\u0631\u0627\u0646\u0628\u0627\u0631"],longhand:["\u0695\u06CE\u0628\u06D5\u0646\u062F\u0627\u0646","\u0695\u06D5\u0634\u06D5\u0645\u06D5","\u0646\u06D5\u0648\u0631\u06C6\u0632","\u06AF\u0648\u06B5\u0627\u0646","\u062C\u06C6\u0632\u06D5\u0631\u062F\u0627\u0646","\u067E\u0648\u0648\u0634\u067E\u06D5\u0695","\u06AF\u06D5\u0644\u0627\u0648\u06CE\u0698","\u062E\u06D5\u0631\u0645\u0627\u0646\u0627\u0646","\u0695\u06D5\u0632\u0628\u06D5\u0631","\u06AF\u06D5\u06B5\u0627\u0695\u06CE\u0632\u0627\u0646","\u0633\u06D5\u0631\u0645\u0627\u0648\u06D5\u0632","\u0628\u06D5\u0641\u0631\u0627\u0646\u0628\u0627\u0631"]},firstDayOfWeek:6,ordinal:()=>""};jm.l10ns.ckb=xc;var II=jm.l10ns;h();var qm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},kc={weekdays:{shorthand:["Ne","Po","\xDAt","St","\u010Ct","P\xE1","So"],longhand:["Ned\u011Ble","Pond\u011Bl\xED","\xDAter\xFD","St\u0159eda","\u010Ctvrtek","P\xE1tek","Sobota"]},months:{shorthand:["Led","\xDAn","B\u0159e","Dub","Kv\u011B","\u010Cer","\u010Cvc","Srp","Z\xE1\u0159","\u0158\xEDj","Lis","Pro"],longhand:["Leden","\xDAnor","B\u0159ezen","Duben","Kv\u011Bten","\u010Cerven","\u010Cervenec","Srpen","Z\xE1\u0159\xED","\u0158\xEDjen","Listopad","Prosinec"]},firstDayOfWeek:1,ordinal:function(){return"."},rangeSeparator:" do ",weekAbbreviation:"T\xFDd.",scrollTitle:"Rolujte pro zm\u011Bnu",toggleTitle:"P\u0159epnout dopoledne/odpoledne",amPM:["dop.","odp."],yearAriaLabel:"Rok",time_24hr:!0};qm.l10ns.cs=kc;var LI=qm.l10ns;h();var Ym=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Sc={weekdays:{shorthand:["Sul","Llun","Maw","Mer","Iau","Gwe","Sad"],longhand:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"]},months:{shorthand:["Ion","Chwef","Maw","Ebr","Mai","Meh","Gorff","Awst","Medi","Hyd","Tach","Rhag"],longhand:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"]},firstDayOfWeek:1,ordinal:e=>e===1?"af":e===2?"ail":e===3||e===4?"ydd":e===5||e===6?"ed":e>=7&&e<=10||e==12||e==15||e==18||e==20?"fed":e==11||e==13||e==14||e==16||e==17||e==19?"eg":e>=21&&e<=39?"ain":"",time_24hr:!0};Ym.l10ns.cy=Sc;var FI=Ym.l10ns;h();var Jm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},_c={weekdays:{shorthand:["s\xF8n","man","tir","ons","tors","fre","l\xF8r"],longhand:["s\xF8ndag","mandag","tirsdag","onsdag","torsdag","fredag","l\xF8rdag"]},months:{shorthand:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],longhand:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"]},ordinal:()=>".",firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"uge",time_24hr:!0};Jm.l10ns.da=_c;var OI=Jm.l10ns;h();var Gm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Cc={weekdays:{shorthand:["So","Mo","Di","Mi","Do","Fr","Sa"],longhand:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},months:{shorthand:["Jan","Feb","M\xE4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],longhand:["Januar","Februar","M\xE4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},firstDayOfWeek:1,weekAbbreviation:"KW",rangeSeparator:" bis ",scrollTitle:"Zum \xC4ndern scrollen",toggleTitle:"Zum Umschalten klicken",time_24hr:!0};Gm.l10ns.de=Cc;var HI=Gm.l10ns;h();var Br={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:e=>{let t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},qo=Br;h();var Qm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Tc={firstDayOfWeek:1,rangeSeparator:" \u011Dis ",weekAbbreviation:"Sem",scrollTitle:"Rulumu por pligrandigi la valoron",toggleTitle:"Klaku por \u015Dalti",weekdays:{shorthand:["Dim","Lun","Mar","Mer","\u0134a\u016D","Ven","Sab"],longhand:["diman\u0109o","lundo","mardo","merkredo","\u0135a\u016Ddo","vendredo","sabato"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","A\u016Dg","Sep","Okt","Nov","Dec"],longhand:["januaro","februaro","marto","aprilo","majo","junio","julio","a\u016Dgusto","septembro","oktobro","novembro","decembro"]},ordinal:()=>"-a",time_24hr:!0};Qm.l10ns.eo=Tc;var $I=Qm.l10ns;h();var Xm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Dc={weekdays:{shorthand:["Dom","Lun","Mar","Mi\xE9","Jue","Vie","S\xE1b"],longhand:["Domingo","Lunes","Martes","Mi\xE9rcoles","Jueves","Viernes","S\xE1bado"]},months:{shorthand:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],longhand:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"]},ordinal:()=>"\xBA",firstDayOfWeek:1,rangeSeparator:" a ",time_24hr:!0};Xm.l10ns.es=Dc;var WI=Xm.l10ns;h();var Zm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Mc={weekdays:{shorthand:["P","E","T","K","N","R","L"],longhand:["P\xFChap\xE4ev","Esmasp\xE4ev","Teisip\xE4ev","Kolmap\xE4ev","Neljap\xE4ev","Reede","Laup\xE4ev"]},months:{shorthand:["Jaan","Veebr","M\xE4rts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],longhand:["Jaanuar","Veebruar","M\xE4rts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"]},firstDayOfWeek:1,ordinal:function(){return"."},weekAbbreviation:"N\xE4d",rangeSeparator:" kuni ",scrollTitle:"Keri, et suurendada",toggleTitle:"Kl\xF5psa, et vahetada",time_24hr:!0};Zm.l10ns.et=Mc;var zI=Zm.l10ns;h();var eg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Ic={weekdays:{shorthand:["\u06CC\u06A9","\u062F\u0648","\u0633\u0647","\u0686\u0647\u0627\u0631","\u067E\u0646\u062C","\u062C\u0645\u0639\u0647","\u0634\u0646\u0628\u0647"],longhand:["\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647","\u062F\u0648\u0634\u0646\u0628\u0647","\u0633\u0647\u200C\u0634\u0646\u0628\u0647","\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647","\u067E\u0646\u0686\u200C\u0634\u0646\u0628\u0647","\u062C\u0645\u0639\u0647","\u0634\u0646\u0628\u0647"]},months:{shorthand:["\u0698\u0627\u0646\u0648\u06CC\u0647","\u0641\u0648\u0631\u06CC\u0647","\u0645\u0627\u0631\u0633","\u0622\u0648\u0631\u06CC\u0644","\u0645\u0647","\u0698\u0648\u0626\u0646","\u0698\u0648\u0626\u06CC\u0647","\u0627\u0648\u062A","\u0633\u067E\u062A\u0627\u0645\u0628\u0631","\u0627\u06A9\u062A\u0628\u0631","\u0646\u0648\u0627\u0645\u0628\u0631","\u062F\u0633\u0627\u0645\u0628\u0631"],longhand:["\u0698\u0627\u0646\u0648\u06CC\u0647","\u0641\u0648\u0631\u06CC\u0647","\u0645\u0627\u0631\u0633","\u0622\u0648\u0631\u06CC\u0644","\u0645\u0647","\u0698\u0648\u0626\u0646","\u0698\u0648\u0626\u06CC\u0647","\u0627\u0648\u062A","\u0633\u067E\u062A\u0627\u0645\u0628\u0631","\u0627\u06A9\u062A\u0628\u0631","\u0646\u0648\u0627\u0645\u0628\u0631","\u062F\u0633\u0627\u0645\u0628\u0631"]},firstDayOfWeek:6,ordinal:()=>""};eg.l10ns.fa=Ic;var qI=eg.l10ns;h();var tg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Ac={firstDayOfWeek:1,weekdays:{shorthand:["su","ma","ti","ke","to","pe","la"],longhand:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},months:{shorthand:["tammi","helmi","maalis","huhti","touko","kes\xE4","hein\xE4","elo","syys","loka","marras","joulu"],longhand:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kes\xE4kuu","hein\xE4kuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"]},ordinal:()=>".",time_24hr:!0};tg.l10ns.fi=Ac;var JI=tg.l10ns;h();var ng=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Lc={weekdays:{shorthand:["Sun","M\xE1n","T\xFDs","Mik","H\xF3s","Fr\xED","Ley"],longhand:["Sunnudagur","M\xE1nadagur","T\xFDsdagur","Mikudagur","H\xF3sdagur","Fr\xEDggjadagur","Leygardagur"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],longhand:["Januar","Februar","Mars","Apr\xEDl","Mai","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"]},ordinal:()=>".",firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"vika",scrollTitle:"Rulla fyri at broyta",toggleTitle:"Tr\xFDst fyri at skifta",yearAriaLabel:"\xC1r",time_24hr:!0};ng.l10ns.fo=Lc;var QI=ng.l10ns;h();var rg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Pc={firstDayOfWeek:1,weekdays:{shorthand:["dim","lun","mar","mer","jeu","ven","sam"],longhand:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},months:{shorthand:["janv","f\xE9vr","mars","avr","mai","juin","juil","ao\xFBt","sept","oct","nov","d\xE9c"],longhand:["janvier","f\xE9vrier","mars","avril","mai","juin","juillet","ao\xFBt","septembre","octobre","novembre","d\xE9cembre"]},ordinal:e=>e>1?"":"er",rangeSeparator:" au ",weekAbbreviation:"Sem",scrollTitle:"D\xE9filer pour augmenter la valeur",toggleTitle:"Cliquer pour basculer",time_24hr:!0};rg.l10ns.fr=Pc;var ZI=rg.l10ns;h();var ig=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Fc={weekdays:{shorthand:["\u039A\u03C5","\u0394\u03B5","\u03A4\u03C1","\u03A4\u03B5","\u03A0\u03AD","\u03A0\u03B1","\u03A3\u03AC"],longhand:["\u039A\u03C5\u03C1\u03B9\u03B1\u03BA\u03AE","\u0394\u03B5\u03C5\u03C4\u03AD\u03C1\u03B1","\u03A4\u03C1\u03AF\u03C4\u03B7","\u03A4\u03B5\u03C4\u03AC\u03C1\u03C4\u03B7","\u03A0\u03AD\u03BC\u03C0\u03C4\u03B7","\u03A0\u03B1\u03C1\u03B1\u03C3\u03BA\u03B5\u03C5\u03AE","\u03A3\u03AC\u03B2\u03B2\u03B1\u03C4\u03BF"]},months:{shorthand:["\u0399\u03B1\u03BD","\u03A6\u03B5\u03B2","\u039C\u03AC\u03C1","\u0391\u03C0\u03C1","\u039C\u03AC\u03B9","\u0399\u03BF\u03CD\u03BD","\u0399\u03BF\u03CD\u03BB","\u0391\u03CD\u03B3","\u03A3\u03B5\u03C0","\u039F\u03BA\u03C4","\u039D\u03BF\u03AD","\u0394\u03B5\u03BA"],longhand:["\u0399\u03B1\u03BD\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2","\u03A6\u03B5\u03B2\u03C1\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2","\u039C\u03AC\u03C1\u03C4\u03B9\u03BF\u03C2","\u0391\u03C0\u03C1\u03AF\u03BB\u03B9\u03BF\u03C2","\u039C\u03AC\u03B9\u03BF\u03C2","\u0399\u03BF\u03CD\u03BD\u03B9\u03BF\u03C2","\u0399\u03BF\u03CD\u03BB\u03B9\u03BF\u03C2","\u0391\u03CD\u03B3\u03BF\u03C5\u03C3\u03C4\u03BF\u03C2","\u03A3\u03B5\u03C0\u03C4\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2","\u039F\u03BA\u03C4\u03CE\u03B2\u03C1\u03B9\u03BF\u03C2","\u039D\u03BF\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2","\u0394\u03B5\u03BA\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2"]},firstDayOfWeek:1,ordinal:function(){return""},weekAbbreviation:"\u0395\u03B2\u03B4",rangeSeparator:" \u03AD\u03C9\u03C2 ",scrollTitle:"\u039C\u03B5\u03C4\u03B1\u03BA\u03C5\u03BB\u03AE\u03C3\u03C4\u03B5 \u03B3\u03B9\u03B1 \u03C0\u03C1\u03BF\u03C3\u03B1\u03CD\u03BE\u03B7\u03C3\u03B7",toggleTitle:"\u039A\u03AC\u03BD\u03C4\u03B5 \u03BA\u03BB\u03B9\u03BA \u03B3\u03B9\u03B1 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AE",amPM:["\u03A0\u039C","\u039C\u039C"],yearAriaLabel:"\u03C7\u03C1\u03CC\u03BD\u03BF\u03C2",monthAriaLabel:"\u03BC\u03AE\u03BD\u03B1\u03C2",hourAriaLabel:"\u03CE\u03C1\u03B1",minuteAriaLabel:"\u03BB\u03B5\u03C0\u03C4\u03CC"};ig.l10ns.gr=Fc;var tA=ig.l10ns;h();var ag=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Nc={weekdays:{shorthand:["\u05D0","\u05D1","\u05D2","\u05D3","\u05D4","\u05D5","\u05E9"],longhand:["\u05E8\u05D0\u05E9\u05D5\u05DF","\u05E9\u05E0\u05D9","\u05E9\u05DC\u05D9\u05E9\u05D9","\u05E8\u05D1\u05D9\u05E2\u05D9","\u05D7\u05DE\u05D9\u05E9\u05D9","\u05E9\u05D9\u05E9\u05D9","\u05E9\u05D1\u05EA"]},months:{shorthand:["\u05D9\u05E0\u05D5\u05F3","\u05E4\u05D1\u05E8\u05F3","\u05DE\u05E8\u05E5","\u05D0\u05E4\u05E8\u05F3","\u05DE\u05D0\u05D9","\u05D9\u05D5\u05E0\u05D9","\u05D9\u05D5\u05DC\u05D9","\u05D0\u05D5\u05D2\u05F3","\u05E1\u05E4\u05D8\u05F3","\u05D0\u05D5\u05E7\u05F3","\u05E0\u05D5\u05D1\u05F3","\u05D3\u05E6\u05DE\u05F3"],longhand:["\u05D9\u05E0\u05D5\u05D0\u05E8","\u05E4\u05D1\u05E8\u05D5\u05D0\u05E8","\u05DE\u05E8\u05E5","\u05D0\u05E4\u05E8\u05D9\u05DC","\u05DE\u05D0\u05D9","\u05D9\u05D5\u05E0\u05D9","\u05D9\u05D5\u05DC\u05D9","\u05D0\u05D5\u05D2\u05D5\u05E1\u05D8","\u05E1\u05E4\u05D8\u05DE\u05D1\u05E8","\u05D0\u05D5\u05E7\u05D8\u05D5\u05D1\u05E8","\u05E0\u05D5\u05D1\u05DE\u05D1\u05E8","\u05D3\u05E6\u05DE\u05D1\u05E8"]},rangeSeparator:" \u05D0\u05DC ",time_24hr:!0};ag.l10ns.he=Nc;var rA=ag.l10ns;h();var og=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Oc={weekdays:{shorthand:["\u0930\u0935\u093F","\u0938\u094B\u092E","\u092E\u0902\u0917\u0932","\u092C\u0941\u0927","\u0917\u0941\u0930\u0941","\u0936\u0941\u0915\u094D\u0930","\u0936\u0928\u093F"],longhand:["\u0930\u0935\u093F\u0935\u093E\u0930","\u0938\u094B\u092E\u0935\u093E\u0930","\u092E\u0902\u0917\u0932\u0935\u093E\u0930","\u092C\u0941\u0927\u0935\u093E\u0930","\u0917\u0941\u0930\u0941\u0935\u093E\u0930","\u0936\u0941\u0915\u094D\u0930\u0935\u093E\u0930","\u0936\u0928\u093F\u0935\u093E\u0930"]},months:{shorthand:["\u091C\u0928","\u092B\u0930","\u092E\u093E\u0930\u094D\u091A","\u0905\u092A\u094D\u0930\u0947\u0932","\u092E\u0908","\u091C\u0942\u0928","\u091C\u0942\u0932\u093E\u0908","\u0905\u0917","\u0938\u093F\u0924","\u0905\u0915\u094D\u091F","\u0928\u0935","\u0926\u093F"],longhand:["\u091C\u0928\u0935\u0930\u0940 ","\u092B\u0930\u0935\u0930\u0940","\u092E\u093E\u0930\u094D\u091A","\u0905\u092A\u094D\u0930\u0947\u0932","\u092E\u0908","\u091C\u0942\u0928","\u091C\u0942\u0932\u093E\u0908","\u0905\u0917\u0938\u094D\u0924 ","\u0938\u093F\u0924\u092E\u094D\u092C\u0930","\u0905\u0915\u094D\u091F\u0942\u092C\u0930","\u0928\u0935\u092E\u094D\u092C\u0930","\u0926\u093F\u0938\u092E\u094D\u092C\u0930"]}};og.l10ns.hi=Oc;var aA=og.l10ns;h();var sg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Rc={firstDayOfWeek:1,weekdays:{shorthand:["Ned","Pon","Uto","Sri","\u010Cet","Pet","Sub"],longhand:["Nedjelja","Ponedjeljak","Utorak","Srijeda","\u010Cetvrtak","Petak","Subota"]},months:{shorthand:["Sij","Velj","O\u017Eu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],longhand:["Sije\u010Danj","Velja\u010Da","O\u017Eujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"]},time_24hr:!0};sg.l10ns.hr=Rc;var sA=sg.l10ns;h();var lg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Hc={firstDayOfWeek:1,weekdays:{shorthand:["V","H","K","Sz","Cs","P","Szo"],longhand:["Vas\xE1rnap","H\xE9tf\u0151","Kedd","Szerda","Cs\xFCt\xF6rt\xF6k","P\xE9ntek","Szombat"]},months:{shorthand:["Jan","Feb","M\xE1r","\xC1pr","M\xE1j","J\xFAn","J\xFAl","Aug","Szep","Okt","Nov","Dec"],longhand:["Janu\xE1r","Febru\xE1r","M\xE1rcius","\xC1prilis","M\xE1jus","J\xFAnius","J\xFAlius","Augusztus","Szeptember","Okt\xF3ber","November","December"]},ordinal:function(){return"."},weekAbbreviation:"H\xE9t",scrollTitle:"G\xF6rgessen",toggleTitle:"Kattintson a v\xE1lt\xE1shoz",rangeSeparator:" - ",time_24hr:!0};lg.l10ns.hu=Hc;var cA=lg.l10ns;h();var cg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Bc={weekdays:{shorthand:["\u053F\u056B\u0580","\u0535\u0580\u056F","\u0535\u0580\u0584","\u0549\u0580\u0584","\u0540\u0576\u0563","\u0548\u0582\u0580\u0562","\u0547\u0562\u0569"],longhand:["\u053F\u056B\u0580\u0561\u056F\u056B","\u0535\u056F\u0578\u0582\u0577\u0561\u0562\u0569\u056B","\u0535\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B","\u0549\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B","\u0540\u056B\u0576\u0563\u0577\u0561\u0562\u0569\u056B","\u0548\u0582\u0580\u0562\u0561\u0569","\u0547\u0561\u0562\u0561\u0569"]},months:{shorthand:["\u0540\u0576\u057E","\u0553\u057F\u0580","\u0544\u0561\u0580","\u0531\u057A\u0580","\u0544\u0561\u0575","\u0540\u0576\u057D","\u0540\u056C\u057D","\u0555\u0563\u057D","\u054D\u0565\u057A","\u0540\u0578\u056F","\u0546\u0574\u0562","\u0534\u0565\u056F"],longhand:["\u0540\u0578\u0582\u0576\u057E\u0561\u0580","\u0553\u0565\u057F\u0580\u057E\u0561\u0580","\u0544\u0561\u0580\u057F","\u0531\u057A\u0580\u056B\u056C","\u0544\u0561\u0575\u056B\u057D","\u0540\u0578\u0582\u0576\u056B\u057D","\u0540\u0578\u0582\u056C\u056B\u057D","\u0555\u0563\u0578\u057D\u057F\u0578\u057D","\u054D\u0565\u057A\u057F\u0565\u0574\u0562\u0565\u0580","\u0540\u0578\u056F\u057F\u0565\u0574\u0562\u0565\u0580","\u0546\u0578\u0575\u0565\u0574\u0562\u0565\u0580","\u0534\u0565\u056F\u057F\u0565\u0574\u0562\u0565\u0580"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u0547\u0532\u054F",scrollTitle:"\u0548\u056C\u0578\u0580\u0565\u0584\u055D \u0574\u0565\u056E\u0561\u0581\u0576\u0565\u056C\u0578\u0582 \u0570\u0561\u0574\u0561\u0580",toggleTitle:"\u054D\u0565\u0572\u0574\u0565\u0584\u055D \u0583\u0578\u056D\u0565\u056C\u0578\u0582 \u0570\u0561\u0574\u0561\u0580",amPM:["\u0544\u053F","\u053F\u0540"],yearAriaLabel:"\u054F\u0561\u0580\u056B",monthAriaLabel:"\u0531\u0574\u056B\u057D",hourAriaLabel:"\u053A\u0561\u0574",minuteAriaLabel:"\u0550\u0578\u057A\u0565",time_24hr:!0};cg.l10ns.hy=Bc;var dA=cg.l10ns;h();var ug=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Kc={weekdays:{shorthand:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],longhand:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],longhand:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]},firstDayOfWeek:1,ordinal:()=>"",time_24hr:!0,rangeSeparator:" - "};ug.l10ns.id=Kc;var pA=ug.l10ns;h();var dg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},$c={weekdays:{shorthand:["Sun","M\xE1n","\xDEri","Mi\xF0","Fim","F\xF6s","Lau"],longhand:["Sunnudagur","M\xE1nudagur","\xDEri\xF0judagur","Mi\xF0vikudagur","Fimmtudagur","F\xF6studagur","Laugardagur"]},months:{shorthand:["Jan","Feb","Mar","Apr","Ma\xED","J\xFAn","J\xFAl","\xC1g\xFA","Sep","Okt","N\xF3v","Des"],longhand:["Jan\xFAar","Febr\xFAar","Mars","Apr\xEDl","Ma\xED","J\xFAn\xED","J\xFAl\xED","\xC1g\xFAst","September","Okt\xF3ber","N\xF3vember","Desember"]},ordinal:()=>".",firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"vika",yearAriaLabel:"\xC1r",time_24hr:!0};dg.l10ns.is=$c;var mA=dg.l10ns;h();var fg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Uc={weekdays:{shorthand:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],longhand:["Domenica","Luned\xEC","Marted\xEC","Mercoled\xEC","Gioved\xEC","Venerd\xEC","Sabato"]},months:{shorthand:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],longhand:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"]},firstDayOfWeek:1,ordinal:()=>"\xB0",rangeSeparator:" al ",weekAbbreviation:"Se",scrollTitle:"Scrolla per aumentare",toggleTitle:"Clicca per cambiare",time_24hr:!0};fg.l10ns.it=Uc;var vA=fg.l10ns;h();var pg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Wc={weekdays:{shorthand:["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"],longhand:["\u65E5\u66DC\u65E5","\u6708\u66DC\u65E5","\u706B\u66DC\u65E5","\u6C34\u66DC\u65E5","\u6728\u66DC\u65E5","\u91D1\u66DC\u65E5","\u571F\u66DC\u65E5"]},months:{shorthand:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],longhand:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"]},time_24hr:!0,rangeSeparator:" \u304B\u3089 ",monthAriaLabel:"\u6708",amPM:["\u5348\u524D","\u5348\u5F8C"],yearAriaLabel:"\u5E74",hourAriaLabel:"\u6642\u9593",minuteAriaLabel:"\u5206"};pg.l10ns.ja=Wc;var bA=pg.l10ns;h();var hg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Vc={weekdays:{shorthand:["\u10D9\u10D5","\u10DD\u10E0","\u10E1\u10D0","\u10DD\u10D7","\u10EE\u10E3","\u10DE\u10D0","\u10E8\u10D0"],longhand:["\u10D9\u10D5\u10D8\u10E0\u10D0","\u10DD\u10E0\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10E1\u10D0\u10DB\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10DD\u10D7\u10EE\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10EE\u10E3\u10D7\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10DE\u10D0\u10E0\u10D0\u10E1\u10D9\u10D4\u10D5\u10D8","\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8"]},months:{shorthand:["\u10D8\u10D0\u10DC","\u10D7\u10D4\u10D1","\u10DB\u10D0\u10E0","\u10D0\u10DE\u10E0","\u10DB\u10D0\u10D8","\u10D8\u10D5\u10DC","\u10D8\u10D5\u10DA","\u10D0\u10D2\u10D5","\u10E1\u10D4\u10E5","\u10DD\u10E5\u10E2","\u10DC\u10DD\u10D4","\u10D3\u10D4\u10D9"],longhand:["\u10D8\u10D0\u10DC\u10D5\u10D0\u10E0\u10D8","\u10D7\u10D4\u10D1\u10D4\u10E0\u10D5\u10D0\u10DA\u10D8","\u10DB\u10D0\u10E0\u10E2\u10D8","\u10D0\u10DE\u10E0\u10D8\u10DA\u10D8","\u10DB\u10D0\u10D8\u10E1\u10D8","\u10D8\u10D5\u10DC\u10D8\u10E1\u10D8","\u10D8\u10D5\u10DA\u10D8\u10E1\u10D8","\u10D0\u10D2\u10D5\u10D8\u10E1\u10E2\u10DD","\u10E1\u10D4\u10E5\u10E2\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8","\u10DD\u10E5\u10E2\u10DD\u10DB\u10D1\u10D4\u10E0\u10D8","\u10DC\u10DD\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8","\u10D3\u10D4\u10D9\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u10D9\u10D5.",scrollTitle:"\u10D3\u10D0\u10E1\u10E5\u10E0\u10DD\u10DA\u10D4\u10D7 \u10D2\u10D0\u10E1\u10D0\u10D3\u10D8\u10D3\u10D4\u10D1\u10DA\u10D0\u10D3",toggleTitle:"\u10D3\u10D0\u10D0\u10D9\u10DA\u10D8\u10D9\u10D4\u10D7 \u10D2\u10D0\u10D3\u10D0\u10E0\u10D7\u10D5\u10D8\u10E1\u10D7\u10D5\u10D8\u10E1",amPM:["AM","PM"],yearAriaLabel:"\u10EC\u10D4\u10DA\u10D8",time_24hr:!0};hg.l10ns.ka=Vc;var EA=hg.l10ns;h();var mg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},zc={weekdays:{shorthand:["\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A\u17A0\u179F.","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"],longhand:["\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A\u17A0\u179F\u17D2\u1794\u178F\u17B7\u17CD","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"]},months:{shorthand:["\u1798\u1780\u179A\u17B6","\u1780\u17BB\u1798\u17D2\u1797\u17C7","\u1798\u17B8\u1793\u17B6","\u1798\u17C1\u179F\u17B6","\u17A7\u179F\u1797\u17B6","\u1798\u17B7\u1790\u17BB\u1793\u17B6","\u1780\u1780\u17D2\u1780\u178A\u17B6","\u179F\u17B8\u17A0\u17B6","\u1780\u1789\u17D2\u1789\u17B6","\u178F\u17BB\u179B\u17B6","\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6","\u1792\u17D2\u1793\u17BC"],longhand:["\u1798\u1780\u179A\u17B6","\u1780\u17BB\u1798\u17D2\u1797\u17C7","\u1798\u17B8\u1793\u17B6","\u1798\u17C1\u179F\u17B6","\u17A7\u179F\u1797\u17B6","\u1798\u17B7\u1790\u17BB\u1793\u17B6","\u1780\u1780\u17D2\u1780\u178A\u17B6","\u179F\u17B8\u17A0\u17B6","\u1780\u1789\u17D2\u1789\u17B6","\u178F\u17BB\u179B\u17B6","\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6","\u1792\u17D2\u1793\u17BC"]},ordinal:()=>"",firstDayOfWeek:1,rangeSeparator:" \u178A\u179B\u17CB ",weekAbbreviation:"\u179F\u1794\u17D2\u178F\u17B6\u17A0\u17CD",scrollTitle:"\u179A\u17C6\u1780\u17B7\u179B\u178A\u17BE\u1798\u17D2\u1794\u17B8\u1794\u1784\u17D2\u1780\u17BE\u1793",toggleTitle:"\u1785\u17BB\u1785\u178A\u17BE\u1798\u17D2\u1794\u17B8\u1795\u17D2\u179B\u17B6\u179F\u17CB\u1794\u17D2\u178A\u17BC\u179A",yearAriaLabel:"\u1786\u17D2\u1793\u17B6\u17C6",time_24hr:!0};mg.l10ns.km=zc;var kA=mg.l10ns;h();var gg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},jc={weekdays:{shorthand:["\uC77C","\uC6D4","\uD654","\uC218","\uBAA9","\uAE08","\uD1A0"],longhand:["\uC77C\uC694\uC77C","\uC6D4\uC694\uC77C","\uD654\uC694\uC77C","\uC218\uC694\uC77C","\uBAA9\uC694\uC77C","\uAE08\uC694\uC77C","\uD1A0\uC694\uC77C"]},months:{shorthand:["1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"],longhand:["1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"]},ordinal:()=>"\uC77C",rangeSeparator:" ~ ",amPM:["\uC624\uC804","\uC624\uD6C4"]};gg.l10ns.ko=jc;var _A=gg.l10ns;h();var vg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},qc={weekdays:{shorthand:["\u0416\u0441","\u0414\u0441","\u0421c","\u0421\u0440","\u0411\u0441","\u0416\u043C","\u0421\u0431"],longhand:["\u0416\u0435\u043A\u0441\u0435\u043D\u0431i","\u0414\u04AF\u0439\u0441\u0435\u043D\u0431i","\u0421\u0435\u0439\u0441\u0435\u043D\u0431i","\u0421\u04D9\u0440\u0441\u0435\u043D\u0431i","\u0411\u0435\u0439\u0441\u0435\u043D\u0431i","\u0416\u04B1\u043C\u0430","\u0421\u0435\u043D\u0431i"]},months:{shorthand:["\u049A\u0430\u04A3","\u0410\u049B\u043F","\u041D\u0430\u0443","\u0421\u04D9\u0443","\u041C\u0430\u043C","\u041C\u0430\u0443","\u0428i\u043B","\u0422\u0430\u043C","\u049A\u044B\u0440","\u049A\u0430\u0437","\u049A\u0430\u0440","\u0416\u0435\u043B"],longhand:["\u049A\u0430\u04A3\u0442\u0430\u0440","\u0410\u049B\u043F\u0430\u043D","\u041D\u0430\u0443\u0440\u044B\u0437","\u0421\u04D9\u0443i\u0440","\u041C\u0430\u043C\u044B\u0440","\u041C\u0430\u0443\u0441\u044B\u043C","\u0428i\u043B\u0434\u0435","\u0422\u0430\u043C\u044B\u0437","\u049A\u044B\u0440\u043A\u04AF\u0439\u0435\u043A","\u049A\u0430\u0437\u0430\u043D","\u049A\u0430\u0440\u0430\u0448\u0430","\u0416\u0435\u043B\u0442\u043E\u049B\u0441\u0430\u043D"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u0410\u043F\u0442\u0430",scrollTitle:"\u04AE\u043B\u043A\u0435\u0439\u0442\u0443 \u04AF\u0448\u0456\u043D \u0430\u0439\u043D\u0430\u043B\u0434\u044B\u0440\u044B\u04A3\u044B\u0437",toggleTitle:"\u0410\u0443\u044B\u0441\u0442\u044B\u0440\u0443 \u04AF\u0448\u0456\u043D \u0431\u0430\u0441\u044B\u04A3\u044B\u0437",amPM:["\u0422\u0414","\u0422\u041A"],yearAriaLabel:"\u0416\u044B\u043B"};vg.l10ns.kz=qc;var TA=vg.l10ns;h();var yg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Yc={weekdays:{shorthand:["S","Pr","A","T","K","Pn","\u0160"],longhand:["Sekmadienis","Pirmadienis","Antradienis","Tre\u010Diadienis","Ketvirtadienis","Penktadienis","\u0160e\u0161tadienis"]},months:{shorthand:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rgp","Rgs","Spl","Lap","Grd"],longhand:["Sausis","Vasaris","Kovas","Balandis","Gegu\u017E\u0117","Bir\u017Eelis","Liepa","Rugpju\u0304tis","Rugse\u0307jis","Spalis","Lapkritis","Gruodis"]},firstDayOfWeek:1,ordinal:function(){return"-a"},rangeSeparator:" iki ",weekAbbreviation:"Sav",scrollTitle:"Keisti laik\u0105 pel\u0117s rateliu",toggleTitle:"Perjungti laiko format\u0105",time_24hr:!0};yg.l10ns.lt=Yc;var MA=yg.l10ns;h();var bg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Jc={firstDayOfWeek:1,weekdays:{shorthand:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],longhand:["Sv\u0113tdiena","Pirmdiena","Otrdiena","Tre\u0161diena","Ceturtdiena","Piektdiena","Sestdiena"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mai","J\u016Bn","J\u016Bl","Aug","Sep","Okt","Nov","Dec"],longhand:["Janv\u0101ris","Febru\u0101ris","Marts","Apr\u012Blis","Maijs","J\u016Bnijs","J\u016Blijs","Augusts","Septembris","Oktobris","Novembris","Decembris"]},rangeSeparator:" l\u012Bdz ",time_24hr:!0};bg.l10ns.lv=Jc;var AA=bg.l10ns;h();var wg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Gc={weekdays:{shorthand:["\u041D\u0435","\u041F\u043E","\u0412\u0442","\u0421\u0440","\u0427\u0435","\u041F\u0435","\u0421\u0430"],longhand:["\u041D\u0435\u0434\u0435\u043B\u0430","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0440\u0442\u043E\u043A","\u041F\u0435\u0442\u043E\u043A","\u0421\u0430\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u0408\u0430\u043D","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0458","\u0408\u0443\u043D","\u0408\u0443\u043B","\u0410\u0432\u0433","\u0421\u0435\u043F","\u041E\u043A\u0442","\u041D\u043E\u0435","\u0414\u0435\u043A"],longhand:["\u0408\u0430\u043D\u0443\u0430\u0440\u0438","\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0438\u043B","\u041C\u0430\u0458","\u0408\u0443\u043D\u0438","\u0408\u0443\u043B\u0438","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043F\u0442\u0435\u043C\u0432\u0440\u0438","\u041E\u043A\u0442\u043E\u043C\u0432\u0440\u0438","\u041D\u043E\u0435\u043C\u0432\u0440\u0438","\u0414\u0435\u043A\u0435\u043C\u0432\u0440\u0438"]},firstDayOfWeek:1,weekAbbreviation:"\u041D\u0435\u0434.",rangeSeparator:" \u0434\u043E ",time_24hr:!0};wg.l10ns.mk=Gc;var PA=wg.l10ns;h();var Eg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Qc={firstDayOfWeek:1,weekdays:{shorthand:["\u0414\u0430","\u041C\u044F","\u041B\u0445","\u041F\u04AF","\u0411\u0430","\u0411\u044F","\u041D\u044F"],longhand:["\u0414\u0430\u0432\u0430\u0430","\u041C\u044F\u0433\u043C\u0430\u0440","\u041B\u0445\u0430\u0433\u0432\u0430","\u041F\u04AF\u0440\u044D\u0432","\u0411\u0430\u0430\u0441\u0430\u043D","\u0411\u044F\u043C\u0431\u0430","\u041D\u044F\u043C"]},months:{shorthand:["1-\u0440 \u0441\u0430\u0440","2-\u0440 \u0441\u0430\u0440","3-\u0440 \u0441\u0430\u0440","4-\u0440 \u0441\u0430\u0440","5-\u0440 \u0441\u0430\u0440","6-\u0440 \u0441\u0430\u0440","7-\u0440 \u0441\u0430\u0440","8-\u0440 \u0441\u0430\u0440","9-\u0440 \u0441\u0430\u0440","10-\u0440 \u0441\u0430\u0440","11-\u0440 \u0441\u0430\u0440","12-\u0440 \u0441\u0430\u0440"],longhand:["\u041D\u044D\u0433\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0425\u043E\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0414\u04E9\u0440\u04E9\u0432\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0417\u0443\u0440\u0433\u0430\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0414\u043E\u043B\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u041D\u0430\u0439\u043C\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0415\u0441\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0410\u0440\u0432\u0430\u043D\u043D\u044D\u0433\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0410\u0440\u0432\u0430\u043D\u0445\u043E\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440"]},rangeSeparator:"-\u0441 ",time_24hr:!0};Eg.l10ns.mn=Qc;var NA=Eg.l10ns;h();var J0=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},xg={weekdays:{shorthand:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],longhand:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"]},months:{shorthand:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],longhand:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"]},firstDayOfWeek:1,ordinal:()=>""},RA=J0.l10ns;h();var kg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Xc={weekdays:{shorthand:["\u1014\u103D\u1031","\u101C\u102C","\u1002\u102B","\u101F\u1030\u1038","\u1000\u103C\u102C","\u101E\u1031\u102C","\u1014\u1031"],longhand:["\u1010\u1014\u1004\u103A\u1039\u1002\u1014\u103D\u1031","\u1010\u1014\u1004\u103A\u1039\u101C\u102C","\u1021\u1004\u103A\u1039\u1002\u102B","\u1017\u102F\u1012\u1039\u1013\u101F\u1030\u1038","\u1000\u103C\u102C\u101E\u1015\u1010\u1031\u1038","\u101E\u1031\u102C\u1000\u103C\u102C","\u1005\u1014\u1031"]},months:{shorthand:["\u1007\u1014\u103A","\u1016\u1031","\u1019\u1010\u103A","\u1015\u103C\u102E","\u1019\u1031","\u1007\u103D\u1014\u103A","\u101C\u102D\u102F\u1004\u103A","\u101E\u103C","\u1005\u1000\u103A","\u1021\u1031\u102C\u1000\u103A","\u1014\u102D\u102F","\u1012\u102E"],longhand:["\u1007\u1014\u103A\u1014\u101D\u102B\u101B\u102E","\u1016\u1031\u1016\u1031\u102C\u103A\u101D\u102B\u101B\u102E","\u1019\u1010\u103A","\u1027\u1015\u103C\u102E","\u1019\u1031","\u1007\u103D\u1014\u103A","\u1007\u1030\u101C\u102D\u102F\u1004\u103A","\u101E\u103C\u1002\u102F\u1010\u103A","\u1005\u1000\u103A\u1010\u1004\u103A\u1018\u102C","\u1021\u1031\u102C\u1000\u103A\u1010\u102D\u102F\u1018\u102C","\u1014\u102D\u102F\u101D\u1004\u103A\u1018\u102C","\u1012\u102E\u1007\u1004\u103A\u1018\u102C"]},firstDayOfWeek:1,ordinal:()=>"",time_24hr:!0};kg.l10ns.my=Xc;var BA=kg.l10ns;h();var Sg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Zc={weekdays:{shorthand:["zo","ma","di","wo","do","vr","za"],longhand:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},months:{shorthand:["jan","feb","mrt","apr","mei","jun","jul","aug","sept","okt","nov","dec"],longhand:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"]},firstDayOfWeek:1,weekAbbreviation:"wk",rangeSeparator:" t/m ",scrollTitle:"Scroll voor volgende / vorige",toggleTitle:"Klik om te wisselen",time_24hr:!0,ordinal:e=>e===1||e===8||e>=20?"ste":"de"};Sg.l10ns.nl=Zc;var $A=Sg.l10ns;h();var _g=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},eu={weekdays:{shorthand:["S\xF8.","M\xE5.","Ty.","On.","To.","Fr.","La."],longhand:["S\xF8ndag","M\xE5ndag","Tysdag","Onsdag","Torsdag","Fredag","Laurdag"]},months:{shorthand:["Jan","Feb","Mars","Apr","Mai","Juni","Juli","Aug","Sep","Okt","Nov","Des"],longhand:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"]},firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"Veke",scrollTitle:"Scroll for \xE5 endre",toggleTitle:"Klikk for \xE5 veksle",time_24hr:!0,ordinal:()=>"."};_g.l10ns.nn=eu;var WA=_g.l10ns;h();var Cg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},tu={weekdays:{shorthand:["S\xF8n","Man","Tir","Ons","Tor","Fre","L\xF8r"],longhand:["S\xF8ndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","L\xF8rdag"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],longhand:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"]},firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"Uke",scrollTitle:"Scroll for \xE5 endre",toggleTitle:"Klikk for \xE5 veksle",time_24hr:!0,ordinal:()=>"."};Cg.l10ns.no=tu;var zA=Cg.l10ns;h();var Tg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},nu={weekdays:{shorthand:["\u0A10\u0A24","\u0A38\u0A4B\u0A2E","\u0A2E\u0A70\u0A17\u0A32","\u0A2C\u0A41\u0A71\u0A27","\u0A35\u0A40\u0A30","\u0A38\u0A3C\u0A41\u0A71\u0A15\u0A30","\u0A38\u0A3C\u0A28\u0A3F\u0A71\u0A1A\u0A30"],longhand:["\u0A10\u0A24\u0A35\u0A3E\u0A30","\u0A38\u0A4B\u0A2E\u0A35\u0A3E\u0A30","\u0A2E\u0A70\u0A17\u0A32\u0A35\u0A3E\u0A30","\u0A2C\u0A41\u0A71\u0A27\u0A35\u0A3E\u0A30","\u0A35\u0A40\u0A30\u0A35\u0A3E\u0A30","\u0A38\u0A3C\u0A41\u0A71\u0A15\u0A30\u0A35\u0A3E\u0A30","\u0A38\u0A3C\u0A28\u0A3F\u0A71\u0A1A\u0A30\u0A35\u0A3E\u0A30"]},months:{shorthand:["\u0A1C\u0A28","\u0A2B\u0A3C\u0A30","\u0A2E\u0A3E\u0A30","\u0A05\u0A2A\u0A4D\u0A30\u0A48","\u0A2E\u0A08","\u0A1C\u0A42\u0A28","\u0A1C\u0A41\u0A32\u0A3E","\u0A05\u0A17","\u0A38\u0A24\u0A70","\u0A05\u0A15","\u0A28\u0A35\u0A70","\u0A26\u0A38\u0A70"],longhand:["\u0A1C\u0A28\u0A35\u0A30\u0A40","\u0A2B\u0A3C\u0A30\u0A35\u0A30\u0A40","\u0A2E\u0A3E\u0A30\u0A1A","\u0A05\u0A2A\u0A4D\u0A30\u0A48\u0A32","\u0A2E\u0A08","\u0A1C\u0A42\u0A28","\u0A1C\u0A41\u0A32\u0A3E\u0A08","\u0A05\u0A17\u0A38\u0A24","\u0A38\u0A24\u0A70\u0A2C\u0A30","\u0A05\u0A15\u0A24\u0A42\u0A2C\u0A30","\u0A28\u0A35\u0A70\u0A2C\u0A30","\u0A26\u0A38\u0A70\u0A2C\u0A30"]},time_24hr:!0};Tg.l10ns.pa=nu;var qA=Tg.l10ns;h();var Dg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},ru={weekdays:{shorthand:["Nd","Pn","Wt","\u015Ar","Cz","Pt","So"],longhand:["Niedziela","Poniedzia\u0142ek","Wtorek","\u015Aroda","Czwartek","Pi\u0105tek","Sobota"]},months:{shorthand:["Sty","Lut","Mar","Kwi","Maj","Cze","Lip","Sie","Wrz","Pa\u017A","Lis","Gru"],longhand:["Stycze\u0144","Luty","Marzec","Kwiecie\u0144","Maj","Czerwiec","Lipiec","Sierpie\u0144","Wrzesie\u0144","Pa\u017Adziernik","Listopad","Grudzie\u0144"]},rangeSeparator:" do ",weekAbbreviation:"tydz.",scrollTitle:"Przewi\u0144, aby zwi\u0119kszy\u0107",toggleTitle:"Kliknij, aby prze\u0142\u0105czy\u0107",firstDayOfWeek:1,time_24hr:!0,ordinal:()=>"."};Dg.l10ns.pl=ru;var JA=Dg.l10ns;h();var Mg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},iu={weekdays:{shorthand:["Dom","Seg","Ter","Qua","Qui","Sex","S\xE1b"],longhand:["Domingo","Segunda-feira","Ter\xE7a-feira","Quarta-feira","Quinta-feira","Sexta-feira","S\xE1bado"]},months:{shorthand:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],longhand:["Janeiro","Fevereiro","Mar\xE7o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"]},rangeSeparator:" at\xE9 ",time_24hr:!0};Mg.l10ns.pt=iu;var QA=Mg.l10ns;h();var Ig=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},au={weekdays:{shorthand:["Dum","Lun","Mar","Mie","Joi","Vin","S\xE2m"],longhand:["Duminic\u0103","Luni","Mar\u021Bi","Miercuri","Joi","Vineri","S\xE2mb\u0103t\u0103"]},months:{shorthand:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Noi","Dec"],longhand:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"]},firstDayOfWeek:1,time_24hr:!0,ordinal:()=>""};Ig.l10ns.ro=au;var ZA=Ig.l10ns;h();var Ag=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},ou={weekdays:{shorthand:["\u0412\u0441","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],longhand:["\u0412\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440\u0433","\u041F\u044F\u0442\u043D\u0438\u0446\u0430","\u0421\u0443\u0431\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"],longhand:["\u042F\u043D\u0432\u0430\u0440\u044C","\u0424\u0435\u0432\u0440\u0430\u043B\u044C","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B\u044C","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C","\u041E\u043A\u0442\u044F\u0431\u0440\u044C","\u041D\u043E\u044F\u0431\u0440\u044C","\u0414\u0435\u043A\u0430\u0431\u0440\u044C"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u041D\u0435\u0434.",scrollTitle:"\u041F\u0440\u043E\u043A\u0440\u0443\u0442\u0438\u0442\u0435 \u0434\u043B\u044F \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u044F",toggleTitle:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F",amPM:["\u0414\u041F","\u041F\u041F"],yearAriaLabel:"\u0413\u043E\u0434",time_24hr:!0};Ag.l10ns.ru=ou;var tL=Ag.l10ns;h();var Lg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},su={weekdays:{shorthand:["\u0D89","\u0DC3","\u0D85","\u0DB6","\u0DB6\u0DCA\u200D\u0DBB","\u0DC3\u0DD2","\u0DC3\u0DD9"],longhand:["\u0D89\u0DBB\u0DD2\u0DAF\u0DCF","\u0DC3\u0DB3\u0DD4\u0DAF\u0DCF","\u0D85\u0D9F\u0DC4\u0DBB\u0DD4\u0DC0\u0DCF\u0DAF\u0DCF","\u0DB6\u0DAF\u0DCF\u0DAF\u0DCF","\u0DB6\u0DCA\u200D\u0DBB\u0DC4\u0DC3\u0DCA\u0DB4\u0DAD\u0DD2\u0DB1\u0DCA\u0DAF\u0DCF","\u0DC3\u0DD2\u0D9A\u0DD4\u0DBB\u0DCF\u0DAF\u0DCF","\u0DC3\u0DD9\u0DB1\u0DC3\u0DD4\u0DBB\u0DCF\u0DAF\u0DCF"]},months:{shorthand:["\u0DA2\u0DB1","\u0DB4\u0DD9\u0DB6","\u0DB8\u0DCF\u0DBB\u0DCA","\u0D85\u0DB4\u0DCA\u200D\u0DBB\u0DDA","\u0DB8\u0DD0\u0DBA\u0DD2","\u0DA2\u0DD4\u0DB1\u0DD2","\u0DA2\u0DD6\u0DBD\u0DD2","\u0D85\u0D9C\u0DDD","\u0DC3\u0DD0\u0DB4\u0DCA","\u0D94\u0D9A\u0DCA","\u0DB1\u0DDC\u0DC0\u0DD0","\u0DAF\u0DD9\u0DC3\u0DD0"],longhand:["\u0DA2\u0DB1\u0DC0\u0DCF\u0DBB\u0DD2","\u0DB4\u0DD9\u0DB6\u0DBB\u0DC0\u0DCF\u0DBB\u0DD2","\u0DB8\u0DCF\u0DBB\u0DCA\u0DAD\u0DD4","\u0D85\u0DB4\u0DCA\u200D\u0DBB\u0DDA\u0DBD\u0DCA","\u0DB8\u0DD0\u0DBA\u0DD2","\u0DA2\u0DD4\u0DB1\u0DD2","\u0DA2\u0DD6\u0DBD\u0DD2","\u0D85\u0D9C\u0DDD\u0DC3\u0DCA\u0DAD\u0DD4","\u0DC3\u0DD0\u0DB4\u0DCA\u0DAD\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA","\u0D94\u0D9A\u0DCA\u0DAD\u0DDD\u0DB6\u0DBB\u0DCA","\u0DB1\u0DDC\u0DC0\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA","\u0DAF\u0DD9\u0DC3\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA"]},time_24hr:!0};Lg.l10ns.si=su;var rL=Lg.l10ns;h();var Pg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},lu={weekdays:{shorthand:["Ned","Pon","Ut","Str","\u0160tv","Pia","Sob"],longhand:["Nede\u013Ea","Pondelok","Utorok","Streda","\u0160tvrtok","Piatok","Sobota"]},months:{shorthand:["Jan","Feb","Mar","Apr","M\xE1j","J\xFAn","J\xFAl","Aug","Sep","Okt","Nov","Dec"],longhand:["Janu\xE1r","Febru\xE1r","Marec","Apr\xEDl","M\xE1j","J\xFAn","J\xFAl","August","September","Okt\xF3ber","November","December"]},firstDayOfWeek:1,rangeSeparator:" do ",time_24hr:!0,ordinal:function(){return"."}};Pg.l10ns.sk=lu;var aL=Pg.l10ns;h();var Fg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},cu={weekdays:{shorthand:["Ned","Pon","Tor","Sre","\u010Cet","Pet","Sob"],longhand:["Nedelja","Ponedeljek","Torek","Sreda","\u010Cetrtek","Petek","Sobota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"]},firstDayOfWeek:1,rangeSeparator:" do ",time_24hr:!0,ordinal:function(){return"."}};Fg.l10ns.sl=cu;var sL=Fg.l10ns;h();var Ng=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},uu={weekdays:{shorthand:["Di","H\xEB","Ma","M\xEB","En","Pr","Sh"],longhand:["E Diel","E H\xEBn\xEB","E Mart\xEB","E M\xEBrkur\xEB","E Enjte","E Premte","E Shtun\xEB"]},months:{shorthand:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","N\xEBn","Dhj"],longhand:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","N\xEBntor","Dhjetor"]},firstDayOfWeek:1,rangeSeparator:" deri ",weekAbbreviation:"Java",yearAriaLabel:"Viti",monthAriaLabel:"Muaji",hourAriaLabel:"Ora",minuteAriaLabel:"Minuta",time_24hr:!0};Ng.l10ns.sq=uu;var cL=Ng.l10ns;h();var Og=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},du={weekdays:{shorthand:["Ned","Pon","Uto","Sre","\u010Cet","Pet","Sub"],longhand:["Nedelja","Ponedeljak","Utorak","Sreda","\u010Cetvrtak","Petak","Subota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"]},firstDayOfWeek:1,weekAbbreviation:"Ned.",rangeSeparator:" do ",time_24hr:!0};Og.l10ns.sr=du;var dL=Og.l10ns;h();var Rg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},fu={firstDayOfWeek:1,weekAbbreviation:"v",weekdays:{shorthand:["s\xF6n","m\xE5n","tis","ons","tor","fre","l\xF6r"],longhand:["s\xF6ndag","m\xE5ndag","tisdag","onsdag","torsdag","fredag","l\xF6rdag"]},months:{shorthand:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],longhand:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"]},rangeSeparator:" till ",time_24hr:!0,ordinal:()=>"."};Rg.l10ns.sv=fu;var pL=Rg.l10ns;h();var Hg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},pu={weekdays:{shorthand:["\u0E2D\u0E32","\u0E08","\u0E2D","\u0E1E","\u0E1E\u0E24","\u0E28","\u0E2A"],longhand:["\u0E2D\u0E32\u0E17\u0E34\u0E15\u0E22\u0E4C","\u0E08\u0E31\u0E19\u0E17\u0E23\u0E4C","\u0E2D\u0E31\u0E07\u0E04\u0E32\u0E23","\u0E1E\u0E38\u0E18","\u0E1E\u0E24\u0E2B\u0E31\u0E2A\u0E1A\u0E14\u0E35","\u0E28\u0E38\u0E01\u0E23\u0E4C","\u0E40\u0E2A\u0E32\u0E23\u0E4C"]},months:{shorthand:["\u0E21.\u0E04.","\u0E01.\u0E1E.","\u0E21\u0E35.\u0E04.","\u0E40\u0E21.\u0E22.","\u0E1E.\u0E04.","\u0E21\u0E34.\u0E22.","\u0E01.\u0E04.","\u0E2A.\u0E04.","\u0E01.\u0E22.","\u0E15.\u0E04.","\u0E1E.\u0E22.","\u0E18.\u0E04."],longhand:["\u0E21\u0E01\u0E23\u0E32\u0E04\u0E21","\u0E01\u0E38\u0E21\u0E20\u0E32\u0E1E\u0E31\u0E19\u0E18\u0E4C","\u0E21\u0E35\u0E19\u0E32\u0E04\u0E21","\u0E40\u0E21\u0E29\u0E32\u0E22\u0E19","\u0E1E\u0E24\u0E29\u0E20\u0E32\u0E04\u0E21","\u0E21\u0E34\u0E16\u0E38\u0E19\u0E32\u0E22\u0E19","\u0E01\u0E23\u0E01\u0E0E\u0E32\u0E04\u0E21","\u0E2A\u0E34\u0E07\u0E2B\u0E32\u0E04\u0E21","\u0E01\u0E31\u0E19\u0E22\u0E32\u0E22\u0E19","\u0E15\u0E38\u0E25\u0E32\u0E04\u0E21","\u0E1E\u0E24\u0E28\u0E08\u0E34\u0E01\u0E32\u0E22\u0E19","\u0E18\u0E31\u0E19\u0E27\u0E32\u0E04\u0E21"]},firstDayOfWeek:1,rangeSeparator:" \u0E16\u0E36\u0E07 ",scrollTitle:"\u0E40\u0E25\u0E37\u0E48\u0E2D\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E2B\u0E23\u0E37\u0E2D\u0E25\u0E14",toggleTitle:"\u0E04\u0E25\u0E34\u0E01\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19",time_24hr:!0,ordinal:()=>""};Hg.l10ns.th=pu;var mL=Hg.l10ns;h();var Bg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},hu={weekdays:{shorthand:["Paz","Pzt","Sal","\xC7ar","Per","Cum","Cmt"],longhand:["Pazar","Pazartesi","Sal\u0131","\xC7ar\u015Famba","Per\u015Fembe","Cuma","Cumartesi"]},months:{shorthand:["Oca","\u015Eub","Mar","Nis","May","Haz","Tem","A\u011Fu","Eyl","Eki","Kas","Ara"],longhand:["Ocak","\u015Eubat","Mart","Nisan","May\u0131s","Haziran","Temmuz","A\u011Fustos","Eyl\xFCl","Ekim","Kas\u0131m","Aral\u0131k"]},firstDayOfWeek:1,ordinal:()=>".",rangeSeparator:" - ",weekAbbreviation:"Hf",scrollTitle:"Art\u0131rmak i\xE7in kayd\u0131r\u0131n",toggleTitle:"A\xE7/Kapa",amPM:["\xD6\xD6","\xD6S"],time_24hr:!0};Bg.l10ns.tr=hu;var vL=Bg.l10ns;h();var Kg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},mu={firstDayOfWeek:1,weekdays:{shorthand:["\u041D\u0434","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],longhand:["\u041D\u0435\u0434\u0456\u043B\u044F","\u041F\u043E\u043D\u0435\u0434\u0456\u043B\u043E\u043A","\u0412\u0456\u0432\u0442\u043E\u0440\u043E\u043A","\u0421\u0435\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440","\u041F'\u044F\u0442\u043D\u0438\u0446\u044F","\u0421\u0443\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u0421\u0456\u0447","\u041B\u044E\u0442","\u0411\u0435\u0440","\u041A\u0432\u0456","\u0422\u0440\u0430","\u0427\u0435\u0440","\u041B\u0438\u043F","\u0421\u0435\u0440","\u0412\u0435\u0440","\u0416\u043E\u0432","\u041B\u0438\u0441","\u0413\u0440\u0443"],longhand:["\u0421\u0456\u0447\u0435\u043D\u044C","\u041B\u044E\u0442\u0438\u0439","\u0411\u0435\u0440\u0435\u0437\u0435\u043D\u044C","\u041A\u0432\u0456\u0442\u0435\u043D\u044C","\u0422\u0440\u0430\u0432\u0435\u043D\u044C","\u0427\u0435\u0440\u0432\u0435\u043D\u044C","\u041B\u0438\u043F\u0435\u043D\u044C","\u0421\u0435\u0440\u043F\u0435\u043D\u044C","\u0412\u0435\u0440\u0435\u0441\u0435\u043D\u044C","\u0416\u043E\u0432\u0442\u0435\u043D\u044C","\u041B\u0438\u0441\u0442\u043E\u043F\u0430\u0434","\u0413\u0440\u0443\u0434\u0435\u043D\u044C"]},time_24hr:!0};Kg.l10ns.uk=mu;var bL=Kg.l10ns;h();var $g=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},gu={weekdays:{shorthand:["\u042F\u043A\u0448","\u0414\u0443\u0448","\u0421\u0435\u0448","\u0427\u043E\u0440","\u041F\u0430\u0439","\u0416\u0443\u043C","\u0428\u0430\u043D"],longhand:["\u042F\u043A\u0448\u0430\u043D\u0431\u0430","\u0414\u0443\u0448\u0430\u043D\u0431\u0430","\u0421\u0435\u0448\u0430\u043D\u0431\u0430","\u0427\u043E\u0440\u0448\u0430\u043D\u0431\u0430","\u041F\u0430\u0439\u0448\u0430\u043D\u0431\u0430","\u0416\u0443\u043C\u0430","\u0428\u0430\u043D\u0431\u0430"]},months:{shorthand:["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"],longhand:["\u042F\u043D\u0432\u0430\u0440","\u0424\u0435\u0432\u0440\u0430\u043B","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440","\u041E\u043A\u0442\u044F\u0431\u0440","\u041D\u043E\u044F\u0431\u0440","\u0414\u0435\u043A\u0430\u0431\u0440"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u04B2\u0430\u0444\u0442\u0430",scrollTitle:"\u041A\u0430\u0442\u0442\u0430\u043B\u0430\u0448\u0442\u0438\u0440\u0438\u0448 \u0443\u0447\u0443\u043D \u0430\u0439\u043B\u0430\u043D\u0442\u0438\u0440\u0438\u043D\u0433",toggleTitle:"\u040E\u0442\u0438\u0448 \u0443\u0447\u0443\u043D \u0431\u043E\u0441\u0438\u043D\u0433",amPM:["AM","PM"],yearAriaLabel:"\u0419\u0438\u043B",time_24hr:!0};$g.l10ns.uz=gu;var EL=$g.l10ns;h();var Ug=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},vu={weekdays:{shorthand:["Ya","Du","Se","Cho","Pa","Ju","Sha"],longhand:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"]},months:{shorthand:["Yan","Fev","Mar","Apr","May","Iyun","Iyul","Avg","Sen","Okt","Noy","Dek"],longhand:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"Hafta",scrollTitle:"Kattalashtirish uchun aylantiring",toggleTitle:"O\u2018tish uchun bosing",amPM:["AM","PM"],yearAriaLabel:"Yil",time_24hr:!0};Ug.l10ns.uz_latn=vu;var kL=Ug.l10ns;h();var Wg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},yu={weekdays:{shorthand:["CN","T2","T3","T4","T5","T6","T7"],longhand:["Ch\u1EE7 nh\u1EADt","Th\u1EE9 hai","Th\u1EE9 ba","Th\u1EE9 t\u01B0","Th\u1EE9 n\u0103m","Th\u1EE9 s\xE1u","Th\u1EE9 b\u1EA3y"]},months:{shorthand:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],longhand:["Th\xE1ng m\u1ED9t","Th\xE1ng hai","Th\xE1ng ba","Th\xE1ng t\u01B0","Th\xE1ng n\u0103m","Th\xE1ng s\xE1u","Th\xE1ng b\u1EA3y","Th\xE1ng t\xE1m","Th\xE1ng ch\xEDn","Th\xE1ng m\u01B0\u1EDDi","Th\xE1ng m\u01B0\u1EDDi m\u1ED9t","Th\xE1ng m\u01B0\u1EDDi hai"]},firstDayOfWeek:1,rangeSeparator:" \u0111\u1EBFn "};Wg.l10ns.vn=yu;var _L=Wg.l10ns;h();var Vg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},bu={weekdays:{shorthand:["\u5468\u65E5","\u5468\u4E00","\u5468\u4E8C","\u5468\u4E09","\u5468\u56DB","\u5468\u4E94","\u5468\u516D"],longhand:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"]},months:{shorthand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],longhand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"]},rangeSeparator:" \u81F3 ",weekAbbreviation:"\u5468",scrollTitle:"\u6EDA\u52A8\u5207\u6362",toggleTitle:"\u70B9\u51FB\u5207\u6362 12/24 \u5C0F\u65F6\u65F6\u5236"};Vg.l10ns.zh=bu;var TL=Vg.l10ns;h();var zg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},wu={weekdays:{shorthand:["\u9031\u65E5","\u9031\u4E00","\u9031\u4E8C","\u9031\u4E09","\u9031\u56DB","\u9031\u4E94","\u9031\u516D"],longhand:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"]},months:{shorthand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],longhand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"]},rangeSeparator:" \u81F3 ",weekAbbreviation:"\u9031",scrollTitle:"\u6EFE\u52D5\u5207\u63DB",toggleTitle:"\u9EDE\u64CA\u5207\u63DB 12/24 \u5C0F\u6642\u6642\u5236"};zg.l10ns.zh_tw=wu;var ML=zg.l10ns;var G0={ar:hc,at:mc,az:gc,be:vc,bg:yc,bn:bc,bs:wc,ca:jo,ckb:xc,cat:jo,cs:kc,cy:Sc,da:_c,de:Cc,default:{...Br},en:Br,eo:Tc,es:Dc,et:Mc,fa:Ic,fi:Ac,fo:Lc,fr:Pc,gr:Fc,he:Nc,hi:Oc,hr:Rc,hu:Hc,hy:Bc,id:Kc,is:$c,it:Uc,ja:Wc,ka:Vc,ko:jc,km:zc,kz:qc,lt:Yc,lv:Jc,mk:Gc,mn:Qc,ms:xg,my:Xc,nl:Zc,nn:eu,no:tu,pa:nu,pl:ru,pt:iu,ro:au,ru:ou,si:su,sk:lu,sl:cu,sq:uu,sr:du,sv:fu,th:pu,tr:hu,uk:mu,vn:yu,zh:bu,zh_tw:wu,uz:gu,uz_latn:vu},et=G0;var qg={ar:et.ar,cs:et.cs,da:et.da,de:et.de,en:et.en,"en-gb":et.en,es:et.es,fr:et.fr,hi:et.hi,id:et.id,it:et.it,ja:et.ja,ko:et.ko,nl:et.nl,nn:et.no,pl:et.pl,pt:et.pt,"pt-br":et.pt,ro:et.ro,ru:et.ru,tr:et.tr,"zh-cn":et.zh,"zh-tw":et.zh_tw},Q0=qg[jg.moment.locale()];function Yo(e){let t=e==null?void 0:e.getSetting("date-picker-week-start"),r=Q0||qg.en;return t?{...r,firstDayOfWeek:t}:r}h();h();var Jo=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],yr={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:typeof window=="object"&&window.navigator.userAgent.indexOf("MSIE")===-1,ariaDateFormat:"F j, Y",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:e=>typeof console!="undefined"&&console.warn(e),getWeek:e=>{let t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);let r=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-r.getTime())/864e5-3+(r.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1,win:window};h();var Ht=(e,t=2)=>`000${e}`.slice(t*-1),tn=e=>e===!0?1:0;function Eu(e,t,r){let n;return function(){let i=arguments;r.clearTimeout(n),n=r.setTimeout(()=>e.apply(this,i),t)}}var Go=e=>Array.isArray(e)?e:[e];h();h();var xu=()=>{},xa=(e,t,r)=>r.months[t?"shorthand":"longhand"][e],Yg={D:xu,F:function(e,t,r){e.setMonth(r.months.longhand.indexOf(t))},G:(e,t)=>{e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},H:(e,t)=>{e.setHours(parseFloat(t))},J:(e,t)=>{e.setDate(parseFloat(t))},K:(e,t,r)=>{e.setHours(e.getHours()%12+12*tn(new RegExp(r.amPM[1],"i").test(t)))},M:function(e,t,r){e.setMonth(r.months.shorthand.indexOf(t))},S:(e,t)=>{e.setSeconds(parseFloat(t))},U:(e,t)=>new Date(parseFloat(t)*1e3),W:function(e,t,r){let n=parseInt(t),i=new Date(e.getFullYear(),0,2+(n-1)*7,0,0,0,0);return i.setDate(i.getDate()-i.getDay()+r.firstDayOfWeek),i},Y:(e,t)=>{e.setFullYear(parseFloat(t))},Z:(e,t)=>new Date(t),d:(e,t)=>{e.setDate(parseFloat(t))},h:(e,t)=>{e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},i:(e,t)=>{e.setMinutes(parseFloat(t))},j:(e,t)=>{e.setDate(parseFloat(t))},l:xu,m:(e,t)=>{e.setMonth(parseFloat(t)-1)},n:(e,t)=>{e.setMonth(parseFloat(t)-1)},s:(e,t)=>{e.setSeconds(parseFloat(t))},u:(e,t)=>new Date(parseFloat(t)),w:xu,y:(e,t)=>{e.setFullYear(2e3+parseFloat(t))}},Jn={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},ki={Z:e=>e.toISOString(),D:function(e,t,r){return t.weekdays.shorthand[ki.w(e,t,r)]},F:function(e,t,r){return xa(ki.n(e,t,r)-1,!1,t)},G:function(e,t,r){return Ht(ki.h(e,t,r))},H:e=>Ht(e.getHours()),J:function(e,t){return t.ordinal!==void 0?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:(e,t)=>t.amPM[tn(e.getHours()>11)],M:function(e,t){return xa(e.getMonth(),!0,t)},S:e=>Ht(e.getSeconds()),U:e=>e.getTime()/1e3,W:function(e,t,r){return r.getWeek(e)},Y:e=>Ht(e.getFullYear(),4),d:e=>Ht(e.getDate()),h:e=>e.getHours()%12?e.getHours()%12:12,i:e=>Ht(e.getMinutes()),j:e=>e.getDate(),l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:e=>Ht(e.getMonth()+1),n:e=>e.getMonth()+1,s:e=>e.getSeconds(),u:e=>e.getTime(),w:e=>e.getDay(),y:e=>String(e.getFullYear()).substring(2)};var ku=({config:e=yr,l10n:t=Br,isMobile:r=!1})=>(n,i,a)=>{let o=a||t;return e.formatDate!==void 0&&!r?e.formatDate(n,i,o):i.split("").map((s,u,l)=>ki[s]&&l[u-1]!=="\\"?ki[s](n,o,e):s!=="\\"?s:"").join("")},Qo=({config:e=yr,l10n:t=Br})=>(r,n,i,a)=>{if(r!==0&&!r)return;let o=a||t,s,u=r;if(r.getDate)s=new Date(r.getTime());else if(typeof r!="string"&&r.toFixed!==void 0)s=new Date(r);else if(typeof r=="string"){let l=n||(e||yr).dateFormat,c=String(r).trim();if(c==="today")s=new Date,i=!0;else if(e&&e.parseDate)s=e.parseDate(r,l);else if(/Z$/.test(c)||/GMT$/.test(c))s=new Date(r);else{let d,f=[];for(let p=0,m=0,y="";ps=p(s,m,o)||s),s=d?s:void 0}}if(!(s.getDate&&!isNaN(s.getTime()))){e.errorHandler(new Error(`Invalid date provided: ${u}`));return}return i===!0&&s.setHours(0,0,0,0),s};function nn(e,t,r=!0){return r!==!1?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()}var Jg=(e,t,r)=>e>Math.min(t,r)&&ee*3600+t*60+r,Gg=e=>{let t=Math.floor(e/3600),r=(e-t*3600)/60;return[t,r,e-t*3600-r*60]},Qg={DAY:864e5};function Zo(e){let t=e.defaultHour,r=e.defaultMinute,n=e.defaultSeconds;if(e.minDate!==void 0){let i=e.minDate.getHours(),a=e.minDate.getMinutes(),o=e.minDate.getSeconds();t=0?new Date:new Date(n.config.minDate.getTime()),Q=Zo(n.config);K.setHours(Q.hours,Q.minutes,Q.seconds,K.getMilliseconds()),n.selectedDates=[K],n.latestSelectedDateObj=K}_!==void 0&&_.type!=="blur"&&Xa(_);let M=n._input.value;f(),xn(),n._input.value!==M&&n._debouncedChange()}function c(_,M){return _%12+12*tn(M===n.l10n.amPM[1])}function d(_){switch(_%24){case 0:case 12:return 12;default:return _%12}}function f(){if(n.hourElement===void 0||n.minuteElement===void 0)return;let _=(parseInt(n.hourElement.value.slice(-2),10)||0)%24,M=(parseInt(n.minuteElement.value,10)||0)%60,K=n.secondElement!==void 0?(parseInt(n.secondElement.value,10)||0)%60:0;n.amPM!==void 0&&(_=c(_,n.amPM.textContent));let Q=n.config.minTime!==void 0||n.config.minDate&&n.minDateHasTime&&n.latestSelectedDateObj&&nn(n.latestSelectedDateObj,n.config.minDate,!0)===0,se=n.config.maxTime!==void 0||n.config.maxDate&&n.maxDateHasTime&&n.latestSelectedDateObj&&nn(n.latestSelectedDateObj,n.config.maxDate,!0)===0;if(n.config.maxTime!==void 0&&n.config.minTime!==void 0&&n.config.minTime>n.config.maxTime){let ie=Xo(n.config.minTime.getHours(),n.config.minTime.getMinutes(),n.config.minTime.getSeconds()),me=Xo(n.config.maxTime.getHours(),n.config.maxTime.getMinutes(),n.config.maxTime.getSeconds()),ue=Xo(_,M,K);if(ue>me&&ue=12)]),n.secondElement!==void 0&&(n.secondElement.value=Ht(K)))}function y(_){let M=rn(_),K=parseInt(M.value)+(_.delta||0);(K/1e3>1||_.key==="Enter"&&!/[^\d]/.test(K.toString()))&&te(K)}function b(_,M,K,Q){if(Array.isArray(M))return M.forEach(se=>b(_,se,K,Q));if(Array.isArray(_))return _.forEach(se=>b(se,M,K,Q));_.addEventListener(M,K,Q),n._handlers.push({remove:()=>_.removeEventListener(M,K,Q)})}function x(){We("onChange")}function D(){if(n.config.wrap&&["open","close","toggle","clear"].forEach(M=>{Array.prototype.forEach.call(n.element.querySelectorAll(`[data-${M}]`),K=>b(K,"click",n[M]))}),n.isMobile){qe();return}let _=Eu(Nt,50,r);if(n._debouncedChange=Eu(x,X0,r),n.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&b(n.daysContainer,"mouseover",M=>{n.config.mode==="range"&&vt(rn(M))}),b(n._input,"keydown",ut),n.calendarContainer!==void 0&&b(n.calendarContainer,"keydown",ut),!n.config.inline&&!n.config.static&&b(r,"resize",_),r.ontouchstart!==void 0?b(r.document,"touchstart",q):b(r.document,"mousedown",q),b(r.document,"focus",q,{capture:!0}),n.config.clickOpens===!0&&(b(n._input,"focus",n.open),b(n._input,"click",n.open)),n.daysContainer!==void 0&&(b(n.monthNav,"click",yl),b(n.monthNav,["keyup","increment"],y),b(n.daysContainer,"click",Ot)),n.timeContainer!==void 0&&n.minuteElement!==void 0&&n.hourElement!==void 0){let M=K=>rn(K).select();b(n.timeContainer,["increment"],l),b(n.timeContainer,"blur",l,{capture:!0}),b(n.timeContainer,"click",A),b([n.hourElement,n.minuteElement],["focus","click"],M),n.secondElement!==void 0&&b(n.secondElement,"focus",()=>n.secondElement&&n.secondElement.select()),n.amPM!==void 0&&b(n.amPM,"click",K=>{l(K)})}n.config.allowInput&&b(n._input,"blur",Ue)}function C(_,M){let K=_!==void 0?n.parseDate(_):n.latestSelectedDateObj||(n.config.minDate&&n.config.minDate>n.now?n.config.minDate:n.config.maxDate&&n.config.maxDate1),n.calendarContainer.appendChild(_);let M=n.config.appendTo!==void 0&&n.config.appendTo.nodeType!==void 0;if((n.config.inline||n.config.static)&&(n.calendarContainer.classList.add(n.config.inline?"inline":"static"),n.config.inline&&(!M&&n.element.parentNode?n.element.parentNode.insertBefore(n.calendarContainer,n._input.nextSibling):n.config.appendTo!==void 0&&n.config.appendTo.appendChild(n.calendarContainer)),n.config.static)){let K=je(r.document,"div","flatpickr-wrapper");n.element.parentNode&&n.element.parentNode.insertBefore(K,n.element),K.appendChild(n.element),n.altInput&&K.appendChild(n.altInput),K.appendChild(n.calendarContainer)}!n.config.static&&!n.config.inline&&(n.config.appendTo!==void 0?n.config.appendTo:r.document.body).appendChild(n.calendarContainer)}function O(_,M,K,Q){let se=we(M,!0),ie=je(r.document,"span",_,M.getDate().toString());return ie.dateObj=M,ie.$i=Q,ie.setAttribute("aria-label",n.formatDate(M,n.config.ariaDateFormat)),_.indexOf("hidden")===-1&&nn(M,n.now)===0&&(n.todayDateElem=ie,ie.classList.add("today"),ie.setAttribute("aria-current","date")),se?(ie.tabIndex=-1,Ye(M)&&(ie.classList.add("selected"),n.selectedDateElem=ie,n.config.mode==="range"&&(Bt(ie,"startRange",n.selectedDates[0]&&nn(M,n.selectedDates[0],!0)===0),Bt(ie,"endRange",n.selectedDates[1]&&nn(M,n.selectedDates[1],!0)===0),_==="nextMonthDay"&&ie.classList.add("inRange")))):ie.classList.add("flatpickr-disabled"),n.config.mode==="range"&&ir(M)&&!Ye(M)&&ie.classList.add("inRange"),n.weekNumbers&&n.config.showMonths===1&&_!=="prevMonthDay"&&Q%7==6&&n.weekNumbers.insertAdjacentHTML("beforeend",""+n.config.getWeek(M)+""),We("onDayCreate",ie),ie}function W(_){_.focus(),n.config.mode==="range"&&vt(_)}function z(_){let M=_>0?0:n.config.showMonths-1,K=_>0?n.config.showMonths:-1;for(let Q=M;Q!=K;Q+=_){let se=n.daysContainer.children[Q],ie=_>0?0:se.children.length-1,me=_>0?se.children.length:-1;for(let ue=ie;ue!=me;ue+=_){let Pe=se.children[ue];if(Pe.className.indexOf("hidden")===-1&&we(Pe.dateObj))return Pe}}}function ee(_,M){let K=_.className.indexOf("Month")===-1?_.dateObj.getMonth():n.currentMonth,Q=M>0?n.config.showMonths:-1,se=M>0?1:-1;for(let ie=K-n.currentMonth;ie!=Q;ie+=se){let me=n.daysContainer.children[ie],ue=K-n.currentMonth===ie?_.$i+M:M<0?me.children.length-1:0,Pe=me.children.length;for(let Fe=ue;Fe>=0&&Fe0?Pe:-1);Fe+=se){let Me=me.children[Fe];if(Me.className.indexOf("hidden")===-1&&we(Me.dateObj)&&Math.abs(_.$i-Fe)>=Math.abs(M))return W(Me)}}n.changeMonth(se),Z(z(se),0)}function Z(_,M){let K=o(),Q=ke(K||n.element.doc.body),se=_!==void 0?_:Q?K:n.selectedDateElem!==void 0&&ke(n.selectedDateElem)?n.selectedDateElem:n.todayDateElem!==void 0&&ke(n.todayDateElem)?n.todayDateElem:z(M>0?1:-1);se===void 0?n._input.focus():Q?ee(se,M):W(se)}function le(_,M){let K=(new Date(_,M,1).getDay()-n.l10n.firstDayOfWeek+7)%7,Q=n.utils.getDaysInMonth((M-1+12)%12,_),se=n.utils.getDaysInMonth(M,_),ie=r.document.createDocumentFragment(),me=n.config.showMonths>1,ue=me?"prevMonthDay hidden":"prevMonthDay",Pe=me?"nextMonthDay hidden":"nextMonthDay",Fe=Q+1-K,Me=0;for(;Fe<=Q;Fe++,Me++)ie.appendChild(O(`flatpickr-day ${ue}`,new Date(_,M-1,Fe),Fe,Me));for(Fe=1;Fe<=se;Fe++,Me++)ie.appendChild(O("flatpickr-day",new Date(_,M,Fe),Fe,Me));for(let bt=se+1;bt<=42-K&&(n.config.showMonths===1||Me%7!=0);bt++,Me++)ie.appendChild(O(`flatpickr-day ${Pe}`,new Date(_,M+1,bt%se),bt,Me));let Qt=je(r.document,"div","dayContainer");return Qt.appendChild(ie),Qt}function X(){if(n.daysContainer===void 0)return;ka(n.daysContainer),n.weekNumbers&&ka(n.weekNumbers);let _=n.element.doc.createDocumentFragment();for(let M=0;M1||n.config.monthSelectorType!=="dropdown")return;let _=function(M){return n.config.minDate!==void 0&&n.currentYear===n.config.minDate.getFullYear()&&Mn.config.maxDate.getMonth())};n.monthsDropdownContainer.tabIndex=-1,n.monthsDropdownContainer.innerHTML="";for(let M=0;M<12;M++){if(!_(M))continue;let K=je(r.document,"option","flatpickr-monthDropdown-month");K.value=new Date(n.currentYear,M).getMonth().toString(),K.textContent=xa(M,n.config.shorthandCurrentMonth,n.l10n),K.tabIndex=-1,n.currentMonth===M&&(K.selected=!0),n.monthsDropdownContainer.appendChild(K)}}function re(){let _=je(r.document,"div","flatpickr-month"),M=r.document.createDocumentFragment(),K;n.config.showMonths>1||n.config.monthSelectorType==="static"?K=je(r.document,"span","cur-month"):(n.monthsDropdownContainer=je(r.document,"select","flatpickr-monthDropdown-months"),n.monthsDropdownContainer.setAttribute("aria-label",n.l10n.monthAriaLabel),b(n.monthsDropdownContainer,"change",me=>{let ue=rn(me),Pe=parseInt(ue.value,10);n.changeMonth(Pe-n.currentMonth),We("onMonthChange")}),G(),K=n.monthsDropdownContainer);let Q=Sa(r.document,"cur-year",{tabindex:"-1"}),se=Q.getElementsByTagName("input")[0];se.setAttribute("aria-label",n.l10n.yearAriaLabel),n.config.minDate&&se.setAttribute("min",n.config.minDate.getFullYear().toString()),n.config.maxDate&&(se.setAttribute("max",n.config.maxDate.getFullYear().toString()),se.disabled=!!n.config.minDate&&n.config.minDate.getFullYear()===n.config.maxDate.getFullYear());let ie=je(r.document,"div","flatpickr-current-month");return ie.appendChild(K),ie.appendChild(Q),M.appendChild(ie),_.appendChild(M),{container:_,yearElement:se,monthElement:K}}function pe(){ka(n.monthNav),n.monthNav.appendChild(n.prevMonthNav),n.config.showMonths&&(n.yearElements=[],n.monthElements=[]);for(let _=n.config.showMonths;_--;){let M=re();n.yearElements.push(M.yearElement),n.monthElements.push(M.monthElement),n.monthNav.appendChild(M.container)}n.monthNav.appendChild(n.nextMonthNav)}function he(){return n.monthNav=je(r.document,"div","flatpickr-months"),n.yearElements=[],n.monthElements=[],n.prevMonthNav=je(r.document,"span","flatpickr-prev-month"),n.prevMonthNav.innerHTML=n.config.prevArrow,n.nextMonthNav=je(r.document,"span","flatpickr-next-month"),n.nextMonthNav.innerHTML=n.config.nextArrow,pe(),Object.defineProperty(n,"_hidePrevMonthArrow",{get:()=>n.__hidePrevMonthArrow,set(_){n.__hidePrevMonthArrow!==_&&(Bt(n.prevMonthNav,"flatpickr-disabled",_),n.__hidePrevMonthArrow=_)}}),Object.defineProperty(n,"_hideNextMonthArrow",{get:()=>n.__hideNextMonthArrow,set(_){n.__hideNextMonthArrow!==_&&(Bt(n.nextMonthNav,"flatpickr-disabled",_),n.__hideNextMonthArrow=_)}}),n.currentYearElement=n.yearElements[0],Dt(),n.monthNav}function ve(){n.calendarContainer.classList.add("hasTime"),n.config.noCalendar&&n.calendarContainer.classList.add("noCalendar");let _=Zo(n.config);n.timeContainer=je(r.document,"div","flatpickr-time"),n.timeContainer.tabIndex=-1;let M=je(r.document,"span","flatpickr-time-separator",":"),K=Sa(r.document,"flatpickr-hour",{"aria-label":n.l10n.hourAriaLabel});n.hourElement=K.getElementsByTagName("input")[0];let Q=Sa(r.document,"flatpickr-minute",{"aria-label":n.l10n.minuteAriaLabel});if(n.minuteElement=Q.getElementsByTagName("input")[0],n.hourElement.tabIndex=n.minuteElement.tabIndex=-1,n.hourElement.value=Ht(n.latestSelectedDateObj?n.latestSelectedDateObj.getHours():n.config.time_24hr?_.hours:d(_.hours)),n.minuteElement.value=Ht(n.latestSelectedDateObj?n.latestSelectedDateObj.getMinutes():_.minutes),n.hourElement.setAttribute("step",n.config.hourIncrement.toString()),n.minuteElement.setAttribute("step",n.config.minuteIncrement.toString()),n.hourElement.setAttribute("min",n.config.time_24hr?"0":"1"),n.hourElement.setAttribute("max",n.config.time_24hr?"23":"12"),n.hourElement.setAttribute("maxlength","2"),n.minuteElement.setAttribute("min","0"),n.minuteElement.setAttribute("max","59"),n.minuteElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(K),n.timeContainer.appendChild(M),n.timeContainer.appendChild(Q),n.config.time_24hr&&n.timeContainer.classList.add("time24hr"),n.config.enableSeconds){n.timeContainer.classList.add("hasSeconds");let se=Sa(r.document,"flatpickr-second");n.secondElement=se.getElementsByTagName("input")[0],n.secondElement.value=Ht(n.latestSelectedDateObj?n.latestSelectedDateObj.getSeconds():_.seconds),n.secondElement.setAttribute("step",n.minuteElement.getAttribute("step")),n.secondElement.setAttribute("min","0"),n.secondElement.setAttribute("max","59"),n.secondElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(je(r.document,"span","flatpickr-time-separator",":")),n.timeContainer.appendChild(se)}return n.config.time_24hr||(n.amPM=je(r.document,"span","flatpickr-am-pm",n.l10n.amPM[tn((n.latestSelectedDateObj?n.hourElement.value:n.config.defaultHour)>11)]),n.amPM.title=n.l10n.toggleTitle,n.amPM.tabIndex=-1,n.timeContainer.appendChild(n.amPM)),n.timeContainer}function be(){n.weekdayContainer?ka(n.weekdayContainer):n.weekdayContainer=je(r.document,"div","flatpickr-weekdays");for(let _=n.config.showMonths;_--;){let M=je(r.document,"div","flatpickr-weekdaycontainer");n.weekdayContainer.appendChild(M)}return De(),n.weekdayContainer}function De(){if(!n.weekdayContainer)return;let _=n.l10n.firstDayOfWeek,M=[...n.l10n.weekdays.shorthand];_>0&&_-1&&(he.arrayIndex=ie.arrayIndex),J.matches.push(he)}}}),this.options.includeScore&&C.push(function(Z,J){J.score=Z.score});for(var A=0,H=b.length;Ak)return s(y,this.pattern,T);var C=this.options,A=C.location,H=C.distance,D=C.threshold,K=C.findAllMatches,z=C.minMatchCharLength;return u(y,this.pattern,this.patternAlphabet,{location:A,distance:H,threshold:D,findAllMatches:K,minMatchCharLength:z})}}])&&o(f.prototype,p),g&&o(f,g),d}();n.exports=c},function(n,i){var a=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;n.exports=function(o,s){var u=arguments.length>2&&arguments[2]!==void 0?arguments[2]:/ +/g,l=new RegExp(s.replace(a,"\\$&").replace(u,"|")),c=o.match(l),d=!!c,f=[];if(d)for(var p=0,g=c.length;p=N;W-=1){var j=W-1,q=c[u.charAt(j)];if(q&&(J[j]=1),Ge[W]=(Ge[W+1]<<1|1)&q,be!==0&&(Ge[W]|=(ie[W+1]|ie[W])<<1|1|ie[W+1]),Ge[W]&ge&&(he=o(l,{errors:be,currentLocation:j,expectedLocation:D,distance:y}))<=z){if(z=he,(U=j)<=D)break;N=Math.max(1,2*D-U)}}if(o(l,{errors:be+1,currentLocation:D,expectedLocation:D,distance:y})>z)break;ie=Ge}return{isMatch:U>=0,score:he===0?.001:he,matchedIndices:s(J,H)}}},function(n,i){n.exports=function(a,o){var s=o.errors,u=s===void 0?0:s,l=o.currentLocation,c=l===void 0?0:l,d=o.expectedLocation,f=d===void 0?0:d,p=o.distance,g=p===void 0?100:p,y=u/a.length,b=Math.abs(f-c);return g?y+b/g:b?1:y}},function(n,i){n.exports=function(){for(var a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],o=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,s=[],u=-1,l=-1,c=0,d=a.length;c=o&&s.push([u,l]),u=-1)}return a[c-1]&&c-u>=o&&s.push([u,c-1]),s}},function(n,i){n.exports=function(a){for(var o={},s=a.length,u=0;u0)return"Unexpected "+(R.length>1?"keys":"key")+" "+('"'+R.join('", "')+'" found in '+I+". ")+"Expected to find one of the known reducer keys instead: "+('"'+x.join('", "')+'". Unexpected keys will be ignored.')}function y(O){Object.keys(O).forEach(function(w){var E=O[w],v=E(void 0,{type:l.INIT});if(typeof v=="undefined")throw new Error('Reducer "'+w+`" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.`);if(typeof E(void 0,{type:l.PROBE_UNKNOWN_ACTION()})=="undefined")throw new Error('Reducer "'+w+'" returned undefined when probed with a random type. '+("Don't try to handle "+l.INIT+' or other actions in "redux/*" ')+"namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.")})}function b(O){for(var w=Object.keys(O),E={},v=0;v-1?O.map(function(E){var v=E;return v.id===parseInt(w.choiceId,10)&&(v.selected=!0),v}):O;case"REMOVE_ITEM":return w.choiceId>-1?O.map(function(E){var v=E;return v.id===parseInt(w.choiceId,10)&&(v.selected=!1),v}):O;case"FILTER_CHOICES":return O.map(function(E){var v=E;return v.active=w.results.some(function(x){var I=x.item,R=x.score;return I.id===v.id?(v.score=R,!0):!1}),v});case"ACTIVATE_CHOICES":return O.map(function(E){var v=E;return v.active=w.active,v});case"CLEAR_CHOICES":return G;default:return O}}var ie={loading:!1},he=function(w,E){switch(w===void 0&&(w=ie),E.type){case"SET_IS_LOADING":return{loading:E.isLoading};default:return w}},pe=he,ge=function(w,E){return Math.floor(Math.random()*(E-w)+w)},be=function(w){return Array.from({length:w},function(){return ge(0,36).toString(36)}).join("")},Te=function(w,E){var v=w.id||w.name&&w.name+"-"+be(2)||be(4);return v=v.replace(/(:|\.|\[|\]|,)/g,""),v=E+"-"+v,v},F=function(w){return Object.prototype.toString.call(w).slice(8,-1)},N=function(w,E){return E!=null&&F(E)===w},ut=function(w,E){return E===void 0&&(E=document.createElement("div")),w.nextSibling?w.parentNode.insertBefore(E,w.nextSibling):w.parentNode.appendChild(E),E.appendChild(w)},Ge=function(w,E,v){if(v===void 0&&(v=1),!(!(w instanceof Element)||typeof E!="string")){for(var x=(v>0?"next":"previous")+"ElementSibling",I=w[x];I;){if(I.matches(E))return I;I=I[x]}return I}},W=function(w,E,v){if(v===void 0&&(v=1),!w)return!1;var x;return v>0?x=E.scrollTop+E.offsetHeight>=w.offsetTop+w.offsetHeight:x=w.offsetTop>=E.scrollTop,x},j=function(w){return typeof w!="string"?w:w.replace(/&/g,"&").replace(/>/g,"&rt;").replace(/"'+j(w)+'"'},maxItemText:function(w){return"Only "+w+" values can be added"},valueComparer:function(w,E){return w===E},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:ti},Rt={showDropdown:"showDropdown",hideDropdown:"hideDropdown",change:"change",choice:"choice",search:"search",addItem:"addItem",removeItem:"removeItem",highlightItem:"highlightItem",highlightChoice:"highlightChoice"},Wt={ADD_CHOICE:"ADD_CHOICE",FILTER_CHOICES:"FILTER_CHOICES",ACTIVATE_CHOICES:"ACTIVATE_CHOICES",CLEAR_CHOICES:"CLEAR_CHOICES",ADD_GROUP:"ADD_GROUP",ADD_ITEM:"ADD_ITEM",REMOVE_ITEM:"REMOVE_ITEM",HIGHLIGHT_ITEM:"HIGHLIGHT_ITEM",CLEAR_ALL:"CLEAR_ALL"},yt={BACK_KEY:46,DELETE_KEY:8,ENTER_KEY:13,A_KEY:65,ESC_KEY:27,UP_KEY:38,DOWN_KEY:40,PAGE_UP_KEY:33,PAGE_DOWN_KEY:34},Y="text",oe="select-one",Ee="select-multiple",ze=4,Tt=function(){function O(E){var v=E.element,x=E.type,I=E.classNames,R=E.position;this.element=v,this.classNames=I,this.type=x,this.position=R,this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var w=O.prototype;return w.addEventListeners=function(){this.element.addEventListener("focus",this._onFocus),this.element.addEventListener("blur",this._onBlur)},w.removeEventListeners=function(){this.element.removeEventListener("focus",this._onFocus),this.element.removeEventListener("blur",this._onBlur)},w.shouldFlip=function(v){if(typeof v!="number")return!1;var x=!1;return this.position==="auto"?x=!window.matchMedia("(min-height: "+(v+1)+"px)").matches:this.position==="top"&&(x=!0),x},w.setActiveDescendant=function(v){this.element.setAttribute("aria-activedescendant",v)},w.removeActiveDescendant=function(){this.element.removeAttribute("aria-activedescendant")},w.open=function(v){this.element.classList.add(this.classNames.openState),this.element.setAttribute("aria-expanded","true"),this.isOpen=!0,this.shouldFlip(v)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)},w.close=function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute("aria-expanded","false"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)},w.focus=function(){this.isFocussed||this.element.focus()},w.addFocusState=function(){this.element.classList.add(this.classNames.focusState)},w.removeFocusState=function(){this.element.classList.remove(this.classNames.focusState)},w.enable=function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute("aria-disabled"),this.type===oe&&this.element.setAttribute("tabindex","0"),this.isDisabled=!1},w.disable=function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute("aria-disabled","true"),this.type===oe&&this.element.setAttribute("tabindex","-1"),this.isDisabled=!0},w.wrap=function(v){ut(v,this.element)},w.unwrap=function(v){this.element.parentNode.insertBefore(v,this.element),this.element.parentNode.removeChild(this.element)},w.addLoadingState=function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute("aria-busy","true"),this.isLoading=!0},w.removeLoadingState=function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute("aria-busy"),this.isLoading=!1},w._onFocus=function(){this.isFocussed=!0},w._onBlur=function(){this.isFocussed=!1},O}();function En(O,w){for(var E=0;E0?this.element.scrollTop+ae-V:v.offsetTop;requestAnimationFrame(function(){I._animateScroll(de,x)})}},w._scrollDown=function(v,x,I){var R=(I-v)/x,V=R>1?R:1;this.element.scrollTop=v+V},w._scrollUp=function(v,x,I){var R=(v-I)/x,V=R>1?R:1;this.element.scrollTop=v-V},w._animateScroll=function(v,x){var I=this,R=ze,V=this.element.scrollTop,X=!1;x>0?(this._scrollDown(V,R,v),Vv&&(X=!0)),X&&requestAnimationFrame(function(){I._animateScroll(v,x)})},O}();function fn(O,w){for(var E=0;E0?"treeitem":"option"),Object.assign(Re.dataset,{choice:"",id:de,value:xe,selectText:v}),Ce?(Re.classList.add(X),Re.dataset.choiceDisabled="",Re.setAttribute("aria-disabled","true")):(Re.classList.add(R),Re.dataset.choiceSelectable=""),Re},input:function(w,E){var v=w.input,x=w.inputCloned,I=Object.assign(document.createElement("input"),{type:"text",className:v+" "+x,autocomplete:"off",autocapitalize:"off",spellcheck:!1});return I.setAttribute("role","textbox"),I.setAttribute("aria-autocomplete","list"),I.setAttribute("aria-label",E),I},dropdown:function(w){var E=w.list,v=w.listDropdown,x=document.createElement("div");return x.classList.add(E,v),x.setAttribute("aria-expanded","false"),x},notice:function(w,E,v){var x=w.item,I=w.itemChoice,R=w.noResults,V=w.noChoices;v===void 0&&(v="");var X=[x,I];return v==="no-choices"?X.push(V):v==="no-results"&&X.push(R),Object.assign(document.createElement("div"),{innerHTML:E,className:X.join(" ")})},option:function(w){var E=w.label,v=w.value,x=w.customProperties,I=w.active,R=w.disabled,V=new Option(E,v,!1,I);return x&&(V.dataset.customProperties=x),V.disabled=R,V}},le=ee,re=function(w){var E=w.value,v=w.label,x=w.id,I=w.groupId,R=w.disabled,V=w.elementId,X=w.customProperties,ae=w.placeholder,de=w.keyCode;return{type:Wt.ADD_CHOICE,value:E,label:v,id:x,groupId:I,disabled:R,elementId:V,customProperties:X,placeholder:ae,keyCode:de}},ve=function(w){return{type:Wt.FILTER_CHOICES,results:w}},ue=function(w){return w===void 0&&(w=!0),{type:Wt.ACTIVATE_CHOICES,active:w}},Fe=function(){return{type:Wt.CLEAR_CHOICES}},Ne=function(w){var E=w.value,v=w.label,x=w.id,I=w.choiceId,R=w.groupId,V=w.customProperties,X=w.placeholder,ae=w.keyCode;return{type:Wt.ADD_ITEM,value:E,label:v,id:x,choiceId:I,groupId:R,customProperties:V,placeholder:X,keyCode:ae}},Me=function(w,E){return{type:Wt.REMOVE_ITEM,id:w,choiceId:E}},Qt=function(w,E){return{type:Wt.HIGHLIGHT_ITEM,id:w,highlighted:E}},bt=function(w){var E=w.value,v=w.id,x=w.active,I=w.disabled;return{type:Wt.ADD_GROUP,value:E,id:v,active:x,disabled:I}},ar=function(){return{type:"CLEAR_ALL"}},or=function(w){return{type:"RESET_TO",state:w}},zi=function(w){return{type:"SET_IS_LOADING",isLoading:w}};function no(O,w){for(var E=0;E=0?this._store.getGroupById(V):null;return this._store.dispatch(Qt(I,!0)),x&&this.passedElement.triggerEvent(Rt.highlightItem,{id:I,value:ae,label:xe,groupValue:ye&&ye.value?ye.value:null}),this},w.unhighlightItem=function(v){if(!v)return this;var x=v.id,I=v.groupId,R=I===void 0?-1:I,V=v.value,X=V===void 0?"":V,ae=v.label,de=ae===void 0?"":ae,xe=R>=0?this._store.getGroupById(R):null;return this._store.dispatch(Qt(x,!1)),this.passedElement.triggerEvent(Rt.highlightItem,{id:x,value:X,label:de,groupValue:xe&&xe.value?xe.value:null}),this},w.highlightAll=function(){var v=this;return this._store.items.forEach(function(x){return v.highlightItem(x)}),this},w.unhighlightAll=function(){var v=this;return this._store.items.forEach(function(x){return v.unhighlightItem(x)}),this},w.removeActiveItemsByValue=function(v){var x=this;return this._store.activeItems.filter(function(I){return I.value===v}).forEach(function(I){return x._removeItem(I)}),this},w.removeActiveItems=function(v){var x=this;return this._store.activeItems.filter(function(I){var R=I.id;return R!==v}).forEach(function(I){return x._removeItem(I)}),this},w.removeHighlightedItems=function(v){var x=this;return v===void 0&&(v=!1),this._store.highlightedActiveItems.forEach(function(I){x._removeItem(I),v&&x._triggerChange(I.value)}),this},w.showDropdown=function(v){var x=this;return this.dropdown.isActive?this:(requestAnimationFrame(function(){x.dropdown.show(),x.containerOuter.open(x.dropdown.distanceFromTopWindow),!v&&x._canSearch&&x.input.focus(),x.passedElement.triggerEvent(Rt.showDropdown,{})}),this)},w.hideDropdown=function(v){var x=this;return this.dropdown.isActive?(requestAnimationFrame(function(){x.dropdown.hide(),x.containerOuter.close(),!v&&x._canSearch&&(x.input.removeActiveDescendant(),x.input.blur()),x.passedElement.triggerEvent(Rt.hideDropdown,{})}),this):this},w.getValue=function(v){v===void 0&&(v=!1);var x=this._store.activeItems.reduce(function(I,R){var V=v?R.value:R;return I.push(V),I},[]);return this._isSelectOneElement?x[0]:x},w.setValue=function(v){var x=this;return this.initialised?(v.forEach(function(I){return x._setChoiceOrItem(I)}),this):this},w.setChoiceByValue=function(v){var x=this;if(!this.initialised||this._isTextElement)return this;var I=Array.isArray(v)?v:[v];return I.forEach(function(R){return x._findAndSelectChoiceByValue(R)}),this},w.setChoices=function(v,x,I,R){var V=this;if(v===void 0&&(v=[]),x===void 0&&(x="value"),I===void 0&&(I="label"),R===void 0&&(R=!1),!this.initialised)throw new ReferenceError("setChoices was called on a non-initialized instance of Choices");if(!this._isSelectElement)throw new TypeError("setChoices can't be used with INPUT based Choices");if(typeof x!="string"||!x)throw new TypeError("value parameter must be a name of 'value' field in passed objects");if(R&&this.clearChoices(),typeof v=="function"){var X=v(this);if(typeof Promise=="function"&&X instanceof Promise)return new Promise(function(ae){return requestAnimationFrame(ae)}).then(function(){return V._handleLoadingState(!0)}).then(function(){return X}).then(function(ae){return V.setChoices(ae,x,I,R)}).catch(function(ae){V.config.silent||console.error(ae)}).then(function(){return V._handleLoadingState(!1)}).then(function(){return V});if(!Array.isArray(X))throw new TypeError(".setChoices first argument function must return either array of choices or Promise, got: "+typeof X);return this.setChoices(X,x,I,!1)}if(!Array.isArray(v))throw new TypeError(".setChoices must be called either with array of choices with a function resulting into Promise of array of choices");return this.containerOuter.removeLoadingState(),this._startLoading(),v.forEach(function(ae){ae.choices?V._addGroup({id:parseInt(ae.id,10)||null,group:ae,valueKey:x,labelKey:I}):V._addChoice({value:ae[x],label:ae[I],isSelected:ae.selected,isDisabled:ae.disabled,customProperties:ae.customProperties,placeholder:ae.placeholder})}),this._stopLoading(),this},w.clearChoices=function(){return this._store.dispatch(Fe()),this},w.clearStore=function(){return this._store.dispatch(ar()),this},w.clearInput=function(){var v=!this._isSelectOneElement;return this.input.clear(v),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch(ue(!0))),this},w._render=function(){if(!this._store.isLoading()){this._currentState=this._store.state;var v=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,x=this._isSelectElement,I=this._currentState.items!==this._prevState.items;!v||(x&&this._renderChoices(),I&&this._renderItems(),this._prevState=this._currentState)}},w._renderChoices=function(){var v=this,x=this._store,I=x.activeGroups,R=x.activeChoices,V=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame(function(){return v.choiceList.scrollToTop()}),I.length>=1&&!this._isSearching){var X=R.filter(function(Ie){return Ie.placeholder===!0&&Ie.groupId===-1});X.length>=1&&(V=this._createChoicesFragment(X,V)),V=this._createGroupsFragment(I,R,V)}else R.length>=1&&(V=this._createChoicesFragment(R,V));if(V.childNodes&&V.childNodes.length>0){var ae=this._store.activeItems,de=this._canAddItem(ae,this.input.value);de.response?(this.choiceList.append(V),this._highlightChoice()):this.choiceList.append(this._getTemplate("notice",de.notice))}else{var xe,ye;this._isSearching?(ye=typeof this.config.noResultsText=="function"?this.config.noResultsText():this.config.noResultsText,xe=this._getTemplate("notice",ye,"no-results")):(ye=typeof this.config.noChoicesText=="function"?this.config.noChoicesText():this.config.noChoicesText,xe=this._getTemplate("notice",ye,"no-choices")),this.choiceList.append(xe)}},w._renderItems=function(){var v=this._store.activeItems||[];this.itemList.clear();var x=this._createItemsFragment(v);x.childNodes&&this.itemList.append(x)},w._createGroupsFragment=function(v,x,I){var R=this;I===void 0&&(I=document.createDocumentFragment());var V=function(ae){return x.filter(function(de){return R._isSelectOneElement?de.groupId===ae.id:de.groupId===ae.id&&(R.config.renderSelectedChoices==="always"||!de.selected)})};return this.config.shouldSort&&v.sort(this.config.sorter),v.forEach(function(X){var ae=V(X);if(ae.length>=1){var de=R._getTemplate("choiceGroup",X);I.appendChild(de),R._createChoicesFragment(ae,I,!0)}}),I},w._createChoicesFragment=function(v,x,I){var R=this;x===void 0&&(x=document.createDocumentFragment()),I===void 0&&(I=!1);var V=this.config,X=V.renderSelectedChoices,ae=V.searchResultLimit,de=V.renderChoiceLimit,xe=this._isSearching?we:this.config.sorter,ye=function(zt){var Mr=X==="auto"?R._isSelectOneElement||!zt.selected:!0;if(Mr){var Ir=R._getTemplate("choice",zt,R.config.itemSelectText);x.appendChild(Ir)}},Ie=v;X==="auto"&&!this._isSelectOneElement&&(Ie=v.filter(function(Ht){return!Ht.selected}));var Oe=Ie.reduce(function(Ht,zt){return zt.placeholder?Ht.placeholderChoices.push(zt):Ht.normalChoices.push(zt),Ht},{placeholderChoices:[],normalChoices:[]}),Ce=Oe.placeholderChoices,$e=Oe.normalChoices;(this.config.shouldSort||this._isSearching)&&$e.sort(xe);var Le=Ie.length,Re=this._isSelectOneElement?[].concat(Ce,$e):$e;this._isSearching?Le=ae:de&&de>0&&!I&&(Le=de);for(var ft=0;ft=R){var ae=V?this._searchChoices(v):0;this.passedElement.triggerEvent(Rt.search,{value:v,resultCount:ae})}else X&&(this._isSearching=!1,this._store.dispatch(ue(!0)))}},w._canAddItem=function(v,x){var I=!0,R=typeof this.config.addItemText=="function"?this.config.addItemText(x):this.config.addItemText;if(!this._isSelectOneElement){var V=Ue(v,x);this.config.maxItemCount>0&&this.config.maxItemCount<=v.length&&(I=!1,R=typeof this.config.maxItemText=="function"?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&V&&I&&(I=!1,R=typeof this.config.uniqueItemText=="function"?this.config.uniqueItemText(x):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&I&&typeof this.config.addItemFilter=="function"&&!this.config.addItemFilter(x)&&(I=!1,R=typeof this.config.customAddItemText=="function"?this.config.customAddItemText(x):this.config.customAddItemText)}return{response:I,notice:R}},w._searchChoices=function(v){var x=typeof v=="string"?v.trim():v,I=typeof this._currentValue=="string"?this._currentValue.trim():this._currentValue;if(x.length<1&&x===I+" ")return 0;var R=this._store.searchableChoices,V=x,X=[].concat(this.config.searchFields),ae=Object.assign(this.config.fuseOptions,{keys:X}),de=new i.a(R,ae),xe=de.search(V);return this._currentValue=x,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch(ve(xe)),xe.length},w._addEventListeners=function(){var v=document,x=v.documentElement;x.addEventListener("touchend",this._onTouchEnd,!0),this.containerOuter.element.addEventListener("keydown",this._onKeyDown,!0),this.containerOuter.element.addEventListener("mousedown",this._onMouseDown,!0),x.addEventListener("click",this._onClick,{passive:!0}),x.addEventListener("touchmove",this._onTouchMove,{passive:!0}),this.dropdown.element.addEventListener("mouseover",this._onMouseOver,{passive:!0}),this._isSelectOneElement&&(this.containerOuter.element.addEventListener("focus",this._onFocus,{passive:!0}),this.containerOuter.element.addEventListener("blur",this._onBlur,{passive:!0})),this.input.element.addEventListener("keyup",this._onKeyUp,{passive:!0}),this.input.element.addEventListener("focus",this._onFocus,{passive:!0}),this.input.element.addEventListener("blur",this._onBlur,{passive:!0}),this.input.element.form&&this.input.element.form.addEventListener("reset",this._onFormReset,{passive:!0}),this.input.addEventListeners()},w._removeEventListeners=function(){var v=document,x=v.documentElement;x.removeEventListener("touchend",this._onTouchEnd,!0),this.containerOuter.element.removeEventListener("keydown",this._onKeyDown,!0),this.containerOuter.element.removeEventListener("mousedown",this._onMouseDown,!0),x.removeEventListener("click",this._onClick),x.removeEventListener("touchmove",this._onTouchMove),this.dropdown.element.removeEventListener("mouseover",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener("focus",this._onFocus),this.containerOuter.element.removeEventListener("blur",this._onBlur)),this.input.element.removeEventListener("keyup",this._onKeyUp),this.input.element.removeEventListener("focus",this._onFocus),this.input.element.removeEventListener("blur",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener("reset",this._onFormReset),this.input.removeEventListeners()},w._onKeyDown=function(v){var x,I=v.target,R=v.keyCode,V=v.ctrlKey,X=v.metaKey,ae=this._store.activeItems,de=this.input.isFocussed,xe=this.dropdown.isActive,ye=this.itemList.hasChildren(),Ie=String.fromCharCode(R),Oe=yt.BACK_KEY,Ce=yt.DELETE_KEY,$e=yt.ENTER_KEY,Le=yt.A_KEY,Re=yt.ESC_KEY,ft=yt.UP_KEY,Ht=yt.DOWN_KEY,zt=yt.PAGE_UP_KEY,Mr=yt.PAGE_DOWN_KEY,Ir=V||X;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(Ie)&&this.showDropdown();var ni=(x={},x[Le]=this._onAKey,x[$e]=this._onEnterKey,x[Re]=this._onEscapeKey,x[ft]=this._onDirectionKey,x[zt]=this._onDirectionKey,x[Ht]=this._onDirectionKey,x[Mr]=this._onDirectionKey,x[Ce]=this._onDeleteKey,x[Oe]=this._onDeleteKey,x);ni[R]&&ni[R]({event:v,target:I,keyCode:R,metaKey:X,activeItems:ae,hasFocusedInput:de,hasActiveDropdown:xe,hasItems:ye,hasCtrlDownKeyPressed:Ir})},w._onKeyUp=function(v){var x=v.target,I=v.keyCode,R=this.input.value,V=this._store.activeItems,X=this._canAddItem(V,R),ae=yt.BACK_KEY,de=yt.DELETE_KEY;if(this._isTextElement){var xe=X.notice&&R;if(xe){var ye=this._getTemplate("notice",X.notice);this.dropdown.element.innerHTML=ye.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0)}else{var Ie=(I===ae||I===de)&&!x.value,Oe=!this._isTextElement&&this._isSearching,Ce=this._canSearch&&X.response;Ie&&Oe?(this._isSearching=!1,this._store.dispatch(ue(!0))):Ce&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled},w._onAKey=function(v){var x=v.hasItems,I=v.hasCtrlDownKeyPressed;if(I&&x){this._canSearch=!1;var R=this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement;R&&this.highlightAll()}},w._onEnterKey=function(v){var x=v.event,I=v.target,R=v.activeItems,V=v.hasActiveDropdown,X=yt.ENTER_KEY,ae=I.hasAttribute("data-button");if(this._isTextElement&&I.value){var de=this.input.value,xe=this._canAddItem(R,de);xe.response&&(this.hideDropdown(!0),this._addItem({value:de}),this._triggerChange(de),this.clearInput())}if(ae&&(this._handleButtonAction(R,I),x.preventDefault()),V){var ye=this.dropdown.getChild("."+this.config.classNames.highlightedState);ye&&(R[0]&&(R[0].keyCode=X),this._handleChoiceAction(R,ye)),x.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),x.preventDefault())},w._onEscapeKey=function(v){var x=v.hasActiveDropdown;x&&(this.hideDropdown(!0),this.containerOuter.focus())},w._onDirectionKey=function(v){var x=v.event,I=v.hasActiveDropdown,R=v.keyCode,V=v.metaKey,X=yt.DOWN_KEY,ae=yt.PAGE_UP_KEY,de=yt.PAGE_DOWN_KEY;if(I||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var xe=R===X||R===de?1:-1,ye=V||R===de||R===ae,Ie="[data-choice-selectable]",Oe;if(ye)xe>0?Oe=this.dropdown.element.querySelector(Ie+":last-of-type"):Oe=this.dropdown.element.querySelector(Ie);else{var Ce=this.dropdown.element.querySelector("."+this.config.classNames.highlightedState);Ce?Oe=Ge(Ce,Ie,xe):Oe=this.dropdown.element.querySelector(Ie)}Oe&&(W(Oe,this.choiceList.element,xe)||this.choiceList.scrollToChildElement(Oe,xe),this._highlightChoice(Oe)),x.preventDefault()}},w._onDeleteKey=function(v){var x=v.event,I=v.target,R=v.hasFocusedInput,V=v.activeItems;R&&!I.value&&!this._isSelectOneElement&&(this._handleBackspace(V),x.preventDefault())},w._onTouchMove=function(){this._wasTap&&(this._wasTap=!1)},w._onTouchEnd=function(v){var x=v||v.touches[0],I=x.target,R=this._wasTap&&this.containerOuter.element.contains(I);if(R){var V=I===this.containerOuter.element||I===this.containerInner.element;V&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),v.stopPropagation()}this._wasTap=!0},w._onMouseDown=function(v){var x=v.target;if(x instanceof HTMLElement){if(ji&&this.choiceList.element.contains(x)){var I=this.choiceList.element.firstElementChild,R=this._direction==="ltr"?v.offsetX>=I.offsetWidth:v.offsetX0;R&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0)}},w._onFocus=function(v){var x=this,I,R=v.target,V=this.containerOuter.element.contains(R);if(!!V){var X=(I={},I[Y]=function(){R===x.input.element&&x.containerOuter.addFocusState()},I[oe]=function(){x.containerOuter.addFocusState(),R===x.input.element&&x.showDropdown(!0)},I[Ee]=function(){R===x.input.element&&(x.showDropdown(!0),x.containerOuter.addFocusState())},I);X[this.passedElement.element.type]()}},w._onBlur=function(v){var x=this,I=v.target,R=this.containerOuter.element.contains(I);if(R&&!this._isScrollingOnIe){var V,X=this._store.activeItems,ae=X.some(function(xe){return xe.highlighted}),de=(V={},V[Y]=function(){I===x.input.element&&(x.containerOuter.removeFocusState(),ae&&x.unhighlightAll(),x.hideDropdown(!0))},V[oe]=function(){x.containerOuter.removeFocusState(),(I===x.input.element||I===x.containerOuter.element&&!x._canSearch)&&x.hideDropdown(!0)},V[Ee]=function(){I===x.input.element&&(x.containerOuter.removeFocusState(),x.hideDropdown(!0),ae&&x.unhighlightAll())},V);de[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()},w._onFormReset=function(){this._store.dispatch(or(this._initialState))},w._highlightChoice=function(v){var x=this;v===void 0&&(v=null);var I=Array.from(this.dropdown.element.querySelectorAll("[data-choice-selectable]"));if(!!I.length){var R=v,V=Array.from(this.dropdown.element.querySelectorAll("."+this.config.classNames.highlightedState));V.forEach(function(X){X.classList.remove(x.config.classNames.highlightedState),X.setAttribute("aria-selected","false")}),R?this._highlightPosition=I.indexOf(R):(I.length>this._highlightPosition?R=I[this._highlightPosition]:R=I[I.length-1],R||(R=I[0])),R.classList.add(this.config.classNames.highlightedState),R.setAttribute("aria-selected","true"),this.passedElement.triggerEvent(Rt.highlightChoice,{el:R}),this.dropdown.isActive&&(this.input.setActiveDescendant(R.id),this.containerOuter.setActiveDescendant(R.id))}},w._addItem=function(v){var x=v.value,I=v.label,R=I===void 0?null:I,V=v.choiceId,X=V===void 0?-1:V,ae=v.groupId,de=ae===void 0?-1:ae,xe=v.customProperties,ye=xe===void 0?null:xe,Ie=v.placeholder,Oe=Ie===void 0?!1:Ie,Ce=v.keyCode,$e=Ce===void 0?null:Ce,Le=typeof x=="string"?x.trim():x,Re=$e,ft=ye,Ht=this._store.items,zt=R||Le,Mr=X||-1,Ir=de>=0?this._store.getGroupById(de):null,ni=Ht?Ht.length+1:1;return this.config.prependValue&&(Le=this.config.prependValue+Le.toString()),this.config.appendValue&&(Le+=this.config.appendValue.toString()),this._store.dispatch(Ne({value:Le,label:zt,id:ni,choiceId:Mr,groupId:de,customProperties:ye,placeholder:Oe,keyCode:Re})),this._isSelectOneElement&&this.removeActiveItems(ni),this.passedElement.triggerEvent(Rt.addItem,{id:ni,value:Le,label:zt,customProperties:ft,groupValue:Ir&&Ir.value?Ir.value:void 0,keyCode:Re}),this},w._removeItem=function(v){if(!v||!N("Object",v))return this;var x=v.id,I=v.value,R=v.label,V=v.choiceId,X=v.groupId,ae=X>=0?this._store.getGroupById(X):null;return this._store.dispatch(Me(x,V)),ae&&ae.value?this.passedElement.triggerEvent(Rt.removeItem,{id:x,value:I,label:R,groupValue:ae.value}):this.passedElement.triggerEvent(Rt.removeItem,{id:x,value:I,label:R}),this},w._addChoice=function(v){var x=v.value,I=v.label,R=I===void 0?null:I,V=v.isSelected,X=V===void 0?!1:V,ae=v.isDisabled,de=ae===void 0?!1:ae,xe=v.groupId,ye=xe===void 0?-1:xe,Ie=v.customProperties,Oe=Ie===void 0?null:Ie,Ce=v.placeholder,$e=Ce===void 0?!1:Ce,Le=v.keyCode,Re=Le===void 0?null:Le;if(!(typeof x=="undefined"||x===null)){var ft=this._store.choices,Ht=R||x,zt=ft?ft.length+1:1,Mr=this._baseId+"-"+this._idNames.itemChoice+"-"+zt;this._store.dispatch(re({id:zt,groupId:ye,elementId:Mr,value:x,label:Ht,disabled:de,customProperties:Oe,placeholder:$e,keyCode:Re})),X&&this._addItem({value:x,label:Ht,choiceId:zt,customProperties:Oe,placeholder:$e,keyCode:Re})}},w._addGroup=function(v){var x=this,I=v.group,R=v.id,V=v.valueKey,X=V===void 0?"value":V,ae=v.labelKey,de=ae===void 0?"label":ae,xe=N("Object",I)?I.choices:Array.from(I.getElementsByTagName("OPTION")),ye=R||Math.floor(new Date().valueOf()*Math.random()),Ie=I.disabled?I.disabled:!1;if(xe){this._store.dispatch(bt({value:I.label,id:ye,active:!0,disabled:Ie}));var Oe=function($e){var Le=$e.disabled||$e.parentNode&&$e.parentNode.disabled;x._addChoice({value:$e[X],label:N("Object",$e)?$e[de]:$e.innerHTML,isSelected:$e.selected,isDisabled:Le,groupId:ye,customProperties:$e.customProperties,placeholder:$e.placeholder})};xe.forEach(Oe)}else this._store.dispatch(bt({value:I.label,id:I.id,active:!1,disabled:I.disabled}))},w._getTemplate=function(v){var x;if(!v)return null;for(var I=this.config.classNames,R=arguments.length,V=new Array(R>1?R-1:0),X=1;X{m();(function(e,t){typeof sl=="object"&&typeof Nw!="undefined"?t(sl):typeof define=="function"&&define.amd?define(["exports"],t):(e=typeof globalThis!="undefined"?globalThis:e||self,t(e.immutableJSONPatch={}))})(sl,function(e){"use strict";function t(W){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?t=function(q){return typeof q}:t=function(q){return q&&typeof Symbol=="function"&&q.constructor===Symbol&&q!==Symbol.prototype?"symbol":typeof q},t(W)}function r(W,j){return JSON.stringify(W)===JSON.stringify(j)}function n(W,j){return W===j}function i(W){return W.slice(0,W.length-1)}function a(W){return W[W.length-1]}function o(W,j){var q=arguments.length>2&&arguments[2]!==void 0?arguments[2]:n;if(W.length3&&arguments[3]!==void 0?arguments[3]:!1;if(j.length===0)return q;var we=j[0],ke=y(W?W[we]:void 0,j.slice(1),q,te);if(!s(W))if(te){var Ue=typeof we=="number"?[]:{};return Ue[we]=ke,Ue}else throw new Error("Path does not exist");return p(W,we,ke)}function b(W,j,q){if(j.length===0)return q(W);if(!s(W))throw new Error("Path doesn't exist");var te=j[0],we=b(W[te],j.slice(1),q);return p(W,te,we)}function k(W,j){if(j.length===0)return W;if(!s(W))throw new Error("Path does not exist");if(j.length===1){var q=j[0];if(q in W){var te=f(W);return Array.isArray(te)?te.splice(q,1):delete te[q],te}else return W}var we=j[0],ke=k(W[we],j.slice(1));return p(W,we,ke)}function T(W,j,q){var te=j.slice(0,j.length-1),we=j[j.length-1];return b(W,te,function(ke){if(!Array.isArray(ke))throw new TypeError("Array expected at path "+JSON.stringify(te));var Ue=f(ke);return Ue.splice(we,0,q),Ue})}function C(W,j){return W===void 0?!1:j.length===0?!0:C(W[j[0]],j.slice(1))}function A(W){var j=W.split("/");return j.shift(),j.map(function(q){return q.replace(/~1/g,"/").replace(/~0/g,"~")})}function H(W){return W.map(function(j){return"/"+String(j).replace(/~/g,"~0").replace(/\//g,"~1")}).join("")}function D(W,j,q){for(var te=W,we=0;we{m();(function(){var e;typeof wf!="undefined"?e=wf.exports=n:e=function(){return this||(0,eval)("this")}(),e.format=n,e.vsprintf=r,typeof console!="undefined"&&typeof console.log=="function"&&(e.printf=t);function t(){console.log(n.apply(null,arguments))}function r(i,a){return n.apply(null,[i].concat(a))}function n(i){for(var a=1,o=[].slice.call(arguments),s=0,u=i.length,l="",c,d=!1,f,p,g=!1,y,b=function(){return o[a++]},k=function(){for(var T="";/\d/.test(i[s]);)T+=i[s++],c=i[s];return T.length>0?parseInt(T):null};sTf});m();m();function Il(e,t){let r=Object.keys(t).map(n=>ox(e,n,t[n]));return r.length===1?r[0]:function(){r.forEach(n=>n())}}function ox(e,t,r){let n=e[t],i=e.hasOwnProperty(t),a=r(n);return n&&Object.setPrototypeOf(a,n),Object.setPrototypeOf(o,a),e[t]=o,s;function o(...u){return a===n&&e[t]===o&&s(),a.apply(this,u)}function s(){e[t]===o&&(i?e[t]=n:delete e[t]),a!==n&&(a=n,Object.setPrototypeOf(o,n||Function))}}var Dt=me(require("obsidian"));m();m();Ar();var oi,xt,Al,qf,si=0,Yf=[],lo=[],Jf=fe.__b,Gf=fe.__r,Qf=fe.diffed,Xf=fe.__c,Zf=fe.unmount;function Xi(e,t){fe.__h&&fe.__h(xt,e,si||t),si=0;var r=xt.__H||(xt.__H={__:[],__h:[]});return e>=r.__.length&&r.__.push({__V:lo}),r.__[e]}function sr(e){return si=1,Zi(tp,e)}function Zi(e,t,r){var n=Xi(oi++,2);return n.t=e,n.__c||(n.__=[r?r(t):tp(void 0,t),function(i){var a=n.t(n.__[0],i);n.__[0]!==a&&(n.__=[a,n.__[1]],n.__c.setState({}))}],n.__c=xt),n.__}function Sn(e,t){var r=Xi(oi++,3);!fe.__s&&Pl(r.__H,t)&&(r.__=e,r.u=t,xt.__H.__h.push(r))}function Lr(e,t){var r=Xi(oi++,4);!fe.__s&&Pl(r.__H,t)&&(r.__=e,r.u=t,xt.__h.push(r))}function Xt(e){return si=5,lr(function(){return{current:e}},[])}function co(e,t,r){si=6,Lr(function(){return typeof e=="function"?(e(t()),function(){return e(null)}):e?(e.current=t(),function(){return e.current=null}):void 0},r==null?r:r.concat(e))}function lr(e,t){var r=Xi(oi++,7);return Pl(r.__H,t)?(r.__V=e(),r.u=t,r.__h=e,r.__V):r.__}function cr(e,t){return si=8,lr(function(){return e},t)}function uo(e){var t=xt.context[e.__c],r=Xi(oi++,9);return r.c=e,t?(r.__==null&&(r.__=!0,t.sub(xt)),t.props.value):e.__}function fo(e,t){fe.useDebugValue&&fe.useDebugValue(t?t(e):e)}function sx(){for(var e;e=Yf.shift();)if(e.__P)try{e.__H.__h.forEach(po),e.__H.__h.forEach(Ll),e.__H.__h=[]}catch(t){e.__H.__h=[],fe.__e(t,e.__v)}}fe.__b=function(e){xt=null,Jf&&Jf(e)},fe.__r=function(e){Gf&&Gf(e),oi=0;var t=(xt=e.__c).__H;t&&(Al===xt?(t.__h=[],xt.__h=[],t.__.forEach(function(r){r.__V=lo,r.u=void 0})):(t.__h.forEach(po),t.__h.forEach(Ll),t.__h=[])),Al=xt},fe.diffed=function(e){Qf&&Qf(e);var t=e.__c;t&&t.__H&&(t.__H.__h.length&&(Yf.push(t)!==1&&qf===fe.requestAnimationFrame||((qf=fe.requestAnimationFrame)||function(r){var n,i=function(){clearTimeout(a),ep&&cancelAnimationFrame(n),setTimeout(r)},a=setTimeout(i,100);ep&&(n=requestAnimationFrame(i))})(sx)),t.__H.__.forEach(function(r){r.u&&(r.__H=r.u),r.__V!==lo&&(r.__=r.__V),r.u=void 0,r.__V=lo})),Al=xt=null},fe.__c=function(e,t){t.some(function(r){try{r.__h.forEach(po),r.__h=r.__h.filter(function(n){return!n.__||Ll(n)})}catch(n){t.some(function(i){i.__h&&(i.__h=[])}),t=[],fe.__e(n,r.__v)}}),Xf&&Xf(e,t)},fe.unmount=function(e){Zf&&Zf(e);var t,r=e.__c;r&&r.__H&&(r.__H.__.forEach(function(n){try{po(n)}catch(i){t=i}}),t&&fe.__e(t,r.__v))};var ep=typeof requestAnimationFrame=="function";function po(e){var t=xt,r=e.__c;typeof r=="function"&&(e.__c=void 0,r()),xt=t}function Ll(e){var t=xt;e.__c=e.__(),xt=t}function Pl(e,t){return!e||e.length!==t.length||t.some(function(r,n){return r!==e[n]})}function tp(e,t){return typeof t=="function"?t(e):t}Ar();Ar();function np(e,t){for(var r in t)e[r]=t[r];return e}function Fl(e,t){for(var r in e)if(r!=="__source"&&!(r in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function Nl(e){this.props=e}function lx(e,t){function r(i){var a=this.props.ref,o=a==i.ref;return!o&&a&&(a.call?a(null):a.current=null),t?!t(this.props,i)||!o:Fl(this.props,i)}function n(i){return this.shouldComponentUpdate=r,h(e,i)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(Nl.prototype=new ht).isPureReactComponent=!0,Nl.prototype.shouldComponentUpdate=function(e,t){return Fl(this.props,e)||Fl(this.state,t)};var rp=fe.__b;fe.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),rp&&rp(e)};var cx=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function ux(e){function t(r){var n=np({},r);return delete n.ref,e(n,r.ref||null)}return t.$$typeof=cx,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var ip=function(e,t){return e==null?null:wt(wt(e).map(t))},dx={map:ip,forEach:ip,count:function(e){return e?wt(e).length:0},only:function(e){var t=wt(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:wt},fx=fe.__e;fe.__e=function(e,t,r,n){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e==null&&(t.__e=r.__e,t.__k=r.__k),i.__c(e,t)}fx(e,t,r,n)};var ap=fe.unmount;function ho(){this.__u=0,this.t=null,this.__b=null}function op(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function px(e){var t,r,n;function i(a){if(t||(t=e()).then(function(o){r=o.default||o},function(o){n=o}),n)throw n;if(!r)throw t;return h(r,a)}return i.displayName="Lazy",i.__f=!0,i}function ea(){this.u=null,this.o=null}fe.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),ap&&ap(e)},(ho.prototype=new ht).__c=function(e,t){var r=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(r);var i=op(n.__v),a=!1,o=function(){a||(a=!0,r.__R=null,i?i(s):s())};r.__R=o;var s=function(){if(!--n.__u){if(n.state.__e){var l=n.state.__e;n.__v.__k[0]=function d(f,p,g){return f&&(f.__v=null,f.__k=f.__k&&f.__k.map(function(y){return d(y,p,g)}),f.__c&&f.__c.__P===p&&(f.__e&&g.insertBefore(f.__e,f.__d),f.__c.__e=!0,f.__c.__P=g)),f}(l,l.__c.__P,l.__c.__O)}var c;for(n.setState({__e:n.__b=null});c=n.t.pop();)c.forceUpdate()}},u=t.__h===!0;n.__u++||u||n.setState({__e:n.__b=n.__v.__k[0]}),e.then(o,o)},ho.prototype.componentWillUnmount=function(){this.t=[]},ho.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=function a(o,s,u){return o&&(o.__c&&o.__c.__H&&(o.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),o.__c.__H=null),(o=np({},o)).__c!=null&&(o.__c.__P===u&&(o.__c.__P=s),o.__c=null),o.__k=o.__k&&o.__k.map(function(l){return a(l,s,u)})),o}(this.__b,r,n.__O=n.__P)}this.__b=null}var i=t.__e&&h(S,null,e.fallback);return i&&(i.__h=null),[h(S,null,t.__e?null:e.children),i]};var sp=function(e,t,r){if(++r[1]===r[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(r=e.u;r;){for(;r.length>3;)r.pop()();if(r[1]>>1,1),t.i.removeChild(n)}}),kn(h(hx,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function gx(e,t){var r=h(mx,{__v:e,i:t});return r.containerInfo=t,r}(ea.prototype=new ht).__e=function(e){var t=this,r=op(t.__v),n=t.o.get(e);return n[0]++,function(i){var a=function(){t.props.revealOrder?(n.push(i),sp(t,e,n)):i()};r?r(a):a()}},ea.prototype.render=function(e){this.u=null,this.o=new Map;var t=wt(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var r=t.length;r--;)this.o.set(t[r],this.u=[1,0,this.u]);return e.children},ea.prototype.componentDidUpdate=ea.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,r){sp(e,r,t)})};var lp=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,vx=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|shape|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,yx=typeof document!="undefined",bx=function(e){return(typeof Symbol!="undefined"&&typeof Symbol()=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function wx(e,t,r){return t.__k==null&&(t.textContent=""),kn(e,t),typeof r=="function"&&r(),e?e.__c:null}function Ex(e,t,r){return Qi(e,t),typeof r=="function"&&r(),e?e.__c:null}ht.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(ht.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var cp=fe.event;function xx(){}function kx(){return this.cancelBubble}function Sx(){return this.defaultPrevented}fe.event=function(e){return cp&&(e=cp(e)),e.persist=xx,e.isPropagationStopped=kx,e.isDefaultPrevented=Sx,e.nativeEvent=e};var up,dp={configurable:!0,get:function(){return this.class}},fp=fe.vnode;fe.vnode=function(e){var t=e.type,r=e.props,n=r;if(typeof t=="string"){var i=t.indexOf("-")===-1;for(var a in n={},r){var o=r[a];yx&&a==="children"&&t==="noscript"||a==="value"&&"defaultValue"in r&&o==null||(a==="defaultValue"&&"value"in r&&r.value==null?a="value":a==="download"&&o===!0?o="":/ondoubleclick/i.test(a)?a="ondblclick":/^onchange(textarea|input)/i.test(a+t)&&!bx(r.type)?a="oninput":/^onfocus$/i.test(a)?a="onfocusin":/^onblur$/i.test(a)?a="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(a)?a=a.toLowerCase():i&&vx.test(a)?a=a.replace(/[A-Z0-9]/,"-$&").toLowerCase():o===null&&(o=void 0),/^oninput$/i.test(a)&&(a=a.toLowerCase(),n[a]&&(a="oninputCapture")),n[a]=o)}t=="select"&&n.multiple&&Array.isArray(n.value)&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.value.indexOf(s.props.value)!=-1})),t=="select"&&n.defaultValue!=null&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.multiple?n.defaultValue.indexOf(s.props.value)!=-1:n.defaultValue==s.props.value})),e.props=n,r.class!=r.className&&(dp.enumerable="className"in r,r.className!=null&&(n.class=r.className),Object.defineProperty(n,"className",dp))}e.$$typeof=lp,fp&&fp(e)};var pp=fe.__r;fe.__r=function(e){pp&&pp(e),up=e.__c};var _x={ReactCurrentDispatcher:{current:{readContext:function(e){return up.__n[e.__c].props.value}}}};function Cx(e){return h.bind(null,e)}function hp(e){return!!e&&e.$$typeof===lp}function Dx(e){return hp(e)?so.apply(null,arguments):e}function Tx(e){return!!e.__k&&(kn(null,e),!0)}function Mx(e){return e&&(e.base||e.nodeType===1&&e)||null}var Ix=function(e,t){return e(t)},Ax=function(e,t){return e(t)};var L={useState:sr,useReducer:Zi,useEffect:Sn,useLayoutEffect:Lr,useRef:Xt,useImperativeHandle:co,useMemo:lr,useCallback:cr,useContext:uo,useDebugValue:fo,version:"17.0.2",Children:dx,render:wx,hydrate:Ex,unmountComponentAtNode:Tx,createPortal:gx,createElement:h,createContext:ai,createFactory:Cx,cloneElement:Dx,createRef:ri,Fragment:S,isValidElement:hp,findDOMNode:Mx,Component:ht,PureComponent:Nl,memo:lx,forwardRef:ux,flushSync:Ax,unstable_batchedUpdates:Ix,StrictMode:S,Suspense:ho,SuspenseList:ea,lazy:px,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:_x};m();function Ze(e){return e.win}function ur(e){return e.doc.body}m();var Ub=me(Et());m();var We=L.createContext(null),go=L.createContext(null);m();var Ip=me(Et()),hr=me(require("obsidian"));m();var Cp=me(kp()),fr=me(Et());m();function Sp(e){return Object.prototype.toString.call(e)==="[object Object]"}function _p(e){var t,r;return Sp(e)===!1?!1:(t=e.constructor,t===void 0?!0:(r=t.prototype,!(Sp(r)===!1||r.hasOwnProperty("isPrototypeOf")===!1)))}m();function Zx(e,t){return e.length!==t.length?!1:e.every((r,n,i)=>n===i.length-1?r!==t[n]:r===t[n])}function ek(e,t){return e.length===t.length&&e.every((r,n)=>r===t[n])}var an;(function(i){i[i.Before=0]="Before",i[i.After=1]="After",i[i.Self=2]="Self",i[i.NotSiblings=3]="NotSiblings"})(an||(an={}));function ra(e,t){if(ek(e,t))return 2;if(!Zx(e,t))return 3;let r=e.length-1;return e[r]=0;n--)r={children:{[e[n]]:r}};return r}function ia(e,t){let r=t;for(let n=e.length-2;n>=0;n--)r={children:{[e[n]]:r}};return r}function Dp(e){return ia(e,{children:{$splice:[[e[e.length-1],1]]}})}function Tp(e,t,r=0){return ia(e,{children:{$splice:[[e[e.length-1]+r,0,...t]]}})}function nk(e,t){return ia(e,{children:{$push:t}})}function rk(e,t){return ia(e,{children:{$unshift:t}})}function aa(e,t,r,n){let i=n?n(mt(e,t)):mt(e,t),o=ra(t,r)===an.After?-1:0,s=Dp(t),u=Tp(r,[i],o),l=(0,Cp.default)(s,u,{isMergeableObject:d=>_p(d)||Array.isArray(d)});return(0,fr.default)(e,l)}function Fr(e,t){return(0,fr.default)(e,Dp(t))}function pr(e,t,r){return(0,fr.default)(e,Tp(t,r))}function Bl(e,t,r){return(0,fr.default)(e,nk(t,r))}function Mp(e,t,r){return(0,fr.default)(e,rk(t,r))}function vo(e,t,r){return(0,fr.default)(e,tk(t,r))}function Kl(e,t,r){return(0,fr.default)(e,ia(t,r))}var $l="kanban-plugin";function ci(){}function B(e){return`${$l}__${e}`}function Ae(e=9){return Math.random().toString(36).slice(2,2+e)}function Ul(e,t,r,n,i){var l,c;let a=mt(e,t.slice(0,-1)),o=mt(r,n.slice(0,-1)),s=(l=a==null?void 0:a.data)==null?void 0:l.shouldMarkItemsComplete,u=(c=o==null?void 0:o.data)==null?void 0:c.shouldMarkItemsComplete;return!s&&!u||u===!!i.data.isComplete?i:(0,Ip.default)(i,{data:{isComplete:{$set:u}}})}function yo(){let e=L.useRef(!1);return{oncompositionstart:()=>{e.current=!0},oncompositionend:()=>{e.current=!1},getShouldIMEBlockAction:()=>e.current}}var ik=/<%/;async function Ap(e,t){let r=t?e.app.vault.getAbstractFileByPath(t):null;if(r&&r instanceof hr.TFile){let n=app.workspace.getActiveViewOfType(hr.MarkdownView);try{(n==null?void 0:n.getMode())!=="source"&&await n.setState({...n.getState(),mode:"source"},{});let{templatesEnabled:i,templaterEnabled:a,templatesPlugin:o,templaterPlugin:s}=Vl(e.app),u=await e.app.vault.read(r);if(i&&a)return ik.test(u)?await s.append_template_to_active_file(r):await o.instance.insertTemplate(r);if(i)return await o.instance.insertTemplate(r);if(a)return await s.append_template_to_active_file(r);await e.app.vault.modify(e.app.workspace.getActiveFile(),u)}catch(i){console.error(i),e.setError(i)}}}function Nr(e){var s,u,l,c,d;let t=e.internalPlugins.plugins,r=(s=t["daily-notes"])==null?void 0:s.enabled,n=(u=t["daily-notes"])==null?void 0:u.instance.options.format,i=(l=e.plugins.plugins["nldates-obsidian"])==null?void 0:l.settings.format,a=(c=t.templates)==null?void 0:c.enabled,o=(d=t.templates)==null?void 0:d.instance.options.dateFormat;return r&&n||i||a&&o||"YYYY-MM-DD"}function ui(e){var a,o,s;let t=e.internalPlugins.plugins,r=(a=e.plugins.plugins["nldates-obsidian"])==null?void 0:a.settings.timeFormat,n=(o=t.templates)==null?void 0:o.enabled,i=(s=t.templates)==null?void 0:s.instance.options.timeFormat;return r||n&&i||"HH:mm"}var Lp=/[\\^$.*+?()[\]{}|]/g,ak=RegExp(Lp.source);function Ln(e){return e&&ak.test(e)?e.replace(Lp,"\\$&"):e||""}function Vl(e){var s;let t=e.internalPlugins.plugins.templates,r=t.enabled,n=e.plugins.plugins["templater-obsidian"],i=e.plugins.enabledPlugins.has("templater-obsidian"),a=n&&((s=this.app.plugins.plugins["templater-obsidian"].settings)==null?void 0:s.empty_file_template),o=r?t.instance.options.folder:n?n.settings.template_folder:void 0;return{templatesPlugin:t,templatesEnabled:r,templaterPlugin:n==null?void 0:n.templater,templaterEnabled:i,templaterEmptyFileTemplate:a,templateFolder:o}}function bo(e){let r=(e.getSetting("tag-colors")||[]).reduce((n,i)=>(i.tagKey&&(n[i.tagKey]=i),n),{});return n=>r[n]?r[n]:null}function wo(e){let r=(e.getSetting("date-colors")||[]).map(i=>{if(i.isToday)return["today",i];if(i.isBefore)return["before",i];if(i.isAfter)return["after",i];let a=i.direction==="after"?1:-1,o=(0,hr.moment)();return o.add(i.distance*a,i.unit),[o,i]}),n=(0,hr.moment)();return r.sort((i,a)=>i[0]==="today"?typeof a[0]=="string"?-1:a[0].isSame(n,"day")?1:-1:a[0]==="today"?typeof i[0]=="string"?1:i[0].isSame(n,"day")?-1:1:i[0]==="after"||i[0]==="before"?1:a[0]==="after"||a[0]==="before"||i[0].isBefore(a[0])?-1:1),i=>{let a=(0,hr.moment)(),o=r.find(s=>{let u=s[1];return u.isToday?i.isSame(a,"day"):u.isAfter?i.isAfter(a):u.isBefore?i.isBefore(a):u.direction==="before"?i.isBetween(s[0],a,"day","[]"):i.isBetween(a,s[0],u.unit,"[]")});return o?o[1]:null}}m();m();function et(e){if(typeof e=="string"||typeof e=="number")return""+e;let t="";if(Array.isArray(e))for(let r=0,n;r{n.has(t)&&(n.delete(t),n.size===0&&r.push(i))}),r.forEach(n=>{this.idScopes.delete(n),this.scrollStates.delete(n)})}};var kt=L.createContext(null),mr=L.createContext(""),sa=L.createContext(null),la=L.createContext(new oa),Eo=L.createContext(null),xo=L.createContext(null);m();m();m();var Pp={bottom:0,height:0,left:0,right:0,top:0,width:0,x:0,y:0,toJSON(){}},Fp=[0,0,0,0];function Xe(e){return e===void 0?0:e}function ko(e,t,r,n){return[e.left+Xe(t==null?void 0:t.x)+Xe(r==null?void 0:r.x)-Xe(n==null?void 0:n.x),e.top+Xe(t==null?void 0:t.y)+Xe(r==null?void 0:r.y)-Xe(n==null?void 0:n.y),e.left+e.width+Xe(t==null?void 0:t.x)+Xe(r==null?void 0:r.x)-Xe(n==null?void 0:n.x),e.top+e.height+Xe(t==null?void 0:t.y)+Xe(r==null?void 0:r.y)-Xe(n==null?void 0:n.y)]}function Wl(e,t,r,n){let i=ko(e,t,r,null);return n==="top"?(i[3]=i[1]+35,i):n==="right"?(i[0]=i[0]+e.width-35,i):n==="bottom"?(i[1]=i[1]+e.height-35,i):(i[2]=i[0]+35,i)}function So(e,t,r,n,i,a){return[e-Xe(i==null?void 0:i.x)-Xe(a==null?void 0:a.x),t-Xe(i==null?void 0:i.y)-Xe(a==null?void 0:a.y),r-Xe(i==null?void 0:i.x)-Xe(a==null?void 0:a.x),n-Xe(i==null?void 0:i.y)-Xe(a==null?void 0:a.y)]}var ok=e=>sk(e,(t,r)=>t{if(o.entityId===r)return 1/0;let s=o.getHitbox(),u=Op(s)[0],l=lk(t),c=o.getData().sortAxis==="horizontal"?"x":"y",d=l[c]>n[c]?1e3:0;return di(u,n)+d}),a=ok(i);return e[a]?e[a]:null}function jl(e){let{scrollLeft:t,scrollTop:r,scrollWidth:n,scrollHeight:i,offsetWidth:a,offsetHeight:o}=e,s=t,u=r,l=n-a,c=i-o;return{x:s,y:u,maxX:Math.max(l,0),maxY:Math.max(c,0)}}function Rp(e,t,r){let n=Math.trunc((r.x-t.x)*100)/100,i=Math.trunc((r.y-t.y)*100)/100;return[e[0]+n,e[1]+i,e[2]+n,e[3]+i]}function ql(e,t=[0,0,0,0]){let r=e[0]-t[0],n=e[1]-t[1],i=e[2]+t[2],o=e[3]+t[3]-n;return{width:i-r,height:o}}var Yl=class{constructor(t,r,n,i,a,o,s,u,l,c){this.isVisible=!1;this.id=n,this.instanceId=Ae(),this.scopeId=r,this.entityId=`${r}-${n}`,this.dndManager=t,this.index=i,this.children=new Map,this.parent=a,this.scrollParent=o,this.getEntityData=c,this.sortManager=s,this.pollForNodes(u,l)}pollForNodes(t,r){!t()||!r()?this.dndManager.win.requestAnimationFrame(()=>this.pollForNodes(t,r)):this.initNodes(t(),r())}initNodes(t,r){var n,i;if(this.entityNode=t,this.measureNode=r,r.dataset.hitboxid=this.entityId,(n=this.sortManager)==null||n.registerSortable(this.entityId,this.getEntity(Pp),t,r),this.scrollParent)this.scrollParent.registerObserverHandler(this.entityId,r,a=>{var s,u;let o=Ze(a.target);if(a.isIntersecting){let l=this.getEntity(a.boundingClientRect);(s=this.parent)==null||s.children.set(this.entityId,{entity:l,manager:this}),this.dndManager.observeResize(r),(!this.parent||this.parent.isVisible)&&(this.dndManager.registerHitboxEntity(this.entityId,l,o),this.children.forEach((c,d)=>{this.dndManager.registerHitboxEntity(d,c.entity,o)}),this.setVisibility(!0))}else this.dndManager.unregisterHitboxEntity(this.entityId,o),this.children.forEach((l,c)=>{this.dndManager.unregisterHitboxEntity(c,o)}),(u=this.parent)==null||u.children.delete(this.entityId),this.dndManager.unobserveResize(r),this.setVisibility(!1)});else{let a=this.getEntity(r.getBoundingClientRect());this.dndManager.observeResize(r),this.dndManager.registerHitboxEntity(this.entityId,a,Ze(t)),(i=this.parent)==null||i.children.set(this.entityId,{entity:a,manager:this}),this.setVisibility(!0)}}setVisibility(t){this.isVisible=t,this.children.forEach(r=>{r.manager.setVisibility(t)})}destroy(){var t,r,n;this.dndManager.unobserveResize(this.measureNode),(t=this.sortManager)==null||t.unregisterSortable(this.entityId),(r=this.scrollParent)==null||r.unregisterObserverHandler(this.entityId,this.measureNode),this.entityNode&&this.dndManager.unregisterHitboxEntity(this.entityId,Ze(this.entityNode)),(n=this.parent)==null||n.children.delete(this.entityId)}getPath(){var t;return[...((t=this.parent)==null?void 0:t.getPath())||[],this.index]}getEntity(t){var n,i;let r=this;return{scopeId:this.scopeId,entityId:this.entityId,initial:ko(t,((n=r.scrollParent)==null?void 0:n.scrollState)||on,((i=r.scrollParent)==null?void 0:i.getScrollShift())||Pn,null),getParentScrollState(){var a;return((a=r.scrollParent)==null?void 0:a.scrollState)||on},getParentScrollShift(){var a;return((a=r.scrollParent)==null?void 0:a.getScrollShift())||Pn},recalcInitial(){var a,o;this.initial=ko(r.measureNode.getBoundingClientRect(),((a=r.scrollParent)==null?void 0:a.scrollState)||on,((o=r.scrollParent)==null?void 0:o.getScrollShift())||Pn,null)},getHitbox(){return So(this.initial[0],this.initial[1],this.initial[2],this.initial[3],this.getParentScrollState(),this.getParentScrollShift())},getPath(){return r.getPath()},getData(){var a;return{...r.getEntityData(),sortAxis:(a=r.sortManager)==null?void 0:a.axis,win:Ze(r.measureNode)}}}}};var gr=L.memo(function({id:t,index:r,elementRef:n,measureRef:i,children:a,data:o}){let s=L.useContext(kt),u=L.useContext(Eo),l=L.useContext(mr),c=L.useContext(xo),d=L.useContext(sa),f=L.useRef(o),p=L.useRef();f.current=o;let g=L.useMemo(()=>{if(s){p.current&&p.current.destroy();let y=new Yl(s,l,t,r,c,d,u,()=>n.current,()=>i.current,()=>f.current);return p.current=y,y}return null},[t,r,s,l,c,d,u]);return L.useEffect(()=>()=>{var y;return(y=p.current)==null?void 0:y.destroy()},[]),g?h(xo.Provider,{value:g},a):null});function Wn(e){let t=L.useContext(xo),r=(t==null?void 0:t.getPath())||[];return e!==void 0&&r.push(e),L.useMemo(()=>r,r)}m();var Fu=me(Jh());m();m();m();m();var ym=me(vm()),{__extends:WM,__assign:zM,__rest:jM,__decorate:qM,__param:YM,__metadata:JM,__awaiter:Ei,__generator:xi,__exportStar:GM,__createBinding:QM,__values:XM,__read:ZM,__spread:bm,__spreadArrays:eI,__spreadArray:tI,__await:nI,__asyncGenerator:rI,__asyncDelegator:iI,__asyncValues:aI,__makeTemplateObject:oI,__importStar:sI,__importDefault:lI,__classPrivateFieldGet:cI,__classPrivateFieldSet:uI,__classPrivateFieldIn:dI}=ym.default;m();var _0=new Map([["avi","video/avi"],["gif","image/gif"],["ico","image/x-icon"],["jpeg","image/jpeg"],["jpg","image/jpeg"],["mkv","video/x-matroska"],["mov","video/quicktime"],["mp4","video/mp4"],["pdf","application/pdf"],["png","image/png"],["zip","application/zip"],["doc","application/msword"],["docx","application/vnd.openxmlformats-officedocument.wordprocessingml.document"]]);function ma(e,t){var r=C0(e);if(typeof r.path!="string"){var n=e.webkitRelativePath;Object.defineProperty(r,"path",{value:typeof t=="string"?t:typeof n=="string"&&n.length>0?n:e.name,writable:!1,configurable:!1,enumerable:!0})}return r}function C0(e){var t=e.name,r=t&&t.lastIndexOf(".")!==-1;if(r&&!e.type){var n=t.split(".").pop().toLowerCase(),i=_0.get(n);i&&Object.defineProperty(e,"type",{value:i,writable:!1,configurable:!1,enumerable:!0})}return e}var D0=[".DS_Store","Thumbs.db"];function hc(e){return Ei(this,void 0,void 0,function(){return xi(this,function(t){return[2,T0(e)&&e.dataTransfer?A0(e.dataTransfer,e.type):M0(e)]})})}function T0(e){return!!e.dataTransfer}function M0(e){var t=I0(e.target)?e.target.files?mc(e.target.files):[]:[];return t.map(function(r){return ma(r)})}function I0(e){return e!==null}function A0(e,t){return Ei(this,void 0,void 0,function(){var r,n;return xi(this,function(i){switch(i.label){case 0:return e.items?(r=mc(e.items).filter(function(a){return a.kind==="file"}),t!=="drop"?[2,r]:[4,Promise.all(r.map(L0))]):[3,2];case 1:return n=i.sent(),[2,wm(Em(n))];case 2:return[2,wm(mc(e.files).map(function(a){return ma(a)}))]}})})}function wm(e){return e.filter(function(t){return D0.indexOf(t.name)===-1})}function mc(e){for(var t=[],r=0;r".",rangeSeparator:" - ",weekAbbreviation:"Hf",scrollTitle:"Art\u0131rmaq \xFC\xE7\xFCn s\xFCr\xFC\u015Fd\xFCr\xFCn",toggleTitle:"A\xE7 / Ba\u011Fla",amPM:["G\u018F","GS"],time_24hr:!0};qm.l10ns.az=xc;var CI=qm.l10ns;m();var Ym=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},kc={weekdays:{shorthand:["\u041D\u0434","\u041F\u043D","\u0410\u045E","\u0421\u0440","\u0427\u0446","\u041F\u0442","\u0421\u0431"],longhand:["\u041D\u044F\u0434\u0437\u0435\u043B\u044F","\u041F\u0430\u043D\u044F\u0434\u0437\u0435\u043B\u0430\u043A","\u0410\u045E\u0442\u043E\u0440\u0430\u043A","\u0421\u0435\u0440\u0430\u0434\u0430","\u0427\u0430\u0446\u0432\u0435\u0440","\u041F\u044F\u0442\u043D\u0456\u0446\u0430","\u0421\u0443\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u0421\u0442\u0443","\u041B\u044E\u0442","\u0421\u0430\u043A","\u041A\u0440\u0430","\u0422\u0440\u0430","\u0427\u044D\u0440","\u041B\u0456\u043F","\u0416\u043D\u0456","\u0412\u0435\u0440","\u041A\u0430\u0441","\u041B\u0456\u0441","\u0421\u043D\u0435"],longhand:["\u0421\u0442\u0443\u0434\u0437\u0435\u043D\u044C","\u041B\u044E\u0442\u044B","\u0421\u0430\u043A\u0430\u0432\u0456\u043A","\u041A\u0440\u0430\u0441\u0430\u0432\u0456\u043A","\u0422\u0440\u0430\u0432\u0435\u043D\u044C","\u0427\u044D\u0440\u0432\u0435\u043D\u044C","\u041B\u0456\u043F\u0435\u043D\u044C","\u0416\u043D\u0456\u0432\u0435\u043D\u044C","\u0412\u0435\u0440\u0430\u0441\u0435\u043D\u044C","\u041A\u0430\u0441\u0442\u0440\u044B\u0447\u043D\u0456\u043A","\u041B\u0456\u0441\u0442\u0430\u043F\u0430\u0434","\u0421\u043D\u0435\u0436\u0430\u043D\u044C"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u0422\u044B\u0434.",scrollTitle:"\u041F\u0440\u0430\u043A\u0440\u0443\u0446\u0456\u0446\u0435 \u0434\u043B\u044F \u043F\u0430\u0432\u0435\u043B\u0456\u0447\u044D\u043D\u043D\u044F",toggleTitle:"\u041D\u0430\u0446\u0456\u0441\u043D\u0456\u0446\u0435 \u0434\u043B\u044F \u043F\u0435\u0440\u0430\u043A\u043B\u044E\u0447\u044D\u043D\u043D\u044F",amPM:["\u0414\u041F","\u041F\u041F"],yearAriaLabel:"\u0413\u043E\u0434",time_24hr:!0};Ym.l10ns.be=kc;var TI=Ym.l10ns;m();var Jm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Sc={weekdays:{shorthand:["\u041D\u0434","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],longhand:["\u041D\u0435\u0434\u0435\u043B\u044F","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u044F\u0434\u0430","\u0427\u0435\u0442\u0432\u044A\u0440\u0442\u044A\u043A","\u041F\u0435\u0442\u044A\u043A","\u0421\u044A\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u042F\u043D\u0443","\u0424\u0435\u0432","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440","\u041C\u0430\u0439","\u042E\u043D\u0438","\u042E\u043B\u0438","\u0410\u0432\u0433","\u0421\u0435\u043F","\u041E\u043A\u0442","\u041D\u043E\u0435","\u0414\u0435\u043A"],longhand:["\u042F\u043D\u0443\u0430\u0440\u0438","\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0438\u043B","\u041C\u0430\u0439","\u042E\u043D\u0438","\u042E\u043B\u0438","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043F\u0442\u0435\u043C\u0432\u0440\u0438","\u041E\u043A\u0442\u043E\u043C\u0432\u0440\u0438","\u041D\u043E\u0435\u043C\u0432\u0440\u0438","\u0414\u0435\u043A\u0435\u043C\u0432\u0440\u0438"]},time_24hr:!0,firstDayOfWeek:1};Jm.l10ns.bg=Sc;var II=Jm.l10ns;m();var Gm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},_c={weekdays:{shorthand:["\u09B0\u09AC\u09BF","\u09B8\u09CB\u09AE","\u09AE\u0999\u09CD\u0997\u09B2","\u09AC\u09C1\u09A7","\u09AC\u09C3\u09B9\u09B8\u09CD\u09AA\u09A4\u09BF","\u09B6\u09C1\u0995\u09CD\u09B0","\u09B6\u09A8\u09BF"],longhand:["\u09B0\u09AC\u09BF\u09AC\u09BE\u09B0","\u09B8\u09CB\u09AE\u09AC\u09BE\u09B0","\u09AE\u0999\u09CD\u0997\u09B2\u09AC\u09BE\u09B0","\u09AC\u09C1\u09A7\u09AC\u09BE\u09B0","\u09AC\u09C3\u09B9\u09B8\u09CD\u09AA\u09A4\u09BF\u09AC\u09BE\u09B0","\u09B6\u09C1\u0995\u09CD\u09B0\u09AC\u09BE\u09B0","\u09B6\u09A8\u09BF\u09AC\u09BE\u09B0"]},months:{shorthand:["\u099C\u09BE\u09A8\u09C1","\u09AB\u09C7\u09AC\u09CD\u09B0\u09C1","\u09AE\u09BE\u09B0\u09CD\u099A","\u098F\u09AA\u09CD\u09B0\u09BF\u09B2","\u09AE\u09C7","\u099C\u09C1\u09A8","\u099C\u09C1\u09B2\u09BE\u0987","\u0986\u0997","\u09B8\u09C7\u09AA\u09CD\u099F\u09C7","\u0985\u0995\u09CD\u099F\u09CB","\u09A8\u09AD\u09C7","\u09A1\u09BF\u09B8\u09C7"],longhand:["\u099C\u09BE\u09A8\u09C1\u09AF\u09BC\u09BE\u09B0\u09C0","\u09AB\u09C7\u09AC\u09CD\u09B0\u09C1\u09AF\u09BC\u09BE\u09B0\u09C0","\u09AE\u09BE\u09B0\u09CD\u099A","\u098F\u09AA\u09CD\u09B0\u09BF\u09B2","\u09AE\u09C7","\u099C\u09C1\u09A8","\u099C\u09C1\u09B2\u09BE\u0987","\u0986\u0997\u09B8\u09CD\u099F","\u09B8\u09C7\u09AA\u09CD\u099F\u09C7\u09AE\u09CD\u09AC\u09B0","\u0985\u0995\u09CD\u099F\u09CB\u09AC\u09B0","\u09A8\u09AD\u09C7\u09AE\u09CD\u09AC\u09B0","\u09A1\u09BF\u09B8\u09C7\u09AE\u09CD\u09AC\u09B0"]}};Gm.l10ns.bn=_c;var LI=Gm.l10ns;m();var Qm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Cc={firstDayOfWeek:1,weekdays:{shorthand:["Ned","Pon","Uto","Sri","\u010Cet","Pet","Sub"],longhand:["Nedjelja","Ponedjeljak","Utorak","Srijeda","\u010Cetvrtak","Petak","Subota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Mart","April","Maj","Juni","Juli","Avgust","Septembar","Oktobar","Novembar","Decembar"]},time_24hr:!0};Qm.l10ns.bs=Cc;var FI=Qm.l10ns;m();var Dc=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Go={weekdays:{shorthand:["Dg","Dl","Dt","Dc","Dj","Dv","Ds"],longhand:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"]},months:{shorthand:["Gen","Febr","Mar\xE7","Abr","Maig","Juny","Jul","Ag","Set","Oct","Nov","Des"],longhand:["Gener","Febrer","Mar\xE7","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"]},ordinal:e=>{let t=e%100;if(t>3&&t<21)return"\xE8";switch(t%10){case 1:return"r";case 2:return"n";case 3:return"r";case 4:return"t";default:return"\xE8"}},firstDayOfWeek:1,rangeSeparator:" a ",time_24hr:!0};Dc.l10ns.cat=Dc.l10ns.ca=Go;var OI=Dc.l10ns;m();var Xm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Tc={weekdays:{shorthand:["\u06CC\u06D5\u06A9\u0634\u06D5\u0645\u0645\u06D5","\u062F\u0648\u0648\u0634\u06D5\u0645\u0645\u06D5","\u0633\u06CE\u0634\u06D5\u0645\u0645\u06D5","\u0686\u0648\u0627\u0631\u0634\u06D5\u0645\u0645\u06D5","\u067E\u06CE\u0646\u062C\u0634\u06D5\u0645\u0645\u06D5","\u0647\u06D5\u06CC\u0646\u06CC","\u0634\u06D5\u0645\u0645\u06D5"],longhand:["\u06CC\u06D5\u06A9\u0634\u06D5\u0645\u0645\u06D5","\u062F\u0648\u0648\u0634\u06D5\u0645\u0645\u06D5","\u0633\u06CE\u0634\u06D5\u0645\u0645\u06D5","\u0686\u0648\u0627\u0631\u0634\u06D5\u0645\u0645\u06D5","\u067E\u06CE\u0646\u062C\u0634\u06D5\u0645\u0645\u06D5","\u0647\u06D5\u06CC\u0646\u06CC","\u0634\u06D5\u0645\u0645\u06D5"]},months:{shorthand:["\u0695\u06CE\u0628\u06D5\u0646\u062F\u0627\u0646","\u0695\u06D5\u0634\u06D5\u0645\u06D5","\u0646\u06D5\u0648\u0631\u06C6\u0632","\u06AF\u0648\u06B5\u0627\u0646","\u062C\u06C6\u0632\u06D5\u0631\u062F\u0627\u0646","\u067E\u0648\u0648\u0634\u067E\u06D5\u0695","\u06AF\u06D5\u0644\u0627\u0648\u06CE\u0698","\u062E\u06D5\u0631\u0645\u0627\u0646\u0627\u0646","\u0695\u06D5\u0632\u0628\u06D5\u0631","\u06AF\u06D5\u06B5\u0627\u0695\u06CE\u0632\u0627\u0646","\u0633\u06D5\u0631\u0645\u0627\u0648\u06D5\u0632","\u0628\u06D5\u0641\u0631\u0627\u0646\u0628\u0627\u0631"],longhand:["\u0695\u06CE\u0628\u06D5\u0646\u062F\u0627\u0646","\u0695\u06D5\u0634\u06D5\u0645\u06D5","\u0646\u06D5\u0648\u0631\u06C6\u0632","\u06AF\u0648\u06B5\u0627\u0646","\u062C\u06C6\u0632\u06D5\u0631\u062F\u0627\u0646","\u067E\u0648\u0648\u0634\u067E\u06D5\u0695","\u06AF\u06D5\u0644\u0627\u0648\u06CE\u0698","\u062E\u06D5\u0631\u0645\u0627\u0646\u0627\u0646","\u0695\u06D5\u0632\u0628\u06D5\u0631","\u06AF\u06D5\u06B5\u0627\u0695\u06CE\u0632\u0627\u0646","\u0633\u06D5\u0631\u0645\u0627\u0648\u06D5\u0632","\u0628\u06D5\u0641\u0631\u0627\u0646\u0628\u0627\u0631"]},firstDayOfWeek:6,ordinal:()=>""};Xm.l10ns.ckb=Tc;var HI=Xm.l10ns;m();var Zm=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Mc={weekdays:{shorthand:["Ne","Po","\xDAt","St","\u010Ct","P\xE1","So"],longhand:["Ned\u011Ble","Pond\u011Bl\xED","\xDAter\xFD","St\u0159eda","\u010Ctvrtek","P\xE1tek","Sobota"]},months:{shorthand:["Led","\xDAn","B\u0159e","Dub","Kv\u011B","\u010Cer","\u010Cvc","Srp","Z\xE1\u0159","\u0158\xEDj","Lis","Pro"],longhand:["Leden","\xDAnor","B\u0159ezen","Duben","Kv\u011Bten","\u010Cerven","\u010Cervenec","Srpen","Z\xE1\u0159\xED","\u0158\xEDjen","Listopad","Prosinec"]},firstDayOfWeek:1,ordinal:function(){return"."},rangeSeparator:" do ",weekAbbreviation:"T\xFDd.",scrollTitle:"Rolujte pro zm\u011Bnu",toggleTitle:"P\u0159epnout dopoledne/odpoledne",amPM:["dop.","odp."],yearAriaLabel:"Rok",time_24hr:!0};Zm.l10ns.cs=Mc;var KI=Zm.l10ns;m();var eg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Ic={weekdays:{shorthand:["Sul","Llun","Maw","Mer","Iau","Gwe","Sad"],longhand:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"]},months:{shorthand:["Ion","Chwef","Maw","Ebr","Mai","Meh","Gorff","Awst","Medi","Hyd","Tach","Rhag"],longhand:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"]},firstDayOfWeek:1,ordinal:e=>e===1?"af":e===2?"ail":e===3||e===4?"ydd":e===5||e===6?"ed":e>=7&&e<=10||e==12||e==15||e==18||e==20?"fed":e==11||e==13||e==14||e==16||e==17||e==19?"eg":e>=21&&e<=39?"ain":"",time_24hr:!0};eg.l10ns.cy=Ic;var UI=eg.l10ns;m();var tg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Ac={weekdays:{shorthand:["s\xF8n","man","tir","ons","tors","fre","l\xF8r"],longhand:["s\xF8ndag","mandag","tirsdag","onsdag","torsdag","fredag","l\xF8rdag"]},months:{shorthand:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],longhand:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"]},ordinal:()=>".",firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"uge",time_24hr:!0};tg.l10ns.da=Ac;var WI=tg.l10ns;m();var ng=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Lc={weekdays:{shorthand:["So","Mo","Di","Mi","Do","Fr","Sa"],longhand:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"]},months:{shorthand:["Jan","Feb","M\xE4r","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],longhand:["Januar","Februar","M\xE4rz","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"]},firstDayOfWeek:1,weekAbbreviation:"KW",rangeSeparator:" bis ",scrollTitle:"Zum \xC4ndern scrollen",toggleTitle:"Zum Umschalten klicken",time_24hr:!0};ng.l10ns.de=Lc;var jI=ng.l10ns;m();var Ur={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:e=>{let t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},Qo=Ur;m();var rg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Pc={firstDayOfWeek:1,rangeSeparator:" \u011Dis ",weekAbbreviation:"Sem",scrollTitle:"Rulumu por pligrandigi la valoron",toggleTitle:"Klaku por \u015Dalti",weekdays:{shorthand:["Dim","Lun","Mar","Mer","\u0134a\u016D","Ven","Sab"],longhand:["diman\u0109o","lundo","mardo","merkredo","\u0135a\u016Ddo","vendredo","sabato"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","A\u016Dg","Sep","Okt","Nov","Dec"],longhand:["januaro","februaro","marto","aprilo","majo","junio","julio","a\u016Dgusto","septembro","oktobro","novembro","decembro"]},ordinal:()=>"-a",time_24hr:!0};rg.l10ns.eo=Pc;var JI=rg.l10ns;m();var ig=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Fc={weekdays:{shorthand:["Dom","Lun","Mar","Mi\xE9","Jue","Vie","S\xE1b"],longhand:["Domingo","Lunes","Martes","Mi\xE9rcoles","Jueves","Viernes","S\xE1bado"]},months:{shorthand:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],longhand:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"]},ordinal:()=>"\xBA",firstDayOfWeek:1,rangeSeparator:" a ",time_24hr:!0};ig.l10ns.es=Fc;var QI=ig.l10ns;m();var ag=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Nc={weekdays:{shorthand:["P","E","T","K","N","R","L"],longhand:["P\xFChap\xE4ev","Esmasp\xE4ev","Teisip\xE4ev","Kolmap\xE4ev","Neljap\xE4ev","Reede","Laup\xE4ev"]},months:{shorthand:["Jaan","Veebr","M\xE4rts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],longhand:["Jaanuar","Veebruar","M\xE4rts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"]},firstDayOfWeek:1,ordinal:function(){return"."},weekAbbreviation:"N\xE4d",rangeSeparator:" kuni ",scrollTitle:"Keri, et suurendada",toggleTitle:"Kl\xF5psa, et vahetada",time_24hr:!0};ag.l10ns.et=Nc;var ZI=ag.l10ns;m();var og=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Oc={weekdays:{shorthand:["\u06CC\u06A9","\u062F\u0648","\u0633\u0647","\u0686\u0647\u0627\u0631","\u067E\u0646\u062C","\u062C\u0645\u0639\u0647","\u0634\u0646\u0628\u0647"],longhand:["\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647","\u062F\u0648\u0634\u0646\u0628\u0647","\u0633\u0647\u200C\u0634\u0646\u0628\u0647","\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647","\u067E\u0646\u0686\u200C\u0634\u0646\u0628\u0647","\u062C\u0645\u0639\u0647","\u0634\u0646\u0628\u0647"]},months:{shorthand:["\u0698\u0627\u0646\u0648\u06CC\u0647","\u0641\u0648\u0631\u06CC\u0647","\u0645\u0627\u0631\u0633","\u0622\u0648\u0631\u06CC\u0644","\u0645\u0647","\u0698\u0648\u0626\u0646","\u0698\u0648\u0626\u06CC\u0647","\u0627\u0648\u062A","\u0633\u067E\u062A\u0627\u0645\u0628\u0631","\u0627\u06A9\u062A\u0628\u0631","\u0646\u0648\u0627\u0645\u0628\u0631","\u062F\u0633\u0627\u0645\u0628\u0631"],longhand:["\u0698\u0627\u0646\u0648\u06CC\u0647","\u0641\u0648\u0631\u06CC\u0647","\u0645\u0627\u0631\u0633","\u0622\u0648\u0631\u06CC\u0644","\u0645\u0647","\u0698\u0648\u0626\u0646","\u0698\u0648\u0626\u06CC\u0647","\u0627\u0648\u062A","\u0633\u067E\u062A\u0627\u0645\u0628\u0631","\u0627\u06A9\u062A\u0628\u0631","\u0646\u0648\u0627\u0645\u0628\u0631","\u062F\u0633\u0627\u0645\u0628\u0631"]},firstDayOfWeek:6,ordinal:()=>""};og.l10ns.fa=Oc;var tA=og.l10ns;m();var sg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Rc={firstDayOfWeek:1,weekdays:{shorthand:["su","ma","ti","ke","to","pe","la"],longhand:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauantai"]},months:{shorthand:["tammi","helmi","maalis","huhti","touko","kes\xE4","hein\xE4","elo","syys","loka","marras","joulu"],longhand:["tammikuu","helmikuu","maaliskuu","huhtikuu","toukokuu","kes\xE4kuu","hein\xE4kuu","elokuu","syyskuu","lokakuu","marraskuu","joulukuu"]},ordinal:()=>".",time_24hr:!0};sg.l10ns.fi=Rc;var rA=sg.l10ns;m();var lg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Hc={weekdays:{shorthand:["Sun","M\xE1n","T\xFDs","Mik","H\xF3s","Fr\xED","Ley"],longhand:["Sunnudagur","M\xE1nadagur","T\xFDsdagur","Mikudagur","H\xF3sdagur","Fr\xEDggjadagur","Leygardagur"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],longhand:["Januar","Februar","Mars","Apr\xEDl","Mai","Juni","Juli","August","Septembur","Oktobur","Novembur","Desembur"]},ordinal:()=>".",firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"vika",scrollTitle:"Rulla fyri at broyta",toggleTitle:"Tr\xFDst fyri at skifta",yearAriaLabel:"\xC1r",time_24hr:!0};lg.l10ns.fo=Hc;var aA=lg.l10ns;m();var cg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Bc={firstDayOfWeek:1,weekdays:{shorthand:["dim","lun","mar","mer","jeu","ven","sam"],longhand:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"]},months:{shorthand:["janv","f\xE9vr","mars","avr","mai","juin","juil","ao\xFBt","sept","oct","nov","d\xE9c"],longhand:["janvier","f\xE9vrier","mars","avril","mai","juin","juillet","ao\xFBt","septembre","octobre","novembre","d\xE9cembre"]},ordinal:e=>e>1?"":"er",rangeSeparator:" au ",weekAbbreviation:"Sem",scrollTitle:"D\xE9filer pour augmenter la valeur",toggleTitle:"Cliquer pour basculer",time_24hr:!0};cg.l10ns.fr=Bc;var sA=cg.l10ns;m();var ug=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Kc={weekdays:{shorthand:["\u039A\u03C5","\u0394\u03B5","\u03A4\u03C1","\u03A4\u03B5","\u03A0\u03AD","\u03A0\u03B1","\u03A3\u03AC"],longhand:["\u039A\u03C5\u03C1\u03B9\u03B1\u03BA\u03AE","\u0394\u03B5\u03C5\u03C4\u03AD\u03C1\u03B1","\u03A4\u03C1\u03AF\u03C4\u03B7","\u03A4\u03B5\u03C4\u03AC\u03C1\u03C4\u03B7","\u03A0\u03AD\u03BC\u03C0\u03C4\u03B7","\u03A0\u03B1\u03C1\u03B1\u03C3\u03BA\u03B5\u03C5\u03AE","\u03A3\u03AC\u03B2\u03B2\u03B1\u03C4\u03BF"]},months:{shorthand:["\u0399\u03B1\u03BD","\u03A6\u03B5\u03B2","\u039C\u03AC\u03C1","\u0391\u03C0\u03C1","\u039C\u03AC\u03B9","\u0399\u03BF\u03CD\u03BD","\u0399\u03BF\u03CD\u03BB","\u0391\u03CD\u03B3","\u03A3\u03B5\u03C0","\u039F\u03BA\u03C4","\u039D\u03BF\u03AD","\u0394\u03B5\u03BA"],longhand:["\u0399\u03B1\u03BD\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2","\u03A6\u03B5\u03B2\u03C1\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2","\u039C\u03AC\u03C1\u03C4\u03B9\u03BF\u03C2","\u0391\u03C0\u03C1\u03AF\u03BB\u03B9\u03BF\u03C2","\u039C\u03AC\u03B9\u03BF\u03C2","\u0399\u03BF\u03CD\u03BD\u03B9\u03BF\u03C2","\u0399\u03BF\u03CD\u03BB\u03B9\u03BF\u03C2","\u0391\u03CD\u03B3\u03BF\u03C5\u03C3\u03C4\u03BF\u03C2","\u03A3\u03B5\u03C0\u03C4\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2","\u039F\u03BA\u03C4\u03CE\u03B2\u03C1\u03B9\u03BF\u03C2","\u039D\u03BF\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2","\u0394\u03B5\u03BA\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2"]},firstDayOfWeek:1,ordinal:function(){return""},weekAbbreviation:"\u0395\u03B2\u03B4",rangeSeparator:" \u03AD\u03C9\u03C2 ",scrollTitle:"\u039C\u03B5\u03C4\u03B1\u03BA\u03C5\u03BB\u03AE\u03C3\u03C4\u03B5 \u03B3\u03B9\u03B1 \u03C0\u03C1\u03BF\u03C3\u03B1\u03CD\u03BE\u03B7\u03C3\u03B7",toggleTitle:"\u039A\u03AC\u03BD\u03C4\u03B5 \u03BA\u03BB\u03B9\u03BA \u03B3\u03B9\u03B1 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AE",amPM:["\u03A0\u039C","\u039C\u039C"],yearAriaLabel:"\u03C7\u03C1\u03CC\u03BD\u03BF\u03C2",monthAriaLabel:"\u03BC\u03AE\u03BD\u03B1\u03C2",hourAriaLabel:"\u03CE\u03C1\u03B1",minuteAriaLabel:"\u03BB\u03B5\u03C0\u03C4\u03CC"};ug.l10ns.gr=Kc;var cA=ug.l10ns;m();var dg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},$c={weekdays:{shorthand:["\u05D0","\u05D1","\u05D2","\u05D3","\u05D4","\u05D5","\u05E9"],longhand:["\u05E8\u05D0\u05E9\u05D5\u05DF","\u05E9\u05E0\u05D9","\u05E9\u05DC\u05D9\u05E9\u05D9","\u05E8\u05D1\u05D9\u05E2\u05D9","\u05D7\u05DE\u05D9\u05E9\u05D9","\u05E9\u05D9\u05E9\u05D9","\u05E9\u05D1\u05EA"]},months:{shorthand:["\u05D9\u05E0\u05D5\u05F3","\u05E4\u05D1\u05E8\u05F3","\u05DE\u05E8\u05E5","\u05D0\u05E4\u05E8\u05F3","\u05DE\u05D0\u05D9","\u05D9\u05D5\u05E0\u05D9","\u05D9\u05D5\u05DC\u05D9","\u05D0\u05D5\u05D2\u05F3","\u05E1\u05E4\u05D8\u05F3","\u05D0\u05D5\u05E7\u05F3","\u05E0\u05D5\u05D1\u05F3","\u05D3\u05E6\u05DE\u05F3"],longhand:["\u05D9\u05E0\u05D5\u05D0\u05E8","\u05E4\u05D1\u05E8\u05D5\u05D0\u05E8","\u05DE\u05E8\u05E5","\u05D0\u05E4\u05E8\u05D9\u05DC","\u05DE\u05D0\u05D9","\u05D9\u05D5\u05E0\u05D9","\u05D9\u05D5\u05DC\u05D9","\u05D0\u05D5\u05D2\u05D5\u05E1\u05D8","\u05E1\u05E4\u05D8\u05DE\u05D1\u05E8","\u05D0\u05D5\u05E7\u05D8\u05D5\u05D1\u05E8","\u05E0\u05D5\u05D1\u05DE\u05D1\u05E8","\u05D3\u05E6\u05DE\u05D1\u05E8"]},rangeSeparator:" \u05D0\u05DC ",time_24hr:!0};dg.l10ns.he=$c;var dA=dg.l10ns;m();var fg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Uc={weekdays:{shorthand:["\u0930\u0935\u093F","\u0938\u094B\u092E","\u092E\u0902\u0917\u0932","\u092C\u0941\u0927","\u0917\u0941\u0930\u0941","\u0936\u0941\u0915\u094D\u0930","\u0936\u0928\u093F"],longhand:["\u0930\u0935\u093F\u0935\u093E\u0930","\u0938\u094B\u092E\u0935\u093E\u0930","\u092E\u0902\u0917\u0932\u0935\u093E\u0930","\u092C\u0941\u0927\u0935\u093E\u0930","\u0917\u0941\u0930\u0941\u0935\u093E\u0930","\u0936\u0941\u0915\u094D\u0930\u0935\u093E\u0930","\u0936\u0928\u093F\u0935\u093E\u0930"]},months:{shorthand:["\u091C\u0928","\u092B\u0930","\u092E\u093E\u0930\u094D\u091A","\u0905\u092A\u094D\u0930\u0947\u0932","\u092E\u0908","\u091C\u0942\u0928","\u091C\u0942\u0932\u093E\u0908","\u0905\u0917","\u0938\u093F\u0924","\u0905\u0915\u094D\u091F","\u0928\u0935","\u0926\u093F"],longhand:["\u091C\u0928\u0935\u0930\u0940 ","\u092B\u0930\u0935\u0930\u0940","\u092E\u093E\u0930\u094D\u091A","\u0905\u092A\u094D\u0930\u0947\u0932","\u092E\u0908","\u091C\u0942\u0928","\u091C\u0942\u0932\u093E\u0908","\u0905\u0917\u0938\u094D\u0924 ","\u0938\u093F\u0924\u092E\u094D\u092C\u0930","\u0905\u0915\u094D\u091F\u0942\u092C\u0930","\u0928\u0935\u092E\u094D\u092C\u0930","\u0926\u093F\u0938\u092E\u094D\u092C\u0930"]}};fg.l10ns.hi=Uc;var pA=fg.l10ns;m();var pg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Vc={firstDayOfWeek:1,weekdays:{shorthand:["Ned","Pon","Uto","Sri","\u010Cet","Pet","Sub"],longhand:["Nedjelja","Ponedjeljak","Utorak","Srijeda","\u010Cetvrtak","Petak","Subota"]},months:{shorthand:["Sij","Velj","O\u017Eu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],longhand:["Sije\u010Danj","Velja\u010Da","O\u017Eujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"]},time_24hr:!0};pg.l10ns.hr=Vc;var mA=pg.l10ns;m();var hg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Wc={firstDayOfWeek:1,weekdays:{shorthand:["V","H","K","Sz","Cs","P","Szo"],longhand:["Vas\xE1rnap","H\xE9tf\u0151","Kedd","Szerda","Cs\xFCt\xF6rt\xF6k","P\xE9ntek","Szombat"]},months:{shorthand:["Jan","Feb","M\xE1r","\xC1pr","M\xE1j","J\xFAn","J\xFAl","Aug","Szep","Okt","Nov","Dec"],longhand:["Janu\xE1r","Febru\xE1r","M\xE1rcius","\xC1prilis","M\xE1jus","J\xFAnius","J\xFAlius","Augusztus","Szeptember","Okt\xF3ber","November","December"]},ordinal:function(){return"."},weekAbbreviation:"H\xE9t",scrollTitle:"G\xF6rgessen",toggleTitle:"Kattintson a v\xE1lt\xE1shoz",rangeSeparator:" - ",time_24hr:!0};hg.l10ns.hu=Wc;var vA=hg.l10ns;m();var mg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},zc={weekdays:{shorthand:["\u053F\u056B\u0580","\u0535\u0580\u056F","\u0535\u0580\u0584","\u0549\u0580\u0584","\u0540\u0576\u0563","\u0548\u0582\u0580\u0562","\u0547\u0562\u0569"],longhand:["\u053F\u056B\u0580\u0561\u056F\u056B","\u0535\u056F\u0578\u0582\u0577\u0561\u0562\u0569\u056B","\u0535\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B","\u0549\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056B","\u0540\u056B\u0576\u0563\u0577\u0561\u0562\u0569\u056B","\u0548\u0582\u0580\u0562\u0561\u0569","\u0547\u0561\u0562\u0561\u0569"]},months:{shorthand:["\u0540\u0576\u057E","\u0553\u057F\u0580","\u0544\u0561\u0580","\u0531\u057A\u0580","\u0544\u0561\u0575","\u0540\u0576\u057D","\u0540\u056C\u057D","\u0555\u0563\u057D","\u054D\u0565\u057A","\u0540\u0578\u056F","\u0546\u0574\u0562","\u0534\u0565\u056F"],longhand:["\u0540\u0578\u0582\u0576\u057E\u0561\u0580","\u0553\u0565\u057F\u0580\u057E\u0561\u0580","\u0544\u0561\u0580\u057F","\u0531\u057A\u0580\u056B\u056C","\u0544\u0561\u0575\u056B\u057D","\u0540\u0578\u0582\u0576\u056B\u057D","\u0540\u0578\u0582\u056C\u056B\u057D","\u0555\u0563\u0578\u057D\u057F\u0578\u057D","\u054D\u0565\u057A\u057F\u0565\u0574\u0562\u0565\u0580","\u0540\u0578\u056F\u057F\u0565\u0574\u0562\u0565\u0580","\u0546\u0578\u0575\u0565\u0574\u0562\u0565\u0580","\u0534\u0565\u056F\u057F\u0565\u0574\u0562\u0565\u0580"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u0547\u0532\u054F",scrollTitle:"\u0548\u056C\u0578\u0580\u0565\u0584\u055D \u0574\u0565\u056E\u0561\u0581\u0576\u0565\u056C\u0578\u0582 \u0570\u0561\u0574\u0561\u0580",toggleTitle:"\u054D\u0565\u0572\u0574\u0565\u0584\u055D \u0583\u0578\u056D\u0565\u056C\u0578\u0582 \u0570\u0561\u0574\u0561\u0580",amPM:["\u0544\u053F","\u053F\u0540"],yearAriaLabel:"\u054F\u0561\u0580\u056B",monthAriaLabel:"\u0531\u0574\u056B\u057D",hourAriaLabel:"\u053A\u0561\u0574",minuteAriaLabel:"\u0550\u0578\u057A\u0565",time_24hr:!0};mg.l10ns.hy=zc;var bA=mg.l10ns;m();var gg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},jc={weekdays:{shorthand:["Min","Sen","Sel","Rab","Kam","Jum","Sab"],longhand:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agu","Sep","Okt","Nov","Des"],longhand:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"]},firstDayOfWeek:1,ordinal:()=>"",time_24hr:!0,rangeSeparator:" - "};gg.l10ns.id=jc;var EA=gg.l10ns;m();var vg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},qc={weekdays:{shorthand:["Sun","M\xE1n","\xDEri","Mi\xF0","Fim","F\xF6s","Lau"],longhand:["Sunnudagur","M\xE1nudagur","\xDEri\xF0judagur","Mi\xF0vikudagur","Fimmtudagur","F\xF6studagur","Laugardagur"]},months:{shorthand:["Jan","Feb","Mar","Apr","Ma\xED","J\xFAn","J\xFAl","\xC1g\xFA","Sep","Okt","N\xF3v","Des"],longhand:["Jan\xFAar","Febr\xFAar","Mars","Apr\xEDl","Ma\xED","J\xFAn\xED","J\xFAl\xED","\xC1g\xFAst","September","Okt\xF3ber","N\xF3vember","Desember"]},ordinal:()=>".",firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"vika",yearAriaLabel:"\xC1r",time_24hr:!0};vg.l10ns.is=qc;var kA=vg.l10ns;m();var yg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Yc={weekdays:{shorthand:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],longhand:["Domenica","Luned\xEC","Marted\xEC","Mercoled\xEC","Gioved\xEC","Venerd\xEC","Sabato"]},months:{shorthand:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],longhand:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"]},firstDayOfWeek:1,ordinal:()=>"\xB0",rangeSeparator:" al ",weekAbbreviation:"Se",scrollTitle:"Scrolla per aumentare",toggleTitle:"Clicca per cambiare",time_24hr:!0};yg.l10ns.it=Yc;var _A=yg.l10ns;m();var bg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Jc={weekdays:{shorthand:["\u65E5","\u6708","\u706B","\u6C34","\u6728","\u91D1","\u571F"],longhand:["\u65E5\u66DC\u65E5","\u6708\u66DC\u65E5","\u706B\u66DC\u65E5","\u6C34\u66DC\u65E5","\u6728\u66DC\u65E5","\u91D1\u66DC\u65E5","\u571F\u66DC\u65E5"]},months:{shorthand:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],longhand:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"]},time_24hr:!0,rangeSeparator:" \u304B\u3089 ",monthAriaLabel:"\u6708",amPM:["\u5348\u524D","\u5348\u5F8C"],yearAriaLabel:"\u5E74",hourAriaLabel:"\u6642\u9593",minuteAriaLabel:"\u5206"};bg.l10ns.ja=Jc;var DA=bg.l10ns;m();var wg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Gc={weekdays:{shorthand:["\u10D9\u10D5","\u10DD\u10E0","\u10E1\u10D0","\u10DD\u10D7","\u10EE\u10E3","\u10DE\u10D0","\u10E8\u10D0"],longhand:["\u10D9\u10D5\u10D8\u10E0\u10D0","\u10DD\u10E0\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10E1\u10D0\u10DB\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10DD\u10D7\u10EE\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10EE\u10E3\u10D7\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8","\u10DE\u10D0\u10E0\u10D0\u10E1\u10D9\u10D4\u10D5\u10D8","\u10E8\u10D0\u10D1\u10D0\u10D7\u10D8"]},months:{shorthand:["\u10D8\u10D0\u10DC","\u10D7\u10D4\u10D1","\u10DB\u10D0\u10E0","\u10D0\u10DE\u10E0","\u10DB\u10D0\u10D8","\u10D8\u10D5\u10DC","\u10D8\u10D5\u10DA","\u10D0\u10D2\u10D5","\u10E1\u10D4\u10E5","\u10DD\u10E5\u10E2","\u10DC\u10DD\u10D4","\u10D3\u10D4\u10D9"],longhand:["\u10D8\u10D0\u10DC\u10D5\u10D0\u10E0\u10D8","\u10D7\u10D4\u10D1\u10D4\u10E0\u10D5\u10D0\u10DA\u10D8","\u10DB\u10D0\u10E0\u10E2\u10D8","\u10D0\u10DE\u10E0\u10D8\u10DA\u10D8","\u10DB\u10D0\u10D8\u10E1\u10D8","\u10D8\u10D5\u10DC\u10D8\u10E1\u10D8","\u10D8\u10D5\u10DA\u10D8\u10E1\u10D8","\u10D0\u10D2\u10D5\u10D8\u10E1\u10E2\u10DD","\u10E1\u10D4\u10E5\u10E2\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8","\u10DD\u10E5\u10E2\u10DD\u10DB\u10D1\u10D4\u10E0\u10D8","\u10DC\u10DD\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8","\u10D3\u10D4\u10D9\u10D4\u10DB\u10D1\u10D4\u10E0\u10D8"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u10D9\u10D5.",scrollTitle:"\u10D3\u10D0\u10E1\u10E5\u10E0\u10DD\u10DA\u10D4\u10D7 \u10D2\u10D0\u10E1\u10D0\u10D3\u10D8\u10D3\u10D4\u10D1\u10DA\u10D0\u10D3",toggleTitle:"\u10D3\u10D0\u10D0\u10D9\u10DA\u10D8\u10D9\u10D4\u10D7 \u10D2\u10D0\u10D3\u10D0\u10E0\u10D7\u10D5\u10D8\u10E1\u10D7\u10D5\u10D8\u10E1",amPM:["AM","PM"],yearAriaLabel:"\u10EC\u10D4\u10DA\u10D8",time_24hr:!0};wg.l10ns.ka=Gc;var MA=wg.l10ns;m();var Eg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Qc={weekdays:{shorthand:["\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A\u17A0\u179F.","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"],longhand:["\u17A2\u17B6\u1791\u17B7\u178F\u17D2\u1799","\u1785\u1793\u17D2\u1791","\u17A2\u1784\u17D2\u1782\u17B6\u179A","\u1796\u17BB\u1792","\u1796\u17D2\u179A\u17A0\u179F\u17D2\u1794\u178F\u17B7\u17CD","\u179F\u17BB\u1780\u17D2\u179A","\u179F\u17C5\u179A\u17CD"]},months:{shorthand:["\u1798\u1780\u179A\u17B6","\u1780\u17BB\u1798\u17D2\u1797\u17C7","\u1798\u17B8\u1793\u17B6","\u1798\u17C1\u179F\u17B6","\u17A7\u179F\u1797\u17B6","\u1798\u17B7\u1790\u17BB\u1793\u17B6","\u1780\u1780\u17D2\u1780\u178A\u17B6","\u179F\u17B8\u17A0\u17B6","\u1780\u1789\u17D2\u1789\u17B6","\u178F\u17BB\u179B\u17B6","\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6","\u1792\u17D2\u1793\u17BC"],longhand:["\u1798\u1780\u179A\u17B6","\u1780\u17BB\u1798\u17D2\u1797\u17C7","\u1798\u17B8\u1793\u17B6","\u1798\u17C1\u179F\u17B6","\u17A7\u179F\u1797\u17B6","\u1798\u17B7\u1790\u17BB\u1793\u17B6","\u1780\u1780\u17D2\u1780\u178A\u17B6","\u179F\u17B8\u17A0\u17B6","\u1780\u1789\u17D2\u1789\u17B6","\u178F\u17BB\u179B\u17B6","\u179C\u17B7\u1785\u17D2\u1786\u17B7\u1780\u17B6","\u1792\u17D2\u1793\u17BC"]},ordinal:()=>"",firstDayOfWeek:1,rangeSeparator:" \u178A\u179B\u17CB ",weekAbbreviation:"\u179F\u1794\u17D2\u178F\u17B6\u17A0\u17CD",scrollTitle:"\u179A\u17C6\u1780\u17B7\u179B\u178A\u17BE\u1798\u17D2\u1794\u17B8\u1794\u1784\u17D2\u1780\u17BE\u1793",toggleTitle:"\u1785\u17BB\u1785\u178A\u17BE\u1798\u17D2\u1794\u17B8\u1795\u17D2\u179B\u17B6\u179F\u17CB\u1794\u17D2\u178A\u17BC\u179A",yearAriaLabel:"\u1786\u17D2\u1793\u17B6\u17C6",time_24hr:!0};Eg.l10ns.km=Qc;var AA=Eg.l10ns;m();var xg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Xc={weekdays:{shorthand:["\uC77C","\uC6D4","\uD654","\uC218","\uBAA9","\uAE08","\uD1A0"],longhand:["\uC77C\uC694\uC77C","\uC6D4\uC694\uC77C","\uD654\uC694\uC77C","\uC218\uC694\uC77C","\uBAA9\uC694\uC77C","\uAE08\uC694\uC77C","\uD1A0\uC694\uC77C"]},months:{shorthand:["1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"],longhand:["1\uC6D4","2\uC6D4","3\uC6D4","4\uC6D4","5\uC6D4","6\uC6D4","7\uC6D4","8\uC6D4","9\uC6D4","10\uC6D4","11\uC6D4","12\uC6D4"]},ordinal:()=>"\uC77C",rangeSeparator:" ~ ",amPM:["\uC624\uC804","\uC624\uD6C4"]};xg.l10ns.ko=Xc;var PA=xg.l10ns;m();var kg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Zc={weekdays:{shorthand:["\u0416\u0441","\u0414\u0441","\u0421c","\u0421\u0440","\u0411\u0441","\u0416\u043C","\u0421\u0431"],longhand:["\u0416\u0435\u043A\u0441\u0435\u043D\u0431i","\u0414\u04AF\u0439\u0441\u0435\u043D\u0431i","\u0421\u0435\u0439\u0441\u0435\u043D\u0431i","\u0421\u04D9\u0440\u0441\u0435\u043D\u0431i","\u0411\u0435\u0439\u0441\u0435\u043D\u0431i","\u0416\u04B1\u043C\u0430","\u0421\u0435\u043D\u0431i"]},months:{shorthand:["\u049A\u0430\u04A3","\u0410\u049B\u043F","\u041D\u0430\u0443","\u0421\u04D9\u0443","\u041C\u0430\u043C","\u041C\u0430\u0443","\u0428i\u043B","\u0422\u0430\u043C","\u049A\u044B\u0440","\u049A\u0430\u0437","\u049A\u0430\u0440","\u0416\u0435\u043B"],longhand:["\u049A\u0430\u04A3\u0442\u0430\u0440","\u0410\u049B\u043F\u0430\u043D","\u041D\u0430\u0443\u0440\u044B\u0437","\u0421\u04D9\u0443i\u0440","\u041C\u0430\u043C\u044B\u0440","\u041C\u0430\u0443\u0441\u044B\u043C","\u0428i\u043B\u0434\u0435","\u0422\u0430\u043C\u044B\u0437","\u049A\u044B\u0440\u043A\u04AF\u0439\u0435\u043A","\u049A\u0430\u0437\u0430\u043D","\u049A\u0430\u0440\u0430\u0448\u0430","\u0416\u0435\u043B\u0442\u043E\u049B\u0441\u0430\u043D"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u0410\u043F\u0442\u0430",scrollTitle:"\u04AE\u043B\u043A\u0435\u0439\u0442\u0443 \u04AF\u0448\u0456\u043D \u0430\u0439\u043D\u0430\u043B\u0434\u044B\u0440\u044B\u04A3\u044B\u0437",toggleTitle:"\u0410\u0443\u044B\u0441\u0442\u044B\u0440\u0443 \u04AF\u0448\u0456\u043D \u0431\u0430\u0441\u044B\u04A3\u044B\u0437",amPM:["\u0422\u0414","\u0422\u041A"],yearAriaLabel:"\u0416\u044B\u043B"};kg.l10ns.kz=Zc;var NA=kg.l10ns;m();var Sg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},eu={weekdays:{shorthand:["S","Pr","A","T","K","Pn","\u0160"],longhand:["Sekmadienis","Pirmadienis","Antradienis","Tre\u010Diadienis","Ketvirtadienis","Penktadienis","\u0160e\u0161tadienis"]},months:{shorthand:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rgp","Rgs","Spl","Lap","Grd"],longhand:["Sausis","Vasaris","Kovas","Balandis","Gegu\u017E\u0117","Bir\u017Eelis","Liepa","Rugpju\u0304tis","Rugse\u0307jis","Spalis","Lapkritis","Gruodis"]},firstDayOfWeek:1,ordinal:function(){return"-a"},rangeSeparator:" iki ",weekAbbreviation:"Sav",scrollTitle:"Keisti laik\u0105 pel\u0117s rateliu",toggleTitle:"Perjungti laiko format\u0105",time_24hr:!0};Sg.l10ns.lt=eu;var RA=Sg.l10ns;m();var _g=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},tu={firstDayOfWeek:1,weekdays:{shorthand:["Sv","Pr","Ot","Tr","Ce","Pk","Se"],longhand:["Sv\u0113tdiena","Pirmdiena","Otrdiena","Tre\u0161diena","Ceturtdiena","Piektdiena","Sestdiena"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mai","J\u016Bn","J\u016Bl","Aug","Sep","Okt","Nov","Dec"],longhand:["Janv\u0101ris","Febru\u0101ris","Marts","Apr\u012Blis","Maijs","J\u016Bnijs","J\u016Blijs","Augusts","Septembris","Oktobris","Novembris","Decembris"]},rangeSeparator:" l\u012Bdz ",time_24hr:!0};_g.l10ns.lv=tu;var BA=_g.l10ns;m();var Cg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},nu={weekdays:{shorthand:["\u041D\u0435","\u041F\u043E","\u0412\u0442","\u0421\u0440","\u0427\u0435","\u041F\u0435","\u0421\u0430"],longhand:["\u041D\u0435\u0434\u0435\u043B\u0430","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0440\u0442\u043E\u043A","\u041F\u0435\u0442\u043E\u043A","\u0421\u0430\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u0408\u0430\u043D","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0458","\u0408\u0443\u043D","\u0408\u0443\u043B","\u0410\u0432\u0433","\u0421\u0435\u043F","\u041E\u043A\u0442","\u041D\u043E\u0435","\u0414\u0435\u043A"],longhand:["\u0408\u0430\u043D\u0443\u0430\u0440\u0438","\u0424\u0435\u0432\u0440\u0443\u0430\u0440\u0438","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0438\u043B","\u041C\u0430\u0458","\u0408\u0443\u043D\u0438","\u0408\u0443\u043B\u0438","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043F\u0442\u0435\u043C\u0432\u0440\u0438","\u041E\u043A\u0442\u043E\u043C\u0432\u0440\u0438","\u041D\u043E\u0435\u043C\u0432\u0440\u0438","\u0414\u0435\u043A\u0435\u043C\u0432\u0440\u0438"]},firstDayOfWeek:1,weekAbbreviation:"\u041D\u0435\u0434.",rangeSeparator:" \u0434\u043E ",time_24hr:!0};Cg.l10ns.mk=nu;var $A=Cg.l10ns;m();var Dg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},ru={firstDayOfWeek:1,weekdays:{shorthand:["\u0414\u0430","\u041C\u044F","\u041B\u0445","\u041F\u04AF","\u0411\u0430","\u0411\u044F","\u041D\u044F"],longhand:["\u0414\u0430\u0432\u0430\u0430","\u041C\u044F\u0433\u043C\u0430\u0440","\u041B\u0445\u0430\u0433\u0432\u0430","\u041F\u04AF\u0440\u044D\u0432","\u0411\u0430\u0430\u0441\u0430\u043D","\u0411\u044F\u043C\u0431\u0430","\u041D\u044F\u043C"]},months:{shorthand:["1-\u0440 \u0441\u0430\u0440","2-\u0440 \u0441\u0430\u0440","3-\u0440 \u0441\u0430\u0440","4-\u0440 \u0441\u0430\u0440","5-\u0440 \u0441\u0430\u0440","6-\u0440 \u0441\u0430\u0440","7-\u0440 \u0441\u0430\u0440","8-\u0440 \u0441\u0430\u0440","9-\u0440 \u0441\u0430\u0440","10-\u0440 \u0441\u0430\u0440","11-\u0440 \u0441\u0430\u0440","12-\u0440 \u0441\u0430\u0440"],longhand:["\u041D\u044D\u0433\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0425\u043E\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0414\u04E9\u0440\u04E9\u0432\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0417\u0443\u0440\u0433\u0430\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0414\u043E\u043B\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u041D\u0430\u0439\u043C\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0415\u0441\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440","\u0410\u0440\u0432\u0430\u043D\u043D\u044D\u0433\u0434\u04AF\u0433\u044D\u044D\u0440 \u0441\u0430\u0440","\u0410\u0440\u0432\u0430\u043D\u0445\u043E\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440"]},rangeSeparator:"-\u0441 ",time_24hr:!0};Dg.l10ns.mn=ru;var VA=Dg.l10ns;m();var nS=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Tg={weekdays:{shorthand:["Aha","Isn","Sel","Rab","Kha","Jum","Sab"],longhand:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"]},months:{shorthand:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],longhand:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"]},firstDayOfWeek:1,ordinal:()=>""},zA=nS.l10ns;m();var Mg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},iu={weekdays:{shorthand:["\u1014\u103D\u1031","\u101C\u102C","\u1002\u102B","\u101F\u1030\u1038","\u1000\u103C\u102C","\u101E\u1031\u102C","\u1014\u1031"],longhand:["\u1010\u1014\u1004\u103A\u1039\u1002\u1014\u103D\u1031","\u1010\u1014\u1004\u103A\u1039\u101C\u102C","\u1021\u1004\u103A\u1039\u1002\u102B","\u1017\u102F\u1012\u1039\u1013\u101F\u1030\u1038","\u1000\u103C\u102C\u101E\u1015\u1010\u1031\u1038","\u101E\u1031\u102C\u1000\u103C\u102C","\u1005\u1014\u1031"]},months:{shorthand:["\u1007\u1014\u103A","\u1016\u1031","\u1019\u1010\u103A","\u1015\u103C\u102E","\u1019\u1031","\u1007\u103D\u1014\u103A","\u101C\u102D\u102F\u1004\u103A","\u101E\u103C","\u1005\u1000\u103A","\u1021\u1031\u102C\u1000\u103A","\u1014\u102D\u102F","\u1012\u102E"],longhand:["\u1007\u1014\u103A\u1014\u101D\u102B\u101B\u102E","\u1016\u1031\u1016\u1031\u102C\u103A\u101D\u102B\u101B\u102E","\u1019\u1010\u103A","\u1027\u1015\u103C\u102E","\u1019\u1031","\u1007\u103D\u1014\u103A","\u1007\u1030\u101C\u102D\u102F\u1004\u103A","\u101E\u103C\u1002\u102F\u1010\u103A","\u1005\u1000\u103A\u1010\u1004\u103A\u1018\u102C","\u1021\u1031\u102C\u1000\u103A\u1010\u102D\u102F\u1018\u102C","\u1014\u102D\u102F\u101D\u1004\u103A\u1018\u102C","\u1012\u102E\u1007\u1004\u103A\u1018\u102C"]},firstDayOfWeek:1,ordinal:()=>"",time_24hr:!0};Mg.l10ns.my=iu;var qA=Mg.l10ns;m();var Ig=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},au={weekdays:{shorthand:["zo","ma","di","wo","do","vr","za"],longhand:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"]},months:{shorthand:["jan","feb","mrt","apr","mei","jun","jul","aug","sept","okt","nov","dec"],longhand:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"]},firstDayOfWeek:1,weekAbbreviation:"wk",rangeSeparator:" t/m ",scrollTitle:"Scroll voor volgende / vorige",toggleTitle:"Klik om te wisselen",time_24hr:!0,ordinal:e=>e===1||e===8||e>=20?"ste":"de"};Ig.l10ns.nl=au;var JA=Ig.l10ns;m();var Ag=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},ou={weekdays:{shorthand:["S\xF8.","M\xE5.","Ty.","On.","To.","Fr.","La."],longhand:["S\xF8ndag","M\xE5ndag","Tysdag","Onsdag","Torsdag","Fredag","Laurdag"]},months:{shorthand:["Jan","Feb","Mars","Apr","Mai","Juni","Juli","Aug","Sep","Okt","Nov","Des"],longhand:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"]},firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"Veke",scrollTitle:"Scroll for \xE5 endre",toggleTitle:"Klikk for \xE5 veksle",time_24hr:!0,ordinal:()=>"."};Ag.l10ns.nn=ou;var QA=Ag.l10ns;m();var Lg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},su={weekdays:{shorthand:["S\xF8n","Man","Tir","Ons","Tor","Fre","L\xF8r"],longhand:["S\xF8ndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","L\xF8rdag"]},months:{shorthand:["Jan","Feb","Mar","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Des"],longhand:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"]},firstDayOfWeek:1,rangeSeparator:" til ",weekAbbreviation:"Uke",scrollTitle:"Scroll for \xE5 endre",toggleTitle:"Klikk for \xE5 veksle",time_24hr:!0,ordinal:()=>"."};Lg.l10ns.no=su;var ZA=Lg.l10ns;m();var Pg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},lu={weekdays:{shorthand:["\u0A10\u0A24","\u0A38\u0A4B\u0A2E","\u0A2E\u0A70\u0A17\u0A32","\u0A2C\u0A41\u0A71\u0A27","\u0A35\u0A40\u0A30","\u0A38\u0A3C\u0A41\u0A71\u0A15\u0A30","\u0A38\u0A3C\u0A28\u0A3F\u0A71\u0A1A\u0A30"],longhand:["\u0A10\u0A24\u0A35\u0A3E\u0A30","\u0A38\u0A4B\u0A2E\u0A35\u0A3E\u0A30","\u0A2E\u0A70\u0A17\u0A32\u0A35\u0A3E\u0A30","\u0A2C\u0A41\u0A71\u0A27\u0A35\u0A3E\u0A30","\u0A35\u0A40\u0A30\u0A35\u0A3E\u0A30","\u0A38\u0A3C\u0A41\u0A71\u0A15\u0A30\u0A35\u0A3E\u0A30","\u0A38\u0A3C\u0A28\u0A3F\u0A71\u0A1A\u0A30\u0A35\u0A3E\u0A30"]},months:{shorthand:["\u0A1C\u0A28","\u0A2B\u0A3C\u0A30","\u0A2E\u0A3E\u0A30","\u0A05\u0A2A\u0A4D\u0A30\u0A48","\u0A2E\u0A08","\u0A1C\u0A42\u0A28","\u0A1C\u0A41\u0A32\u0A3E","\u0A05\u0A17","\u0A38\u0A24\u0A70","\u0A05\u0A15","\u0A28\u0A35\u0A70","\u0A26\u0A38\u0A70"],longhand:["\u0A1C\u0A28\u0A35\u0A30\u0A40","\u0A2B\u0A3C\u0A30\u0A35\u0A30\u0A40","\u0A2E\u0A3E\u0A30\u0A1A","\u0A05\u0A2A\u0A4D\u0A30\u0A48\u0A32","\u0A2E\u0A08","\u0A1C\u0A42\u0A28","\u0A1C\u0A41\u0A32\u0A3E\u0A08","\u0A05\u0A17\u0A38\u0A24","\u0A38\u0A24\u0A70\u0A2C\u0A30","\u0A05\u0A15\u0A24\u0A42\u0A2C\u0A30","\u0A28\u0A35\u0A70\u0A2C\u0A30","\u0A26\u0A38\u0A70\u0A2C\u0A30"]},time_24hr:!0};Pg.l10ns.pa=lu;var tL=Pg.l10ns;m();var Fg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},cu={weekdays:{shorthand:["Nd","Pn","Wt","\u015Ar","Cz","Pt","So"],longhand:["Niedziela","Poniedzia\u0142ek","Wtorek","\u015Aroda","Czwartek","Pi\u0105tek","Sobota"]},months:{shorthand:["Sty","Lut","Mar","Kwi","Maj","Cze","Lip","Sie","Wrz","Pa\u017A","Lis","Gru"],longhand:["Stycze\u0144","Luty","Marzec","Kwiecie\u0144","Maj","Czerwiec","Lipiec","Sierpie\u0144","Wrzesie\u0144","Pa\u017Adziernik","Listopad","Grudzie\u0144"]},rangeSeparator:" do ",weekAbbreviation:"tydz.",scrollTitle:"Przewi\u0144, aby zwi\u0119kszy\u0107",toggleTitle:"Kliknij, aby prze\u0142\u0105czy\u0107",firstDayOfWeek:1,time_24hr:!0,ordinal:()=>"."};Fg.l10ns.pl=cu;var rL=Fg.l10ns;m();var Ng=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},uu={weekdays:{shorthand:["Dom","Seg","Ter","Qua","Qui","Sex","S\xE1b"],longhand:["Domingo","Segunda-feira","Ter\xE7a-feira","Quarta-feira","Quinta-feira","Sexta-feira","S\xE1bado"]},months:{shorthand:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],longhand:["Janeiro","Fevereiro","Mar\xE7o","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"]},rangeSeparator:" at\xE9 ",time_24hr:!0};Ng.l10ns.pt=uu;var aL=Ng.l10ns;m();var Og=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},du={weekdays:{shorthand:["Dum","Lun","Mar","Mie","Joi","Vin","S\xE2m"],longhand:["Duminic\u0103","Luni","Mar\u021Bi","Miercuri","Joi","Vineri","S\xE2mb\u0103t\u0103"]},months:{shorthand:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Noi","Dec"],longhand:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"]},firstDayOfWeek:1,time_24hr:!0,ordinal:()=>""};Og.l10ns.ro=du;var sL=Og.l10ns;m();var Rg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},fu={weekdays:{shorthand:["\u0412\u0441","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],longhand:["\u0412\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435","\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A","\u0412\u0442\u043E\u0440\u043D\u0438\u043A","\u0421\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440\u0433","\u041F\u044F\u0442\u043D\u0438\u0446\u0430","\u0421\u0443\u0431\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"],longhand:["\u042F\u043D\u0432\u0430\u0440\u044C","\u0424\u0435\u0432\u0440\u0430\u043B\u044C","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B\u044C","\u041C\u0430\u0439","\u0418\u044E\u043D\u044C","\u0418\u044E\u043B\u044C","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C","\u041E\u043A\u0442\u044F\u0431\u0440\u044C","\u041D\u043E\u044F\u0431\u0440\u044C","\u0414\u0435\u043A\u0430\u0431\u0440\u044C"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u041D\u0435\u0434.",scrollTitle:"\u041F\u0440\u043E\u043A\u0440\u0443\u0442\u0438\u0442\u0435 \u0434\u043B\u044F \u0443\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u0438\u044F",toggleTitle:"\u041D\u0430\u0436\u043C\u0438\u0442\u0435 \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F",amPM:["\u0414\u041F","\u041F\u041F"],yearAriaLabel:"\u0413\u043E\u0434",time_24hr:!0};Rg.l10ns.ru=fu;var cL=Rg.l10ns;m();var Hg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},pu={weekdays:{shorthand:["\u0D89","\u0DC3","\u0D85","\u0DB6","\u0DB6\u0DCA\u200D\u0DBB","\u0DC3\u0DD2","\u0DC3\u0DD9"],longhand:["\u0D89\u0DBB\u0DD2\u0DAF\u0DCF","\u0DC3\u0DB3\u0DD4\u0DAF\u0DCF","\u0D85\u0D9F\u0DC4\u0DBB\u0DD4\u0DC0\u0DCF\u0DAF\u0DCF","\u0DB6\u0DAF\u0DCF\u0DAF\u0DCF","\u0DB6\u0DCA\u200D\u0DBB\u0DC4\u0DC3\u0DCA\u0DB4\u0DAD\u0DD2\u0DB1\u0DCA\u0DAF\u0DCF","\u0DC3\u0DD2\u0D9A\u0DD4\u0DBB\u0DCF\u0DAF\u0DCF","\u0DC3\u0DD9\u0DB1\u0DC3\u0DD4\u0DBB\u0DCF\u0DAF\u0DCF"]},months:{shorthand:["\u0DA2\u0DB1","\u0DB4\u0DD9\u0DB6","\u0DB8\u0DCF\u0DBB\u0DCA","\u0D85\u0DB4\u0DCA\u200D\u0DBB\u0DDA","\u0DB8\u0DD0\u0DBA\u0DD2","\u0DA2\u0DD4\u0DB1\u0DD2","\u0DA2\u0DD6\u0DBD\u0DD2","\u0D85\u0D9C\u0DDD","\u0DC3\u0DD0\u0DB4\u0DCA","\u0D94\u0D9A\u0DCA","\u0DB1\u0DDC\u0DC0\u0DD0","\u0DAF\u0DD9\u0DC3\u0DD0"],longhand:["\u0DA2\u0DB1\u0DC0\u0DCF\u0DBB\u0DD2","\u0DB4\u0DD9\u0DB6\u0DBB\u0DC0\u0DCF\u0DBB\u0DD2","\u0DB8\u0DCF\u0DBB\u0DCA\u0DAD\u0DD4","\u0D85\u0DB4\u0DCA\u200D\u0DBB\u0DDA\u0DBD\u0DCA","\u0DB8\u0DD0\u0DBA\u0DD2","\u0DA2\u0DD4\u0DB1\u0DD2","\u0DA2\u0DD6\u0DBD\u0DD2","\u0D85\u0D9C\u0DDD\u0DC3\u0DCA\u0DAD\u0DD4","\u0DC3\u0DD0\u0DB4\u0DCA\u0DAD\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA","\u0D94\u0D9A\u0DCA\u0DAD\u0DDD\u0DB6\u0DBB\u0DCA","\u0DB1\u0DDC\u0DC0\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA","\u0DAF\u0DD9\u0DC3\u0DD0\u0DB8\u0DCA\u0DB6\u0DBB\u0DCA"]},time_24hr:!0};Hg.l10ns.si=pu;var dL=Hg.l10ns;m();var Bg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},hu={weekdays:{shorthand:["Ned","Pon","Ut","Str","\u0160tv","Pia","Sob"],longhand:["Nede\u013Ea","Pondelok","Utorok","Streda","\u0160tvrtok","Piatok","Sobota"]},months:{shorthand:["Jan","Feb","Mar","Apr","M\xE1j","J\xFAn","J\xFAl","Aug","Sep","Okt","Nov","Dec"],longhand:["Janu\xE1r","Febru\xE1r","Marec","Apr\xEDl","M\xE1j","J\xFAn","J\xFAl","August","September","Okt\xF3ber","November","December"]},firstDayOfWeek:1,rangeSeparator:" do ",time_24hr:!0,ordinal:function(){return"."}};Bg.l10ns.sk=hu;var pL=Bg.l10ns;m();var Kg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},mu={weekdays:{shorthand:["Ned","Pon","Tor","Sre","\u010Cet","Pet","Sob"],longhand:["Nedelja","Ponedeljek","Torek","Sreda","\u010Cetrtek","Petek","Sobota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"]},firstDayOfWeek:1,rangeSeparator:" do ",time_24hr:!0,ordinal:function(){return"."}};Kg.l10ns.sl=mu;var mL=Kg.l10ns;m();var $g=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},gu={weekdays:{shorthand:["Di","H\xEB","Ma","M\xEB","En","Pr","Sh"],longhand:["E Diel","E H\xEBn\xEB","E Mart\xEB","E M\xEBrkur\xEB","E Enjte","E Premte","E Shtun\xEB"]},months:{shorthand:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","N\xEBn","Dhj"],longhand:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","N\xEBntor","Dhjetor"]},firstDayOfWeek:1,rangeSeparator:" deri ",weekAbbreviation:"Java",yearAriaLabel:"Viti",monthAriaLabel:"Muaji",hourAriaLabel:"Ora",minuteAriaLabel:"Minuta",time_24hr:!0};$g.l10ns.sq=gu;var vL=$g.l10ns;m();var Ug=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},vu={weekdays:{shorthand:["Ned","Pon","Uto","Sre","\u010Cet","Pet","Sub"],longhand:["Nedelja","Ponedeljak","Utorak","Sreda","\u010Cetvrtak","Petak","Subota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"]},firstDayOfWeek:1,weekAbbreviation:"Ned.",rangeSeparator:" do ",time_24hr:!0};Ug.l10ns.sr=vu;var bL=Ug.l10ns;m();var Vg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},yu={firstDayOfWeek:1,weekAbbreviation:"v",weekdays:{shorthand:["s\xF6n","m\xE5n","tis","ons","tor","fre","l\xF6r"],longhand:["s\xF6ndag","m\xE5ndag","tisdag","onsdag","torsdag","fredag","l\xF6rdag"]},months:{shorthand:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],longhand:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"]},rangeSeparator:" till ",time_24hr:!0,ordinal:()=>"."};Vg.l10ns.sv=yu;var EL=Vg.l10ns;m();var Wg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},bu={weekdays:{shorthand:["\u0E2D\u0E32","\u0E08","\u0E2D","\u0E1E","\u0E1E\u0E24","\u0E28","\u0E2A"],longhand:["\u0E2D\u0E32\u0E17\u0E34\u0E15\u0E22\u0E4C","\u0E08\u0E31\u0E19\u0E17\u0E23\u0E4C","\u0E2D\u0E31\u0E07\u0E04\u0E32\u0E23","\u0E1E\u0E38\u0E18","\u0E1E\u0E24\u0E2B\u0E31\u0E2A\u0E1A\u0E14\u0E35","\u0E28\u0E38\u0E01\u0E23\u0E4C","\u0E40\u0E2A\u0E32\u0E23\u0E4C"]},months:{shorthand:["\u0E21.\u0E04.","\u0E01.\u0E1E.","\u0E21\u0E35.\u0E04.","\u0E40\u0E21.\u0E22.","\u0E1E.\u0E04.","\u0E21\u0E34.\u0E22.","\u0E01.\u0E04.","\u0E2A.\u0E04.","\u0E01.\u0E22.","\u0E15.\u0E04.","\u0E1E.\u0E22.","\u0E18.\u0E04."],longhand:["\u0E21\u0E01\u0E23\u0E32\u0E04\u0E21","\u0E01\u0E38\u0E21\u0E20\u0E32\u0E1E\u0E31\u0E19\u0E18\u0E4C","\u0E21\u0E35\u0E19\u0E32\u0E04\u0E21","\u0E40\u0E21\u0E29\u0E32\u0E22\u0E19","\u0E1E\u0E24\u0E29\u0E20\u0E32\u0E04\u0E21","\u0E21\u0E34\u0E16\u0E38\u0E19\u0E32\u0E22\u0E19","\u0E01\u0E23\u0E01\u0E0E\u0E32\u0E04\u0E21","\u0E2A\u0E34\u0E07\u0E2B\u0E32\u0E04\u0E21","\u0E01\u0E31\u0E19\u0E22\u0E32\u0E22\u0E19","\u0E15\u0E38\u0E25\u0E32\u0E04\u0E21","\u0E1E\u0E24\u0E28\u0E08\u0E34\u0E01\u0E32\u0E22\u0E19","\u0E18\u0E31\u0E19\u0E27\u0E32\u0E04\u0E21"]},firstDayOfWeek:1,rangeSeparator:" \u0E16\u0E36\u0E07 ",scrollTitle:"\u0E40\u0E25\u0E37\u0E48\u0E2D\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E2B\u0E23\u0E37\u0E2D\u0E25\u0E14",toggleTitle:"\u0E04\u0E25\u0E34\u0E01\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19",time_24hr:!0,ordinal:()=>""};Wg.l10ns.th=bu;var kL=Wg.l10ns;m();var zg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},wu={weekdays:{shorthand:["Paz","Pzt","Sal","\xC7ar","Per","Cum","Cmt"],longhand:["Pazar","Pazartesi","Sal\u0131","\xC7ar\u015Famba","Per\u015Fembe","Cuma","Cumartesi"]},months:{shorthand:["Oca","\u015Eub","Mar","Nis","May","Haz","Tem","A\u011Fu","Eyl","Eki","Kas","Ara"],longhand:["Ocak","\u015Eubat","Mart","Nisan","May\u0131s","Haziran","Temmuz","A\u011Fustos","Eyl\xFCl","Ekim","Kas\u0131m","Aral\u0131k"]},firstDayOfWeek:1,ordinal:()=>".",rangeSeparator:" - ",weekAbbreviation:"Hf",scrollTitle:"Art\u0131rmak i\xE7in kayd\u0131r\u0131n",toggleTitle:"A\xE7/Kapa",amPM:["\xD6\xD6","\xD6S"],time_24hr:!0};zg.l10ns.tr=wu;var _L=zg.l10ns;m();var jg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Eu={firstDayOfWeek:1,weekdays:{shorthand:["\u041D\u0434","\u041F\u043D","\u0412\u0442","\u0421\u0440","\u0427\u0442","\u041F\u0442","\u0421\u0431"],longhand:["\u041D\u0435\u0434\u0456\u043B\u044F","\u041F\u043E\u043D\u0435\u0434\u0456\u043B\u043E\u043A","\u0412\u0456\u0432\u0442\u043E\u0440\u043E\u043A","\u0421\u0435\u0440\u0435\u0434\u0430","\u0427\u0435\u0442\u0432\u0435\u0440","\u041F'\u044F\u0442\u043D\u0438\u0446\u044F","\u0421\u0443\u0431\u043E\u0442\u0430"]},months:{shorthand:["\u0421\u0456\u0447","\u041B\u044E\u0442","\u0411\u0435\u0440","\u041A\u0432\u0456","\u0422\u0440\u0430","\u0427\u0435\u0440","\u041B\u0438\u043F","\u0421\u0435\u0440","\u0412\u0435\u0440","\u0416\u043E\u0432","\u041B\u0438\u0441","\u0413\u0440\u0443"],longhand:["\u0421\u0456\u0447\u0435\u043D\u044C","\u041B\u044E\u0442\u0438\u0439","\u0411\u0435\u0440\u0435\u0437\u0435\u043D\u044C","\u041A\u0432\u0456\u0442\u0435\u043D\u044C","\u0422\u0440\u0430\u0432\u0435\u043D\u044C","\u0427\u0435\u0440\u0432\u0435\u043D\u044C","\u041B\u0438\u043F\u0435\u043D\u044C","\u0421\u0435\u0440\u043F\u0435\u043D\u044C","\u0412\u0435\u0440\u0435\u0441\u0435\u043D\u044C","\u0416\u043E\u0432\u0442\u0435\u043D\u044C","\u041B\u0438\u0441\u0442\u043E\u043F\u0430\u0434","\u0413\u0440\u0443\u0434\u0435\u043D\u044C"]},time_24hr:!0};jg.l10ns.uk=Eu;var DL=jg.l10ns;m();var qg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},xu={weekdays:{shorthand:["\u042F\u043A\u0448","\u0414\u0443\u0448","\u0421\u0435\u0448","\u0427\u043E\u0440","\u041F\u0430\u0439","\u0416\u0443\u043C","\u0428\u0430\u043D"],longhand:["\u042F\u043A\u0448\u0430\u043D\u0431\u0430","\u0414\u0443\u0448\u0430\u043D\u0431\u0430","\u0421\u0435\u0448\u0430\u043D\u0431\u0430","\u0427\u043E\u0440\u0448\u0430\u043D\u0431\u0430","\u041F\u0430\u0439\u0448\u0430\u043D\u0431\u0430","\u0416\u0443\u043C\u0430","\u0428\u0430\u043D\u0431\u0430"]},months:{shorthand:["\u042F\u043D\u0432","\u0424\u0435\u0432","\u041C\u0430\u0440","\u0410\u043F\u0440","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433","\u0421\u0435\u043D","\u041E\u043A\u0442","\u041D\u043E\u044F","\u0414\u0435\u043A"],longhand:["\u042F\u043D\u0432\u0430\u0440","\u0424\u0435\u0432\u0440\u0430\u043B","\u041C\u0430\u0440\u0442","\u0410\u043F\u0440\u0435\u043B","\u041C\u0430\u0439","\u0418\u044E\u043D","\u0418\u044E\u043B","\u0410\u0432\u0433\u0443\u0441\u0442","\u0421\u0435\u043D\u0442\u044F\u0431\u0440","\u041E\u043A\u0442\u044F\u0431\u0440","\u041D\u043E\u044F\u0431\u0440","\u0414\u0435\u043A\u0430\u0431\u0440"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"\u04B2\u0430\u0444\u0442\u0430",scrollTitle:"\u041A\u0430\u0442\u0442\u0430\u043B\u0430\u0448\u0442\u0438\u0440\u0438\u0448 \u0443\u0447\u0443\u043D \u0430\u0439\u043B\u0430\u043D\u0442\u0438\u0440\u0438\u043D\u0433",toggleTitle:"\u040E\u0442\u0438\u0448 \u0443\u0447\u0443\u043D \u0431\u043E\u0441\u0438\u043D\u0433",amPM:["AM","PM"],yearAriaLabel:"\u0419\u0438\u043B",time_24hr:!0};qg.l10ns.uz=xu;var ML=qg.l10ns;m();var Yg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},ku={weekdays:{shorthand:["Ya","Du","Se","Cho","Pa","Ju","Sha"],longhand:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"]},months:{shorthand:["Yan","Fev","Mar","Apr","May","Iyun","Iyul","Avg","Sen","Okt","Noy","Dek"],longhand:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" \u2014 ",weekAbbreviation:"Hafta",scrollTitle:"Kattalashtirish uchun aylantiring",toggleTitle:"O\u2018tish uchun bosing",amPM:["AM","PM"],yearAriaLabel:"Yil",time_24hr:!0};Yg.l10ns.uz_latn=ku;var AL=Yg.l10ns;m();var Jg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Su={weekdays:{shorthand:["CN","T2","T3","T4","T5","T6","T7"],longhand:["Ch\u1EE7 nh\u1EADt","Th\u1EE9 hai","Th\u1EE9 ba","Th\u1EE9 t\u01B0","Th\u1EE9 n\u0103m","Th\u1EE9 s\xE1u","Th\u1EE9 b\u1EA3y"]},months:{shorthand:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],longhand:["Th\xE1ng m\u1ED9t","Th\xE1ng hai","Th\xE1ng ba","Th\xE1ng t\u01B0","Th\xE1ng n\u0103m","Th\xE1ng s\xE1u","Th\xE1ng b\u1EA3y","Th\xE1ng t\xE1m","Th\xE1ng ch\xEDn","Th\xE1ng m\u01B0\u1EDDi","Th\xE1ng m\u01B0\u1EDDi m\u1ED9t","Th\xE1ng m\u01B0\u1EDDi hai"]},firstDayOfWeek:1,rangeSeparator:" \u0111\u1EBFn "};Jg.l10ns.vn=Su;var PL=Jg.l10ns;m();var Gg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},_u={weekdays:{shorthand:["\u5468\u65E5","\u5468\u4E00","\u5468\u4E8C","\u5468\u4E09","\u5468\u56DB","\u5468\u4E94","\u5468\u516D"],longhand:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"]},months:{shorthand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],longhand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"]},rangeSeparator:" \u81F3 ",weekAbbreviation:"\u5468",scrollTitle:"\u6EDA\u52A8\u5207\u6362",toggleTitle:"\u70B9\u51FB\u5207\u6362 12/24 \u5C0F\u65F6\u65F6\u5236"};Gg.l10ns.zh=_u;var NL=Gg.l10ns;m();var Qg=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},Cu={weekdays:{shorthand:["\u9031\u65E5","\u9031\u4E00","\u9031\u4E8C","\u9031\u4E09","\u9031\u56DB","\u9031\u4E94","\u9031\u516D"],longhand:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"]},months:{shorthand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],longhand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"]},rangeSeparator:" \u81F3 ",weekAbbreviation:"\u9031",scrollTitle:"\u6EFE\u52D5\u5207\u63DB",toggleTitle:"\u9EDE\u64CA\u5207\u63DB 12/24 \u5C0F\u6642\u6642\u5236"};Qg.l10ns.zh_tw=Cu;var RL=Qg.l10ns;var rS={ar:wc,at:Ec,az:xc,be:kc,bg:Sc,bn:_c,bs:Cc,ca:Go,ckb:Tc,cat:Go,cs:Mc,cy:Ic,da:Ac,de:Lc,default:{...Ur},en:Ur,eo:Pc,es:Fc,et:Nc,fa:Oc,fi:Rc,fo:Hc,fr:Bc,gr:Kc,he:$c,hi:Uc,hr:Vc,hu:Wc,hy:zc,id:jc,is:qc,it:Yc,ja:Jc,ka:Gc,ko:Xc,km:Qc,kz:Zc,lt:eu,lv:tu,mk:nu,mn:ru,ms:Tg,my:iu,nl:au,nn:ou,no:su,pa:lu,pl:cu,pt:uu,ro:du,ru:fu,si:pu,sk:hu,sl:mu,sq:gu,sr:vu,sv:yu,th:bu,tr:wu,uk:Eu,vn:Su,zh:_u,zh_tw:Cu,uz:xu,uz_latn:ku},tt=rS;var Zg={ar:tt.ar,cs:tt.cs,da:tt.da,de:tt.de,en:tt.en,"en-gb":tt.en,es:tt.es,fr:tt.fr,hi:tt.hi,id:tt.id,it:tt.it,ja:tt.ja,ko:tt.ko,nl:tt.nl,nn:tt.no,pl:tt.pl,pt:tt.pt,"pt-br":tt.pt,ro:tt.ro,ru:tt.ru,tr:tt.tr,"zh-cn":tt.zh,"zh-tw":tt.zh_tw},iS=Zg[Xg.moment.locale()];function Xo(e){let t=e==null?void 0:e.getSetting("date-picker-week-start"),r=iS||Zg.en;return t?{...r,firstDayOfWeek:t}:r}m();m();var Zo=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],wr={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:typeof window=="object"&&window.navigator.userAgent.indexOf("MSIE")===-1,ariaDateFormat:"F j, Y",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:e=>typeof console!="undefined"&&console.warn(e),getWeek:e=>{let t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);let r=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-r.getTime())/864e5-3+(r.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1,win:window};m();var Bt=(e,t=2)=>`000${e}`.slice(t*-1),tn=e=>e===!0?1:0;function Du(e,t,r){let n;return function(){let i=arguments;r.clearTimeout(n),n=r.setTimeout(()=>e.apply(this,i),t)}}var es=e=>Array.isArray(e)?e:[e];m();m();var Tu=()=>{},Sa=(e,t,r)=>r.months[t?"shorthand":"longhand"][e],ev={D:Tu,F:function(e,t,r){e.setMonth(r.months.longhand.indexOf(t))},G:(e,t)=>{e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},H:(e,t)=>{e.setHours(parseFloat(t))},J:(e,t)=>{e.setDate(parseFloat(t))},K:(e,t,r)=>{e.setHours(e.getHours()%12+12*tn(new RegExp(r.amPM[1],"i").test(t)))},M:function(e,t,r){e.setMonth(r.months.shorthand.indexOf(t))},S:(e,t)=>{e.setSeconds(parseFloat(t))},U:(e,t)=>new Date(parseFloat(t)*1e3),W:function(e,t,r){let n=parseInt(t),i=new Date(e.getFullYear(),0,2+(n-1)*7,0,0,0,0);return i.setDate(i.getDate()-i.getDay()+r.firstDayOfWeek),i},Y:(e,t)=>{e.setFullYear(parseFloat(t))},Z:(e,t)=>new Date(t),d:(e,t)=>{e.setDate(parseFloat(t))},h:(e,t)=>{e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},i:(e,t)=>{e.setMinutes(parseFloat(t))},j:(e,t)=>{e.setDate(parseFloat(t))},l:Tu,m:(e,t)=>{e.setMonth(parseFloat(t)-1)},n:(e,t)=>{e.setMonth(parseFloat(t)-1)},s:(e,t)=>{e.setSeconds(parseFloat(t))},u:(e,t)=>new Date(parseFloat(t)),w:Tu,y:(e,t)=>{e.setFullYear(2e3+parseFloat(t))}},Jn={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},_i={Z:e=>e.toISOString(),D:function(e,t,r){return t.weekdays.shorthand[_i.w(e,t,r)]},F:function(e,t,r){return Sa(_i.n(e,t,r)-1,!1,t)},G:function(e,t,r){return Bt(_i.h(e,t,r))},H:e=>Bt(e.getHours()),J:function(e,t){return t.ordinal!==void 0?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:(e,t)=>t.amPM[tn(e.getHours()>11)],M:function(e,t){return Sa(e.getMonth(),!0,t)},S:e=>Bt(e.getSeconds()),U:e=>e.getTime()/1e3,W:function(e,t,r){return r.getWeek(e)},Y:e=>Bt(e.getFullYear(),4),d:e=>Bt(e.getDate()),h:e=>e.getHours()%12?e.getHours()%12:12,i:e=>Bt(e.getMinutes()),j:e=>e.getDate(),l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:e=>Bt(e.getMonth()+1),n:e=>e.getMonth()+1,s:e=>e.getSeconds(),u:e=>e.getTime(),w:e=>e.getDay(),y:e=>String(e.getFullYear()).substring(2)};var Mu=({config:e=wr,l10n:t=Ur,isMobile:r=!1})=>(n,i,a)=>{let o=a||t;return e.formatDate!==void 0&&!r?e.formatDate(n,i,o):i.split("").map((s,u,l)=>_i[s]&&l[u-1]!=="\\"?_i[s](n,o,e):s!=="\\"?s:"").join("")},ts=({config:e=wr,l10n:t=Ur})=>(r,n,i,a)=>{if(r!==0&&!r)return;let o=a||t,s,u=r;if(r.getDate)s=new Date(r.getTime());else if(typeof r!="string"&&r.toFixed!==void 0)s=new Date(r);else if(typeof r=="string"){let l=n||(e||wr).dateFormat,c=String(r).trim();if(c==="today")s=new Date,i=!0;else if(e&&e.parseDate)s=e.parseDate(r,l);else if(/Z$/.test(c)||/GMT$/.test(c))s=new Date(r);else{let d,f=[];for(let p=0,g=0,y="";ps=p(s,g,o)||s),s=d?s:void 0}}if(!(s.getDate&&!isNaN(s.getTime()))){e.errorHandler(new Error(`Invalid date provided: ${u}`));return}return i===!0&&s.setHours(0,0,0,0),s};function nn(e,t,r=!0){return r!==!1?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()}var tv=(e,t,r)=>e>Math.min(t,r)&&ee*3600+t*60+r,nv=e=>{let t=Math.floor(e/3600),r=(e-t*3600)/60;return[t,r,e-t*3600-r*60]},rv={DAY:864e5};function rs(e){let t=e.defaultHour,r=e.defaultMinute,n=e.defaultSeconds;if(e.minDate!==void 0){let i=e.minDate.getHours(),a=e.minDate.getMinutes(),o=e.minDate.getSeconds();t=0?new Date:new Date(n.config.minDate.getTime()),ee=rs(n.config);$.setHours(ee.hours,ee.minutes,ee.seconds,$.getMilliseconds()),n.selectedDates=[$],n.latestSelectedDateObj=$}_!==void 0&&_.type!=="blur"&&to(_);let M=n._input.value;f(),xn(),n._input.value!==M&&n._debouncedChange()}function c(_,M){return _%12+12*tn(M===n.l10n.amPM[1])}function d(_){switch(_%24){case 0:case 12:return 12;default:return _%12}}function f(){if(n.hourElement===void 0||n.minuteElement===void 0)return;let _=(parseInt(n.hourElement.value.slice(-2),10)||0)%24,M=(parseInt(n.minuteElement.value,10)||0)%60,$=n.secondElement!==void 0?(parseInt(n.secondElement.value,10)||0)%60:0;n.amPM!==void 0&&(_=c(_,n.amPM.textContent));let ee=n.config.minTime!==void 0||n.config.minDate&&n.minDateHasTime&&n.latestSelectedDateObj&&nn(n.latestSelectedDateObj,n.config.minDate,!0)===0,le=n.config.maxTime!==void 0||n.config.maxDate&&n.maxDateHasTime&&n.latestSelectedDateObj&&nn(n.latestSelectedDateObj,n.config.maxDate,!0)===0;if(n.config.maxTime!==void 0&&n.config.minTime!==void 0&&n.config.minTime>n.config.maxTime){let re=ns(n.config.minTime.getHours(),n.config.minTime.getMinutes(),n.config.minTime.getSeconds()),ve=ns(n.config.maxTime.getHours(),n.config.maxTime.getMinutes(),n.config.maxTime.getSeconds()),ue=ns(_,M,$);if(ue>ve&&ue=12)]),n.secondElement!==void 0&&(n.secondElement.value=Bt($)))}function y(_){let M=rn(_),$=parseInt(M.value)+(_.delta||0);($/1e3>1||_.key==="Enter"&&!/[^\d]/.test($.toString()))&&te($)}function b(_,M,$,ee){if(Array.isArray(M))return M.forEach(le=>b(_,le,$,ee));if(Array.isArray(_))return _.forEach(le=>b(le,M,$,ee));_.addEventListener(M,$,ee),n._handlers.push({remove:()=>_.removeEventListener(M,$,ee)})}function k(){Ve("onChange")}function T(){if(n.config.wrap&&["open","close","toggle","clear"].forEach(M=>{Array.prototype.forEach.call(n.element.querySelectorAll(`[data-${M}]`),$=>b($,"click",n[M]))}),n.isMobile){qe();return}let _=Du(Ot,50,r);if(n._debouncedChange=Du(k,aS,r),n.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&b(n.daysContainer,"mouseover",M=>{n.config.mode==="range"&&vt(rn(M))}),b(n._input,"keydown",dt),n.calendarContainer!==void 0&&b(n.calendarContainer,"keydown",dt),!n.config.inline&&!n.config.static&&b(r,"resize",_),r.ontouchstart!==void 0?b(r.document,"touchstart",q):b(r.document,"mousedown",q),b(r.document,"focus",q,{capture:!0}),n.config.clickOpens===!0&&(b(n._input,"focus",n.open),b(n._input,"click",n.open)),n.daysContainer!==void 0&&(b(n.monthNav,"click",Sl),b(n.monthNav,["keyup","increment"],y),b(n.daysContainer,"click",Rt)),n.timeContainer!==void 0&&n.minuteElement!==void 0&&n.hourElement!==void 0){let M=$=>rn($).select();b(n.timeContainer,["increment"],l),b(n.timeContainer,"blur",l,{capture:!0}),b(n.timeContainer,"click",A),b([n.hourElement,n.minuteElement],["focus","click"],M),n.secondElement!==void 0&&b(n.secondElement,"focus",()=>n.secondElement&&n.secondElement.select()),n.amPM!==void 0&&b(n.amPM,"click",$=>{l($)})}n.config.allowInput&&b(n._input,"blur",Ue)}function C(_,M){let $=_!==void 0?n.parseDate(_):n.latestSelectedDateObj||(n.config.minDate&&n.config.minDate>n.now?n.config.minDate:n.config.maxDate&&n.config.maxDate1),n.calendarContainer.appendChild(_);let M=n.config.appendTo!==void 0&&n.config.appendTo.nodeType!==void 0;if((n.config.inline||n.config.static)&&(n.calendarContainer.classList.add(n.config.inline?"inline":"static"),n.config.inline&&(!M&&n.element.parentNode?n.element.parentNode.insertBefore(n.calendarContainer,n._input.nextSibling):n.config.appendTo!==void 0&&n.config.appendTo.appendChild(n.calendarContainer)),n.config.static)){let $=je(r.document,"div","flatpickr-wrapper");n.element.parentNode&&n.element.parentNode.insertBefore($,n.element),$.appendChild(n.element),n.altInput&&$.appendChild(n.altInput),$.appendChild(n.calendarContainer)}!n.config.static&&!n.config.inline&&(n.config.appendTo!==void 0?n.config.appendTo:r.document.body).appendChild(n.calendarContainer)}function K(_,M,$,ee){let le=we(M,!0),re=je(r.document,"span",_,M.getDate().toString());return re.dateObj=M,re.$i=ee,re.setAttribute("aria-label",n.formatDate(M,n.config.ariaDateFormat)),_.indexOf("hidden")===-1&&nn(M,n.now)===0&&(n.todayDateElem=re,re.classList.add("today"),re.setAttribute("aria-current","date")),le?(re.tabIndex=-1,Ye(M)&&(re.classList.add("selected"),n.selectedDateElem=re,n.config.mode==="range"&&(Kt(re,"startRange",n.selectedDates[0]&&nn(M,n.selectedDates[0],!0)===0),Kt(re,"endRange",n.selectedDates[1]&&nn(M,n.selectedDates[1],!0)===0),_==="nextMonthDay"&&re.classList.add("inRange")))):re.classList.add("flatpickr-disabled"),n.config.mode==="range"&&ir(M)&&!Ye(M)&&re.classList.add("inRange"),n.weekNumbers&&n.config.showMonths===1&&_!=="prevMonthDay"&&ee%7==6&&n.weekNumbers.insertAdjacentHTML("beforeend",""+n.config.getWeek(M)+""),Ve("onDayCreate",re),re}function z(_){_.focus(),n.config.mode==="range"&&vt(_)}function U(_){let M=_>0?0:n.config.showMonths-1,$=_>0?n.config.showMonths:-1;for(let ee=M;ee!=$;ee+=_){let le=n.daysContainer.children[ee],re=_>0?0:le.children.length-1,ve=_>0?le.children.length:-1;for(let ue=re;ue!=ve;ue+=_){let Fe=le.children[ue];if(Fe.className.indexOf("hidden")===-1&&we(Fe.dateObj))return Fe}}}function Z(_,M){let $=_.className.indexOf("Month")===-1?_.dateObj.getMonth():n.currentMonth,ee=M>0?n.config.showMonths:-1,le=M>0?1:-1;for(let re=$-n.currentMonth;re!=ee;re+=le){let ve=n.daysContainer.children[re],ue=$-n.currentMonth===re?_.$i+M:M<0?ve.children.length-1:0,Fe=ve.children.length;for(let Ne=ue;Ne>=0&&Ne0?Fe:-1);Ne+=le){let Me=ve.children[Ne];if(Me.className.indexOf("hidden")===-1&&we(Me.dateObj)&&Math.abs(_.$i-Ne)>=Math.abs(M))return z(Me)}}n.changeMonth(le),J(U(le),0)}function J(_,M){let $=o(),ee=ke($||n.element.doc.body),le=_!==void 0?_:ee?$:n.selectedDateElem!==void 0&&ke(n.selectedDateElem)?n.selectedDateElem:n.todayDateElem!==void 0&&ke(n.todayDateElem)?n.todayDateElem:U(M>0?1:-1);le===void 0?n._input.focus():ee?Z(le,M):z(le)}function se(_,M){let $=(new Date(_,M,1).getDay()-n.l10n.firstDayOfWeek+7)%7,ee=n.utils.getDaysInMonth((M-1+12)%12,_),le=n.utils.getDaysInMonth(M,_),re=r.document.createDocumentFragment(),ve=n.config.showMonths>1,ue=ve?"prevMonthDay hidden":"prevMonthDay",Fe=ve?"nextMonthDay hidden":"nextMonthDay",Ne=ee+1-$,Me=0;for(;Ne<=ee;Ne++,Me++)re.appendChild(K(`flatpickr-day ${ue}`,new Date(_,M-1,Ne),Ne,Me));for(Ne=1;Ne<=le;Ne++,Me++)re.appendChild(K("flatpickr-day",new Date(_,M,Ne),Ne,Me));for(let bt=le+1;bt<=42-$&&(n.config.showMonths===1||Me%7!=0);bt++,Me++)re.appendChild(K(`flatpickr-day ${Fe}`,new Date(_,M+1,bt%le),bt,Me));let Qt=je(r.document,"div","dayContainer");return Qt.appendChild(re),Qt}function G(){if(n.daysContainer===void 0)return;_a(n.daysContainer),n.weekNumbers&&_a(n.weekNumbers);let _=n.element.doc.createDocumentFragment();for(let M=0;M1||n.config.monthSelectorType!=="dropdown")return;let _=function(M){return n.config.minDate!==void 0&&n.currentYear===n.config.minDate.getFullYear()&&Mn.config.maxDate.getMonth())};n.monthsDropdownContainer.tabIndex=-1,n.monthsDropdownContainer.innerHTML="";for(let M=0;M<12;M++){if(!_(M))continue;let $=je(r.document,"option","flatpickr-monthDropdown-month");$.value=new Date(n.currentYear,M).getMonth().toString(),$.textContent=Sa(M,n.config.shorthandCurrentMonth,n.l10n),$.tabIndex=-1,n.currentMonth===M&&($.selected=!0),n.monthsDropdownContainer.appendChild($)}}function ie(){let _=je(r.document,"div","flatpickr-month"),M=r.document.createDocumentFragment(),$;n.config.showMonths>1||n.config.monthSelectorType==="static"?$=je(r.document,"span","cur-month"):(n.monthsDropdownContainer=je(r.document,"select","flatpickr-monthDropdown-months"),n.monthsDropdownContainer.setAttribute("aria-label",n.l10n.monthAriaLabel),b(n.monthsDropdownContainer,"change",ve=>{let ue=rn(ve),Fe=parseInt(ue.value,10);n.changeMonth(Fe-n.currentMonth),Ve("onMonthChange")}),Q(),$=n.monthsDropdownContainer);let ee=Ca(r.document,"cur-year",{tabindex:"-1"}),le=ee.getElementsByTagName("input")[0];le.setAttribute("aria-label",n.l10n.yearAriaLabel),n.config.minDate&&le.setAttribute("min",n.config.minDate.getFullYear().toString()),n.config.maxDate&&(le.setAttribute("max",n.config.maxDate.getFullYear().toString()),le.disabled=!!n.config.minDate&&n.config.minDate.getFullYear()===n.config.maxDate.getFullYear());let re=je(r.document,"div","flatpickr-current-month");return re.appendChild($),re.appendChild(ee),M.appendChild(re),_.appendChild(M),{container:_,yearElement:le,monthElement:$}}function he(){_a(n.monthNav),n.monthNav.appendChild(n.prevMonthNav),n.config.showMonths&&(n.yearElements=[],n.monthElements=[]);for(let _=n.config.showMonths;_--;){let M=ie();n.yearElements.push(M.yearElement),n.monthElements.push(M.monthElement),n.monthNav.appendChild(M.container)}n.monthNav.appendChild(n.nextMonthNav)}function pe(){return n.monthNav=je(r.document,"div","flatpickr-months"),n.yearElements=[],n.monthElements=[],n.prevMonthNav=je(r.document,"span","flatpickr-prev-month"),n.prevMonthNav.innerHTML=n.config.prevArrow,n.nextMonthNav=je(r.document,"span","flatpickr-next-month"),n.nextMonthNav.innerHTML=n.config.nextArrow,he(),Object.defineProperty(n,"_hidePrevMonthArrow",{get:()=>n.__hidePrevMonthArrow,set(_){n.__hidePrevMonthArrow!==_&&(Kt(n.prevMonthNav,"flatpickr-disabled",_),n.__hidePrevMonthArrow=_)}}),Object.defineProperty(n,"_hideNextMonthArrow",{get:()=>n.__hideNextMonthArrow,set(_){n.__hideNextMonthArrow!==_&&(Kt(n.nextMonthNav,"flatpickr-disabled",_),n.__hideNextMonthArrow=_)}}),n.currentYearElement=n.yearElements[0],Mt(),n.monthNav}function ge(){n.calendarContainer.classList.add("hasTime"),n.config.noCalendar&&n.calendarContainer.classList.add("noCalendar");let _=rs(n.config);n.timeContainer=je(r.document,"div","flatpickr-time"),n.timeContainer.tabIndex=-1;let M=je(r.document,"span","flatpickr-time-separator",":"),$=Ca(r.document,"flatpickr-hour",{"aria-label":n.l10n.hourAriaLabel});n.hourElement=$.getElementsByTagName("input")[0];let ee=Ca(r.document,"flatpickr-minute",{"aria-label":n.l10n.minuteAriaLabel});if(n.minuteElement=ee.getElementsByTagName("input")[0],n.hourElement.tabIndex=n.minuteElement.tabIndex=-1,n.hourElement.value=Bt(n.latestSelectedDateObj?n.latestSelectedDateObj.getHours():n.config.time_24hr?_.hours:d(_.hours)),n.minuteElement.value=Bt(n.latestSelectedDateObj?n.latestSelectedDateObj.getMinutes():_.minutes),n.hourElement.setAttribute("step",n.config.hourIncrement.toString()),n.minuteElement.setAttribute("step",n.config.minuteIncrement.toString()),n.hourElement.setAttribute("min",n.config.time_24hr?"0":"1"),n.hourElement.setAttribute("max",n.config.time_24hr?"23":"12"),n.hourElement.setAttribute("maxlength","2"),n.minuteElement.setAttribute("min","0"),n.minuteElement.setAttribute("max","59"),n.minuteElement.setAttribute("maxlength","2"),n.timeContainer.appendChild($),n.timeContainer.appendChild(M),n.timeContainer.appendChild(ee),n.config.time_24hr&&n.timeContainer.classList.add("time24hr"),n.config.enableSeconds){n.timeContainer.classList.add("hasSeconds");let le=Ca(r.document,"flatpickr-second");n.secondElement=le.getElementsByTagName("input")[0],n.secondElement.value=Bt(n.latestSelectedDateObj?n.latestSelectedDateObj.getSeconds():_.seconds),n.secondElement.setAttribute("step",n.minuteElement.getAttribute("step")),n.secondElement.setAttribute("min","0"),n.secondElement.setAttribute("max","59"),n.secondElement.setAttribute("maxlength","2"),n.timeContainer.appendChild(je(r.document,"span","flatpickr-time-separator",":")),n.timeContainer.appendChild(le)}return n.config.time_24hr||(n.amPM=je(r.document,"span","flatpickr-am-pm",n.l10n.amPM[tn((n.latestSelectedDateObj?n.hourElement.value:n.config.defaultHour)>11)]),n.amPM.title=n.l10n.toggleTitle,n.amPM.tabIndex=-1,n.timeContainer.appendChild(n.amPM)),n.timeContainer}function be(){n.weekdayContainer?_a(n.weekdayContainer):n.weekdayContainer=je(r.document,"div","flatpickr-weekdays");for(let _=n.config.showMonths;_--;){let M=je(r.document,"div","flatpickr-weekdaycontainer");n.weekdayContainer.appendChild(M)}return Te(),n.weekdayContainer}function Te(){if(!n.weekdayContainer)return;let _=n.l10n.firstDayOfWeek,M=[...n.l10n.weekdays.shorthand];_>0&&_ ${M.join("")} - `}function L(){n.calendarContainer.classList.add("hasWeeks");let _=je(r.document,"div","flatpickr-weekwrapper");_.appendChild(je(r.document,"span","flatpickr-weekday",n.l10n.weekAbbreviation));let M=je(r.document,"div","flatpickr-weeks");return _.appendChild(M),{weekWrapper:_,weekNumbers:M}}function P(_,M=!0){let K=M?_:_-n.currentMonth;K<0&&n._hidePrevMonthArrow===!0||K>0&&n._hideNextMonthArrow===!0||(n.currentMonth+=K,(n.currentMonth<0||n.currentMonth>11)&&(n.currentYear+=n.currentMonth>11?1:-1,n.currentMonth=(n.currentMonth+12)%12,We("onYearChange"),G()),X(),We("onMonthChange"),Dt())}function ct(_=!0,M=!0){if(n.input.value="",n.altInput!==void 0&&(n.altInput.value=""),n.mobileInput!==void 0&&(n.mobileInput.value=""),n.selectedDates=[],n.latestSelectedDateObj=void 0,M===!0&&(n.currentYear=n._initialDate.getFullYear(),n.currentMonth=n._initialDate.getMonth()),n.config.enableTime===!0){let{hours:K,minutes:Q,seconds:se}=Zo(n.config);m(K,Q,se)}n.redraw(),_&&We("onChange")}function Je(){n.isOpen=!1,n.isMobile||(n.calendarContainer!==void 0&&n.calendarContainer.classList.remove("open"),n._input!==void 0&&n._input.classList.remove("active")),We("onClose")}function V(){n.config!==void 0&&We("onDestroy");for(let _=n._handlers.length;_--;)n._handlers[_].remove();if(n._handlers=[],n.mobileInput)n.mobileInput.parentNode&&n.mobileInput.parentNode.removeChild(n.mobileInput),n.mobileInput=void 0;else if(n.calendarContainer&&n.calendarContainer.parentNode)if(n.config.static&&n.calendarContainer.parentNode){let _=n.calendarContainer.parentNode;if(_.lastChild&&_.removeChild(_.lastChild),_.parentNode){for(;_.firstChild;)_.parentNode.insertBefore(_.firstChild,_);_.parentNode.removeChild(_)}}else n.calendarContainer.parentNode.removeChild(n.calendarContainer);n.altInput&&(n.input.type="text",n.altInput.parentNode&&n.altInput.parentNode.removeChild(n.altInput),delete n.altInput),n.input&&(n.input.type=n.input._type,n.input.classList.remove("flatpickr-input"),n.input.removeAttribute("readonly")),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(_=>{try{delete n[_]}catch(M){}})}function j(_){return n.calendarContainer.contains(_)}function q(_){if(n.isOpen&&!n.config.inline){let M=rn(_),K=j(M),se=!(M===n.input||M===n.altInput||n.element.contains(M)||_.path&&_.path.indexOf&&(~_.path.indexOf(n.input)||~_.path.indexOf(n.altInput)))&&!K&&!j(_.relatedTarget),ie=!n.config.ignoredFocusElements.some(me=>me.contains(M));se&&ie&&(n.config.allowInput&&n.setDate(n._input.value,!1,n.config.altInput?n.config.altFormat:n.config.dateFormat),n.timeContainer!==void 0&&n.minuteElement!==void 0&&n.hourElement!==void 0&&n.input.value!==""&&n.input.value!==void 0&&l(),n.close(),n.config&&n.config.mode==="range"&&n.selectedDates.length===1&&n.clear(!1))}}function te(_){if(!_||n.config.minDate&&_n.config.maxDate.getFullYear())return;let M=_,K=n.currentYear!==M;n.currentYear=M||n.currentYear,n.config.maxDate&&n.currentYear===n.config.maxDate.getFullYear()?n.currentMonth=Math.min(n.config.maxDate.getMonth(),n.currentMonth):n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&(n.currentMonth=Math.max(n.config.minDate.getMonth(),n.currentMonth)),K&&(n.redraw(),We("onYearChange"),G())}function we(_,M=!0){var ie;let K=n.parseDate(_,void 0,M);if(n.config.minDate&&K&&nn(K,n.config.minDate,M!==void 0?M:!n.minDateHasTime)<0||n.config.maxDate&&K&&nn(K,n.config.maxDate,M!==void 0?M:!n.maxDateHasTime)>0)return!1;if(!n.config.enable&&n.config.disable.length===0)return!0;if(K===void 0)return!1;let Q=!!n.config.enable,se=(ie=n.config.enable)!=null?ie:n.config.disable;for(let me=0,ue;me=ue.from.getTime()&&K.getTime()<=ue.to.getTime())return Q}return!Q}function ke(_){return n.daysContainer!==void 0?_.className.indexOf("hidden")===-1&&_.className.indexOf("flatpickr-disabled")===-1&&n.daysContainer.contains(_):!1}function Ue(_){let M=_.target===n._input,K=n._input.value.trimEnd()!==Ui();M&&K&&!(_.relatedTarget&&j(_.relatedTarget))&&n.setDate(n._input.value,!0,_.target===n.altInput?n.config.altFormat:n.config.dateFormat)}function ut(_){let M=rn(_),K=n.config.wrap?e.contains(M):M===n._input,Q=n.config.allowInput,se=n.isOpen&&(!Q||!K),ie=n.config.inline&&K&&!Q;if(_.keyCode===13&&K){if(Q)return n.setDate(n._input.value,!0,M===n.altInput?n.config.altFormat:n.config.dateFormat),n.close(),M.blur();n.open()}else if(j(M)||se||ie){let me=!!n.timeContainer&&n.timeContainer.contains(M);switch(_.keyCode){case 13:me?(_.preventDefault(),l(),rr()):Ot(_);break;case 27:_.preventDefault(),rr();break;case 8:case 46:K&&!n.config.allowInput&&(_.preventDefault(),n.clear());break;case 37:case 39:if(!me&&!K){_.preventDefault();let ue=o();if(n.daysContainer!==void 0&&(Q===!1||ue&&ke(ue))){let Pe=_.keyCode===39?1:-1;_.ctrlKey?(_.stopPropagation(),P(Pe),Z(z(1),0)):Z(void 0,Pe)}}else n.hourElement&&n.hourElement.focus();break;case 38:case 40:{_.preventDefault();let ue=_.keyCode===40?1:-1;n.daysContainer&&M.$i!==void 0||M===n.input||M===n.altInput?_.ctrlKey?(_.stopPropagation(),te(n.currentYear-ue),Z(z(1),0)):me||Z(void 0,ue*7):M===n.currentYearElement?te(n.currentYear-ue):n.config.enableTime&&(!me&&n.hourElement&&n.hourElement.focus(),l(_),n._debouncedChange());break}case 9:if(me){let ue=[n.hourElement,n.minuteElement,n.secondElement,n.amPM].concat(n.pluginElements).filter(Fe=>Fe),Pe=ue.indexOf(M);if(Pe!==-1){let Fe=ue[Pe+(_.shiftKey?-1:1)];_.preventDefault(),(Fe||n._input).focus()}}else!n.config.noCalendar&&n.daysContainer&&n.daysContainer.contains(M)&&_.shiftKey&&(_.preventDefault(),n._input.focus());break;default:break}}if(n.amPM!==void 0&&M===n.amPM)switch(_.key){case n.l10n.amPM[0].charAt(0):case n.l10n.amPM[0].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[0],f(),xn();break;case n.l10n.amPM[1].charAt(0):case n.l10n.amPM[1].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[1],f(),xn();break}(K||j(M))&&We("onKeyDown",_)}function vt(_,M="flatpickr-day"){if(n.selectedDates.length!==1||_&&(!_.classList.contains(M)||_.classList.contains("flatpickr-disabled")))return;let K=_?_.dateObj.getTime():n.days.firstElementChild.dateObj.getTime(),Q=n.parseDate(n.selectedDates[0],void 0,!0).getTime(),se=Math.min(K,n.selectedDates[0].getTime()),ie=Math.max(K,n.selectedDates[0].getTime()),me=!1,ue=0,Pe=0;for(let Me=se;Mese&&Meue)?ue=Me:Me>Q&&(!Pe||Me .${M}`)).forEach(Me=>{let bt=Me.dateObj.getTime(),ar=ue>0&&bt0&&bt>Pe;if(ar){Me.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(or=>{Me.classList.remove(or)});return}else if(me&&!ar)return;["startRange","inRange","endRange","notAllowed"].forEach(or=>{Me.classList.remove(or)}),_!==void 0&&(_.classList.add(K<=n.selectedDates[0].getTime()?"startRange":"endRange"),QK&&bt===Q&&Me.classList.add("endRange"),bt>=ue&&(Pe===0||bt<=Pe)&&Jg(bt,Q,K)&&Me.classList.add("inRange"))})}function Nt(){n.isOpen&&!n.config.static&&!n.config.inline&&Un()}function Bn(_,M=n._positionElement){if(n.isMobile===!0){if(_){_.preventDefault();let Q=rn(_);Q&&Q.blur()}n.mobileInput!==void 0&&(n.mobileInput.focus(),n.mobileInput.click()),We("onOpen");return}else if(n._input.disabled||n.config.inline)return;let K=n.isOpen;n.isOpen=!0,K||(n.calendarContainer.classList.add("open"),n._input.classList.add("active"),We("onOpen"),Un(M)),n.config.enableTime===!0&&n.config.noCalendar===!0&&n.config.allowInput===!1&&(_===void 0||!n.timeContainer.contains(_.relatedTarget))&&r.setTimeout(()=>n.hourElement.select(),50)}function Kn(_){return M=>{let K=n.config[`_${_}Date`]=n.parseDate(M,n.config.dateFormat),Q=n.config[`_${_==="min"?"max":"min"}Date`];K!==void 0&&(n[_==="min"?"minDateHasTime":"maxDateHasTime"]=K.getHours()>0||K.getMinutes()>0||K.getSeconds()>0),n.selectedDates&&(n.selectedDates=n.selectedDates.filter(se=>we(se)),!n.selectedDates.length&&_==="min"&&p(K),xn()),n.daysContainer&&(Xr(),K!==void 0?n.currentYearElement[_]=K.getFullYear().toString():n.currentYearElement.removeAttribute(_),n.currentYearElement.disabled=!!Q&&K!==void 0&&Q.getFullYear()===K.getFullYear())}}function $n(){let _=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],M={...JSON.parse(JSON.stringify(e.dataset||{})),...t},K={};n.config.parseDate=M.parseDate,n.config.formatDate=M.formatDate,Object.defineProperty(n.config,"enable",{get:()=>n.config._enable,set:ie=>{n.config._enable=Ee(ie)}}),Object.defineProperty(n.config,"disable",{get:()=>n.config._disable,set:ie=>{n.config._disable=Ee(ie)}});let Q=M.mode==="time";if(!M.dateFormat&&(M.enableTime||Q)){let ie=gt.defaultConfig.dateFormat||yr.dateFormat;K.dateFormat=M.noCalendar||Q?"H:i"+(M.enableSeconds?":S":""):ie+" H:i"+(M.enableSeconds?":S":"")}if(M.altInput&&(M.enableTime||Q)&&!M.altFormat){let ie=gt.defaultConfig.altFormat||yr.altFormat;K.altFormat=M.noCalendar||Q?"h:i"+(M.enableSeconds?":S K":" K"):ie+` h:i${M.enableSeconds?":S":""} K`}Object.defineProperty(n.config,"minDate",{get:()=>n.config._minDate,set:Kn("min")}),Object.defineProperty(n.config,"maxDate",{get:()=>n.config._maxDate,set:Kn("max")});let se=ie=>me=>{n.config[ie==="min"?"_minTime":"_maxTime"]=n.parseDate(me,"H:i:S")};Object.defineProperty(n.config,"minTime",{get:()=>n.config._minTime,set:se("min")}),Object.defineProperty(n.config,"maxTime",{get:()=>n.config._maxTime,set:se("max")}),M.mode==="time"&&(n.config.noCalendar=!0,n.config.enableTime=!0),Object.assign(n.config,K,M);for(let ie=0;ie<_.length;ie++)n.config[_[ie]]=n.config[_[ie]]===!0||n.config[_[ie]]==="true";Jo.filter(ie=>n.config[ie]!==void 0).forEach(ie=>{n.config[ie]=Go(n.config[ie]||[]).map(s)}),n.isMobile=!n.config.disableMobile&&!n.config.inline&&n.config.mode==="single"&&!n.config.disable.length&&!n.config.enable&&!n.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(let ie=0;ie-1?n.config[ue]=Go(me[ue]).map(s).concat(n.config[ue]):typeof M[ue]=="undefined"&&(n.config[ue]=me[ue])}M.altInputClass||(n.config.altInputClass=bn().className+" "+n.config.altInputClass),We("onParseConfig")}function bn(){return n.config.wrap?e.querySelector("[data-input]"):e}function wn(){typeof n.config.locale!="object"&&typeof gt.l10ns[n.config.locale]=="undefined"&&n.config.errorHandler(new Error(`flatpickr: invalid locale ${n.config.locale}`)),n.l10n={...gt.l10ns.default,...typeof n.config.locale=="object"?n.config.locale:n.config.locale!=="default"?gt.l10ns[n.config.locale]:void 0},Jn.D=`(${n.l10n.weekdays.shorthand.join("|")})`,Jn.l=`(${n.l10n.weekdays.longhand.join("|")})`,Jn.M=`(${n.l10n.months.shorthand.join("|")})`,Jn.F=`(${n.l10n.months.longhand.join("|")})`,Jn.K=`(${n.l10n.amPM[0]}|${n.l10n.amPM[1]}|${n.l10n.amPM[0].toLowerCase()}|${n.l10n.amPM[1].toLowerCase()})`,{...t,...JSON.parse(JSON.stringify(e.dataset||{}))}.time_24hr===void 0&>.defaultConfig.time_24hr===void 0&&(n.config.time_24hr=n.l10n.time_24hr),n.formatDate=ku(n),n.parseDate=Qo({config:n.config,l10n:n.l10n})}function Un(_){if(typeof n.config.position=="function")return void n.config.position(n,_);if(n.calendarContainer===void 0)return;We("onPreCalendarPosition");let M=_||n._positionElement,K=Array.prototype.reduce.call(n.calendarContainer.children,(Cr,Vi)=>Cr+Vi.offsetHeight,0),Q=n.calendarContainer.offsetWidth,se=n.config.position.split(" "),ie=se[0],me=se.length>1?se[1]:null,ue=M.getBoundingClientRect(),Pe=r.innerHeight-ue.bottom,Fe=ie==="above"||ie!=="below"&&PeK,Me=r.pageYOffset+ue.top+(Fe?-K-2:M.offsetHeight+2);if(Bt(n.calendarContainer,"arrowTop",!Fe),Bt(n.calendarContainer,"arrowBottom",Fe),n.config.inline)return;let Qt=r.pageXOffset+ue.left,bt=!1,ar=!1;me==="center"?(Qt-=(Q-ue.width)/2,bt=!0):me==="right"&&(Qt-=Q-ue.width,ar=!0),Bt(n.calendarContainer,"arrowLeft",!bt&&!ar),Bt(n.calendarContainer,"arrowCenter",bt),Bt(n.calendarContainer,"arrowRight",ar);let or=r.document.body.offsetWidth-(r.pageXOffset+ue.right),Wi=Qt+Q>r.document.body.offsetWidth,Za=or+Q>r.document.body.offsetWidth;if(Bt(n.calendarContainer,"rightMost",Wi),!n.config.static)if(n.calendarContainer.style.top=`${Me}px`,!Wi)n.calendarContainer.style.left=`${Qt}px`,n.calendarContainer.style.right="auto";else if(!Za)n.calendarContainer.style.left="auto",n.calendarContainer.style.right=`${or}px`;else{let Cr=Gr();if(Cr===void 0)return;let Vi=r.document.body.offsetWidth,bl=Math.max(0,Vi/2-Q/2),wl=".flatpickr-calendar.centerMost:before",xf=".flatpickr-calendar.centerMost:after",R=Cr.cssRules.length,w=`{left:${ue.left}px;right:auto;}`;Bt(n.calendarContainer,"rightMost",!1),Bt(n.calendarContainer,"centerMost",!0),Cr.insertRule(`${wl},${xf}${w}`,R),n.calendarContainer.style.left=`${bl}px`,n.calendarContainer.style.right="auto"}}function Gr(){let _=null;for(let M=0;Mme.classList&&me.classList.contains("flatpickr-day")&&!me.classList.contains("flatpickr-disabled")&&!me.classList.contains("notAllowed"),K=Su(rn(_),M);if(K===void 0)return;let Q=K,se=n.latestSelectedDateObj=new Date(Q.dateObj.getTime()),ie=(se.getMonth()n.currentMonth+n.config.showMonths-1)&&n.config.mode!=="range";if(n.selectedDateElem=Q,n.config.mode==="single")n.selectedDates=[se];else if(n.config.mode==="multiple"){let me=Ye(se);me?n.selectedDates.splice(parseInt(me),1):n.selectedDates.push(se)}else n.config.mode==="range"&&(n.selectedDates.length===2&&n.clear(!1,!1),n.latestSelectedDateObj=se,n.selectedDates.push(se),nn(se,n.selectedDates[0],!0)!==0&&n.selectedDates.sort((me,ue)=>me.getTime()-ue.getTime()));if(f(),ie){let me=n.currentYear!==se.getFullYear();n.currentYear=se.getFullYear(),n.currentMonth=se.getMonth(),me&&(We("onYearChange"),G()),We("onMonthChange")}if(Dt(),X(),xn(),!ie&&n.config.mode!=="range"&&n.config.showMonths===1?W(Q):n.selectedDateElem!==void 0&&n.hourElement===void 0&&n.selectedDateElem&&n.selectedDateElem.focus(),n.hourElement!==void 0&&n.hourElement!==void 0&&n.hourElement.focus(),n.config.closeOnSelect){let me=n.config.mode==="single"&&!n.config.enableTime,ue=n.config.mode==="range"&&n.selectedDates.length===2&&!n.config.enableTime;(me||ue)&&rr()}x()}let Vt={locale:[wn,De],showMonths:[pe,u,be],minDate:[C],maxDate:[C],positionElement:[En],clickOpens:[()=>{n.config.clickOpens===!0?(b(n._input,"focus",n.open),b(n._input,"click",n.open)):(n._input.removeEventListener("focus",n.open),n._input.removeEventListener("click",n.open))}]};function yt(_,M){if(_!==null&&typeof _=="object"){Object.assign(n.config,_);for(let K in _)Vt[K]!==void 0&&Vt[K].forEach(Q=>Q())}else n.config[_]=M,Vt[_]!==void 0?Vt[_].forEach(K=>K()):Jo.indexOf(_)>-1&&(n.config[_]=Go(M));n.redraw(),xn(!0)}function Y(_,M){let K=[];if(Array.isArray(_))K=_.map(Q=>n.parseDate(Q,M));else if(_.getDate||typeof _=="number")K=[n.parseDate(_,M)];else if(typeof _=="string")switch(n.config.mode){case"single":case"time":K=[n.parseDate(_,M)];break;case"multiple":K=_.split(n.config.conjunction).map(Q=>n.parseDate(Q,M));break;case"range":K=_.split(n.l10n.rangeSeparator).map(Q=>n.parseDate(Q,M));break;default:break}else n.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(_)}`));n.selectedDates=n.config.allowInvalidPreload?K:K.filter(Q=>Q.getDate&&we(Q,!1)),n.config.mode==="range"&&n.selectedDates.sort((Q,se)=>Q.getTime()-se.getTime())}function oe(_,M=!1,K=n.config.dateFormat){if(_!==0&&!_||Array.isArray(_)&&_.length===0)return n.clear(M);Y(_,K),n.latestSelectedDateObj=n.selectedDates[n.selectedDates.length-1],n.redraw(),C(void 0,M),p(),n.selectedDates.length===0&&n.clear(!1),xn(M),M&&We("onChange")}function Ee(_){return _.slice().map(M=>typeof M=="string"||typeof M=="number"||M.getDate?n.parseDate(M,void 0,!0):M&&typeof M=="object"&&M.from&&M.to?{from:n.parseDate(M.from,void 0),to:n.parseDate(M.to,void 0)}:M).filter(M=>M)}function ze(){n.selectedDates=[],n.now=n.parseDate(n.config.now)||new Date;let _=n.config.defaultDate||((n.input.nodeName==="INPUT"||n.input.nodeName==="TEXTAREA")&&n.input.placeholder&&n.input.value===n.input.placeholder?null:n.input.value);_&&Y(_,n.config.dateFormat),n._initialDate=n.selectedDates.length>0?n.selectedDates[0]:n.config.minDate&&n.config.minDate.getTime()>n.now.getTime()?n.config.minDate:n.config.maxDate&&n.config.maxDate.getTime()0&&(n.latestSelectedDateObj=n.selectedDates[0]),n.config.minTime!==void 0&&(n.config.minTime=n.parseDate(n.config.minTime,"H:i")),n.config.maxTime!==void 0&&(n.config.maxTime=n.parseDate(n.config.maxTime,"H:i")),n.minDateHasTime=!!n.config.minDate&&(n.config.minDate.getHours()>0||n.config.minDate.getMinutes()>0||n.config.minDate.getSeconds()>0),n.maxDateHasTime=!!n.config.maxDate&&(n.config.maxDate.getHours()>0||n.config.maxDate.getMinutes()>0||n.config.maxDate.getSeconds()>0)}function Tt(){if(n.input=bn(),!n.input){n.config.errorHandler(new Error("Invalid input element specified"));return}n.input._type=n.input.type,n.input.type="text",n.input.classList.add("flatpickr-input"),n._input=n.input,n.config.altInput&&(n.altInput=je(r.document,n.input.nodeName,n.config.altInputClass),n._input=n.altInput,n.altInput.placeholder=n.input.placeholder,n.altInput.disabled=n.input.disabled,n.altInput.required=n.input.required,n.altInput.tabIndex=n.input.tabIndex,n.altInput.type="text",n.input.setAttribute("type","hidden"),!n.config.static&&n.input.parentNode&&n.input.parentNode.insertBefore(n.altInput,n.input.nextSibling)),n.config.allowInput||n._input.setAttribute("readonly","readonly"),En()}function En(){n._positionElement=n.config.positionElement||n._input}function qe(){let _=n.config.enableTime?n.config.noCalendar?"time":"datetime-local":"date";n.mobileInput=je(r.document,"input",n.input.className+" flatpickr-mobile"),n.mobileInput.tabIndex=1,n.mobileInput.type=_,n.mobileInput.disabled=n.input.disabled,n.mobileInput.required=n.input.required,n.mobileInput.placeholder=n.input.placeholder,n.mobileFormatStr=_==="datetime-local"?"Y-m-d\\TH:i:S":_==="date"?"Y-m-d":"H:i:S",n.selectedDates.length>0&&(n.mobileInput.defaultValue=n.mobileInput.value=n.formatDate(n.selectedDates[0],n.mobileFormatStr)),n.config.minDate&&(n.mobileInput.min=n.formatDate(n.config.minDate,"Y-m-d")),n.config.maxDate&&(n.mobileInput.max=n.formatDate(n.config.maxDate,"Y-m-d")),n.input.getAttribute("step")&&(n.mobileInput.step=String(n.input.getAttribute("step"))),n.input.type="hidden",n.altInput!==void 0&&(n.altInput.type="hidden");try{n.input.parentNode&&n.input.parentNode.insertBefore(n.mobileInput,n.input.nextSibling)}catch(M){}b(n.mobileInput,"change",M=>{n.setDate(rn(M).value,!1,n.mobileFormatStr),We("onChange"),We("onClose")})}function ot(_){if(n.isOpen===!0)return n.close();n.open(_)}function We(_,M){if(n.config===void 0)return;let K=n.config[_];if(K!==void 0&&K.length>0)for(let Q=0;K[Q]&&Q=0&&nn(_,n.selectedDates[1])<=0}function Dt(){n.config.noCalendar||n.isMobile||!n.monthNav||(n.yearElements.forEach((_,M)=>{let K=new Date(n.currentYear,n.currentMonth,1);K.setMonth(n.currentMonth+M),n.config.showMonths>1||n.config.monthSelectorType==="static"?n.monthElements[M].textContent=xa(K.getMonth(),n.config.shorthandCurrentMonth,n.l10n)+" ":n.monthsDropdownContainer.value=K.getMonth().toString(),_.value=K.getFullYear().toString()}),n._hidePrevMonthArrow=n.config.minDate!==void 0&&(n.currentYear===n.config.minDate.getFullYear()?n.currentMonth<=n.config.minDate.getMonth():n.currentYearn.config.maxDate.getMonth():n.currentYear>n.config.maxDate.getFullYear()))}function Ui(_){let M=_||(n.config.altInput?n.config.altFormat:n.config.dateFormat);return n.selectedDates.map(K=>n.formatDate(K,M)).filter((K,Q,se)=>n.config.mode!=="range"||n.config.enableTime||se.indexOf(K)===Q).join(n.config.mode!=="range"?n.config.conjunction:n.l10n.rangeSeparator)}function xn(_=!0){n.mobileInput!==void 0&&n.mobileFormatStr&&(n.mobileInput.value=n.latestSelectedDateObj!==void 0?n.formatDate(n.latestSelectedDateObj,n.mobileFormatStr):""),n.input.value=Ui(n.config.dateFormat),n.altInput!==void 0&&(n.altInput.value=Ui(n.config.altFormat)),_!==!1&&We("onValueUpdate")}function yl(_){let M=rn(_),K=n.prevMonthNav.contains(M),Q=n.nextMonthNav.contains(M);K||Q?P(K?-1:1):n.yearElements.indexOf(M)>=0?M.select():M.classList.contains("arrowUp")?n.changeYear(n.currentYear+1):M.classList.contains("arrowDown")&&n.changeYear(n.currentYear-1)}function Xa(_){_.preventDefault();let M=_.type==="keydown",K=rn(_),Q=K;n.amPM!==void 0&&K===n.amPM&&(n.amPM.textContent=n.l10n.amPM[tn(n.amPM.textContent===n.l10n.amPM[0])]);let se=parseFloat(Q.getAttribute("min")),ie=parseFloat(Q.getAttribute("max")),me=parseFloat(Q.getAttribute("step")),ue=parseInt(Q.value,10),Pe=_.delta||(M?_.which===38?1:-1:0),Fe=ue+me*Pe;if(typeof Q.value!="undefined"&&Q.value.length===2){let Me=Q===n.hourElement,Qt=Q===n.minuteElement;Feie&&(Fe=Q===n.hourElement?Fe-ie-tn(!n.amPM):se,Qt&&N(void 0,1,n.hourElement)),n.amPM&&Me&&(me===1?Fe+ue===23:Math.abs(Fe-ue)>me)&&(n.amPM.textContent=n.l10n.amPM[tn(n.amPM.textContent===n.l10n.amPM[0])]),Q.value=Ht(Fe)}}return a(),n}function es(e,t){let r=Array.prototype.slice.call(e).filter(i=>i.onClickEvent),n=[];for(let i=0;i{gt.l10ns.default={...gt.l10ns.default,...e}};gt.setDefaults=e=>{gt.defaultConfig={...gt.defaultConfig,...e}};gt.parseDate=Qo({});gt.formatDate=ku({});gt.compareDates=nn;typeof jQuery!="undefined"&&typeof jQuery.fn!="undefined"&&(jQuery.fn.flatpickr=function(e){return es(this,e)});Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+(typeof e=="string"?parseInt(e,10):e))};typeof window!="undefined"&&(window.flatpickr=gt);var ts=gt;function ns(e,t,r,n,i){return e.document.body.createDiv({cls:`${$("date-picker")} ${$("ignore-click-outside")}`},a=>{a.style.left=`${r.x||0}px`,a.style.top=`${r.y||0}px`,a.createEl("input",{type:"text"},o=>{a.win.setTimeout(()=>{let s=null,u=d=>{d.target instanceof d.view.HTMLElement&&d.target.closest(`.${$("date-picker")}`)===null&&c()},l=d=>{d.key==="Escape"&&c()},c=()=>{s.destroy(),a.remove(),e.document.body.removeEventListener("click",u),e.document.removeEventListener("keydown",l)};s=ts(o,{locale:Yo(t),defaultDate:i,inline:!0,onChange:d=>{n(d),c()},win:e}),a.win.setTimeout(()=>{let d=a.clientHeight,f=a.clientWidth;r.y+d>e.innerHeight&&(a.style.top=`${(r.y||0)-d}px`),r.x+f>e.innerWidth&&(a.style.left=`${(r.x||0)-f}px`)}),e.document.body.addEventListener("click",u),e.document.addEventListener("keydown",l)})})})}function rs({stateManager:e,boardModifiers:t,item:r,hasDate:n,path:i}){let a=e.getSetting("date-format"),o=e.getSetting("link-date-to-daily-note"),s=e.getSetting("date-trigger"),u=o?"(?:\\[[^\\]]+\\]\\([^)]+\\)|\\[\\[[^\\]]+\\]\\])":"{[^}]+}",l=new RegExp(`(^|\\s)${Ln(s)}${u}`);return c=>{let d=c[0],f=(0,nt.moment)(d).format(a),p=o?Vo(e.app,f):`{${f}}`,m=r.data.titleRaw;n?m=r.data.titleRaw.replace(l,`$1${s}${p}`):m=`${r.data.titleRaw} ${s}${p}`,e.updateItemContent(r,m).then(y=>{t.updateItem(i,y)}).catch(y=>{e.setError(y),console.error(y)})}}function _u(e){let t=e.getSetting("time-format"),r=[];for(let n=0;n<24;n++)r.push((0,nt.moment)({hour:n}).format(t)),r.push((0,nt.moment)({hour:n,minute:15}).format(t)),r.push((0,nt.moment)({hour:n,minute:30}).format(t)),r.push((0,nt.moment)({hour:n,minute:45}).format(t));return r}function is(e,t,r,n,i){let a=$("time-picker"),o=t.getSetting("time-format"),s=i==null?void 0:i.format(o);e.document.body.createDiv({cls:`${a} ${$("ignore-click-outside")}`},u=>{let l=_u(t),c=b=>{b.target instanceof b.view.HTMLElement&&b.target.hasClass($("time-picker-item"))&&b.target.dataset.value&&(n(b.target.dataset.value),p())},d=b=>{b.target instanceof b.view.HTMLElement&&b.target.closest(`.${a}`)===null&&p()},f=b=>{b.key==="Escape"&&p()},p=()=>{u.remove(),u.removeEventListener("click",c),e.document.body.removeEventListener("click",d),e.document.removeEventListener("keydown",f)};u.style.left=`${r.x||0}px`,u.style.top=`${r.y||0}px`;let m=null,y=null;l.forEach((b,x)=>{let D=b===s;u.createDiv({cls:`${$("time-picker-item")} ${D?"is-selected":""}`,text:b},C=>{C.createEl("span",{cls:$("time-picker-check"),prepend:!0},A=>{(0,nt.setIcon)(A,"checkmark")}),x%4==0&&C.addClass("is-hour"),C.dataset.value=b,D&&(m=C),x===Math.floor(l.length/2)&&(y=C)})}),u.win.setTimeout(()=>{var D;let b=u.clientHeight,x=u.clientWidth;r.y+b>e.innerHeight&&(u.style.top=`${(r.y||0)-b}px`),r.x+x>e.innerWidth&&(u.style.left=`${(r.x||0)-x}px`),(D=m||y)==null||D.scrollIntoView({block:"center",inline:"nearest"}),u.addEventListener("click",c),e.document.body.addEventListener("click",d),e.document.addEventListener("keydown",f)})})}function as({stateManager:e,boardModifiers:t,item:r,hasTime:n,path:i}){let a=e.getSetting("time-trigger"),o=new RegExp(`(^|\\s)${Ln(a)}{([^}]+)}`);return s=>{let u=r.data.titleRaw;n?u=r.data.titleRaw.replace(o,`$1${a}{${s}}`):u=`${r.data.titleRaw} ${a}{${s}}`,e.updateItemContent(r,u).then(l=>{t.updateItem(i,l)}).catch(l=>{e.setError(l),console.error(l)})}}function Xg(e){let t=e.data.metadata.date,r=[];t&&(t.isSame(new Date,"day")&&r.push("is-today"),t.isAfter(new Date,"day")&&r.push("is-future"),t.isBefore(new Date,"day")&&r.push("is-past")),e.data.isComplete&&r.push("is-complete");for(let n of e.data.metadata.tags)r.push(`has-tag-${n.slice(1)}`);return r}function Kr(e,t,r,n){return e.app.fileManager.generateMarkdownLink(t,r,n)}function eS(e,t,r){return nt.htmlToMarkdown?(0,nt.htmlToMarkdown)(r):nt.MarkdownSourceView.prototype.handleDataTransfer.call({app:e.app},t)}function tS(e){return e.replace(/^\[(.*)\]\(app:\/\/obsidian.md\/(.*)\)$/,"[$1]($2)")}function Cu(e){var r;let t=e.require("electron").remote.clipboard;if(process.platform==="darwin"){if(t.has("NSFilenamesPboardType"))return((r=t.read("NSFilenamesPboardType").match(/.*<\/string>/g))==null?void 0:r.map(n=>n.replace(/|<\/string>/g,"")))||[];{let n=t.readImage("clipboard");return n.isEmpty()?[t.read("public.file-url").replace("file://","")].filter(i=>i):[{buffer:n.toPNG(),mimeType:"image/png",originalName:`Pasted image ${(0,nt.moment)().format("YYYYMMDDHHmmss")}.png`}]}}else if(t.has("CF_HDROP")){let n=t.read("CF_HDROP")||"",i=[...n].filter((o,s)=>n.charCodeAt(s)!==0).join("").replace(/\\/g,"\\"),a=i.match(/[a-zA-Z]:\\/);if(a){let o=i.indexOf(a[0]);return o!==0&&(i=i.slice(o)),i.split(a[0]).filter(s=>s).map(s=>a+s)}}else{let n=t.readImage("clipboard");return n.isEmpty()?[t.readBuffer("FileNameW").toString("ucs2").replace(RegExp(String.fromCharCode(0),"g"),"")].filter(i=>i):[{buffer:n.toPNG(),mimeType:"image/png",originalName:`Pasted image ${(0,nt.moment)().format("YYYYMMDDHHmmss")}.png`}]}return null}function nS(e){return e.split("\\").pop().split("/").pop()}async function rS(e,t,r,n){let i=await e.app.vault.getAvailablePathForAttachments(t,r,e.file),a=await e.app.vault.createBinary(i,n);return Kr(e,a,e.file.path)}async function iS(e,t){let r=Cu(t);if(!r||r.length===0)return null;let n=t.require("fs/promises"),i=t.require("path");return(await Promise.all(r.map(async a=>{if(typeof a=="string"){let s=nS(a).split("."),u=s.pop(),l=s.join("."),c=await e.app.vault.getAvailablePathForAttachments(l,u,e.file),d=e.app.vault.adapter.basePath;await n.copyFile(a,i.join(d,c)),await new Promise(p=>t.setTimeout(p,50));let f=e.app.vault.getAbstractFileByPath(c);return Kr(e,f,e.file.path)}else{let o=a.originalName.split("."),s=o.pop(),u=o.join(".");return await rS(e,u,s,a.buffer)}}))).filter(a=>a)}function Zg(e,t,r){return Promise.all(t.map(n=>{let i=n.name.split("."),a=i.pop(),o=i.join(".");if(r){switch(n.type){case"text/jpg":a="jpg";break;case"text/jpeg":a="jpeg";break;case"text/png":a="png";break}o="Pasted image "+(0,nt.moment)().format("YYYYMMDDHHmmss")}return new Promise((s,u)=>{let l=new FileReader;l.onload=async c=>{try{let d=await e.app.vault.getAvailablePathForAttachments(o,a,e.file),f=await e.app.vault.createBinary(d,c.target.result);s(Kr(e,f,e.file.path))}catch(d){console.error(d),u(d)}},l.readAsArrayBuffer(n)})}))}async function aS(e,t,r){let n=!t.view,i=n?e.getAView().isShiftPressed:!1,a=n?t.clipboardData:t.dataTransfer,o=n&&nt.Platform.isDesktopApp?r.require("electron").remote.clipboard:null,s=o?o.availableFormats():[];if(n){if(n&&!i&&!s.includes("text/rtf")){if(nt.Platform.isDesktopApp){let m=await iS(e,r);if(m==null?void 0:m.length)return m}let f=[],p=t.clipboardData.items;for(let m in p){let y=p[m];y.kind==="file"&&f.push(y.getAsFile())}if(f.length)return await Zg(e,f,!0)}}else{let f=await lc(t);if(f.length)return await Zg(e,f)}let u=a.getData("text/html"),l=a.getData("text/plain"),c=a.getData("text/uri-list"),d=i?l||u:eS(e,a,u);return[tS(d||c||l||u||"").trim()]}async function os(e,t,r){let n=e.app.dragManager.draggable,i=t.view?t.dataTransfer:t.clipboardData;switch(n==null?void 0:n.type){case"file":return[Kr(e,n.file,e.file.path)];case"files":return n.files.map(a=>Kr(e,a,e.file.path));case"folder":return n.file.children.map(a=>a instanceof nt.TFolder?null:Kr(e,a,e.file.path)).filter(a=>a);case"link":{let a=n.file?Kr(e,n.file,(0,nt.parseLinktext)(n.linktext).subpath):`[[${n.linktext}]]`,o=new DOMParser().parseFromString(i.getData("text/html"),"text/html").documentElement.textContent;return a=a.replace(/]]$/,`|${o}]]`).replace(/^\[[^\]].+]\(/,`[${o}](`),[a]}default:return await aS(e,t,r)}}h();function ss(e,t){let r,n,i=(...a)=>{r=a,!n&&(n=e.requestAnimationFrame(()=>{n=null,t(...r)}))};return i.cancel=()=>{!n||(e.cancelAnimationFrame(n),n=null)},i}var ev={outOfTheWay:"cubic-bezier(0.2, 0, 0, 1)",drop:"cubic-bezier(.2,1,.1,1)"};var Si={outOfTheWay:200,minDropTime:330,maxDropTime:550},br=`${Si.outOfTheWay}ms ${ev.outOfTheWay}`;var ln={none:"none",fluid:`opacity ${br}`,snap:`transform ${br}, opacity ${br}`,drop:e=>{let t=`${e}ms ${ev.drop}`;return`transform ${t}, opacity ${t}`},outOfTheWay:`transform ${br}`,placeholder:`height ${br}, width ${br}, margin ${br}, border-color ${br}`},oS=(e,t)=>e.x===t.x&&e.y===t.y,sS={x:0,y:0},tv=e=>oS(e,sS)?void 0:`translate(${e.x}px, ${e.y}px)`,nv={moveTo:tv,drop:e=>tv(e)},lS=Si.maxDropTime-Si.minDropTime,rv=1500,cS=.6;function _i({position:e,destination:t,isCancel:r}){let n=ci(e,t);if(n<=0)return Si.minDropTime;if(n>=rv)return Si.maxDropTime;let i=n/rv,a=Si.minDropTime+lS*i,o=r?a*cS:a;return Math.round(o)}function Dn(e,t,r){e.style.getPropertyValue(t)!==r&&e.style.setProperty(t,r)}function ls(e,t){e.style.getPropertyValue(t)&&e.style.removeProperty(t)}h();h();var Mn;(function(i){i[i.TitleAsc=0]="TitleAsc",i[i.TitleDsc=1]="TitleDsc",i[i.DateAsc=2]="DateAsc",i[i.DateDsc=3]="DateDsc"})(Mn||(Mn={}));var Ge={Item:"item",Lane:"lane",Board:"board",MetadataSetting:"metadata-setting",TagColorSetting:"tag-color"},cs={accepts:[Ge.Item],type:Ge.Item,children:[]},wr={accepts:[Ge.Lane],type:Ge.Lane},us={accepts:[],type:Ge.Board},ds={accepts:[Ge.MetadataSetting],type:Ge.MetadataSetting,children:[]},fs={accepts:[],type:Ge.TagColorSetting,children:[]};function Tu(e,t,r,n,i){let a="htmldnd",o=Re(),s=e-75,u=e+75,l=t-25,c=t+25;return{scopeId:a,entityId:`${a}-${o}`,initial:[s,l,u,c],getParentScrollState(){return on},getParentScrollShift(){return Pn},recalcInitial(){},getHitbox(){return this.initial},getPath(){return[]},getData(){return{viewId:n,type:Ge.Item,id:o,content:r,accepts:[],win:i}}}}var Mu=class{constructor(t,r,n,i){this.isHTMLDragging=!1;this.dragOverTimeout=0;this.win=t,this.hitboxEntities=n,this.scrollEntities=i,this.emitter=r}getDragEventData(){return{dragEntity:this.dragEntity,dragEntityId:this.dragEntityId,dragEntityMargin:this.dragEntityMargin,dragOrigin:this.dragOrigin,dragOriginHitbox:this.dragOriginHitbox,dragPosition:this.dragPosition,primaryIntersection:this.primaryIntersection,scrollIntersection:this.scrollIntersection}}dragStart(t,r){var a;let n=(r==null?void 0:r.dataset.hitboxid)||t.currentTarget.dataset.hitboxid;if(!n)return;let i=getComputedStyle(r||t.currentTarget);this.dragEntityId=n,this.dragOrigin={x:t.pageX,y:t.pageY},this.dragPosition={x:t.pageX,y:t.pageY},this.dragEntity=this.hitboxEntities.get(n),this.dragOriginHitbox=(a=this.dragEntity)==null?void 0:a.getHitbox(),this.dragEntityMargin=[parseFloat(i.marginLeft)||0,parseFloat(i.marginTop)||0,parseFloat(i.marginRight)||0,parseFloat(i.marginBottom)||0],this.emitter.emit("dragStart",this.getDragEventData())}dragStartHTML(t,r){this.isHTMLDragging=!0;let n=Tu(t.pageX,t.pageY,[],r,t.view);this.dragEntityId=n.entityId,this.dragOrigin={x:t.pageX,y:t.pageY},this.dragPosition={x:t.pageX,y:t.pageY},this.dragEntity=n,this.dragOriginHitbox=n.getHitbox(),this.dragEntityMargin=[0,0,0,0],this.emitter.emit("dragStart",this.getDragEventData())}dragMove(t){this.dragPosition={x:t.pageX,y:t.pageY},this.emitter.emit("dragMove",this.getDragEventData()),this.calculateDragIntersect()}dragMoveHTML(t){this.dragPosition={x:t.pageX,y:t.pageY},this.emitter.emit("dragMove",this.getDragEventData()),this.calculateDragIntersect()}dragEnd(t){this.emitter.emit("dragEnd",this.getDragEventData()),this.dragEntityMargin=void 0,this.dragEntity=void 0,this.dragEntityId=void 0,this.dragOrigin=void 0,this.dragOriginHitbox=void 0,this.dragPosition=void 0,this.scrollIntersection=void 0,this.primaryIntersection=void 0}dragEndHTML(t,r,n,i){this.isHTMLDragging=!1,i||(this.dragEntity=Tu(t.pageX,t.pageY,n,r,t.view),this.emitter.emit("dragEnd",this.getDragEventData())),this.dragEntityMargin=void 0,this.dragEntity=void 0,this.dragEntityId=void 0,this.dragOrigin=void 0,this.dragOriginHitbox=void 0,this.dragPosition=void 0,this.scrollIntersection=void 0,this.primaryIntersection=void 0,i&&this.emitter.emit("dragEnd",this.getDragEventData())}onHTMLDragLeave(t){this.win.clearTimeout(this.dragOverTimeout),this.dragOverTimeout=this.win.setTimeout(t,351)}calculateDragIntersect(){if(!this.dragEntity||!this.dragPosition||!this.dragOrigin||!this.dragOriginHitbox)return;let{type:t,win:r}=this.dragEntity.getData(),n=[],i=[],a=[],o=[];if(this.hitboxEntities.forEach(l=>{let c=l.getData();r===c.win&&c.accepts.includes(t)&&(n.push(l),i.push(l.getHitbox()))}),this.scrollEntities.forEach(l=>{let c=l.getData();r===c.win&&c.accepts.includes(t)&&(a.push(l),o.push(l.getHitbox()))}),n.length===0&&a.length===0)return;let s=Ap(this.dragOriginHitbox,this.dragOrigin,this.dragPosition);this.handleScrollIntersect(s,this.dragEntity.entityId,o,a)||this.handleHitboxIntersect(s,this.dragEntity.entityId,i,n)}handleScrollIntersect(t,r,n,i){let a=(0,Du.default)([t],n).map(s=>i[s[1]]),o=Mp(a,t,r);if(this.scrollIntersection&&(!o||o[0]!==this.scrollIntersection[0])){let[s,u]=this.scrollIntersection,l=s.getData(),c=s.entityId,d=l.side;this.emitter.emit("endDragScroll",{...this.getDragEventData(),scrollEntity:s,scrollEntityId:c,scrollEntitySide:d,scrollStrength:u},c),this.scrollIntersection=void 0}if(o&&(!this.scrollIntersection||this.scrollIntersection[0]!==o[0])){let[s,u]=o,l=s.getData(),c=s.entityId,d=l.side;this.emitter.emit("beginDragScroll",{...this.getDragEventData(),scrollEntity:s,scrollEntityId:c,scrollEntitySide:d,scrollStrength:u},c),this.scrollIntersection=o}else if(o&&this.scrollIntersection&&o[0]===this.scrollIntersection[0]){let[s,u]=o,l=s.getData(),c=s.entityId,d=l.side;this.emitter.emit("updateDragScroll",{...this.getDragEventData(),scrollEntity:s,scrollEntityId:c,scrollEntitySide:d,scrollStrength:u},c),this.scrollIntersection=o}return!!o}handleHitboxIntersect(t,r,n,i){let a=(0,Du.default)([t],n).map(s=>i[s[1]]),o=Bl(a,t,r);this.primaryIntersection&&this.primaryIntersection!==o&&(this.emitter.emit("dragLeave",this.getDragEventData(),this.primaryIntersection.entityId),this.primaryIntersection=void 0),o&&this.primaryIntersection!==o&&(this.emitter.emit("dragEnter",{...this.getDragEventData(),primaryIntersection:o},o.entityId),this.primaryIntersection=o)}},Ci=e=>{e.preventDefault(),e.stopPropagation()};function Ti(e,t){let r=F.useContext(kt);F.useEffect(()=>{let n=e.current,i=t.current;if(!r||!n||!i)return;let a=s=>{if(s.defaultPrevented||s.target.dataset.ignoreDrag||s.button!==0&&s.buttons!==1)return;let u=s.view,l=["pen","touch"].includes(s.pointerType);l||(s.stopPropagation(),s.preventDefault());let c=s,d={x:s.pageX,y:s.pageY},f=!1,p=0;l&&(u.addEventListener("contextmenu",Ci,!0),p=u.setTimeout(()=>{r.dragManager.dragStart(c,n),f=!0,u.addEventListener("touchmove",Ci,{passive:!1})},500));let m=ss(u,b=>{l?f?r.dragManager.dragMove(b):ci(d,{x:b.pageX,y:b.pageY})>5&&(u.clearTimeout(p),u.removeEventListener("touchmove",Ci),u.removeEventListener("contextmenu",Ci,!0),u.removeEventListener("pointermove",m),u.removeEventListener("pointerup",y),u.removeEventListener("pointercancel",y)):f?r.dragManager.dragMove(b):ci(d,{x:b.pageX,y:b.pageY})>5&&(r.dragManager.dragStart(c,n),f=!0)}),y=b=>{u.clearTimeout(p),f=!1,r.dragManager.dragEnd(b),u.removeEventListener("pointermove",m),u.removeEventListener("pointerup",y),u.removeEventListener("pointercancel",y),l&&(u.removeEventListener("contextmenu",Ci,!0),u.removeEventListener("touchmove",Ci))};u.addEventListener("pointermove",m),u.addEventListener("pointerup",y),u.addEventListener("pointercancel",y)},o=s=>{s.stopPropagation()};return i.addEventListener("pointerdown",a),i.addEventListener("touchstart",o),()=>{i.removeEventListener("pointerdown",a),i.removeEventListener("touchstart",o)}},[e,t,r])}function iv(e){let t=F.useContext(kt),r=F.useCallback(i=>{t.dragManager.isHTMLDragging?(i.preventDefault(),t.dragManager.dragMoveHTML(i)):t.dragManager.dragStartHTML(i,e.getAView().id),t.dragManager.onHTMLDragLeave(()=>{t.dragManager.dragEndHTML(i,e.getAView().id,[],!0)})},[t,e]),n=F.useCallback(async i=>{t.dragManager.dragEndHTML(i,e.getAView().id,await os(e,i,activeWindow),!1)},[t,e]);return{onDragOver:r,onDrop:n}}h();var ov=ge(xt());h();var av=ge(require("obsidian"));function Kt({name:e,className:t}){return g("span",{"data-icon":e,className:`${$("icon")} ${t||""}`,ref:r=>{r&&(0,av.setIcon)(r,e)}})}var sv=F.memo(function({shouldMarkItemsComplete:t,path:r,item:n,stateManager:i,boardModifiers:a}){let o=i.useSetting("show-checkboxes"),[s,u]=F.useState(!1),[l,c]=F.useState(!1);return F.useEffect(()=>{if(l){let d=f=>{f.metaKey||f.ctrlKey?u(!0):u(!1)};return window.addEventListener("keydown",d),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",d),window.removeEventListener("keyup",d)}}},[l]),t||o?g("div",{onMouseEnter:d=>{c(!0),(d.ctrlKey||d.metaKey)&&u(!0)},onMouseLeave:()=>{c(!1),s&&u(!1)},className:$("item-prefix-button-wrapper")},o&&!s&&g("input",{onChange:()=>{a.updateItem(r,(0,ov.default)(n,{data:{$toggle:["isComplete"]}}))},type:"checkbox",className:"task-list-item-checkbox",checked:!!n.data.isComplete}),(s||!o&&t)&&g("button",{onClick:()=>{a.archiveItem(r)},className:$("item-prefix-button"),"aria-label":s?void 0:"Archive card"},g(Kt,{name:"sheets-in-box"}))):null});h();var $y=ge(require("obsidian"));h();var cv=ge(require("obsidian"));h();var Iu;function lv(e){if(e.nodeName!=="TEXTAREA")return!1;if(typeof Iu=="undefined"){let t=e.doc.createElement("textarea");t.value=1,Iu=!!t.firstChild}return Iu}function _a(e,t){var i;e.focus();let r=e.doc;if(!r.execCommand("insertText",!1,t)){let a=e.selectionStart,o=e.selectionEnd;if(typeof e.setRangeText=="function")e.setRangeText(t);else{let u=r.createRange(),l=r.createTextNode(t);if(lv(e)){let c=e.firstChild;if(!c)e.appendChild(l);else{let d=0,f=null,p=null;for(;c&&(f===null||p===null);){let m=((i=c.nodeValue)==null?void 0:i.length)||0;a>=d&&a<=d+m&&u.setStart(f=c,a-d),o>=d&&o<=d+m&&u.setEnd(p=c,o-d),d+=m,c=c.nextSibling}a!==o&&u.deleteContents()}}if(lv(e)&&u.commonAncestorContainer.nodeName==="#text")u.insertNode(l);else{let c=e.value;e.value=c.slice(0,a)+t+c.slice(o)}}e.setSelectionRange(a+t.length,a+t.length);let s=r.createEvent("UIEvent");s.initEvent("input",!0,!1),e.dispatchEvent(s)}}var Au=e=>e.charCodeAt(0)===10,uv=e=>e===" "||Au(e);function uS(e,t,r){if(!e)throw Error("Argument 'text' should be truthy");let n=0,i=e.length;for(let a=t;a-1>-1;a--)if(Au(e[a-1])){n=a;break}for(let a=r===void 0?t:r;a-1;a--)if(uv(e[a-1])){n=a;break}for(let a=r===void 0?t:r;a0&&e.value[a.selection.start-1]!==" ")return!1;if(a.selection.end===a.selection.start){let s=At(e,`${r}`);return Lt(e,{start:s.selection.end-1-a.selectedText.length,end:s.selection.end-1}),!1}let o=At(e,`${t}${a.selectedText}${r}`);return Lt(e,{start:o.selection.end-1-a.selectedText.length,end:o.selection.end-1}),!0}function ps(e,t,r,n){let i=On(e),a=Di({text:i.text,selection:i.selection}),o=Lt(e,a),s=t.test(o.selectedText)?n(o.selectedText):r(o.selectedText),u=At(e,s);Lt(e,{start:o.selection.start,end:u.selection.end})}function hs(e,t){var r;if(t.types.includes("text/uri-list")||["file","files","link","folder"].includes((r=e.app.dragManager.draggable)==null?void 0:r.type))return"link";if(t.types.includes("text/html")||t.types.includes("text/plain"))return"copy"}async function ms(e,t,r){let n=e.clipboardData.getData("text/html"),i=e.clipboardData.types.includes("Files"),a=cv.Platform.isDesktopApp?Cu(r):null,o=n||i||(a==null?void 0:a.length)>0;o&&e.preventDefault();try{let s=await os(t,e,r);if(o){let u=e.target,l=s.join(` -`);At(u,l)}}catch(s){console.error(s),t.setError(s)}}h();var od=ge(require("obsidian"));h();h();var dv={};h();var fv={};h();var pv={};h();var hv={"Open as kanban board":"\xD6ffne als Kanban-Board","Create new board":"Erstelle ein neues Board","Archive completed cards in active board":"Archiviere fertiggestellte Karten im aktiven Board","Error: current file is not a Kanban board":"Fehler: Momentan ge\xF6ffnete Datei ist kein Kanban-Board","Convert empty note to Kanban":"Konvertiere leere Notiz in ein Kanban-Board","Error: cannot create Kanban, the current note is not empty":"Fehler: Kanban konnte nicht erstellt werden, momentan ge\xF6ffnete Datei ist nicht leer","New kanban board":"Neues Kanban-Board","Untitled Kanban":"Unbenanntes Kanban","Toggle between Kanban and markdown mode":"Wechsle zwischen Kanban und Markdown Modus","Open as markdown":"\xD6ffne als Markdown","Open board settings":"\xD6ffne Board-Einstellungen","Archive completed cards":"Archiviere fertiggestellte Karten","Something went wrong":"Etwas ist schief gelaufen","You may wish to open as markdown and inspect or edit the file.":"Du kannst die Datei im Markdown Modus \xF6ffnen und \xFCberpr\xFCfen oder bearbeiten.","Are you sure you want to archive all completed cards on this board?":"Bist du dir sicher, dass du alle fertiggestellten Karten des Boards archivieren m\xF6chtest?",Complete:"Fertiggestellt",Archive:"Archiv","Invalid Kanban file: problems parsing frontmatter":"Fehlerhafte Kanban Datei: Probleme beim Parsen des Frontmatters","I don't know how to interpret this line:":"Ich wei\xDF nicht, wie ich diese Zeile interpretieren soll:",Untitled:"Unbenannt","Note: No template plugins are currently enabled.":"Beachte: Keine Template-Plugins sind derzeit aktiviert.",default:"Standard","Search...":"Suche...","These settings will take precedence over the default Kanban board settings.":"Diese Einstellung wird Vorrang vor der standard Kanban-Board Einstellung haben. ","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Stelle standard Kanban-Board Einstellungen ein. Einstellungen k\xF6nnen auf einer Board-f\xFCr-Board Basis \xFCberschrieben werden.","Note template":"Notiz Vorlage","This template will be used when creating new notes from Kanban cards.":"Diese Vorlage wird beim Erstellen neuer Notizen aus Kanban-Karten verwendet.","No template":"Keine Vorlage","Note folder":"Notiz Ordner","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"Notizen, welche aus einer Kanban-Karte erstellt wurden, werden in diesem Ordner platziert. Falls leer, werden die Einstellungen des Vaults verwendet.","Default folder":"Standard Ordner","Lane width":"Schienen Breite","Enter a number to set the lane width in pixels.":"Gebe ein Zahl ein, um die Schienen Breite in Pixeln einzustellen.","Maximum number of archived cards":"Maximale Anzahl archivierter Karten.","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Archivierte Karten k\xF6nnen im Markdown-Modus betrachtet werden. Diese Einstellung wird alte Karten l\xF6schen, sobald das Limit erreicht wird. Eine Einstellung von -1 setzt das Archiv auf eine unendliche Gr\xF6\xDFe.","Display card checkbox":"Zeige Karten Checkbox","When toggled, a checkbox will be displayed with each card":"Wenn aktiviert, wird eine Checkbox mit jeder Karte angezeigt.","Reset to default":"Zur\xFCcksetzen","Date & Time":"Datum & Uhrzeit","Date trigger":"Datums Ausl\xF6ser","When this is typed, it will trigger the date selector":"Wenn dies eingegeben wird, dann wird die Datumsauswahl angezeigt","Time trigger":"Uhrzeit Ausl\xF6ser","When this is typed, it will trigger the time selector":"Wenn dies eingegeben wird, dann wird die Uhrzeitsauswahl angezeigt","Date format":"Format des Datums","This format will be used when saving dates in markdown.":"Dieses Format wird verwendet, wenn ein Datum in Markdown gespeichert wird.","For more syntax, refer to":"F\xFCr mehr Syntax Informationen siehe","format reference":"Formatvorlage","Your current syntax looks like this":"Dein momentanes Format sieht so aus","Time format":"Format der Uhrzeit","Date display format":"Format der Datums Anzeige","This format will be used when displaying dates in Kanban cards.":"Dieses Format wird verwendet, wenn ein Datum in einer Kanban-Karte angezeigt wird.","Show relative date":"Zeige relatives Datum","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"Wenn aktiviert, wird die Zeitspanne zwischen Heute und dem Datum angezeigt. Zum Beispiel: 'In 3 Tagen', 'Vor einem Monat'","Hide card display dates":"Verstecke Karten Datum","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"Wenn aktiviert, werden formatierte Daten nicht auf der Karte angezeigt. Relative Daten werden dennoch angezeigt, solange sie aktiviert sind.","Hide dates in card titles":"Verstecke Daten im Titel der Karte","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"Wenn aktiviert, werden Daten nicht im Titel der Karte angezeigt. Dies verhindert, dass Daten im Titel neu erstellter Notizen vorhanden sind.","Link dates to daily notes":"Verbinde Daten zu Daily Notes","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"Wenn aktiviert, werden Daten mit Daily Notes verbunden. Zum Beispiel [[26.4.2021]]","Add date and time to archived cards":"F\xFCge Datum und Uhrzeit zu archivierten Notizen hinzu","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"Wenn aktiviert, wird das momentane Datum und die momentane Zeit am Anfang einer Karte hinzugef\xFCgt, wenn sie archiviert wird. Zum Beispiel: - [ ] 14.05.2021 10:00 Mein Karten Titel","Archive date/time separator":"Datum/Uhrzeit Trenner f\xFCr das Archiv","This will be used to separate the archived date/time from the title":"Dies wird verwendet, um das Datum und die Uhrzeit archivierter Karten vom Titel zu trennen","Archive date/time format":"Format des Datums und der Uhrzeit f\xFCr das Archiv","Kanban Plugin":"Kanban Erweiterung","New line trigger":"Taste f\xFCr neue Zeile","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lanes.":"W\xE4hle aus ob Enter oder Umschalttaste+Enter eine neue Zeile erstellen soll. Das Gegenteil kannst du verwenden um die Karte zu erstellen oder das bearbeiten der Karte oder Schiene zu beenden.","Shift + Enter":"Umschalttaste + Enter",Enter:"Enter","Prepend / append new cards":"Neue Karten voranf\xFCgen / anh\xE4ngen","This setting controls whether new cards are added to the beginning or end of the list.":"Diese Einstellung gibt an ob neue Karten am Anfang oder am Ende einer Liste hinzugef\xFCgt werden.",Prepend:"Voranf\xFCgen",Append:"Anh\xE4ngen","Hide tags in card titles":"Ausblenden von Tags in Kartentiteln","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"Ist diese Einstellung an, so werden Tags im Kartentitel nicht angezeigt. Dadurch wird verhindert, dass Tags beim Erstellen neuer Notizen in den Titel aufgenommen werden.","Hide card display tags":"Ausblenden von Kartenanzeige-Tags","When toggled, tags will not be displayed below the card title.":"Ist diese Einstellung an, werden Tags nicht unter dem Kartentitel angezeigt.","Linked Page Metadata":"Metadaten f\xFCr verkn\xFCpfte (verlinkte) Notizen","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Zeigen Sie Metadaten f\xFCr die erste Notiz an, die innerhalb einer Karte verkn\xFCpft ist. Geben Sie an, welche Metadatenschl\xFCssel unten angezeigt werden sollen. Ein optionales Label kann hinzugef\xFCgt werden, es kann aber auch vollst\xE4ndig ausgeblendet werden.","Metadata key":"Metadatenschl\xFCssel","Display label":"Anzeigelabel","Hide label":"Label ausblenden","Drag to rearrange":"Zum Neuanordnen ziehen",Delete:"L\xF6schen","Add key":"Schl\xFCssel hinzuf\xFCgen","Field contains markdown":"Feld beinhaltet Markdown","More options":"Mehr optionen",Cancel:"Abbrechen",today:"heute",yesterday:"gestern",tomorrow:"morgen","Change date":"Ver\xE4ndere Datum","Change time":"Ver\xE4ndere Uhrzeit","Card title...":"Karten Titel...","Add card":"Karte hinzuf\xFCgen","Add a card":"F\xFCge eine Karte hinzu","Edit card":"Karte editieren","New note from card":"Neue Notiz aus Karte erstellen","Archive card":"Karte archivieren","Delete card":"Karte l\xF6schen","Edit date":"Datum editieren","Add date":"Datum hinzuf\xFCgen","Remove date":"Datum entfernen","Edit time":"Karte editieren","Add time":"Uhrzeit hinzuf\xFCgen","Remove time":"Uhrzeit entfernen","Duplicate card":"Karte duplizieren","Enter list title...":"Listen Titel eingeben..","Mark cards in this list as complete":"Markiere Karten in dieser Liste als fertiggestellt","Add list":"Liste hinzuf\xFCgen","Add a list":"F\xFCge eine Liste hinzu","Move list":"Liste verschieben",Close:"Schlie\xDFen","Are you sure you want to delete this list and all its cards?":"Bist du dir sicher, dass du diese Liste und alle ihre Karten l\xF6schen m\xF6chtest?","Yes, delete list":"Ja, l\xF6sche diese Liste","Are you sure you want to archive this list and all its cards?":"Bist du dir sicher, dass du diese Liste und alle ihre Karten archivieren m\xF6chtest?","Yes, archive list":"Ja, archiviere diese Liste","Are you sure you want to archive all cards in this list?":"Bist du dir sicher, dass du alle Karten in dieser Liste archivieren m\xF6chtest?","Yes, archive cards":"Ja, archiviere Karten","Edit list":"Editiere Liste","Archive cards":"Archiviere Karten","Archive list":"Archiviere List","Delete list":"L\xF6sche Liste"};h();var Lu={"Open as kanban board":"Open as kanban board","Create new board":"Create new board","Archive completed cards in active board":"Archive completed cards in active board","Error: current file is not a Kanban board":"Error: current file is not a Kanban board","Convert empty note to Kanban":"Convert empty note to Kanban","Error: cannot create Kanban, the current note is not empty":"Error: cannot create Kanban, the current note is not empty","New kanban board":"New kanban board","Untitled Kanban":"Untitled Kanban","Toggle between Kanban and markdown mode":"Toggle between Kanban and markdown mode","Open as markdown":"Open as markdown","Open board settings":"Open board settings","Archive completed cards":"Archive completed cards","Something went wrong":"Something went wrong","You may wish to open as markdown and inspect or edit the file.":"You may wish to open as markdown and inspect or edit the file.","Are you sure you want to archive all completed cards on this board?":"Are you sure you want to archive all completed cards on this board?",Complete:"Complete",Archive:"Archive","Invalid Kanban file: problems parsing frontmatter":"Invalid Kanban file: problems parsing frontmatter","I don't know how to interpret this line:":"I don't know how to interpret this line:",Untitled:"Untitled","Note: No template plugins are currently enabled.":"Note: No template plugins are currently enabled.",default:"default","Search...":"Search...","New line trigger":"New line trigger","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.":"Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.","Shift + Enter":"Shift + Enter",Enter:"Enter","Prepend / append new cards":"Prepend / append new cards","This setting controls whether new cards are added to the beginning or end of the list.":"This setting controls whether new cards are added to the beginning or end of the list.",Prepend:"Prepend","Prepend (compact)":"Prepend (compact)",Append:"Append","These settings will take precedence over the default Kanban board settings.":"These settings will take precedence over the default Kanban board settings.","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.","Note template":"Note template","This template will be used when creating new notes from Kanban cards.":"This template will be used when creating new notes from Kanban cards.","No template":"No template","Note folder":"Note folder","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.","Default folder":"Default folder","List width":"List width","Enter a number to set the list width in pixels.":"Enter a number to set the list width in pixels.","Maximum number of archived cards":"Maximum number of archived cards","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.","Display card checkbox":"Display card checkbox","When toggled, a checkbox will be displayed with each card":"When toggled, a checkbox will be displayed with each card","Reset to default":"Reset to default","Date & Time":"Date & Time","Date trigger":"Date trigger","When this is typed, it will trigger the date selector":"When this is typed, it will trigger the date selector","Time trigger":"Time trigger","When this is typed, it will trigger the time selector":"When this is typed, it will trigger the time selector","Date format":"Date format","This format will be used when saving dates in markdown.":"This format will be used when saving dates in markdown.","For more syntax, refer to":"For more syntax, refer to","format reference":"format reference","Your current syntax looks like this":"Your current syntax looks like this","Time format":"Time format","Date display format":"Date display format","This format will be used when displaying dates in Kanban cards.":"This format will be used when displaying dates in Kanban cards.","Show relative date":"Show relative date","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'","Hide card display dates":"Hide card display dates","Hide card counts in list titles":"Hide card counts in list titles","When toggled, card counts are hidden from the list title":"When toggled, card counts are hidden from the list title","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.","Hide dates in card titles":"Hide dates in card titles","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.","Link dates to daily notes":"Link dates to daily notes","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"When toggled, dates will link to daily notes. Eg. [[2021-04-26]]","Add date and time to archived cards":"Add date and time to archived cards","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title","Archive date/time separator":"Archive date/time separator","This will be used to separate the archived date/time from the title":"This will be used to separate the archived date/time from the title","Archive date/time format":"Archive date/time format","Kanban Plugin":"Kanban Plugin","Hide tags in card titles":"Hide tags in card titles","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.","Hide card display tags":"Hide card display tags","When toggled, tags will not be displayed below the card title.":"When toggled, tags will not be displayed below the card title.","Display tag colors":"Display tag colors","Set colors for the tags displayed below the card title.":"Set colors for the tags displayed below the card title.","Linked Page Metadata":"Linked Page Metadata","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.","Board Header Buttons":"Board Header Buttons","Calendar: first day of week":"Calendar: first day of week","Override which day is used as the start of the week":"Override which day is used as the start of the week",Sunday:"Sunday",Monday:"Monday",Tuesday:"Tuesday",Wednesday:"Wednesday",Thursday:"Thursday",Friday:"Friday",Saturday:"Saturday","Background color":"Background color",Tag:"Tag","Text color":"Text color","Metadata key":"Metadata key","Display label":"Display label","Hide label":"Hide label","Drag to rearrange":"Drag to rearrange",Delete:"Delete","Add key":"Add key","Field contains markdown":"Field contains markdown","Add tag color":"Add tag color","More options":"More options",Cancel:"Cancel",today:"today",yesterday:"yesterday",tomorrow:"tomorrow","Change date":"Change date","Change time":"Change time","Card title...":"Card title...","Add card":"Add card","Add a card":"Add a card","Edit card":"Edit card","New note from card":"New note from card","Archive card":"Archive card","Delete card":"Delete card","Edit date":"Edit date","Add date":"Add date","Remove date":"Remove date","Edit time":"Edit time","Add time":"Add time","Remove time":"Remove time","Duplicate card":"Duplicate card","Split card":"Split card","Copy link to card":"Copy link to card","Insert card before":"Insert card before","Insert card after":"Insert card after","Add label":"Add label","Enter list title...":"Enter list title...","Mark cards in this list as complete":"Mark cards in this list as complete","Add list":"Add list","Add a list":"Add a list","Move list":"Move list",Close:"Close","Are you sure you want to delete this list and all its cards?":"Are you sure you want to delete this list and all its cards?","Yes, delete list":"Yes, delete list","Are you sure you want to archive this list and all its cards?":"Are you sure you want to archive this list and all its cards?","Yes, archive list":"Yes, archive list","Are you sure you want to archive all cards in this list?":"Are you sure you want to archive all cards in this list?","Yes, archive cards":"Yes, archive cards","Edit list":"Edit list","Archive cards":"Archive cards","Archive list":"Archive list","Delete list":"Delete list","Insert list before":"Insert list before","Insert list after":"Insert list after","Sort by card text":"Sort by card text","Sort by date":"Sort by date","Unable to find":"Unable to find","Open in default app":"Open in default app",Submit:"Submit"};h();var mv={};h();var gv={};h();var vv={};h();var yv={};h();var bv={"Open as kanban board":"Apri come bacheca Kanban","Create new board":"Crea nuova bacheca","Archive completed cards in active board":"Archivia schede completate nella bacheca attiva","Error: current file is not a Kanban board":"Errore: il file corrente non \xE8 una bacheca Kanban","Convert empty note to Kanban":"Converti nota vuota in Kanban","Error: cannot create Kanban, the current note is not empty":"Errore: Impossibile creare Kanban, la nota corrente non \xE8 vuota","New kanban board":"Nuova bacheca Kanban","Untitled Kanban":"Kanban senza titolo","Open as markdown":"Apri come markdown","Open board settings":"Apri impostazioni bacheca","Archive completed cards":"Archivia schede completate",Complete:"Completato",Archive:"Archivio","Note: No template plugins are currently enabled.":"Nota: Nessun plugin dei modelli attualmente abilitato.",default:"predefinito","Search...":"Ricerca...","These settings will take precedence over the default Kanban board settings.":"Queste impostazioni avranno la precedenza sulle impostazioni predefinite della bacheca Kanban.","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Impostazioni predefinite della bacheca Kanban. Le impostazioni possono essere sovrascritte per ogni bacheca.","Note template":"Nota modello","This template will be used when creating new notes from Kanban cards.":"Questo modello verr\xE0 utilizzato durante la creazione di nuove note dalle schede Kanban.","No template":"Nessun modello","Note folder":"Cartella delle note","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"Le note create dalle schede Kanban verranno inserite in questa cartella. Se vuota, verranno inserite nella posizione predefinita del vault.","Default folder":"Cartella predefinita","Lane width":"Larghezza colonna","Enter a number to set the lane width in pixels.":"Inserire un numero per impostare la larghezza della colonna in pixel.","Maximum number of archived cards":"Numero massimo di schede archiviate","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Le schede archiviate possono essere visualizzate in modalit\xE0 Markdown. Le vecchie schede verranno rimosse una volta raggiunto il limite. Impostando il valore -1 il numero di schede archiviate sar\xE0 illimitato.","Display card checkbox":"Mostra casella di controllo","When toggled, a checkbox will be displayed with each card":"Se attiva, verr\xE0 visualizzata una casella di controllo per ogni scheda","Reset to default":"Ripristina predefiniti","Date & Time":"Data e ora","Date trigger":"Selettore data","When this is typed, it will trigger the date selector":"Digitando questo, verr\xE0 attivato il selettore della data","Time trigger":"Selettore ora","When this is typed, it will trigger the time selector":"Digitando questo, verr\xE0 attivato il selettore dell'ora","Date format":"Formato data","This format will be used when saving dates in markdown.":"Formato utilizzato per il salvataggio delle date in Markdown.","For more syntax, refer to":"Per maggiori informazioni, vedere","format reference":"formato di riferimento","Your current syntax looks like this":"Formato corrente","Time format":"Formato ora","Date display format":"Formato visualizzazione data","This format will be used when displaying dates in Kanban cards.":"Formato utilizzato per visualizzare le date nelle schede Kanban.","Show relative date":"Mostra data relativa","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"Se attiva, le schede indicheranno la distanza tra la data odierna e la data della scheda. eg. 'Tra 3 giorni', 'Un mese fa'","Hide card display dates":"Hide card display dates","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"Se attiva, la data non verr\xE0 mostrata sulla scheda. Le date relative verranno comunque mostrate se sono state abilitate.","Hide dates in card titles":"Nascondi date nei titoli delle schede","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"Se attiva, la data non verr\xE0 mostrata nei titoli delle schede. Questo impedisce alle date di essere incluse quando vengono create nuove note.","Link dates to daily notes":"Collega date alle Note del giorno","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"Se attiva, le date verranno collegate alle Note del giorno. Eg. [[2021-04-26]]","Add date and time to archived cards":"Aggiungi data e ora alle schede archiviate","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"Se attiva, la data e l'ora corrente verranno aggiunte all'inizio della scheda quando viene archiviata. Eg. - [ ] 2021-05-14 10:00am Mia scheda","Archive date/time separator":"Separatore data/ora dell'archivio","This will be used to separate the archived date/time from the title":"Verr\xE0 usato per separare data e ora dell'archiviazione dal titolo","Archive date/time format":"Formato data/ora dell'archivio","Kanban Plugin":"Plugin Kanban","More options":"Altre opzioni",Cancel:"Annulla",today:"oggi",yesterday:"ieri",tomorrow:"domani","Change date":"Modifica data","Change time":"Modifica ora","Card title...":"Titolo elemento...","Add card":"Aggiungi elemento","Add a card":"Aggiungi un'altra scheda","Edit card":"Modifica scheda","New note from card":"Nuova nota da scheda","Archive card":"Archivia scheda","Delete card":"Elimina scheda","Edit date":"Modifica data","Add date":"Aggiungi data","Remove date":"Rimuovi data","Edit time":"Modifica ora","Add time":"Aggiungi ora","Remove time":"Rimuovi ora","Enter list title...":"Inserisci titolo lista...","Mark cards in this list as complete":"Segna elementi della lista come completati","Add list":"Aggiungi lista","Add a list":"Aggiungi un'altra lista","Move list":"Sposta lista",Close:"Chiudi","Are you sure you want to delete this list and all its cards?":"Cancellare questa lista e tutte le sue schede?","Yes, delete list":"Cancella lista","Are you sure you want to archive this list and all its cards?":"Archiviare questa lista e tutte le sue schede?","Yes, archive list":"Archivia lista","Are you sure you want to archive all cards in this list?":"Archiviare tutte le schede in questa lista?","Yes, archive cards":"Archivia schede","Edit list":"Modifica lista","Archive cards":"Archivia schede","Archive list":"Archivia lista","Delete list":"Cancella lista"};h();var wv={"Open as kanban board":"\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3068\u3057\u3066\u958B\u304F","Create new board":"\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3092\u65B0\u898F\u4F5C\u6210","Archive completed cards in active board":"\u30A2\u30AF\u30C6\u30A3\u30D6\u30DC\u30FC\u30C9\u306E\u5B8C\u4E86\u3057\u305F\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Error: current file is not a Kanban board":"\u30A8\u30E9\u30FC: \u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093","Convert empty note to Kanban":"\u7A7A\u306E\u30CE\u30FC\u30C8\u3092\u30AB\u30F3\u30D0\u30F3\u306B\u5909\u63DB","Error: cannot create Kanban, the current note is not empty":"\u30A8\u30E9\u30FC: \u73FE\u5728\u958B\u3044\u3066\u3044\u308B\u30CE\u30FC\u30C8\u306F\u7A7A\u3067\u3042\u308A\u3001\u30AB\u30F3\u30D0\u30F3\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093","New kanban board":"\u65B0\u898F\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9","Untitled Kanban":"\u7121\u984C\u306E\u30AB\u30F3\u30D0\u30F3","Toggle between Kanban and markdown mode":"\u30AB\u30F3\u30D0\u30F3\u3068\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u306E\u30E2\u30FC\u30C9\u3092\u5207\u308A\u66FF\u3048\u308B","Open as markdown":"\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3068\u3057\u3066\u958B\u304F","Open board settings":"\u30DC\u30FC\u30C9\u8A2D\u5B9A\u3092\u958B\u304F","Archive completed cards":"\u5B8C\u4E86\u3057\u305F\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Something went wrong":"\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F","You may wish to open as markdown and inspect or edit the file.":"\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3068\u3057\u3066\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u3044\u3066\u8ABF\u67FB\u3059\u308B\u304B\u7DE8\u96C6\u3059\u308B\u3053\u3068\u3092\u304A\u3059\u3059\u3081\u3057\u307E\u3059\u3002","Are you sure you want to archive all completed cards on this board?":"\u3053\u306E\u30DC\u30FC\u30C9\u306B\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u5B8C\u4E86\u3057\u305F\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059\u304B\uFF1F",Complete:"\u5B8C\u4E86",Archive:"\u30A2\u30FC\u30AB\u30A4\u30D6","Invalid Kanban file: problems parsing frontmatter":"\u7121\u52B9\u306A\u30AB\u30F3\u30D0\u30F3\u30D5\u30A1\u30A4\u30EB: \u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u306E\u30D1\u30FC\u30B9\u306B\u554F\u984C\u304C\u3042\u308A\u307E\u3059","I don't know how to interpret this line:":"\u3053\u306E\u884C\u3092\u3069\u3046\u89E3\u91C8\u3059\u308C\u3070\u3088\u3044\u304B\u5206\u304B\u308A\u307E\u305B\u3093",Untitled:"\u7121\u984C","Note: No template plugins are currently enabled.":"\u30CE\u30FC\u30C8: \u73FE\u5728\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u7121\u52B9\u5316\u3055\u308C\u3066\u3044\u307E\u3059",default:"\u30C7\u30D5\u30A9\u30EB\u30C8","Search...":"\u691C\u7D22\u2026","New line trigger":"\u6539\u884C\u30C8\u30EA\u30AC\u30FC","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lanes.":"\u6539\u884C\u306B\u4F7F\u3046\u30AD\u30FC\u3068\u3057\u3066Enter\u304BShift+Enter\u306E\u3069\u3061\u3089\u3092\u4F7F\u3046\u304B\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u9078\u629E\u3057\u306A\u304B\u3063\u305F\u65B9\u306E\u30AD\u30FC\u306F\u30AB\u30FC\u30C9\u3068\u30EC\u30FC\u30F3\u306E\u4F5C\u6210\u3068\u7DE8\u96C6\u5B8C\u4E86\u306E\u30C8\u30EA\u30AC\u30FC\u3068\u306A\u308A\u307E\u3059\u3002","Shift + Enter":"Shift + Enter",Enter:"Enter","Prepend / append new cards":"\u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306B\u65B0\u898F\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0\u3059\u308B","This setting controls whether new cards are added to the beginning or end of the list.":"\u3053\u306E\u8A2D\u5B9A\u306B\u3088\u3063\u3066\u65B0\u898F\u30AB\u30FC\u30C9\u3092\u30EA\u30B9\u30C8\u306E\u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306B\u8FFD\u52A0\u3059\u308B\u304B\u3092\u6C7A\u3081\u307E\u3059\u3002",Prepend:"\u5148\u982D\u306B\u8FFD\u52A0","Prepend (compact)":"\u5148\u982D\u306B\u8FFD\u52A0(\u30B3\u30F3\u30D1\u30AF\u30C8)",Append:"\u672B\u5C3E\u306B\u8FFD\u52A0","These settings will take precedence over the default Kanban board settings.":"\u3053\u308C\u3089\u306E\u8A2D\u5B9A\u306F\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30AB\u30F3\u30D0\u30F3\u8A2D\u5B9A\u3088\u308A\u512A\u5148\u3055\u308C\u307E\u3059\u3002","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u8A2D\u5B9A\u3092\u30BB\u30C3\u30C8\u3057\u307E\u3059\u3002\u3053\u306E\u8A2D\u5B9A\u306F\u30DC\u30FC\u30C9\u6BCE\u306B\u4E0A\u66F8\u304D\u3067\u304D\u307E\u3059\u3002","Note template":"\u30CE\u30FC\u30C8\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8","This template will be used when creating new notes from Kanban cards.":"\u3053\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u30AB\u30F3\u30D0\u30F3\u30AB\u30FC\u30C9\u304B\u3089\u30CE\u30FC\u30C8\u3092\u65B0\u898F\u4F5C\u6210\u3057\u305F\u969B\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","No template":"\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u3042\u308A\u307E\u305B\u3093","Note folder":"\u30CE\u30FC\u30C8\u30D5\u30A9\u30EB\u30C0","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"\u30AB\u30F3\u30D0\u30F3\u30AB\u30FC\u30C9\u304B\u3089\u4F5C\u6210\u3055\u308C\u305F\u30CE\u30FC\u30C8\u306F\u3053\u306E\u30D5\u30A9\u30EB\u30C0\u5185\u306B\u7F6E\u304B\u308C\u307E\u3059\u3002\u30D6\u30E9\u30F3\u30AF\u306E\u5834\u5408\u306B\u306F\u3001\u3053\u306E\u4FDD\u7BA1\u5EAB\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u306B\u7F6E\u304B\u308C\u307E\u3059\u3002","Default folder":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A9\u30EB\u30C0","Lane width":"\u30EC\u30FC\u30F3\u306E\u5E45","Enter a number to set the lane width in pixels.":"\u30EC\u30FC\u30F3\u306E\u5E45\u3092\u30D4\u30AF\u30BB\u30EB\u5358\u4F4D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Maximum number of archived cards":"\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u30AB\u30FC\u30C9\u306E\u6700\u5927\u6570","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u30AB\u30FC\u30C9\u306F\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u30E2\u30FC\u30C9\u3067\u95B2\u89A7\u3067\u304D\u307E\u3059\u3002\u3053\u306E\u8A2D\u5B9A\u306B\u3088\u308A\u6307\u5B9A\u3055\u308C\u305F\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u9650\u754C\u6570\u307E\u3067\u9054\u3057\u305F\u969B\u306B\u306F\u53E4\u3044\u30AB\u30FC\u30C9\u3092\u524A\u9664\u3057\u307E\u3059\u3002\u3053\u306E\u5024\u3092-1\u306B\u8A2D\u5B9A\u3059\u308B\u3068\u30DC\u30FC\u30C9\u306E\u30A2\u30FC\u30AB\u30A4\u30D6\u9650\u754C\u3092\u7121\u9650\u306B\u3057\u307E\u3059\u3002","Display card checkbox":"\u30AB\u30FC\u30C9\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u8868\u793A","When toggled, a checkbox will be displayed with each card":"\u6709\u52B9\u5316\u3059\u308B\u3068\u5404\u30AB\u30FC\u30C9\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","Reset to default":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u30EA\u30BB\u30C3\u30C8","Date & Time":"\u65E5\u4ED8\u3068\u6642\u9593","Date trigger":"\u65E5\u4ED8\u30C8\u30EA\u30AC\u30FC","When this is typed, it will trigger the date selector":"\u3053\u306E\u8A2D\u5B9A\u306B\u5165\u529B\u3055\u308C\u305F\u6587\u5B57\u5217\u3067\u65E5\u4ED8\u30BB\u30EC\u30AF\u30BF\u30FC\u3092\u30C8\u30EA\u30AC\u30FC\u3057\u307E\u3059\u3002","Time trigger":"\u6642\u9593\u30C8\u30EA\u30AC\u30FC","When this is typed, it will trigger the time selector":"\u3053\u306E\u8A2D\u5B9A\u306B\u5165\u529B\u3055\u308C\u305F\u6587\u5B57\u5217\u3067\u6642\u9593\u30BB\u30EC\u30AF\u30BF\u30FC\u3092\u30C8\u30EA\u30AC\u30FC\u3057\u307E\u3059\u3002","Date format":"\u65E5\u4ED8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","This format will be used when saving dates in markdown.":"\u3053\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3067\u65E5\u4ED8\u304C\u4FDD\u5B58\u3055\u308C\u308B\u969B\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","For more syntax, refer to":"\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u306B\u3064\u3044\u3066\u306F\u3053\u3061\u3089\u3092\u53C2\u7167:","format reference":"\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9","Your current syntax looks like this":"\u73FE\u5728\u306E\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u306F\u6B21\u306E\u3088\u3046\u306B\u898B\u3048\u307E\u3059","Time format":"\u6642\u9593\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","Date display format":"\u65E5\u4ED8\u8868\u793A\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","This format will be used when displaying dates in Kanban cards.":"\u3053\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u30AB\u30F3\u30D0\u30F3\u30AB\u30FC\u30C9\u5185\u306B\u3066\u65E5\u4ED8\u306E\u8868\u793A\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","Show relative date":"\u76F8\u5BFE\u65E5\u4ED8\u3092\u8868\u793A","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u306E\u65E5\u4ED8\u3068\u4ECA\u65E5\u306E\u9593\u306E\u65E5\u6570\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u4F8B: '3\u65E5\u5F8C', '1\u30F6\u6708\u524D'","Hide card display dates":"\u30AB\u30FC\u30C9\u306B\u8868\u793A\u3055\u308C\u308B\u65E5\u4ED8\u3092\u96A0\u3059","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u4E0A\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3055\u308C\u305F\u65E5\u4ED8\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002\u6709\u52B9\u5316\u3055\u308C\u305F\u5834\u5408\u306B\u306F\u76F8\u5BFE\u65E5\u4ED8\u306F\u8868\u793A\u3055\u308C\u307E\u307E\u3068\u306A\u308A\u307E\u3059\u3002","Hide dates in card titles":"\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306E\u65E5\u4ED8\u3092\u96A0\u3059","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306E\u65E5\u4ED8\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002\u3053\u308C\u306F\u65B0\u898F\u30CE\u30FC\u30C8\u3092\u4F5C\u6210\u3057\u305F\u969B\u306B\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306B\u65E5\u4ED8\u304C\u542B\u307E\u308C\u308B\u306E\u3092\u9632\u304E\u307E\u3059\u3002","Link dates to daily notes":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306B\u65E5\u4ED8\u3092\u30EA\u30F3\u30AF","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"\u6709\u52B9\u5316\u3059\u308B\u3068\u65E5\u4ED8\u304C\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306B\u30EA\u30F3\u30AF\u3055\u308C\u307E\u3059\u3002 \u4F8B: [[2021-04-26]]","Add date and time to archived cards":"\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u30AB\u30FC\u30C9\u306B\u65E5\u4ED8\u3068\u6642\u9593\u3092\u8FFD\u52A0","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u304C\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u969B\u306B\u73FE\u5728\u306E\u65E5\u4ED8\u3068\u6642\u9593\u304C\u30AB\u30FC\u30C9\u306E\u6700\u521D\u306B\u8FFD\u8A18\u3055\u308C\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3059\u3002\u4F8B: - [ ] 2021-05-14 10:00am \u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB","Archive date/time separator":"\u65E5\u4ED8\u30FB\u6642\u9593\u30BB\u30D1\u30EC\u30FC\u30BF\u30FC\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","This will be used to separate the archived date/time from the title":"\u3053\u308C\u306F\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u65E5\u4ED8\u30FB\u6642\u9593\u3092\u30BF\u30A4\u30C8\u30EB\u304B\u3089\u5206\u96E2\u3059\u308B\u306E\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","Archive date/time format":"\u65E5\u4ED8\u30FB\u6642\u9593\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Kanban Plugin":"\u30AB\u30F3\u30D0\u30F3\u30D7\u30E9\u30B0\u30A4\u30F3","Hide tags in card titles":"\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u5185\u306E\u30BF\u30B0\u3092\u96A0\u3059","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u5185\u306E\u30BF\u30B0\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002\u3053\u308C\u306F\u65B0\u898F\u30CE\u30FC\u30C8\u3092\u4F5C\u6210\u3057\u305F\u969B\u306B\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306B\u30BF\u30B0\u304C\u542B\u307E\u308C\u308B\u306E\u3092\u9632\u304E\u307E\u3059\u3002","Hide card display tags":"\u30AB\u30FC\u30C9\u306B\u8868\u793A\u3055\u308C\u308B\u30BF\u30B0\u3092\u96A0\u3059","When toggled, tags will not be displayed below the card title.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306E\u4E0B\u306E\u30BF\u30B0\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002","Linked Page Metadata":"\u30EA\u30F3\u30AF\u3055\u308C\u305F\u30DA\u30FC\u30B8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"\u30AB\u30FC\u30C9\u5185\u3067\u30EA\u30F3\u30AF\u3055\u308C\u3066\u3044\u308B\u6700\u521D\u306E\u30CE\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u4E0B\u306B\u8868\u793A\u3059\u308B\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u30AD\u30FC\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3057\u3066\u30E9\u30D9\u30EB\u306E\u4ED8\u4E0E\u304C\u53EF\u80FD\u3067\u3042\u308A\u3001\u30E9\u30D9\u30EB\u306F\u5B8C\u5168\u306B\u975E\u8868\u793A\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002","Board Header Buttons":"\u30DC\u30FC\u30C9\u306E\u30D8\u30C3\u30C0\u30FC\u30DC\u30BF\u30F3","Calendar: first day of week":"\u30AB\u30EC\u30F3\u30C0\u30FC: \u9031\u306E\u59CB\u307E\u308A","Override which day is used as the start of the week":"\u9031\u306E\u59CB\u307E\u308A\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u66DC\u65E5\u3092\u5909\u66F4\u3057\u307E\u3059\u3002",Sunday:"\u65E5\u66DC\u65E5",Monday:"\u6708\u66DC\u65E5",Tuesday:"\u706B\u66DC\u65E5",Wednesday:"\u6C34\u66DC\u65E5",Thursday:"\u6728\u66DC\u65E5",Friday:"\u91D1\u66DC\u65E5",Saturday:"\u571F\u66DC\u65E5","Metadata key":"\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u30AD\u30FC","Display label":"\u30E9\u30D9\u30EB\u3092\u8868\u793A","Hide label":"\u30E9\u30D9\u30EB\u3092\u96A0\u3059","Drag to rearrange":"\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u4E26\u3079\u66FF\u3048\u308B",Delete:"\u524A\u9664","Add key":"\u30AD\u30FC\u3092\u8FFD\u52A0","Field contains markdown":"\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3092\u542B\u307F\u307E\u3059","More options":"\u4ED6\u306E\u30AA\u30D7\u30B7\u30E7\u30F3",Cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",today:"\u4ECA\u65E5",yesterday:"\u6628\u65E5",tomorrow:"\u660E\u65E5","Change date":"\u65E5\u4ED8\u3092\u5909\u66F4","Change time":"\u6642\u9593\u3092\u5909\u66F4","Card title...":"\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u2026","Add card":"\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0","Add a card":"\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0","Edit card":"\u30AB\u30FC\u30C9\u3092\u7DE8\u96C6","New note from card":"\u30AB\u30FC\u30C9\u304B\u3089\u30CE\u30FC\u30C8\u3092\u65B0\u898F\u4F5C\u6210","Archive card":"\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Delete card":"\u30AB\u30FC\u30C9\u3092\u524A\u9664","Edit date":"\u65E5\u4ED8\u3092\u7DE8\u96C6","Add date":"\u65E5\u4ED8\u3092\u8FFD\u52A0","Remove date":"\u65E5\u4ED8\u3092\u524A\u9664","Edit time":"\u6642\u9593\u3092\u7DE8\u96C6","Add time":"\u6642\u9593\u3092\u8FFD\u52A0","Remove time":"\u6642\u9593\u3092\u524A\u9664","Duplicate card":"\u30AB\u30FC\u30C9\u3092\u8907\u88FD","Split card":"\u30AB\u30FC\u30C9\u3092\u5206\u5272","Copy link to card":"\u30AB\u30FC\u30C9\u3078\u306E\u30EA\u30F3\u30AF\u3092\u30B3\u30D4\u30FC","Enter list title...":"\u30EA\u30B9\u30C8\u30BF\u30A4\u30C8\u30EB\u3092\u7DE8\u96C6\u2026","Mark cards in this list as complete":"\u3053\u306E\u30EA\u30B9\u30C8\u306B\u542B\u307E\u308C\u308B\u30AB\u30FC\u30C9\u3092\u5B8C\u4E86\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3059\u308B","Add list":"\u30EA\u30B9\u30C8\u3092\u8FFD\u52A0","Add a list":"\u30EA\u30B9\u30C8\u3092\u8FFD\u52A0","Move list":"\u30EA\u30B9\u30C8\u3092\u79FB\u52D5",Close:"\u9589\u3058\u308B","Are you sure you want to delete this list and all its cards?":"\u3053\u306E\u30EA\u30B9\u30C8\u3068\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u30AB\u30FC\u30C9\u3092\u524A\u9664\u3057\u307E\u3059\u304B\b\uFF1F","Yes, delete list":"\u306F\u3044\u3001\u30EA\u30B9\u30C8\u3092\u524A\u9664\u3057\u307E\u3059","Are you sure you want to archive this list and all its cards?":"\u3053\u306E\u30EA\u30B9\u30C8\u3068\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059\u304B\uFF1F","Yes, archive list":"\u306F\u3044\u3001\u30EA\u30B9\u30C8\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059","Are you sure you want to archive all cards in this list?":"\u3053\u306E\u30EA\u30B9\u30C8\u306B\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059\u304B\uFF1F","Yes, archive cards":"\u306F\u3044\u3001\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059","Edit list":"\u30EA\u30B9\u30C8\u3092\u7DE8\u96C6","Archive cards":"\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Archive list":"\u30EA\u30B9\u30C8\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Delete list":"\u30EA\u30B9\u30C8\u3092\u524A\u9664","Unable to find":"\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Open in default app":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30A2\u30D7\u30EA\u3067\u958B\u304F"};h();var Ev={};h();var xv={};h();var kv={};h();var Sv={};h();var _v={};h();var Cv={"Open as Kanban board":"Abrir como quadro Kanban","Create new board":"Criar um novo quadro","Archive completed cards in active board":"Arquivar cart\xF5es conclu\xEDdos no quadro ativo","Error: current file is not a Kanban board":"Erro: o arquivo atual n\xE3o \xE9 um quadro Kanban","Convert empty note to Kanban":"Converter nota vazia em Kanban","Error: cannot create Kanban, the current note is not empty":"Erro: n\xE3o \xE9 poss\xEDvel criar o quadro Kanban, a nota atual n\xE3o est\xE1 vazia","New Kanban board":"Novo quadro Kanban","Untitled Kanban":"Kanban sem t\xEDtulo","Toggle between Kanban and markdown mode":"Alternar entre os modos Kanban e Markdown","Open as markdown":"Abrir como markdown","Open board settings":"Abrir configura\xE7\xF5es do quadro Kanban","Archive completed cards":"Arquivar cart\xF5es conclu\xEDdos",Complete:"Conclu\xEDdo",Archive:"Arquivado","Note: No template plugins are currently enabled.":"Nota: N\xE3o h\xE1 plug-ins de modelo habilitados no momento.",default:"padr\xE3o","Search...":"Pesquisar...","These settings will take precedence over the default Kanban board settings.":"Essas configura\xE7\xF5es sobrescrever\xE3o as configura\xE7\xF5es padr\xE3o do quadro Kanban","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Defina as configura\xE7\xF5es padr\xE3o do quadro Kanban. Cada quadro Kanban pode ter sua pr\xF3pria configura\xE7\xE3o.","Note template":"Modelo de nota","This template will be used when creating new notes from Kanban cards.":"Este modelo ser\xE1 usado quando uma nova nota Kanban for criada.","No template":"Sem modelo","Note folder":"Pasta de notas","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"As notas criadas pelos links dos cart\xF5es Kanban ser\xE3o colocadas nesta pasta. Se estiver em branco, ser\xE3o colocadas no local configurado como padr\xE3o deste cofre.","Default folder":"Pasta padr\xE3o","Lane width":"Largura das listas","Enter a number to set the lane width in pixels.":"Insira um n\xFAmero para definir a largura das listas em pixels.","Maximum number of archived cards":"Quantidade m\xE1xima de cart\xF5es arquivados","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Os cart\xF5es arquivados podem ser vistos no modo Markdown. Esta configura\xE7\xE3o excluir\xE1 os cart\xF5es antigos assim que o limite for atingido. Inserir o valor -1 retira o limite para cart\xF5es arquivados.","Display card checkbox":"Exibe uma caixa de sele\xE7\xE3o do cart\xE3o","When toggled, a checkbox will be displayed with each card":"Quando ativada, uma caixa de sele\xE7\xE3o ser\xE1 exibida em cada cart\xE3o.","Reset to default":"Redefinir configura\xE7\xF5es padr\xE3o","Date & Time":"Data e Hora","Date trigger":"Gatilho de data","When this is typed, it will trigger the date selector":"Quando este caractere \xE9 digitado, o seletor de data \xE9 exibido.","Time trigger":"Gatilho de hora","When this is typed, it will trigger the time selector":"Quando este caractere \xE9 digitado, o seletor de hora \xE9 exibido.","Date format":"Formado da data","This format will be used when saving dates in markdown.":"Este formato ser\xE1 usado quando datas forem armazenadas no Markdown.","For more syntax, refer to":"Para mais informa\xE7\xF5es sobre esta sintaxe, consulte os","format reference":"modelos de formato.","Your current syntax looks like this":"Sua atual sintaxe est\xE1 assim","Time format":"Formato da hora","Date display format":"Formato de exibi\xE7\xE3o da data","This format will be used when displaying dates in Kanban cards.":"Este ser\xE1 o formato das datas exibido nos cart\xF5es do Kanban.","Show relative date":"Exibir datas relativas","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"Ao ativar, os cart\xF5es exibir\xE3o o intervalo de tempo entre hoje e a data do cart\xE3o: Ex.: 'Em 3 dias', 'Um m\xEAs atr\xE1s'","Hide card display dates":"Ocultar datas dos cart\xF5es","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"Ao ativar, as datas formatadas n\xE3o ser\xE3o exibidas no cart\xE3o. As datas relativas ainda ser\xE3o exibidas se estiverem ativadas.","Hide dates in card titles":"Ocultar datas dos t\xEDtulos dos cart\xF5es","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"Ao ativar, as datas ser\xE3o t\xEDtulos de cart\xF5es ocultos. Evita que datas sejam inclu\xEDdas no t\xEDtulo ao criar novas notas.","Link dates to daily notes":"Vincular datas a notas di\xE1rias","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"Ao ativar, as datas ser\xE3o vinculadas \xE0s notas di\xE1rias. Ex.: [[2021-04-26]]","Add date and time to archived cards":"Adicionar data e hora aos cart\xF5es arquivados","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"Quando ativada, a data e a hora atuais ser\xE3o adicionadas ao in\xEDcio de um cart\xE3o quando ele for arquivado. Ex.: - [] 2021-05-14 10:00 T\xEDtulo do meu cart\xE3o","Archive date/time separator":"Separador de data/hora do arquivo","This will be used to separate the archived date/time from the title":"Isso ser\xE1 usado para separar a data/hora arquivada do t\xEDtulo.","Archive date/time format":"Formato de data/hora do arquivo","Kanban Plugin":"Plugin Kanban","Hide tags in card titles":"Ocultar \u2018tags\u2019 nos t\xEDtulos dos cart\xF5es","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"Quando ativada, as \u2018tags\u2019 n\xE3o ser\xE3o exibidas nos t\xEDtulos de cartas. Isso impedir\xE1 que as \u2018tags\u2019 sejam inclu\xEDdas no t\xEDtulo ao criar novas notas.","Hide card display tags":"Ocultar \u2018tags\u2019 de exibi\xE7\xE3o de cart\xE3o","When toggled, tags will not be displayed below the card title.":"Quando ativada, as \u2018tags\u2019 n\xE3o ser\xE3o exibidas abaixo do t\xEDtulo do cart\xE3o.","Linked Page Metadata":"Metadados de p\xE1ginas 'lincadas'","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Exibe metadados para a primeira nota 'lincada' em um cart\xE3o. Especifique abaixo quais metadados ser\xE3o exibidos. Um r\xF3tulo opcional pode ser fornecido e os r\xF3tulos podem ser ocultados completamente.","Metadata key":"Metadado","Display label":"Descri\xE7\xE3o personalizada","Hide label":"Ocultar","Drag to rearrange":"Arraste para reorganizar",Delete:"Excluir","Add key":"Adicionar metadado","More options":"Mais op\xE7\xF5es",Cancel:"Cancelar",today:"hoje",yesterday:"ontem",tomorrow:"amanh\xE3","Change date":"Alterar data","Change time":"Mudar hora","Card title...":"T\xEDtulo do item...","Add card":"Adicionar Item","Add a card":"Adicione um cart\xE3o","Edit card":"Editar cart\xE3o","New note from card":"Nova nota do cart\xE3o","Archive card":"Arquivar cart\xE3o","Delete card":"Excluir cart\xE3o","Edit date":"Editar data","Add date":"Adicionar data","Remove date":"Remover data","Edit time":"Editar hora","Add time":"Adicionar hora","Remove time":"Remover hora","Duplicate card":"Duplicate card","Enter list title...":"Insira o t\xEDtulo da lista...","Mark cards in this list as complete":"Marcar os itens nesta lista como conclu\xEDdos","Add list":"Adicionar lista","Add a list":"Adicionar uma lista","Move list":"Mover lista",Close:"Fechar","Are you sure you want to delete this list and all its cards?":"Tem certeza de que deseja excluir esta lista e todos os seus cart\xF5es?","Yes, delete list":"Sim, excluir esta lista","Are you sure you want to archive this list and all its cards?":"Tem certeza de que deseja arquivar esta lista e todos os seus cart\xF5es?","Yes, archive list":"Sim, arquivar esta lista","Are you sure you want to archive all cards in this list?":"Tem certeza de que deseja arquivar todos os cart\xF5es desta lista?","Yes, archive cards":"Sim, arquivar cart\xF5es","Edit list":"Editar lista","Archive cards":"Arquivar cart\xF5es","Archive list":"Arquivar lista","Delete list":"Excluir lista"};h();var Tv={};h();var Dv={};h();var Mv={};h();var gs={};h();var Iv={"Open as kanban board":"\u6253\u5F00\u4E3A\u770B\u677F","Create new board":"\u521B\u5EFA\u65B0\u770B\u677F","Archive completed cards in active board":"\u5728\u5F53\u524D\u770B\u677F\u4E2D\u5F52\u6863\u5DF2\u5B8C\u6210\u5361\u7247","Error: current file is not a Kanban board":"\u9519\u8BEF\uFF1A\u5F53\u524D\u6587\u4EF6\u4E0D\u662F\u770B\u677F\u6587\u4EF6","Convert empty note to Kanban":"\u8F6C\u6362\u7A7A\u767D\u7B14\u8BB0\u4E3A\u770B\u677F","Error: cannot create Kanban, the current note is not empty":"\u9519\u8BEF\uFF1A\u65E0\u6CD5\u8F6C\u6362\u5F53\u524D\u6587\u4EF6\uFF0C\u5F53\u524D\u7B14\u8BB0\u4E0D\u662F\u7A7A\u767D\u7B14\u8BB0","New kanban board":"\u65B0\u770B\u677F","Untitled Kanban":"\u672A\u547D\u540D\u770B\u677F","Toggle between Kanban and markdown mode":"\u5728\u770B\u677F\u548C Markdown \u6A21\u5F0F\u4E4B\u95F4\u8FDB\u884C\u5207\u6362","Open as markdown":"\u6253\u5F00\u4E3A Markdown \u6587\u4EF6","Open board settings":"\u6253\u5F00\u770B\u677F\u8BBE\u7F6E","Archive completed cards":"\u5F52\u6863\u5DF2\u5B8C\u6210\u5361\u7247","Something went wrong":"\u51FA\u4E86\u70B9\u95EE\u9898","You may wish to open as markdown and inspect or edit the file.":"\u4F60\u53EF\u80FD\u5E0C\u671B\u4EE5 Markdown \u65B9\u5F0F\u6253\u5F00\uFF0C\u5E76\u68C0\u67E5\u6216\u7F16\u8F91\u8BE5\u6587\u4EF6\u3002","Are you sure you want to archive all completed cards on this board?":"\u4F60\u786E\u5B9A\u8981\u5C06\u8FD9\u4E2A\u677F\u5757\u4E0A\u6240\u6709\u5DF2\u5B8C\u6210\u7684\u5361\u7247\u5F52\u6863\u5417\uFF1F",Complete:"\u5B8C\u6210",Archive:"\u5F52\u6863","Invalid Kanban file: problems parsing frontmatter":"\u65E0\u6548\u7684\u770B\u677F\u6587\u4EF6\uFF1A\u89E3\u6790 frontmatter \u65F6\u51FA\u73B0\u95EE\u9898","I don't know how to interpret this line:":"\u6211\u4E0D\u77E5\u9053\u5982\u4F55\u89E3\u8BFB\u8FD9\u53E5\u8BDD\uFF1A",Untitled:"\u672A\u547D\u540D","Note: No template plugins are currently enabled.":"\u6CE8\u610F\uFF1A\u5F53\u524D\u6CA1\u6709\u542F\u7528\u6A21\u677F\u63D2\u4EF6",default:"\u9ED8\u8BA4","Search...":"\u641C\u7D22\u2026\u2026","New line trigger":"\u6362\u884C\u89E6\u53D1\u5668","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.":"\u9009\u62E9 Enter \u6216\u662F Shift+Enter \u6765\u521B\u5EFA\u65B0\u884C, \u672A\u9009\u7528\u7684\u5FEB\u6377\u952E\u5C06\u88AB\u7528\u4E8E\u521B\u5EFA\u5361\u7247\u548C\u5217\uFF0C\u4EE5\u53CA\u5B8C\u6210\u5361\u7247\u3001\u5217\u7684\u7F16\u8F91\u3002","Shift + Enter":"Shift + Enter",Enter:"Enter","Prepend / append new cards":"\u8FFD\u52A0\u65B0\u5361\u7247","This setting controls whether new cards are added to the beginning or end of the list.":"\u8BBE\u7F6E\u65B0\u5361\u7247\u8FFD\u52A0\u5230\u5217\u5934\u90E8\u6216\u5C3E\u90E8\u3002",Prepend:"\u5934\u90E8","Prepend (compact)":"\u5934\u90E8 (\u7D27\u51D1)",Append:"\u5C3E\u90E8","These settings will take precedence over the default Kanban board settings.":"\u5F53\u524D\u770B\u677F\u8BBE\u7F6E\u5C06\u4F1A\u8986\u76D6\u9ED8\u8BA4\u7684\u770B\u677F\u8BBE\u7F6E\u3002","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"\u66F4\u6539\u9ED8\u8BA4\u7684\u770B\u677F\u8BBE\u7F6E\u3002\u4E3A\u6BCF\u4E2A\u770B\u677F\u5355\u72EC\u8FDB\u884C\u8BBE\u7F6E\u5C06\u8986\u76D6\u9ED8\u8BA4\u8BBE\u7F6E\u3002","Note template":"\u7B14\u8BB0\u6A21\u677F","This template will be used when creating new notes from Kanban cards.":"\u4ECE\u770B\u677F\u5361\u7247\u521B\u5EFA\u65B0\u7B14\u8BB0\u65F6\u4F1A\u4F7F\u7528\u8BE5\u6A21\u677F\u3002","No template":"\u6CA1\u6709\u6A21\u677F","Note folder":"\u7B14\u8BB0\u5B58\u653E\u4F4D\u7F6E","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"\u4ECE\u770B\u677F\u5361\u7247\u521B\u5EFA\u7684\u7B14\u8BB0\u4F1A\u653E\u7F6E\u5230\u8BE5\u6587\u4EF6\u5939\u4E2D\u3002\u5982\u679C\u4E3A\u7A7A\uFF0C\u7B14\u8BB0\u5C06\u4F1A\u653E\u7F6E\u5230 Obsidian \u7684\u9ED8\u8BA4\u6587\u4EF6\u5B58\u653E\u4F4D\u7F6E\u3002","Default folder":"\u9ED8\u8BA4\u6587\u4EF6\u5939","List width":"\u5217\u5BBD","Enter a number to set the list width in pixels.":"\u8F93\u5165\u4E00\u4E2A\u50CF\u7D20\u503C\u6765\u8BBE\u7F6E\u5217\u7684\u5BBD\u5EA6","Maximum number of archived cards":"\u5355\u4E2A\u770B\u677F\u5185\u5DF2\u5F52\u6863\u5361\u7247\u7684\u6700\u5927\u6570\u91CF","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"\u5DF2\u5F52\u6863\u5361\u7247\u53EF\u4EE5\u5728 Markdown \u6A21\u5F0F\u4E0B\u67E5\u770B\u3002\u8BE5\u8BBE\u7F6E\u5C06\u4F7F\u5DF2\u5F52\u6863\u5361\u7247\u5728\u8FBE\u5230\u6700\u5927\u6570\u91CF\u65F6\u5220\u9664\u65E7\u5361\u3002\u8BBE\u7F6E\u4E3A -1 \u53EF\u4EE5\u6C38\u4E45\u4FDD\u7559\u6240\u6709\u5F52\u6863\u5361\u7247\u3002","Display card checkbox":"\u5C55\u793A\u5361\u7247\u590D\u9009\u6846","When toggled, a checkbox will be displayed with each card":"\u6253\u5F00\u65F6\uFF0C\u590D\u9009\u6846\u4F1A\u51FA\u73B0\u5728\u6BCF\u5F20\u5361\u7247\u4E0A","Reset to default":"\u8FD8\u539F\u521D\u59CB\u8BBE\u7F6E","Date & Time":"\u65E5\u671F\u548C\u65F6\u95F4","Date trigger":"\u65E5\u671F\u89E6\u53D1\u6307\u4EE4","When this is typed, it will trigger the date selector":"\u5F53\u5728\u770B\u677F\u5361\u7247\u4E2D\u8F93\u5165\u8FD9\u4E2A\u65F6\uFF0C\u4F1A\u89E6\u53D1\u4E00\u4E2A\u65E5\u671F\u9009\u62E9\u5668","Time trigger":"\u65F6\u95F4\u89E6\u53D1\u6307\u4EE4","When this is typed, it will trigger the time selector":"\u5F53\u5728\u770B\u677F\u5361\u7247\u4E2D\u8F93\u5165\u8FD9\u4E2A\u65F6\uFF0C\u4F1A\u89E6\u53D1\u4E00\u4E2A\u65F6\u95F4\u9009\u62E9\u5668","Date format":"\u65E5\u671F\u683C\u5F0F","This format will be used when saving dates in markdown.":"\u8FD9\u4E2A\u683C\u5F0F\u4F1A\u5728\u65E5\u671F\u4FDD\u5B58\u5230 Markdown \u683C\u5F0F\u65F6\u4F7F\u7528\u3002","For more syntax, refer to":"\u66F4\u591A\u683C\u5F0F\uFF0C\u8BF7\u67E5\u770B","format reference":"\u683C\u5F0F\u53C2\u8003","Your current syntax looks like this":"\u4F60\u5F53\u524D\u8BBE\u7F6E\u7684\u683C\u5F0F\u4F1A\u662F","Time format":"\u65F6\u95F4\u683C\u5F0F","Date display format":"\u65E5\u671F\u5C55\u793A\u683C\u5F0F","This format will be used when displaying dates in Kanban cards.":"\u770B\u677F\u5361\u7247\u4F1A\u4EE5\u8BE5\u683C\u5F0F\u5C55\u793A\u65E5\u671F\u3002","Show relative date":"\u5C55\u793A\u76F8\u5BF9\u65E5\u671F","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u4F1A\u5C55\u793A\u5176\u6240\u8BBE\u65E5\u671F\u4E0E\u5F53\u524D\u65E5\u671F\u7684\u5DEE\u503C\uFF0C\u4F8B\u5982\u201C3\u5929\u5185\u201D\u201C\u4E00\u4E2A\u6708\u524D\u201D\u7B49","Hide card display dates":"\u9690\u85CF\u5361\u7247\u65E5\u671F","Hide card counts in list titles":"\u5728\u5217\u6807\u9898\u4E0A\u9690\u85CF\u5361\u7247\u8BA1\u6570","When toggled, card counts are hidden from the list title":"\u6253\u5F00\u65F6\uFF0C\u5217\u6807\u9898\u4E0A\u7684\u5361\u7247\u8BA1\u6570\u5C06\u9690\u85CF","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"\u6253\u5F00\u65F6\uFF0C\u683C\u5F0F\u5316\u65E5\u671F\u4E0D\u4F1A\u5728\u5361\u7247\u4E0A\u5C55\u793A\u3002\u5982\u679C\u5F00\u542F\u4E86\u76F8\u5BF9\u65E5\u671F\u529F\u80FD\uFF0C\u76F8\u5BF9\u65E5\u671F\u8FD8\u662F\u4F1A\u7EE7\u7EED\u5C55\u793A\u3002","Hide dates in card titles":"\u5728\u5361\u7247\u6807\u9898\u4E2D\u9690\u85CF\u65E5\u671F","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u6807\u9898\u4E2D\u7684\u65E5\u671F\u5C06\u4F1A\u9690\u85CF\u3002\u5F53\u57FA\u4E8E\u5361\u7247\u521B\u5EFA\u65B0\u7B14\u8BB0\u65F6\u53EF\u4EE5\u907F\u514D\u65E5\u671F\u6DF7\u6742\u5176\u4E2D\u3002","Link dates to daily notes":"\u94FE\u63A5\u65E5\u671F\u5230\u65E5\u8BB0","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"\u6253\u5F00\u65F6\uFF0C\u65E5\u671F\u4F1A\u81EA\u52A8\u94FE\u63A5\u5230\u65E5\u8BB0\u9875\u9762\uFF0C\u4F8B\u5982[[2021-04-26]]","Add date and time to archived cards":"\u6DFB\u52A0\u65E5\u671F\u548C\u65F6\u95F4\u5230\u5F52\u6863\u5361\u7247","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"\u6253\u5F00\u65F6\uFF0C\u5F53\u524D\u65E5\u671F\u548C\u65F6\u95F4\u4F1A\u88AB\u6DFB\u52A0\u5230\u5F52\u6863\u5361\u7247\u7684 frontmatter \u4E0A\uFF0C\u4F8B\u5982\u201C- [ ] 2021-05-14 10:00am \u6211\u7684\u5361\u7247\u6807\u9898\u201D","Archive date/time separator":"\u5F52\u6863\u65E5\u671F\u6216\u65F6\u95F4\u5206\u9694\u7B26Archive date/time separator","This will be used to separate the archived date/time from the title":"\u7528\u4E8E\u5206\u9694\u6807\u9898\u4E0E\u5F52\u6863\u5361\u7247\u7684\u65E5\u671F\u6216\u65F6\u95F4","Archive date/time format":"\u5F52\u6863\u65E5\u671F\u6216\u65F6\u95F4\u683C\u5F0F","Kanban Plugin":"\u770B\u677F\u63D2\u4EF6","Hide tags in card titles":"\u9690\u85CF\u5361\u7247\u6807\u9898\u4E2D\u7684\u6807\u7B7E","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u6807\u9898\u4E2D\u7684\u6807\u7B7E\u5C06\u4F1A\u88AB\u9690\u85CF\u3002\u5F53\u57FA\u4E8E\u5361\u7247\u521B\u5EFA\u65B0\u7B14\u8BB0\u65F6\u53EF\u4EE5\u907F\u514D\u6807\u7B7E\u6DF7\u6742\u5176\u4E2D\u3002","Hide card display tags":"\u9690\u85CF\u5361\u7247\u4E0A\u7684\u6807\u7B7E","When toggled, tags will not be displayed below the card title.":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u6807\u9898\u4E0B\u65B9\u7684\u6807\u7B7E\u5C06\u4E0D\u4F1A\u5C55\u793A\u3002","Linked Page Metadata":"\u8FDE\u63A5\u7684\u9875\u9762\u5143\u6570\u636E","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"\u5C55\u793A\u5361\u7247\u4E2D\u7B2C\u4E00\u4E2A\u8FDE\u63A5\u6240\u5BF9\u5E94\u7684\u7B14\u8BB0\u5143\u6570\u636E\u3002\u8BF7\u5728\u4E0B\u65B9\u6307\u5B9A\u54EA\u4E9B\u5143\u6570\u636E\u53EF\u4EE5\u5C55\u793A\u3002\u4F60\u53EF\u4EE5\u9009\u62E9\u5C55\u793A\u54EA\u4E9B\u6807\u5FD7\uFF0C\u6240\u6709\u6807\u5FD7\u90FD\u53EF\u4EE5\u88AB\u9690\u85CF\u3002","Board Header Buttons":"\u677F\u5934\u6309\u94AE","Calendar: first day of week":"\u65E5\u5386\uFF1A\u4E00\u5468\u7684\u7B2C\u4E00\u5929","Override which day is used as the start of the week":"\u8BBE\u7F6E\u54EA\u4E00\u5929\u4F5C\u4E3A\u4E00\u5468\u7684\u5F00\u59CB",Sunday:"\u5468\u65E5",Monday:"\u5468\u4E00",Tuesday:"\u5468\u4E8C",Wednesday:"\u5468\u4E09",Thursday:"\u5468\u56DB",Friday:"\u5468\u4E94",Saturday:"\u5468\u516D","Metadata key":"\u5143\u6570\u636E\u53C2\u6570\u540D","Display label":"\u5C55\u793A\u6807\u5FD7","Hide label":"\u9690\u85CF\u6807\u5FD7","Drag to rearrange":"\u62D6\u52A8\u4EE5\u91CD\u6392\u987A\u5E8F",Delete:"\u5220\u9664","Add key":"\u6DFB\u52A0\u53C2\u6570\u540D","Field contains markdown":"\u5B57\u6BB5\u5305\u542B Markdown","More options":"\u66F4\u591A\u9009\u9879",Cancel:"\u53D6\u6D88",today:"\u4ECA\u5929",yesterday:"\u6628\u5929",tomorrow:"\u660E\u5929","Change date":"\u66F4\u6539\u65E5\u671F","Change time":"\u66F4\u6539\u65F6\u95F4","Card title...":"\u5361\u7247\u6807\u9898\u2026\u2026","Add card":"\u6DFB\u52A0","Add a card":"\u6DFB\u52A0\u5361\u7247","Edit card":"\u7F16\u8F91\u5361\u7247","New note from card":"\u4ECE\u5361\u7247\u65B0\u5EFA\u7B14\u8BB0","Archive card":"\u5F52\u6863\u5361\u7247","Delete card":"\u5220\u9664\u5361\u7247","Edit date":"\u7F16\u8F91\u65E5\u671F","Add date":"\u6DFB\u52A0\u65E5\u671F","Remove date":"\u79FB\u9664\u65E5\u671F","Edit time":"\u7F16\u8F91\u65F6\u95F4","Add time":"\u6DFB\u52A0\u65F6\u95F4","Remove time":"\u79FB\u9664\u65F6\u95F4","Duplicate card":"\u590D\u5236\u5361\u7247","Split card":"\u5206\u79BB\u5361\u7247","Copy link to card":"\u590D\u5236\u94FE\u63A5\u81F3\u5361\u7247","Insert card before":"\u5728\u4E0A\u65B9\u63D2\u5165\u5361\u7247","Insert card after":"\u5728\u4E0B\u65B9\u63D2\u5165\u5361\u7247","Enter list title...":"\u8F93\u5165\u65B0\u7684\u5217\u6807\u9898\u2026\u2026","Mark cards in this list as complete":"\u5C06\u8BE5\u5217\u8BBE\u7F6E\u4E3A\u5B8C\u6210\u5217","Add list":"\u6DFB\u52A0","Add a list":"\u6DFB\u52A0\u5217","Move list":"\u79FB\u52A8\u5217",Close:"\u5173\u95ED","Are you sure you want to delete this list and all its cards?":"\u4F60\u786E\u5B9A\u4F60\u8981\u5220\u9664\u6574\u5217\u4EE5\u53CA\u8BE5\u5217\u4E0B\u6240\u6709\u5361\u7247\u5417\uFF1F","Yes, delete list":"\u662F\uFF0C\u5220\u9664\u5217","Are you sure you want to archive this list and all its cards?":"\u4F60\u786E\u5B9A\u4F60\u8981\u5F52\u6863\u6574\u5217\u4EE5\u53CA\u8BE5\u5217\u4E0B\u6240\u6709\u5361\u7247\u5417\uFF1F","Yes, archive list":"\u662F, \u5F52\u6863\u5217","Are you sure you want to archive all cards in this list?":"\u4F60\u786E\u8BA4\u4F60\u8981\u5F52\u6863\u5F53\u524D\u5217\u7684\u6240\u6709\u5361\u7247\u5417\uFF1F","Yes, archive cards":"\u662F\uFF0C\u5F52\u6863\u6240\u6709\u5361\u7247","Edit list":"\u7F16\u8F91\u5217","Archive cards":"\u5F52\u6863\u5361\u7247","Archive list":"\u5F52\u6863\u5217","Delete list":"\u5220\u9664\u5217","Insert list before":"\u5728\u4E0A\u65B9\u63D2\u5165\u5217","Insert list after":"\u5728\u4E0B\u65B9\u63D2\u5165\u5217","Sort by card text":"\u4EE5\u5361\u7247\u6587\u672C\u6392\u5E8F","Sort by date":"\u4EE5\u65E5\u671F\u6392\u5E8F","Unable to find":"\u65E0\u6CD5\u627E\u5230","Open in default app":"\u5728\u9ED8\u8BA4\u5E94\u7528\u4E2D\u6253\u5F00",Submit:"\u63D0\u4EA4"};h();var Av={};var pS={ar:dv,cz:fv,da:pv,de:hv,en:Lu,es:mv,fr:gv,hi:vv,id:yv,it:bv,ja:wv,ko:Ev,nl:xv,no:kv,pl:Sv,"pt-BR":Cv,pt:_v,ro:Tv,ru:Dv,sq:Mv,tr:gs,uk:gs,"zh-TW":Av,zh:Iv},Lv=window.localStorage.getItem("language"),Pu=pS[Lv||"en"];function B(e){return Pu||console.error("Error: kanban locale not found",Lv),Pu&&Pu[e]||Lu[e]}h();h();function Gn(e){return Array.isArray?Array.isArray(e):Nv(e)==="[object Array]"}var hS=1/0;function mS(e){if(typeof e=="string")return e;let t=e+"";return t=="0"&&1/e==-hS?"-0":t}function gS(e){return e==null?"":mS(e)}function Rn(e){return typeof e=="string"}function Pv(e){return typeof e=="number"}function vS(e){return e===!0||e===!1||yS(e)&&Nv(e)=="[object Boolean]"}function Fv(e){return typeof e=="object"}function yS(e){return Fv(e)&&e!==null}function un(e){return e!=null}function Fu(e){return!e.trim().length}function Nv(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var bS="Incorrect 'index' type",wS=e=>`Invalid value for key ${e}`,ES=e=>`Pattern length exceeds max of ${e}.`,xS=e=>`Missing ${e} property in key`,kS=e=>`Property 'weight' in key '${e}' must be a positive integer`,Ov=Object.prototype.hasOwnProperty,Rv=class{constructor(t){this._keys=[],this._keyMap={};let r=0;t.forEach(n=>{let i=Hv(n);r+=i.weight,this._keys.push(i),this._keyMap[i.id]=i,r+=i.weight}),this._keys.forEach(n=>{n.weight/=r})}get(t){return this._keyMap[t]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}};function Hv(e){let t=null,r=null,n=null,i=1,a=null;if(Rn(e)||Gn(e))n=e,t=Bv(e),r=Nu(e);else{if(!Ov.call(e,"name"))throw new Error(xS("name"));let o=e.name;if(n=o,Ov.call(e,"weight")&&(i=e.weight,i<=0))throw new Error(kS(o));t=Bv(o),r=Nu(o),a=e.getFn}return{path:t,id:r,weight:i,src:n,getFn:a}}function Bv(e){return Gn(e)?e:e.split(".")}function Nu(e){return Gn(e)?e.join("."):e}function SS(e,t){let r=[],n=!1,i=(a,o,s)=>{if(!!un(a))if(!o[s])r.push(a);else{let u=o[s],l=a[u];if(!un(l))return;if(s===o.length-1&&(Rn(l)||Pv(l)||vS(l)))r.push(gS(l));else if(Gn(l)){n=!0;for(let c=0,d=l.length;ce.score===t.score?e.idx{this._keysMap[r.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,Rn(this.docs[0])?this.docs.forEach((t,r)=>{this._addString(t,r)}):this.docs.forEach((t,r)=>{this._addObject(t,r)}),this.norm.clear())}add(t){let r=this.size();Rn(t)?this._addString(t,r):this._addObject(t,r)}removeAt(t){this.records.splice(t,1);for(let r=t,n=this.size();r{let o=i.getFn?i.getFn(t):this.getFn(t,i.path);if(!!un(o)){if(Gn(o)){let s=[],u=[{nestedArrIndex:-1,value:o}];for(;u.length;){let{nestedArrIndex:l,value:c}=u.pop();if(!!un(c))if(Rn(c)&&!Fu(c)){let d={v:c,i:l,n:this.norm.get(c)};s.push(d)}else Gn(c)&&c.forEach((d,f)=>{u.push({nestedArrIndex:f,value:d})})}n.$[a]=s}else if(Rn(o)&&!Fu(o)){let s={v:o,n:this.norm.get(o)};n.$[a]=s}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}};function Kv(e,t,{getFn:r=_e.getFn,fieldNormWeight:n=_e.fieldNormWeight}={}){let i=new vs({getFn:r,fieldNormWeight:n});return i.setKeys(e.map(Hv)),i.setSources(t),i.create(),i}function AS(e,{getFn:t=_e.getFn,fieldNormWeight:r=_e.fieldNormWeight}={}){let{keys:n,records:i}=e,a=new vs({getFn:t,fieldNormWeight:r});return a.setKeys(n),a.setIndexRecords(i),a}function ys(e,{errors:t=0,currentLocation:r=0,expectedLocation:n=0,distance:i=_e.distance,ignoreLocation:a=_e.ignoreLocation}={}){let o=t/e.length;if(a)return o;let s=Math.abs(n-r);return i?o+s/i:s?1:o}function LS(e=[],t=_e.minMatchCharLength){let r=[],n=-1,i=-1,a=0;for(let o=e.length;a=t&&r.push([n,i]),n=-1)}return e[a-1]&&a-n>=t&&r.push([n,a-1]),r}var $r=32;function PS(e,t,r,{location:n=_e.location,distance:i=_e.distance,threshold:a=_e.threshold,findAllMatches:o=_e.findAllMatches,minMatchCharLength:s=_e.minMatchCharLength,includeMatches:u=_e.includeMatches,ignoreLocation:l=_e.ignoreLocation}={}){if(t.length>$r)throw new Error(ES($r));let c=t.length,d=e.length,f=Math.max(0,Math.min(n,d)),p=a,m=f,y=s>1||u,b=y?Array(d):[],x;for(;(x=e.indexOf(t,m))>-1;){let O=ys(t,{currentLocation:x,expectedLocation:f,distance:i,ignoreLocation:l});if(p=Math.min(O,p),m=x+c,y){let W=0;for(;W=ee;G-=1){let re=G-1,pe=r[e.charAt(re)];if(y&&(b[re]=+!!pe),le[G]=(le[G+1]<<1|1)&pe,O&&(le[G]|=(D[G+1]|D[G])<<1|1|D[G+1]),le[G]&N&&(C=ys(t,{errors:O,currentLocation:re,expectedLocation:f,distance:i,ignoreLocation:l}),C<=p)){if(p=C,m=re,m<=f)break;ee=Math.max(1,2*f-m)}}if(ys(t,{errors:O+1,currentLocation:f,expectedLocation:f,distance:i,ignoreLocation:l})>p)break;D=le}let T={isMatch:m>=0,score:Math.max(.001,C)};if(y){let O=LS(b,s);O.length?u&&(T.indices=O):T.isMatch=!1}return T}function FS(e){let t={};for(let r=0,n=e.length;r{this.chunks.push({pattern:f,alphabet:FS(f),startIndex:p})},d=this.pattern.length;if(d>$r){let f=0,p=d%$r,m=d-p;for(;f{let{isMatch:x,score:D,indices:C}=PS(t,m,y,{location:i+b,distance:a,threshold:o,findAllMatches:s,minMatchCharLength:u,includeMatches:n,ignoreLocation:l});x&&(f=!0),d+=D,x&&C&&(c=[...c,...C])});let p={isMatch:f,score:f?d/this.chunks.length:1};return f&&n&&(p.indices=c),p}},Qn=class{constructor(t){this.pattern=t}static isMultiMatch(t){return $v(t,this.multiRegex)}static isSingleMatch(t){return $v(t,this.singleRegex)}search(){}};function $v(e,t){let r=e.match(t);return r?r[1]:null}var Uv=class extends Qn{constructor(t){super(t)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(t){let r=t===this.pattern;return{isMatch:r,score:r?0:1,indices:[0,this.pattern.length-1]}}},Wv=class extends Qn{constructor(t){super(t)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(t){let n=t.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},Vv=class extends Qn{constructor(t){super(t)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(t){let r=t.startsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,this.pattern.length-1]}}},zv=class extends Qn{constructor(t){super(t)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(t){let r=!t.startsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,t.length-1]}}},jv=class extends Qn{constructor(t){super(t)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(t){let r=t.endsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[t.length-this.pattern.length,t.length-1]}}},qv=class extends Qn{constructor(t){super(t)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(t){let r=!t.endsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,t.length-1]}}},Ru=class extends Qn{constructor(t,{location:r=_e.location,threshold:n=_e.threshold,distance:i=_e.distance,includeMatches:a=_e.includeMatches,findAllMatches:o=_e.findAllMatches,minMatchCharLength:s=_e.minMatchCharLength,isCaseSensitive:u=_e.isCaseSensitive,ignoreLocation:l=_e.ignoreLocation}={}){super(t);this._bitapSearch=new Ou(t,{location:r,threshold:n,distance:i,includeMatches:a,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:u,ignoreLocation:l})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(t){return this._bitapSearch.searchIn(t)}},Hu=class extends Qn{constructor(t){super(t)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(t){let r=0,n,i=[],a=this.pattern.length;for(;(n=t.indexOf(this.pattern,r))>-1;)r=n+a,i.push([n,r-1]);let o=!!i.length;return{isMatch:o,score:o?0:1,indices:i}}},Bu=[Uv,Hu,Vv,zv,qv,jv,Wv,Ru],Yv=Bu.length,NS=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,OS="|";function RS(e,t={}){return e.split(OS).map(r=>{let n=r.trim().split(NS).filter(a=>a&&!!a.trim()),i=[];for(let a=0,o=n.length;a!!(e[bs.AND]||e[bs.OR]),KS=e=>!!e[Uu.PATH],$S=e=>!Gn(e)&&Fv(e)&&!Wu(e),Gv=e=>({[bs.AND]:Object.keys(e).map(t=>({[t]:e[t]}))});function Qv(e,t,{auto:r=!0}={}){let n=i=>{let a=Object.keys(i),o=KS(i);if(!o&&a.length>1&&!Wu(i))return n(Gv(i));if($S(i)){let u=o?i[Uu.PATH]:a[0],l=o?i[Uu.PATTERN]:i[u];if(!Rn(l))throw new Error(wS(u));let c={keyId:Nu(u),pattern:l};return r&&(c.searcher=$u(l,t)),c}let s={children:[],operator:a[0]};return a.forEach(u=>{let l=i[u];Gn(l)&&l.forEach(c=>{s.children.push(n(c))})}),s};return Wu(e)||(e=Gv(e)),n(e)}function US(e,{ignoreFieldNorm:t=_e.ignoreFieldNorm}){e.forEach(r=>{let n=1;r.matches.forEach(({key:i,norm:a,score:o})=>{let s=i?i.weight:null;n*=Math.pow(o===0&&s?Number.EPSILON:o,(s||1)*(t?1:a))}),r.score=n})}function WS(e,t){let r=e.matches;t.matches=[],!!un(r)&&r.forEach(n=>{if(!un(n.indices)||!n.indices.length)return;let{indices:i,value:a}=n,o={indices:i,value:a};n.key&&(o.key=n.key.src),n.idx>-1&&(o.refIndex=n.idx),t.matches.push(o)})}function VS(e,t){t.score=e.score}function zS(e,t,{includeMatches:r=_e.includeMatches,includeScore:n=_e.includeScore}={}){let i=[];return r&&i.push(WS),n&&i.push(VS),e.map(a=>{let{idx:o}=a,s={item:t[o],refIndex:o};return i.length&&i.forEach(u=>{u(a,s)}),s})}var mn=class{constructor(t,r={},n){this.options={..._e,...r},this.options.useExtendedSearch,this._keyStore=new Rv(this.options.keys),this.setCollection(t,n)}setCollection(t,r){if(this._docs=t,r&&!(r instanceof vs))throw new Error(bS);this._myIndex=r||Kv(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(t){!un(t)||(this._docs.push(t),this._myIndex.add(t))}remove(t=()=>!1){let r=[];for(let n=0,i=this._docs.length;n-1&&(u=u.slice(0,r)),zS(u,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(t){let r=$u(t,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:a,i:o,n:s})=>{if(!un(a))return;let{isMatch:u,score:l,indices:c}=r.searchIn(a);u&&i.push({item:a,idx:o,matches:[{score:l,value:a,norm:s,indices:c}]})}),i}_searchLogical(t){let r=Qv(t,this.options),n=(s,u,l)=>{if(!s.children){let{keyId:d,searcher:f}=s,p=this._findMatches({key:this._keyStore.get(d),value:this._myIndex.getValueForItemAtKeyId(u,d),searcher:f});return p&&p.length?[{idx:l,item:u,matches:p}]:[]}let c=[];for(let d=0,f=s.children.length;d{if(un(s)){let l=n(r,s,u);l.length&&(a[u]||(a[u]={idx:u,item:s,matches:[]},o.push(a[u])),l.forEach(({matches:c})=>{a[u].matches.push(...c)}))}}),o}_searchObjectList(t){let r=$u(t,this.options),{keys:n,records:i}=this._myIndex,a=[];return i.forEach(({$:o,i:s})=>{if(!un(o))return;let u=[];n.forEach((l,c)=>{u.push(...this._findMatches({key:l,value:o[c],searcher:r}))}),u.length&&a.push({idx:s,item:o,matches:u})}),a}_findMatches({key:t,value:r,searcher:n}){if(!un(r))return[];let i=[];if(Gn(r))r.forEach(({v:a,i:o,n:s})=>{if(!un(a))return;let{isMatch:u,score:l,indices:c}=n.searchIn(a);u&&i.push({score:l,key:t,value:a,idx:o,norm:s,indices:c})});else{let{v:a,n:o}=r,{isMatch:s,score:u,indices:l}=n.searchIn(a);s&&i.push({score:u,key:t,value:a,norm:o,indices:l})}return i}};mn.version="6.6.2";mn.createIndex=Kv;mn.parseIndex=AS;mn.config=_e;mn.parseQuery=Qv;BS(Jv);var yy=ge(require("obsidian"));h();var Xv=ge(require("obsidian"));function ws(e,t,r){let n=r.getSetting("date-format"),i=r.getSetting("link-date-to-daily-note"),a=(0,Xv.moment)(e).format(n),o=i?Vo(r.app,a):`{${a}}`;At(t.current,o),t.current.focus()}function Zv({div:e,inputRef:t,cb:r,stateManager:n}){e.createEl("input",{type:"text"},i=>{e.win.setTimeout(()=>r(ts(i,{now:new Date,locale:Yo(n),inline:!0,onChange:a=>{ws(a[0],t,n)},win:i.win})))})}function Vu(e,t){let r=t.clientHeight,n=t.clientWidth,i=Ze(t);e.top+r>i.innerHeight&&(t.style.top=`${(e.clientTop||0)-r}px`),e.left+n>i.innerWidth&&(t.style.left=`${(e.left||0)-n}px`)}function ey(e){let t=e.getSetting("time-trigger"),r=new RegExp(`\\B${Ln(t)}{?([^}]*)$`),n=_u(e);return{id:"time",match:r,index:1,search:(i,a)=>{a(i?n.filter(o=>o.startsWith(i)):n)},template:i=>i,replace:i=>`${t}{${i}} `}}function ty(e){let t=e.month(),r=e.clone().startOf("month").weekday(0),n=e.diff(r,"week");e.subtract(1,"month").startOf("month").weekday(6).add(n,"week");let i=e.month();for(;t===i;)e.subtract(1,"week"),i=e.month();return e}function ny(e){let t=e.month(),r=e.clone().startOf("month").weekday(6),n=e.diff(r,"week");e.add(1,"month").startOf("month").weekday(0).add(n,"week");let i=e.month();for(;t===i;)e.add(1,"week"),i=e.month();return e}h();var ry=ge(require("obsidian"));var jS=/\B\[\[([^\]]*)$/,qS=/\B!\[\[([^\]]*)$/,YS=/\B\[\[([^#\]]+)#([^\]]*)$/,JS=/\B!\[\[([^#\]]+)#([^\]]*)$/,GS=/\B\[\[([^#\]]+)#?\^([^\]]*)$/,QS=/\B!\[\[([^#\]]+)#?\^([^\]]*)$/;function XS(e,t,r,n){let i=e.document.body.createDiv($("file-suggestion-wrapper"));i.detach(),(0,ry.setIcon)(i.createDiv($("file-suggestion-icon")),"forward-arrow",12),i.createDiv({},o=>{o.createDiv({cls:$("file-suggestion-title"),text:n.item.alias}),o.createDiv({cls:$("file-suggestion-subtitle"),text:t.app.metadataCache.fileToLinktext(n.item.file,r)})});let a=i.outerHTML;return i.remove(),i=null,a}function zu(e,t,r,n,i,a,o){return{id:`link-${o?"embed":"normal"}`,match:o?qS:jS,index:1,template:s=>s.item.file===null?`${s.item.path.split("|").pop()||s.item.path}`:s.item.alias?XS(e,i,n,s):i.app.metadataCache.fileToLinktext(s.item.file,n),search:(s,u)=>{if(!s)u(t.slice(0,10).map((l,c)=>({item:l,refIndex:c})));else{let l=s.split("|"),c=l.length>1,d=l[0],f=c?l.slice(1).join("|"):null,p=s;c&&(p={"file.basename":d,alias:f}),u([{item:{file:null,path:s,alias:""},refIndex:-1},...r.search(p)])}},replace:s=>{let u=[];o&&s.item.file.extension==="md"&&u.push("!"),s.item.file===null?u.push(`[[${s.item.path}]]`):u.push(i.app.fileManager.generateMarkdownLink(s.item.file,i.file.path,void 0,s.item.alias));let l=!!i.app.vault.getConfig("useMarkdownLinks");return a&&!l&&(u[u.length-1]=u[u.length-1].slice(0,-2)),u.join("")}}}function ZS(e,t,r,n){var u;if(!r)return[];let i=r.split("|"),a=e.metadataCache.getFirstLinkpathDest(i[0],t);if(!a)return[];let o=e.metadataCache.getFileCache(a);if(!o||!((u=o.headings)==null?void 0:u.length))return[];let s=o.headings.map(l=>({file:a,heading:l.heading,alias:i[1]||""}));return n?new mn(s,{keys:["heading"]}).search(n):s.map((l,c)=>({item:l,refIndex:c}))}function ju(e,t,r,n){return{id:`heading-${n?"embed":"normal"}`,match:n?JS:YS,index:1,template:i=>i.item.heading,search:(i,a,o)=>{a(ZS(t.app,e,o[1],o[2]))},replace:i=>{let a=[];n&&i.item.file.extension==="md"&&a.push("!"),a.push(t.app.fileManager.generateMarkdownLink(i.item.file,t.file.path,"#"+i.item.heading,i.item.alias));let o=!!t.app.vault.getConfig("useMarkdownLinks");return r&&!o?a[a.length-1]=a[a.length-1].slice(0,-2):!r&&!o&&a.push("]] "),a.join("")}}}var iy=class{constructor(){this.running=!1;this.cancelled=!1}start(){this.running=!0}stop(){this.running=!1}cancel(){this.stop(),this.cancelled=!0}isRunning(){return this.running}isCancelled(){return this.cancelled}};async function e_(e,t,r,n,i){var u;if(!r)return i([]);let a=r.split("|"),o=e.metadataCache.getFirstLinkpathDest(a[0],t);if(!o)return i([]);let s=e.metadataCache.getFileCache(o);if(!s||!((u=s.sections)==null?void 0:u.length))return i([]);try{let l=await e.metadataCache.blockCache.getForFile(new iy,o);if(!(l==null?void 0:l.blocks))return i([]);let c=l.blocks.map(d=>d.node.type==="heading"?null:{file:o,searchString:d.display,blockId:d.node.id,block:{type:d.node.type,start:d.node.position.start.offset,end:d.node.position.end.offset},alias:a[1]||""}).filter(d=>d);i(n?new mn(c,{keys:["searchString","blockId"]}).search(n):c.map((d,f)=>({item:d,refIndex:f})))}catch(l){i([])}}function t_(e){return["blockquote","code","table","comment","footnoteDefinition"].includes(e)}function qu(e,t,r,n){return{id:`block-${n?"embed":"normal"}`,match:n?QS:GS,index:1,template:i=>i.item.blockId?`
${i.item.searchString}
${i.item.blockId}
`:i.item.searchString,search:(i,a,o)=>{e_(t.app,e,o[1],o[2],a)},replace:i=>{let a=[];n&&i.item.file.extension==="md"&&a.push("!");let o="#^";if(i.item.blockId)o+=i.item.blockId;else{let u=Re(),l=t_(i.item.block.type)?` + `}function F(){n.calendarContainer.classList.add("hasWeeks");let _=je(r.document,"div","flatpickr-weekwrapper");_.appendChild(je(r.document,"span","flatpickr-weekday",n.l10n.weekAbbreviation));let M=je(r.document,"div","flatpickr-weeks");return _.appendChild(M),{weekWrapper:_,weekNumbers:M}}function N(_,M=!0){let $=M?_:_-n.currentMonth;$<0&&n._hidePrevMonthArrow===!0||$>0&&n._hideNextMonthArrow===!0||(n.currentMonth+=$,(n.currentMonth<0||n.currentMonth>11)&&(n.currentYear+=n.currentMonth>11?1:-1,n.currentMonth=(n.currentMonth+12)%12,Ve("onYearChange"),Q()),G(),Ve("onMonthChange"),Mt())}function ut(_=!0,M=!0){if(n.input.value="",n.altInput!==void 0&&(n.altInput.value=""),n.mobileInput!==void 0&&(n.mobileInput.value=""),n.selectedDates=[],n.latestSelectedDateObj=void 0,M===!0&&(n.currentYear=n._initialDate.getFullYear(),n.currentMonth=n._initialDate.getMonth()),n.config.enableTime===!0){let{hours:$,minutes:ee,seconds:le}=rs(n.config);g($,ee,le)}n.redraw(),_&&Ve("onChange")}function Ge(){n.isOpen=!1,n.isMobile||(n.calendarContainer!==void 0&&n.calendarContainer.classList.remove("open"),n._input!==void 0&&n._input.classList.remove("active")),Ve("onClose")}function W(){n.config!==void 0&&Ve("onDestroy");for(let _=n._handlers.length;_--;)n._handlers[_].remove();if(n._handlers=[],n.mobileInput)n.mobileInput.parentNode&&n.mobileInput.parentNode.removeChild(n.mobileInput),n.mobileInput=void 0;else if(n.calendarContainer&&n.calendarContainer.parentNode)if(n.config.static&&n.calendarContainer.parentNode){let _=n.calendarContainer.parentNode;if(_.lastChild&&_.removeChild(_.lastChild),_.parentNode){for(;_.firstChild;)_.parentNode.insertBefore(_.firstChild,_);_.parentNode.removeChild(_)}}else n.calendarContainer.parentNode.removeChild(n.calendarContainer);n.altInput&&(n.input.type="text",n.altInput.parentNode&&n.altInput.parentNode.removeChild(n.altInput),delete n.altInput),n.input&&(n.input.type=n.input._type,n.input.classList.remove("flatpickr-input"),n.input.removeAttribute("readonly")),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(_=>{try{delete n[_]}catch(M){}})}function j(_){return n.calendarContainer.contains(_)}function q(_){if(n.isOpen&&!n.config.inline){let M=rn(_),$=j(M),le=!(M===n.input||M===n.altInput||n.element.contains(M)||_.path&&_.path.indexOf&&(~_.path.indexOf(n.input)||~_.path.indexOf(n.altInput)))&&!$&&!j(_.relatedTarget),re=!n.config.ignoredFocusElements.some(ve=>ve.contains(M));le&&re&&(n.config.allowInput&&n.setDate(n._input.value,!1,n.config.altInput?n.config.altFormat:n.config.dateFormat),n.timeContainer!==void 0&&n.minuteElement!==void 0&&n.hourElement!==void 0&&n.input.value!==""&&n.input.value!==void 0&&l(),n.close(),n.config&&n.config.mode==="range"&&n.selectedDates.length===1&&n.clear(!1))}}function te(_){if(!_||n.config.minDate&&_n.config.maxDate.getFullYear())return;let M=_,$=n.currentYear!==M;n.currentYear=M||n.currentYear,n.config.maxDate&&n.currentYear===n.config.maxDate.getFullYear()?n.currentMonth=Math.min(n.config.maxDate.getMonth(),n.currentMonth):n.config.minDate&&n.currentYear===n.config.minDate.getFullYear()&&(n.currentMonth=Math.max(n.config.minDate.getMonth(),n.currentMonth)),$&&(n.redraw(),Ve("onYearChange"),Q())}function we(_,M=!0){var re;let $=n.parseDate(_,void 0,M);if(n.config.minDate&&$&&nn($,n.config.minDate,M!==void 0?M:!n.minDateHasTime)<0||n.config.maxDate&&$&&nn($,n.config.maxDate,M!==void 0?M:!n.maxDateHasTime)>0)return!1;if(!n.config.enable&&n.config.disable.length===0)return!0;if($===void 0)return!1;let ee=!!n.config.enable,le=(re=n.config.enable)!=null?re:n.config.disable;for(let ve=0,ue;ve=ue.from.getTime()&&$.getTime()<=ue.to.getTime())return ee}return!ee}function ke(_){return n.daysContainer!==void 0?_.className.indexOf("hidden")===-1&&_.className.indexOf("flatpickr-disabled")===-1&&n.daysContainer.contains(_):!1}function Ue(_){let M=_.target===n._input,$=n._input.value.trimEnd()!==Wi();M&&$&&!(_.relatedTarget&&j(_.relatedTarget))&&n.setDate(n._input.value,!0,_.target===n.altInput?n.config.altFormat:n.config.dateFormat)}function dt(_){let M=rn(_),$=n.config.wrap?e.contains(M):M===n._input,ee=n.config.allowInput,le=n.isOpen&&(!ee||!$),re=n.config.inline&&$&&!ee;if(_.keyCode===13&&$){if(ee)return n.setDate(n._input.value,!0,M===n.altInput?n.config.altFormat:n.config.dateFormat),n.close(),M.blur();n.open()}else if(j(M)||le||re){let ve=!!n.timeContainer&&n.timeContainer.contains(M);switch(_.keyCode){case 13:ve?(_.preventDefault(),l(),rr()):Rt(_);break;case 27:_.preventDefault(),rr();break;case 8:case 46:$&&!n.config.allowInput&&(_.preventDefault(),n.clear());break;case 37:case 39:if(!ve&&!$){_.preventDefault();let ue=o();if(n.daysContainer!==void 0&&(ee===!1||ue&&ke(ue))){let Fe=_.keyCode===39?1:-1;_.ctrlKey?(_.stopPropagation(),N(Fe),J(U(1),0)):J(void 0,Fe)}}else n.hourElement&&n.hourElement.focus();break;case 38:case 40:{_.preventDefault();let ue=_.keyCode===40?1:-1;n.daysContainer&&M.$i!==void 0||M===n.input||M===n.altInput?_.ctrlKey?(_.stopPropagation(),te(n.currentYear-ue),J(U(1),0)):ve||J(void 0,ue*7):M===n.currentYearElement?te(n.currentYear-ue):n.config.enableTime&&(!ve&&n.hourElement&&n.hourElement.focus(),l(_),n._debouncedChange());break}case 9:if(ve){let ue=[n.hourElement,n.minuteElement,n.secondElement,n.amPM].concat(n.pluginElements).filter(Ne=>Ne),Fe=ue.indexOf(M);if(Fe!==-1){let Ne=ue[Fe+(_.shiftKey?-1:1)];_.preventDefault(),(Ne||n._input).focus()}}else!n.config.noCalendar&&n.daysContainer&&n.daysContainer.contains(M)&&_.shiftKey&&(_.preventDefault(),n._input.focus());break;default:break}}if(n.amPM!==void 0&&M===n.amPM)switch(_.key){case n.l10n.amPM[0].charAt(0):case n.l10n.amPM[0].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[0],f(),xn();break;case n.l10n.amPM[1].charAt(0):case n.l10n.amPM[1].charAt(0).toLowerCase():n.amPM.textContent=n.l10n.amPM[1],f(),xn();break}($||j(M))&&Ve("onKeyDown",_)}function vt(_,M="flatpickr-day"){if(n.selectedDates.length!==1||_&&(!_.classList.contains(M)||_.classList.contains("flatpickr-disabled")))return;let $=_?_.dateObj.getTime():n.days.firstElementChild.dateObj.getTime(),ee=n.parseDate(n.selectedDates[0],void 0,!0).getTime(),le=Math.min($,n.selectedDates[0].getTime()),re=Math.max($,n.selectedDates[0].getTime()),ve=!1,ue=0,Fe=0;for(let Me=le;Mele&&Meue)?ue=Me:Me>ee&&(!Fe||Me .${M}`)).forEach(Me=>{let bt=Me.dateObj.getTime(),ar=ue>0&&bt0&&bt>Fe;if(ar){Me.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(or=>{Me.classList.remove(or)});return}else if(ve&&!ar)return;["startRange","inRange","endRange","notAllowed"].forEach(or=>{Me.classList.remove(or)}),_!==void 0&&(_.classList.add($<=n.selectedDates[0].getTime()?"startRange":"endRange"),ee<$&&bt===ee?Me.classList.add("startRange"):ee>$&&bt===ee&&Me.classList.add("endRange"),bt>=ue&&(Fe===0||bt<=Fe)&&tv(bt,ee,$)&&Me.classList.add("inRange"))})}function Ot(){n.isOpen&&!n.config.static&&!n.config.inline&&Un()}function Bn(_,M=n._positionElement){if(n.isMobile===!0){if(_){_.preventDefault();let ee=rn(_);ee&&ee.blur()}n.mobileInput!==void 0&&(n.mobileInput.focus(),n.mobileInput.click()),Ve("onOpen");return}else if(n._input.disabled||n.config.inline)return;let $=n.isOpen;n.isOpen=!0,$||(n.calendarContainer.classList.add("open"),n._input.classList.add("active"),Ve("onOpen"),Un(M)),n.config.enableTime===!0&&n.config.noCalendar===!0&&n.config.allowInput===!1&&(_===void 0||!n.timeContainer.contains(_.relatedTarget))&&r.setTimeout(()=>n.hourElement.select(),50)}function Kn(_){return M=>{let $=n.config[`_${_}Date`]=n.parseDate(M,n.config.dateFormat),ee=n.config[`_${_==="min"?"max":"min"}Date`];$!==void 0&&(n[_==="min"?"minDateHasTime":"maxDateHasTime"]=$.getHours()>0||$.getMinutes()>0||$.getSeconds()>0),n.selectedDates&&(n.selectedDates=n.selectedDates.filter(le=>we(le)),!n.selectedDates.length&&_==="min"&&p($),xn()),n.daysContainer&&(ti(),$!==void 0?n.currentYearElement[_]=$.getFullYear().toString():n.currentYearElement.removeAttribute(_),n.currentYearElement.disabled=!!ee&&$!==void 0&&ee.getFullYear()===$.getFullYear())}}function $n(){let _=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],M={...JSON.parse(JSON.stringify(e.dataset||{})),...t},$={};n.config.parseDate=M.parseDate,n.config.formatDate=M.formatDate,Object.defineProperty(n.config,"enable",{get:()=>n.config._enable,set:re=>{n.config._enable=Ee(re)}}),Object.defineProperty(n.config,"disable",{get:()=>n.config._disable,set:re=>{n.config._disable=Ee(re)}});let ee=M.mode==="time";if(!M.dateFormat&&(M.enableTime||ee)){let re=gt.defaultConfig.dateFormat||wr.dateFormat;$.dateFormat=M.noCalendar||ee?"H:i"+(M.enableSeconds?":S":""):re+" H:i"+(M.enableSeconds?":S":"")}if(M.altInput&&(M.enableTime||ee)&&!M.altFormat){let re=gt.defaultConfig.altFormat||wr.altFormat;$.altFormat=M.noCalendar||ee?"h:i"+(M.enableSeconds?":S K":" K"):re+` h:i${M.enableSeconds?":S":""} K`}Object.defineProperty(n.config,"minDate",{get:()=>n.config._minDate,set:Kn("min")}),Object.defineProperty(n.config,"maxDate",{get:()=>n.config._maxDate,set:Kn("max")});let le=re=>ve=>{n.config[re==="min"?"_minTime":"_maxTime"]=n.parseDate(ve,"H:i:S")};Object.defineProperty(n.config,"minTime",{get:()=>n.config._minTime,set:le("min")}),Object.defineProperty(n.config,"maxTime",{get:()=>n.config._maxTime,set:le("max")}),M.mode==="time"&&(n.config.noCalendar=!0,n.config.enableTime=!0),Object.assign(n.config,$,M);for(let re=0;re<_.length;re++)n.config[_[re]]=n.config[_[re]]===!0||n.config[_[re]]==="true";Zo.filter(re=>n.config[re]!==void 0).forEach(re=>{n.config[re]=es(n.config[re]||[]).map(s)}),n.isMobile=!n.config.disableMobile&&!n.config.inline&&n.config.mode==="single"&&!n.config.disable.length&&!n.config.enable&&!n.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(let re=0;re-1?n.config[ue]=es(ve[ue]).map(s).concat(n.config[ue]):typeof M[ue]=="undefined"&&(n.config[ue]=ve[ue])}M.altInputClass||(n.config.altInputClass=bn().className+" "+n.config.altInputClass),Ve("onParseConfig")}function bn(){return n.config.wrap?e.querySelector("[data-input]"):e}function wn(){typeof n.config.locale!="object"&&typeof gt.l10ns[n.config.locale]=="undefined"&&n.config.errorHandler(new Error(`flatpickr: invalid locale ${n.config.locale}`)),n.l10n={...gt.l10ns.default,...typeof n.config.locale=="object"?n.config.locale:n.config.locale!=="default"?gt.l10ns[n.config.locale]:void 0},Jn.D=`(${n.l10n.weekdays.shorthand.join("|")})`,Jn.l=`(${n.l10n.weekdays.longhand.join("|")})`,Jn.M=`(${n.l10n.months.shorthand.join("|")})`,Jn.F=`(${n.l10n.months.longhand.join("|")})`,Jn.K=`(${n.l10n.amPM[0]}|${n.l10n.amPM[1]}|${n.l10n.amPM[0].toLowerCase()}|${n.l10n.amPM[1].toLowerCase()})`,{...t,...JSON.parse(JSON.stringify(e.dataset||{}))}.time_24hr===void 0&>.defaultConfig.time_24hr===void 0&&(n.config.time_24hr=n.l10n.time_24hr),n.formatDate=Mu(n),n.parseDate=ts({config:n.config,l10n:n.l10n})}function Un(_){if(typeof n.config.position=="function")return void n.config.position(n,_);if(n.calendarContainer===void 0)return;Ve("onPreCalendarPosition");let M=_||n._positionElement,$=Array.prototype.reduce.call(n.calendarContainer.children,(Tr,ji)=>Tr+ji.offsetHeight,0),ee=n.calendarContainer.offsetWidth,le=n.config.position.split(" "),re=le[0],ve=le.length>1?le[1]:null,ue=M.getBoundingClientRect(),Fe=r.innerHeight-ue.bottom,Ne=re==="above"||re!=="below"&&Fe<$&&ue.top>$,Me=r.pageYOffset+ue.top+(Ne?-$-2:M.offsetHeight+2);if(Kt(n.calendarContainer,"arrowTop",!Ne),Kt(n.calendarContainer,"arrowBottom",Ne),n.config.inline)return;let Qt=r.pageXOffset+ue.left,bt=!1,ar=!1;ve==="center"?(Qt-=(ee-ue.width)/2,bt=!0):ve==="right"&&(Qt-=ee-ue.width,ar=!0),Kt(n.calendarContainer,"arrowLeft",!bt&&!ar),Kt(n.calendarContainer,"arrowCenter",bt),Kt(n.calendarContainer,"arrowRight",ar);let or=r.document.body.offsetWidth-(r.pageXOffset+ue.right),zi=Qt+ee>r.document.body.offsetWidth,no=or+ee>r.document.body.offsetWidth;if(Kt(n.calendarContainer,"rightMost",zi),!n.config.static)if(n.calendarContainer.style.top=`${Me}px`,!zi)n.calendarContainer.style.left=`${Qt}px`,n.calendarContainer.style.right="auto";else if(!no)n.calendarContainer.style.left="auto",n.calendarContainer.style.right=`${or}px`;else{let Tr=Zr();if(Tr===void 0)return;let ji=r.document.body.offsetWidth,_l=Math.max(0,ji/2-ee/2),Cl=".flatpickr-calendar.centerMost:before",Mf=".flatpickr-calendar.centerMost:after",O=Tr.cssRules.length,w=`{left:${ue.left}px;right:auto;}`;Kt(n.calendarContainer,"rightMost",!1),Kt(n.calendarContainer,"centerMost",!0),Tr.insertRule(`${Cl},${Mf}${w}`,O),n.calendarContainer.style.left=`${_l}px`,n.calendarContainer.style.right="auto"}}function Zr(){let _=null;for(let M=0;Mve.classList&&ve.classList.contains("flatpickr-day")&&!ve.classList.contains("flatpickr-disabled")&&!ve.classList.contains("notAllowed"),$=Iu(rn(_),M);if($===void 0)return;let ee=$,le=n.latestSelectedDateObj=new Date(ee.dateObj.getTime()),re=(le.getMonth()n.currentMonth+n.config.showMonths-1)&&n.config.mode!=="range";if(n.selectedDateElem=ee,n.config.mode==="single")n.selectedDates=[le];else if(n.config.mode==="multiple"){let ve=Ye(le);ve?n.selectedDates.splice(parseInt(ve),1):n.selectedDates.push(le)}else n.config.mode==="range"&&(n.selectedDates.length===2&&n.clear(!1,!1),n.latestSelectedDateObj=le,n.selectedDates.push(le),nn(le,n.selectedDates[0],!0)!==0&&n.selectedDates.sort((ve,ue)=>ve.getTime()-ue.getTime()));if(f(),re){let ve=n.currentYear!==le.getFullYear();n.currentYear=le.getFullYear(),n.currentMonth=le.getMonth(),ve&&(Ve("onYearChange"),Q()),Ve("onMonthChange")}if(Mt(),G(),xn(),!re&&n.config.mode!=="range"&&n.config.showMonths===1?z(ee):n.selectedDateElem!==void 0&&n.hourElement===void 0&&n.selectedDateElem&&n.selectedDateElem.focus(),n.hourElement!==void 0&&n.hourElement!==void 0&&n.hourElement.focus(),n.config.closeOnSelect){let ve=n.config.mode==="single"&&!n.config.enableTime,ue=n.config.mode==="range"&&n.selectedDates.length===2&&!n.config.enableTime;(ve||ue)&&rr()}k()}let Wt={locale:[wn,Te],showMonths:[he,u,be],minDate:[C],maxDate:[C],positionElement:[En],clickOpens:[()=>{n.config.clickOpens===!0?(b(n._input,"focus",n.open),b(n._input,"click",n.open)):(n._input.removeEventListener("focus",n.open),n._input.removeEventListener("click",n.open))}]};function yt(_,M){if(_!==null&&typeof _=="object"){Object.assign(n.config,_);for(let $ in _)Wt[$]!==void 0&&Wt[$].forEach(ee=>ee())}else n.config[_]=M,Wt[_]!==void 0?Wt[_].forEach($=>$()):Zo.indexOf(_)>-1&&(n.config[_]=es(M));n.redraw(),xn(!0)}function Y(_,M){let $=[];if(Array.isArray(_))$=_.map(ee=>n.parseDate(ee,M));else if(_.getDate||typeof _=="number")$=[n.parseDate(_,M)];else if(typeof _=="string")switch(n.config.mode){case"single":case"time":$=[n.parseDate(_,M)];break;case"multiple":$=_.split(n.config.conjunction).map(ee=>n.parseDate(ee,M));break;case"range":$=_.split(n.l10n.rangeSeparator).map(ee=>n.parseDate(ee,M));break;default:break}else n.config.errorHandler(new Error(`Invalid date supplied: ${JSON.stringify(_)}`));n.selectedDates=n.config.allowInvalidPreload?$:$.filter(ee=>ee.getDate&&we(ee,!1)),n.config.mode==="range"&&n.selectedDates.sort((ee,le)=>ee.getTime()-le.getTime())}function oe(_,M=!1,$=n.config.dateFormat){if(_!==0&&!_||Array.isArray(_)&&_.length===0)return n.clear(M);Y(_,$),n.latestSelectedDateObj=n.selectedDates[n.selectedDates.length-1],n.redraw(),C(void 0,M),p(),n.selectedDates.length===0&&n.clear(!1),xn(M),M&&Ve("onChange")}function Ee(_){return _.slice().map(M=>typeof M=="string"||typeof M=="number"||M.getDate?n.parseDate(M,void 0,!0):M&&typeof M=="object"&&M.from&&M.to?{from:n.parseDate(M.from,void 0),to:n.parseDate(M.to,void 0)}:M).filter(M=>M)}function ze(){n.selectedDates=[],n.now=n.parseDate(n.config.now)||new Date;let _=n.config.defaultDate||((n.input.nodeName==="INPUT"||n.input.nodeName==="TEXTAREA")&&n.input.placeholder&&n.input.value===n.input.placeholder?null:n.input.value);_&&Y(_,n.config.dateFormat),n._initialDate=n.selectedDates.length>0?n.selectedDates[0]:n.config.minDate&&n.config.minDate.getTime()>n.now.getTime()?n.config.minDate:n.config.maxDate&&n.config.maxDate.getTime()0&&(n.latestSelectedDateObj=n.selectedDates[0]),n.config.minTime!==void 0&&(n.config.minTime=n.parseDate(n.config.minTime,"H:i")),n.config.maxTime!==void 0&&(n.config.maxTime=n.parseDate(n.config.maxTime,"H:i")),n.minDateHasTime=!!n.config.minDate&&(n.config.minDate.getHours()>0||n.config.minDate.getMinutes()>0||n.config.minDate.getSeconds()>0),n.maxDateHasTime=!!n.config.maxDate&&(n.config.maxDate.getHours()>0||n.config.maxDate.getMinutes()>0||n.config.maxDate.getSeconds()>0)}function Tt(){if(n.input=bn(),!n.input){n.config.errorHandler(new Error("Invalid input element specified"));return}n.input._type=n.input.type,n.input.type="text",n.input.classList.add("flatpickr-input"),n._input=n.input,n.config.altInput&&(n.altInput=je(r.document,n.input.nodeName,n.config.altInputClass),n._input=n.altInput,n.altInput.placeholder=n.input.placeholder,n.altInput.disabled=n.input.disabled,n.altInput.required=n.input.required,n.altInput.tabIndex=n.input.tabIndex,n.altInput.type="text",n.input.setAttribute("type","hidden"),!n.config.static&&n.input.parentNode&&n.input.parentNode.insertBefore(n.altInput,n.input.nextSibling)),n.config.allowInput||n._input.setAttribute("readonly","readonly"),En()}function En(){n._positionElement=n.config.positionElement||n._input}function qe(){let _=n.config.enableTime?n.config.noCalendar?"time":"datetime-local":"date";n.mobileInput=je(r.document,"input",n.input.className+" flatpickr-mobile"),n.mobileInput.tabIndex=1,n.mobileInput.type=_,n.mobileInput.disabled=n.input.disabled,n.mobileInput.required=n.input.required,n.mobileInput.placeholder=n.input.placeholder,n.mobileFormatStr=_==="datetime-local"?"Y-m-d\\TH:i:S":_==="date"?"Y-m-d":"H:i:S",n.selectedDates.length>0&&(n.mobileInput.defaultValue=n.mobileInput.value=n.formatDate(n.selectedDates[0],n.mobileFormatStr)),n.config.minDate&&(n.mobileInput.min=n.formatDate(n.config.minDate,"Y-m-d")),n.config.maxDate&&(n.mobileInput.max=n.formatDate(n.config.maxDate,"Y-m-d")),n.input.getAttribute("step")&&(n.mobileInput.step=String(n.input.getAttribute("step"))),n.input.type="hidden",n.altInput!==void 0&&(n.altInput.type="hidden");try{n.input.parentNode&&n.input.parentNode.insertBefore(n.mobileInput,n.input.nextSibling)}catch(M){}b(n.mobileInput,"change",M=>{n.setDate(rn(M).value,!1,n.mobileFormatStr),Ve("onChange"),Ve("onClose")})}function st(_){if(n.isOpen===!0)return n.close();n.open(_)}function Ve(_,M){if(n.config===void 0)return;let $=n.config[_];if($!==void 0&&$.length>0)for(let ee=0;$[ee]&&ee<$.length;ee++)$[ee](n.selectedDates,n.input.value,n,M);_==="onChange"&&(n.input.dispatchEvent(fn("change")),n.input.dispatchEvent(fn("input")))}function fn(_){let M=r.document.createEvent("Event");return M.initEvent(_,!0,!0),M}function Ye(_){for(let M=0;M=0&&nn(_,n.selectedDates[1])<=0}function Mt(){n.config.noCalendar||n.isMobile||!n.monthNav||(n.yearElements.forEach((_,M)=>{let $=new Date(n.currentYear,n.currentMonth,1);$.setMonth(n.currentMonth+M),n.config.showMonths>1||n.config.monthSelectorType==="static"?n.monthElements[M].textContent=Sa($.getMonth(),n.config.shorthandCurrentMonth,n.l10n)+" ":n.monthsDropdownContainer.value=$.getMonth().toString(),_.value=$.getFullYear().toString()}),n._hidePrevMonthArrow=n.config.minDate!==void 0&&(n.currentYear===n.config.minDate.getFullYear()?n.currentMonth<=n.config.minDate.getMonth():n.currentYearn.config.maxDate.getMonth():n.currentYear>n.config.maxDate.getFullYear()))}function Wi(_){let M=_||(n.config.altInput?n.config.altFormat:n.config.dateFormat);return n.selectedDates.map($=>n.formatDate($,M)).filter(($,ee,le)=>n.config.mode!=="range"||n.config.enableTime||le.indexOf($)===ee).join(n.config.mode!=="range"?n.config.conjunction:n.l10n.rangeSeparator)}function xn(_=!0){n.mobileInput!==void 0&&n.mobileFormatStr&&(n.mobileInput.value=n.latestSelectedDateObj!==void 0?n.formatDate(n.latestSelectedDateObj,n.mobileFormatStr):""),n.input.value=Wi(n.config.dateFormat),n.altInput!==void 0&&(n.altInput.value=Wi(n.config.altFormat)),_!==!1&&Ve("onValueUpdate")}function Sl(_){let M=rn(_),$=n.prevMonthNav.contains(M),ee=n.nextMonthNav.contains(M);$||ee?N($?-1:1):n.yearElements.indexOf(M)>=0?M.select():M.classList.contains("arrowUp")?n.changeYear(n.currentYear+1):M.classList.contains("arrowDown")&&n.changeYear(n.currentYear-1)}function to(_){_.preventDefault();let M=_.type==="keydown",$=rn(_),ee=$;n.amPM!==void 0&&$===n.amPM&&(n.amPM.textContent=n.l10n.amPM[tn(n.amPM.textContent===n.l10n.amPM[0])]);let le=parseFloat(ee.getAttribute("min")),re=parseFloat(ee.getAttribute("max")),ve=parseFloat(ee.getAttribute("step")),ue=parseInt(ee.value,10),Fe=_.delta||(M?_.which===38?1:-1:0),Ne=ue+ve*Fe;if(typeof ee.value!="undefined"&&ee.value.length===2){let Me=ee===n.hourElement,Qt=ee===n.minuteElement;Nere&&(Ne=ee===n.hourElement?Ne-re-tn(!n.amPM):le,Qt&&H(void 0,1,n.hourElement)),n.amPM&&Me&&(ve===1?Ne+ue===23:Math.abs(Ne-ue)>ve)&&(n.amPM.textContent=n.l10n.amPM[tn(n.amPM.textContent===n.l10n.amPM[0])]),ee.value=Bt(Ne)}}return a(),n}function is(e,t){let r=Array.prototype.slice.call(e).filter(i=>i.onClickEvent),n=[];for(let i=0;i{gt.l10ns.default={...gt.l10ns.default,...e}};gt.setDefaults=e=>{gt.defaultConfig={...gt.defaultConfig,...e}};gt.parseDate=ts({});gt.formatDate=Mu({});gt.compareDates=nn;typeof jQuery!="undefined"&&typeof jQuery.fn!="undefined"&&(jQuery.fn.flatpickr=function(e){return is(this,e)});Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+(typeof e=="string"?parseInt(e,10):e))};typeof window!="undefined"&&(window.flatpickr=gt);var as=gt;function os(e,t,r,n,i){return e.document.body.createDiv({cls:`${B("date-picker")} ${B("ignore-click-outside")}`},a=>{a.style.left=`${r.x||0}px`,a.style.top=`${r.y||0}px`,a.createEl("input",{type:"text"},o=>{a.win.setTimeout(()=>{let s=null,u=d=>{d.target instanceof d.view.HTMLElement&&d.target.closest(`.${B("date-picker")}`)===null&&c()},l=d=>{d.key==="Escape"&&c()},c=()=>{s.destroy(),a.remove(),e.document.body.removeEventListener("click",u),e.document.removeEventListener("keydown",l)};s=as(o,{locale:Xo(t),defaultDate:i,inline:!0,onChange:d=>{n(d),c()},win:e}),a.win.setTimeout(()=>{let d=a.clientHeight,f=a.clientWidth;r.y+d>e.innerHeight&&(a.style.top=`${(r.y||0)-d}px`),r.x+f>e.innerWidth&&(a.style.left=`${(r.x||0)-f}px`)}),e.document.body.addEventListener("click",u),e.document.addEventListener("keydown",l)})})})}function ss({stateManager:e,boardModifiers:t,item:r,hasDate:n,path:i}){let a=e.getSetting("date-format"),o=e.getSetting("link-date-to-daily-note"),s=e.getSetting("date-trigger"),u=o?"(?:\\[[^\\]]+\\]\\([^)]+\\)|\\[\\[[^\\]]+\\]\\])":"{[^}]+}",l=new RegExp(`(^|\\s)${Ln(s)}${u}`);return c=>{let d=c[0],f=(0,rt.moment)(d).format(a),p=o?Yo(e.app,f):`{${f}}`,g=r.data.titleRaw;n?g=r.data.titleRaw.replace(l,`$1${s}${p}`):g=`${r.data.titleRaw} ${s}${p}`,e.updateItemContent(r,g).then(y=>{t.updateItem(i,y)}).catch(y=>{e.setError(y),console.error(y)})}}function Au(e){let t=e.getSetting("time-format"),r=[];for(let n=0;n<24;n++)r.push((0,rt.moment)({hour:n}).format(t)),r.push((0,rt.moment)({hour:n,minute:15}).format(t)),r.push((0,rt.moment)({hour:n,minute:30}).format(t)),r.push((0,rt.moment)({hour:n,minute:45}).format(t));return r}function ls(e,t,r,n,i){let a=B("time-picker"),o=t.getSetting("time-format"),s=i==null?void 0:i.format(o);e.document.body.createDiv({cls:`${a} ${B("ignore-click-outside")}`},u=>{let l=Au(t),c=b=>{b.target instanceof b.view.HTMLElement&&b.target.hasClass(B("time-picker-item"))&&b.target.dataset.value&&(n(b.target.dataset.value),p())},d=b=>{b.target instanceof b.view.HTMLElement&&b.target.closest(`.${a}`)===null&&p()},f=b=>{b.key==="Escape"&&p()},p=()=>{u.remove(),u.removeEventListener("click",c),e.document.body.removeEventListener("click",d),e.document.removeEventListener("keydown",f)};u.style.left=`${r.x||0}px`,u.style.top=`${r.y||0}px`;let g=null,y=null;l.forEach((b,k)=>{let T=b===s;u.createDiv({cls:`${B("time-picker-item")} ${T?"is-selected":""}`,text:b},C=>{C.createEl("span",{cls:B("time-picker-check"),prepend:!0},A=>{(0,rt.setIcon)(A,"checkmark")}),k%4==0&&C.addClass("is-hour"),C.dataset.value=b,T&&(g=C),k===Math.floor(l.length/2)&&(y=C)})}),u.win.setTimeout(()=>{var T;let b=u.clientHeight,k=u.clientWidth;r.y+b>e.innerHeight&&(u.style.top=`${(r.y||0)-b}px`),r.x+k>e.innerWidth&&(u.style.left=`${(r.x||0)-k}px`),(T=g||y)==null||T.scrollIntoView({block:"center",inline:"nearest"}),u.addEventListener("click",c),e.document.body.addEventListener("click",d),e.document.addEventListener("keydown",f)})})}function cs({stateManager:e,boardModifiers:t,item:r,hasTime:n,path:i}){let a=e.getSetting("time-trigger"),o=new RegExp(`(^|\\s)${Ln(a)}{([^}]+)}`);return s=>{let u=r.data.titleRaw;n?u=r.data.titleRaw.replace(o,`$1${a}{${s}}`):u=`${r.data.titleRaw} ${a}{${s}}`,e.updateItemContent(r,u).then(l=>{t.updateItem(i,l)}).catch(l=>{e.setError(l),console.error(l)})}}function iv(e){let t=e.data.metadata.date,r=[];t&&(t.isSame(new Date,"day")&&r.push("is-today"),t.isAfter(new Date,"day")&&r.push("is-future"),t.isBefore(new Date,"day")&&r.push("is-past")),e.data.isComplete&&r.push("is-complete");for(let n of e.data.metadata.tags)r.push(`has-tag-${n.slice(1)}`);return r}function Vr(e,t,r,n){return e.app.fileManager.generateMarkdownLink(t,r,n)}function sS(e,t,r){return rt.htmlToMarkdown?(0,rt.htmlToMarkdown)(r):rt.MarkdownSourceView.prototype.handleDataTransfer.call({app:e.app},t)}function lS(e){return e.replace(/^\[(.*)\]\(app:\/\/obsidian.md\/(.*)\)$/,"[$1]($2)")}function Lu(e){var r;let t=e.require("electron").remote.clipboard;if(process.platform==="darwin"){if(t.has("NSFilenamesPboardType"))return((r=t.read("NSFilenamesPboardType").match(/.*<\/string>/g))==null?void 0:r.map(n=>n.replace(/|<\/string>/g,"")))||[];{let n=t.readImage("clipboard");return n.isEmpty()?[t.read("public.file-url").replace("file://","")].filter(i=>i):[{buffer:n.toPNG(),mimeType:"image/png",originalName:`Pasted image ${(0,rt.moment)().format("YYYYMMDDHHmmss")}.png`}]}}else if(t.has("CF_HDROP")){let n=t.read("CF_HDROP")||"",i=[...n].filter((o,s)=>n.charCodeAt(s)!==0).join("").replace(/\\/g,"\\"),a=i.match(/[a-zA-Z]:\\/);if(a){let o=i.indexOf(a[0]);return o!==0&&(i=i.slice(o)),i.split(a[0]).filter(s=>s).map(s=>a+s)}}else{let n=t.readImage("clipboard");return n.isEmpty()?[t.readBuffer("FileNameW").toString("ucs2").replace(RegExp(String.fromCharCode(0),"g"),"")].filter(i=>i):[{buffer:n.toPNG(),mimeType:"image/png",originalName:`Pasted image ${(0,rt.moment)().format("YYYYMMDDHHmmss")}.png`}]}return null}function cS(e){return e.split("\\").pop().split("/").pop()}async function uS(e,t,r,n){let i=await e.app.vault.getAvailablePathForAttachments(t,r,e.file),a=await e.app.vault.createBinary(i,n);return Vr(e,a,e.file.path)}async function dS(e,t){let r=Lu(t);if(!r||r.length===0)return null;let n=t.require("fs/promises"),i=t.require("path");return(await Promise.all(r.map(async a=>{if(typeof a=="string"){let s=cS(a).split("."),u=s.pop(),l=s.join("."),c=await e.app.vault.getAvailablePathForAttachments(l,u,e.file),d=e.app.vault.adapter.basePath;await n.copyFile(a,i.join(d,c)),await new Promise(p=>t.setTimeout(p,50));let f=e.app.vault.getAbstractFileByPath(c);return Vr(e,f,e.file.path)}else{let o=a.originalName.split("."),s=o.pop(),u=o.join(".");return await uS(e,u,s,a.buffer)}}))).filter(a=>a)}function av(e,t,r){return Promise.all(t.map(n=>{let i=n.name.split("."),a=i.pop(),o=i.join(".");if(r){switch(n.type){case"text/jpg":a="jpg";break;case"text/jpeg":a="jpeg";break;case"text/png":a="png";break}o="Pasted image "+(0,rt.moment)().format("YYYYMMDDHHmmss")}return new Promise((s,u)=>{let l=new FileReader;l.onload=async c=>{try{let d=await e.app.vault.getAvailablePathForAttachments(o,a,e.file),f=await e.app.vault.createBinary(d,c.target.result);s(Vr(e,f,e.file.path))}catch(d){console.error(d),u(d)}},l.readAsArrayBuffer(n)})}))}async function fS(e,t,r){let n=!t.view,i=n?e.getAView().isShiftPressed:!1,a=n?t.clipboardData:t.dataTransfer,o=n&&rt.Platform.isDesktopApp?r.require("electron").remote.clipboard:null,s=o?o.availableFormats():[];if(n){if(n&&!i&&!s.includes("text/rtf")){if(rt.Platform.isDesktopApp){let g=await dS(e,r);if(g==null?void 0:g.length)return g}let f=[],p=t.clipboardData.items;for(let g in p){let y=p[g];y.kind==="file"&&f.push(y.getAsFile())}if(f.length)return await av(e,f,!0)}}else{let f=await hc(t);if(f.length)return await av(e,f)}let u=a.getData("text/html"),l=a.getData("text/plain"),c=a.getData("text/uri-list"),d=i?l||u:sS(e,a,u);return[lS(d||c||l||u||"").trim()]}async function us(e,t,r){let n=e.app.dragManager.draggable,i=t.view?t.dataTransfer:t.clipboardData;switch(n==null?void 0:n.type){case"file":return[Vr(e,n.file,e.file.path)];case"files":return n.files.map(a=>Vr(e,a,e.file.path));case"folder":return n.file.children.map(a=>a instanceof rt.TFolder?null:Vr(e,a,e.file.path)).filter(a=>a);case"link":{let a=n.file?Vr(e,n.file,(0,rt.parseLinktext)(n.linktext).subpath):`[[${n.linktext}]]`,o=new DOMParser().parseFromString(i.getData("text/html"),"text/html").documentElement.textContent;return a=a.replace(/]]$/,`|${o}]]`).replace(/^\[[^\]].+]\(/,`[${o}](`),[a]}default:return await fS(e,t,r)}}m();function ds(e,t){let r,n,i=(...a)=>{r=a,!n&&(n=e.requestAnimationFrame(()=>{n=null,t(...r)}))};return i.cancel=()=>{!n||(e.cancelAnimationFrame(n),n=null)},i}var ov={outOfTheWay:"cubic-bezier(0.2, 0, 0, 1)",drop:"cubic-bezier(.2,1,.1,1)"};var Ci={outOfTheWay:200,minDropTime:330,maxDropTime:550},Er=`${Ci.outOfTheWay}ms ${ov.outOfTheWay}`;var ln={none:"none",fluid:`opacity ${Er}`,snap:`transform ${Er}, opacity ${Er}`,drop:e=>{let t=`${e}ms ${ov.drop}`;return`transform ${t}, opacity ${t}`},outOfTheWay:`transform ${Er}`,placeholder:`height ${Er}, width ${Er}, margin ${Er}, border-color ${Er}`},pS=(e,t)=>e.x===t.x&&e.y===t.y,hS={x:0,y:0},sv=e=>pS(e,hS)?void 0:`translate(${e.x}px, ${e.y}px)`,lv={moveTo:sv,drop:e=>sv(e)},mS=Ci.maxDropTime-Ci.minDropTime,cv=1500,gS=.6;function Di({position:e,destination:t,isCancel:r}){let n=di(e,t);if(n<=0)return Ci.minDropTime;if(n>=cv)return Ci.maxDropTime;let i=n/cv,a=Ci.minDropTime+mS*i,o=r?a*gS:a;return Math.round(o)}function Tn(e,t,r){e.style.getPropertyValue(t)!==r&&e.style.setProperty(t,r)}function fs(e,t){e.style.getPropertyValue(t)&&e.style.removeProperty(t)}m();m();var Mn;(function(i){i[i.TitleAsc=0]="TitleAsc",i[i.TitleDsc=1]="TitleDsc",i[i.DateAsc=2]="DateAsc",i[i.DateDsc=3]="DateDsc"})(Mn||(Mn={}));var Je={Item:"item",Lane:"lane",Board:"board",MetadataSetting:"metadata-setting",TagColorSetting:"tag-color",DateColorSetting:"date-color"},ps={accepts:[Je.Item],type:Je.Item,children:[]},xr={accepts:[Je.Lane],type:Je.Lane},hs={accepts:[],type:Je.Board},ms={accepts:[Je.MetadataSetting],type:Je.MetadataSetting,children:[]},gs={accepts:[],type:Je.TagColorSetting,children:[]},vs={accepts:[],type:Je.DateColorSetting,children:[]};function Pu(e,t,r,n,i){let a="htmldnd",o=Ae(),s=e-75,u=e+75,l=t-25,c=t+25;return{scopeId:a,entityId:`${a}-${o}`,initial:[s,l,u,c],getParentScrollState(){return on},getParentScrollShift(){return Pn},recalcInitial(){},getHitbox(){return this.initial},getPath(){return[]},getData(){return{viewId:n,type:Je.Item,id:o,content:r,accepts:[],win:i}}}}var Nu=class{constructor(t,r,n,i){this.isHTMLDragging=!1;this.dragOverTimeout=0;this.win=t,this.hitboxEntities=n,this.scrollEntities=i,this.emitter=r}getDragEventData(){return{dragEntity:this.dragEntity,dragEntityId:this.dragEntityId,dragEntityMargin:this.dragEntityMargin,dragOrigin:this.dragOrigin,dragOriginHitbox:this.dragOriginHitbox,dragPosition:this.dragPosition,primaryIntersection:this.primaryIntersection,scrollIntersection:this.scrollIntersection}}dragStart(t,r){var a;let n=(r==null?void 0:r.dataset.hitboxid)||t.currentTarget.dataset.hitboxid;if(!n)return;let i=getComputedStyle(r||t.currentTarget);this.dragEntityId=n,this.dragOrigin={x:t.pageX,y:t.pageY},this.dragPosition={x:t.pageX,y:t.pageY},this.dragEntity=this.hitboxEntities.get(n),this.dragOriginHitbox=(a=this.dragEntity)==null?void 0:a.getHitbox(),this.dragEntityMargin=[parseFloat(i.marginLeft)||0,parseFloat(i.marginTop)||0,parseFloat(i.marginRight)||0,parseFloat(i.marginBottom)||0],this.emitter.emit("dragStart",this.getDragEventData())}dragStartHTML(t,r){this.isHTMLDragging=!0;let n=Pu(t.pageX,t.pageY,[],r,t.view);this.dragEntityId=n.entityId,this.dragOrigin={x:t.pageX,y:t.pageY},this.dragPosition={x:t.pageX,y:t.pageY},this.dragEntity=n,this.dragOriginHitbox=n.getHitbox(),this.dragEntityMargin=[0,0,0,0],this.emitter.emit("dragStart",this.getDragEventData())}dragMove(t){this.dragPosition={x:t.pageX,y:t.pageY},this.emitter.emit("dragMove",this.getDragEventData()),this.calculateDragIntersect()}dragMoveHTML(t){this.dragPosition={x:t.pageX,y:t.pageY},this.emitter.emit("dragMove",this.getDragEventData()),this.calculateDragIntersect()}dragEnd(t){this.emitter.emit("dragEnd",this.getDragEventData()),this.dragEntityMargin=void 0,this.dragEntity=void 0,this.dragEntityId=void 0,this.dragOrigin=void 0,this.dragOriginHitbox=void 0,this.dragPosition=void 0,this.scrollIntersection=void 0,this.primaryIntersection=void 0}dragEndHTML(t,r,n,i){this.isHTMLDragging=!1,i||(this.dragEntity=Pu(t.pageX,t.pageY,n,r,t.view),this.emitter.emit("dragEnd",this.getDragEventData())),this.dragEntityMargin=void 0,this.dragEntity=void 0,this.dragEntityId=void 0,this.dragOrigin=void 0,this.dragOriginHitbox=void 0,this.dragPosition=void 0,this.scrollIntersection=void 0,this.primaryIntersection=void 0,i&&this.emitter.emit("dragEnd",this.getDragEventData())}onHTMLDragLeave(t){this.win.clearTimeout(this.dragOverTimeout),this.dragOverTimeout=this.win.setTimeout(t,351)}calculateDragIntersect(){if(!this.dragEntity||!this.dragPosition||!this.dragOrigin||!this.dragOriginHitbox)return;let{type:t,win:r}=this.dragEntity.getData(),n=[],i=[],a=[],o=[];if(this.hitboxEntities.forEach(l=>{let c=l.getData();r===c.win&&c.accepts.includes(t)&&(n.push(l),i.push(l.getHitbox()))}),this.scrollEntities.forEach(l=>{let c=l.getData();r===c.win&&c.accepts.includes(t)&&(a.push(l),o.push(l.getHitbox()))}),n.length===0&&a.length===0)return;let s=Rp(this.dragOriginHitbox,this.dragOrigin,this.dragPosition);this.handleScrollIntersect(s,this.dragEntity.entityId,o,a)||this.handleHitboxIntersect(s,this.dragEntity.entityId,i,n)}handleScrollIntersect(t,r,n,i){let a=(0,Fu.default)([t],n).map(s=>i[s[1]]),o=Np(a,t,r);if(this.scrollIntersection&&(!o||o[0]!==this.scrollIntersection[0])){let[s,u]=this.scrollIntersection,l=s.getData(),c=s.entityId,d=l.side;this.emitter.emit("endDragScroll",{...this.getDragEventData(),scrollEntity:s,scrollEntityId:c,scrollEntitySide:d,scrollStrength:u},c),this.scrollIntersection=void 0}if(o&&(!this.scrollIntersection||this.scrollIntersection[0]!==o[0])){let[s,u]=o,l=s.getData(),c=s.entityId,d=l.side;this.emitter.emit("beginDragScroll",{...this.getDragEventData(),scrollEntity:s,scrollEntityId:c,scrollEntitySide:d,scrollStrength:u},c),this.scrollIntersection=o}else if(o&&this.scrollIntersection&&o[0]===this.scrollIntersection[0]){let[s,u]=o,l=s.getData(),c=s.entityId,d=l.side;this.emitter.emit("updateDragScroll",{...this.getDragEventData(),scrollEntity:s,scrollEntityId:c,scrollEntitySide:d,scrollStrength:u},c),this.scrollIntersection=o}return!!o}handleHitboxIntersect(t,r,n,i){let a=(0,Fu.default)([t],n).map(s=>i[s[1]]),o=zl(a,t,r);this.primaryIntersection&&this.primaryIntersection!==o&&(this.emitter.emit("dragLeave",this.getDragEventData(),this.primaryIntersection.entityId),this.primaryIntersection=void 0),o&&this.primaryIntersection!==o&&(this.emitter.emit("dragEnter",{...this.getDragEventData(),primaryIntersection:o},o.entityId),this.primaryIntersection=o)}},Ti=e=>{e.preventDefault(),e.stopPropagation()};function Mi(e,t){let r=L.useContext(kt);L.useEffect(()=>{let n=e.current,i=t.current;if(!r||!n||!i)return;let a=s=>{if(s.defaultPrevented||s.target.dataset.ignoreDrag||s.button!==0&&s.buttons!==1)return;let u=s.view,l=["pen","touch"].includes(s.pointerType);l||(s.stopPropagation(),s.preventDefault());let c=s,d={x:s.pageX,y:s.pageY},f=!1,p=0;l&&(u.addEventListener("contextmenu",Ti,!0),p=u.setTimeout(()=>{r.dragManager.dragStart(c,n),f=!0,u.addEventListener("touchmove",Ti,{passive:!1})},500));let g=ds(u,b=>{l?f?r.dragManager.dragMove(b):di(d,{x:b.pageX,y:b.pageY})>5&&(u.clearTimeout(p),u.removeEventListener("touchmove",Ti),u.removeEventListener("contextmenu",Ti,!0),u.removeEventListener("pointermove",g),u.removeEventListener("pointerup",y),u.removeEventListener("pointercancel",y)):f?r.dragManager.dragMove(b):di(d,{x:b.pageX,y:b.pageY})>5&&(r.dragManager.dragStart(c,n),f=!0)}),y=b=>{u.clearTimeout(p),f=!1,r.dragManager.dragEnd(b),u.removeEventListener("pointermove",g),u.removeEventListener("pointerup",y),u.removeEventListener("pointercancel",y),l&&(u.removeEventListener("contextmenu",Ti,!0),u.removeEventListener("touchmove",Ti))};u.addEventListener("pointermove",g),u.addEventListener("pointerup",y),u.addEventListener("pointercancel",y)},o=s=>{s.stopPropagation()};return i.addEventListener("pointerdown",a),i.addEventListener("touchstart",o),()=>{i.removeEventListener("pointerdown",a),i.removeEventListener("touchstart",o)}},[e,t,r])}function uv(e){let t=L.useContext(kt),r=L.useCallback(i=>{t.dragManager.isHTMLDragging?(i.preventDefault(),t.dragManager.dragMoveHTML(i)):t.dragManager.dragStartHTML(i,e.getAView().id),t.dragManager.onHTMLDragLeave(()=>{t.dragManager.dragEndHTML(i,e.getAView().id,[],!0)})},[t,e]),n=L.useCallback(async i=>{t.dragManager.dragEndHTML(i,e.getAView().id,await us(e,i,activeWindow),!1)},[t,e]);return{onDragOver:r,onDrop:n}}m();var fv=me(Et());m();var dv=me(require("obsidian"));function _t({name:e,className:t}){return h("span",{"data-icon":e,className:`${B("icon")} ${t||""}`,ref:r=>{r&&(0,dv.setIcon)(r,e)}})}var pv=L.memo(function({shouldMarkItemsComplete:t,path:r,item:n,stateManager:i,boardModifiers:a}){let o=i.useSetting("show-checkboxes"),[s,u]=L.useState(!1),[l,c]=L.useState(!1);return L.useEffect(()=>{if(l){let d=f=>{f.metaKey||f.ctrlKey?u(!0):u(!1)};return window.addEventListener("keydown",d),window.addEventListener("keyup",d),()=>{window.removeEventListener("keydown",d),window.removeEventListener("keyup",d)}}},[l]),t||o?h("div",{onMouseEnter:d=>{c(!0),(d.ctrlKey||d.metaKey)&&u(!0)},onMouseLeave:()=>{c(!1),s&&u(!1)},className:B("item-prefix-button-wrapper")},o&&!s&&h("input",{onChange:()=>{a.updateItem(r,(0,fv.default)(n,{data:{$toggle:["isComplete"]}}))},type:"checkbox",className:"task-list-item-checkbox",checked:!!n.data.isComplete}),(s||!o&&t)&&h("button",{onClick:()=>{a.archiveItem(r)},className:B("item-prefix-button"),"aria-label":s?void 0:"Archive card"},h(_t,{name:"sheets-in-box"}))):null});m();var qy=me(require("obsidian"));m();var mv=me(require("obsidian"));m();var Ou;function hv(e){if(e.nodeName!=="TEXTAREA")return!1;if(typeof Ou=="undefined"){let t=e.doc.createElement("textarea");t.value=1,Ou=!!t.firstChild}return Ou}function Da(e,t){var i;e.focus();let r=e.doc;if(!r.execCommand("insertText",!1,t)){let a=e.selectionStart,o=e.selectionEnd;if(typeof e.setRangeText=="function")e.setRangeText(t);else{let u=r.createRange(),l=r.createTextNode(t);if(hv(e)){let c=e.firstChild;if(!c)e.appendChild(l);else{let d=0,f=null,p=null;for(;c&&(f===null||p===null);){let g=((i=c.nodeValue)==null?void 0:i.length)||0;a>=d&&a<=d+g&&u.setStart(f=c,a-d),o>=d&&o<=d+g&&u.setEnd(p=c,o-d),d+=g,c=c.nextSibling}a!==o&&u.deleteContents()}}if(hv(e)&&u.commonAncestorContainer.nodeName==="#text")u.insertNode(l);else{let c=e.value;e.value=c.slice(0,a)+t+c.slice(o)}}e.setSelectionRange(a+t.length,a+t.length);let s=r.createEvent("UIEvent");s.initEvent("input",!0,!1),e.dispatchEvent(s)}}var Ru=e=>e.charCodeAt(0)===10,gv=e=>e===" "||Ru(e);function vS(e,t,r){if(!e)throw Error("Argument 'text' should be truthy");let n=0,i=e.length;for(let a=t;a-1>-1;a--)if(Ru(e[a-1])){n=a;break}for(let a=r===void 0?t:r;a-1;a--)if(gv(e[a-1])){n=a;break}for(let a=r===void 0?t:r;a0&&e.value[a.selection.start-1]!==" ")return!1;if(a.selection.end===a.selection.start){let s=Lt(e,`${r}`);return Pt(e,{start:s.selection.end-1-a.selectedText.length,end:s.selection.end-1}),!1}let o=Lt(e,`${t}${a.selectedText}${r}`);return Pt(e,{start:o.selection.end-1-a.selectedText.length,end:o.selection.end-1}),!0}function ys(e,t,r,n){let i=On(e),a=Ii({text:i.text,selection:i.selection}),o=Pt(e,a),s=t.test(o.selectedText)?n(o.selectedText):r(o.selectedText),u=Lt(e,s);Pt(e,{start:o.selection.start,end:u.selection.end})}function bs(e,t){var r;if(t.types.includes("text/uri-list")||["file","files","link","folder"].includes((r=e.app.dragManager.draggable)==null?void 0:r.type))return"link";if(t.types.includes("text/html")||t.types.includes("text/plain"))return"copy"}async function ws(e,t,r){let n=e.clipboardData.getData("text/html"),i=e.clipboardData.types.includes("Files"),a=mv.Platform.isDesktopApp?Lu(r):null,o=n||i||(a==null?void 0:a.length)>0;o&&e.preventDefault();try{let s=await us(t,e,r);if(o){let u=e.target,l=s.join(` +`);Lt(u,l)}}catch(s){console.error(s),t.setError(s)}}m();var fd=me(require("obsidian"));m();m();var vv={};m();var yv={};m();var bv={};m();var wv={"Open as kanban board":"\xD6ffne als Kanban-Board","Create new board":"Erstelle ein neues Board","Archive completed cards in active board":"Archiviere fertiggestellte Karten im aktiven Board","Error: current file is not a Kanban board":"Fehler: Momentan ge\xF6ffnete Datei ist kein Kanban-Board","Convert empty note to Kanban":"Konvertiere leere Notiz in ein Kanban-Board","Error: cannot create Kanban, the current note is not empty":"Fehler: Kanban konnte nicht erstellt werden, momentan ge\xF6ffnete Datei ist nicht leer","New kanban board":"Neues Kanban-Board","Untitled Kanban":"Unbenanntes Kanban","Toggle between Kanban and markdown mode":"Wechsle zwischen Kanban und Markdown Modus","Open as markdown":"\xD6ffne als Markdown","Open board settings":"\xD6ffne Board-Einstellungen","Archive completed cards":"Archiviere fertiggestellte Karten","Something went wrong":"Etwas ist schief gelaufen","You may wish to open as markdown and inspect or edit the file.":"Du kannst die Datei im Markdown Modus \xF6ffnen und \xFCberpr\xFCfen oder bearbeiten.","Are you sure you want to archive all completed cards on this board?":"Bist du dir sicher, dass du alle fertiggestellten Karten des Boards archivieren m\xF6chtest?",Complete:"Fertiggestellt",Archive:"Archiv","Invalid Kanban file: problems parsing frontmatter":"Fehlerhafte Kanban Datei: Probleme beim Parsen des Frontmatters","I don't know how to interpret this line:":"Ich wei\xDF nicht, wie ich diese Zeile interpretieren soll:",Untitled:"Unbenannt","Note: No template plugins are currently enabled.":"Beachte: Keine Template-Plugins sind derzeit aktiviert.",default:"Standard","Search...":"Suche...","These settings will take precedence over the default Kanban board settings.":"Diese Einstellung wird Vorrang vor der standard Kanban-Board Einstellung haben. ","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Stelle standard Kanban-Board Einstellungen ein. Einstellungen k\xF6nnen auf einer Board-f\xFCr-Board Basis \xFCberschrieben werden.","Note template":"Notiz Vorlage","This template will be used when creating new notes from Kanban cards.":"Diese Vorlage wird beim Erstellen neuer Notizen aus Kanban-Karten verwendet.","No template":"Keine Vorlage","Note folder":"Notiz Ordner","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"Notizen, welche aus einer Kanban-Karte erstellt wurden, werden in diesem Ordner platziert. Falls leer, werden die Einstellungen des Vaults verwendet.","Default folder":"Standard Ordner","Lane width":"Schienen Breite","Enter a number to set the lane width in pixels.":"Gebe ein Zahl ein, um die Schienen Breite in Pixeln einzustellen.","Maximum number of archived cards":"Maximale Anzahl archivierter Karten.","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Archivierte Karten k\xF6nnen im Markdown-Modus betrachtet werden. Diese Einstellung wird alte Karten l\xF6schen, sobald das Limit erreicht wird. Eine Einstellung von -1 setzt das Archiv auf eine unendliche Gr\xF6\xDFe.","Display card checkbox":"Zeige Karten Checkbox","When toggled, a checkbox will be displayed with each card":"Wenn aktiviert, wird eine Checkbox mit jeder Karte angezeigt.","Reset to default":"Zur\xFCcksetzen","Date & Time":"Datum & Uhrzeit","Date trigger":"Datums Ausl\xF6ser","When this is typed, it will trigger the date selector":"Wenn dies eingegeben wird, dann wird die Datumsauswahl angezeigt","Time trigger":"Uhrzeit Ausl\xF6ser","When this is typed, it will trigger the time selector":"Wenn dies eingegeben wird, dann wird die Uhrzeitsauswahl angezeigt","Date format":"Format des Datums","This format will be used when saving dates in markdown.":"Dieses Format wird verwendet, wenn ein Datum in Markdown gespeichert wird.","For more syntax, refer to":"F\xFCr mehr Syntax Informationen siehe","format reference":"Formatvorlage","Your current syntax looks like this":"Dein momentanes Format sieht so aus","Time format":"Format der Uhrzeit","Date display format":"Format der Datums Anzeige","This format will be used when displaying dates in Kanban cards.":"Dieses Format wird verwendet, wenn ein Datum in einer Kanban-Karte angezeigt wird.","Show relative date":"Zeige relatives Datum","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"Wenn aktiviert, wird die Zeitspanne zwischen Heute und dem Datum angezeigt. Zum Beispiel: 'In 3 Tagen', 'Vor einem Monat'","Hide card display dates":"Verstecke Karten Datum","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"Wenn aktiviert, werden formatierte Daten nicht auf der Karte angezeigt. Relative Daten werden dennoch angezeigt, solange sie aktiviert sind.","Hide dates in card titles":"Verstecke Daten im Titel der Karte","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"Wenn aktiviert, werden Daten nicht im Titel der Karte angezeigt. Dies verhindert, dass Daten im Titel neu erstellter Notizen vorhanden sind.","Link dates to daily notes":"Verbinde Daten zu Daily Notes","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"Wenn aktiviert, werden Daten mit Daily Notes verbunden. Zum Beispiel [[26.4.2021]]","Add date and time to archived cards":"F\xFCge Datum und Uhrzeit zu archivierten Notizen hinzu","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"Wenn aktiviert, wird das momentane Datum und die momentane Zeit am Anfang einer Karte hinzugef\xFCgt, wenn sie archiviert wird. Zum Beispiel: - [ ] 14.05.2021 10:00 Mein Karten Titel","Archive date/time separator":"Datum/Uhrzeit Trenner f\xFCr das Archiv","This will be used to separate the archived date/time from the title":"Dies wird verwendet, um das Datum und die Uhrzeit archivierter Karten vom Titel zu trennen","Archive date/time format":"Format des Datums und der Uhrzeit f\xFCr das Archiv","Kanban Plugin":"Kanban Erweiterung","New line trigger":"Taste f\xFCr neue Zeile","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lanes.":"W\xE4hle aus ob Enter oder Umschalttaste+Enter eine neue Zeile erstellen soll. Das Gegenteil kannst du verwenden um die Karte zu erstellen oder das bearbeiten der Karte oder Schiene zu beenden.","Shift + Enter":"Umschalttaste + Enter",Enter:"Enter","Prepend / append new cards":"Neue Karten voranf\xFCgen / anh\xE4ngen","This setting controls whether new cards are added to the beginning or end of the list.":"Diese Einstellung gibt an ob neue Karten am Anfang oder am Ende einer Liste hinzugef\xFCgt werden.",Prepend:"Voranf\xFCgen",Append:"Anh\xE4ngen","Hide tags in card titles":"Ausblenden von Tags in Kartentiteln","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"Ist diese Einstellung an, so werden Tags im Kartentitel nicht angezeigt. Dadurch wird verhindert, dass Tags beim Erstellen neuer Notizen in den Titel aufgenommen werden.","Hide card display tags":"Ausblenden von Kartenanzeige-Tags","When toggled, tags will not be displayed below the card title.":"Ist diese Einstellung an, werden Tags nicht unter dem Kartentitel angezeigt.","Linked Page Metadata":"Metadaten f\xFCr verkn\xFCpfte (verlinkte) Notizen","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Zeigen Sie Metadaten f\xFCr die erste Notiz an, die innerhalb einer Karte verkn\xFCpft ist. Geben Sie an, welche Metadatenschl\xFCssel unten angezeigt werden sollen. Ein optionales Label kann hinzugef\xFCgt werden, es kann aber auch vollst\xE4ndig ausgeblendet werden.","Metadata key":"Metadatenschl\xFCssel","Display label":"Anzeigelabel","Hide label":"Label ausblenden","Drag to rearrange":"Zum Neuanordnen ziehen",Delete:"L\xF6schen","Add key":"Schl\xFCssel hinzuf\xFCgen","Field contains markdown":"Feld beinhaltet Markdown","More options":"Mehr optionen",Cancel:"Abbrechen",today:"heute",yesterday:"gestern",tomorrow:"morgen","Change date":"Ver\xE4ndere Datum","Change time":"Ver\xE4ndere Uhrzeit","Card title...":"Karten Titel...","Add card":"Karte hinzuf\xFCgen","Add a card":"F\xFCge eine Karte hinzu","Edit card":"Karte editieren","New note from card":"Neue Notiz aus Karte erstellen","Archive card":"Karte archivieren","Delete card":"Karte l\xF6schen","Edit date":"Datum editieren","Add date":"Datum hinzuf\xFCgen","Remove date":"Datum entfernen","Edit time":"Karte editieren","Add time":"Uhrzeit hinzuf\xFCgen","Remove time":"Uhrzeit entfernen","Duplicate card":"Karte duplizieren","Enter list title...":"Listen Titel eingeben..","Mark cards in this list as complete":"Markiere Karten in dieser Liste als fertiggestellt","Add list":"Liste hinzuf\xFCgen","Add a list":"F\xFCge eine Liste hinzu","Move list":"Liste verschieben",Close:"Schlie\xDFen","Are you sure you want to delete this list and all its cards?":"Bist du dir sicher, dass du diese Liste und alle ihre Karten l\xF6schen m\xF6chtest?","Yes, delete list":"Ja, l\xF6sche diese Liste","Are you sure you want to archive this list and all its cards?":"Bist du dir sicher, dass du diese Liste und alle ihre Karten archivieren m\xF6chtest?","Yes, archive list":"Ja, archiviere diese Liste","Are you sure you want to archive all cards in this list?":"Bist du dir sicher, dass du alle Karten in dieser Liste archivieren m\xF6chtest?","Yes, archive cards":"Ja, archiviere Karten","Edit list":"Editiere Liste","Archive cards":"Archiviere Karten","Archive list":"Archiviere List","Delete list":"L\xF6sche Liste"};m();var Hu={"Open as kanban board":"Open as kanban board","Create new board":"Create new board","Archive completed cards in active board":"Archive completed cards in active board","Error: current file is not a Kanban board":"Error: current file is not a Kanban board","Convert empty note to Kanban":"Convert empty note to Kanban","Error: cannot create Kanban, the current note is not empty":"Error: cannot create Kanban, the current note is not empty","New kanban board":"New kanban board","Untitled Kanban":"Untitled Kanban","Toggle between Kanban and markdown mode":"Toggle between Kanban and markdown mode","Open as markdown":"Open as markdown","Open board settings":"Open board settings","Archive completed cards":"Archive completed cards","Something went wrong":"Something went wrong","You may wish to open as markdown and inspect or edit the file.":"You may wish to open as markdown and inspect or edit the file.","Are you sure you want to archive all completed cards on this board?":"Are you sure you want to archive all completed cards on this board?",Complete:"Complete",Archive:"Archive","Invalid Kanban file: problems parsing frontmatter":"Invalid Kanban file: problems parsing frontmatter","I don't know how to interpret this line:":"I don't know how to interpret this line:",Untitled:"Untitled","Note: No template plugins are currently enabled.":"Note: No template plugins are currently enabled.",default:"default","Search...":"Search...","New line trigger":"New line trigger","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.":"Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.","Shift + Enter":"Shift + Enter",Enter:"Enter","Prepend / append new cards":"Prepend / append new cards","This setting controls whether new cards are added to the beginning or end of the list.":"This setting controls whether new cards are added to the beginning or end of the list.",Prepend:"Prepend","Prepend (compact)":"Prepend (compact)",Append:"Append","These settings will take precedence over the default Kanban board settings.":"These settings will take precedence over the default Kanban board settings.","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.","Note template":"Note template","This template will be used when creating new notes from Kanban cards.":"This template will be used when creating new notes from Kanban cards.","No template":"No template","Note folder":"Note folder","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.","Default folder":"Default folder","List width":"List width","Enter a number to set the list width in pixels.":"Enter a number to set the list width in pixels.","Maximum number of archived cards":"Maximum number of archived cards","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.","Display card checkbox":"Display card checkbox","When toggled, a checkbox will be displayed with each card":"When toggled, a checkbox will be displayed with each card","Reset to default":"Reset to default","Date & Time":"Date & Time","Date trigger":"Date trigger","When this is typed, it will trigger the date selector":"When this is typed, it will trigger the date selector","Time trigger":"Time trigger","When this is typed, it will trigger the time selector":"When this is typed, it will trigger the time selector","Date format":"Date format","This format will be used when saving dates in markdown.":"This format will be used when saving dates in markdown.","For more syntax, refer to":"For more syntax, refer to","format reference":"format reference","Your current syntax looks like this":"Your current syntax looks like this","Time format":"Time format","Date display format":"Date display format","This format will be used when displaying dates in Kanban cards.":"This format will be used when displaying dates in Kanban cards.","Show relative date":"Show relative date","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'","Hide card display dates":"Hide card display dates","Hide card counts in list titles":"Hide card counts in list titles","When toggled, card counts are hidden from the list title":"When toggled, card counts are hidden from the list title","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.","Hide dates in card titles":"Hide dates in card titles","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.","Link dates to daily notes":"Link dates to daily notes","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"When toggled, dates will link to daily notes. Eg. [[2021-04-26]]","Add date and time to archived cards":"Add date and time to archived cards","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title","Archive date/time separator":"Archive date/time separator","This will be used to separate the archived date/time from the title":"This will be used to separate the archived date/time from the title","Archive date/time format":"Archive date/time format","Kanban Plugin":"Kanban Plugin","Hide tags in card titles":"Hide tags in card titles","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.","Hide card display tags":"Hide card display tags","When toggled, tags will not be displayed below the card title.":"When toggled, tags will not be displayed below the card title.","Display tag colors":"Display tag colors","Set colors for the tags displayed below the card title.":"Set colors for the tags displayed below the card title.","Linked Page Metadata":"Linked Page Metadata","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.","Board Header Buttons":"Board Header Buttons","Calendar: first day of week":"Calendar: first day of week","Override which day is used as the start of the week":"Override which day is used as the start of the week",Sunday:"Sunday",Monday:"Monday",Tuesday:"Tuesday",Wednesday:"Wednesday",Thursday:"Thursday",Friday:"Friday",Saturday:"Saturday","Background color":"Background color",Tag:"Tag","Text color":"Text color","Date is":"Date is",Today:"Today","After now":"After now","Before now":"Before now","Between now and":"Between now and","Date display colors":"Date display colors","Set colors for the date displayed below the card based on the rules below":"Set colors for the date displayed below the card based on the rules below","Add date color":"Add date color","Metadata key":"Metadata key","Display label":"Display label","Hide label":"Hide label","Drag to rearrange":"Drag to rearrange",Delete:"Delete","Add key":"Add key","Field contains markdown":"Field contains markdown","Add tag color":"Add tag color","More options":"More options",Cancel:"Cancel",today:"today",yesterday:"yesterday",tomorrow:"tomorrow","Change date":"Change date","Change time":"Change time","Card title...":"Card title...","Add card":"Add card","Add a card":"Add a card","Edit card":"Edit card","New note from card":"New note from card","Archive card":"Archive card","Delete card":"Delete card","Edit date":"Edit date","Add date":"Add date","Remove date":"Remove date","Edit time":"Edit time","Add time":"Add time","Remove time":"Remove time","Duplicate card":"Duplicate card","Split card":"Split card","Copy link to card":"Copy link to card","Insert card before":"Insert card before","Insert card after":"Insert card after","Add label":"Add label","Move to top":"Move to top","Move to bottom":"Move to bottom","Enter list title...":"Enter list title...","Mark cards in this list as complete":"Mark cards in this list as complete","Add list":"Add list","Add a list":"Add a list","Move list":"Move list",Close:"Close","Are you sure you want to delete this list and all its cards?":"Are you sure you want to delete this list and all its cards?","Yes, delete list":"Yes, delete list","Are you sure you want to archive this list and all its cards?":"Are you sure you want to archive this list and all its cards?","Yes, archive list":"Yes, archive list","Are you sure you want to archive all cards in this list?":"Are you sure you want to archive all cards in this list?","Yes, archive cards":"Yes, archive cards","Edit list":"Edit list","Archive cards":"Archive cards","Archive list":"Archive list","Delete list":"Delete list","Insert list before":"Insert list before","Insert list after":"Insert list after","Sort by card text":"Sort by card text","Sort by date":"Sort by date","Unable to find":"Unable to find","Open in default app":"Open in default app",Submit:"Submit"};m();var Ev={};m();var xv={};m();var kv={};m();var Sv={};m();var _v={"Open as kanban board":"Apri come bacheca Kanban","Create new board":"Crea nuova bacheca","Archive completed cards in active board":"Archivia schede completate nella bacheca attiva","Error: current file is not a Kanban board":"Errore: il file corrente non \xE8 una bacheca Kanban","Convert empty note to Kanban":"Converti nota vuota in Kanban","Error: cannot create Kanban, the current note is not empty":"Errore: Impossibile creare Kanban, la nota corrente non \xE8 vuota","New kanban board":"Nuova bacheca Kanban","Untitled Kanban":"Kanban senza titolo","Open as markdown":"Apri come markdown","Open board settings":"Apri impostazioni bacheca","Archive completed cards":"Archivia schede completate",Complete:"Completato",Archive:"Archivio","Note: No template plugins are currently enabled.":"Nota: Nessun plugin dei modelli attualmente abilitato.",default:"predefinito","Search...":"Ricerca...","These settings will take precedence over the default Kanban board settings.":"Queste impostazioni avranno la precedenza sulle impostazioni predefinite della bacheca Kanban.","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Impostazioni predefinite della bacheca Kanban. Le impostazioni possono essere sovrascritte per ogni bacheca.","Note template":"Nota modello","This template will be used when creating new notes from Kanban cards.":"Questo modello verr\xE0 utilizzato durante la creazione di nuove note dalle schede Kanban.","No template":"Nessun modello","Note folder":"Cartella delle note","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"Le note create dalle schede Kanban verranno inserite in questa cartella. Se vuota, verranno inserite nella posizione predefinita del vault.","Default folder":"Cartella predefinita","Lane width":"Larghezza colonna","Enter a number to set the lane width in pixels.":"Inserire un numero per impostare la larghezza della colonna in pixel.","Maximum number of archived cards":"Numero massimo di schede archiviate","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Le schede archiviate possono essere visualizzate in modalit\xE0 Markdown. Le vecchie schede verranno rimosse una volta raggiunto il limite. Impostando il valore -1 il numero di schede archiviate sar\xE0 illimitato.","Display card checkbox":"Mostra casella di controllo","When toggled, a checkbox will be displayed with each card":"Se attiva, verr\xE0 visualizzata una casella di controllo per ogni scheda","Reset to default":"Ripristina predefiniti","Date & Time":"Data e ora","Date trigger":"Selettore data","When this is typed, it will trigger the date selector":"Digitando questo, verr\xE0 attivato il selettore della data","Time trigger":"Selettore ora","When this is typed, it will trigger the time selector":"Digitando questo, verr\xE0 attivato il selettore dell'ora","Date format":"Formato data","This format will be used when saving dates in markdown.":"Formato utilizzato per il salvataggio delle date in Markdown.","For more syntax, refer to":"Per maggiori informazioni, vedere","format reference":"formato di riferimento","Your current syntax looks like this":"Formato corrente","Time format":"Formato ora","Date display format":"Formato visualizzazione data","This format will be used when displaying dates in Kanban cards.":"Formato utilizzato per visualizzare le date nelle schede Kanban.","Show relative date":"Mostra data relativa","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"Se attiva, le schede indicheranno la distanza tra la data odierna e la data della scheda. eg. 'Tra 3 giorni', 'Un mese fa'","Hide card display dates":"Hide card display dates","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"Se attiva, la data non verr\xE0 mostrata sulla scheda. Le date relative verranno comunque mostrate se sono state abilitate.","Hide dates in card titles":"Nascondi date nei titoli delle schede","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"Se attiva, la data non verr\xE0 mostrata nei titoli delle schede. Questo impedisce alle date di essere incluse quando vengono create nuove note.","Link dates to daily notes":"Collega date alle Note del giorno","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"Se attiva, le date verranno collegate alle Note del giorno. Eg. [[2021-04-26]]","Add date and time to archived cards":"Aggiungi data e ora alle schede archiviate","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"Se attiva, la data e l'ora corrente verranno aggiunte all'inizio della scheda quando viene archiviata. Eg. - [ ] 2021-05-14 10:00am Mia scheda","Archive date/time separator":"Separatore data/ora dell'archivio","This will be used to separate the archived date/time from the title":"Verr\xE0 usato per separare data e ora dell'archiviazione dal titolo","Archive date/time format":"Formato data/ora dell'archivio","Kanban Plugin":"Plugin Kanban","More options":"Altre opzioni",Cancel:"Annulla",today:"oggi",yesterday:"ieri",tomorrow:"domani","Change date":"Modifica data","Change time":"Modifica ora","Card title...":"Titolo elemento...","Add card":"Aggiungi elemento","Add a card":"Aggiungi un'altra scheda","Edit card":"Modifica scheda","New note from card":"Nuova nota da scheda","Archive card":"Archivia scheda","Delete card":"Elimina scheda","Edit date":"Modifica data","Add date":"Aggiungi data","Remove date":"Rimuovi data","Edit time":"Modifica ora","Add time":"Aggiungi ora","Remove time":"Rimuovi ora","Enter list title...":"Inserisci titolo lista...","Mark cards in this list as complete":"Segna elementi della lista come completati","Add list":"Aggiungi lista","Add a list":"Aggiungi un'altra lista","Move list":"Sposta lista",Close:"Chiudi","Are you sure you want to delete this list and all its cards?":"Cancellare questa lista e tutte le sue schede?","Yes, delete list":"Cancella lista","Are you sure you want to archive this list and all its cards?":"Archiviare questa lista e tutte le sue schede?","Yes, archive list":"Archivia lista","Are you sure you want to archive all cards in this list?":"Archiviare tutte le schede in questa lista?","Yes, archive cards":"Archivia schede","Edit list":"Modifica lista","Archive cards":"Archivia schede","Archive list":"Archivia lista","Delete list":"Cancella lista"};m();var Cv={"Open as kanban board":"\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3068\u3057\u3066\u958B\u304F","Create new board":"\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3092\u65B0\u898F\u4F5C\u6210","Archive completed cards in active board":"\u30A2\u30AF\u30C6\u30A3\u30D6\u30DC\u30FC\u30C9\u306E\u5B8C\u4E86\u3057\u305F\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Error: current file is not a Kanban board":"\u30A8\u30E9\u30FC: \u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u306F\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093","Convert empty note to Kanban":"\u7A7A\u306E\u30CE\u30FC\u30C8\u3092\u30AB\u30F3\u30D0\u30F3\u306B\u5909\u63DB","Error: cannot create Kanban, the current note is not empty":"\u30A8\u30E9\u30FC: \u73FE\u5728\u958B\u3044\u3066\u3044\u308B\u30CE\u30FC\u30C8\u306F\u7A7A\u3067\u3042\u308A\u3001\u30AB\u30F3\u30D0\u30F3\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093","New kanban board":"\u65B0\u898F\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9","Untitled Kanban":"\u7121\u984C\u306E\u30AB\u30F3\u30D0\u30F3","Toggle between Kanban and markdown mode":"\u30AB\u30F3\u30D0\u30F3\u3068\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u306E\u30E2\u30FC\u30C9\u3092\u5207\u308A\u66FF\u3048\u308B","Open as markdown":"\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3068\u3057\u3066\u958B\u304F","Open board settings":"\u30DC\u30FC\u30C9\u8A2D\u5B9A\u3092\u958B\u304F","Archive completed cards":"\u5B8C\u4E86\u3057\u305F\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Something went wrong":"\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F","You may wish to open as markdown and inspect or edit the file.":"\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3068\u3057\u3066\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u3044\u3066\u8ABF\u67FB\u3059\u308B\u304B\u7DE8\u96C6\u3059\u308B\u3053\u3068\u3092\u304A\u3059\u3059\u3081\u3057\u307E\u3059\u3002","Are you sure you want to archive all completed cards on this board?":"\u3053\u306E\u30DC\u30FC\u30C9\u306B\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u5B8C\u4E86\u3057\u305F\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059\u304B\uFF1F",Complete:"\u5B8C\u4E86",Archive:"\u30A2\u30FC\u30AB\u30A4\u30D6","Invalid Kanban file: problems parsing frontmatter":"\u7121\u52B9\u306A\u30AB\u30F3\u30D0\u30F3\u30D5\u30A1\u30A4\u30EB: \u30D5\u30ED\u30F3\u30C8\u30DE\u30BF\u30FC\u306E\u30D1\u30FC\u30B9\u306B\u554F\u984C\u304C\u3042\u308A\u307E\u3059","I don't know how to interpret this line:":"\u3053\u306E\u884C\u3092\u3069\u3046\u89E3\u91C8\u3059\u308C\u3070\u3088\u3044\u304B\u5206\u304B\u308A\u307E\u305B\u3093",Untitled:"\u7121\u984C","Note: No template plugins are currently enabled.":"\u30CE\u30FC\u30C8: \u73FE\u5728\u3001\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u7121\u52B9\u5316\u3055\u308C\u3066\u3044\u307E\u3059",default:"\u30C7\u30D5\u30A9\u30EB\u30C8","Search...":"\u691C\u7D22\u2026","New line trigger":"\u6539\u884C\u30C8\u30EA\u30AC\u30FC","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lanes.":"\u6539\u884C\u306B\u4F7F\u3046\u30AD\u30FC\u3068\u3057\u3066Enter\u304BShift+Enter\u306E\u3069\u3061\u3089\u3092\u4F7F\u3046\u304B\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u9078\u629E\u3057\u306A\u304B\u3063\u305F\u65B9\u306E\u30AD\u30FC\u306F\u30AB\u30FC\u30C9\u3068\u30EC\u30FC\u30F3\u306E\u4F5C\u6210\u3068\u7DE8\u96C6\u5B8C\u4E86\u306E\u30C8\u30EA\u30AC\u30FC\u3068\u306A\u308A\u307E\u3059\u3002","Shift + Enter":"Shift + Enter",Enter:"Enter","Prepend / append new cards":"\u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306B\u65B0\u898F\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0\u3059\u308B","This setting controls whether new cards are added to the beginning or end of the list.":"\u3053\u306E\u8A2D\u5B9A\u306B\u3088\u3063\u3066\u65B0\u898F\u30AB\u30FC\u30C9\u3092\u30EA\u30B9\u30C8\u306E\u5148\u982D\u307E\u305F\u306F\u672B\u5C3E\u306B\u8FFD\u52A0\u3059\u308B\u304B\u3092\u6C7A\u3081\u307E\u3059\u3002",Prepend:"\u5148\u982D\u306B\u8FFD\u52A0","Prepend (compact)":"\u5148\u982D\u306B\u8FFD\u52A0(\u30B3\u30F3\u30D1\u30AF\u30C8)",Append:"\u672B\u5C3E\u306B\u8FFD\u52A0","These settings will take precedence over the default Kanban board settings.":"\u3053\u308C\u3089\u306E\u8A2D\u5B9A\u306F\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30AB\u30F3\u30D0\u30F3\u8A2D\u5B9A\u3088\u308A\u512A\u5148\u3055\u308C\u307E\u3059\u3002","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30AB\u30F3\u30D0\u30F3\u30DC\u30FC\u30C9\u8A2D\u5B9A\u3092\u30BB\u30C3\u30C8\u3057\u307E\u3059\u3002\u3053\u306E\u8A2D\u5B9A\u306F\u30DC\u30FC\u30C9\u6BCE\u306B\u4E0A\u66F8\u304D\u3067\u304D\u307E\u3059\u3002","Note template":"\u30CE\u30FC\u30C8\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8","This template will be used when creating new notes from Kanban cards.":"\u3053\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u30AB\u30F3\u30D0\u30F3\u30AB\u30FC\u30C9\u304B\u3089\u30CE\u30FC\u30C8\u3092\u65B0\u898F\u4F5C\u6210\u3057\u305F\u969B\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","No template":"\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u3042\u308A\u307E\u305B\u3093","Note folder":"\u30CE\u30FC\u30C8\u30D5\u30A9\u30EB\u30C0","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"\u30AB\u30F3\u30D0\u30F3\u30AB\u30FC\u30C9\u304B\u3089\u4F5C\u6210\u3055\u308C\u305F\u30CE\u30FC\u30C8\u306F\u3053\u306E\u30D5\u30A9\u30EB\u30C0\u5185\u306B\u7F6E\u304B\u308C\u307E\u3059\u3002\u30D6\u30E9\u30F3\u30AF\u306E\u5834\u5408\u306B\u306F\u3001\u3053\u306E\u4FDD\u7BA1\u5EAB\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30ED\u30B1\u30FC\u30B7\u30E7\u30F3\u306B\u7F6E\u304B\u308C\u307E\u3059\u3002","Default folder":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30D5\u30A9\u30EB\u30C0","Lane width":"\u30EC\u30FC\u30F3\u306E\u5E45","Enter a number to set the lane width in pixels.":"\u30EC\u30FC\u30F3\u306E\u5E45\u3092\u30D4\u30AF\u30BB\u30EB\u5358\u4F4D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002","Maximum number of archived cards":"\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u30AB\u30FC\u30C9\u306E\u6700\u5927\u6570","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u30AB\u30FC\u30C9\u306F\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u30E2\u30FC\u30C9\u3067\u95B2\u89A7\u3067\u304D\u307E\u3059\u3002\u3053\u306E\u8A2D\u5B9A\u306B\u3088\u308A\u6307\u5B9A\u3055\u308C\u305F\u30A2\u30FC\u30AB\u30A4\u30D6\u306E\u9650\u754C\u6570\u307E\u3067\u9054\u3057\u305F\u969B\u306B\u306F\u53E4\u3044\u30AB\u30FC\u30C9\u3092\u524A\u9664\u3057\u307E\u3059\u3002\u3053\u306E\u5024\u3092-1\u306B\u8A2D\u5B9A\u3059\u308B\u3068\u30DC\u30FC\u30C9\u306E\u30A2\u30FC\u30AB\u30A4\u30D6\u9650\u754C\u3092\u7121\u9650\u306B\u3057\u307E\u3059\u3002","Display card checkbox":"\u30AB\u30FC\u30C9\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u3092\u8868\u793A","When toggled, a checkbox will be displayed with each card":"\u6709\u52B9\u5316\u3059\u308B\u3068\u5404\u30AB\u30FC\u30C9\u306E\u30C1\u30A7\u30C3\u30AF\u30DC\u30C3\u30AF\u30B9\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002","Reset to default":"\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u30EA\u30BB\u30C3\u30C8","Date & Time":"\u65E5\u4ED8\u3068\u6642\u9593","Date trigger":"\u65E5\u4ED8\u30C8\u30EA\u30AC\u30FC","When this is typed, it will trigger the date selector":"\u3053\u306E\u8A2D\u5B9A\u306B\u5165\u529B\u3055\u308C\u305F\u6587\u5B57\u5217\u3067\u65E5\u4ED8\u30BB\u30EC\u30AF\u30BF\u30FC\u3092\u30C8\u30EA\u30AC\u30FC\u3057\u307E\u3059\u3002","Time trigger":"\u6642\u9593\u30C8\u30EA\u30AC\u30FC","When this is typed, it will trigger the time selector":"\u3053\u306E\u8A2D\u5B9A\u306B\u5165\u529B\u3055\u308C\u305F\u6587\u5B57\u5217\u3067\u6642\u9593\u30BB\u30EC\u30AF\u30BF\u30FC\u3092\u30C8\u30EA\u30AC\u30FC\u3057\u307E\u3059\u3002","Date format":"\u65E5\u4ED8\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","This format will be used when saving dates in markdown.":"\u3053\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3067\u65E5\u4ED8\u304C\u4FDD\u5B58\u3055\u308C\u308B\u969B\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","For more syntax, refer to":"\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u306B\u3064\u3044\u3066\u306F\u3053\u3061\u3089\u3092\u53C2\u7167:","format reference":"\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u30EA\u30D5\u30A1\u30EC\u30F3\u30B9","Your current syntax looks like this":"\u73FE\u5728\u306E\u30B7\u30F3\u30BF\u30C3\u30AF\u30B9\u306F\u6B21\u306E\u3088\u3046\u306B\u898B\u3048\u307E\u3059","Time format":"\u6642\u9593\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","Date display format":"\u65E5\u4ED8\u8868\u793A\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8","This format will be used when displaying dates in Kanban cards.":"\u3053\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u30AB\u30F3\u30D0\u30F3\u30AB\u30FC\u30C9\u5185\u306B\u3066\u65E5\u4ED8\u306E\u8868\u793A\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","Show relative date":"\u76F8\u5BFE\u65E5\u4ED8\u3092\u8868\u793A","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u306E\u65E5\u4ED8\u3068\u4ECA\u65E5\u306E\u9593\u306E\u65E5\u6570\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002\u4F8B: '3\u65E5\u5F8C', '1\u30F6\u6708\u524D'","Hide card display dates":"\u30AB\u30FC\u30C9\u306B\u8868\u793A\u3055\u308C\u308B\u65E5\u4ED8\u3092\u96A0\u3059","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u4E0A\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3055\u308C\u305F\u65E5\u4ED8\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002\u6709\u52B9\u5316\u3055\u308C\u305F\u5834\u5408\u306B\u306F\u76F8\u5BFE\u65E5\u4ED8\u306F\u8868\u793A\u3055\u308C\u307E\u307E\u3068\u306A\u308A\u307E\u3059\u3002","Hide dates in card titles":"\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306E\u65E5\u4ED8\u3092\u96A0\u3059","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306E\u65E5\u4ED8\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002\u3053\u308C\u306F\u65B0\u898F\u30CE\u30FC\u30C8\u3092\u4F5C\u6210\u3057\u305F\u969B\u306B\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306B\u65E5\u4ED8\u304C\u542B\u307E\u308C\u308B\u306E\u3092\u9632\u304E\u307E\u3059\u3002","Link dates to daily notes":"\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306B\u65E5\u4ED8\u3092\u30EA\u30F3\u30AF","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"\u6709\u52B9\u5316\u3059\u308B\u3068\u65E5\u4ED8\u304C\u30C7\u30A4\u30EA\u30FC\u30CE\u30FC\u30C8\u306B\u30EA\u30F3\u30AF\u3055\u308C\u307E\u3059\u3002 \u4F8B: [[2021-04-26]]","Add date and time to archived cards":"\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u30AB\u30FC\u30C9\u306B\u65E5\u4ED8\u3068\u6642\u9593\u3092\u8FFD\u52A0","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u304C\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u969B\u306B\u73FE\u5728\u306E\u65E5\u4ED8\u3068\u6642\u9593\u304C\u30AB\u30FC\u30C9\u306E\u6700\u521D\u306B\u8FFD\u8A18\u3055\u308C\u308B\u3088\u3046\u306B\u306A\u308A\u307E\u3059\u3002\u4F8B: - [ ] 2021-05-14 10:00am \u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB","Archive date/time separator":"\u65E5\u4ED8\u30FB\u6642\u9593\u30BB\u30D1\u30EC\u30FC\u30BF\u30FC\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","This will be used to separate the archived date/time from the title":"\u3053\u308C\u306F\u30A2\u30FC\u30AB\u30A4\u30D6\u3055\u308C\u305F\u65E5\u4ED8\u30FB\u6642\u9593\u3092\u30BF\u30A4\u30C8\u30EB\u304B\u3089\u5206\u96E2\u3059\u308B\u306E\u306B\u4F7F\u7528\u3055\u308C\u307E\u3059\u3002","Archive date/time format":"\u65E5\u4ED8\u30FB\u6642\u9593\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Kanban Plugin":"\u30AB\u30F3\u30D0\u30F3\u30D7\u30E9\u30B0\u30A4\u30F3","Hide tags in card titles":"\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u5185\u306E\u30BF\u30B0\u3092\u96A0\u3059","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u5185\u306E\u30BF\u30B0\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002\u3053\u308C\u306F\u65B0\u898F\u30CE\u30FC\u30C8\u3092\u4F5C\u6210\u3057\u305F\u969B\u306B\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306B\u30BF\u30B0\u304C\u542B\u307E\u308C\u308B\u306E\u3092\u9632\u304E\u307E\u3059\u3002","Hide card display tags":"\u30AB\u30FC\u30C9\u306B\u8868\u793A\u3055\u308C\u308B\u30BF\u30B0\u3092\u96A0\u3059","When toggled, tags will not be displayed below the card title.":"\u6709\u52B9\u5316\u3059\u308B\u3068\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u306E\u4E0B\u306E\u30BF\u30B0\u304C\u975E\u8868\u793A\u306B\u306A\u308A\u307E\u3059\u3002","Linked Page Metadata":"\u30EA\u30F3\u30AF\u3055\u308C\u305F\u30DA\u30FC\u30B8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"\u30AB\u30FC\u30C9\u5185\u3067\u30EA\u30F3\u30AF\u3055\u308C\u3066\u3044\u308B\u6700\u521D\u306E\u30CE\u30FC\u30C8\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u4E0B\u306B\u8868\u793A\u3059\u308B\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u30AD\u30FC\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30AA\u30D7\u30B7\u30E7\u30F3\u3068\u3057\u3066\u30E9\u30D9\u30EB\u306E\u4ED8\u4E0E\u304C\u53EF\u80FD\u3067\u3042\u308A\u3001\u30E9\u30D9\u30EB\u306F\u5B8C\u5168\u306B\u975E\u8868\u793A\u306B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002","Board Header Buttons":"\u30DC\u30FC\u30C9\u306E\u30D8\u30C3\u30C0\u30FC\u30DC\u30BF\u30F3","Calendar: first day of week":"\u30AB\u30EC\u30F3\u30C0\u30FC: \u9031\u306E\u59CB\u307E\u308A","Override which day is used as the start of the week":"\u9031\u306E\u59CB\u307E\u308A\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u66DC\u65E5\u3092\u5909\u66F4\u3057\u307E\u3059\u3002",Sunday:"\u65E5\u66DC\u65E5",Monday:"\u6708\u66DC\u65E5",Tuesday:"\u706B\u66DC\u65E5",Wednesday:"\u6C34\u66DC\u65E5",Thursday:"\u6728\u66DC\u65E5",Friday:"\u91D1\u66DC\u65E5",Saturday:"\u571F\u66DC\u65E5","Metadata key":"\u30E1\u30BF\u30C7\u30FC\u30BF\u306E\u30AD\u30FC","Display label":"\u30E9\u30D9\u30EB\u3092\u8868\u793A","Hide label":"\u30E9\u30D9\u30EB\u3092\u96A0\u3059","Drag to rearrange":"\u30C9\u30E9\u30C3\u30B0\u3057\u3066\u4E26\u3079\u66FF\u3048\u308B",Delete:"\u524A\u9664","Add key":"\u30AD\u30FC\u3092\u8FFD\u52A0","Field contains markdown":"\u30D5\u30A3\u30FC\u30EB\u30C9\u306B\u30DE\u30FC\u30AF\u30C0\u30A6\u30F3\u3092\u542B\u307F\u307E\u3059","More options":"\u4ED6\u306E\u30AA\u30D7\u30B7\u30E7\u30F3",Cancel:"\u30AD\u30E3\u30F3\u30BB\u30EB",today:"\u4ECA\u65E5",yesterday:"\u6628\u65E5",tomorrow:"\u660E\u65E5","Change date":"\u65E5\u4ED8\u3092\u5909\u66F4","Change time":"\u6642\u9593\u3092\u5909\u66F4","Card title...":"\u30AB\u30FC\u30C9\u30BF\u30A4\u30C8\u30EB\u2026","Add card":"\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0","Add a card":"\u30AB\u30FC\u30C9\u3092\u8FFD\u52A0","Edit card":"\u30AB\u30FC\u30C9\u3092\u7DE8\u96C6","New note from card":"\u30AB\u30FC\u30C9\u304B\u3089\u30CE\u30FC\u30C8\u3092\u65B0\u898F\u4F5C\u6210","Archive card":"\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Delete card":"\u30AB\u30FC\u30C9\u3092\u524A\u9664","Edit date":"\u65E5\u4ED8\u3092\u7DE8\u96C6","Add date":"\u65E5\u4ED8\u3092\u8FFD\u52A0","Remove date":"\u65E5\u4ED8\u3092\u524A\u9664","Edit time":"\u6642\u9593\u3092\u7DE8\u96C6","Add time":"\u6642\u9593\u3092\u8FFD\u52A0","Remove time":"\u6642\u9593\u3092\u524A\u9664","Duplicate card":"\u30AB\u30FC\u30C9\u3092\u8907\u88FD","Split card":"\u30AB\u30FC\u30C9\u3092\u5206\u5272","Copy link to card":"\u30AB\u30FC\u30C9\u3078\u306E\u30EA\u30F3\u30AF\u3092\u30B3\u30D4\u30FC","Enter list title...":"\u30EA\u30B9\u30C8\u30BF\u30A4\u30C8\u30EB\u3092\u7DE8\u96C6\u2026","Mark cards in this list as complete":"\u3053\u306E\u30EA\u30B9\u30C8\u306B\u542B\u307E\u308C\u308B\u30AB\u30FC\u30C9\u3092\u5B8C\u4E86\u3068\u3057\u3066\u30DE\u30FC\u30AF\u3059\u308B","Add list":"\u30EA\u30B9\u30C8\u3092\u8FFD\u52A0","Add a list":"\u30EA\u30B9\u30C8\u3092\u8FFD\u52A0","Move list":"\u30EA\u30B9\u30C8\u3092\u79FB\u52D5",Close:"\u9589\u3058\u308B","Are you sure you want to delete this list and all its cards?":"\u3053\u306E\u30EA\u30B9\u30C8\u3068\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u30AB\u30FC\u30C9\u3092\u524A\u9664\u3057\u307E\u3059\u304B\b\uFF1F","Yes, delete list":"\u306F\u3044\u3001\u30EA\u30B9\u30C8\u3092\u524A\u9664\u3057\u307E\u3059","Are you sure you want to archive this list and all its cards?":"\u3053\u306E\u30EA\u30B9\u30C8\u3068\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059\u304B\uFF1F","Yes, archive list":"\u306F\u3044\u3001\u30EA\u30B9\u30C8\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059","Are you sure you want to archive all cards in this list?":"\u3053\u306E\u30EA\u30B9\u30C8\u306B\u542B\u307E\u308C\u308B\u3059\u3079\u3066\u306E\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059\u304B\uFF1F","Yes, archive cards":"\u306F\u3044\u3001\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6\u3057\u307E\u3059","Edit list":"\u30EA\u30B9\u30C8\u3092\u7DE8\u96C6","Archive cards":"\u30AB\u30FC\u30C9\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Archive list":"\u30EA\u30B9\u30C8\u3092\u30A2\u30FC\u30AB\u30A4\u30D6","Delete list":"\u30EA\u30B9\u30C8\u3092\u524A\u9664","Unable to find":"\u898B\u3064\u304B\u308A\u307E\u305B\u3093","Open in default app":"\u30C7\u30D5\u30A9\u30EB\u30C8\u30A2\u30D7\u30EA\u3067\u958B\u304F"};m();var Dv={};m();var Tv={};m();var Mv={};m();var Iv={};m();var Av={};m();var Lv={"Open as Kanban board":"Abrir como quadro Kanban","Create new board":"Criar um novo quadro","Archive completed cards in active board":"Arquivar cart\xF5es conclu\xEDdos no quadro ativo","Error: current file is not a Kanban board":"Erro: o arquivo atual n\xE3o \xE9 um quadro Kanban","Convert empty note to Kanban":"Converter nota vazia em Kanban","Error: cannot create Kanban, the current note is not empty":"Erro: n\xE3o \xE9 poss\xEDvel criar o quadro Kanban, a nota atual n\xE3o est\xE1 vazia","New Kanban board":"Novo quadro Kanban","Untitled Kanban":"Kanban sem t\xEDtulo","Toggle between Kanban and markdown mode":"Alternar entre os modos Kanban e Markdown","Open as markdown":"Abrir como markdown","Open board settings":"Abrir configura\xE7\xF5es do quadro Kanban","Archive completed cards":"Arquivar cart\xF5es conclu\xEDdos",Complete:"Conclu\xEDdo",Archive:"Arquivado","Note: No template plugins are currently enabled.":"Nota: N\xE3o h\xE1 plug-ins de modelo habilitados no momento.",default:"padr\xE3o","Search...":"Pesquisar...","These settings will take precedence over the default Kanban board settings.":"Essas configura\xE7\xF5es sobrescrever\xE3o as configura\xE7\xF5es padr\xE3o do quadro Kanban","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"Defina as configura\xE7\xF5es padr\xE3o do quadro Kanban. Cada quadro Kanban pode ter sua pr\xF3pria configura\xE7\xE3o.","Note template":"Modelo de nota","This template will be used when creating new notes from Kanban cards.":"Este modelo ser\xE1 usado quando uma nova nota Kanban for criada.","No template":"Sem modelo","Note folder":"Pasta de notas","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"As notas criadas pelos links dos cart\xF5es Kanban ser\xE3o colocadas nesta pasta. Se estiver em branco, ser\xE3o colocadas no local configurado como padr\xE3o deste cofre.","Default folder":"Pasta padr\xE3o","Lane width":"Largura das listas","Enter a number to set the lane width in pixels.":"Insira um n\xFAmero para definir a largura das listas em pixels.","Maximum number of archived cards":"Quantidade m\xE1xima de cart\xF5es arquivados","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"Os cart\xF5es arquivados podem ser vistos no modo Markdown. Esta configura\xE7\xE3o excluir\xE1 os cart\xF5es antigos assim que o limite for atingido. Inserir o valor -1 retira o limite para cart\xF5es arquivados.","Display card checkbox":"Exibe uma caixa de sele\xE7\xE3o do cart\xE3o","When toggled, a checkbox will be displayed with each card":"Quando ativada, uma caixa de sele\xE7\xE3o ser\xE1 exibida em cada cart\xE3o.","Reset to default":"Redefinir configura\xE7\xF5es padr\xE3o","Date & Time":"Data e Hora","Date trigger":"Gatilho de data","When this is typed, it will trigger the date selector":"Quando este caractere \xE9 digitado, o seletor de data \xE9 exibido.","Time trigger":"Gatilho de hora","When this is typed, it will trigger the time selector":"Quando este caractere \xE9 digitado, o seletor de hora \xE9 exibido.","Date format":"Formado da data","This format will be used when saving dates in markdown.":"Este formato ser\xE1 usado quando datas forem armazenadas no Markdown.","For more syntax, refer to":"Para mais informa\xE7\xF5es sobre esta sintaxe, consulte os","format reference":"modelos de formato.","Your current syntax looks like this":"Sua atual sintaxe est\xE1 assim","Time format":"Formato da hora","Date display format":"Formato de exibi\xE7\xE3o da data","This format will be used when displaying dates in Kanban cards.":"Este ser\xE1 o formato das datas exibido nos cart\xF5es do Kanban.","Show relative date":"Exibir datas relativas","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"Ao ativar, os cart\xF5es exibir\xE3o o intervalo de tempo entre hoje e a data do cart\xE3o: Ex.: 'Em 3 dias', 'Um m\xEAs atr\xE1s'","Hide card display dates":"Ocultar datas dos cart\xF5es","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"Ao ativar, as datas formatadas n\xE3o ser\xE3o exibidas no cart\xE3o. As datas relativas ainda ser\xE3o exibidas se estiverem ativadas.","Hide dates in card titles":"Ocultar datas dos t\xEDtulos dos cart\xF5es","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"Ao ativar, as datas ser\xE3o t\xEDtulos de cart\xF5es ocultos. Evita que datas sejam inclu\xEDdas no t\xEDtulo ao criar novas notas.","Link dates to daily notes":"Vincular datas a notas di\xE1rias","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"Ao ativar, as datas ser\xE3o vinculadas \xE0s notas di\xE1rias. Ex.: [[2021-04-26]]","Add date and time to archived cards":"Adicionar data e hora aos cart\xF5es arquivados","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"Quando ativada, a data e a hora atuais ser\xE3o adicionadas ao in\xEDcio de um cart\xE3o quando ele for arquivado. Ex.: - [] 2021-05-14 10:00 T\xEDtulo do meu cart\xE3o","Archive date/time separator":"Separador de data/hora do arquivo","This will be used to separate the archived date/time from the title":"Isso ser\xE1 usado para separar a data/hora arquivada do t\xEDtulo.","Archive date/time format":"Formato de data/hora do arquivo","Kanban Plugin":"Plugin Kanban","Hide tags in card titles":"Ocultar \u2018tags\u2019 nos t\xEDtulos dos cart\xF5es","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"Quando ativada, as \u2018tags\u2019 n\xE3o ser\xE3o exibidas nos t\xEDtulos de cartas. Isso impedir\xE1 que as \u2018tags\u2019 sejam inclu\xEDdas no t\xEDtulo ao criar novas notas.","Hide card display tags":"Ocultar \u2018tags\u2019 de exibi\xE7\xE3o de cart\xE3o","When toggled, tags will not be displayed below the card title.":"Quando ativada, as \u2018tags\u2019 n\xE3o ser\xE3o exibidas abaixo do t\xEDtulo do cart\xE3o.","Linked Page Metadata":"Metadados de p\xE1ginas 'lincadas'","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"Exibe metadados para a primeira nota 'lincada' em um cart\xE3o. Especifique abaixo quais metadados ser\xE3o exibidos. Um r\xF3tulo opcional pode ser fornecido e os r\xF3tulos podem ser ocultados completamente.","Metadata key":"Metadado","Display label":"Descri\xE7\xE3o personalizada","Hide label":"Ocultar","Drag to rearrange":"Arraste para reorganizar",Delete:"Excluir","Add key":"Adicionar metadado","More options":"Mais op\xE7\xF5es",Cancel:"Cancelar",today:"hoje",yesterday:"ontem",tomorrow:"amanh\xE3","Change date":"Alterar data","Change time":"Mudar hora","Card title...":"T\xEDtulo do item...","Add card":"Adicionar Item","Add a card":"Adicione um cart\xE3o","Edit card":"Editar cart\xE3o","New note from card":"Nova nota do cart\xE3o","Archive card":"Arquivar cart\xE3o","Delete card":"Excluir cart\xE3o","Edit date":"Editar data","Add date":"Adicionar data","Remove date":"Remover data","Edit time":"Editar hora","Add time":"Adicionar hora","Remove time":"Remover hora","Duplicate card":"Duplicate card","Enter list title...":"Insira o t\xEDtulo da lista...","Mark cards in this list as complete":"Marcar os itens nesta lista como conclu\xEDdos","Add list":"Adicionar lista","Add a list":"Adicionar uma lista","Move list":"Mover lista",Close:"Fechar","Are you sure you want to delete this list and all its cards?":"Tem certeza de que deseja excluir esta lista e todos os seus cart\xF5es?","Yes, delete list":"Sim, excluir esta lista","Are you sure you want to archive this list and all its cards?":"Tem certeza de que deseja arquivar esta lista e todos os seus cart\xF5es?","Yes, archive list":"Sim, arquivar esta lista","Are you sure you want to archive all cards in this list?":"Tem certeza de que deseja arquivar todos os cart\xF5es desta lista?","Yes, archive cards":"Sim, arquivar cart\xF5es","Edit list":"Editar lista","Archive cards":"Arquivar cart\xF5es","Archive list":"Arquivar lista","Delete list":"Excluir lista"};m();var Pv={};m();var Fv={};m();var Nv={};m();var Es={};m();var Ov={"Open as kanban board":"\u6253\u5F00\u4E3A\u770B\u677F","Create new board":"\u521B\u5EFA\u65B0\u770B\u677F","Archive completed cards in active board":"\u5728\u5F53\u524D\u770B\u677F\u4E2D\u5F52\u6863\u5DF2\u5B8C\u6210\u5361\u7247","Error: current file is not a Kanban board":"\u9519\u8BEF\uFF1A\u5F53\u524D\u6587\u4EF6\u4E0D\u662F\u770B\u677F\u6587\u4EF6","Convert empty note to Kanban":"\u8F6C\u6362\u7A7A\u767D\u7B14\u8BB0\u4E3A\u770B\u677F","Error: cannot create Kanban, the current note is not empty":"\u9519\u8BEF\uFF1A\u65E0\u6CD5\u8F6C\u6362\u5F53\u524D\u6587\u4EF6\uFF0C\u5F53\u524D\u7B14\u8BB0\u4E0D\u662F\u7A7A\u767D\u7B14\u8BB0","New kanban board":"\u65B0\u770B\u677F","Untitled Kanban":"\u672A\u547D\u540D\u770B\u677F","Toggle between Kanban and markdown mode":"\u5728\u770B\u677F\u548C Markdown \u6A21\u5F0F\u4E4B\u95F4\u8FDB\u884C\u5207\u6362","Open as markdown":"\u6253\u5F00\u4E3A Markdown \u6587\u4EF6","Open board settings":"\u6253\u5F00\u770B\u677F\u8BBE\u7F6E","Archive completed cards":"\u5F52\u6863\u5DF2\u5B8C\u6210\u5361\u7247","Something went wrong":"\u51FA\u4E86\u70B9\u95EE\u9898","You may wish to open as markdown and inspect or edit the file.":"\u4F60\u53EF\u80FD\u5E0C\u671B\u4EE5 Markdown \u65B9\u5F0F\u6253\u5F00\uFF0C\u5E76\u68C0\u67E5\u6216\u7F16\u8F91\u8BE5\u6587\u4EF6\u3002","Are you sure you want to archive all completed cards on this board?":"\u4F60\u786E\u5B9A\u8981\u5C06\u8FD9\u4E2A\u677F\u5757\u4E0A\u6240\u6709\u5DF2\u5B8C\u6210\u7684\u5361\u7247\u5F52\u6863\u5417\uFF1F",Complete:"\u5B8C\u6210",Archive:"\u5F52\u6863","Invalid Kanban file: problems parsing frontmatter":"\u65E0\u6548\u7684\u770B\u677F\u6587\u4EF6\uFF1A\u89E3\u6790 frontmatter \u65F6\u51FA\u73B0\u95EE\u9898","I don't know how to interpret this line:":"\u6211\u4E0D\u77E5\u9053\u5982\u4F55\u89E3\u8BFB\u8FD9\u53E5\u8BDD\uFF1A",Untitled:"\u672A\u547D\u540D","Note: No template plugins are currently enabled.":"\u6CE8\u610F\uFF1A\u5F53\u524D\u6CA1\u6709\u542F\u7528\u6A21\u677F\u63D2\u4EF6",default:"\u9ED8\u8BA4","Search...":"\u641C\u7D22\u2026\u2026","New line trigger":"\u6362\u884C\u89E6\u53D1\u5668","Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.":"\u9009\u62E9 Enter \u6216\u662F Shift+Enter \u6765\u521B\u5EFA\u65B0\u884C, \u672A\u9009\u7528\u7684\u5FEB\u6377\u952E\u5C06\u88AB\u7528\u4E8E\u521B\u5EFA\u5361\u7247\u548C\u5217\uFF0C\u4EE5\u53CA\u5B8C\u6210\u5361\u7247\u3001\u5217\u7684\u7F16\u8F91\u3002","Shift + Enter":"Shift + Enter",Enter:"Enter","Prepend / append new cards":"\u8FFD\u52A0\u65B0\u5361\u7247","This setting controls whether new cards are added to the beginning or end of the list.":"\u8BBE\u7F6E\u65B0\u5361\u7247\u8FFD\u52A0\u5230\u5217\u5934\u90E8\u6216\u5C3E\u90E8\u3002",Prepend:"\u5934\u90E8","Prepend (compact)":"\u5934\u90E8 (\u7D27\u51D1)",Append:"\u5C3E\u90E8","These settings will take precedence over the default Kanban board settings.":"\u5F53\u524D\u770B\u677F\u8BBE\u7F6E\u5C06\u4F1A\u8986\u76D6\u9ED8\u8BA4\u7684\u770B\u677F\u8BBE\u7F6E\u3002","Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.":"\u66F4\u6539\u9ED8\u8BA4\u7684\u770B\u677F\u8BBE\u7F6E\u3002\u4E3A\u6BCF\u4E2A\u770B\u677F\u5355\u72EC\u8FDB\u884C\u8BBE\u7F6E\u5C06\u8986\u76D6\u9ED8\u8BA4\u8BBE\u7F6E\u3002","Note template":"\u7B14\u8BB0\u6A21\u677F","This template will be used when creating new notes from Kanban cards.":"\u4ECE\u770B\u677F\u5361\u7247\u521B\u5EFA\u65B0\u7B14\u8BB0\u65F6\u4F1A\u4F7F\u7528\u8BE5\u6A21\u677F\u3002","No template":"\u6CA1\u6709\u6A21\u677F","Note folder":"\u7B14\u8BB0\u5B58\u653E\u4F4D\u7F6E","Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.":"\u4ECE\u770B\u677F\u5361\u7247\u521B\u5EFA\u7684\u7B14\u8BB0\u4F1A\u653E\u7F6E\u5230\u8BE5\u6587\u4EF6\u5939\u4E2D\u3002\u5982\u679C\u4E3A\u7A7A\uFF0C\u7B14\u8BB0\u5C06\u4F1A\u653E\u7F6E\u5230 Obsidian \u7684\u9ED8\u8BA4\u6587\u4EF6\u5B58\u653E\u4F4D\u7F6E\u3002","Default folder":"\u9ED8\u8BA4\u6587\u4EF6\u5939","List width":"\u5217\u5BBD","Enter a number to set the list width in pixels.":"\u8F93\u5165\u4E00\u4E2A\u50CF\u7D20\u503C\u6765\u8BBE\u7F6E\u5217\u7684\u5BBD\u5EA6","Maximum number of archived cards":"\u5355\u4E2A\u770B\u677F\u5185\u5DF2\u5F52\u6863\u5361\u7247\u7684\u6700\u5927\u6570\u91CF","Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.":"\u5DF2\u5F52\u6863\u5361\u7247\u53EF\u4EE5\u5728 Markdown \u6A21\u5F0F\u4E0B\u67E5\u770B\u3002\u8BE5\u8BBE\u7F6E\u5C06\u4F7F\u5DF2\u5F52\u6863\u5361\u7247\u5728\u8FBE\u5230\u6700\u5927\u6570\u91CF\u65F6\u5220\u9664\u65E7\u5361\u3002\u8BBE\u7F6E\u4E3A -1 \u53EF\u4EE5\u6C38\u4E45\u4FDD\u7559\u6240\u6709\u5F52\u6863\u5361\u7247\u3002","Display card checkbox":"\u5C55\u793A\u5361\u7247\u590D\u9009\u6846","When toggled, a checkbox will be displayed with each card":"\u6253\u5F00\u65F6\uFF0C\u590D\u9009\u6846\u4F1A\u51FA\u73B0\u5728\u6BCF\u5F20\u5361\u7247\u4E0A","Reset to default":"\u8FD8\u539F\u521D\u59CB\u8BBE\u7F6E","Date & Time":"\u65E5\u671F\u548C\u65F6\u95F4","Date trigger":"\u65E5\u671F\u89E6\u53D1\u6307\u4EE4","When this is typed, it will trigger the date selector":"\u5F53\u5728\u770B\u677F\u5361\u7247\u4E2D\u8F93\u5165\u8FD9\u4E2A\u65F6\uFF0C\u4F1A\u89E6\u53D1\u4E00\u4E2A\u65E5\u671F\u9009\u62E9\u5668","Time trigger":"\u65F6\u95F4\u89E6\u53D1\u6307\u4EE4","When this is typed, it will trigger the time selector":"\u5F53\u5728\u770B\u677F\u5361\u7247\u4E2D\u8F93\u5165\u8FD9\u4E2A\u65F6\uFF0C\u4F1A\u89E6\u53D1\u4E00\u4E2A\u65F6\u95F4\u9009\u62E9\u5668","Date format":"\u65E5\u671F\u683C\u5F0F","This format will be used when saving dates in markdown.":"\u8FD9\u4E2A\u683C\u5F0F\u4F1A\u5728\u65E5\u671F\u4FDD\u5B58\u5230 Markdown \u683C\u5F0F\u65F6\u4F7F\u7528\u3002","For more syntax, refer to":"\u66F4\u591A\u683C\u5F0F\uFF0C\u8BF7\u67E5\u770B","format reference":"\u683C\u5F0F\u53C2\u8003","Your current syntax looks like this":"\u4F60\u5F53\u524D\u8BBE\u7F6E\u7684\u683C\u5F0F\u4F1A\u662F","Time format":"\u65F6\u95F4\u683C\u5F0F","Date display format":"\u65E5\u671F\u5C55\u793A\u683C\u5F0F","This format will be used when displaying dates in Kanban cards.":"\u770B\u677F\u5361\u7247\u4F1A\u4EE5\u8BE5\u683C\u5F0F\u5C55\u793A\u65E5\u671F\u3002","Show relative date":"\u5C55\u793A\u76F8\u5BF9\u65E5\u671F","When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u4F1A\u5C55\u793A\u5176\u6240\u8BBE\u65E5\u671F\u4E0E\u5F53\u524D\u65E5\u671F\u7684\u5DEE\u503C\uFF0C\u4F8B\u5982\u201C3\u5929\u5185\u201D\u201C\u4E00\u4E2A\u6708\u524D\u201D\u7B49","Hide card display dates":"\u9690\u85CF\u5361\u7247\u65E5\u671F","Hide card counts in list titles":"\u5728\u5217\u6807\u9898\u4E0A\u9690\u85CF\u5361\u7247\u8BA1\u6570","When toggled, card counts are hidden from the list title":"\u6253\u5F00\u65F6\uFF0C\u5217\u6807\u9898\u4E0A\u7684\u5361\u7247\u8BA1\u6570\u5C06\u9690\u85CF","When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.":"\u6253\u5F00\u65F6\uFF0C\u683C\u5F0F\u5316\u65E5\u671F\u4E0D\u4F1A\u5728\u5361\u7247\u4E0A\u5C55\u793A\u3002\u5982\u679C\u5F00\u542F\u4E86\u76F8\u5BF9\u65E5\u671F\u529F\u80FD\uFF0C\u76F8\u5BF9\u65E5\u671F\u8FD8\u662F\u4F1A\u7EE7\u7EED\u5C55\u793A\u3002","Hide dates in card titles":"\u5728\u5361\u7247\u6807\u9898\u4E2D\u9690\u85CF\u65E5\u671F","When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u6807\u9898\u4E2D\u7684\u65E5\u671F\u5C06\u4F1A\u9690\u85CF\u3002\u5F53\u57FA\u4E8E\u5361\u7247\u521B\u5EFA\u65B0\u7B14\u8BB0\u65F6\u53EF\u4EE5\u907F\u514D\u65E5\u671F\u6DF7\u6742\u5176\u4E2D\u3002","Link dates to daily notes":"\u94FE\u63A5\u65E5\u671F\u5230\u65E5\u8BB0","When toggled, dates will link to daily notes. Eg. [[2021-04-26]]":"\u6253\u5F00\u65F6\uFF0C\u65E5\u671F\u4F1A\u81EA\u52A8\u94FE\u63A5\u5230\u65E5\u8BB0\u9875\u9762\uFF0C\u4F8B\u5982[[2021-04-26]]","Add date and time to archived cards":"\u6DFB\u52A0\u65E5\u671F\u548C\u65F6\u95F4\u5230\u5F52\u6863\u5361\u7247","When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title":"\u6253\u5F00\u65F6\uFF0C\u5F53\u524D\u65E5\u671F\u548C\u65F6\u95F4\u4F1A\u88AB\u6DFB\u52A0\u5230\u5F52\u6863\u5361\u7247\u7684 frontmatter \u4E0A\uFF0C\u4F8B\u5982\u201C- [ ] 2021-05-14 10:00am \u6211\u7684\u5361\u7247\u6807\u9898\u201D","Archive date/time separator":"\u5F52\u6863\u65E5\u671F\u6216\u65F6\u95F4\u5206\u9694\u7B26Archive date/time separator","This will be used to separate the archived date/time from the title":"\u7528\u4E8E\u5206\u9694\u6807\u9898\u4E0E\u5F52\u6863\u5361\u7247\u7684\u65E5\u671F\u6216\u65F6\u95F4","Archive date/time format":"\u5F52\u6863\u65E5\u671F\u6216\u65F6\u95F4\u683C\u5F0F","Kanban Plugin":"\u770B\u677F\u63D2\u4EF6","Hide tags in card titles":"\u9690\u85CF\u5361\u7247\u6807\u9898\u4E2D\u7684\u6807\u7B7E","When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u6807\u9898\u4E2D\u7684\u6807\u7B7E\u5C06\u4F1A\u88AB\u9690\u85CF\u3002\u5F53\u57FA\u4E8E\u5361\u7247\u521B\u5EFA\u65B0\u7B14\u8BB0\u65F6\u53EF\u4EE5\u907F\u514D\u6807\u7B7E\u6DF7\u6742\u5176\u4E2D\u3002","Hide card display tags":"\u9690\u85CF\u5361\u7247\u4E0A\u7684\u6807\u7B7E","When toggled, tags will not be displayed below the card title.":"\u6253\u5F00\u65F6\uFF0C\u5361\u7247\u6807\u9898\u4E0B\u65B9\u7684\u6807\u7B7E\u5C06\u4E0D\u4F1A\u5C55\u793A\u3002","Linked Page Metadata":"\u8FDE\u63A5\u7684\u9875\u9762\u5143\u6570\u636E","Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.":"\u5C55\u793A\u5361\u7247\u4E2D\u7B2C\u4E00\u4E2A\u8FDE\u63A5\u6240\u5BF9\u5E94\u7684\u7B14\u8BB0\u5143\u6570\u636E\u3002\u8BF7\u5728\u4E0B\u65B9\u6307\u5B9A\u54EA\u4E9B\u5143\u6570\u636E\u53EF\u4EE5\u5C55\u793A\u3002\u4F60\u53EF\u4EE5\u9009\u62E9\u5C55\u793A\u54EA\u4E9B\u6807\u5FD7\uFF0C\u6240\u6709\u6807\u5FD7\u90FD\u53EF\u4EE5\u88AB\u9690\u85CF\u3002","Board Header Buttons":"\u677F\u5934\u6309\u94AE","Calendar: first day of week":"\u65E5\u5386\uFF1A\u4E00\u5468\u7684\u7B2C\u4E00\u5929","Override which day is used as the start of the week":"\u8BBE\u7F6E\u54EA\u4E00\u5929\u4F5C\u4E3A\u4E00\u5468\u7684\u5F00\u59CB",Sunday:"\u5468\u65E5",Monday:"\u5468\u4E00",Tuesday:"\u5468\u4E8C",Wednesday:"\u5468\u4E09",Thursday:"\u5468\u56DB",Friday:"\u5468\u4E94",Saturday:"\u5468\u516D","Metadata key":"\u5143\u6570\u636E\u53C2\u6570\u540D","Display label":"\u5C55\u793A\u6807\u5FD7","Hide label":"\u9690\u85CF\u6807\u5FD7","Drag to rearrange":"\u62D6\u52A8\u4EE5\u91CD\u6392\u987A\u5E8F",Delete:"\u5220\u9664","Add key":"\u6DFB\u52A0\u53C2\u6570\u540D","Field contains markdown":"\u5B57\u6BB5\u5305\u542B Markdown","More options":"\u66F4\u591A\u9009\u9879",Cancel:"\u53D6\u6D88",today:"\u4ECA\u5929",yesterday:"\u6628\u5929",tomorrow:"\u660E\u5929","Change date":"\u66F4\u6539\u65E5\u671F","Change time":"\u66F4\u6539\u65F6\u95F4","Card title...":"\u5361\u7247\u6807\u9898\u2026\u2026","Add card":"\u6DFB\u52A0","Add a card":"\u6DFB\u52A0\u5361\u7247","Edit card":"\u7F16\u8F91\u5361\u7247","New note from card":"\u4ECE\u5361\u7247\u65B0\u5EFA\u7B14\u8BB0","Archive card":"\u5F52\u6863\u5361\u7247","Delete card":"\u5220\u9664\u5361\u7247","Edit date":"\u7F16\u8F91\u65E5\u671F","Add date":"\u6DFB\u52A0\u65E5\u671F","Remove date":"\u79FB\u9664\u65E5\u671F","Edit time":"\u7F16\u8F91\u65F6\u95F4","Add time":"\u6DFB\u52A0\u65F6\u95F4","Remove time":"\u79FB\u9664\u65F6\u95F4","Duplicate card":"\u590D\u5236\u5361\u7247","Split card":"\u5206\u79BB\u5361\u7247","Copy link to card":"\u590D\u5236\u94FE\u63A5\u81F3\u5361\u7247","Insert card before":"\u5728\u4E0A\u65B9\u63D2\u5165\u5361\u7247","Insert card after":"\u5728\u4E0B\u65B9\u63D2\u5165\u5361\u7247","Move to top":"\u79FB\u5230\u9876\u90E8","Move to bottom":"\u79FB\u81F3\u5E95\u90E8","Enter list title...":"\u8F93\u5165\u65B0\u7684\u5217\u6807\u9898\u2026\u2026","Mark cards in this list as complete":"\u5C06\u8BE5\u5217\u8BBE\u7F6E\u4E3A\u5B8C\u6210\u5217","Add list":"\u6DFB\u52A0","Add a list":"\u6DFB\u52A0\u5217","Move list":"\u79FB\u52A8\u5217",Close:"\u5173\u95ED","Are you sure you want to delete this list and all its cards?":"\u4F60\u786E\u5B9A\u4F60\u8981\u5220\u9664\u6574\u5217\u4EE5\u53CA\u8BE5\u5217\u4E0B\u6240\u6709\u5361\u7247\u5417\uFF1F","Yes, delete list":"\u662F\uFF0C\u5220\u9664\u5217","Are you sure you want to archive this list and all its cards?":"\u4F60\u786E\u5B9A\u4F60\u8981\u5F52\u6863\u6574\u5217\u4EE5\u53CA\u8BE5\u5217\u4E0B\u6240\u6709\u5361\u7247\u5417\uFF1F","Yes, archive list":"\u662F, \u5F52\u6863\u5217","Are you sure you want to archive all cards in this list?":"\u4F60\u786E\u8BA4\u4F60\u8981\u5F52\u6863\u5F53\u524D\u5217\u7684\u6240\u6709\u5361\u7247\u5417\uFF1F","Yes, archive cards":"\u662F\uFF0C\u5F52\u6863\u6240\u6709\u5361\u7247","Edit list":"\u7F16\u8F91\u5217","Archive cards":"\u5F52\u6863\u5361\u7247","Archive list":"\u5F52\u6863\u5217","Delete list":"\u5220\u9664\u5217","Insert list before":"\u5728\u4E0A\u65B9\u63D2\u5165\u5217","Insert list after":"\u5728\u4E0B\u65B9\u63D2\u5165\u5217","Sort by card text":"\u4EE5\u5361\u7247\u6587\u672C\u6392\u5E8F","Sort by date":"\u4EE5\u65E5\u671F\u6392\u5E8F","Unable to find":"\u65E0\u6CD5\u627E\u5230","Open in default app":"\u5728\u9ED8\u8BA4\u5E94\u7528\u4E2D\u6253\u5F00",Submit:"\u63D0\u4EA4"};m();var Rv={};var wS={ar:vv,cz:yv,da:bv,de:wv,en:Hu,es:Ev,fr:xv,hi:kv,id:Sv,it:_v,ja:Cv,ko:Dv,nl:Tv,no:Mv,pl:Iv,"pt-BR":Lv,pt:Av,ro:Pv,ru:Fv,sq:Nv,tr:Es,uk:Es,"zh-TW":Rv,zh:Ov},Hv=window.localStorage.getItem("language"),Bu=wS[Hv||"en"];function P(e){return Bu||console.error("Error: kanban locale not found",Hv),Bu&&Bu[e]||Hu[e]}m();m();function Gn(e){return Array.isArray?Array.isArray(e):$v(e)==="[object Array]"}var ES=1/0;function xS(e){if(typeof e=="string")return e;let t=e+"";return t=="0"&&1/e==-ES?"-0":t}function kS(e){return e==null?"":xS(e)}function Rn(e){return typeof e=="string"}function Bv(e){return typeof e=="number"}function SS(e){return e===!0||e===!1||_S(e)&&$v(e)=="[object Boolean]"}function Kv(e){return typeof e=="object"}function _S(e){return Kv(e)&&e!==null}function un(e){return e!=null}function Ku(e){return!e.trim().length}function $v(e){return e==null?e===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(e)}var CS="Incorrect 'index' type",DS=e=>`Invalid value for key ${e}`,TS=e=>`Pattern length exceeds max of ${e}.`,MS=e=>`Missing ${e} property in key`,IS=e=>`Property 'weight' in key '${e}' must be a positive integer`,Uv=Object.prototype.hasOwnProperty,Vv=class{constructor(t){this._keys=[],this._keyMap={};let r=0;t.forEach(n=>{let i=Wv(n);r+=i.weight,this._keys.push(i),this._keyMap[i.id]=i,r+=i.weight}),this._keys.forEach(n=>{n.weight/=r})}get(t){return this._keyMap[t]}keys(){return this._keys}toJSON(){return JSON.stringify(this._keys)}};function Wv(e){let t=null,r=null,n=null,i=1,a=null;if(Rn(e)||Gn(e))n=e,t=zv(e),r=$u(e);else{if(!Uv.call(e,"name"))throw new Error(MS("name"));let o=e.name;if(n=o,Uv.call(e,"weight")&&(i=e.weight,i<=0))throw new Error(IS(o));t=zv(o),r=$u(o),a=e.getFn}return{path:t,id:r,weight:i,src:n,getFn:a}}function zv(e){return Gn(e)?e:e.split(".")}function $u(e){return Gn(e)?e.join("."):e}function AS(e,t){let r=[],n=!1,i=(a,o,s)=>{if(!!un(a))if(!o[s])r.push(a);else{let u=o[s],l=a[u];if(!un(l))return;if(s===o.length-1&&(Rn(l)||Bv(l)||SS(l)))r.push(kS(l));else if(Gn(l)){n=!0;for(let c=0,d=l.length;ce.score===t.score?e.idx{this._keysMap[r.id]=n})}create(){this.isCreated||!this.docs.length||(this.isCreated=!0,Rn(this.docs[0])?this.docs.forEach((t,r)=>{this._addString(t,r)}):this.docs.forEach((t,r)=>{this._addObject(t,r)}),this.norm.clear())}add(t){let r=this.size();Rn(t)?this._addString(t,r):this._addObject(t,r)}removeAt(t){this.records.splice(t,1);for(let r=t,n=this.size();r{let o=i.getFn?i.getFn(t):this.getFn(t,i.path);if(!!un(o)){if(Gn(o)){let s=[],u=[{nestedArrIndex:-1,value:o}];for(;u.length;){let{nestedArrIndex:l,value:c}=u.pop();if(!!un(c))if(Rn(c)&&!Ku(c)){let d={v:c,i:l,n:this.norm.get(c)};s.push(d)}else Gn(c)&&c.forEach((d,f)=>{u.push({nestedArrIndex:f,value:d})})}n.$[a]=s}else if(Rn(o)&&!Ku(o)){let s={v:o,n:this.norm.get(o)};n.$[a]=s}}}),this.records.push(n)}toJSON(){return{keys:this.keys,records:this.records}}};function jv(e,t,{getFn:r=_e.getFn,fieldNormWeight:n=_e.fieldNormWeight}={}){let i=new xs({getFn:r,fieldNormWeight:n});return i.setKeys(e.map(Wv)),i.setSources(t),i.create(),i}function HS(e,{getFn:t=_e.getFn,fieldNormWeight:r=_e.fieldNormWeight}={}){let{keys:n,records:i}=e,a=new xs({getFn:t,fieldNormWeight:r});return a.setKeys(n),a.setIndexRecords(i),a}function ks(e,{errors:t=0,currentLocation:r=0,expectedLocation:n=0,distance:i=_e.distance,ignoreLocation:a=_e.ignoreLocation}={}){let o=t/e.length;if(a)return o;let s=Math.abs(n-r);return i?o+s/i:s?1:o}function BS(e=[],t=_e.minMatchCharLength){let r=[],n=-1,i=-1,a=0;for(let o=e.length;a=t&&r.push([n,i]),n=-1)}return e[a-1]&&a-n>=t&&r.push([n,a-1]),r}var Wr=32;function KS(e,t,r,{location:n=_e.location,distance:i=_e.distance,threshold:a=_e.threshold,findAllMatches:o=_e.findAllMatches,minMatchCharLength:s=_e.minMatchCharLength,includeMatches:u=_e.includeMatches,ignoreLocation:l=_e.ignoreLocation}={}){if(t.length>Wr)throw new Error(TS(Wr));let c=t.length,d=e.length,f=Math.max(0,Math.min(n,d)),p=a,g=f,y=s>1||u,b=y?Array(d):[],k;for(;(k=e.indexOf(t,g))>-1;){let K=ks(t,{currentLocation:k,expectedLocation:f,distance:i,ignoreLocation:l});if(p=Math.min(K,p),g=k+c,y){let z=0;for(;z=Z;Q-=1){let ie=Q-1,he=r[e.charAt(ie)];if(y&&(b[ie]=+!!he),se[Q]=(se[Q+1]<<1|1)&he,K&&(se[Q]|=(T[Q+1]|T[Q])<<1|1|T[Q+1]),se[Q]&H&&(C=ks(t,{errors:K,currentLocation:ie,expectedLocation:f,distance:i,ignoreLocation:l}),C<=p)){if(p=C,g=ie,g<=f)break;Z=Math.max(1,2*f-g)}}if(ks(t,{errors:K+1,currentLocation:f,expectedLocation:f,distance:i,ignoreLocation:l})>p)break;T=se}let D={isMatch:g>=0,score:Math.max(.001,C)};if(y){let K=BS(b,s);K.length?u&&(D.indices=K):D.isMatch=!1}return D}function $S(e){let t={};for(let r=0,n=e.length;r{this.chunks.push({pattern:f,alphabet:$S(f),startIndex:p})},d=this.pattern.length;if(d>Wr){let f=0,p=d%Wr,g=d-p;for(;f{let{isMatch:k,score:T,indices:C}=KS(t,g,y,{location:i+b,distance:a,threshold:o,findAllMatches:s,minMatchCharLength:u,includeMatches:n,ignoreLocation:l});k&&(f=!0),d+=T,k&&C&&(c=[...c,...C])});let p={isMatch:f,score:f?d/this.chunks.length:1};return f&&n&&(p.indices=c),p}},Qn=class{constructor(t){this.pattern=t}static isMultiMatch(t){return qv(t,this.multiRegex)}static isSingleMatch(t){return qv(t,this.singleRegex)}search(){}};function qv(e,t){let r=e.match(t);return r?r[1]:null}var Yv=class extends Qn{constructor(t){super(t)}static get type(){return"exact"}static get multiRegex(){return/^="(.*)"$/}static get singleRegex(){return/^=(.*)$/}search(t){let r=t===this.pattern;return{isMatch:r,score:r?0:1,indices:[0,this.pattern.length-1]}}},Jv=class extends Qn{constructor(t){super(t)}static get type(){return"inverse-exact"}static get multiRegex(){return/^!"(.*)"$/}static get singleRegex(){return/^!(.*)$/}search(t){let n=t.indexOf(this.pattern)===-1;return{isMatch:n,score:n?0:1,indices:[0,t.length-1]}}},Gv=class extends Qn{constructor(t){super(t)}static get type(){return"prefix-exact"}static get multiRegex(){return/^\^"(.*)"$/}static get singleRegex(){return/^\^(.*)$/}search(t){let r=t.startsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,this.pattern.length-1]}}},Qv=class extends Qn{constructor(t){super(t)}static get type(){return"inverse-prefix-exact"}static get multiRegex(){return/^!\^"(.*)"$/}static get singleRegex(){return/^!\^(.*)$/}search(t){let r=!t.startsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,t.length-1]}}},Xv=class extends Qn{constructor(t){super(t)}static get type(){return"suffix-exact"}static get multiRegex(){return/^"(.*)"\$$/}static get singleRegex(){return/^(.*)\$$/}search(t){let r=t.endsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[t.length-this.pattern.length,t.length-1]}}},Zv=class extends Qn{constructor(t){super(t)}static get type(){return"inverse-suffix-exact"}static get multiRegex(){return/^!"(.*)"\$$/}static get singleRegex(){return/^!(.*)\$$/}search(t){let r=!t.endsWith(this.pattern);return{isMatch:r,score:r?0:1,indices:[0,t.length-1]}}},Vu=class extends Qn{constructor(t,{location:r=_e.location,threshold:n=_e.threshold,distance:i=_e.distance,includeMatches:a=_e.includeMatches,findAllMatches:o=_e.findAllMatches,minMatchCharLength:s=_e.minMatchCharLength,isCaseSensitive:u=_e.isCaseSensitive,ignoreLocation:l=_e.ignoreLocation}={}){super(t);this._bitapSearch=new Uu(t,{location:r,threshold:n,distance:i,includeMatches:a,findAllMatches:o,minMatchCharLength:s,isCaseSensitive:u,ignoreLocation:l})}static get type(){return"fuzzy"}static get multiRegex(){return/^"(.*)"$/}static get singleRegex(){return/^(.*)$/}search(t){return this._bitapSearch.searchIn(t)}},Wu=class extends Qn{constructor(t){super(t)}static get type(){return"include"}static get multiRegex(){return/^'"(.*)"$/}static get singleRegex(){return/^'(.*)$/}search(t){let r=0,n,i=[],a=this.pattern.length;for(;(n=t.indexOf(this.pattern,r))>-1;)r=n+a,i.push([n,r-1]);let o=!!i.length;return{isMatch:o,score:o?0:1,indices:i}}},zu=[Yv,Wu,Gv,Qv,Zv,Xv,Jv,Vu],ey=zu.length,US=/ +(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)/,VS="|";function WS(e,t={}){return e.split(VS).map(r=>{let n=r.trim().split(US).filter(a=>a&&!!a.trim()),i=[];for(let a=0,o=n.length;a!!(e[Ss.AND]||e[Ss.OR]),qS=e=>!!e[Yu.PATH],YS=e=>!Gn(e)&&Kv(e)&&!Ju(e),ny=e=>({[Ss.AND]:Object.keys(e).map(t=>({[t]:e[t]}))});function ry(e,t,{auto:r=!0}={}){let n=i=>{let a=Object.keys(i),o=qS(i);if(!o&&a.length>1&&!Ju(i))return n(ny(i));if(YS(i)){let u=o?i[Yu.PATH]:a[0],l=o?i[Yu.PATTERN]:i[u];if(!Rn(l))throw new Error(DS(u));let c={keyId:$u(u),pattern:l};return r&&(c.searcher=qu(l,t)),c}let s={children:[],operator:a[0]};return a.forEach(u=>{let l=i[u];Gn(l)&&l.forEach(c=>{s.children.push(n(c))})}),s};return Ju(e)||(e=ny(e)),n(e)}function JS(e,{ignoreFieldNorm:t=_e.ignoreFieldNorm}){e.forEach(r=>{let n=1;r.matches.forEach(({key:i,norm:a,score:o})=>{let s=i?i.weight:null;n*=Math.pow(o===0&&s?Number.EPSILON:o,(s||1)*(t?1:a))}),r.score=n})}function GS(e,t){let r=e.matches;t.matches=[],!!un(r)&&r.forEach(n=>{if(!un(n.indices)||!n.indices.length)return;let{indices:i,value:a}=n,o={indices:i,value:a};n.key&&(o.key=n.key.src),n.idx>-1&&(o.refIndex=n.idx),t.matches.push(o)})}function QS(e,t){t.score=e.score}function XS(e,t,{includeMatches:r=_e.includeMatches,includeScore:n=_e.includeScore}={}){let i=[];return r&&i.push(GS),n&&i.push(QS),e.map(a=>{let{idx:o}=a,s={item:t[o],refIndex:o};return i.length&&i.forEach(u=>{u(a,s)}),s})}var mn=class{constructor(t,r={},n){this.options={..._e,...r},this.options.useExtendedSearch,this._keyStore=new Vv(this.options.keys),this.setCollection(t,n)}setCollection(t,r){if(this._docs=t,r&&!(r instanceof xs))throw new Error(CS);this._myIndex=r||jv(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}add(t){!un(t)||(this._docs.push(t),this._myIndex.add(t))}remove(t=()=>!1){let r=[];for(let n=0,i=this._docs.length;n-1&&(u=u.slice(0,r)),XS(u,this._docs,{includeMatches:n,includeScore:i})}_searchStringList(t){let r=qu(t,this.options),{records:n}=this._myIndex,i=[];return n.forEach(({v:a,i:o,n:s})=>{if(!un(a))return;let{isMatch:u,score:l,indices:c}=r.searchIn(a);u&&i.push({item:a,idx:o,matches:[{score:l,value:a,norm:s,indices:c}]})}),i}_searchLogical(t){let r=ry(t,this.options),n=(s,u,l)=>{if(!s.children){let{keyId:d,searcher:f}=s,p=this._findMatches({key:this._keyStore.get(d),value:this._myIndex.getValueForItemAtKeyId(u,d),searcher:f});return p&&p.length?[{idx:l,item:u,matches:p}]:[]}let c=[];for(let d=0,f=s.children.length;d{if(un(s)){let l=n(r,s,u);l.length&&(a[u]||(a[u]={idx:u,item:s,matches:[]},o.push(a[u])),l.forEach(({matches:c})=>{a[u].matches.push(...c)}))}}),o}_searchObjectList(t){let r=qu(t,this.options),{keys:n,records:i}=this._myIndex,a=[];return i.forEach(({$:o,i:s})=>{if(!un(o))return;let u=[];n.forEach((l,c)=>{u.push(...this._findMatches({key:l,value:o[c],searcher:r}))}),u.length&&a.push({idx:s,item:o,matches:u})}),a}_findMatches({key:t,value:r,searcher:n}){if(!un(r))return[];let i=[];if(Gn(r))r.forEach(({v:a,i:o,n:s})=>{if(!un(a))return;let{isMatch:u,score:l,indices:c}=n.searchIn(a);u&&i.push({score:l,key:t,value:a,idx:o,norm:s,indices:c})});else{let{v:a,n:o}=r,{isMatch:s,score:u,indices:l}=n.searchIn(a);s&&i.push({score:u,key:t,value:a,norm:o,indices:l})}return i}};mn.version="6.6.2";mn.createIndex=jv;mn.parseIndex=HS;mn.config=_e;mn.parseQuery=ry;jS(ty);var Sy=me(require("obsidian"));m();var iy=me(require("obsidian"));function _s(e,t,r){let n=r.getSetting("date-format"),i=r.getSetting("link-date-to-daily-note"),a=(0,iy.moment)(e).format(n),o=i?Yo(r.app,a):`{${a}}`;Lt(t.current,o),t.current.focus()}function ay({div:e,inputRef:t,cb:r,stateManager:n}){e.createEl("input",{type:"text"},i=>{e.win.setTimeout(()=>r(as(i,{now:new Date,locale:Xo(n),inline:!0,onChange:a=>{_s(a[0],t,n)},win:i.win})))})}function Gu(e,t){let r=t.clientHeight,n=t.clientWidth,i=Ze(t);e.top+r>i.innerHeight&&(t.style.top=`${(e.clientTop||0)-r}px`),e.left+n>i.innerWidth&&(t.style.left=`${(e.left||0)-n}px`)}function oy(e){let t=e.getSetting("time-trigger"),r=new RegExp(`\\B${Ln(t)}{?([^}]*)$`),n=Au(e);return{id:"time",match:r,index:1,search:(i,a)=>{a(i?n.filter(o=>o.startsWith(i)):n)},template:i=>i,replace:i=>`${t}{${i}} `}}function sy(e){let t=e.month(),r=e.clone().startOf("month").weekday(0),n=e.diff(r,"week");e.subtract(1,"month").startOf("month").weekday(6).add(n,"week");let i=e.month();for(;t===i;)e.subtract(1,"week"),i=e.month();return e}function ly(e){let t=e.month(),r=e.clone().startOf("month").weekday(6),n=e.diff(r,"week");e.add(1,"month").startOf("month").weekday(0).add(n,"week");let i=e.month();for(;t===i;)e.add(1,"week"),i=e.month();return e}m();var cy=me(require("obsidian"));var ZS=/\B\[\[([^\]]*)$/,e_=/\B!\[\[([^\]]*)$/,t_=/\B\[\[([^#\]]+)#([^\]]*)$/,n_=/\B!\[\[([^#\]]+)#([^\]]*)$/,r_=/\B\[\[([^#\]]+)#?\^([^\]]*)$/,i_=/\B!\[\[([^#\]]+)#?\^([^\]]*)$/;function a_(e,t,r,n){let i=e.document.body.createDiv(B("file-suggestion-wrapper"));i.detach(),(0,cy.setIcon)(i.createDiv(B("file-suggestion-icon")),"forward-arrow",12),i.createDiv({},o=>{o.createDiv({cls:B("file-suggestion-title"),text:n.item.alias}),o.createDiv({cls:B("file-suggestion-subtitle"),text:t.app.metadataCache.fileToLinktext(n.item.file,r)})});let a=i.outerHTML;return i.remove(),i=null,a}function Qu(e,t,r,n,i,a,o){return{id:`link-${o?"embed":"normal"}`,match:o?e_:ZS,index:1,template:s=>s.item.file===null?`${s.item.path.split("|").pop()||s.item.path}`:s.item.alias?a_(e,i,n,s):i.app.metadataCache.fileToLinktext(s.item.file,n),search:(s,u)=>{if(!s)u(t.slice(0,10).map((l,c)=>({item:l,refIndex:c})));else{let l=s.split("|"),c=l.length>1,d=l[0],f=c?l.slice(1).join("|"):null,p=s;c&&(p={"file.basename":d,alias:f}),u([{item:{file:null,path:s,alias:""},refIndex:-1},...r.search(p)])}},replace:s=>{let u=[];o&&s.item.file.extension==="md"&&u.push("!"),s.item.file===null?u.push(`[[${s.item.path}]]`):u.push(i.app.fileManager.generateMarkdownLink(s.item.file,i.file.path,void 0,s.item.alias));let l=!!i.app.vault.getConfig("useMarkdownLinks");return a&&!l&&(u[u.length-1]=u[u.length-1].slice(0,-2)),u.join("")}}}function o_(e,t,r,n){var u;if(!r)return[];let i=r.split("|"),a=e.metadataCache.getFirstLinkpathDest(i[0],t);if(!a)return[];let o=e.metadataCache.getFileCache(a);if(!o||!((u=o.headings)==null?void 0:u.length))return[];let s=o.headings.map(l=>({file:a,heading:l.heading,alias:i[1]||""}));return n?new mn(s,{keys:["heading"]}).search(n):s.map((l,c)=>({item:l,refIndex:c}))}function Xu(e,t,r,n){return{id:`heading-${n?"embed":"normal"}`,match:n?n_:t_,index:1,template:i=>i.item.heading,search:(i,a,o)=>{a(o_(t.app,e,o[1],o[2]))},replace:i=>{let a=[];n&&i.item.file.extension==="md"&&a.push("!"),a.push(t.app.fileManager.generateMarkdownLink(i.item.file,t.file.path,"#"+i.item.heading,i.item.alias));let o=!!t.app.vault.getConfig("useMarkdownLinks");return r&&!o?a[a.length-1]=a[a.length-1].slice(0,-2):!r&&!o&&a.push("]] "),a.join("")}}}var uy=class{constructor(){this.running=!1;this.cancelled=!1}start(){this.running=!0}stop(){this.running=!1}cancel(){this.stop(),this.cancelled=!0}isRunning(){return this.running}isCancelled(){return this.cancelled}};async function s_(e,t,r,n,i){var u;if(!r)return i([]);let a=r.split("|"),o=e.metadataCache.getFirstLinkpathDest(a[0],t);if(!o)return i([]);let s=e.metadataCache.getFileCache(o);if(!s||!((u=s.sections)==null?void 0:u.length))return i([]);try{let l=await e.metadataCache.blockCache.getForFile(new uy,o);if(!(l==null?void 0:l.blocks))return i([]);let c=l.blocks.map(d=>d.node.type==="heading"?null:{file:o,searchString:d.display,blockId:d.node.id,block:{type:d.node.type,start:d.node.position.start.offset,end:d.node.position.end.offset},alias:a[1]||""}).filter(d=>d);i(n?new mn(c,{keys:["searchString","blockId"]}).search(n):c.map((d,f)=>({item:d,refIndex:f})))}catch(l){i([])}}function l_(e){return["blockquote","code","table","comment","footnoteDefinition"].includes(e)}function Zu(e,t,r,n){return{id:`block-${n?"embed":"normal"}`,match:n?i_:r_,index:1,template:i=>i.item.blockId?`
${i.item.searchString}
${i.item.blockId}
`:i.item.searchString,search:(i,a,o)=>{s_(t.app,e,o[1],o[2],a)},replace:i=>{let a=[];n&&i.item.file.extension==="md"&&a.push("!");let o="#^";if(i.item.blockId)o+=i.item.blockId;else{let u=Ae(),l=l_(i.item.block.type)?` -`:" ";t.app.vault.cachedRead(i.item.file).then(c=>{let d=`${c.slice(0,i.item.block.end)}${l}^${u}${c.slice(i.item.block.end)}`;t.app.vault.modify(i.item.file,d)}).catch(c=>{t.setError(c),console.error(c)}),o+=u}a.push(t.app.fileManager.generateMarkdownLink(i.item.file,t.file.path,o,i.item.alias));let s=!!t.app.vault.getConfig("useMarkdownLinks");return r&&!s?a[a.length-1]=a[a.length-1].slice(0,-2):!r&&!s&&a.push("]] "),a.join("")}}}h();var n_=/\B#([^\s]*)?$/;function ay(e,t){return{id:"tag",match:n_,index:1,search:(r,n)=>{n(r?[{item:`#${r}`,refIndex:-1},...t.search(r,{limit:50})]:e.slice(0,50).map((i,a)=>({item:i,refIndex:a})))},template:r=>r.item,replace:r=>`${r.item.replace(/<\/?em>/g,"")} `}}h();h();var sy=ge(Ta());h();h();var a_=/\$&/g,o_=/\$(\d)/g,Ju=class{constructor(t,r,n){this.data=t;this.term=r;this.strategy=n}getReplacementData(t){let r=this.strategy.replace(this.data);if(r==null)return null;let n="";Array.isArray(r)&&(n=r[1],r=r[0]);let i=this.strategy.match(t);if(i==null||i.index==null)return null;let a=r.replace(a_,i[0]).replace(o_,(o,s)=>i[parseInt(s)]);return{start:i.index,end:i.index+i[0].length,beforeCursor:a,afterCursor:n}}replace(t,r){let n=this.getReplacementData(t);if(n!==null)return r=n.afterCursor+r,[[t.slice(0,n.start),n.beforeCursor,t.slice(n.end)].join(""),r]}render(){return this.strategy.renderTemplate(this.data,this.term)}getStrategyId(){return this.strategy.getId()}};var s_=1,Gu=class{constructor(t){this.props=t;this.cache={}}destroy(){return this.cache={},this}replace(t){return this.props.replace(t)}execute(t,r){var a;let n=this.matchWithContext(t);if(!n)return!1;let i=n[(a=this.props.index)!=null?a:s_];return this.search(i,o=>{r(o.map(s=>new Ju(s,i,this)))},n),!0}renderTemplate(t,r){if(this.props.template)return this.props.template(t,r);if(typeof t=="string")return t;throw new Error(`Unexpected render data type: ${typeof t}. Please implement template parameter by yourself`)}getId(){return this.props.id||null}match(t){return typeof this.props.match=="function"?this.props.match(t):t.match(this.props.match)}search(t,r,n){this.props.cache?this.searchWithCach(t,r,n):this.props.search(t,r,n)}matchWithContext(t){let r=this.context(t);return r===!1?null:this.match(r===!0?t:r)}context(t){return this.props.context?this.props.context(t):!0}searchWithCach(t,r,n){this.cache[t]!=null?r(this.cache[t]):this.props.search(t,i=>{this.cache[t]=i,r(i)},n)}};var Qu=class extends sy.EventEmitter{constructor(t){super();this.handleQueryResult=t=>{this.emit("hit",{searchResults:t})};this.strategies=t.map(r=>new Gu(r))}destroy(){return this.strategies.forEach(t=>t.destroy()),this}run(t){for(let r of this.strategies)if(r.execute(t,this.handleQueryResult))return;this.handleQueryResult([])}};h();var ly=ge(Ta());h();var l_=typeof window!="undefined"&&!!window.CustomEvent,Ut=(e,t,r)=>{if(l_)return new CustomEvent(t,r);let n=e.createEvent("CustomEvent");return n.initCustomEvent(t,!1,(r==null?void 0:r.cancelable)||!1,(r==null?void 0:r.detail)||void 0),n};var c_=10,u_="auto",d_="dropdown-menu textcomplete-dropdown",cy="textcomplete-item",f_=`${cy} active`,Da=class extends ly.EventEmitter{constructor(t,r){super();this.el=t;this.option=r;this.shown=!1;this.items=[];this.activeIndex=null}static create(t){let r=t.parent||window.document.body,i=r.doc.createElement("ul");return i.className=t.className||d_,Object.assign(i.style,{display:"none",position:"absolute",zIndex:"1000"},t.style),r==null||r.appendChild(i),new Da(i,t)}render(t,r){let n=Ut(this.el.doc,"render",{cancelable:!0});return this.emit("render",n),n.defaultPrevented?this:(this.clear(),t.length===0?this.hide():(this.items=t.slice(0,this.option.maxCount||c_).map((i,a)=>{var o;return new uy(this,a,i,((o=this.option)==null?void 0:o.item)||{})}),this.setStrategyId(t[0]).renderEdge(t,"header").renderItems().renderEdge(t,"footer").show().setOffset(r).activate(0),this.emit("rendered",Ut(this.el.doc,"rendered")),this))}destroy(){var t;return this.clear(),(t=this.el.parentNode)==null||t.removeChild(this.el),this}select(t){let r={searchResult:t.searchResult},n=Ut(this.el.doc,"select",{cancelable:!0,detail:r});return this.emit("select",n),n.defaultPrevented?this:(this.hide(),this.emit("selected",Ut(this.el.doc,"selected",{detail:r})),this)}show(){if(!this.shown){let t=Ut(this.el.doc,"show",{cancelable:!0});if(this.emit("show",t),t.defaultPrevented)return this;this.el.style.display="block",this.shown=!0,this.emit("shown",Ut(this.el.doc,"shown"))}return this}hide(){if(this.shown){let t=Ut(this.el.doc,"hide",{cancelable:!0});if(this.emit("hide",t),t.defaultPrevented)return this;this.el.style.display="none",this.shown=!1,this.clear(),this.emit("hidden",Ut(this.el.doc,"hidden"))}return this}clear(){return this.items.forEach(t=>t.destroy()),this.items=[],this.el.innerHTML="",this.activeIndex=null,this}up(t){return this.shown?this.moveActiveItem("prev",t):this}down(t){return this.shown?this.moveActiveItem("next",t):this}moveActiveItem(t,r){if(this.activeIndex!=null){let n=t==="next"?this.getNextActiveIndex():this.getPrevActiveIndex();n!=null&&(this.activate(n),r.preventDefault())}return this}activate(t){return this.activeIndex!==t&&(this.activeIndex!=null&&this.items[this.activeIndex].deactivate(),this.activeIndex=t,this.items[t].activate()),this}isShown(){return this.shown}getActiveItem(){return this.activeIndex!=null?this.items[this.activeIndex]:null}setOffset(t){let n=this.el.doc.documentElement;if(n){let i=this.el.offsetWidth;if(t.left){let s=this.option.dynamicWidth?n.scrollWidth:n.clientWidth;t.left+i>s&&(t.left=s-i),this.el.style.left=`${t.left}px`}else t.right&&(t.right-i<0&&(t.right=0),this.el.style.right=`${t.right}px`);let a=!1,o=this.option.placement||u_;if(o==="auto"){let s=this.el.clientHeight;a=t.clientTop!=null&&t.clientTop+s>n.clientHeight}o==="top"||a?(this.el.style.bottom=`${n.clientHeight-t.top+t.lineHeight}px`,this.el.style.top="auto"):(this.el.style.top=`${t.top}px`,this.el.style.bottom="auto")}return this}getNextActiveIndex(){if(this.activeIndex==null)throw new Error;return this.activeIndexo.data)):n||"",this.el.appendChild(a),this}},uy=class{constructor(t,r,n,i){this.dropdown=t;this.index=r;this.searchResult=n;this.props=i;this.active=!1;this.onClick=t=>{t.preventDefault(),this.dropdown.select(this)};this.className=this.props.className||cy,this.activeClassName=this.props.activeClassName||f_;let a=t.el.doc,o=a.createElement("li");o.className=this.active?this.activeClassName:this.className;let s=a.createElement("span");s.tabIndex=-1,s.innerHTML=this.searchResult.render(),o.appendChild(s),o.addEventListener("mousedown",this.onClick),o.addEventListener("touchstart",this.onClick),this.el=o}destroy(){var r;let t=this.el;return(r=t.parentNode)==null||r.removeChild(t),t.removeEventListener("mousedown",this.onClick,!1),t.removeEventListener("touchstart",this.onClick,!1),this}activate(){return this.active||(this.active=!0,this.el.className=this.activeClassName,this.dropdown.el.scrollTop=this.el.offsetTop),this}deactivate(){return this.active&&(this.active=!1,this.el.className=this.className),this}};h();var dy=ge(Ta());var Xu=class extends dy.EventEmitter{destroy(){return this}applySearchResult(t){throw new Error("Not implemented.")}getCursorOffset(){throw new Error("Not implemented.")}getBeforeCursor(){throw new Error("Not implemented.")}emitMoveEvent(t){let r=Ut(activeDocument,"move",{cancelable:!0,detail:{code:t}});return this.emit("move",r),r}emitEnterEvent(){let t=Ut(activeDocument,"enter",{cancelable:!0});return this.emit("enter",t),t}emitChangeEvent(){let t=Ut(activeDocument,"change",{detail:{beforeCursor:this.getBeforeCursor()}});return this.emit("change",t),t}emitEscEvent(){let t=Ut(activeDocument,"esc",{cancelable:!0});return this.emit("esc",t),t}getCode(t){return t.keyCode===9||t.keyCode===13?"ENTER":t.keyCode===27?"ESC":t.keyCode===38?"UP":t.keyCode===40||t.keyCode===78&&t.ctrlKey?"DOWN":t.keyCode===80&&t.ctrlKey?"UP":"OTHER"}};h();var fy=ge(Ta());var p_=["show","shown","render","rendered","selected","hidden","hide"],Zu=class extends fy.EventEmitter{constructor(t,r,n){super();this.editor=t;this.isQueryInFlight=!1;this.nextPendingQuery=null;this.handleHit=({searchResults:t})=>{t.length?this.dropdown.render(t,this.editor.getCursorOffset()):this.dropdown.hide(),this.isQueryInFlight=!1,this.nextPendingQuery!==null&&this.trigger(this.nextPendingQuery)};this.handleMove=t=>{t.detail.code==="UP"?this.dropdown.up(t):this.dropdown.down(t)};this.handleEnter=t=>{let r=this.dropdown.getActiveItem();r?(this.dropdown.select(r),t.preventDefault()):this.dropdown.hide()};this.handleEsc=t=>{this.dropdown.isShown()&&(this.dropdown.hide(),t.preventDefault())};this.handleChange=t=>{t.detail.beforeCursor!=null?this.trigger(t.detail.beforeCursor):this.dropdown.hide()};this.handleSelect=t=>{this.emit("select",t),t.defaultPrevented||this.editor.applySearchResult(t.detail.searchResult)};this.handleResize=()=>{this.dropdown.isShown()&&this.dropdown.setOffset(this.editor.getCursorOffset())};this.completer=new Qu(r),this.dropdown=Da.create((n==null?void 0:n.dropdown)||{}),this.startListening()}destroy(t=!0){return this.completer.destroy(),this.dropdown.destroy(),t&&this.editor.destroy(),this.stopListening(),this}isShown(){return this.dropdown.isShown()}hide(){return this.dropdown.hide(),this}trigger(t){return this.isQueryInFlight?this.nextPendingQuery=t:(this.isQueryInFlight=!0,this.nextPendingQuery=null,this.completer.run(t)),this}startListening(){var t;this.editor.on("move",this.handleMove).on("enter",this.handleEnter).on("esc",this.handleEsc).on("change",this.handleChange),this.dropdown.on("select",this.handleSelect);for(let r of p_)this.dropdown.on(r,n=>this.emit(r,n));this.completer.on("hit",this.handleHit),(t=Ze(this.dropdown.el))==null||t.addEventListener("resize",this.handleResize)}stopListening(){var t;(t=Ze(this.dropdown.el))==null||t.removeEventListener("resize",this.handleResize),this.completer.removeAllListeners(),this.dropdown.removeAllListeners(),this.editor.removeListener("move",this.handleMove).removeListener("enter",this.handleEnter).removeListener("esc",this.handleEsc).removeListener("change",this.handleChange)}};h();h();h();h();var py=e=>{let t=e.getBoundingClientRect(),r=e.doc;if(r==null)throw new Error("Given element does not belong to document");let{defaultView:n,documentElement:i}=r;if(n==null)throw new Error("Given element does not belong to window");let a={top:t.top+n.pageYOffset,left:t.left+n.pageXOffset};return i&&(a.top-=i.clientTop,a.left-=i.clientLeft),a};h();var h_="0".charCodeAt(0),m_="9".charCodeAt(0),hy=e=>h_<=e&&e<=m_,my=e=>{let t=getComputedStyle(e),r=t.lineHeight;if(hy(r.charCodeAt(0))){let n=parseFloat(r);return hy(r.charCodeAt(r.length-1))?n*parseFloat(t.fontSize):n}return g_(e.doc,e.nodeName,t)},g_=(e,t,r)=>{let n=e.body;if(!n)return 0;let i=e.createElement(t);i.innerHTML=" ",Object.assign(i.style,{fontSize:r.fontSize,fontFamily:r.fontFamily,padding:"0"}),n.appendChild(i),i.instanceOf(HTMLTextAreaElement)&&(i.rows=1);let a=i.offsetHeight;return n.removeChild(i),a};h();h();function gy(e,t,r){let n=e.doc,i=e.value,a=t+(r||""),o=n.activeElement,s=0,u=0;for(;s=0&&a.length-u-1>=0&&i[i.length-u-1]===a[a.length-u-1];)u++;s=Math.min(s,Math.min(i.length,a.length)-u),e.setSelectionRange(s,i.length-u);let l=a.substring(s,a.length-u);if(e.focus(),!n.execCommand("insertText",!1,l)){e.value=a;let c=n.createEvent("Event");c.initEvent("input",!0,!0),e.dispatchEvent(c)}return e.setSelectionRange(t.length,t.length),o.focus(),e}h();var v_=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"];function vy(e,t){let r=e.doc,n=e.win,i=r.createElement("div");i.id="input-textarea-caret-position-mirror-div",r.body.appendChild(i);let a=i.style,o=n.getComputedStyle(e);a.whiteSpace="pre-wrap",a.position="absolute",v_.forEach(l=>{a[l]=o[l]}),a.overflow="hidden",i.textContent=e.value.substring(0,t);let s=r.createElement("span");s.textContent=e.value.substring(t)||".",i.appendChild(s);let u={top:s.offsetTop+parseInt(o.borderTopWidth),left:s.offsetLeft+parseInt(o.borderLeftWidth),height:parseInt(o.lineHeight)};return r.body.removeChild(i),u}var xs=class extends Xu{constructor(t){super();this.el=t;this.onInput=()=>{this.emitChangeEvent()};this.onKeydown=t=>{let r=this.getCode(t),n;r==="UP"||r==="DOWN"?n=this.emitMoveEvent(r):r==="ENTER"?n=this.emitEnterEvent():r==="ESC"&&(n=this.emitEscEvent()),n&&n.defaultPrevented&&t.preventDefault()};this.startListening()}destroy(){return super.destroy(),this.stopListening(),this}applySearchResult(t){let r=this.getBeforeCursor();if(r!=null){let n=t.replace(r,this.getAfterCursor());this.el.focus(),Array.isArray(n)&&(gy(this.el,n[0],n[1]),this.el&&this.el.dispatchEvent(Ut(this.el.doc,"input")))}}getCursorOffset(){let t=py(this.el),r=this.getElScroll(),n=this.getCursorPosition(),i=my(this.el),a=t.top-r.top+n.top+i,o=t.left-r.left+n.left,s=this.el.getBoundingClientRect().top,u=this.el.doc;if(this.el.dir!=="rtl")return{top:a,left:o,lineHeight:i,clientTop:s};{let l=u.documentElement?u.documentElement.clientWidth-o:0;return{top:a,right:l,lineHeight:i,clientTop:s}}}getBeforeCursor(){return this.el.selectionStart!==this.el.selectionEnd?null:this.el.value.slice(0,this.el.selectionEnd)}getAfterCursor(){return this.el.value.slice(this.el.selectionEnd)}getElScroll(){return{top:this.el.scrollTop,left:this.el.scrollLeft}}getCursorPosition(){return vy(this.el,this.el.selectionEnd)}startListening(){this.el.addEventListener("input",this.onInput),this.el.addEventListener("keydown",this.onKeydown)}stopListening(){this.el.removeEventListener("input",this.onInput),this.el.removeEventListener("keydown",this.onKeydown)}};function y_({inputRef:e,isAutocompleteVisibleRef:t,obsidianContext:r,excludeDatePicker:n}){let{stateManager:i,filePath:a,view:o}=r,s=null,u=null,l=i.getSetting("date-trigger"),c=new RegExp(`(?:^|\\s)${Ln(l)}$`),d=Object.keys(i.app.metadataCache.getTags()).sort(),f=new mn(d),p=i.app.metadataCache.getLinkSuggestions().filter(N=>!!N.file),m=new mn(p,{keys:["file.basename","alias"]}),y=o.app.vault.getConfig("autoPairBrackets"),b=[ay(d,f),qu(a,i,y,!0),qu(a,i,y,!1),ju(a,i,y,!0),ju(a,i,y,!1),zu(o.getWindow(),p,m,a,i,y,!0),zu(o.getWindow(),p,m,a,i,y,!1)];n||b.push(ey(i));let x=new xs(e.current),D=new Zu(x,b,{dropdown:{parent:ai(e.current),maxCount:96,className:`${$("autocomplete")} ${$("ignore-click-outside")}`,rotate:!0,item:{className:`${$("autocomplete-item")} ${$("ignore-click-outside")}`,activeClassName:`${$("autocomplete-item-active")} ${$("ignore-click-outside")}`}}}),C=()=>{D.isShown()||(t.current=!1);let N=s.win;u.destroy(),s.remove(),N.setTimeout(()=>{s=null})};D.on("show",()=>{t.current=!0}),D.on("hidden",()=>{t.current=!1});let A;if(!n){A=T=>{if(D.isShown&&["#","^"].contains(T.key)){let W=D.dropdown.getActiveItem(),z=W==null?void 0:W.searchResult;if(z&&z.strategy.props.id.startsWith("link")){T.preventDefault(),x.applySearchResult(z),At(e.current,T.key==="^"?"#^":"#");return}}if(!s)return;if(T.key==="Enter"){T.preventDefault();let W=u.selectedDates;return W.length?ws(W[0],e,i):ws(new Date,e,i),C()}if(T.key==="Escape")return T.preventDefault(),C();let O=(0,yy.moment)(u.selectedDates[0]||new Date);if(T.key==="ArrowRight"){T.preventDefault(),O.weekday()===6?u.setDate(ny(O).toDate(),!1):u.setDate(O.add(1,"day").toDate(),!1);return}if(T.key==="ArrowLeft"){T.preventDefault(),O.weekday()===0?u.setDate(ty(O).toDate(),!1):u.setDate(O.subtract(1,"day").toDate(),!1);return}if(T.key==="ArrowUp"){T.preventDefault(),u.setDate(O.subtract(1,"week").toDate(),!1);return}if(T.key==="ArrowDown"){T.preventDefault(),u.setDate(O.add(1,"week").toDate(),!1);return}},e.current.addEventListener("keydown",A);let N=e.current.doc;x.on("change",T=>{let O=T.detail.beforeCursor;if(O&&c.test(O)){let W=x.getCursorOffset();s?(s.style.left=`${W.left||0}px`,s.style.top=`${W.top||0}px`,Vu(W,s)):s=N.body.createDiv({cls:`${$("date-picker")} ${$("ignore-click-outside")}`},z=>{z.style.left=`${W.left||0}px`,z.style.top=`${W.top||0}px`,Zv({div:z,inputRef:e,stateManager:i,cb:ee=>{u=ee,t.current=!0,Vu(W,s)}})})}else s&&C()})}return()=>{!n&&e.current&&e.current.removeEventListener("keydown",A),s&&C(),D.destroy(),x.destroy()}}function by({isInputVisible:e,onEnter:t,onEscape:r,onKeyDown:n,excludeDatePicker:i}){let a=F.useContext(Ve),o=F.useRef(!1),s=F.useRef(),{oncompositionstart:u,oncompositionend:l,getShouldIMEBlockAction:c}=go();return F.useEffect(()=>{let d=s.current;if(e&&d)return d.focus(),d.selectionStart=d.selectionEnd=d.value.length,y_({inputRef:s,isAutocompleteVisibleRef:o,obsidianContext:a,excludeDatePicker:i})},[e]),{ref:s,oncompositionstart:u,oncompositionend:l,onKeyDownCapture:d=>{c()||o.current||n(d)||(d.key==="Enter"?t&&t(d):d.key==="Escape"&&r&&r(d))}}}h();var wy=/^[*_]{2}(.+)[*_]{2}$/;function b_(e){return e.replace(wy,"$1")}var Ey=/^[*_]{1}(.+)[*_]{1}$/;function w_(e){return e.replace(Ey,"$1")}var xy=/^`{1}(.+)`{1}$/;function E_(e){return e.replace(xy,"$1")}var ky=/^={2}(.+)={2}$/;function x_(e){return e.replace(ky,"$1")}var Sy=/^~{2}(.+)~{2}$/;function k_(e){return e.replace(Sy,"$1")}var S_=/^(?:>.+?(?:[\r\n]|$))+$/;function __(e){return e.split(` +`:" ";t.app.vault.cachedRead(i.item.file).then(c=>{let d=`${c.slice(0,i.item.block.end)}${l}^${u}${c.slice(i.item.block.end)}`;t.app.vault.modify(i.item.file,d)}).catch(c=>{t.setError(c),console.error(c)}),o+=u}a.push(t.app.fileManager.generateMarkdownLink(i.item.file,t.file.path,o,i.item.alias));let s=!!t.app.vault.getConfig("useMarkdownLinks");return r&&!s?a[a.length-1]=a[a.length-1].slice(0,-2):!r&&!s&&a.push("]] "),a.join("")}}}m();var c_=/\B#([^\s]*)?$/;function dy(e,t){return{id:"tag",match:c_,index:1,search:(r,n)=>{n(r?[{item:`#${r}`,refIndex:-1},...t.search(r,{limit:50})]:e.slice(0,50).map((i,a)=>({item:i,refIndex:a})))},template:r=>r.item,replace:r=>`${r.item.replace(/<\/?em>/g,"")} `}}m();m();var py=me(Ma());m();m();var f_=/\$&/g,p_=/\$(\d)/g,td=class{constructor(t,r,n){this.data=t;this.term=r;this.strategy=n}getReplacementData(t){let r=this.strategy.replace(this.data);if(r==null)return null;let n="";Array.isArray(r)&&(n=r[1],r=r[0]);let i=this.strategy.match(t);if(i==null||i.index==null)return null;let a=r.replace(f_,i[0]).replace(p_,(o,s)=>i[parseInt(s)]);return{start:i.index,end:i.index+i[0].length,beforeCursor:a,afterCursor:n}}replace(t,r){let n=this.getReplacementData(t);if(n!==null)return r=n.afterCursor+r,[[t.slice(0,n.start),n.beforeCursor,t.slice(n.end)].join(""),r]}render(){return this.strategy.renderTemplate(this.data,this.term)}getStrategyId(){return this.strategy.getId()}};var h_=1,nd=class{constructor(t){this.props=t;this.cache={}}destroy(){return this.cache={},this}replace(t){return this.props.replace(t)}execute(t,r){var a;let n=this.matchWithContext(t);if(!n)return!1;let i=n[(a=this.props.index)!=null?a:h_];return this.search(i,o=>{r(o.map(s=>new td(s,i,this)))},n),!0}renderTemplate(t,r){if(this.props.template)return this.props.template(t,r);if(typeof t=="string")return t;throw new Error(`Unexpected render data type: ${typeof t}. Please implement template parameter by yourself`)}getId(){return this.props.id||null}match(t){return typeof this.props.match=="function"?this.props.match(t):t.match(this.props.match)}search(t,r,n){this.props.cache?this.searchWithCach(t,r,n):this.props.search(t,r,n)}matchWithContext(t){let r=this.context(t);return r===!1?null:this.match(r===!0?t:r)}context(t){return this.props.context?this.props.context(t):!0}searchWithCach(t,r,n){this.cache[t]!=null?r(this.cache[t]):this.props.search(t,i=>{this.cache[t]=i,r(i)},n)}};var rd=class extends py.EventEmitter{constructor(t){super();this.handleQueryResult=t=>{this.emit("hit",{searchResults:t})};this.strategies=t.map(r=>new nd(r))}destroy(){return this.strategies.forEach(t=>t.destroy()),this}run(t){for(let r of this.strategies)if(r.execute(t,this.handleQueryResult))return;this.handleQueryResult([])}};m();var hy=me(Ma());m();var m_=typeof window!="undefined"&&!!window.CustomEvent,Ut=(e,t,r)=>{if(m_)return new CustomEvent(t,r);let n=e.createEvent("CustomEvent");return n.initCustomEvent(t,!1,(r==null?void 0:r.cancelable)||!1,(r==null?void 0:r.detail)||void 0),n};var g_=10,v_="auto",y_="dropdown-menu textcomplete-dropdown",my="textcomplete-item",b_=`${my} active`,Ia=class extends hy.EventEmitter{constructor(t,r){super();this.el=t;this.option=r;this.shown=!1;this.items=[];this.activeIndex=null}static create(t){let r=t.parent||window.document.body,i=r.doc.createElement("ul");return i.className=t.className||y_,Object.assign(i.style,{display:"none",position:"absolute",zIndex:"1000"},t.style),r==null||r.appendChild(i),new Ia(i,t)}render(t,r){let n=Ut(this.el.doc,"render",{cancelable:!0});return this.emit("render",n),n.defaultPrevented?this:(this.clear(),t.length===0?this.hide():(this.items=t.slice(0,this.option.maxCount||g_).map((i,a)=>{var o;return new gy(this,a,i,((o=this.option)==null?void 0:o.item)||{})}),this.setStrategyId(t[0]).renderEdge(t,"header").renderItems().renderEdge(t,"footer").show().setOffset(r).activate(0),this.emit("rendered",Ut(this.el.doc,"rendered")),this))}destroy(){var t;return this.clear(),(t=this.el.parentNode)==null||t.removeChild(this.el),this}select(t){let r={searchResult:t.searchResult},n=Ut(this.el.doc,"select",{cancelable:!0,detail:r});return this.emit("select",n),n.defaultPrevented?this:(this.hide(),this.emit("selected",Ut(this.el.doc,"selected",{detail:r})),this)}show(){if(!this.shown){let t=Ut(this.el.doc,"show",{cancelable:!0});if(this.emit("show",t),t.defaultPrevented)return this;this.el.style.display="block",this.shown=!0,this.emit("shown",Ut(this.el.doc,"shown"))}return this}hide(){if(this.shown){let t=Ut(this.el.doc,"hide",{cancelable:!0});if(this.emit("hide",t),t.defaultPrevented)return this;this.el.style.display="none",this.shown=!1,this.clear(),this.emit("hidden",Ut(this.el.doc,"hidden"))}return this}clear(){return this.items.forEach(t=>t.destroy()),this.items=[],this.el.innerHTML="",this.activeIndex=null,this}up(t){return this.shown?this.moveActiveItem("prev",t):this}down(t){return this.shown?this.moveActiveItem("next",t):this}moveActiveItem(t,r){if(this.activeIndex!=null){let n=t==="next"?this.getNextActiveIndex():this.getPrevActiveIndex();n!=null&&(this.activate(n),r.preventDefault())}return this}activate(t){return this.activeIndex!==t&&(this.activeIndex!=null&&this.items[this.activeIndex].deactivate(),this.activeIndex=t,this.items[t].activate()),this}isShown(){return this.shown}getActiveItem(){return this.activeIndex!=null?this.items[this.activeIndex]:null}setOffset(t){let n=this.el.doc.documentElement;if(n){let i=this.el.offsetWidth;if(t.left){let s=this.option.dynamicWidth?n.scrollWidth:n.clientWidth;t.left+i>s&&(t.left=s-i),this.el.style.left=`${t.left}px`}else t.right&&(t.right-i<0&&(t.right=0),this.el.style.right=`${t.right}px`);let a=!1,o=this.option.placement||v_;if(o==="auto"){let s=this.el.clientHeight;a=t.clientTop!=null&&t.clientTop+s>n.clientHeight}o==="top"||a?(this.el.style.bottom=`${n.clientHeight-t.top+t.lineHeight}px`,this.el.style.top="auto"):(this.el.style.top=`${t.top}px`,this.el.style.bottom="auto")}return this}getNextActiveIndex(){if(this.activeIndex==null)throw new Error;return this.activeIndexo.data)):n||"",this.el.appendChild(a),this}},gy=class{constructor(t,r,n,i){this.dropdown=t;this.index=r;this.searchResult=n;this.props=i;this.active=!1;this.onClick=t=>{t.preventDefault(),this.dropdown.select(this)};this.className=this.props.className||my,this.activeClassName=this.props.activeClassName||b_;let a=t.el.doc,o=a.createElement("li");o.className=this.active?this.activeClassName:this.className;let s=a.createElement("span");s.tabIndex=-1,s.innerHTML=this.searchResult.render(),o.appendChild(s),o.addEventListener("mousedown",this.onClick),o.addEventListener("touchstart",this.onClick),this.el=o}destroy(){var r;let t=this.el;return(r=t.parentNode)==null||r.removeChild(t),t.removeEventListener("mousedown",this.onClick,!1),t.removeEventListener("touchstart",this.onClick,!1),this}activate(){return this.active||(this.active=!0,this.el.className=this.activeClassName,this.dropdown.el.scrollTop=this.el.offsetTop),this}deactivate(){return this.active&&(this.active=!1,this.el.className=this.className),this}};m();var vy=me(Ma());var id=class extends vy.EventEmitter{destroy(){return this}applySearchResult(t){throw new Error("Not implemented.")}getCursorOffset(){throw new Error("Not implemented.")}getBeforeCursor(){throw new Error("Not implemented.")}emitMoveEvent(t){let r=Ut(activeDocument,"move",{cancelable:!0,detail:{code:t}});return this.emit("move",r),r}emitEnterEvent(){let t=Ut(activeDocument,"enter",{cancelable:!0});return this.emit("enter",t),t}emitChangeEvent(){let t=Ut(activeDocument,"change",{detail:{beforeCursor:this.getBeforeCursor()}});return this.emit("change",t),t}emitEscEvent(){let t=Ut(activeDocument,"esc",{cancelable:!0});return this.emit("esc",t),t}getCode(t){return t.keyCode===9||t.keyCode===13?"ENTER":t.keyCode===27?"ESC":t.keyCode===38?"UP":t.keyCode===40||t.keyCode===78&&t.ctrlKey?"DOWN":t.keyCode===80&&t.ctrlKey?"UP":"OTHER"}};m();var yy=me(Ma());var w_=["show","shown","render","rendered","selected","hidden","hide"],ad=class extends yy.EventEmitter{constructor(t,r,n){super();this.editor=t;this.isQueryInFlight=!1;this.nextPendingQuery=null;this.handleHit=({searchResults:t})=>{t.length?this.dropdown.render(t,this.editor.getCursorOffset()):this.dropdown.hide(),this.isQueryInFlight=!1,this.nextPendingQuery!==null&&this.trigger(this.nextPendingQuery)};this.handleMove=t=>{t.detail.code==="UP"?this.dropdown.up(t):this.dropdown.down(t)};this.handleEnter=t=>{let r=this.dropdown.getActiveItem();r?(this.dropdown.select(r),t.preventDefault()):this.dropdown.hide()};this.handleEsc=t=>{this.dropdown.isShown()&&(this.dropdown.hide(),t.preventDefault())};this.handleChange=t=>{t.detail.beforeCursor!=null?this.trigger(t.detail.beforeCursor):this.dropdown.hide()};this.handleSelect=t=>{this.emit("select",t),t.defaultPrevented||this.editor.applySearchResult(t.detail.searchResult)};this.handleResize=()=>{this.dropdown.isShown()&&this.dropdown.setOffset(this.editor.getCursorOffset())};this.completer=new rd(r),this.dropdown=Ia.create((n==null?void 0:n.dropdown)||{}),this.startListening()}destroy(t=!0){return this.completer.destroy(),this.dropdown.destroy(),t&&this.editor.destroy(),this.stopListening(),this}isShown(){return this.dropdown.isShown()}hide(){return this.dropdown.hide(),this}trigger(t){return this.isQueryInFlight?this.nextPendingQuery=t:(this.isQueryInFlight=!0,this.nextPendingQuery=null,this.completer.run(t)),this}startListening(){var t;this.editor.on("move",this.handleMove).on("enter",this.handleEnter).on("esc",this.handleEsc).on("change",this.handleChange),this.dropdown.on("select",this.handleSelect);for(let r of w_)this.dropdown.on(r,n=>this.emit(r,n));this.completer.on("hit",this.handleHit),(t=Ze(this.dropdown.el))==null||t.addEventListener("resize",this.handleResize)}stopListening(){var t;(t=Ze(this.dropdown.el))==null||t.removeEventListener("resize",this.handleResize),this.completer.removeAllListeners(),this.dropdown.removeAllListeners(),this.editor.removeListener("move",this.handleMove).removeListener("enter",this.handleEnter).removeListener("esc",this.handleEsc).removeListener("change",this.handleChange)}};m();m();m();m();var by=e=>{let t=e.getBoundingClientRect(),r=e.doc;if(r==null)throw new Error("Given element does not belong to document");let{defaultView:n,documentElement:i}=r;if(n==null)throw new Error("Given element does not belong to window");let a={top:t.top+n.pageYOffset,left:t.left+n.pageXOffset};return i&&(a.top-=i.clientTop,a.left-=i.clientLeft),a};m();var E_="0".charCodeAt(0),x_="9".charCodeAt(0),wy=e=>E_<=e&&e<=x_,Ey=e=>{let t=getComputedStyle(e),r=t.lineHeight;if(wy(r.charCodeAt(0))){let n=parseFloat(r);return wy(r.charCodeAt(r.length-1))?n*parseFloat(t.fontSize):n}return k_(e.doc,e.nodeName,t)},k_=(e,t,r)=>{let n=e.body;if(!n)return 0;let i=e.createElement(t);i.innerHTML=" ",Object.assign(i.style,{fontSize:r.fontSize,fontFamily:r.fontFamily,padding:"0"}),n.appendChild(i),i.instanceOf(HTMLTextAreaElement)&&(i.rows=1);let a=i.offsetHeight;return n.removeChild(i),a};m();m();function xy(e,t,r){let n=e.doc,i=e.value,a=t+(r||""),o=n.activeElement,s=0,u=0;for(;s=0&&a.length-u-1>=0&&i[i.length-u-1]===a[a.length-u-1];)u++;s=Math.min(s,Math.min(i.length,a.length)-u),e.setSelectionRange(s,i.length-u);let l=a.substring(s,a.length-u);if(e.focus(),!n.execCommand("insertText",!1,l)){e.value=a;let c=n.createEvent("Event");c.initEvent("input",!0,!0),e.dispatchEvent(c)}return e.setSelectionRange(t.length,t.length),o.focus(),e}m();var S_=["direction","boxSizing","width","height","overflowX","overflowY","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","borderStyle","paddingTop","paddingRight","paddingBottom","paddingLeft","fontStyle","fontVariant","fontWeight","fontStretch","fontSize","fontSizeAdjust","lineHeight","fontFamily","textAlign","textTransform","textIndent","textDecoration","letterSpacing","wordSpacing","tabSize","MozTabSize"];function ky(e,t){let r=e.doc,n=e.win,i=r.createElement("div");i.id="input-textarea-caret-position-mirror-div",r.body.appendChild(i);let a=i.style,o=n.getComputedStyle(e);a.whiteSpace="pre-wrap",a.position="absolute",S_.forEach(l=>{a[l]=o[l]}),a.overflow="hidden",i.textContent=e.value.substring(0,t);let s=r.createElement("span");s.textContent=e.value.substring(t)||".",i.appendChild(s);let u={top:s.offsetTop+parseInt(o.borderTopWidth),left:s.offsetLeft+parseInt(o.borderLeftWidth),height:parseInt(o.lineHeight)};return r.body.removeChild(i),u}var Ds=class extends id{constructor(t){super();this.el=t;this.onInput=()=>{this.emitChangeEvent()};this.onKeydown=t=>{let r=this.getCode(t),n;r==="UP"||r==="DOWN"?n=this.emitMoveEvent(r):r==="ENTER"?n=this.emitEnterEvent():r==="ESC"&&(n=this.emitEscEvent()),n&&n.defaultPrevented&&t.preventDefault()};this.startListening()}destroy(){return super.destroy(),this.stopListening(),this}applySearchResult(t){let r=this.getBeforeCursor();if(r!=null){let n=t.replace(r,this.getAfterCursor());this.el.focus(),Array.isArray(n)&&(xy(this.el,n[0],n[1]),this.el&&this.el.dispatchEvent(Ut(this.el.doc,"input")))}}getCursorOffset(){let t=by(this.el),r=this.getElScroll(),n=this.getCursorPosition(),i=Ey(this.el),a=t.top-r.top+n.top+i,o=t.left-r.left+n.left,s=this.el.getBoundingClientRect().top,u=this.el.doc;if(this.el.dir!=="rtl")return{top:a,left:o,lineHeight:i,clientTop:s};{let l=u.documentElement?u.documentElement.clientWidth-o:0;return{top:a,right:l,lineHeight:i,clientTop:s}}}getBeforeCursor(){return this.el.selectionStart!==this.el.selectionEnd?null:this.el.value.slice(0,this.el.selectionEnd)}getAfterCursor(){return this.el.value.slice(this.el.selectionEnd)}getElScroll(){return{top:this.el.scrollTop,left:this.el.scrollLeft}}getCursorPosition(){return ky(this.el,this.el.selectionEnd)}startListening(){this.el.addEventListener("input",this.onInput),this.el.addEventListener("keydown",this.onKeydown)}stopListening(){this.el.removeEventListener("input",this.onInput),this.el.removeEventListener("keydown",this.onKeydown)}};function __({inputRef:e,isAutocompleteVisibleRef:t,obsidianContext:r,excludeDatePicker:n}){let{stateManager:i,filePath:a,view:o}=r,s=null,u=null,l=i.getSetting("date-trigger"),c=new RegExp(`(?:^|\\s)${Ln(l)}$`),d=Object.keys(i.app.metadataCache.getTags()).sort(),f=new mn(d),p=i.app.metadataCache.getLinkSuggestions().filter(H=>!!H.file),g=new mn(p,{keys:["file.basename","alias"]}),y=o.app.vault.getConfig("autoPairBrackets"),b=[dy(d,f),Zu(a,i,y,!0),Zu(a,i,y,!1),Xu(a,i,y,!0),Xu(a,i,y,!1),Qu(o.getWindow(),p,g,a,i,y,!0),Qu(o.getWindow(),p,g,a,i,y,!1)];n||b.push(oy(i));let k=new Ds(e.current),T=new ad(k,b,{dropdown:{parent:ur(e.current),maxCount:96,className:`${B("autocomplete")} ${B("ignore-click-outside")}`,rotate:!0,item:{className:`${B("autocomplete-item")} ${B("ignore-click-outside")}`,activeClassName:`${B("autocomplete-item-active")} ${B("ignore-click-outside")}`}}}),C=()=>{T.isShown()||(t.current=!1);let H=s.win;u.destroy(),s.remove(),H.setTimeout(()=>{s=null})};T.on("show",()=>{t.current=!0}),T.on("hidden",()=>{t.current=!1});let A;if(!n){A=D=>{if(T.isShown&&["#","^"].contains(D.key)){let z=T.dropdown.getActiveItem(),U=z==null?void 0:z.searchResult;if(U&&U.strategy.props.id.startsWith("link")){D.preventDefault(),k.applySearchResult(U),Lt(e.current,D.key==="^"?"#^":"#");return}}if(!s)return;if(D.key==="Enter"){D.preventDefault();let z=u.selectedDates;return z.length?_s(z[0],e,i):_s(new Date,e,i),C()}if(D.key==="Escape")return D.preventDefault(),C();let K=(0,Sy.moment)(u.selectedDates[0]||new Date);if(D.key==="ArrowRight"){D.preventDefault(),K.weekday()===6?u.setDate(ly(K).toDate(),!1):u.setDate(K.add(1,"day").toDate(),!1);return}if(D.key==="ArrowLeft"){D.preventDefault(),K.weekday()===0?u.setDate(sy(K).toDate(),!1):u.setDate(K.subtract(1,"day").toDate(),!1);return}if(D.key==="ArrowUp"){D.preventDefault(),u.setDate(K.subtract(1,"week").toDate(),!1);return}if(D.key==="ArrowDown"){D.preventDefault(),u.setDate(K.add(1,"week").toDate(),!1);return}},e.current.addEventListener("keydown",A);let H=e.current.doc;k.on("change",D=>{let K=D.detail.beforeCursor;if(K&&c.test(K)){let z=k.getCursorOffset();s?(s.style.left=`${z.left||0}px`,s.style.top=`${z.top||0}px`,Gu(z,s)):s=H.body.createDiv({cls:`${B("date-picker")} ${B("ignore-click-outside")}`},U=>{U.style.left=`${z.left||0}px`,U.style.top=`${z.top||0}px`,ay({div:U,inputRef:e,stateManager:i,cb:Z=>{u=Z,t.current=!0,Gu(z,s)}})})}else s&&C()})}return()=>{!n&&e.current&&e.current.removeEventListener("keydown",A),s&&C(),T.destroy(),k.destroy()}}function _y({isInputVisible:e,onEnter:t,onEscape:r,onKeyDown:n,excludeDatePicker:i}){let a=L.useContext(We),o=L.useRef(!1),s=L.useRef(),{oncompositionstart:u,oncompositionend:l,getShouldIMEBlockAction:c}=yo();return L.useEffect(()=>{let d=s.current;if(e&&d)return d.focus(),d.selectionStart=d.selectionEnd=d.value.length,__({inputRef:s,isAutocompleteVisibleRef:o,obsidianContext:a,excludeDatePicker:i})},[e]),{ref:s,oncompositionstart:u,oncompositionend:l,onKeyDownCapture:d=>{c()||o.current||n(d)||(d.key==="Enter"?t&&t(d):d.key==="Escape"&&r&&r(d))}}}m();var Cy=/^[*_]{2}(.+)[*_]{2}$/;function C_(e){return e.replace(Cy,"$1")}var Dy=/^[*_]{1}(.+)[*_]{1}$/;function D_(e){return e.replace(Dy,"$1")}var Ty=/^`{1}(.+)`{1}$/;function T_(e){return e.replace(Ty,"$1")}var My=/^={2}(.+)={2}$/;function M_(e){return e.replace(My,"$1")}var Iy=/^~{2}(.+)~{2}$/;function I_(e){return e.replace(Iy,"$1")}var A_=/^(?:>.+?(?:[\r\n]|$))+$/;function L_(e){return e.split(` `).map(r=>r[0]===">"?r:`> ${r}`).join(` -`)}function C_(e){return e.split(` -`).map(r=>r[0]!==">"?r:r.replace(/^>+\s*/,"")).join(` -`)}var Ma=/^(?:\s*\d+[.)]\s+.*?(?:[\r\n]|$))+$/,ed=/^(?:\s*\d+[.)]\s+\[\s+\]\s+.*?(?:[\r\n]|$))+$/,td=/^(?:\s*\d+[.)]\s+\[[^\]\s]+\]\s+.*?(?:[\r\n]|$))+$/;function T_(e){return e.match(/^\s*/)[0].length}function D_(e){return parseInt(e.match(/^\s*(\d+)/)[1],10)}function M_(e){let t=[0],r=0;return e.split(` -`).map(n=>{let i=T_(n);if(i>r?t.push(0):iMa.test(t)?t.replace(/^(\s*)\d+[.)]\s+/,"$1"):t).join(` -`)}var Ia=/^(?:\s*[-*+]\s+.*?(?:[\r\n]|$))+$/,nd=/^(?:\s*[-*+]\s+\[\s+\]\s+.*?(?:[\r\n]|$))+$/,rd=/^(?:\s*[-*+]\s+\[[^\]\s]+\]\s+.*?(?:[\r\n]|$))+$/;function _y(e){return e.split(` -`).map(r=>Ia.test(r)?r:r.replace(/^(\s*)/,"$1- ")).join(` -`)}function A_(e){return e.split(` -`).map(t=>nd.test(t)||rd.test(t)?t:t.replace(/^(\s*[-*+]\s+)/,"$1[ ] ")).join(` -`)}function L_(e){return e.split(` -`).map(t=>ed.test(t)||td.test(t)?t:t.replace(/^(\s*\d+[.)]\s+)/,"$1[ ] ")).join(` `)}function P_(e){return e.split(` -`).map(t=>nd.test(t)?t:t.replace(/^(\s*[-*+]\s+)\[[^\]]\]/,"$1[ ]")).join(` -`)}function F_(e){return e.split(` -`).map(t=>ed.test(t)?t:t.replace(/^(\s*\d+[.)]\s+)\[[^\]]{1}\]/,"$1[ ]")).join(` -`)}function N_(e){return e.split(` -`).map(t=>rd.test(t)?t:t.replace(/^(\s*[-*+]\s+)\[\s\]/,"$1[x]")).join(` -`)}function O_(e){return e.split(` -`).map(t=>td.test(t)?t:t.replace(/^(\s*\d+[.)]\s+)\[\s\]/,"$1[x]")).join(` +`).map(r=>r[0]!==">"?r:r.replace(/^>+\s*/,"")).join(` +`)}var Aa=/^(?:\s*\d+[.)]\s+.*?(?:[\r\n]|$))+$/,od=/^(?:\s*\d+[.)]\s+\[\s+\]\s+.*?(?:[\r\n]|$))+$/,sd=/^(?:\s*\d+[.)]\s+\[[^\]\s]+\]\s+.*?(?:[\r\n]|$))+$/;function F_(e){return e.match(/^\s*/)[0].length}function N_(e){return parseInt(e.match(/^\s*(\d+)/)[1],10)}function O_(e){let t=[0],r=0;return e.split(` +`).map(n=>{let i=F_(n);if(i>r?t.push(0):iIa.test(r)?r.replace(/^(\s*)[-+*]\s+/,"$1"):r).join(` -`)}var Cy={"editor:toggle-bold":e=>{Mi(e,wy,b_,"**")},"editor:toggle-code":e=>{Mi(e,xy,E_,"`")},"editor:toggle-italics":e=>{Mi(e,Ey,w_,"*")},"editor:toggle-highlight":e=>{Mi(e,ky,x_,"==")},"editor:toggle-strikethrough":e=>{Mi(e,Sy,k_,"~~")},"editor:toggle-blockquote":e=>{ps(e,S_,__,C_)},"editor:toggle-bullet-list":e=>{ps(e,Ia,_y,R_)},"editor:toggle-numbered-list":e=>{ps(e,Ma,M_,I_)},"editor:toggle-checklist-status":e=>{let t=On(e),r=t.selection.end===t.selection.start,n=Di({text:t.text,selection:t.selection}),i=Lt(e,n),a=i.selectedText,o=Ia.test(a),s=Ma.test(a);!o&&!s?a=_y(a):o?nd.test(a)?a=N_(a):rd.test(a)?a=P_(a):a=A_(a):ed.test(a)?a=O_(a):td.test(a)?a=F_(a):a=L_(a);let u=At(e,a);if(r){let l=a.length-i.selectedText.length;Lt(e,{start:t.selection.start+l,end:t.selection.end+l})}else Lt(e,{start:i.selection.start,end:u.selection.end})}},id={"(":e=>cn(e,"(",")",!1),"[":e=>cn(e,"[","]",!1,!0),"{":e=>cn(e,"{","}",!1),"'":e=>cn(e,"'","'",!1),'"':e=>cn(e,'"','"',!1)},ad={"*":e=>cn(e,"*","*",!1),_:e=>cn(e,"_","_",!1),"`":e=>cn(e,"`","`",!1),"=":e=>cn(e,"=","=",!0),"~":e=>cn(e,"~","~",!0),$:e=>cn(e,"$","$",!0),"%":e=>cn(e,"%","%",!0)},H_={"(":")","[":"]","{":"}","'":"'",'"':'"',"*":"*",_:"_","`":"`","=":"=","~":"~",$:"$","%":"%"};function Ty(e,t){let r=On(e);if(r.selection.end!==r.selection.start||r.selection.end===r.text.length)return!1;let n=r.text[r.selection.end-1],i=r.text[r.selection.end];if(t[n]&&i===H_[n])return Lt(e,{start:r.selection.end,end:r.selection.end+1}),At(e,""),!0}function Dy(e){return Ty(e,id)}function My(e){return Ty(e,ad)}function B_(e,t,r){let n=t?" ":" ".repeat(r);return e.split(` +`).map(t=>Aa.test(t)?t.replace(/^(\s*)\d+[.)]\s+/,"$1"):t).join(` +`)}var La=/^(?:\s*[-*+]\s+.*?(?:[\r\n]|$))+$/,ld=/^(?:\s*[-*+]\s+\[\s+\]\s+.*?(?:[\r\n]|$))+$/,cd=/^(?:\s*[-*+]\s+\[[^\]\s]+\]\s+.*?(?:[\r\n]|$))+$/;function Ay(e){return e.split(` +`).map(r=>La.test(r)?r:r.replace(/^(\s*)/,"$1- ")).join(` +`)}function H_(e){return e.split(` +`).map(t=>ld.test(t)||cd.test(t)?t:t.replace(/^(\s*[-*+]\s+)/,"$1[ ] ")).join(` +`)}function B_(e){return e.split(` +`).map(t=>od.test(t)||sd.test(t)?t:t.replace(/^(\s*\d+[.)]\s+)/,"$1[ ] ")).join(` +`)}function K_(e){return e.split(` +`).map(t=>ld.test(t)?t:t.replace(/^(\s*[-*+]\s+)\[[^\]]\]/,"$1[ ]")).join(` +`)}function $_(e){return e.split(` +`).map(t=>od.test(t)?t:t.replace(/^(\s*\d+[.)]\s+)\[[^\]]{1}\]/,"$1[ ]")).join(` +`)}function U_(e){return e.split(` +`).map(t=>cd.test(t)?t:t.replace(/^(\s*[-*+]\s+)\[\s\]/,"$1[x]")).join(` +`)}function V_(e){return e.split(` +`).map(t=>sd.test(t)?t:t.replace(/^(\s*\d+[.)]\s+)\[\s\]/,"$1[x]")).join(` +`)}function W_(e){return e.split(` +`).map(r=>La.test(r)?r.replace(/^(\s*)[-+*]\s+/,"$1"):r).join(` +`)}var Ly={"editor:toggle-bold":e=>{Ai(e,Cy,C_,"**")},"editor:toggle-code":e=>{Ai(e,Ty,T_,"`")},"editor:toggle-italics":e=>{Ai(e,Dy,D_,"*")},"editor:toggle-highlight":e=>{Ai(e,My,M_,"==")},"editor:toggle-strikethrough":e=>{Ai(e,Iy,I_,"~~")},"editor:toggle-blockquote":e=>{ys(e,A_,L_,P_)},"editor:toggle-bullet-list":e=>{ys(e,La,Ay,W_)},"editor:toggle-numbered-list":e=>{ys(e,Aa,O_,R_)},"editor:toggle-checklist-status":e=>{let t=On(e),r=t.selection.end===t.selection.start,n=Ii({text:t.text,selection:t.selection}),i=Pt(e,n),a=i.selectedText,o=La.test(a),s=Aa.test(a);!o&&!s?a=Ay(a):o?ld.test(a)?a=U_(a):cd.test(a)?a=K_(a):a=H_(a):od.test(a)?a=V_(a):sd.test(a)?a=$_(a):a=B_(a);let u=Lt(e,a);if(r){let l=a.length-i.selectedText.length;Pt(e,{start:t.selection.start+l,end:t.selection.end+l})}else Pt(e,{start:i.selection.start,end:u.selection.end})}},ud={"(":e=>cn(e,"(",")",!1),"[":e=>cn(e,"[","]",!1,!0),"{":e=>cn(e,"{","}",!1),"'":e=>cn(e,"'","'",!1),'"':e=>cn(e,'"','"',!1)},dd={"*":e=>cn(e,"*","*",!1),_:e=>cn(e,"_","_",!1),"`":e=>cn(e,"`","`",!1),"=":e=>cn(e,"=","=",!0),"~":e=>cn(e,"~","~",!0),$:e=>cn(e,"$","$",!0),"%":e=>cn(e,"%","%",!0)},z_={"(":")","[":"]","{":"}","'":"'",'"':'"',"*":"*",_:"_","`":"`","=":"=","~":"~",$:"$","%":"%"};function Py(e,t){let r=On(e);if(r.selection.end!==r.selection.start||r.selection.end===r.text.length)return!1;let n=r.text[r.selection.end-1],i=r.text[r.selection.end];if(t[n]&&i===z_[n])return Pt(e,{start:r.selection.end,end:r.selection.end+1}),Lt(e,""),!0}function Fy(e){return Py(e,ud)}function Ny(e){return Py(e,dd)}function j_(e,t,r){let n=t?" ":" ".repeat(r);return e.split(` `).map(i=>n+i).join(` -`)}function K_(e,t,r){let n=t?"\\t":" ".repeat(r),i=new RegExp(`^${n}`);return e.split(` +`)}function q_(e,t,r){let n=t?"\\t":" ".repeat(r),i=new RegExp(`^${n}`);return e.split(` `).map(a=>i.test(a)?a.replace(i,""):a).join(` -`)}function Iy(e,t,r,n){let i=On(e);if(t){let l=Di(i),c=Lt(e,l);if(At(e,K_(c.selectedText,r,n)),i.selection.start===i.selection.end){let d=r?1:n;Lt(e,{start:i.selection.start-d,end:i.selection.end-d})}return!0}let a=Di(i),o=Lt(e,a),u=B_(o.selectedText,r,n).replace(/^(\s*)(\d+)([.)]\s)/,(l,c,d,f)=>`${c}1${f}`);return At(e,u),!0}function Ay(e){let t=On(e);if(t.selection.start!==t.selection.end)return!1;let r=Di(t),n=e.value.slice(r.start,t.selection.end),i=e.value.slice(r.start,r.end);if(/^(\s*[-*+]\s+(?:\[[^\]]\]\s*)?)$/.test(i))return Lt(e,{start:r.start-1,end:r.end}),At(e,` -`),!0;if(/^(\s*\d[.)]\s+(?:\[[^\]]\]\s*)?)$/.test(i))return Lt(e,{start:r.start-1,end:r.end}),At(e,` -`),!0;if(Ia.test(n)){let a=n.match(/^(\s*[-*+]\s+(?:\[[^\]]\]\s*)?)/)[1];return _a(e,` -${a.replace(/^(\s*[-*+]\s+)\[[^\]]\]/,"$1[ ]")}`),!0}if(Ma.test(n)){let s=n.match(/^(\s*\d+[.)]\s+(?:\[[^\]]\]\s*)?)/)[1].replace(/^(\s*\d+[.)]\s+)\[[^\]]\]/,"$1[ ]").replace(/^(\s*)(\d+)/,(u,l,c)=>`${l}${parseInt(c)+1}`);return _a(e,` -${s}`),!0}return!1}function Xn(e,t){return od.Platform.isMobile?e.key==="Enter"&&!0:t.getSetting("new-line-trigger")==="enter"?e.key==="Enter"&&!(e.shiftKey||e.metaKey||e.ctrlKey):e.key==="Enter"&&e.shiftKey}var Er=F.forwardRef(function({onEnter:t,onEscape:r,onSubmit:n,...i},a){let{view:o,stateManager:s}=F.useContext(Ve),u=app.vault.getConfig("autoPairMarkdown"),l=app.vault.getConfig("autoPairBrackets"),c=app.vault.getConfig("useTab"),d=app.vault.getConfig("tabSize"),f=!!app.vault.getConfig("useMarkdownLinks"),p=by({isInputVisible:!0,onEnter:t,onEscape:r,onKeyDown:m=>{if(m.key==="Backspace"){let y=Dy(m.target);return y||My(m.target)}if(Xn(m,s)){let y=Ay(m.target);if(y)return m.preventDefault(),y}if(m.key==="Tab")return m.preventDefault(),Iy(m.target,m.shiftKey,c,d);if(u){let y=ad[m.key];if(y&&y(m.target))return m.preventDefault(),!0}if(l){if(f&&m.key==="[")return!1;let y=id[m.key];if(y&&y(m.target))return m.preventDefault(),!0}return!1}});return F.useEffect(()=>{let m=y=>{let b=Cy[y];b&&b(p.ref.current)};return o.emitter.on("hotkey",m),()=>{o.emitter.off("hotkey",m)}},[o]),g(S,null,g("div",{"data-replicated-value":i.value,className:$("grow-wrap")},g("textarea",{"data-ignore-drag":!0,rows:1,className:$("item-input"),...i,...p,ref:m=>{p.ref.current=m,a&&typeof a=="function"?a(m):a&&(a.current=m)}})),od.Platform.isMobile&&g("button",{onPointerDown:n,className:$("item-submit-button")},B("Submit")))});h();var cd=ge(Ly());h();var xr=ge(require("obsidian"));var $_=["bmp","png","jpg","jpeg","gif","svg"],U_=["mp3","wav","m4a","3gp","flac","ogg","oga"],W_=["mp4","webm","ogv"],V_=/\u00A0/g,z_=/[!"#$%&()*+,.:;<=>?@^`{|}~/[\]\\]/g;function Py(e){return e.replace(z_," ").replace(/\s+/g," ").trim()}function Ur(e){let r=e.replace(V_," ").normalize("NFC").split(/\|(.*)/),n=r[0].split(/#(.*)/);return{root:n[0],subpath:n[1]?"#"+n[1]:"",alias:r[1]||""}}function j_(e,t){if(!e||!t)return null;let r=t.split("#").filter(l=>!!l);if(!r||r.length===0)return null;if(r.length===1){let l=r[0];if(l.startsWith("^")){let c=l.slice(1).toLowerCase(),d=e.blocks;if(d&&d[c]){let f=d[c];return{type:"block",block:f,start:f.position.start.offset,end:f.position.end.offset,startLine:f.position.start.line,endLine:f.position.end.line}}else return null}}let n=e.headings;if(!n||n.length===0)return null;let i=0,a=0,o=0,s=null,u=null;for(;ao&&Py(l.heading).toLowerCase()===Py(r[i]).toLowerCase()&&(i++,o=l.level,i===r.length&&(s=l))}return s?{type:"heading",current:s,next:u,start:s.position.start.offset,end:u?u.position.start.offset:null,startLine:s.position.start.line,endLine:u?u.position.end.line:null}:null}function q_(e){e.querySelectorAll(".task-list-item-checkbox").forEach((r,n)=>{r.dataset.checkboxIndex=n.toString()})}function Y_(e,t){e.querySelectorAll(".internal-link").forEach(n=>{let i=Ur(n.getAttr("href"));t.app.metadataCache.getFirstLinkpathDest(i.root,t.file.path)||n.addClass("is-unresolved")})}function J_(e,t,r){e.empty(),e.createEl("img",{attr:{src:r.app.vault.getResourcePath(t)}},n=>{e.hasAttribute("width")&&n.setAttribute("width",e.getAttribute("width")),e.hasAttribute("height")&&n.setAttribute("height",e.getAttribute("height")),e.hasAttribute("alt")&&n.setAttribute("alt",e.getAttribute("alt"))}),e.addClasses(["image-embed","is-loaded"])}function Fy(e,t,r){e.empty(),e.createEl("audio",{attr:{controls:"",src:r.app.vault.getResourcePath(t)}}),e.addClasses(["media-embed","is-loaded"])}function G_(e,t,r){e.empty(),e.createEl("video",{attr:{controls:"",src:r.app.vault.getResourcePath(t)}},n=>{let i=()=>{n.removeEventListener("loadedmetadata",i),n.videoWidth===0&&n.videoHeight===0&&(e.empty(),Fy(e,t,r))};n.addEventListener("loadedmetadata",i)}),e.addClasses(["media-embed","is-loaded"])}async function Ny(e,t,r){let n=r.app.metadataCache.getFileCache(e);if(!n)return null;let i=await r.app.vault.cachedRead(e);if(!t.subpath)return{markdown:i,boundary:null};let a=j_(n,t.subpath);if(a)return{markdown:i.substring(a.start,a.end===null?void 0:a.end),boundary:a};if(t.subpath)return{markdown:`${B("Unable to find")} ${t.root}${t.subpath}`,boundary:null}}function Oy(e,t,r,n){r.getWindow().setTimeout(async()=>{if(!r.plugin.windowRegistry.has(r.getWindow()))return;if(r.plugin.windowRegistry.get(r.getWindow()).viewMap.has(r.id)){let{markdown:a}=await Ny(e,t,r);if(!a)return;a.startsWith(B("Unable to find"))?n>0&&Oy(e,t,r,--n):r.plugin.stateManagers.forEach(o=>{o.onFileMetadataChange()})}},2e3)}async function Q_(e,t,r,n,i){var u;let{markdown:a,boundary:o}=await Ny(t,r,n);if(!a)return;e.empty();let s=e.createDiv();if(s.addClasses(["markdown-preview-view",$("markdown-preview-view")]),s.createDiv($("embed-link-wrapper"),l=>{l.createEl("a",{href:e.getAttr("src")||t.basename,cls:`internal-link ${$("embed-link")}`},c=>{(0,xr.setIcon)(c,"link"),c.setAttr("aria-label",t.basename)})}),await xr.MarkdownRenderer.renderMarkdown(a,s.createDiv(),t.path,n),e.addClass("is-loaded"),a.startsWith(B("Unable to find"))&&r.subpath&&r.subpath!=="#")Oy(t,r,n,4);else{let l=e.findAll(".task-list-item-checkbox");(l==null?void 0:l.length)&&((u=app.metadataCache.getFileCache(t).listItems)==null||u.filter(d=>o?d.position.start.line>=o.startLine&&d.position.end.line<=o.endLine:!0).forEach((d,f)=>{l[f]&&(l[f].dataset.oStart=d.position.start.offset.toString(),l[f].dataset.oEnd=d.position.end.offset.toString(),l[f].dataset.src=t.path)}))}i>0&&await Ry(s,n,--i)}function X_(e,t){e.addClass("is-loaded"),e.empty(),e.createEl("a",{cls:"file-link",href:e.getAttribute("src"),text:t.name},r=>{r.setAttribute("aria-label",B("Open in default app")),r.createSpan({},n=>(0,xr.setIcon)(n,"open-elsewhere-glyph"))})}function Ry(e,t,r){return Promise.all(e.findAll(".internal-embed").map(async n=>{let i=n.getAttribute("src"),a=Ur(i),o=typeof i=="string"&&t.app.metadataCache.getFirstLinkpathDest(a.root,t.file.path);if(o instanceof xr.TFile)return $_.contains(o.extension)?J_(n,o,t):U_.contains(o.extension)?Fy(n,o,t):W_.contains(o.extension)?G_(n,o,t):o.extension==="md"?await Q_(n,o,a,t,r):X_(n,o)}))}async function Aa(e,t){let r=e.getWindow().document.body.createDiv();r.detach();try{await xr.MarkdownRenderer.renderMarkdown(t,r,e.file.path,e),q_(r),Y_(r,e),await Ry(r,e,5)}catch(n){console.error(n)}return r}function ud(e,t){!t||!e||(e&&!e.firstChild?e.appendChild(t):e.firstChild&&e.firstChild!==t&&e.replaceChild(t,e.firstChild))}var La=F.memo(function({className:t,markdownString:r,searchQuery:n,...i}){let{stateManager:a}=F.useContext(Ve),o=F.useRef(),s=F.useRef(),u=F.useRef();return F.useEffect(()=>{Aa(a.getAView(),r).then(l=>{s.current=l,u.current=new cd.default(l),o.current&&ud(o.current,l)}).catch(l=>{a.setError(l),console.error(l)})},[a,r]),F.useEffect(()=>{var l,c;(l=u.current)==null||l.unmark(),n&&n.trim()&&((c=u.current)==null||c.mark(n))},[n]),g("div",{ref:l=>{o.current=l,ud(l,s.current)},className:mt(["markdown-preview-view",$("markdown-preview-view"),t]),...i})}),Hy=F.memo(function({dom:t,className:r,searchQuery:n,...i}){let{stateManager:a}=F.useContext(Ve),o=F.useMemo(()=>t.cloneNode(!0),[t,a]),s=F.useMemo(()=>new cd.default(o),[o]);return F.useEffect(()=>{s.unmark(),n&&n.trim()&&s.mark(n)},[s,n]),g("div",{ref:u=>{ud(u,o)},className:mt(["markdown-preview-view",$("markdown-preview-view"),r]),...i})});h();var Pa=ge(require("obsidian"));function Z_(e,t){if(t)return t.from((0,Pa.moment)());let r=(0,Pa.moment)().startOf("day");if(r.isSame(e,"day"))return B("today");let n=e.diff(r,"day");return n===-1?B("yesterday"):n===1?B("tomorrow"):e.from(r)}function By({item:e,stateManager:t}){if(!t.useSetting("show-relative-date")||!e.data.metadata.date)return null;let n=Z_(e.data.metadata.date,e.data.metadata.time);return g("span",{className:$("item-metadata-date-relative")},n)}function Ky({item:e,stateManager:t,filePath:r,onEditDate:n,onEditTime:i}){let a=t.useSetting("hide-date-display"),o=t.useSetting("date-format"),s=t.useSetting("time-format"),u=t.useSetting("date-display-format"),l=t.useSetting("link-date-to-daily-note");if(a||!e.data.metadata.date)return null;let c=e.data.metadata.date.format(o);if(!c)return null;let d=!!e.data.metadata.time,f=e.data.metadata.date.format(u),p=d?e.data.metadata.time.format(s):null,m=c?(0,Pa.getLinkpath)(c):null,y=c?t.app.metadataCache.getFirstLinkpathDest(m,r):null,b=m&&l?g("a",{href:m,"data-href":m,className:`internal-link ${y?"":"is-unresolved"}`,target:"blank",rel:"noopener"},f):f,x={};return l||(x["aria-label"]=B("Change date"),x.onClick=n),g("span",{"aria-label":"hello",className:$("item-metadata-date-wrapper")},g("span",{...x,className:`${$("item-metadata-date")} ${l?"":"is-button"}`},b)," ",d&&g("span",{onClick:i,className:`${$("item-metadata-time")} is-button`,"aria-label":B("Change time")},p))}function eC(e){let{stateManager:t,boardModifiers:r}=F.useContext(Ve),n=Vn();return F.useMemo(()=>({onEditDate:o=>{var s;ns(o.view,t,{x:o.clientX,y:o.clientY},rs({stateManager:t,boardModifiers:r,item:e,hasDate:!0,path:n}),(s=e.data.metadata.date)==null?void 0:s.toDate())},onEditTime:o=>{is(o.view,t,{x:o.clientX,y:o.clientY},as({stateManager:t,boardModifiers:r,item:e,hasTime:!0,path:n}),e.data.metadata.time)}}),[r,n,e,t])}function tC(e){return(e.useSetting("tag-colors")||[]).reduce((r,n)=>(n.tagKey&&(r[n.tagKey]=n),r),{})}function nC(e,t){let r=0;return e.replace(/^(\s*[-+*]\s+?\[)([^\]])(\]\s+)/gm,(n,i,a,o)=>{let s=n;return r===t&&(a===" "?s=`${i}x${o}`:s=`${i} ${o}`),r++,s})}async function rC(e){let t=app.vault.getAbstractFileByPath(e.dataset.src);if(!(t instanceof $y.TFile))return;let r=await app.vault.cachedRead(t),n=parseInt(e.dataset.oStart),i=parseInt(e.dataset.oEnd),o=r.substring(n,i).replace(/^(.+?)\[(.)\](.+)$/,(s,u,l,c)=>l!==" "?(e.parentElement.removeClass("is-checked"),e.parentElement.dataset.task="",`${u}[ ]${c}`):(e.parentElement.addClass("is-checked"),e.parentElement.dataset.task="x",`${u}[x]${c}`));await app.vault.modify(t,`${r.substring(0,n)}${o}${r.substring(i)}`)}var Uy=F.memo(function({item:t,isEditing:r,setIsEditing:n,searchQuery:i}){var A;let[a,o]=F.useState(t.data.titleRaw),{stateManager:s,filePath:u,boardModifiers:l,view:c}=F.useContext(Ve),d=s.useSetting("hide-tags-display"),f=tC(s),p=Vn(),{onEditDate:m,onEditTime:y}=eC(t);F.useEffect(()=>{r&&o(t.data.titleRaw)},[r]);let b=F.useCallback(N=>{if(!Xn(N,s))return N.preventDefault(),s.updateItemContent(t,a).then(T=>{l.updateItem(p,T)}).catch(T=>{s.setError(T),console.error(T)}),n(!1),!0},[s,a,t,p]),x=F.useCallback(()=>{s.updateItemContent(t,a).then(N=>{l.updateItem(p,N)}).catch(N=>{s.setError(N),console.error(N)}),n(!1)},[s,a,t,p]),D=F.useCallback(()=>(n(!1),o(t.data.titleRaw),!0),[t]),C=F.useCallback(N=>{let T=N.target;if(T.hasClass("task-list-item-checkbox")){if(T.dataset.src)return rC(T);let O=parseInt(T.dataset.checkboxIndex,10);s.updateItemContent(t,nC(t.data.titleRaw,O)).then(W=>{l.updateItem(p,W)}).catch(W=>{s.setError(W),console.error(W)})}},[p,l,s,t]);return r?g("div",{className:$("item-input-wrapper")},g(Er,{className:$("item-input"),onChange:N=>o(N.target.value),onEnter:b,onEscape:D,onSubmit:x,value:a,onPaste:N=>{ms(N,s,c.getWindow())}})):g("div",{className:$("item-title")},g(Hy,{className:$("item-markdown"),dom:t.data.dom,searchQuery:i,onPointerDown:C}),g("div",{className:$("item-metadata")},g(By,{item:t,stateManager:s}),g(Ky,{item:t,stateManager:s,filePath:u,onEditDate:m,onEditTime:y}),!d&&!!((A=t.data.metadata.tags)==null?void 0:A.length)&&g("div",{className:$("item-tags")},t.data.metadata.tags.map((N,T)=>g("a",{href:N,key:T,className:`tag ${$("item-tag")} ${N.toLocaleLowerCase().contains(i)?"is-search-match":""}`,style:!!f[N]&&{"--tag-color":f[N].color,"--tag-background-color":f[N].backgroundColor}},g("span",null,N[0]),N.slice(1))))))});h();var ks=ge(require("obsidian"));var iC=/[\\/:"*?<>|]+/g,aC=/!?\[\[([^\]]*)\.[^\]]+\]\]/g,oC=/!?\[\[([^\]]*)\]\]/g,sC=/!?\[([^\]]*)\]\([^)]*\)/g;function Wy({setIsEditing:e,item:t,path:r,boardModifiers:n,stateManager:i}){return F.useCallback((a,o)=>{if(o)app.workspace.onLinkContextMenu(a,(0,ks.getLinkpath)(o),i.file.path);else{let s={x:a.clientX,y:a.clientY},u=!!t.data.metadata.date,l=!!t.data.metadata.time,c=new ks.Menu().addItem(d=>{d.setIcon("pencil").setTitle(B("Edit card")).onClick(()=>e(!0))});c.addItem(d=>{d.setIcon("create-new").setTitle(B("New note from card")).onClick(async()=>{let f=t.data.title.split(` -`)[0].trim(),p=f.replace(aC,"$1").replace(oC,"$1").replace(sC,"$1").replace(iC," ").trim(),m=i.getSetting("new-note-folder"),y=i.getSetting("new-note-template"),b=m?i.app.vault.getAbstractFileByPath(m):i.app.fileManager.getNewFileParent(i.file.path),x=await i.app.fileManager.createNewMarkdownFile(b,p),D=i.app.workspace.splitActiveLeaf();await D.openFile(x),i.app.workspace.setActiveLeaf(D,!1,!0),await _p(i,y);let C=t.data.titleRaw.replace(f,i.app.fileManager.generateMarkdownLink(x,i.file.path));i.updateItemContent(t,C).then(A=>{n.updateItem(r,A)}).catch(A=>{i.setError(A),console.error(A)})})}).addItem(d=>{d.setIcon("links-coming-in").setTitle(B("Copy link to card")).onClick(()=>{if(t.data.blockId)navigator.clipboard.writeText(`${this.app.fileManager.generateMarkdownLink(i.file,"","#^"+t.data.blockId)}`);else{let f=Re(6);navigator.clipboard.writeText(`${this.app.fileManager.generateMarkdownLink(i.file,"","#^"+f)}`),i.updateItemContent(t,`${t.data.titleRaw} ^${f}`).then(p=>{n.updateItem(r,p)}).catch(p=>{i.setError(p),console.error(p)})}})}).addSeparator(),/\n/.test(t.data.titleRaw)&&c.addItem(d=>{d.setIcon("split").setTitle(B("Split card")).onClick(async()=>{let f=t.data.titleRaw.split(/[\r\n]+/g).map(m=>m.trim()),p=await Promise.all(f.map(m=>i.getNewItem(m)));n.splitItem(r,p)})}),c.addItem(d=>{d.setIcon("documents").setTitle(B("Duplicate card")).onClick(()=>n.duplicateEntity(r))}).addItem(d=>{d.setIcon("plus-with-circle").setTitle(B("Insert card before")).onClick(async()=>n.insertItems(r,[await i.getNewItem("",!1,!0)]))}).addItem(d=>{d.setIcon("plus-with-circle").setTitle(B("Insert card after")).onClick(async()=>{let f=[...r];f[f.length-1]=f[f.length-1]+1,n.insertItems(f,[await i.getNewItem("",!1,!0)])})}).addItem(d=>{d.setIcon("sheets-in-box").setTitle(B("Archive card")).onClick(()=>n.archiveItem(r))}).addItem(d=>{d.setIcon("trash").setTitle(B("Delete card")).onClick(()=>n.deleteEntity(r))}).addSeparator().addItem(d=>{d.setIcon("calendar-with-checkmark").setTitle(u?B("Edit date"):B("Add date")).onClick(()=>{var f;ns(a.view,i,s,rs({stateManager:i,boardModifiers:n,item:t,hasDate:u,path:r}),(f=t.data.metadata.date)==null?void 0:f.toDate())})}),u&&(c.addItem(d=>{d.setIcon("cross").setTitle(B("Remove date")).onClick(()=>{let f=i.getSetting("link-date-to-daily-note"),p=i.getSetting("date-trigger"),m=f?"(?:\\[[^\\]]+\\]\\([^\\)]+\\)|\\[\\[[^\\]]+\\]\\])":"{[^}]+}",y=new RegExp(`(^|\\s)${Ln(p)}${m}`),b=t.data.titleRaw.replace(y,"").trim();i.updateItemContent(t,b).then(x=>{n.updateItem(r,x)}).catch(x=>{i.setError(x),console.error(x)})})}),c.addItem(d=>{d.setIcon("clock").setTitle(l?B("Edit time"):B("Add time")).onClick(()=>{is(a.view,i,s,as({stateManager:i,boardModifiers:n,item:t,hasTime:l,path:r}),t.data.metadata.time)})}),l&&c.addItem(d=>{d.setIcon("cross").setTitle(B("Remove time")).onClick(()=>{let f=i.getSetting("time-trigger"),p=new RegExp(`(^|\\s)${Ln(f)}{([^}]+)}`),m=t.data.titleRaw.replace(p,"").trim();i.updateItemContent(t,m).then(y=>{n.updateItem(r,y)}).catch(y=>{i.setError(y),console.error(y)})})})),c.showAtPosition(s)}},[e,t,r,n,i])}h();var Vy=F.memo(function({isEditing:t,setIsEditing:r,showMenu:n}){let i=F.useMemo(()=>t?{"data-ignore-drag":!0}:{},[t]);return g("div",{...i,className:$("item-postfix-button-wrapper")},t?g("button",{"data-ignore-drag":!0,onPointerDown:a=>{a.preventDefault()},onClick:()=>{r(!1)},className:`${$("item-postfix-button")} is-enabled`,"aria-label":B("Cancel")},g(Kt,{name:"cross"})):g("button",{"data-ignore-drag":!0,onPointerDown:a=>a.preventDefault(),onClick:n,className:$("item-postfix-button"),"aria-label":B("More options")},g(Kt,{name:"vertical-three-dots"})))});h();var Ss=ge(require("obsidian"));function zy({item:e,isSettingsVisible:t,searchQuery:r}){return t||!e.data.metadata.fileMetadata?null:g("div",{className:$("item-metadata-wrapper")},g(cC,{metadata:e.data.metadata.fileMetadata,order:e.data.metadata.fileMetadataOrder,searchQuery:r}))}function jy(e,t){if(e.ts){let r=t.getSetting("date-display-format");return(0,Ss.moment)(e.ts).format(r)}return null}function qy(e,t){if(!e.path)return null;let r=app.vault.getAbstractFileByPath(e.path);if(r&&r instanceof Ss.TFile){let n=app.fileManager.generateMarkdownLink(r,t.file.path,e.subpath,e.display);return`${e.embed&&n[0]!=="!"?"!":""}${n}`}return`${e.embed?"!":""}[[${e.path}${e.display?`|${e.display}`:""}]]`}function lC({data:e,searchQuery:t}){let{view:r,stateManager:n}=F.useContext(Ve);if(Array.isArray(e.value))return g("span",{className:$("meta-value")},e.value.map((s,u,l)=>{let c=`${s}`,d=typeof s=="object"&&!Array.isArray(s)&&(jy(s,n)||qy(s,r)),f=c.toLocaleLowerCase().contains(t);return g(S,null,d||e.containsMarkdown?g(La,{className:"inline",markdownString:d||c,searchQuery:t}):f?g("span",{className:"is-search-match"},c):c,u{let a=t[i];return g("tr",{key:i,className:$("meta-row")},!a.shouldHideLabel&&g("td",{className:`${$("meta-key")} ${(a.label||i).toLocaleLowerCase().contains(n)?"is-search-match":""}`,"data-key":i},g("span",null,a.label||i)),g("td",{colSpan:a.shouldHideLabel?2:1,className:$("meta-value-wrapper"),"data-value":Array.isArray(a.value)?a.value.join(", "):`${a.value}`},i==="tags"?a.value.map((o,s)=>g("a",{href:o,key:s,className:`tag ${$("item-tag")} ${o.toLocaleLowerCase().contains(n)?"is-search-match":""}`},g("span",null,o[0]),o.slice(1))):g(lC,{data:a,searchQuery:n})))})))});var Yy=F.memo(function({item:t,shouldMarkItemsComplete:r,isMatch:n,searchQuery:i}){let{stateManager:a,boardModifiers:o}=F.useContext(Ve),[s,u]=F.useState(!1),l=F.useContext(kt);F.useEffect(()=>{let y=()=>{s&&u(!1)};return l.dragManager.emitter.on("dragStart",y),()=>{l.dragManager.emitter.off("dragStart",y)}},[l,s]),F.useEffect(()=>{t.data.forceEditMode&&u(!0)},[t.data.forceEditMode]);let c=Vn(),d=Wy({boardModifiers:o,item:t,setIsEditing:u,stateManager:a,path:c}),f=F.useCallback(y=>{if(y.target instanceof y.view.HTMLTextAreaElement)return;y.preventDefault(),y.stopPropagation();let b=y.target instanceof y.view.HTMLAnchorElement&&y.target.hasClass("internal-link")?y.target.dataset.href:void 0;d(y,b)},[d]),p=F.useCallback(()=>{u(!0)},[u]),m=F.useMemo(()=>s?{"data-ignore-drag":!0}:{},[s]);return g("div",{onContextMenu:f,onDblClick:p,className:$("item-content-wrapper"),...m},g("div",{className:$("item-title-wrapper"),...m},g(sv,{boardModifiers:o,item:t,path:c,shouldMarkItemsComplete:r,stateManager:a}),g(Uy,{isEditing:s,item:t,searchQuery:n?i:void 0,setIsEditing:u}),g(Vy,{isEditing:s,setIsEditing:u,showMenu:d})),g(zy,{searchQuery:n?i:void 0,isSettingsVisible:s,item:t}))}),dd=F.memo(function(t){let r=F.useRef(null),n=F.useRef(null),i=F.useContext(po),{itemIndex:a,...o}=t;Ti(n,n);let s=i?o.item.data.titleSearch.contains(i):!1,u=Xg(o.item);return i&&(s?u.push("is-search-hit"):u.push("is-search-miss")),g("div",{ref:n,className:$("item-wrapper")},g("div",{ref:r,className:mt([$("item"),...u])},t.isStatic?g(Yy,{...o,isMatch:s,searchQuery:i}):g(hr,{elementRef:r,measureRef:n,id:t.item.id,index:a,data:t.item},g(Yy,{...o,isMatch:s,searchQuery:i}))))}),Jy=F.memo(function({isStatic:t,items:r,shouldMarkItemsComplete:n}){return g(S,null,r.map((i,a)=>g(dd,{key:i.id,item:i,itemIndex:a,shouldMarkItemsComplete:n,isStatic:t})))});h();h();var uC=function(e,t,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function s(c){try{l(n.next(c))}catch(d){o(d)}}function u(c){try{l(n.throw(c))}catch(d){o(d)}}function l(c){c.done?a(c.value):i(c.value).then(s,u)}l((n=n.apply(e,t||[])).next())})};function _s(e){let t=0,r=0,n=e;do t+=n.offsetTop||0,r+=n.offsetLeft||0,n=n.offsetParent;while(n);return{top:t,left:r}}var Gy=class{constructor(t){this.element=t}getHorizontalScroll(){return this.element.scrollLeft}getVerticalScroll(){return this.element.scrollTop}getMaxHorizontalScroll(){return this.element.scrollWidth-this.element.clientWidth}getMaxVerticalScroll(){return this.element.scrollHeight-this.element.clientHeight}getHorizontalElementScrollOffset(t,r){return _s(t).left-_s(r).left}getVerticalElementScrollOffset(t,r){return _s(t).top-_s(r).top}scrollTo(t,r){this.element.scrollLeft=t,this.element.scrollTop=r}},Qy=class{constructor(){this.element=window}getHorizontalScroll(){return window.scrollX||document.documentElement.scrollLeft}getVerticalScroll(){return window.scrollY||document.documentElement.scrollTop}getMaxHorizontalScroll(){return Math.max(document.body.scrollWidth,document.documentElement.scrollWidth,document.body.offsetWidth,document.documentElement.offsetWidth,document.body.clientWidth,document.documentElement.clientWidth)-window.innerWidth}getMaxVerticalScroll(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)-window.innerHeight}getHorizontalElementScrollOffset(t){return(window.scrollX||document.documentElement.scrollLeft)+t.getBoundingClientRect().left}getVerticalElementScrollOffset(t){return(window.scrollY||document.documentElement.scrollTop)+t.getBoundingClientRect().top}scrollTo(t,r){window.scrollTo(t,r)}},Zn={elements:[],cancelMethods:[],add:(e,t)=>{Zn.elements.push(e),Zn.cancelMethods.push(t)},remove:(e,t)=>{let r=Zn.elements.indexOf(e);r>-1&&(t&&Zn.cancelMethods[r](),Zn.elements.splice(r,1),Zn.cancelMethods.splice(r,1))}},Xy=typeof window!="undefined",dC={cancelOnUserAction:!0,easing:e=>--e*e*e+1,elementToScroll:Xy?window:null,horizontalOffset:0,maxDuration:3e3,minDuration:250,speed:500,verticalOffset:0};function fC(e,t={}){return uC(this,void 0,void 0,function*(){if(Xy){if(!window.Promise)throw"Browser doesn't support Promises, and animated-scroll-to depends on it, please provide a polyfill."}else return new Promise(A=>{A(!1)});let r,n,i,a=Object.assign(Object.assign({},dC),t),o=a.elementToScroll===window,s=!!a.elementToScroll.nodeName;if(!o&&!s)throw"Element to scroll needs to be either window or DOM element.";let u=o?document.documentElement:a.elementToScroll;getComputedStyle(u).getPropertyValue("scroll-behavior")==="smooth"&&console.warn(`${u.tagName} has "scroll-behavior: smooth" which can mess up with animated-scroll-to's animations`);let c=o?new Qy:new Gy(a.elementToScroll);if(e instanceof Element){if(i=e,s&&(!a.elementToScroll.contains(i)||a.elementToScroll.isSameNode(i)))throw"options.elementToScroll has to be a parent of scrollToElement";r=c.getHorizontalElementScrollOffset(i,a.elementToScroll),n=c.getVerticalElementScrollOffset(i,a.elementToScroll)}else if(typeof e=="number")r=c.getHorizontalScroll(),n=e;else if(Array.isArray(e)&&e.length===2)r=e[0]===null?c.getHorizontalScroll():e[0],n=e[1]===null?c.getVerticalScroll():e[1];else throw`Wrong function signature. Check documentation. +`)}function Oy(e,t,r,n){let i=On(e);if(t){let l=Ii(i),c=Pt(e,l);if(Lt(e,q_(c.selectedText,r,n)),i.selection.start===i.selection.end){let d=r?1:n;Pt(e,{start:i.selection.start-d,end:i.selection.end-d})}return!0}let a=Ii(i),o=Pt(e,a),u=j_(o.selectedText,r,n).replace(/^(\s*)(\d+)([.)]\s)/,(l,c,d,f)=>`${c}1${f}`);return Lt(e,u),!0}function Ry(e){let t=On(e);if(t.selection.start!==t.selection.end)return!1;let r=Ii(t),n=e.value.slice(r.start,t.selection.end),i=e.value.slice(r.start,r.end);if(/^(\s*[-*+]\s+(?:\[[^\]]\]\s*)?)$/.test(i))return Pt(e,{start:r.start-1,end:r.end}),Lt(e,` +`),!0;if(/^(\s*\d[.)]\s+(?:\[[^\]]\]\s*)?)$/.test(i))return Pt(e,{start:r.start-1,end:r.end}),Lt(e,` +`),!0;if(La.test(n)){let a=n.match(/^(\s*[-*+]\s+(?:\[[^\]]\]\s*)?)/)[1];return Da(e,` +${a.replace(/^(\s*[-*+]\s+)\[[^\]]\]/,"$1[ ]")}`),!0}if(Aa.test(n)){let s=n.match(/^(\s*\d+[.)]\s+(?:\[[^\]]\]\s*)?)/)[1].replace(/^(\s*\d+[.)]\s+)\[[^\]]\]/,"$1[ ]").replace(/^(\s*)(\d+)/,(u,l,c)=>`${l}${parseInt(c)+1}`);return Da(e,` +${s}`),!0}return!1}function Xn(e,t){return fd.Platform.isMobile?e.key==="Enter"&&!0:t.getSetting("new-line-trigger")==="enter"?e.key==="Enter"&&!(e.shiftKey||e.metaKey||e.ctrlKey):e.key==="Enter"&&e.shiftKey}var kr=L.forwardRef(function({onEnter:t,onEscape:r,onSubmit:n,...i},a){let{view:o,stateManager:s}=L.useContext(We),u=app.vault.getConfig("autoPairMarkdown"),l=app.vault.getConfig("autoPairBrackets"),c=app.vault.getConfig("useTab"),d=app.vault.getConfig("tabSize"),f=!!app.vault.getConfig("useMarkdownLinks"),p=_y({isInputVisible:!0,onEnter:t,onEscape:r,onKeyDown:g=>{if(g.key==="Backspace"){let y=Fy(g.target);return y||Ny(g.target)}if(Xn(g,s)){let y=Ry(g.target);if(y)return g.preventDefault(),y}if(g.key==="Tab")return g.preventDefault(),Oy(g.target,g.shiftKey,c,d);if(u){let y=dd[g.key];if(y&&y(g.target))return g.preventDefault(),!0}if(l){if(f&&g.key==="[")return!1;let y=ud[g.key];if(y&&y(g.target))return g.preventDefault(),!0}return!1}});return L.useEffect(()=>{let g=y=>{let b=Ly[y];b&&b(p.ref.current)};return o.emitter.on("hotkey",g),()=>{o.emitter.off("hotkey",g)}},[o]),h(S,null,h("div",{"data-replicated-value":i.value,className:B("grow-wrap")},h("textarea",{"data-ignore-drag":!0,rows:1,className:B("item-input"),...i,...p,ref:g=>{p.ref.current=g,a&&typeof a=="function"?a(g):a&&(a.current=g)}})),fd.Platform.isMobile&&h("button",{onPointerDown:n,className:B("item-submit-button")},P("Submit")))});m();var md=me(Hy());m();var Sr=me(require("obsidian"));var Y_=["bmp","png","jpg","jpeg","gif","svg"],J_=["mp3","wav","m4a","3gp","flac","ogg","oga"],G_=["mp4","webm","ogv"],Q_=/\u00A0/g,X_=/[!"#$%&()*+,.:;<=>?@^`{|}~/[\]\\]/g;function By(e){return e.replace(X_," ").replace(/\s+/g," ").trim()}function zr(e){let r=e.replace(Q_," ").normalize("NFC").split(/\|(.*)/),n=r[0].split(/#(.*)/);return{root:n[0],subpath:n[1]?"#"+n[1]:"",alias:r[1]||""}}function Z_(e,t){if(!e||!t)return null;let r=t.split("#").filter(l=>!!l);if(!r||r.length===0)return null;if(r.length===1){let l=r[0];if(l.startsWith("^")){let c=l.slice(1).toLowerCase(),d=e.blocks;if(d&&d[c]){let f=d[c];return{type:"block",block:f,start:f.position.start.offset,end:f.position.end.offset,startLine:f.position.start.line,endLine:f.position.end.line}}else return null}}let n=e.headings;if(!n||n.length===0)return null;let i=0,a=0,o=0,s=null,u=null;for(;ao&&By(l.heading).toLowerCase()===By(r[i]).toLowerCase()&&(i++,o=l.level,i===r.length&&(s=l))}return s?{type:"heading",current:s,next:u,start:s.position.start.offset,end:u?u.position.start.offset:null,startLine:s.position.start.line,endLine:u?u.position.end.line:null}:null}function eC(e){e.querySelectorAll(".task-list-item-checkbox").forEach((r,n)=>{r.dataset.checkboxIndex=n.toString()})}function tC(e,t){e.querySelectorAll(".internal-link").forEach(n=>{let i=zr(n.getAttr("href"));t.app.metadataCache.getFirstLinkpathDest(i.root,t.file.path)||n.addClass("is-unresolved")})}function nC(e,t,r){e.empty(),e.createEl("img",{attr:{src:r.app.vault.getResourcePath(t)}},n=>{e.hasAttribute("width")&&n.setAttribute("width",e.getAttribute("width")),e.hasAttribute("height")&&n.setAttribute("height",e.getAttribute("height")),e.hasAttribute("alt")&&n.setAttribute("alt",e.getAttribute("alt"))}),e.addClasses(["image-embed","is-loaded"])}function Ky(e,t,r){e.empty(),e.createEl("audio",{attr:{controls:"",src:r.app.vault.getResourcePath(t)}}),e.addClasses(["media-embed","is-loaded"])}function rC(e,t,r){e.empty(),e.createEl("video",{attr:{controls:"",src:r.app.vault.getResourcePath(t)}},n=>{let i=()=>{n.removeEventListener("loadedmetadata",i),n.videoWidth===0&&n.videoHeight===0&&(e.empty(),Ky(e,t,r))};n.addEventListener("loadedmetadata",i)}),e.addClasses(["media-embed","is-loaded"])}async function $y(e,t,r){let n=r.app.metadataCache.getFileCache(e);if(!n)return null;let i=await r.app.vault.cachedRead(e);if(!t.subpath)return{markdown:i,boundary:null};let a=Z_(n,t.subpath);if(a)return{markdown:i.substring(a.start,a.end===null?void 0:a.end),boundary:a};if(t.subpath)return{markdown:`${P("Unable to find")} ${t.root}${t.subpath}`,boundary:null}}function Uy(e,t,r,n){r.getWindow().setTimeout(async()=>{if(!r.plugin.windowRegistry.has(r.getWindow()))return;if(r.plugin.windowRegistry.get(r.getWindow()).viewMap.has(r.id)){let{markdown:a}=await $y(e,t,r);if(!a)return;a.startsWith(P("Unable to find"))?n>0&&Uy(e,t,r,--n):r.plugin.stateManagers.forEach(o=>{o.onFileMetadataChange()})}},2e3)}async function iC(e,t,r,n,i){var u;let{markdown:a,boundary:o}=await $y(t,r,n);if(!a)return;e.empty();let s=e.createDiv();if(s.addClasses(["markdown-preview-view",B("markdown-preview-view")]),s.createDiv(B("embed-link-wrapper"),l=>{l.createEl("a",{href:e.getAttr("src")||t.basename,cls:`internal-link ${B("embed-link")}`},c=>{(0,Sr.setIcon)(c,"link"),c.setAttr("aria-label",t.basename)})}),await Sr.MarkdownRenderer.renderMarkdown(a,s.createDiv(),t.path,n),e.addClass("is-loaded"),a.startsWith(P("Unable to find"))&&r.subpath&&r.subpath!=="#")Uy(t,r,n,4);else{let l=e.findAll(".task-list-item-checkbox");(l==null?void 0:l.length)&&((u=app.metadataCache.getFileCache(t).listItems)==null||u.filter(d=>o?d.position.start.line>=o.startLine&&d.position.end.line<=o.endLine:!0).forEach((d,f)=>{l[f]&&(l[f].dataset.oStart=d.position.start.offset.toString(),l[f].dataset.oEnd=d.position.end.offset.toString(),l[f].dataset.src=t.path)}))}i>0&&await Vy(s,n,--i)}function aC(e,t){e.addClass("is-loaded"),e.empty(),e.createEl("a",{cls:"file-link",href:e.getAttribute("src"),text:t.name},r=>{r.setAttribute("aria-label",P("Open in default app")),r.createSpan({},n=>(0,Sr.setIcon)(n,"open-elsewhere-glyph"))})}function Vy(e,t,r){return Promise.all(e.findAll(".internal-embed").map(async n=>{let i=n.getAttribute("src"),a=zr(i),o=typeof i=="string"&&t.app.metadataCache.getFirstLinkpathDest(a.root,t.file.path);if(o instanceof Sr.TFile)return Y_.contains(o.extension)?nC(n,o,t):J_.contains(o.extension)?Ky(n,o,t):G_.contains(o.extension)?rC(n,o,t):o.extension==="md"?await iC(n,o,a,t,r):aC(n,o)}))}async function Pa(e,t){let r=e.getWindow().document.body.createDiv();r.detach();try{await Sr.MarkdownRenderer.renderMarkdown(t,r,e.file.path,e),eC(r),tC(r,e),await Vy(r,e,5)}catch(n){console.error(n)}return r}function gd(e,t){!t||!e||(e&&!e.firstChild?e.appendChild(t):e.firstChild&&e.firstChild!==t&&e.replaceChild(t,e.firstChild))}var Fa=L.memo(function({className:t,markdownString:r,searchQuery:n,...i}){let{stateManager:a}=L.useContext(We),o=L.useRef(),s=L.useRef(),u=L.useRef();return L.useEffect(()=>{Pa(a.getAView(),r).then(l=>{s.current=l,u.current=new md.default(l),o.current&&gd(o.current,l)}).catch(l=>{a.setError(l),console.error(l)})},[a,r]),L.useEffect(()=>{var l,c;(l=u.current)==null||l.unmark(),n&&n.trim()&&((c=u.current)==null||c.mark(n))},[n]),h("div",{ref:l=>{o.current=l,gd(l,s.current)},className:et(["markdown-preview-view",B("markdown-preview-view"),t]),...i})}),Wy=L.memo(function({dom:t,className:r,searchQuery:n,...i}){let{stateManager:a}=L.useContext(We),o=L.useMemo(()=>t.cloneNode(!0),[t,a]),s=L.useMemo(()=>new md.default(o),[o]);return L.useEffect(()=>{s.unmark(),n&&n.trim()&&s.mark(n)},[s,n]),h("div",{ref:u=>{gd(u,o)},className:et(["markdown-preview-view",B("markdown-preview-view"),r]),...i})});m();var Na=me(require("obsidian"));function oC(e,t){if(t)return t.from((0,Na.moment)());let r=(0,Na.moment)().startOf("day");if(r.isSame(e,"day"))return P("today");let n=e.diff(r,"day");return n===-1?P("yesterday"):n===1?P("tomorrow"):e.from(r)}function zy({item:e,stateManager:t}){if(!t.useSetting("show-relative-date")||!e.data.metadata.date)return null;let n=oC(e.data.metadata.date,e.data.metadata.time);return h("span",{className:B("item-metadata-date-relative")},n)}function jy({item:e,stateManager:t,filePath:r,onEditDate:n,onEditTime:i,getDateColor:a}){let o=t.useSetting("hide-date-display"),s=t.useSetting("date-format"),u=t.useSetting("time-format"),l=t.useSetting("date-display-format"),c=t.useSetting("link-date-to-daily-note"),d=L.useMemo(()=>e.data.metadata.date?a(e.data.metadata.date):null,[e.data.metadata.date,a]);if(o||!e.data.metadata.date)return null;let f=e.data.metadata.date.format(s);if(!f)return null;let p=!!e.data.metadata.time,g=e.data.metadata.date.format(l),y=p?e.data.metadata.time.format(u):null,b=f?(0,Na.getLinkpath)(f):null,k=f?t.app.metadataCache.getFirstLinkpathDest(b,r):null,T=b&&c?h("a",{href:b,"data-href":b,className:`internal-link ${k?"":"is-unresolved"}`,target:"blank",rel:"noopener"},g):g,C={};return c||(C["aria-label"]=P("Change date"),C.onClick=n),h("span",{style:d&&{"--date-color":d.color,"--date-background-color":d.backgroundColor},className:et([B("item-metadata-date-wrapper"),{"has-background":!!(d==null?void 0:d.backgroundColor)}])},h("span",{...C,className:`${B("item-metadata-date")} ${c?"":"is-button"}`},T)," ",p&&h("span",{onClick:i,className:`${B("item-metadata-time")} is-button`,"aria-label":P("Change time")},y))}function sC(e){let{stateManager:t,boardModifiers:r}=L.useContext(We),n=Wn();return L.useMemo(()=>({onEditDate:o=>{var s;os(o.view,t,{x:o.clientX,y:o.clientY},ss({stateManager:t,boardModifiers:r,item:e,hasDate:!0,path:n}),(s=e.data.metadata.date)==null?void 0:s.toDate())},onEditTime:o=>{ls(o.view,t,{x:o.clientX,y:o.clientY},cs({stateManager:t,boardModifiers:r,item:e,hasTime:!0,path:n}),e.data.metadata.time)}}),[r,n,e,t])}function lC(e,t){let r=0;return e.replace(/^(\s*[-+*]\s+?\[)([^\]])(\]\s+)/gm,(n,i,a,o)=>{let s=n;return r===t&&(a===" "?s=`${i}x${o}`:s=`${i} ${o}`),r++,s})}async function cC(e){let t=app.vault.getAbstractFileByPath(e.dataset.src);if(!(t instanceof qy.TFile))return;let r=await app.vault.cachedRead(t),n=parseInt(e.dataset.oStart),i=parseInt(e.dataset.oEnd),o=r.substring(n,i).replace(/^(.+?)\[(.)\](.+)$/,(s,u,l,c)=>l!==" "?(e.parentElement.removeClass("is-checked"),e.parentElement.dataset.task="",`${u}[ ]${c}`):(e.parentElement.addClass("is-checked"),e.parentElement.dataset.task="x",`${u}[x]${c}`));await app.vault.modify(t,`${r.substring(0,n)}${o}${r.substring(i)}`)}var Yy=L.memo(function({item:t,isEditing:r,setIsEditing:n,searchQuery:i}){var H;let[a,o]=L.useState(t.data.titleRaw),{stateManager:s,filePath:u,boardModifiers:l,view:c,getTagColor:d,getDateColor:f}=L.useContext(We),p=s.useSetting("hide-tags-display"),g=Wn(),{onEditDate:y,onEditTime:b}=sC(t);L.useEffect(()=>{r&&o(t.data.titleRaw)},[r]);let k=L.useCallback(D=>{if(!Xn(D,s))return D.preventDefault(),s.updateItemContent(t,a).then(K=>{l.updateItem(g,K)}).catch(K=>{s.setError(K),console.error(K)}),n(!1),!0},[s,a,t,g]),T=L.useCallback(()=>{s.updateItemContent(t,a).then(D=>{l.updateItem(g,D)}).catch(D=>{s.setError(D),console.error(D)}),n(!1)},[s,a,t,g]),C=L.useCallback(()=>(n(!1),o(t.data.titleRaw),!0),[t]),A=L.useCallback(D=>{let K=D.target;if(K.hasClass("task-list-item-checkbox")){if(K.dataset.src)return cC(K);let z=parseInt(K.dataset.checkboxIndex,10);s.updateItemContent(t,lC(t.data.titleRaw,z)).then(U=>{l.updateItem(g,U)}).catch(U=>{s.setError(U),console.error(U)})}},[g,l,s,t]);return r?h("div",{className:B("item-input-wrapper")},h(kr,{className:B("item-input"),onChange:D=>o(D.target.value),onEnter:k,onEscape:C,onSubmit:T,value:a,onPaste:D=>{ws(D,s,c.getWindow())}})):h("div",{className:B("item-title")},h(Wy,{className:B("item-markdown"),dom:t.data.dom,searchQuery:i,onPointerDown:A}),h("div",{className:B("item-metadata")},h(zy,{item:t,stateManager:s}),h(jy,{item:t,stateManager:s,filePath:u,onEditDate:y,onEditTime:b,getDateColor:f}),!p&&!!((H=t.data.metadata.tags)==null?void 0:H.length)&&h("div",{className:B("item-tags")},t.data.metadata.tags.map((D,K)=>{let z=d(D);return h("a",{href:D,key:K,className:`tag ${B("item-tag")} ${D.toLocaleLowerCase().contains(i)?"is-search-match":""}`,style:z&&{"--tag-color":z.color,"--tag-background-color":z.backgroundColor}},h("span",null,D[0]),D.slice(1))}))))});m();var Ts=me(require("obsidian"));var uC=/[\\/:"*?<>|]+/g,dC=/!?\[\[([^\]]*)\.[^\]]+\]\]/g,fC=/!?\[\[([^\]]*)\]\]/g,pC=/!?\[([^\]]*)\]\([^)]*\)/g;function Jy({setIsEditing:e,item:t,path:r,boardModifiers:n,stateManager:i}){return L.useCallback((a,o)=>{if(o)app.workspace.onLinkContextMenu(a,(0,Ts.getLinkpath)(o),i.file.path);else{let s={x:a.clientX,y:a.clientY},u=!!t.data.metadata.date,l=!!t.data.metadata.time,c=new Ts.Menu().addItem(d=>{d.setIcon("pencil").setTitle(P("Edit card")).onClick(()=>e(!0))});c.addItem(d=>{d.setIcon("create-new").setTitle(P("New note from card")).onClick(async()=>{let f=t.data.title.split(` +`)[0].trim(),p=f.replace(dC,"$1").replace(fC,"$1").replace(pC,"$1").replace(uC," ").trim(),g=i.getSetting("new-note-folder"),y=i.getSetting("new-note-template"),b=g?i.app.vault.getAbstractFileByPath(g):i.app.fileManager.getNewFileParent(i.file.path),k=await i.app.fileManager.createNewMarkdownFile(b,p),T=i.app.workspace.splitActiveLeaf();await T.openFile(k),i.app.workspace.setActiveLeaf(T,!1,!0),await Ap(i,y);let C=t.data.titleRaw.replace(f,i.app.fileManager.generateMarkdownLink(k,i.file.path));i.updateItemContent(t,C).then(A=>{n.updateItem(r,A)}).catch(A=>{i.setError(A),console.error(A)})})}).addItem(d=>{d.setIcon("links-coming-in").setTitle(P("Copy link to card")).onClick(()=>{if(t.data.blockId)navigator.clipboard.writeText(`${this.app.fileManager.generateMarkdownLink(i.file,"","#^"+t.data.blockId)}`);else{let f=Ae(6);navigator.clipboard.writeText(`${this.app.fileManager.generateMarkdownLink(i.file,"","#^"+f)}`),i.updateItemContent(t,`${t.data.titleRaw} ^${f}`).then(p=>{n.updateItem(r,p)}).catch(p=>{i.setError(p),console.error(p)})}})}).addSeparator(),/\n/.test(t.data.titleRaw)&&c.addItem(d=>{d.setIcon("split").setTitle(P("Split card")).onClick(async()=>{let f=t.data.titleRaw.split(/[\r\n]+/g).map(g=>g.trim()),p=await Promise.all(f.map(g=>i.getNewItem(g)));n.splitItem(r,p)})}),c.addItem(d=>{d.setIcon("documents").setTitle(P("Duplicate card")).onClick(()=>n.duplicateEntity(r))}).addItem(d=>{d.setIcon("plus-with-circle").setTitle(P("Insert card before")).onClick(async()=>n.insertItems(r,[await i.getNewItem("",!1,!0)]))}).addItem(d=>{d.setIcon("plus-with-circle").setTitle(P("Insert card after")).onClick(async()=>{let f=[...r];f[f.length-1]=f[f.length-1]+1,n.insertItems(f,[await i.getNewItem("",!1,!0)])})}).addItem(d=>{d.setIcon("up-arrow-with-tail").setTitle(P("Move to top")).onClick(()=>n.moveItemToTop(r))}).addItem(d=>{d.setIcon("down-arrow-with-tail").setTitle(P("Move to bottom")).onClick(()=>n.moveItemToBottom(r))}).addItem(d=>{d.setIcon("sheets-in-box").setTitle(P("Archive card")).onClick(()=>n.archiveItem(r))}).addItem(d=>{d.setIcon("trash").setTitle(P("Delete card")).onClick(()=>n.deleteEntity(r))}).addSeparator().addItem(d=>{d.setIcon("calendar-with-checkmark").setTitle(u?P("Edit date"):P("Add date")).onClick(()=>{var f;os(a.view,i,s,ss({stateManager:i,boardModifiers:n,item:t,hasDate:u,path:r}),(f=t.data.metadata.date)==null?void 0:f.toDate())})}),u&&(c.addItem(d=>{d.setIcon("cross").setTitle(P("Remove date")).onClick(()=>{let f=i.getSetting("link-date-to-daily-note"),p=i.getSetting("date-trigger"),g=f?"(?:\\[[^\\]]+\\]\\([^\\)]+\\)|\\[\\[[^\\]]+\\]\\])":"{[^}]+}",y=new RegExp(`(^|\\s)${Ln(p)}${g}`),b=t.data.titleRaw.replace(y,"").trim();i.updateItemContent(t,b).then(k=>{n.updateItem(r,k)}).catch(k=>{i.setError(k),console.error(k)})})}),c.addItem(d=>{d.setIcon("clock").setTitle(l?P("Edit time"):P("Add time")).onClick(()=>{ls(a.view,i,s,cs({stateManager:i,boardModifiers:n,item:t,hasTime:l,path:r}),t.data.metadata.time)})}),l&&c.addItem(d=>{d.setIcon("cross").setTitle(P("Remove time")).onClick(()=>{let f=i.getSetting("time-trigger"),p=new RegExp(`(^|\\s)${Ln(f)}{([^}]+)}`),g=t.data.titleRaw.replace(p,"").trim();i.updateItemContent(t,g).then(y=>{n.updateItem(r,y)}).catch(y=>{i.setError(y),console.error(y)})})})),c.showAtPosition(s)}},[e,t,r,n,i])}m();var Gy=L.memo(function({isEditing:t,setIsEditing:r,showMenu:n}){let i=L.useMemo(()=>t?{"data-ignore-drag":!0}:{},[t]);return h("div",{...i,className:B("item-postfix-button-wrapper")},t?h("button",{"data-ignore-drag":!0,onPointerDown:a=>{a.preventDefault()},onClick:()=>{r(!1)},className:`${B("item-postfix-button")} is-enabled`,"aria-label":P("Cancel")},h(_t,{name:"cross"})):h("button",{"data-ignore-drag":!0,onPointerDown:a=>a.preventDefault(),onClick:n,className:B("item-postfix-button"),"aria-label":P("More options")},h(_t,{name:"vertical-three-dots"})))});m();var Ms=me(require("obsidian"));function Qy({item:e,isSettingsVisible:t,searchQuery:r}){return t||!e.data.metadata.fileMetadata?null:h("div",{className:B("item-metadata-wrapper")},h(mC,{metadata:e.data.metadata.fileMetadata,order:e.data.metadata.fileMetadataOrder,searchQuery:r}))}function Xy(e,t){if(e.ts){let r=t.getSetting("date-display-format");return(0,Ms.moment)(e.ts).format(r)}return null}function Zy(e,t){if(!e.path)return null;let r=app.vault.getAbstractFileByPath(e.path);if(r&&r instanceof Ms.TFile){let n=app.fileManager.generateMarkdownLink(r,t.file.path,e.subpath,e.display);return`${e.embed&&n[0]!=="!"?"!":""}${n}`}return`${e.embed?"!":""}[[${e.path}${e.display?`|${e.display}`:""}]]`}function hC({data:e,searchQuery:t}){let{view:r,stateManager:n}=L.useContext(We);if(Array.isArray(e.value))return h("span",{className:B("meta-value")},e.value.map((s,u,l)=>{let c=`${s}`,d=typeof s=="object"&&!Array.isArray(s)&&(Xy(s,n)||Zy(s,r)),f=c.toLocaleLowerCase().contains(t);return h(S,null,d||e.containsMarkdown?h(Fa,{className:"inline",markdownString:d||c,searchQuery:t}):f?h("span",{className:"is-search-match"},c):c,u{let a=t[i];return h("tr",{key:i,className:B("meta-row")},!a.shouldHideLabel&&h("td",{className:`${B("meta-key")} ${(a.label||i).toLocaleLowerCase().contains(n)?"is-search-match":""}`,"data-key":i},h("span",null,a.label||i)),h("td",{colSpan:a.shouldHideLabel?2:1,className:B("meta-value-wrapper"),"data-value":Array.isArray(a.value)?a.value.join(", "):`${a.value}`},i==="tags"?a.value.map((o,s)=>h("a",{href:o,key:s,className:`tag ${B("item-tag")} ${o.toLocaleLowerCase().contains(n)?"is-search-match":""}`},h("span",null,o[0]),o.slice(1))):h(hC,{data:a,searchQuery:n})))})))});var eb=L.memo(function({item:t,shouldMarkItemsComplete:r,isMatch:n,searchQuery:i}){let{stateManager:a,boardModifiers:o}=L.useContext(We),[s,u]=L.useState(!1),l=L.useContext(kt);L.useEffect(()=>{let y=()=>{s&&u(!1)};return l.dragManager.emitter.on("dragStart",y),()=>{l.dragManager.emitter.off("dragStart",y)}},[l,s]),L.useEffect(()=>{t.data.forceEditMode&&u(!0)},[t.data.forceEditMode]);let c=Wn(),d=Jy({boardModifiers:o,item:t,setIsEditing:u,stateManager:a,path:c}),f=L.useCallback(y=>{if(y.target instanceof y.view.HTMLTextAreaElement)return;y.preventDefault(),y.stopPropagation();let b=y.target instanceof y.view.HTMLAnchorElement&&y.target.hasClass("internal-link")?y.target.dataset.href:void 0;d(y,b)},[d]),p=L.useCallback(()=>{u(!0)},[u]),g=L.useMemo(()=>s?{"data-ignore-drag":!0}:{},[s]);return h("div",{onContextMenu:f,onDblClick:p,className:B("item-content-wrapper"),...g},h("div",{className:B("item-title-wrapper"),...g},h(pv,{boardModifiers:o,item:t,path:c,shouldMarkItemsComplete:r,stateManager:a}),h(Yy,{isEditing:s,item:t,searchQuery:n?i:void 0,setIsEditing:u}),h(Gy,{isEditing:s,setIsEditing:u,showMenu:d})),h(Qy,{searchQuery:n?i:void 0,isSettingsVisible:s,item:t}))}),vd=L.memo(function(t){let r=L.useRef(null),n=L.useRef(null),i=L.useContext(go),{itemIndex:a,...o}=t;Mi(n,n);let s=i?o.item.data.titleSearch.contains(i):!1,u=iv(o.item);return i&&(s?u.push("is-search-hit"):u.push("is-search-miss")),h("div",{ref:n,className:B("item-wrapper")},h("div",{ref:r,className:et([B("item"),...u])},t.isStatic?h(eb,{...o,isMatch:s,searchQuery:i}):h(gr,{elementRef:r,measureRef:n,id:t.item.id,index:a,data:t.item},h(eb,{...o,isMatch:s,searchQuery:i}))))}),tb=L.memo(function({isStatic:t,items:r,shouldMarkItemsComplete:n}){return h(S,null,r.map((i,a)=>h(vd,{key:i.id,item:i,itemIndex:a,shouldMarkItemsComplete:n,isStatic:t})))});m();m();var gC=function(e,t,r,n){function i(a){return a instanceof r?a:new r(function(o){o(a)})}return new(r||(r=Promise))(function(a,o){function s(c){try{l(n.next(c))}catch(d){o(d)}}function u(c){try{l(n.throw(c))}catch(d){o(d)}}function l(c){c.done?a(c.value):i(c.value).then(s,u)}l((n=n.apply(e,t||[])).next())})};function Is(e){let t=0,r=0,n=e;do t+=n.offsetTop||0,r+=n.offsetLeft||0,n=n.offsetParent;while(n);return{top:t,left:r}}var nb=class{constructor(t){this.element=t}getHorizontalScroll(){return this.element.scrollLeft}getVerticalScroll(){return this.element.scrollTop}getMaxHorizontalScroll(){return this.element.scrollWidth-this.element.clientWidth}getMaxVerticalScroll(){return this.element.scrollHeight-this.element.clientHeight}getHorizontalElementScrollOffset(t,r){return Is(t).left-Is(r).left}getVerticalElementScrollOffset(t,r){return Is(t).top-Is(r).top}scrollTo(t,r){this.element.scrollLeft=t,this.element.scrollTop=r}},rb=class{constructor(){this.element=window}getHorizontalScroll(){return window.scrollX||document.documentElement.scrollLeft}getVerticalScroll(){return window.scrollY||document.documentElement.scrollTop}getMaxHorizontalScroll(){return Math.max(document.body.scrollWidth,document.documentElement.scrollWidth,document.body.offsetWidth,document.documentElement.offsetWidth,document.body.clientWidth,document.documentElement.clientWidth)-window.innerWidth}getMaxVerticalScroll(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)-window.innerHeight}getHorizontalElementScrollOffset(t){return(window.scrollX||document.documentElement.scrollLeft)+t.getBoundingClientRect().left}getVerticalElementScrollOffset(t){return(window.scrollY||document.documentElement.scrollTop)+t.getBoundingClientRect().top}scrollTo(t,r){window.scrollTo(t,r)}},Zn={elements:[],cancelMethods:[],add:(e,t)=>{Zn.elements.push(e),Zn.cancelMethods.push(t)},remove:(e,t)=>{let r=Zn.elements.indexOf(e);r>-1&&(t&&Zn.cancelMethods[r](),Zn.elements.splice(r,1),Zn.cancelMethods.splice(r,1))}},ib=typeof window!="undefined",vC={cancelOnUserAction:!0,easing:e=>--e*e*e+1,elementToScroll:ib?window:null,horizontalOffset:0,maxDuration:3e3,minDuration:250,speed:500,verticalOffset:0};function yC(e,t={}){return gC(this,void 0,void 0,function*(){if(ib){if(!window.Promise)throw"Browser doesn't support Promises, and animated-scroll-to depends on it, please provide a polyfill."}else return new Promise(A=>{A(!1)});let r,n,i,a=Object.assign(Object.assign({},vC),t),o=a.elementToScroll===window,s=!!a.elementToScroll.nodeName;if(!o&&!s)throw"Element to scroll needs to be either window or DOM element.";let u=o?document.documentElement:a.elementToScroll;getComputedStyle(u).getPropertyValue("scroll-behavior")==="smooth"&&console.warn(`${u.tagName} has "scroll-behavior: smooth" which can mess up with animated-scroll-to's animations`);let c=o?new rb:new nb(a.elementToScroll);if(e instanceof Element){if(i=e,s&&(!a.elementToScroll.contains(i)||a.elementToScroll.isSameNode(i)))throw"options.elementToScroll has to be a parent of scrollToElement";r=c.getHorizontalElementScrollOffset(i,a.elementToScroll),n=c.getVerticalElementScrollOffset(i,a.elementToScroll)}else if(typeof e=="number")r=c.getHorizontalScroll(),n=e;else if(Array.isArray(e)&&e.length===2)r=e[0]===null?c.getHorizontalScroll():e[0],n=e[1]===null?c.getVerticalScroll():e[1];else throw`Wrong function signature. Check documentation. Available method signatures are: animateScrollTo(y:number, options) animateScrollTo([x:number | null, y:number | null], options) - animateScrollTo(scrollToElement:Element, options)`;r+=a.horizontalOffset,n+=a.verticalOffset;let d=c.getMaxHorizontalScroll(),f=c.getHorizontalScroll();r>d&&(r=d);let p=r-f,m=c.getMaxVerticalScroll(),y=c.getVerticalScroll();n>m&&(n=m);let b=n-y,x=Math.abs(Math.round(p/1e3*a.speed)),D=Math.abs(Math.round(b/1e3*a.speed)),C=x>D?x:D;return Ca.maxDuration&&(C=a.maxDuration),new Promise((A,N)=>{p===0&&b===0&&A(!0),Zn.remove(c.element,!0);let T,O=()=>{le(),cancelAnimationFrame(T),A(!1)};Zn.add(c.element,O);let W=re=>re.preventDefault(),z=a.cancelOnUserAction?O:W,ee=a.cancelOnUserAction?{passive:!0}:{passive:!1},Z=["wheel","touchstart","keydown","mousedown"],le=()=>{Z.forEach(re=>{c.element.removeEventListener(re,z,ee)})};Z.forEach(re=>{c.element.addEventListener(re,z,ee)});let X=Date.now(),G=()=>{var re=Date.now()-X,pe=re/C;let he=Math.round(f+p*a.easing(pe)),ve=Math.round(y+b*a.easing(pe));re{this.activeScroll.size===0&&(this.scrollState=Kl(this.scrollEl),this.handleEntityRegistration())};this.onDragEnd=()=>{this.activeScroll.clear()};this.handleBeginDragScroll=({scrollEntitySide:t,scrollStrength:r})=>{this.isDoneScrolling(t)||(this.activeScroll.set(t,r),this.handleDragScroll())};this.handleUpdateDragScroll=({scrollEntitySide:t,scrollStrength:r})=>{this.isDoneScrolling(t)||this.activeScroll.set(t,r)};this.handleEndDragScroll=({scrollEntitySide:t})=>{this.activeScroll.delete(t)};this.dndManager=t,this.instanceId=Re(),this.scopeId=r,this.triggerTypes=n,this.scrollState=on,this.parent=i,this.activeScroll=new Map,this.pollForNodes(a)}pollForNodes(t){!t()||this.parent&&!this.parent.observerHandlers?this.dndManager.win.requestAnimationFrame(()=>this.pollForNodes(t)):this.initNodes(t())}initNodes(t){this.scrollEl=t,this.scrollEl.dataset.hitboxid=this.instanceId,this.scrollEl.dataset.scrollid=this.instanceId,this.top=this.createScrollEntity("top"),this.right=this.createScrollEntity("right"),this.bottom=this.createScrollEntity("bottom"),this.left=this.createScrollEntity("left"),this.bindScrollHandlers(),this.observerHandlers=new Map,this.observer=new IntersectionObserver(r=>{r.forEach(n=>{var a;let i=(a=n.target.dataset)==null?void 0:a.hitboxid;if(i&&this.observerHandlers.has(i)){let o=this.observerHandlers.get(i);o&&o(n)}})},{root:t,threshold:.1}),this.scrollEl.addEventListener("scroll",this.onScroll,{passive:!0,capture:!1}),this.dndManager.emitter.on("scrollResize",this.onScroll),this.scrollEl.win.setTimeout(()=>{this.onScroll()}),this.dndManager.observeResize(this.scrollEl),this.parent?this.parent.registerObserverHandler(this.instanceId,this.scrollEl,r=>{r.isIntersecting?this.handleEntityRegistration():this.handleEntityUnregistration()}):this.handleEntityRegistration()}destroy(){var t;this.handleEntityUnregistration(),this.observer.disconnect(),this.unbindScrollHandlers(),this.scrollEl.removeEventListener("scroll",this.onScroll),this.dndManager.emitter.off("scrollResize",this.onScroll),(t=this.parent)==null||t.unregisterObserverHandler(this.instanceId,this.scrollEl),this.dndManager.unobserveResize(this.scrollEl)}handleEntityRegistration(){Ds.forEach(t=>{let r=Ze(this.scrollEl),n=this.getId(t),i=this.dndManager.scrollEntities.has(n),a=this.isDoneScrolling(t);!a&&!i?this.dndManager.registerScrollEntity(n,this[t],r):a&&i&&this.dndManager.unregisterScrollEntity(n,r)})}handleEntityUnregistration(){Ds.forEach(t=>{let r=Ze(this.scrollEl),n=this.getId(t);this.dndManager.unregisterScrollEntity(n,r)})}registerObserverHandler(t,r,n){this.observerHandlers.set(t,n),this.observer.observe(r)}unregisterObserverHandler(t,r){this.observerHandlers.delete(t),this.observer.unobserve(r)}bindScrollHandlers(){Ds.forEach(t=>{let r=this.getId(t);this.dndManager.dragManager.emitter.on("beginDragScroll",this.handleBeginDragScroll,r),this.dndManager.dragManager.emitter.on("updateDragScroll",this.handleUpdateDragScroll,r),this.dndManager.dragManager.emitter.on("endDragScroll",this.handleEndDragScroll,r),this.dndManager.dragManager.emitter.on("dragEnd",this.onDragEnd)})}unbindScrollHandlers(){Ds.forEach(t=>{let r=this.getId(t);this.dndManager.dragManager.emitter.off("beginDragScroll",this.handleBeginDragScroll,r),this.dndManager.dragManager.emitter.off("updateDragScroll",this.handleUpdateDragScroll,r),this.dndManager.dragManager.emitter.off("endDragScroll",this.handleEndDragScroll,r),this.dndManager.dragManager.emitter.off("dragEnd",this.onDragEnd)})}isDoneScrolling(t){switch(t){case"top":return this.scrollState.y===0;case"right":return this.scrollState.x===this.scrollState.maxX;case"bottom":return this.scrollState.y===this.scrollState.maxY;case"left":return this.scrollState.x===0}}handleDragScroll(){this.activeScroll.size!==0&&this.scrollEl.win.requestAnimationFrame(()=>{let t={left:0,top:0};this.activeScroll.forEach((r,n)=>{if(this.isDoneScrolling(n))return this.activeScroll.delete(n);let i=["left","right"].includes(n)?"left":"top",a=["right","bottom"].includes(n);t[i]=a?Math.max(Ts-Ts*r/35,0):Math.min(-Ts+Ts*r/35,0)}),this.scrollEl.scrollBy(t),this.scrollState=Kl(this.scrollEl),this.handleEntityRegistration(),this.handleDragScroll()})}getId(t){return`${this.instanceId}-${t}`}getPath(t){var r,n,i,a;switch(t){case"right":return[...((r=this.parent)==null?void 0:r.getPath())||[],1];case"bottom":return[...((n=this.parent)==null?void 0:n.getPath())||[],2];case"left":return[...((i=this.parent)==null?void 0:i.getPath())||[],3]}return[...((a=this.parent)==null?void 0:a.getPath())||[],0]}getScrollShift(){var r,n,i;let t=(r=this.parent)==null?void 0:r.getScrollShift();return{x:Xe((n=this.parent)==null?void 0:n.scrollState.x)+Xe(t==null?void 0:t.x),y:Xe((i=this.parent)==null?void 0:i.scrollState.y)+Xe(t==null?void 0:t.y)}}createScrollEntity(t){var n,i;let r=this;return{scopeId:this.scopeId,entityId:r.getId(t),initial:Hl(this.scrollEl.getBoundingClientRect(),((n=this.parent)==null?void 0:n.scrollState)||on,((i=this.parent)==null?void 0:i.getScrollShift())||Pn,t),getParentScrollState(){var a;return((a=r.parent)==null?void 0:a.scrollState)||on},getParentScrollShift(){var a;return((a=r.parent)==null?void 0:a.getScrollShift())||Pn},recalcInitial(){var a,o;this.initial=Hl(r.scrollEl.getBoundingClientRect(),((a=r.parent)==null?void 0:a.scrollState)||on,((o=r.parent)==null?void 0:o.getScrollShift())||Pn,t)},getHitbox(){return wo(this.initial[0],this.initial[1],this.initial[2],this.initial[3],this.getParentScrollState(),this.getParentScrollShift())},getPath(){return r.getPath(t)},getData(){return{id:r.getId(t),type:pC,side:t,accepts:r.triggerTypes||[],scrollContainer:r.scrollEl,win:Ze(r.scrollEl)}}}}};function Zy({scrollRef:e,triggerTypes:t,children:r}){let n=F.useContext(kt),i=F.useContext(pr),a=F.useContext(aa),o=F.useRef(),s=F.useMemo(()=>{if(n){o.current&&o.current.destroy();let u=new fd(n,i,t||[],a,()=>e.current);return o.current=u,u}return null},[n,i,e,t,a]);return F.useEffect(()=>()=>{var u;return(u=o.current)==null?void 0:u.destroy()},[]),s?g(aa.Provider,{value:s},r):null}h();function eb({children:e}){let t=F.useMemo(()=>new ia,[]);return g(oa.Provider,{value:t},e)}function tb(e,t){let r=F.useContext(pr),n=F.useRef(null),i=F.useContext(oa),a=o=>{n.current=o,n.current&&o.win.requestAnimationFrame(()=>{let s=i.getScrollState(e);s&&(s.x!==0||s.y!==0)&&(n.current.scrollLeft=s.x,n.current.scrollTop=s.y)})};return F.useEffect(()=>{let o=n.current;if(!o)return;let s=ss(o.win,u=>{let l=u.target;i.setScrollState(r,e,{x:l.scrollLeft,y:l.scrollTop})});return o.addEventListener("scroll",s),()=>{o.removeEventListener("scroll",s)}},[i,e,t]),{setRef:a,scrollRef:n}}function Ms({className:e,children:t,triggerTypes:r,isStatic:n,id:i,index:a}){let{setRef:o,scrollRef:s}=tb(i,a);return g("div",{ref:o,className:mt([e,$("scroll-container")])},n?t:g(Zy,{scrollRef:s,triggerTypes:r},t))}h();h();var pd={width:0,height:0},hC=100,hd=class{constructor(t,r,n){this.hitboxDimensions=pd;this.handleDragStart=({dragEntity:t,dragEntityMargin:r,dragOriginHitbox:n})=>{let i=t==null?void 0:t.entityId,a=i?this.sortables.has(i):null;!t||!a||!n||(this.setSortState(!0),this.hitboxDimensions=$l(n,r),this.activatePlaceholder(this.hitboxDimensions,ln.none),this.sortables.forEach(([o,s,u])=>{let l=ta(t.getPath(),o.getPath()),c=o.entityId;if(l===an.Self)return this.hidden.add(c),this.hideDraggingEntity(u);l===an.After&&(this.shifted.has(c)||this.shifted.add(c),this.shiftEl(s,ln.none,this.hitboxDimensions))}))};this.dragEndTimeout=0;this.handleDragEnd=({primaryIntersection:t,dragPosition:r,dragOriginHitbox:n,dragEntity:i})=>{if(!this.isSorting||!r||!n||!i){if(!t&&i&&this.sortables.has(i.entityId))return this.resetSelf({maintainHidden:!1});if(t&&i){let s=(t==null?void 0:t.getHitbox())||n,u=_i({position:r,destination:{x:s[0],y:s[1]}});return this.dndManager.win.setTimeout(()=>{this.resetSelf({maintainHidden:!1})},u)}return this.resetSelf({maintainHidden:!0})}this.dndManager.win.clearTimeout(this.dragEnterTimeout),this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEndTimeout);let a=(t==null?void 0:t.getHitbox())||n,o=i.scopeId==="htmldnd"?0:_i({position:r,destination:{x:a[0],y:a[1]}});this.dragEndTimeout=this.dndManager.win.setTimeout(()=>{let s=i.entityId.split(":::").pop(),u=t==null?void 0:t.entityId.split(":::").pop();t&&this.sortables.has(t.entityId)&&u!==s&&this.dndManager.onDrop(i,t),this.resetSelf({maintainHidden:!1,shiftTransition:ln.none,placeholderTransition:ln.none})},o),this.hitboxDimensions=pd};this.dragEnterTimeout=0;this.handleDragEnter=({dragEntity:t,dragEntityMargin:r,dragOriginHitbox:n,primaryIntersection:i})=>{let a=i==null?void 0:i.entityId,o=a?this.sortables.has(a):null;if(!t||!i||!o||!n){!o&&this.isSorting&&this.resetSelf({maintainHidden:!0,maintainPlaceholder:!0});return}t.entityId!==i.entityId&&(this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEnterTimeout),this.dragEnterTimeout=this.dndManager.win.setTimeout(()=>{this.setSortState(!0),this.hitboxDimensions=$l(n,r),this.activatePlaceholder(this.hitboxDimensions,ln.placeholder),this.sortables.forEach(([s,u])=>{let l=ta(i.getPath(),s.getPath()),c=s.entityId;!this.hidden.has(c)&&(l===an.Self||l===an.After)?this.shifted.has(c)||(this.shifted.add(c),this.shiftEl(u,ln.outOfTheWay,this.hitboxDimensions)):this.shifted.has(c)&&(this.shifted.delete(c),this.resetEl(u))})},10))};this.dragLeaveTimeout=0;this.handleDragLeave=()=>{!this.isSorting||(this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEnterTimeout),this.dragLeaveTimeout=this.dndManager.win.setTimeout(()=>{this.resetSelf({maintainHidden:!0,maintainPlaceholder:!0})},hC),this.hitboxDimensions=pd)};this.instanceId=Re(),this.dndManager=t,this.sortables=new Map,this.shifted=new Set,this.hidden=new Set,this.isSorting=!1,this.axis=r,this.placeholder=null,this.sortListeners=n?[n]:[],t.dragManager.emitter.on("dragStart",this.handleDragStart),t.dragManager.emitter.on("dragEnd",this.handleDragEnd),t.dragManager.emitter.on("dragEnter",this.handleDragEnter),t.dragManager.emitter.on("dragLeave",this.handleDragLeave)}destroy(){this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEndTimeout),this.dndManager.dragManager.emitter.off("dragStart",this.handleDragStart),this.dndManager.dragManager.emitter.off("dragEnd",this.handleDragEnd),this.dndManager.dragManager.emitter.off("dragEnter",this.handleDragEnter),this.dndManager.dragManager.emitter.off("dragLeave",this.handleDragLeave)}registerSortable(t,r,n,i){let a=r.getData().type==="placeholder";this.sortables.set(t,[r,n,i]),a?(this.placeholder=[r,n,i],i.dataset.axis=this.axis,Dn(i,"transition",ln.none)):Dn(n,"transition",ln.none)}unregisterSortable(t){this.sortables.delete(t)}resetSelf({maintainHidden:t,maintainPlaceholder:r,shiftTransition:n,placeholderTransition:i}){this.isSorting&&this.setSortState(!1),this.isPlaceholderActive&&!r&&this.deactivatePlaceholder(i),this.shifted.size>0&&(this.shifted.forEach(a=>{if(this.sortables.has(a)){let[,o]=this.sortables.get(a);this.resetEl(o,n)}}),this.shifted.clear()),!t&&this.hidden.size>0&&(this.hidden.forEach(a=>{if(this.sortables.has(a)){let[,,o]=this.sortables.get(a);this.resetEl(o,n)}}),this.hidden.clear())}activatePlaceholder(t,r){if(this.placeholder){let n=this.axis==="horizontal",[,,i]=this.placeholder;Dn(i,"transition",r),Dn(i,n?"width":"height",`${n?t.width:t.height}px`),this.isPlaceholderActive=!0}}deactivatePlaceholder(t=ln.placeholder){if(this.placeholder){let[,,r]=this.placeholder;Dn(r,"transition",t),ls(r,"width"),ls(r,"height"),this.isPlaceholderActive=!1}}hideDraggingEntity(t){Dn(t,"display","none")}shiftEl(t,r,n){let i=this.axis==="horizontal"?`translate3d(${n.width}px, 0, 0)`:`translate3d(0, ${n.height}px, 0)`;Dn(t,"transition",r),Dn(t,"transform",i)}resetEl(t,r=ln.outOfTheWay){Dn(t,"transition",r),Dn(t,"transform","translate3d(0, 0, 0)"),ls(t,"display")}addSortNotifier(t){this.sortListeners.push(t)}removeSortNotifier(t){this.sortListeners=this.sortListeners.filter(r=>r!==t)}setSortState(t){this.isSorting!==t&&(this.isSorting=t,this.sortListeners.forEach(r=>r(t)))}};function Ii({axis:e,children:t,onSortChange:r}){let n=F.useContext(kt),i=F.useRef(),a=F.useMemo(()=>{if(n){i.current&&i.current.destroy();let o=new hd(n,e,r);return i.current=o,o}return null},[n,e,r]);return F.useEffect(()=>()=>{var o;return(o=i.current)==null?void 0:o.destroy()},[]),a?g(vo.Provider,{value:a},t):null}h();function Ai({index:e,accepts:t,className:r,isStatic:n}){let i=F.useRef(null),a=F.useRef(null),o=F.useMemo(()=>({id:Re(),type:"placeholder",accepts:t}),t);return g("div",{ref:a,className:mt([r,$("placeholder")])},g("div",{ref:i},!n&&g(hr,{elementRef:i,measureRef:a,id:o.id,index:e,data:o})))}h();h();h();Mr();Mr();function nb(e,t){for(var r in t)e[r]=t[r];return e}function md(e,t){for(var r in e)if(r!=="__source"&&!(r in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function gd(e){this.props=e}function mC(e,t){function r(i){var a=this.props.ref,o=a==i.ref;return!o&&a&&(a.call?a(null):a.current=null),t?!t(this.props,i)||!o:md(this.props,i)}function n(i){return this.shouldComponentUpdate=r,g(e,i)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(gd.prototype=new pt).isPureReactComponent=!0,gd.prototype.shouldComponentUpdate=function(e,t){return md(this.props,e)||md(this.state,t)};var rb=fe.__b;fe.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),rb&&rb(e)};var gC=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function vC(e){function t(r){var n=nb({},r);return delete n.ref,e(n,r.ref||null)}return t.$$typeof=gC,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var ib=function(e,t){return e==null?null:wt(wt(e).map(t))},yC={map:ib,forEach:ib,count:function(e){return e?wt(e).length:0},only:function(e){var t=wt(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:wt},bC=fe.__e;fe.__e=function(e,t,r,n){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e==null&&(t.__e=r.__e,t.__k=r.__k),i.__c(e,t)}bC(e,t,r,n)};var ab=fe.unmount;function Is(){this.__u=0,this.t=null,this.__b=null}function ob(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function wC(e){var t,r,n;function i(a){if(t||(t=e()).then(function(o){r=o.default||o},function(o){n=o}),n)throw n;if(!r)throw t;return g(r,a)}return i.displayName="Lazy",i.__f=!0,i}function Fa(){this.u=null,this.o=null}fe.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),ab&&ab(e)},(Is.prototype=new pt).__c=function(e,t){var r=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(r);var i=ob(n.__v),a=!1,o=function(){a||(a=!0,r.__R=null,i?i(s):s())};r.__R=o;var s=function(){if(!--n.__u){if(n.state.__e){var l=n.state.__e;n.__v.__k[0]=function d(f,p,m){return f&&(f.__v=null,f.__k=f.__k&&f.__k.map(function(y){return d(y,p,m)}),f.__c&&f.__c.__P===p&&(f.__e&&m.insertBefore(f.__e,f.__d),f.__c.__e=!0,f.__c.__P=m)),f}(l,l.__c.__P,l.__c.__O)}var c;for(n.setState({__e:n.__b=null});c=n.t.pop();)c.forceUpdate()}},u=t.__h===!0;n.__u++||u||n.setState({__e:n.__b=n.__v.__k[0]}),e.then(o,o)},Is.prototype.componentWillUnmount=function(){this.t=[]},Is.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=function a(o,s,u){return o&&(o.__c&&o.__c.__H&&(o.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),o.__c.__H=null),(o=nb({},o)).__c!=null&&(o.__c.__P===u&&(o.__c.__P=s),o.__c=null),o.__k=o.__k&&o.__k.map(function(l){return a(l,s,u)})),o}(this.__b,r,n.__O=n.__P)}this.__b=null}var i=t.__e&&g(S,null,e.fallback);return i&&(i.__h=null),[g(S,null,t.__e?null:e.children),i]};var sb=function(e,t,r){if(++r[1]===r[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(r=e.u;r;){for(;r.length>3;)r.pop()();if(r[1]>>1,1),t.i.removeChild(n)}}),kn(g(EC,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function kC(e,t){var r=g(xC,{__v:e,i:t});return r.containerInfo=t,r}(Fa.prototype=new pt).__e=function(e){var t=this,r=ob(t.__v),n=t.o.get(e);return n[0]++,function(i){var a=function(){t.props.revealOrder?(n.push(i),sb(t,e,n)):i()};r?r(a):a()}},Fa.prototype.render=function(e){this.u=null,this.o=new Map;var t=wt(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var r=t.length;r--;)this.o.set(t[r],this.u=[1,0,this.u]);return e.children},Fa.prototype.componentDidUpdate=Fa.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,r){sb(e,r,t)})};var lb=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,SC=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|shape|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,_C=typeof document!="undefined",CC=function(e){return(typeof Symbol!="undefined"&&typeof Symbol()=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function TC(e,t,r){return t.__k==null&&(t.textContent=""),kn(e,t),typeof r=="function"&&r(),e?e.__c:null}function DC(e,t,r){return Ji(e,t),typeof r=="function"&&r(),e?e.__c:null}pt.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(pt.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var cb=fe.event;function MC(){}function IC(){return this.cancelBubble}function AC(){return this.defaultPrevented}fe.event=function(e){return cb&&(e=cb(e)),e.persist=MC,e.isPropagationStopped=IC,e.isDefaultPrevented=AC,e.nativeEvent=e};var ub,db={configurable:!0,get:function(){return this.class}},fb=fe.vnode;fe.vnode=function(e){var t=e.type,r=e.props,n=r;if(typeof t=="string"){var i=t.indexOf("-")===-1;for(var a in n={},r){var o=r[a];_C&&a==="children"&&t==="noscript"||a==="value"&&"defaultValue"in r&&o==null||(a==="defaultValue"&&"value"in r&&r.value==null?a="value":a==="download"&&o===!0?o="":/ondoubleclick/i.test(a)?a="ondblclick":/^onchange(textarea|input)/i.test(a+t)&&!CC(r.type)?a="oninput":/^onfocus$/i.test(a)?a="onfocusin":/^onblur$/i.test(a)?a="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(a)?a=a.toLowerCase():i&&SC.test(a)?a=a.replace(/[A-Z0-9]/,"-$&").toLowerCase():o===null&&(o=void 0),/^oninput$/i.test(a)&&(a=a.toLowerCase(),n[a]&&(a="oninputCapture")),n[a]=o)}t=="select"&&n.multiple&&Array.isArray(n.value)&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.value.indexOf(s.props.value)!=-1})),t=="select"&&n.defaultValue!=null&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.multiple?n.defaultValue.indexOf(s.props.value)!=-1:n.defaultValue==s.props.value})),e.props=n,r.class!=r.className&&(db.enumerable="className"in r,r.className!=null&&(n.class=r.className),Object.defineProperty(n,"className",db))}e.$$typeof=lb,fb&&fb(e)};var pb=fe.__r;fe.__r=function(e){pb&&pb(e),ub=e.__c};var LC={ReactCurrentDispatcher:{current:{readContext:function(e){return ub.__n[e.__c].props.value}}}};function PC(e){return g.bind(null,e)}function hb(e){return!!e&&e.$$typeof===lb}function FC(e){return hb(e)?io.apply(null,arguments):e}function NC(e){return!!e.__k&&(kn(null,e),!0)}function OC(e){return e&&(e.base||e.nodeType===1&&e)||null}var RC=function(e,t){return e(t)},HC=function(e,t){return e(t)};var it={useState:sr,useReducer:Qi,useEffect:Sn,useLayoutEffect:Ir,useRef:Xt,useImperativeHandle:oo,useMemo:lr,useCallback:cr,useContext:so,useDebugValue:lo,version:"17.0.2",Children:yC,render:TC,hydrate:DC,unmountComponentAtNode:NC,createPortal:kC,createElement:g,createContext:ni,createFactory:PC,cloneElement:FC,createRef:ei,Fragment:S,isValidElement:hb,findDOMNode:OC,Component:pt,PureComponent:gd,memo:mC,forwardRef:vC,flushSync:HC,unstable_batchedUpdates:RC,StrictMode:S,Suspense:Is,SuspenseList:Fa,lazy:wC,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:LC};var BC=function(){if(typeof window=="undefined"||typeof window.addEventListener!="function")return!1;var e=!1,t=Object.defineProperty({},"passive",{get:function(){e=!0}}),r=function(){return null};return window.addEventListener("test",r,t),window.removeEventListener("test",r,t),e},KC="ignore-onclickoutside",mb=function(t,r){var n;return(n=t.classList)==null?void 0:n.contains(r)},gb=function(t,r){for(var n=t.target||t;n;){if(Array.isArray(r)){if(r.some(function(i){return mb(n,i)}))return!0}else if(mb(n,r))return!0;n=n.parentElement}return!1},$C=function(t){return document.documentElement.clientWidth<=t.clientX||document.documentElement.clientHeight<=t.clientY},vb=function(t){return t.includes("touch")&&BC()?{passive:!0}:!1},UC=function(t,r){var n=r===void 0?{}:r,i=n.refs,a=n.disabled,o=n.eventTypes,s=o===void 0?["mousedown","touchstart"]:o,u=n.excludeScrollbar,l=n.ignoreClass,c=l===void 0?KC:l,d=n.detectIFrame,f=d===void 0?!0:d,p=sr([]),m=p[0],y=p[1],b=Xt(t);b.current=t;var x=cr(function(D){return y(function(C){return[].concat(C,[{current:D}])})},[]);return Sn(function(){if(!(!(i!=null&&i.length)&&!m.length)){var D=function(){var O=[];return(i||m).forEach(function(W){var z=W.current;return z&&O.push(z)}),O},C=function(O){!gb(O,c)&&!(u&&$C(O))&&D().every(function(W){return!W.contains(O.target)})&&b.current(O)},A=function(O){return setTimeout(function(){var W=document,z=W.activeElement;(z==null?void 0:z.tagName)==="IFRAME"&&!gb(z,c)&&!D().includes(z)&&b.current(O)},0)},N=function(){s.forEach(function(O){return document.removeEventListener(O,C,vb(O))}),f&&window.removeEventListener("blur",A)};if(a){N();return}return s.forEach(function(T){return document.addEventListener(T,C,vb(T))}),f&&window.addEventListener("blur",A),function(){return N()}}},[m,c,u,a,f,JSON.stringify(s)]),x},Li=UC;function vd({addItems:e,isInputVisible:t,setIsInputVisible:r,hideButton:n}){let[i,a]=F.useState(""),{stateManager:o,view:s}=F.useContext(Ve),u=F.useRef(),l=Li(()=>{r(!1)},{ignoreClass:$("ignore-click-outside")}),c=F.useCallback(()=>{a(""),r(!1)},[]),d=async m=>{try{e(await Promise.all(m.map(y=>o.getNewItem(y))))}catch(y){o.setError(y)}},f=m=>{if(!Xn(m,o)){m.preventDefault();let y=i.trim();y&&(d([y]),a(""))}},p=()=>{let m=i.trim();m&&(d([m]),a(""))};return t?g("div",{className:$("item-form"),ref:l},g("div",{className:$("item-input-wrapper")},g(Er,{ref:u,className:$("item-input"),placeholder:B("Card title..."),onEnter:f,onEscape:c,onSubmit:p,value:i,onChange:m=>{a(m.target.value)},onPaste:m=>{ms(m,o,s.getWindow())}}))):n?null:g("div",{className:$("item-button-wrapper")},g("button",{className:$("new-item-button"),onClick:()=>r(!0),onDragOver:m=>{hs(o,m.dataTransfer)&&r(!0)}},g("span",{className:$("item-button-plus")},"+")," ",B("Add a card")))}h();var Db=ge(xt());h();function As(e,t){let r=t.end-t.start;return e.slice(0,t.start)+"\0".repeat(r)+e.slice(t.end)}function yb(e){return e.replace(/\s*\0+\s*/g," ").trim()}function Na(e){return e.trim().replace(/(\r\n|\n)/g,"
")}function Ls(e){return e.replace(/
/g,` -`).trim()}function Wr(e){e=Ls(e);let t=e.match(/^(.*?)\s*\((\d+)\)$/);return t==null?{title:e,maxItems:0}:{title:t[1],maxItems:Number(t[2])}}h();function bb(e){return g("svg",{...e,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16"},g("path",{fill:"currentColor",d:"M5 3h2v2H5zm0 4h2v2H5zm0 4h2v2H5zm4-8h2v2H9zm0 4h2v2H9zm0 4h2v2H9z"}))}h();var yd=ge(xt()),wb=ge(require("obsidian"));var Eb={delete:{description:B("Are you sure you want to delete this list and all its cards?"),confirm:B("Yes, delete list")},archive:{description:B("Are you sure you want to archive this list and all its cards?"),confirm:B("Yes, archive list")},"archive-items":{description:B("Are you sure you want to archive all cards in this list?"),confirm:B("Yes, archive cards")}};function xb({action:e,cancel:t,onAction:r,lane:n}){return F.useEffect(()=>{e&&n.children.length===0&&r()},[e,n.children.length]),!e||e&&n.children.length===0?null:g("div",{className:$("action-confirm-wrapper")},g("div",{className:$("action-confirm-text")},Eb[e].description),g("div",null,g("button",{onClick:r,className:$("confirm-action-button")},Eb[e].confirm),g("button",{onClick:t,className:$("cancel-action-button")},"Cancel")))}function kb({setIsEditing:e,path:t,lane:r}){let{stateManager:n,boardModifiers:i}=F.useContext(Ve),[a,o]=F.useState(null);return{settingsMenu:F.useMemo(()=>new wb.Menu().addItem(u=>{u.setIcon("pencil").setTitle(B("Edit list")).onClick(()=>e(!0))}).addItem(u=>{u.setIcon("documents").setTitle(B("Archive cards")).onClick(()=>o("archive-items"))}).addSeparator().addItem(u=>{u.setIcon("up-and-down-arrows").setTitle(B("Sort by card text")).onClick(()=>{let l=r.children.slice(),c=r.data.sorted===Mn.TitleAsc;l.sort((d,f)=>c?f.data.titleSearch.localeCompare(d.data.titleSearch):d.data.titleSearch.localeCompare(f.data.titleSearch)),i.updateLane(t,(0,yd.default)(r,{children:{$set:l},data:{sorted:{$set:r.data.sorted===Mn.TitleAsc?Mn.TitleDsc:Mn.TitleAsc}}}))})}).addItem(u=>{u.setIcon("up-and-down-arrows").setTitle(B("Sort by date")).onClick(()=>{let l=r.children.slice(),c=r.data.sorted===Mn.DateAsc?-1:1;l.sort((d,f)=>{let p=d.data.metadata.time||d.data.metadata.date,m=f.data.metadata.time||f.data.metadata.date;return p&&!m?-1*c:m&&!p?1*c:!p&&!m?0:(p.isBefore(m)?-1:1)*c}),i.updateLane(t,(0,yd.default)(r,{children:{$set:l},data:{sorted:{$set:r.data.sorted===Mn.DateAsc?Mn.DateDsc:Mn.DateAsc}}}))})}).addSeparator().addItem(u=>{u.setIcon("plus-with-circle").setTitle(B("Insert list before")).onClick(()=>i.insertLane(t,{...wr,id:Re(),children:[],data:{title:"",shouldMarkItemsComplete:!1,forceEditMode:!0}}))}).addItem(u=>{u.setIcon("plus-with-circle").setTitle(B("Insert list after")).onClick(()=>{let l=[...t];l[l.length-1]=l[l.length-1]+1,i.insertLane(l,{...wr,id:Re(),children:[],data:{title:"",shouldMarkItemsComplete:!1,forceEditMode:!0}})})}).addSeparator().addItem(u=>{u.setIcon("sheets-in-box").setTitle(B("Archive list")).onClick(()=>o("archive"))}).addItem(u=>{u.setIcon("trash").setTitle(B("Delete list")).onClick(()=>o("delete"))}),[n,o,t,r]),confirmAction:a,setConfirmAction:o}}h();var Sb=ge(xt());function _b({lane:e,lanePath:t}){let{boardModifiers:r}=F.useContext(Ve);return g("div",{className:$("lane-setting-wrapper")},g("div",{className:$("checkbox-wrapper")},g("div",{className:$("checkbox-label")},B("Mark cards in this list as complete")),g("div",{onClick:()=>r.updateLane(t,(0,Sb.default)(e,{data:{$toggle:["shouldMarkItemsComplete"]}})),className:`checkbox-container ${e.data.shouldMarkItemsComplete?"is-enabled":""}`})))}h();var Cb=ge(require("obsidian"));function Tb({itemCount:e,maxItems:t,isEditing:r,setIsEditing:n,title:i,onChange:a}){let{stateManager:o}=F.useContext(Ve),s=F.useRef(),u=o.getSetting("hide-card-count"),l=p=>{Xn(p,o)||(p.preventDefault(),r&&n(!1))},c=()=>{r&&n(!1)},d=()=>{r&&n(!1)};F.useEffect(()=>{if(r&&s.current){let p=s.current;s.current.focus(),p.selectionStart=p.selectionEnd=p.value.length}},[r]);let f=[$("lane-title-count")];return t&&t{p.preventDefault(),p.stopPropagation();let m=p.target instanceof p.view.HTMLAnchorElement&&p.target.hasClass("internal-link")?p.target.dataset.href:void 0;m&&o.app.workspace.onLinkContextMenu(p,(0,Cb.getLinkpath)(m),o.file.path)}},g(La,{markdownString:i})))),!r&&!u&&g("div",{className:mt(f)},e,t>0&&g(S,null,g("span",{className:$("lane-title-count-separator")},"/"),g("span",{className:$("lane-title-count-limit")},t))))}var Mb=F.memo(function({lane:t,laneIndex:r,dragHandleRef:n,setIsItemInputVisible:i}){let{boardModifiers:a,stateManager:o}=F.useContext(Ve),[s,u]=F.useState(!1),l=Vn(r),{settingsMenu:c,confirmAction:d,setConfirmAction:f}=kb({setIsEditing:u,path:l,lane:t});return F.useEffect(()=>{t.data.forceEditMode&&u(!0)},[t.data.forceEditMode]),g(S,null,g("div",{onDblClick:()=>u(!0),className:$("lane-header-wrapper")},g("div",{className:$("lane-grip"),ref:n},g(bb,null)),g(Tb,{isEditing:s,setIsEditing:u,itemCount:t.children.length,maxItems:t.data.maxItems,title:t.data.title,onChange:p=>{let{title:m,maxItems:y}=Wr(p.target.value);a.updateLane(l,(0,Db.default)(t,{data:{title:{$set:m},maxItems:{$set:y}}}))}}),g("div",{className:$("lane-settings-button-wrapper")},s?g("button",{onClick:()=>{u(!1)},"aria-label":"Close",className:`${$("lane-settings-button")} is-enabled`},g(Kt,{name:"cross"})):g(S,null,i&&g("button",{"aria-label":B("Add a card"),className:$("lane-settings-button"),onClick:()=>{i(!0)},onDragOver:p=>{hs(o,p.dataTransfer)&&i(!0)}},g(Kt,{name:"plus-with-circle"})),g("button",{"aria-label":B("More options"),className:$("lane-settings-button"),onClick:p=>{c.showAtPosition({x:p.clientX,y:p.clientY})}},g(Kt,{name:"vertical-three-dots"}))))),s&&g(_b,{lane:t,lanePath:l}),d&&g(xb,{lane:t,action:d,onAction:()=>{switch(d){case"archive":a.archiveLane(l);break;case"archive-items":a.archiveLaneItems(l);break;case"delete":a.deleteEntity(l);break}f(null)},cancel:()=>f(null)}))});var Ab=[Ge.Item],bd=F.memo(function({isStatic:t,lane:r,laneIndex:n}){let{stateManager:i,boardModifiers:a,view:o}=F.useContext(Ve),[s,u]=F.useState(!1),l=Vn(n),c=i.useSetting("lane-width"),d=i.useSetting("new-card-insertion-method"),f=!!r.data.shouldMarkItemsComplete,p=c?{width:`${c}px`}:void 0,m=F.useRef(null),y=F.useRef(null),b=F.useRef(null),[x,D]=F.useState(!1),C=d==="prepend-compact",A=C||d==="prepend";Ti(y,b);let N=W=>{a[A?"prependItems":"appendItems"]([...l,r.children.length-1],W.map(z=>(0,Ib.default)(z,{data:{isComplete:{$set:f}}}))),o.getWindow().setTimeout(()=>{var ee;let z=(ee=m.current)==null?void 0:ee.getElementsByClassName($("lane-items"));z.length&&Cs([0,A?0:z[0].scrollHeight],{elementToScroll:z[0],speed:200,minDuration:150,easing:Z=>Z===1?1:1-Math.pow(2,-10*Z)})})},T=g(S,null,g(Jy,{items:r.children,isStatic:t,shouldMarkItemsComplete:f}),g(Ai,{accepts:Ab,index:r.children.length,isStatic:t})),O=g(Ms,{id:r.id,index:n,className:mt([$("lane-items"),$("vertical")]),triggerTypes:Ab,isStatic:t},t?T:g(Ii,{onSortChange:D,axis:"vertical"},T));return g("div",{ref:y,className:mt([$("lane-wrapper"),{"is-sorting":x}]),style:p},g("div",{"data-count":r.children.length,ref:m,className:mt([$("lane"),{"will-prepend":A}])},g(Mb,{dragHandleRef:b,laneIndex:n,lane:r,setIsItemInputVisible:C?u:void 0}),A&&g(vd,{addItems:N,hideButton:C,isInputVisible:s,setIsInputVisible:u}),t?O:g(hr,{elementRef:m,measureRef:y,id:r.id,index:n,data:r},O),!A&&g(vd,{addItems:N,isInputVisible:s,setIsInputVisible:u})))}),Lb=F.memo(function({lanes:t}){return g(S,null,t.map((r,n)=>g(bd,{lane:r,laneIndex:n,key:r.id})))});h();h();var Pb=ge(require("obsidian"));h();function Ps(){return{events:{},emit(e,t,r){let n=`${String(e)}${r||""}`,i=this.events[e],a=this.events[n];if(!i&&!a){console.warn("Event emitted with no handler",e,r);return}r&&a&&a.forEach(o=>o(t)),i&&i.forEach(o=>o(t))},on(e,t,r){let n=`${String(e)}${r||""}`,i=this.events[n];return i||(this.events[n]=i=[]),i.push(t),()=>this.off(e,t,r)},off(e,t,r){let n=`${String(e)}${r||""}`,i=this.events[n];i&&(i.splice(i.indexOf(t)>>>0,1),i.length===0&&delete this.events[n])}}}var wd=class{constructor(t,r){this.scrollResizeDebounce=0;this.handleResize=t=>{let r=!1;t.forEach(n=>{let i=Ze(n.target);this.win===i&&(r=!0,n.target.dataset.scrollid&&(this.win.clearTimeout(this.scrollResizeDebounce),this.scrollResizeDebounce=this.win.setTimeout(()=>{var a;((a=this.emitter.events.scrollResize)==null?void 0:a.length)&&this.emitter.emit("scrollResize",null)},50)))}),!!r&&(this.hitboxEntities.forEach(n=>{n.recalcInitial()}),this.scrollEntities.forEach(n=>{n.recalcInitial()}))};this.win=t,this.emitter=Ps(),this.hitboxEntities=new Map,this.scrollEntities=new Map,this.onDrop=r,this.resizeObserver=new ResizeObserver((0,Pb.debounce)(this.handleResize,100,!0)),this.dragManager=new Mu(t,this.emitter,this.hitboxEntities,this.scrollEntities)}destroy(){this.resizeObserver.disconnect()}observeResize(t){this.resizeObserver.observe(t,{box:"border-box"})}unobserveResize(t){this.resizeObserver.unobserve(t)}registerHitboxEntity(t,r,n){n===this.win&&this.hitboxEntities.set(t,r)}registerScrollEntity(t,r,n){n===this.win&&this.scrollEntities.set(t,r)}unregisterHitboxEntity(t,r){r===this.win&&this.hitboxEntities.delete(t)}unregisterScrollEntity(t,r){r===this.win&&this.scrollEntities.delete(t)}};function Fs({win:e,children:t,onDrop:r}){let n=F.useRef(r);n.current=r;let i=F.useMemo(()=>new wd(e,(a,o)=>n.current(a,o)),[]);return F.useEffect(()=>()=>{i.destroy()},[i]),g(kt.Provider,{value:i},g(eb,null,t))}h();function Ed(e,t,r,n,i,a){let o=[r[0]-n[0],r[1]-n[1],r[2]+n[2],r[3]+n[3]];return{transform:a||`translate3d(${e.x-t.x+o[0]}px, ${e.y-t.y+o[1]}px, 0px)`,width:`${o[2]-o[0]}px`,height:`${o[3]-o[1]}px`,transition:i}}function Ns({children:e}){let t=F.useContext(kt),[r,n]=F.useState(),[i,a]=F.useState();return F.useEffect(()=>{if(!t)return;let o=Dp,s=({dragEntity:c,dragOrigin:d,dragPosition:f,dragEntityMargin:p})=>{!c||!f||!d||(o=c.getHitbox(),n(c),a(Ed(f,d,o,p)))},u=({dragOrigin:c,dragPosition:d,dragEntityMargin:f})=>{!d||!c||a(Ed(d,c,o,f))},l=({dragOrigin:c,primaryIntersection:d,dragPosition:f,dragEntityMargin:p})=>{if(d&&f&&c){let m=d.getHitbox(),y={x:m[0],y:m[1]},b=_i({position:f,destination:y}),x=ln.drop(b),D=nv.drop(y);a(Ed(f,c,o,p,x,D)),activeWindow.setTimeout(()=>{n(void 0),a(void 0)},b)}else n(void 0),a(void 0)};return t.dragManager.emitter.on("dragStart",s),t.dragManager.emitter.on("dragMove",u),t.dragManager.emitter.on("dragEnd",l),()=>{t.dragManager.emitter.off("dragStart",s),t.dragManager.emitter.off("dragMove",u),t.dragManager.emitter.off("dragEnd",l)}},[t]),!r||!i?null:F.createPortal(e(r,i),r.getData().win.document.body)}function Fb(){let e=F.useContext(kt),[t,r]=F.useState(!1);return F.useEffect(()=>{let n=()=>{r(!0)},i=({primaryIntersection:a,dragPosition:o})=>{let s=(a==null?void 0:a.getHitbox())||[0,0],u={x:s[0],y:s[1]},l=_i({position:o||u,destination:u});activeWindow.setTimeout(()=>{r(!1)},l)};return e.dragManager.emitter.on("dragStart",n),e.dragManager.emitter.on("dragEnd",i),()=>{e.dragManager.emitter.off("dragStart",n),e.dragManager.emitter.off("dragEnd",i)}},[e]),t}h();var Oa=ge(xt()),Nb=ge(require("obsidian"));function Os(e){let t=r=>{let n=e.getSetting("prepend-archive-format"),i=e.getSetting("prepend-archive-separator"),a=[(0,Nb.moment)().format(n)];i&&a.push(i),a.push(r.data.titleRaw);let o=a.join(" ");return e.updateItemContent(r,o)};return{appendItems:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>Pl(i,r,n))},prependItems:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>kp(i,r,n))},insertItems:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>fr(i,r,n))},splitItem:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>fr(Lr(i,r),r,n))},addLane:r=>{e.app.workspace.trigger("kanban:lane-added",e.file,r),e.setState(n=>Pl(n,[],[r]))},insertLane:(r,n)=>{e.app.workspace.trigger("kanban:lane-added",e.file,n),e.setState(i=>fr(i,r,[n]))},updateLane:(r,n)=>{e.app.workspace.trigger("kanban:lane-updated",e.file,n),e.setState(i=>Fl(i,r,{children:{[r[r.length-1]]:{$set:n}}}))},archiveLane:r=>{e.setState(async n=>{let i=ht(n,r),a=i.children;e.app.workspace.trigger("kanban:lane-archived",e.file,i);try{return(0,Oa.default)(Lr(n,r),{data:{archive:{$unshift:e.getSetting("prepend-archive-date")?await Promise.all(a.map(t)):a}}})}catch(o){return e.setError(o),n}})},archiveLaneItems:r=>{e.setState(async n=>{let a=ht(n,r).children;e.app.workspace.trigger("kanban:lane-cards-archived",e.file,a);try{return(0,Oa.default)(ho(n,r,{children:{$set:[]}}),{data:{archive:{$unshift:e.getSetting("prepend-archive-date")?await Promise.all(a.map(t)):a}}})}catch(o){return e.setError(o),n}})},deleteEntity:r=>{e.setState(n=>{let i=ht(n,r);return e.app.workspace.trigger(`kanban:${i.type}-deleted`,e.file,i),Lr(n,r)})},updateItem:(r,n)=>{e.setState(i=>{let a=ht(i,r);return e.app.workspace.trigger("kanban:card-updated",e.file,a,n),Fl(i,r,{children:{[r[r.length-1]]:{$set:n}}})})},archiveItem:r=>{e.setState(async n=>{let i=ht(n,r);e.app.workspace.trigger("kanban:card-archived",e.file,r,i);try{return(0,Oa.default)(Lr(n,r),{data:{archive:{$push:[e.getSetting("prepend-archive-date")?await t(i):i]}}})}catch(a){return e.setError(a),n}})},duplicateEntity:r=>{e.setState(n=>{let i=ht(n,r);e.app.workspace.trigger(`kanban:${i.type}-duplicated`,e.file,r,i);let a=(0,Oa.default)(i,{id:{$set:Re()}});return fr(n,r,[a])})}}}function Rb(e,t){return g(VC,{win:e,plugin:t})}var WC=F.memo(function({view:t}){return F.createPortal(t.getPortal(),t.contentEl)});function VC({win:e,plugin:t}){let r=t.useViewState(e),n=r.map(a=>g(WC,{key:a.id,view:a})),i=F.useCallback((a,o)=>{if(!a||!o)return;if(a.scopeId==="htmldnd"){let y=a.getData(),b=t.getStateManagerFromViewID(y.viewId,y.win),x=o.getPath(),D=ht(b.state,x.slice(0,-1));(A=>Promise.all(A.map(N=>b.getNewItem(N))))(y.content).then(A=>{let N=A.map(T=>{var O;return(0,Ob.default)(T,{data:{isComplete:{$set:!!((O=D==null?void 0:D.data)==null?void 0:O.shouldMarkItemsComplete)}}})});return b.setState(T=>fr(T,x,N))}).catch(A=>{b.setError(A),console.error(A)});return}let s=a.getPath(),u=o.getPath(),[,l]=a.scopeId.split(":::"),[,c]=o.scopeId.split(":::"),d=a.getData(),f=o.getData();if(l===c){let y=t.getStateManagerFromViewID(a.scopeId,d.win);return t.app.workspace.trigger("kanban:card-moved",y.file,s,u,d),y.setState(b=>{var N;let x=!1,D=xp(b,s,u,T=>T.type===Ge.Item?(x=!0,Ol(b,s,b,u,T)):T);if(!x)return D;let C=u.slice(0,-1),A=ht(b,C);return((N=A==null?void 0:A.data)==null?void 0:N.sorted)!==void 0?ho(D,C,{data:{$unset:["sorted"]}}):D})}let p=t.getStateManagerFromViewID(a.scopeId,d.win),m=t.getStateManagerFromViewID(o.scopeId,f.win);p.setState(y=>{let b=ht(y,s);return m.setState(x=>{let D=b.type===Ge.Item?Ol(y,s,x,u,b):b;return fr(x,u,[D])}),Lr(y,s)})},[r]);if(n.length)return g(Fs,{win:e,onDrop:i},n,g(Ns,null,(a,o)=>{let[s,u]=F.useMemo(()=>{if(a.scopeId==="htmldnd")return[null,null];let l=a.getData(),c=t.getKanbanView(a.scopeId,l.win),d=t.stateManagers.get(c.file),f=ht(d.state,a.getPath()),p=Os(d),m=c.file.path;return[f,{view:c,stateManager:d,boardModifiers:p,filePath:m}]},[a]);return(s==null?void 0:s.type)===Ge.Lane?g(Ve.Provider,{value:u},g("div",{className:$("drag-container"),style:o},g(bd,{lane:s,laneIndex:0,isStatic:!0}))):(s==null?void 0:s.type)===Ge.Item?g(Ve.Provider,{value:u},g("div",{className:$("drag-container"),style:o},g(dd,{item:s,itemIndex:0,isStatic:!0}))):g("div",null)}))}h();var Rd=ge(xt()),_w=ge(require("obsidian"));h();var jb=ge(xt()),qb=ge(require("obsidian")),Hs=ge(fc());h();function Rs({id:e,children:t}){let r=F.useContext(oa),n=F.useMemo(()=>e||Re(),[e]);return F.useEffect(()=>()=>{r.unmountScope(e)},[e]),g(pr.Provider,{value:n},t)}h();var gn="kanban-plugin",Hb;(function(t){t[t.List=0]="List"})(Hb||(Hb={}));var Bb=`**${B("Complete")}**`,Kb="***",xd=["---","",`${gn}: basic`,"","---","",""].join(` -`);function $b(e){return["","","%% kanban:settings","```",JSON.stringify(e),"```","%%"].join(` -`)}function Ub(e,t,r){let n=e.innerText.trim();if((t==null?void 0:t.length)&&(n+=" "+t.join(" ")),r){let i=Object.keys(r).join(" "),a=Object.values(r).map(o=>Array.isArray(o.value)?o.value.join(" "):o.value.toString()).join(" ");n+=" "+i+" "+a}return n.toLocaleLowerCase()}function zC(e,t,r){var n,i,a;if(e.plugins.enabledPlugins.has("dataview")&&((a=(i=(n=e.plugins)==null?void 0:n.plugins)==null?void 0:i.dataview)==null?void 0:a.api))return e.plugins.plugins.dataview.api.page(t.path,r.path)}function Wb(e,t){if(!e)return null;if(e[t])return e[t];let r=t.split("."),n=e;for(let i of r)if(typeof n=="object"&&i in n)n=n[i];else{n=null;break}return n}function kd(e,t){let r=e.getSetting("metadata-keys");if(!r.length)return{};if(!t)return{};let n=e.app.metadataCache.getFileCache(t),i=zC(e.app,t,e.file);if(!n&&!i)return{};let a={},o={},s={},u=[],l=!1;return r.forEach(c=>{var p;if(s[c.metadataKey])return;if(s[c.metadataKey]=!0,c.metadataKey==="tags"){let m=(n==null?void 0:n.tags)||[];if(Array.isArray((p=n==null?void 0:n.frontmatter)==null?void 0:p.tags)&&(m=[].concat(m,n.frontmatter.tags.map(y=>({tag:`#${y}`})))),(m==null?void 0:m.length)===0)return;u.push(c.metadataKey),a.tags={...c,value:m.map(y=>y.tag).filter(y=>o[y]?!1:(o[y]=!0,!0))},l=!0;return}let d=Wb(n==null?void 0:n.frontmatter,c.metadataKey),f=Wb(i,c.metadataKey);if(d)u.push(c.metadataKey),a[c.metadataKey]={...c,value:d},l=!0;else if(f){let m=i[c.metadataKey],y=m.values||m.val||m;if(y===m&&typeof y=="object")y={...m};else if(!Array.isArray(y)&&typeof y!="string"&&typeof y!="number")return;u.push(c.metadataKey),a[c.metadataKey]={...c,value:y},l=!0}}),{fileMetadata:l?a:void 0,fileMetadataOrder:u}}function Vb(e,t){return!e&&t?!0:!["metadata-keys","date-trigger","time-trigger","link-date-to-daily-note","date-format","time-format","hide-date-in-title","hide-tags-in-title","hide-card-count"].every(n=>e[n]===t[n])}h();function zb({onNewLane:e,closeLaneForm:t}){let{boardModifiers:r,stateManager:n}=F.useContext(Ve),[i,a]=F.useState(!1),[o,s]=F.useState(""),u=F.useRef(),l=Li(()=>{t()},{ignoreClass:$("ignore-click-outside")});F.useLayoutEffect(()=>{var d;(d=u.current)==null||d.focus()},[]);let c=()=>{r.addLane({...wr,id:Re(),children:[],data:{...Wr(o),shouldMarkItemsComplete:i}}),s(""),a(!1),e()};return g("div",{ref:l,className:$("lane-form-wrapper")},g("div",{className:$("lane-input-wrapper")},g(Er,{ref:u,className:$("lane-input"),onChange:d=>s(d.target.value),onEnter:d=>{Xn(d,n)||(d.preventDefault(),c())},onSubmit:()=>{c()},onEscape:t,value:o})),g("div",{className:$("checkbox-wrapper")},g("div",{className:$("checkbox-label")},B("Mark cards in this list as complete")),g("div",{onClick:()=>a(!i),className:`checkbox-container ${i?"is-enabled":""}`})),g("div",{className:$("lane-input-actions")},g("button",{className:$("lane-action-add"),onClick:c},B("Add list")),g("button",{className:$("lane-action-cancel"),onClick:t},B("Cancel"))))}var jC=[Ge.Item,Ge.Lane],qC=[Ge.Lane],Yb=({view:e,stateManager:t})=>{let r=t.useState(),n=Fb(),i=F.useRef(null),a=F.useRef(null),[o,s]=F.useState(""),[u,l]=F.useState(!1),[c,d]=F.useState(""),[f,p]=F.useState((r==null?void 0:r.children.length)===0),m=t.file.path,y=t.useSetting("max-archive-size"),b=F.useCallback(()=>{(r==null?void 0:r.children.length)>0&&p(!1)},[r==null?void 0:r.children.length]);F.useEffect(()=>{(r==null?void 0:r.children.length)===0&&!t.hasError()&&p(!0)},[r==null?void 0:r.children.length,t]);let x=F.useCallback(()=>{var O;(O=i.current)==null||O.win.setTimeout(()=>{var z;let W=(z=i.current)==null?void 0:z.getElementsByClassName($("board"));(W==null?void 0:W.length)&&Cs([W[0].scrollWidth,0],{elementToScroll:W[0],speed:300,minDuration:150,easing:ee=>ee===1?1:1-Math.pow(2,-10*ee)})})},[]);F.useEffect(()=>{let O=z=>{z==="editor:open-search"&&l(ee=>!ee)},W=()=>{p(!0)};return e.emitter.on("hotkey",O),e.emitter.on("showLaneForm",W),()=>{e.emitter.off("hotkey",O),e.emitter.off("showLaneForm",W)}},[e]),F.useEffect(()=>{var O;u&&((O=a.current)==null||O.focus())},[u]),F.useEffect(()=>{let O=e.getWindow(),W=o.trim(),z;return W?z=O.setTimeout(()=>{d(W)},250):d(""),()=>{O.clearTimeout(z)}},[o,e]),F.useEffect(()=>{y===void 0||y===-1||typeof y=="number"&&(r==null?void 0:r.data.archive.length)>y&&t.setState(O=>(0,jb.default)(O,{data:{archive:{$set:O.data.archive.slice(y*-1)}}}))},[r==null?void 0:r.data.archive.length,y]);let D=F.useMemo(()=>Os(t),[t]),C=F.useCallback(O=>{let W=O.target;W.tagName==="A"&&W.hasClass("internal-link")&&e.app.workspace.trigger("hover-link",{event:O,source:gn,hoverParent:e,targetEl:W,linktext:W.getAttr("href"),sourcePath:e.file.path})},[e]),A=F.useCallback(async O=>{if(O.type==="auxclick"||O.button===2)return;let W=O.target,z=W.tagName==="A"?W:W.closest("a");if(!!z){if(z.hasClass("file-link")){O.preventDefault();let ee=z.getAttribute("href"),Z=Ur(ee),le=typeof ee=="string"&&e.app.metadataCache.getFirstLinkpathDest(Z.root,e.file.path);if(!le)return;t.app.openWithDefaultApp(le.path);return}if(z.hasClass("internal-link")){O.preventDefault();let ee=z.getAttr("href"),Z=O.button===1||O.ctrlKey||O.metaKey;if(z.hasClass("is-unresolved")&&(0,Hs.appHasDailyNotesPluginLoaded)()){let X=t.getSetting("date-format"),G=(0,qb.moment)(ee,X,!0);if(G.isValid()){try{let re=await(0,Hs.createDailyNote)(G);await(Z?app.workspace.getLeaf(!0):app.workspace.getLeaf(!1)).openFile(re,{active:!0})}catch(re){console.error(re),t.setError(re)}return}}t.app.workspace.openLinkText(ee,m,Z);return}if(z.hasClass("tag")){O.preventDefault(),t.app.internalPlugins.getPluginById("global-search").instance.openGlobalSearch(`tag:${z.getAttr("href")}`);return}z.hasClass("external-link")&&(O.preventDefault(),window.open(z.getAttr("href"),"_blank"))}},[t,m]),N=F.useMemo(()=>({view:e,stateManager:t,boardModifiers:D,filePath:m}),[e,t,D,m]),T=iv(t);return r==null?g("div",{className:$("loading")},g("div",{className:"sk-pulse"})):r.data.errors.length>0?g("div",null,g("div",null,"Error:"),r.data.errors.map((O,W)=>g("div",{key:W},g("div",null,O.description),g("pre",null,O.stack)))):g(Rs,{id:e.id},g(Ve.Provider,{value:N},g(po.Provider,{value:c?c.toLocaleLowerCase():null},g("div",{ref:i,className:mt([Nl,{"something-is-dragging":n}]),onMouseOver:C,onPointerDown:A,onClick:A,onAuxClick:A,...T},(f||r.children.length===0)&&g(zb,{onNewLane:x,closeLaneForm:b}),u&&g("div",{className:$("search-wrapper")},g("input",{ref:a,value:o,onChange:O=>{s(O.target.value)},onKeyDown:O=>{O.key==="Escape"&&(s(""),d(""),O.target.blur(),l(!1))},type:"text",className:$("filter-input"),placeholder:B("Search...")}),g("button",{className:$("search-cancel-button"),onClick:()=>{s(""),d(""),l(!1)},"aria-label":B("Cancel")},g(Kt,{name:"cross"}))),g(Ms,{id:e.id,className:mt([$("board"),$("horizontal"),{"is-adding-lane":f}]),triggerTypes:jC},g("div",null,g(Ii,{axis:"horizontal"},g(Lb,{lanes:r.children}),g(Ai,{className:$("lane-placeholder"),accepts:qC,index:r.children.length}))))))))};h();var xw=ge(xt()),$e=ge(require("obsidian"));h();var Gb=ge(Jb()),Ks=ge(xt()),kr=ge(require("obsidian"));var $s="@",Us="@@";function YC(e){let t=[];return kr.Vault.recurseChildren(e.vault.getRoot(),r=>{r instanceof kr.TFolder&&t.push({value:r.path,label:r.path,selected:!1,disabled:!1})}),t}function JC(e,t){let r=[],n=t?e.vault.getAbstractFileByPath(t):null;return(!n||!(n instanceof kr.TFolder))&&(n=e.vault.getRoot()),kr.Vault.recurseChildren(n,i=>{i instanceof kr.TFile&&r.push({value:i.path,label:i.basename,selected:!1,disabled:!1})}),r}function Qb(e){let{templateFolder:t,templatesEnabled:r,templaterPlugin:n}=Rl(e),i=JC(e,t),a=YC(e),o="";return!r&&!n&&(o=B("Note: No template plugins are currently enabled.")),{templateFiles:i,vaultFolders:a,templateWarning:o}}function _d({choices:e,key:t,warningText:r,local:n,placeHolderStr:i,manager:a}){return o=>{o.controlEl.createEl("select",{},s=>{s.win.setTimeout(()=>{let u=e,[l,c]=a.getSetting(t,n);if(c){let p=e.findIndex(y=>y.value===c),m=e[p];u=(0,Ks.default)(u,{$splice:[[p,1]],$unshift:[(0,Ks.default)(m,{placeholder:{$set:!0},value:{$set:""},label:{$apply:y=>`${y} (${B("default")})`}})]})}else u=(0,Ks.default)(u,{$unshift:[{placeholder:!0,value:"",label:i,selected:!1,disabled:!1}]});let d=new Gb.default(s,{placeholder:!0,position:"bottom",searchPlaceholderValue:B("Search..."),searchEnabled:u.length>10,choices:u}).setChoiceByValue("");l&&typeof l=="string"&&d.setChoiceByValue(l);let f=p=>{let m=p.detail.value;m?a.applySettingsUpdate({[t]:{$set:m}}):a.applySettingsUpdate({$unset:[t]})};s.addEventListener("change",f),a.cleanupFns.push(()=>{d.destroy(),s.removeEventListener("change",f)})}),r&&o.descEl.createDiv({},u=>{u.createEl("strong",{text:r})})})}}h();var Vr=ge(xt());function Xb({isStatic:e,itemIndex:t,item:r,toggleShouldHideLabel:n,toggleContainsMarkdown:i,deleteKey:a,updateKey:o,updateLabel:s}){let u=F.useRef(null),l=F.useRef(null),c=F.useRef(null);Ti(l,c);let d=g("div",{className:$("setting-controls-wrapper")},g("div",{className:$("setting-input-wrapper")},g("div",null,g("div",{className:$("setting-item-label")},B("Metadata key")),g("input",{type:"text",value:r.data.metadataKey,onChange:f=>o(f.target.value)})),g("div",null,g("div",{className:$("setting-item-label")},B("Display label")),g("input",{type:"text",value:r.data.label,onChange:f=>s(f.target.value)}))),g("div",{className:$("setting-toggle-wrapper")},g("div",null,g("div",{className:`checkbox-container ${r.data.shouldHideLabel?"is-enabled":""}`,onClick:n,"aria-label":B("Hide label")}),g("div",{className:$("setting-item-label")},B("Hide label"))),g("div",null,g("div",{className:`checkbox-container ${r.data.containsMarkdown?"is-enabled":""}`,onClick:i,"aria-label":B("Field contains markdown")}),g("div",{className:$("setting-item-label")},B("Field contains markdown")))));return g("div",{ref:l,className:$("setting-item-wrapper")},g("div",{ref:u,className:$("setting-item")},e?d:g(hr,{elementRef:u,measureRef:l,id:r.id,index:t,data:r},d),g("div",{className:$("setting-button-wrapper")},g("div",{onClick:a,"aria-label":B("Delete")},g(Kt,{name:"cross"})),g("div",{className:"mobile-option-setting-drag-icon","aria-label":B("Drag to rearrange"),ref:c},g(Kt,{name:"three-horizontal-bars"})))))}function GC({onChange:e,inputValue:t,keys:r,setKeys:n}){let i=a=>{e(a),n(a)};return{updateKey:a=>o=>{i((0,Vr.default)(r,{[a]:{data:{metadataKey:{$set:o}}}}))},updateLabel:a=>o=>{i((0,Vr.default)(r,{[a]:{data:{label:{$set:o}}}}))},toggleShouldHideLabel:a=>()=>{i((0,Vr.default)(r,{[a]:{data:{$toggle:["shouldHideLabel"]}}}))},toggleContainsMarkdown:a=>()=>{i((0,Vr.default)(r,{[a]:{data:{$toggle:["containsMarkdown"]}}}))},deleteKey:a=>()=>{i((0,Vr.default)(r,{$splice:[[a,1]]}))},newKey:()=>{i((0,Vr.default)(r,{$push:[{...ds,id:Re(),data:{metadataKey:t,label:"",shouldHideLabel:!1,containsMarkdown:!1}}]}))},moveKey:(a,o)=>{let s=a.getPath(),u=o.getPath(),l=s[s.length-1],c=u[u.length-1];if(l===c)return;let d=r.slice(),[f]=d.splice(l,1);d.splice(c,0,f),i(d)}}}var QC=[Ge.MetadataSetting];function XC({keys:e,portalContainer:t}){return F.createPortal(g(Ns,null,(r,n)=>{let a=r.getPath()[0],o=e[a];return g("div",{className:$("drag-container"),style:n},g(Xb,{item:o,itemIndex:a,updateKey:si,updateLabel:si,toggleShouldHideLabel:si,toggleContainsMarkdown:si,deleteKey:si,isStatic:!0}))}),t)}function ZC({scrollEl:e}){let t=F.useContext(kt);return F.useEffect(()=>{let r=0,n=()=>{e.win.clearTimeout(r),r=e.win.setTimeout(()=>{t.hitboxEntities.forEach(i=>{i.recalcInitial()})},100)};return e.addEventListener("scroll",n,{passive:!0,capture:!1}),()=>{e.removeEventListener("scroll",n)}},[e,t]),null}function e1(e){let[t,r]=F.useState(e.dataKeys),[n,i]=F.useState(""),{getShouldIMEBlockAction:a,...o}=go(),s=Ze(e.scrollEl),{updateKey:u,updateLabel:l,toggleShouldHideLabel:c,toggleContainsMarkdown:d,deleteKey:f,newKey:p,moveKey:m}=GC({onChange:e.onChange,inputValue:n,keys:t,setKeys:r,win:s});return g(S,null,g(Fs,{win:s,onDrop:m},g(ZC,{scrollEl:e.scrollEl}),g(Rs,null,g(Ii,{axis:"vertical"},t.map((y,b)=>g(Xb,{key:y.id,item:y,itemIndex:b,updateKey:u(b),updateLabel:l(b),toggleShouldHideLabel:c(b),toggleContainsMarkdown:d(b),deleteKey:f(b)})),g(Ai,{accepts:QC,index:t.length}))),g(XC,{keys:t,portalContainer:e.portalContainer})),g("div",{className:$("setting-key-input-wrapper")},g("input",{placeholder:B("Metadata key"),type:"text",value:n,onChange:y=>i(y.target.value),onKeyDown:y=>{if(!a()){if(y.key==="Enter"){p(),i("");let b=y.target;b.win.setTimeout(()=>{b.scrollIntoView()});return}y.key==="Escape"&&(i(""),y.target.blur())}},...o}),g("button",{onClick:y=>{p(),i("");let b=y.target;b.win.setTimeout(()=>{b.scrollIntoView()})}},B("Add key"))))}function Zb(e,t,r,n){F.render(g(e1,{dataKeys:r,scrollEl:t,onChange:n,portalContainer:ai(e)}),e)}function ew(e){F.unmountComponentAtNode(e)}h();h();var t1={grad:.9,turn:360,rad:360/(2*Math.PI)},er=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},_t=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},vn=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},tw=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},nw=function(e){return{r:vn(e.r,0,255),g:vn(e.g,0,255),b:vn(e.b,0,255),a:vn(e.a)}},Cd=function(e){return{r:_t(e.r),g:_t(e.g),b:_t(e.b),a:_t(e.a,3)}},n1=/^#([0-9a-f]{3,8})$/i,Ws=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},rw=function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=Math.max(t,r,n),o=a-Math.min(t,r,n),s=o?a===t?(r-n)/o:a===r?2+(n-t)/o:4+(t-r)/o:0;return{h:60*(s<0?s+6:s),s:a?o/a*100:0,v:a/255*100,a:i}},iw=function(e){var t=e.h,r=e.s,n=e.v,i=e.a;t=t/360*6,r/=100,n/=100;var a=Math.floor(t),o=n*(1-r),s=n*(1-(t-a)*r),u=n*(1-(1-t+a)*r),l=a%6;return{r:255*[n,s,o,o,u,n][l],g:255*[u,n,n,s,o,o][l],b:255*[o,o,u,n,n,s][l],a:i}},aw=function(e){return{h:tw(e.h),s:vn(e.s,0,100),l:vn(e.l,0,100),a:vn(e.a)}},ow=function(e){return{h:_t(e.h),s:_t(e.s),l:_t(e.l),a:_t(e.a,3)}},sw=function(e){return iw((r=(t=e).s,{h:t.h,s:(r*=((n=t.l)<50?n:100-n)/100)>0?2*r/(n+r)*100:0,v:n+r,a:t.a}));var t,r,n},Ra=function(e){return{h:(t=rw(e)).h,s:(i=(200-(r=t.s))*(n=t.v)/100)>0&&i<200?r*n/100/(i<=100?i:200-i)*100:0,l:i/2,a:t.a};var t,r,n,i},r1=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,i1=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,a1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,o1=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,lw={string:[[function(e){var t=n1.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?_t(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?_t(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=a1.exec(e)||o1.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:nw({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=r1.exec(e)||i1.exec(e);if(!t)return null;var r,n,i=aw({h:(r=t[1],n=t[2],n===void 0&&(n="deg"),Number(r)*(t1[n]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return sw(i)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=i===void 0?1:i;return er(t)&&er(r)&&er(n)?nw({r:Number(t),g:Number(r),b:Number(n),a:Number(a)}):null},"rgb"],[function(e){var t=e.h,r=e.s,n=e.l,i=e.a,a=i===void 0?1:i;if(!er(t)||!er(r)||!er(n))return null;var o=aw({h:Number(t),s:Number(r),l:Number(n),a:Number(a)});return sw(o)},"hsl"],[function(e){var t=e.h,r=e.s,n=e.v,i=e.a,a=i===void 0?1:i;if(!er(t)||!er(r)||!er(n))return null;var o=function(s){return{h:tw(s.h),s:vn(s.s,0,100),v:vn(s.v,0,100),a:vn(s.a)}}({h:Number(t),s:Number(r),v:Number(n),a:Number(a)});return iw(o)},"hsv"]]},cw=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=Cd(this.rgba),r=t.r,n=t.g,i=t.b,o=(a=t.a)<1?Ws(_t(255*a)):"","#"+Ws(r)+Ws(n)+Ws(i)+o;var t,r,n,i,a,o},e.prototype.toRgb=function(){return Cd(this.rgba)},e.prototype.toRgbString=function(){return t=Cd(this.rgba),r=t.r,n=t.g,i=t.b,(a=t.a)<1?"rgba("+r+", "+n+", "+i+", "+a+")":"rgb("+r+", "+n+", "+i+")";var t,r,n,i,a},e.prototype.toHsl=function(){return ow(Ra(this.rgba))},e.prototype.toHslString=function(){return t=ow(Ra(this.rgba)),r=t.h,n=t.s,i=t.l,(a=t.a)<1?"hsla("+r+", "+n+"%, "+i+"%, "+a+")":"hsl("+r+", "+n+"%, "+i+"%)";var t,r,n,i,a},e.prototype.toHsv=function(){return t=rw(this.rgba),{h:_t(t.h),s:_t(t.s),v:_t(t.v),a:_t(t.a,3)};var t},e.prototype.invert=function(){return In({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),In(Td(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),In(Td(this.rgba,-t))},e.prototype.grayscale=function(){return In(Td(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),In(uw(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),In(uw(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?In({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):_t(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=Ra(this.rgba);return typeof t=="number"?In({h:t,s:r.s,l:r.l,a:r.a}):_t(r.h)},e.prototype.isEqual=function(t){return this.toHex()===In(t).toHex()},e}(),In=function(e){return e instanceof dw?e:new dw(e)};var js=ge(xt());h();function Vs(){return(Vs=Object.assign||function(e){for(var t=1;t=0||(i[r]=e[r]);return i}function Md(e){var t=Xt(e),r=Xt(function(n){t.current&&t.current(n)});return t.current=e,r.current}var Pi=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e0:b.buttons>0)&&i.current?a(pw(i.current,b,s.current)):y(!1)},m=function(){return y(!1)};function y(b){var x=u.current,D=Id(i.current),C=b?D.addEventListener:D.removeEventListener;C(x?"touchmove":"mousemove",p),C(x?"touchend":"mouseup",m)}return[function(b){var x=b.nativeEvent,D=i.current;if(D&&(hw(x),!function(A,N){return N&&!Ha(A)}(x,u.current)&&D)){if(Ha(x)){u.current=!0;var C=x.changedTouches||[];C.length&&(s.current=C[0].identifier)}D.focus(),a(pw(D,x,s.current)),y(!0)}},function(b){var x=b.which||b.keyCode;x<37||x>40||(b.preventDefault(),o({left:x===39?.05:x===37?-.05:0,top:x===40?.05:x===38?-.05:0}))},y]},[o,a]),c=l[0],d=l[1],f=l[2];return Sn(function(){return f},[f]),it.createElement("div",Vs({},n,{onTouchStart:c,onMouseDown:c,className:"react-colorful__interactive",ref:i,onKeyDown:d,tabIndex:0,role:"slider"}))}),zs=function(e){return e.filter(Boolean).join(" ")},Ld=function(e){var t=e.color,r=e.left,n=e.top,i=n===void 0?.5:n,a=zs(["react-colorful__pointer",e.className]);return it.createElement("div",{className:a,style:{top:100*i+"%",left:100*r+"%"}},it.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},Yt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r},t$={grad:.9,turn:360,rad:360/(2*Math.PI)};var mw=function(e){var t=e.s,r=e.v,n=e.a,i=(200-t)*r/100;return{h:Yt(e.h),s:Yt(i>0&&i<200?t*r/100/(i<=100?i:200-i)*100:0),l:Yt(i/2),a:Yt(n,2)}},Pd=function(e){var t=mw(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},Fd=function(e){var t=mw(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},l1=function(e){var t=e.h,r=e.s,n=e.v,i=e.a;t=t/360*6,r/=100,n/=100;var a=Math.floor(t),o=n*(1-r),s=n*(1-(t-a)*r),u=n*(1-(1-t+a)*r),l=a%6;return{r:Yt(255*[n,s,o,o,u,n][l]),g:Yt(255*[u,n,n,s,o,o][l]),b:Yt(255*[o,o,u,n,n,s][l]),a:Yt(i,2)}};var c1=function(e){var t=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return t?u1({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):{h:0,s:0,v:0,a:1}};var u1=function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=Math.max(t,r,n),o=a-Math.min(t,r,n),s=o?a===t?(r-n)/o:a===r?2+(n-t)/o:4+(t-r)/o:0;return{h:Yt(60*(s<0?s+6:s)),s:Yt(a?o/a*100:0),v:Yt(a/255*100),a:i}};var d1=it.memo(function(e){var t=e.hue,r=e.onChange,n=zs(["react-colorful__hue",e.className]);return it.createElement("div",{className:n},it.createElement(Ad,{onMove:function(i){r({h:360*i.left})},onKey:function(i){r({h:Pi(t+360*i.left,0,360)})},"aria-label":"Hue","aria-valuenow":Yt(t),"aria-valuemax":"360","aria-valuemin":"0"},it.createElement(Ld,{className:"react-colorful__hue-pointer",left:t/360,color:Pd({h:t,s:100,v:100,a:1})})))}),f1=it.memo(function(e){var t=e.hsva,r=e.onChange,n={backgroundColor:Pd({h:t.h,s:100,v:100,a:1})};return it.createElement("div",{className:"react-colorful__saturation",style:n},it.createElement(Ad,{onMove:function(i){r({s:100*i.left,v:100-100*i.top})},onKey:function(i){r({s:Pi(t.s+100*i.left,0,100),v:Pi(t.v-100*i.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+Yt(t.s)+"%, Brightness "+Yt(t.v)+"%"},it.createElement(Ld,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:Pd(t)})))}),p1=function(e,t){if(e===t)return!0;for(var r in e)if(e[r]!==t[r])return!1;return!0},h1=function(e,t){return e.replace(/\s/g,"")===t.replace(/\s/g,"")};function m1(e,t,r){var n=Md(r),i=sr(function(){return e.toHsva(t)}),a=i[0],o=i[1],s=Xt({color:t,hsva:a});Sn(function(){if(!e.equal(t,s.current.color)){var l=e.toHsva(t);s.current={hsva:l,color:t},o(l)}},[t,e]),Sn(function(){var l;p1(a,s.current.hsva)||e.equal(l=e.fromHsva(a),s.current.color)||(s.current={hsva:a,color:l},n(l))},[a,e,n]);var u=cr(function(l){o(function(c){return Object.assign({},c,l)})},[]);return[a,u]}var g1,v1=typeof window!="undefined"?Ir:Sn,y1=function(){return g1||(typeof __webpack_nonce__!="undefined"?__webpack_nonce__:void 0)};var gw=new Map,b1=function(e){v1(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!gw.has(t)){var r=t.createElement("style");r.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,gw.set(t,r);var n=y1();n&&r.setAttribute("nonce",n),t.head.appendChild(r)}},[])};var w1=function(e){var t=e.className,r=e.hsva,n=e.onChange,i={backgroundImage:"linear-gradient(90deg, "+Fd(Object.assign({},r,{a:0}))+", "+Fd(Object.assign({},r,{a:1}))+")"},a=zs(["react-colorful__alpha",t]),o=Yt(100*r.a);return it.createElement("div",{className:a},it.createElement("div",{className:"react-colorful__alpha-gradient",style:i}),it.createElement(Ad,{onMove:function(s){n({a:s.left})},onKey:function(s){n({a:Pi(r.a+s.left)})},"aria-label":"Alpha","aria-valuetext":o+"%","aria-valuenow":o,"aria-valuemin":"0","aria-valuemax":"100"},it.createElement(Ld,{className:"react-colorful__alpha-pointer",left:r.a,color:Fd(r)})))},E1=function(e){var t=e.className,r=e.colorModel,n=e.color,i=n===void 0?r.defaultColor:n,a=e.onChange,o=fw(e,["className","colorModel","color","onChange"]),s=Xt(null);b1(s);var u=m1(r,i,a),l=u[0],c=u[1],d=zs(["react-colorful",t]);return it.createElement("div",Vs({},o,{ref:s,className:d}),it.createElement(f1,{hsva:l,onChange:c}),it.createElement(d1,{hue:l.h,onChange:c}),it.createElement(w1,{hsva:l,onChange:c,className:"react-colorful__last-control"}))};var x1={defaultColor:"rgba(0, 0, 0, 1)",toHsva:c1,fromHsva:function(e){var t=l1(e);return"rgba("+t.r+", "+t.g+", "+t.b+", "+t.a+")"},equal:h1},vw=function(e){return it.createElement(E1,Vs({},e,{colorModel:x1}))};function yw(e){let t=In(e);if(!t.isValid())return null;let r=t.toRgb();return{rgba:`rgba(${r.r}, ${r.g}, ${r.b}, ${r.a})`,hexa:t.toHex()}}function bw({color:e,setColor:t,defaultColor:r}){let[n,i]=F.useState(e||r),[a,o]=F.useState(e||r),[s,u]=F.useState(!1),l=F.useCallback(d=>{let f=yw(d||r);f&&(o(f.hexa),i(f.rgba),t(f.rgba))},[t]);F.useEffect(()=>{if(!e||!r)return;let d=yw(e||r);d&&(i(d.rgba),o(d.hexa))},[]);let c=Li(()=>{u(!1)});return g("div",{ref:c,className:$("color-picker-wrapper")},s&&g("div",{className:$("color-picker")},g(vw,{color:n,onChange:l})),g("input",{type:"text",value:a,onChange:d=>l(d.target.value),onFocus:()=>{u(!0)}}))}function k1({tagColorKey:e,deleteKey:t,updateKey:r,defaultColors:n}){return g("div",{className:$("setting-item-wrapper")},g("div",{className:$("setting-item")},g("div",{className:`${$("setting-controls-wrapper")} ${$("tag-color-input")}`},g("div",{className:$("setting-input-wrapper")},g("div",null,g("div",{className:$("setting-item-label")},B("Tag")),g("input",{type:"text",placeholder:"#tag",value:e.tagKey,onChange:i=>{r(i.currentTarget.value,e.color,e.backgroundColor)}})),g("div",null,g("div",{className:$("setting-item-label")},B("Background color")),g(bw,{color:e.backgroundColor,setColor:i=>{r(e.tagKey,e.color,i)},defaultColor:n.backgroundColor})),g("div",null,g("div",{className:$("setting-item-label")},B("Text color")),g(bw,{color:e.color,setColor:i=>{r(e.tagKey,i,e.backgroundColor)},defaultColor:n.color}))),g("div",{className:$("setting-toggle-wrapper")},g("div",null,g("div",{className:$("item-tags")},g("a",{className:`tag ${$("item-tag")}`},"#tag1"),g("a",{className:`tag ${$("item-tag")}`,style:{"--tag-color":e.color,"--tag-background-color":e.backgroundColor}},e.tagKey),g("a",{className:`tag ${$("item-tag")}`},"#tag2"))))),g("div",{className:$("setting-button-wrapper")},g("div",{onClick:t,"aria-label":B("Delete")},g(Kt,{name:"cross"})))))}function S1({dataKeys:e,onChange:t}){let[r,n]=F.useState(e),i=F.useMemo(()=>{let l=createDiv($("item-tags")),c=l.createEl("a",$("item-tag"));l.style.position="absolute",l.style.visibility="hidden",activeDocument.body.append(l);let d=activeWindow.getComputedStyle(c),f=d.getPropertyValue("color").trim(),p=d.getPropertyValue("background-color").trim();return l.remove(),{color:f,backgroundColor:p}},[]),a=l=>{t(l),n(l)},o=()=>{a((0,js.default)(r,{$push:[{...fs,id:Re(),data:{tagKey:"",color:"",backgroundColor:""}}]}))},s=l=>{a((0,js.default)(r,{$splice:[[l,1]]}))},u=l=>(c,d,f)=>{a((0,js.default)(r,{[l]:{data:{tagKey:{$set:c},color:{$set:d},backgroundColor:{$set:f}}}}))};return g("div",{className:$("tag-color-input-wrapper")},g("div",{className:"setting-item-info"},g("div",{className:"setting-item-name"},B("Display tag colors")),g("div",{className:"setting-item-description"},B("Set colors for the tags displayed below the card title."))),r.map((l,c)=>g(k1,{key:l.id,tagColorKey:l.data,deleteKey:()=>s(c),updateKey:u(c),defaultColors:i})),g("button",{className:$("add-tag-color-button"),onClick:()=>{o()}},B("Add tag color")))}function ww(e,t,r){F.render(g(S1,{dataKeys:t,onChange:r,portalContainer:ai(e)}),e)}function Ew(e){F.unmountComponentAtNode(e)}var kw=/^\d+(?:\.\d+)?$/,Sw={[gn]:!0,"date-display-format":!0,"date-format":!0,"date-picker-week-start":!0,"date-time-display-format":!0,"date-trigger":!0,"hide-card-count":!0,"hide-date-display":!0,"hide-date-in-title":!0,"hide-tags-display":!0,"hide-tags-in-title":!0,"lane-width":!0,"link-date-to-daily-note":!0,"max-archive-size":!0,"metadata-keys":!0,"new-card-insertion-method":!0,"new-line-trigger":!0,"new-note-folder":!0,"new-note-template":!0,"prepend-archive-date":!0,"prepend-archive-format":!0,"prepend-archive-separator":!0,"show-checkboxes":!0,"show-relative-date":!0,"time-format":!0,"time-trigger":!0,"show-add-list":!0,"show-archive-all":!0,"show-view-as-markdown":!0,"show-board-settings":!0,"show-search":!0,"tag-colors":!0},Nd=class{constructor(t,r,n){this.cleanupFns=[];this.applyDebounceTimer=0;this.app=t.app,this.plugin=t,this.config=r,this.settings=n}applySettingsUpdate(t){this.win.clearTimeout(this.applyDebounceTimer),this.applyDebounceTimer=this.win.setTimeout(()=>{this.settings=(0,xw.default)(this.settings,t),this.config.onSettingsChange(this.settings)},200)}getSetting(t,r){return r?[this.settings[t],this.plugin.settings[t]]:[this.settings[t],null]}constructUI(t,r,n){this.win=t.win;let{templateFiles:i,vaultFolders:a,templateWarning:o}=Qb(this.app);t.createEl("h3",{text:r}),n?t.createEl("p",{text:B("These settings will take precedence over the default Kanban board settings.")}):t.createEl("p",{text:B("Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.")}),new $e.Setting(t).setName(B("New line trigger")).setDesc(B("Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.")).addDropdown(s=>{s.addOption("shift-enter",B("Shift + Enter")),s.addOption("enter",B("Enter"));let[u,l]=this.getSetting("new-line-trigger",n);s.setValue(u||l||"shift-enter"),s.onChange(c=>{this.applySettingsUpdate({"new-line-trigger":{$set:c}})})}),new $e.Setting(t).setName(B("Prepend / append new cards")).setDesc(B("This setting controls whether new cards are added to the beginning or end of the list.")).addDropdown(s=>{s.addOption("prepend",B("Prepend")),s.addOption("prepend-compact",B("Prepend (compact)")),s.addOption("append",B("Append"));let[u,l]=this.getSetting("new-card-insertion-method",n);s.setValue(u||l||"append"),s.onChange(c=>{this.applySettingsUpdate({"new-card-insertion-method":{$set:c}})})}),new $e.Setting(t).setName(B("Note template")).setDesc(B("This template will be used when creating new notes from Kanban cards.")).then(_d({choices:i,key:"new-note-template",warningText:o,local:n,placeHolderStr:B("No template"),manager:this})),new $e.Setting(t).setName(B("Note folder")).setDesc(B("Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.")).then(_d({choices:a,key:"new-note-folder",local:n,placeHolderStr:B("Default folder"),manager:this})),new $e.Setting(t).setName(B("Hide card counts in list titles")).setDesc(B("When toggled, card counts are hidden from the list title")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-card-count",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-card-count":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-card-count",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-card-count"]})})})}),new $e.Setting(t).setName(B("List width")).setDesc(B("Enter a number to set the list width in pixels.")).addText(s=>{let[u,l]=this.getSetting("lane-width",n);s.inputEl.setAttr("type","number"),s.inputEl.placeholder=`${l||"272"} (default)`,s.inputEl.value=u?u.toString():"",s.onChange(c=>{if(c&&kw.test(c)){s.inputEl.removeClass("error"),this.applySettingsUpdate({"lane-width":{$set:parseInt(c)}});return}c&&s.inputEl.addClass("error"),this.applySettingsUpdate({$unset:["lane-width"]})})}),new $e.Setting(t).setName(B("Maximum number of archived cards")).setDesc(B("Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.")).addText(s=>{let[u,l]=this.getSetting("max-archive-size",n);s.inputEl.setAttr("type","number"),s.inputEl.placeholder=`${l||"-1"} (default)`,s.inputEl.value=u?u.toString():"",s.onChange(c=>{if(c&&kw.test(c)){s.inputEl.removeClass("error"),this.applySettingsUpdate({"max-archive-size":{$set:parseInt(c)}});return}c&&s.inputEl.addClass("error"),this.applySettingsUpdate({$unset:["max-archive-size"]})})}),new $e.Setting(t).setName(B("Display card checkbox")).setDesc(B("When toggled, a checkbox will be displayed with each card")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-checkboxes",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"show-checkboxes":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-checkboxes",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-checkboxes"]})})})}),new $e.Setting(t).setName(B("Hide tags in card titles")).setDesc(B("When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-tags-in-title",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-tags-in-title":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-tags-in-title",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-tags-in-title"]})})})}),new $e.Setting(t).setName(B("Hide card display tags")).setDesc(B("When toggled, tags will not be displayed below the card title.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-tags-display",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-tags-display":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-tags-display",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-tags-display"]})})})}),new $e.Setting(t).setName(B("Display tag colors")).setDesc(B("Set colors for the tags displayed below the card title.")).then(s=>{let[u]=this.getSetting("tag-colors",n),l=(u||[]).map(c=>({...fs,id:Re(),data:c}));ww(s.settingEl,l,c=>this.applySettingsUpdate({"tag-colors":{$set:c.map(d=>d.data)}})),this.cleanupFns.push(()=>{s.settingEl&&Ew(s.settingEl)})}),t.createEl("h4",{text:B("Board Header Buttons")}),new $e.Setting(t).setName(B("Add a list")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-add-list",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-add-list":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-add-list",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-add-list"]})})})}),new $e.Setting(t).setName(B("Archive completed cards")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-archive-all",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-archive-all":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-archive-all",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-archive-all"]})})})}),new $e.Setting(t).setName(B("Open as markdown")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-view-as-markdown",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-view-as-markdown":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-view-as-markdown",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-view-as-markdown"]})})})}),new $e.Setting(t).setName(B("Open board settings")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-board-settings",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-board-settings":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-board-settings",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-board-settings"]})})})}),new $e.Setting(t).setName(B("Search...")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-search",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-search":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-search",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-search"]})})})}),t.createEl("h4",{text:B("Date & Time")}),new $e.Setting(t).setName(B("Date trigger")).setDesc(B("When this is typed, it will trigger the date selector")).addText(s=>{let[u,l]=this.getSetting("date-trigger",n);(u||l)&&s.setValue(u||l),s.setPlaceholder(l||$s),s.onChange(c=>{c?this.applySettingsUpdate({"date-trigger":{$set:c}}):this.applySettingsUpdate({$unset:["date-trigger"]})})}),new $e.Setting(t).setName(B("Time trigger")).setDesc(B("When this is typed, it will trigger the time selector")).addText(s=>{let[u,l]=this.getSetting("time-trigger",n);(u||l)&&s.setValue(u||l),s.setPlaceholder(l||Us),s.onChange(c=>{c?this.applySettingsUpdate({"time-trigger":{$set:c}}):this.applySettingsUpdate({$unset:["time-trigger"]})})}),new $e.Setting(t).setName(B("Date format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(f=>{f.appendText(B("This format will be used when saving dates in markdown.")),f.createEl("br"),f.appendText(B("For more syntax, refer to")+" "),f.createEl("a",{text:B("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},p=>{p.setAttr("target","_blank")}),f.createEl("br"),f.appendText(B("Your current syntax looks like this")+": "),u.setSampleEl(f.createEl("b",{cls:"u-pop"})),f.createEl("br")}));let[l,c]=this.getSetting("date-format",n),d=li(this.app);u.setPlaceholder(d),u.setDefaultFormat(d),(l||c)&&u.setValue(l||c),u.onChange(f=>{f?this.applySettingsUpdate({"date-format":{$set:f}}):this.applySettingsUpdate({$unset:["date-format"]})})})}),new $e.Setting(t).setName(B("Time format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(f=>{f.appendText(B("For more syntax, refer to")+" "),f.createEl("a",{text:B("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},p=>{p.setAttr("target","_blank")}),f.createEl("br"),f.appendText(B("Your current syntax looks like this")+": "),u.setSampleEl(f.createEl("b",{cls:"u-pop"})),f.createEl("br")}));let[l,c]=this.getSetting("time-format",n),d=ra(this.app);u.setPlaceholder(d),u.setDefaultFormat(d),(l||c)&&u.setValue(l||c),u.onChange(f=>{f?this.applySettingsUpdate({"time-format":{$set:f}}):this.applySettingsUpdate({$unset:["time-format"]})})})}),new $e.Setting(t).setName(B("Date display format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(f=>{f.appendText(B("This format will be used when displaying dates in Kanban cards.")),f.createEl("br"),f.appendText(B("For more syntax, refer to")+" "),f.createEl("a",{text:B("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},p=>{p.setAttr("target","_blank")}),f.createEl("br"),f.appendText(B("Your current syntax looks like this")+": "),u.setSampleEl(f.createEl("b",{cls:"u-pop"})),f.createEl("br")}));let[l,c]=this.getSetting("date-display-format",n),d=li(this.app);u.setPlaceholder(d),u.setDefaultFormat(d),(l||c)&&u.setValue(l||c),u.onChange(f=>{f?this.applySettingsUpdate({"date-display-format":{$set:f}}):this.applySettingsUpdate({$unset:["date-display-format"]})})})}),new $e.Setting(t).setName(B("Show relative date")).setDesc(B("When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-relative-date",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"show-relative-date":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-relative-date",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-relative-date"]})})})}),new $e.Setting(t).setName(B("Hide card display dates")).setDesc(B("When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-date-display",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-date-display":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-date-display",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-date-display"]})})})}),new $e.Setting(t).setName(B("Hide dates in card titles")).setDesc(B("When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-date-in-title",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-date-in-title":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-date-in-title",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-date-in-title"]})})})}),new $e.Setting(t).setName(B("Link dates to daily notes")).setDesc(B("When toggled, dates will link to daily notes. Eg. [[2021-04-26]]")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("link-date-to-daily-note",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"link-date-to-daily-note":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("link-date-to-daily-note",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["link-date-to-daily-note"]})})})}),new $e.Setting(t).setName(B("Add date and time to archived cards")).setDesc(B("When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("prepend-archive-date",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"prepend-archive-date":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(B("Reset to default")).onClick(()=>{let[,c]=this.getSetting("prepend-archive-date",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["prepend-archive-date"]})})})}),new $e.Setting(t).setName(B("Archive date/time separator")).setDesc(B("This will be used to separate the archived date/time from the title")).addText(s=>{let[u,l]=this.getSetting("prepend-archive-separator",n);s.inputEl.placeholder=l?`${l} (default)`:"",s.inputEl.value=u||"",s.onChange(c=>{if(c){this.applySettingsUpdate({"prepend-archive-separator":{$set:c}});return}this.applySettingsUpdate({$unset:["prepend-archive-separator"]})})}),new $e.Setting(t).setName(B("Archive date/time format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(D=>{D.appendText(B("For more syntax, refer to")+" "),D.createEl("a",{text:B("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},C=>{C.setAttr("target","_blank")}),D.createEl("br"),D.appendText(B("Your current syntax looks like this")+": "),u.setSampleEl(D.createEl("b",{cls:"u-pop"})),D.createEl("br")}));let[l,c]=this.getSetting("prepend-archive-format",n),[d,f]=this.getSetting("date-format",n),p=d||f||li(this.app),[m,y]=this.getSetting("time-format",n),b=m||y||ra(this.app),x=`${p} ${b}`;u.setPlaceholder(x),u.setDefaultFormat(x),(l||c)&&u.setValue(l||c),u.onChange(D=>{D?this.applySettingsUpdate({"prepend-archive-format":{$set:D}}):this.applySettingsUpdate({$unset:["prepend-archive-format"]})})})}),new $e.Setting(t).setName(B("Calendar: first day of week")).setDesc(B("Override which day is used as the start of the week")).addDropdown(s=>{s.addOption("",B("default")),s.addOption("0",B("Sunday")),s.addOption("1",B("Monday")),s.addOption("2",B("Tuesday")),s.addOption("3",B("Wednesday")),s.addOption("4",B("Thursday")),s.addOption("5",B("Friday")),s.addOption("6",B("Saturday"));let[u,l]=this.getSetting("date-picker-week-start",n);s.setValue((u==null?void 0:u.toString())||(l==null?void 0:l.toString())||""),s.onChange(c=>{c?this.applySettingsUpdate({"date-picker-week-start":{$set:Number(c)}}):this.applySettingsUpdate({$unset:["date-picker-week-start"]})})}),t.createEl("br"),t.createEl("h4",{text:B("Linked Page Metadata")}),t.createEl("p",{cls:$("metadata-setting-desc"),text:B("Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.")}),new $e.Setting(t).then(s=>{s.settingEl.addClass($("draggable-setting-container"));let[u]=this.getSetting("metadata-keys",n),l=(u||[]).map(c=>({...ds,id:Re(),data:c,win:Ze(t)}));Zb(s.settingEl,t,l,c=>this.applySettingsUpdate({"metadata-keys":{$set:c.map(d=>d.data)}})),this.cleanupFns.push(()=>{s.settingEl&&ew(s.settingEl)})})}cleanUp(){this.win=null,this.cleanupFns.forEach(t=>t()),this.cleanupFns=[]}},qs=class extends $e.Modal{constructor(t,r,n){super(t.app);this.view=t,this.settingsManager=new Nd(t.plugin,r,n)}onOpen(){let{contentEl:t,modalEl:r}=this;r.addClass($("board-settings-modal")),this.settingsManager.constructUI(t,this.view.file.basename,!0)}onClose(){let{contentEl:t}=this;this.settingsManager.cleanUp(),t.empty()}},Od=class extends $e.PluginSettingTab{constructor(t,r){super(t.app,t);this.plugin=t,this.settingsManager=new Nd(t,r,t.settings)}display(){let{containerEl:t}=this;t.empty(),t.addClass($("board-settings-modal")),this.settingsManager.constructUI(t,B("Kanban Plugin"),!1)}};var yn="kanban",Ba="blocks",tr=class extends _w.TextFileView{constructor(t,r){super(t);this.actionButtons={};this.plugin=r,this.emitter=Ps(),this.emitter.on("hotkey",n=>{switch(n){case"daily-notes:goto-prev":{Rm(this.app,this.file);break}case"daily-notes:goto-next":{Om(this.app,this.file);break}}}),this.register(this.containerEl.onWindowMigrated(()=>{this.plugin.removeView(this),this.plugin.addView(this,this.data,this.isPrimary)}))}get isPrimary(){var t;return((t=this.plugin.getStateManager(this.file))==null?void 0:t.getAView())===this}get id(){var t;return`${this.leaf.id}:::${(t=this.file)==null?void 0:t.path}`}get isShiftPressed(){return this.plugin.isShiftPressed}setBoard(t,r=!0){this.plugin.stateManagers.get(this.file).setState(t,r)}getBoard(){return this.plugin.stateManagers.get(this.file).state}getViewType(){return yn}getIcon(){return Ba}getDisplayText(){var t;return((t=this.file)==null?void 0:t.basename)||"Kanban"}getWindow(){return Ze(this.containerEl)}async onLoadFile(t){try{return await super.onLoadFile(t)}catch(r){throw this.plugin.stateManagers.get(this.file).setError(r),r}}destroy(){this.plugin.removeView(this),Object.values(this.actionButtons).forEach(t=>t.remove()),this.actionButtons={}}async onClose(){this.destroy()}async onUnloadFile(t){return this.destroy(),await super.onUnloadFile(t)}handleRename(t,r){this.file.path===t&&this.plugin.handleViewFileRename(this,r)}requestSaveToDisk(t){this.data!==t&&this.isPrimary?(this.data=t,this.requestSave()):this.data=t}getViewData(){return this.data}setViewData(t,r){if(!Hm(t)){this.plugin.kanbanFileModes[this.leaf.id||this.file.path]="markdown",this.plugin.removeView(this),this.plugin.setMarkdownView(this.leaf,!1);return}this.plugin.addView(this,t,!r&&this.isPrimary)}getPortal(){let t=this.plugin.stateManagers.get(this.file);return g(Yb,{stateManager:t,view:this})}onPaneMenu(t,r,n=!0){if(r!=="more-options"){super.onPaneMenu(t,r);return}t.addItem(i=>{i.setTitle(B("Open as markdown")).setIcon("document").setSection("pane").onClick(()=>{this.plugin.kanbanFileModes[this.leaf.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)})}).addItem(i=>{i.setTitle(B("Open board settings")).setIcon("gear").setSection("pane").onClick(()=>{let a=this.plugin.stateManagers.get(this.file),o=a.state;new qs(this,{onSettingsChange:s=>{let u=(0,Rd.default)(o,{data:{settings:{$set:s}}});a.setState(u)}},o.data.settings).open()})}).addItem(i=>{i.setTitle(B("Archive completed cards")).setIcon("sheets-in-box").setSection("pane").onClick(()=>{this.plugin.stateManagers.get(this.file).archiveCompletedCards()})}),n&&super.onPaneMenu(t,r)}initHeaderButtons(){let t=this.plugin.getStateManager(this.file);if(!!t)if(t.getSetting("show-board-settings")&&!this.actionButtons["show-board-settings"]?this.actionButtons["show-board-settings"]=this.addAction("gear",B("Open board settings"),()=>{let r=this.plugin.stateManagers.get(this.file),n=r.state;new qs(this,{onSettingsChange:i=>{let a=(0,Rd.default)(n,{data:{settings:{$set:i}}});r.setState(a)}},n.data.settings).open()}):!t.getSetting("show-board-settings")&&this.actionButtons["show-board-settings"]&&(this.actionButtons["show-board-settings"].remove(),delete this.actionButtons["show-board-settings"]),t.getSetting("show-search")&&!this.actionButtons["show-search"]?this.actionButtons["show-search"]=this.addAction("search",B("Search..."),()=>{this.emitter.emit("hotkey","editor:open-search")}):!t.getSetting("show-search")&&this.actionButtons["show-search"]&&(this.actionButtons["show-search"].remove(),delete this.actionButtons["show-search"]),t.getSetting("show-view-as-markdown")&&!this.actionButtons["show-view-as-markdown"]?this.actionButtons["show-view-as-markdown"]=this.addAction("document",B("Open as markdown"),()=>{this.plugin.kanbanFileModes[this.leaf.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)}):!t.getSetting("show-view-as-markdown")&&this.actionButtons["show-view-as-markdown"]&&(this.actionButtons["show-view-as-markdown"].remove(),delete this.actionButtons["show-view-as-markdown"]),t.getSetting("show-archive-all")&&!this.actionButtons["show-archive-all"]?this.actionButtons["show-archive-all"]=this.addAction("sheets-in-box",B("Archive completed cards"),()=>{this.plugin.stateManagers.get(this.file).archiveCompletedCards()}):!t.getSetting("show-archive-all")&&this.actionButtons["show-archive-all"]&&(this.actionButtons["show-archive-all"].remove(),delete this.actionButtons["show-archive-all"]),t.getSetting("show-add-list")&&!this.actionButtons["show-add-list"]){let r=this.addAction("plus-with-circle",B("Add a list"),()=>{this.emitter.emit("showLaneForm",void 0)});r.addClass($("ignore-click-outside")),this.actionButtons["show-add-list"]=r}else!t.getSetting("show-add-list")&&this.actionButtons["show-add-list"]&&(this.actionButtons["show-add-list"].remove(),delete this.actionButtons["show-add-list"])}clear(){}};h();var $i=ge(xt()),$E=ge(require("obsidian"));h();h();var Hd={};zi(Hd,{JsonPatchError:()=>at,_areEquals:()=>Ua,applyOperation:()=>zr,applyPatch:()=>Zs,applyReducer:()=>M1,deepClone:()=>T1,getValueByPointer:()=>Xs,validate:()=>Tw,validator:()=>el});h();h();var _1=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)i.hasOwnProperty(a)&&(n[a]=i[a])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),C1=Object.prototype.hasOwnProperty;function Ys(e,t){return C1.call(e,t)}function Js(e){if(Array.isArray(e)){for(var t=new Array(e.length),r=0;r=48&&n<=57){t++;continue}return!1}return!0}function Hn(e){return e.indexOf("/")===-1&&e.indexOf("~")===-1?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function Ka(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function Qs(e){if(e===void 0)return!0;if(e){if(Array.isArray(e)){for(var t=0,r=e.length;t0&&u[c-1]=="constructor"))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(r&&f===void 0&&(l[p]===void 0?f=u.slice(0,c).join("/"):c==d-1&&(f=t.path),f!==void 0&&m(t,0,e,f)),c++,Array.isArray(l)){if(p==="-")p=l.length;else{if(r&&!Gs(p))throw new at("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",a,t,e);Gs(p)&&(p=~~p)}if(c>=d){if(r&&t.op==="add"&&p>l.length)throw new at("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",a,t,e);var o=D1[t.op].call(t,l,p,e);if(o.test===!1)throw new at("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return o}}else if(c>=d){var o=Fi[t.op].call(t,l,p,e);if(o.test===!1)throw new at("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return o}if(l=l[p],r&&c0)throw new at('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,r);if((e.op==="move"||e.op==="copy")&&typeof e.from!="string")throw new at("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&e.value===void 0)throw new at("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&Qs(e.value))throw new at("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,r);if(r){if(e.op=="add"){var i=e.path.split("/").length,a=n.split("/").length;if(i!==a+1&&i!==a)throw new at("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,r)}else if(e.op==="replace"||e.op==="remove"||e.op==="_get"){if(e.path!==n)throw new at("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,r)}else if(e.op==="move"||e.op==="copy"){var o={op:"_get",path:e.from,value:void 0},s=Tw([o],r);if(s&&s.name==="OPERATION_PATH_UNRESOLVABLE")throw new at("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,r)}}}else throw new at("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",t,e,r)}function Tw(e,t,r){try{if(!Array.isArray(e))throw new at("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)Zs(Pt(t),Pt(e),r||!0);else{r=r||el;for(var n=0;nUd,generate:()=>Kd,observe:()=>O1,unobserve:()=>N1});h();var Bd=new WeakMap,I1=function(){function e(t){this.observers=new Map,this.obj=t}return e}(),A1=function(){function e(t,r){this.callback=t,this.observer=r}return e}();function L1(e){return Bd.get(e)}function P1(e,t){return e.observers.get(t)}function F1(e,t){e.observers.delete(t.callback)}function N1(e,t){t.unobserve()}function O1(e,t){var r=[],n,i=L1(e);if(!i)i=new I1(e),Bd.set(e,i);else{var a=P1(i,t);n=a&&a.observer}if(n)return n;if(n={},i.value=Pt(e),t){n.callback=t,n.next=null;var o=function(){Kd(n)},s=function(){clearTimeout(n.next),n.next=setTimeout(o)};typeof window!="undefined"&&(window.addEventListener("mouseup",s),window.addEventListener("keyup",s),window.addEventListener("mousedown",s),window.addEventListener("keydown",s),window.addEventListener("change",s))}return n.patches=r,n.object=e,n.unobserve=function(){Kd(n),clearTimeout(n.next),F1(i,n),typeof window!="undefined"&&(window.removeEventListener("mouseup",s),window.removeEventListener("keyup",s),window.removeEventListener("mousedown",s),window.removeEventListener("keydown",s),window.removeEventListener("change",s))},i.observers.set(t,new A1(t,n)),n}function Kd(e,t){t===void 0&&(t=!1);var r=Bd.get(e.object);$d(r.value,e.object,e.patches,"",t),e.patches.length&&Zs(r.value,e.patches);var n=e.patches;return n.length>0&&(e.patches=[],e.callback&&e.callback(n)),n}function $d(e,t,r,n,i){if(t!==e){typeof t.toJSON=="function"&&(t=t.toJSON());for(var a=Js(t),o=Js(e),s=!1,u=!1,l=o.length-1;l>=0;l--){var c=o[l],d=e[c];if(Ys(t,c)&&!(t[c]===void 0&&d!==void 0&&Array.isArray(t)===!1)){var f=t[c];typeof d=="object"&&d!=null&&typeof f=="object"&&f!=null&&Array.isArray(d)===Array.isArray(f)?$d(d,f,r,n+"/"+Hn(c),i):d!==f&&(s=!0,i&&r.push({op:"test",path:n+"/"+Hn(c),value:Pt(d)}),r.push({op:"replace",path:n+"/"+Hn(c),value:Pt(f)}))}else Array.isArray(e)===Array.isArray(t)?(i&&r.push({op:"test",path:n+"/"+Hn(c),value:Pt(d)}),r.push({op:"remove",path:n+"/"+Hn(c)}),u=!0):(i&&r.push({op:"test",path:n,value:e}),r.push({op:"replace",path:n,value:t}),s=!0)}if(!(!u&&a.length==o.length))for(var l=0;l":""))+")"})),f;function f(){let p=[],m,y,b;if((!t||i(s,u,l[l.length-1]||null))&&(p=$1(r(s,l)),p[0]===zd))return p;if(s.children&&p[0]!==Fw)for(y=(n?s.children.length:-1)+a,b=l.concat(s);y>-1&&y!0){for(let i=t+1,a=e.length;i{try{await Bw(e,r),await Promise.all(r.children.map(n=>Va(e,n)))}catch(n){throw e.setError(n),n}}))}catch(r){throw e.setError(r),r}return t}function U1(e){return(e.op==="add"||e.op==="replace")&&["/title","/titleRaw","/dateStr","/timeStr",/\d$/,/\/fileAccessor\/.+$/].some(t=>typeof t=="string"?e.path.endsWith(t):t.test(e.path))}async function $w(e,t,r){let n={},i=r.reduce((a,o)=>{if(!U1(o))return a;let s=o.path.split("/").reduce((l,c)=>(/\d+/.test(c)&&l.push(Number(c)),l),[]),u=s.join(",");return n[u]||(n[u]=!0,a.push(s)),a},[]);try{await Promise.all(i.map(a=>{let o=ht(t,a);if(o.type===Ge.Lane)return Bw(e,o);if(o.type===Ge.Item)return Va(e,o)}))}catch(a){throw e.setError(a),a}return t}h();h();h();h();h();h();function Ft(e,t,r,n){let i=e.length,a=0,o;if(t<0?t=-t>i?0:i+t:t=t>i?i:t,r=r>0?r:0,n.length<1e4)o=Array.from(n),o.unshift(t,r),[].splice.apply(e,o);else for(r&&[].splice.apply(e,[t,r]);a0?(Ft(e,e.length,0,t),e):t}var Uw={}.hasOwnProperty;function Ww(e){let t={},r=-1;for(;++ro))return;let O=t.events.length,W=O,z,ee;for(;W--;)if(t.events[W][0]==="exit"&&t.events[W][1].type==="chunkFlow"){if(z){ee=t.events[W][1].end;break}z=!0}for(x(n),T=O;TC;){let N=r[A];t.containerState=N[1],N[0].exit.call(t,e)}r.length=C}function D(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function q1(e,t,r){return Se(e,e.attempt(this.parser.constructs.document,t,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}h();h();h();h();function Gd(e){if(e===null||Qe(e)||qw(e))return 1;if(Yw(e))return 2}h();function Ni(e,t,r){let n=[],i=-1;for(;++i1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;let d=Object.assign({},e[n][1].end),f=Object.assign({},e[r][1].start);Xw(d,-u),Xw(f,u),o={type:u>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},e[n][1].end)},s={type:u>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[r][1].start),end:f},a={type:u>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[r][1].start)},i={type:u>1?"strong":"emphasis",start:Object.assign({},o.start),end:Object.assign({},s.end)},e[n][1].end=Object.assign({},o.start),e[r][1].start=Object.assign({},s.end),l=[],e[n][1].end.offset-e[n][1].start.offset&&(l=Jt(l,[["enter",e[n][1],t],["exit",e[n][1],t]])),l=Jt(l,[["enter",i,t],["enter",o,t],["exit",o,t],["enter",a,t]]),l=Jt(l,Ni(t.parser.constructs.insideSpan.null,e.slice(n+1,r),t)),l=Jt(l,[["exit",a,t],["enter",s,t],["exit",s,t],["exit",i,t]]),e[r][1].end.offset-e[r][1].start.offset?(c=2,l=Jt(l,[["enter",e[r][1],t],["exit",e[r][1],t]])):c=0,Ft(e,n-1,r-n+3,l),r=n+l.length-c-2;break}}for(r=-1;++r",Gamma:"\u0393",Gammad:"\u03DC",Gbreve:"\u011E",Gcedil:"\u0122",Gcirc:"\u011C",Gcy:"\u0413",Gdot:"\u0120",Gfr:"\u{1D50A}",Gg:"\u22D9",Gopf:"\u{1D53E}",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\u{1D4A2}",Gt:"\u226B",HARDcy:"\u042A",Hacek:"\u02C7",Hat:"^",Hcirc:"\u0124",Hfr:"\u210C",HilbertSpace:"\u210B",Hopf:"\u210D",HorizontalLine:"\u2500",Hscr:"\u210B",Hstrok:"\u0126",HumpDownHump:"\u224E",HumpEqual:"\u224F",IEcy:"\u0415",IJlig:"\u0132",IOcy:"\u0401",Iacute:"\xCD",Icirc:"\xCE",Icy:"\u0418",Idot:"\u0130",Ifr:"\u2111",Igrave:"\xCC",Im:"\u2111",Imacr:"\u012A",ImaginaryI:"\u2148",Implies:"\u21D2",Int:"\u222C",Integral:"\u222B",Intersection:"\u22C2",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",Iogon:"\u012E",Iopf:"\u{1D540}",Iota:"\u0399",Iscr:"\u2110",Itilde:"\u0128",Iukcy:"\u0406",Iuml:"\xCF",Jcirc:"\u0134",Jcy:"\u0419",Jfr:"\u{1D50D}",Jopf:"\u{1D541}",Jscr:"\u{1D4A5}",Jsercy:"\u0408",Jukcy:"\u0404",KHcy:"\u0425",KJcy:"\u040C",Kappa:"\u039A",Kcedil:"\u0136",Kcy:"\u041A",Kfr:"\u{1D50E}",Kopf:"\u{1D542}",Kscr:"\u{1D4A6}",LJcy:"\u0409",LT:"<",Lacute:"\u0139",Lambda:"\u039B",Lang:"\u27EA",Laplacetrf:"\u2112",Larr:"\u219E",Lcaron:"\u013D",Lcedil:"\u013B",Lcy:"\u041B",LeftAngleBracket:"\u27E8",LeftArrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",LeftRightArrow:"\u2194",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",Leftarrow:"\u21D0",Leftrightarrow:"\u21D4",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",LessLess:"\u2AA1",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",Lfr:"\u{1D50F}",Ll:"\u22D8",Lleftarrow:"\u21DA",Lmidot:"\u013F",LongLeftArrow:"\u27F5",LongLeftRightArrow:"\u27F7",LongRightArrow:"\u27F6",Longleftarrow:"\u27F8",Longleftrightarrow:"\u27FA",Longrightarrow:"\u27F9",Lopf:"\u{1D543}",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",Lscr:"\u2112",Lsh:"\u21B0",Lstrok:"\u0141",Lt:"\u226A",Map:"\u2905",Mcy:"\u041C",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\u{1D510}",MinusPlus:"\u2213",Mopf:"\u{1D544}",Mscr:"\u2133",Mu:"\u039C",NJcy:"\u040A",Nacute:"\u0143",Ncaron:"\u0147",Ncedil:"\u0145",Ncy:"\u041D",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:` -`,Nfr:"\u{1D511}",NoBreak:"\u2060",NonBreakingSpace:"\xA0",Nopf:"\u2115",Not:"\u2AEC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",Nscr:"\u{1D4A9}",Ntilde:"\xD1",Nu:"\u039D",OElig:"\u0152",Oacute:"\xD3",Ocirc:"\xD4",Ocy:"\u041E",Odblac:"\u0150",Ofr:"\u{1D512}",Ograve:"\xD2",Omacr:"\u014C",Omega:"\u03A9",Omicron:"\u039F",Oopf:"\u{1D546}",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",Or:"\u2A54",Oscr:"\u{1D4AA}",Oslash:"\xD8",Otilde:"\xD5",Otimes:"\u2A37",Ouml:"\xD6",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",PartialD:"\u2202",Pcy:"\u041F",Pfr:"\u{1D513}",Phi:"\u03A6",Pi:"\u03A0",PlusMinus:"\xB1",Poincareplane:"\u210C",Popf:"\u2119",Pr:"\u2ABB",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",Prime:"\u2033",Product:"\u220F",Proportion:"\u2237",Proportional:"\u221D",Pscr:"\u{1D4AB}",Psi:"\u03A8",QUOT:'"',Qfr:"\u{1D514}",Qopf:"\u211A",Qscr:"\u{1D4AC}",RBarr:"\u2910",REG:"\xAE",Racute:"\u0154",Rang:"\u27EB",Rarr:"\u21A0",Rarrtl:"\u2916",Rcaron:"\u0158",Rcedil:"\u0156",Rcy:"\u0420",Re:"\u211C",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",Rfr:"\u211C",Rho:"\u03A1",RightAngleBracket:"\u27E9",RightArrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",Rightarrow:"\u21D2",Ropf:"\u211D",RoundImplies:"\u2970",Rrightarrow:"\u21DB",Rscr:"\u211B",Rsh:"\u21B1",RuleDelayed:"\u29F4",SHCHcy:"\u0429",SHcy:"\u0428",SOFTcy:"\u042C",Sacute:"\u015A",Sc:"\u2ABC",Scaron:"\u0160",Scedil:"\u015E",Scirc:"\u015C",Scy:"\u0421",Sfr:"\u{1D516}",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",Sigma:"\u03A3",SmallCircle:"\u2218",Sopf:"\u{1D54A}",Sqrt:"\u221A",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",Sscr:"\u{1D4AE}",Star:"\u22C6",Sub:"\u22D0",Subset:"\u22D0",SubsetEqual:"\u2286",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",SuchThat:"\u220B",Sum:"\u2211",Sup:"\u22D1",Superset:"\u2283",SupersetEqual:"\u2287",Supset:"\u22D1",THORN:"\xDE",TRADE:"\u2122",TSHcy:"\u040B",TScy:"\u0426",Tab:" ",Tau:"\u03A4",Tcaron:"\u0164",Tcedil:"\u0162",Tcy:"\u0422",Tfr:"\u{1D517}",Therefore:"\u2234",Theta:"\u0398",ThickSpace:"\u205F\u200A",ThinSpace:"\u2009",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",Topf:"\u{1D54B}",TripleDot:"\u20DB",Tscr:"\u{1D4AF}",Tstrok:"\u0166",Uacute:"\xDA",Uarr:"\u219F",Uarrocir:"\u2949",Ubrcy:"\u040E",Ubreve:"\u016C",Ucirc:"\xDB",Ucy:"\u0423",Udblac:"\u0170",Ufr:"\u{1D518}",Ugrave:"\xD9",Umacr:"\u016A",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",Uopf:"\u{1D54C}",UpArrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",UpDownArrow:"\u2195",UpEquilibrium:"\u296E",UpTee:"\u22A5",UpTeeArrow:"\u21A5",Uparrow:"\u21D1",Updownarrow:"\u21D5",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",Upsi:"\u03D2",Upsilon:"\u03A5",Uring:"\u016E",Uscr:"\u{1D4B0}",Utilde:"\u0168",Uuml:"\xDC",VDash:"\u22AB",Vbar:"\u2AEB",Vcy:"\u0412",Vdash:"\u22A9",Vdashl:"\u2AE6",Vee:"\u22C1",Verbar:"\u2016",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\u{1D519}",Vopf:"\u{1D54D}",Vscr:"\u{1D4B1}",Vvdash:"\u22AA",Wcirc:"\u0174",Wedge:"\u22C0",Wfr:"\u{1D51A}",Wopf:"\u{1D54E}",Wscr:"\u{1D4B2}",Xfr:"\u{1D51B}",Xi:"\u039E",Xopf:"\u{1D54F}",Xscr:"\u{1D4B3}",YAcy:"\u042F",YIcy:"\u0407",YUcy:"\u042E",Yacute:"\xDD",Ycirc:"\u0176",Ycy:"\u042B",Yfr:"\u{1D51C}",Yopf:"\u{1D550}",Yscr:"\u{1D4B4}",Yuml:"\u0178",ZHcy:"\u0416",Zacute:"\u0179",Zcaron:"\u017D",Zcy:"\u0417",Zdot:"\u017B",ZeroWidthSpace:"\u200B",Zeta:"\u0396",Zfr:"\u2128",Zopf:"\u2124",Zscr:"\u{1D4B5}",aacute:"\xE1",abreve:"\u0103",ac:"\u223E",acE:"\u223E\u0333",acd:"\u223F",acirc:"\xE2",acute:"\xB4",acy:"\u0430",aelig:"\xE6",af:"\u2061",afr:"\u{1D51E}",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",alpha:"\u03B1",amacr:"\u0101",amalg:"\u2A3F",amp:"&",and:"\u2227",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",aogon:"\u0105",aopf:"\u{1D552}",ap:"\u2248",apE:"\u2A70",apacir:"\u2A6F",ape:"\u224A",apid:"\u224B",apos:"'",approx:"\u2248",approxeq:"\u224A",aring:"\xE5",ascr:"\u{1D4B6}",ast:"*",asymp:"\u2248",asympeq:"\u224D",atilde:"\xE3",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",bNot:"\u2AED",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",barvee:"\u22BD",barwed:"\u2305",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",beta:"\u03B2",beth:"\u2136",between:"\u226C",bfr:"\u{1D51F}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bnot:"\u2310",bopf:"\u{1D553}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxDL:"\u2557",boxDR:"\u2554",boxDl:"\u2556",boxDr:"\u2553",boxH:"\u2550",boxHD:"\u2566",boxHU:"\u2569",boxHd:"\u2564",boxHu:"\u2567",boxUL:"\u255D",boxUR:"\u255A",boxUl:"\u255C",boxUr:"\u2559",boxV:"\u2551",boxVH:"\u256C",boxVL:"\u2563",boxVR:"\u2560",boxVh:"\u256B",boxVl:"\u2562",boxVr:"\u255F",boxbox:"\u29C9",boxdL:"\u2555",boxdR:"\u2552",boxdl:"\u2510",boxdr:"\u250C",boxh:"\u2500",boxhD:"\u2565",boxhU:"\u2568",boxhd:"\u252C",boxhu:"\u2534",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxuL:"\u255B",boxuR:"\u2558",boxul:"\u2518",boxur:"\u2514",boxv:"\u2502",boxvH:"\u256A",boxvL:"\u2561",boxvR:"\u255E",boxvh:"\u253C",boxvl:"\u2524",boxvr:"\u251C",bprime:"\u2035",breve:"\u02D8",brvbar:"\xA6",bscr:"\u{1D4B7}",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",bumpeq:"\u224F",cacute:"\u0107",cap:"\u2229",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",ccaps:"\u2A4D",ccaron:"\u010D",ccedil:"\xE7",ccirc:"\u0109",ccups:"\u2A4C",ccupssm:"\u2A50",cdot:"\u010B",cedil:"\xB8",cemptyv:"\u29B2",cent:"\xA2",centerdot:"\xB7",cfr:"\u{1D520}",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",chi:"\u03C7",cir:"\u25CB",cirE:"\u29C3",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledR:"\xAE",circledS:"\u24C8",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",clubs:"\u2663",clubsuit:"\u2663",colon:":",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",conint:"\u222E",copf:"\u{1D554}",coprod:"\u2210",copy:"\xA9",copysr:"\u2117",crarr:"\u21B5",cross:"\u2717",cscr:"\u{1D4B8}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",cup:"\u222A",cupbrcap:"\u2A48",cupcap:"\u2A46",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",dArr:"\u21D3",dHar:"\u2965",dagger:"\u2020",daleth:"\u2138",darr:"\u2193",dash:"\u2010",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",dcaron:"\u010F",dcy:"\u0434",dd:"\u2146",ddagger:"\u2021",ddarr:"\u21CA",ddotseq:"\u2A77",deg:"\xB0",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",dfr:"\u{1D521}",dharl:"\u21C3",dharr:"\u21C2",diam:"\u22C4",diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",dopf:"\u{1D555}",dot:"\u02D9",doteq:"\u2250",doteqdot:"\u2251",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",downarrow:"\u2193",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",dscr:"\u{1D4B9}",dscy:"\u0455",dsol:"\u29F6",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",dzcy:"\u045F",dzigrarr:"\u27FF",eDDot:"\u2A77",eDot:"\u2251",eacute:"\xE9",easter:"\u2A6E",ecaron:"\u011B",ecir:"\u2256",ecirc:"\xEA",ecolon:"\u2255",ecy:"\u044D",edot:"\u0117",ee:"\u2147",efDot:"\u2252",efr:"\u{1D522}",eg:"\u2A9A",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",emptyv:"\u2205",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",eng:"\u014B",ensp:"\u2002",eogon:"\u0119",eopf:"\u{1D556}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",equals:"=",equest:"\u225F",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erDot:"\u2253",erarr:"\u2971",escr:"\u212F",esdot:"\u2250",esim:"\u2242",eta:"\u03B7",eth:"\xF0",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",expectation:"\u2130",exponentiale:"\u2147",fallingdotseq:"\u2252",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",ffr:"\u{1D523}",filig:"\uFB01",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",fopf:"\u{1D557}",forall:"\u2200",fork:"\u22D4",forkv:"\u2AD9",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",fscr:"\u{1D4BB}",gE:"\u2267",gEl:"\u2A8C",gacute:"\u01F5",gamma:"\u03B3",gammad:"\u03DD",gap:"\u2A86",gbreve:"\u011F",gcirc:"\u011D",gcy:"\u0433",gdot:"\u0121",ge:"\u2265",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",gfr:"\u{1D524}",gg:"\u226B",ggg:"\u22D9",gimel:"\u2137",gjcy:"\u0453",gl:"\u2277",glE:"\u2A92",gla:"\u2AA5",glj:"\u2AA4",gnE:"\u2269",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",gopf:"\u{1D558}",grave:"`",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gt:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",hArr:"\u21D4",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",hardcy:"\u044A",harr:"\u2194",harrcir:"\u2948",harrw:"\u21AD",hbar:"\u210F",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",hfr:"\u{1D525}",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",hopf:"\u{1D559}",horbar:"\u2015",hscr:"\u{1D4BD}",hslash:"\u210F",hstrok:"\u0127",hybull:"\u2043",hyphen:"\u2010",iacute:"\xED",ic:"\u2063",icirc:"\xEE",icy:"\u0438",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",ifr:"\u{1D526}",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",ijlig:"\u0133",imacr:"\u012B",image:"\u2111",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",int:"\u222B",intcal:"\u22BA",integers:"\u2124",intercal:"\u22BA",intlarhk:"\u2A17",intprod:"\u2A3C",iocy:"\u0451",iogon:"\u012F",iopf:"\u{1D55A}",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",iscr:"\u{1D4BE}",isin:"\u2208",isinE:"\u22F9",isindot:"\u22F5",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",itilde:"\u0129",iukcy:"\u0456",iuml:"\xEF",jcirc:"\u0135",jcy:"\u0439",jfr:"\u{1D527}",jmath:"\u0237",jopf:"\u{1D55B}",jscr:"\u{1D4BF}",jsercy:"\u0458",jukcy:"\u0454",kappa:"\u03BA",kappav:"\u03F0",kcedil:"\u0137",kcy:"\u043A",kfr:"\u{1D528}",kgreen:"\u0138",khcy:"\u0445",kjcy:"\u045C",kopf:"\u{1D55C}",kscr:"\u{1D4C0}",lAarr:"\u21DA",lArr:"\u21D0",lAtail:"\u291B",lBarr:"\u290E",lE:"\u2266",lEg:"\u2A8B",lHar:"\u2962",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",lambda:"\u03BB",lang:"\u27E8",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",laquo:"\xAB",larr:"\u2190",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",latail:"\u2919",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",lcaron:"\u013E",lcedil:"\u013C",lceil:"\u2308",lcub:"{",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",leftarrow:"\u2190",leftarrowtail:"\u21A2",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",leftrightarrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",leftthreetimes:"\u22CB",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",lessgtr:"\u2276",lesssim:"\u2272",lfisht:"\u297C",lfloor:"\u230A",lfr:"\u{1D529}",lg:"\u2276",lgE:"\u2A91",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",ljcy:"\u0459",ll:"\u226A",llarr:"\u21C7",llcorner:"\u231E",llhard:"\u296B",lltri:"\u25FA",lmidot:"\u0140",lmoust:"\u23B0",lmoustache:"\u23B0",lnE:"\u2268",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",longleftarrow:"\u27F5",longleftrightarrow:"\u27F7",longmapsto:"\u27FC",longrightarrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",lopf:"\u{1D55D}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\u{1D4C1}",lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",lstrok:"\u0142",lt:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltrPar:"\u2996",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",mDDot:"\u223A",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",mcy:"\u043C",mdash:"\u2014",measuredangle:"\u2221",mfr:"\u{1D52A}",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",mopf:"\u{1D55E}",mp:"\u2213",mscr:"\u{1D4C2}",mstpos:"\u223E",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nGg:"\u22D9\u0338",nGt:"\u226B\u20D2",nGtv:"\u226B\u0338",nLeftarrow:"\u21CD",nLeftrightarrow:"\u21CE",nLl:"\u22D8\u0338",nLt:"\u226A\u20D2",nLtv:"\u226A\u0338",nRightarrow:"\u21CF",nVDash:"\u22AF",nVdash:"\u22AE",nabla:"\u2207",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",ncaron:"\u0148",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",ncy:"\u043D",ndash:"\u2013",ne:"\u2260",neArr:"\u21D7",nearhk:"\u2924",nearr:"\u2197",nearrow:"\u2197",nedot:"\u2250\u0338",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",nexist:"\u2204",nexists:"\u2204",nfr:"\u{1D52B}",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",ngsim:"\u2275",ngt:"\u226F",ngtr:"\u226F",nhArr:"\u21CE",nharr:"\u21AE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",njcy:"\u045A",nlArr:"\u21CD",nlE:"\u2266\u0338",nlarr:"\u219A",nldr:"\u2025",nle:"\u2270",nleftarrow:"\u219A",nleftrightarrow:"\u21AE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nlsim:"\u2274",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nmid:"\u2224",nopf:"\u{1D55F}",not:"\xAC",notin:"\u2209",notinE:"\u22F9\u0338",notindot:"\u22F5\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrArr:"\u21CF",nrarr:"\u219B",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",nscr:"\u{1D4C3}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvDash:"\u22AD",nvHarr:"\u2904",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwArr:"\u21D6",nwarhk:"\u2923",nwarr:"\u2196",nwarrow:"\u2196",nwnear:"\u2927",oS:"\u24C8",oacute:"\xF3",oast:"\u229B",ocir:"\u229A",ocirc:"\xF4",ocy:"\u043E",odash:"\u229D",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",oelig:"\u0153",ofcir:"\u29BF",ofr:"\u{1D52C}",ogon:"\u02DB",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",omacr:"\u014D",omega:"\u03C9",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",oopf:"\u{1D560}",opar:"\u29B7",operp:"\u29B9",oplus:"\u2295",or:"\u2228",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oscr:"\u2134",oslash:"\xF8",osol:"\u2298",otilde:"\xF5",otimes:"\u2297",otimesas:"\u2A36",ouml:"\xF6",ovbar:"\u233D",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",pfr:"\u{1D52D}",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",pointint:"\u2A15",popf:"\u{1D561}",pound:"\xA3",pr:"\u227A",prE:"\u2AB3",prap:"\u2AB7",prcue:"\u227C",pre:"\u2AAF",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",prime:"\u2032",primes:"\u2119",prnE:"\u2AB5",prnap:"\u2AB9",prnsim:"\u22E8",prod:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",pscr:"\u{1D4C5}",psi:"\u03C8",puncsp:"\u2008",qfr:"\u{1D52E}",qint:"\u2A0C",qopf:"\u{1D562}",qprime:"\u2057",qscr:"\u{1D4C6}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",quot:'"',rAarr:"\u21DB",rArr:"\u21D2",rAtail:"\u291C",rBarr:"\u290F",rHar:"\u2964",race:"\u223D\u0331",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",rarr:"\u2192",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",rarrtl:"\u21A3",rarrw:"\u219D",ratail:"\u291A",ratio:"\u2236",rationals:"\u211A",rbarr:"\u290D",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",rcaron:"\u0159",rcedil:"\u0157",rceil:"\u2309",rcub:"}",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",reg:"\xAE",rfisht:"\u297D",rfloor:"\u230B",rfr:"\u{1D52F}",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",rho:"\u03C1",rhov:"\u03F1",rightarrow:"\u2192",rightarrowtail:"\u21A3",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",rightthreetimes:"\u22CC",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",ropf:"\u{1D563}",roplus:"\u2A2E",rotimes:"\u2A35",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",rsaquo:"\u203A",rscr:"\u{1D4C7}",rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",ruluhar:"\u2968",rx:"\u211E",sacute:"\u015B",sbquo:"\u201A",sc:"\u227B",scE:"\u2AB4",scap:"\u2AB8",scaron:"\u0161",sccue:"\u227D",sce:"\u2AB0",scedil:"\u015F",scirc:"\u015D",scnE:"\u2AB6",scnap:"\u2ABA",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",scy:"\u0441",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",seArr:"\u21D8",searhk:"\u2925",searr:"\u2198",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",sfr:"\u{1D530}",sfrown:"\u2322",sharp:"\u266F",shchcy:"\u0449",shcy:"\u0448",shortmid:"\u2223",shortparallel:"\u2225",shy:"\xAD",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",softcy:"\u044C",sol:"/",solb:"\u29C4",solbar:"\u233F",sopf:"\u{1D564}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",square:"\u25A1",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",sscr:"\u{1D4C8}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",sub:"\u2282",subE:"\u2AC5",subdot:"\u2ABD",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",subseteq:"\u2286",subseteqq:"\u2AC5",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",sum:"\u2211",sung:"\u266A",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",sup:"\u2283",supE:"\u2AC6",supdot:"\u2ABE",supdsub:"\u2AD8",supe:"\u2287",supedot:"\u2AC4",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",supset:"\u2283",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swArr:"\u21D9",swarhk:"\u2926",swarr:"\u2199",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",target:"\u2316",tau:"\u03C4",tbrk:"\u23B4",tcaron:"\u0165",tcedil:"\u0163",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",tfr:"\u{1D531}",there4:"\u2234",therefore:"\u2234",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223C",thorn:"\xFE",tilde:"\u02DC",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",topf:"\u{1D565}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",tscr:"\u{1D4C9}",tscy:"\u0446",tshcy:"\u045B",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",uArr:"\u21D1",uHar:"\u2963",uacute:"\xFA",uarr:"\u2191",ubrcy:"\u045E",ubreve:"\u016D",ucirc:"\xFB",ucy:"\u0443",udarr:"\u21C5",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",ufr:"\u{1D532}",ugrave:"\xF9",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",umacr:"\u016B",uml:"\xA8",uogon:"\u0173",uopf:"\u{1D566}",uparrow:"\u2191",updownarrow:"\u2195",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",upsi:"\u03C5",upsih:"\u03D2",upsilon:"\u03C5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",uring:"\u016F",urtri:"\u25F9",uscr:"\u{1D4CA}",utdot:"\u22F0",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",uuml:"\xFC",uwangle:"\u29A7",vArr:"\u21D5",vBar:"\u2AE8",vBarv:"\u2AE9",vDash:"\u22A8",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vcy:"\u0432",vdash:"\u22A2",vee:"\u2228",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",verbar:"|",vert:"|",vfr:"\u{1D533}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",vopf:"\u{1D567}",vprop:"\u221D",vrtri:"\u22B3",vscr:"\u{1D4CB}",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",vzigzag:"\u299A",wcirc:"\u0175",wedbar:"\u2A5F",wedge:"\u2227",wedgeq:"\u2259",weierp:"\u2118",wfr:"\u{1D534}",wopf:"\u{1D568}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",wscr:"\u{1D4CC}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",xfr:"\u{1D535}",xhArr:"\u27FA",xharr:"\u27F7",xi:"\u03BE",xlArr:"\u27F8",xlarr:"\u27F5",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",xopf:"\u{1D569}",xoplus:"\u2A01",xotime:"\u2A02",xrArr:"\u27F9",xrarr:"\u27F6",xscr:"\u{1D4CD}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",yacute:"\xFD",yacy:"\u044F",ycirc:"\u0177",ycy:"\u044B",yen:"\xA5",yfr:"\u{1D536}",yicy:"\u0457",yopf:"\u{1D56A}",yscr:"\u{1D4CE}",yucy:"\u044E",yuml:"\xFF",zacute:"\u017A",zcaron:"\u017E",zcy:"\u0437",zdot:"\u017C",zeetrf:"\u2128",zeta:"\u03B6",zfr:"\u{1D537}",zhcy:"\u0436",zigrarr:"\u21DD",zopf:"\u{1D56B}",zscr:"\u{1D4CF}",zwj:"\u200D",zwnj:"\u200C"};var nT={}.hasOwnProperty;function Oi(e){return nT.call(Xd,e)?Xd[e]:!1}var al={name:"characterReference",tokenize:rT};function rT(e,t,r){let n=this,i=0,a,o;return s;function s(d){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),u}function u(d){return d===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(d),e.exit("characterReferenceMarkerNumeric"),l):(e.enter("characterReferenceValue"),a=31,o=Gt,c(d))}function l(d){return d===88||d===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(d),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),a=6,o=zw,c):(e.enter("characterReferenceValue"),a=7,o=za,c(d))}function c(d){let f;return d===59&&i?(f=e.exit("characterReferenceValue"),o===Gt&&!Oi(n.sliceSerialize(f))?r(d):(e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)):o(d)&&i++=4?o(l):r(l)}function o(l){return l===null?u(l):ce(l)?e.attempt(aT,o,u)(l):(e.enter("codeFlowValue"),s(l))}function s(l){return l===null||ce(l)?(e.exit("codeFlowValue"),o(l)):(e.consume(l),s)}function u(l){return e.exit("codeIndented"),t(l)}}function sT(e,t,r){let n=this;return i;function i(o){return n.parser.lazy[n.now().line]?r(o):ce(o)?(e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),i):Se(e,a,"linePrefix",4+1)(o)}function a(o){let s=n.events[n.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(o):ce(o)?i(o):r(o)}}h();var Zd={name:"codeText",tokenize:uT,resolve:lT,previous:cT};function lT(e){let t=e.length-4,r=3,n,i;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=r;++n=4?t(o):e.interrupt(n.parser.constructs.flow,r,t)(o)}}h();h();function ll(e,t,r,n,i,a,o,s,u){let l=u||Number.POSITIVE_INFINITY,c=0;return d;function d(x){return x===60?(e.enter(n),e.enter(i),e.enter(a),e.consume(x),e.exit(a),f):x===null||x===41||ja(x)?r(x):(e.enter(n),e.enter(o),e.enter(s),e.enter("chunkString",{contentType:"string"}),y(x))}function f(x){return x===62?(e.enter(a),e.consume(x),e.exit(a),e.exit(i),e.exit(n),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(x))}function p(x){return x===62?(e.exit("chunkString"),e.exit(s),f(x)):x===null||x===60||ce(x)?r(x):(e.consume(x),x===92?m:p)}function m(x){return x===60||x===62||x===92?(e.consume(x),p):p(x)}function y(x){return x===40?++c>l?r(x):(e.consume(x),y):x===41?c--?(e.consume(x),y):(e.exit("chunkString"),e.exit(s),e.exit(o),e.exit(n),t(x)):x===null||Qe(x)?c?r(x):(e.exit("chunkString"),e.exit(s),e.exit(o),e.exit(n),t(x)):ja(x)?r(x):(e.consume(x),x===92?b:y)}function b(x){return x===40||x===41||x===92?(e.consume(x),y):y(x)}}h();function cl(e,t,r,n,i,a){let o=this,s=0,u;return l;function l(p){return e.enter(n),e.enter(i),e.consume(p),e.exit(i),e.enter(a),c}function c(p){return p===null||p===91||p===93&&!u||p===94&&!s&&"_hiddenFootnoteSupport"in o.parser.constructs||s>999?r(p):p===93?(e.exit(a),e.enter(i),e.consume(p),e.exit(i),e.exit(n),t):ce(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),d(p))}function d(p){return p===null||p===91||p===93||ce(p)||s++>999?(e.exit("chunkString"),c(p)):(e.consume(p),u=u||!Be(p),p===92?f:d)}function f(p){return p===91||p===92||p===93?(e.consume(p),s++,d):d(p)}}h();function ul(e,t,r,n,i,a){let o;return s;function s(f){return e.enter(n),e.enter(i),e.consume(f),e.exit(i),o=f===40?41:f,u}function u(f){return f===o?(e.enter(i),e.consume(f),e.exit(i),e.exit(n),t):(e.enter(a),l(f))}function l(f){return f===o?(e.exit(a),u(o)):f===null?r(f):ce(f)?(e.enter("lineEnding"),e.consume(f),e.exit("lineEnding"),Se(e,l,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(f))}function c(f){return f===o||f===null||ce(f)?(e.exit("chunkString"),l(f)):(e.consume(f),f===92?d:c)}function d(f){return f===o||f===92?(e.consume(f),c):c(f)}}h();function jr(e,t){let r;return n;function n(i){return ce(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),r=!0,n):Be(i)?Se(e,n,r?"linePrefix":"lineSuffix")(i):t(i)}}h();function nr(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var tf={name:"definition",tokenize:vT},gT={tokenize:yT,partial:!0};function vT(e,t,r){let n=this,i;return a;function a(u){return e.enter("definition"),cl.call(n,e,o,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(u)}function o(u){return i=nr(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),u===58?(e.enter("definitionMarker"),e.consume(u),e.exit("definitionMarker"),jr(e,ll(e,e.attempt(gT,Se(e,s,"whitespace"),Se(e,s,"whitespace")),r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):r(u)}function s(u){return u===null||ce(u)?(e.exit("definition"),n.parser.defined.includes(i)||n.parser.defined.push(i),t(u)):r(u)}}function yT(e,t,r){return n;function n(o){return Qe(o)?jr(e,i)(o):r(o)}function i(o){return o===34||o===39||o===40?ul(e,Se(e,a,"whitespace"),r,"definitionTitle","definitionTitleMarker","definitionTitleString")(o):r(o)}function a(o){return o===null||ce(o)?t(o):r(o)}}h();var nf={name:"hardBreakEscape",tokenize:bT};function bT(e,t,r){return n;function n(a){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(a),i}function i(a){return ce(a)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),t(a)):r(a)}}h();var rf={name:"headingAtx",tokenize:ET,resolve:wT};function wT(e,t){let r=e.length-2,n=3,i,a;return e[n][1].type==="whitespace"&&(n+=2),r-2>n&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(n===r-1||r-4>n&&e[r-2][1].type==="whitespace")&&(r-=n+1===r?2:4),r>n&&(i={type:"atxHeadingText",start:e[n][1].start,end:e[r][1].end},a={type:"chunkText",start:e[n][1].start,end:e[r][1].end,contentType:"text"},Ft(e,n,r-n+1,[["enter",i,t],["enter",a,t],["exit",a,t],["exit",i,t]])),e}function ET(e,t,r){let n=this,i=0;return a;function a(c){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),o(c)}function o(c){return c===35&&i++<6?(e.consume(c),o):c===null||Qe(c)?(e.exit("atxHeadingSequence"),n.interrupt?t(c):s(c)):r(c)}function s(c){return c===35?(e.enter("atxHeadingSequence"),u(c)):c===null||ce(c)?(e.exit("atxHeading"),t(c)):Be(c)?Se(e,s,"whitespace")(c):(e.enter("atxHeadingText"),l(c))}function u(c){return c===35?(e.consume(c),u):(e.exit("atxHeadingSequence"),s(c))}function l(c){return c===null||c===35||Qe(c)?(e.exit("atxHeadingText"),s(c)):(e.consume(c),l)}}h();h();var Zw=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],af=["pre","script","style","textarea"];var of={name:"htmlFlow",tokenize:ST,resolveTo:kT,concrete:!0},xT={tokenize:_T,partial:!0};function kT(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function ST(e,t,r){let n=this,i,a,o,s,u;return l;function l(P){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(P),c}function c(P){return P===33?(e.consume(P),d):P===47?(e.consume(P),m):P===63?(e.consume(P),i=3,n.interrupt?t:be):dn(P)?(e.consume(P),o=String.fromCharCode(P),a=!0,y):r(P)}function d(P){return P===45?(e.consume(P),i=2,f):P===91?(e.consume(P),i=5,o="CDATA[",s=0,p):dn(P)?(e.consume(P),i=4,n.interrupt?t:be):r(P)}function f(P){return P===45?(e.consume(P),n.interrupt?t:be):r(P)}function p(P){return P===o.charCodeAt(s++)?(e.consume(P),s===o.length?n.interrupt?t:Z:p):r(P)}function m(P){return dn(P)?(e.consume(P),o=String.fromCharCode(P),y):r(P)}function y(P){return P===null||P===47||P===62||Qe(P)?P!==47&&a&&af.includes(o.toLowerCase())?(i=1,n.interrupt?t(P):Z(P)):Zw.includes(o.toLowerCase())?(i=6,P===47?(e.consume(P),b):n.interrupt?t(P):Z(P)):(i=7,n.interrupt&&!n.parser.lazy[n.now().line]?r(P):a?D(P):x(P)):P===45||Gt(P)?(e.consume(P),o+=String.fromCharCode(P),y):r(P)}function b(P){return P===62?(e.consume(P),n.interrupt?t:Z):r(P)}function x(P){return Be(P)?(e.consume(P),x):z(P)}function D(P){return P===47?(e.consume(P),z):P===58||P===95||dn(P)?(e.consume(P),C):Be(P)?(e.consume(P),D):z(P)}function C(P){return P===45||P===46||P===58||P===95||Gt(P)?(e.consume(P),C):A(P)}function A(P){return P===61?(e.consume(P),N):Be(P)?(e.consume(P),A):D(P)}function N(P){return P===null||P===60||P===61||P===62||P===96?r(P):P===34||P===39?(e.consume(P),u=P,T):Be(P)?(e.consume(P),N):(u=null,O(P))}function T(P){return P===null||ce(P)?r(P):P===u?(e.consume(P),W):(e.consume(P),T)}function O(P){return P===null||P===34||P===39||P===60||P===61||P===62||P===96||Qe(P)?A(P):(e.consume(P),O)}function W(P){return P===47||P===62||Be(P)?D(P):r(P)}function z(P){return P===62?(e.consume(P),ee):r(P)}function ee(P){return Be(P)?(e.consume(P),ee):P===null||ce(P)?Z(P):r(P)}function Z(P){return P===45&&i===2?(e.consume(P),re):P===60&&i===1?(e.consume(P),pe):P===62&&i===4?(e.consume(P),De):P===63&&i===3?(e.consume(P),be):P===93&&i===5?(e.consume(P),ve):ce(P)&&(i===6||i===7)?e.check(xT,De,le)(P):P===null||ce(P)?le(P):(e.consume(P),Z)}function le(P){return e.exit("htmlFlowData"),X(P)}function X(P){return P===null?L(P):ce(P)?e.attempt({tokenize:G,partial:!0},X,L)(P):(e.enter("htmlFlowData"),Z(P))}function G(P,ct,Je){return V;function V(q){return P.enter("lineEnding"),P.consume(q),P.exit("lineEnding"),j}function j(q){return n.parser.lazy[n.now().line]?Je(q):ct(q)}}function re(P){return P===45?(e.consume(P),be):Z(P)}function pe(P){return P===47?(e.consume(P),o="",he):Z(P)}function he(P){return P===62&&af.includes(o.toLowerCase())?(e.consume(P),De):dn(P)&&o.length<8?(e.consume(P),o+=String.fromCharCode(P),he):Z(P)}function ve(P){return P===93?(e.consume(P),be):Z(P)}function be(P){return P===62?(e.consume(P),De):P===45&&i===2?(e.consume(P),be):Z(P)}function De(P){return P===null||ce(P)?(e.exit("htmlFlowData"),L(P)):(e.consume(P),De)}function L(P){return e.exit("htmlFlow"),t(P)}}function _T(e,t,r){return n;function n(i){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),e.attempt(_r,t,r)}}h();var sf={name:"htmlText",tokenize:CT};function CT(e,t,r){let n=this,i,a,o,s;return u;function u(L){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(L),l}function l(L){return L===33?(e.consume(L),c):L===47?(e.consume(L),O):L===63?(e.consume(L),N):dn(L)?(e.consume(L),ee):r(L)}function c(L){return L===45?(e.consume(L),d):L===91?(e.consume(L),a="CDATA[",o=0,b):dn(L)?(e.consume(L),A):r(L)}function d(L){return L===45?(e.consume(L),f):r(L)}function f(L){return L===null||L===62?r(L):L===45?(e.consume(L),p):m(L)}function p(L){return L===null||L===62?r(L):m(L)}function m(L){return L===null?r(L):L===45?(e.consume(L),y):ce(L)?(s=m,ve(L)):(e.consume(L),m)}function y(L){return L===45?(e.consume(L),De):m(L)}function b(L){return L===a.charCodeAt(o++)?(e.consume(L),o===a.length?x:b):r(L)}function x(L){return L===null?r(L):L===93?(e.consume(L),D):ce(L)?(s=x,ve(L)):(e.consume(L),x)}function D(L){return L===93?(e.consume(L),C):x(L)}function C(L){return L===62?De(L):L===93?(e.consume(L),C):x(L)}function A(L){return L===null||L===62?De(L):ce(L)?(s=A,ve(L)):(e.consume(L),A)}function N(L){return L===null?r(L):L===63?(e.consume(L),T):ce(L)?(s=N,ve(L)):(e.consume(L),N)}function T(L){return L===62?De(L):N(L)}function O(L){return dn(L)?(e.consume(L),W):r(L)}function W(L){return L===45||Gt(L)?(e.consume(L),W):z(L)}function z(L){return ce(L)?(s=z,ve(L)):Be(L)?(e.consume(L),z):De(L)}function ee(L){return L===45||Gt(L)?(e.consume(L),ee):L===47||L===62||Qe(L)?Z(L):r(L)}function Z(L){return L===47?(e.consume(L),De):L===58||L===95||dn(L)?(e.consume(L),le):ce(L)?(s=Z,ve(L)):Be(L)?(e.consume(L),Z):De(L)}function le(L){return L===45||L===46||L===58||L===95||Gt(L)?(e.consume(L),le):X(L)}function X(L){return L===61?(e.consume(L),G):ce(L)?(s=X,ve(L)):Be(L)?(e.consume(L),X):Z(L)}function G(L){return L===null||L===60||L===61||L===62||L===96?r(L):L===34||L===39?(e.consume(L),i=L,re):ce(L)?(s=G,ve(L)):Be(L)?(e.consume(L),G):(e.consume(L),i=void 0,he)}function re(L){return L===i?(e.consume(L),pe):L===null?r(L):ce(L)?(s=re,ve(L)):(e.consume(L),re)}function pe(L){return L===62||L===47||Qe(L)?Z(L):r(L)}function he(L){return L===null||L===34||L===39||L===60||L===61||L===96?r(L):L===62||Qe(L)?Z(L):(e.consume(L),he)}function ve(L){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(L),e.exit("lineEnding"),Se(e,be,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function be(L){return e.enter("htmlTextData"),s(L)}function De(L){return L===62?(e.consume(L),e.exit("htmlTextData"),e.exit("htmlText"),t):r(L)}}h();var qr={name:"labelEnd",tokenize:LT,resolveTo:AT,resolveAll:IT},TT={tokenize:PT},DT={tokenize:FT},MT={tokenize:NT};function IT(e){let t=-1,r;for(;++t-1&&(o[0]=o[0].slice(n)),a>0&&o.push(e[i].slice(0,a))),o}function XT(e,t){let r=-1,n=[],i;for(;++rd&&(r=d);let p=r-f,g=c.getMaxVerticalScroll(),y=c.getVerticalScroll();n>g&&(n=g);let b=n-y,k=Math.abs(Math.round(p/1e3*a.speed)),T=Math.abs(Math.round(b/1e3*a.speed)),C=k>T?k:T;return Ca.maxDuration&&(C=a.maxDuration),new Promise((A,H)=>{p===0&&b===0&&A(!0),Zn.remove(c.element,!0);let D,K=()=>{se(),cancelAnimationFrame(D),A(!1)};Zn.add(c.element,K);let z=ie=>ie.preventDefault(),U=a.cancelOnUserAction?K:z,Z=a.cancelOnUserAction?{passive:!0}:{passive:!1},J=["wheel","touchstart","keydown","mousedown"],se=()=>{J.forEach(ie=>{c.element.removeEventListener(ie,U,Z)})};J.forEach(ie=>{c.element.addEventListener(ie,U,Z)});let G=Date.now(),Q=()=>{var ie=Date.now()-G,he=ie/C;let pe=Math.round(f+p*a.easing(he)),ge=Math.round(y+b*a.easing(he));ie{this.activeScroll.size===0&&(this.scrollState=jl(this.scrollEl),this.handleEntityRegistration())};this.onDragEnd=()=>{this.activeScroll.clear()};this.handleBeginDragScroll=({scrollEntitySide:t,scrollStrength:r})=>{this.isDoneScrolling(t)||(this.activeScroll.set(t,r),this.handleDragScroll())};this.handleUpdateDragScroll=({scrollEntitySide:t,scrollStrength:r})=>{this.isDoneScrolling(t)||this.activeScroll.set(t,r)};this.handleEndDragScroll=({scrollEntitySide:t})=>{this.activeScroll.delete(t)};this.dndManager=t,this.instanceId=Ae(),this.scopeId=r,this.triggerTypes=n,this.scrollState=on,this.parent=i,this.activeScroll=new Map,this.pollForNodes(a)}pollForNodes(t){!t()||this.parent&&!this.parent.observerHandlers?this.dndManager.win.requestAnimationFrame(()=>this.pollForNodes(t)):this.initNodes(t())}initNodes(t){this.scrollEl=t,this.scrollEl.dataset.hitboxid=this.instanceId,this.scrollEl.dataset.scrollid=this.instanceId,this.top=this.createScrollEntity("top"),this.right=this.createScrollEntity("right"),this.bottom=this.createScrollEntity("bottom"),this.left=this.createScrollEntity("left"),this.bindScrollHandlers(),this.observerHandlers=new Map,this.observer=new IntersectionObserver(r=>{r.forEach(n=>{var a;let i=(a=n.target.dataset)==null?void 0:a.hitboxid;if(i&&this.observerHandlers.has(i)){let o=this.observerHandlers.get(i);o&&o(n)}})},{root:t,threshold:.1}),this.scrollEl.addEventListener("scroll",this.onScroll,{passive:!0,capture:!1}),this.dndManager.emitter.on("scrollResize",this.onScroll),this.scrollEl.win.setTimeout(()=>{this.onScroll()}),this.dndManager.observeResize(this.scrollEl),this.parent?this.parent.registerObserverHandler(this.instanceId,this.scrollEl,r=>{r.isIntersecting?this.handleEntityRegistration():this.handleEntityUnregistration()}):this.handleEntityRegistration()}destroy(){var t;this.handleEntityUnregistration(),this.observer.disconnect(),this.unbindScrollHandlers(),this.scrollEl.removeEventListener("scroll",this.onScroll),this.dndManager.emitter.off("scrollResize",this.onScroll),(t=this.parent)==null||t.unregisterObserverHandler(this.instanceId,this.scrollEl),this.dndManager.unobserveResize(this.scrollEl)}handleEntityRegistration(){Ps.forEach(t=>{let r=Ze(this.scrollEl),n=this.getId(t),i=this.dndManager.scrollEntities.has(n),a=this.isDoneScrolling(t);!a&&!i?this.dndManager.registerScrollEntity(n,this[t],r):a&&i&&this.dndManager.unregisterScrollEntity(n,r)})}handleEntityUnregistration(){Ps.forEach(t=>{let r=Ze(this.scrollEl),n=this.getId(t);this.dndManager.unregisterScrollEntity(n,r)})}registerObserverHandler(t,r,n){this.observerHandlers.set(t,n),this.observer.observe(r)}unregisterObserverHandler(t,r){this.observerHandlers.delete(t),this.observer.unobserve(r)}bindScrollHandlers(){Ps.forEach(t=>{let r=this.getId(t);this.dndManager.dragManager.emitter.on("beginDragScroll",this.handleBeginDragScroll,r),this.dndManager.dragManager.emitter.on("updateDragScroll",this.handleUpdateDragScroll,r),this.dndManager.dragManager.emitter.on("endDragScroll",this.handleEndDragScroll,r),this.dndManager.dragManager.emitter.on("dragEnd",this.onDragEnd)})}unbindScrollHandlers(){Ps.forEach(t=>{let r=this.getId(t);this.dndManager.dragManager.emitter.off("beginDragScroll",this.handleBeginDragScroll,r),this.dndManager.dragManager.emitter.off("updateDragScroll",this.handleUpdateDragScroll,r),this.dndManager.dragManager.emitter.off("endDragScroll",this.handleEndDragScroll,r),this.dndManager.dragManager.emitter.off("dragEnd",this.onDragEnd)})}isDoneScrolling(t){switch(t){case"top":return this.scrollState.y===0;case"right":return this.scrollState.x===this.scrollState.maxX;case"bottom":return this.scrollState.y===this.scrollState.maxY;case"left":return this.scrollState.x===0}}handleDragScroll(){this.activeScroll.size!==0&&this.scrollEl.win.requestAnimationFrame(()=>{let t={left:0,top:0};this.activeScroll.forEach((r,n)=>{if(this.isDoneScrolling(n))return this.activeScroll.delete(n);let i=["left","right"].includes(n)?"left":"top",a=["right","bottom"].includes(n);t[i]=a?Math.max(Ls-Ls*r/35,0):Math.min(-Ls+Ls*r/35,0)}),this.scrollEl.scrollBy(t),this.scrollState=jl(this.scrollEl),this.handleEntityRegistration(),this.handleDragScroll()})}getId(t){return`${this.instanceId}-${t}`}getPath(t){var r,n,i,a;switch(t){case"right":return[...((r=this.parent)==null?void 0:r.getPath())||[],1];case"bottom":return[...((n=this.parent)==null?void 0:n.getPath())||[],2];case"left":return[...((i=this.parent)==null?void 0:i.getPath())||[],3]}return[...((a=this.parent)==null?void 0:a.getPath())||[],0]}getScrollShift(){var r,n,i;let t=(r=this.parent)==null?void 0:r.getScrollShift();return{x:Xe((n=this.parent)==null?void 0:n.scrollState.x)+Xe(t==null?void 0:t.x),y:Xe((i=this.parent)==null?void 0:i.scrollState.y)+Xe(t==null?void 0:t.y)}}createScrollEntity(t){var n,i;let r=this;return{scopeId:this.scopeId,entityId:r.getId(t),initial:Wl(this.scrollEl.getBoundingClientRect(),((n=this.parent)==null?void 0:n.scrollState)||on,((i=this.parent)==null?void 0:i.getScrollShift())||Pn,t),getParentScrollState(){var a;return((a=r.parent)==null?void 0:a.scrollState)||on},getParentScrollShift(){var a;return((a=r.parent)==null?void 0:a.getScrollShift())||Pn},recalcInitial(){var a,o;this.initial=Wl(r.scrollEl.getBoundingClientRect(),((a=r.parent)==null?void 0:a.scrollState)||on,((o=r.parent)==null?void 0:o.getScrollShift())||Pn,t)},getHitbox(){return So(this.initial[0],this.initial[1],this.initial[2],this.initial[3],this.getParentScrollState(),this.getParentScrollShift())},getPath(){return r.getPath(t)},getData(){return{id:r.getId(t),type:bC,side:t,accepts:r.triggerTypes||[],scrollContainer:r.scrollEl,win:Ze(r.scrollEl)}}}}};function ab({scrollRef:e,triggerTypes:t,children:r}){let n=L.useContext(kt),i=L.useContext(mr),a=L.useContext(sa),o=L.useRef(),s=L.useMemo(()=>{if(n){o.current&&o.current.destroy();let u=new yd(n,i,t||[],a,()=>e.current);return o.current=u,u}return null},[n,i,e,t,a]);return L.useEffect(()=>()=>{var u;return(u=o.current)==null?void 0:u.destroy()},[]),s?h(sa.Provider,{value:s},r):null}m();function ob({children:e}){let t=L.useMemo(()=>new oa,[]);return h(la.Provider,{value:t},e)}function sb(e,t){let r=L.useContext(mr),n=L.useRef(null),i=L.useContext(la),a=o=>{n.current=o,n.current&&o.win.requestAnimationFrame(()=>{let s=i.getScrollState(e);s&&(s.x!==0||s.y!==0)&&(n.current.scrollLeft=s.x,n.current.scrollTop=s.y)})};return L.useEffect(()=>{let o=n.current;if(!o)return;let s=ds(o.win,u=>{let l=u.target;i.setScrollState(r,e,{x:l.scrollLeft,y:l.scrollTop})});return o.addEventListener("scroll",s),()=>{o.removeEventListener("scroll",s)}},[i,e,t]),{setRef:a,scrollRef:n}}function Fs({className:e,children:t,triggerTypes:r,isStatic:n,id:i,index:a}){let{setRef:o,scrollRef:s}=sb(i,a);return h("div",{ref:o,className:et([e,B("scroll-container")])},n?t:h(ab,{scrollRef:s,triggerTypes:r},t))}m();m();var bd={width:0,height:0},wC=100,wd=class{constructor(t,r,n){this.hitboxDimensions=bd;this.handleDragStart=({dragEntity:t,dragEntityMargin:r,dragOriginHitbox:n})=>{let i=t==null?void 0:t.entityId,a=i?this.sortables.has(i):null;!t||!a||!n||(this.setSortState(!0),this.hitboxDimensions=ql(n,r),this.activatePlaceholder(this.hitboxDimensions,ln.none),this.sortables.forEach(([o,s,u])=>{let l=ra(t.getPath(),o.getPath()),c=o.entityId;if(l===an.Self)return this.hidden.add(c),this.hideDraggingEntity(u);l===an.After&&(this.shifted.has(c)||this.shifted.add(c),this.shiftEl(s,ln.none,this.hitboxDimensions))}))};this.dragEndTimeout=0;this.handleDragEnd=({primaryIntersection:t,dragPosition:r,dragOriginHitbox:n,dragEntity:i})=>{if(!this.isSorting||!r||!n||!i){if(!t&&i&&this.sortables.has(i.entityId))return this.resetSelf({maintainHidden:!1});if(t&&i){let s=(t==null?void 0:t.getHitbox())||n,u=Di({position:r,destination:{x:s[0],y:s[1]}});return this.dndManager.win.setTimeout(()=>{this.resetSelf({maintainHidden:!1})},u)}return this.resetSelf({maintainHidden:!0})}this.dndManager.win.clearTimeout(this.dragEnterTimeout),this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEndTimeout);let a=(t==null?void 0:t.getHitbox())||n,o=i.scopeId==="htmldnd"?0:Di({position:r,destination:{x:a[0],y:a[1]}});this.dragEndTimeout=this.dndManager.win.setTimeout(()=>{let s=i.entityId.split(":::").pop(),u=t==null?void 0:t.entityId.split(":::").pop();t&&this.sortables.has(t.entityId)&&u!==s&&this.dndManager.onDrop(i,t),this.resetSelf({maintainHidden:!1,shiftTransition:ln.none,placeholderTransition:ln.none})},o),this.hitboxDimensions=bd};this.dragEnterTimeout=0;this.handleDragEnter=({dragEntity:t,dragEntityMargin:r,dragOriginHitbox:n,primaryIntersection:i})=>{let a=i==null?void 0:i.entityId,o=a?this.sortables.has(a):null;if(!t||!i||!o||!n){!o&&this.isSorting&&this.resetSelf({maintainHidden:!0,maintainPlaceholder:!0});return}t.entityId!==i.entityId&&(this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEnterTimeout),this.dragEnterTimeout=this.dndManager.win.setTimeout(()=>{this.setSortState(!0),this.hitboxDimensions=ql(n,r),this.activatePlaceholder(this.hitboxDimensions,ln.placeholder),this.sortables.forEach(([s,u])=>{let l=ra(i.getPath(),s.getPath()),c=s.entityId;!this.hidden.has(c)&&(l===an.Self||l===an.After)?this.shifted.has(c)||(this.shifted.add(c),this.shiftEl(u,ln.outOfTheWay,this.hitboxDimensions)):this.shifted.has(c)&&(this.shifted.delete(c),this.resetEl(u))})},10))};this.dragLeaveTimeout=0;this.handleDragLeave=()=>{!this.isSorting||(this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEnterTimeout),this.dragLeaveTimeout=this.dndManager.win.setTimeout(()=>{this.resetSelf({maintainHidden:!0,maintainPlaceholder:!0})},wC),this.hitboxDimensions=bd)};this.instanceId=Ae(),this.dndManager=t,this.sortables=new Map,this.shifted=new Set,this.hidden=new Set,this.isSorting=!1,this.axis=r,this.placeholder=null,this.sortListeners=n?[n]:[],t.dragManager.emitter.on("dragStart",this.handleDragStart),t.dragManager.emitter.on("dragEnd",this.handleDragEnd),t.dragManager.emitter.on("dragEnter",this.handleDragEnter),t.dragManager.emitter.on("dragLeave",this.handleDragLeave)}destroy(){this.dndManager.win.clearTimeout(this.dragLeaveTimeout),this.dndManager.win.clearTimeout(this.dragEndTimeout),this.dndManager.dragManager.emitter.off("dragStart",this.handleDragStart),this.dndManager.dragManager.emitter.off("dragEnd",this.handleDragEnd),this.dndManager.dragManager.emitter.off("dragEnter",this.handleDragEnter),this.dndManager.dragManager.emitter.off("dragLeave",this.handleDragLeave)}registerSortable(t,r,n,i){let a=r.getData().type==="placeholder";this.sortables.set(t,[r,n,i]),a?(this.placeholder=[r,n,i],i.dataset.axis=this.axis,Tn(i,"transition",ln.none)):Tn(n,"transition",ln.none)}unregisterSortable(t){this.sortables.delete(t)}resetSelf({maintainHidden:t,maintainPlaceholder:r,shiftTransition:n,placeholderTransition:i}){this.isSorting&&this.setSortState(!1),this.isPlaceholderActive&&!r&&this.deactivatePlaceholder(i),this.shifted.size>0&&(this.shifted.forEach(a=>{if(this.sortables.has(a)){let[,o]=this.sortables.get(a);this.resetEl(o,n)}}),this.shifted.clear()),!t&&this.hidden.size>0&&(this.hidden.forEach(a=>{if(this.sortables.has(a)){let[,,o]=this.sortables.get(a);this.resetEl(o,n)}}),this.hidden.clear())}activatePlaceholder(t,r){if(this.placeholder){let n=this.axis==="horizontal",[,,i]=this.placeholder;Tn(i,"transition",r),Tn(i,n?"width":"height",`${n?t.width:t.height}px`),this.isPlaceholderActive=!0}}deactivatePlaceholder(t=ln.placeholder){if(this.placeholder){let[,,r]=this.placeholder;Tn(r,"transition",t),fs(r,"width"),fs(r,"height"),this.isPlaceholderActive=!1}}hideDraggingEntity(t){Tn(t,"display","none")}shiftEl(t,r,n){let i=this.axis==="horizontal"?`translate3d(${n.width}px, 0, 0)`:`translate3d(0, ${n.height}px, 0)`;Tn(t,"transition",r),Tn(t,"transform",i)}resetEl(t,r=ln.outOfTheWay){Tn(t,"transition",r),Tn(t,"transform","translate3d(0, 0, 0)"),fs(t,"display")}addSortNotifier(t){this.sortListeners.push(t)}removeSortNotifier(t){this.sortListeners=this.sortListeners.filter(r=>r!==t)}setSortState(t){this.isSorting!==t&&(this.isSorting=t,this.sortListeners.forEach(r=>r(t)))}};function Li({axis:e,children:t,onSortChange:r}){let n=L.useContext(kt),i=L.useRef(),a=L.useMemo(()=>{if(n){i.current&&i.current.destroy();let o=new wd(n,e,r);return i.current=o,o}return null},[n,e,r]);return L.useEffect(()=>()=>{var o;return(o=i.current)==null?void 0:o.destroy()},[]),a?h(Eo.Provider,{value:a},t):null}m();function Pi({index:e,accepts:t,className:r,isStatic:n}){let i=L.useRef(null),a=L.useRef(null),o=L.useMemo(()=>({id:Ae(),type:"placeholder",accepts:t}),t);return h("div",{ref:a,className:et([r,B("placeholder")])},h("div",{ref:i},!n&&h(gr,{elementRef:i,measureRef:a,id:o.id,index:e,data:o})))}m();m();m();Ar();Ar();function lb(e,t){for(var r in t)e[r]=t[r];return e}function Ed(e,t){for(var r in e)if(r!=="__source"&&!(r in t))return!0;for(var n in t)if(n!=="__source"&&e[n]!==t[n])return!0;return!1}function xd(e){this.props=e}function EC(e,t){function r(i){var a=this.props.ref,o=a==i.ref;return!o&&a&&(a.call?a(null):a.current=null),t?!t(this.props,i)||!o:Ed(this.props,i)}function n(i){return this.shouldComponentUpdate=r,h(e,i)}return n.displayName="Memo("+(e.displayName||e.name)+")",n.prototype.isReactComponent=!0,n.__f=!0,n}(xd.prototype=new ht).isPureReactComponent=!0,xd.prototype.shouldComponentUpdate=function(e,t){return Ed(this.props,e)||Ed(this.state,t)};var cb=fe.__b;fe.__b=function(e){e.type&&e.type.__f&&e.ref&&(e.props.ref=e.ref,e.ref=null),cb&&cb(e)};var xC=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.forward_ref")||3911;function kC(e){function t(r){var n=lb({},r);return delete n.ref,e(n,r.ref||null)}return t.$$typeof=xC,t.render=t,t.prototype.isReactComponent=t.__f=!0,t.displayName="ForwardRef("+(e.displayName||e.name)+")",t}var ub=function(e,t){return e==null?null:wt(wt(e).map(t))},SC={map:ub,forEach:ub,count:function(e){return e?wt(e).length:0},only:function(e){var t=wt(e);if(t.length!==1)throw"Children.only";return t[0]},toArray:wt},_C=fe.__e;fe.__e=function(e,t,r,n){if(e.then){for(var i,a=t;a=a.__;)if((i=a.__c)&&i.__c)return t.__e==null&&(t.__e=r.__e,t.__k=r.__k),i.__c(e,t)}_C(e,t,r,n)};var db=fe.unmount;function Ns(){this.__u=0,this.t=null,this.__b=null}function fb(e){var t=e.__.__c;return t&&t.__e&&t.__e(e)}function CC(e){var t,r,n;function i(a){if(t||(t=e()).then(function(o){r=o.default||o},function(o){n=o}),n)throw n;if(!r)throw t;return h(r,a)}return i.displayName="Lazy",i.__f=!0,i}function Oa(){this.u=null,this.o=null}fe.unmount=function(e){var t=e.__c;t&&t.__R&&t.__R(),t&&e.__h===!0&&(e.type=null),db&&db(e)},(Ns.prototype=new ht).__c=function(e,t){var r=t.__c,n=this;n.t==null&&(n.t=[]),n.t.push(r);var i=fb(n.__v),a=!1,o=function(){a||(a=!0,r.__R=null,i?i(s):s())};r.__R=o;var s=function(){if(!--n.__u){if(n.state.__e){var l=n.state.__e;n.__v.__k[0]=function d(f,p,g){return f&&(f.__v=null,f.__k=f.__k&&f.__k.map(function(y){return d(y,p,g)}),f.__c&&f.__c.__P===p&&(f.__e&&g.insertBefore(f.__e,f.__d),f.__c.__e=!0,f.__c.__P=g)),f}(l,l.__c.__P,l.__c.__O)}var c;for(n.setState({__e:n.__b=null});c=n.t.pop();)c.forceUpdate()}},u=t.__h===!0;n.__u++||u||n.setState({__e:n.__b=n.__v.__k[0]}),e.then(o,o)},Ns.prototype.componentWillUnmount=function(){this.t=[]},Ns.prototype.render=function(e,t){if(this.__b){if(this.__v.__k){var r=document.createElement("div"),n=this.__v.__k[0].__c;this.__v.__k[0]=function a(o,s,u){return o&&(o.__c&&o.__c.__H&&(o.__c.__H.__.forEach(function(l){typeof l.__c=="function"&&l.__c()}),o.__c.__H=null),(o=lb({},o)).__c!=null&&(o.__c.__P===u&&(o.__c.__P=s),o.__c=null),o.__k=o.__k&&o.__k.map(function(l){return a(l,s,u)})),o}(this.__b,r,n.__O=n.__P)}this.__b=null}var i=t.__e&&h(S,null,e.fallback);return i&&(i.__h=null),[h(S,null,t.__e?null:e.children),i]};var pb=function(e,t,r){if(++r[1]===r[0]&&e.o.delete(t),e.props.revealOrder&&(e.props.revealOrder[0]!=="t"||!e.o.size))for(r=e.u;r;){for(;r.length>3;)r.pop()();if(r[1]>>1,1),t.i.removeChild(n)}}),kn(h(DC,{context:t.context},e.__v),t.l)):t.l&&t.componentWillUnmount()}function MC(e,t){var r=h(TC,{__v:e,i:t});return r.containerInfo=t,r}(Oa.prototype=new ht).__e=function(e){var t=this,r=fb(t.__v),n=t.o.get(e);return n[0]++,function(i){var a=function(){t.props.revealOrder?(n.push(i),pb(t,e,n)):i()};r?r(a):a()}},Oa.prototype.render=function(e){this.u=null,this.o=new Map;var t=wt(e.children);e.revealOrder&&e.revealOrder[0]==="b"&&t.reverse();for(var r=t.length;r--;)this.o.set(t[r],this.u=[1,0,this.u]);return e.children},Oa.prototype.componentDidUpdate=Oa.prototype.componentDidMount=function(){var e=this;this.o.forEach(function(t,r){pb(e,r,t)})};var hb=typeof Symbol!="undefined"&&Symbol.for&&Symbol.for("react.element")||60103,IC=/^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|shape|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/,AC=typeof document!="undefined",LC=function(e){return(typeof Symbol!="undefined"&&typeof Symbol()=="symbol"?/fil|che|rad/i:/fil|che|ra/i).test(e)};function PC(e,t,r){return t.__k==null&&(t.textContent=""),kn(e,t),typeof r=="function"&&r(),e?e.__c:null}function FC(e,t,r){return Qi(e,t),typeof r=="function"&&r(),e?e.__c:null}ht.prototype.isReactComponent={},["componentWillMount","componentWillReceiveProps","componentWillUpdate"].forEach(function(e){Object.defineProperty(ht.prototype,e,{configurable:!0,get:function(){return this["UNSAFE_"+e]},set:function(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,value:t})}})});var mb=fe.event;function NC(){}function OC(){return this.cancelBubble}function RC(){return this.defaultPrevented}fe.event=function(e){return mb&&(e=mb(e)),e.persist=NC,e.isPropagationStopped=OC,e.isDefaultPrevented=RC,e.nativeEvent=e};var gb,vb={configurable:!0,get:function(){return this.class}},yb=fe.vnode;fe.vnode=function(e){var t=e.type,r=e.props,n=r;if(typeof t=="string"){var i=t.indexOf("-")===-1;for(var a in n={},r){var o=r[a];AC&&a==="children"&&t==="noscript"||a==="value"&&"defaultValue"in r&&o==null||(a==="defaultValue"&&"value"in r&&r.value==null?a="value":a==="download"&&o===!0?o="":/ondoubleclick/i.test(a)?a="ondblclick":/^onchange(textarea|input)/i.test(a+t)&&!LC(r.type)?a="oninput":/^onfocus$/i.test(a)?a="onfocusin":/^onblur$/i.test(a)?a="onfocusout":/^on(Ani|Tra|Tou|BeforeInp|Compo)/.test(a)?a=a.toLowerCase():i&&IC.test(a)?a=a.replace(/[A-Z0-9]/,"-$&").toLowerCase():o===null&&(o=void 0),/^oninput$/i.test(a)&&(a=a.toLowerCase(),n[a]&&(a="oninputCapture")),n[a]=o)}t=="select"&&n.multiple&&Array.isArray(n.value)&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.value.indexOf(s.props.value)!=-1})),t=="select"&&n.defaultValue!=null&&(n.value=wt(r.children).forEach(function(s){s.props.selected=n.multiple?n.defaultValue.indexOf(s.props.value)!=-1:n.defaultValue==s.props.value})),e.props=n,r.class!=r.className&&(vb.enumerable="className"in r,r.className!=null&&(n.class=r.className),Object.defineProperty(n,"className",vb))}e.$$typeof=hb,yb&&yb(e)};var bb=fe.__r;fe.__r=function(e){bb&&bb(e),gb=e.__c};var HC={ReactCurrentDispatcher:{current:{readContext:function(e){return gb.__n[e.__c].props.value}}}};function BC(e){return h.bind(null,e)}function wb(e){return!!e&&e.$$typeof===hb}function KC(e){return wb(e)?so.apply(null,arguments):e}function $C(e){return!!e.__k&&(kn(null,e),!0)}function UC(e){return e&&(e.base||e.nodeType===1&&e)||null}var VC=function(e,t){return e(t)},WC=function(e,t){return e(t)};var at={useState:sr,useReducer:Zi,useEffect:Sn,useLayoutEffect:Lr,useRef:Xt,useImperativeHandle:co,useMemo:lr,useCallback:cr,useContext:uo,useDebugValue:fo,version:"17.0.2",Children:SC,render:PC,hydrate:FC,unmountComponentAtNode:$C,createPortal:MC,createElement:h,createContext:ai,createFactory:BC,cloneElement:KC,createRef:ri,Fragment:S,isValidElement:wb,findDOMNode:UC,Component:ht,PureComponent:xd,memo:EC,forwardRef:kC,flushSync:WC,unstable_batchedUpdates:VC,StrictMode:S,Suspense:Ns,SuspenseList:Oa,lazy:CC,__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:HC};var zC=function(){if(typeof window=="undefined"||typeof window.addEventListener!="function")return!1;var e=!1,t=Object.defineProperty({},"passive",{get:function(){e=!0}}),r=function(){return null};return window.addEventListener("test",r,t),window.removeEventListener("test",r,t),e},jC="ignore-onclickoutside",Eb=function(t,r){var n;return(n=t.classList)==null?void 0:n.contains(r)},xb=function(t,r){for(var n=t.target||t;n;){if(Array.isArray(r)){if(r.some(function(i){return Eb(n,i)}))return!0}else if(Eb(n,r))return!0;n=n.parentElement}return!1},qC=function(t){return document.documentElement.clientWidth<=t.clientX||document.documentElement.clientHeight<=t.clientY},kb=function(t){return t.includes("touch")&&zC()?{passive:!0}:!1},YC=function(t,r){var n=r===void 0?{}:r,i=n.refs,a=n.disabled,o=n.eventTypes,s=o===void 0?["mousedown","touchstart"]:o,u=n.excludeScrollbar,l=n.ignoreClass,c=l===void 0?jC:l,d=n.detectIFrame,f=d===void 0?!0:d,p=sr([]),g=p[0],y=p[1],b=Xt(t);b.current=t;var k=cr(function(T){return y(function(C){return[].concat(C,[{current:T}])})},[]);return Sn(function(){if(!(!(i!=null&&i.length)&&!g.length)){var T=function(){var K=[];return(i||g).forEach(function(z){var U=z.current;return U&&K.push(U)}),K},C=function(K){!xb(K,c)&&!(u&&qC(K))&&T().every(function(z){return!z.contains(K.target)})&&b.current(K)},A=function(K){return setTimeout(function(){var z=document,U=z.activeElement;(U==null?void 0:U.tagName)==="IFRAME"&&!xb(U,c)&&!T().includes(U)&&b.current(K)},0)},H=function(){s.forEach(function(K){return document.removeEventListener(K,C,kb(K))}),f&&window.removeEventListener("blur",A)};if(a){H();return}return s.forEach(function(D){return document.addEventListener(D,C,kb(D))}),f&&window.addEventListener("blur",A),function(){return H()}}},[g,c,u,a,f,JSON.stringify(s)]),k},Fi=YC;function kd({addItems:e,isInputVisible:t,setIsInputVisible:r,hideButton:n}){let[i,a]=L.useState(""),{stateManager:o,view:s}=L.useContext(We),u=L.useRef(),l=Fi(()=>{r(!1)},{ignoreClass:B("ignore-click-outside")}),c=L.useCallback(()=>{a(""),r(!1)},[]),d=async g=>{try{e(await Promise.all(g.map(y=>o.getNewItem(y))))}catch(y){o.setError(y)}},f=g=>{if(!Xn(g,o)){g.preventDefault();let y=i.trim();y&&(d([y]),a(""))}},p=()=>{let g=i.trim();g&&(d([g]),a(""))};return t?h("div",{className:B("item-form"),ref:l},h("div",{className:B("item-input-wrapper")},h(kr,{ref:u,className:B("item-input"),placeholder:P("Card title..."),onEnter:f,onEscape:c,onSubmit:p,value:i,onChange:g=>{a(g.target.value)},onPaste:g=>{ws(g,o,s.getWindow())}}))):n?null:h("div",{className:B("item-button-wrapper")},h("button",{className:B("new-item-button"),onClick:()=>r(!0),onDragOver:g=>{bs(o,g.dataTransfer)&&r(!0)}},h("span",{className:B("item-button-plus")},"+")," ",P("Add a card")))}m();var Fb=me(Et());m();function Os(e,t){let r=t.end-t.start;return e.slice(0,t.start)+"\0".repeat(r)+e.slice(t.end)}function Sb(e){return e.replace(/\s*\0+\s*/g," ").trim()}function Ra(e){return e.trim().replace(/(\r\n|\n)/g,"
")}function Rs(e){return e.replace(/
/g,` +`).trim()}function jr(e){e=Rs(e);let t=e.match(/^(.*?)\s*\((\d+)\)$/);return t==null?{title:e,maxItems:0}:{title:t[1],maxItems:Number(t[2])}}m();function _b(e){return h("svg",{...e,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16"},h("path",{fill:"currentColor",d:"M5 3h2v2H5zm0 4h2v2H5zm0 4h2v2H5zm4-8h2v2H9zm0 4h2v2H9zm0 4h2v2H9z"}))}m();var Sd=me(Et()),Cb=me(require("obsidian"));var Db={delete:{description:P("Are you sure you want to delete this list and all its cards?"),confirm:P("Yes, delete list")},archive:{description:P("Are you sure you want to archive this list and all its cards?"),confirm:P("Yes, archive list")},"archive-items":{description:P("Are you sure you want to archive all cards in this list?"),confirm:P("Yes, archive cards")}};function Tb({action:e,cancel:t,onAction:r,lane:n}){return L.useEffect(()=>{e&&n.children.length===0&&r()},[e,n.children.length]),!e||e&&n.children.length===0?null:h("div",{className:B("action-confirm-wrapper")},h("div",{className:B("action-confirm-text")},Db[e].description),h("div",null,h("button",{onClick:r,className:B("confirm-action-button")},Db[e].confirm),h("button",{onClick:t,className:B("cancel-action-button")},"Cancel")))}function Mb({setIsEditing:e,path:t,lane:r}){let{stateManager:n,boardModifiers:i}=L.useContext(We),[a,o]=L.useState(null);return{settingsMenu:L.useMemo(()=>new Cb.Menu().addItem(u=>{u.setIcon("pencil").setTitle(P("Edit list")).onClick(()=>e(!0))}).addItem(u=>{u.setIcon("documents").setTitle(P("Archive cards")).onClick(()=>o("archive-items"))}).addSeparator().addItem(u=>{u.setIcon("up-and-down-arrows").setTitle(P("Sort by card text")).onClick(()=>{let l=r.children.slice(),c=r.data.sorted===Mn.TitleAsc;l.sort((d,f)=>c?f.data.titleSearch.localeCompare(d.data.titleSearch):d.data.titleSearch.localeCompare(f.data.titleSearch)),i.updateLane(t,(0,Sd.default)(r,{children:{$set:l},data:{sorted:{$set:r.data.sorted===Mn.TitleAsc?Mn.TitleDsc:Mn.TitleAsc}}}))})}).addItem(u=>{u.setIcon("up-and-down-arrows").setTitle(P("Sort by date")).onClick(()=>{let l=r.children.slice(),c=r.data.sorted===Mn.DateAsc?-1:1;l.sort((d,f)=>{let p=d.data.metadata.time||d.data.metadata.date,g=f.data.metadata.time||f.data.metadata.date;return p&&!g?-1*c:g&&!p?1*c:!p&&!g?0:(p.isBefore(g)?-1:1)*c}),i.updateLane(t,(0,Sd.default)(r,{children:{$set:l},data:{sorted:{$set:r.data.sorted===Mn.DateAsc?Mn.DateDsc:Mn.DateAsc}}}))})}).addSeparator().addItem(u=>{u.setIcon("plus-with-circle").setTitle(P("Insert list before")).onClick(()=>i.insertLane(t,{...xr,id:Ae(),children:[],data:{title:"",shouldMarkItemsComplete:!1,forceEditMode:!0}}))}).addItem(u=>{u.setIcon("plus-with-circle").setTitle(P("Insert list after")).onClick(()=>{let l=[...t];l[l.length-1]=l[l.length-1]+1,i.insertLane(l,{...xr,id:Ae(),children:[],data:{title:"",shouldMarkItemsComplete:!1,forceEditMode:!0}})})}).addSeparator().addItem(u=>{u.setIcon("sheets-in-box").setTitle(P("Archive list")).onClick(()=>o("archive"))}).addItem(u=>{u.setIcon("trash").setTitle(P("Delete list")).onClick(()=>o("delete"))}),[n,o,t,r]),confirmAction:a,setConfirmAction:o}}m();var Ib=me(Et());function Ab({lane:e,lanePath:t}){let{boardModifiers:r}=L.useContext(We);return h("div",{className:B("lane-setting-wrapper")},h("div",{className:B("checkbox-wrapper")},h("div",{className:B("checkbox-label")},P("Mark cards in this list as complete")),h("div",{onClick:()=>r.updateLane(t,(0,Ib.default)(e,{data:{$toggle:["shouldMarkItemsComplete"]}})),className:`checkbox-container ${e.data.shouldMarkItemsComplete?"is-enabled":""}`})))}m();var Lb=me(require("obsidian"));function Pb({itemCount:e,maxItems:t,isEditing:r,setIsEditing:n,title:i,onChange:a}){let{stateManager:o}=L.useContext(We),s=L.useRef(),u=o.getSetting("hide-card-count"),l=p=>{Xn(p,o)||(p.preventDefault(),r&&n(!1))},c=()=>{r&&n(!1)},d=()=>{r&&n(!1)};L.useEffect(()=>{if(r&&s.current){let p=s.current;s.current.focus(),p.selectionStart=p.selectionEnd=p.value.length}},[r]);let f=[B("lane-title-count")];return t&&t{p.preventDefault(),p.stopPropagation();let g=p.target instanceof p.view.HTMLAnchorElement&&p.target.hasClass("internal-link")?p.target.dataset.href:void 0;g&&o.app.workspace.onLinkContextMenu(p,(0,Lb.getLinkpath)(g),o.file.path)}},h(Fa,{markdownString:i})))),!r&&!u&&h("div",{className:et(f)},e,t>0&&h(S,null,h("span",{className:B("lane-title-count-separator")},"/"),h("span",{className:B("lane-title-count-limit")},t))))}var Nb=L.memo(function({lane:t,laneIndex:r,dragHandleRef:n,setIsItemInputVisible:i}){let{boardModifiers:a,stateManager:o}=L.useContext(We),[s,u]=L.useState(!1),l=Wn(r),{settingsMenu:c,confirmAction:d,setConfirmAction:f}=Mb({setIsEditing:u,path:l,lane:t});return L.useEffect(()=>{t.data.forceEditMode&&u(!0)},[t.data.forceEditMode]),h(S,null,h("div",{onDblClick:()=>u(!0),className:B("lane-header-wrapper")},h("div",{className:B("lane-grip"),ref:n},h(_b,null)),h(Pb,{isEditing:s,setIsEditing:u,itemCount:t.children.length,maxItems:t.data.maxItems,title:t.data.title,onChange:p=>{let{title:g,maxItems:y}=jr(p.target.value);a.updateLane(l,(0,Fb.default)(t,{data:{title:{$set:g},maxItems:{$set:y}}}))}}),h("div",{className:B("lane-settings-button-wrapper")},s?h("button",{onClick:()=>{u(!1)},"aria-label":"Close",className:`${B("lane-settings-button")} is-enabled`},h(_t,{name:"cross"})):h(S,null,i&&h("button",{"aria-label":P("Add a card"),className:B("lane-settings-button"),onClick:()=>{i(!0)},onDragOver:p=>{bs(o,p.dataTransfer)&&i(!0)}},h(_t,{name:"plus-with-circle"})),h("button",{"aria-label":P("More options"),className:B("lane-settings-button"),onClick:p=>{c.showAtPosition({x:p.clientX,y:p.clientY})}},h(_t,{name:"vertical-three-dots"}))))),s&&h(Ab,{lane:t,lanePath:l}),d&&h(Tb,{lane:t,action:d,onAction:()=>{switch(d){case"archive":a.archiveLane(l);break;case"archive-items":a.archiveLaneItems(l);break;case"delete":a.deleteEntity(l);break}f(null)},cancel:()=>f(null)}))});var Rb=[Je.Item],_d=L.memo(function({isStatic:t,lane:r,laneIndex:n}){let{stateManager:i,boardModifiers:a,view:o}=L.useContext(We),[s,u]=L.useState(!1),l=Wn(n),c=i.useSetting("lane-width"),d=i.useSetting("new-card-insertion-method"),f=!!r.data.shouldMarkItemsComplete,p=c?{width:`${c}px`}:void 0,g=L.useRef(null),y=L.useRef(null),b=L.useRef(null),[k,T]=L.useState(!1),C=d==="prepend-compact",A=C||d==="prepend";Mi(y,b);let H=z=>{a[A?"prependItems":"appendItems"]([...l,r.children.length-1],z.map(U=>(0,Ob.default)(U,{data:{isComplete:{$set:f}}}))),o.getWindow().setTimeout(()=>{var Z;let U=(Z=g.current)==null?void 0:Z.getElementsByClassName(B("lane-items"));U.length&&As([0,A?0:U[0].scrollHeight],{elementToScroll:U[0],speed:200,minDuration:150,easing:J=>J===1?1:1-Math.pow(2,-10*J)})})},D=h(S,null,h(tb,{items:r.children,isStatic:t,shouldMarkItemsComplete:f}),h(Pi,{accepts:Rb,index:r.children.length,isStatic:t})),K=h(Fs,{id:r.id,index:n,className:et([B("lane-items"),B("vertical")]),triggerTypes:Rb,isStatic:t},t?D:h(Li,{onSortChange:T,axis:"vertical"},D));return h("div",{ref:y,className:et([B("lane-wrapper"),{"is-sorting":k}]),style:p},h("div",{"data-count":r.children.length,ref:g,className:et([B("lane"),{"will-prepend":A}])},h(Nb,{dragHandleRef:b,laneIndex:n,lane:r,setIsItemInputVisible:C?u:void 0}),A&&h(kd,{addItems:H,hideButton:C,isInputVisible:s,setIsInputVisible:u}),t?K:h(gr,{elementRef:g,measureRef:y,id:r.id,index:n,data:r},K),!A&&h(kd,{addItems:H,isInputVisible:s,setIsInputVisible:u})))}),Hb=L.memo(function({lanes:t}){return h(S,null,t.map((r,n)=>h(_d,{lane:r,laneIndex:n,key:r.id})))});m();m();var Bb=me(require("obsidian"));m();function Hs(){return{events:{},emit(e,t,r){let n=`${String(e)}${r||""}`,i=this.events[e],a=this.events[n];if(!i&&!a){console.warn("Event emitted with no handler",e,r);return}r&&a&&a.forEach(o=>o(t)),i&&i.forEach(o=>o(t))},on(e,t,r){let n=`${String(e)}${r||""}`,i=this.events[n];return i||(this.events[n]=i=[]),i.push(t),()=>this.off(e,t,r)},off(e,t,r){let n=`${String(e)}${r||""}`,i=this.events[n];i&&(i.splice(i.indexOf(t)>>>0,1),i.length===0&&delete this.events[n])}}}var Cd=class{constructor(t,r){this.scrollResizeDebounce=0;this.handleResize=t=>{let r=!1;t.forEach(n=>{let i=Ze(n.target);this.win===i&&(r=!0,n.target.dataset.scrollid&&(this.win.clearTimeout(this.scrollResizeDebounce),this.scrollResizeDebounce=this.win.setTimeout(()=>{var a;((a=this.emitter.events.scrollResize)==null?void 0:a.length)&&this.emitter.emit("scrollResize",null)},50)))}),!!r&&(this.hitboxEntities.forEach(n=>{n.recalcInitial()}),this.scrollEntities.forEach(n=>{n.recalcInitial()}))};this.win=t,this.emitter=Hs(),this.hitboxEntities=new Map,this.scrollEntities=new Map,this.onDrop=r,this.resizeObserver=new ResizeObserver((0,Bb.debounce)(this.handleResize,100,!0)),this.dragManager=new Nu(t,this.emitter,this.hitboxEntities,this.scrollEntities)}destroy(){this.resizeObserver.disconnect()}observeResize(t){this.resizeObserver.observe(t,{box:"border-box"})}unobserveResize(t){this.resizeObserver.unobserve(t)}registerHitboxEntity(t,r,n){n===this.win&&this.hitboxEntities.set(t,r)}registerScrollEntity(t,r,n){n===this.win&&this.scrollEntities.set(t,r)}unregisterHitboxEntity(t,r){r===this.win&&this.hitboxEntities.delete(t)}unregisterScrollEntity(t,r){r===this.win&&this.scrollEntities.delete(t)}};function Bs({win:e,children:t,onDrop:r}){let n=L.useRef(r);n.current=r;let i=L.useMemo(()=>new Cd(e,(a,o)=>n.current(a,o)),[]);return L.useEffect(()=>()=>{i.destroy()},[i]),h(kt.Provider,{value:i},h(ob,null,t))}m();function Dd(e,t,r,n,i,a){let o=[r[0]-n[0],r[1]-n[1],r[2]+n[2],r[3]+n[3]];return{transform:a||`translate3d(${e.x-t.x+o[0]}px, ${e.y-t.y+o[1]}px, 0px)`,width:`${o[2]-o[0]}px`,height:`${o[3]-o[1]}px`,transition:i}}function Ks({children:e}){let t=L.useContext(kt),[r,n]=L.useState(),[i,a]=L.useState();return L.useEffect(()=>{if(!t)return;let o=Fp,s=({dragEntity:c,dragOrigin:d,dragPosition:f,dragEntityMargin:p})=>{!c||!f||!d||(o=c.getHitbox(),n(c),a(Dd(f,d,o,p)))},u=({dragOrigin:c,dragPosition:d,dragEntityMargin:f})=>{!d||!c||a(Dd(d,c,o,f))},l=({dragOrigin:c,primaryIntersection:d,dragPosition:f,dragEntityMargin:p})=>{if(d&&f&&c){let g=d.getHitbox(),y={x:g[0],y:g[1]},b=Di({position:f,destination:y}),k=ln.drop(b),T=lv.drop(y);a(Dd(f,c,o,p,k,T)),activeWindow.setTimeout(()=>{n(void 0),a(void 0)},b)}else n(void 0),a(void 0)};return t.dragManager.emitter.on("dragStart",s),t.dragManager.emitter.on("dragMove",u),t.dragManager.emitter.on("dragEnd",l),()=>{t.dragManager.emitter.off("dragStart",s),t.dragManager.emitter.off("dragMove",u),t.dragManager.emitter.off("dragEnd",l)}},[t]),!r||!i?null:L.createPortal(e(r,i),r.getData().win.document.body)}function Kb(){let e=L.useContext(kt),[t,r]=L.useState(!1);return L.useEffect(()=>{let n=()=>{r(!0)},i=({primaryIntersection:a,dragPosition:o})=>{let s=(a==null?void 0:a.getHitbox())||[0,0],u={x:s[0],y:s[1]},l=Di({position:o||u,destination:u});activeWindow.setTimeout(()=>{r(!1)},l)};return e.dragManager.emitter.on("dragStart",n),e.dragManager.emitter.on("dragEnd",i),()=>{e.dragManager.emitter.off("dragStart",n),e.dragManager.emitter.off("dragEnd",i)}},[e]),t}m();var Ha=me(Et()),$b=me(require("obsidian"));function $s(e){let t=r=>{let n=e.getSetting("prepend-archive-format"),i=e.getSetting("prepend-archive-separator"),a=[(0,$b.moment)().format(n)];i&&a.push(i),a.push(r.data.titleRaw);let o=a.join(" ");return e.updateItemContent(r,o)};return{appendItems:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>Bl(i,r,n))},prependItems:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>Mp(i,r,n))},insertItems:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>pr(i,r,n))},splitItem:(r,n)=>{n.forEach(i=>e.app.workspace.trigger("kanban:card-added",e.file,i)),e.setState(i=>pr(Fr(i,r),r,n))},moveItemToTop:r=>{e.setState(n=>aa(n,r,[r[0],0]))},moveItemToBottom:r=>{e.setState(n=>{let i=r[0],a=n.children[i];return aa(n,r,[i,a.children.length])})},addLane:r=>{e.app.workspace.trigger("kanban:lane-added",e.file,r),e.setState(n=>Bl(n,[],[r]))},insertLane:(r,n)=>{e.app.workspace.trigger("kanban:lane-added",e.file,n),e.setState(i=>pr(i,r,[n]))},updateLane:(r,n)=>{e.app.workspace.trigger("kanban:lane-updated",e.file,n),e.setState(i=>Kl(i,r,{children:{[r[r.length-1]]:{$set:n}}}))},archiveLane:r=>{e.setState(async n=>{let i=mt(n,r),a=i.children;e.app.workspace.trigger("kanban:lane-archived",e.file,i);try{return(0,Ha.default)(Fr(n,r),{data:{archive:{$unshift:e.getSetting("prepend-archive-date")?await Promise.all(a.map(t)):a}}})}catch(o){return e.setError(o),n}})},archiveLaneItems:r=>{e.setState(async n=>{let a=mt(n,r).children;e.app.workspace.trigger("kanban:lane-cards-archived",e.file,a);try{return(0,Ha.default)(vo(n,r,{children:{$set:[]}}),{data:{archive:{$unshift:e.getSetting("prepend-archive-date")?await Promise.all(a.map(t)):a}}})}catch(o){return e.setError(o),n}})},deleteEntity:r=>{e.setState(n=>{let i=mt(n,r);return e.app.workspace.trigger(`kanban:${i.type}-deleted`,e.file,i),Fr(n,r)})},updateItem:(r,n)=>{e.setState(i=>{let a=mt(i,r);return e.app.workspace.trigger("kanban:card-updated",e.file,a,n),Kl(i,r,{children:{[r[r.length-1]]:{$set:n}}})})},archiveItem:r=>{e.setState(async n=>{let i=mt(n,r);e.app.workspace.trigger("kanban:card-archived",e.file,r,i);try{return(0,Ha.default)(Fr(n,r),{data:{archive:{$push:[e.getSetting("prepend-archive-date")?await t(i):i]}}})}catch(a){return e.setError(a),n}})},duplicateEntity:r=>{e.setState(n=>{let i=mt(n,r);e.app.workspace.trigger(`kanban:${i.type}-duplicated`,e.file,r,i);let a=(0,Ha.default)(i,{id:{$set:Ae()}});return pr(n,r,[a])})}}}function Vb(e,t){return h(GC,{win:e,plugin:t})}var JC=L.memo(function({view:t}){return L.createPortal(t.getPortal(),t.contentEl)});function GC({win:e,plugin:t}){let r=t.useViewState(e),n=r.map(a=>h(JC,{key:a.id,view:a})),i=L.useCallback((a,o)=>{if(!a||!o)return;if(a.scopeId==="htmldnd"){let y=a.getData(),b=t.getStateManagerFromViewID(y.viewId,y.win),k=o.getPath(),T=mt(b.state,k.slice(0,-1));(A=>Promise.all(A.map(H=>b.getNewItem(H))))(y.content).then(A=>{let H=A.map(D=>{var K;return(0,Ub.default)(D,{data:{isComplete:{$set:!!((K=T==null?void 0:T.data)==null?void 0:K.shouldMarkItemsComplete)}}})});return b.setState(D=>pr(D,k,H))}).catch(A=>{b.setError(A),console.error(A)});return}let s=a.getPath(),u=o.getPath(),[,l]=a.scopeId.split(":::"),[,c]=o.scopeId.split(":::"),d=a.getData(),f=o.getData();if(l===c){let y=t.getStateManagerFromViewID(a.scopeId,d.win);return t.app.workspace.trigger("kanban:card-moved",y.file,s,u,d),y.setState(b=>{var H;let k=!1,T=aa(b,s,u,D=>D.type===Je.Item?(k=!0,Ul(b,s,b,u,D)):D);if(!k)return T;let C=u.slice(0,-1),A=mt(b,C);return((H=A==null?void 0:A.data)==null?void 0:H.sorted)!==void 0?vo(T,C,{data:{$unset:["sorted"]}}):T})}let p=t.getStateManagerFromViewID(a.scopeId,d.win),g=t.getStateManagerFromViewID(o.scopeId,f.win);p.setState(y=>{let b=mt(y,s);return g.setState(k=>{let T=b.type===Je.Item?Ul(y,s,k,u,b):b;return pr(k,u,[T])}),Fr(y,s)})},[r]);if(n.length)return h(Bs,{win:e,onDrop:i},n,h(Ks,null,(a,o)=>{let[s,u]=L.useMemo(()=>{if(a.scopeId==="htmldnd")return[null,null];let l=a.getData(),c=t.getKanbanView(a.scopeId,l.win),d=t.stateManagers.get(c.file),f=mt(d.state,a.getPath()),p=$s(d),g=c.file.path;return[f,{view:c,stateManager:d,boardModifiers:p,filePath:g,getTagColor:bo(d),getDateColor:wo(d)}]},[a]);return(s==null?void 0:s.type)===Je.Lane?h(We.Provider,{value:u},h("div",{className:B("drag-container"),style:o},h(_d,{lane:s,laneIndex:0,isStatic:!0}))):(s==null?void 0:s.type)===Je.Item?h(We.Provider,{value:u},h("div",{className:B("drag-container"),style:o},h(vd,{item:s,itemIndex:0,isStatic:!0}))):h("div",null)}))}m();var Wd=me(Et()),Lw=me(require("obsidian"));m();var Xb=me(Et()),Zb=me(require("obsidian")),Vs=me(yc());m();function Us({id:e,children:t}){let r=L.useContext(la),n=L.useMemo(()=>e||Ae(),[e]);return L.useEffect(()=>()=>{r.unmountScope(e)},[e]),h(mr.Provider,{value:n},t)}m();var gn="kanban-plugin",Wb;(function(t){t[t.List=0]="List"})(Wb||(Wb={}));var zb=`**${P("Complete")}**`,jb="***",Td=["---","",`${gn}: basic`,"","---","",""].join(` +`);function qb(e){return["","","%% kanban:settings","```",JSON.stringify(e),"```","%%"].join(` +`)}function Yb(e,t,r){let n=e.innerText.trim();if((t==null?void 0:t.length)&&(n+=" "+t.join(" ")),r){let i=Object.keys(r).join(" "),a=Object.values(r).map(o=>Array.isArray(o.value)?o.value.join(" "):o.value.toString()).join(" ");n+=" "+i+" "+a}return n.toLocaleLowerCase()}function QC(e,t,r){var n,i,a;if(e.plugins.enabledPlugins.has("dataview")&&((a=(i=(n=e.plugins)==null?void 0:n.plugins)==null?void 0:i.dataview)==null?void 0:a.api))return e.plugins.plugins.dataview.api.page(t.path,r.path)}function Jb(e,t){if(!e)return null;if(e[t])return e[t];let r=t.split("."),n=e;for(let i of r)if(typeof n=="object"&&i in n)n=n[i];else{n=null;break}return n}function Md(e,t){let r=e.getSetting("metadata-keys");if(!r.length)return{};if(!t)return{};let n=e.app.metadataCache.getFileCache(t),i=QC(e.app,t,e.file);if(!n&&!i)return{};let a={},o={},s={},u=[],l=!1;return r.forEach(c=>{var p;if(s[c.metadataKey])return;if(s[c.metadataKey]=!0,c.metadataKey==="tags"){let g=(n==null?void 0:n.tags)||[];if(Array.isArray((p=n==null?void 0:n.frontmatter)==null?void 0:p.tags)&&(g=[].concat(g,n.frontmatter.tags.map(y=>({tag:`#${y}`})))),(g==null?void 0:g.length)===0)return;u.push(c.metadataKey),a.tags={...c,value:g.map(y=>y.tag).filter(y=>o[y]?!1:(o[y]=!0,!0))},l=!0;return}let d=Jb(n==null?void 0:n.frontmatter,c.metadataKey),f=Jb(i,c.metadataKey);if(d)u.push(c.metadataKey),a[c.metadataKey]={...c,value:d},l=!0;else if(f){let g=i[c.metadataKey],y=g.values||g.val||g;if(y===g&&typeof y=="object")y={...g};else if(!Array.isArray(y)&&typeof y!="string"&&typeof y!="number")return;u.push(c.metadataKey),a[c.metadataKey]={...c,value:y},l=!0}}),{fileMetadata:l?a:void 0,fileMetadataOrder:u}}function Gb(e,t){return!e&&t?!0:!["metadata-keys","date-trigger","time-trigger","link-date-to-daily-note","date-format","time-format","hide-date-in-title","hide-tags-in-title","hide-card-count","tag-colors","date-colors"].every(n=>e[n]===t[n])}m();function Qb({onNewLane:e,closeLaneForm:t}){let{boardModifiers:r,stateManager:n}=L.useContext(We),[i,a]=L.useState(!1),[o,s]=L.useState(""),u=L.useRef(),l=Fi(()=>{t()},{ignoreClass:B("ignore-click-outside")});L.useLayoutEffect(()=>{var d;(d=u.current)==null||d.focus()},[]);let c=()=>{r.addLane({...xr,id:Ae(),children:[],data:{...jr(o),shouldMarkItemsComplete:i}}),s(""),a(!1),e()};return h("div",{ref:l,className:B("lane-form-wrapper")},h("div",{className:B("lane-input-wrapper")},h(kr,{ref:u,className:B("lane-input"),onChange:d=>s(d.target.value),onEnter:d=>{Xn(d,n)||(d.preventDefault(),c())},onSubmit:()=>{c()},onEscape:t,value:o})),h("div",{className:B("checkbox-wrapper")},h("div",{className:B("checkbox-label")},P("Mark cards in this list as complete")),h("div",{onClick:()=>a(!i),className:`checkbox-container ${i?"is-enabled":""}`})),h("div",{className:B("lane-input-actions")},h("button",{className:B("lane-action-add"),onClick:c},P("Add list")),h("button",{className:B("lane-action-cancel"),onClick:t},P("Cancel"))))}var XC=[Je.Item,Je.Lane],ZC=[Je.Lane],ew=({view:e,stateManager:t})=>{let r=t.useState(),n=Kb(),i=L.useRef(null),a=L.useRef(null),[o,s]=L.useState(""),[u,l]=L.useState(!1),[c,d]=L.useState(""),[f,p]=L.useState((r==null?void 0:r.children.length)===0),g=t.file.path,y=t.useSetting("max-archive-size"),b=t.useSetting("date-colors"),k=t.useSetting("tag-colors"),T=L.useCallback(()=>{(r==null?void 0:r.children.length)>0&&p(!1)},[r==null?void 0:r.children.length]);L.useEffect(()=>{(r==null?void 0:r.children.length)===0&&!t.hasError()&&p(!0)},[r==null?void 0:r.children.length,t]);let C=L.useCallback(()=>{var U;(U=i.current)==null||U.win.setTimeout(()=>{var J;let Z=(J=i.current)==null?void 0:J.getElementsByClassName(B("board"));(Z==null?void 0:Z.length)&&As([Z[0].scrollWidth,0],{elementToScroll:Z[0],speed:300,minDuration:150,easing:se=>se===1?1:1-Math.pow(2,-10*se)})})},[]);L.useEffect(()=>{let U=J=>{J==="editor:open-search"&&l(se=>!se)},Z=()=>{p(!0)};return e.emitter.on("hotkey",U),e.emitter.on("showLaneForm",Z),()=>{e.emitter.off("hotkey",U),e.emitter.off("showLaneForm",Z)}},[e]),L.useEffect(()=>{var U;u&&((U=a.current)==null||U.focus())},[u]),L.useEffect(()=>{let U=e.getWindow(),Z=o.trim(),J;return Z?J=U.setTimeout(()=>{d(Z)},250):d(""),()=>{U.clearTimeout(J)}},[o,e]),L.useEffect(()=>{y===void 0||y===-1||typeof y=="number"&&(r==null?void 0:r.data.archive.length)>y&&t.setState(U=>(0,Xb.default)(U,{data:{archive:{$set:U.data.archive.slice(y*-1)}}}))},[r==null?void 0:r.data.archive.length,y]);let A=L.useMemo(()=>$s(t),[t]),H=L.useCallback(U=>{let Z=U.target;Z.tagName==="A"&&Z.hasClass("internal-link")&&e.app.workspace.trigger("hover-link",{event:U,source:gn,hoverParent:e,targetEl:Z,linktext:Z.getAttr("href"),sourcePath:e.file.path})},[e]),D=L.useCallback(async U=>{if(U.type==="auxclick"||U.button===2)return;let Z=U.target,J=Z.tagName==="A"?Z:Z.closest("a");if(!!J){if(J.hasClass("file-link")){U.preventDefault();let se=J.getAttribute("href"),G=zr(se),Q=typeof se=="string"&&e.app.metadataCache.getFirstLinkpathDest(G.root,e.file.path);if(!Q)return;t.app.openWithDefaultApp(Q.path);return}if(J.hasClass("internal-link")){U.preventDefault();let se=J.getAttr("href"),G=U.button===1||U.ctrlKey||U.metaKey;if(J.hasClass("is-unresolved")&&(0,Vs.appHasDailyNotesPluginLoaded)()){let ie=t.getSetting("date-format"),he=(0,Zb.moment)(se,ie,!0);if(he.isValid()){try{let pe=await(0,Vs.createDailyNote)(he);await(G?app.workspace.getLeaf(!0):app.workspace.getLeaf(!1)).openFile(pe,{active:!0})}catch(pe){console.error(pe),t.setError(pe)}return}}t.app.workspace.openLinkText(se,g,G);return}if(J.hasClass("tag")){U.preventDefault(),t.app.internalPlugins.getPluginById("global-search").instance.openGlobalSearch(`tag:${J.getAttr("href")}`);return}J.hasClass("external-link")&&(U.preventDefault(),window.open(J.getAttr("href"),"_blank"))}},[t,g]),K=L.useMemo(()=>({view:e,stateManager:t,boardModifiers:A,filePath:g,getTagColor:bo(t),getDateColor:wo(t)}),[e,t,A,g,b,k]),z=uv(t);return r==null?h("div",{className:B("loading")},h("div",{className:"sk-pulse"})):r.data.errors.length>0?h("div",null,h("div",null,"Error:"),r.data.errors.map((U,Z)=>h("div",{key:Z},h("div",null,U.description),h("pre",null,U.stack)))):h(Us,{id:e.id},h(We.Provider,{value:K},h(go.Provider,{value:c?c.toLocaleLowerCase():null},h("div",{ref:i,className:et([$l,{"something-is-dragging":n}]),onMouseOver:H,onPointerDown:D,onClick:D,onAuxClick:D,...z},(f||r.children.length===0)&&h(Qb,{onNewLane:C,closeLaneForm:T}),u&&h("div",{className:B("search-wrapper")},h("input",{ref:a,value:o,onChange:U=>{s(U.target.value)},onKeyDown:U=>{U.key==="Escape"&&(s(""),d(""),U.target.blur(),l(!1))},type:"text",className:B("filter-input"),placeholder:P("Search...")}),h("button",{className:B("search-cancel-button"),onClick:()=>{s(""),d(""),l(!1)},"aria-label":P("Cancel")},h(_t,{name:"cross"}))),h(Fs,{id:e.id,className:et([B("board"),B("horizontal"),{"is-adding-lane":f}]),triggerTypes:XC},h("div",null,h(Li,{axis:"horizontal"},h(Hb,{lanes:r.children}),h(Pi,{className:B("lane-placeholder"),accepts:ZC,index:r.children.length}))))))))};m();var Mw=me(Et()),Be=me(require("obsidian"));m();var nw=me(tw()),zs=me(Et()),_r=me(require("obsidian"));var js="@",qs="@@";function eD(e){let t=[];return _r.Vault.recurseChildren(e.vault.getRoot(),r=>{r instanceof _r.TFolder&&t.push({value:r.path,label:r.path,selected:!1,disabled:!1})}),t}function tD(e,t){let r=[],n=t?e.vault.getAbstractFileByPath(t):null;return(!n||!(n instanceof _r.TFolder))&&(n=e.vault.getRoot()),_r.Vault.recurseChildren(n,i=>{i instanceof _r.TFile&&r.push({value:i.path,label:i.basename,selected:!1,disabled:!1})}),r}function rw(e){let{templateFolder:t,templatesEnabled:r,templaterPlugin:n}=Vl(e),i=tD(e,t),a=eD(e),o="";return!r&&!n&&(o=P("Note: No template plugins are currently enabled.")),{templateFiles:i,vaultFolders:a,templateWarning:o}}function Ad({choices:e,key:t,warningText:r,local:n,placeHolderStr:i,manager:a}){return o=>{o.controlEl.createEl("select",{},s=>{s.win.setTimeout(()=>{let u=e,[l,c]=a.getSetting(t,n);if(c){let p=e.findIndex(y=>y.value===c),g=e[p];u=(0,zs.default)(u,{$splice:[[p,1]],$unshift:[(0,zs.default)(g,{placeholder:{$set:!0},value:{$set:""},label:{$apply:y=>`${y} (${P("default")})`}})]})}else u=(0,zs.default)(u,{$unshift:[{placeholder:!0,value:"",label:i,selected:!1,disabled:!1}]});let d=new nw.default(s,{placeholder:!0,position:"bottom",searchPlaceholderValue:P("Search..."),searchEnabled:u.length>10,choices:u}).setChoiceByValue("");l&&typeof l=="string"&&d.setChoiceByValue(l);let f=p=>{let g=p.detail.value;g?a.applySettingsUpdate({[t]:{$set:g}}):a.applySettingsUpdate({$unset:[t]})};s.addEventListener("change",f),a.cleanupFns.push(()=>{d.destroy(),s.removeEventListener("change",f)})}),r&&o.descEl.createDiv({},u=>{u.createEl("strong",{text:r})})})}}m();var qr=me(Et());function iw({isStatic:e,itemIndex:t,item:r,toggleShouldHideLabel:n,toggleContainsMarkdown:i,deleteKey:a,updateKey:o,updateLabel:s}){let u=L.useRef(null),l=L.useRef(null),c=L.useRef(null);Mi(l,c);let d=h("div",{className:B("setting-controls-wrapper")},h("div",{className:B("setting-input-wrapper")},h("div",null,h("div",{className:B("setting-item-label")},P("Metadata key")),h("input",{type:"text",value:r.data.metadataKey,onChange:f=>o(f.target.value)})),h("div",null,h("div",{className:B("setting-item-label")},P("Display label")),h("input",{type:"text",value:r.data.label,onChange:f=>s(f.target.value)}))),h("div",{className:B("setting-toggle-wrapper")},h("div",null,h("div",{className:`checkbox-container ${r.data.shouldHideLabel?"is-enabled":""}`,onClick:n,"aria-label":P("Hide label")}),h("div",{className:B("setting-item-label")},P("Hide label"))),h("div",null,h("div",{className:`checkbox-container ${r.data.containsMarkdown?"is-enabled":""}`,onClick:i,"aria-label":P("Field contains markdown")}),h("div",{className:B("setting-item-label")},P("Field contains markdown")))));return h("div",{ref:l,className:B("setting-item-wrapper")},h("div",{ref:u,className:B("setting-item")},e?d:h(gr,{elementRef:u,measureRef:l,id:r.id,index:t,data:r},d),h("div",{className:B("setting-button-wrapper")},h("div",{onClick:a,"aria-label":P("Delete")},h(_t,{name:"cross"})),h("div",{className:"mobile-option-setting-drag-icon","aria-label":P("Drag to rearrange"),ref:c},h(_t,{name:"three-horizontal-bars"})))))}function nD({onChange:e,inputValue:t,keys:r,setKeys:n}){let i=a=>{e(a),n(a)};return{updateKey:a=>o=>{i((0,qr.default)(r,{[a]:{data:{metadataKey:{$set:o}}}}))},updateLabel:a=>o=>{i((0,qr.default)(r,{[a]:{data:{label:{$set:o}}}}))},toggleShouldHideLabel:a=>()=>{i((0,qr.default)(r,{[a]:{data:{$toggle:["shouldHideLabel"]}}}))},toggleContainsMarkdown:a=>()=>{i((0,qr.default)(r,{[a]:{data:{$toggle:["containsMarkdown"]}}}))},deleteKey:a=>()=>{i((0,qr.default)(r,{$splice:[[a,1]]}))},newKey:()=>{i((0,qr.default)(r,{$push:[{...ms,id:Ae(),data:{metadataKey:t,label:"",shouldHideLabel:!1,containsMarkdown:!1}}]}))},moveKey:(a,o)=>{let s=a.getPath(),u=o.getPath(),l=s[s.length-1],c=u[u.length-1];if(l===c)return;let d=r.slice(),[f]=d.splice(l,1);d.splice(c,0,f),i(d)}}}var rD=[Je.MetadataSetting];function iD({keys:e,portalContainer:t}){return L.createPortal(h(Ks,null,(r,n)=>{let a=r.getPath()[0],o=e[a];return h("div",{className:B("drag-container"),style:n},h(iw,{item:o,itemIndex:a,updateKey:ci,updateLabel:ci,toggleShouldHideLabel:ci,toggleContainsMarkdown:ci,deleteKey:ci,isStatic:!0}))}),t)}function aD({scrollEl:e}){let t=L.useContext(kt);return L.useEffect(()=>{let r=0,n=()=>{e.win.clearTimeout(r),r=e.win.setTimeout(()=>{t.hitboxEntities.forEach(i=>{i.recalcInitial()})},100)};return e.addEventListener("scroll",n,{passive:!0,capture:!1}),()=>{e.removeEventListener("scroll",n)}},[e,t]),null}function oD(e){let[t,r]=L.useState(e.dataKeys),[n,i]=L.useState(""),{getShouldIMEBlockAction:a,...o}=yo(),s=Ze(e.scrollEl),{updateKey:u,updateLabel:l,toggleShouldHideLabel:c,toggleContainsMarkdown:d,deleteKey:f,newKey:p,moveKey:g}=nD({onChange:e.onChange,inputValue:n,keys:t,setKeys:r,win:s});return h(S,null,h(Bs,{win:s,onDrop:g},h(aD,{scrollEl:e.scrollEl}),h(Us,null,h(Li,{axis:"vertical"},t.map((y,b)=>h(iw,{key:y.id,item:y,itemIndex:b,updateKey:u(b),updateLabel:l(b),toggleShouldHideLabel:c(b),toggleContainsMarkdown:d(b),deleteKey:f(b)})),h(Pi,{accepts:rD,index:t.length}))),h(iD,{keys:t,portalContainer:e.portalContainer})),h("div",{className:B("setting-key-input-wrapper")},h("input",{placeholder:P("Metadata key"),type:"text",value:n,onChange:y=>i(y.target.value),onKeyDown:y=>{if(!a()){if(y.key==="Enter"){p(),i("");let b=y.target;b.win.setTimeout(()=>{b.scrollIntoView()});return}y.key==="Escape"&&(i(""),y.target.blur())}},...o}),h("button",{onClick:y=>{p(),i("");let b=y.target;b.win.setTimeout(()=>{b.scrollIntoView()})}},P("Add key"))))}function aw(e,t,r,n){L.render(h(oD,{dataKeys:r,scrollEl:t,onChange:n,portalContainer:ur(e)}),e)}function ow(e){L.unmountComponentAtNode(e)}m();m();var sD={grad:.9,turn:360,rad:360/(2*Math.PI)},er=function(e){return typeof e=="string"?e.length>0:typeof e=="number"},Ct=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r+0},vn=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e>t?e:t},sw=function(e){return(e=isFinite(e)?e%360:0)>0?e:e+360},lw=function(e){return{r:vn(e.r,0,255),g:vn(e.g,0,255),b:vn(e.b,0,255),a:vn(e.a)}},Ld=function(e){return{r:Ct(e.r),g:Ct(e.g),b:Ct(e.b),a:Ct(e.a,3)}},lD=/^#([0-9a-f]{3,8})$/i,Ys=function(e){var t=e.toString(16);return t.length<2?"0"+t:t},cw=function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=Math.max(t,r,n),o=a-Math.min(t,r,n),s=o?a===t?(r-n)/o:a===r?2+(n-t)/o:4+(t-r)/o:0;return{h:60*(s<0?s+6:s),s:a?o/a*100:0,v:a/255*100,a:i}},uw=function(e){var t=e.h,r=e.s,n=e.v,i=e.a;t=t/360*6,r/=100,n/=100;var a=Math.floor(t),o=n*(1-r),s=n*(1-(t-a)*r),u=n*(1-(1-t+a)*r),l=a%6;return{r:255*[n,s,o,o,u,n][l],g:255*[u,n,n,s,o,o][l],b:255*[o,o,u,n,n,s][l],a:i}},dw=function(e){return{h:sw(e.h),s:vn(e.s,0,100),l:vn(e.l,0,100),a:vn(e.a)}},fw=function(e){return{h:Ct(e.h),s:Ct(e.s),l:Ct(e.l),a:Ct(e.a,3)}},pw=function(e){return uw((r=(t=e).s,{h:t.h,s:(r*=((n=t.l)<50?n:100-n)/100)>0?2*r/(n+r)*100:0,v:n+r,a:t.a}));var t,r,n},Ba=function(e){return{h:(t=cw(e)).h,s:(i=(200-(r=t.s))*(n=t.v)/100)>0&&i<200?r*n/100/(i<=100?i:200-i)*100:0,l:i/2,a:t.a};var t,r,n,i},cD=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,uD=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,dD=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,fD=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,hw={string:[[function(e){var t=lD.exec(e);return t?(e=t[1]).length<=4?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:e.length===4?Ct(parseInt(e[3]+e[3],16)/255,2):1}:e.length===6||e.length===8?{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:e.length===8?Ct(parseInt(e.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(e){var t=dD.exec(e)||fD.exec(e);return t?t[2]!==t[4]||t[4]!==t[6]?null:lw({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):null},"rgb"],[function(e){var t=cD.exec(e)||uD.exec(e);if(!t)return null;var r,n,i=dw({h:(r=t[1],n=t[2],n===void 0&&(n="deg"),Number(r)*(sD[n]||1)),s:Number(t[3]),l:Number(t[4]),a:t[5]===void 0?1:Number(t[5])/(t[6]?100:1)});return pw(i)},"hsl"]],object:[[function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=i===void 0?1:i;return er(t)&&er(r)&&er(n)?lw({r:Number(t),g:Number(r),b:Number(n),a:Number(a)}):null},"rgb"],[function(e){var t=e.h,r=e.s,n=e.l,i=e.a,a=i===void 0?1:i;if(!er(t)||!er(r)||!er(n))return null;var o=dw({h:Number(t),s:Number(r),l:Number(n),a:Number(a)});return pw(o)},"hsl"],[function(e){var t=e.h,r=e.s,n=e.v,i=e.a,a=i===void 0?1:i;if(!er(t)||!er(r)||!er(n))return null;var o=function(s){return{h:sw(s.h),s:vn(s.s,0,100),v:vn(s.v,0,100),a:vn(s.a)}}({h:Number(t),s:Number(r),v:Number(n),a:Number(a)});return uw(o)},"hsv"]]},mw=function(e,t){for(var r=0;r=.5},e.prototype.toHex=function(){return t=Ld(this.rgba),r=t.r,n=t.g,i=t.b,o=(a=t.a)<1?Ys(Ct(255*a)):"","#"+Ys(r)+Ys(n)+Ys(i)+o;var t,r,n,i,a,o},e.prototype.toRgb=function(){return Ld(this.rgba)},e.prototype.toRgbString=function(){return t=Ld(this.rgba),r=t.r,n=t.g,i=t.b,(a=t.a)<1?"rgba("+r+", "+n+", "+i+", "+a+")":"rgb("+r+", "+n+", "+i+")";var t,r,n,i,a},e.prototype.toHsl=function(){return fw(Ba(this.rgba))},e.prototype.toHslString=function(){return t=fw(Ba(this.rgba)),r=t.h,n=t.s,i=t.l,(a=t.a)<1?"hsla("+r+", "+n+"%, "+i+"%, "+a+")":"hsl("+r+", "+n+"%, "+i+"%)";var t,r,n,i,a},e.prototype.toHsv=function(){return t=cw(this.rgba),{h:Ct(t.h),s:Ct(t.s),v:Ct(t.v),a:Ct(t.a,3)};var t},e.prototype.invert=function(){return In({r:255-(t=this.rgba).r,g:255-t.g,b:255-t.b,a:t.a});var t},e.prototype.saturate=function(t){return t===void 0&&(t=.1),In(Pd(this.rgba,t))},e.prototype.desaturate=function(t){return t===void 0&&(t=.1),In(Pd(this.rgba,-t))},e.prototype.grayscale=function(){return In(Pd(this.rgba,-1))},e.prototype.lighten=function(t){return t===void 0&&(t=.1),In(gw(this.rgba,t))},e.prototype.darken=function(t){return t===void 0&&(t=.1),In(gw(this.rgba,-t))},e.prototype.rotate=function(t){return t===void 0&&(t=15),this.hue(this.hue()+t)},e.prototype.alpha=function(t){return typeof t=="number"?In({r:(r=this.rgba).r,g:r.g,b:r.b,a:t}):Ct(this.rgba.a,3);var r},e.prototype.hue=function(t){var r=Ba(this.rgba);return typeof t=="number"?In({h:t,s:r.s,l:r.l,a:r.a}):Ct(r.h)},e.prototype.isEqual=function(t){return this.toHex()===In(t).toHex()},e}(),In=function(e){return e instanceof vw?e:new vw(e)};var Qs=me(Et());m();function Js(){return(Js=Object.assign||function(e){for(var t=1;t=0||(i[r]=e[r]);return i}function Nd(e){var t=Xt(e),r=Xt(function(n){t.current&&t.current(n)});return t.current=e,r.current}var Ni=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=1),e>r?r:e0:b.buttons>0)&&i.current?a(bw(i.current,b,s.current)):y(!1)},g=function(){return y(!1)};function y(b){var k=u.current,T=Od(i.current),C=b?T.addEventListener:T.removeEventListener;C(k?"touchmove":"mousemove",p),C(k?"touchend":"mouseup",g)}return[function(b){var k=b.nativeEvent,T=i.current;if(T&&(ww(k),!function(A,H){return H&&!Ka(A)}(k,u.current)&&T)){if(Ka(k)){u.current=!0;var C=k.changedTouches||[];C.length&&(s.current=C[0].identifier)}T.focus(),a(bw(T,k,s.current)),y(!0)}},function(b){var k=b.which||b.keyCode;k<37||k>40||(b.preventDefault(),o({left:k===39?.05:k===37?-.05:0,top:k===40?.05:k===38?-.05:0}))},y]},[o,a]),c=l[0],d=l[1],f=l[2];return Sn(function(){return f},[f]),at.createElement("div",Js({},n,{onTouchStart:c,onMouseDown:c,className:"react-colorful__interactive",ref:i,onKeyDown:d,tabIndex:0,role:"slider"}))}),Gs=function(e){return e.filter(Boolean).join(" ")},Hd=function(e){var t=e.color,r=e.left,n=e.top,i=n===void 0?.5:n,a=Gs(["react-colorful__pointer",e.className]);return at.createElement("div",{className:a,style:{top:100*i+"%",left:100*r+"%"}},at.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},Yt=function(e,t,r){return t===void 0&&(t=0),r===void 0&&(r=Math.pow(10,t)),Math.round(r*e)/r},d$={grad:.9,turn:360,rad:360/(2*Math.PI)};var Ew=function(e){var t=e.s,r=e.v,n=e.a,i=(200-t)*r/100;return{h:Yt(e.h),s:Yt(i>0&&i<200?t*r/100/(i<=100?i:200-i)*100:0),l:Yt(i/2),a:Yt(n,2)}},Bd=function(e){var t=Ew(e);return"hsl("+t.h+", "+t.s+"%, "+t.l+"%)"},Kd=function(e){var t=Ew(e);return"hsla("+t.h+", "+t.s+"%, "+t.l+"%, "+t.a+")"},hD=function(e){var t=e.h,r=e.s,n=e.v,i=e.a;t=t/360*6,r/=100,n/=100;var a=Math.floor(t),o=n*(1-r),s=n*(1-(t-a)*r),u=n*(1-(1-t+a)*r),l=a%6;return{r:Yt(255*[n,s,o,o,u,n][l]),g:Yt(255*[u,n,n,s,o,o][l]),b:Yt(255*[o,o,u,n,n,s][l]),a:Yt(i,2)}};var mD=function(e){var t=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(e);return t?gD({r:Number(t[1])/(t[2]?100/255:1),g:Number(t[3])/(t[4]?100/255:1),b:Number(t[5])/(t[6]?100/255:1),a:t[7]===void 0?1:Number(t[7])/(t[8]?100:1)}):{h:0,s:0,v:0,a:1}};var gD=function(e){var t=e.r,r=e.g,n=e.b,i=e.a,a=Math.max(t,r,n),o=a-Math.min(t,r,n),s=o?a===t?(r-n)/o:a===r?2+(n-t)/o:4+(t-r)/o:0;return{h:Yt(60*(s<0?s+6:s)),s:Yt(a?o/a*100:0),v:Yt(a/255*100),a:i}};var vD=at.memo(function(e){var t=e.hue,r=e.onChange,n=Gs(["react-colorful__hue",e.className]);return at.createElement("div",{className:n},at.createElement(Rd,{onMove:function(i){r({h:360*i.left})},onKey:function(i){r({h:Ni(t+360*i.left,0,360)})},"aria-label":"Hue","aria-valuenow":Yt(t),"aria-valuemax":"360","aria-valuemin":"0"},at.createElement(Hd,{className:"react-colorful__hue-pointer",left:t/360,color:Bd({h:t,s:100,v:100,a:1})})))}),yD=at.memo(function(e){var t=e.hsva,r=e.onChange,n={backgroundColor:Bd({h:t.h,s:100,v:100,a:1})};return at.createElement("div",{className:"react-colorful__saturation",style:n},at.createElement(Rd,{onMove:function(i){r({s:100*i.left,v:100-100*i.top})},onKey:function(i){r({s:Ni(t.s+100*i.left,0,100),v:Ni(t.v-100*i.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+Yt(t.s)+"%, Brightness "+Yt(t.v)+"%"},at.createElement(Hd,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:Bd(t)})))}),bD=function(e,t){if(e===t)return!0;for(var r in e)if(e[r]!==t[r])return!1;return!0},wD=function(e,t){return e.replace(/\s/g,"")===t.replace(/\s/g,"")};function ED(e,t,r){var n=Nd(r),i=sr(function(){return e.toHsva(t)}),a=i[0],o=i[1],s=Xt({color:t,hsva:a});Sn(function(){if(!e.equal(t,s.current.color)){var l=e.toHsva(t);s.current={hsva:l,color:t},o(l)}},[t,e]),Sn(function(){var l;bD(a,s.current.hsva)||e.equal(l=e.fromHsva(a),s.current.color)||(s.current={hsva:a,color:l},n(l))},[a,e,n]);var u=cr(function(l){o(function(c){return Object.assign({},c,l)})},[]);return[a,u]}var xD,kD=typeof window!="undefined"?Lr:Sn,SD=function(){return xD||(typeof __webpack_nonce__!="undefined"?__webpack_nonce__:void 0)};var xw=new Map,_D=function(e){kD(function(){var t=e.current?e.current.ownerDocument:document;if(t!==void 0&&!xw.has(t)){var r=t.createElement("style");r.innerHTML=`.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`,xw.set(t,r);var n=SD();n&&r.setAttribute("nonce",n),t.head.appendChild(r)}},[])};var CD=function(e){var t=e.className,r=e.hsva,n=e.onChange,i={backgroundImage:"linear-gradient(90deg, "+Kd(Object.assign({},r,{a:0}))+", "+Kd(Object.assign({},r,{a:1}))+")"},a=Gs(["react-colorful__alpha",t]),o=Yt(100*r.a);return at.createElement("div",{className:a},at.createElement("div",{className:"react-colorful__alpha-gradient",style:i}),at.createElement(Rd,{onMove:function(s){n({a:s.left})},onKey:function(s){n({a:Ni(r.a+s.left)})},"aria-label":"Alpha","aria-valuetext":o+"%","aria-valuenow":o,"aria-valuemin":"0","aria-valuemax":"100"},at.createElement(Hd,{className:"react-colorful__alpha-pointer",left:r.a,color:Kd(r)})))},DD=function(e){var t=e.className,r=e.colorModel,n=e.color,i=n===void 0?r.defaultColor:n,a=e.onChange,o=yw(e,["className","colorModel","color","onChange"]),s=Xt(null);_D(s);var u=ED(r,i,a),l=u[0],c=u[1],d=Gs(["react-colorful",t]);return at.createElement("div",Js({},o,{ref:s,className:d}),at.createElement(yD,{hsva:l,onChange:c}),at.createElement(vD,{hue:l.h,onChange:c}),at.createElement(CD,{hsva:l,onChange:c,className:"react-colorful__last-control"}))};var TD={defaultColor:"rgba(0, 0, 0, 1)",toHsva:mD,fromHsva:function(e){var t=hD(e);return"rgba("+t.r+", "+t.g+", "+t.b+", "+t.a+")"},equal:wD},kw=function(e){return at.createElement(DD,Js({},e,{colorModel:TD}))};function Sw(e){let t=In(e);if(!t.isValid())return null;let r=t.toRgb();return{rgba:`rgba(${r.r}, ${r.g}, ${r.b}, ${r.a})`,hexa:t.toHex()}}function $a({color:e,setColor:t,defaultColor:r}){let[n,i]=L.useState(e||r),[a,o]=L.useState(e||r),[s,u]=L.useState(!1),l=L.useCallback(d=>{let f=Sw(d||r);f&&(o(f.hexa),i(f.rgba),t(f.rgba))},[t]);L.useEffect(()=>{if(!e||!r)return;let d=Sw(e||r);d&&(i(d.rgba),o(d.hexa))},[]);let c=Fi(()=>{u(!1)});return h("div",{ref:c,className:B("color-picker-wrapper")},s&&h("div",{className:B("color-picker")},h(kw,{color:n,onChange:l})),h("input",{type:"text",value:a,onChange:d=>l(d.target.value),onFocus:()=>{u(!0)}}))}function MD({tagColorKey:e,deleteKey:t,updateKey:r,defaultColors:n}){return h("div",{className:B("setting-item-wrapper")},h("div",{className:B("setting-item")},h("div",{className:`${B("setting-controls-wrapper")} ${B("tag-color-input")}`},h("div",{className:B("setting-input-wrapper")},h("div",null,h("div",{className:B("setting-item-label")},P("Tag")),h("input",{type:"text",placeholder:"#tag",value:e.tagKey,onChange:i=>{r(i.currentTarget.value,e.color,e.backgroundColor)}})),h("div",null,h("div",{className:B("setting-item-label")},P("Background color")),h($a,{color:e.backgroundColor,setColor:i=>{r(e.tagKey,e.color,i)},defaultColor:n.backgroundColor})),h("div",null,h("div",{className:B("setting-item-label")},P("Text color")),h($a,{color:e.color,setColor:i=>{r(e.tagKey,i,e.backgroundColor)},defaultColor:n.color}))),h("div",{className:B("setting-toggle-wrapper")},h("div",null,h("div",{className:B("item-tags")},h("a",{className:`tag ${B("item-tag")}`},"#tag1"),h("a",{className:`tag ${B("item-tag")}`,style:{"--tag-color":e.color,"--tag-background-color":e.backgroundColor}},e.tagKey||"#tag"),h("a",{className:`tag ${B("item-tag")}`},"#tag2"))))),h("div",{className:B("setting-button-wrapper")},h("div",{onClick:t,"aria-label":P("Delete")},h(_t,{name:"cross"})))))}function ID({dataKeys:e,onChange:t}){let[r,n]=L.useState(e),i=L.useMemo(()=>{let l=createDiv(B("item-tags")),c=l.createEl("a",B("item-tag"));l.style.position="absolute",l.style.visibility="hidden",activeDocument.body.append(l);let d=activeWindow.getComputedStyle(c),f=d.getPropertyValue("color").trim(),p=d.getPropertyValue("background-color").trim();return l.remove(),{color:f,backgroundColor:p}},[]),a=l=>{t(l),n(l)},o=()=>{a((0,Qs.default)(r,{$push:[{...gs,id:Ae(),data:{tagKey:"",color:"",backgroundColor:""}}]}))},s=l=>{a((0,Qs.default)(r,{$splice:[[l,1]]}))},u=l=>(c,d,f)=>{a((0,Qs.default)(r,{[l]:{data:{tagKey:{$set:c},color:{$set:d},backgroundColor:{$set:f}}}}))};return h("div",{className:B("tag-color-input-wrapper")},h("div",{className:"setting-item-info"},h("div",{className:"setting-item-name"},P("Display tag colors")),h("div",{className:"setting-item-description"},P("Set colors for the tags displayed below the card title."))),r.map((l,c)=>h(MD,{key:l.id,tagColorKey:l.data,deleteKey:()=>s(c),updateKey:u(c),defaultColors:i})),h("button",{className:B("add-tag-color-button"),onClick:()=>{o()}},P("Add tag color")))}function _w(e,t,r){L.render(h(ID,{dataKeys:t,onChange:r,portalContainer:ur(e)}),e)}function Cw(e){L.unmountComponentAtNode(e)}m();var Xs=me(Et());var $d=me(require("obsidian"));function AD({dateColorKey:e,deleteKey:t,updateKey:r,defaultColors:n,getTimeFormat:i,getDateFormat:a}){let o="between";return e.isToday&&(o="today"),e.isBefore&&(o="before"),e.isAfter&&(o="after"),h("div",{className:B("setting-item-wrapper")},h("div",{className:B("setting-item")},h("div",{className:`${B("setting-controls-wrapper")} ${B("tag-color-input")}`},h("div",null,h("div",null,h("div",{className:B("setting-item-label")},P("Date is"))),h("div",{className:B("date-color-config")},h("select",{className:"dropdown",defaultValue:o,onChange:s=>{let u={...e};switch(delete u.isAfter,delete u.isBefore,delete u.isToday,s.target.value){case"today":u.isToday=!0;break;case"before":u.isBefore=!0;break;case"after":u.isAfter=!0;break}r(u)}},h("option",{value:"between"},P("Between now and")),h("option",{value:"today"},P("Today")),h("option",{value:"after"},P("After now")),h("option",{value:"before"},P("Before now"))),!e.isToday&&!e.isAfter&&!e.isBefore&&h(S,null,h("input",{type:"number",value:e.distance,onChange:s=>{r({...e,distance:parseInt(s.target.value)})}}),h("select",{className:"dropdown",defaultValue:e.unit,onChange:s=>{r({...e,unit:s.target.value})}},h("option",{value:"hours"},"Hours"),h("option",{value:"days"},"Days"),h("option",{value:"weeks"},"Weeks"),h("option",{value:"months"},"Months")),h("select",{className:"dropdown",defaultValue:e.direction,onChange:s=>{r({...e,direction:s.target.value})}},h("option",{value:"after"},P("After now")),h("option",{value:"before"},P("Before now"))))),h("div",{className:B("date-color-config")},h("div",null,h("div",{className:B("setting-item-label")},P("Background color")),h($a,{color:e.backgroundColor,setColor:s=>{r({...e,backgroundColor:s})},defaultColor:n.backgroundColor})),h("div",null,h("div",{className:B("setting-item-label")},P("Text color")),h($a,{color:e.color,setColor:s=>{r({...e,color:s})},defaultColor:n.color})))),h("div",null,h("div",{className:B("date-color-wrapper")},h("div",{className:B("item-metadata")},h("span",{style:{"--date-color":e.color,"--date-background-color":e.backgroundColor},className:et([B("item-metadata-date-wrapper"),{"has-background":!!(e==null?void 0:e.backgroundColor)}])},h("span",{className:B("item-metadata-date is-button")},(0,$d.moment)().format(a()))," ",h("span",{className:B("item-metadata-time is-button")},(0,$d.moment)().format(i()))))))),h("div",{className:B("setting-button-wrapper")},h("div",{onClick:t,"aria-label":P("Delete")},h(_t,{name:"cross"})))))}function LD({dataKeys:e,onChange:t,getTimeFormat:r,getDateFormat:n}){let[i,a]=L.useState(e),o=L.useMemo(()=>{let d=createDiv(B("item-metadata")),f=d.createSpan(B("item-metadata-date"));d.style.position="absolute",d.style.visibility="hidden",activeDocument.body.append(d);let p=activeWindow.getComputedStyle(f),g=p.getPropertyValue("color").trim(),y=p.getPropertyValue("background-color").trim();return d.remove(),{color:g,backgroundColor:y}},[]),s=d=>{t(d),a(d)},u=()=>{s((0,Xs.default)(i,{$push:[{...vs,id:Ae(),data:{isToday:!1,distance:1,unit:"days",direction:"after"}}]}))},l=d=>{s((0,Xs.default)(i,{$splice:[[d,1]]}))},c=d=>f=>{s((0,Xs.default)(i,{[d]:{data:{$set:f}}}))};return h("div",{className:B("date-color-input-wrapper")},h("div",{className:"setting-item-info"},h("div",{className:"setting-item-name"},P("Date display colors")),h("div",{className:"setting-item-description"},P("Set colors for the date displayed below the card based on the rules below"))),i.map((d,f)=>h(AD,{key:d.id,dateColorKey:d.data,deleteKey:()=>l(f),updateKey:c(f),defaultColors:o,getTimeFormat:r,getDateFormat:n})),h("button",{className:B("add-tag-color-button"),onClick:u},P("Add date color")))}function Dw(e,t,r,n,i){L.render(h(LD,{dataKeys:t,onChange:r,portalContainer:ur(e),getDateFormat:n,getTimeFormat:i}),e)}function Tw(e){L.unmountComponentAtNode(e)}var Iw=/^\d+(?:\.\d+)?$/,Aw={[gn]:!0,"date-display-format":!0,"date-format":!0,"date-picker-week-start":!0,"date-time-display-format":!0,"date-trigger":!0,"hide-card-count":!0,"hide-date-display":!0,"hide-date-in-title":!0,"hide-tags-display":!0,"hide-tags-in-title":!0,"lane-width":!0,"link-date-to-daily-note":!0,"max-archive-size":!0,"metadata-keys":!0,"new-card-insertion-method":!0,"new-line-trigger":!0,"new-note-folder":!0,"new-note-template":!0,"prepend-archive-date":!0,"prepend-archive-format":!0,"prepend-archive-separator":!0,"show-checkboxes":!0,"show-relative-date":!0,"time-format":!0,"time-trigger":!0,"show-add-list":!0,"show-archive-all":!0,"show-view-as-markdown":!0,"show-board-settings":!0,"show-search":!0,"tag-colors":!0,"date-colors":!0},Ud=class{constructor(t,r,n){this.cleanupFns=[];this.applyDebounceTimer=0;this.app=t.app,this.plugin=t,this.config=r,this.settings=n}applySettingsUpdate(t){this.win.clearTimeout(this.applyDebounceTimer),this.applyDebounceTimer=this.win.setTimeout(()=>{this.settings=(0,Mw.default)(this.settings,t),this.config.onSettingsChange(this.settings)},200)}getSetting(t,r){return r?[this.settings[t],this.plugin.settings[t]]:[this.settings[t],null]}constructUI(t,r,n){this.win=t.win;let{templateFiles:i,vaultFolders:a,templateWarning:o}=rw(this.app);t.createEl("h3",{text:r}),n?t.createEl("p",{text:P("These settings will take precedence over the default Kanban board settings.")}):t.createEl("p",{text:P("Set the default Kanban board settings. Settings can be overridden on a board-by-board basis.")}),new Be.Setting(t).setName(P("New line trigger")).setDesc(P("Select whether Enter or Shift+Enter creates a new line. The opposite of what you choose will create and complete editing of cards and lists.")).addDropdown(s=>{s.addOption("shift-enter",P("Shift + Enter")),s.addOption("enter",P("Enter"));let[u,l]=this.getSetting("new-line-trigger",n);s.setValue(u||l||"shift-enter"),s.onChange(c=>{this.applySettingsUpdate({"new-line-trigger":{$set:c}})})}),new Be.Setting(t).setName(P("Prepend / append new cards")).setDesc(P("This setting controls whether new cards are added to the beginning or end of the list.")).addDropdown(s=>{s.addOption("prepend",P("Prepend")),s.addOption("prepend-compact",P("Prepend (compact)")),s.addOption("append",P("Append"));let[u,l]=this.getSetting("new-card-insertion-method",n);s.setValue(u||l||"append"),s.onChange(c=>{this.applySettingsUpdate({"new-card-insertion-method":{$set:c}})})}),new Be.Setting(t).setName(P("Note template")).setDesc(P("This template will be used when creating new notes from Kanban cards.")).then(Ad({choices:i,key:"new-note-template",warningText:o,local:n,placeHolderStr:P("No template"),manager:this})),new Be.Setting(t).setName(P("Note folder")).setDesc(P("Notes created from Kanban cards will be placed in this folder. If blank, they will be placed in the default location for this vault.")).then(Ad({choices:a,key:"new-note-folder",local:n,placeHolderStr:P("Default folder"),manager:this})),new Be.Setting(t).setName(P("Hide card counts in list titles")).setDesc(P("When toggled, card counts are hidden from the list title")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-card-count",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-card-count":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-card-count",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-card-count"]})})})}),new Be.Setting(t).setName(P("List width")).setDesc(P("Enter a number to set the list width in pixels.")).addText(s=>{let[u,l]=this.getSetting("lane-width",n);s.inputEl.setAttr("type","number"),s.inputEl.placeholder=`${l||"272"} (default)`,s.inputEl.value=u?u.toString():"",s.onChange(c=>{if(c&&Iw.test(c)){s.inputEl.removeClass("error"),this.applySettingsUpdate({"lane-width":{$set:parseInt(c)}});return}c&&s.inputEl.addClass("error"),this.applySettingsUpdate({$unset:["lane-width"]})})}),new Be.Setting(t).setName(P("Maximum number of archived cards")).setDesc(P("Archived cards can be viewed in markdown mode. This setting will begin removing old cards once the limit is reached. Setting this value to -1 will allow a board's archive to grow infinitely.")).addText(s=>{let[u,l]=this.getSetting("max-archive-size",n);s.inputEl.setAttr("type","number"),s.inputEl.placeholder=`${l||"-1"} (default)`,s.inputEl.value=u?u.toString():"",s.onChange(c=>{if(c&&Iw.test(c)){s.inputEl.removeClass("error"),this.applySettingsUpdate({"max-archive-size":{$set:parseInt(c)}});return}c&&s.inputEl.addClass("error"),this.applySettingsUpdate({$unset:["max-archive-size"]})})}),new Be.Setting(t).setName(P("Display card checkbox")).setDesc(P("When toggled, a checkbox will be displayed with each card")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-checkboxes",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"show-checkboxes":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-checkboxes",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-checkboxes"]})})})}),new Be.Setting(t).setName(P("Hide tags in card titles")).setDesc(P("When toggled, tags will be hidden card titles. This will prevent tags from being included in the title when creating new notes.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-tags-in-title",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-tags-in-title":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-tags-in-title",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-tags-in-title"]})})})}),new Be.Setting(t).setName(P("Hide card display tags")).setDesc(P("When toggled, tags will not be displayed below the card title.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-tags-display",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-tags-display":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-tags-display",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-tags-display"]})})})}),new Be.Setting(t).setName(P("Display tag colors")).setDesc(P("Set colors for the tags displayed below the card title.")).then(s=>{let[u]=this.getSetting("tag-colors",n),l=(u||[]).map(c=>({...gs,id:Ae(),data:c}));_w(s.settingEl,l,c=>this.applySettingsUpdate({"tag-colors":{$set:c.map(d=>d.data)}})),this.cleanupFns.push(()=>{s.settingEl&&Cw(s.settingEl)})}),t.createEl("h4",{text:P("Board Header Buttons")}),new Be.Setting(t).setName(P("Add a list")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-add-list",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-add-list":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-add-list",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-add-list"]})})})}),new Be.Setting(t).setName(P("Archive completed cards")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-archive-all",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-archive-all":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-archive-all",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-archive-all"]})})})}),new Be.Setting(t).setName(P("Open as markdown")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-view-as-markdown",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-view-as-markdown":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-view-as-markdown",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-view-as-markdown"]})})})}),new Be.Setting(t).setName(P("Open board settings")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-board-settings",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-board-settings":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-board-settings",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-board-settings"]})})})}),new Be.Setting(t).setName(P("Search...")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-search",n);c!=null?l.setValue(c):d!=null?l.setValue(d):l.setValue(!0),l.onChange(f=>{this.applySettingsUpdate({"show-search":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-search",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-search"]})})})}),t.createEl("h4",{text:P("Date & Time")}),new Be.Setting(t).setName(P("Date trigger")).setDesc(P("When this is typed, it will trigger the date selector")).addText(s=>{let[u,l]=this.getSetting("date-trigger",n);(u||l)&&s.setValue(u||l),s.setPlaceholder(l||js),s.onChange(c=>{c?this.applySettingsUpdate({"date-trigger":{$set:c}}):this.applySettingsUpdate({$unset:["date-trigger"]})})}),new Be.Setting(t).setName(P("Time trigger")).setDesc(P("When this is typed, it will trigger the time selector")).addText(s=>{let[u,l]=this.getSetting("time-trigger",n);(u||l)&&s.setValue(u||l),s.setPlaceholder(l||qs),s.onChange(c=>{c?this.applySettingsUpdate({"time-trigger":{$set:c}}):this.applySettingsUpdate({$unset:["time-trigger"]})})}),new Be.Setting(t).setName(P("Date format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(f=>{f.appendText(P("This format will be used when saving dates in markdown.")),f.createEl("br"),f.appendText(P("For more syntax, refer to")+" "),f.createEl("a",{text:P("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},p=>{p.setAttr("target","_blank")}),f.createEl("br"),f.appendText(P("Your current syntax looks like this")+": "),u.setSampleEl(f.createEl("b",{cls:"u-pop"})),f.createEl("br")}));let[l,c]=this.getSetting("date-format",n),d=Nr(this.app);u.setPlaceholder(d),u.setDefaultFormat(d),(l||c)&&u.setValue(l||c),u.onChange(f=>{f?this.applySettingsUpdate({"date-format":{$set:f}}):this.applySettingsUpdate({$unset:["date-format"]})})})}),new Be.Setting(t).setName(P("Time format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(f=>{f.appendText(P("For more syntax, refer to")+" "),f.createEl("a",{text:P("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},p=>{p.setAttr("target","_blank")}),f.createEl("br"),f.appendText(P("Your current syntax looks like this")+": "),u.setSampleEl(f.createEl("b",{cls:"u-pop"})),f.createEl("br")}));let[l,c]=this.getSetting("time-format",n),d=ui(this.app);u.setPlaceholder(d),u.setDefaultFormat(d),(l||c)&&u.setValue(l||c),u.onChange(f=>{f?this.applySettingsUpdate({"time-format":{$set:f}}):this.applySettingsUpdate({$unset:["time-format"]})})})}),new Be.Setting(t).setName(P("Date display format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(f=>{f.appendText(P("This format will be used when displaying dates in Kanban cards.")),f.createEl("br"),f.appendText(P("For more syntax, refer to")+" "),f.createEl("a",{text:P("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},p=>{p.setAttr("target","_blank")}),f.createEl("br"),f.appendText(P("Your current syntax looks like this")+": "),u.setSampleEl(f.createEl("b",{cls:"u-pop"})),f.createEl("br")}));let[l,c]=this.getSetting("date-display-format",n),d=Nr(this.app);u.setPlaceholder(d),u.setDefaultFormat(d),(l||c)&&u.setValue(l||c),u.onChange(f=>{f?this.applySettingsUpdate({"date-display-format":{$set:f}}):this.applySettingsUpdate({$unset:["date-display-format"]})})})}),new Be.Setting(t).setName(P("Show relative date")).setDesc(P("When toggled, cards will display the distance between today and the card's date. eg. 'In 3 days', 'A month ago'")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("show-relative-date",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"show-relative-date":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("show-relative-date",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["show-relative-date"]})})})}),new Be.Setting(t).setName(P("Hide card display dates")).setDesc(P("When toggled, formatted dates will not be displayed on the card. Relative dates will still be displayed if they are enabled.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-date-display",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-date-display":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-date-display",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-date-display"]})})})}),new Be.Setting(t).setName(P("Hide dates in card titles")).setDesc(P("When toggled, dates will be hidden card titles. This will prevent dates from being included in the title when creating new notes.")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("hide-date-in-title",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"hide-date-in-title":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("hide-date-in-title",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["hide-date-in-title"]})})})}),new Be.Setting(t).setName(P("Date display colors")).setDesc(P("Set colors for the date displayed below the card based on the rules below")).then(s=>{let[u]=this.getSetting("date-colors",n),l=(u||[]).map(c=>({...vs,id:Ae(),data:c}));Dw(s.settingEl,l,c=>this.applySettingsUpdate({"date-colors":{$set:c.map(d=>d.data)}}),()=>{let[c,d]=this.getSetting("date-display-format",n),f=Nr(this.app);return c||d||f},()=>{let[c,d]=this.getSetting("time-format",n),f=ui(this.app);return c||d||f}),this.cleanupFns.push(()=>{s.settingEl&&Tw(s.settingEl)})}),new Be.Setting(t).setName(P("Link dates to daily notes")).setDesc(P("When toggled, dates will link to daily notes. Eg. [[2021-04-26]]")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("link-date-to-daily-note",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"link-date-to-daily-note":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("link-date-to-daily-note",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["link-date-to-daily-note"]})})})}),new Be.Setting(t).setName(P("Add date and time to archived cards")).setDesc(P("When toggled, the current date and time will be added to the beginning of a card when it is archived. Eg. - [ ] 2021-05-14 10:00am My card title")).then(s=>{let u;s.addToggle(l=>{u=l;let[c,d]=this.getSetting("prepend-archive-date",n);c!==void 0?l.setValue(c):d!==void 0&&l.setValue(d),l.onChange(f=>{this.applySettingsUpdate({"prepend-archive-date":{$set:f}})})}).addExtraButton(l=>{l.setIcon("reset").setTooltip(P("Reset to default")).onClick(()=>{let[,c]=this.getSetting("prepend-archive-date",n);u.setValue(!!c),this.applySettingsUpdate({$unset:["prepend-archive-date"]})})})}),new Be.Setting(t).setName(P("Archive date/time separator")).setDesc(P("This will be used to separate the archived date/time from the title")).addText(s=>{let[u,l]=this.getSetting("prepend-archive-separator",n);s.inputEl.placeholder=l?`${l} (default)`:"",s.inputEl.value=u||"",s.onChange(c=>{if(c){this.applySettingsUpdate({"prepend-archive-separator":{$set:c}});return}this.applySettingsUpdate({$unset:["prepend-archive-separator"]})})}),new Be.Setting(t).setName(P("Archive date/time format")).then(s=>{s.addMomentFormat(u=>{s.descEl.appendChild(createFragment(T=>{T.appendText(P("For more syntax, refer to")+" "),T.createEl("a",{text:P("format reference"),href:"https://momentjs.com/docs/#/displaying/format/"},C=>{C.setAttr("target","_blank")}),T.createEl("br"),T.appendText(P("Your current syntax looks like this")+": "),u.setSampleEl(T.createEl("b",{cls:"u-pop"})),T.createEl("br")}));let[l,c]=this.getSetting("prepend-archive-format",n),[d,f]=this.getSetting("date-format",n),p=d||f||Nr(this.app),[g,y]=this.getSetting("time-format",n),b=g||y||ui(this.app),k=`${p} ${b}`;u.setPlaceholder(k),u.setDefaultFormat(k),(l||c)&&u.setValue(l||c),u.onChange(T=>{T?this.applySettingsUpdate({"prepend-archive-format":{$set:T}}):this.applySettingsUpdate({$unset:["prepend-archive-format"]})})})}),new Be.Setting(t).setName(P("Calendar: first day of week")).setDesc(P("Override which day is used as the start of the week")).addDropdown(s=>{s.addOption("",P("default")),s.addOption("0",P("Sunday")),s.addOption("1",P("Monday")),s.addOption("2",P("Tuesday")),s.addOption("3",P("Wednesday")),s.addOption("4",P("Thursday")),s.addOption("5",P("Friday")),s.addOption("6",P("Saturday"));let[u,l]=this.getSetting("date-picker-week-start",n);s.setValue((u==null?void 0:u.toString())||(l==null?void 0:l.toString())||""),s.onChange(c=>{c?this.applySettingsUpdate({"date-picker-week-start":{$set:Number(c)}}):this.applySettingsUpdate({$unset:["date-picker-week-start"]})})}),t.createEl("br"),t.createEl("h4",{text:P("Linked Page Metadata")}),t.createEl("p",{cls:B("metadata-setting-desc"),text:P("Display metadata for the first note linked within a card. Specify which metadata keys to display below. An optional label can be provided, and labels can be hidden altogether.")}),new Be.Setting(t).then(s=>{s.settingEl.addClass(B("draggable-setting-container"));let[u]=this.getSetting("metadata-keys",n),l=(u||[]).map(c=>({...ms,id:Ae(),data:c,win:Ze(t)}));aw(s.settingEl,t,l,c=>this.applySettingsUpdate({"metadata-keys":{$set:c.map(d=>d.data)}})),this.cleanupFns.push(()=>{s.settingEl&&ow(s.settingEl)})})}cleanUp(){this.win=null,this.cleanupFns.forEach(t=>t()),this.cleanupFns=[]}},Zs=class extends Be.Modal{constructor(t,r,n){super(t.app);this.view=t,this.settingsManager=new Ud(t.plugin,r,n)}onOpen(){let{contentEl:t,modalEl:r}=this;r.addClass(B("board-settings-modal")),this.settingsManager.constructUI(t,this.view.file.basename,!0)}onClose(){let{contentEl:t}=this;this.settingsManager.cleanUp(),t.empty()}},Vd=class extends Be.PluginSettingTab{constructor(t,r){super(t.app,t);this.plugin=t,this.settingsManager=new Ud(t,r,t.settings)}display(){let{containerEl:t}=this;t.empty(),t.addClass(B("board-settings-modal")),this.settingsManager.constructUI(t,P("Kanban Plugin"),!1)}};var yn="kanban",Ua="blocks",tr=class extends Lw.TextFileView{constructor(t,r){super(t);this.actionButtons={};this.plugin=r,this.emitter=Hs(),this.emitter.on("hotkey",n=>{switch(n){case"daily-notes:goto-prev":{Vm(this.app,this.file);break}case"daily-notes:goto-next":{Um(this.app,this.file);break}}}),this.register(this.containerEl.onWindowMigrated(()=>{this.plugin.removeView(this),this.plugin.addView(this,this.data,this.isPrimary)}))}get isPrimary(){var t;return((t=this.plugin.getStateManager(this.file))==null?void 0:t.getAView())===this}get id(){var t;return`${this.leaf.id}:::${(t=this.file)==null?void 0:t.path}`}get isShiftPressed(){return this.plugin.isShiftPressed}setBoard(t,r=!0){this.plugin.stateManagers.get(this.file).setState(t,r)}getBoard(){return this.plugin.stateManagers.get(this.file).state}getViewType(){return yn}getIcon(){return Ua}getDisplayText(){var t;return((t=this.file)==null?void 0:t.basename)||"Kanban"}getWindow(){return Ze(this.containerEl)}async onLoadFile(t){try{return await super.onLoadFile(t)}catch(r){throw this.plugin.stateManagers.get(this.file).setError(r),r}}destroy(){this.plugin.removeView(this),Object.values(this.actionButtons).forEach(t=>t.remove()),this.actionButtons={}}async onClose(){this.destroy()}async onUnloadFile(t){return this.destroy(),await super.onUnloadFile(t)}handleRename(t,r){this.file.path===t&&this.plugin.handleViewFileRename(this,r)}requestSaveToDisk(t){this.data!==t&&this.isPrimary?(this.data=t,this.requestSave()):this.data=t}getViewData(){return this.data}setViewData(t,r){if(!Wm(t)){this.plugin.kanbanFileModes[this.leaf.id||this.file.path]="markdown",this.plugin.removeView(this),this.plugin.setMarkdownView(this.leaf,!1);return}this.plugin.addView(this,t,!r&&this.isPrimary)}getPortal(){let t=this.plugin.stateManagers.get(this.file);return h(ew,{stateManager:t,view:this})}onPaneMenu(t,r,n=!0){if(r!=="more-options"){super.onPaneMenu(t,r);return}t.addItem(i=>{i.setTitle(P("Open as markdown")).setIcon("document").setSection("pane").onClick(()=>{this.plugin.kanbanFileModes[this.leaf.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)})}).addItem(i=>{i.setTitle(P("Open board settings")).setIcon("gear").setSection("pane").onClick(()=>{let a=this.plugin.stateManagers.get(this.file),o=a.state;new Zs(this,{onSettingsChange:s=>{let u=(0,Wd.default)(o,{data:{settings:{$set:s}}});a.setState(u)}},o.data.settings).open()})}).addItem(i=>{i.setTitle(P("Archive completed cards")).setIcon("sheets-in-box").setSection("pane").onClick(()=>{this.plugin.stateManagers.get(this.file).archiveCompletedCards()})}),n&&super.onPaneMenu(t,r)}initHeaderButtons(){let t=this.plugin.getStateManager(this.file);if(!!t)if(t.getSetting("show-board-settings")&&!this.actionButtons["show-board-settings"]?this.actionButtons["show-board-settings"]=this.addAction("gear",P("Open board settings"),()=>{let r=this.plugin.stateManagers.get(this.file),n=r.state;new Zs(this,{onSettingsChange:i=>{let a=(0,Wd.default)(n,{data:{settings:{$set:i}}});r.setState(a)}},n.data.settings).open()}):!t.getSetting("show-board-settings")&&this.actionButtons["show-board-settings"]&&(this.actionButtons["show-board-settings"].remove(),delete this.actionButtons["show-board-settings"]),t.getSetting("show-search")&&!this.actionButtons["show-search"]?this.actionButtons["show-search"]=this.addAction("search",P("Search..."),()=>{this.emitter.emit("hotkey","editor:open-search")}):!t.getSetting("show-search")&&this.actionButtons["show-search"]&&(this.actionButtons["show-search"].remove(),delete this.actionButtons["show-search"]),t.getSetting("show-view-as-markdown")&&!this.actionButtons["show-view-as-markdown"]?this.actionButtons["show-view-as-markdown"]=this.addAction("document",P("Open as markdown"),()=>{this.plugin.kanbanFileModes[this.leaf.id||this.file.path]="markdown",this.plugin.setMarkdownView(this.leaf)}):!t.getSetting("show-view-as-markdown")&&this.actionButtons["show-view-as-markdown"]&&(this.actionButtons["show-view-as-markdown"].remove(),delete this.actionButtons["show-view-as-markdown"]),t.getSetting("show-archive-all")&&!this.actionButtons["show-archive-all"]?this.actionButtons["show-archive-all"]=this.addAction("sheets-in-box",P("Archive completed cards"),()=>{this.plugin.stateManagers.get(this.file).archiveCompletedCards()}):!t.getSetting("show-archive-all")&&this.actionButtons["show-archive-all"]&&(this.actionButtons["show-archive-all"].remove(),delete this.actionButtons["show-archive-all"]),t.getSetting("show-add-list")&&!this.actionButtons["show-add-list"]){let r=this.addAction("plus-with-circle",P("Add a list"),()=>{this.emitter.emit("showLaneForm",void 0)});r.addClass(B("ignore-click-outside")),this.actionButtons["show-add-list"]=r}else!t.getSetting("show-add-list")&&this.actionButtons["show-add-list"]&&(this.actionButtons["show-add-list"].remove(),delete this.actionButtons["show-add-list"])}clear(){}};m();var Vi=me(Et()),YE=me(require("obsidian"));m();m();var zd={};qi(zd,{JsonPatchError:()=>ot,_areEquals:()=>za,applyOperation:()=>Yr,applyPatch:()=>al,applyReducer:()=>RD,deepClone:()=>ND,getValueByPointer:()=>il,validate:()=>Fw,validator:()=>ol});m();m();var PD=function(){var e=function(t,r){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var a in i)i.hasOwnProperty(a)&&(n[a]=i[a])},e(t,r)};return function(t,r){e(t,r);function n(){this.constructor=t}t.prototype=r===null?Object.create(r):(n.prototype=r.prototype,new n)}}(),FD=Object.prototype.hasOwnProperty;function el(e,t){return FD.call(e,t)}function tl(e){if(Array.isArray(e)){for(var t=new Array(e.length),r=0;r=48&&n<=57){t++;continue}return!1}return!0}function Hn(e){return e.indexOf("/")===-1&&e.indexOf("~")===-1?e:e.replace(/~/g,"~0").replace(/\//g,"~1")}function Va(e){return e.replace(/~1/g,"/").replace(/~0/g,"~")}function rl(e){if(e===void 0)return!0;if(e){if(Array.isArray(e)){for(var t=0,r=e.length;t0&&u[c-1]=="constructor"))throw new TypeError("JSON-Patch: modifying `__proto__` or `constructor/prototype` prop is banned for security reasons, if this was on purpose, please set `banPrototypeModifications` flag false and pass it to this function. More info in fast-json-patch README");if(r&&f===void 0&&(l[p]===void 0?f=u.slice(0,c).join("/"):c==d-1&&(f=t.path),f!==void 0&&g(t,0,e,f)),c++,Array.isArray(l)){if(p==="-")p=l.length;else{if(r&&!nl(p))throw new ot("Expected an unsigned base-10 integer value, making the new referenced value the array element with the zero-based index","OPERATION_PATH_ILLEGAL_ARRAY_INDEX",a,t,e);nl(p)&&(p=~~p)}if(c>=d){if(r&&t.op==="add"&&p>l.length)throw new ot("The specified index MUST NOT be greater than the number of elements in the array","OPERATION_VALUE_OUT_OF_BOUNDS",a,t,e);var o=OD[t.op].call(t,l,p,e);if(o.test===!1)throw new ot("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return o}}else if(c>=d){var o=Oi[t.op].call(t,l,p,e);if(o.test===!1)throw new ot("Test operation failed","TEST_OPERATION_FAILED",a,t,e);return o}if(l=l[p],r&&c0)throw new ot('Operation `path` property must start with "/"',"OPERATION_PATH_INVALID",t,e,r);if((e.op==="move"||e.op==="copy")&&typeof e.from!="string")throw new ot("Operation `from` property is not present (applicable in `move` and `copy` operations)","OPERATION_FROM_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&e.value===void 0)throw new ot("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_REQUIRED",t,e,r);if((e.op==="add"||e.op==="replace"||e.op==="test")&&rl(e.value))throw new ot("Operation `value` property is not present (applicable in `add`, `replace` and `test` operations)","OPERATION_VALUE_CANNOT_CONTAIN_UNDEFINED",t,e,r);if(r){if(e.op=="add"){var i=e.path.split("/").length,a=n.split("/").length;if(i!==a+1&&i!==a)throw new ot("Cannot perform an `add` operation at the desired path","OPERATION_PATH_CANNOT_ADD",t,e,r)}else if(e.op==="replace"||e.op==="remove"||e.op==="_get"){if(e.path!==n)throw new ot("Cannot perform the operation at a path that does not exist","OPERATION_PATH_UNRESOLVABLE",t,e,r)}else if(e.op==="move"||e.op==="copy"){var o={op:"_get",path:e.from,value:void 0},s=Fw([o],r);if(s&&s.name==="OPERATION_PATH_UNRESOLVABLE")throw new ot("Cannot perform the operation from a path that does not exist","OPERATION_FROM_UNRESOLVABLE",t,e,r)}}}else throw new ot("Operation `op` property is not one of operations defined in RFC-6902","OPERATION_OP_INVALID",t,e,r)}function Fw(e,t,r){try{if(!Array.isArray(e))throw new ot("Patch sequence must be an array","SEQUENCE_NOT_AN_ARRAY");if(t)al(Ft(t),Ft(e),r||!0);else{r=r||ol;for(var n=0;nJd,generate:()=>qd,observe:()=>WD,unobserve:()=>VD});m();var jd=new WeakMap,HD=function(){function e(t){this.observers=new Map,this.obj=t}return e}(),BD=function(){function e(t,r){this.callback=t,this.observer=r}return e}();function KD(e){return jd.get(e)}function $D(e,t){return e.observers.get(t)}function UD(e,t){e.observers.delete(t.callback)}function VD(e,t){t.unobserve()}function WD(e,t){var r=[],n,i=KD(e);if(!i)i=new HD(e),jd.set(e,i);else{var a=$D(i,t);n=a&&a.observer}if(n)return n;if(n={},i.value=Ft(e),t){n.callback=t,n.next=null;var o=function(){qd(n)},s=function(){clearTimeout(n.next),n.next=setTimeout(o)};typeof window!="undefined"&&(window.addEventListener("mouseup",s),window.addEventListener("keyup",s),window.addEventListener("mousedown",s),window.addEventListener("keydown",s),window.addEventListener("change",s))}return n.patches=r,n.object=e,n.unobserve=function(){qd(n),clearTimeout(n.next),UD(i,n),typeof window!="undefined"&&(window.removeEventListener("mouseup",s),window.removeEventListener("keyup",s),window.removeEventListener("mousedown",s),window.removeEventListener("keydown",s),window.removeEventListener("change",s))},i.observers.set(t,new BD(t,n)),n}function qd(e,t){t===void 0&&(t=!1);var r=jd.get(e.object);Yd(r.value,e.object,e.patches,"",t),e.patches.length&&al(r.value,e.patches);var n=e.patches;return n.length>0&&(e.patches=[],e.callback&&e.callback(n)),n}function Yd(e,t,r,n,i){if(t!==e){typeof t.toJSON=="function"&&(t=t.toJSON());for(var a=tl(t),o=tl(e),s=!1,u=!1,l=o.length-1;l>=0;l--){var c=o[l],d=e[c];if(el(t,c)&&!(t[c]===void 0&&d!==void 0&&Array.isArray(t)===!1)){var f=t[c];typeof d=="object"&&d!=null&&typeof f=="object"&&f!=null&&Array.isArray(d)===Array.isArray(f)?Yd(d,f,r,n+"/"+Hn(c),i):d!==f&&(s=!0,i&&r.push({op:"test",path:n+"/"+Hn(c),value:Ft(d)}),r.push({op:"replace",path:n+"/"+Hn(c),value:Ft(f)}))}else Array.isArray(e)===Array.isArray(t)?(i&&r.push({op:"test",path:n+"/"+Hn(c),value:Ft(d)}),r.push({op:"remove",path:n+"/"+Hn(c)}),u=!0):(i&&r.push({op:"test",path:n,value:e}),r.push({op:"replace",path:n,value:t}),s=!0)}if(!(!u&&a.length==o.length))for(var l=0;l":""))+")"})),f;function f(){let p=[],g,y,b;if((!t||i(s,u,l[l.length-1]||null))&&(p=JD(r(s,l)),p[0]===Xd))return p;if(s.children&&p[0]!==$w)for(y=(n?s.children.length:-1)+a,b=l.concat(s);y>-1&&y!0){for(let i=t+1,a=e.length;i{try{await jw(e,r),await Promise.all(r.children.map(n=>qa(e,n)))}catch(n){throw e.setError(n),n}}))}catch(r){throw e.setError(r),r}return t}function GD(e){return(e.op==="add"||e.op==="replace")&&["/title","/titleRaw","/dateStr","/timeStr",/\d$/,/\/fileAccessor\/.+$/].some(t=>typeof t=="string"?e.path.endsWith(t):t.test(e.path))}async function Yw(e,t,r){let n={},i=r.reduce((a,o)=>{if(!GD(o))return a;let s=o.path.split("/").reduce((l,c)=>(/\d+/.test(c)&&l.push(Number(c)),l),[]),u=s.join(",");return n[u]||(n[u]=!0,a.push(s)),a},[]);try{await Promise.all(i.map(a=>{let o=mt(t,a);if(o.type===Je.Lane)return jw(e,o);if(o.type===Je.Item)return qa(e,o)}))}catch(a){throw e.setError(a),a}return t}m();m();m();m();m();m();function Nt(e,t,r,n){let i=e.length,a=0,o;if(t<0?t=-t>i?0:i+t:t=t>i?i:t,r=r>0?r:0,n.length<1e4)o=Array.from(n),o.unshift(t,r),[].splice.apply(e,o);else for(r&&[].splice.apply(e,[t,r]);a0?(Nt(e,e.length,0,t),e):t}var Jw={}.hasOwnProperty;function Gw(e){let t={},r=-1;for(;++ro))return;let K=t.events.length,z=K,U,Z;for(;z--;)if(t.events[z][0]==="exit"&&t.events[z][1].type==="chunkFlow"){if(U){Z=t.events[z][1].end;break}U=!0}for(k(n),D=K;DC;){let H=r[A];t.containerState=H[1],H[0].exit.call(t,e)}r.length=C}function T(){i.write([null]),a=void 0,i=void 0,t.containerState._closeFlow=void 0}}function tT(e,t,r){return Se(e,e.attempt(this.parser.constructs.document,t,r),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}m();m();m();m();function rf(e){if(e===null||Qe(e)||eE(e))return 1;if(tE(e))return 2}m();function Ri(e,t,r){let n=[],i=-1;for(;++i1&&e[r][1].end.offset-e[r][1].start.offset>1?2:1;let d=Object.assign({},e[n][1].end),f=Object.assign({},e[r][1].start);aE(d,-u),aE(f,u),o={type:u>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},e[n][1].end)},s={type:u>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[r][1].start),end:f},a={type:u>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[r][1].start)},i={type:u>1?"strong":"emphasis",start:Object.assign({},o.start),end:Object.assign({},s.end)},e[n][1].end=Object.assign({},o.start),e[r][1].start=Object.assign({},s.end),l=[],e[n][1].end.offset-e[n][1].start.offset&&(l=Jt(l,[["enter",e[n][1],t],["exit",e[n][1],t]])),l=Jt(l,[["enter",i,t],["enter",o,t],["exit",o,t],["enter",a,t]]),l=Jt(l,Ri(t.parser.constructs.insideSpan.null,e.slice(n+1,r),t)),l=Jt(l,[["exit",a,t],["enter",s,t],["exit",s,t],["exit",i,t]]),e[r][1].end.offset-e[r][1].start.offset?(c=2,l=Jt(l,[["enter",e[r][1],t],["exit",e[r][1],t]])):c=0,Nt(e,n-1,r-n+3,l),r=n+l.length-c-2;break}}for(r=-1;++r",Gamma:"\u0393",Gammad:"\u03DC",Gbreve:"\u011E",Gcedil:"\u0122",Gcirc:"\u011C",Gcy:"\u0413",Gdot:"\u0120",Gfr:"\u{1D50A}",Gg:"\u22D9",Gopf:"\u{1D53E}",GreaterEqual:"\u2265",GreaterEqualLess:"\u22DB",GreaterFullEqual:"\u2267",GreaterGreater:"\u2AA2",GreaterLess:"\u2277",GreaterSlantEqual:"\u2A7E",GreaterTilde:"\u2273",Gscr:"\u{1D4A2}",Gt:"\u226B",HARDcy:"\u042A",Hacek:"\u02C7",Hat:"^",Hcirc:"\u0124",Hfr:"\u210C",HilbertSpace:"\u210B",Hopf:"\u210D",HorizontalLine:"\u2500",Hscr:"\u210B",Hstrok:"\u0126",HumpDownHump:"\u224E",HumpEqual:"\u224F",IEcy:"\u0415",IJlig:"\u0132",IOcy:"\u0401",Iacute:"\xCD",Icirc:"\xCE",Icy:"\u0418",Idot:"\u0130",Ifr:"\u2111",Igrave:"\xCC",Im:"\u2111",Imacr:"\u012A",ImaginaryI:"\u2148",Implies:"\u21D2",Int:"\u222C",Integral:"\u222B",Intersection:"\u22C2",InvisibleComma:"\u2063",InvisibleTimes:"\u2062",Iogon:"\u012E",Iopf:"\u{1D540}",Iota:"\u0399",Iscr:"\u2110",Itilde:"\u0128",Iukcy:"\u0406",Iuml:"\xCF",Jcirc:"\u0134",Jcy:"\u0419",Jfr:"\u{1D50D}",Jopf:"\u{1D541}",Jscr:"\u{1D4A5}",Jsercy:"\u0408",Jukcy:"\u0404",KHcy:"\u0425",KJcy:"\u040C",Kappa:"\u039A",Kcedil:"\u0136",Kcy:"\u041A",Kfr:"\u{1D50E}",Kopf:"\u{1D542}",Kscr:"\u{1D4A6}",LJcy:"\u0409",LT:"<",Lacute:"\u0139",Lambda:"\u039B",Lang:"\u27EA",Laplacetrf:"\u2112",Larr:"\u219E",Lcaron:"\u013D",Lcedil:"\u013B",Lcy:"\u041B",LeftAngleBracket:"\u27E8",LeftArrow:"\u2190",LeftArrowBar:"\u21E4",LeftArrowRightArrow:"\u21C6",LeftCeiling:"\u2308",LeftDoubleBracket:"\u27E6",LeftDownTeeVector:"\u2961",LeftDownVector:"\u21C3",LeftDownVectorBar:"\u2959",LeftFloor:"\u230A",LeftRightArrow:"\u2194",LeftRightVector:"\u294E",LeftTee:"\u22A3",LeftTeeArrow:"\u21A4",LeftTeeVector:"\u295A",LeftTriangle:"\u22B2",LeftTriangleBar:"\u29CF",LeftTriangleEqual:"\u22B4",LeftUpDownVector:"\u2951",LeftUpTeeVector:"\u2960",LeftUpVector:"\u21BF",LeftUpVectorBar:"\u2958",LeftVector:"\u21BC",LeftVectorBar:"\u2952",Leftarrow:"\u21D0",Leftrightarrow:"\u21D4",LessEqualGreater:"\u22DA",LessFullEqual:"\u2266",LessGreater:"\u2276",LessLess:"\u2AA1",LessSlantEqual:"\u2A7D",LessTilde:"\u2272",Lfr:"\u{1D50F}",Ll:"\u22D8",Lleftarrow:"\u21DA",Lmidot:"\u013F",LongLeftArrow:"\u27F5",LongLeftRightArrow:"\u27F7",LongRightArrow:"\u27F6",Longleftarrow:"\u27F8",Longleftrightarrow:"\u27FA",Longrightarrow:"\u27F9",Lopf:"\u{1D543}",LowerLeftArrow:"\u2199",LowerRightArrow:"\u2198",Lscr:"\u2112",Lsh:"\u21B0",Lstrok:"\u0141",Lt:"\u226A",Map:"\u2905",Mcy:"\u041C",MediumSpace:"\u205F",Mellintrf:"\u2133",Mfr:"\u{1D510}",MinusPlus:"\u2213",Mopf:"\u{1D544}",Mscr:"\u2133",Mu:"\u039C",NJcy:"\u040A",Nacute:"\u0143",Ncaron:"\u0147",Ncedil:"\u0145",Ncy:"\u041D",NegativeMediumSpace:"\u200B",NegativeThickSpace:"\u200B",NegativeThinSpace:"\u200B",NegativeVeryThinSpace:"\u200B",NestedGreaterGreater:"\u226B",NestedLessLess:"\u226A",NewLine:` +`,Nfr:"\u{1D511}",NoBreak:"\u2060",NonBreakingSpace:"\xA0",Nopf:"\u2115",Not:"\u2AEC",NotCongruent:"\u2262",NotCupCap:"\u226D",NotDoubleVerticalBar:"\u2226",NotElement:"\u2209",NotEqual:"\u2260",NotEqualTilde:"\u2242\u0338",NotExists:"\u2204",NotGreater:"\u226F",NotGreaterEqual:"\u2271",NotGreaterFullEqual:"\u2267\u0338",NotGreaterGreater:"\u226B\u0338",NotGreaterLess:"\u2279",NotGreaterSlantEqual:"\u2A7E\u0338",NotGreaterTilde:"\u2275",NotHumpDownHump:"\u224E\u0338",NotHumpEqual:"\u224F\u0338",NotLeftTriangle:"\u22EA",NotLeftTriangleBar:"\u29CF\u0338",NotLeftTriangleEqual:"\u22EC",NotLess:"\u226E",NotLessEqual:"\u2270",NotLessGreater:"\u2278",NotLessLess:"\u226A\u0338",NotLessSlantEqual:"\u2A7D\u0338",NotLessTilde:"\u2274",NotNestedGreaterGreater:"\u2AA2\u0338",NotNestedLessLess:"\u2AA1\u0338",NotPrecedes:"\u2280",NotPrecedesEqual:"\u2AAF\u0338",NotPrecedesSlantEqual:"\u22E0",NotReverseElement:"\u220C",NotRightTriangle:"\u22EB",NotRightTriangleBar:"\u29D0\u0338",NotRightTriangleEqual:"\u22ED",NotSquareSubset:"\u228F\u0338",NotSquareSubsetEqual:"\u22E2",NotSquareSuperset:"\u2290\u0338",NotSquareSupersetEqual:"\u22E3",NotSubset:"\u2282\u20D2",NotSubsetEqual:"\u2288",NotSucceeds:"\u2281",NotSucceedsEqual:"\u2AB0\u0338",NotSucceedsSlantEqual:"\u22E1",NotSucceedsTilde:"\u227F\u0338",NotSuperset:"\u2283\u20D2",NotSupersetEqual:"\u2289",NotTilde:"\u2241",NotTildeEqual:"\u2244",NotTildeFullEqual:"\u2247",NotTildeTilde:"\u2249",NotVerticalBar:"\u2224",Nscr:"\u{1D4A9}",Ntilde:"\xD1",Nu:"\u039D",OElig:"\u0152",Oacute:"\xD3",Ocirc:"\xD4",Ocy:"\u041E",Odblac:"\u0150",Ofr:"\u{1D512}",Ograve:"\xD2",Omacr:"\u014C",Omega:"\u03A9",Omicron:"\u039F",Oopf:"\u{1D546}",OpenCurlyDoubleQuote:"\u201C",OpenCurlyQuote:"\u2018",Or:"\u2A54",Oscr:"\u{1D4AA}",Oslash:"\xD8",Otilde:"\xD5",Otimes:"\u2A37",Ouml:"\xD6",OverBar:"\u203E",OverBrace:"\u23DE",OverBracket:"\u23B4",OverParenthesis:"\u23DC",PartialD:"\u2202",Pcy:"\u041F",Pfr:"\u{1D513}",Phi:"\u03A6",Pi:"\u03A0",PlusMinus:"\xB1",Poincareplane:"\u210C",Popf:"\u2119",Pr:"\u2ABB",Precedes:"\u227A",PrecedesEqual:"\u2AAF",PrecedesSlantEqual:"\u227C",PrecedesTilde:"\u227E",Prime:"\u2033",Product:"\u220F",Proportion:"\u2237",Proportional:"\u221D",Pscr:"\u{1D4AB}",Psi:"\u03A8",QUOT:'"',Qfr:"\u{1D514}",Qopf:"\u211A",Qscr:"\u{1D4AC}",RBarr:"\u2910",REG:"\xAE",Racute:"\u0154",Rang:"\u27EB",Rarr:"\u21A0",Rarrtl:"\u2916",Rcaron:"\u0158",Rcedil:"\u0156",Rcy:"\u0420",Re:"\u211C",ReverseElement:"\u220B",ReverseEquilibrium:"\u21CB",ReverseUpEquilibrium:"\u296F",Rfr:"\u211C",Rho:"\u03A1",RightAngleBracket:"\u27E9",RightArrow:"\u2192",RightArrowBar:"\u21E5",RightArrowLeftArrow:"\u21C4",RightCeiling:"\u2309",RightDoubleBracket:"\u27E7",RightDownTeeVector:"\u295D",RightDownVector:"\u21C2",RightDownVectorBar:"\u2955",RightFloor:"\u230B",RightTee:"\u22A2",RightTeeArrow:"\u21A6",RightTeeVector:"\u295B",RightTriangle:"\u22B3",RightTriangleBar:"\u29D0",RightTriangleEqual:"\u22B5",RightUpDownVector:"\u294F",RightUpTeeVector:"\u295C",RightUpVector:"\u21BE",RightUpVectorBar:"\u2954",RightVector:"\u21C0",RightVectorBar:"\u2953",Rightarrow:"\u21D2",Ropf:"\u211D",RoundImplies:"\u2970",Rrightarrow:"\u21DB",Rscr:"\u211B",Rsh:"\u21B1",RuleDelayed:"\u29F4",SHCHcy:"\u0429",SHcy:"\u0428",SOFTcy:"\u042C",Sacute:"\u015A",Sc:"\u2ABC",Scaron:"\u0160",Scedil:"\u015E",Scirc:"\u015C",Scy:"\u0421",Sfr:"\u{1D516}",ShortDownArrow:"\u2193",ShortLeftArrow:"\u2190",ShortRightArrow:"\u2192",ShortUpArrow:"\u2191",Sigma:"\u03A3",SmallCircle:"\u2218",Sopf:"\u{1D54A}",Sqrt:"\u221A",Square:"\u25A1",SquareIntersection:"\u2293",SquareSubset:"\u228F",SquareSubsetEqual:"\u2291",SquareSuperset:"\u2290",SquareSupersetEqual:"\u2292",SquareUnion:"\u2294",Sscr:"\u{1D4AE}",Star:"\u22C6",Sub:"\u22D0",Subset:"\u22D0",SubsetEqual:"\u2286",Succeeds:"\u227B",SucceedsEqual:"\u2AB0",SucceedsSlantEqual:"\u227D",SucceedsTilde:"\u227F",SuchThat:"\u220B",Sum:"\u2211",Sup:"\u22D1",Superset:"\u2283",SupersetEqual:"\u2287",Supset:"\u22D1",THORN:"\xDE",TRADE:"\u2122",TSHcy:"\u040B",TScy:"\u0426",Tab:" ",Tau:"\u03A4",Tcaron:"\u0164",Tcedil:"\u0162",Tcy:"\u0422",Tfr:"\u{1D517}",Therefore:"\u2234",Theta:"\u0398",ThickSpace:"\u205F\u200A",ThinSpace:"\u2009",Tilde:"\u223C",TildeEqual:"\u2243",TildeFullEqual:"\u2245",TildeTilde:"\u2248",Topf:"\u{1D54B}",TripleDot:"\u20DB",Tscr:"\u{1D4AF}",Tstrok:"\u0166",Uacute:"\xDA",Uarr:"\u219F",Uarrocir:"\u2949",Ubrcy:"\u040E",Ubreve:"\u016C",Ucirc:"\xDB",Ucy:"\u0423",Udblac:"\u0170",Ufr:"\u{1D518}",Ugrave:"\xD9",Umacr:"\u016A",UnderBar:"_",UnderBrace:"\u23DF",UnderBracket:"\u23B5",UnderParenthesis:"\u23DD",Union:"\u22C3",UnionPlus:"\u228E",Uogon:"\u0172",Uopf:"\u{1D54C}",UpArrow:"\u2191",UpArrowBar:"\u2912",UpArrowDownArrow:"\u21C5",UpDownArrow:"\u2195",UpEquilibrium:"\u296E",UpTee:"\u22A5",UpTeeArrow:"\u21A5",Uparrow:"\u21D1",Updownarrow:"\u21D5",UpperLeftArrow:"\u2196",UpperRightArrow:"\u2197",Upsi:"\u03D2",Upsilon:"\u03A5",Uring:"\u016E",Uscr:"\u{1D4B0}",Utilde:"\u0168",Uuml:"\xDC",VDash:"\u22AB",Vbar:"\u2AEB",Vcy:"\u0412",Vdash:"\u22A9",Vdashl:"\u2AE6",Vee:"\u22C1",Verbar:"\u2016",Vert:"\u2016",VerticalBar:"\u2223",VerticalLine:"|",VerticalSeparator:"\u2758",VerticalTilde:"\u2240",VeryThinSpace:"\u200A",Vfr:"\u{1D519}",Vopf:"\u{1D54D}",Vscr:"\u{1D4B1}",Vvdash:"\u22AA",Wcirc:"\u0174",Wedge:"\u22C0",Wfr:"\u{1D51A}",Wopf:"\u{1D54E}",Wscr:"\u{1D4B2}",Xfr:"\u{1D51B}",Xi:"\u039E",Xopf:"\u{1D54F}",Xscr:"\u{1D4B3}",YAcy:"\u042F",YIcy:"\u0407",YUcy:"\u042E",Yacute:"\xDD",Ycirc:"\u0176",Ycy:"\u042B",Yfr:"\u{1D51C}",Yopf:"\u{1D550}",Yscr:"\u{1D4B4}",Yuml:"\u0178",ZHcy:"\u0416",Zacute:"\u0179",Zcaron:"\u017D",Zcy:"\u0417",Zdot:"\u017B",ZeroWidthSpace:"\u200B",Zeta:"\u0396",Zfr:"\u2128",Zopf:"\u2124",Zscr:"\u{1D4B5}",aacute:"\xE1",abreve:"\u0103",ac:"\u223E",acE:"\u223E\u0333",acd:"\u223F",acirc:"\xE2",acute:"\xB4",acy:"\u0430",aelig:"\xE6",af:"\u2061",afr:"\u{1D51E}",agrave:"\xE0",alefsym:"\u2135",aleph:"\u2135",alpha:"\u03B1",amacr:"\u0101",amalg:"\u2A3F",amp:"&",and:"\u2227",andand:"\u2A55",andd:"\u2A5C",andslope:"\u2A58",andv:"\u2A5A",ang:"\u2220",ange:"\u29A4",angle:"\u2220",angmsd:"\u2221",angmsdaa:"\u29A8",angmsdab:"\u29A9",angmsdac:"\u29AA",angmsdad:"\u29AB",angmsdae:"\u29AC",angmsdaf:"\u29AD",angmsdag:"\u29AE",angmsdah:"\u29AF",angrt:"\u221F",angrtvb:"\u22BE",angrtvbd:"\u299D",angsph:"\u2222",angst:"\xC5",angzarr:"\u237C",aogon:"\u0105",aopf:"\u{1D552}",ap:"\u2248",apE:"\u2A70",apacir:"\u2A6F",ape:"\u224A",apid:"\u224B",apos:"'",approx:"\u2248",approxeq:"\u224A",aring:"\xE5",ascr:"\u{1D4B6}",ast:"*",asymp:"\u2248",asympeq:"\u224D",atilde:"\xE3",auml:"\xE4",awconint:"\u2233",awint:"\u2A11",bNot:"\u2AED",backcong:"\u224C",backepsilon:"\u03F6",backprime:"\u2035",backsim:"\u223D",backsimeq:"\u22CD",barvee:"\u22BD",barwed:"\u2305",barwedge:"\u2305",bbrk:"\u23B5",bbrktbrk:"\u23B6",bcong:"\u224C",bcy:"\u0431",bdquo:"\u201E",becaus:"\u2235",because:"\u2235",bemptyv:"\u29B0",bepsi:"\u03F6",bernou:"\u212C",beta:"\u03B2",beth:"\u2136",between:"\u226C",bfr:"\u{1D51F}",bigcap:"\u22C2",bigcirc:"\u25EF",bigcup:"\u22C3",bigodot:"\u2A00",bigoplus:"\u2A01",bigotimes:"\u2A02",bigsqcup:"\u2A06",bigstar:"\u2605",bigtriangledown:"\u25BD",bigtriangleup:"\u25B3",biguplus:"\u2A04",bigvee:"\u22C1",bigwedge:"\u22C0",bkarow:"\u290D",blacklozenge:"\u29EB",blacksquare:"\u25AA",blacktriangle:"\u25B4",blacktriangledown:"\u25BE",blacktriangleleft:"\u25C2",blacktriangleright:"\u25B8",blank:"\u2423",blk12:"\u2592",blk14:"\u2591",blk34:"\u2593",block:"\u2588",bne:"=\u20E5",bnequiv:"\u2261\u20E5",bnot:"\u2310",bopf:"\u{1D553}",bot:"\u22A5",bottom:"\u22A5",bowtie:"\u22C8",boxDL:"\u2557",boxDR:"\u2554",boxDl:"\u2556",boxDr:"\u2553",boxH:"\u2550",boxHD:"\u2566",boxHU:"\u2569",boxHd:"\u2564",boxHu:"\u2567",boxUL:"\u255D",boxUR:"\u255A",boxUl:"\u255C",boxUr:"\u2559",boxV:"\u2551",boxVH:"\u256C",boxVL:"\u2563",boxVR:"\u2560",boxVh:"\u256B",boxVl:"\u2562",boxVr:"\u255F",boxbox:"\u29C9",boxdL:"\u2555",boxdR:"\u2552",boxdl:"\u2510",boxdr:"\u250C",boxh:"\u2500",boxhD:"\u2565",boxhU:"\u2568",boxhd:"\u252C",boxhu:"\u2534",boxminus:"\u229F",boxplus:"\u229E",boxtimes:"\u22A0",boxuL:"\u255B",boxuR:"\u2558",boxul:"\u2518",boxur:"\u2514",boxv:"\u2502",boxvH:"\u256A",boxvL:"\u2561",boxvR:"\u255E",boxvh:"\u253C",boxvl:"\u2524",boxvr:"\u251C",bprime:"\u2035",breve:"\u02D8",brvbar:"\xA6",bscr:"\u{1D4B7}",bsemi:"\u204F",bsim:"\u223D",bsime:"\u22CD",bsol:"\\",bsolb:"\u29C5",bsolhsub:"\u27C8",bull:"\u2022",bullet:"\u2022",bump:"\u224E",bumpE:"\u2AAE",bumpe:"\u224F",bumpeq:"\u224F",cacute:"\u0107",cap:"\u2229",capand:"\u2A44",capbrcup:"\u2A49",capcap:"\u2A4B",capcup:"\u2A47",capdot:"\u2A40",caps:"\u2229\uFE00",caret:"\u2041",caron:"\u02C7",ccaps:"\u2A4D",ccaron:"\u010D",ccedil:"\xE7",ccirc:"\u0109",ccups:"\u2A4C",ccupssm:"\u2A50",cdot:"\u010B",cedil:"\xB8",cemptyv:"\u29B2",cent:"\xA2",centerdot:"\xB7",cfr:"\u{1D520}",chcy:"\u0447",check:"\u2713",checkmark:"\u2713",chi:"\u03C7",cir:"\u25CB",cirE:"\u29C3",circ:"\u02C6",circeq:"\u2257",circlearrowleft:"\u21BA",circlearrowright:"\u21BB",circledR:"\xAE",circledS:"\u24C8",circledast:"\u229B",circledcirc:"\u229A",circleddash:"\u229D",cire:"\u2257",cirfnint:"\u2A10",cirmid:"\u2AEF",cirscir:"\u29C2",clubs:"\u2663",clubsuit:"\u2663",colon:":",colone:"\u2254",coloneq:"\u2254",comma:",",commat:"@",comp:"\u2201",compfn:"\u2218",complement:"\u2201",complexes:"\u2102",cong:"\u2245",congdot:"\u2A6D",conint:"\u222E",copf:"\u{1D554}",coprod:"\u2210",copy:"\xA9",copysr:"\u2117",crarr:"\u21B5",cross:"\u2717",cscr:"\u{1D4B8}",csub:"\u2ACF",csube:"\u2AD1",csup:"\u2AD0",csupe:"\u2AD2",ctdot:"\u22EF",cudarrl:"\u2938",cudarrr:"\u2935",cuepr:"\u22DE",cuesc:"\u22DF",cularr:"\u21B6",cularrp:"\u293D",cup:"\u222A",cupbrcap:"\u2A48",cupcap:"\u2A46",cupcup:"\u2A4A",cupdot:"\u228D",cupor:"\u2A45",cups:"\u222A\uFE00",curarr:"\u21B7",curarrm:"\u293C",curlyeqprec:"\u22DE",curlyeqsucc:"\u22DF",curlyvee:"\u22CE",curlywedge:"\u22CF",curren:"\xA4",curvearrowleft:"\u21B6",curvearrowright:"\u21B7",cuvee:"\u22CE",cuwed:"\u22CF",cwconint:"\u2232",cwint:"\u2231",cylcty:"\u232D",dArr:"\u21D3",dHar:"\u2965",dagger:"\u2020",daleth:"\u2138",darr:"\u2193",dash:"\u2010",dashv:"\u22A3",dbkarow:"\u290F",dblac:"\u02DD",dcaron:"\u010F",dcy:"\u0434",dd:"\u2146",ddagger:"\u2021",ddarr:"\u21CA",ddotseq:"\u2A77",deg:"\xB0",delta:"\u03B4",demptyv:"\u29B1",dfisht:"\u297F",dfr:"\u{1D521}",dharl:"\u21C3",dharr:"\u21C2",diam:"\u22C4",diamond:"\u22C4",diamondsuit:"\u2666",diams:"\u2666",die:"\xA8",digamma:"\u03DD",disin:"\u22F2",div:"\xF7",divide:"\xF7",divideontimes:"\u22C7",divonx:"\u22C7",djcy:"\u0452",dlcorn:"\u231E",dlcrop:"\u230D",dollar:"$",dopf:"\u{1D555}",dot:"\u02D9",doteq:"\u2250",doteqdot:"\u2251",dotminus:"\u2238",dotplus:"\u2214",dotsquare:"\u22A1",doublebarwedge:"\u2306",downarrow:"\u2193",downdownarrows:"\u21CA",downharpoonleft:"\u21C3",downharpoonright:"\u21C2",drbkarow:"\u2910",drcorn:"\u231F",drcrop:"\u230C",dscr:"\u{1D4B9}",dscy:"\u0455",dsol:"\u29F6",dstrok:"\u0111",dtdot:"\u22F1",dtri:"\u25BF",dtrif:"\u25BE",duarr:"\u21F5",duhar:"\u296F",dwangle:"\u29A6",dzcy:"\u045F",dzigrarr:"\u27FF",eDDot:"\u2A77",eDot:"\u2251",eacute:"\xE9",easter:"\u2A6E",ecaron:"\u011B",ecir:"\u2256",ecirc:"\xEA",ecolon:"\u2255",ecy:"\u044D",edot:"\u0117",ee:"\u2147",efDot:"\u2252",efr:"\u{1D522}",eg:"\u2A9A",egrave:"\xE8",egs:"\u2A96",egsdot:"\u2A98",el:"\u2A99",elinters:"\u23E7",ell:"\u2113",els:"\u2A95",elsdot:"\u2A97",emacr:"\u0113",empty:"\u2205",emptyset:"\u2205",emptyv:"\u2205",emsp13:"\u2004",emsp14:"\u2005",emsp:"\u2003",eng:"\u014B",ensp:"\u2002",eogon:"\u0119",eopf:"\u{1D556}",epar:"\u22D5",eparsl:"\u29E3",eplus:"\u2A71",epsi:"\u03B5",epsilon:"\u03B5",epsiv:"\u03F5",eqcirc:"\u2256",eqcolon:"\u2255",eqsim:"\u2242",eqslantgtr:"\u2A96",eqslantless:"\u2A95",equals:"=",equest:"\u225F",equiv:"\u2261",equivDD:"\u2A78",eqvparsl:"\u29E5",erDot:"\u2253",erarr:"\u2971",escr:"\u212F",esdot:"\u2250",esim:"\u2242",eta:"\u03B7",eth:"\xF0",euml:"\xEB",euro:"\u20AC",excl:"!",exist:"\u2203",expectation:"\u2130",exponentiale:"\u2147",fallingdotseq:"\u2252",fcy:"\u0444",female:"\u2640",ffilig:"\uFB03",fflig:"\uFB00",ffllig:"\uFB04",ffr:"\u{1D523}",filig:"\uFB01",fjlig:"fj",flat:"\u266D",fllig:"\uFB02",fltns:"\u25B1",fnof:"\u0192",fopf:"\u{1D557}",forall:"\u2200",fork:"\u22D4",forkv:"\u2AD9",fpartint:"\u2A0D",frac12:"\xBD",frac13:"\u2153",frac14:"\xBC",frac15:"\u2155",frac16:"\u2159",frac18:"\u215B",frac23:"\u2154",frac25:"\u2156",frac34:"\xBE",frac35:"\u2157",frac38:"\u215C",frac45:"\u2158",frac56:"\u215A",frac58:"\u215D",frac78:"\u215E",frasl:"\u2044",frown:"\u2322",fscr:"\u{1D4BB}",gE:"\u2267",gEl:"\u2A8C",gacute:"\u01F5",gamma:"\u03B3",gammad:"\u03DD",gap:"\u2A86",gbreve:"\u011F",gcirc:"\u011D",gcy:"\u0433",gdot:"\u0121",ge:"\u2265",gel:"\u22DB",geq:"\u2265",geqq:"\u2267",geqslant:"\u2A7E",ges:"\u2A7E",gescc:"\u2AA9",gesdot:"\u2A80",gesdoto:"\u2A82",gesdotol:"\u2A84",gesl:"\u22DB\uFE00",gesles:"\u2A94",gfr:"\u{1D524}",gg:"\u226B",ggg:"\u22D9",gimel:"\u2137",gjcy:"\u0453",gl:"\u2277",glE:"\u2A92",gla:"\u2AA5",glj:"\u2AA4",gnE:"\u2269",gnap:"\u2A8A",gnapprox:"\u2A8A",gne:"\u2A88",gneq:"\u2A88",gneqq:"\u2269",gnsim:"\u22E7",gopf:"\u{1D558}",grave:"`",gscr:"\u210A",gsim:"\u2273",gsime:"\u2A8E",gsiml:"\u2A90",gt:">",gtcc:"\u2AA7",gtcir:"\u2A7A",gtdot:"\u22D7",gtlPar:"\u2995",gtquest:"\u2A7C",gtrapprox:"\u2A86",gtrarr:"\u2978",gtrdot:"\u22D7",gtreqless:"\u22DB",gtreqqless:"\u2A8C",gtrless:"\u2277",gtrsim:"\u2273",gvertneqq:"\u2269\uFE00",gvnE:"\u2269\uFE00",hArr:"\u21D4",hairsp:"\u200A",half:"\xBD",hamilt:"\u210B",hardcy:"\u044A",harr:"\u2194",harrcir:"\u2948",harrw:"\u21AD",hbar:"\u210F",hcirc:"\u0125",hearts:"\u2665",heartsuit:"\u2665",hellip:"\u2026",hercon:"\u22B9",hfr:"\u{1D525}",hksearow:"\u2925",hkswarow:"\u2926",hoarr:"\u21FF",homtht:"\u223B",hookleftarrow:"\u21A9",hookrightarrow:"\u21AA",hopf:"\u{1D559}",horbar:"\u2015",hscr:"\u{1D4BD}",hslash:"\u210F",hstrok:"\u0127",hybull:"\u2043",hyphen:"\u2010",iacute:"\xED",ic:"\u2063",icirc:"\xEE",icy:"\u0438",iecy:"\u0435",iexcl:"\xA1",iff:"\u21D4",ifr:"\u{1D526}",igrave:"\xEC",ii:"\u2148",iiiint:"\u2A0C",iiint:"\u222D",iinfin:"\u29DC",iiota:"\u2129",ijlig:"\u0133",imacr:"\u012B",image:"\u2111",imagline:"\u2110",imagpart:"\u2111",imath:"\u0131",imof:"\u22B7",imped:"\u01B5",in:"\u2208",incare:"\u2105",infin:"\u221E",infintie:"\u29DD",inodot:"\u0131",int:"\u222B",intcal:"\u22BA",integers:"\u2124",intercal:"\u22BA",intlarhk:"\u2A17",intprod:"\u2A3C",iocy:"\u0451",iogon:"\u012F",iopf:"\u{1D55A}",iota:"\u03B9",iprod:"\u2A3C",iquest:"\xBF",iscr:"\u{1D4BE}",isin:"\u2208",isinE:"\u22F9",isindot:"\u22F5",isins:"\u22F4",isinsv:"\u22F3",isinv:"\u2208",it:"\u2062",itilde:"\u0129",iukcy:"\u0456",iuml:"\xEF",jcirc:"\u0135",jcy:"\u0439",jfr:"\u{1D527}",jmath:"\u0237",jopf:"\u{1D55B}",jscr:"\u{1D4BF}",jsercy:"\u0458",jukcy:"\u0454",kappa:"\u03BA",kappav:"\u03F0",kcedil:"\u0137",kcy:"\u043A",kfr:"\u{1D528}",kgreen:"\u0138",khcy:"\u0445",kjcy:"\u045C",kopf:"\u{1D55C}",kscr:"\u{1D4C0}",lAarr:"\u21DA",lArr:"\u21D0",lAtail:"\u291B",lBarr:"\u290E",lE:"\u2266",lEg:"\u2A8B",lHar:"\u2962",lacute:"\u013A",laemptyv:"\u29B4",lagran:"\u2112",lambda:"\u03BB",lang:"\u27E8",langd:"\u2991",langle:"\u27E8",lap:"\u2A85",laquo:"\xAB",larr:"\u2190",larrb:"\u21E4",larrbfs:"\u291F",larrfs:"\u291D",larrhk:"\u21A9",larrlp:"\u21AB",larrpl:"\u2939",larrsim:"\u2973",larrtl:"\u21A2",lat:"\u2AAB",latail:"\u2919",late:"\u2AAD",lates:"\u2AAD\uFE00",lbarr:"\u290C",lbbrk:"\u2772",lbrace:"{",lbrack:"[",lbrke:"\u298B",lbrksld:"\u298F",lbrkslu:"\u298D",lcaron:"\u013E",lcedil:"\u013C",lceil:"\u2308",lcub:"{",lcy:"\u043B",ldca:"\u2936",ldquo:"\u201C",ldquor:"\u201E",ldrdhar:"\u2967",ldrushar:"\u294B",ldsh:"\u21B2",le:"\u2264",leftarrow:"\u2190",leftarrowtail:"\u21A2",leftharpoondown:"\u21BD",leftharpoonup:"\u21BC",leftleftarrows:"\u21C7",leftrightarrow:"\u2194",leftrightarrows:"\u21C6",leftrightharpoons:"\u21CB",leftrightsquigarrow:"\u21AD",leftthreetimes:"\u22CB",leg:"\u22DA",leq:"\u2264",leqq:"\u2266",leqslant:"\u2A7D",les:"\u2A7D",lescc:"\u2AA8",lesdot:"\u2A7F",lesdoto:"\u2A81",lesdotor:"\u2A83",lesg:"\u22DA\uFE00",lesges:"\u2A93",lessapprox:"\u2A85",lessdot:"\u22D6",lesseqgtr:"\u22DA",lesseqqgtr:"\u2A8B",lessgtr:"\u2276",lesssim:"\u2272",lfisht:"\u297C",lfloor:"\u230A",lfr:"\u{1D529}",lg:"\u2276",lgE:"\u2A91",lhard:"\u21BD",lharu:"\u21BC",lharul:"\u296A",lhblk:"\u2584",ljcy:"\u0459",ll:"\u226A",llarr:"\u21C7",llcorner:"\u231E",llhard:"\u296B",lltri:"\u25FA",lmidot:"\u0140",lmoust:"\u23B0",lmoustache:"\u23B0",lnE:"\u2268",lnap:"\u2A89",lnapprox:"\u2A89",lne:"\u2A87",lneq:"\u2A87",lneqq:"\u2268",lnsim:"\u22E6",loang:"\u27EC",loarr:"\u21FD",lobrk:"\u27E6",longleftarrow:"\u27F5",longleftrightarrow:"\u27F7",longmapsto:"\u27FC",longrightarrow:"\u27F6",looparrowleft:"\u21AB",looparrowright:"\u21AC",lopar:"\u2985",lopf:"\u{1D55D}",loplus:"\u2A2D",lotimes:"\u2A34",lowast:"\u2217",lowbar:"_",loz:"\u25CA",lozenge:"\u25CA",lozf:"\u29EB",lpar:"(",lparlt:"\u2993",lrarr:"\u21C6",lrcorner:"\u231F",lrhar:"\u21CB",lrhard:"\u296D",lrm:"\u200E",lrtri:"\u22BF",lsaquo:"\u2039",lscr:"\u{1D4C1}",lsh:"\u21B0",lsim:"\u2272",lsime:"\u2A8D",lsimg:"\u2A8F",lsqb:"[",lsquo:"\u2018",lsquor:"\u201A",lstrok:"\u0142",lt:"<",ltcc:"\u2AA6",ltcir:"\u2A79",ltdot:"\u22D6",lthree:"\u22CB",ltimes:"\u22C9",ltlarr:"\u2976",ltquest:"\u2A7B",ltrPar:"\u2996",ltri:"\u25C3",ltrie:"\u22B4",ltrif:"\u25C2",lurdshar:"\u294A",luruhar:"\u2966",lvertneqq:"\u2268\uFE00",lvnE:"\u2268\uFE00",mDDot:"\u223A",macr:"\xAF",male:"\u2642",malt:"\u2720",maltese:"\u2720",map:"\u21A6",mapsto:"\u21A6",mapstodown:"\u21A7",mapstoleft:"\u21A4",mapstoup:"\u21A5",marker:"\u25AE",mcomma:"\u2A29",mcy:"\u043C",mdash:"\u2014",measuredangle:"\u2221",mfr:"\u{1D52A}",mho:"\u2127",micro:"\xB5",mid:"\u2223",midast:"*",midcir:"\u2AF0",middot:"\xB7",minus:"\u2212",minusb:"\u229F",minusd:"\u2238",minusdu:"\u2A2A",mlcp:"\u2ADB",mldr:"\u2026",mnplus:"\u2213",models:"\u22A7",mopf:"\u{1D55E}",mp:"\u2213",mscr:"\u{1D4C2}",mstpos:"\u223E",mu:"\u03BC",multimap:"\u22B8",mumap:"\u22B8",nGg:"\u22D9\u0338",nGt:"\u226B\u20D2",nGtv:"\u226B\u0338",nLeftarrow:"\u21CD",nLeftrightarrow:"\u21CE",nLl:"\u22D8\u0338",nLt:"\u226A\u20D2",nLtv:"\u226A\u0338",nRightarrow:"\u21CF",nVDash:"\u22AF",nVdash:"\u22AE",nabla:"\u2207",nacute:"\u0144",nang:"\u2220\u20D2",nap:"\u2249",napE:"\u2A70\u0338",napid:"\u224B\u0338",napos:"\u0149",napprox:"\u2249",natur:"\u266E",natural:"\u266E",naturals:"\u2115",nbsp:"\xA0",nbump:"\u224E\u0338",nbumpe:"\u224F\u0338",ncap:"\u2A43",ncaron:"\u0148",ncedil:"\u0146",ncong:"\u2247",ncongdot:"\u2A6D\u0338",ncup:"\u2A42",ncy:"\u043D",ndash:"\u2013",ne:"\u2260",neArr:"\u21D7",nearhk:"\u2924",nearr:"\u2197",nearrow:"\u2197",nedot:"\u2250\u0338",nequiv:"\u2262",nesear:"\u2928",nesim:"\u2242\u0338",nexist:"\u2204",nexists:"\u2204",nfr:"\u{1D52B}",ngE:"\u2267\u0338",nge:"\u2271",ngeq:"\u2271",ngeqq:"\u2267\u0338",ngeqslant:"\u2A7E\u0338",nges:"\u2A7E\u0338",ngsim:"\u2275",ngt:"\u226F",ngtr:"\u226F",nhArr:"\u21CE",nharr:"\u21AE",nhpar:"\u2AF2",ni:"\u220B",nis:"\u22FC",nisd:"\u22FA",niv:"\u220B",njcy:"\u045A",nlArr:"\u21CD",nlE:"\u2266\u0338",nlarr:"\u219A",nldr:"\u2025",nle:"\u2270",nleftarrow:"\u219A",nleftrightarrow:"\u21AE",nleq:"\u2270",nleqq:"\u2266\u0338",nleqslant:"\u2A7D\u0338",nles:"\u2A7D\u0338",nless:"\u226E",nlsim:"\u2274",nlt:"\u226E",nltri:"\u22EA",nltrie:"\u22EC",nmid:"\u2224",nopf:"\u{1D55F}",not:"\xAC",notin:"\u2209",notinE:"\u22F9\u0338",notindot:"\u22F5\u0338",notinva:"\u2209",notinvb:"\u22F7",notinvc:"\u22F6",notni:"\u220C",notniva:"\u220C",notnivb:"\u22FE",notnivc:"\u22FD",npar:"\u2226",nparallel:"\u2226",nparsl:"\u2AFD\u20E5",npart:"\u2202\u0338",npolint:"\u2A14",npr:"\u2280",nprcue:"\u22E0",npre:"\u2AAF\u0338",nprec:"\u2280",npreceq:"\u2AAF\u0338",nrArr:"\u21CF",nrarr:"\u219B",nrarrc:"\u2933\u0338",nrarrw:"\u219D\u0338",nrightarrow:"\u219B",nrtri:"\u22EB",nrtrie:"\u22ED",nsc:"\u2281",nsccue:"\u22E1",nsce:"\u2AB0\u0338",nscr:"\u{1D4C3}",nshortmid:"\u2224",nshortparallel:"\u2226",nsim:"\u2241",nsime:"\u2244",nsimeq:"\u2244",nsmid:"\u2224",nspar:"\u2226",nsqsube:"\u22E2",nsqsupe:"\u22E3",nsub:"\u2284",nsubE:"\u2AC5\u0338",nsube:"\u2288",nsubset:"\u2282\u20D2",nsubseteq:"\u2288",nsubseteqq:"\u2AC5\u0338",nsucc:"\u2281",nsucceq:"\u2AB0\u0338",nsup:"\u2285",nsupE:"\u2AC6\u0338",nsupe:"\u2289",nsupset:"\u2283\u20D2",nsupseteq:"\u2289",nsupseteqq:"\u2AC6\u0338",ntgl:"\u2279",ntilde:"\xF1",ntlg:"\u2278",ntriangleleft:"\u22EA",ntrianglelefteq:"\u22EC",ntriangleright:"\u22EB",ntrianglerighteq:"\u22ED",nu:"\u03BD",num:"#",numero:"\u2116",numsp:"\u2007",nvDash:"\u22AD",nvHarr:"\u2904",nvap:"\u224D\u20D2",nvdash:"\u22AC",nvge:"\u2265\u20D2",nvgt:">\u20D2",nvinfin:"\u29DE",nvlArr:"\u2902",nvle:"\u2264\u20D2",nvlt:"<\u20D2",nvltrie:"\u22B4\u20D2",nvrArr:"\u2903",nvrtrie:"\u22B5\u20D2",nvsim:"\u223C\u20D2",nwArr:"\u21D6",nwarhk:"\u2923",nwarr:"\u2196",nwarrow:"\u2196",nwnear:"\u2927",oS:"\u24C8",oacute:"\xF3",oast:"\u229B",ocir:"\u229A",ocirc:"\xF4",ocy:"\u043E",odash:"\u229D",odblac:"\u0151",odiv:"\u2A38",odot:"\u2299",odsold:"\u29BC",oelig:"\u0153",ofcir:"\u29BF",ofr:"\u{1D52C}",ogon:"\u02DB",ograve:"\xF2",ogt:"\u29C1",ohbar:"\u29B5",ohm:"\u03A9",oint:"\u222E",olarr:"\u21BA",olcir:"\u29BE",olcross:"\u29BB",oline:"\u203E",olt:"\u29C0",omacr:"\u014D",omega:"\u03C9",omicron:"\u03BF",omid:"\u29B6",ominus:"\u2296",oopf:"\u{1D560}",opar:"\u29B7",operp:"\u29B9",oplus:"\u2295",or:"\u2228",orarr:"\u21BB",ord:"\u2A5D",order:"\u2134",orderof:"\u2134",ordf:"\xAA",ordm:"\xBA",origof:"\u22B6",oror:"\u2A56",orslope:"\u2A57",orv:"\u2A5B",oscr:"\u2134",oslash:"\xF8",osol:"\u2298",otilde:"\xF5",otimes:"\u2297",otimesas:"\u2A36",ouml:"\xF6",ovbar:"\u233D",par:"\u2225",para:"\xB6",parallel:"\u2225",parsim:"\u2AF3",parsl:"\u2AFD",part:"\u2202",pcy:"\u043F",percnt:"%",period:".",permil:"\u2030",perp:"\u22A5",pertenk:"\u2031",pfr:"\u{1D52D}",phi:"\u03C6",phiv:"\u03D5",phmmat:"\u2133",phone:"\u260E",pi:"\u03C0",pitchfork:"\u22D4",piv:"\u03D6",planck:"\u210F",planckh:"\u210E",plankv:"\u210F",plus:"+",plusacir:"\u2A23",plusb:"\u229E",pluscir:"\u2A22",plusdo:"\u2214",plusdu:"\u2A25",pluse:"\u2A72",plusmn:"\xB1",plussim:"\u2A26",plustwo:"\u2A27",pm:"\xB1",pointint:"\u2A15",popf:"\u{1D561}",pound:"\xA3",pr:"\u227A",prE:"\u2AB3",prap:"\u2AB7",prcue:"\u227C",pre:"\u2AAF",prec:"\u227A",precapprox:"\u2AB7",preccurlyeq:"\u227C",preceq:"\u2AAF",precnapprox:"\u2AB9",precneqq:"\u2AB5",precnsim:"\u22E8",precsim:"\u227E",prime:"\u2032",primes:"\u2119",prnE:"\u2AB5",prnap:"\u2AB9",prnsim:"\u22E8",prod:"\u220F",profalar:"\u232E",profline:"\u2312",profsurf:"\u2313",prop:"\u221D",propto:"\u221D",prsim:"\u227E",prurel:"\u22B0",pscr:"\u{1D4C5}",psi:"\u03C8",puncsp:"\u2008",qfr:"\u{1D52E}",qint:"\u2A0C",qopf:"\u{1D562}",qprime:"\u2057",qscr:"\u{1D4C6}",quaternions:"\u210D",quatint:"\u2A16",quest:"?",questeq:"\u225F",quot:'"',rAarr:"\u21DB",rArr:"\u21D2",rAtail:"\u291C",rBarr:"\u290F",rHar:"\u2964",race:"\u223D\u0331",racute:"\u0155",radic:"\u221A",raemptyv:"\u29B3",rang:"\u27E9",rangd:"\u2992",range:"\u29A5",rangle:"\u27E9",raquo:"\xBB",rarr:"\u2192",rarrap:"\u2975",rarrb:"\u21E5",rarrbfs:"\u2920",rarrc:"\u2933",rarrfs:"\u291E",rarrhk:"\u21AA",rarrlp:"\u21AC",rarrpl:"\u2945",rarrsim:"\u2974",rarrtl:"\u21A3",rarrw:"\u219D",ratail:"\u291A",ratio:"\u2236",rationals:"\u211A",rbarr:"\u290D",rbbrk:"\u2773",rbrace:"}",rbrack:"]",rbrke:"\u298C",rbrksld:"\u298E",rbrkslu:"\u2990",rcaron:"\u0159",rcedil:"\u0157",rceil:"\u2309",rcub:"}",rcy:"\u0440",rdca:"\u2937",rdldhar:"\u2969",rdquo:"\u201D",rdquor:"\u201D",rdsh:"\u21B3",real:"\u211C",realine:"\u211B",realpart:"\u211C",reals:"\u211D",rect:"\u25AD",reg:"\xAE",rfisht:"\u297D",rfloor:"\u230B",rfr:"\u{1D52F}",rhard:"\u21C1",rharu:"\u21C0",rharul:"\u296C",rho:"\u03C1",rhov:"\u03F1",rightarrow:"\u2192",rightarrowtail:"\u21A3",rightharpoondown:"\u21C1",rightharpoonup:"\u21C0",rightleftarrows:"\u21C4",rightleftharpoons:"\u21CC",rightrightarrows:"\u21C9",rightsquigarrow:"\u219D",rightthreetimes:"\u22CC",ring:"\u02DA",risingdotseq:"\u2253",rlarr:"\u21C4",rlhar:"\u21CC",rlm:"\u200F",rmoust:"\u23B1",rmoustache:"\u23B1",rnmid:"\u2AEE",roang:"\u27ED",roarr:"\u21FE",robrk:"\u27E7",ropar:"\u2986",ropf:"\u{1D563}",roplus:"\u2A2E",rotimes:"\u2A35",rpar:")",rpargt:"\u2994",rppolint:"\u2A12",rrarr:"\u21C9",rsaquo:"\u203A",rscr:"\u{1D4C7}",rsh:"\u21B1",rsqb:"]",rsquo:"\u2019",rsquor:"\u2019",rthree:"\u22CC",rtimes:"\u22CA",rtri:"\u25B9",rtrie:"\u22B5",rtrif:"\u25B8",rtriltri:"\u29CE",ruluhar:"\u2968",rx:"\u211E",sacute:"\u015B",sbquo:"\u201A",sc:"\u227B",scE:"\u2AB4",scap:"\u2AB8",scaron:"\u0161",sccue:"\u227D",sce:"\u2AB0",scedil:"\u015F",scirc:"\u015D",scnE:"\u2AB6",scnap:"\u2ABA",scnsim:"\u22E9",scpolint:"\u2A13",scsim:"\u227F",scy:"\u0441",sdot:"\u22C5",sdotb:"\u22A1",sdote:"\u2A66",seArr:"\u21D8",searhk:"\u2925",searr:"\u2198",searrow:"\u2198",sect:"\xA7",semi:";",seswar:"\u2929",setminus:"\u2216",setmn:"\u2216",sext:"\u2736",sfr:"\u{1D530}",sfrown:"\u2322",sharp:"\u266F",shchcy:"\u0449",shcy:"\u0448",shortmid:"\u2223",shortparallel:"\u2225",shy:"\xAD",sigma:"\u03C3",sigmaf:"\u03C2",sigmav:"\u03C2",sim:"\u223C",simdot:"\u2A6A",sime:"\u2243",simeq:"\u2243",simg:"\u2A9E",simgE:"\u2AA0",siml:"\u2A9D",simlE:"\u2A9F",simne:"\u2246",simplus:"\u2A24",simrarr:"\u2972",slarr:"\u2190",smallsetminus:"\u2216",smashp:"\u2A33",smeparsl:"\u29E4",smid:"\u2223",smile:"\u2323",smt:"\u2AAA",smte:"\u2AAC",smtes:"\u2AAC\uFE00",softcy:"\u044C",sol:"/",solb:"\u29C4",solbar:"\u233F",sopf:"\u{1D564}",spades:"\u2660",spadesuit:"\u2660",spar:"\u2225",sqcap:"\u2293",sqcaps:"\u2293\uFE00",sqcup:"\u2294",sqcups:"\u2294\uFE00",sqsub:"\u228F",sqsube:"\u2291",sqsubset:"\u228F",sqsubseteq:"\u2291",sqsup:"\u2290",sqsupe:"\u2292",sqsupset:"\u2290",sqsupseteq:"\u2292",squ:"\u25A1",square:"\u25A1",squarf:"\u25AA",squf:"\u25AA",srarr:"\u2192",sscr:"\u{1D4C8}",ssetmn:"\u2216",ssmile:"\u2323",sstarf:"\u22C6",star:"\u2606",starf:"\u2605",straightepsilon:"\u03F5",straightphi:"\u03D5",strns:"\xAF",sub:"\u2282",subE:"\u2AC5",subdot:"\u2ABD",sube:"\u2286",subedot:"\u2AC3",submult:"\u2AC1",subnE:"\u2ACB",subne:"\u228A",subplus:"\u2ABF",subrarr:"\u2979",subset:"\u2282",subseteq:"\u2286",subseteqq:"\u2AC5",subsetneq:"\u228A",subsetneqq:"\u2ACB",subsim:"\u2AC7",subsub:"\u2AD5",subsup:"\u2AD3",succ:"\u227B",succapprox:"\u2AB8",succcurlyeq:"\u227D",succeq:"\u2AB0",succnapprox:"\u2ABA",succneqq:"\u2AB6",succnsim:"\u22E9",succsim:"\u227F",sum:"\u2211",sung:"\u266A",sup1:"\xB9",sup2:"\xB2",sup3:"\xB3",sup:"\u2283",supE:"\u2AC6",supdot:"\u2ABE",supdsub:"\u2AD8",supe:"\u2287",supedot:"\u2AC4",suphsol:"\u27C9",suphsub:"\u2AD7",suplarr:"\u297B",supmult:"\u2AC2",supnE:"\u2ACC",supne:"\u228B",supplus:"\u2AC0",supset:"\u2283",supseteq:"\u2287",supseteqq:"\u2AC6",supsetneq:"\u228B",supsetneqq:"\u2ACC",supsim:"\u2AC8",supsub:"\u2AD4",supsup:"\u2AD6",swArr:"\u21D9",swarhk:"\u2926",swarr:"\u2199",swarrow:"\u2199",swnwar:"\u292A",szlig:"\xDF",target:"\u2316",tau:"\u03C4",tbrk:"\u23B4",tcaron:"\u0165",tcedil:"\u0163",tcy:"\u0442",tdot:"\u20DB",telrec:"\u2315",tfr:"\u{1D531}",there4:"\u2234",therefore:"\u2234",theta:"\u03B8",thetasym:"\u03D1",thetav:"\u03D1",thickapprox:"\u2248",thicksim:"\u223C",thinsp:"\u2009",thkap:"\u2248",thksim:"\u223C",thorn:"\xFE",tilde:"\u02DC",times:"\xD7",timesb:"\u22A0",timesbar:"\u2A31",timesd:"\u2A30",tint:"\u222D",toea:"\u2928",top:"\u22A4",topbot:"\u2336",topcir:"\u2AF1",topf:"\u{1D565}",topfork:"\u2ADA",tosa:"\u2929",tprime:"\u2034",trade:"\u2122",triangle:"\u25B5",triangledown:"\u25BF",triangleleft:"\u25C3",trianglelefteq:"\u22B4",triangleq:"\u225C",triangleright:"\u25B9",trianglerighteq:"\u22B5",tridot:"\u25EC",trie:"\u225C",triminus:"\u2A3A",triplus:"\u2A39",trisb:"\u29CD",tritime:"\u2A3B",trpezium:"\u23E2",tscr:"\u{1D4C9}",tscy:"\u0446",tshcy:"\u045B",tstrok:"\u0167",twixt:"\u226C",twoheadleftarrow:"\u219E",twoheadrightarrow:"\u21A0",uArr:"\u21D1",uHar:"\u2963",uacute:"\xFA",uarr:"\u2191",ubrcy:"\u045E",ubreve:"\u016D",ucirc:"\xFB",ucy:"\u0443",udarr:"\u21C5",udblac:"\u0171",udhar:"\u296E",ufisht:"\u297E",ufr:"\u{1D532}",ugrave:"\xF9",uharl:"\u21BF",uharr:"\u21BE",uhblk:"\u2580",ulcorn:"\u231C",ulcorner:"\u231C",ulcrop:"\u230F",ultri:"\u25F8",umacr:"\u016B",uml:"\xA8",uogon:"\u0173",uopf:"\u{1D566}",uparrow:"\u2191",updownarrow:"\u2195",upharpoonleft:"\u21BF",upharpoonright:"\u21BE",uplus:"\u228E",upsi:"\u03C5",upsih:"\u03D2",upsilon:"\u03C5",upuparrows:"\u21C8",urcorn:"\u231D",urcorner:"\u231D",urcrop:"\u230E",uring:"\u016F",urtri:"\u25F9",uscr:"\u{1D4CA}",utdot:"\u22F0",utilde:"\u0169",utri:"\u25B5",utrif:"\u25B4",uuarr:"\u21C8",uuml:"\xFC",uwangle:"\u29A7",vArr:"\u21D5",vBar:"\u2AE8",vBarv:"\u2AE9",vDash:"\u22A8",vangrt:"\u299C",varepsilon:"\u03F5",varkappa:"\u03F0",varnothing:"\u2205",varphi:"\u03D5",varpi:"\u03D6",varpropto:"\u221D",varr:"\u2195",varrho:"\u03F1",varsigma:"\u03C2",varsubsetneq:"\u228A\uFE00",varsubsetneqq:"\u2ACB\uFE00",varsupsetneq:"\u228B\uFE00",varsupsetneqq:"\u2ACC\uFE00",vartheta:"\u03D1",vartriangleleft:"\u22B2",vartriangleright:"\u22B3",vcy:"\u0432",vdash:"\u22A2",vee:"\u2228",veebar:"\u22BB",veeeq:"\u225A",vellip:"\u22EE",verbar:"|",vert:"|",vfr:"\u{1D533}",vltri:"\u22B2",vnsub:"\u2282\u20D2",vnsup:"\u2283\u20D2",vopf:"\u{1D567}",vprop:"\u221D",vrtri:"\u22B3",vscr:"\u{1D4CB}",vsubnE:"\u2ACB\uFE00",vsubne:"\u228A\uFE00",vsupnE:"\u2ACC\uFE00",vsupne:"\u228B\uFE00",vzigzag:"\u299A",wcirc:"\u0175",wedbar:"\u2A5F",wedge:"\u2227",wedgeq:"\u2259",weierp:"\u2118",wfr:"\u{1D534}",wopf:"\u{1D568}",wp:"\u2118",wr:"\u2240",wreath:"\u2240",wscr:"\u{1D4CC}",xcap:"\u22C2",xcirc:"\u25EF",xcup:"\u22C3",xdtri:"\u25BD",xfr:"\u{1D535}",xhArr:"\u27FA",xharr:"\u27F7",xi:"\u03BE",xlArr:"\u27F8",xlarr:"\u27F5",xmap:"\u27FC",xnis:"\u22FB",xodot:"\u2A00",xopf:"\u{1D569}",xoplus:"\u2A01",xotime:"\u2A02",xrArr:"\u27F9",xrarr:"\u27F6",xscr:"\u{1D4CD}",xsqcup:"\u2A06",xuplus:"\u2A04",xutri:"\u25B3",xvee:"\u22C1",xwedge:"\u22C0",yacute:"\xFD",yacy:"\u044F",ycirc:"\u0177",ycy:"\u044B",yen:"\xA5",yfr:"\u{1D536}",yicy:"\u0457",yopf:"\u{1D56A}",yscr:"\u{1D4CE}",yucy:"\u044E",yuml:"\xFF",zacute:"\u017A",zcaron:"\u017E",zcy:"\u0437",zdot:"\u017C",zeetrf:"\u2128",zeta:"\u03B6",zfr:"\u{1D537}",zhcy:"\u0436",zigrarr:"\u21DD",zopf:"\u{1D56B}",zscr:"\u{1D4CF}",zwj:"\u200D",zwnj:"\u200C"};var uT={}.hasOwnProperty;function Hi(e){return uT.call(of,e)?of[e]:!1}var dl={name:"characterReference",tokenize:dT};function dT(e,t,r){let n=this,i=0,a,o;return s;function s(d){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),u}function u(d){return d===35?(e.enter("characterReferenceMarkerNumeric"),e.consume(d),e.exit("characterReferenceMarkerNumeric"),l):(e.enter("characterReferenceValue"),a=31,o=Gt,c(d))}function l(d){return d===88||d===120?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(d),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),a=6,o=Xw,c):(e.enter("characterReferenceValue"),a=7,o=Ya,c(d))}function c(d){let f;return d===59&&i?(f=e.exit("characterReferenceValue"),o===Gt&&!Hi(n.sliceSerialize(f))?r(d):(e.enter("characterReferenceMarker"),e.consume(d),e.exit("characterReferenceMarker"),e.exit("characterReference"),t)):o(d)&&i++=4?o(l):r(l)}function o(l){return l===null?u(l):ce(l)?e.attempt(pT,o,u)(l):(e.enter("codeFlowValue"),s(l))}function s(l){return l===null||ce(l)?(e.exit("codeFlowValue"),o(l)):(e.consume(l),s)}function u(l){return e.exit("codeIndented"),t(l)}}function mT(e,t,r){let n=this;return i;function i(o){return n.parser.lazy[n.now().line]?r(o):ce(o)?(e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),i):Se(e,a,"linePrefix",4+1)(o)}function a(o){let s=n.events[n.events.length-1];return s&&s[1].type==="linePrefix"&&s[2].sliceSerialize(s[1],!0).length>=4?t(o):ce(o)?i(o):r(o)}}m();var sf={name:"codeText",tokenize:yT,resolve:gT,previous:vT};function gT(e){let t=e.length-4,r=3,n,i;if((e[r][1].type==="lineEnding"||e[r][1].type==="space")&&(e[t][1].type==="lineEnding"||e[t][1].type==="space")){for(n=r;++n=4?t(o):e.interrupt(n.parser.constructs.flow,r,t)(o)}}m();m();function hl(e,t,r,n,i,a,o,s,u){let l=u||Number.POSITIVE_INFINITY,c=0;return d;function d(k){return k===60?(e.enter(n),e.enter(i),e.enter(a),e.consume(k),e.exit(a),f):k===null||k===41||Ja(k)?r(k):(e.enter(n),e.enter(o),e.enter(s),e.enter("chunkString",{contentType:"string"}),y(k))}function f(k){return k===62?(e.enter(a),e.consume(k),e.exit(a),e.exit(i),e.exit(n),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(k))}function p(k){return k===62?(e.exit("chunkString"),e.exit(s),f(k)):k===null||k===60||ce(k)?r(k):(e.consume(k),k===92?g:p)}function g(k){return k===60||k===62||k===92?(e.consume(k),p):p(k)}function y(k){return k===40?++c>l?r(k):(e.consume(k),y):k===41?c--?(e.consume(k),y):(e.exit("chunkString"),e.exit(s),e.exit(o),e.exit(n),t(k)):k===null||Qe(k)?c?r(k):(e.exit("chunkString"),e.exit(s),e.exit(o),e.exit(n),t(k)):Ja(k)?r(k):(e.consume(k),k===92?b:y)}function b(k){return k===40||k===41||k===92?(e.consume(k),y):y(k)}}m();function ml(e,t,r,n,i,a){let o=this,s=0,u;return l;function l(p){return e.enter(n),e.enter(i),e.consume(p),e.exit(i),e.enter(a),c}function c(p){return p===null||p===91||p===93&&!u||p===94&&!s&&"_hiddenFootnoteSupport"in o.parser.constructs||s>999?r(p):p===93?(e.exit(a),e.enter(i),e.consume(p),e.exit(i),e.exit(n),t):ce(p)?(e.enter("lineEnding"),e.consume(p),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),d(p))}function d(p){return p===null||p===91||p===93||ce(p)||s++>999?(e.exit("chunkString"),c(p)):(e.consume(p),u=u||!Ke(p),p===92?f:d)}function f(p){return p===91||p===92||p===93?(e.consume(p),s++,d):d(p)}}m();function gl(e,t,r,n,i,a){let o;return s;function s(f){return e.enter(n),e.enter(i),e.consume(f),e.exit(i),o=f===40?41:f,u}function u(f){return f===o?(e.enter(i),e.consume(f),e.exit(i),e.exit(n),t):(e.enter(a),l(f))}function l(f){return f===o?(e.exit(a),u(o)):f===null?r(f):ce(f)?(e.enter("lineEnding"),e.consume(f),e.exit("lineEnding"),Se(e,l,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(f))}function c(f){return f===o||f===null||ce(f)?(e.exit("chunkString"),l(f)):(e.consume(f),f===92?d:c)}function d(f){return f===o||f===92?(e.consume(f),c):c(f)}}m();function Jr(e,t){let r;return n;function n(i){return ce(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),r=!0,n):Ke(i)?Se(e,n,r?"linePrefix":"lineSuffix")(i):t(i)}}m();function nr(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}var cf={name:"definition",tokenize:_T},ST={tokenize:CT,partial:!0};function _T(e,t,r){let n=this,i;return a;function a(u){return e.enter("definition"),ml.call(n,e,o,r,"definitionLabel","definitionLabelMarker","definitionLabelString")(u)}function o(u){return i=nr(n.sliceSerialize(n.events[n.events.length-1][1]).slice(1,-1)),u===58?(e.enter("definitionMarker"),e.consume(u),e.exit("definitionMarker"),Jr(e,hl(e,e.attempt(ST,Se(e,s,"whitespace"),Se(e,s,"whitespace")),r,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):r(u)}function s(u){return u===null||ce(u)?(e.exit("definition"),n.parser.defined.includes(i)||n.parser.defined.push(i),t(u)):r(u)}}function CT(e,t,r){return n;function n(o){return Qe(o)?Jr(e,i)(o):r(o)}function i(o){return o===34||o===39||o===40?gl(e,Se(e,a,"whitespace"),r,"definitionTitle","definitionTitleMarker","definitionTitleString")(o):r(o)}function a(o){return o===null||ce(o)?t(o):r(o)}}m();var uf={name:"hardBreakEscape",tokenize:DT};function DT(e,t,r){return n;function n(a){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(a),i}function i(a){return ce(a)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),t(a)):r(a)}}m();var df={name:"headingAtx",tokenize:MT,resolve:TT};function TT(e,t){let r=e.length-2,n=3,i,a;return e[n][1].type==="whitespace"&&(n+=2),r-2>n&&e[r][1].type==="whitespace"&&(r-=2),e[r][1].type==="atxHeadingSequence"&&(n===r-1||r-4>n&&e[r-2][1].type==="whitespace")&&(r-=n+1===r?2:4),r>n&&(i={type:"atxHeadingText",start:e[n][1].start,end:e[r][1].end},a={type:"chunkText",start:e[n][1].start,end:e[r][1].end,contentType:"text"},Nt(e,n,r-n+1,[["enter",i,t],["enter",a,t],["exit",a,t],["exit",i,t]])),e}function MT(e,t,r){let n=this,i=0;return a;function a(c){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),o(c)}function o(c){return c===35&&i++<6?(e.consume(c),o):c===null||Qe(c)?(e.exit("atxHeadingSequence"),n.interrupt?t(c):s(c)):r(c)}function s(c){return c===35?(e.enter("atxHeadingSequence"),u(c)):c===null||ce(c)?(e.exit("atxHeading"),t(c)):Ke(c)?Se(e,s,"whitespace")(c):(e.enter("atxHeadingText"),l(c))}function u(c){return c===35?(e.consume(c),u):(e.exit("atxHeadingSequence"),s(c))}function l(c){return c===null||c===35||Qe(c)?(e.exit("atxHeadingText"),s(c)):(e.consume(c),l)}}m();m();var oE=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ff=["pre","script","style","textarea"];var pf={name:"htmlFlow",tokenize:LT,resolveTo:AT,concrete:!0},IT={tokenize:PT,partial:!0};function AT(e){let t=e.length;for(;t--&&!(e[t][0]==="enter"&&e[t][1].type==="htmlFlow"););return t>1&&e[t-2][1].type==="linePrefix"&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2)),e}function LT(e,t,r){let n=this,i,a,o,s,u;return l;function l(N){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(N),c}function c(N){return N===33?(e.consume(N),d):N===47?(e.consume(N),g):N===63?(e.consume(N),i=3,n.interrupt?t:be):dn(N)?(e.consume(N),o=String.fromCharCode(N),a=!0,y):r(N)}function d(N){return N===45?(e.consume(N),i=2,f):N===91?(e.consume(N),i=5,o="CDATA[",s=0,p):dn(N)?(e.consume(N),i=4,n.interrupt?t:be):r(N)}function f(N){return N===45?(e.consume(N),n.interrupt?t:be):r(N)}function p(N){return N===o.charCodeAt(s++)?(e.consume(N),s===o.length?n.interrupt?t:J:p):r(N)}function g(N){return dn(N)?(e.consume(N),o=String.fromCharCode(N),y):r(N)}function y(N){return N===null||N===47||N===62||Qe(N)?N!==47&&a&&ff.includes(o.toLowerCase())?(i=1,n.interrupt?t(N):J(N)):oE.includes(o.toLowerCase())?(i=6,N===47?(e.consume(N),b):n.interrupt?t(N):J(N)):(i=7,n.interrupt&&!n.parser.lazy[n.now().line]?r(N):a?T(N):k(N)):N===45||Gt(N)?(e.consume(N),o+=String.fromCharCode(N),y):r(N)}function b(N){return N===62?(e.consume(N),n.interrupt?t:J):r(N)}function k(N){return Ke(N)?(e.consume(N),k):U(N)}function T(N){return N===47?(e.consume(N),U):N===58||N===95||dn(N)?(e.consume(N),C):Ke(N)?(e.consume(N),T):U(N)}function C(N){return N===45||N===46||N===58||N===95||Gt(N)?(e.consume(N),C):A(N)}function A(N){return N===61?(e.consume(N),H):Ke(N)?(e.consume(N),A):T(N)}function H(N){return N===null||N===60||N===61||N===62||N===96?r(N):N===34||N===39?(e.consume(N),u=N,D):Ke(N)?(e.consume(N),H):(u=null,K(N))}function D(N){return N===null||ce(N)?r(N):N===u?(e.consume(N),z):(e.consume(N),D)}function K(N){return N===null||N===34||N===39||N===60||N===61||N===62||N===96||Qe(N)?A(N):(e.consume(N),K)}function z(N){return N===47||N===62||Ke(N)?T(N):r(N)}function U(N){return N===62?(e.consume(N),Z):r(N)}function Z(N){return Ke(N)?(e.consume(N),Z):N===null||ce(N)?J(N):r(N)}function J(N){return N===45&&i===2?(e.consume(N),ie):N===60&&i===1?(e.consume(N),he):N===62&&i===4?(e.consume(N),Te):N===63&&i===3?(e.consume(N),be):N===93&&i===5?(e.consume(N),ge):ce(N)&&(i===6||i===7)?e.check(IT,Te,se)(N):N===null||ce(N)?se(N):(e.consume(N),J)}function se(N){return e.exit("htmlFlowData"),G(N)}function G(N){return N===null?F(N):ce(N)?e.attempt({tokenize:Q,partial:!0},G,F)(N):(e.enter("htmlFlowData"),J(N))}function Q(N,ut,Ge){return W;function W(q){return N.enter("lineEnding"),N.consume(q),N.exit("lineEnding"),j}function j(q){return n.parser.lazy[n.now().line]?Ge(q):ut(q)}}function ie(N){return N===45?(e.consume(N),be):J(N)}function he(N){return N===47?(e.consume(N),o="",pe):J(N)}function pe(N){return N===62&&ff.includes(o.toLowerCase())?(e.consume(N),Te):dn(N)&&o.length<8?(e.consume(N),o+=String.fromCharCode(N),pe):J(N)}function ge(N){return N===93?(e.consume(N),be):J(N)}function be(N){return N===62?(e.consume(N),Te):N===45&&i===2?(e.consume(N),be):J(N)}function Te(N){return N===null||ce(N)?(e.exit("htmlFlowData"),F(N)):(e.consume(N),Te)}function F(N){return e.exit("htmlFlow"),t(N)}}function PT(e,t,r){return n;function n(i){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(i),e.exit("lineEndingBlank"),e.attempt(Dr,t,r)}}m();var hf={name:"htmlText",tokenize:FT};function FT(e,t,r){let n=this,i,a,o,s;return u;function u(F){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(F),l}function l(F){return F===33?(e.consume(F),c):F===47?(e.consume(F),K):F===63?(e.consume(F),H):dn(F)?(e.consume(F),Z):r(F)}function c(F){return F===45?(e.consume(F),d):F===91?(e.consume(F),a="CDATA[",o=0,b):dn(F)?(e.consume(F),A):r(F)}function d(F){return F===45?(e.consume(F),f):r(F)}function f(F){return F===null||F===62?r(F):F===45?(e.consume(F),p):g(F)}function p(F){return F===null||F===62?r(F):g(F)}function g(F){return F===null?r(F):F===45?(e.consume(F),y):ce(F)?(s=g,ge(F)):(e.consume(F),g)}function y(F){return F===45?(e.consume(F),Te):g(F)}function b(F){return F===a.charCodeAt(o++)?(e.consume(F),o===a.length?k:b):r(F)}function k(F){return F===null?r(F):F===93?(e.consume(F),T):ce(F)?(s=k,ge(F)):(e.consume(F),k)}function T(F){return F===93?(e.consume(F),C):k(F)}function C(F){return F===62?Te(F):F===93?(e.consume(F),C):k(F)}function A(F){return F===null||F===62?Te(F):ce(F)?(s=A,ge(F)):(e.consume(F),A)}function H(F){return F===null?r(F):F===63?(e.consume(F),D):ce(F)?(s=H,ge(F)):(e.consume(F),H)}function D(F){return F===62?Te(F):H(F)}function K(F){return dn(F)?(e.consume(F),z):r(F)}function z(F){return F===45||Gt(F)?(e.consume(F),z):U(F)}function U(F){return ce(F)?(s=U,ge(F)):Ke(F)?(e.consume(F),U):Te(F)}function Z(F){return F===45||Gt(F)?(e.consume(F),Z):F===47||F===62||Qe(F)?J(F):r(F)}function J(F){return F===47?(e.consume(F),Te):F===58||F===95||dn(F)?(e.consume(F),se):ce(F)?(s=J,ge(F)):Ke(F)?(e.consume(F),J):Te(F)}function se(F){return F===45||F===46||F===58||F===95||Gt(F)?(e.consume(F),se):G(F)}function G(F){return F===61?(e.consume(F),Q):ce(F)?(s=G,ge(F)):Ke(F)?(e.consume(F),G):J(F)}function Q(F){return F===null||F===60||F===61||F===62||F===96?r(F):F===34||F===39?(e.consume(F),i=F,ie):ce(F)?(s=Q,ge(F)):Ke(F)?(e.consume(F),Q):(e.consume(F),i=void 0,pe)}function ie(F){return F===i?(e.consume(F),he):F===null?r(F):ce(F)?(s=ie,ge(F)):(e.consume(F),ie)}function he(F){return F===62||F===47||Qe(F)?J(F):r(F)}function pe(F){return F===null||F===34||F===39||F===60||F===61||F===96?r(F):F===62||Qe(F)?J(F):(e.consume(F),pe)}function ge(F){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(F),e.exit("lineEnding"),Se(e,be,"linePrefix",n.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}function be(F){return e.enter("htmlTextData"),s(F)}function Te(F){return F===62?(e.consume(F),e.exit("htmlTextData"),e.exit("htmlText"),t):r(F)}}m();var Gr={name:"labelEnd",tokenize:KT,resolveTo:BT,resolveAll:HT},NT={tokenize:$T},OT={tokenize:UT},RT={tokenize:VT};function HT(e){let t=-1,r;for(;++t-1&&(o[0]=o[0].slice(n)),a>0&&o.push(e[i].slice(0,a))),o}function o1(e,t){let r=-1,n=[],i;for(;++roD,contentInitial:()=>eD,disable:()=>sD,document:()=>ZT,flow:()=>nD,flowInitial:()=>tD,insideSpan:()=>aD,string:()=>rD,text:()=>iD});h();var ZT={[42]:Wt,[43]:Wt,[45]:Wt,[48]:Wt,[49]:Wt,[50]:Wt,[51]:Wt,[52]:Wt,[53]:Wt,[54]:Wt,[55]:Wt,[56]:Wt,[57]:Wt,[62]:rl},eD={[91]:tf},tD={[-2]:Ya,[-1]:Ya,[32]:Ya},nD={[35]:rf,[42]:Yr,[45]:[dl,Yr],[60]:of,[61]:dl,[95]:Yr,[96]:ol,[126]:ol},rD={[38]:al,[92]:il},iD={[-5]:Ja,[-4]:Ja,[-3]:Ja,[33]:lf,[38]:al,[42]:qa,[60]:[Qd,sf],[91]:cf,[92]:[nf,il],[93]:qr,[95]:qa,[96]:Zd},aD={null:[qa,tE]},oD={null:[42,95]},sD={null:[]};function sE(e={}){let t=Ww([uf].concat(e.extensions||[])),r={defined:[],lazy:{},constructs:t,content:n(Jw),document:n(Gw),flow:n(eE),string:n(nE),text:n(rE)};return r;function n(i){return a;function a(o){return oE(r,i,o)}}}h();var lE=/[\0\t\n\r]/g;function cE(){let e=1,t="",r=!0,n;return i;function i(a,o,s){let u=[],l,c,d,f,p;for(a=t+a.toString(o),d=0,t="",r&&(a.charCodeAt(0)===65279&&d++,r=void 0);d13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)==65535||(r&65535)==65534||r>1114111?"\uFFFD":String.fromCharCode(r)}h();var lD=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function dE(e){return e.replace(lD,cD)}function cD(e,t,r){if(t)return t;if(r.charCodeAt(0)===35){let i=r.charCodeAt(1),a=i===120||i===88;return fl(r.slice(a?2:1),a?16:10)}return Oi(r)||e}h();function Ga(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?fE(e.position):"start"in e||"end"in e?fE(e):"line"in e||"column"in e?df(e):""}function df(e){return pE(e&&e.line)+":"+pE(e&&e.column)}function fE(e){return df(e&&e.start)+"-"+df(e&&e.end)}function pE(e){return e&&typeof e=="number"?e:1}var ff={}.hasOwnProperty,pl=function(e,t,r){return typeof t!="string"&&(r=t,t=void 0),uD(r)(uE(sE(r).document().write(cE()(e,t,!0))))};function uD(e={}){let t=hE({transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:u(Gr),autolinkProtocol:le,autolinkEmail:le,atxHeading:u($n),blockQuote:u(ut),characterEscape:le,characterReference:le,codeFenced:u(vt),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:u(vt,l),codeText:u(Nt,l),codeTextData:le,data:le,codeFlowValue:le,definition:u(Bn),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:u(Kn),hardBreakEscape:u(bn),hardBreakTrailing:u(bn),htmlFlow:u(wn,l),htmlFlowData:le,htmlText:u(wn,l),htmlTextData:le,image:u(Un),label:l,link:u(Gr),listItem:u(Xr),listItemValue:y,listOrdered:u(Qr,m),listUnordered:u(Qr),paragraph:u(rr),reference:j,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:u($n),strong:u(Ot),thematicBreak:u(yt)},exit:{atxHeading:d(),atxHeadingSequence:W,autolink:d(),autolinkEmail:Ue,autolinkProtocol:ke,blockQuote:d(),characterEscapeValue:X,characterReferenceMarkerHexadecimal:te,characterReferenceMarkerNumeric:te,characterReferenceValue:we,codeFenced:d(C),codeFencedFence:D,codeFencedFenceInfo:b,codeFencedFenceMeta:x,codeFlowValue:X,codeIndented:d(A),codeText:d(ve),codeTextData:X,data:X,definition:d(),definitionDestinationString:O,definitionLabelString:N,definitionTitleString:T,emphasis:d(),hardBreakEscape:d(re),hardBreakTrailing:d(re),htmlFlow:d(pe),htmlFlowData:X,htmlText:d(he),htmlTextData:X,image:d(De),label:P,labelText:L,lineEnding:G,link:d(be),listItem:d(),listOrdered:d(),listUnordered:d(),paragraph:d(),referenceString:q,resourceDestinationString:ct,resourceTitleString:Je,resource:V,setextHeading:d(Z),setextHeadingLineSequence:ee,setextHeadingText:z,strong:d(),thematicBreak:d()}},e.mdastExtensions||[]),r={};return n;function n(Y){let oe={type:"root",children:[]},Ee=[oe],ze=[],Tt=[],En={stack:Ee,tokenStack:ze,config:t,enter:c,exit:f,buffer:l,resume:p,setData:a,getData:o},qe=-1;for(;++qe0){let ot=ze[ze.length-1];(ot[1]||mE).call(En,void 0,ot[0])}for(oe.position={start:s(Y.length>0?Y[0][1].start:{line:1,column:1,offset:0}),end:s(Y.length>0?Y[Y.length-2][1].end:{line:1,column:1,offset:0})},qe=-1;++qe".charCodeAt(0)?o(m):(i.enter(e),i.enter(`${e}Marker`),d(m))}function d(m){return u===t.length?(i.exit(`${e}Marker`),f(m)):m!==t.charCodeAt(u)?o(m):(i.consume(m),u++,d)}function f(m){return i.enter(`${e}Data`),i.enter(`${e}Target`),p(m)}function p(m){return Qe(m)||"<".charCodeAt(0)===m||"#".charCodeAt(0)===m||m===null?s?(i.exit(`${e}Target`),i.exit(`${e}Data`),i.exit(e),a(m)):o(m):(s=!0,i.consume(m),p)}}let n={tokenize:r};return{text:{[t.charCodeAt(0)]:n}}}function CE(){let e="hashtag";function t(i){this.enter({type:e,value:null},i)}function r(i){let a=this.sliceSerialize(i),o=Ri(this.stack);o.value=a}function n(i){this.exit(i)}return{enter:{[e]:t},exit:{[`${e}Target`]:r,[e]:n}}}h();h();var Ki={carriageReturn:-5,lineFeed:-4,carriageReturnLineFeed:-3,horizontalTab:-2,virtualSpace:-1,eof:null,nul:0,soh:1,stx:2,etx:3,eot:4,enq:5,ack:6,bel:7,bs:8,ht:9,lf:10,vt:11,ff:12,cr:13,so:14,si:15,dle:16,dc1:17,dc2:18,dc3:19,dc4:20,nak:21,syn:22,etb:23,can:24,em:25,sub:26,esc:27,fs:28,gs:29,rs:30,us:31,space:32,exclamationMark:33,quotationMark:34,numberSign:35,dollarSign:36,percentSign:37,ampersand:38,apostrophe:39,leftParenthesis:40,rightParenthesis:41,asterisk:42,plusSign:43,comma:44,dash:45,dot:46,slash:47,digit0:48,digit1:49,digit2:50,digit3:51,digit4:52,digit5:53,digit6:54,digit7:55,digit8:56,digit9:57,colon:58,semicolon:59,lessThan:60,equalsTo:61,greaterThan:62,questionMark:63,atSign:64,uppercaseA:65,uppercaseB:66,uppercaseC:67,uppercaseD:68,uppercaseE:69,uppercaseF:70,uppercaseG:71,uppercaseH:72,uppercaseI:73,uppercaseJ:74,uppercaseK:75,uppercaseL:76,uppercaseM:77,uppercaseN:78,uppercaseO:79,uppercaseP:80,uppercaseQ:81,uppercaseR:82,uppercaseS:83,uppercaseT:84,uppercaseU:85,uppercaseV:86,uppercaseW:87,uppercaseX:88,uppercaseY:89,uppercaseZ:90,leftSquareBracket:91,backslash:92,rightSquareBracket:93,caret:94,underscore:95,graveAccent:96,lowercaseA:97,lowercaseB:98,lowercaseC:99,lowercaseD:100,lowercaseE:101,lowercaseF:102,lowercaseG:103,lowercaseH:104,lowercaseI:105,lowercaseJ:106,lowercaseK:107,lowercaseL:108,lowercaseM:109,lowercaseN:110,lowercaseO:111,lowercaseP:112,lowercaseQ:113,lowercaseR:114,lowercaseS:115,lowercaseT:116,lowercaseU:117,lowercaseV:118,lowercaseW:119,lowercaseX:120,lowercaseY:121,lowercaseZ:122,leftCurlyBrace:123,verticalBar:124,rightCurlyBrace:125,tilde:126,del:127,byteOrderMarker:65279,replacementCharacter:65533};h();var gf={data:"data",whitespace:"whitespace",lineEnding:"lineEnding",lineEndingBlank:"lineEndingBlank",linePrefix:"linePrefix",lineSuffix:"lineSuffix",atxHeading:"atxHeading",atxHeadingSequence:"atxHeadingSequence",atxHeadingText:"atxHeadingText",autolink:"autolink",autolinkEmail:"autolinkEmail",autolinkMarker:"autolinkMarker",autolinkProtocol:"autolinkProtocol",characterEscape:"characterEscape",characterEscapeValue:"characterEscapeValue",characterReference:"characterReference",characterReferenceMarker:"characterReferenceMarker",characterReferenceMarkerNumeric:"characterReferenceMarkerNumeric",characterReferenceMarkerHexadecimal:"characterReferenceMarkerHexadecimal",characterReferenceValue:"characterReferenceValue",codeFenced:"codeFenced",codeFencedFence:"codeFencedFence",codeFencedFenceSequence:"codeFencedFenceSequence",codeFencedFenceInfo:"codeFencedFenceInfo",codeFencedFenceMeta:"codeFencedFenceMeta",codeFlowValue:"codeFlowValue",codeIndented:"codeIndented",codeText:"codeText",codeTextData:"codeTextData",codeTextPadding:"codeTextPadding",codeTextSequence:"codeTextSequence",content:"content",definition:"definition",definitionDestination:"definitionDestination",definitionDestinationLiteral:"definitionDestinationLiteral",definitionDestinationLiteralMarker:"definitionDestinationLiteralMarker",definitionDestinationRaw:"definitionDestinationRaw",definitionDestinationString:"definitionDestinationString",definitionLabel:"definitionLabel",definitionLabelMarker:"definitionLabelMarker",definitionLabelString:"definitionLabelString",definitionMarker:"definitionMarker",definitionTitle:"definitionTitle",definitionTitleMarker:"definitionTitleMarker",definitionTitleString:"definitionTitleString",emphasis:"emphasis",emphasisSequence:"emphasisSequence",emphasisText:"emphasisText",escapeMarker:"escapeMarker",hardBreakEscape:"hardBreakEscape",hardBreakTrailing:"hardBreakTrailing",htmlFlow:"htmlFlow",htmlFlowData:"htmlFlowData",htmlText:"htmlText",htmlTextData:"htmlTextData",image:"image",label:"label",labelText:"labelText",labelLink:"labelLink",labelImage:"labelImage",labelMarker:"labelMarker",labelImageMarker:"labelImageMarker",labelEnd:"labelEnd",link:"link",paragraph:"paragraph",reference:"reference",referenceMarker:"referenceMarker",referenceString:"referenceString",resource:"resource",resourceDestination:"resourceDestination",resourceDestinationLiteral:"resourceDestinationLiteral",resourceDestinationLiteralMarker:"resourceDestinationLiteralMarker",resourceDestinationRaw:"resourceDestinationRaw",resourceDestinationString:"resourceDestinationString",resourceMarker:"resourceMarker",resourceTitle:"resourceTitle",resourceTitleMarker:"resourceTitleMarker",resourceTitleString:"resourceTitleString",setextHeading:"setextHeading",setextHeadingText:"setextHeadingText",setextHeadingLine:"setextHeadingLine",setextHeadingLineSequence:"setextHeadingLineSequence",strong:"strong",strongSequence:"strongSequence",strongText:"strongText",thematicBreak:"thematicBreak",thematicBreakSequence:"thematicBreakSequence",blockQuote:"blockQuote",blockQuotePrefix:"blockQuotePrefix",blockQuoteMarker:"blockQuoteMarker",blockQuotePrefixWhitespace:"blockQuotePrefixWhitespace",listOrdered:"listOrdered",listUnordered:"listUnordered",listItemIndent:"listItemIndent",listItemMarker:"listItemMarker",listItemPrefix:"listItemPrefix",listItemPrefixWhitespace:"listItemPrefixWhitespace",listItemValue:"listItemValue",chunkDocument:"chunkDocument",chunkContent:"chunkContent",chunkFlow:"chunkFlow",chunkText:"chunkText",chunkString:"chunkString"};var gD={tokenize:vD},TE={text:{[Ki.leftSquareBracket]:gD}};function vD(e,t,r){let n=this;return i;function i(s){return n.previous!==Ki.eof||!n._gfmTasklistFirstContentOfListItem?r(s):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),a)}function a(s){return Be(s)?(e.enter("taskListCheckValueUnchecked"),e.consume(s),e.exit("taskListCheckValueUnchecked"),o):s!==Ki.rightSquareBracket?(e.enter("taskListCheckValueChecked"),e.consume(s),e.exit("taskListCheckValueChecked"),o):r(s)}function o(s){return s===Ki.rightSquareBracket?(e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),e.check({tokenize:yD},t,r)):r(s)}}function yD(e,t,r){let n=this;return Se(e,i,gf.whitespace);function i(a){let o=n.events[n.events.length-1];return o&&o[1].type===gf.whitespace&&a!==Ki.eof&&!Qe(a)?t(a):r(a)}}var DE={exit:{taskListCheckValueChecked:ME,taskListCheckValueUnchecked:ME,paragraph:bD}};function ME(e){let t=this.stack[this.stack.length-2];t.checked=e.type==="taskListCheckValueChecked",t.checkChar=this.sliceSerialize(e)}function bD(e){let t=this.stack[this.stack.length-2],r=this.stack[this.stack.length-1],n=t.children,i=r.children[0],a=-1,o;if(t&&t.type==="listItem"&&typeof t.checked=="boolean"&&i&&i.type==="text"){for(;++a=0;i--){if(!t&&/[`%\n\r]/.test(e[i])){e[i]==="`"&&(r++,r===3&&(t=!0,n=i-1));continue}else if(!t)return{};if(e[i]==="`"&&e[i-1]==="`"&&e[i-2]==="`"&&/[\r\n]/.test(e[i-3]))return JSON.parse(e.slice(i+1,n).trim())}}function AE(e){return[TE,Hi("date",`${e.getSetting("date-trigger")}{`,"}"),Hi("dateLink",`${e.getSetting("date-trigger")}[[`,"]]"),Hi("time",`${e.getSetting("time-trigger")}{`,"}"),Hi("embedWikilink","![[","]]"),Hi("wikilink","[[","]]"),_E(),xE()]}function LE(e){return[DE,Bi("date",(t,r)=>{!t||(r.date=t)}),Bi("dateLink",(t,r)=>{!t||(r.date=t)}),Bi("time",(t,r)=>{!t||(r.time=t)}),Bi("embedWikilink",(t,r)=>{if(!t)return;let n=Ur(t),i=e.app.metadataCache.getFirstLinkpathDest(n.root,e.file.path);r.fileAccessor={target:n.root,isEmbed:!0,stats:i==null?void 0:i.stat}}),Bi("wikilink",(t,r)=>{if(!t)return;let n=Ur(t),i=e.app.metadataCache.getFirstLinkpathDest(n.root,e.file.path);if(r.fileAccessor={target:n.root,isEmbed:!1},i){let a=kd(e,i);r.fileMetadata=a.fileMetadata,r.fileMetadataOrder=a.fileMetadataOrder}}),SE((t,r)=>{if(!t.url||/:\/\//.test(t.url)||!/.md$/.test(t.url))return;let n=e.app.metadataCache.getFirstLinkpathDest(decodeURIComponent(t.url),e.file.path);if(r)t.type="embedLink",t.fileAccessor={target:decodeURIComponent(t.url),isEmbed:!0,stats:n.stat};else if(t.fileAccessor={target:decodeURIComponent(t.url),isEmbed:!1},n){let i=kd(e,n);t.fileMetadata=i.fileMetadata,t.fileMetadataOrder=i.fileMetadataOrder}}),CE(),kE()]}function PE(e,t){let r=wD(t),i={...ED(t)},a={};return Object.keys(r).forEach(o=>{o===gn?(i[o]=r[o],a[o]=r[o]):Sw[o]?i[o]=r[o]:a[o]=r[o]}),e.compileSettings(i),{settings:i,frontmatter:a,ast:pl(t,{extensions:[hf(["yaml"]),...AE(e)],mdastExtensions:[bE(["yaml"]),...LE(e)]})}}function vf(e,t){return pl(t,{extensions:AE(e),mdastExtensions:LE(e)})}function vl(e,t,r){let n=e.getSetting("hide-tags-in-title"),i=e.getSetting("hide-date-in-title"),a=jd(r.children[0]),o=qd(t,a);(o==="[ ]"||o==="[x]")&&(o="");let s=o,u={titleRaw:Ls(o),blockId:void 0,title:"",titleSearch:"",metadata:{dateStr:void 0,date:void 0,time:void 0,timeStr:void 0,tags:[],fileAccessor:void 0,file:void 0,fileMetadata:void 0,fileMetadataOrder:void 0},dom:void 0,isComplete:!!r.checked};return Ow(r,l=>l.type!=="paragraph",l=>{let c=l;if(c.type==="blockid")return u.blockId=c.value,!0;if(c.type==="hashtag")return u.metadata.tags||(u.metadata.tags=[]),u.metadata.tags.push("#"+c.value),n&&(s=As(s,{start:l.position.start.offset-a.start,end:l.position.end.offset-a.start})),!0;if(c.type==="date"||c.type==="dateLink")return u.metadata.dateStr=c.date,i&&(s=As(s,{start:l.position.start.offset-a.start,end:l.position.end.offset-a.start})),!0;if(c.type==="time")return u.metadata.timeStr=c.time,s=As(s,{start:l.position.start.offset-a.start,end:l.position.end.offset-a.start}),!0;if(c.type==="embedWikilink")return u.metadata.fileAccessor=c.fileAccessor,!0;if(c.type==="wikilink"||c.type==="link"&&c.fileAccessor)return u.metadata.fileAccessor=c.fileAccessor,u.metadata.fileMetadata=c.fileMetadata,u.metadata.fileMetadataOrder=c.fileMetadataOrder,!0;if(c.type==="embedLink")return u.metadata.fileAccessor=c.fileAccessor,!0}),u.title=Ls(yb(s)),u}function xD(e,t,r){if(e.type!=="heading"||Wa(e,{includeImageAlt:!1})!==B("Archive"))return!1;let n=Rw(t,r);return n&&n.type==="thematicBreak"}function NE(e,t,r,n,i){let a=[],o=[];return n.children.forEach((s,u)=>{if(s.type==="heading"){let l=xD(s,n.children,u),c=jd(s),d=qd(i,c),f=!1,p=Hw(n.children,u,"list",m=>{if(m.type==="heading")return!1;if(m.type==="paragraph"){let y=Wa(m);if(y.startsWith("%% kanban:settings"))return!1;if(y===B("Complete"))return f=!0,!0}return!0});if(l&&p){o.push(...p.children.map(m=>({...cs,id:Re(),data:vl(e,i,m)})));return}p?a.push({...wr,children:p.children.map(m=>({...cs,id:Re(),data:vl(e,i,m)})),id:Re(),data:{...Wr(d),shouldMarkItemsComplete:f}}):a.push({...wr,children:[],id:Re(),data:{...Wr(d),shouldMarkItemsComplete:f}})}}),{...us,id:e.file.path,children:a,data:{settings:t,frontmatter:r,archive:o,isSearching:!1,errors:[]}}}async function yf(e,t,r){let n=`- [${t.data.isComplete?"x":" "}] ${Na(r)}${t.data.blockId?` ^${t.data.blockId}`:""}`,i=vf(e,n),a=vl(e,n,i.children[0].children[0]),o=(0,gl.default)(t,{data:{$set:a}});try{await Va(e,o)}catch(s){console.error(s)}return o}async function OE(e,t,r,n){let i=`- [${r?"x":" "}] ${Na(t)}`,a=vf(e,i),o=vl(e,i,a.children[0].children[0]);o.forceEditMode=!!n;let s={...cs,id:Re(),data:o};try{await Va(e,s)}catch(u){console.error(u)}return s}async function RE(e,t){try{return(0,gl.default)(t,{children:{$set:await Promise.all(t.children.map(async r=>{try{return(0,gl.default)(r,{children:{$set:await Promise.all(r.children.map(n=>yf(e,n,n.data.titleRaw)))}})}catch(n){throw e.setError(n),n}}))}})}catch(r){throw e.setError(r),r}}function HE(e){return`- [${e.data.isComplete?"x":" "}] ${Na(e.data.titleRaw)}${e.data.blockId?` ^${e.data.blockId}`:""}`}function kD(e){let t=[];return t.push(`## ${Na(zo(e.data.title,e.data.maxItems))}`),t.push(""),e.data.shouldMarkItemsComplete&&t.push(Bb),e.children.forEach(r=>{t.push(HE(r))}),t.push(""),t.push(""),t.push(""),t.join(` -`)}function SD(e){if(e.length){let t=[Kb,"",`## ${B("Archive")}`,""];return e.forEach(r=>{t.push(HE(r))}),t.join(` -`)}return""}function BE(e){let t=e.children.reduce((n,i)=>n+kD(i),"");return["---","",(0,FE.stringifyYaml)(e.data.frontmatter),"---","",""].join(` -`)+t+SD(e.data.archive)+$b(e.data.settings)}var bf=class{constructor(t){this.stateManager=t}newItem(t,r,n){return OE(this.stateManager,t,r,n)}updateItemContent(t,r){return yf(this.stateManager,t,r)}boardToMd(t){return BE(t)}mdToBoard(t){let{ast:r,settings:n,frontmatter:i}=PE(this.stateManager,t),a=NE(this.stateManager,n,i,r,t);if(!this.stateManager.hasError()&&this.stateManager.state){let s=Ud(this.stateManager.state,a).filter(l=>["/id","/dom","/date","/time","/titleSearch","/file"].every(c=>!l.path.endsWith(c))),u=(0,KE.immutableJSONPatch)(this.stateManager.state,s);return $w(this.stateManager,u,s)}return Kw(this.stateManager,a)}reparseBoard(){return RE(this.stateManager,this.stateManager.state)}};var wf=class{constructor(t,r,n,i,a){this.stateReceivers=[];this.settingsNotifiers=new Map;this.viewSet=new Set;this.compiledSettings={};this.newBoardPromise=null;this.getSetting=(t,r)=>r&&r[t]!==void 0?r[t]:this.compiledSettings&&this.compiledSettings[t]!==void 0?this.compiledSettings[t]:this.getSettingRaw(t);this.getSettingRaw=(t,r)=>{var n,i;return r&&r[t]!==void 0?r[t]:((i=(n=this.state)==null?void 0:n.data)==null?void 0:i.settings)&&this.state.data.settings[t]!==void 0?this.state.data.settings[t]:this.getGlobalSetting(t)};this.getGlobalSetting=t=>{let r=this.getGlobalSettings();return r&&r[t]!==void 0?r[t]:null};this.app=t,this.file=r.file,this.onEmpty=i,this.getGlobalSettings=a,this.parser=new bf(this),this.registerView(r,n,!0)}getAView(){return this.viewSet.values().next().value}hasError(){var t,r,n;return!!((n=(r=(t=this.state)==null?void 0:t.data)==null?void 0:r.errors)==null?void 0:n.length)}registerView(t,r,n){this.viewSet.has(t)||(this.viewSet.add(t),t.initHeaderButtons()),n&&(this.newBoardPromise!==null?this.newBoardPromise.then(()=>this.newBoard(r)):this.newBoardPromise=this.newBoard(r).then(()=>{this.newBoardPromise=null}).catch(i=>{console.error(i),this.setError(i)}))}unregisterView(t){this.viewSet.has(t)&&(this.viewSet.delete(t),this.viewSet.size===0&&this.onEmpty())}buildSettingRetrievers(){return{getGlobalSettings:this.getGlobalSettings,getGlobalSetting:this.getGlobalSetting,getSetting:this.getSetting}}async newBoard(t){try{await this.setState(await this.getParsedBoard(t),!1)}catch(r){this.setError(r)}}saveToDisk(){if(this.state.data.errors.length>0)return;let t=this.getAView();if(t){let r=this.parser.boardToMd(this.state);t.requestSaveToDisk(r),this.viewSet.forEach(n=>{n.data=r})}}softRefresh(){this.stateReceivers.forEach(t=>t({...this.state}))}async forceRefresh(){if(this.state)try{this.compileSettings(),this.state=await this.parser.reparseBoard(),this.stateReceivers.forEach(t=>t(this.state)),this.viewSet.forEach(t=>t.initHeaderButtons())}catch(t){console.error(t),this.setError(t)}}async setState(t,r=!0){var n;try{let i=(n=this.state)==null?void 0:n.data.settings,a=typeof t=="function"?await t(this.state):t,o=a==null?void 0:a.data.settings;i&&o&&Vb(i,o)?(this.state=(0,$i.default)(this.state,{data:{settings:{$set:o}}}),this.compileSettings(),this.state=await this.parser.reparseBoard()):(this.state=a,this.compileSettings()),this.viewSet.forEach(s=>s.initHeaderButtons()),r&&this.saveToDisk(),this.stateReceivers.forEach(s=>s(this.state)),i!==o&&o&&this.settingsNotifiers.forEach((s,u)=>{(!i&&o||i[u]!==o[u])&&s.forEach(l=>l())})}catch(i){console.error(i),this.setError(i)}}useState(){let[t,r]=F.useState(this.state);return F.useEffect(()=>(this.stateReceivers.push(n=>{r(n)}),r(this.state),()=>{this.stateReceivers.remove(r)}),[]),t}useSetting(t){let[r,n]=F.useState(this.getSetting(t));return F.useEffect(()=>{let i=()=>{n(this.getSetting(t))};return this.settingsNotifiers.has(t)?this.settingsNotifiers.get(t).push(i):this.settingsNotifiers.set(t,[i]),()=>{this.settingsNotifiers.get(t).remove(i)}},[]),r}compileSettings(t){var s,u,l,c,d;let r=this.getGlobalSetting("metadata-keys")||[],n=this.getSettingRaw("metadata-keys",t)||[],i=this.getSettingRaw("date-format",t)||li(this.app),a=this.getSettingRaw("time-format",t)||ra(this.app),o=this.getSettingRaw("prepend-archive-format",t)||`${i} ${a}`;this.compiledSettings={"date-format":i,"date-display-format":this.getSettingRaw("date-display-format",t)||i,"date-trigger":this.getSettingRaw("date-trigger",t)||$s,"time-format":a,"time-trigger":this.getSettingRaw("time-trigger",t)||Us,"link-date-to-daily-note":this.getSettingRaw("link-date-to-daily-note",t),"hide-date-in-title":this.getSettingRaw("hide-date-in-title",t),"hide-tags-in-title":this.getSettingRaw("hide-tags-in-title",t),"metadata-keys":[...r,...n],"prepend-archive-separator":this.getSettingRaw("prepend-archive-separator")||"","prepend-archive-format":o,"show-add-list":(s=this.getSettingRaw("show-add-list",t))!=null?s:!0,"show-archive-all":(u=this.getSettingRaw("show-archive-all",t))!=null?u:!0,"show-view-as-markdown":(l=this.getSettingRaw("show-view-as-markdown",t))!=null?l:!0,"show-board-settings":(c=this.getSettingRaw("show-board-settings",t))!=null?c:!0,"show-search":(d=this.getSettingRaw("show-search",t))!=null?d:!0}}async getParsedBoard(t){let r=t.trim(),n={...us,id:this.file.path,children:[],data:{archive:[],settings:{"kanban-plugin":"basic"},frontmatter:{},isSearching:!1,errors:[]}};try{r&&(n=await this.parser.mdToBoard(r))}catch(i){console.error(i),n=(0,$i.default)(n,{data:{errors:{$push:[{description:i.toString(),stack:i.stack}]}}})}return n}setError(t){this.setState((0,$i.default)(this.state,{data:{errors:{$push:[{description:t.toString(),stack:t.stack}]}}}),!1)}onFileMetadataChange(){this.reparseBoardFromMd()}async reparseBoardFromMd(){try{this.setState(await this.getParsedBoard(this.getAView().data),!1)}catch(t){console.error(t),this.setError(t)}}async archiveCompletedCards(){let t=this.state,r=[],n=!!this.getSetting("prepend-archive-date"),i=this.getSetting("prepend-archive-separator"),a=this.getSetting("prepend-archive-format"),o=u=>{let l=[(0,$E.moment)().format(a)];i&&l.push(i),l.push(u.data.titleRaw);let c=l.join(" ");return this.parser.updateItemContent(u,c)},s=t.children.map(u=>(0,$i.default)(u,{children:{$set:u.children.filter(l=>((u.data.shouldMarkItemsComplete||l.data.isComplete)&&r.push(l),!l.data.isComplete&&!u.data.shouldMarkItemsComplete))}}));this.app.workspace.trigger("kanban:board-cards-archived",this.file,r);try{this.setState((0,$i.default)(t,{children:{$set:s},data:{archive:{$push:n?await Promise.all(r.map(u=>o(u))):r}}}))}catch(u){this.setError(u)}}getNewItem(t,r,n){return this.parser.newItem(t,r,n)}updateItemContent(t,r){return this.parser.updateItemContent(t,r)}};var Ef=class extends Ct.Plugin{constructor(){super(...arguments);this.settings={};this.kanbanFileModes={};this.stateManagers=new Map;this.windowRegistry=new Map;this._loaded=!1;this.isShiftPressed=!1;this.handleShift=t=>{this.isShiftPressed=t.shiftKey}}async loadSettings(){this.settings=Object.assign({},await this.loadData())}async saveSettings(){await this.saveData(this.settings)}unload(){Promise.all(app.workspace.getLeavesOfType(yn).map(t=>(this.kanbanFileModes[t.id]="markdown",this.setMarkdownView(t)))).then(()=>{super.unload()})}onunload(){this.windowRegistry.forEach((t,r)=>{t.viewStateReceivers.forEach(n=>n([])),this.unmount(r)}),this.unmount(window),this.stateManagers.clear(),this.windowRegistry.clear(),this.kanbanFileModes={},window.removeEventListener("keydown",this.handleShift),window.removeEventListener("keyup",this.handleShift),app.workspace.unregisterHoverLinkSource(gn)}async onload(){var t,r;await this.loadSettings(),this.registerEvent(app.workspace.on("window-open",(n,i)=>{this.mount(i)})),this.registerEvent(app.workspace.on("window-close",(n,i)=>{this.unmount(i)})),this.settingsTab=new Od(this,{onSettingsChange:async n=>{this.settings=n,await this.saveSettings(),this.stateManagers.forEach(i=>{i.forceRefresh()})}}),this.addSettingTab(this.settingsTab),this.registerView(yn,n=>new tr(n,this)),this.registerMonkeyPatches(),this.registerCommands(),this.registerEvents(),this.mount(window),(r=(t=app.workspace.floatingSplit)==null?void 0:t.children)==null||r.forEach(n=>{this.mount(n.win)}),window.addEventListener("keydown",this.handleShift),window.addEventListener("keyup",this.handleShift)}getKanbanViews(t){let r=this.windowRegistry.get(t);return r?Array.from(r.viewMap.values()):[]}getKanbanView(t,r){let n=this.windowRegistry.get(r);if(n==null?void 0:n.viewMap.has(t))return n.viewMap.get(t);for(let i of this.windowRegistry.values())if(i.viewMap.has(t))return i.viewMap.get(t);return null}getStateManager(t){return this.stateManagers.get(t)}getStateManagerFromViewID(t,r){let n=this.getKanbanView(t,r);return n?this.stateManagers.get(n.file):null}useViewState(t){let[r,n]=F.useState(this.getKanbanViews(t));return F.useEffect(()=>{let i=this.windowRegistry.get(t);return i==null||i.viewStateReceivers.push(n),()=>{i==null||i.viewStateReceivers.remove(n)}},[t]),r}addView(t,r,n){let i=t.getWindow(),a=this.windowRegistry.get(i);if(!a)return;a.viewMap.has(t.id)||a.viewMap.set(t.id,t);let o=t.file;this.stateManagers.has(o)?this.stateManagers.get(o).registerView(t,r,n):this.stateManagers.set(o,new wf(this.app,t,r,()=>this.stateManagers.delete(o),()=>this.settings)),a.viewStateReceivers.forEach(s=>s(this.getKanbanViews(i)))}removeView(t){let r=Array.from(this.windowRegistry.entries()).find(([,o])=>o.viewMap.has(t.id),[]);if(!r)return;let[n,i]=r,a=t.file;i.viewMap.has(t.id)&&i.viewMap.delete(t.id),this.stateManagers.has(a)&&(this.stateManagers.get(a).unregisterView(t),i.viewStateReceivers.forEach(o=>o(this.getKanbanViews(n))))}handleViewFileRename(t,r){let n=t.getWindow();if(!this.windowRegistry.has(n))return;let i=this.windowRegistry.get(n),a=`${t.leaf.id}:::${r}`;i.viewMap.has(a)&&i.viewMap.delete(a),i.viewMap.has(t.id)||i.viewMap.set(t.id,t),t.isPrimary&&this.getStateManager(t.file).softRefresh()}mount(t){if(this.windowRegistry.has(t))return;let r=t.document.body.createDiv();this.windowRegistry.set(t,{viewMap:new Map,viewStateReceivers:[],appRoot:r}),F.render(Rb(t,this),r)}unmount(t){if(!this.windowRegistry.has(t))return;let r=this.windowRegistry.get(t);for(let n of r.viewMap.values())n.destroy();F.unmountComponentAtNode(r.appRoot),r.appRoot.remove(),r.viewMap.clear(),r.viewStateReceivers.length=0,r.appRoot=null,this.windowRegistry.delete(t)}async setMarkdownView(t,r=!0){await t.setViewState({type:"markdown",state:t.view.getState(),popstate:!0},{focus:r})}async setKanbanView(t){await t.setViewState({type:yn,state:t.view.getState(),popstate:!0})}async newKanban(t){var n;let r=t||app.fileManager.getNewFileParent(((n=app.workspace.getActiveFile())==null?void 0:n.path)||"");try{let i=await app.fileManager.createNewMarkdownFile(r,B("Untitled Kanban"));await app.vault.modify(i,xd),await app.workspace.getLeaf().setViewState({type:yn,state:{file:i.path}})}catch(i){console.error("Error creating kanban board:",i)}}registerEvents(){this.registerEvent(app.workspace.on("file-menu",(r,n,i,a)=>{if(n instanceof Ct.TFolder){r.addItem(o=>{o.setTitle(B("New kanban board")).setIcon(Ba).onClick(()=>this.newKanban(n))});return}if(!Ct.Platform.isMobile&&n instanceof Ct.TFile&&a&&i==="sidebar-context-menu"&&pc(n)){let o=this.getKanbanViews(Ze(a.view.containerEl)),s=!1;for(let u of o)if(u.file===n){u.onPaneMenu(r,"more-options",!1),s=!0;break}if(!s){r.addItem(u=>{u.setTitle(B("Open as kanban board")).setIcon(Ba).setSection("pane").onClick(()=>{this.kanbanFileModes[a.id||n.path]=yn,this.setKanbanView(a)})});return}}(a==null?void 0:a.view)instanceof Ct.MarkdownView&&n instanceof Ct.TFile&&i==="pane-more-options"&&pc(n)&&r.addItem(o=>{o.setTitle(B("Open as kanban board")).setIcon(Ba).setSection("pane").onClick(()=>{this.kanbanFileModes[a.id||n.path]=yn,this.setKanbanView(a)})})})),this.registerEvent(app.vault.on("rename",(r,n)=>{app.workspace.getLeavesOfType(yn).forEach(a=>{a.view.handleRename(r.path,n)})}));let t=(0,Ct.debounce)(r=>{this.stateManagers.forEach(n=>{n.file!==r&&n.onFileMetadataChange()})},2e3,!0);this.registerEvent(app.vault.on("modify",r=>{r instanceof Ct.TFile&&t(r)})),this.registerEvent(app.metadataCache.on("changed",r=>{t(r)})),this.registerEvent(app.metadataCache.on("dataview:metadata-change",(r,n)=>{t(n)})),this.registerEvent(app.metadataCache.on("dataview:api-ready",()=>{this.stateManagers.forEach(r=>{r.forceRefresh()})})),app.workspace.registerHoverLinkSource(gn,{display:"Kanban",defaultMod:!0})}registerCommands(){this.addCommand({id:"create-new-kanban-board",name:B("Create new board"),callback:()=>this.newKanban()}),this.addCommand({id:"archive-completed-cards",name:B("Archive completed cards in active board"),checkCallback:t=>{let r=app.workspace.getActiveViewOfType(tr);if(!r)return!1;if(t)return!0;this.stateManagers.get(r.file).archiveCompletedCards()}}),this.addCommand({id:"toggle-kanban-view",name:B("Toggle between Kanban and markdown mode"),checkCallback:t=>{let r=app.workspace.getActiveFile();if(!r)return!1;let n=app.metadataCache.getFileCache(r),i=!!(n==null?void 0:n.frontmatter)&&!!n.frontmatter[gn];if(t)return i;let a=app.workspace.getActiveViewOfType(tr);if(a)this.kanbanFileModes[a.leaf.id||r.path]="markdown",this.setMarkdownView(a.leaf);else if(i){let o=app.workspace.getActiveViewOfType(Ct.MarkdownView);o&&(this.kanbanFileModes[o.leaf.id||r.path]=yn,this.setKanbanView(o.leaf))}}}),this.addCommand({id:"convert-to-kanban",name:B("Convert empty note to Kanban"),checkCallback:t=>{let r=app.workspace.getActiveViewOfType(Ct.MarkdownView);if(!r)return!1;let n=r.file.stat.size===0;if(t)return n;n&&app.vault.modify(r.file,xd).then(()=>{this.setKanbanView(r.leaf)}).catch(i=>console.error(i))}}),this.addCommand({id:"add-kanban-lane",name:B("Add a list"),checkCallback:t=>{let r=app.workspace.getActiveViewOfType(tr);if(t)return r&&r instanceof tr;r&&r instanceof tr&&r.emitter.emit("showLaneForm",void 0)}})}registerMonkeyPatches(){let t=this;app.workspace.onLayoutReady(()=>{this.register(Sl(app.commands,{executeCommand(r){return function(n){let i=app.workspace.getActiveViewOfType(tr);return i&&(n==null?void 0:n.id)&&i.emitter.emit("hotkey",n.id),r.call(this,n)}}}))}),this.register(Sl(Ct.WorkspaceLeaf.prototype,{detach(r){return function(){var i;let n=(i=this.view)==null?void 0:i.getState();return(n==null?void 0:n.file)&&t.kanbanFileModes[this.id||n.file]&&delete t.kanbanFileModes[this.id||n.file],r.apply(this)}},setViewState(r){return function(n,...i){var a;if(t._loaded&&n.type==="markdown"&&((a=n.state)==null?void 0:a.file)&&t.kanbanFileModes[this.id||n.state.file]!=="markdown"){let o=t.app.metadataCache.getCache(n.state.file);if((o==null?void 0:o.frontmatter)&&o.frontmatter[gn]){let s={...n,type:yn};return t.kanbanFileModes[n.state.file]=yn,r.apply(this,[s,...i])}}return r.apply(this,[n,...i])}}}))}};0&&(module.exports={}); +`;break}case-2:{o=t?" ":" ";break}case-1:{if(!t&&i)continue;o=" ";break}default:o=String.fromCharCode(a)}i=a===-2,n.push(o)}return n.join("")}var vf={};qi(vf,{attentionMarkers:()=>h1,contentInitial:()=>l1,disable:()=>m1,document:()=>s1,flow:()=>u1,flowInitial:()=>c1,insideSpan:()=>p1,string:()=>d1,text:()=>f1});m();var s1={[42]:Vt,[43]:Vt,[45]:Vt,[48]:Vt,[49]:Vt,[50]:Vt,[51]:Vt,[52]:Vt,[53]:Vt,[54]:Vt,[55]:Vt,[56]:Vt,[57]:Vt,[62]:cl},l1={[91]:cf},c1={[-2]:Qa,[-1]:Qa,[32]:Qa},u1={[35]:df,[42]:Qr,[45]:[vl,Qr],[60]:pf,[61]:vl,[95]:Qr,[96]:fl,[126]:fl},d1={[38]:dl,[92]:ul},f1={[-5]:Xa,[-4]:Xa,[-3]:Xa,[33]:mf,[38]:dl,[42]:Ga,[60]:[af,hf],[91]:gf,[92]:[uf,ul],[93]:Gr,[95]:Ga,[96]:sf},p1={null:[Ga,lE]},h1={null:[42,95]},m1={null:[]};function hE(e={}){let t=Gw([vf].concat(e.extensions||[])),r={defined:[],lazy:{},constructs:t,content:n(nE),document:n(rE),flow:n(sE),string:n(cE),text:n(uE)};return r;function n(i){return a;function a(o){return pE(r,i,o)}}}m();var mE=/[\0\t\n\r]/g;function gE(){let e=1,t="",r=!0,n;return i;function i(a,o,s){let u=[],l,c,d,f,p;for(a=t+a.toString(o),d=0,t="",r&&(a.charCodeAt(0)===65279&&d++,r=void 0);d13&&r<32||r>126&&r<160||r>55295&&r<57344||r>64975&&r<65008||(r&65535)==65535||(r&65535)==65534||r>1114111?"\uFFFD":String.fromCharCode(r)}m();var g1=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function yE(e){return e.replace(g1,v1)}function v1(e,t,r){if(t)return t;if(r.charCodeAt(0)===35){let i=r.charCodeAt(1),a=i===120||i===88;return yl(r.slice(a?2:1),a?16:10)}return Hi(r)||e}m();function Za(e){return!e||typeof e!="object"?"":"position"in e||"type"in e?bE(e.position):"start"in e||"end"in e?bE(e):"line"in e||"column"in e?yf(e):""}function yf(e){return wE(e&&e.line)+":"+wE(e&&e.column)}function bE(e){return yf(e&&e.start)+"-"+yf(e&&e.end)}function wE(e){return e&&typeof e=="number"?e:1}var bf={}.hasOwnProperty,bl=function(e,t,r){return typeof t!="string"&&(r=t,t=void 0),y1(r)(vE(hE(r).document().write(gE()(e,t,!0))))};function y1(e={}){let t=EE({transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:u(Zr),autolinkProtocol:se,autolinkEmail:se,atxHeading:u($n),blockQuote:u(dt),characterEscape:se,characterReference:se,codeFenced:u(vt),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:u(vt,l),codeText:u(Ot,l),codeTextData:se,data:se,codeFlowValue:se,definition:u(Bn),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:u(Kn),hardBreakEscape:u(bn),hardBreakTrailing:u(bn),htmlFlow:u(wn,l),htmlFlowData:se,htmlText:u(wn,l),htmlTextData:se,image:u(Un),label:l,link:u(Zr),listItem:u(ti),listItemValue:y,listOrdered:u(ei,g),listUnordered:u(ei),paragraph:u(rr),reference:j,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:u($n),strong:u(Rt),thematicBreak:u(yt)},exit:{atxHeading:d(),atxHeadingSequence:z,autolink:d(),autolinkEmail:Ue,autolinkProtocol:ke,blockQuote:d(),characterEscapeValue:G,characterReferenceMarkerHexadecimal:te,characterReferenceMarkerNumeric:te,characterReferenceValue:we,codeFenced:d(C),codeFencedFence:T,codeFencedFenceInfo:b,codeFencedFenceMeta:k,codeFlowValue:G,codeIndented:d(A),codeText:d(ge),codeTextData:G,data:G,definition:d(),definitionDestinationString:K,definitionLabelString:H,definitionTitleString:D,emphasis:d(),hardBreakEscape:d(ie),hardBreakTrailing:d(ie),htmlFlow:d(he),htmlFlowData:G,htmlText:d(pe),htmlTextData:G,image:d(Te),label:N,labelText:F,lineEnding:Q,link:d(be),listItem:d(),listOrdered:d(),listUnordered:d(),paragraph:d(),referenceString:q,resourceDestinationString:ut,resourceTitleString:Ge,resource:W,setextHeading:d(J),setextHeadingLineSequence:Z,setextHeadingText:U,strong:d(),thematicBreak:d()}},e.mdastExtensions||[]),r={};return n;function n(Y){let oe={type:"root",children:[]},Ee=[oe],ze=[],Tt=[],En={stack:Ee,tokenStack:ze,config:t,enter:c,exit:f,buffer:l,resume:p,setData:a,getData:o},qe=-1;for(;++qe0){let st=ze[ze.length-1];(st[1]||xE).call(En,void 0,st[0])}for(oe.position={start:s(Y.length>0?Y[0][1].start:{line:1,column:1,offset:0}),end:s(Y.length>0?Y[Y.length-2][1].end:{line:1,column:1,offset:0})},qe=-1;++qe".charCodeAt(0)?o(g):(i.enter(e),i.enter(`${e}Marker`),d(g))}function d(g){return u===t.length?(i.exit(`${e}Marker`),f(g)):g!==t.charCodeAt(u)?o(g):(i.consume(g),u++,d)}function f(g){return i.enter(`${e}Data`),i.enter(`${e}Target`),p(g)}function p(g){return Qe(g)||"<".charCodeAt(0)===g||"#".charCodeAt(0)===g||g===null?s?(i.exit(`${e}Target`),i.exit(`${e}Data`),i.exit(e),a(g)):o(g):(s=!0,i.consume(g),p)}}let n={tokenize:r};return{text:{[t.charCodeAt(0)]:n}}}function PE(){let e="hashtag";function t(i){this.enter({type:e,value:null},i)}function r(i){let a=this.sliceSerialize(i),o=Bi(this.stack);o.value=a}function n(i){this.exit(i)}return{enter:{[e]:t},exit:{[`${e}Target`]:r,[e]:n}}}m();m();var Ui={carriageReturn:-5,lineFeed:-4,carriageReturnLineFeed:-3,horizontalTab:-2,virtualSpace:-1,eof:null,nul:0,soh:1,stx:2,etx:3,eot:4,enq:5,ack:6,bel:7,bs:8,ht:9,lf:10,vt:11,ff:12,cr:13,so:14,si:15,dle:16,dc1:17,dc2:18,dc3:19,dc4:20,nak:21,syn:22,etb:23,can:24,em:25,sub:26,esc:27,fs:28,gs:29,rs:30,us:31,space:32,exclamationMark:33,quotationMark:34,numberSign:35,dollarSign:36,percentSign:37,ampersand:38,apostrophe:39,leftParenthesis:40,rightParenthesis:41,asterisk:42,plusSign:43,comma:44,dash:45,dot:46,slash:47,digit0:48,digit1:49,digit2:50,digit3:51,digit4:52,digit5:53,digit6:54,digit7:55,digit8:56,digit9:57,colon:58,semicolon:59,lessThan:60,equalsTo:61,greaterThan:62,questionMark:63,atSign:64,uppercaseA:65,uppercaseB:66,uppercaseC:67,uppercaseD:68,uppercaseE:69,uppercaseF:70,uppercaseG:71,uppercaseH:72,uppercaseI:73,uppercaseJ:74,uppercaseK:75,uppercaseL:76,uppercaseM:77,uppercaseN:78,uppercaseO:79,uppercaseP:80,uppercaseQ:81,uppercaseR:82,uppercaseS:83,uppercaseT:84,uppercaseU:85,uppercaseV:86,uppercaseW:87,uppercaseX:88,uppercaseY:89,uppercaseZ:90,leftSquareBracket:91,backslash:92,rightSquareBracket:93,caret:94,underscore:95,graveAccent:96,lowercaseA:97,lowercaseB:98,lowercaseC:99,lowercaseD:100,lowercaseE:101,lowercaseF:102,lowercaseG:103,lowercaseH:104,lowercaseI:105,lowercaseJ:106,lowercaseK:107,lowercaseL:108,lowercaseM:109,lowercaseN:110,lowercaseO:111,lowercaseP:112,lowercaseQ:113,lowercaseR:114,lowercaseS:115,lowercaseT:116,lowercaseU:117,lowercaseV:118,lowercaseW:119,lowercaseX:120,lowercaseY:121,lowercaseZ:122,leftCurlyBrace:123,verticalBar:124,rightCurlyBrace:125,tilde:126,del:127,byteOrderMarker:65279,replacementCharacter:65533};m();var kf={data:"data",whitespace:"whitespace",lineEnding:"lineEnding",lineEndingBlank:"lineEndingBlank",linePrefix:"linePrefix",lineSuffix:"lineSuffix",atxHeading:"atxHeading",atxHeadingSequence:"atxHeadingSequence",atxHeadingText:"atxHeadingText",autolink:"autolink",autolinkEmail:"autolinkEmail",autolinkMarker:"autolinkMarker",autolinkProtocol:"autolinkProtocol",characterEscape:"characterEscape",characterEscapeValue:"characterEscapeValue",characterReference:"characterReference",characterReferenceMarker:"characterReferenceMarker",characterReferenceMarkerNumeric:"characterReferenceMarkerNumeric",characterReferenceMarkerHexadecimal:"characterReferenceMarkerHexadecimal",characterReferenceValue:"characterReferenceValue",codeFenced:"codeFenced",codeFencedFence:"codeFencedFence",codeFencedFenceSequence:"codeFencedFenceSequence",codeFencedFenceInfo:"codeFencedFenceInfo",codeFencedFenceMeta:"codeFencedFenceMeta",codeFlowValue:"codeFlowValue",codeIndented:"codeIndented",codeText:"codeText",codeTextData:"codeTextData",codeTextPadding:"codeTextPadding",codeTextSequence:"codeTextSequence",content:"content",definition:"definition",definitionDestination:"definitionDestination",definitionDestinationLiteral:"definitionDestinationLiteral",definitionDestinationLiteralMarker:"definitionDestinationLiteralMarker",definitionDestinationRaw:"definitionDestinationRaw",definitionDestinationString:"definitionDestinationString",definitionLabel:"definitionLabel",definitionLabelMarker:"definitionLabelMarker",definitionLabelString:"definitionLabelString",definitionMarker:"definitionMarker",definitionTitle:"definitionTitle",definitionTitleMarker:"definitionTitleMarker",definitionTitleString:"definitionTitleString",emphasis:"emphasis",emphasisSequence:"emphasisSequence",emphasisText:"emphasisText",escapeMarker:"escapeMarker",hardBreakEscape:"hardBreakEscape",hardBreakTrailing:"hardBreakTrailing",htmlFlow:"htmlFlow",htmlFlowData:"htmlFlowData",htmlText:"htmlText",htmlTextData:"htmlTextData",image:"image",label:"label",labelText:"labelText",labelLink:"labelLink",labelImage:"labelImage",labelMarker:"labelMarker",labelImageMarker:"labelImageMarker",labelEnd:"labelEnd",link:"link",paragraph:"paragraph",reference:"reference",referenceMarker:"referenceMarker",referenceString:"referenceString",resource:"resource",resourceDestination:"resourceDestination",resourceDestinationLiteral:"resourceDestinationLiteral",resourceDestinationLiteralMarker:"resourceDestinationLiteralMarker",resourceDestinationRaw:"resourceDestinationRaw",resourceDestinationString:"resourceDestinationString",resourceMarker:"resourceMarker",resourceTitle:"resourceTitle",resourceTitleMarker:"resourceTitleMarker",resourceTitleString:"resourceTitleString",setextHeading:"setextHeading",setextHeadingText:"setextHeadingText",setextHeadingLine:"setextHeadingLine",setextHeadingLineSequence:"setextHeadingLineSequence",strong:"strong",strongSequence:"strongSequence",strongText:"strongText",thematicBreak:"thematicBreak",thematicBreakSequence:"thematicBreakSequence",blockQuote:"blockQuote",blockQuotePrefix:"blockQuotePrefix",blockQuoteMarker:"blockQuoteMarker",blockQuotePrefixWhitespace:"blockQuotePrefixWhitespace",listOrdered:"listOrdered",listUnordered:"listUnordered",listItemIndent:"listItemIndent",listItemMarker:"listItemMarker",listItemPrefix:"listItemPrefix",listItemPrefixWhitespace:"listItemPrefixWhitespace",listItemValue:"listItemValue",chunkDocument:"chunkDocument",chunkContent:"chunkContent",chunkFlow:"chunkFlow",chunkText:"chunkText",chunkString:"chunkString"};var S1={tokenize:_1},FE={text:{[Ui.leftSquareBracket]:S1}};function _1(e,t,r){let n=this;return i;function i(s){return n.previous!==Ui.eof||!n._gfmTasklistFirstContentOfListItem?r(s):(e.enter("taskListCheck"),e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),a)}function a(s){return Ke(s)?(e.enter("taskListCheckValueUnchecked"),e.consume(s),e.exit("taskListCheckValueUnchecked"),o):s!==Ui.rightSquareBracket?(e.enter("taskListCheckValueChecked"),e.consume(s),e.exit("taskListCheckValueChecked"),o):r(s)}function o(s){return s===Ui.rightSquareBracket?(e.enter("taskListCheckMarker"),e.consume(s),e.exit("taskListCheckMarker"),e.exit("taskListCheck"),e.check({tokenize:C1},t,r)):r(s)}}function C1(e,t,r){let n=this;return Se(e,i,kf.whitespace);function i(a){let o=n.events[n.events.length-1];return o&&o[1].type===kf.whitespace&&a!==Ui.eof&&!Qe(a)?t(a):r(a)}}var NE={exit:{taskListCheckValueChecked:OE,taskListCheckValueUnchecked:OE,paragraph:D1}};function OE(e){let t=this.stack[this.stack.length-2];t.checked=e.type==="taskListCheckValueChecked",t.checkChar=this.sliceSerialize(e)}function D1(e){let t=this.stack[this.stack.length-2],r=this.stack[this.stack.length-1],n=t.children,i=r.children[0],a=-1,o;if(t&&t.type==="listItem"&&typeof t.checked=="boolean"&&i&&i.type==="text"){for(;++a=0;i--){if(!t&&/[`%\n\r]/.test(e[i])){e[i]==="`"&&(r++,r===3&&(t=!0,n=i-1));continue}else if(!t)return{};if(e[i]==="`"&&e[i-1]==="`"&&e[i-2]==="`"&&/[\r\n]/.test(e[i-3]))return JSON.parse(e.slice(i+1,n).trim())}}function HE(e){return[FE,Ki("date",`${e.getSetting("date-trigger")}{`,"}"),Ki("dateLink",`${e.getSetting("date-trigger")}[[`,"]]"),Ki("time",`${e.getSetting("time-trigger")}{`,"}"),Ki("embedWikilink","![[","]]"),Ki("wikilink","[[","]]"),LE(),ME()]}function BE(e){return[NE,$i("date",(t,r)=>{!t||(r.date=t)}),$i("dateLink",(t,r)=>{!t||(r.date=t)}),$i("time",(t,r)=>{!t||(r.time=t)}),$i("embedWikilink",(t,r)=>{if(!t)return;let n=zr(t),i=e.app.metadataCache.getFirstLinkpathDest(n.root,e.file.path);r.fileAccessor={target:n.root,isEmbed:!0,stats:i==null?void 0:i.stat}}),$i("wikilink",(t,r)=>{if(!t)return;let n=zr(t),i=e.app.metadataCache.getFirstLinkpathDest(n.root,e.file.path);if(r.fileAccessor={target:n.root,isEmbed:!1},i){let a=Md(e,i);r.fileMetadata=a.fileMetadata,r.fileMetadataOrder=a.fileMetadataOrder}}),AE((t,r)=>{if(!t.url||/:\/\//.test(t.url)||!/.md$/.test(t.url))return;let n=e.app.metadataCache.getFirstLinkpathDest(decodeURIComponent(t.url),e.file.path);if(r)t.type="embedLink",t.fileAccessor={target:decodeURIComponent(t.url),isEmbed:!0,stats:n.stat};else if(t.fileAccessor={target:decodeURIComponent(t.url),isEmbed:!1},n){let i=Md(e,n);t.fileMetadata=i.fileMetadata,t.fileMetadataOrder=i.fileMetadataOrder}}),PE(),IE()]}function KE(e,t){let r=T1(t),i={...M1(t)},a={};return Object.keys(r).forEach(o=>{o===gn?(i[o]=r[o],a[o]=r[o]):Aw[o]?i[o]=r[o]:a[o]=r[o]}),e.compileSettings(i),{settings:i,frontmatter:a,ast:bl(t,{extensions:[Ef(["yaml"]),...HE(e)],mdastExtensions:[CE(["yaml"]),...BE(e)]})}}function Sf(e,t){return bl(t,{extensions:HE(e),mdastExtensions:BE(e)})}function kl(e,t,r){let n=e.getSetting("hide-tags-in-title"),i=e.getSetting("hide-date-in-title"),a=Zd(r.children[0]),o=ef(t,a);(o==="[ ]"||o==="[x]")&&(o="");let s=o,u={titleRaw:Rs(o),blockId:void 0,title:"",titleSearch:"",metadata:{dateStr:void 0,date:void 0,time:void 0,timeStr:void 0,tags:[],fileAccessor:void 0,file:void 0,fileMetadata:void 0,fileMetadataOrder:void 0},dom:void 0,isComplete:!!r.checked};return Vw(r,l=>l.type!=="paragraph",l=>{let c=l;if(c.type==="blockid")return u.blockId=c.value,!0;if(c.type==="hashtag")return u.metadata.tags||(u.metadata.tags=[]),u.metadata.tags.push("#"+c.value),n&&(s=Os(s,{start:l.position.start.offset-a.start,end:l.position.end.offset-a.start})),!0;if(c.type==="date"||c.type==="dateLink")return u.metadata.dateStr=c.date,i&&(s=Os(s,{start:l.position.start.offset-a.start,end:l.position.end.offset-a.start})),!0;if(c.type==="time")return u.metadata.timeStr=c.time,s=Os(s,{start:l.position.start.offset-a.start,end:l.position.end.offset-a.start}),!0;if(c.type==="embedWikilink")return u.metadata.fileAccessor=c.fileAccessor,!0;if(c.type==="wikilink"||c.type==="link"&&c.fileAccessor)return u.metadata.fileAccessor=c.fileAccessor,u.metadata.fileMetadata=c.fileMetadata,u.metadata.fileMetadataOrder=c.fileMetadataOrder,!0;if(c.type==="embedLink")return u.metadata.fileAccessor=c.fileAccessor,!0}),u.title=Rs(Sb(s)),u}function I1(e,t,r){if(e.type!=="heading"||ja(e,{includeImageAlt:!1})!==P("Archive"))return!1;let n=Ww(t,r);return n&&n.type==="thematicBreak"}function UE(e,t,r,n,i){let a=[],o=[];return n.children.forEach((s,u)=>{if(s.type==="heading"){let l=I1(s,n.children,u),c=Zd(s),d=ef(i,c),f=!1,p=zw(n.children,u,"list",g=>{if(g.type==="heading")return!1;if(g.type==="paragraph"){let y=ja(g);if(y.startsWith("%% kanban:settings"))return!1;if(y===P("Complete"))return f=!0,!0}return!0});if(l&&p){o.push(...p.children.map(g=>({...ps,id:Ae(),data:kl(e,i,g)})));return}p?a.push({...xr,children:p.children.map(g=>({...ps,id:Ae(),data:kl(e,i,g)})),id:Ae(),data:{...jr(d),shouldMarkItemsComplete:f}}):a.push({...xr,children:[],id:Ae(),data:{...jr(d),shouldMarkItemsComplete:f}})}}),{...hs,id:e.file.path,children:a,data:{settings:t,frontmatter:r,archive:o,isSearching:!1,errors:[]}}}async function _f(e,t,r){let n=`- [${t.data.isComplete?"x":" "}] ${Ra(r)}${t.data.blockId?` ^${t.data.blockId}`:""}`,i=Sf(e,n),a=kl(e,n,i.children[0].children[0]),o=(0,xl.default)(t,{data:{$set:a}});try{await qa(e,o)}catch(s){console.error(s)}return o}async function VE(e,t,r,n){let i=`- [${r?"x":" "}] ${Ra(t)}`,a=Sf(e,i),o=kl(e,i,a.children[0].children[0]);o.forceEditMode=!!n;let s={...ps,id:Ae(),data:o};try{await qa(e,s)}catch(u){console.error(u)}return s}async function WE(e,t){try{return(0,xl.default)(t,{children:{$set:await Promise.all(t.children.map(async r=>{try{return(0,xl.default)(r,{children:{$set:await Promise.all(r.children.map(n=>_f(e,n,n.data.titleRaw)))}})}catch(n){throw e.setError(n),n}}))}})}catch(r){throw e.setError(r),r}}function zE(e){return`- [${e.data.isComplete?"x":" "}] ${Ra(e.data.titleRaw)}${e.data.blockId?` ^${e.data.blockId}`:""}`}function A1(e){let t=[];return t.push(`## ${Ra(Jo(e.data.title,e.data.maxItems))}`),t.push(""),e.data.shouldMarkItemsComplete&&t.push(zb),e.children.forEach(r=>{t.push(zE(r))}),t.push(""),t.push(""),t.push(""),t.join(` +`)}function L1(e){if(e.length){let t=[jb,"",`## ${P("Archive")}`,""];return e.forEach(r=>{t.push(zE(r))}),t.join(` +`)}return""}function jE(e){let t=e.children.reduce((n,i)=>n+A1(i),"");return["---","",(0,$E.stringifyYaml)(e.data.frontmatter),"---","",""].join(` +`)+t+L1(e.data.archive)+qb(e.data.settings)}var Cf=class{constructor(t){this.stateManager=t}newItem(t,r,n){return VE(this.stateManager,t,r,n)}updateItemContent(t,r){return _f(this.stateManager,t,r)}boardToMd(t){return jE(t)}mdToBoard(t){let{ast:r,settings:n,frontmatter:i}=KE(this.stateManager,t),a=UE(this.stateManager,n,i,r,t);if(!this.stateManager.hasError()&&this.stateManager.state){let s=Jd(this.stateManager.state,a).filter(l=>["/id","/dom","/date","/time","/titleSearch","/file"].every(c=>!l.path.endsWith(c))),u=(0,qE.immutableJSONPatch)(this.stateManager.state,s);return Yw(this.stateManager,u,s)}return qw(this.stateManager,a)}reparseBoard(){return WE(this.stateManager,this.stateManager.state)}};var Df=class{constructor(t,r,n,i,a){this.stateReceivers=[];this.settingsNotifiers=new Map;this.viewSet=new Set;this.compiledSettings={};this.newBoardPromise=null;this.getSetting=(t,r)=>r&&r[t]!==void 0?r[t]:this.compiledSettings&&this.compiledSettings[t]!==void 0?this.compiledSettings[t]:this.getSettingRaw(t);this.getSettingRaw=(t,r)=>{var n,i;return r&&r[t]!==void 0?r[t]:((i=(n=this.state)==null?void 0:n.data)==null?void 0:i.settings)&&this.state.data.settings[t]!==void 0?this.state.data.settings[t]:this.getGlobalSetting(t)};this.getGlobalSetting=t=>{let r=this.getGlobalSettings();return r&&r[t]!==void 0?r[t]:null};this.app=t,this.file=r.file,this.onEmpty=i,this.getGlobalSettings=a,this.parser=new Cf(this),this.registerView(r,n,!0)}getAView(){return this.viewSet.values().next().value}hasError(){var t,r,n;return!!((n=(r=(t=this.state)==null?void 0:t.data)==null?void 0:r.errors)==null?void 0:n.length)}registerView(t,r,n){this.viewSet.has(t)||(this.viewSet.add(t),t.initHeaderButtons()),n&&(this.newBoardPromise!==null?this.newBoardPromise.then(()=>this.newBoard(r)):this.newBoardPromise=this.newBoard(r).then(()=>{this.newBoardPromise=null}).catch(i=>{console.error(i),this.setError(i)}))}unregisterView(t){this.viewSet.has(t)&&(this.viewSet.delete(t),this.viewSet.size===0&&this.onEmpty())}buildSettingRetrievers(){return{getGlobalSettings:this.getGlobalSettings,getGlobalSetting:this.getGlobalSetting,getSetting:this.getSetting}}async newBoard(t){try{await this.setState(await this.getParsedBoard(t),!1)}catch(r){this.setError(r)}}saveToDisk(){if(this.state.data.errors.length>0)return;let t=this.getAView();if(t){let r=this.parser.boardToMd(this.state);t.requestSaveToDisk(r),this.viewSet.forEach(n=>{n.data=r})}}softRefresh(){this.stateReceivers.forEach(t=>t({...this.state}))}async forceRefresh(){if(this.state)try{this.compileSettings(),this.state=await this.parser.reparseBoard(),this.stateReceivers.forEach(t=>t(this.state)),this.settingsNotifiers.forEach(t=>{t.forEach(r=>r())}),this.viewSet.forEach(t=>t.initHeaderButtons())}catch(t){console.error(t),this.setError(t)}}async setState(t,r=!0){var n;try{let i=(n=this.state)==null?void 0:n.data.settings,a=typeof t=="function"?await t(this.state):t,o=a==null?void 0:a.data.settings;i&&o&&Gb(i,o)?(this.state=(0,Vi.default)(this.state,{data:{settings:{$set:o}}}),this.compileSettings(),this.state=await this.parser.reparseBoard()):(this.state=a,this.compileSettings()),this.viewSet.forEach(s=>s.initHeaderButtons()),r&&this.saveToDisk(),this.stateReceivers.forEach(s=>s(this.state)),i!==o&&o&&this.settingsNotifiers.forEach((s,u)=>{(!i&&o||i[u]!==o[u])&&s.forEach(l=>l())})}catch(i){console.error(i),this.setError(i)}}useState(){let[t,r]=L.useState(this.state);return L.useEffect(()=>(this.stateReceivers.push(n=>{r(n)}),r(this.state),()=>{this.stateReceivers.remove(r)}),[]),t}useSetting(t){let[r,n]=L.useState(this.getSetting(t));return L.useEffect(()=>{let i=()=>{n(this.getSetting(t))};return this.settingsNotifiers.has(t)?this.settingsNotifiers.get(t).push(i):this.settingsNotifiers.set(t,[i]),()=>{this.settingsNotifiers.get(t).remove(i)}},[]),r}compileSettings(t){var s,u,l,c,d,f,p;let r=this.getGlobalSetting("metadata-keys")||[],n=this.getSettingRaw("metadata-keys",t)||[],i=this.getSettingRaw("date-format",t)||Nr(this.app),a=this.getSettingRaw("time-format",t)||ui(this.app),o=this.getSettingRaw("prepend-archive-format",t)||`${i} ${a}`;this.compiledSettings={"date-format":i,"date-display-format":this.getSettingRaw("date-display-format",t)||i,"date-trigger":this.getSettingRaw("date-trigger",t)||js,"time-format":a,"time-trigger":this.getSettingRaw("time-trigger",t)||qs,"link-date-to-daily-note":this.getSettingRaw("link-date-to-daily-note",t),"hide-date-in-title":this.getSettingRaw("hide-date-in-title",t),"hide-tags-in-title":this.getSettingRaw("hide-tags-in-title",t),"metadata-keys":[...r,...n],"prepend-archive-separator":this.getSettingRaw("prepend-archive-separator")||"","prepend-archive-format":o,"show-add-list":(s=this.getSettingRaw("show-add-list",t))!=null?s:!0,"show-archive-all":(u=this.getSettingRaw("show-archive-all",t))!=null?u:!0,"show-view-as-markdown":(l=this.getSettingRaw("show-view-as-markdown",t))!=null?l:!0,"show-board-settings":(c=this.getSettingRaw("show-board-settings",t))!=null?c:!0,"show-search":(d=this.getSettingRaw("show-search",t))!=null?d:!0,"tag-colors":(f=this.getSettingRaw("tag-colors",t))!=null?f:[],"date-colors":(p=this.getSettingRaw("date-colors",t))!=null?p:[]}}async getParsedBoard(t){let r=t.trim(),n={...hs,id:this.file.path,children:[],data:{archive:[],settings:{"kanban-plugin":"basic"},frontmatter:{},isSearching:!1,errors:[]}};try{r&&(n=await this.parser.mdToBoard(r))}catch(i){console.error(i),n=(0,Vi.default)(n,{data:{errors:{$push:[{description:i.toString(),stack:i.stack}]}}})}return n}setError(t){this.setState((0,Vi.default)(this.state,{data:{errors:{$push:[{description:t.toString(),stack:t.stack}]}}}),!1)}onFileMetadataChange(){this.reparseBoardFromMd()}async reparseBoardFromMd(){try{this.setState(await this.getParsedBoard(this.getAView().data),!1)}catch(t){console.error(t),this.setError(t)}}async archiveCompletedCards(){let t=this.state,r=[],n=!!this.getSetting("prepend-archive-date"),i=this.getSetting("prepend-archive-separator"),a=this.getSetting("prepend-archive-format"),o=u=>{let l=[(0,YE.moment)().format(a)];i&&l.push(i),l.push(u.data.titleRaw);let c=l.join(" ");return this.parser.updateItemContent(u,c)},s=t.children.map(u=>(0,Vi.default)(u,{children:{$set:u.children.filter(l=>((u.data.shouldMarkItemsComplete||l.data.isComplete)&&r.push(l),!l.data.isComplete&&!u.data.shouldMarkItemsComplete))}}));this.app.workspace.trigger("kanban:board-cards-archived",this.file,r);try{this.setState((0,Vi.default)(t,{children:{$set:s},data:{archive:{$push:n?await Promise.all(r.map(u=>o(u))):r}}}))}catch(u){this.setError(u)}}getNewItem(t,r,n){return this.parser.newItem(t,r,n)}updateItemContent(t,r){return this.parser.updateItemContent(t,r)}};var Tf=class extends Dt.Plugin{constructor(){super(...arguments);this.settings={};this.kanbanFileModes={};this.stateManagers=new Map;this.windowRegistry=new Map;this._loaded=!1;this.isShiftPressed=!1;this.handleShift=t=>{this.isShiftPressed=t.shiftKey}}async loadSettings(){this.settings=Object.assign({},await this.loadData())}async saveSettings(){await this.saveData(this.settings)}unload(){Promise.all(app.workspace.getLeavesOfType(yn).map(t=>(this.kanbanFileModes[t.id]="markdown",this.setMarkdownView(t)))).then(()=>{super.unload()})}onunload(){this.windowRegistry.forEach((t,r)=>{t.viewStateReceivers.forEach(n=>n([])),this.unmount(r)}),this.unmount(window),this.stateManagers.clear(),this.windowRegistry.clear(),this.kanbanFileModes={},window.removeEventListener("keydown",this.handleShift),window.removeEventListener("keyup",this.handleShift),app.workspace.unregisterHoverLinkSource(gn)}async onload(){var t,r;await this.loadSettings(),this.registerEvent(app.workspace.on("window-open",(n,i)=>{this.mount(i)})),this.registerEvent(app.workspace.on("window-close",(n,i)=>{this.unmount(i)})),this.settingsTab=new Vd(this,{onSettingsChange:async n=>{this.settings=n,await this.saveSettings(),this.stateManagers.forEach(i=>{i.forceRefresh()})}}),this.addSettingTab(this.settingsTab),this.registerView(yn,n=>new tr(n,this)),this.registerMonkeyPatches(),this.registerCommands(),this.registerEvents(),this.mount(window),(r=(t=app.workspace.floatingSplit)==null?void 0:t.children)==null||r.forEach(n=>{this.mount(n.win)}),window.addEventListener("keydown",this.handleShift),window.addEventListener("keyup",this.handleShift)}getKanbanViews(t){let r=this.windowRegistry.get(t);return r?Array.from(r.viewMap.values()):[]}getKanbanView(t,r){let n=this.windowRegistry.get(r);if(n==null?void 0:n.viewMap.has(t))return n.viewMap.get(t);for(let i of this.windowRegistry.values())if(i.viewMap.has(t))return i.viewMap.get(t);return null}getStateManager(t){return this.stateManagers.get(t)}getStateManagerFromViewID(t,r){let n=this.getKanbanView(t,r);return n?this.stateManagers.get(n.file):null}useViewState(t){let[r,n]=L.useState(this.getKanbanViews(t));return L.useEffect(()=>{let i=this.windowRegistry.get(t);return i==null||i.viewStateReceivers.push(n),()=>{i==null||i.viewStateReceivers.remove(n)}},[t]),r}addView(t,r,n){let i=t.getWindow(),a=this.windowRegistry.get(i);if(!a)return;a.viewMap.has(t.id)||a.viewMap.set(t.id,t);let o=t.file;this.stateManagers.has(o)?this.stateManagers.get(o).registerView(t,r,n):this.stateManagers.set(o,new Df(this.app,t,r,()=>this.stateManagers.delete(o),()=>this.settings)),a.viewStateReceivers.forEach(s=>s(this.getKanbanViews(i)))}removeView(t){let r=Array.from(this.windowRegistry.entries()).find(([,o])=>o.viewMap.has(t.id),[]);if(!r)return;let[n,i]=r,a=t.file;i.viewMap.has(t.id)&&i.viewMap.delete(t.id),this.stateManagers.has(a)&&(this.stateManagers.get(a).unregisterView(t),i.viewStateReceivers.forEach(o=>o(this.getKanbanViews(n))))}handleViewFileRename(t,r){let n=t.getWindow();if(!this.windowRegistry.has(n))return;let i=this.windowRegistry.get(n),a=`${t.leaf.id}:::${r}`;i.viewMap.has(a)&&i.viewMap.delete(a),i.viewMap.has(t.id)||i.viewMap.set(t.id,t),t.isPrimary&&this.getStateManager(t.file).softRefresh()}mount(t){if(this.windowRegistry.has(t))return;let r=t.document.body.createDiv();this.windowRegistry.set(t,{viewMap:new Map,viewStateReceivers:[],appRoot:r}),L.render(Vb(t,this),r)}unmount(t){if(!this.windowRegistry.has(t))return;let r=this.windowRegistry.get(t);for(let n of r.viewMap.values())n.destroy();L.unmountComponentAtNode(r.appRoot),r.appRoot.remove(),r.viewMap.clear(),r.viewStateReceivers.length=0,r.appRoot=null,this.windowRegistry.delete(t)}async setMarkdownView(t,r=!0){await t.setViewState({type:"markdown",state:t.view.getState(),popstate:!0},{focus:r})}async setKanbanView(t){await t.setViewState({type:yn,state:t.view.getState(),popstate:!0})}async newKanban(t){var n;let r=t||app.fileManager.getNewFileParent(((n=app.workspace.getActiveFile())==null?void 0:n.path)||"");try{let i=await app.fileManager.createNewMarkdownFile(r,P("Untitled Kanban"));await app.vault.modify(i,Td),await app.workspace.getLeaf().setViewState({type:yn,state:{file:i.path}})}catch(i){console.error("Error creating kanban board:",i)}}registerEvents(){this.registerEvent(app.workspace.on("file-menu",(r,n,i,a)=>{if(n instanceof Dt.TFolder){r.addItem(o=>{o.setTitle(P("New kanban board")).setIcon(Ua).onClick(()=>this.newKanban(n))});return}if(!Dt.Platform.isMobile&&n instanceof Dt.TFile&&a&&i==="sidebar-context-menu"&&bc(n)){let o=this.getKanbanViews(Ze(a.view.containerEl)),s=!1;for(let u of o)if(u.file===n){u.onPaneMenu(r,"more-options",!1),s=!0;break}if(!s){r.addItem(u=>{u.setTitle(P("Open as kanban board")).setIcon(Ua).setSection("pane").onClick(()=>{this.kanbanFileModes[a.id||n.path]=yn,this.setKanbanView(a)})});return}}(a==null?void 0:a.view)instanceof Dt.MarkdownView&&n instanceof Dt.TFile&&i==="pane-more-options"&&bc(n)&&r.addItem(o=>{o.setTitle(P("Open as kanban board")).setIcon(Ua).setSection("pane").onClick(()=>{this.kanbanFileModes[a.id||n.path]=yn,this.setKanbanView(a)})})})),this.registerEvent(app.vault.on("rename",(r,n)=>{app.workspace.getLeavesOfType(yn).forEach(a=>{a.view.handleRename(r.path,n)})}));let t=(0,Dt.debounce)(r=>{this.stateManagers.forEach(n=>{n.file!==r&&n.onFileMetadataChange()})},2e3,!0);this.registerEvent(app.vault.on("modify",r=>{r instanceof Dt.TFile&&t(r)})),this.registerEvent(app.metadataCache.on("changed",r=>{t(r)})),this.registerEvent(app.metadataCache.on("dataview:metadata-change",(r,n)=>{t(n)})),this.registerEvent(app.metadataCache.on("dataview:api-ready",()=>{this.stateManagers.forEach(r=>{r.forceRefresh()})})),app.workspace.registerHoverLinkSource(gn,{display:"Kanban",defaultMod:!0})}registerCommands(){this.addCommand({id:"create-new-kanban-board",name:P("Create new board"),callback:()=>this.newKanban()}),this.addCommand({id:"archive-completed-cards",name:P("Archive completed cards in active board"),checkCallback:t=>{let r=app.workspace.getActiveViewOfType(tr);if(!r)return!1;if(t)return!0;this.stateManagers.get(r.file).archiveCompletedCards()}}),this.addCommand({id:"toggle-kanban-view",name:P("Toggle between Kanban and markdown mode"),checkCallback:t=>{let r=app.workspace.getActiveFile();if(!r)return!1;let n=app.metadataCache.getFileCache(r),i=!!(n==null?void 0:n.frontmatter)&&!!n.frontmatter[gn];if(t)return i;let a=app.workspace.getActiveViewOfType(tr);if(a)this.kanbanFileModes[a.leaf.id||r.path]="markdown",this.setMarkdownView(a.leaf);else if(i){let o=app.workspace.getActiveViewOfType(Dt.MarkdownView);o&&(this.kanbanFileModes[o.leaf.id||r.path]=yn,this.setKanbanView(o.leaf))}}}),this.addCommand({id:"convert-to-kanban",name:P("Convert empty note to Kanban"),checkCallback:t=>{let r=app.workspace.getActiveViewOfType(Dt.MarkdownView);if(!r)return!1;let n=r.file.stat.size===0;if(t)return n;n&&app.vault.modify(r.file,Td).then(()=>{this.setKanbanView(r.leaf)}).catch(i=>console.error(i))}}),this.addCommand({id:"add-kanban-lane",name:P("Add a list"),checkCallback:t=>{let r=app.workspace.getActiveViewOfType(tr);if(t)return r&&r instanceof tr;r&&r instanceof tr&&r.emitter.emit("showLaneForm",void 0)}})}registerMonkeyPatches(){let t=this;app.workspace.onLayoutReady(()=>{this.register(Il(app.commands,{executeCommand(r){return function(n){let i=app.workspace.getActiveViewOfType(tr);return i&&(n==null?void 0:n.id)&&i.emitter.emit("hotkey",n.id),r.call(this,n)}}}))}),this.register(Il(Dt.WorkspaceLeaf.prototype,{detach(r){return function(){var i;let n=(i=this.view)==null?void 0:i.getState();return(n==null?void 0:n.file)&&t.kanbanFileModes[this.id||n.file]&&delete t.kanbanFileModes[this.id||n.file],r.apply(this)}},setViewState(r){return function(n,...i){var a;if(t._loaded&&n.type==="markdown"&&((a=n.state)==null?void 0:a.file)&&t.kanbanFileModes[this.id||n.state.file]!=="markdown"){let o=t.app.metadataCache.getCache(n.state.file);if((o==null?void 0:o.frontmatter)&&o.frontmatter[gn]){let s={...n,type:yn};return t.kanbanFileModes[n.state.file]=yn,r.apply(this,[s,...i])}}return r.apply(this,[n,...i])}}}))}};0&&(module.exports={}); /*! * Fuse.js v3.4.5 - Lightweight fuzzy-search (http://fusejs.io) * diff --git a/.obsidian/plugins/obsidian-kanban/manifest.json b/.obsidian/plugins/obsidian-kanban/manifest.json index d52e593e..60fd2a05 100644 --- a/.obsidian/plugins/obsidian-kanban/manifest.json +++ b/.obsidian/plugins/obsidian-kanban/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-kanban", "name": "Kanban", - "version": "1.3.20", + "version": "1.4.3", "minAppVersion": "0.15.3", "description": "Create markdown-backed Kanban boards in Obsidian.", "author": "mgmeyers", diff --git a/.obsidian/plugins/obsidian-kanban/styles.css b/.obsidian/plugins/obsidian-kanban/styles.css index 66ad646e..d1c863c9 100644 --- a/.obsidian/plugins/obsidian-kanban/styles.css +++ b/.obsidian/plugins/obsidian-kanban/styles.css @@ -1 +1 @@ -.choices{position:relative;margin-bottom:24px;font-size:16px}.choices:focus{outline:none}.choices:last-child{margin-bottom:0}.choices.is-disabled .choices__inner,.choices.is-disabled .choices__input{background-color:#eaeaea;cursor:not-allowed;-webkit-user-select:none;-ms-user-select:none;user-select:none}.choices.is-disabled .choices__item{cursor:not-allowed}.choices [hidden]{display:none!important}.choices[data-type*=select-one]{cursor:pointer}.choices[data-type*=select-one] .choices__inner{padding-bottom:7.5px}.choices[data-type*=select-one] .choices__input{display:block;width:100%;padding:10px;border-bottom:1px solid #dddddd;background-color:#fff;margin:0}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);padding:0;background-size:8px;position:absolute;top:50%;right:0;margin-top:-10px;margin-right:25px;height:20px;width:20px;border-radius:10em;opacity:.5}.choices[data-type*=select-one] .choices__button:hover,.choices[data-type*=select-one] .choices__button:focus{opacity:1}.choices[data-type*=select-one] .choices__button:focus{box-shadow:0 0 0 2px #00bcd4}.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices[data-type*=select-one]:after{content:"";height:0;width:0;border-style:solid;border-color:#333333 transparent transparent transparent;border-width:5px;position:absolute;right:11.5px;top:50%;margin-top:-2.5px;pointer-events:none}.choices[data-type*=select-one].is-open:after{border-color:transparent transparent #333333 transparent;margin-top:-7.5px}.choices[data-type*=select-one][dir=rtl]:after{left:11.5px;right:auto}.choices[data-type*=select-one][dir=rtl] .choices__button{right:auto;left:0;margin-left:25px;margin-right:0}.choices[data-type*=select-multiple] .choices__inner,.choices[data-type*=text] .choices__inner{cursor:text}.choices[data-type*=select-multiple] .choices__button,.choices[data-type*=text] .choices__button{position:relative;display:inline-block;margin:0 -4px 0 8px;padding-left:16px;border-left:1px solid #008fa1;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);background-size:8px;width:8px;line-height:1;opacity:.75;border-radius:0}.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=select-multiple] .choices__button:focus,.choices[data-type*=text] .choices__button:hover,.choices[data-type*=text] .choices__button:focus{opacity:1}.choices__inner{display:inline-block;vertical-align:top;width:100%;background-color:#f9f9f9;padding:7.5px 7.5px 3.75px;border:1px solid #dddddd;border-radius:2.5px;font-size:14px;min-height:44px;overflow:hidden}.is-focused .choices__inner,.is-open .choices__inner{border-color:#b7b7b7}.is-open .choices__inner{border-radius:2.5px 2.5px 0 0}.is-flipped.is-open .choices__inner{border-radius:0 0 2.5px 2.5px}.choices__list{margin:0;padding-left:0;list-style:none}.choices__list--single{display:inline-block;padding:4px 16px 4px 4px;width:100%}[dir=rtl] .choices__list--single{padding-right:4px;padding-left:16px}.choices__list--single .choices__item{width:100%}.choices__list--multiple{display:inline}.choices__list--multiple .choices__item{display:inline-block;vertical-align:middle;border-radius:20px;padding:4px 10px;font-size:12px;font-weight:500;margin-right:3.75px;margin-bottom:3.75px;background-color:#00bcd4;border:1px solid #00a5bb;color:#fff;word-break:break-all;box-sizing:border-box}.choices__list--multiple .choices__item[data-deletable]{padding-right:5px}[dir=rtl] .choices__list--multiple .choices__item{margin-right:0;margin-left:3.75px}.choices__list--multiple .choices__item.is-highlighted{background-color:#00a5bb;border:1px solid #008fa1}.is-disabled .choices__list--multiple .choices__item{background-color:#aaa;border:1px solid #919191}.choices__list--dropdown{visibility:hidden;z-index:1;position:absolute;width:100%;background-color:#fff;border:1px solid #dddddd;top:100%;margin-top:-1px;border-bottom-left-radius:2.5px;border-bottom-right-radius:2.5px;overflow:hidden;word-break:break-all;will-change:visibility}.choices__list--dropdown.is-active{visibility:visible}.is-open .choices__list--dropdown{border-color:#b7b7b7}.is-flipped .choices__list--dropdown{top:auto;bottom:100%;margin-top:0;margin-bottom:-1px;border-radius:.25rem .25rem 0 0}.choices__list--dropdown .choices__list{position:relative;max-height:300px;overflow:auto;-webkit-overflow-scrolling:touch;will-change:scroll-position}.choices__list--dropdown .choices__item{position:relative;padding:10px;font-size:14px}[dir=rtl] .choices__list--dropdown .choices__item{text-align:right}@media (min-width: 640px){.choices__list--dropdown .choices__item--selectable{padding-right:100px}.choices__list--dropdown .choices__item--selectable:after{content:attr(data-select-text);font-size:12px;opacity:0;position:absolute;right:10px;top:50%;transform:translateY(-50%)}[dir=rtl] .choices__list--dropdown .choices__item--selectable{text-align:right;padding-left:100px;padding-right:10px}[dir=rtl] .choices__list--dropdown .choices__item--selectable:after{right:auto;left:10px}}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:#f2f2f2}.choices__list--dropdown .choices__item--selectable.is-highlighted:after{opacity:.5}.choices__item{cursor:default}.choices__item--selectable{cursor:pointer}.choices__item--disabled{cursor:not-allowed;-webkit-user-select:none;-ms-user-select:none;user-select:none;opacity:.5}.choices__heading{font-weight:600;font-size:12px;padding:10px;border-bottom:1px solid #f7f7f7;color:gray}.choices__button{text-indent:-9999px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background-color:transparent;background-repeat:no-repeat;background-position:center;cursor:pointer}.choices__button:focus{outline:none}.choices__input{display:inline-block;vertical-align:baseline;background-color:#f9f9f9;font-size:14px;margin-bottom:5px;border:0;border-radius:0;max-width:100%;padding:4px 0 4px 2px}.choices__input:focus{outline:0}[dir=rtl] .choices__input{padding-right:2px;padding-left:0}.choices__placeholder{opacity:.5}.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08);box-shadow:1px 0 #e6e6e6,-1px 0 #e6e6e6,0 1px #e6e6e6,0 -1px #e6e6e6,0 3px 13px #00000014}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1);animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none!important;box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:#000000e6;fill:#000000e6;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#000000e6;fill:#000000e6}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:#00000080}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\fffd;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#000000e6}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#000000e6}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:#00000080;background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:#0000008a;line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate(0);opacity:1}.dayContainer+.dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:#3939394d;background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:#3939391a}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 #569ff7,5px 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:#3939394d;background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translateY(-20px)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate(0)}}@keyframes fpFadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translateY(-20px)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate(0)}}.workspace-leaf-content[data-type=kanban] .view-content{padding:0}.kanban-plugin{--lane-width: 272px}.kanban-plugin{contain:content;background-color:var(--background-secondary-alt);height:100%;width:100%;position:relative;display:flex;flex-direction:column}.kanban-plugin.something-is-dragging *{pointer-events:none}.kanban-plugin__item button,.kanban-plugin__lane button,.kanban-plugin button{line-height:1;padding:10px 12px;margin:0;transition:.1s color,.1s background-color}.kanban-plugin__search-wrapper{width:100%;position:sticky;top:0;left:0;padding:10px 13px;display:flex;justify-content:flex-end;align-items:center;z-index:2;background-color:var(--background-secondary);border-bottom:1px solid var(--background-modifier-border)}button.kanban-plugin__search-cancel-button{display:flex;line-height:1;padding:6px;border:1px solid var(--background-modifier-border);background:var(--background-secondary-alt);color:var(--text-muted);margin:0 0 0 5px;font-size:16px}button.kanban-plugin__search-cancel-button .kanban-plugin__icon{display:flex}.kanban-plugin__icon{display:inline-block;line-height:1}.kanban-plugin__icon>svg{width:1em;height:1em}.kanban-plugin__board{display:flex;width:100%;height:100%}.kanban-plugin__board>div{display:flex;align-items:flex-start;justify-content:flex-start;padding:1rem;width:fit-content;height:100%}.kanban-plugin__board.is-adding-lane>div{padding-right:calc(250px + 1rem)}.kanban-plugin__lane-wrapper{display:flex;flex-shrink:0;margin-right:10px;max-height:100%;width:var(--lane-width)}.kanban-plugin__lane{width:100%;display:flex;flex-direction:column;background-color:var(--background-secondary);border-radius:6px;border:1px solid var(--background-modifier-border)}.kanban-plugin__placeholder.kanban-plugin__lane-placeholder{height:100%;flex-grow:1;margin-right:5px}.kanban-plugin__lane.is-hidden{display:none}.kanban-plugin__lane button{padding:8px 10px}.kanban-plugin__lane-form-wrapper{position:absolute;top:1rem;right:1rem;width:250px;background-color:var(--background-secondary);border-radius:6px;border:2px solid rgba(var(--interactive-accent-rgb),.7);z-index:var(--layer-popover);box-shadow:0 .5px 1px .5px #0000001a,0 2px 10px #0000001a,0 10px 20px #0000001a}.kanban-plugin__lane-input-wrapper{padding:10px}.kanban-plugin__item-input-actions,.kanban-plugin__lane-input-actions{display:flex;align-items:flex-start;justify-content:flex-start;padding:0 10px 10px}.kanban-plugin__item-input-actions button,.kanban-plugin__lane-input-actions button{display:block;margin-right:5px}.kanban-plugin__item-action-add,.kanban-plugin__lane-action-add{background-color:var(--interactive-accent);color:var(--text-on-accent)}.kanban-plugin__item-action-add:hover,.kanban-plugin__lane-action-add:hover{background-color:var(--interactive-accent-hover)}.kanban-plugin__lane-header-wrapper{padding:10px 11px;display:flex;align-items:center;flex-shrink:0;flex-grow:0;border-bottom:1px solid var(--background-modifier-border)}.will-prepend .kanban-plugin__lane-header-wrapper{border-bottom:none}.kanban-plugin__lane-grip{cursor:grab;flex-grow:0;margin-right:5px;color:var(--text-faint)}.kanban-plugin__lane-grip>svg{display:block;height:1rem}.kanban-plugin__lane-title{font-weight:600;font-size:.875rem;flex-grow:1;width:100%;display:flex;flex-direction:column}.kanban-plugin__lane-title-text{flex-grow:1}div.kanban-plugin__markdown-preview-view>div>*{overflow-wrap:anywhere}div.kanban-plugin__lane-title-count{background-color:var(--background-secondary-alt);border-radius:3px;color:var(--text-muted);display:block;font-size:13px;line-height:1;padding:4px;margin-left:5px}div.kanban-plugin__lane-title-count.wip-exceeded{font-weight:bold;color:var(--text-normal);background-color:rgba(var(--background-modifier-error-rgb),.25)}.kanban-plugin__item button.kanban-plugin__item-prefix-button,.kanban-plugin__item button.kanban-plugin__item-postfix-button,.kanban-plugin__lane button.kanban-plugin__lane-settings-button{font-size:13px;line-height:1;color:var(--text-muted);padding:4px;display:flex;margin-left:5px;background-color:transparent;margin-right:-4px}.kanban-plugin__item button.kanban-plugin__item-prefix-button{margin:4px 7px 4px 0;padding:0}.kanban-plugin__item button.kanban-plugin__item-prefix-button.is-enabled,.kanban-plugin__item button.kanban-plugin__item-postfix-button.is-enabled,.kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled{color:var(--text-accent)}.kanban-plugin__item button.kanban-plugin__item-prefix-button:hover,.kanban-plugin__item button.kanban-plugin__item-postfix-button:hover,.kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{background-color:transparent;color:var(--text-normal)}.kanban-plugin__lane-action-wrapper,.kanban-plugin__item-edit-archive-button,.kanban-plugin__item-settings-actions .kanban-plugin__icon,.kanban-plugin__item-edit-archive-button>.kanban-plugin__icon,.kanban-plugin__item-prefix-button>.kanban-plugin__icon,.kanban-plugin__item-postfix-button>.kanban-plugin__icon,.kanban-plugin__lane-settings-button>.kanban-plugin__icon{display:flex}.kanban-plugin__lane-settings-button-wrapper{display:flex}button.kanban-plugin__lane-settings-button+button.kanban-plugin__lane-settings-button{margin-left:2px}.kanban-plugin__lane-settings-button svg{width:1em;height:1em}.kanban-plugin__lane-items-wrapper{margin:4px;height:100%}.kanban-plugin__lane-items{padding:4px;margin:0 4px;display:flex;flex-direction:column}.kanban-plugin__lane-items>.kanban-plugin__placeholder{flex-grow:1}.kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{height:2.55em;border:3px dashed rgba(var(--text-muted-rgb),.1);margin-bottom:4px;border-radius:6px;transition:border .2s ease}.is-sorting .kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{border-color:rgba(var(--interactive-accent-rgb),.6)}.kanban-plugin__lane-items>div{margin-top:4px}.kanban-plugin__item-button-wrapper{border-top:1px solid var(--background-modifier-border);padding:8px;flex-shrink:0;flex-grow:0}.kanban-plugin__lane-header-wrapper+.kanban-plugin__item-button-wrapper{border-top:none;border-bottom:1px solid var(--background-modifier-border);padding:4px 8px 8px}.kanban-plugin__item-button-wrapper>button{text-align:left;width:100%}.kanban-plugin__item-form{border-top:1px solid var(--background-modifier-border);padding:8px}.kanban-plugin__lane-header-wrapper+.kanban-plugin__item-form{border-top:none;border-bottom:1px solid var(--background-modifier-border);padding:4px 8px 8px}.kanban-plugin__item-input-wrapper{display:flex;flex-direction:column}.kanban-plugin button.kanban-plugin__item-submit-button{background-color:var(--background-secondary-alt);flex-grow:0;flex-shrink:1;width:auto;margin-top:5px;line-height:1;font-size:14px}button.kanban-plugin__new-item-button{background-color:transparent;color:var(--text-muted)}.kanban-plugin__new-item-button:hover{color:var(--text-on-accent);background-color:var(--interactive-accent-hover)}.kanban-plugin__item{font-size:.875rem;border:1px solid var(--background-modifier-border);border-radius:6px;overflow:hidden;transition:.3s opacity cubic-bezier(.25,1,.5,1)}.kanban-plugin__drag-container>.kanban-plugin__item-wrapper .kanban-plugin__item{border-color:var(--interactive-accent);box-shadow:0 15px 25px #0003,0 0 0 2px rgba(var(--interactive-accent-rgb),.8)}.kanban-plugin__item.is-search-hit{box-shadow:0 15px 25px #0003,0 0 0 1px var(--background-modifier-border)}.kanban-plugin__item.is-search-miss{font-size:.75rem;opacity:.5}.kanban-plugin__item.is-search-miss .kanban-plugin__item-metadata-wrapper{display:none}.kanban-plugin__item-content-wrapper{background:var(--background-primary)}.kanban-plugin__item-title-wrapper{background:var(--background-primary);display:flex;padding:6px 8px}.kanban-plugin__item-title-wrapper:not(:only-child){border-bottom:1px solid var(--background-modifier-border)}.kanban-plugin__item-title{width:100%;line-height:1.5;overflow:hidden}.kanban-plugin__markdown-preview-view{font-family:var(--font-text, var(--default-font));font-size:.875rem;padding:unset;width:unset;height:unset;position:unset;overflow-y:unset;overflow-wrap:unset;color:unset;user-select:unset;-webkit-user-select:unset}.kanban-plugin__markdown-preview-view p,.kanban-plugin__markdown-preview-view ul,.kanban-plugin__markdown-preview-view ol,.kanban-plugin__markdown-preview-view blockquote{margin-block-start:.66em;margin-block-end:.66em}.kanban-plugin__markdown-preview-view blockquote{margin-inline-start:0;margin-inline-end:0}.kanban-plugin__markdown-preview-view ul ol,.kanban-plugin__markdown-preview-view ol ul,.kanban-plugin__markdown-preview-view ul ul,.kanban-plugin__markdown-preview-view ol ol{margin-block-start:0em;margin-block-end:0em}.kanban-plugin__markdown-preview-view>div>*{overflow-x:auto;overflow-wrap:break-word}.kanban-plugin__markdown-preview-view>div>*:first-child,.kanban-plugin__markdown-preview-view>div>.frontmatter-container+*{margin-top:0}.kanban-plugin__markdown-preview-view>div>*:last-child{margin-bottom:0}.kanban-plugin__markdown-preview-view ul,.kanban-plugin__markdown-preview-view ol{padding-inline-start:24px}.kanban-plugin__meta-value .kanban-plugin__markdown-preview-view p,.kanban-plugin__meta-value .kanban-plugin__markdown-preview-view{font-size:inherit;color:inherit;line-height:inherit}.kanban-plugin__markdown-preview-view.inline p,.kanban-plugin__markdown-preview-view.inline{display:inline-block}.kanban-plugin__markdown-preview-view .frontmatter,.kanban-plugin__markdown-preview-view .frontmatter-container{display:none}.kanban-plugin__markdown-preview-view .file-link span{display:inline-flex;align-items:center;justify-content:center;color:var(--text-faint);margin-left:2px;position:relative;top:3px}.kanban-plugin__embed-link-wrapper{padding:2px;float:right}.kanban-plugin__item-metadata-wrapper:not(:empty){background-color:var(--background-primary-alt);padding:6px 8px}.kanban-plugin__item-metadata:not(:empty){padding-top:5px;font-size:12px;font-weight:500;color:var(--text-muted)}.kanban-plugin__item-metadata>span{display:block}.kanban-plugin__item-metadata .is-button{cursor:pointer}.kanban-plugin__item-metadata .is-button:hover{color:var(--text-normal)}.kanban-plugin__item-metadata-date-relative:first-letter{text-transform:uppercase}.kanban-plugin__item-metadata a{text-decoration:none}.kanban-plugin__item-metadata-time:before{content:" \2022 "}.kanban-plugin__item-metadata-time.is-button:hover:before{color:var(--text-muted)}.kanban-plugin__item-metadata-date-wrapper{padding-top:2px}.kanban-plugin__item-tags:not(:empty){padding-top:2px}.kanban-plugin__item-tag{display:inline-block;margin-right:4px}.kanban-plugin__item-tags .kanban-plugin__item-tag{background-color:var( --tag-background-color, rgba(var(--interactive-accent-rgb), .1) );color:var(--tag-color, var(--text-accent));padding:1px 4px;border-radius:6px;margin:3px 3px 0 0}.kanban-plugin__item-tag.is-search-match,.kanban-plugin__item-tags .kanban-plugin__item-tag.is-search-match{background-color:var(--text-highlight-bg);color:var(--text-normal)}.kanban-plugin__meta-table{width:100%;margin:0;line-height:1.5;font-size:.75rem}.kanban-plugin__meta-table td{vertical-align:top;padding:3px 0;width:10%}.kanban-plugin__meta-table td+td{width:90%}.kanban-plugin__meta-table td:only-child{width:100%}.kanban-plugin__meta-table td.kanban-plugin__meta-key{white-space:nowrap;padding-right:5px;color:var(--text-muted)}.kanban-plugin__meta-table td.kanban-plugin__meta-key.is-search-match>span{background-color:var(--text-highlight-bg);color:var(--text-normal)}.kanban-plugin__meta-value{white-space:pre-wrap;display:flex}.kanban-plugin__meta-value>.is-search-match,.kanban-plugin__meta-value.is-search-match{background-color:var(--text-highlight-bg);color:var(--text-normal)}.kanban-plugin__item-prefix-button-wrapper,.kanban-plugin__item-postfix-button-wrapper{display:flex;flex-grow:0;flex-shrink:0}.kanban-plugin__item-prefix-button-wrapper{flex-direction:column}.kanban-plugin__item-prefix-button-wrapper input[type=checkbox]{margin:4px 7px 4px 0;width:15px;height:15px;filter:hue-rotate(42deg)}.kanban-plugin__item-prefix-button-wrapper input[type=checkbox]+button{margin-top:10px}button.kanban-plugin__item-postfix-button{visibility:hidden;opacity:0;transition:.1s opacity;display:flex;align-self:flex-start}button.kanban-plugin__item-postfix-button.is-enabled,.kanban-plugin__item:hover button.kanban-plugin__item-postfix-button{visibility:visible;opacity:1}.kanban-plugin__item-settings-actions{padding:5px;display:flex}.kanban-plugin__item-settings-actions>button{line-height:1;display:flex;align-items:center;justify-content:center;font-size:.75rem;width:100%}.kanban-plugin__lane-action-wrapper button>.kanban-plugin__icon,.kanban-plugin__item-settings-actions button>.kanban-plugin__icon{margin-right:5px}.kanban-plugin__item-settings-actions>button:first-child,.kanban-plugin__lane-action-wrapper>button:first-child{margin-right:2.5px}.kanban-plugin__item-settings-actions>button:last-child,.kanban-plugin__lane-action-wrapper>button:last-child{margin-left:2.5px}.kanban-plugin__archive-lane-button,.kanban-plugin__item-button-archive{color:var(--text-muted);border:1px solid var(--background-modifier-border)}.kanban-plugin__archive-lane-button:hover,.kanban-plugin__item-button-archive:hover{color:var(--text-normal)}.kanban-plugin__item-button-delete{border:1px solid rgba(var(--background-modifier-error-rgb),.15);color:rgba(var(--background-modifier-error-rgb),1)}.kanban-plugin__item-button-delete:hover{background-color:rgba(var(--background-modifier-error-rgb),.2);color:var(--text-error)}.theme-dark .kanban-plugin__item-button-delete{background-color:transparent;border:1px solid rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.theme-dark .kanban-plugin__item-button-delete:hover{background-color:rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.kanban-plugin__checkbox-wrapper{border-top:1px solid var(--background-modifier-border);border-bottom:1px solid var(--background-modifier-border);padding:10px;margin-bottom:10px;display:flex;align-items:center}.kanban-plugin__checkbox-wrapper .checkbox-container{flex-shrink:0;flex-grow:0;margin-left:15px}.kanban-plugin__checkbox-label{font-size:.8125rem;line-height:1.4}.kanban-plugin__lane-setting-wrapper>div{border-top:none;border-bottom:none;padding:10px 15px;margin-bottom:0}.kanban-plugin__lane-setting-wrapper>div:last-child{border-bottom:1px solid var(--background-modifier-border);margin-bottom:10px}.kanban-plugin__action-confirm-wrapper{border:1px solid rgba(var(--background-modifier-error-rgb),.2);background-color:rgba(var(--background-modifier-error-rgb),.1);border-radius:4px;padding:10px;margin:5px 10px}.theme-dark .kanban-plugin__action-confirm-wrapper{border:1px solid rgba(var(--background-modifier-error-rgb),1)}.kanban-plugin__delete-lane-button,.kanban-plugin__archive-lane-button{display:flex;align-items:center;justify-content:center;font-size:.75rem;width:50%}.kanban-plugin__delete-lane-button{border:1px solid rgba(var(--background-modifier-error-rgb),.15);color:rgba(var(--background-modifier-error-rgb),1)}.kanban-plugin__delete-lane-button:hover{background-color:rgba(var(--background-modifier-error-rgb),.2);color:var(--text-error)}.theme-dark .kanban-plugin__delete-lane-button{background-color:transparent;border:1px solid rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.theme-dark .kanban-plugin__delete-lane-button:hover{background-color:rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.kanban-plugin__action-confirm-text{font-size:.875rem;color:var(--text-error);margin-bottom:10px;line-height:1.4}button.kanban-plugin__confirm-action-button{border:1px solid rgba(var(--background-modifier-error-rgb),.2);margin-right:5px;color:var(--text-error)}button.kanban-plugin__confirm-action-button:hover{background-color:rgba(var(--background-modifier-error-rgb),.5)}button.kanban-plugin__cancel-action-button{border:1px solid var(--background-modifier-border)}.kanban-plugin__grow-wrap{width:100%;display:grid}.kanban-plugin__grow-wrap:after{content:attr(data-replicated-value) " ";white-space:pre-wrap;visibility:hidden}.kanban-plugin__grow-wrap>textarea{resize:none;overflow:hidden;tab-size:2}.kanban-plugin__grow-wrap>textarea:focus{border-color:var(--interactive-accent)}.kanban-plugin__grow-wrap>textarea,.kanban-plugin__grow-wrap:after{border:1px solid var(--background-modifier-border);padding:5px 7px;font:inherit;line-height:1.5;grid-area:1 / 1 / 2 / 2;font-size:.875rem;overflow:hidden;overflow-wrap:break-word;white-space:pre-wrap}.kanban-plugin__autocomplete{font-size:.875rem;border:1px solid var(--background-modifier-border);background-color:var(--background-primary);list-style:none;padding:0;margin:0;min-width:20ch;max-width:40ch;max-height:200px;border-radius:6px;box-shadow:0 15px 25px #0003;overflow-x:hidden;overflow-y:auto}.kanban-plugin__autocomplete li{margin:0}.kanban-plugin__autocomplete li em{opacity:.6}.kanban-plugin .textcomplete-footer,.kanban-plugin .textcomplete-header{display:none}.kanban-plugin__autocomplete-item-active,.kanban-plugin__autocomplete-item{border-top:1px solid var(--background-modifier-border);padding:4px 6px;cursor:pointer}.kanban-plugin__autocomplete .textcomplete-header+.kanban-plugin__autocomplete-item,.kanban-plugin__autocomplete .textcomplete-header+.kanban-plugin__autocomplete-item-active{border-top:none}.kanban-plugin__autocomplete-item:hover,.kanban-plugin__autocomplete-item-active{color:var(--text-on-accent);background-color:var(--interactive-accent-hover)}.kanban-plugin__file-suggestion-wrapper{display:flex;line-height:1.2}.kanban-plugin__file-suggestion-icon{flex-shrink:0;flex-grow:0;padding-right:4px}.kanban-plugin__file-suggestion-subtitle{font-size:.875em;color:var(--text-muted)}.kanban-plugin__autocomplete-item:hover .kanban-plugin__file-suggestion-subtitle,.kanban-plugin__autocomplete-item-active .kanban-plugin__file-suggestion-subtitle{color:var(--text-on-accent)}.modal.kanban-plugin__board-settings-modal{max-height:90vh;padding:0;display:flex;flex-direction:column}.modal.kanban-plugin__board-settings-modal .modal-content{padding:30px 50px;height:100%;overflow-y:auto;overflow-x:hidden;margin:0}.kanban-plugin__board-settings-modal .setting-item{flex-wrap:wrap;justify-content:space-between}.kanban-plugin__board-settings-modal .setting-item-info{max-width:400px;min-width:300px;width:50%}.kanban-plugin__board-settings-modal .setting-item-control{min-width:300px;flex-shrink:0}.kanban-plugin__board-settings-modal .choices{width:100%;text-align:left}.kanban-plugin__board-settings-modal .choices[data-type*=select-one] .choices__inner{background-color:var(--background-primary);border-color:var(--background-modifier-border);padding:0;min-height:0}.kanban-plugin__board-settings-modal .choices[data-type*=select-one] .choices__input{background-color:var(--background-primary);border-bottom-color:var(--background-modifier-border);font-size:14px}.kanban-plugin__board-settings-modal .choices__input{border-radius:0;border-top:none;border-left:none;border-right:none}.kanban-plugin__board-settings-modal .choices__list[role=listbox]{overflow-x:hidden}.kanban-plugin__board-settings-modal .choices__list--single{padding:4px 20px 4px 6px}.kanban-plugin__board-settings-modal .is-open .choices__list--dropdown,.kanban-plugin__board-settings-modal .choices__list--dropdown{background-color:var(--background-primary);border-color:var(--background-modifier-border);word-break:normal;max-height:200px;display:flex;flex-direction:column}.kanban-plugin__board-settings-modal .choices__list--dropdown .choices__item--selectable:after{display:none}.kanban-plugin__board-settings-modal .choices__list--dropdown .choices__item--selectable{padding:4px 6px}.kanban-plugin__board-settings-modal .choices__list--dropdown .choices__item.is-highlighted{background-color:var(--background-primary-alt)}.kanban-plugin__board-settings-modal .choices__placeholder{opacity:1;color:var(--text-muted)}.kanban-plugin__board-settings-modal .error{border-color:var(--background-modifier-error-hover)!important}.kanban-plugin__date-picker{position:absolute;z-index:var(--layer-popover);--cell-size: 2.4em}.kanban-plugin__date-picker .flatpickr-input{width:0;height:0;opacity:0;border:none;padding:0;display:block;margin-bottom:-1px}.kanban-plugin__date-picker .flatpickr-current-month{color:var(--text-normal);font-weight:600;font-size:inherit;width:100%;position:static;height:auto;display:flex;align-items:center;justify-content:center;padding:0}.kanban-plugin__date-picker .flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:var(--text-normal)}.kanban-plugin__date-picker .flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:var(--text-normal)}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{fill:currentColor}.kanban-plugin__date-picker .flatpickr-calendar{font-size:13px;overflow:hidden;background-color:var(--background-primary);width:calc(var(--cell-size) * 7 + 8px);box-shadow:0 0 0 1px var(--background-modifier-border),0 15px 25px #0003}.kanban-plugin__date-picker .flatpickr-months{font-size:13px;padding:2px 2px 4px;align-items:center}.kanban-plugin__date-picker .flatpickr-months .flatpickr-current-month input.cur-year,.kanban-plugin__date-picker .flatpickr-months select{border-radius:4px;padding:4px}.kanban-plugin__date-picker .flatpickr-months .numInputWrapper{border-radius:4px}.kanban-plugin__date-picker .flatpickr-months .flatpickr-month{width:100%;height:auto}.kanban-plugin__date-picker .flatpickr-months .flatpickr-prev-month,.kanban-plugin__date-picker .flatpickr-months .flatpickr-next-month{color:var(--text-normal);fill:currentColor;border-radius:4px;display:flex;align-items:center;justify-content:center;line-height:1;height:auto;padding:5px;position:static;flex-shrink:0}.kanban-plugin__date-picker .flatpickr-months .flatpickr-prev-month:hover,.kanban-plugin__date-picker .flatpickr-months .flatpickr-next-month:hover{background-color:var(--background-primary-alt);color:var(--text-normal)}.kanban-plugin__date-picker .flatpickr-months .flatpickr-prev-month:hover svg,.kanban-plugin__date-picker .flatpickr-months .flatpickr-next-month:hover svg{fill:currentColor}.kanban-plugin__date-picker .flatpickr-current-month .flatpickr-monthDropdown-months{color:var(--text-normal);font-weight:inherit;margin-right:5px}.kanban-plugin__date-picker .flatpickr-current-month input.cur-year{color:var(--text-normal);font-weight:inherit}.kanban-plugin__date-picker .flatpickr-weekdays{height:auto;padding:8px 0 12px}.kanban-plugin__date-picker span.flatpickr-weekday{font-weight:400;color:var(--text-muted)}.kanban-plugin__date-picker .flatpickr-innerContainer{padding:4px}.kanban-plugin__date-picker .flatpickr-day{color:var(--text-normal);display:inline-flex;align-items:center;justify-content:center;width:var(--cell-size);height:var(--cell-size);line-height:1;border-radius:6px}.kanban-plugin__date-picker .flatpickr-day.today{border-color:var(--interactive-accent)}.kanban-plugin__date-picker .flatpickr-day.today:hover{color:var(--text-normal);border-color:var(--interactive-accent);background-color:var(--background-primary-alt)}.kanban-plugin__date-picker .flatpickr-day.selected{border-color:var(--interactive-accent);background-color:var(--interactive-accent);color:var(--text-on-accent)}.kanban-plugin__date-picker .flatpickr-day.selected:hover{border-color:var(--interactive-accent);background-color:var(--interactive-accent)}.kanban-plugin__date-picker .flatpickr-days{width:calc(var(--cell-size) * 7)}.kanban-plugin__date-picker .dayContainer{width:calc(var(--cell-size) * 7);min-width:calc(var(--cell-size) * 7);max-width:calc(var(--cell-size) * 7)}.kanban-plugin__date-picker .flatpickr-day.inRange,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay.inRange,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay.inRange,.kanban-plugin__date-picker .flatpickr-day.today.inRange,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay.today.inRange,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay.today.inRange,.kanban-plugin__date-picker .flatpickr-day:hover,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay:hover,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay:hover,.kanban-plugin__date-picker .flatpickr-day:focus,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay:focus,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay:focus{background-color:var(--background-primary-alt);border-color:var(--background-primary-alt)}.kanban-plugin__date-picker .flatpickr-day.flatpickr-disabled,.kanban-plugin__date-picker .flatpickr-day.flatpickr-disabled:hover,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay,.kanban-plugin__date-picker .flatpickr-day.notAllowed,.kanban-plugin__date-picker .flatpickr-day.notAllowed.prevMonthDay,.kanban-plugin__date-picker .flatpickr-day.notAllowed.nextMonthDay{color:var(--text-faint)}.kanban-plugin__time-picker{position:absolute;max-height:250px;overflow:auto;border-radius:4px;border:1px solid var(--background-modifier-border);box-shadow:0 2px 8px var(--background-modifier-box-shadow);background:var(--background-primary);color:var(--text-normal);font-size:14px;z-index:var(--layer-menu)}.kanban-plugin__time-picker-item{display:flex;align-items:center;color:var(--text-muted);cursor:pointer;line-height:1;padding:6px 8px}.kanban-plugin__time-picker-check{visibility:hidden;display:inline-flex;margin-right:5px}.kanban-plugin__time-picker-item.is-hour{color:var(--text-normal);font-weight:600}.kanban-plugin__time-picker-item.is-selected .kanban-plugin__time-picker-check{visibility:visible}.kanban-plugin__time-picker-item:hover,.kanban-plugin__time-picker-item.is-selected{background:var(--background-secondary)}.kanban-plugin mark{background-color:var(--text-highlight-bg)}.kanban-plugin__draggable-setting-container{border-top:0;padding:0;flex-direction:column}.kanban-plugin__draggable-setting-container>div{width:100%;margin-right:0!important}.kanban-plugin__setting-item-wrapper{border-top:1px solid var(--background-modifier-border)}.kanban-plugin__draggable-setting-container>.kanban-plugin__placeholder{border-top:1px solid var(--background-modifier-border)}.kanban-plugin__setting-item{background-color:var(--background-secondary);width:100%;font-size:16px;display:flex;align-items:flex-start;padding:12px;color:var(--text-muted)}.kanban-plugin__drag-container .kanban-plugin__setting-item{border:1px solid rgba(var(--interactive-accent-rgb),.8);box-shadow:0 15px 25px #0003,0 0 0 2px rgba(var(--interactive-accent-rgb),.8)}.kanban-plugin__setting-controls-wrapper{flex-grow:1;flex-shrink:1}.kanban-plugin__setting-input-wrapper{display:flex;flex-wrap:wrap;margin-bottom:1rem}.kanban-plugin__setting-input-wrapper>div{margin-right:10px}.kanban-plugin__setting-toggle-wrapper>div{display:flex;align-items:center;line-height:1;margin-bottom:10px}.kanban-plugin__setting-toggle-wrapper .checkbox-container{margin-right:10px}.kanban-plugin__setting-button-wrapper{display:flex;justify-content:flex-end;flex-grow:1;flex-shrink:0;max-width:25px}.kanban-plugin__setting-button-wrapper>div{margin-left:12px}.kanban-plugin__setting-key-input-wrapper{margin:1rem 0}.kanban-plugin__setting-key-input-wrapper>input{margin-right:10px}.kanban-plugin__tag-color-input-wrapper{display:flex;flex-direction:column;flex-grow:1;gap:1rem}.kanban-plugin__add-tag-color-button{align-self:baseline;margin:0}.kanban-plugin__tag-color-input .kanban-plugin__item-tags{background-color:var(--background-primary);padding:10px;margin:0;border-radius:4px}.kanban-plugin__tag-color-input .kanban-plugin__item-tag{margin-top:0;font-size:13px;font-weight:500;line-height:1.5}.kanban-plugin__metadata-setting-desc{font-size:14px}.kanban-plugin__setting-button-spacer{visibility:hidden}.kanban-plugin__setting-item-label{font-size:12px;font-weight:bold;margin-bottom:5px}.kanban-plugin__setting-toggle-wrapper .kanban-plugin__setting-item-label{margin-bottom:0}.kanban-plugin__hitbox{border:2px dashed tomato}.kanban-plugin__placeholder{flex-grow:0;flex-shrink:0;width:0;height:0;pointer-events:none}.kanban-plugin__placeholder[data-axis=horizontal]{height:100%}.kanban-plugin__placeholder[data-axis=vertical]{width:100%}body:not(.native-scrollbars) .kanban-plugin__scroll-container::-webkit-scrollbar{background-color:transparent;width:16px;height:16px}body:not(.native-scrollbars) .kanban-plugin__scroll-container::-webkit-scrollbar-thumb{border:4px solid transparent;background-clip:content-box}.kanban-plugin__scroll-container{will-change:transform}.kanban-plugin__scroll-container.kanban-plugin__horizontal{overflow-y:hidden;overflow-x:auto}.kanban-plugin__scroll-container.kanban-plugin__vertical{overflow-y:auto;overflow-x:hidden}.kanban-plugin__drag-container{contain:layout size;z-index:10000;pointer-events:none;position:fixed;top:0;left:0}.kanban-plugin__loading{background-color:var(--background-secondary-alt);width:100%;height:100%;display:flex;justify-content:center;align-items:center}.sk-pulse{width:60px;height:60px;background-color:var(--text-faint);border-radius:100%;animation:sk-pulse 1.2s infinite cubic-bezier(.455,.03,.515,.955)}@keyframes sk-pulse{0%{transform:scale(0)}to{transform:scale(1);opacity:0}}.kanban-plugin__color-picker-wrapper{position:relative}.kanban-plugin__color-picker{position:absolute;top:-5px;left:0;transform:translateY(-100%)} +.choices{position:relative;margin-bottom:24px;font-size:16px}.choices:focus{outline:none}.choices:last-child{margin-bottom:0}.choices.is-disabled .choices__inner,.choices.is-disabled .choices__input{background-color:#eaeaea;cursor:not-allowed;-webkit-user-select:none;-ms-user-select:none;user-select:none}.choices.is-disabled .choices__item{cursor:not-allowed}.choices [hidden]{display:none!important}.choices[data-type*=select-one]{cursor:pointer}.choices[data-type*=select-one] .choices__inner{padding-bottom:7.5px}.choices[data-type*=select-one] .choices__input{display:block;width:100%;padding:10px;border-bottom:1px solid #dddddd;background-color:#fff;margin:0}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);padding:0;background-size:8px;position:absolute;top:50%;right:0;margin-top:-10px;margin-right:25px;height:20px;width:20px;border-radius:10em;opacity:.5}.choices[data-type*=select-one] .choices__button:hover,.choices[data-type*=select-one] .choices__button:focus{opacity:1}.choices[data-type*=select-one] .choices__button:focus{box-shadow:0 0 0 2px #00bcd4}.choices[data-type*=select-one] .choices__item[data-value=""] .choices__button{display:none}.choices[data-type*=select-one]:after{content:"";height:0;width:0;border-style:solid;border-color:#333333 transparent transparent transparent;border-width:5px;position:absolute;right:11.5px;top:50%;margin-top:-2.5px;pointer-events:none}.choices[data-type*=select-one].is-open:after{border-color:transparent transparent #333333 transparent;margin-top:-7.5px}.choices[data-type*=select-one][dir=rtl]:after{left:11.5px;right:auto}.choices[data-type*=select-one][dir=rtl] .choices__button{right:auto;left:0;margin-left:25px;margin-right:0}.choices[data-type*=select-multiple] .choices__inner,.choices[data-type*=text] .choices__inner{cursor:text}.choices[data-type*=select-multiple] .choices__button,.choices[data-type*=text] .choices__button{position:relative;display:inline-block;margin:0 -4px 0 8px;padding-left:16px;border-left:1px solid #008fa1;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);background-size:8px;width:8px;line-height:1;opacity:.75;border-radius:0}.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=select-multiple] .choices__button:focus,.choices[data-type*=text] .choices__button:hover,.choices[data-type*=text] .choices__button:focus{opacity:1}.choices__inner{display:inline-block;vertical-align:top;width:100%;background-color:#f9f9f9;padding:7.5px 7.5px 3.75px;border:1px solid #dddddd;border-radius:2.5px;font-size:14px;min-height:44px;overflow:hidden}.is-focused .choices__inner,.is-open .choices__inner{border-color:#b7b7b7}.is-open .choices__inner{border-radius:2.5px 2.5px 0 0}.is-flipped.is-open .choices__inner{border-radius:0 0 2.5px 2.5px}.choices__list{margin:0;padding-left:0;list-style:none}.choices__list--single{display:inline-block;padding:4px 16px 4px 4px;width:100%}[dir=rtl] .choices__list--single{padding-right:4px;padding-left:16px}.choices__list--single .choices__item{width:100%}.choices__list--multiple{display:inline}.choices__list--multiple .choices__item{display:inline-block;vertical-align:middle;border-radius:20px;padding:4px 10px;font-size:12px;font-weight:500;margin-right:3.75px;margin-bottom:3.75px;background-color:#00bcd4;border:1px solid #00a5bb;color:#fff;word-break:break-all;box-sizing:border-box}.choices__list--multiple .choices__item[data-deletable]{padding-right:5px}[dir=rtl] .choices__list--multiple .choices__item{margin-right:0;margin-left:3.75px}.choices__list--multiple .choices__item.is-highlighted{background-color:#00a5bb;border:1px solid #008fa1}.is-disabled .choices__list--multiple .choices__item{background-color:#aaa;border:1px solid #919191}.choices__list--dropdown{visibility:hidden;z-index:1;position:absolute;width:100%;background-color:#fff;border:1px solid #dddddd;top:100%;margin-top:-1px;border-bottom-left-radius:2.5px;border-bottom-right-radius:2.5px;overflow:hidden;word-break:break-all;will-change:visibility}.choices__list--dropdown.is-active{visibility:visible}.is-open .choices__list--dropdown{border-color:#b7b7b7}.is-flipped .choices__list--dropdown{top:auto;bottom:100%;margin-top:0;margin-bottom:-1px;border-radius:.25rem .25rem 0 0}.choices__list--dropdown .choices__list{position:relative;max-height:300px;overflow:auto;-webkit-overflow-scrolling:touch;will-change:scroll-position}.choices__list--dropdown .choices__item{position:relative;padding:10px;font-size:14px}[dir=rtl] .choices__list--dropdown .choices__item{text-align:right}@media (min-width: 640px){.choices__list--dropdown .choices__item--selectable{padding-right:100px}.choices__list--dropdown .choices__item--selectable:after{content:attr(data-select-text);font-size:12px;opacity:0;position:absolute;right:10px;top:50%;transform:translateY(-50%)}[dir=rtl] .choices__list--dropdown .choices__item--selectable{text-align:right;padding-left:100px;padding-right:10px}[dir=rtl] .choices__list--dropdown .choices__item--selectable:after{right:auto;left:10px}}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:#f2f2f2}.choices__list--dropdown .choices__item--selectable.is-highlighted:after{opacity:.5}.choices__item{cursor:default}.choices__item--selectable{cursor:pointer}.choices__item--disabled{cursor:not-allowed;-webkit-user-select:none;-ms-user-select:none;user-select:none;opacity:.5}.choices__heading{font-weight:600;font-size:12px;padding:10px;border-bottom:1px solid #f7f7f7;color:gray}.choices__button{text-indent:-9999px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background-color:transparent;background-repeat:no-repeat;background-position:center;cursor:pointer}.choices__button:focus{outline:none}.choices__input{display:inline-block;vertical-align:baseline;background-color:#f9f9f9;font-size:14px;margin-bottom:5px;border:0;border-radius:0;max-width:100%;padding:4px 0 4px 2px}.choices__input:focus{outline:0}[dir=rtl] .choices__input{padding-right:2px;padding-left:0}.choices__placeholder{opacity:.5}.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,.08);box-shadow:1px 0 #e6e6e6,-1px 0 #e6e6e6,0 1px #e6e6e6,0 -1px #e6e6e6,0 3px 13px #00000014}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1);animation:fpFadeInDown .3s cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none!important;box-shadow:none!important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:"";height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:#000000e6;fill:#000000e6;height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:#000000e6;fill:#000000e6}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,.1)}.numInputWrapper span:active{background:rgba(0,0,0,.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:#00000080}.numInputWrapper:hover{background:rgba(0,0,0,.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate(0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\fffd;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:#000000e6}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:#000000e6}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:#00000080;background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:#0000008a;line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate(0);opacity:1}.dayContainer+.dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 #e6e6e6,5px 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:#3939394d;background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:#3939391a}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 #569ff7,5px 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:#3939394d;background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translateY(-20px)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate(0)}}@keyframes fpFadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translateY(-20px)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate(0)}}.workspace-leaf-content[data-type=kanban] .view-content{padding:0}.kanban-plugin{--lane-width: 272px}.kanban-plugin{contain:content;background-color:var(--background-secondary-alt);height:100%;width:100%;position:relative;display:flex;flex-direction:column}.kanban-plugin.something-is-dragging *{pointer-events:none}.kanban-plugin__item button,.kanban-plugin__lane button,.kanban-plugin button{line-height:1;padding:10px 12px;margin:0;transition:.1s color,.1s background-color}.kanban-plugin__search-wrapper{width:100%;position:sticky;top:0;left:0;padding:10px 13px;display:flex;justify-content:flex-end;align-items:center;z-index:2;background-color:var(--background-secondary);border-bottom:1px solid var(--background-modifier-border)}button.kanban-plugin__search-cancel-button{display:flex;line-height:1;padding:6px;border:1px solid var(--background-modifier-border);background:var(--background-secondary-alt);color:var(--text-muted);margin:0 0 0 5px;font-size:16px}button.kanban-plugin__search-cancel-button .kanban-plugin__icon{display:flex}.kanban-plugin__icon{display:inline-block;line-height:1}.kanban-plugin__icon>svg{width:1em;height:1em}.kanban-plugin__board{display:flex;width:100%;height:100%}.kanban-plugin__board>div{display:flex;align-items:flex-start;justify-content:flex-start;padding:1rem;width:fit-content;height:100%}.kanban-plugin__board.is-adding-lane>div{padding-right:calc(250px + 1rem)}.kanban-plugin__lane-wrapper{display:flex;flex-shrink:0;margin-right:10px;max-height:100%;width:var(--lane-width)}.kanban-plugin__lane{width:100%;display:flex;flex-direction:column;background-color:var(--background-secondary);border-radius:6px;border:1px solid var(--background-modifier-border)}.kanban-plugin__placeholder.kanban-plugin__lane-placeholder{height:100%;flex-grow:1;margin-right:5px}.kanban-plugin__lane.is-hidden{display:none}.kanban-plugin__lane button{padding:8px 10px}.kanban-plugin__lane-form-wrapper{position:absolute;top:1rem;right:1rem;width:250px;background-color:var(--background-secondary);border-radius:6px;border:2px solid rgba(var(--interactive-accent-rgb),.7);z-index:var(--layer-popover);box-shadow:0 .5px 1px .5px #0000001a,0 2px 10px #0000001a,0 10px 20px #0000001a}.kanban-plugin__lane-input-wrapper{padding:10px}.kanban-plugin__item-input-actions,.kanban-plugin__lane-input-actions{display:flex;align-items:flex-start;justify-content:flex-start;padding:0 10px 10px}.kanban-plugin__item-input-actions button,.kanban-plugin__lane-input-actions button{display:block;margin-right:5px}.kanban-plugin__item-action-add,.kanban-plugin__lane-action-add{background-color:var(--interactive-accent);color:var(--text-on-accent)}.kanban-plugin__item-action-add:hover,.kanban-plugin__lane-action-add:hover{background-color:var(--interactive-accent-hover)}.kanban-plugin__lane-header-wrapper{padding:10px 11px;display:flex;align-items:center;flex-shrink:0;flex-grow:0;border-bottom:1px solid var(--background-modifier-border)}.will-prepend .kanban-plugin__lane-header-wrapper{border-bottom:none}.kanban-plugin__lane-grip{cursor:grab;flex-grow:0;margin-right:5px;color:var(--text-faint)}.kanban-plugin__lane-grip>svg{display:block;height:1rem}.kanban-plugin__lane-title{font-weight:600;font-size:.875rem;flex-grow:1;width:100%;display:flex;flex-direction:column}.kanban-plugin__lane-title-text{flex-grow:1}div.kanban-plugin__markdown-preview-view>div>*{overflow-wrap:anywhere}div.kanban-plugin__lane-title-count{background-color:var(--background-secondary-alt);border-radius:3px;color:var(--text-muted);display:block;font-size:13px;line-height:1;padding:4px;margin-left:5px}div.kanban-plugin__lane-title-count.wip-exceeded{font-weight:bold;color:var(--text-normal);background-color:rgba(var(--background-modifier-error-rgb),.25)}.kanban-plugin__item button.kanban-plugin__item-prefix-button,.kanban-plugin__item button.kanban-plugin__item-postfix-button,.kanban-plugin__lane button.kanban-plugin__lane-settings-button{font-size:13px;line-height:1;color:var(--text-muted);padding:4px;display:flex;margin-left:5px;background-color:transparent;margin-right:-4px}.kanban-plugin__item button.kanban-plugin__item-prefix-button{margin:4px 7px 4px 0;padding:0}.kanban-plugin__item button.kanban-plugin__item-prefix-button.is-enabled,.kanban-plugin__item button.kanban-plugin__item-postfix-button.is-enabled,.kanban-plugin__lane button.kanban-plugin__lane-settings-button.is-enabled{color:var(--text-accent)}.kanban-plugin__item button.kanban-plugin__item-prefix-button:hover,.kanban-plugin__item button.kanban-plugin__item-postfix-button:hover,.kanban-plugin__lane button.kanban-plugin__lane-settings-button:hover{background-color:transparent;color:var(--text-normal)}.kanban-plugin__lane-action-wrapper,.kanban-plugin__item-edit-archive-button,.kanban-plugin__item-settings-actions .kanban-plugin__icon,.kanban-plugin__item-edit-archive-button>.kanban-plugin__icon,.kanban-plugin__item-prefix-button>.kanban-plugin__icon,.kanban-plugin__item-postfix-button>.kanban-plugin__icon,.kanban-plugin__lane-settings-button>.kanban-plugin__icon{display:flex}.kanban-plugin__lane-settings-button-wrapper{display:flex}button.kanban-plugin__lane-settings-button+button.kanban-plugin__lane-settings-button{margin-left:2px}.kanban-plugin__lane-settings-button svg{width:1em;height:1em}.kanban-plugin__lane-items-wrapper{margin:4px;height:100%}.kanban-plugin__lane-items{padding:4px;margin:0 4px;display:flex;flex-direction:column}.kanban-plugin__lane-items>.kanban-plugin__placeholder{flex-grow:1}.kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{height:2.55em;border:3px dashed rgba(var(--text-muted-rgb),.1);margin-bottom:4px;border-radius:6px;transition:border .2s ease}.is-sorting .kanban-plugin__lane-items>.kanban-plugin__placeholder:only-child{border-color:rgba(var(--interactive-accent-rgb),.6)}.kanban-plugin__lane-items>div{margin-top:4px}.kanban-plugin__item-button-wrapper{border-top:1px solid var(--background-modifier-border);padding:8px;flex-shrink:0;flex-grow:0}.kanban-plugin__lane-header-wrapper+.kanban-plugin__item-button-wrapper{border-top:none;border-bottom:1px solid var(--background-modifier-border);padding:4px 8px 8px}.kanban-plugin__item-button-wrapper>button{text-align:left;width:100%}.kanban-plugin__item-form{border-top:1px solid var(--background-modifier-border);padding:8px}.kanban-plugin__lane-header-wrapper+.kanban-plugin__item-form{border-top:none;border-bottom:1px solid var(--background-modifier-border);padding:4px 8px 8px}.kanban-plugin__item-input-wrapper{display:flex;flex-direction:column}.kanban-plugin button.kanban-plugin__item-submit-button{background-color:var(--background-secondary-alt);flex-grow:0;flex-shrink:1;width:auto;margin-top:5px;line-height:1;font-size:14px}button.kanban-plugin__new-item-button{background-color:transparent;color:var(--text-muted)}.kanban-plugin__new-item-button:hover{color:var(--text-on-accent);background-color:var(--interactive-accent-hover)}.kanban-plugin__item{font-size:.875rem;border:1px solid var(--background-modifier-border);border-radius:6px;overflow:hidden;transition:.3s opacity cubic-bezier(.25,1,.5,1)}.kanban-plugin__drag-container>.kanban-plugin__item-wrapper .kanban-plugin__item{border-color:var(--interactive-accent);box-shadow:0 15px 25px #0003,0 0 0 2px rgba(var(--interactive-accent-rgb),.8)}.kanban-plugin__item.is-search-hit{box-shadow:0 15px 25px #0003,0 0 0 1px var(--background-modifier-border)}.kanban-plugin__item.is-search-miss{font-size:.75rem;opacity:.5}.kanban-plugin__item.is-search-miss .kanban-plugin__item-metadata-wrapper{display:none}.kanban-plugin__item-content-wrapper{background:var(--background-primary)}.kanban-plugin__item-title-wrapper{background:var(--background-primary);display:flex;padding:6px 8px}.kanban-plugin__item-title-wrapper:not(:only-child){border-bottom:1px solid var(--background-modifier-border)}.kanban-plugin__item-title{width:100%;line-height:1.5;overflow:hidden}.kanban-plugin__markdown-preview-view{font-family:var(--font-text, var(--default-font));font-size:.875rem;padding:unset;width:unset;height:unset;position:unset;overflow-y:unset;overflow-wrap:unset;color:unset;user-select:unset;-webkit-user-select:unset}.kanban-plugin__markdown-preview-view p,.kanban-plugin__markdown-preview-view ul,.kanban-plugin__markdown-preview-view ol,.kanban-plugin__markdown-preview-view blockquote{margin-block-start:.66em;margin-block-end:.66em}.kanban-plugin__markdown-preview-view blockquote{margin-inline-start:0;margin-inline-end:0}.kanban-plugin__markdown-preview-view ul ol,.kanban-plugin__markdown-preview-view ol ul,.kanban-plugin__markdown-preview-view ul ul,.kanban-plugin__markdown-preview-view ol ol{margin-block-start:0em;margin-block-end:0em}.kanban-plugin__markdown-preview-view>div>*{overflow-x:auto;overflow-wrap:break-word}.kanban-plugin__markdown-preview-view>div>*:first-child,.kanban-plugin__markdown-preview-view>div>.frontmatter-container+*{margin-top:0}.kanban-plugin__markdown-preview-view>div>*:last-child{margin-bottom:0}.kanban-plugin__markdown-preview-view ul,.kanban-plugin__markdown-preview-view ol{padding-inline-start:24px}.kanban-plugin__meta-value .kanban-plugin__markdown-preview-view p,.kanban-plugin__meta-value .kanban-plugin__markdown-preview-view{font-size:inherit;color:inherit;line-height:inherit}.kanban-plugin__markdown-preview-view.inline p,.kanban-plugin__markdown-preview-view.inline{display:inline-block}.kanban-plugin__markdown-preview-view .frontmatter,.kanban-plugin__markdown-preview-view .frontmatter-container{display:none}.kanban-plugin__markdown-preview-view .file-link span{display:inline-flex;align-items:center;justify-content:center;color:var(--text-faint);margin-left:2px;position:relative;top:3px}.kanban-plugin__embed-link-wrapper{padding:2px;float:right}.kanban-plugin__item-metadata-wrapper:not(:empty){background-color:var(--background-primary-alt);padding:6px 8px}.kanban-plugin__item-metadata:not(:empty){padding-top:5px;font-size:12px;font-weight:500;color:var(--text-muted)}.kanban-plugin__item-metadata>span{display:block}.kanban-plugin__item-metadata .is-button{cursor:pointer}.kanban-plugin__item-metadata .is-button:hover{color:var(--text-normal)}.kanban-plugin__item-metadata-date-relative:first-letter{text-transform:uppercase}.kanban-plugin__item-metadata a{text-decoration:none}.kanban-plugin__item-metadata-time:before{content:" \2022 "}.kanban-plugin__item-metadata-time.is-button:hover:before{color:var(--text-muted)}.kanban-plugin__item-tags:not(:empty){padding-top:2px}.kanban-plugin__item-tag{display:inline-block;margin-right:4px}.kanban-plugin__item-tags .kanban-plugin__item-tag{background-color:var( --tag-background-color, rgba(var(--interactive-accent-rgb), .1) );color:var(--tag-color, var(--text-accent));padding:1px 4px;border-radius:6px;margin:3px 3px 0 0}.kanban-plugin__item-tag.is-search-match,.kanban-plugin__item-tags .kanban-plugin__item-tag.is-search-match{background-color:var(--text-highlight-bg);color:var(--text-normal)}.kanban-plugin__meta-table{width:100%;margin:0;line-height:1.5;font-size:.75rem}.kanban-plugin__meta-table td{vertical-align:top;padding:3px 0;width:10%}.kanban-plugin__meta-table td+td{width:90%}.kanban-plugin__meta-table td:only-child{width:100%}.kanban-plugin__meta-table td.kanban-plugin__meta-key{white-space:nowrap;padding-right:5px;color:var(--text-muted)}.kanban-plugin__meta-table td.kanban-plugin__meta-key.is-search-match>span{background-color:var(--text-highlight-bg);color:var(--text-normal)}.kanban-plugin__meta-value{white-space:pre-wrap;display:flex}.kanban-plugin__meta-value>.is-search-match,.kanban-plugin__meta-value.is-search-match{background-color:var(--text-highlight-bg);color:var(--text-normal)}.kanban-plugin__item-prefix-button-wrapper,.kanban-plugin__item-postfix-button-wrapper{display:flex;flex-grow:0;flex-shrink:0}.kanban-plugin__item-prefix-button-wrapper{flex-direction:column}.kanban-plugin__item-prefix-button-wrapper input[type=checkbox]{margin:4px 7px 4px 0;width:15px;height:15px;filter:hue-rotate(42deg)}.kanban-plugin__item-prefix-button-wrapper input[type=checkbox]+button{margin-top:10px}button.kanban-plugin__item-postfix-button{visibility:hidden;opacity:0;transition:.1s opacity;display:flex;align-self:flex-start}button.kanban-plugin__item-postfix-button.is-enabled,.kanban-plugin__item:hover button.kanban-plugin__item-postfix-button{visibility:visible;opacity:1}.kanban-plugin__item-settings-actions{padding:5px;display:flex}.kanban-plugin__item-settings-actions>button{line-height:1;display:flex;align-items:center;justify-content:center;font-size:.75rem;width:100%}.kanban-plugin__lane-action-wrapper button>.kanban-plugin__icon,.kanban-plugin__item-settings-actions button>.kanban-plugin__icon{margin-right:5px}.kanban-plugin__item-settings-actions>button:first-child,.kanban-plugin__lane-action-wrapper>button:first-child{margin-right:2.5px}.kanban-plugin__item-settings-actions>button:last-child,.kanban-plugin__lane-action-wrapper>button:last-child{margin-left:2.5px}.kanban-plugin__archive-lane-button,.kanban-plugin__item-button-archive{color:var(--text-muted);border:1px solid var(--background-modifier-border)}.kanban-plugin__archive-lane-button:hover,.kanban-plugin__item-button-archive:hover{color:var(--text-normal)}.kanban-plugin__item-button-delete{border:1px solid rgba(var(--background-modifier-error-rgb),.15);color:rgba(var(--background-modifier-error-rgb),1)}.kanban-plugin__item-button-delete:hover{background-color:rgba(var(--background-modifier-error-rgb),.2);color:var(--text-error)}.theme-dark .kanban-plugin__item-button-delete{background-color:transparent;border:1px solid rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.theme-dark .kanban-plugin__item-button-delete:hover{background-color:rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.kanban-plugin__checkbox-wrapper{border-top:1px solid var(--background-modifier-border);border-bottom:1px solid var(--background-modifier-border);padding:10px;margin-bottom:10px;display:flex;align-items:center}.kanban-plugin__checkbox-wrapper .checkbox-container{flex-shrink:0;flex-grow:0;margin-left:15px}.kanban-plugin__checkbox-label{font-size:.8125rem;line-height:1.4}.kanban-plugin__lane-setting-wrapper>div{border-top:none;border-bottom:none;padding:10px 15px;margin-bottom:0}.kanban-plugin__lane-setting-wrapper>div:last-child{border-bottom:1px solid var(--background-modifier-border);margin-bottom:10px}.kanban-plugin__action-confirm-wrapper{border:1px solid rgba(var(--background-modifier-error-rgb),.2);background-color:rgba(var(--background-modifier-error-rgb),.1);border-radius:4px;padding:10px;margin:5px 10px}.theme-dark .kanban-plugin__action-confirm-wrapper{border:1px solid rgba(var(--background-modifier-error-rgb),1)}.kanban-plugin__delete-lane-button,.kanban-plugin__archive-lane-button{display:flex;align-items:center;justify-content:center;font-size:.75rem;width:50%}.kanban-plugin__delete-lane-button{border:1px solid rgba(var(--background-modifier-error-rgb),.15);color:rgba(var(--background-modifier-error-rgb),1)}.kanban-plugin__delete-lane-button:hover{background-color:rgba(var(--background-modifier-error-rgb),.2);color:var(--text-error)}.theme-dark .kanban-plugin__delete-lane-button{background-color:transparent;border:1px solid rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.theme-dark .kanban-plugin__delete-lane-button:hover{background-color:rgba(var(--background-modifier-error-rgb),1);color:var(--text-error)}.kanban-plugin__action-confirm-text{font-size:.875rem;color:var(--text-error);margin-bottom:10px;line-height:1.4}button.kanban-plugin__confirm-action-button{border:1px solid rgba(var(--background-modifier-error-rgb),.2);margin-right:5px;color:var(--text-error)}button.kanban-plugin__confirm-action-button:hover{background-color:rgba(var(--background-modifier-error-rgb),.5)}button.kanban-plugin__cancel-action-button{border:1px solid var(--background-modifier-border)}.kanban-plugin__grow-wrap{width:100%;display:grid}.kanban-plugin__grow-wrap:after{content:attr(data-replicated-value) " ";white-space:pre-wrap;visibility:hidden}.kanban-plugin__grow-wrap>textarea{resize:none;overflow:hidden;tab-size:2}.kanban-plugin__grow-wrap>textarea:focus{border-color:var(--interactive-accent)}.kanban-plugin__grow-wrap>textarea,.kanban-plugin__grow-wrap:after{border:1px solid var(--background-modifier-border);padding:5px 7px;font:inherit;line-height:1.5;grid-area:1 / 1 / 2 / 2;font-size:.875rem;overflow:hidden;overflow-wrap:break-word;white-space:pre-wrap}.kanban-plugin__autocomplete{font-size:.875rem;border:1px solid var(--background-modifier-border);background-color:var(--background-primary);list-style:none;padding:0;margin:0;min-width:20ch;max-width:40ch;max-height:200px;border-radius:6px;box-shadow:0 15px 25px #0003;overflow-x:hidden;overflow-y:auto}.kanban-plugin__autocomplete li{margin:0}.kanban-plugin__autocomplete li em{opacity:.6}.kanban-plugin .textcomplete-footer,.kanban-plugin .textcomplete-header{display:none}.kanban-plugin__autocomplete-item-active,.kanban-plugin__autocomplete-item{border-top:1px solid var(--background-modifier-border);padding:4px 6px;cursor:pointer}.kanban-plugin__autocomplete .textcomplete-header+.kanban-plugin__autocomplete-item,.kanban-plugin__autocomplete .textcomplete-header+.kanban-plugin__autocomplete-item-active{border-top:none}.kanban-plugin__autocomplete-item:hover,.kanban-plugin__autocomplete-item-active{color:var(--text-on-accent);background-color:var(--interactive-accent-hover)}.kanban-plugin__file-suggestion-wrapper{display:flex;line-height:1.2}.kanban-plugin__file-suggestion-icon{flex-shrink:0;flex-grow:0;padding-right:4px}.kanban-plugin__file-suggestion-subtitle{font-size:.875em;color:var(--text-muted)}.kanban-plugin__autocomplete-item:hover .kanban-plugin__file-suggestion-subtitle,.kanban-plugin__autocomplete-item-active .kanban-plugin__file-suggestion-subtitle{color:var(--text-on-accent)}.modal.kanban-plugin__board-settings-modal{max-height:90vh;padding:0;display:flex;flex-direction:column}.modal.kanban-plugin__board-settings-modal .modal-content{padding:30px 50px;height:100%;overflow-y:auto;overflow-x:hidden;margin:0}.kanban-plugin__board-settings-modal .setting-item{flex-wrap:wrap;justify-content:space-between}.kanban-plugin__board-settings-modal .setting-item-info{max-width:400px;min-width:300px;width:50%}.kanban-plugin__board-settings-modal .setting-item-control{min-width:300px;flex-shrink:0}.kanban-plugin__board-settings-modal .choices{width:100%;text-align:left}.kanban-plugin__board-settings-modal .choices[data-type*=select-one] .choices__inner{background-color:var(--background-primary);border-color:var(--background-modifier-border);padding:0;min-height:0}.kanban-plugin__board-settings-modal .choices[data-type*=select-one] .choices__input{background-color:var(--background-primary);border-bottom-color:var(--background-modifier-border);font-size:14px}.kanban-plugin__board-settings-modal .choices__input{border-radius:0;border-top:none;border-left:none;border-right:none}.kanban-plugin__board-settings-modal .choices__list[role=listbox]{overflow-x:hidden}.kanban-plugin__board-settings-modal .choices__list--single{padding:4px 20px 4px 6px}.kanban-plugin__board-settings-modal .is-open .choices__list--dropdown,.kanban-plugin__board-settings-modal .choices__list--dropdown{background-color:var(--background-primary);border-color:var(--background-modifier-border);word-break:normal;max-height:200px;display:flex;flex-direction:column}.kanban-plugin__board-settings-modal .choices__list--dropdown .choices__item--selectable:after{display:none}.kanban-plugin__board-settings-modal .choices__list--dropdown .choices__item--selectable{padding:4px 6px}.kanban-plugin__board-settings-modal .choices__list--dropdown .choices__item.is-highlighted{background-color:var(--background-primary-alt)}.kanban-plugin__board-settings-modal .choices__placeholder{opacity:1;color:var(--text-muted)}.kanban-plugin__board-settings-modal .error{border-color:var(--background-modifier-error-hover)!important}.kanban-plugin__date-picker{position:absolute;z-index:var(--layer-popover);--cell-size: 2.4em}.kanban-plugin__date-picker .flatpickr-input{width:0;height:0;opacity:0;border:none;padding:0;display:block;margin-bottom:-1px}.kanban-plugin__date-picker .flatpickr-current-month{color:var(--text-normal);font-weight:600;font-size:inherit;width:100%;position:static;height:auto;display:flex;align-items:center;justify-content:center;padding:0}.kanban-plugin__date-picker .flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:var(--text-normal)}.kanban-plugin__date-picker .flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:var(--text-normal)}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{fill:currentColor}.kanban-plugin__date-picker .flatpickr-calendar{font-size:13px;overflow:hidden;background-color:var(--background-primary);width:calc(var(--cell-size) * 7 + 8px);box-shadow:0 0 0 1px var(--background-modifier-border),0 15px 25px #0003}.kanban-plugin__date-picker .flatpickr-months{font-size:13px;padding:2px 2px 4px;align-items:center}.kanban-plugin__date-picker .flatpickr-months .flatpickr-current-month input.cur-year,.kanban-plugin__date-picker .flatpickr-months select{border-radius:4px;padding:4px}.kanban-plugin__date-picker .flatpickr-months .numInputWrapper{border-radius:4px}.kanban-plugin__date-picker .flatpickr-months .flatpickr-month{width:100%;height:auto}.kanban-plugin__date-picker .flatpickr-months .flatpickr-prev-month,.kanban-plugin__date-picker .flatpickr-months .flatpickr-next-month{color:var(--text-normal);fill:currentColor;border-radius:4px;display:flex;align-items:center;justify-content:center;line-height:1;height:auto;padding:5px;position:static;flex-shrink:0}.kanban-plugin__date-picker .flatpickr-months .flatpickr-prev-month:hover,.kanban-plugin__date-picker .flatpickr-months .flatpickr-next-month:hover{background-color:var(--background-primary-alt);color:var(--text-normal)}.kanban-plugin__date-picker .flatpickr-months .flatpickr-prev-month:hover svg,.kanban-plugin__date-picker .flatpickr-months .flatpickr-next-month:hover svg{fill:currentColor}.kanban-plugin__date-picker .flatpickr-current-month .flatpickr-monthDropdown-months{color:var(--text-normal);font-weight:inherit;margin-right:5px}.kanban-plugin__date-picker .flatpickr-current-month input.cur-year{color:var(--text-normal);font-weight:inherit}.kanban-plugin__date-picker .flatpickr-weekdays{height:auto;padding:8px 0 12px}.kanban-plugin__date-picker span.flatpickr-weekday{font-weight:400;color:var(--text-muted)}.kanban-plugin__date-picker .flatpickr-innerContainer{padding:4px}.kanban-plugin__date-picker .flatpickr-day{color:var(--text-normal);display:inline-flex;align-items:center;justify-content:center;width:var(--cell-size);height:var(--cell-size);line-height:1;border-radius:6px}.kanban-plugin__date-picker .flatpickr-day.today{border-color:var(--interactive-accent)}.kanban-plugin__date-picker .flatpickr-day.today:hover{color:var(--text-normal);border-color:var(--interactive-accent);background-color:var(--background-primary-alt)}.kanban-plugin__date-picker .flatpickr-day.selected{border-color:var(--interactive-accent);background-color:var(--interactive-accent);color:var(--text-on-accent)}.kanban-plugin__date-picker .flatpickr-day.selected:hover{border-color:var(--interactive-accent);background-color:var(--interactive-accent)}.kanban-plugin__date-picker .flatpickr-days{width:calc(var(--cell-size) * 7)}.kanban-plugin__date-picker .dayContainer{width:calc(var(--cell-size) * 7);min-width:calc(var(--cell-size) * 7);max-width:calc(var(--cell-size) * 7)}.kanban-plugin__date-picker .flatpickr-day.inRange,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay.inRange,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay.inRange,.kanban-plugin__date-picker .flatpickr-day.today.inRange,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay.today.inRange,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay.today.inRange,.kanban-plugin__date-picker .flatpickr-day:hover,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay:hover,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay:hover,.kanban-plugin__date-picker .flatpickr-day:focus,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay:focus,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay:focus{background-color:var(--background-primary-alt);border-color:var(--background-primary-alt)}.kanban-plugin__date-picker .flatpickr-day.flatpickr-disabled,.kanban-plugin__date-picker .flatpickr-day.flatpickr-disabled:hover,.kanban-plugin__date-picker .flatpickr-day.prevMonthDay,.kanban-plugin__date-picker .flatpickr-day.nextMonthDay,.kanban-plugin__date-picker .flatpickr-day.notAllowed,.kanban-plugin__date-picker .flatpickr-day.notAllowed.prevMonthDay,.kanban-plugin__date-picker .flatpickr-day.notAllowed.nextMonthDay{color:var(--text-faint)}.kanban-plugin__time-picker{position:absolute;max-height:250px;overflow:auto;border-radius:4px;border:1px solid var(--background-modifier-border);box-shadow:0 2px 8px var(--background-modifier-box-shadow);background:var(--background-primary);color:var(--text-normal);font-size:14px;z-index:var(--layer-menu)}.kanban-plugin__time-picker-item{display:flex;align-items:center;color:var(--text-muted);cursor:pointer;line-height:1;padding:6px 8px}.kanban-plugin__time-picker-check{visibility:hidden;display:inline-flex;margin-right:5px}.kanban-plugin__time-picker-item.is-hour{color:var(--text-normal);font-weight:600}.kanban-plugin__time-picker-item.is-selected .kanban-plugin__time-picker-check{visibility:visible}.kanban-plugin__time-picker-item:hover,.kanban-plugin__time-picker-item.is-selected{background:var(--background-secondary)}.kanban-plugin mark{background-color:var(--text-highlight-bg)}.kanban-plugin__draggable-setting-container{border-top:0;padding:0;flex-direction:column}.kanban-plugin__draggable-setting-container>div{width:100%;margin-right:0!important}.kanban-plugin__setting-item-wrapper{border-top:1px solid var(--background-modifier-border)}.kanban-plugin__draggable-setting-container>.kanban-plugin__placeholder{border-top:1px solid var(--background-modifier-border)}.kanban-plugin__setting-item{background-color:var(--background-secondary);width:100%;font-size:16px;display:flex;align-items:flex-start;padding:12px;color:var(--text-muted)}.kanban-plugin__drag-container .kanban-plugin__setting-item{border:1px solid rgba(var(--interactive-accent-rgb),.8);box-shadow:0 15px 25px #0003,0 0 0 2px rgba(var(--interactive-accent-rgb),.8)}.kanban-plugin__setting-controls-wrapper{flex-grow:1;flex-shrink:1}.kanban-plugin__setting-input-wrapper{display:flex;flex-wrap:wrap;margin-bottom:1rem}.kanban-plugin__setting-input-wrapper>div{margin-right:10px}.kanban-plugin__setting-toggle-wrapper>div{display:flex;align-items:center;line-height:1;margin-bottom:10px}.kanban-plugin__setting-toggle-wrapper .checkbox-container{margin-right:10px}.kanban-plugin__setting-button-wrapper{display:flex;justify-content:flex-end;flex-grow:1;flex-shrink:0;max-width:25px}.kanban-plugin__setting-button-wrapper>div{margin-left:12px}.kanban-plugin__setting-key-input-wrapper{margin:1rem 0}.kanban-plugin__setting-key-input-wrapper>input{margin-right:10px}.kanban-plugin__date-color-input-wrapper,.kanban-plugin__tag-color-input-wrapper{display:flex;flex-direction:column;flex-grow:1;gap:1rem}.kanban-plugin__add-tag-color-button{align-self:baseline;margin:0}.kanban-plugin__date-color-wrapper,.kanban-plugin__tag-color-input .kanban-plugin__item-tags{background-color:var(--background-primary);padding:10px;margin:0;border-radius:4px}.kanban-plugin__tag-color-input .kanban-plugin__item-tag{margin-top:0;font-size:13px;font-weight:500;line-height:1.5}.kanban-plugin__item-metadata>.kanban-plugin__item-metadata-date-wrapper .is-button:hover,.kanban-plugin__item-metadata>.kanban-plugin__item-metadata-date-wrapper{display:inline-block;color:var(--date-color, var(--text-muted))}.kanban-plugin__item-metadata>.kanban-plugin__item-metadata-date-wrapper.has-background{background-color:var(--date-background-color, transparent);padding:1px 6px;margin-top:4px;border-radius:6px}.kanban-plugin__date-color-input-wrapper input[type=number]{width:75px;padding:.6em .8em;height:auto;border-radius:.5em}.kanban-plugin__date-color-input-wrapper .kanban-plugin__setting-item-label{margin-bottom:0}.kanban-plugin__date-color-config{padding:0 0 10px;display:flex;flex-wrap:wrap;gap:5px;align-items:center}.kanban-plugin__date-color-wrapper{display:inline-block;margin-top:10px}.kanban-plugin__date-color-wrapper .kanban-plugin__item-metadata{padding:0}.kanban-plugin__metadata-setting-desc{font-size:14px}.kanban-plugin__setting-button-spacer{visibility:hidden}.kanban-plugin__setting-item-label{font-size:12px;font-weight:bold;margin-bottom:5px}.kanban-plugin__setting-toggle-wrapper .kanban-plugin__setting-item-label{margin-bottom:0}.kanban-plugin__hitbox{border:2px dashed tomato}.kanban-plugin__placeholder{flex-grow:0;flex-shrink:0;width:0;height:0;pointer-events:none}.kanban-plugin__placeholder[data-axis=horizontal]{height:100%}.kanban-plugin__placeholder[data-axis=vertical]{width:100%}body:not(.native-scrollbars) .kanban-plugin__scroll-container::-webkit-scrollbar{background-color:transparent;width:16px;height:16px}body:not(.native-scrollbars) .kanban-plugin__scroll-container::-webkit-scrollbar-thumb{border:4px solid transparent;background-clip:content-box}.kanban-plugin__scroll-container{will-change:transform}.kanban-plugin__scroll-container.kanban-plugin__horizontal{overflow-y:hidden;overflow-x:auto}.kanban-plugin__scroll-container.kanban-plugin__vertical{overflow-y:auto;overflow-x:hidden}.kanban-plugin__drag-container{contain:layout size;z-index:10000;pointer-events:none;position:fixed;top:0;left:0}.kanban-plugin__loading{background-color:var(--background-secondary-alt);width:100%;height:100%;display:flex;justify-content:center;align-items:center}.sk-pulse{width:60px;height:60px;background-color:var(--text-faint);border-radius:100%;animation:sk-pulse 1.2s infinite cubic-bezier(.455,.03,.515,.955)}@keyframes sk-pulse{0%{transform:scale(0)}to{transform:scale(1);opacity:0}}.kanban-plugin__color-picker-wrapper{position:relative}.kanban-plugin__color-picker{position:absolute;top:-5px;left:0;transform:translateY(-100%)} diff --git a/.obsidian/plugins/obsidian-map-view/main.js b/.obsidian/plugins/obsidian-map-view/main.js index b97c26bc..19870fa6 100644 --- a/.obsidian/plugins/obsidian-map-view/main.js +++ b/.obsidian/plugins/obsidian-map-view/main.js @@ -6,7 +6,6 @@ if you want to view the source visit the plugins github repository 'use strict'; var obsidian = require('obsidian'); -var querystring = require('querystring'); var path = require('path'); function _interopNamespace(e) { @@ -42,7 +41,6 @@ function _mergeNamespaces(n, m) { return Object.freeze(n); } -var querystring__namespace = /*#__PURE__*/_interopNamespace(querystring); var path__namespace = /*#__PURE__*/_interopNamespace(path); /****************************************************************************** @@ -79,6 +77,11 @@ const SEARCH_RESULT_MARKER = { icon: 'fa-search', markerColor: 'blue', }; +const CURRENT_LOCATION_MARKER = { + prefix: 'fas', + icon: 'fa-location-crosshairs', + markerColor: 'blue', +}; const MAX_CLUSTER_PREVIEW_ICONS = 4; const HISTORY_SAVE_ZOOM_DIFF = 2; const LAT_LIMITS = [-90, 90]; @@ -88,6 +91,7 @@ const MAX_EXTERNAL_SEARCH_SUGGESTIONS = 5; const MAX_MARKER_SUGGESTIONS = 5; const MAX_ZOOM = 25; const DEFAULT_MAX_TILE_ZOOM = 19; +const MIN_REAL_TIME_LOCATION_ZOOM = 13; const HIGHLIGHT_CLASS_NAME = 'map-view-highlight'; var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; @@ -14166,6 +14170,624 @@ var t = /*#__PURE__*/_mergeNamespaces({ function u(){return (u=Object.assign||function(t){for(var e=1;e0?(v(this.container.parentElement,"open"),v(this.container,"active")):this.notFoundMessage&&(this.container.appendChild(this.notFoundMessage),v(this.container.parentElement,"open")),this.results=t;},e.select=function(t){return Array.from(this.container.children).forEach(function(e,r){return r===t?v(e,"active"):y(e,"active")}),this.selected=t,this.results[t]},e.count=function(){return this.results?this.results.length:0},e.clear=function(){for(this.selected=-1;this.container.lastChild;)this.container.removeChild(this.container.lastChild);y(this.container.parentElement,"open"),y(this.container,"active");},t}(),C={position:"topleft",style:"button",showMarker:!0,showPopup:!1,popupFormat:function(t){return ""+t.result.label},resultFormat:function(t){return ""+t.result.label},marker:{icon:t&&leafletSrc.Icon?new leafletSrc.Icon.Default:void 0,draggable:!1},maxMarkers:1,maxSuggestions:5,retainZoomLevel:!1,animateZoom:!0,searchLabel:"Enter address",notFoundMessage:"",messageHideDelay:3e3,zoomLevel:18,classNames:{container:"leaflet-bar leaflet-control leaflet-control-geosearch",button:"leaflet-bar-part leaflet-bar-part-single",resetButton:"reset",msgbox:"leaflet-bar message",form:"",input:"",resultlist:"",item:"",notfound:"leaflet-bar-notfound"},autoComplete:!0,autoCompleteDelay:250,autoClose:!1,keepResult:!1,updateMap:!0},U="Leaflet must be loaded before instantiating the GeoSearch control";({options:u({},C),classNames:u({},C.classNames),initialize:function(e){var r,s,i,a,l=this;if(!t)throw new Error(U);if(!e.provider)throw new Error("Provider is missing from options");this.options=u({},this.options,{},e),this.classNames=u({},this.classNames,{},e.classNames),this.markers=new leafletSrc.FeatureGroup,this.classNames.container+=" leaflet-geosearch-"+this.options.style,this.searchElement=new L$1({searchLabel:this.options.searchLabel,classNames:{container:this.classNames.container,form:this.classNames.form,input:this.classNames.input},handleSubmit:function(t){return l.onSubmit(t)}}),this.button=f("a",this.classNames.button,this.searchElement.container,{title:this.options.searchLabel,href:"#",onClick:function(t){return l.onClick(t)}}),leafletSrc.DomEvent.disableClickPropagation(this.button),this.resetButton=f("a",this.classNames.resetButton,this.searchElement.form,{text:"×",href:"#",onClick:function(){return l.clearResults(null,!0)}}),leafletSrc.DomEvent.disableClickPropagation(this.resetButton),this.options.autoComplete&&(this.resultList=new k({handleClick:function(t){var e=t.result;l.searchElement.input.value=e.label,l.onSubmit({query:e.label,data:e});},classNames:{resultlist:this.classNames.resultlist,item:this.classNames.item,notfound:this.classNames.notfound},notFoundMessage:this.options.notFoundMessage}),this.searchElement.form.appendChild(this.resultList.container),this.searchElement.input.addEventListener("keyup",(r=function(t){return l.autoSearch(t)},void 0===(s=this.options.autoCompleteDelay)&&(s=250),void 0===i&&(i=!1),function(){for(var t=arguments.length,e=new Array(t),n=0;ne?0:n);this.searchElement.input.value=o.label;}}else {var s=this.resultList.select(this.resultList.selected);this.onSubmit({query:this.searchElement.input.value,data:s});}},clearResults:function(t,e){if(void 0===e&&(e=!1),!t||27===t.keyCode){var r=this.options,n=r.autoComplete;!e&&r.keepResult||(this.searchElement.input.value="",this.markers.clearLayers()),n&&this.resultList.clear();}},autoSearch:function(t){try{var e=this;if(w.indexOf(t.keyCode)>-1)return Promise.resolve();var r=t.target.value,n=e.options.provider,o=function(){if(r.length)return Promise.resolve(n.search({query:r})).then(function(t){t=t.slice(0,e.options.maxSuggestions),e.resultList.render(t,e.options.resultFormat);});e.resultList.clear();}();return Promise.resolve(o&&o.then?o.then(function(){}):void 0)}catch(t){return Promise.reject(t)}},onSubmit:function(t){try{var e=this;return Promise.resolve(e.options.provider.search(t)).then(function(r){r&&r.length>0&&e.showResult(r[0],t);})}catch(t){return Promise.reject(t)}},showResult:function(t,e){var r=this.options,n=r.autoClose,o=r.updateMap,s=this.markers.getLayers();s.length>=this.options.maxMarkers&&this.markers.removeLayer(s[0]);var i=this.addMarker(t,e);o&&this.centerMap(t),this.map.fireEvent("geosearch/showlocation",{location:t,marker:i}),n&&this.closeResults();},closeResults:function(){var t=this.searchElement.container;t.classList.contains("active")&&y(t,"active"),this.clearResults();},addMarker:function(t,e){var r=this,n=this.options,o=n.marker,i=n.showPopup,a=n.popupFormat,u=new leafletSrc.Marker([t.y,t.x],o),l=t.label;return "function"==typeof a&&(l=a({query:e,result:t})),u.bindPopup(l),this.markers.addLayer(u),i&&u.openPopup(),o.draggable&&u.on("dragend",function(t){r.map.fireEvent("geosearch/marker/dragend",{location:u.getLatLng(),event:t});}),u},centerMap:function(t){var e=this.options,r=e.retainZoomLevel,n=e.animateZoom,o=t.bounds?new leafletSrc.LatLngBounds(t.bounds):new leafletSrc.LatLng(t.y,t.x).toBounds(10),s=o.isValid()?o:this.markers.getBounds();!r&&o.isValid()&&!t.bounds||r||!o.isValid()?this.map.setView(s.getCenter(),this.getZoom(),{animate:n}):this.map.fitBounds(s,{animate:n});},getZoom:function(){var t=this.options,e=t.zoomLevel;return t.retainZoomLevel?this.map.getZoom():e}});!function(t){t[t.SEARCH=0]="SEARCH",t[t.REVERSE=1]="REVERSE";}(g||(g={}));var S=function(){function t(t){void 0===t&&(t={}),this.options=t;}var e=t.prototype;return e.getParamString=function(t){void 0===t&&(t={});var e=u({},this.options.params,{},t);return Object.keys(e).map(function(t){return encodeURIComponent(t)+"="+encodeURIComponent(e[t])}).join("&")},e.getUrl=function(t,e){return t+"?"+this.getParamString(e)},e.search=function(t){try{var e=this,r=e.endpoint({query:t.query,type:g.SEARCH});return Promise.resolve(fetch(r)).then(function(t){return Promise.resolve(t.json()).then(function(t){return e.parse({data:t})})})}catch(t){return Promise.reject(t)}},t}();(function(t){function e(){return t.apply(this,arguments)||this}l(e,t);var r=e.prototype;return r.endpoint=function(){return "https://places-dsn.algolia.net/1/places/query"},r.findBestMatchLevelIndex=function(t){var e=t.find(function(t){return "full"===t.matchLevel})||t.find(function(t){return "partial"===t.matchLevel});return e?t.indexOf(e):0},r.getLabel=function(t){var e,r,n,o;return [null==(e=t.locale_names)?void 0:e.default[this.findBestMatchLevelIndex(t._highlightResult.locale_names.default)],null==(r=t.city)?void 0:r.default[this.findBestMatchLevelIndex(t._highlightResult.city.default)],t.administrative[this.findBestMatchLevelIndex(t._highlightResult.administrative)],null==(n=t.postcode)?void 0:n[this.findBestMatchLevelIndex(t._highlightResult.postcode)],null==(o=t.country)?void 0:o.default].filter(Boolean).join(", ")},r.parse=function(t){var e=this;return t.data.hits.map(function(t){return {x:t._geoloc.lng,y:t._geoloc.lat,label:e.getLabel(t),bounds:null,raw:t}})},r.search=function(t){var e=t.query;try{var r=this,n="string"==typeof e?{query:e}:e;return Promise.resolve(fetch(r.endpoint(),{method:"POST",body:JSON.stringify(u({},r.options.params,{},n))})).then(function(t){return Promise.resolve(t.json()).then(function(t){return r.parse({data:t})})})}catch(t){return Promise.reject(t)}},e})(S);(function(t){function e(){var e;return (e=t.apply(this,arguments)||this).searchUrl="https://dev.virtualearth.net/REST/v1/Locations",e}l(e,t);var r=e.prototype;return r.endpoint=function(t){var e=t.query,r="string"==typeof e?{q:e}:e;return r.jsonp=t.jsonp,this.getUrl(this.searchUrl,r)},r.parse=function(t){return 0===t.data.resourceSets.length?[]:t.data.resourceSets[0].resources.map(function(t){return {x:t.point.coordinates[1],y:t.point.coordinates[0],label:t.address.formattedAddress,bounds:[[t.bbox[0],t.bbox[1]],[t.bbox[2],t.bbox[3]]],raw:t}})},r.search=function(t){var e,r,n,o=t.query;try{var s=this,i="BING_JSONP_CB_"+Date.now();return Promise.resolve((e=s.endpoint({query:o,jsonp:i}),r=i,n=f("script",null,document.body),n.setAttribute("type","text/javascript"),new Promise(function(t){window[r]=function(e){n.remove(),delete window[r],t(e);},n.setAttribute("src",e);}))).then(function(t){return s.parse({data:t})})}catch(t){return Promise.reject(t)}},e})(S);(function(t){function e(){var e;return (e=t.apply(this,arguments)||this).searchUrl="https://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/find",e}l(e,t);var r=e.prototype;return r.endpoint=function(t){var e=t.query,r="string"==typeof e?{text:e}:e;return r.f="json",this.getUrl(this.searchUrl,r)},r.parse=function(t){return t.data.locations.map(function(t){return {x:t.feature.geometry.x,y:t.feature.geometry.y,label:t.name,bounds:[[t.extent.ymin,t.extent.xmin],[t.extent.ymax,t.extent.xmax]],raw:t}})},e})(S);var A=function(t){function e(e){var r;return void 0===e&&(e={}),(r=t.call(this,e)||this).host=e.host||"http://localhost:4000",r}l(e,t);var r=e.prototype;return r.endpoint=function(t){var e=t.query;switch(t.type){case g.REVERSE:return this.getUrl(this.host+"/v1/reverse","string"==typeof e?{}:e);default:return this.getUrl(this.host+"/v1/autocomplete","string"==typeof e?{text:e}:e)}},r.parse=function(t){return t.data.features.map(function(t){var e={x:t.geometry.coordinates[0],y:t.geometry.coordinates[1],label:t.properties.label,bounds:null,raw:t};return Array.isArray(t.bbox)&&4===t.bbox.length&&(e.bounds=[[t.bbox[1],t.bbox[0]],[t.bbox[3],t.bbox[2]]]),e})},e}(S);(function(t){function e(e){return void 0===e&&(e={}),e.host="https://api.geocode.earth",t.call(this,e)||this}return l(e,t),e})(A);var F=function(t){function e(){var e;return (e=t.apply(this,arguments)||this).searchUrl="https://maps.googleapis.com/maps/api/geocode/json",e}l(e,t);var r=e.prototype;return r.endpoint=function(t){var e=t.query;return this.getUrl(this.searchUrl,"string"==typeof e?{address:e}:e)},r.parse=function(t){return t.data.results.map(function(t){return {x:t.geometry.location.lng,y:t.geometry.location.lat,label:t.formatted_address,bounds:[[t.geometry.viewport.southwest.lat,t.geometry.viewport.southwest.lng],[t.geometry.viewport.northeast.lat,t.geometry.viewport.northeast.lng]],raw:t}})},e}(S);(function(t){function e(){var e;return (e=t.apply(this,arguments)||this).searchUrl="https://geocode.search.hereapi.com/v1/geocode",e}l(e,t);var r=e.prototype;return r.endpoint=function(t){var e=t.query;return this.getUrl(this.searchUrl,"string"==typeof e?{q:e}:e)},r.parse=function(t){return t.data.items.map(function(t){return {x:t.position.lng,y:t.position.lat,label:t.address.label,bounds:null,raw:t}})},e})(S);var B=function(t){function e(e){var r;void 0===e&&(e={});var n="https://nominatim.openstreetmap.org";return (r=t.call(this,e)||this).searchUrl=e.searchUrl||n+"/search",r.reverseUrl=e.reverseUrl||n+"/reverse",r}l(e,t);var r=e.prototype;return r.endpoint=function(t){var e=t.query,r=t.type,n="string"==typeof e?{q:e}:e;switch(n.format="json",r){case g.REVERSE:return this.getUrl(this.reverseUrl,n);default:return this.getUrl(this.searchUrl,n)}},r.parse=function(t){return (Array.isArray(t.data)?t.data:[t.data]).map(function(t){return {x:Number(t.lon),y:Number(t.lat),label:t.display_name,bounds:[[parseFloat(t.boundingbox[0]),parseFloat(t.boundingbox[2])],[parseFloat(t.boundingbox[1]),parseFloat(t.boundingbox[3])]],raw:t}})},e}(S);(function(t){function e(e){return t.call(this,u({},e,{searchUrl:"https://locationiq.org/v1/search.php",reverseUrl:"https://locationiq.org/v1/reverse.php"}))||this}return l(e,t),e})(B);(function(t){function e(){var e;return (e=t.apply(this,arguments)||this).searchUrl="https://api.opencagedata.com/geocode/v1/json",e}l(e,t);var r=e.prototype;return r.endpoint=function(t){var e=t.query,r="string"==typeof e?{q:e}:e;return r.format="json",this.getUrl(this.searchUrl,r)},r.parse=function(t){return t.data.results.map(function(t){return {x:t.geometry.lng,y:t.geometry.lat,label:t.formatted,bounds:[[t.bounds.southwest.lat,t.bounds.southwest.lng],[t.bounds.northeast.lat,t.bounds.northeast.lng]],raw:t}})},r.search=function(e){try{return Promise.resolve(e.query.length<2?[]:t.prototype.search.call(this,e))}catch(t){return Promise.reject(t)}},e})(S);(function(t){function e(e){var r;return void 0===e&&(e={}),(r=t.call(this,e)||this).searchUrl=e.searchUrl||"https://a.tiles.mapbox.com/v4/geocode/mapbox.places/",r}l(e,t);var r=e.prototype;return r.endpoint=function(t){return this.getUrl(""+this.searchUrl+t.query+".json")},r.parse=function(t){return (Array.isArray(t.data.features)?t.data.features:[]).map(function(t){var e=null;return t.bbox&&(e=[[parseFloat(t.bbox[1]),parseFloat(t.bbox[0])],[parseFloat(t.bbox[3]),parseFloat(t.bbox[2])]]),{x:Number(t.center[0]),y:Number(t.center[1]),label:t.place_name?t.place_name:t.text,bounds:e,raw:t}})},e})(S);(function(t){function e(e){var r;void 0===e&&(e={});var n="https://api-adresse.data.gouv.fr";return (r=t.call(this,e)||this).searchUrl=e.searchUrl||n+"/search",r.reverseUrl=e.reverseUrl||n+"/reverse",r}l(e,t);var r=e.prototype;return r.endpoint=function(t){var e=t.query,r="string"==typeof e?{q:e}:e;switch(t.type){case g.REVERSE:return this.getUrl(this.reverseUrl,r);default:return this.getUrl(this.searchUrl,r)}},r.parse=function(t){return t.data.features.map(function(t){return {x:t.geometry.coordinates[0],y:t.geometry.coordinates[1],label:t.properties.label,bounds:null,raw:t}})},e})(S); +var strictUriEncode = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`); + +var token = '%[a-f0-9]{2}'; +var singleMatcher = new RegExp(token, 'gi'); +var multiMatcher = new RegExp('(' + token + ')+', 'gi'); + +function decodeComponents(components, split) { + try { + // Try to decode the entire string first + return decodeURIComponent(components.join('')); + } catch (err) { + // Do nothing + } + + if (components.length === 1) { + return components; + } + + split = split || 1; + + // Split the array in 2 parts + var left = components.slice(0, split); + var right = components.slice(split); + + return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right)); +} + +function decode(input) { + try { + return decodeURIComponent(input); + } catch (err) { + var tokens = input.match(singleMatcher); + + for (var i = 1; i < tokens.length; i++) { + input = decodeComponents(tokens, i).join(''); + + tokens = input.match(singleMatcher); + } + + return input; + } +} + +function customDecodeURIComponent(input) { + // Keep track of all the replacements and prefill the map with the `BOM` + var replaceMap = { + '%FE%FF': '\uFFFD\uFFFD', + '%FF%FE': '\uFFFD\uFFFD' + }; + + var match = multiMatcher.exec(input); + while (match) { + try { + // Decode as big chunks as possible + replaceMap[match[0]] = decodeURIComponent(match[0]); + } catch (err) { + var result = decode(match[0]); + + if (result !== match[0]) { + replaceMap[match[0]] = result; + } + } + + match = multiMatcher.exec(input); + } + + // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else + replaceMap['%C2'] = '\uFFFD'; + + var entries = Object.keys(replaceMap); + + for (var i = 0; i < entries.length; i++) { + // Replace all decoded components + var key = entries[i]; + input = input.replace(new RegExp(key, 'g'), replaceMap[key]); + } + + return input; +} + +var decodeUriComponent = function (encodedURI) { + if (typeof encodedURI !== 'string') { + throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`'); + } + + try { + encodedURI = encodedURI.replace(/\+/g, ' '); + + // Try the built in decoder first + return decodeURIComponent(encodedURI); + } catch (err) { + // Fallback to a more advanced decoder + return customDecodeURIComponent(encodedURI); + } +}; + +var splitOnFirst = (string, separator) => { + if (!(typeof string === 'string' && typeof separator === 'string')) { + throw new TypeError('Expected the arguments to be of type `string`'); + } + + if (separator === '') { + return [string]; + } + + const separatorIndex = string.indexOf(separator); + + if (separatorIndex === -1) { + return [string]; + } + + return [ + string.slice(0, separatorIndex), + string.slice(separatorIndex + separator.length) + ]; +}; + +var filterObj = function (obj, predicate) { + var ret = {}; + var keys = Object.keys(obj); + var isArr = Array.isArray(predicate); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var val = obj[key]; + + if (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) { + ret[key] = val; + } + } + + return ret; +}; + +var queryString = createCommonjsModule(function (module, exports) { + + + + + +const isNullOrUndefined = value => value === null || value === undefined; + +const encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier'); + +function encoderForArrayFormat(options) { + switch (options.arrayFormat) { + case 'index': + return key => (result, value) => { + const index = result.length; + + if ( + value === undefined || + (options.skipNull && value === null) || + (options.skipEmptyString && value === '') + ) { + return result; + } + + if (value === null) { + return [...result, [encode(key, options), '[', index, ']'].join('')]; + } + + return [ + ...result, + [encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('') + ]; + }; + + case 'bracket': + return key => (result, value) => { + if ( + value === undefined || + (options.skipNull && value === null) || + (options.skipEmptyString && value === '') + ) { + return result; + } + + if (value === null) { + return [...result, [encode(key, options), '[]'].join('')]; + } + + return [...result, [encode(key, options), '[]=', encode(value, options)].join('')]; + }; + + case 'colon-list-separator': + return key => (result, value) => { + if ( + value === undefined || + (options.skipNull && value === null) || + (options.skipEmptyString && value === '') + ) { + return result; + } + + if (value === null) { + return [...result, [encode(key, options), ':list='].join('')]; + } + + return [...result, [encode(key, options), ':list=', encode(value, options)].join('')]; + }; + + case 'comma': + case 'separator': + case 'bracket-separator': { + const keyValueSep = options.arrayFormat === 'bracket-separator' ? + '[]=' : + '='; + + return key => (result, value) => { + if ( + value === undefined || + (options.skipNull && value === null) || + (options.skipEmptyString && value === '') + ) { + return result; + } + + // Translate null to an empty string so that it doesn't serialize as 'null' + value = value === null ? '' : value; + + if (result.length === 0) { + return [[encode(key, options), keyValueSep, encode(value, options)].join('')]; + } + + return [[result, encode(value, options)].join(options.arrayFormatSeparator)]; + }; + } + + default: + return key => (result, value) => { + if ( + value === undefined || + (options.skipNull && value === null) || + (options.skipEmptyString && value === '') + ) { + return result; + } + + if (value === null) { + return [...result, encode(key, options)]; + } + + return [...result, [encode(key, options), '=', encode(value, options)].join('')]; + }; + } +} + +function parserForArrayFormat(options) { + let result; + + switch (options.arrayFormat) { + case 'index': + return (key, value, accumulator) => { + result = /\[(\d*)\]$/.exec(key); + + key = key.replace(/\[\d*\]$/, ''); + + if (!result) { + accumulator[key] = value; + return; + } + + if (accumulator[key] === undefined) { + accumulator[key] = {}; + } + + accumulator[key][result[1]] = value; + }; + + case 'bracket': + return (key, value, accumulator) => { + result = /(\[\])$/.exec(key); + key = key.replace(/\[\]$/, ''); + + if (!result) { + accumulator[key] = value; + return; + } + + if (accumulator[key] === undefined) { + accumulator[key] = [value]; + return; + } + + accumulator[key] = [].concat(accumulator[key], value); + }; + + case 'colon-list-separator': + return (key, value, accumulator) => { + result = /(:list)$/.exec(key); + key = key.replace(/:list$/, ''); + + if (!result) { + accumulator[key] = value; + return; + } + + if (accumulator[key] === undefined) { + accumulator[key] = [value]; + return; + } + + accumulator[key] = [].concat(accumulator[key], value); + }; + + case 'comma': + case 'separator': + return (key, value, accumulator) => { + const isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator); + const isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator)); + value = isEncodedArray ? decode(value, options) : value; + const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options); + accumulator[key] = newValue; + }; + + case 'bracket-separator': + return (key, value, accumulator) => { + const isArray = /(\[\])$/.test(key); + key = key.replace(/\[\]$/, ''); + + if (!isArray) { + accumulator[key] = value ? decode(value, options) : value; + return; + } + + const arrayValue = value === null ? + [] : + value.split(options.arrayFormatSeparator).map(item => decode(item, options)); + + if (accumulator[key] === undefined) { + accumulator[key] = arrayValue; + return; + } + + accumulator[key] = [].concat(accumulator[key], arrayValue); + }; + + default: + return (key, value, accumulator) => { + if (accumulator[key] === undefined) { + accumulator[key] = value; + return; + } + + accumulator[key] = [].concat(accumulator[key], value); + }; + } +} + +function validateArrayFormatSeparator(value) { + if (typeof value !== 'string' || value.length !== 1) { + throw new TypeError('arrayFormatSeparator must be single character string'); + } +} + +function encode(value, options) { + if (options.encode) { + return options.strict ? strictUriEncode(value) : encodeURIComponent(value); + } + + return value; +} + +function decode(value, options) { + if (options.decode) { + return decodeUriComponent(value); + } + + return value; +} + +function keysSorter(input) { + if (Array.isArray(input)) { + return input.sort(); + } + + if (typeof input === 'object') { + return keysSorter(Object.keys(input)) + .sort((a, b) => Number(a) - Number(b)) + .map(key => input[key]); + } + + return input; +} + +function removeHash(input) { + const hashStart = input.indexOf('#'); + if (hashStart !== -1) { + input = input.slice(0, hashStart); + } + + return input; +} + +function getHash(url) { + let hash = ''; + const hashStart = url.indexOf('#'); + if (hashStart !== -1) { + hash = url.slice(hashStart); + } + + return hash; +} + +function extract(input) { + input = removeHash(input); + const queryStart = input.indexOf('?'); + if (queryStart === -1) { + return ''; + } + + return input.slice(queryStart + 1); +} + +function parseValue(value, options) { + if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) { + value = Number(value); + } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) { + value = value.toLowerCase() === 'true'; + } + + return value; +} + +function parse(query, options) { + options = Object.assign({ + decode: true, + sort: true, + arrayFormat: 'none', + arrayFormatSeparator: ',', + parseNumbers: false, + parseBooleans: false + }, options); + + validateArrayFormatSeparator(options.arrayFormatSeparator); + + const formatter = parserForArrayFormat(options); + + // Create an object with no prototype + const ret = Object.create(null); + + if (typeof query !== 'string') { + return ret; + } + + query = query.trim().replace(/^[?#&]/, ''); + + if (!query) { + return ret; + } + + for (const param of query.split('&')) { + if (param === '') { + continue; + } + + let [key, value] = splitOnFirst(options.decode ? param.replace(/\+/g, ' ') : param, '='); + + // Missing `=` should be `null`: + // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters + value = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options); + formatter(decode(key, options), value, ret); + } + + for (const key of Object.keys(ret)) { + const value = ret[key]; + if (typeof value === 'object' && value !== null) { + for (const k of Object.keys(value)) { + value[k] = parseValue(value[k], options); + } + } else { + ret[key] = parseValue(value, options); + } + } + + if (options.sort === false) { + return ret; + } + + return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => { + const value = ret[key]; + if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) { + // Sort object keys, not values + result[key] = keysSorter(value); + } else { + result[key] = value; + } + + return result; + }, Object.create(null)); +} + +exports.extract = extract; +exports.parse = parse; + +exports.stringify = (object, options) => { + if (!object) { + return ''; + } + + options = Object.assign({ + encode: true, + strict: true, + arrayFormat: 'none', + arrayFormatSeparator: ',' + }, options); + + validateArrayFormatSeparator(options.arrayFormatSeparator); + + const shouldFilter = key => ( + (options.skipNull && isNullOrUndefined(object[key])) || + (options.skipEmptyString && object[key] === '') + ); + + const formatter = encoderForArrayFormat(options); + + const objectCopy = {}; + + for (const key of Object.keys(object)) { + if (!shouldFilter(key)) { + objectCopy[key] = object[key]; + } + } + + const keys = Object.keys(objectCopy); + + if (options.sort !== false) { + keys.sort(options.sort); + } + + return keys.map(key => { + const value = object[key]; + + if (value === undefined) { + return ''; + } + + if (value === null) { + return encode(key, options); + } + + if (Array.isArray(value)) { + if (value.length === 0 && options.arrayFormat === 'bracket-separator') { + return encode(key, options) + '[]'; + } + + return value + .reduce(formatter(key), []) + .join('&'); + } + + return encode(key, options) + '=' + encode(value, options); + }).filter(x => x.length > 0).join('&'); +}; + +exports.parseUrl = (url, options) => { + options = Object.assign({ + decode: true + }, options); + + const [url_, hash] = splitOnFirst(url, '#'); + + return Object.assign( + { + url: url_.split('?')[0] || '', + query: parse(extract(url), options) + }, + options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {} + ); +}; + +exports.stringifyUrl = (object, options) => { + options = Object.assign({ + encode: true, + strict: true, + [encodeFragmentIdentifier]: true + }, options); + + const url = removeHash(object.url).split('?')[0] || ''; + const queryFromUrl = exports.extract(object.url); + const parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false}); + + const query = Object.assign(parsedQueryFromUrl, object.query); + let queryString = exports.stringify(query, options); + if (queryString) { + queryString = `?${queryString}`; + } + + let hash = getHash(object.url); + if (object.fragmentIdentifier) { + hash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`; + } + + return `${url}${queryString}${hash}`; +}; + +exports.pick = (input, filter, options) => { + options = Object.assign({ + parseFragmentIdentifier: true, + [encodeFragmentIdentifier]: false + }, options); + + const {url, query, fragmentIdentifier} = exports.parseUrl(input, options); + return exports.stringifyUrl({ + url, + query: filterObj(query, filter), + fragmentIdentifier + }, options); +}; + +exports.exclude = (input, filter, options) => { + const exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value); + + return exports.pick(input, exclusionFilter, options); +}; +}); + function formatWithTemplates(s, query = '') { const datePattern = /{{date:([a-zA-Z\-\/\.\:]*)}}/g; const queryPattern = /{{query}}/g; @@ -14286,28 +14908,6 @@ function verifyOrAddFrontMatter(editor, fieldName, fieldValue) { } return false; } -/** - * Populate a context menu from the user configurable URLs - * @param menu The menu to attach - * @param location The geolocation to use in the menu item - * @param settings Plugin settings - */ -function populateOpenInItems(menu, location, settings) { - for (let setting of settings.openIn) { - if (!setting.name || !setting.urlPattern) - continue; - const fullUrl = setting.urlPattern - .replace('{x}', location.lat.toString()) - .replace('{y}', location.lng.toString()); - menu.addItem((item) => { - item.setTitle(`Open in ${setting.name}`); - item.setSection('mapview'); - item.onClick((_ev) => { - open(fullUrl); - }); - }); - } -} function replaceFollowActiveNoteQuery(file, settings) { return settings.queryForFollowActiveNote.replace('$PATH$', file.path); } @@ -14358,6 +14958,17 @@ function getAllTagNames(app) { tags = tags.sort(); return tags; } +function isMobile(app) { + return app === null || app === void 0 ? void 0 : app.isMobile; +} +function trimmedFileName(file) { + const MAX_LENGTH = 12; + const name = file.basename; + if (name.length > MAX_LENGTH) + return name.slice(0, MAX_LENGTH / 2) + '...' + name.slice(name.length - MAX_LENGTH / 2); + else + return name; +} /** A class to convert a string (usually a URL) into geolocation format */ class UrlConvertor { @@ -14458,7 +15069,7 @@ class UrlConvertor { key: googleApiKey, }; const googleUrl = 'https://maps.googleapis.com/maps/api/place/textsearch/json?' + - querystring__namespace.stringify(params); + queryString.stringify(params); const googleContent = yield obsidian.request({ url: googleUrl }); const jsonContent = JSON.parse(googleContent); if (jsonContent && @@ -14546,13 +15157,18 @@ class GeoSearcher { if (this.settings.searchProvider == 'google' && this.settings.useGooglePlaces && this.settings.geocodingApiKey) { - const placesResults = yield googlePlacesSearch(query, this.settings, searchArea === null || searchArea === void 0 ? void 0 : searchArea.getCenter()); - for (const result of placesResults) - results.push({ - name: result.name, - location: result.location, - resultType: 'searchResult', - }); + try { + const placesResults = yield googlePlacesSearch(query, this.settings, searchArea === null || searchArea === void 0 ? void 0 : searchArea.getCenter()); + for (const result of placesResults) + results.push({ + name: result.name, + location: result.location, + resultType: 'searchResult', + }); + } + catch (e) { + console.log('Map View: Google Places search failed: ', e.message); + } } else { (searchArea === null || searchArea === void 0 ? void 0 : searchArea.getSouthWest()) || null; @@ -14584,7 +15200,7 @@ function googlePlacesSearch(query, settings, centerOfSearch) { if (centerOfSearch) params['location'] = `${centerOfSearch.lat},${centerOfSearch.lng}`; const googleUrl = 'https://maps.googleapis.com/maps/api/place/textsearch/json?' + - querystring__namespace.stringify(params); + queryString.stringify(params); const googleContent = yield obsidian.request({ url: googleUrl }); const jsonContent = JSON.parse(googleContent); let results = []; @@ -14730,7 +15346,7 @@ function areStatesEqual(state1, state2) { state1.chosenMapSource == state2.chosenMapSource); } function stateToUrl(state) { - return querystring__namespace.stringify({ + return queryString.stringify({ name: state.name, mapZoom: state.mapZoom, centerLat: state.mapCenter.lat, @@ -14753,302 +15369,3143 @@ function stateFromParsedUrl(obj) { }; } -/*! - * Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com - * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) - * Copyright 2022 Fonticons, Inc. - */ -!function(){var C={},c={};try{"undefined"!=typeof window&&(C=window),"undefined"!=typeof document&&(c=document);}catch(C){}var l=(C.navigator||{}).userAgent,z=void 0===l?"":l,e=C,a=c;e.document,a.documentElement&&a.head&&"function"==typeof a.addEventListener&&a.createElement,~z.indexOf("MSIE")||z.indexOf("Trident/");function M(c,C){var l,z=Object.keys(c);return Object.getOwnPropertySymbols&&(l=Object.getOwnPropertySymbols(c),C&&(l=l.filter(function(C){return Object.getOwnPropertyDescriptor(c,C).enumerable})),z.push.apply(z,l)),z}function L(z){for(var C=1;CC.length)&&(c=C.length);for(var l=0,z=new Array(c);lC.length)&&(c=C.length);for(var l=0,z=new Array(c);lC.length)&&(c=C.length);for(var l=0,z=new Array(c);lC.length)&&(c=C.length);for(var l=0,z=new Array(c);l>>0;l--;)c[l]=C[l];return c}function J(C){return C.classList?$(C.classList):(C.getAttribute("class")||"").split(" ").filter(function(C){return C})}function Z(C){return "".concat(C).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function C1(l){return Object.keys(l||{}).reduce(function(C,c){return C+"".concat(c,": ").concat(l[c].trim(),";")},"")}function c1(C){return C.size!==Q.size||C.x!==Q.x||C.y!==Q.y||C.rotate!==Q.rotate||C.flipX||C.flipY}function l1(){var C,c,l=p,z=U.familyPrefix,e=U.replacementClass,a=':host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Solid";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Regular";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Light";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Thin";--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible;box-sizing:content-box}.svg-inline--fa{display:var(--fa-display,inline-block);height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.0714285705em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);top:.25em}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-counter-scale,.25));transform:scale(var(--fa-counter-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top left;transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width,2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;vertical-align:middle;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-sr-only,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fa-sr-only-focusable:not(:focus),.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fa-duotone.fa-inverse,.fad.fa-inverse{color:var(--fa-inverse,#fff)}';return "fa"===z&&e===l||(C=new RegExp("\\.".concat("fa","\\-"),"g"),c=new RegExp("\\--".concat("fa","\\-"),"g"),l=new RegExp("\\.".concat(l),"g"),a=a.replace(C,".".concat(z,"-")).replace(c,"--".concat(z,"-")).replace(l,".".concat(e))),a}var z1=!1;function e1(){U.autoAddCss&&!z1&&(function(C){if(C&&o){var c=v.createElement("style");c.setAttribute("type","text/css"),c.innerHTML=C;for(var l=v.head.childNodes,z=null,e=l.length-1;-1").concat(z.map(t1).join(""),"")}function r1(C,c,l){if(C&&C[c]&&C[c][l])return {prefix:c,iconName:l,icon:C[c][l]}}o&&((V1=(v.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(v.readyState))||v.addEventListener("DOMContentLoaded",a1));function s1(C,c,l,z){for(var e,a,M=Object.keys(C),L=M.length,V=void 0!==z?h1(c,z):c,H=void 0===l?(e=1,C[M[0]]):(e=0,l);e svg path,\r\n.leaflet-tile-container {\r\n\tpointer-events: none;\r\n\t}\r\n\r\n.leaflet-marker-icon.leaflet-interactive,\r\n.leaflet-image-layer.leaflet-interactive,\r\n.leaflet-pane > svg path.leaflet-interactive,\r\nsvg.leaflet-image-layer.leaflet-interactive path {\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n\r\n/* visual tweaks */\r\n\r\n.leaflet-container {\r\n\tbackground: #ddd;\r\n\toutline: 0;\r\n\t}\r\n.leaflet-container a {\r\n\tcolor: #0078A8;\r\n\t}\r\n.leaflet-container a.leaflet-active {\r\n\toutline: 2px solid orange;\r\n\t}\r\n.leaflet-zoom-box {\r\n\tborder: 2px dotted #38f;\r\n\tbackground: rgba(255,255,255,0.5);\r\n\t}\r\n\r\n\r\n/* general typography */\r\n.leaflet-container {\r\n\tfont: 12px/1.5 \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n\t}\r\n\r\n\r\n/* general toolbar styles */\r\n\r\n.leaflet-bar {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.65);\r\n\tborder-radius: 4px;\r\n\t}\r\n.leaflet-bar a,\r\n.leaflet-bar a:hover {\r\n\tbackground-color: #fff;\r\n\tborder-bottom: 1px solid #ccc;\r\n\twidth: 26px;\r\n\theight: 26px;\r\n\tline-height: 26px;\r\n\tdisplay: block;\r\n\ttext-align: center;\r\n\ttext-decoration: none;\r\n\tcolor: black;\r\n\t}\r\n.leaflet-bar a,\r\n.leaflet-control-layers-toggle {\r\n\tbackground-position: 50% 50%;\r\n\tbackground-repeat: no-repeat;\r\n\tdisplay: block;\r\n\t}\r\n.leaflet-bar a:hover {\r\n\tbackground-color: #f4f4f4;\r\n\t}\r\n.leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 4px;\r\n\tborder-top-right-radius: 4px;\r\n\t}\r\n.leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 4px;\r\n\tborder-bottom-right-radius: 4px;\r\n\tborder-bottom: none;\r\n\t}\r\n.leaflet-bar a.leaflet-disabled {\r\n\tcursor: default;\r\n\tbackground-color: #f4f4f4;\r\n\tcolor: #bbb;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-bar a {\r\n\twidth: 30px;\r\n\theight: 30px;\r\n\tline-height: 30px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 2px;\r\n\tborder-top-right-radius: 2px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 2px;\r\n\tborder-bottom-right-radius: 2px;\r\n\t}\r\n\r\n/* zoom control */\r\n\r\n.leaflet-control-zoom-in,\r\n.leaflet-control-zoom-out {\r\n\tfont: bold 18px 'Lucida Console', Monaco, monospace;\r\n\ttext-indent: 1px;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {\r\n\tfont-size: 22px;\r\n\t}\r\n\r\n\r\n/* layers control */\r\n\r\n.leaflet-control-layers {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.4);\r\n\tbackground: #fff;\r\n\tborder-radius: 5px;\r\n\t}\r\n.leaflet-control-layers-toggle {\r\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);\r\n\twidth: 36px;\r\n\theight: 36px;\r\n\t}\r\n.leaflet-retina .leaflet-control-layers-toggle {\r\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);\r\n\tbackground-size: 26px 26px;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers-toggle {\r\n\twidth: 44px;\r\n\theight: 44px;\r\n\t}\r\n.leaflet-control-layers .leaflet-control-layers-list,\r\n.leaflet-control-layers-expanded .leaflet-control-layers-toggle {\r\n\tdisplay: none;\r\n\t}\r\n.leaflet-control-layers-expanded .leaflet-control-layers-list {\r\n\tdisplay: block;\r\n\tposition: relative;\r\n\t}\r\n.leaflet-control-layers-expanded {\r\n\tpadding: 6px 10px 6px 6px;\r\n\tcolor: #333;\r\n\tbackground: #fff;\r\n\t}\r\n.leaflet-control-layers-scrollbar {\r\n\toverflow-y: scroll;\r\n\toverflow-x: hidden;\r\n\tpadding-right: 5px;\r\n\t}\r\n.leaflet-control-layers-selector {\r\n\tmargin-top: 2px;\r\n\tposition: relative;\r\n\ttop: 1px;\r\n\t}\r\n.leaflet-control-layers label {\r\n\tdisplay: block;\r\n\t}\r\n.leaflet-control-layers-separator {\r\n\theight: 0;\r\n\tborder-top: 1px solid #ddd;\r\n\tmargin: 5px -10px 5px -6px;\r\n\t}\r\n\r\n/* Default icon URLs */\r\n.leaflet-default-icon-path {\r\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=);\r\n\t}\r\n\r\n\r\n/* attribution and scale controls */\r\n\r\n.leaflet-container .leaflet-control-attribution {\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.7);\r\n\tmargin: 0;\r\n\t}\r\n.leaflet-control-attribution,\r\n.leaflet-control-scale-line {\r\n\tpadding: 0 5px;\r\n\tcolor: #333;\r\n\t}\r\n.leaflet-control-attribution a {\r\n\ttext-decoration: none;\r\n\t}\r\n.leaflet-control-attribution a:hover {\r\n\ttext-decoration: underline;\r\n\t}\r\n.leaflet-container .leaflet-control-attribution,\r\n.leaflet-container .leaflet-control-scale {\r\n\tfont-size: 11px;\r\n\t}\r\n.leaflet-left .leaflet-control-scale {\r\n\tmargin-left: 5px;\r\n\t}\r\n.leaflet-bottom .leaflet-control-scale {\r\n\tmargin-bottom: 5px;\r\n\t}\r\n.leaflet-control-scale-line {\r\n\tborder: 2px solid #777;\r\n\tborder-top: none;\r\n\tline-height: 1.1;\r\n\tpadding: 2px 5px 1px;\r\n\tfont-size: 11px;\r\n\twhite-space: nowrap;\r\n\toverflow: hidden;\r\n\t-moz-box-sizing: border-box;\r\n\t box-sizing: border-box;\r\n\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.5);\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child) {\r\n\tborder-top: 2px solid #777;\r\n\tborder-bottom: none;\r\n\tmargin-top: -2px;\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child):not(:last-child) {\r\n\tborder-bottom: 2px solid #777;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-attribution,\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tbox-shadow: none;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tborder: 2px solid rgba(0,0,0,0.2);\r\n\tbackground-clip: padding-box;\r\n\t}\r\n\r\n\r\n/* popup */\r\n\r\n.leaflet-popup {\r\n\tposition: absolute;\r\n\ttext-align: center;\r\n\tmargin-bottom: 20px;\r\n\t}\r\n.leaflet-popup-content-wrapper {\r\n\tpadding: 1px;\r\n\ttext-align: left;\r\n\tborder-radius: 12px;\r\n\t}\r\n.leaflet-popup-content {\r\n\tmargin: 13px 19px;\r\n\tline-height: 1.4;\r\n\t}\r\n.leaflet-popup-content p {\r\n\tmargin: 18px 0;\r\n\t}\r\n.leaflet-popup-tip-container {\r\n\twidth: 40px;\r\n\theight: 20px;\r\n\tposition: absolute;\r\n\tleft: 50%;\r\n\tmargin-left: -20px;\r\n\toverflow: hidden;\r\n\tpointer-events: none;\r\n\t}\r\n.leaflet-popup-tip {\r\n\twidth: 17px;\r\n\theight: 17px;\r\n\tpadding: 1px;\r\n\r\n\tmargin: -10px auto 0;\r\n\r\n\t-webkit-transform: rotate(45deg);\r\n\t -moz-transform: rotate(45deg);\r\n\t -ms-transform: rotate(45deg);\r\n\t transform: rotate(45deg);\r\n\t}\r\n.leaflet-popup-content-wrapper,\r\n.leaflet-popup-tip {\r\n\tbackground: white;\r\n\tcolor: #333;\r\n\tbox-shadow: 0 3px 14px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tpadding: 4px 4px 0 0;\r\n\tborder: none;\r\n\ttext-align: center;\r\n\twidth: 18px;\r\n\theight: 14px;\r\n\tfont: 16px/14px Tahoma, Verdana, sans-serif;\r\n\tcolor: #c3c3c3;\r\n\ttext-decoration: none;\r\n\tfont-weight: bold;\r\n\tbackground: transparent;\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button:hover {\r\n\tcolor: #999;\r\n\t}\r\n.leaflet-popup-scrolled {\r\n\toverflow: auto;\r\n\tborder-bottom: 1px solid #ddd;\r\n\tborder-top: 1px solid #ddd;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-popup-content-wrapper {\r\n\t-ms-zoom: 1;\r\n\t}\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\twidth: 24px;\r\n\tmargin: 0 auto;\r\n\r\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)\";\r\n\tfilter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);\r\n\t}\r\n.leaflet-oldie .leaflet-popup-tip-container {\r\n\tmargin-top: -1px;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-control-zoom,\r\n.leaflet-oldie .leaflet-control-layers,\r\n.leaflet-oldie .leaflet-popup-content-wrapper,\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\tborder: 1px solid #999;\r\n\t}\r\n\r\n\r\n/* div icon */\r\n\r\n.leaflet-div-icon {\r\n\tbackground: #fff;\r\n\tborder: 1px solid #666;\r\n\t}\r\n\r\n\r\n/* Tooltip */\r\n/* Base styles for the element that has a tooltip */\r\n.leaflet-tooltip {\r\n\tposition: absolute;\r\n\tpadding: 6px;\r\n\tbackground-color: #fff;\r\n\tborder: 1px solid #fff;\r\n\tborder-radius: 3px;\r\n\tcolor: #222;\r\n\twhite-space: nowrap;\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none;\r\n\tpointer-events: none;\r\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-tooltip.leaflet-clickable {\r\n\tcursor: pointer;\r\n\tpointer-events: auto;\r\n\t}\r\n.leaflet-tooltip-top:before,\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\tposition: absolute;\r\n\tpointer-events: none;\r\n\tborder: 6px solid transparent;\r\n\tbackground: transparent;\r\n\tcontent: \"\";\r\n\t}\r\n\r\n/* Directions */\r\n\r\n.leaflet-tooltip-bottom {\r\n\tmargin-top: 6px;\r\n}\r\n.leaflet-tooltip-top {\r\n\tmargin-top: -6px;\r\n}\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-top:before {\r\n\tleft: 50%;\r\n\tmargin-left: -6px;\r\n\t}\r\n.leaflet-tooltip-top:before {\r\n\tbottom: 0;\r\n\tmargin-bottom: -12px;\r\n\tborder-top-color: #fff;\r\n\t}\r\n.leaflet-tooltip-bottom:before {\r\n\ttop: 0;\r\n\tmargin-top: -12px;\r\n\tmargin-left: -6px;\r\n\tborder-bottom-color: #fff;\r\n\t}\r\n.leaflet-tooltip-left {\r\n\tmargin-left: -6px;\r\n}\r\n.leaflet-tooltip-right {\r\n\tmargin-left: 6px;\r\n}\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\ttop: 50%;\r\n\tmargin-top: -6px;\r\n\t}\r\n.leaflet-tooltip-left:before {\r\n\tright: 0;\r\n\tmargin-right: -12px;\r\n\tborder-left-color: #fff;\r\n\t}\r\n.leaflet-tooltip-right:before {\r\n\tleft: 0;\r\n\tmargin-left: -12px;\r\n\tborder-right-color: #fff;\r\n\t}\r\n"; -styleInject(css_248z$4); - -var css_248z$3 = "/* global styling */\n.leaflet-control-geosearch *,\n.leaflet-control-geosearch *:before,\n.leaflet-control-geosearch *:after {\n box-sizing: border-box;\n}\n\n/* leaflet button styling */\n.leaflet-control-geosearch .leaflet-bar-part {\n border-radius: 4px;\n border-bottom: none;\n}\n\n.leaflet-control-geosearch a.leaflet-bar-part:before,\n.leaflet-control-geosearch a.leaflet-bar-part:after {\n position: absolute;\n display: block;\n content: '';\n}\n\n/* magnifying glass */\n.leaflet-control-geosearch a.leaflet-bar-part:before {\n top: 15px;\n left: 13px;\n width: 6px;\n border-top: 2px solid #555;\n transform: rotateZ(45deg);\n}\n\n.leaflet-control-geosearch a.leaflet-bar-part:after {\n top: 8px;\n left: 8px;\n height: 8px;\n width: 8px;\n border-radius: 50%;\n border: 2px solid #555;\n}\n\n/* resets for pending and error icons */\n.leaflet-control-geosearch.error a.leaflet-bar-part:before,\n.leaflet-control-geosearch.pending a.leaflet-bar-part:before {\n display: none;\n}\n\n.leaflet-control-geosearch.pending a.leaflet-bar-part:after,\n.leaflet-control-geosearch.error a.leaflet-bar-part:after {\n left: 50%;\n top: 50%;\n width: 18px;\n height: 18px;\n margin: -9px 0 0 -9px;\n border-radius: 50%;\n}\n\n/* pending icon */\n.leaflet-control-geosearch.pending a.leaflet-bar-part:after {\n content: '';\n border: 2px solid #555;\n border-top: 2px solid #f3f3f3;\n animation: spin 1s linear infinite;\n}\n\n/* error icon */\n.leaflet-control-geosearch.error a.leaflet-bar-part:after {\n content: '!';\n line-height: initial;\n font-weight: 600;\n font-size: 18px;\n border: none;\n}\n\n/* search form styling */\n.leaflet-control-geosearch form {\n display: none;\n position: absolute;\n top: 0;\n left: 36px;\n border-radius: 0 4px 4px 0;\n background-color: #fff;\n background-clip: padding-box;\n z-index: -1;\n height: auto;\n margin: 0;\n padding: 0 8px;\n box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65);\n}\n\n.leaflet-geosearch-button form.open {\n border-radius: 0 4px 4px 4px;\n}\n.leaflet-control-geosearch.active form {\n display: block;\n}\n\n.leaflet-geosearch-button.active .leaflet-bar-part {\n border-radius: 4px 0 0 4px;\n width: 36px;\n}\n\n.leaflet-geosearch-button form {\n max-width: 350px;\n}\n\n.leaflet-control-geosearch form input {\n min-width: 200px;\n width: 100%;\n outline: none;\n border: none;\n margin: 0;\n padding: 0;\n font-size: 12px;\n height: 26px;\n border: none;\n border-radius: 0 4px 4px 0;\n text-indent: 8px;\n}\n\n.leaflet-touch .leaflet-geosearch-bar form {\n border: 2px solid rgba(0,0,0,0.2);\n box-shadow: none;\n}\n\n.leaflet-touch .leaflet-geosearch-bar form input {\n height: 30px;\n}\n\n.leaflet-control-geosearch .results {\n background: #fff;\n}\n\n.leaflet-control-geosearch .results > * {\n line-height: 24px;\n padding: 0 8px;\n border: 1px solid transparent;\n\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.leaflet-control-geosearch .results.active {\n padding: 8px 0;\n border-top: 1px solid #c6c6c6;\n}\n\n.leaflet-control-geosearch .results > .active,\n.leaflet-control-geosearch .results > :hover {\n background-color: #f8f8f8;\n border-color: #c6c6c6;\n cursor: pointer;\n}\n\n/* add missing border to form */\n.leaflet-control-geosearch .results.active:after {\n content: '';\n display: block;\n width: 0;\n position: absolute;\n left: -2px;\n bottom: -2px;\n top: 30px;\n}\n\n.leaflet-touch .leaflet-control-geosearch .results.active:after {\n border-left: 2px solid rgba(0, 0, 0, .2);\n}\n\n/* animations */\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n.leaflet-top .leaflet-geosearch-bar,\n.leaflet-bottom .leaflet-geosearch-bar {\n display: none;\n}\n\n.leaflet-geosearch-bar {\n position: relative;\n display: block;\n height: auto;\n width: 400px;\n max-width: calc(100% - 120px);\n margin: 10px auto 0;\n cursor: auto;\n z-index: 1000;\n}\n\n.leaflet-geosearch-bar form {\n position: relative;\n top: 0;\n left: 0;\n display: block;\n border-radius: 4px;\n}\n\n.leaflet-geosearch-bar form input {\n min-width: 100%;\n width: 100%;\n}\n\n.leaflet-geosearch-bar .results.active:after {\n opacity: .2;\n}\n\n.leaflet-right .leaflet-control-geosearch form {\n right: 28px;\n left: initial;\n border-radius: 4px 0 0 4px;\n border-left: inherit;\n border-right: none;\n}\n\n.leaflet-bar-notfound {\n font-style: italic;\n}\n\n.leaflet-control-geosearch a.reset {\n color: black;\n font-weight: bold;\n position: absolute;\n line-height: 26px;\n padding: 0 8px;\n right: 0;\n top: 0;\n cursor: pointer;\n border: none;\n text-decoration: none;\n background-color: #fff;\n border-radius: 0 4px 4px 0;\n}\n\n.leaflet-touch .leaflet-control-geosearch a.reset {\n line-height: 30px;\n}\n\n.leaflet-control-geosearch a.reset:hover {\n background: #f5f5f5;\n}\n"; -styleInject(css_248z$3); - -var css_248z$2 = ".leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {\n\t-webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;\n\t-moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;\n\t-o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;\n\ttransition: transform 0.3s ease-out, opacity 0.3s ease-in;\n}\n\n.leaflet-cluster-spider-leg {\n\t/* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */\n\t-webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;\n\t-moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;\n\t-o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;\n\ttransition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;\n}\n"; -styleInject(css_248z$2); - -var css_248z$1 = ".marker-cluster-small {\n\tbackground-color: rgba(181, 226, 140, 0.6);\n\t}\n.marker-cluster-small div {\n\tbackground-color: rgba(110, 204, 57, 0.6);\n\t}\n\n.marker-cluster-medium {\n\tbackground-color: rgba(241, 211, 87, 0.6);\n\t}\n.marker-cluster-medium div {\n\tbackground-color: rgba(240, 194, 12, 0.6);\n\t}\n\n.marker-cluster-large {\n\tbackground-color: rgba(253, 156, 115, 0.6);\n\t}\n.marker-cluster-large div {\n\tbackground-color: rgba(241, 128, 23, 0.6);\n\t}\n\n\t/* IE 6-8 fallback colors */\n.leaflet-oldie .marker-cluster-small {\n\tbackground-color: rgb(181, 226, 140);\n\t}\n.leaflet-oldie .marker-cluster-small div {\n\tbackground-color: rgb(110, 204, 57);\n\t}\n\n.leaflet-oldie .marker-cluster-medium {\n\tbackground-color: rgb(241, 211, 87);\n\t}\n.leaflet-oldie .marker-cluster-medium div {\n\tbackground-color: rgb(240, 194, 12);\n\t}\n\n.leaflet-oldie .marker-cluster-large {\n\tbackground-color: rgb(253, 156, 115);\n\t}\n.leaflet-oldie .marker-cluster-large div {\n\tbackground-color: rgb(241, 128, 23);\n}\n\n.marker-cluster {\n\tbackground-clip: padding-box;\n\tborder-radius: 20px;\n\t}\n.marker-cluster div {\n\twidth: 30px;\n\theight: 30px;\n\tmargin-left: 5px;\n\tmargin-top: 5px;\n\n\ttext-align: center;\n\tborder-radius: 15px;\n\tfont: 12px \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n\t}\n.marker-cluster span {\n\tline-height: 30px;\n\t}"; -styleInject(css_248z$1); - -/* - * Leaflet.markercluster 1.5.3+master.e5124b2, - * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps. - * https://github.com/Leaflet/Leaflet.markercluster - * (c) 2012-2017, Dave Leaver, smartrak - */ - -createCommonjsModule(function (module, exports) { -(function (global, factory) { - factory(exports) ; -}(commonjsGlobal, function (exports) { - /* - * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within - */ - - var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({ - - options: { - maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center - iconCreateFunction: null, - clusterPane: L.Marker.prototype.options.pane, - - spiderfyOnEveryZoom: false, - spiderfyOnMaxZoom: true, - showCoverageOnHover: true, - zoomToBoundsOnClick: true, - singleMarkerMode: false, - - disableClusteringAtZoom: null, - - // Setting this to false prevents the removal of any clusters outside of the viewpoint, which - // is the default behaviour for performance reasons. - removeOutsideVisibleBounds: true, - - // Set to false to disable all animations (zoom and spiderfy). - // If false, option animateAddingMarkers below has no effect. - // If L.DomUtil.TRANSITION is falsy, this option has no effect. - animate: true, - - //Whether to animate adding markers after adding the MarkerClusterGroup to the map - // If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains. - animateAddingMarkers: false, - - // Make it possible to provide custom function to calculate spiderfy shape positions - spiderfyShapePositions: null, - - //Increase to increase the distance away that spiderfied markers appear from the center - spiderfyDistanceMultiplier: 1, - - // Make it possible to specify a polyline options on a spider leg - spiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 }, + Very simple wildcard matching, which is designed to provide the same + functionality that is found in the + [eve](https://github.com/adobe-webplatform/eve) eventing library. - // When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts - chunkedLoading: false, - chunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback) - chunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser - chunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator) + ## Usage - //Options to pass to the L.Polygon constructor - polygonOptions: {} - }, + It works with strings: - initialize: function (options) { - L.Util.setOptions(this, options); - if (!this.options.iconCreateFunction) { - this.options.iconCreateFunction = this._defaultIconCreateFunction; - } + <<< examples/strings.js - this._featureGroup = L.featureGroup(); - this._featureGroup.addEventParent(this); + Arrays: - this._nonPointGroup = L.featureGroup(); - this._nonPointGroup.addEventParent(this); + <<< examples/arrays.js - this._inZoomAnimation = 0; - this._needsClustering = []; - this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of - //The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move - this._currentShownBounds = null; + Objects (matching against keys): - this._queue = []; + <<< examples/objects.js - this._childMarkerEventHandlers = { - 'dragstart': this._childMarkerDragStart, - 'move': this._childMarkerMoved, - 'dragend': this._childMarkerDragEnd, - }; + ## Alternative Implementations - // Hook the appropriate animation methods. - var animate = L.DomUtil.TRANSITION && this.options.animate; - L.extend(this, animate ? this._withAnimation : this._noAnimation); - // Remember which MarkerCluster class to instantiate (animated or not). - this._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated; - }, + - - addLayer: function (layer) { + Great for full file-based wildcard matching. - if (layer instanceof L.LayerGroup) { - return this.addLayers([layer]); - } + - - //Don't cluster non point data - if (!layer.getLatLng) { - this._nonPointGroup.addLayer(layer); - this.fire('layeradd', { layer: layer }); - return this; - } + A well cared for and loved JS wildcard matcher. +**/ - if (!this._map) { - this._needsClustering.push(layer); - this.fire('layeradd', { layer: layer }); - return this; - } +function WildcardMatcher(text, separator) { + this.text = text = text || ''; + this.hasWild = text.indexOf('*') >= 0; + this.separator = separator; + this.parts = text.split(separator).map(this.classifyPart.bind(this)); +} - if (this.hasLayer(layer)) { - return this; - } +WildcardMatcher.prototype.match = function(input) { + var matches = true; + var parts = this.parts; + var ii; + var partsCount = parts.length; + var testParts; + if (typeof input == 'string' || input instanceof String) { + if (!this.hasWild && this.text != input) { + matches = false; + } else { + testParts = (input || '').split(this.separator); + for (ii = 0; matches && ii < partsCount; ii++) { + if (parts[ii] === '*') { + continue; + } else if (ii < testParts.length) { + matches = parts[ii] instanceof RegExp + ? parts[ii].test(testParts[ii]) + : parts[ii] === testParts[ii]; + } else { + matches = false; + } + } - //If we have already clustered we'll need to add this one to a cluster + // If matches, then return the component parts + matches = matches && testParts; + } + } + else if (typeof input.splice == 'function') { + matches = []; - if (this._unspiderfy) { - this._unspiderfy(); - } + for (ii = input.length; ii--; ) { + if (this.match(input[ii])) { + matches[matches.length] = input[ii]; + } + } + } + else if (typeof input == 'object') { + matches = {}; - this._addLayer(layer, this._maxZoom); - this.fire('layeradd', { layer: layer }); + for (var key in input) { + if (this.match(key)) { + matches[key] = input[key]; + } + } + } - // Refresh bounds and weighted positions. - this._topClusterLevel._recalculateBounds(); + return matches; +}; - this._refreshClustersIcons(); +WildcardMatcher.prototype.classifyPart = function(part) { + // in the event that we have been provided a part that is not just a wildcard + // then turn this into a regular expression for matching purposes + if (part === '*') { + return part; + } else if (part.indexOf('*') >= 0 || part.indexOf('?') >= 0) { + return new RegExp(part.replace(REGEXP_PARTS, '\.$1')); + } - //Work out what is visible - var visibleLayer = layer, - currentZoom = this._zoom; - if (layer.__parent) { - while (visibleLayer.__parent._zoom >= currentZoom) { - visibleLayer = visibleLayer.__parent; - } - } + return part; +}; - if (this._currentShownBounds.contains(visibleLayer.getLatLng())) { - if (this.options.animateAddingMarkers) { - this._animationAddLayer(layer, visibleLayer); - } else { - this._animationAddLayerNonAnimated(layer, visibleLayer); - } - } - return this; - }, +var wildcard = function(text, test, separator) { + var matcher = new WildcardMatcher(text, separator || /[\/\.]/); + if (typeof test != 'undefined') { + return matcher.match(test); + } - removeLayer: function (layer) { + return matcher; +}; - if (layer instanceof L.LayerGroup) { - return this.removeLayers([layer]); - } +/*! + * leaflet-extra-markers + * Custom Markers for Leaflet JS based on Awesome Markers + * Leaflet ExtraMarkers + * https://github.com/coryasilva/Leaflet.ExtraMarkers/ + * @author coryasilva + * @version 1.2.1 + */ - //Non point layers - if (!layer.getLatLng) { - this._nonPointGroup.removeLayer(layer); - this.fire('layerremove', { layer: layer }); - return this; - } +createCommonjsModule(function (module, exports) { +(function (global, factory) { + factory(exports) ; +}(commonjsGlobal, (function (exports) { + var ExtraMarkers = L.ExtraMarkers = {}; + ExtraMarkers.version = L.ExtraMarkers.version = "1.2.1"; + ExtraMarkers.Icon = L.ExtraMarkers.Icon = L.Icon.extend({ + options: { + iconSize: [ 35, 45 ], + iconAnchor: [ 17, 42 ], + popupAnchor: [ 1, -32 ], + shadowAnchor: [ 10, 12 ], + shadowSize: [ 36, 16 ], + className: "", + prefix: "", + extraClasses: "", + shape: "circle", + icon: "", + innerHTML: "", + markerColor: "red", + svgBorderColor: "#fff", + svgOpacity: 1, + iconColor: "#fff", + iconRotate: 0, + number: "", + svg: false, + name: "" + }, + initialize: function(options) { + options = L.Util.setOptions(this, options); + }, + createIcon: function() { + var div = document.createElement("div"), options = this.options; + if (options.icon) { + div.innerHTML = this._createInner(); + } + if (options.innerHTML) { + div.innerHTML = options.innerHTML; + } + if (options.bgPos) { + div.style.backgroundPosition = -options.bgPos.x + "px " + -options.bgPos.y + "px"; + } + if (!options.svg) { + this._setIconStyles(div, options.shape + "-" + options.markerColor); + } else { + this._setIconStyles(div, "svg"); + } + return div; + }, + _getColorHex: function (color) { + var colorMap = { + red: "#a23337", + "orange-dark": "#d73e29", + orange: "#ef9227", + yellow: "#f5bb39", + "blue-dark": "#276273", + cyan: "#32a9dd", + purple: "#440444", + violet: "#90278d", + pink: "#c057a0", + green: "#006838", + white: "#e8e8e8", + black: "#211c1d" + }; + return colorMap[color] || color; + }, + _createSvg: function (shape, markerColor) { + var svgMap = { + circle: '', + square: '', + star: '', + penta: '' + }; + return svgMap[shape]; + }, + _createInner: function() { + var iconStyle = "", iconNumber = "", iconClass = "", result = "", options = this.options; + if (options.iconColor) { + iconStyle = "color: " + options.iconColor + ";"; + } + if (options.iconRotate !== 0) { + iconStyle += "-webkit-transform: rotate(" + options.iconRotate + "deg);"; + iconStyle += "-moz-transform: rotate(" + options.iconRotate + "deg);"; + iconStyle += "-o-transform: rotate(" + options.iconRotate + "deg);"; + iconStyle += "-ms-transform: rotate(" + options.iconRotate + "deg);"; + iconStyle += "transform: rotate(" + options.iconRotate + "deg);"; + } + if (options.number) { + iconNumber = 'number="' + options.number + '" '; + } + if (options.extraClasses.length) { + iconClass += options.extraClasses + " "; + } + if (options.prefix.length) { + iconClass += options.prefix + " "; + } + if (options.icon.length) { + iconClass += options.icon + " "; + } + if (options.svg) { + result += this._createSvg(options.shape, this._getColorHex(options.markerColor)); + } - if (!this._map) { - if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) { - this._needsRemoving.push({ layer: layer, latlng: layer._latlng }); - } - this.fire('layerremove', { layer: layer }); - return this; - } + result += ''; - if (!layer.__parent) { - return this; - } + if (options.name.length) { + result += '
' + options.name + '
'; + } - if (this._unspiderfy) { - this._unspiderfy(); - this._unspiderfyLayer(layer); - } + return result; + }, + _setIconStyles: function(img, name) { + var options = this.options, size = L.point(options[name === "shadow" ? "shadowSize" : "iconSize"]), anchor, leafletName; + if (name === "shadow") { + anchor = L.point(options.shadowAnchor || options.iconAnchor); + leafletName = "shadow"; + } else { + anchor = L.point(options.iconAnchor); + leafletName = "icon"; + } + if (!anchor && size) { + anchor = size.divideBy(2, true); + } + img.className = "leaflet-marker-" + leafletName + " extra-marker extra-marker-" + name + " " + options.className; + if (anchor) { + img.style.marginLeft = -anchor.x + "px"; + img.style.marginTop = -anchor.y + "px"; + } + if (size) { + img.style.width = size.x + "px"; + img.style.height = size.y + "px"; + } + }, + createShadow: function() { + var div = document.createElement("div"); + this._setIconStyles(div, "shadow"); + return div; + } + }); + ExtraMarkers.icon = L.ExtraMarkers.icon = function(options) { + return new L.ExtraMarkers.Icon(options); + }; - //Remove the marker from clusters - this._removeLayer(layer, true); - this.fire('layerremove', { layer: layer }); + exports.ExtraMarkers = ExtraMarkers; - // Refresh bounds and weighted positions. - this._topClusterLevel._recalculateBounds(); + Object.defineProperty(exports, '__esModule', { value: true }); - this._refreshClustersIcons(); +}))); - layer.off(this._childMarkerEventHandlers, this); - if (this._featureGroup.hasLayer(layer)) { - this._featureGroup.removeLayer(layer); - if (layer.clusterShow) { - layer.clusterShow(); - } - } +}); - return this; - }, +function styleInject(css, ref) { + if ( ref === void 0 ) ref = {}; + var insertAt = ref.insertAt; - //Takes an array of markers and adds them in bulk - addLayers: function (layersArray, skipLayerAddEvent) { - if (!L.Util.isArray(layersArray)) { - return this.addLayer(layersArray); - } + if (!css || typeof document === 'undefined') { return; } - var fg = this._featureGroup, - npg = this._nonPointGroup, - chunked = this.options.chunkedLoading, - chunkInterval = this.options.chunkInterval, - chunkProgress = this.options.chunkProgress, - l = layersArray.length, - offset = 0, - originalArray = true, - m; + var head = document.head || document.getElementsByTagName('head')[0]; + var style = document.createElement('style'); + style.type = 'text/css'; - if (this._map) { - var started = (new Date()).getTime(); - var process = L.bind(function () { - var start = (new Date()).getTime(); + if (insertAt === 'top') { + if (head.firstChild) { + head.insertBefore(style, head.firstChild); + } else { + head.appendChild(style); + } + } else { + head.appendChild(style); + } - // Make sure to unspiderfy before starting to add some layers - if (this._map && this._unspiderfy) { - this._unspiderfy(); - } + if (style.styleSheet) { + style.styleSheet.cssText = css; + } else { + style.appendChild(document.createTextNode(css)); + } +} - for (; offset < l; offset++) { - if (chunked && offset % 200 === 0) { - // every couple hundred markers, instrument the time elapsed since processing started: - var elapsed = (new Date()).getTime() - start; - if (elapsed > chunkInterval) { - break; // been working too hard, time to take a break :-) - } - } +var css_248z$4 = "/*!\n * leaflet-extra-markers\n * Custom Markers for Leaflet JS based on Awesome Markers\n * Leaflet ExtraMarkers\n * https://github.com/coryasilva/Leaflet.ExtraMarkers/\n * @author coryasilva \n * @version 1.2.1\n */.extra-marker{background:url(\"data:image/png;base64,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\") no-repeat 0 0;width:35px;height:46px;position:absolute;left:0;top:0;display:block;text-align:center}.extra-marker-shadow{background:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAQCAYAAACcN8ZaAAAB3klEQVR42s3U4UdDURzG8czMXJnJ1Vwzc6VJZjaZJdlMlpQsKdmUFNOUspRSSqUolfQfr+fF98Vx5mwv9qbDx7LdznnO7/7Omej3+/+Ga0QMUYkhbvBgmhzCQxwxibIGrGEF8CQhU+LLtKQkQNqScUgjxRxTBIxbgfgD/BgnhM8kM5KTeclLQYqGkkMRBckzR8ic/mAgd5BAZplsUaqyIg2sDtHg2brUZJk5SmwopErJUWE8SpmTMhNvya60Zd/SNrR4bkeaskG4uiwRZk6yrJEYFibGAxn+scECHTmTnuVCzvmty3PHciB7bGKN6lQkzysPqIrHmpFhYbKUtckC1/Ioz4ZHuZdbuSLYiRxRpSZVWXZVxAzC0R4Ik5SQsu6w8yd5l2/5kg95I9SdXMoZQfYIUjeqEUrgOkXGPeN4TYRhxy8E+ZUf+eS7B7miIoeybVSjKDnm8u3+gH3pDTYwu1igATvs/pXqvBKiR4i2bNJfi1ZfUAnjgrOG8wY2quNzBKuU/ZS+uSFEl5O0xRGuUIlZCcw7xG5QPkeHYUSNV5WXGou2sC3rBC0LjenqCXGO0WEiTJa0Lr4KixdHBrDGuGGiRqCUpFk8pGIpQtCU7p4YPwxYxEMCk1aAMQZh8Ac8PfbIzYPJOwAAAABJRU5ErkJggg==\") no-repeat 0 0;width:36px;height:16px}@media (min--moz-device-pixel-ratio:1.5),(-webkit-min-device-pixel-ratio:1.5),(min-device-pixel-ratio:1.5),(min-resolution:1.5dppx){.extra-marker{background-image:url(\"data:image/png;base64,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\");background-size:540px 184px}.extra-marker-shadow{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAAAgCAYAAACvgw7DAAAFhElEQVR42tWZ/0ubVxSHZZQxpJQRwoqEUkJQQhlBCcEiQRGJiKFEQqQ4lKFYLA5FsSjKioqipRutbLJ2f627g+dyDmfvqfetzlLh+aFpcr88+dxzb+7bdwt/33wG974g/rhu+pdzwt86fJdA/82w7Un/18m6kRBXgD+5+4YHDt/fEtImfRppVlJ+MY4QEWEmbyZZUBQVP2TwMJGBDMx7aFP6K4gwJBlBecVYISIDCSJAJm0mUIJH8NhQdqjkh8/SNv2VRB6SjCAtJ2dKMGuFIEIEMHGZ2CAMQdXwxPDjNdQ++f+0Q9tD9F1RkgYYLwlCDmIg19IhJQiRVJToFAlMViYxHBiBOjQyGP0ETzMw76Ed+qC/YSVrSAkqiRySo1IjAnwkKSKlQKMIQQYS4sQZ/Bg0A+MwYZg0TKViPjeh+mjS72iUhKCqyCE5pCZdDEmxUmjwURQSZSCiqSbXCkwHZmAW2g7PEmkbZml/mj6nlKgm42rE9DDushHzQGpNohjefB8pD2NK6GSEjscZ1AyD7QTmAt1AD+YVz/Mjn6e9LswB0pCEICVnhFQPIabEfAoiJj0xkhaWj5LSoNMW39ocA14I/BRYCvwMy58NbdDe4r9twwLCEIUcEoSYCbWkhqk1g0lLyTv92bTQUBkpdZWSDoNbZAKrgbXAy8B64JdE1jN4SVsvAquwokUhaJ70dNTyaiEmLqUaYiqUArZu0qLF+EdjOa/wwWKsK2r5tPiGFhjoGhPcCmwHdgKvEtlRbMNWYDOwQbtIEjlGDIlhKUmNqZOWKuOPW3bRSct1iUGMbM2PabxBp20GtMygt5jkfuAg8DpwaOF1y6+BA9iDXdpDEoKQQ79LLKv5mBZVX8ZZQiO66Nqt2jngISFNTJkoPqXjLoOKUvaY5HHgJHDmcAoncBw4UtIOkLtnxJAapEid6aqkTKliW2f5VOPysXUFjJQ0Mf1KTAXzTb6VeeK8wQQOmeibwNvA7xn8xv+95X3nyIqCDiU9iGFJUXPWkLKo6krbLJ2GpIQdiJoiy8dJyg3E1IjoDDvCCgPfZ3LnCHgf+MNwwevveE+UE1N0RGKilJ0MIUv021Vb86QIYefJJUSkXF1d4eS6rdoXM0uUV5nA6ygFCZeBDxpe+1MEkSBJzbESs6uWzwu+gEWzdFpIidtxzWzHck5h6fgpETHI8cWYGlOMW7VKzEKWGCb/V+Bj4G/4wGtRzDsSc07SjjKSsqaEPFdCpkWIpMQc9UmJCLEXVVaGFXPP4G/XUnybjpg3TPhSS4GPKjHvVVJOY10hJduxyKpa0gt01Nlk3JxkbXEt+j8OBREhpIgRORzw6LiqdqUexXeTb/qUFFzE1MAly4vaQkpYNrHAqh1nSS2Ztl0yJiFsvyYhbh0RHDH+UvJSw7cxqM4xc9SZdbUrnaniewEiRBJyoBKyniGk4y8ZOY+kLhn4z19+MYLcw8ghr0ZqppnEMpPbZUmcIOAMTA1hubDTILenziKT5nBmt92B9G1XhOQQk3iliRgGU+JbqzOBttqdNkUOp1451e5LUWXJSFHtaCHebxunqKZJ4d+3LEZ2JwZWYcCjLKlnTHCZFGwgIB7MYjFdUculJwczKaZquVT9c4gUVKeG9P3fYuS3VPaPyRrf7CQ7Ro/0yDWD+qHn7C5j5ug+aO9m7c2+FZLndv/2xPin4BLJqcZf2wiaMbdxs3KzJncjzlWjFFM5lJl0+A/I7lpMX+bdDHKIe1WlZ0zuddXVIjJMMsr21t6mI+8DsbsXQ2pEDqdhuf+tsHM8YfJgbujZZh0Z/W4xNX9fXoz/+8nKKdlnSYqKTYctplYIfC1i7KFPnhwwUXnMah+dioxCsgyEfD1iIPMxrVAQ0p8ZexLuWsw/8PFSG0HPbPgAAAAASUVORK5CYII=\");background-size:35px 16px}}.extra-marker.extra-marker-svg{background:none}.extra-marker.extra-marker-svg .svg-inline--fa,.extra-marker.extra-marker-svg i{position:absolute;left:0;width:35px}.extra-marker .svg-inline--fa,.extra-marker i{color:#fff;margin-top:7px;display:inline-block;font-size:14px}.extra-marker .svg-inline--fa{margin-top:10px;background:none}.extra-marker .svg-inline--fa,.extra-marker i.fa,.extra-marker i.fab,.extra-marker i.fas,.extra-marker i.far,.extra-marker i.fal{margin-top:10px}.extra-marker .svg-inline--fa.fa-2x,.extra-marker i.fa.fa-2x,.extra-marker i.fab.fa-2x,.extra-marker i.fas.fa-2x,.extra-marker i.far.fa-2x,.extra-marker i.fal.fa-2x{font-size:16px;margin-top:9px}.extra-marker .svg-inline--fa.fa-3x,.extra-marker i.fa.fa-3x,.extra-marker i.fab.fa-3x,.extra-marker i.fas.fa-3x,.extra-marker i.far.fa-3x,.extra-marker i.fal.fa-3x{font-size:18px;margin-top:9px}.extra-marker .svg-inline--fa.fa-4x,.extra-marker i.fa.fa-4x,.extra-marker i.fab.fa-4x,.extra-marker i.fas.fa-4x,.extra-marker i.far.fa-4x,.extra-marker i.fal.fa-4x{font-size:20px;margin-top:8px}.extra-marker .svg-inline--fa.fa-5x,.extra-marker i.fa.fa-5x,.extra-marker i.fab.fa-5x,.extra-marker i.fas.fa-5x,.extra-marker i.far.fa-5x,.extra-marker i.fal.fa-5x{font-size:24px;margin-top:6px}.extra-marker .fa-number:before{content:attr(number)}.extra-marker i.glyphicon{margin-top:10px}.extra-marker i.icon{margin-right:0;opacity:1}.extra-marker-circle-red{background-position:0 0}.extra-marker-circle-orange-dark{background-position:-36px 0}.extra-marker-circle-orange{background-position:-72px 0}.extra-marker-circle-yellow{background-position:-108px 0}.extra-marker-circle-blue-dark{background-position:-144px 0}.extra-marker-circle-blue{background-position:-180px 0}.extra-marker-circle-cyan{background-position:-216px 0}.extra-marker-circle-purple{background-position:-252px 0}.extra-marker-circle-violet{background-position:-288px 0}.extra-marker-circle-pink{background-position:-324px 0}.extra-marker-circle-green-dark{background-position:-360px 0}.extra-marker-circle-green{background-position:-396px 0}.extra-marker-circle-green-light{background-position:-432px 0}.extra-marker-circle-black{background-position:-468px 0}.extra-marker-circle-white{background-position:-504px 0}.extra-marker-square-red{background-position:0 -46px}.extra-marker-square-orange-dark{background-position:-36px -46px}.extra-marker-square-orange{background-position:-72px -46px}.extra-marker-square-yellow{background-position:-108px -46px}.extra-marker-square-blue-dark{background-position:-144px -46px}.extra-marker-square-blue{background-position:-180px -46px}.extra-marker-square-cyan{background-position:-216px -46px}.extra-marker-square-purple{background-position:-252px -46px}.extra-marker-square-violet{background-position:-288px -46px}.extra-marker-square-pink{background-position:-324px -46px}.extra-marker-square-green-dark{background-position:-360px -46px}.extra-marker-square-green{background-position:-396px -46px}.extra-marker-square-green-light{background-position:-432px -46px}.extra-marker-square-black{background-position:-468px -46px}.extra-marker-square-white{background-position:-504px -46px}.extra-marker-star-red{background-position:0 -92px}.extra-marker-star-orange-dark{background-position:-36px -92px}.extra-marker-star-orange{background-position:-72px -92px}.extra-marker-star-yellow{background-position:-108px -92px}.extra-marker-star-blue-dark{background-position:-144px -92px}.extra-marker-star-blue{background-position:-180px -92px}.extra-marker-star-cyan{background-position:-216px -92px}.extra-marker-star-purple{background-position:-252px -92px}.extra-marker-star-violet{background-position:-288px -92px}.extra-marker-star-pink{background-position:-324px -92px}.extra-marker-star-green-dark{background-position:-360px -92px}.extra-marker-star-green{background-position:-396px -92px}.extra-marker-star-green-light{background-position:-432px -92px}.extra-marker-star-black{background-position:-468px -92px}.extra-marker-star-white{background-position:-504px -92px}.extra-marker-penta-red{background-position:0 -138px}.extra-marker-penta-orange-dark{background-position:-36px -138px}.extra-marker-penta-orange{background-position:-72px -138px}.extra-marker-penta-yellow{background-position:-108px -138px}.extra-marker-penta-blue-dark{background-position:-144px -138px}.extra-marker-penta-blue{background-position:-180px -138px}.extra-marker-penta-cyan{background-position:-216px -138px}.extra-marker-penta-purple{background-position:-252px -138px}.extra-marker-penta-violet{background-position:-288px -138px}.extra-marker-penta-pink{background-position:-324px -138px}.extra-marker-penta-green-dark{background-position:-360px -138px}.extra-marker-penta-green{background-position:-396px -138px}.extra-marker-penta-green-light{background-position:-432px -138px}.extra-marker-penta-black{background-position:-468px -138px}.extra-marker-penta-white{background-position:-504px -138px}"; +styleInject(css_248z$4); - m = layersArray[offset]; +// The pound sign is optional here +const TAG_NAME_WITH_HEADER = /tag:(#?[\p{L}\p{N}_\/\-]*)/gu; +// Note no '#' sign +const INLINE_TAG_IN_NOTE = /tag:(?[\p{L}\p{N}_\/\-]+)/gu; +// path:"..." +const PATH_QUERY_WITH_HEADER = /path:"(['\p{L}\p{N}_\s/\-\\\.]+?)"/gu; +const LINKEDTO_QUERY_WITH_HEADER = /linkedto:"(['\p{L}\p{N}_\s/\-\\\.]+?)"/gu; +const LINKEDFROM_QUERY_WITH_HEADER = /linkedfrom:"(['\p{L}\p{N}_\s/\-\\\.]+?)"/gu; +// Known bug: this is not inclusive enough, many legal names with special characters would not be matched here +const NAME_QUERY_WITH_HEADER = /name:"(['\p{L}\p{N}_\s/\-\\\.]+?)"/gu; +// path:"path with spaces" OR path:path_without_spaces +const QUOTED_OR_NOT_QUOTED_PATH = /path:(("([\p{L}\p{N}_\s'/\-\\\.]*)")|([\p{L}\p{N}_'/\-\\\.]*))/gu; +const QUOTED_OR_NOT_QUOTED_LINKEDTO = /linkedto:(("([\p{L}\p{N}_\s'/\-\\\.]*)")|([\p{L}\p{N}_'/\-\\\.]*))/gu; +const QUOTED_OR_NOT_QUOTED_LINKEDFROM = /linkedfrom:(("([\p{L}\p{N}_\s'/\-\\\.]*)")|([\p{L}\p{N}_'/\-\\\.]*))/gu; +// TODO use named groups here +const COORDINATES = /([+-]?([0-9]*[.])?[0-9]+),([+-]?([0-9]*[.])?[0-9]+)/; +const INLINE_LOCATION_OLD_SYNTAX = /`location:\s*\[?(?[+-]?([0-9]*[.])?[0-9]+)\s*,\s*(?[+-]?([0-9]*[.])?[0-9]+)\]?/g; +// A link name is defined here as [^\]]* to prevent a previous link in the same line to count as the beginning +// of the link name +const INLINE_LOCATION_WITH_TAGS = /\[(?[^\]]*?)\]\(geo:(?[+-]?([0-9]*[.])?[0-9]+),(?[+-]?([0-9]*[.])?[0-9]+)\)[ \t]*(?(tag:[\p{L}\p{N}_\/\-]+[\s,.]+)*)/gu; +/** + * Returns a match object if the given cursor position has the beginning + * of a `tag:...` expression + */ +function getTagUnderCursor(line, cursorPosition) { + return matchByPosition(line, TAG_NAME_WITH_HEADER, cursorPosition); +} - // Group of layers, append children to layersArray and skip. - // Side effects: - // - Total increases, so chunkProgress ratio jumps backward. - // - Groups are not included in this group, only their non-group child layers (hasLayer). - // Changing array length while looping does not affect performance in current browsers: - // http://jsperf.com/for-loop-changing-length/6 - if (m instanceof L.LayerGroup) { - if (originalArray) { - layersArray = layersArray.slice(); - originalArray = false; +// Ugly hack for obsidian-leaflet compatability, see https://github.com/esm7/obsidian-map-view/issues/6 +// @ts-ignore +let localL = L; +/** An object that represents a single marker in a file, which is either a complete note with a geolocation, or an inline geolocation inside a note */ +class FileMarker { + /** + * Construct a new FileMarker object + * @param file The file the pin comes from + * @param location The geolocation + */ + constructor(file, location) { + /** Tags that this marker includes */ + this.tags = []; + this.file = file; + this.location = location; + this.generateId(); + } + isSame(other) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v; + return (this.file.name === other.file.name && + this.location.toString() === other.location.toString() && + this.fileLocation === other.fileLocation && + this.fileLine === other.fileLine && + this.extraName === other.extraName && + ((_b = (_a = this.icon) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.iconUrl) === ((_d = (_c = other.icon) === null || _c === void 0 ? void 0 : _c.options) === null || _d === void 0 ? void 0 : _d.iconUrl) && + // @ts-ignore + ((_f = (_e = this.icon) === null || _e === void 0 ? void 0 : _e.options) === null || _f === void 0 ? void 0 : _f.icon) === ((_h = (_g = other.icon) === null || _g === void 0 ? void 0 : _g.options) === null || _h === void 0 ? void 0 : _h.icon) && + // @ts-ignore + ((_k = (_j = this.icon) === null || _j === void 0 ? void 0 : _j.options) === null || _k === void 0 ? void 0 : _k.iconColor) === ((_m = (_l = other.icon) === null || _l === void 0 ? void 0 : _l.options) === null || _m === void 0 ? void 0 : _m.iconColor) && + // @ts-ignore + ((_p = (_o = this.icon) === null || _o === void 0 ? void 0 : _o.options) === null || _p === void 0 ? void 0 : _p.markerColor) === + ((_r = (_q = other.icon) === null || _q === void 0 ? void 0 : _q.options) === null || _r === void 0 ? void 0 : _r.markerColor) && + // @ts-ignore + ((_t = (_s = this.icon) === null || _s === void 0 ? void 0 : _s.options) === null || _t === void 0 ? void 0 : _t.shape) === ((_v = (_u = other.icon) === null || _u === void 0 ? void 0 : _u.options) === null || _v === void 0 ? void 0 : _v.shape)); + } + generateId() { + this.id = + this.file.name + + this.location.lat.toString() + + this.location.lng.toString() + + this.fileLocation || + 'nofileloc' + this.fileLine || + 'nofileline'; + } +} +/** + * Create a FileMarker for every front matter and inline geolocation in the given file. + * Properties that are not essential for filtering, e.g. marker icons, are not created here yet. + * @param mapToAppendTo The list of file markers to append to + * @param file The file object to parse + * @param settings The plugin settings + * @param app The Obsidian App instance + * @param skipMetadata If true will not find markers in the front matter + */ +function buildAndAppendFileMarkers(mapToAppendTo, file, settings, app, skipMetadata) { + return __awaiter(this, void 0, void 0, function* () { + const fileCache = app.metadataCache.getFileCache(file); + const frontMatter = fileCache === null || fileCache === void 0 ? void 0 : fileCache.frontmatter; + if (frontMatter) { + if (!skipMetadata) { + const location = getFrontMatterLocation(file, app); + if (location) { + verifyLocation(location); + let marker = new FileMarker(file, location); + marker.tags = obsidian.getAllTags(fileCache); + mapToAppendTo.push(marker); + } + } + if ('locations' in frontMatter) { + const markersFromFile = yield getMarkersFromFileContent(file, settings, app); + mapToAppendTo.push(...markersFromFile); + } + } + }); +} +/** + * Create FileMarker instances for all the files in the given list + * @param files The list of file objects to find geolocations in. + * @param settings The plugin settings + * @param app The Obsidian App instance + */ +function buildMarkers(files, settings, app) { + return __awaiter(this, void 0, void 0, function* () { + if (settings.debug) + console.time('buildMarkers'); + let markers = []; + for (const file of files) { + yield buildAndAppendFileMarkers(markers, file, settings, app); + } + if (settings.debug) + console.timeEnd('buildMarkers'); + return markers; + }); +} +/** + * Add more data to the markers, e.g. icons and other items that were not needed for the stage of filtering + * them. + * Modifies the markers in-place. + */ +function finalizeMarkers(markers, settings) { + for (const marker of markers) + marker.icon = getIconFromRules(marker.tags, settings.markerIconRules); +} +function checkTagPatternMatch(tagPattern, tags) { + let match = wildcard(tagPattern, tags); + return match && match.length > 0; +} +function getIconFromRules(tags, rules) { + // We iterate over the rules and apply them one by one, so later rules override earlier ones + let result = rules.find((item) => item.ruleName === 'default').iconDetails; + for (const rule of rules) { + if (checkTagPatternMatch(rule.ruleName, tags)) { + result = Object.assign({}, result, rule.iconDetails); + } + } + return getIconFromOptions(result); +} +function getIconFromOptions(iconSpec) { + // Ugly hack for obsidian-leaflet compatability, see https://github.com/esm7/obsidian-map-view/issues/6 + // @ts-ignore + const backupL = L; + try { + // @ts-ignore + L = localL; + return leafletSrc.ExtraMarkers.icon(iconSpec); + } + finally { + // @ts-ignore + L = backupL; + } +} +/** + * Make sure that the coordinates are valid world coordinates + * -90 <= longitude <= 90 and -180 <= latitude <= 180 + * @param location + */ +function verifyLocation(location) { + if (location.lng < LNG_LIMITS[0] || + location.lng > LNG_LIMITS[1]) + throw Error(`Lng ${location.lng} is outside the allowed limits`); + if (location.lat < LAT_LIMITS[0] || + location.lat > LAT_LIMITS[1]) + throw Error(`Lat ${location.lat} is outside the allowed limits`); +} +/** + * Find all inline geolocations in a string + * @param content The file contents to find the coordinates in + */ +function matchInlineLocation(content) { + // Old syntax of ` `location: ... ` `. This syntax doesn't support a name so we leave an empty capture group + const locationRegex1 = INLINE_LOCATION_OLD_SYNTAX; + // New syntax of `[name](geo:...)` and an optional tags as `tag:tagName` separated by whitespaces + const locationRegex2 = INLINE_LOCATION_WITH_TAGS; + const matches1 = content.matchAll(locationRegex1); + const matches2 = content.matchAll(locationRegex2); + return Array.from(matches1).concat(Array.from(matches2)); +} +/** + * Build markers from inline locations in the file body. + * Properties non-essential for filtering, e.g. the marker icon, are not built here yet. + * @param file The file object to load + * @param settings The plugin settings + * @param app The Obsidian App instance + */ +function getMarkersFromFileContent(file, settings, app) { + return __awaiter(this, void 0, void 0, function* () { + let markers = []; + // Get the tags of the file, to these we will add the tags associated with each individual marker (inline tags) + const fileTags = obsidian.getAllTags(app.metadataCache.getFileCache(file)); + const content = yield app.vault.read(file); + const matches = matchInlineLocation(content); + for (const match of matches) { + try { + const location = new leafletSrc.LatLng(parseFloat(match.groups.lat), parseFloat(match.groups.lng)); + verifyLocation(location); + const marker = new FileMarker(file, location); + if (match.groups.name && match.groups.name.length > 0) + marker.extraName = match.groups.name; + if (match.groups.tags) { + // Parse the list of tags + const tagRegex = INLINE_TAG_IN_NOTE; + const tags = match.groups.tags.matchAll(tagRegex); + for (const tag of tags) + if (tag.groups.tag) + marker.tags.push('#' + tag.groups.tag); + } + marker.tags = marker.tags.concat(fileTags); + marker.fileLocation = match.index; + marker.fileLine = + content.substring(0, marker.fileLocation).split('\n').length - + 1; + // Regenerate the ID because the marker details changed since it was generated + marker.generateId(); + markers.push(marker); + } + catch (e) { + console.log(`Error converting location in file ${file.name}: could not parse ${match[0]}`, e); + } + } + return markers; + }); +} +/** + * Get the geolocation stored in the front matter of a file + * @param file The file to load the front matter from + * @param app The Obsidian App instance + */ +function getFrontMatterLocation(file, app) { + const fileCache = app.metadataCache.getFileCache(file); + const frontMatter = fileCache === null || fileCache === void 0 ? void 0 : fileCache.frontmatter; + if (frontMatter && (frontMatter === null || frontMatter === void 0 ? void 0 : frontMatter.location)) { + try { + const location = frontMatter.location; + // We have a single location at hand + if (location.length == 2 && + typeof location[0] === 'number' && + typeof location[1] === 'number') { + const location = new leafletSrc.LatLng(frontMatter.location[0], frontMatter.location[1]); + verifyLocation(location); + return location; + } + else + console.log(`Unknown: `, location); + } + catch (e) { + console.log(`Error converting location in file ${file.name}:`, e); + } + } + return null; +} + +class LocationSearchDialog extends obsidian.SuggestModal { + constructor(app, settings, dialogAction, title, editor = null, includeResults = null, hasIcons = false, moreInstructions = null) { + super(app); + this.lastSearchTime = 0; + this.delayInMs = 250; + this.lastSearch = ''; + this.lastSearchResults = []; + this.includeResults = []; + this.hasIcons = false; + this.editor = null; + // If specified, this rectangle is used as a parameter for the various geocoding providers, so they can + // prioritize results that are closer to the current view + this.searchArea = null; + this.settings = settings; + this.searcher = new GeoSearcher(app, settings); + this.dialogAction = dialogAction; + this.editor = editor; + this.includeResults = includeResults; + this.hasIcons = hasIcons; + this.setPlaceholder(title + ': type a place name or paste a string to parse'); + let instructions = [{ command: 'enter', purpose: 'to use' }]; + if (moreInstructions) + instructions = instructions.concat(moreInstructions); + this.setInstructions(instructions); + this.inputEl.addEventListener('keypress', (ev) => { + // In the case of a custom select function, trigger it also for Shift+Enter. + // Obsidian doesn't have an API for that, so we find the selected item in a rather patchy way, + // and manually close the dialog + if (ev.key == 'Enter' && + ev.shiftKey && + this.customOnSelect != null) { + const chooser = this.chooser; + const selectedItem = chooser === null || chooser === void 0 ? void 0 : chooser.selectedItem; + const values = chooser === null || chooser === void 0 ? void 0 : chooser.values; + if (chooser && values) { + this.onChooseSuggestion(values[selectedItem], ev); + this.close(); + } + } + }); + } + getSuggestions(query) { + let result = []; + // Get results from the "to include" list, e.g. existing markers + let resultsToInclude = []; + if (this.includeResults) + for (const toInclude of this.includeResults) { + if (query.length == 0 || + toInclude.name.toLowerCase().includes(query.toLowerCase())) + resultsToInclude.push(toInclude); + if (resultsToInclude.length >= MAX_MARKER_SUGGESTIONS) + break; + } + result = result.concat(resultsToInclude); + // From this point onward, results are added asynchronously. + // We make sure to add them *after* the synchronuous results, otherwise + // it will be very annoying for a user who may have already selected something. + if (query == this.lastSearch) { + result = result.concat(this.lastSearchResults); + } + this.getSearchResultsWithDelay(query); + return result; + } + renderSuggestion(value, el) { + var _a; + el.addClass('map-search-suggestion'); + if (this.hasIcons) { + let iconDiv = el.createDiv('search-icon-div'); + const compiledIcon = getIconFromOptions((_a = value.icon) !== null && _a !== void 0 ? _a : SEARCH_RESULT_MARKER); + let iconElement = compiledIcon.createIcon(); + let style = iconElement.style; + style.marginLeft = style.marginTop = '0'; + style.position = 'relative'; + iconDiv.append(iconElement); + let textDiv = el.createDiv('search-text-div'); + textDiv.appendText(value.name); + } + else + el.appendText(value.name); + } + onChooseSuggestion(value, evt) { + if (this.dialogAction == 'newNote') + this.newNote(value.location, evt, value.name); + else if (this.dialogAction == 'addToNote') + this.addToNote(value.location, evt, value.name); + else if (this.dialogAction == 'custom' && this.customOnSelect != null) + this.customOnSelect(value, evt); + } + newNote(location, ev, query) { + return __awaiter(this, void 0, void 0, function* () { + const locationString = `${location.lat},${location.lng}`; + const newFileName = formatWithTemplates(this.settings.newNoteNameFormat, query); + const file = yield newNote(this.app, 'singleLocation', this.settings.newNotePath, newFileName, locationString, this.settings.newNoteTemplate); + // If there is an open map view, use it to decide how and where to open the file. + // Otherwise, open the file from the active leaf + const mapView = findOpenMapView(this.app); + if (mapView) { + mapView.mapContainer.goToFile(file, ev.ctrlKey, handleNewNoteCursorMarker); + } + else { + const leaf = this.app.workspace.activeLeaf; + yield leaf.openFile(file); + const editor = yield getEditor(this.app); + if (editor) + yield handleNewNoteCursorMarker(editor); + } + }); + } + addToNote(location, ev, query) { + return __awaiter(this, void 0, void 0, function* () { + const locationString = `[${location.lat},${location.lng}]`; + verifyOrAddFrontMatter(this.editor, 'location', locationString); + }); + } + getSearchResultsWithDelay(query) { + return __awaiter(this, void 0, void 0, function* () { + if (query === this.lastSearch || query.length < 3) + return; + const timestamp = Date.now(); + this.lastSearchTime = timestamp; + const Sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + yield Sleep(this.delayInMs); + if (this.lastSearchTime != timestamp) { + // Search is canceled by a newer search + return; + } + // After the sleep our search is still the last -- so the user stopped and we can go on + this.lastSearch = query; + this.lastSearchResults = yield this.searcher.search(query, this.searchArea); + this.updateSuggestions(); + }); + } +} + +var util = createCommonjsModule(function (module, exports) { + +const nameStartChar = ':A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD'; +const nameChar = nameStartChar + '\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040'; +const nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'; +const regexName = new RegExp('^' + nameRegexp + '$'); + +const getAllMatches = function(string, regex) { + const matches = []; + let match = regex.exec(string); + while (match) { + const allmatches = []; + allmatches.startIndex = regex.lastIndex - match[0].length; + const len = match.length; + for (let index = 0; index < len; index++) { + allmatches.push(match[index]); + } + matches.push(allmatches); + match = regex.exec(string); + } + return matches; +}; + +const isName = function(string) { + const match = regexName.exec(string); + return !(match === null || typeof match === 'undefined'); +}; + +exports.isExist = function(v) { + return typeof v !== 'undefined'; +}; + +exports.isEmptyObject = function(obj) { + return Object.keys(obj).length === 0; +}; + +/** + * Copy all the properties of a into b. + * @param {*} target + * @param {*} a + */ +exports.merge = function(target, a, arrayMode) { + if (a) { + const keys = Object.keys(a); // will return an array of own properties + const len = keys.length; //don't make it inline + for (let i = 0; i < len; i++) { + if (arrayMode === 'strict') { + target[keys[i]] = [ a[keys[i]] ]; + } else { + target[keys[i]] = a[keys[i]]; + } + } + } +}; +/* exports.merge =function (b,a){ + return Object.assign(b,a); +} */ + +exports.getValue = function(v) { + if (exports.isExist(v)) { + return v; + } else { + return ''; + } +}; + +// const fakeCall = function(a) {return a;}; +// const fakeCallNoReturn = function() {}; + +exports.isName = isName; +exports.getAllMatches = getAllMatches; +exports.nameRegexp = nameRegexp; +}); + +const defaultOptions$2 = { + allowBooleanAttributes: false, //A tag can have attributes without any value + unpairedTags: [] +}; + +//const tagsPattern = new RegExp("<\\/?([\\w:\\-_\.]+)\\s*\/?>","g"); +var validate = function (xmlData, options) { + options = Object.assign({}, defaultOptions$2, options); + + //xmlData = xmlData.replace(/(\r\n|\n|\r)/gm,"");//make it single line + //xmlData = xmlData.replace(/(^\s*<\?xml.*?\?>)/g,"");//Remove XML starting tag + //xmlData = xmlData.replace(/()/g,"");//Remove DOCTYPE + const tags = []; + let tagFound = false; + + //indicates that the root tag has been closed (aka. depth 0 has been reached) + let reachedRoot = false; + + if (xmlData[0] === '\ufeff') { + // check for byte order mark (BOM) + xmlData = xmlData.substr(1); + } + + for (let i = 0; i < xmlData.length; i++) { + + if (xmlData[i] === '<' && xmlData[i+1] === '?') { + i+=2; + i = readPI(xmlData,i); + if (i.err) return i; + }else if (xmlData[i] === '<') { + //starting of tag + //read until you reach to '>' avoiding any '>' in attribute value + let tagStartPos = i; + i++; + + if (xmlData[i] === '!') { + i = readCommentAndCDATA(xmlData, i); + continue; + } else { + let closingTag = false; + if (xmlData[i] === '/') { + //closing tag + closingTag = true; + i++; + } + //read tagname + let tagName = ''; + for (; i < xmlData.length && + xmlData[i] !== '>' && + xmlData[i] !== ' ' && + xmlData[i] !== '\t' && + xmlData[i] !== '\n' && + xmlData[i] !== '\r'; i++ + ) { + tagName += xmlData[i]; + } + tagName = tagName.trim(); + //console.log(tagName); + + if (tagName[tagName.length - 1] === '/') { + //self closing tag without attributes + tagName = tagName.substring(0, tagName.length - 1); + //continue; + i--; + } + if (!validateTagName(tagName)) { + let msg; + if (tagName.trim().length === 0) { + msg = "Invalid space after '<'."; + } else { + msg = "Tag '"+tagName+"' is an invalid name."; + } + return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i)); + } + + const result = readAttributeStr(xmlData, i); + if (result === false) { + return getErrorObject('InvalidAttr', "Attributes for '"+tagName+"' have open quote.", getLineNumberForPosition(xmlData, i)); + } + let attrStr = result.value; + i = result.index; + + if (attrStr[attrStr.length - 1] === '/') { + //self closing tag + const attrStrStart = i - attrStr.length; + attrStr = attrStr.substring(0, attrStr.length - 1); + const isValid = validateAttributeString(attrStr, options); + if (isValid === true) { + tagFound = true; + //continue; //text may presents after self closing tag + } else { + //the result from the nested function returns the position of the error within the attribute + //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute + //this gives us the absolute index in the entire xml, which we can use to find the line at last + return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line)); + } + } else if (closingTag) { + if (!result.tagClosed) { + return getErrorObject('InvalidTag', "Closing tag '"+tagName+"' doesn't have proper closing.", getLineNumberForPosition(xmlData, i)); + } else if (attrStr.trim().length > 0) { + return getErrorObject('InvalidTag', "Closing tag '"+tagName+"' can't have attributes or invalid starting.", getLineNumberForPosition(xmlData, tagStartPos)); + } else { + const otg = tags.pop(); + if (tagName !== otg.tagName) { + let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos); + return getErrorObject('InvalidTag', + "Expected closing tag '"+otg.tagName+"' (opened in line "+openPos.line+", col "+openPos.col+") instead of closing tag '"+tagName+"'.", + getLineNumberForPosition(xmlData, tagStartPos)); + } + + //when there are no more tags, we reached the root level. + if (tags.length == 0) { + reachedRoot = true; + } + } + } else { + const isValid = validateAttributeString(attrStr, options); + if (isValid !== true) { + //the result from the nested function returns the position of the error within the attribute + //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute + //this gives us the absolute index in the entire xml, which we can use to find the line at last + return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line)); + } + + //if the root level has been reached before ... + if (reachedRoot === true) { + return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i)); + } else if(options.unpairedTags.indexOf(tagName) !== -1); else { + tags.push({tagName, tagStartPos}); + } + tagFound = true; + } + + //skip tag text value + //It may include comments and CDATA value + for (i++; i < xmlData.length; i++) { + if (xmlData[i] === '<') { + if (xmlData[i + 1] === '!') { + //comment or CADATA + i++; + i = readCommentAndCDATA(xmlData, i); + continue; + } else if (xmlData[i+1] === '?') { + i = readPI(xmlData, ++i); + if (i.err) return i; + } else { + break; + } + } else if (xmlData[i] === '&') { + const afterAmp = validateAmpersand(xmlData, i); + if (afterAmp == -1) + return getErrorObject('InvalidChar', "char '&' is not expected.", getLineNumberForPosition(xmlData, i)); + i = afterAmp; + }else { + if (reachedRoot === true && !isWhiteSpace(xmlData[i])) { + return getErrorObject('InvalidXml', "Extra text at the end", getLineNumberForPosition(xmlData, i)); + } + } + } //end of reading tag text value + if (xmlData[i] === '<') { + i--; + } + } + } else { + if ( isWhiteSpace(xmlData[i])) { + continue; + } + return getErrorObject('InvalidChar', "char '"+xmlData[i]+"' is not expected.", getLineNumberForPosition(xmlData, i)); + } + } + + if (!tagFound) { + return getErrorObject('InvalidXml', 'Start tag expected.', 1); + }else if (tags.length == 1) { + return getErrorObject('InvalidTag', "Unclosed tag '"+tags[0].tagName+"'.", getLineNumberForPosition(xmlData, tags[0].tagStartPos)); + }else if (tags.length > 0) { + return getErrorObject('InvalidXml', "Invalid '"+ + JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\r?\n/g, '')+ + "' found.", {line: 1, col: 1}); + } + + return true; +}; + +function isWhiteSpace(char){ + return char === ' ' || char === '\t' || char === '\n' || char === '\r'; +} +/** + * Read Processing insstructions and skip + * @param {*} xmlData + * @param {*} i + */ +function readPI(xmlData, i) { + const start = i; + for (; i < xmlData.length; i++) { + if (xmlData[i] == '?' || xmlData[i] == ' ') { + //tagname + const tagname = xmlData.substr(start, i - start); + if (i > 5 && tagname === 'xml') { + return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i)); + } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') { + //check if valid attribut string + i++; + break; + } else { + continue; + } + } + } + return i; +} + +function readCommentAndCDATA(xmlData, i) { + if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') { + //comment + for (i += 3; i < xmlData.length; i++) { + if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') { + i += 2; + break; + } + } + } else if ( + xmlData.length > i + 8 && + xmlData[i + 1] === 'D' && + xmlData[i + 2] === 'O' && + xmlData[i + 3] === 'C' && + xmlData[i + 4] === 'T' && + xmlData[i + 5] === 'Y' && + xmlData[i + 6] === 'P' && + xmlData[i + 7] === 'E' + ) { + let angleBracketsCount = 1; + for (i += 8; i < xmlData.length; i++) { + if (xmlData[i] === '<') { + angleBracketsCount++; + } else if (xmlData[i] === '>') { + angleBracketsCount--; + if (angleBracketsCount === 0) { + break; + } + } + } + } else if ( + xmlData.length > i + 9 && + xmlData[i + 1] === '[' && + xmlData[i + 2] === 'C' && + xmlData[i + 3] === 'D' && + xmlData[i + 4] === 'A' && + xmlData[i + 5] === 'T' && + xmlData[i + 6] === 'A' && + xmlData[i + 7] === '[' + ) { + for (i += 8; i < xmlData.length; i++) { + if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') { + i += 2; + break; + } + } + } + + return i; +} + +const doubleQuote = '"'; +const singleQuote = "'"; + +/** + * Keep reading xmlData until '<' is found outside the attribute value. + * @param {string} xmlData + * @param {number} i + */ +function readAttributeStr(xmlData, i) { + let attrStr = ''; + let startChar = ''; + let tagClosed = false; + for (; i < xmlData.length; i++) { + if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) { + if (startChar === '') { + startChar = xmlData[i]; + } else if (startChar !== xmlData[i]) ; else { + startChar = ''; + } + } else if (xmlData[i] === '>') { + if (startChar === '') { + tagClosed = true; + break; + } + } + attrStr += xmlData[i]; + } + if (startChar !== '') { + return false; + } + + return { + value: attrStr, + index: i, + tagClosed: tagClosed + }; +} + +/** + * Select all the attributes whether valid or invalid. + */ +const validAttrStrRegxp = new RegExp('(\\s*)([^\\s=]+)(\\s*=)?(\\s*([\'"])(([\\s\\S])*?)\\5)?', 'g'); + +//attr, ="sd", a="amit's", a="sd"b="saf", ab cd="" + +function validateAttributeString(attrStr, options) { + //console.log("start:"+attrStr+":end"); + + //if(attrStr.trim().length === 0) return true; //empty string + + const matches = util.getAllMatches(attrStr, validAttrStrRegxp); + const attrNames = {}; + + for (let i = 0; i < matches.length; i++) { + if (matches[i][1].length === 0) { + //nospace before attribute name: a="sd"b="saf" + return getErrorObject('InvalidAttr', "Attribute '"+matches[i][2]+"' has no space in starting.", getPositionFromMatch(matches[i])) + } else if (matches[i][3] !== undefined && matches[i][4] === undefined) { + return getErrorObject('InvalidAttr', "Attribute '"+matches[i][2]+"' is without value.", getPositionFromMatch(matches[i])); + } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) { + //independent attribute: ab + return getErrorObject('InvalidAttr', "boolean attribute '"+matches[i][2]+"' is not allowed.", getPositionFromMatch(matches[i])); + } + /* else if(matches[i][6] === undefined){//attribute without value: ab= + return { err: { code:"InvalidAttr",msg:"attribute " + matches[i][2] + " has no value assigned."}}; + } */ + const attrName = matches[i][2]; + if (!validateAttrName(attrName)) { + return getErrorObject('InvalidAttr', "Attribute '"+attrName+"' is an invalid name.", getPositionFromMatch(matches[i])); + } + if (!attrNames.hasOwnProperty(attrName)) { + //check for duplicate attribute. + attrNames[attrName] = 1; + } else { + return getErrorObject('InvalidAttr', "Attribute '"+attrName+"' is repeated.", getPositionFromMatch(matches[i])); + } + } + + return true; +} + +function validateNumberAmpersand(xmlData, i) { + let re = /\d/; + if (xmlData[i] === 'x') { + i++; + re = /[\da-fA-F]/; + } + for (; i < xmlData.length; i++) { + if (xmlData[i] === ';') + return i; + if (!xmlData[i].match(re)) + break; + } + return -1; +} + +function validateAmpersand(xmlData, i) { + // https://www.w3.org/TR/xml/#dt-charref + i++; + if (xmlData[i] === ';') + return -1; + if (xmlData[i] === '#') { + i++; + return validateNumberAmpersand(xmlData, i); + } + let count = 0; + for (; i < xmlData.length; i++, count++) { + if (xmlData[i].match(/\w/) && count < 20) + continue; + if (xmlData[i] === ';') + break; + return -1; + } + return i; +} + +function getErrorObject(code, message, lineNumber) { + return { + err: { + code: code, + msg: message, + line: lineNumber.line || lineNumber, + col: lineNumber.col, + }, + }; +} + +function validateAttrName(attrName) { + return util.isName(attrName); +} + +// const startsWithXML = /^xml/i; + +function validateTagName(tagname) { + return util.isName(tagname) /* && !tagname.match(startsWithXML) */; +} + +//this function returns the line number for the character at the given index +function getLineNumberForPosition(xmlData, index) { + const lines = xmlData.substring(0, index).split(/\r?\n/); + return { + line: lines.length, + + // column number is last line's length + 1, because column numbering starts at 1: + col: lines[lines.length - 1].length + 1 + }; +} + +//this function returns the position of the first character of match within attrStr +function getPositionFromMatch(match) { + return match.startIndex + match[1].length; +} + +var validator = { + validate: validate +}; + +const defaultOptions$1 = { + preserveOrder: false, + attributeNamePrefix: '@_', + attributesGroupName: false, + textNodeName: '#text', + ignoreAttributes: true, + removeNSPrefix: false, // remove NS from tag name or attribute name if true + allowBooleanAttributes: false, //a tag can have attributes without any value + //ignoreRootElement : false, + parseTagValue: true, + parseAttributeValue: false, + trimValues: true, //Trim string values of tag and attributes + cdataPropName: false, + numberParseOptions: { + hex: true, + leadingZeros: true + }, + tagValueProcessor: function(tagName, val) { + return val; + }, + attributeValueProcessor: function(attrName, val) { + return val; + }, + stopNodes: [], //nested tags will not be parsed even for errors + alwaysCreateTextNode: false, + isArray: () => false, + commentPropName: false, + unpairedTags: [], + processEntities: true, + htmlEntities: false, + ignoreDeclaration: false, + ignorePiTags: false, + transformTagName: false, +}; + +const buildOptions$1 = function(options) { + return Object.assign({}, defaultOptions$1, options); +}; + +var buildOptions_1 = buildOptions$1; +var defaultOptions_1 = defaultOptions$1; + +var OptionsBuilder = { + buildOptions: buildOptions_1, + defaultOptions: defaultOptions_1 +}; + +class XmlNode{ + constructor(tagname) { + this.tagname = tagname; + this.child = []; //nested tags, text, cdata, comments in order + this[":@"] = {}; //attributes map + } + add(key,val){ + // this.child.push( {name : key, val: val, isCdata: isCdata }); + this.child.push( {[key]: val }); + } + addChild(node) { + if(node[":@"] && Object.keys(node[":@"]).length > 0){ + this.child.push( { [node.tagname]: node.child, [":@"]: node[":@"] }); + }else { + this.child.push( { [node.tagname]: node.child }); + } + }; +} + +var xmlNode = XmlNode; + +//TODO: handle comments +function readDocType(xmlData, i){ + + const entities = {}; + if( xmlData[i + 3] === 'O' && + xmlData[i + 4] === 'C' && + xmlData[i + 5] === 'T' && + xmlData[i + 6] === 'Y' && + xmlData[i + 7] === 'P' && + xmlData[i + 8] === 'E') + { + i = i+9; + let angleBracketsCount = 1; + let hasBody = false, entity = false, comment = false; + let exp = ""; + for(;i') { + if(comment){ + if( xmlData[i - 1] === "-" && xmlData[i - 2] === "-"){ + comment = false; + }else { + throw new Error(`Invalid XML comment in DOCTYPE`); + } + }else if(entity){ + parseEntityExp(exp, entities); + entity = false; + } + angleBracketsCount--; + if (angleBracketsCount === 0) { + break; + } + }else if( xmlData[i] === '['){ + hasBody = true; + }else { + exp += xmlData[i]; + } + } + if(angleBracketsCount !== 0){ + throw new Error(`Unclosed DOCTYPE`); + } + }else { + throw new Error(`Invalid Tag instead of DOCTYPE`); + } + return {entities, i}; +} + +const entityRegex = RegExp("^\\s([a-zA-z0-0]+)[ \t](['\"])([^&]+)\\2"); +function parseEntityExp(exp, entities){ + const match = entityRegex.exec(exp); + if(match){ + entities[ match[1] ] = { + regx : RegExp( `&${match[1]};`,"g"), + val: match[3] + }; + } +} +var DocTypeReader = readDocType; + +const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/; +const numRegex = /^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/; +// const octRegex = /0x[a-z0-9]+/; +// const binRegex = /0x[a-z0-9]+/; + + +//polyfill +if (!Number.parseInt && window.parseInt) { + Number.parseInt = window.parseInt; +} +if (!Number.parseFloat && window.parseFloat) { + Number.parseFloat = window.parseFloat; +} + + +const consider = { + hex : true, + leadingZeros: true, + decimalPoint: "\.", + eNotation: true + //skipLike: /regex/ +}; + +function toNumber(str, options = {}){ + // const options = Object.assign({}, consider); + // if(opt.leadingZeros === false){ + // options.leadingZeros = false; + // }else if(opt.hex === false){ + // options.hex = false; + // } + + options = Object.assign({}, consider, options ); + if(!str || typeof str !== "string" ) return str; + + let trimmedStr = str.trim(); + // if(trimmedStr === "0.0") return 0; + // else if(trimmedStr === "+0.0") return 0; + // else if(trimmedStr === "-0.0") return -0; + + if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str; + else if (options.hex && hexRegex.test(trimmedStr)) { + return Number.parseInt(trimmedStr, 16); + // } else if (options.parseOct && octRegex.test(str)) { + // return Number.parseInt(val, 8); + // }else if (options.parseBin && binRegex.test(str)) { + // return Number.parseInt(val, 2); + }else { + //separate negative sign, leading zeros, and rest number + const match = numRegex.exec(trimmedStr); + if(match){ + const sign = match[1]; + const leadingZeros = match[2]; + let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros + //trim ending zeros for floating number + + const eNotation = match[4] || match[6]; + if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== ".") return str; //-0123 + else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== ".") return str; //0123 + else {//no leading zeros or leading zeros are allowed + const num = Number(trimmedStr); + const numStr = "" + num; + if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation + if(options.eNotation) return num; + else return str; + }else if(eNotation){ //given number has enotation + if(options.eNotation) return num; + else return str; + }else if(trimmedStr.indexOf(".") !== -1){ //floating number + // const decimalPart = match[5].substr(1); + // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(".")); + + + // const p = numStr.indexOf("."); + // const givenIntPart = numStr.substr(0,p); + // const givenDecPart = numStr.substr(p+1); + if(numStr === "0" && (numTrimmedByZeros === "") ) return num; //0.0 + else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000 + else if( sign && numStr === "-"+numTrimmedByZeros) return num; + else return str; + } + + if(leadingZeros){ + // if(numTrimmedByZeros === numStr){ + // if(options.leadingZeros) return num; + // else return str; + // }else return str; + if(numTrimmedByZeros === numStr) return num; + else if(sign+numTrimmedByZeros === numStr) return num; + else return str; + } + + if(trimmedStr === numStr) return num; + else if(trimmedStr === sign+numStr) return num; + // else{ + // //number with +/- sign + // trimmedStr.test(/[-+][0-9]); + + // } + return str; + } + // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str; + + }else { //non-numeric string + return str; + } + } +} + +/** + * + * @param {string} numStr without leading zeros + * @returns + */ +function trimZeros(numStr){ + if(numStr && numStr.indexOf(".") !== -1){//float + numStr = numStr.replace(/0+$/, ""); //remove ending zeros + if(numStr === ".") numStr = "0"; + else if(numStr[0] === ".") numStr = "0"+numStr; + else if(numStr[numStr.length-1] === ".") numStr = numStr.substr(0,numStr.length-1); + return numStr; + } + return numStr; +} +var strnum = toNumber; + +///@ts-check + + + + + + +'<((!\\[CDATA\\[([\\s\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\/)(NAME)\\s*>))([^<]*)' + .replace(/NAME/g, util.nameRegexp); + +//const tagsRegx = new RegExp("<(\\/?[\\w:\\-\._]+)([^>]*)>(\\s*"+cdataRegx+")*([^<]+)?","g"); +//const tagsRegx = new RegExp("<(\\/?)((\\w*:)?([\\w:\\-\._]+))([^>]*)>([^<]*)("+cdataRegx+"([^<]*))*([^<]+)?","g"); + +class OrderedObjParser{ + constructor(options){ + this.options = options; + this.currentNode = null; + this.tagsNodeStack = []; + this.docTypeEntities = {}; + this.lastEntities = { + "amp" : { regex: /&(amp|#38|#x26);/g, val : "&"}, + "apos" : { regex: /&(apos|#39|#x27);/g, val : "'"}, + "gt" : { regex: /&(gt|#62|#x3E);/g, val : ">"}, + "lt" : { regex: /&(lt|#60|#x3C);/g, val : "<"}, + "quot" : { regex: /&(quot|#34|#x22);/g, val : "\""}, + }; + this.htmlEntities = { + "space": { regex: /&(nbsp|#160);/g, val: " " }, + // "lt" : { regex: /&(lt|#60);/g, val: "<" }, + // "gt" : { regex: /&(gt|#62);/g, val: ">" }, + // "amp" : { regex: /&(amp|#38);/g, val: "&" }, + // "quot" : { regex: /&(quot|#34);/g, val: "\"" }, + // "apos" : { regex: /&(apos|#39);/g, val: "'" }, + "cent" : { regex: /&(cent|#162);/g, val: "¢" }, + "pound" : { regex: /&(pound|#163);/g, val: "£" }, + "yen" : { regex: /&(yen|#165);/g, val: "¥" }, + "euro" : { regex: /&(euro|#8364);/g, val: "€" }, + "copyright" : { regex: /&(copy|#169);/g, val: "©" }, + "reg" : { regex: /&(reg|#174);/g, val: "®" }, + "inr" : { regex: /&(inr|#8377);/g, val: "₹" }, + }; + this.addExternalEntities = addExternalEntities; + this.parseXml = parseXml; + this.parseTextData = parseTextData; + this.resolveNameSpace = resolveNameSpace; + this.buildAttributesMap = buildAttributesMap; + this.isItStopNode = isItStopNode; + this.replaceEntitiesValue = replaceEntitiesValue$2; + this.readStopNodeData = readStopNodeData; + this.saveTextToParentTag = saveTextToParentTag; + } + +} + +function addExternalEntities(externalEntities){ + const entKeys = Object.keys(externalEntities); + for (let i = 0; i < entKeys.length; i++) { + const ent = entKeys[i]; + this.lastEntities[ent] = { + regex: new RegExp("&"+ent+";","g"), + val : externalEntities[ent] + }; + } +} + +/** + * @param {string} val + * @param {string} tagName + * @param {string} jPath + * @param {boolean} dontTrim + * @param {boolean} hasAttributes + * @param {boolean} isLeafNode + * @param {boolean} escapeEntities + */ +function parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) { + if (val !== undefined) { + if (this.options.trimValues && !dontTrim) { + val = val.trim(); + } + if(val.length > 0){ + if(!escapeEntities) val = this.replaceEntitiesValue(val); + + const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode); + if(newval === null || newval === undefined){ + //don't parse + return val; + }else if(typeof newval !== typeof val || newval !== val){ + //overwrite + return newval; + }else if(this.options.trimValues){ + return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions); + }else { + const trimmedVal = val.trim(); + if(trimmedVal === val){ + return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions); + }else { + return val; + } + } + } + } +} + +function resolveNameSpace(tagname) { + if (this.options.removeNSPrefix) { + const tags = tagname.split(':'); + const prefix = tagname.charAt(0) === '/' ? '/' : ''; + if (tags[0] === 'xmlns') { + return ''; + } + if (tags.length === 2) { + tagname = prefix + tags[1]; + } + } + return tagname; +} + +//TODO: change regex to capture NS +//const attrsRegx = new RegExp("([\\w\\-\\.\\:]+)\\s*=\\s*(['\"])((.|\n)*?)\\2","gm"); +const attrsRegx = new RegExp('([^\\s=]+)\\s*(=\\s*([\'"])([\\s\\S]*?)\\3)?', 'gm'); + +function buildAttributesMap(attrStr, jPath) { + if (!this.options.ignoreAttributes && typeof attrStr === 'string') { + // attrStr = attrStr.replace(/\r?\n/g, ' '); + //attrStr = attrStr || attrStr.trim(); + + const matches = util.getAllMatches(attrStr, attrsRegx); + const len = matches.length; //don't make it inline + const attrs = {}; + for (let i = 0; i < len; i++) { + const attrName = this.resolveNameSpace(matches[i][1]); + let oldVal = matches[i][4]; + const aName = this.options.attributeNamePrefix + attrName; + if (attrName.length) { + if (oldVal !== undefined) { + if (this.options.trimValues) { + oldVal = oldVal.trim(); + } + oldVal = this.replaceEntitiesValue(oldVal); + const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath); + if(newVal === null || newVal === undefined){ + //don't parse + attrs[aName] = oldVal; + }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){ + //overwrite + attrs[aName] = newVal; + }else { + //parse + attrs[aName] = parseValue( + oldVal, + this.options.parseAttributeValue, + this.options.numberParseOptions + ); + } + } else if (this.options.allowBooleanAttributes) { + attrs[aName] = true; + } + } + } + if (!Object.keys(attrs).length) { + return; + } + if (this.options.attributesGroupName) { + const attrCollection = {}; + attrCollection[this.options.attributesGroupName] = attrs; + return attrCollection; + } + return attrs; + } +} + +const parseXml = function(xmlData) { + xmlData = xmlData.replace(/\r\n?/g, "\n"); //TODO: remove this line + const xmlObj = new xmlNode('!xml'); + let currentNode = xmlObj; + let textData = ""; + let jPath = ""; + for(let i=0; i< xmlData.length; i++){//for each char in XML data + const ch = xmlData[i]; + if(ch === '<'){ + // const nextIndex = i+1; + // const _2ndChar = xmlData[nextIndex]; + if( xmlData[i+1] === '/') {//Closing Tag + const closeIndex = findClosingIndex(xmlData, ">", i, "Closing Tag is not closed."); + let tagName = xmlData.substring(i+2,closeIndex).trim(); + + if(this.options.removeNSPrefix){ + const colonIndex = tagName.indexOf(":"); + if(colonIndex !== -1){ + tagName = tagName.substr(colonIndex+1); + } + } + + if(this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + + if(currentNode){ + textData = this.saveTextToParentTag(textData, currentNode, jPath); + } + + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + + currentNode = this.tagsNodeStack.pop();//avoid recurssion, set the parent tag scope + textData = ""; + i = closeIndex; + } else if( xmlData[i+1] === '?') { + + let tagData = readTagExp(xmlData,i, false, "?>"); + if(!tagData) throw new Error("Pi Tag is not closed."); + + textData = this.saveTextToParentTag(textData, currentNode, jPath); + if( (this.options.ignoreDeclaration && tagData.tagName === "?xml") || this.options.ignorePiTags);else { + + const childNode = new xmlNode(tagData.tagName); + childNode.add(this.options.textNodeName, ""); + + if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){ + childNode[":@"] = this.buildAttributesMap(tagData.tagExp, jPath); + } + currentNode.addChild(childNode); + + } + + + i = tagData.closeIndex + 1; + } else if(xmlData.substr(i + 1, 3) === '!--') { + const endIndex = findClosingIndex(xmlData, "-->", i+4, "Comment is not closed."); + if(this.options.commentPropName){ + const comment = xmlData.substring(i + 4, endIndex - 2); + + textData = this.saveTextToParentTag(textData, currentNode, jPath); + + currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]); + } + i = endIndex; + } else if( xmlData.substr(i + 1, 2) === '!D') { + const result = DocTypeReader(xmlData, i); + this.docTypeEntities = result.entities; + i = result.i; + }else if(xmlData.substr(i + 1, 2) === '![') { + const closeIndex = findClosingIndex(xmlData, "]]>", i, "CDATA is not closed.") - 2; + const tagExp = xmlData.substring(i + 9,closeIndex); + + textData = this.saveTextToParentTag(textData, currentNode, jPath); + + //cdata should be set even if it is 0 length string + if(this.options.cdataPropName){ + // let val = this.parseTextData(tagExp, this.options.cdataPropName, jPath + "." + this.options.cdataPropName, true, false, true); + // if(!val) val = ""; + currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]); + }else { + let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true); + if(val == undefined) val = ""; + currentNode.add(this.options.textNodeName, val); + } + + i = closeIndex + 2; + }else {//Opening tag + let result = readTagExp(xmlData,i, this. options.removeNSPrefix); + let tagName= result.tagName; + let tagExp = result.tagExp; + let attrExpPresent = result.attrExpPresent; + let closeIndex = result.closeIndex; + + if (this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + + //save text as child node + if (currentNode && textData) { + if(currentNode.tagname !== '!xml'){ + //when nested tag is found + textData = this.saveTextToParentTag(textData, currentNode, jPath, false); + } + } + + if(tagName !== xmlObj.tagname){ + jPath += jPath ? "." + tagName : tagName; + } + + //check if last tag was unpaired tag + const lastTag = currentNode; + if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){ + currentNode = this.tagsNodeStack.pop(); + } + + if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) { //TODO: namespace + let tagContent = ""; + //self-closing tag + if(tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1){ + i = result.closeIndex; + } + //boolean tag + else if(this.options.unpairedTags.indexOf(tagName) !== -1){ + i = result.closeIndex; + } + //normal tag + else { + //read until closing tag is found + const result = this.readStopNodeData(xmlData, tagName, closeIndex + 1); + if(!result) throw new Error(`Unexpected end of ${tagName}`); + i = result.i; + tagContent = result.tagContent; + } + + const childNode = new xmlNode(tagName); + if(tagName !== tagExp && attrExpPresent){ + childNode[":@"] = this.buildAttributesMap(tagExp, jPath); + } + if(tagContent) { + tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true); + } + + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + childNode.add(this.options.textNodeName, tagContent); + + currentNode.addChild(childNode); + }else { + //selfClosing tag + if(tagExp.length > 0 && tagExp.lastIndexOf("/") === tagExp.length - 1){ + if(tagName[tagName.length - 1] === "/"){ //remove trailing '/' + tagName = tagName.substr(0, tagName.length - 1); + tagExp = tagName; + }else { + tagExp = tagExp.substr(0, tagExp.length - 1); + } + + if(this.options.transformTagName) { + tagName = this.options.transformTagName(tagName); + } + + const childNode = new xmlNode(tagName); + if(tagName !== tagExp && attrExpPresent){ + childNode[":@"] = this.buildAttributesMap(tagExp, jPath); + } + jPath = jPath.substr(0, jPath.lastIndexOf(".")); + currentNode.addChild(childNode); + } + //opening tag + else { + const childNode = new xmlNode( tagName); + this.tagsNodeStack.push(currentNode); + + if(tagName !== tagExp && attrExpPresent){ + childNode[":@"] = this.buildAttributesMap(tagExp, jPath); + } + currentNode.addChild(childNode); + currentNode = childNode; + } + textData = ""; + i = closeIndex; + } + } + }else { + textData += xmlData[i]; + } + } + return xmlObj.child; +}; + +const replaceEntitiesValue$2 = function(val){ + if(this.options.processEntities){ + for(let entityName in this.docTypeEntities){ + const entity = this.docTypeEntities[entityName]; + val = val.replace( entity.regx, entity.val); + } + for(let entityName in this.lastEntities){ + const entity = this.lastEntities[entityName]; + val = val.replace( entity.regex, entity.val); + } + if(this.options.htmlEntities){ + for(let entityName in this.htmlEntities){ + const entity = this.htmlEntities[entityName]; + val = val.replace( entity.regex, entity.val); + } + } + } + return val; +}; +function saveTextToParentTag(textData, currentNode, jPath, isLeafNode) { + if (textData) { //store previously collected data as textNode + if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0; + + textData = this.parseTextData(textData, + currentNode.tagname, + jPath, + false, + currentNode[":@"] ? Object.keys(currentNode[":@"]).length !== 0 : false, + isLeafNode); + + if (textData !== undefined && textData !== "") + currentNode.add(this.options.textNodeName, textData); + textData = ""; + } + return textData; +} + +//TODO: use jPath to simplify the logic +/** + * + * @param {string[]} stopNodes + * @param {string} jPath + * @param {string} currentTagName + */ +function isItStopNode(stopNodes, jPath, currentTagName){ + const allNodesExp = "*." + currentTagName; + for (const stopNodePath in stopNodes) { + const stopNodeExp = stopNodes[stopNodePath]; + if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true; + } + return false; +} + +/** + * Returns the tag Expression and where it is ending handling single-dobule quotes situation + * @param {string} xmlData + * @param {number} i starting index + * @returns + */ +function tagExpWithClosingIndex(xmlData, i, closingChar = ">"){ + let attrBoundary; + let tagExp = ""; + for (let index = i; index < xmlData.length; index++) { + let ch = xmlData[index]; + if (attrBoundary) { + if (ch === attrBoundary) attrBoundary = "";//reset + } else if (ch === '"' || ch === "'") { + attrBoundary = ch; + } else if (ch === closingChar[0]) { + if(closingChar[1]){ + if(xmlData[index + 1] === closingChar[1]){ + return { + data: tagExp, + index: index + } + } + }else { + return { + data: tagExp, + index: index + } + } + } else if (ch === '\t') { + ch = " "; + } + tagExp += ch; + } +} + +function findClosingIndex(xmlData, str, i, errMsg){ + const closingIndex = xmlData.indexOf(str, i); + if(closingIndex === -1){ + throw new Error(errMsg) + }else { + return closingIndex + str.length - 1; + } +} + +function readTagExp(xmlData,i, removeNSPrefix, closingChar = ">"){ + const result = tagExpWithClosingIndex(xmlData, i+1, closingChar); + if(!result) return; + let tagExp = result.data; + const closeIndex = result.index; + const separatorIndex = tagExp.search(/\s/); + let tagName = tagExp; + let attrExpPresent = true; + if(separatorIndex !== -1){//separate tag name and attributes expression + tagName = tagExp.substr(0, separatorIndex).replace(/\s\s*$/, ''); + tagExp = tagExp.substr(separatorIndex + 1); + } + + if(removeNSPrefix){ + const colonIndex = tagName.indexOf(":"); + if(colonIndex !== -1){ + tagName = tagName.substr(colonIndex+1); + attrExpPresent = tagName !== result.data.substr(colonIndex + 1); + } + } + + return { + tagName: tagName, + tagExp: tagExp, + closeIndex: closeIndex, + attrExpPresent: attrExpPresent, + } +} +/** + * find paired tag for a stop node + * @param {string} xmlData + * @param {string} tagName + * @param {number} i + */ +function readStopNodeData(xmlData, tagName, i){ + const startIndex = i; + // Starting at 1 since we already have an open tag + let openTagCount = 1; + + for (; i < xmlData.length; i++) { + if( xmlData[i] === "<"){ + if (xmlData[i+1] === "/") {//close tag + const closeIndex = findClosingIndex(xmlData, ">", i, `${tagName} is not closed`); + let closeTagName = xmlData.substring(i+2,closeIndex).trim(); + if(closeTagName === tagName){ + openTagCount--; + if (openTagCount === 0) { + return { + tagContent: xmlData.substring(startIndex, i), + i : closeIndex + } + } + } + i=closeIndex; + } else if(xmlData[i+1] === '?') { + const closeIndex = findClosingIndex(xmlData, "?>", i+1, "StopNode is not closed."); + i=closeIndex; + } else if(xmlData.substr(i + 1, 3) === '!--') { + const closeIndex = findClosingIndex(xmlData, "-->", i+3, "StopNode is not closed."); + i=closeIndex; + } else if(xmlData.substr(i + 1, 2) === '![') { + const closeIndex = findClosingIndex(xmlData, "]]>", i, "StopNode is not closed.") - 2; + i=closeIndex; + } else { + const tagData = readTagExp(xmlData, i, '>'); + + if (tagData) { + const openTagName = tagData && tagData.tagName; + if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== "/") { + openTagCount++; + } + i=tagData.closeIndex; + } + } + } + }//end for loop +} + +function parseValue(val, shouldParse, options) { + if (shouldParse && typeof val === 'string') { + //console.log(options) + const newval = val.trim(); + if(newval === 'true' ) return true; + else if(newval === 'false' ) return false; + else return strnum(val, options); + } else { + if (util.isExist(val)) { + return val; + } else { + return ''; + } + } +} + + +var OrderedObjParser_1 = OrderedObjParser; + +/** + * + * @param {array} node + * @param {any} options + * @returns + */ +function prettify$1(node, options){ + return compress( node, options); +} + +/** + * + * @param {array} arr + * @param {object} options + * @param {string} jPath + * @returns object + */ +function compress(arr, options, jPath){ + let text; + const compressedObj = {}; + for (let i = 0; i < arr.length; i++) { + const tagObj = arr[i]; + const property = propName$1(tagObj); + let newJpath = ""; + if(jPath === undefined) newJpath = property; + else newJpath = jPath + "." + property; + + if(property === options.textNodeName){ + if(text === undefined) text = tagObj[property]; + else text += "" + tagObj[property]; + }else if(property === undefined){ + continue; + }else if(tagObj[property]){ + + let val = compress(tagObj[property], options, newJpath); + const isLeaf = isLeafTag(val, options); + + if(tagObj[":@"]){ + assignAttributes( val, tagObj[":@"], newJpath, options); + }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){ + val = val[options.textNodeName]; + }else if(Object.keys(val).length === 0){ + if(options.alwaysCreateTextNode) val[options.textNodeName] = ""; + else val = ""; + } + + if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) { + if(!Array.isArray(compressedObj[property])) { + compressedObj[property] = [ compressedObj[property] ]; + } + compressedObj[property].push(val); + }else { + //TODO: if a node is not an array, then check if it should be an array + //also determine if it is a leaf node + if (options.isArray(property, newJpath, isLeaf )) { + compressedObj[property] = [val]; + }else { + compressedObj[property] = val; + } + } + } + + } + // if(text && text.length > 0) compressedObj[options.textNodeName] = text; + if(typeof text === "string"){ + if(text.length > 0) compressedObj[options.textNodeName] = text; + }else if(text !== undefined) compressedObj[options.textNodeName] = text; + return compressedObj; +} + +function propName$1(obj){ + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if(key !== ":@") return key; + } +} + +function assignAttributes(obj, attrMap, jpath, options){ + if (attrMap) { + const keys = Object.keys(attrMap); + const len = keys.length; //don't make it inline + for (let i = 0; i < len; i++) { + const atrrName = keys[i]; + if (options.isArray(atrrName, jpath + "." + atrrName, true, true)) { + obj[atrrName] = [ attrMap[atrrName] ]; + } else { + obj[atrrName] = attrMap[atrrName]; + } + } + } +} + +function isLeafTag(obj, options){ + const propCount = Object.keys(obj).length; + if( propCount === 0 || (propCount === 1 && obj[options.textNodeName]) ) return true; + return false; +} +var prettify_1 = prettify$1; + +var node2json = { + prettify: prettify_1 +}; + +const { buildOptions} = OptionsBuilder; + +const { prettify} = node2json; + + +class XMLParser{ + + constructor(options){ + this.externalEntities = {}; + this.options = buildOptions(options); + + } + /** + * Parse XML dats to JS object + * @param {string|Buffer} xmlData + * @param {boolean|Object} validationOption + */ + parse(xmlData,validationOption){ + if(typeof xmlData === "string");else if( xmlData.toString){ + xmlData = xmlData.toString(); + }else { + throw new Error("XML data is accepted in String or Bytes[] form.") + } + if( validationOption){ + if(validationOption === true) validationOption = {}; //validate with default options + + const result = validator.validate(xmlData, validationOption); + if (result !== true) { + throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` ) + } + } + const orderedObjParser = new OrderedObjParser_1(this.options); + orderedObjParser.addExternalEntities(this.externalEntities); + const orderedResult = orderedObjParser.parseXml(xmlData); + if(this.options.preserveOrder || orderedResult === undefined) return orderedResult; + else return prettify(orderedResult, this.options); + } + + /** + * Add Entity which is not by default supported by this library + * @param {string} key + * @param {string} value + */ + addEntity(key, value){ + if(value.indexOf("&") !== -1){ + throw new Error("Entity value can't have '&'") + }else if(key.indexOf("&") !== -1 || key.indexOf(";") !== -1){ + throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '") + }else { + this.externalEntities[key] = value; + } + } +} + +var XMLParser_1 = XMLParser; + +const EOL$1 = "\n"; + +/** + * + * @param {array} jArray + * @param {any} options + * @returns + */ +function toXml(jArray, options){ + return arrToStr( jArray, options, "", 0); +} + +function arrToStr(arr, options, jPath, level){ + let xmlStr = ""; + + let indentation = ""; + if(options.format && options.indentBy.length > 0){//TODO: this logic can be avoided for each call + indentation = EOL$1 + "" + options.indentBy.repeat(level); + } + + for (let i = 0; i < arr.length; i++) { + const tagObj = arr[i]; + const tagName = propName(tagObj); + let newJPath = ""; + if(jPath.length === 0) newJPath = tagName; + else newJPath = `${jPath}.${tagName}`; + + if(tagName === options.textNodeName){ + let tagText = tagObj[tagName]; + if(!isStopNode(newJPath, options)){ + tagText = options.tagValueProcessor( tagName, tagText); + tagText = replaceEntitiesValue$1(tagText, options); + } + xmlStr += indentation + tagText; + continue; + }else if( tagName === options.cdataPropName){ + xmlStr += indentation + ``; + continue; + }else if( tagName === options.commentPropName){ + xmlStr += indentation + ``; + continue; + }else if( tagName[0] === "?"){ + const attStr = attr_to_str(tagObj[":@"], options); + const tempInd = tagName === "?xml" ? "" : indentation; + let piTextNodeName = tagObj[tagName][0][options.textNodeName]; + piTextNodeName = piTextNodeName.length !== 0 ? " " + piTextNodeName : ""; //remove extra spacing + xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`; + continue; + } + const attStr = attr_to_str(tagObj[":@"], options); + let tagStart = indentation + `<${tagName}${attStr}`; + let tagValue = arrToStr(tagObj[tagName], options, newJPath, level + 1); + if(options.unpairedTags.indexOf(tagName) !== -1){ + if(options.suppressUnpairedNode) xmlStr += tagStart + ">"; + else xmlStr += tagStart + "/>"; + }else if( (!tagValue || tagValue.length === 0) && options.suppressEmptyNode){ + xmlStr += tagStart + "/>"; + }else { + //TODO: node with only text value should not parse the text value in next line + xmlStr += tagStart + `>${tagValue}${indentation}` ; + } + } + + return xmlStr; +} + +function propName(obj){ + const keys = Object.keys(obj); + for (let i = 0; i < keys.length; i++) { + const key = keys[i]; + if(key !== ":@") return key; + } + } + +function attr_to_str(attrMap, options){ + let attrStr = ""; + if(attrMap && !options.ignoreAttributes){ + for (let attr in attrMap){ + let attrVal = options.attributeValueProcessor(attr, attrMap[attr]); + attrVal = replaceEntitiesValue$1(attrVal, options); + if(attrVal === true && options.suppressBooleanAttributes){ + attrStr+= ` ${attr.substr(options.attributeNamePrefix.length)}`; + }else { + attrStr+= ` ${attr.substr(options.attributeNamePrefix.length)}="${attrVal}"`; + } + } + } + return attrStr; +} + +function isStopNode(jPath, options){ + jPath = jPath.substr(0,jPath.length - options.textNodeName.length - 1); + let tagName = jPath.substr(jPath.lastIndexOf(".") + 1); + for(let index in options.stopNodes){ + if(options.stopNodes[index] === jPath || options.stopNodes[index] === "*."+tagName) return true; + } + return false; +} + +function replaceEntitiesValue$1(textValue, options){ + if(textValue && textValue.length > 0 && options.processEntities){ + for (let i=0; i< options.entities.length; i++) { + const entity = options.entities[i]; + textValue = textValue.replace(entity.regex, entity.val); + } + } + return textValue; + } +var orderedJs2Xml = toXml; + +//parse Empty Node as self closing node + + +const defaultOptions = { + attributeNamePrefix: '@_', + attributesGroupName: false, + textNodeName: '#text', + ignoreAttributes: true, + cdataPropName: false, + format: false, + indentBy: ' ', + suppressEmptyNode: false, + suppressUnpairedNode: true, + suppressBooleanAttributes: true, + tagValueProcessor: function(key, a) { + return a; + }, + attributeValueProcessor: function(attrName, a) { + return a; + }, + preserveOrder: false, + commentPropName: false, + unpairedTags: [], + entities: [ + { regex: new RegExp("&", "g"), val: "&" },//it must be on top + { regex: new RegExp(">", "g"), val: ">" }, + { regex: new RegExp("<", "g"), val: "<" }, + { regex: new RegExp("\'", "g"), val: "'" }, + { regex: new RegExp("\"", "g"), val: """ } + ], + processEntities: true, + stopNodes: [], + transformTagName: false, +}; + +function Builder(options) { + this.options = Object.assign({}, defaultOptions, options); + if (this.options.ignoreAttributes || this.options.attributesGroupName) { + this.isAttribute = function(/*a*/) { + return false; + }; + } else { + this.attrPrefixLen = this.options.attributeNamePrefix.length; + this.isAttribute = isAttribute; + } + + this.processTextOrObjNode = processTextOrObjNode; + + if (this.options.format) { + this.indentate = indentate; + this.tagEndChar = '>\n'; + this.newLine = '\n'; + } else { + this.indentate = function() { + return ''; + }; + this.tagEndChar = '>'; + this.newLine = ''; + } + + if (this.options.suppressEmptyNode) { + this.buildTextNode = buildEmptyTextNode; + this.buildObjNode = buildEmptyObjNode; + } else { + this.buildTextNode = buildTextValNode; + this.buildObjNode = buildObjectNode; + } + + this.buildTextValNode = buildTextValNode; + this.buildObjectNode = buildObjectNode; + + this.replaceEntitiesValue = replaceEntitiesValue; + this.buildAttrPairStr = buildAttrPairStr; +} + +Builder.prototype.build = function(jObj) { + if(this.options.preserveOrder){ + return orderedJs2Xml(jObj, this.options); + }else { + if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){ + jObj = { + [this.options.arrayNodeName] : jObj + }; + } + return this.j2x(jObj, 0).val; + } +}; + +Builder.prototype.j2x = function(jObj, level) { + let attrStr = ''; + let val = ''; + for (let key in jObj) { + if (typeof jObj[key] === 'undefined') ; else if (jObj[key] === null) { + if(key[0] === "?") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar; + else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar; + // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar; + } else if (jObj[key] instanceof Date) { + val += this.buildTextNode(jObj[key], key, '', level); + } else if (typeof jObj[key] !== 'object') { + //premitive type + const attr = this.isAttribute(key); + if (attr) { + attrStr += this.buildAttrPairStr(attr, '' + jObj[key]); + }else { + //tag value + if (key === this.options.textNodeName) { + let newval = this.options.tagValueProcessor(key, '' + jObj[key]); + val += this.replaceEntitiesValue(newval); + } else { + val += this.buildTextNode(jObj[key], key, '', level); + } + } + } else if (Array.isArray(jObj[key])) { + //repeated nodes + const arrLen = jObj[key].length; + for (let j = 0; j < arrLen; j++) { + const item = jObj[key][j]; + if (typeof item === 'undefined') ; else if (item === null) { + if(key[0] === "?") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar; + else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar; + // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar; + } else if (typeof item === 'object') { + val += this.processTextOrObjNode(item, key, level); + } else { + val += this.buildTextNode(item, key, '', level); + } + } + } else { + //nested node + if (this.options.attributesGroupName && key === this.options.attributesGroupName) { + const Ks = Object.keys(jObj[key]); + const L = Ks.length; + for (let j = 0; j < L; j++) { + attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]); + } + } else { + val += this.processTextOrObjNode(jObj[key], key, level); + } + } + } + return {attrStr: attrStr, val: val}; +}; + +function buildAttrPairStr(attrName, val){ + val = this.options.attributeValueProcessor(attrName, '' + val); + val = this.replaceEntitiesValue(val); + if (this.options.suppressBooleanAttributes && val === "true") { + return ' ' + attrName; + } else return ' ' + attrName + '="' + val + '"'; +} + +function processTextOrObjNode (object, key, level) { + const result = this.j2x(object, level + 1); + if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) { + return this.buildTextNode(object[this.options.textNodeName], key, result.attrStr, level); + } else { + return this.buildObjNode(result.val, key, result.attrStr, level); + } +} + +function buildObjectNode(val, key, attrStr, level) { + let tagEndExp = '' + val + tagEndExp ); + } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) { + return this.indentate(level) + `` + this.newLine; + }else { + return ( + this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar + + val + + this.indentate(level) + tagEndExp ); + } +} + +function buildEmptyObjNode(val, key, attrStr, level) { + if (val !== '') { + return this.buildObjectNode(val, key, attrStr, level); + } else { + if(key[0] === "?") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; + else return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar; + } +} + +function buildTextValNode(val, key, attrStr, level) { + if (this.options.cdataPropName !== false && key === this.options.cdataPropName) { + return this.indentate(level) + `` + this.newLine; + }else if (this.options.commentPropName !== false && key === this.options.commentPropName) { + return this.indentate(level) + `` + this.newLine; + }else { + let textValue = this.options.tagValueProcessor(key, val); + textValue = this.replaceEntitiesValue(textValue); + + if( textValue === '' && this.options.unpairedTags.indexOf(key) !== -1){ //unpaired + if(this.options.suppressUnpairedNode){ + return this.indentate(level) + '<' + key + this.tagEndChar; + }else { + return this.indentate(level) + '<' + key + "/" + this.tagEndChar; + } + } else { + return ( + this.indentate(level) + '<' + key + attrStr + '>' + + textValue + + ' 0 && this.options.processEntities){ + for (let i=0; iThis experimental tool can import geolocations from a KML file into the current note.

+ + `; + // TODO make collapsible + const templateBox = new obsidian.TextAreaComponent(row2).setValue(`- [{{name}}](geo:{{location}})`); + const fileInput = document.getElementById('file-input'); + let imported = null; + fileInput.addEventListener('change', (ev) => { + const fileReader = new FileReader(); + fileReader.readAsText(fileInput.files[0]); + fileReader.addEventListener('load', () => __awaiter(this, void 0, void 0, function* () { + if (typeof fileReader.result === 'string') { + imported = yield tryKmlImport(fileReader.result); + if (imported && imported.items.length > 0) { + row3.innerHTML = `${imported.items.length} items ready for import`; + } + else { + row3.innerHTML = 'Unable to import from this file'; + } + } + })); + }); + new obsidian.ButtonComponent(row4) + .setButtonText('Import') + .onClick(() => __awaiter(this, void 0, void 0, function* () { + if (!imported || imported.items.length === 0) + return; + const text = styleImportedList(imported, templateBox.getValue()); + if (text) { + this.editor.replaceSelection(text); + verifyOrAddFrontMatter(this.editor, 'locations', ''); + } + this.close(); + })); + } +} +function tryKmlImport(fileContent) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + const result = { + title: null, + items: [] + }; + try { + const parser = new fxp.XMLParser(); + const parsedContent = parser.parse(fileContent); + let mainDocument = (_a = parsedContent === null || parsedContent === void 0 ? void 0 : parsedContent.kml) === null || _a === void 0 ? void 0 : _a.Document; + if (mainDocument) { + const name = mainDocument.name; + const places = mainDocument.Placemark; + if (places && places.length > 0) { + if (name && name.length > 0) + result.title = name; + for (const place of places) { + const placeName = place.name; + const placeCoords = (_b = place.Point) === null || _b === void 0 ? void 0 : _b.coordinates; + if (placeCoords && placeCoords.length > 0 && typeof placeCoords === 'string') { + const coordinates = placeCoords.match(COORDINATES); + if (coordinates && coordinates.length > 3) { + result.items.push({ name: placeName, lat: parseFloat(coordinates[3]), lng: parseFloat(coordinates[1]) }); + } + } + } + return result; + } + } + } + catch (e) { + // TODO have a proper error here + console.log('Import error', e); + } + return null; + }); +} +function styleImportedList(imported, template) { + let result = ''; + if (imported.title) + result += `## ${imported.title}\n`; + for (const item of imported.items) { + const formattedItem = template.replace(/\{\{name}}/g, item.name) + .replace(/\{\{location}}/g, `${item.lat},${item.lng}`); + result += formattedItem + '\n'; + } + return result; +} + +function addShowOnMap(menu, geolocation, file, editorLine, plugin) { + if (geolocation) { + menu.addItem((item) => { + item.setTitle('Show on map'); + item.setSection('mapview'); + item.setIcon('globe'); + item.onClick((evt) => __awaiter(this, void 0, void 0, function* () { + return yield plugin.openMapWithLocation(geolocation, evt.ctrlKey, file, editorLine, evt.shiftKey); + })); + }); + } +} +function addOpenWith(menu, geolocation, settings) { + if (geolocation) { + menu.addItem((item) => { + item.setTitle('Open with default app'); + item.setIcon('map-pin'); + item.setSection('mapview'); + item.onClick((_ev) => { + open(`geo:${geolocation.lat},${geolocation.lng}`); + }); + }); + // Populate menu items from user defined "Open In" strings + populateOpenInItems(menu, geolocation, settings); + } +} +/** + * Populate a context menu from the user configurable URLs + * @param menu The menu to attach + * @param location The geolocation to use in the menu item + * @param settings Plugin settings + */ +function populateOpenInItems(menu, location, settings) { + for (let setting of settings.openIn) { + if (!setting.name || !setting.urlPattern) + continue; + const fullUrl = setting.urlPattern + .replace('{x}', location.lat.toString()) + .replace('{y}', location.lng.toString()); + menu.addItem((item) => { + item.setTitle(`Open in ${setting.name}`); + item.setIcon('map-pin'); + item.setSection('mapview'); + item.onClick((_ev) => { + open(fullUrl); + }); + }); + } +} +function addGeolocationToNote(menu, app, editor, settings) { + menu.addItem((item) => { + item.setTitle('Add geolocation (front matter)'); + item.setSection('mapview'); + item.setIcon('globe'); + item.onClick((_evt) => __awaiter(this, void 0, void 0, function* () { + const dialog = new LocationSearchDialog(app, settings, 'addToNote', 'Add geolocation to note', editor); + dialog.open(); + })); + }); +} +function addFocusNoteInMapView(menu, file, settings, plugin) { + menu.addItem((item) => { + const fileName = trimmedFileName(file); + item.setTitle(`Focus '${fileName}' in Map View`); + item.setIcon('globe'); + item.setSection('mapview'); + item.onClick((evt) => __awaiter(this, void 0, void 0, function* () { + return yield plugin.openMapWithState({ + query: replaceFollowActiveNoteQuery(file, settings), + }, evt.ctrlKey, true); + })); + }); +} +function addUrlConversionItems(menu, editor, suggestor, urlConvertor) { + if (editor.getSelection()) { + // If there is text selected, add a menu item to convert it to coordinates using geosearch + menu.addItem((item) => { + item.setTitle('Convert to geolocation (geosearch)'); + item.setIcon('search'); + item.setSection('mapview'); + item.onClick(() => __awaiter(this, void 0, void 0, function* () { return yield suggestor.selectionToLink(editor); })); + }); + } + if (urlConvertor.hasMatchInLine(editor)) + // If the line contains a recognized geolocation that can be converted from a URL parsing rule + menu.addItem((item) => __awaiter(this, void 0, void 0, function* () { + item.setTitle('Convert to geolocation'); + item.setIcon('search'); + item.setSection('mapview'); + item.onClick(() => __awaiter(this, void 0, void 0, function* () { + urlConvertor.convertUrlAtCursorToGeolocation(editor); + })); + })); + menu.addItem((item) => { + item.setTitle('Paste as geolocation'); + item.setSection('mapview'); + item.setIcon('clipboard-x'); + item.onClick(() => __awaiter(this, void 0, void 0, function* () { + const clipboard = yield navigator.clipboard.readText(); + let clipboardLocation = urlConvertor.parseLocationFromUrl(clipboard); + if (clipboardLocation instanceof Promise) + clipboardLocation = yield clipboardLocation; + if (clipboardLocation) + urlConvertor.insertLocationToEditor(clipboardLocation.location, editor); + })); + }); +} +function addNewNoteItems(menu, geolocation, mapContainer, settings, app) { + const locationString = `${geolocation.lat},${geolocation.lng}`; + menu.addItem((item) => { + item.setTitle('New note here (inline)'); + item.setIcon('edit'); + item.setSection('new'); + item.onClick((ev) => __awaiter(this, void 0, void 0, function* () { + const newFileName = formatWithTemplates(settings.newNoteNameFormat); + const file = yield newNote(app, 'multiLocation', settings.newNotePath, newFileName, locationString, settings.newNoteTemplate); + mapContainer.goToFile(file, ev.ctrlKey, handleNewNoteCursorMarker); + })); + }); + menu.addItem((item) => { + item.setTitle('New note here (front matter)'); + item.setIcon('edit'); + item.setSection('new'); + item.onClick((ev) => __awaiter(this, void 0, void 0, function* () { + const newFileName = formatWithTemplates(settings.newNoteNameFormat); + const file = yield newNote(app, 'singleLocation', settings.newNotePath, newFileName, locationString, settings.newNoteTemplate); + mapContainer.goToFile(file, ev.ctrlKey, handleNewNoteCursorMarker); + })); + }); +} +function addCopyGeolocationItems(menu, geolocation) { + const locationString = `${geolocation.lat},${geolocation.lng}`; + menu.addItem((item) => { + item.setTitle(`Copy geolocation`); + item.setIcon('copy'); + item.setSection('copy'); + item.onClick((_ev) => { + navigator.clipboard.writeText(`[](geo:${locationString})`); + }); + }); + menu.addItem((item) => { + item.setTitle(`Copy geolocation as front matter`); + item.setIcon('copy'); + item.setSection('copy'); + item.onClick((_ev) => { + navigator.clipboard.writeText(`---\nlocation: [${locationString}]\n---\n\n`); + }); + }); +} +function addFocusLinesInMapView(menu, file, fromLine, toLine, numLocations, plugin, settings) { + menu.addItem((item) => { + item.setTitle(`Focus ${numLocations} ${numLocations > 1 ? 'geolocations' : 'geolocation'} in Map View`); + item.setIcon('globe'); + item.setSection('mapview'); + item.onClick((evt) => __awaiter(this, void 0, void 0, function* () { + return yield plugin.openMapWithState({ + query: `path:"${file.path}" AND lines:${fromLine}-${toLine}` + }, evt.ctrlKey, true); + })); + }); +} +function addImport(menu, editor, app, plugin, settings) { + menu.addItem((item) => { + // TODO: this is an unfinished corner of the code, currently bypassed by default + item.setTitle('Import geolocations from file...'); + item.setIcon('globe'); + item.setSection('mapview'); + item.onClick((evt) => __awaiter(this, void 0, void 0, function* () { + const importDialog = new ImportDialog(editor, app, plugin, settings); + importDialog.open(); + })); + }); +} + +/*! + * Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + * Copyright 2022 Fonticons, Inc. + */ +!function(){var C={},c={};try{"undefined"!=typeof window&&(C=window),"undefined"!=typeof document&&(c=document);}catch(C){}var l=(C.navigator||{}).userAgent,z=void 0===l?"":l,e=C,a=c;e.document,a.documentElement&&a.head&&"function"==typeof a.addEventListener&&a.createElement,~z.indexOf("MSIE")||z.indexOf("Trident/");function M(c,C){var l,z=Object.keys(c);return Object.getOwnPropertySymbols&&(l=Object.getOwnPropertySymbols(c),C&&(l=l.filter(function(C){return Object.getOwnPropertyDescriptor(c,C).enumerable})),z.push.apply(z,l)),z}function L(z){for(var C=1;CC.length)&&(c=C.length);for(var l=0,z=new Array(c);lC.length)&&(c=C.length);for(var l=0,z=new Array(c);lC.length)&&(c=C.length);for(var l=0,z=new Array(c);lC.length)&&(c=C.length);for(var l=0,z=new Array(c);l>>0;l--;)c[l]=C[l];return c}function J(C){return C.classList?$(C.classList):(C.getAttribute("class")||"").split(" ").filter(function(C){return C})}function Z(C){return "".concat(C).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function C1(l){return Object.keys(l||{}).reduce(function(C,c){return C+"".concat(c,": ").concat(l[c].trim(),";")},"")}function c1(C){return C.size!==Q.size||C.x!==Q.x||C.y!==Q.y||C.rotate!==Q.rotate||C.flipX||C.flipY}function l1(){var C,c,l=p,z=U.familyPrefix,e=U.replacementClass,a=':host,:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Solid";--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Regular";--fa-font-light:normal 300 1em/1 "Font Awesome 6 Light";--fa-font-thin:normal 100 1em/1 "Font Awesome 6 Thin";--fa-font-duotone:normal 900 1em/1 "Font Awesome 6 Duotone";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}svg:not(:host).svg-inline--fa,svg:not(:root).svg-inline--fa{overflow:visible;box-sizing:content-box}.svg-inline--fa{display:var(--fa-display,inline-block);height:1em;overflow:visible;vertical-align:-.125em}.svg-inline--fa.fa-2xs{vertical-align:.1em}.svg-inline--fa.fa-xs{vertical-align:0}.svg-inline--fa.fa-sm{vertical-align:-.0714285705em}.svg-inline--fa.fa-lg{vertical-align:-.2em}.svg-inline--fa.fa-xl{vertical-align:-.25em}.svg-inline--fa.fa-2xl{vertical-align:-.3125em}.svg-inline--fa.fa-pull-left{margin-right:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-pull-right{margin-left:var(--fa-pull-margin,.3em);width:auto}.svg-inline--fa.fa-li{width:var(--fa-li-width,2em);top:.25em}.svg-inline--fa.fa-fw{width:var(--fa-fw-width,1.25em)}.fa-layers svg.svg-inline--fa{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0}.fa-layers-counter,.fa-layers-text{display:inline-block;position:absolute;text-align:center}.fa-layers{display:inline-block;height:1em;position:relative;text-align:center;vertical-align:-.125em;width:1em}.fa-layers svg.svg-inline--fa{-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-text{left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);-webkit-transform-origin:center center;transform-origin:center center}.fa-layers-counter{background-color:var(--fa-counter-background-color,#ff253a);border-radius:var(--fa-counter-border-radius,1em);box-sizing:border-box;color:var(--fa-inverse,#fff);line-height:var(--fa-counter-line-height,1);max-width:var(--fa-counter-max-width,5em);min-width:var(--fa-counter-min-width,1.5em);overflow:hidden;padding:var(--fa-counter-padding,.25em .5em);right:var(--fa-right,0);text-overflow:ellipsis;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-counter-scale,.25));transform:scale(var(--fa-counter-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-bottom-right{bottom:var(--fa-bottom,0);right:var(--fa-right,0);top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom right;transform-origin:bottom right}.fa-layers-bottom-left{bottom:var(--fa-bottom,0);left:var(--fa-left,0);right:auto;top:auto;-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:bottom left;transform-origin:bottom left}.fa-layers-top-right{top:var(--fa-top,0);right:var(--fa-right,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top right;transform-origin:top right}.fa-layers-top-left{left:var(--fa-left,0);right:auto;top:var(--fa-top,0);-webkit-transform:scale(var(--fa-layers-scale,.25));transform:scale(var(--fa-layers-scale,.25));-webkit-transform-origin:top left;transform-origin:top left}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{font-size:.625em;line-height:.1em;vertical-align:.225em}.fa-xs{font-size:.75em;line-height:.0833333337em;vertical-align:.125em}.fa-sm{font-size:.875em;line-height:.0714285718em;vertical-align:.0535714295em}.fa-lg{font-size:1.25em;line-height:.05em;vertical-align:-.075em}.fa-xl{font-size:1.5em;line-height:.0416666682em;vertical-align:-.125em}.fa-2xl{font-size:2em;line-height:.03125em;vertical-align:-.1875em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:var(--fa-li-margin,2.5em);padding-left:0}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width,2em) * -1);position:absolute;text-align:center;width:var(--fa-li-width,2em);line-height:inherit}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28,.84,.42,1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4,0,.6,1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay,0);animation-delay:var(--fa-animation-delay,0);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-beat-fade,.fa-bounce,.fa-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-animation-delay:-1ms;animation-delay:-1ms;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;transition-delay:0s;transition-duration:0s}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1,1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}100%{-webkit-transform:scale(1,1) translateY(0);transform:scale(1,1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,100%{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}24%,8%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}100%,40%{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-webkit-transform:scale(1,-1);transform:scale(1,-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1,-1);transform:scale(-1,-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{display:inline-block;vertical-align:middle;height:2em;position:relative;width:2.5em}.fa-stack-1x,.fa-stack-2x{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;z-index:var(--fa-stack-z-index,auto)}.svg-inline--fa.fa-stack-1x{height:1em;width:1.25em}.svg-inline--fa.fa-stack-2x{height:2em;width:2.5em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-sr-only,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.fa-sr-only-focusable:not(:focus),.sr-only-focusable:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.svg-inline--fa .fa-primary{fill:var(--fa-primary-color,currentColor);opacity:var(--fa-primary-opacity,1)}.svg-inline--fa .fa-secondary{fill:var(--fa-secondary-color,currentColor);opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-primary{opacity:var(--fa-secondary-opacity,.4)}.svg-inline--fa.fa-swap-opacity .fa-secondary{opacity:var(--fa-primary-opacity,1)}.svg-inline--fa mask .fa-primary,.svg-inline--fa mask .fa-secondary{fill:#000}.fa-duotone.fa-inverse,.fad.fa-inverse{color:var(--fa-inverse,#fff)}';return "fa"===z&&e===l||(C=new RegExp("\\.".concat("fa","\\-"),"g"),c=new RegExp("\\--".concat("fa","\\-"),"g"),l=new RegExp("\\.".concat(l),"g"),a=a.replace(C,".".concat(z,"-")).replace(c,"--".concat(z,"-")).replace(l,".".concat(e))),a}var z1=!1;function e1(){U.autoAddCss&&!z1&&(function(C){if(C&&o){var c=v.createElement("style");c.setAttribute("type","text/css"),c.innerHTML=C;for(var l=v.head.childNodes,z=null,e=l.length-1;-1").concat(z.map(t1).join(""),"")}function r1(C,c,l){if(C&&C[c]&&C[c][l])return {prefix:c,iconName:l,icon:C[c][l]}}o&&((V1=(v.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(v.readyState))||v.addEventListener("DOMContentLoaded",a1));function s1(C,c,l,z){for(var e,a,M=Object.keys(C),L=M.length,V=void 0!==z?h1(c,z):c,H=void 0===l?(e=1,C[M[0]]):(e=0,l);e svg path,\r\n.leaflet-tile-container {\r\n\tpointer-events: none;\r\n\t}\r\n\r\n.leaflet-marker-icon.leaflet-interactive,\r\n.leaflet-image-layer.leaflet-interactive,\r\n.leaflet-pane > svg path.leaflet-interactive,\r\nsvg.leaflet-image-layer.leaflet-interactive path {\r\n\tpointer-events: visiblePainted; /* IE 9-10 doesn't have auto */\r\n\tpointer-events: auto;\r\n\t}\r\n\r\n/* visual tweaks */\r\n\r\n.leaflet-container {\r\n\tbackground: #ddd;\r\n\toutline: 0;\r\n\t}\r\n.leaflet-container a {\r\n\tcolor: #0078A8;\r\n\t}\r\n.leaflet-container a.leaflet-active {\r\n\toutline: 2px solid orange;\r\n\t}\r\n.leaflet-zoom-box {\r\n\tborder: 2px dotted #38f;\r\n\tbackground: rgba(255,255,255,0.5);\r\n\t}\r\n\r\n\r\n/* general typography */\r\n.leaflet-container {\r\n\tfont: 12px/1.5 \"Helvetica Neue\", Arial, Helvetica, sans-serif;\r\n\t}\r\n\r\n\r\n/* general toolbar styles */\r\n\r\n.leaflet-bar {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.65);\r\n\tborder-radius: 4px;\r\n\t}\r\n.leaflet-bar a,\r\n.leaflet-bar a:hover {\r\n\tbackground-color: #fff;\r\n\tborder-bottom: 1px solid #ccc;\r\n\twidth: 26px;\r\n\theight: 26px;\r\n\tline-height: 26px;\r\n\tdisplay: block;\r\n\ttext-align: center;\r\n\ttext-decoration: none;\r\n\tcolor: black;\r\n\t}\r\n.leaflet-bar a,\r\n.leaflet-control-layers-toggle {\r\n\tbackground-position: 50% 50%;\r\n\tbackground-repeat: no-repeat;\r\n\tdisplay: block;\r\n\t}\r\n.leaflet-bar a:hover {\r\n\tbackground-color: #f4f4f4;\r\n\t}\r\n.leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 4px;\r\n\tborder-top-right-radius: 4px;\r\n\t}\r\n.leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 4px;\r\n\tborder-bottom-right-radius: 4px;\r\n\tborder-bottom: none;\r\n\t}\r\n.leaflet-bar a.leaflet-disabled {\r\n\tcursor: default;\r\n\tbackground-color: #f4f4f4;\r\n\tcolor: #bbb;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-bar a {\r\n\twidth: 30px;\r\n\theight: 30px;\r\n\tline-height: 30px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:first-child {\r\n\tborder-top-left-radius: 2px;\r\n\tborder-top-right-radius: 2px;\r\n\t}\r\n.leaflet-touch .leaflet-bar a:last-child {\r\n\tborder-bottom-left-radius: 2px;\r\n\tborder-bottom-right-radius: 2px;\r\n\t}\r\n\r\n/* zoom control */\r\n\r\n.leaflet-control-zoom-in,\r\n.leaflet-control-zoom-out {\r\n\tfont: bold 18px 'Lucida Console', Monaco, monospace;\r\n\ttext-indent: 1px;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out {\r\n\tfont-size: 22px;\r\n\t}\r\n\r\n\r\n/* layers control */\r\n\r\n.leaflet-control-layers {\r\n\tbox-shadow: 0 1px 5px rgba(0,0,0,0.4);\r\n\tbackground: #fff;\r\n\tborder-radius: 5px;\r\n\t}\r\n.leaflet-control-layers-toggle {\r\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAQAAAADQ4RFAAACf0lEQVR4AY1UM3gkARTePdvdoTxXKc+qTl3aU5U6b2Kbkz3Gtq3Zw6ziLGNPzrYx7946Tr6/ee/XeCQ4D3ykPtL5tHno4n0d/h3+xfuWHGLX81cn7r0iTNzjr7LrlxCqPtkbTQEHeqOrTy4Yyt3VCi/IOB0v7rVC7q45Q3Gr5K6jt+3Gl5nCoDD4MtO+j96Wu8atmhGqcNGHObuf8OM/x3AMx38+4Z2sPqzCxRFK2aF2e5Jol56XTLyggAMTL56XOMoS1W4pOyjUcGGQdZxU6qRh7B9Zp+PfpOFlqt0zyDZckPi1ttmIp03jX8gyJ8a/PG2yutpS/Vol7peZIbZcKBAEEheEIAgFbDkz5H6Zrkm2hVWGiXKiF4Ycw0RWKdtC16Q7qe3X4iOMxruonzegJzWaXFrU9utOSsLUmrc0YjeWYjCW4PDMADElpJSSQ0vQvA1Tm6/JlKnqFs1EGyZiFCqnRZTEJJJiKRYzVYzJck2Rm6P4iH+cmSY0YzimYa8l0EtTODFWhcMIMVqdsI2uiTvKmTisIDHJ3od5GILVhBCarCfVRmo4uTjkhrhzkiBV7SsaqS+TzrzM1qpGGUFt28pIySQHR6h7F6KSwGWm97ay+Z+ZqMcEjEWebE7wxCSQwpkhJqoZA5ivCdZDjJepuJ9IQjGGUmuXJdBFUygxVqVsxFsLMbDe8ZbDYVCGKxs+W080max1hFCarCfV+C1KATwcnvE9gRRuMP2prdbWGowm1KB1y+zwMMENkM755cJ2yPDtqhTI6ED1M/82yIDtC/4j4BijjeObflpO9I9MwXTCsSX8jWAFeHr05WoLTJ5G8IQVS/7vwR6ohirYM7f6HzYpogfS3R2OAAAAAElFTkSuQmCC);\r\n\twidth: 36px;\r\n\theight: 36px;\r\n\t}\r\n.leaflet-retina .leaflet-control-layers-toggle {\r\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADQAAAA0CAQAAABvcdNgAAAEsklEQVR4AWL4TydIhpZK1kpWOlg0w3ZXP6D2soBtG42jeI6ZmQTHzAxiTbSJsYLjO9HhP+WOmcuhciVnmHVQcJnp7DFvScowZorad/+V/fVzMdMT2g9Cv9guXGv/7pYOrXh2U+RRR3dSd9JRx6bIFc/ekqHI29JC6pJ5ZEh1yWkhkbcFeSjxgx3L2m1cb1C7bceyxA+CNjT/Ifff+/kDk2u/w/33/IeCMOSaWZ4glosqT3DNnNZQ7Cs58/3Ce5HL78iZH/vKVIaYlqzfdLu8Vi7dnvUbEza5Idt36tquZFldl6N5Z/POLof0XLK61mZCmJSWjVF9tEjUluu74IUXvgttuVIHE7YxSkaYhJZam7yiM9Pv82JYfl9nptxZaxMJE4YSPty+vF0+Y2up9d3wwijfjZbabqm/3bZ9ecKHsiGmRflnn1MW4pjHf9oLufyn2z3y1D6n8g8TZhxyzipLNPnAUpsOiuWimg52psrTZYnOWYNDTMuWBWa0tJb4rgq1UvmutpaYEbZlwU3CLJm/ayYjHW5/h7xWLn9Hh1vepDkyf7dE7MtT5LR4e7yYpHrkhOUpEfssBLq2pPhAqoSWKUkk7EDqkmK6RrCEzqDjhNDWNE+XSMvkJRDWlZTmCW0l0PHQGRZY5t1L83kT0Y3l2SItk5JAWHl2dCOBm+fPu3fo5/3v61RMCO9Jx2EEYYhb0rmNQMX/vm7gqOEJLcXTGw3CAuRNeyaPWwjR8PRqKQ1PDA/dpv+on9Shox52WFnx0KY8onHayrJzm87i5h9xGw/tfkev0jGsQizqezUKjk12hBMKJ4kbCqGPVNXudyyrShovGw5CgxsRICxF6aRmSjlBnHRzg7Gx8fKqEubI2rahQYdR1YgDIRQO7JvQyD52hoIQx0mxa0ODtW2Iozn1le2iIRdzwWewedyZzewidueOGqlsn1MvcnQpuVwLGG3/IR1hIKxCjelIDZ8ldqWz25jWAsnldEnK0Zxro19TGVb2ffIZEsIO89EIEDvKMPrzmBOQcKQ+rroye6NgRRxqR4U8EAkz0CL6uSGOm6KQCdWjvjRiSP1BPalCRS5iQYiEIvxuBMJEWgzSoHADcVMuN7IuqqTeyUPq22qFimFtxDyBBJEwNyt6TM88blFHao/6tWWhuuOM4SAK4EI4QmFHA+SEyWlp4EQoJ13cYGzMu7yszEIBOm2rVmHUNqwAIQabISNMRstmdhNWcFLsSm+0tjJH1MdRxO5Nx0WDMhCtgD6OKgZeljJqJKc9po8juskR9XN0Y1lZ3mWjLR9JCO1jRDMd0fpYC2VnvjBSEFg7wBENc0R9HFlb0xvF1+TBEpF68d+DHR6IOWVv2BECtxo46hOFUBd/APU57WIoEwJhIi2CdpyZX0m93BZicktMj1AS9dClteUFAUNUIEygRZCtik5zSxI9MubTBH1GOiHsiLJ3OCoSZkILa9PxiN0EbvhsAo8tdAf9Seepd36lGWHmtNANTv5Jd0z4QYyeo/UEJqxKRpg5LZx6btLPsOaEmdMyxYdlc8LMaJnikDlhclqmPiQnTEpLUIZEwkRagjYkEibQErwhkTAKCLQEbUgkzJQWc/0PstHHcfEdQ+UAAAAASUVORK5CYII=);\r\n\tbackground-size: 26px 26px;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers-toggle {\r\n\twidth: 44px;\r\n\theight: 44px;\r\n\t}\r\n.leaflet-control-layers .leaflet-control-layers-list,\r\n.leaflet-control-layers-expanded .leaflet-control-layers-toggle {\r\n\tdisplay: none;\r\n\t}\r\n.leaflet-control-layers-expanded .leaflet-control-layers-list {\r\n\tdisplay: block;\r\n\tposition: relative;\r\n\t}\r\n.leaflet-control-layers-expanded {\r\n\tpadding: 6px 10px 6px 6px;\r\n\tcolor: #333;\r\n\tbackground: #fff;\r\n\t}\r\n.leaflet-control-layers-scrollbar {\r\n\toverflow-y: scroll;\r\n\toverflow-x: hidden;\r\n\tpadding-right: 5px;\r\n\t}\r\n.leaflet-control-layers-selector {\r\n\tmargin-top: 2px;\r\n\tposition: relative;\r\n\ttop: 1px;\r\n\t}\r\n.leaflet-control-layers label {\r\n\tdisplay: block;\r\n\t}\r\n.leaflet-control-layers-separator {\r\n\theight: 0;\r\n\tborder-top: 1px solid #ddd;\r\n\tmargin: 5px -10px 5px -6px;\r\n\t}\r\n\r\n/* Default icon URLs */\r\n.leaflet-default-icon-path {\r\n\tbackground-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAApCAYAAADAk4LOAAAFgUlEQVR4Aa1XA5BjWRTN2oW17d3YaZtr2962HUzbDNpjszW24mRt28p47v7zq/bXZtrp/lWnXr337j3nPCe85NcypgSFdugCpW5YoDAMRaIMqRi6aKq5E3YqDQO3qAwjVWrD8Ncq/RBpykd8oZUb/kaJutow8r1aP9II0WmLKLIsJyv1w/kqw9Ch2MYdB++12Onxee/QMwvf4/Dk/Lfp/i4nxTXtOoQ4pW5Aj7wpici1A9erdAN2OH64x8OSP9j3Ft3b7aWkTg/Fm91siTra0f9on5sQr9INejH6CUUUpavjFNq1B+Oadhxmnfa8RfEmN8VNAsQhPqF55xHkMzz3jSmChWU6f7/XZKNH+9+hBLOHYozuKQPxyMPUKkrX/K0uWnfFaJGS1QPRtZsOPtr3NsW0uyh6NNCOkU3Yz+bXbT3I8G3xE5EXLXtCXbbqwCO9zPQYPRTZ5vIDXD7U+w7rFDEoUUf7ibHIR4y6bLVPXrz8JVZEql13trxwue/uDivd3fkWRbS6/IA2bID4uk0UpF1N8qLlbBlXs4Ee7HLTfV1j54APvODnSfOWBqtKVvjgLKzF5YdEk5ewRkGlK0i33Eofffc7HT56jD7/6U+qH3Cx7SBLNntH5YIPvODnyfIXZYRVDPqgHtLs5ABHD3YzLuespb7t79FY34DjMwrVrcTuwlT55YMPvOBnRrJ4VXTdNnYug5ucHLBjEpt30701A3Ts+HEa73u6dT3FNWwflY86eMHPk+Yu+i6pzUpRrW7SNDg5JHR4KapmM5Wv2E8Tfcb1HoqqHMHU+uWDD7zg54mz5/2BSnizi9T1Dg4QQXLToGNCkb6tb1NU+QAlGr1++eADrzhn/u8Q2YZhQVlZ5+CAOtqfbhmaUCS1ezNFVm2imDbPmPng5wmz+gwh+oHDce0eUtQ6OGDIyR0uUhUsoO3vfDmmgOezH0mZN59x7MBi++WDL1g/eEiU3avlidO671bkLfwbw5XV2P8Pzo0ydy4t2/0eu33xYSOMOD8hTf4CrBtGMSoXfPLchX+J0ruSePw3LZeK0juPJbYzrhkH0io7B3k164hiGvawhOKMLkrQLyVpZg8rHFW7E2uHOL888IBPlNZ1FPzstSJM694fWr6RwpvcJK60+0HCILTBzZLFNdtAzJaohze60T8qBzyh5ZuOg5e7uwQppofEmf2++DYvmySqGBuKaicF1blQjhuHdvCIMvp8whTTfZzI7RldpwtSzL+F1+wkdZ2TBOW2gIF88PBTzD/gpeREAMEbxnJcaJHNHrpzji0gQCS6hdkEeYt9DF/2qPcEC8RM28Hwmr3sdNyht00byAut2k3gufWNtgtOEOFGUwcXWNDbdNbpgBGxEvKkOQsxivJx33iow0Vw5S6SVTrpVq11ysA2Rp7gTfPfktc6zhtXBBC+adRLshf6sG2RfHPZ5EAc4sVZ83yCN00Fk/4kggu40ZTvIEm5g24qtU4KjBrx/BTTH8ifVASAG7gKrnWxJDcU7x8X6Ecczhm3o6YicvsLXWfh3Ch1W0k8x0nXF+0fFxgt4phz8QvypiwCCFKMqXCnqXExjq10beH+UUA7+nG6mdG/Pu0f3LgFcGrl2s0kNNjpmoJ9o4B29CMO8dMT4Q5ox8uitF6fqsrJOr8qnwNbRzv6hSnG5wP+64C7h9lp30hKNtKdWjtdkbuPA19nJ7Tz3zR/ibgARbhb4AlhavcBebmTHcFl2fvYEnW0ox9xMxKBS8btJ+KiEbq9zA4RthQXDhPa0T9TEe69gWupwc6uBUphquXgf+/FrIjweHQS4/pduMe5ERUMHUd9xv8ZR98CxkS4F2n3EUrUZ10EYNw7BWm9x1GiPssi3GgiGRDKWRYZfXlON+dfNbM+GgIwYdwAAAAASUVORK5CYII=);\r\n\t}\r\n\r\n\r\n/* attribution and scale controls */\r\n\r\n.leaflet-container .leaflet-control-attribution {\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.7);\r\n\tmargin: 0;\r\n\t}\r\n.leaflet-control-attribution,\r\n.leaflet-control-scale-line {\r\n\tpadding: 0 5px;\r\n\tcolor: #333;\r\n\t}\r\n.leaflet-control-attribution a {\r\n\ttext-decoration: none;\r\n\t}\r\n.leaflet-control-attribution a:hover {\r\n\ttext-decoration: underline;\r\n\t}\r\n.leaflet-container .leaflet-control-attribution,\r\n.leaflet-container .leaflet-control-scale {\r\n\tfont-size: 11px;\r\n\t}\r\n.leaflet-left .leaflet-control-scale {\r\n\tmargin-left: 5px;\r\n\t}\r\n.leaflet-bottom .leaflet-control-scale {\r\n\tmargin-bottom: 5px;\r\n\t}\r\n.leaflet-control-scale-line {\r\n\tborder: 2px solid #777;\r\n\tborder-top: none;\r\n\tline-height: 1.1;\r\n\tpadding: 2px 5px 1px;\r\n\tfont-size: 11px;\r\n\twhite-space: nowrap;\r\n\toverflow: hidden;\r\n\t-moz-box-sizing: border-box;\r\n\t box-sizing: border-box;\r\n\r\n\tbackground: #fff;\r\n\tbackground: rgba(255, 255, 255, 0.5);\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child) {\r\n\tborder-top: 2px solid #777;\r\n\tborder-bottom: none;\r\n\tmargin-top: -2px;\r\n\t}\r\n.leaflet-control-scale-line:not(:first-child):not(:last-child) {\r\n\tborder-bottom: 2px solid #777;\r\n\t}\r\n\r\n.leaflet-touch .leaflet-control-attribution,\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tbox-shadow: none;\r\n\t}\r\n.leaflet-touch .leaflet-control-layers,\r\n.leaflet-touch .leaflet-bar {\r\n\tborder: 2px solid rgba(0,0,0,0.2);\r\n\tbackground-clip: padding-box;\r\n\t}\r\n\r\n\r\n/* popup */\r\n\r\n.leaflet-popup {\r\n\tposition: absolute;\r\n\ttext-align: center;\r\n\tmargin-bottom: 20px;\r\n\t}\r\n.leaflet-popup-content-wrapper {\r\n\tpadding: 1px;\r\n\ttext-align: left;\r\n\tborder-radius: 12px;\r\n\t}\r\n.leaflet-popup-content {\r\n\tmargin: 13px 19px;\r\n\tline-height: 1.4;\r\n\t}\r\n.leaflet-popup-content p {\r\n\tmargin: 18px 0;\r\n\t}\r\n.leaflet-popup-tip-container {\r\n\twidth: 40px;\r\n\theight: 20px;\r\n\tposition: absolute;\r\n\tleft: 50%;\r\n\tmargin-left: -20px;\r\n\toverflow: hidden;\r\n\tpointer-events: none;\r\n\t}\r\n.leaflet-popup-tip {\r\n\twidth: 17px;\r\n\theight: 17px;\r\n\tpadding: 1px;\r\n\r\n\tmargin: -10px auto 0;\r\n\r\n\t-webkit-transform: rotate(45deg);\r\n\t -moz-transform: rotate(45deg);\r\n\t -ms-transform: rotate(45deg);\r\n\t transform: rotate(45deg);\r\n\t}\r\n.leaflet-popup-content-wrapper,\r\n.leaflet-popup-tip {\r\n\tbackground: white;\r\n\tcolor: #333;\r\n\tbox-shadow: 0 3px 14px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button {\r\n\tposition: absolute;\r\n\ttop: 0;\r\n\tright: 0;\r\n\tpadding: 4px 4px 0 0;\r\n\tborder: none;\r\n\ttext-align: center;\r\n\twidth: 18px;\r\n\theight: 14px;\r\n\tfont: 16px/14px Tahoma, Verdana, sans-serif;\r\n\tcolor: #c3c3c3;\r\n\ttext-decoration: none;\r\n\tfont-weight: bold;\r\n\tbackground: transparent;\r\n\t}\r\n.leaflet-container a.leaflet-popup-close-button:hover {\r\n\tcolor: #999;\r\n\t}\r\n.leaflet-popup-scrolled {\r\n\toverflow: auto;\r\n\tborder-bottom: 1px solid #ddd;\r\n\tborder-top: 1px solid #ddd;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-popup-content-wrapper {\r\n\t-ms-zoom: 1;\r\n\t}\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\twidth: 24px;\r\n\tmargin: 0 auto;\r\n\r\n\t-ms-filter: \"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)\";\r\n\tfilter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);\r\n\t}\r\n.leaflet-oldie .leaflet-popup-tip-container {\r\n\tmargin-top: -1px;\r\n\t}\r\n\r\n.leaflet-oldie .leaflet-control-zoom,\r\n.leaflet-oldie .leaflet-control-layers,\r\n.leaflet-oldie .leaflet-popup-content-wrapper,\r\n.leaflet-oldie .leaflet-popup-tip {\r\n\tborder: 1px solid #999;\r\n\t}\r\n\r\n\r\n/* div icon */\r\n\r\n.leaflet-div-icon {\r\n\tbackground: #fff;\r\n\tborder: 1px solid #666;\r\n\t}\r\n\r\n\r\n/* Tooltip */\r\n/* Base styles for the element that has a tooltip */\r\n.leaflet-tooltip {\r\n\tposition: absolute;\r\n\tpadding: 6px;\r\n\tbackground-color: #fff;\r\n\tborder: 1px solid #fff;\r\n\tborder-radius: 3px;\r\n\tcolor: #222;\r\n\twhite-space: nowrap;\r\n\t-webkit-user-select: none;\r\n\t-moz-user-select: none;\r\n\t-ms-user-select: none;\r\n\tuser-select: none;\r\n\tpointer-events: none;\r\n\tbox-shadow: 0 1px 3px rgba(0,0,0,0.4);\r\n\t}\r\n.leaflet-tooltip.leaflet-clickable {\r\n\tcursor: pointer;\r\n\tpointer-events: auto;\r\n\t}\r\n.leaflet-tooltip-top:before,\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\tposition: absolute;\r\n\tpointer-events: none;\r\n\tborder: 6px solid transparent;\r\n\tbackground: transparent;\r\n\tcontent: \"\";\r\n\t}\r\n\r\n/* Directions */\r\n\r\n.leaflet-tooltip-bottom {\r\n\tmargin-top: 6px;\r\n}\r\n.leaflet-tooltip-top {\r\n\tmargin-top: -6px;\r\n}\r\n.leaflet-tooltip-bottom:before,\r\n.leaflet-tooltip-top:before {\r\n\tleft: 50%;\r\n\tmargin-left: -6px;\r\n\t}\r\n.leaflet-tooltip-top:before {\r\n\tbottom: 0;\r\n\tmargin-bottom: -12px;\r\n\tborder-top-color: #fff;\r\n\t}\r\n.leaflet-tooltip-bottom:before {\r\n\ttop: 0;\r\n\tmargin-top: -12px;\r\n\tmargin-left: -6px;\r\n\tborder-bottom-color: #fff;\r\n\t}\r\n.leaflet-tooltip-left {\r\n\tmargin-left: -6px;\r\n}\r\n.leaflet-tooltip-right {\r\n\tmargin-left: 6px;\r\n}\r\n.leaflet-tooltip-left:before,\r\n.leaflet-tooltip-right:before {\r\n\ttop: 50%;\r\n\tmargin-top: -6px;\r\n\t}\r\n.leaflet-tooltip-left:before {\r\n\tright: 0;\r\n\tmargin-right: -12px;\r\n\tborder-left-color: #fff;\r\n\t}\r\n.leaflet-tooltip-right:before {\r\n\tleft: 0;\r\n\tmargin-left: -12px;\r\n\tborder-right-color: #fff;\r\n\t}\r\n"; +styleInject(css_248z$3); + +var css_248z$2 = "/* global styling */\n.leaflet-control-geosearch *,\n.leaflet-control-geosearch *:before,\n.leaflet-control-geosearch *:after {\n box-sizing: border-box;\n}\n\n/* leaflet button styling */\n.leaflet-control-geosearch .leaflet-bar-part {\n border-radius: 4px;\n border-bottom: none;\n}\n\n.leaflet-control-geosearch a.leaflet-bar-part:before,\n.leaflet-control-geosearch a.leaflet-bar-part:after {\n position: absolute;\n display: block;\n content: '';\n}\n\n/* magnifying glass */\n.leaflet-control-geosearch a.leaflet-bar-part:before {\n top: 15px;\n left: 13px;\n width: 6px;\n border-top: 2px solid #555;\n transform: rotateZ(45deg);\n}\n\n.leaflet-control-geosearch a.leaflet-bar-part:after {\n top: 8px;\n left: 8px;\n height: 8px;\n width: 8px;\n border-radius: 50%;\n border: 2px solid #555;\n}\n\n/* resets for pending and error icons */\n.leaflet-control-geosearch.error a.leaflet-bar-part:before,\n.leaflet-control-geosearch.pending a.leaflet-bar-part:before {\n display: none;\n}\n\n.leaflet-control-geosearch.pending a.leaflet-bar-part:after,\n.leaflet-control-geosearch.error a.leaflet-bar-part:after {\n left: 50%;\n top: 50%;\n width: 18px;\n height: 18px;\n margin: -9px 0 0 -9px;\n border-radius: 50%;\n}\n\n/* pending icon */\n.leaflet-control-geosearch.pending a.leaflet-bar-part:after {\n content: '';\n border: 2px solid #555;\n border-top: 2px solid #f3f3f3;\n animation: spin 1s linear infinite;\n}\n\n/* error icon */\n.leaflet-control-geosearch.error a.leaflet-bar-part:after {\n content: '!';\n line-height: initial;\n font-weight: 600;\n font-size: 18px;\n border: none;\n}\n\n/* search form styling */\n.leaflet-control-geosearch form {\n display: none;\n position: absolute;\n top: 0;\n left: 36px;\n border-radius: 0 4px 4px 0;\n background-color: #fff;\n background-clip: padding-box;\n z-index: -1;\n height: auto;\n margin: 0;\n padding: 0 8px;\n box-shadow: 0 1px 5px rgba(0, 0, 0, 0.65);\n}\n\n.leaflet-geosearch-button form.open {\n border-radius: 0 4px 4px 4px;\n}\n.leaflet-control-geosearch.active form {\n display: block;\n}\n\n.leaflet-geosearch-button.active .leaflet-bar-part {\n border-radius: 4px 0 0 4px;\n width: 36px;\n}\n\n.leaflet-geosearch-button form {\n max-width: 350px;\n}\n\n.leaflet-control-geosearch form input {\n min-width: 200px;\n width: 100%;\n outline: none;\n border: none;\n margin: 0;\n padding: 0;\n font-size: 12px;\n height: 26px;\n border: none;\n border-radius: 0 4px 4px 0;\n text-indent: 8px;\n}\n\n.leaflet-touch .leaflet-geosearch-bar form {\n border: 2px solid rgba(0,0,0,0.2);\n box-shadow: none;\n}\n\n.leaflet-touch .leaflet-geosearch-bar form input {\n height: 30px;\n}\n\n.leaflet-control-geosearch .results {\n background: #fff;\n}\n\n.leaflet-control-geosearch .results > * {\n line-height: 24px;\n padding: 0 8px;\n border: 1px solid transparent;\n\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.leaflet-control-geosearch .results.active {\n padding: 8px 0;\n border-top: 1px solid #c6c6c6;\n}\n\n.leaflet-control-geosearch .results > .active,\n.leaflet-control-geosearch .results > :hover {\n background-color: #f8f8f8;\n border-color: #c6c6c6;\n cursor: pointer;\n}\n\n/* add missing border to form */\n.leaflet-control-geosearch .results.active:after {\n content: '';\n display: block;\n width: 0;\n position: absolute;\n left: -2px;\n bottom: -2px;\n top: 30px;\n}\n\n.leaflet-touch .leaflet-control-geosearch .results.active:after {\n border-left: 2px solid rgba(0, 0, 0, .2);\n}\n\n/* animations */\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n.leaflet-top .leaflet-geosearch-bar,\n.leaflet-bottom .leaflet-geosearch-bar {\n display: none;\n}\n\n.leaflet-geosearch-bar {\n position: relative;\n display: block;\n height: auto;\n width: 400px;\n max-width: calc(100% - 120px);\n margin: 10px auto 0;\n cursor: auto;\n z-index: 1000;\n}\n\n.leaflet-geosearch-bar form {\n position: relative;\n top: 0;\n left: 0;\n display: block;\n border-radius: 4px;\n}\n\n.leaflet-geosearch-bar form input {\n min-width: 100%;\n width: 100%;\n}\n\n.leaflet-geosearch-bar .results.active:after {\n opacity: .2;\n}\n\n.leaflet-right .leaflet-control-geosearch form {\n right: 28px;\n left: initial;\n border-radius: 4px 0 0 4px;\n border-left: inherit;\n border-right: none;\n}\n\n.leaflet-bar-notfound {\n font-style: italic;\n}\n\n.leaflet-control-geosearch a.reset {\n color: black;\n font-weight: bold;\n position: absolute;\n line-height: 26px;\n padding: 0 8px;\n right: 0;\n top: 0;\n cursor: pointer;\n border: none;\n text-decoration: none;\n background-color: #fff;\n border-radius: 0 4px 4px 0;\n}\n\n.leaflet-touch .leaflet-control-geosearch a.reset {\n line-height: 30px;\n}\n\n.leaflet-control-geosearch a.reset:hover {\n background: #f5f5f5;\n}\n"; +styleInject(css_248z$2); + +var css_248z$1 = ".leaflet-cluster-anim .leaflet-marker-icon, .leaflet-cluster-anim .leaflet-marker-shadow {\n\t-webkit-transition: -webkit-transform 0.3s ease-out, opacity 0.3s ease-in;\n\t-moz-transition: -moz-transform 0.3s ease-out, opacity 0.3s ease-in;\n\t-o-transition: -o-transform 0.3s ease-out, opacity 0.3s ease-in;\n\ttransition: transform 0.3s ease-out, opacity 0.3s ease-in;\n}\n\n.leaflet-cluster-spider-leg {\n\t/* stroke-dashoffset (duration and function) should match with leaflet-marker-icon transform in order to track it exactly */\n\t-webkit-transition: -webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;\n\t-moz-transition: -moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;\n\t-o-transition: -o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;\n\ttransition: stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in;\n}\n"; +styleInject(css_248z$1); + +var css_248z = ".marker-cluster-small {\n\tbackground-color: rgba(181, 226, 140, 0.6);\n\t}\n.marker-cluster-small div {\n\tbackground-color: rgba(110, 204, 57, 0.6);\n\t}\n\n.marker-cluster-medium {\n\tbackground-color: rgba(241, 211, 87, 0.6);\n\t}\n.marker-cluster-medium div {\n\tbackground-color: rgba(240, 194, 12, 0.6);\n\t}\n\n.marker-cluster-large {\n\tbackground-color: rgba(253, 156, 115, 0.6);\n\t}\n.marker-cluster-large div {\n\tbackground-color: rgba(241, 128, 23, 0.6);\n\t}\n\n\t/* IE 6-8 fallback colors */\n.leaflet-oldie .marker-cluster-small {\n\tbackground-color: rgb(181, 226, 140);\n\t}\n.leaflet-oldie .marker-cluster-small div {\n\tbackground-color: rgb(110, 204, 57);\n\t}\n\n.leaflet-oldie .marker-cluster-medium {\n\tbackground-color: rgb(241, 211, 87);\n\t}\n.leaflet-oldie .marker-cluster-medium div {\n\tbackground-color: rgb(240, 194, 12);\n\t}\n\n.leaflet-oldie .marker-cluster-large {\n\tbackground-color: rgb(253, 156, 115);\n\t}\n.leaflet-oldie .marker-cluster-large div {\n\tbackground-color: rgb(241, 128, 23);\n}\n\n.marker-cluster {\n\tbackground-clip: padding-box;\n\tborder-radius: 20px;\n\t}\n.marker-cluster div {\n\twidth: 30px;\n\theight: 30px;\n\tmargin-left: 5px;\n\tmargin-top: 5px;\n\n\ttext-align: center;\n\tborder-radius: 15px;\n\tfont: 12px \"Helvetica Neue\", Arial, Helvetica, sans-serif;\n\t}\n.marker-cluster span {\n\tline-height: 30px;\n\t}"; +styleInject(css_248z); + +/* + * Leaflet.markercluster 1.5.3+master.e5124b2, + * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps. + * https://github.com/Leaflet/Leaflet.markercluster + * (c) 2012-2017, Dave Leaver, smartrak + */ + +createCommonjsModule(function (module, exports) { +(function (global, factory) { + factory(exports) ; +}(commonjsGlobal, function (exports) { + /* + * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within + */ + + var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({ + + options: { + maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center + iconCreateFunction: null, + clusterPane: L.Marker.prototype.options.pane, + + spiderfyOnEveryZoom: false, + spiderfyOnMaxZoom: true, + showCoverageOnHover: true, + zoomToBoundsOnClick: true, + singleMarkerMode: false, + + disableClusteringAtZoom: null, + + // Setting this to false prevents the removal of any clusters outside of the viewpoint, which + // is the default behaviour for performance reasons. + removeOutsideVisibleBounds: true, + + // Set to false to disable all animations (zoom and spiderfy). + // If false, option animateAddingMarkers below has no effect. + // If L.DomUtil.TRANSITION is falsy, this option has no effect. + animate: true, + + //Whether to animate adding markers after adding the MarkerClusterGroup to the map + // If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains. + animateAddingMarkers: false, + + // Make it possible to provide custom function to calculate spiderfy shape positions + spiderfyShapePositions: null, + + //Increase to increase the distance away that spiderfied markers appear from the center + spiderfyDistanceMultiplier: 1, + + // Make it possible to specify a polyline options on a spider leg + spiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 }, + + // When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts + chunkedLoading: false, + chunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback) + chunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser + chunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator) + + //Options to pass to the L.Polygon constructor + polygonOptions: {} + }, + + initialize: function (options) { + L.Util.setOptions(this, options); + if (!this.options.iconCreateFunction) { + this.options.iconCreateFunction = this._defaultIconCreateFunction; + } + + this._featureGroup = L.featureGroup(); + this._featureGroup.addEventParent(this); + + this._nonPointGroup = L.featureGroup(); + this._nonPointGroup.addEventParent(this); + + this._inZoomAnimation = 0; + this._needsClustering = []; + this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of + //The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move + this._currentShownBounds = null; + + this._queue = []; + + this._childMarkerEventHandlers = { + 'dragstart': this._childMarkerDragStart, + 'move': this._childMarkerMoved, + 'dragend': this._childMarkerDragEnd, + }; + + // Hook the appropriate animation methods. + var animate = L.DomUtil.TRANSITION && this.options.animate; + L.extend(this, animate ? this._withAnimation : this._noAnimation); + // Remember which MarkerCluster class to instantiate (animated or not). + this._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated; + }, + + addLayer: function (layer) { + + if (layer instanceof L.LayerGroup) { + return this.addLayers([layer]); + } + + //Don't cluster non point data + if (!layer.getLatLng) { + this._nonPointGroup.addLayer(layer); + this.fire('layeradd', { layer: layer }); + return this; + } + + if (!this._map) { + this._needsClustering.push(layer); + this.fire('layeradd', { layer: layer }); + return this; + } + + if (this.hasLayer(layer)) { + return this; + } + + + //If we have already clustered we'll need to add this one to a cluster + + if (this._unspiderfy) { + this._unspiderfy(); + } + + this._addLayer(layer, this._maxZoom); + this.fire('layeradd', { layer: layer }); + + // Refresh bounds and weighted positions. + this._topClusterLevel._recalculateBounds(); + + this._refreshClustersIcons(); + + //Work out what is visible + var visibleLayer = layer, + currentZoom = this._zoom; + if (layer.__parent) { + while (visibleLayer.__parent._zoom >= currentZoom) { + visibleLayer = visibleLayer.__parent; + } + } + + if (this._currentShownBounds.contains(visibleLayer.getLatLng())) { + if (this.options.animateAddingMarkers) { + this._animationAddLayer(layer, visibleLayer); + } else { + this._animationAddLayerNonAnimated(layer, visibleLayer); + } + } + return this; + }, + + removeLayer: function (layer) { + + if (layer instanceof L.LayerGroup) { + return this.removeLayers([layer]); + } + + //Non point layers + if (!layer.getLatLng) { + this._nonPointGroup.removeLayer(layer); + this.fire('layerremove', { layer: layer }); + return this; + } + + if (!this._map) { + if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) { + this._needsRemoving.push({ layer: layer, latlng: layer._latlng }); + } + this.fire('layerremove', { layer: layer }); + return this; + } + + if (!layer.__parent) { + return this; + } + + if (this._unspiderfy) { + this._unspiderfy(); + this._unspiderfyLayer(layer); + } + + //Remove the marker from clusters + this._removeLayer(layer, true); + this.fire('layerremove', { layer: layer }); + + // Refresh bounds and weighted positions. + this._topClusterLevel._recalculateBounds(); + + this._refreshClustersIcons(); + + layer.off(this._childMarkerEventHandlers, this); + + if (this._featureGroup.hasLayer(layer)) { + this._featureGroup.removeLayer(layer); + if (layer.clusterShow) { + layer.clusterShow(); + } + } + + return this; + }, + + //Takes an array of markers and adds them in bulk + addLayers: function (layersArray, skipLayerAddEvent) { + if (!L.Util.isArray(layersArray)) { + return this.addLayer(layersArray); + } + + var fg = this._featureGroup, + npg = this._nonPointGroup, + chunked = this.options.chunkedLoading, + chunkInterval = this.options.chunkInterval, + chunkProgress = this.options.chunkProgress, + l = layersArray.length, + offset = 0, + originalArray = true, + m; + + if (this._map) { + var started = (new Date()).getTime(); + var process = L.bind(function () { + var start = (new Date()).getTime(); + + // Make sure to unspiderfy before starting to add some layers + if (this._map && this._unspiderfy) { + this._unspiderfy(); + } + + for (; offset < l; offset++) { + if (chunked && offset % 200 === 0) { + // every couple hundred markers, instrument the time elapsed since processing started: + var elapsed = (new Date()).getTime() - start; + if (elapsed > chunkInterval) { + break; // been working too hard, time to take a break :-) + } + } + + m = layersArray[offset]; + + // Group of layers, append children to layersArray and skip. + // Side effects: + // - Total increases, so chunkProgress ratio jumps backward. + // - Groups are not included in this group, only their non-group child layers (hasLayer). + // Changing array length while looping does not affect performance in current browsers: + // http://jsperf.com/for-loop-changing-length/6 + if (m instanceof L.LayerGroup) { + if (originalArray) { + layersArray = layersArray.slice(); + originalArray = false; } this._extractNonGroupLayers(m, layersArray); l = layersArray.length; @@ -17084,1340 +20541,810 @@ createCommonjsModule(function (module, exports) { m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING } - fg.addLayer(m); - } - this.setOpacity(0.3); - - group._ignoreMove = false; - group.fire('spiderfied', { - cluster: this, - markers: childMarkers - }); - }, - - _animationUnspiderfy: function () { - this._noanimationUnspiderfy(); - } - }); - - //Animated versions here - L.MarkerCluster.include({ - - _animationSpiderfy: function (childMarkers, positions) { - var me = this, - group = this._group, - map = group._map, - fg = group._featureGroup, - thisLayerLatLng = this._latlng, - thisLayerPos = map.latLngToLayerPoint(thisLayerLatLng), - svg = L.Path.SVG, - legOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation. - finalLegOpacity = legOptions.opacity, - i, m, leg, legPath, legLength, newPos; - - if (finalLegOpacity === undefined) { - finalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity; - } - - if (svg) { - // If the initial opacity of the spider leg is not 0 then it appears before the animation starts. - legOptions.opacity = 0; - - // Add the class for CSS transitions. - legOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg'; - } else { - // Make sure we have a defined opacity. - legOptions.opacity = finalLegOpacity; - } - - group._ignoreMove = true; - - // Add markers and spider legs to map, hidden at our center point. - // Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition. - // The reverse order trick no longer improves performance on modern browsers. - for (i = 0; i < childMarkers.length; i++) { - m = childMarkers[i]; - - newPos = map.layerPointToLatLng(positions[i]); - - // Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it. - leg = new L.Polyline([thisLayerLatLng, newPos], legOptions); - map.addLayer(leg); - m._spiderLeg = leg; - - // Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/ - // In our case the transition property is declared in the CSS file. - if (svg) { - legPath = leg._path; - legLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox. - legPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated. - legPath.style.strokeDashoffset = legLength; - } - - // If it is a marker, add it now and we'll animate it out - if (m.setZIndexOffset) { - m.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING - } - if (m.clusterHide) { - m.clusterHide(); - } - - // Vectors just get immediately added - fg.addLayer(m); - - if (m._setPos) { - m._setPos(thisLayerPos); - } - } - - group._forceLayout(); - group._animationStart(); - - // Reveal markers and spider legs. - for (i = childMarkers.length - 1; i >= 0; i--) { - newPos = map.layerPointToLatLng(positions[i]); - m = childMarkers[i]; - - //Move marker to new position - m._preSpiderfyLatlng = m._latlng; - m.setLatLng(newPos); - - if (m.clusterShow) { - m.clusterShow(); - } - - // Animate leg (animation is actually delegated to CSS transition). - if (svg) { - leg = m._spiderLeg; - legPath = leg._path; - legPath.style.strokeDashoffset = 0; - //legPath.style.strokeOpacity = finalLegOpacity; - leg.setStyle({opacity: finalLegOpacity}); - } - } - this.setOpacity(0.3); - - group._ignoreMove = false; - - setTimeout(function () { - group._animationEnd(); - group.fire('spiderfied', { - cluster: me, - markers: childMarkers - }); - }, 200); - }, - - _animationUnspiderfy: function (zoomDetails) { - var me = this, - group = this._group, - map = group._map, - fg = group._featureGroup, - thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng), - childMarkers = this.getAllChildMarkers(null, true), - svg = L.Path.SVG, - m, i, leg, legPath, legLength, nonAnimatable; - - group._ignoreMove = true; - group._animationStart(); - - //Make us visible and bring the child markers back in - this.setOpacity(1); - for (i = childMarkers.length - 1; i >= 0; i--) { - m = childMarkers[i]; - - //Marker was added to us after we were spiderfied - if (!m._preSpiderfyLatlng) { - continue; - } - - //Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll - m.closePopup(); - - //Fix up the location to the real one - m.setLatLng(m._preSpiderfyLatlng); - delete m._preSpiderfyLatlng; - - //Hack override the location to be our center - nonAnimatable = true; - if (m._setPos) { - m._setPos(thisLayerPos); - nonAnimatable = false; - } - if (m.clusterHide) { - m.clusterHide(); - nonAnimatable = false; - } - if (nonAnimatable) { - fg.removeLayer(m); - } - - // Animate the spider leg back in (animation is actually delegated to CSS transition). - if (svg) { - leg = m._spiderLeg; - legPath = leg._path; - legLength = legPath.getTotalLength() + 0.1; - legPath.style.strokeDashoffset = legLength; - leg.setStyle({opacity: 0}); - } - } - - group._ignoreMove = false; - - setTimeout(function () { - //If we have only <= one child left then that marker will be shown on the map so don't remove it! - var stillThereChildCount = 0; - for (i = childMarkers.length - 1; i >= 0; i--) { - m = childMarkers[i]; - if (m._spiderLeg) { - stillThereChildCount++; - } - } - - - for (i = childMarkers.length - 1; i >= 0; i--) { - m = childMarkers[i]; - - if (!m._spiderLeg) { //Has already been unspiderfied - continue; - } - - if (m.clusterShow) { - m.clusterShow(); - } - if (m.setZIndexOffset) { - m.setZIndexOffset(0); - } - - if (stillThereChildCount > 1) { - fg.removeLayer(m); - } - - map.removeLayer(m._spiderLeg); - delete m._spiderLeg; - } - group._animationEnd(); - group.fire('unspiderfied', { - cluster: me, - markers: childMarkers - }); - }, 200); - } - }); - - - L.MarkerClusterGroup.include({ - //The MarkerCluster currently spiderfied (if any) - _spiderfied: null, - - unspiderfy: function () { - this._unspiderfy.apply(this, arguments); - }, - - _spiderfierOnAdd: function () { - this._map.on('click', this._unspiderfyWrapper, this); - - if (this._map.options.zoomAnimation) { - this._map.on('zoomstart', this._unspiderfyZoomStart, this); + fg.addLayer(m); } - //Browsers without zoomAnimation or a big zoom don't fire zoomstart - this._map.on('zoomend', this._noanimationUnspiderfy, this); + this.setOpacity(0.3); - if (!L.Browser.touch) { - this._map.getRenderer(this); - //Needs to happen in the pageload, not after, or animations don't work in webkit - // http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements - //Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable - } + group._ignoreMove = false; + group.fire('spiderfied', { + cluster: this, + markers: childMarkers + }); }, - _spiderfierOnRemove: function () { - this._map.off('click', this._unspiderfyWrapper, this); - this._map.off('zoomstart', this._unspiderfyZoomStart, this); - this._map.off('zoomanim', this._unspiderfyZoomAnim, this); - this._map.off('zoomend', this._noanimationUnspiderfy, this); - - //Ensure that markers are back where they should be - // Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane + _animationUnspiderfy: function () { this._noanimationUnspiderfy(); - }, + } + }); - //On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated) - //This means we can define the animation they do rather than Markers doing an animation to their actual location - _unspiderfyZoomStart: function () { - if (!this._map) { //May have been removed from the map by a zoomEnd handler - return; + //Animated versions here + L.MarkerCluster.include({ + + _animationSpiderfy: function (childMarkers, positions) { + var me = this, + group = this._group, + map = group._map, + fg = group._featureGroup, + thisLayerLatLng = this._latlng, + thisLayerPos = map.latLngToLayerPoint(thisLayerLatLng), + svg = L.Path.SVG, + legOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation. + finalLegOpacity = legOptions.opacity, + i, m, leg, legPath, legLength, newPos; + + if (finalLegOpacity === undefined) { + finalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity; } - this._map.on('zoomanim', this._unspiderfyZoomAnim, this); - }, + if (svg) { + // If the initial opacity of the spider leg is not 0 then it appears before the animation starts. + legOptions.opacity = 0; - _unspiderfyZoomAnim: function (zoomDetails) { - //Wait until the first zoomanim after the user has finished touch-zooming before running the animation - if (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) { - return; + // Add the class for CSS transitions. + legOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg'; + } else { + // Make sure we have a defined opacity. + legOptions.opacity = finalLegOpacity; } - this._map.off('zoomanim', this._unspiderfyZoomAnim, this); - this._unspiderfy(zoomDetails); - }, + group._ignoreMove = true; - _unspiderfyWrapper: function () { - /// _unspiderfy but passes no arguments - this._unspiderfy(); - }, + // Add markers and spider legs to map, hidden at our center point. + // Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition. + // The reverse order trick no longer improves performance on modern browsers. + for (i = 0; i < childMarkers.length; i++) { + m = childMarkers[i]; - _unspiderfy: function (zoomDetails) { - if (this._spiderfied) { - this._spiderfied.unspiderfy(zoomDetails); - } - }, + newPos = map.layerPointToLatLng(positions[i]); - _noanimationUnspiderfy: function () { - if (this._spiderfied) { - this._spiderfied._noanimationUnspiderfy(); - } - }, + // Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it. + leg = new L.Polyline([thisLayerLatLng, newPos], legOptions); + map.addLayer(leg); + m._spiderLeg = leg; - //If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc - _unspiderfyLayer: function (layer) { - if (layer._spiderLeg) { - this._featureGroup.removeLayer(layer); + // Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/ + // In our case the transition property is declared in the CSS file. + if (svg) { + legPath = leg._path; + legLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox. + legPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated. + legPath.style.strokeDashoffset = legLength; + } - if (layer.clusterShow) { - layer.clusterShow(); + // If it is a marker, add it now and we'll animate it out + if (m.setZIndexOffset) { + m.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING } - //Position will be fixed up immediately in _animationUnspiderfy - if (layer.setZIndexOffset) { - layer.setZIndexOffset(0); + if (m.clusterHide) { + m.clusterHide(); } + + // Vectors just get immediately added + fg.addLayer(m); - this._map.removeLayer(layer._spiderLeg); - delete layer._spiderLeg; + if (m._setPos) { + m._setPos(thisLayerPos); + } } - } - }); - /** - * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing - * markers' icon options and refreshing their icon and their parent clusters - * accordingly (case where their iconCreateFunction uses data of childMarkers - * to make up the cluster icon). - */ + group._forceLayout(); + group._animationStart(); + // Reveal markers and spider legs. + for (i = childMarkers.length - 1; i >= 0; i--) { + newPos = map.layerPointToLatLng(positions[i]); + m = childMarkers[i]; - L.MarkerClusterGroup.include({ - /** - * Updates the icon of all clusters which are parents of the given marker(s). - * In singleMarkerMode, also updates the given marker(s) icon. - * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)| - * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent - * clusters need to be updated. If not provided, retrieves all child markers of this. - * @returns {L.MarkerClusterGroup} - */ - refreshClusters: function (layers) { - if (!layers) { - layers = this._topClusterLevel.getAllChildMarkers(); - } else if (layers instanceof L.MarkerClusterGroup) { - layers = layers._topClusterLevel.getAllChildMarkers(); - } else if (layers instanceof L.LayerGroup) { - layers = layers._layers; - } else if (layers instanceof L.MarkerCluster) { - layers = layers.getAllChildMarkers(); - } else if (layers instanceof L.Marker) { - layers = [layers]; - } // else: must be an Array(L.Marker)|Map(L.Marker) - this._flagParentsIconsNeedUpdate(layers); - this._refreshClustersIcons(); + //Move marker to new position + m._preSpiderfyLatlng = m._latlng; + m.setLatLng(newPos); + + if (m.clusterShow) { + m.clusterShow(); + } - // In case of singleMarkerMode, also re-draw the markers. - if (this.options.singleMarkerMode) { - this._refreshSingleMarkerModeMarkers(layers); + // Animate leg (animation is actually delegated to CSS transition). + if (svg) { + leg = m._spiderLeg; + legPath = leg._path; + legPath.style.strokeDashoffset = 0; + //legPath.style.strokeOpacity = finalLegOpacity; + leg.setStyle({opacity: finalLegOpacity}); + } } + this.setOpacity(0.3); - return this; - }, - - /** - * Simply flags all parent clusters of the given markers as having a "dirty" icon. - * @param layers Array(L.Marker)|Map(L.Marker) list of markers. - * @private - */ - _flagParentsIconsNeedUpdate: function (layers) { - var id, parent; + group._ignoreMove = false; - // Assumes layers is an Array or an Object whose prototype is non-enumerable. - for (id in layers) { - // Flag parent clusters' icon as "dirty", all the way up. - // Dumb process that flags multiple times upper parents, but still - // much more efficient than trying to be smart and make short lists, - // at least in the case of a hierarchy following a power law: - // http://jsperf.com/flag-nodes-in-power-hierarchy/2 - parent = layers[id].__parent; - while (parent) { - parent._iconNeedsUpdate = true; - parent = parent.__parent; - } - } + setTimeout(function () { + group._animationEnd(); + group.fire('spiderfied', { + cluster: me, + markers: childMarkers + }); + }, 200); }, - /** - * Re-draws the icon of the supplied markers. - * To be used in singleMarkerMode only. - * @param layers Array(L.Marker)|Map(L.Marker) list of markers. - * @private - */ - _refreshSingleMarkerModeMarkers: function (layers) { - var id, layer; - - for (id in layers) { - layer = layers[id]; + _animationUnspiderfy: function (zoomDetails) { + var me = this, + group = this._group, + map = group._map, + fg = group._featureGroup, + thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng), + childMarkers = this.getAllChildMarkers(null, true), + svg = L.Path.SVG, + m, i, leg, legPath, legLength, nonAnimatable; - // Make sure we do not override markers that do not belong to THIS group. - if (this.hasLayer(layer)) { - // Need to re-create the icon first, then re-draw the marker. - layer.setIcon(this._overrideMarkerIcon(layer)); - } - } - } - }); + group._ignoreMove = true; + group._animationStart(); - L.Marker.include({ - /** - * Updates the given options in the marker's icon and refreshes the marker. - * @param options map object of icon options. - * @param directlyRefreshClusters boolean (optional) true to trigger - * MCG.refreshClustersOf() right away with this single marker. - * @returns {L.Marker} - */ - refreshIconOptions: function (options, directlyRefreshClusters) { - var icon = this.options.icon; + //Make us visible and bring the child markers back in + this.setOpacity(1); + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; - L.setOptions(icon, options); + //Marker was added to us after we were spiderfied + if (!m._preSpiderfyLatlng) { + continue; + } - this.setIcon(icon); + //Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll + m.closePopup(); - // Shortcut to refresh the associated MCG clusters right away. - // To be used when refreshing a single marker. - // Otherwise, better use MCG.refreshClusters() once at the end with - // the list of modified markers. - if (directlyRefreshClusters && this.__parent) { - this.__parent._group.refreshClusters(this); - } + //Fix up the location to the real one + m.setLatLng(m._preSpiderfyLatlng); + delete m._preSpiderfyLatlng; - return this; - } - }); + //Hack override the location to be our center + nonAnimatable = true; + if (m._setPos) { + m._setPos(thisLayerPos); + nonAnimatable = false; + } + if (m.clusterHide) { + m.clusterHide(); + nonAnimatable = false; + } + if (nonAnimatable) { + fg.removeLayer(m); + } - exports.MarkerClusterGroup = MarkerClusterGroup; - exports.MarkerCluster = MarkerCluster; + // Animate the spider leg back in (animation is actually delegated to CSS transition). + if (svg) { + leg = m._spiderLeg; + legPath = leg._path; + legLength = legPath.getTotalLength() + 0.1; + legPath.style.strokeDashoffset = legLength; + leg.setStyle({opacity: 0}); + } + } - Object.defineProperty(exports, '__esModule', { value: true }); + group._ignoreMove = false; -})); + setTimeout(function () { + //If we have only <= one child left then that marker will be shown on the map so don't remove it! + var stillThereChildCount = 0; + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; + if (m._spiderLeg) { + stillThereChildCount++; + } + } -}); -L.Control.Fullscreen = L.Control.extend({ - options: { - position: 'topleft', - title: { - 'false': 'View Fullscreen', - 'true': 'Exit Fullscreen' - } - }, + for (i = childMarkers.length - 1; i >= 0; i--) { + m = childMarkers[i]; - onAdd: function (map) { - var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control'); + if (!m._spiderLeg) { //Has already been unspiderfied + continue; + } - this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container); - this.link.href = '#'; + if (m.clusterShow) { + m.clusterShow(); + } + if (m.setZIndexOffset) { + m.setZIndexOffset(0); + } - this._map = map; - this._map.on('fullscreenchange', this._toggleTitle, this); - this._toggleTitle(); + if (stillThereChildCount > 1) { + fg.removeLayer(m); + } - L.DomEvent.on(this.link, 'click', this._click, this); + map.removeLayer(m._spiderLeg); + delete m._spiderLeg; + } + group._animationEnd(); + group.fire('unspiderfied', { + cluster: me, + markers: childMarkers + }); + }, 200); + } + }); - return container; - }, - _click: function (e) { - L.DomEvent.stopPropagation(e); - L.DomEvent.preventDefault(e); - this._map.toggleFullscreen(this.options); - }, + L.MarkerClusterGroup.include({ + //The MarkerCluster currently spiderfied (if any) + _spiderfied: null, - _toggleTitle: function() { - this.link.title = this.options.title[this._map.isFullscreen()]; - } -}); + unspiderfy: function () { + this._unspiderfy.apply(this, arguments); + }, -L.Map.include({ - isFullscreen: function () { - return this._isFullscreen || false; - }, + _spiderfierOnAdd: function () { + this._map.on('click', this._unspiderfyWrapper, this); - toggleFullscreen: function (options) { - var container = this.getContainer(); - if (this.isFullscreen()) { - if (options && options.pseudoFullscreen) { - this._disablePseudoFullscreen(container); - } else if (document.exitFullscreen) { - document.exitFullscreen(); - } else if (document.mozCancelFullScreen) { - document.mozCancelFullScreen(); - } else if (document.webkitCancelFullScreen) { - document.webkitCancelFullScreen(); - } else if (document.msExitFullscreen) { - document.msExitFullscreen(); - } else { - this._disablePseudoFullscreen(container); - } - } else { - if (options && options.pseudoFullscreen) { - this._enablePseudoFullscreen(container); - } else if (container.requestFullscreen) { - container.requestFullscreen(); - } else if (container.mozRequestFullScreen) { - container.mozRequestFullScreen(); - } else if (container.webkitRequestFullscreen) { - container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); - } else if (container.msRequestFullscreen) { - container.msRequestFullscreen(); - } else { - this._enablePseudoFullscreen(container); - } - } + if (this._map.options.zoomAnimation) { + this._map.on('zoomstart', this._unspiderfyZoomStart, this); + } + //Browsers without zoomAnimation or a big zoom don't fire zoomstart + this._map.on('zoomend', this._noanimationUnspiderfy, this); - }, + if (!L.Browser.touch) { + this._map.getRenderer(this); + //Needs to happen in the pageload, not after, or animations don't work in webkit + // http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements + //Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable + } + }, - _enablePseudoFullscreen: function (container) { - L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen'); - this._setFullscreen(true); - this.fire('fullscreenchange'); - }, + _spiderfierOnRemove: function () { + this._map.off('click', this._unspiderfyWrapper, this); + this._map.off('zoomstart', this._unspiderfyZoomStart, this); + this._map.off('zoomanim', this._unspiderfyZoomAnim, this); + this._map.off('zoomend', this._noanimationUnspiderfy, this); - _disablePseudoFullscreen: function (container) { - L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen'); - this._setFullscreen(false); - this.fire('fullscreenchange'); - }, + //Ensure that markers are back where they should be + // Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane + this._noanimationUnspiderfy(); + }, - _setFullscreen: function(fullscreen) { - this._isFullscreen = fullscreen; - var container = this.getContainer(); - if (fullscreen) { - L.DomUtil.addClass(container, 'leaflet-fullscreen-on'); - } else { - L.DomUtil.removeClass(container, 'leaflet-fullscreen-on'); - } - this.invalidateSize(); - }, + //On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated) + //This means we can define the animation they do rather than Markers doing an animation to their actual location + _unspiderfyZoomStart: function () { + if (!this._map) { //May have been removed from the map by a zoomEnd handler + return; + } - _onFullscreenChange: function (e) { - var fullscreenElement = - document.fullscreenElement || - document.mozFullScreenElement || - document.webkitFullscreenElement || - document.msFullscreenElement; + this._map.on('zoomanim', this._unspiderfyZoomAnim, this); + }, - if (fullscreenElement === this.getContainer() && !this._isFullscreen) { - this._setFullscreen(true); - this.fire('fullscreenchange'); - } else if (fullscreenElement !== this.getContainer() && this._isFullscreen) { - this._setFullscreen(false); - this.fire('fullscreenchange'); - } - } -}); + _unspiderfyZoomAnim: function (zoomDetails) { + //Wait until the first zoomanim after the user has finished touch-zooming before running the animation + if (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) { + return; + } -L.Map.mergeOptions({ - fullscreenControl: false -}); + this._map.off('zoomanim', this._unspiderfyZoomAnim, this); + this._unspiderfy(zoomDetails); + }, -L.Map.addInitHook(function () { - if (this.options.fullscreenControl) { - this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl); - this.addControl(this.fullscreenControl); - } + _unspiderfyWrapper: function () { + /// _unspiderfy but passes no arguments + this._unspiderfy(); + }, - var fullscreenchange; + _unspiderfy: function (zoomDetails) { + if (this._spiderfied) { + this._spiderfied.unspiderfy(zoomDetails); + } + }, - if ('onfullscreenchange' in document) { - fullscreenchange = 'fullscreenchange'; - } else if ('onmozfullscreenchange' in document) { - fullscreenchange = 'mozfullscreenchange'; - } else if ('onwebkitfullscreenchange' in document) { - fullscreenchange = 'webkitfullscreenchange'; - } else if ('onmsfullscreenchange' in document) { - fullscreenchange = 'MSFullscreenChange'; - } + _noanimationUnspiderfy: function () { + if (this._spiderfied) { + this._spiderfied._noanimationUnspiderfy(); + } + }, - if (fullscreenchange) { - var onFullscreenChange = L.bind(this._onFullscreenChange, this); + //If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc + _unspiderfyLayer: function (layer) { + if (layer._spiderLeg) { + this._featureGroup.removeLayer(layer); - this.whenReady(function () { - L.DomEvent.on(document, fullscreenchange, onFullscreenChange); - }); + if (layer.clusterShow) { + layer.clusterShow(); + } + //Position will be fixed up immediately in _animationUnspiderfy + if (layer.setZIndexOffset) { + layer.setZIndexOffset(0); + } - this.on('unload', function () { - L.DomEvent.off(document, fullscreenchange, onFullscreenChange); - }); - } -}); + this._map.removeLayer(layer._spiderLeg); + delete layer._spiderLeg; + } + } + }); -L.control.fullscreen = function (options) { - return new L.Control.Fullscreen(options); -}; + /** + * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing + * markers' icon options and refreshing their icon and their parent clusters + * accordingly (case where their iconCreateFunction uses data of childMarkers + * to make up the cluster icon). + */ -const DEFAULT_SETTINGS = { - defaultState: { - name: 'Default', - mapZoom: 1.0, - mapCenter: new leafletSrc.LatLng(40.44694705960048, -180.70312500000003), - query: '', - chosenMapSource: 0, - }, - savedStates: [], - markerIconRules: [ - { - ruleName: 'default', - preset: true, - iconDetails: { - prefix: 'fas', - icon: 'fa-circle', - markerColor: 'blue', - }, - }, - { - ruleName: '#trip', - preset: false, - iconDetails: { - prefix: 'fas', - icon: 'fa-hiking', - markerColor: 'green', - }, - }, - { - ruleName: '#trip-water', - preset: false, - iconDetails: { prefix: 'fas', markerColor: 'blue' }, - }, - { - ruleName: '#dogs', - preset: false, - iconDetails: { prefix: 'fas', icon: 'fa-paw' }, - }, - ], - zoomOnGoFromNote: 15, - autoZoom: true, - markerClickBehavior: 'samePane', - newNoteNameFormat: 'Location added on {{date:YYYY-MM-DD}}T{{date:HH-mm}}', - showNoteNamePopup: true, - showNotePreview: true, - showClusterPreview: false, - debug: false, - openIn: [ - { - name: 'Google Maps', - urlPattern: 'https://maps.google.com/?q={x},{y}', - }, - ], - urlParsingRules: [ - { - name: 'OpenStreetMap Show Address', - regExp: /https:\/\/www.openstreetmap.org\S*query=([0-9\.\-]+%2C[0-9\.\-]+)\S*/ - .source, - ruleType: 'latLng', - preset: true, - }, - { - name: 'Generic Lat,Lng', - regExp: /([0-9\.\-]+), ([0-9\.\-]+)/.source, - ruleType: 'latLng', - preset: true, - }, - ], - mapControls: { - filtersDisplayed: true, - viewDisplayed: true, - presetsDisplayed: false, - }, - maxClusterRadiusPixels: 20, - searchProvider: 'osm', - useGooglePlaces: false, - mapSources: [ - { - name: 'CartoDB', - urlLight: 'https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png', - preset: true, - }, - ], - chosenMapMode: 'auto', - saveHistory: true, - letZoomBeyondMax: false, - queryForFollowActiveNote: 'path:"$PATH$"', -}; -function convertLegacyMarkerIcons(settings) { - if (settings.markerIcons) { - settings.markerIconRules = []; - for (let key in settings.markerIcons) { - const newRule = { - ruleName: key, - preset: key === 'default', - iconDetails: settings.markerIcons[key], - }; - settings.markerIconRules.push(newRule); - } - settings.markerIcons = null; - return true; - } - return false; -} -function convertLegacyTilesUrl(settings) { - if (settings.tilesUrl) { - settings.mapSources = [ - { - name: 'Default', - urlLight: settings.tilesUrl, - maxZoom: DEFAULT_MAX_TILE_ZOOM, - }, - ]; - settings.tilesUrl = null; - return true; - } - return false; -} -function convertLegacyDefaultState(settings) { - var _a; - if (settings.defaultTags || - settings.defaultZoom || - settings.defaultMapCenter || - settings.chosenMapSource) { - settings.defaultState = { - name: 'Default', - mapZoom: settings.defaultZoom || DEFAULT_SETTINGS.defaultState.mapZoom, - mapCenter: settings.defaultMapCenter || - DEFAULT_SETTINGS.defaultState.mapCenter, - query: settings.defaultTags.join(' OR ') || - DEFAULT_SETTINGS.defaultState.query, - chosenMapSource: (_a = settings.chosenMapSource) !== null && _a !== void 0 ? _a : DEFAULT_SETTINGS.defaultState.chosenMapSource, - }; - settings.defaultTags = - settings.defaultZoom = - settings.defaultMapCenter = - settings.chosenMapSource = - null; - return true; - } - return false; -} -function removeLegacyPresets1(settings) { - const googleMapsParsingRule = settings.urlParsingRules.findIndex((rule) => rule.name == 'Google Maps' && rule.preset); - if (googleMapsParsingRule > -1) { - settings.urlParsingRules.splice(googleMapsParsingRule, 1); - return true; - } - if (settings.mapSources.findIndex((item) => item.name == DEFAULT_SETTINGS.mapSources[0].name) === -1) { - settings.mapSources.unshift(DEFAULT_SETTINGS.mapSources[0]); - return true; - } - return false; -} -function convertTagsToQueries(settings) { - let changed = false; - let defaultState = settings.defaultState; - if (defaultState.tags && defaultState.tags.length > 0) { - defaultState.query = defaultState.tags.join(' OR '); - delete defaultState.tags; - changed = true; - } - for (let preset of settings.savedStates) { - let legacyPreset = preset; - if (legacyPreset.tags && legacyPreset.tags.length > 0) { - legacyPreset.query = legacyPreset.tags.join(' OR '); - delete legacyPreset.tags; - changed = true; - } - } - return changed; -} -function convertUrlParsingRules1(settings) { - let changed = false; - for (let rule of settings.urlParsingRules) { - const legacyRule = rule; - if (legacyRule.order) { - rule.ruleType = - legacyRule.order === 'latFirst' ? 'latLng' : 'lngLat'; - delete legacyRule.order; - changed = true; - } - } - return changed; -} -function convertLegacySettings(settings, plugin) { - return __awaiter(this, void 0, void 0, function* () { - let changed = false; - // Convert old settings formats that are no longer supported - if (convertLegacyMarkerIcons(settings)) { - changed = true; - new obsidian.Notice('Map View: legacy marker icons were converted to the new format'); - } - if (convertLegacyTilesUrl(settings)) { - changed = true; - new obsidian.Notice('Map View: legacy tiles URL was converted to the new format'); - } - if (convertLegacyDefaultState(settings)) { - changed = true; - new obsidian.Notice('Map View: legacy default state was converted to the new format'); - } - if (removeLegacyPresets1(settings)) { - changed = true; - new obsidian.Notice('Map View: legacy URL parsing rules and/or map sources were converted. See the release notes'); - } - if (convertTagsToQueries(settings)) { - changed = true; - new obsidian.Notice('Map View: legacy tag queries were converted to the new query format'); - } - if (convertUrlParsingRules1(settings)) { - changed = true; - new obsidian.Notice('Map View: URL parsing rules were converted to the new format'); - } - if (changed) - plugin.saveSettings(); - }); -} -/* jshint node: true */ + L.MarkerClusterGroup.include({ + /** + * Updates the icon of all clusters which are parents of the given marker(s). + * In singleMarkerMode, also updates the given marker(s) icon. + * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)| + * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent + * clusters need to be updated. If not provided, retrieves all child markers of this. + * @returns {L.MarkerClusterGroup} + */ + refreshClusters: function (layers) { + if (!layers) { + layers = this._topClusterLevel.getAllChildMarkers(); + } else if (layers instanceof L.MarkerClusterGroup) { + layers = layers._topClusterLevel.getAllChildMarkers(); + } else if (layers instanceof L.LayerGroup) { + layers = layers._layers; + } else if (layers instanceof L.MarkerCluster) { + layers = layers.getAllChildMarkers(); + } else if (layers instanceof L.Marker) { + layers = [layers]; + } // else: must be an Array(L.Marker)|Map(L.Marker) + this._flagParentsIconsNeedUpdate(layers); + this._refreshClustersIcons(); + + // In case of singleMarkerMode, also re-draw the markers. + if (this.options.singleMarkerMode) { + this._refreshSingleMarkerModeMarkers(layers); + } -var REGEXP_PARTS = /(\*|\?)/g; + return this; + }, -/** - # wildcard + /** + * Simply flags all parent clusters of the given markers as having a "dirty" icon. + * @param layers Array(L.Marker)|Map(L.Marker) list of markers. + * @private + */ + _flagParentsIconsNeedUpdate: function (layers) { + var id, parent; - Very simple wildcard matching, which is designed to provide the same - functionality that is found in the - [eve](https://github.com/adobe-webplatform/eve) eventing library. + // Assumes layers is an Array or an Object whose prototype is non-enumerable. + for (id in layers) { + // Flag parent clusters' icon as "dirty", all the way up. + // Dumb process that flags multiple times upper parents, but still + // much more efficient than trying to be smart and make short lists, + // at least in the case of a hierarchy following a power law: + // http://jsperf.com/flag-nodes-in-power-hierarchy/2 + parent = layers[id].__parent; + while (parent) { + parent._iconNeedsUpdate = true; + parent = parent.__parent; + } + } + }, - ## Usage + /** + * Re-draws the icon of the supplied markers. + * To be used in singleMarkerMode only. + * @param layers Array(L.Marker)|Map(L.Marker) list of markers. + * @private + */ + _refreshSingleMarkerModeMarkers: function (layers) { + var id, layer; - It works with strings: + for (id in layers) { + layer = layers[id]; - <<< examples/strings.js + // Make sure we do not override markers that do not belong to THIS group. + if (this.hasLayer(layer)) { + // Need to re-create the icon first, then re-draw the marker. + layer.setIcon(this._overrideMarkerIcon(layer)); + } + } + } + }); - Arrays: + L.Marker.include({ + /** + * Updates the given options in the marker's icon and refreshes the marker. + * @param options map object of icon options. + * @param directlyRefreshClusters boolean (optional) true to trigger + * MCG.refreshClustersOf() right away with this single marker. + * @returns {L.Marker} + */ + refreshIconOptions: function (options, directlyRefreshClusters) { + var icon = this.options.icon; - <<< examples/arrays.js + L.setOptions(icon, options); - Objects (matching against keys): + this.setIcon(icon); - <<< examples/objects.js + // Shortcut to refresh the associated MCG clusters right away. + // To be used when refreshing a single marker. + // Otherwise, better use MCG.refreshClusters() once at the end with + // the list of modified markers. + if (directlyRefreshClusters && this.__parent) { + this.__parent._group.refreshClusters(this); + } - ## Alternative Implementations + return this; + } + }); - - + exports.MarkerClusterGroup = MarkerClusterGroup; + exports.MarkerCluster = MarkerCluster; - Great for full file-based wildcard matching. + Object.defineProperty(exports, '__esModule', { value: true }); - - +})); - A well cared for and loved JS wildcard matcher. -**/ +}); -function WildcardMatcher(text, separator) { - this.text = text = text || ''; - this.hasWild = text.indexOf('*') >= 0; - this.separator = separator; - this.parts = text.split(separator).map(this.classifyPart.bind(this)); -} +L.Control.Fullscreen = L.Control.extend({ + options: { + position: 'topleft', + title: { + 'false': 'View Fullscreen', + 'true': 'Exit Fullscreen' + } + }, -WildcardMatcher.prototype.match = function(input) { - var matches = true; - var parts = this.parts; - var ii; - var partsCount = parts.length; - var testParts; + onAdd: function (map) { + var container = L.DomUtil.create('div', 'leaflet-control-fullscreen leaflet-bar leaflet-control'); - if (typeof input == 'string' || input instanceof String) { - if (!this.hasWild && this.text != input) { - matches = false; - } else { - testParts = (input || '').split(this.separator); - for (ii = 0; matches && ii < partsCount; ii++) { - if (parts[ii] === '*') { - continue; - } else if (ii < testParts.length) { - matches = parts[ii] instanceof RegExp - ? parts[ii].test(testParts[ii]) - : parts[ii] === testParts[ii]; + this.link = L.DomUtil.create('a', 'leaflet-control-fullscreen-button leaflet-bar-part', container); + this.link.href = '#'; + + this._map = map; + this._map.on('fullscreenchange', this._toggleTitle, this); + this._toggleTitle(); + + L.DomEvent.on(this.link, 'click', this._click, this); + + return container; + }, + + _click: function (e) { + L.DomEvent.stopPropagation(e); + L.DomEvent.preventDefault(e); + this._map.toggleFullscreen(this.options); + }, + + _toggleTitle: function() { + this.link.title = this.options.title[this._map.isFullscreen()]; + } +}); + +L.Map.include({ + isFullscreen: function () { + return this._isFullscreen || false; + }, + + toggleFullscreen: function (options) { + var container = this.getContainer(); + if (this.isFullscreen()) { + if (options && options.pseudoFullscreen) { + this._disablePseudoFullscreen(container); + } else if (document.exitFullscreen) { + document.exitFullscreen(); + } else if (document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if (document.webkitCancelFullScreen) { + document.webkitCancelFullScreen(); + } else if (document.msExitFullscreen) { + document.msExitFullscreen(); + } else { + this._disablePseudoFullscreen(container); + } } else { - matches = false; + if (options && options.pseudoFullscreen) { + this._enablePseudoFullscreen(container); + } else if (container.requestFullscreen) { + container.requestFullscreen(); + } else if (container.mozRequestFullScreen) { + container.mozRequestFullScreen(); + } else if (container.webkitRequestFullscreen) { + container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); + } else if (container.msRequestFullscreen) { + container.msRequestFullscreen(); + } else { + this._enablePseudoFullscreen(container); + } } - } - // If matches, then return the component parts - matches = matches && testParts; - } - } - else if (typeof input.splice == 'function') { - matches = []; + }, - for (ii = input.length; ii--; ) { - if (this.match(input[ii])) { - matches[matches.length] = input[ii]; - } + _enablePseudoFullscreen: function (container) { + L.DomUtil.addClass(container, 'leaflet-pseudo-fullscreen'); + this._setFullscreen(true); + this.fire('fullscreenchange'); + }, + + _disablePseudoFullscreen: function (container) { + L.DomUtil.removeClass(container, 'leaflet-pseudo-fullscreen'); + this._setFullscreen(false); + this.fire('fullscreenchange'); + }, + + _setFullscreen: function(fullscreen) { + this._isFullscreen = fullscreen; + var container = this.getContainer(); + if (fullscreen) { + L.DomUtil.addClass(container, 'leaflet-fullscreen-on'); + } else { + L.DomUtil.removeClass(container, 'leaflet-fullscreen-on'); + } + this.invalidateSize(); + }, + + _onFullscreenChange: function (e) { + var fullscreenElement = + document.fullscreenElement || + document.mozFullScreenElement || + document.webkitFullscreenElement || + document.msFullscreenElement; + + if (fullscreenElement === this.getContainer() && !this._isFullscreen) { + this._setFullscreen(true); + this.fire('fullscreenchange'); + } else if (fullscreenElement !== this.getContainer() && this._isFullscreen) { + this._setFullscreen(false); + this.fire('fullscreenchange'); + } } - } - else if (typeof input == 'object') { - matches = {}; +}); - for (var key in input) { - if (this.match(key)) { - matches[key] = input[key]; - } +L.Map.mergeOptions({ + fullscreenControl: false +}); + +L.Map.addInitHook(function () { + if (this.options.fullscreenControl) { + this.fullscreenControl = new L.Control.Fullscreen(this.options.fullscreenControl); + this.addControl(this.fullscreenControl); } - } - return matches; -}; + var fullscreenchange; -WildcardMatcher.prototype.classifyPart = function(part) { - // in the event that we have been provided a part that is not just a wildcard - // then turn this into a regular expression for matching purposes - if (part === '*') { - return part; - } else if (part.indexOf('*') >= 0 || part.indexOf('?') >= 0) { - return new RegExp(part.replace(REGEXP_PARTS, '\.$1')); - } + if ('onfullscreenchange' in document) { + fullscreenchange = 'fullscreenchange'; + } else if ('onmozfullscreenchange' in document) { + fullscreenchange = 'mozfullscreenchange'; + } else if ('onwebkitfullscreenchange' in document) { + fullscreenchange = 'webkitfullscreenchange'; + } else if ('onmsfullscreenchange' in document) { + fullscreenchange = 'MSFullscreenChange'; + } - return part; -}; + if (fullscreenchange) { + var onFullscreenChange = L.bind(this._onFullscreenChange, this); -var wildcard = function(text, test, separator) { - var matcher = new WildcardMatcher(text, separator || /[\/\.]/); - if (typeof test != 'undefined') { - return matcher.match(test); - } + this.whenReady(function () { + L.DomEvent.on(document, fullscreenchange, onFullscreenChange); + }); - return matcher; -}; + this.on('unload', function () { + L.DomEvent.off(document, fullscreenchange, onFullscreenChange); + }); + } +}); -/*! - * leaflet-extra-markers - * Custom Markers for Leaflet JS based on Awesome Markers - * Leaflet ExtraMarkers - * https://github.com/coryasilva/Leaflet.ExtraMarkers/ - * @author coryasilva - * @version 1.2.1 - */ +L.control.fullscreen = function (options) { + return new L.Control.Fullscreen(options); +}; -createCommonjsModule(function (module, exports) { -(function (global, factory) { - factory(exports) ; -}(commonjsGlobal, (function (exports) { - var ExtraMarkers = L.ExtraMarkers = {}; - ExtraMarkers.version = L.ExtraMarkers.version = "1.2.1"; - ExtraMarkers.Icon = L.ExtraMarkers.Icon = L.Icon.extend({ - options: { - iconSize: [ 35, 45 ], - iconAnchor: [ 17, 42 ], - popupAnchor: [ 1, -32 ], - shadowAnchor: [ 10, 12 ], - shadowSize: [ 36, 16 ], - className: "", - prefix: "", - extraClasses: "", - shape: "circle", - icon: "", - innerHTML: "", - markerColor: "red", - svgBorderColor: "#fff", - svgOpacity: 1, - iconColor: "#fff", - iconRotate: 0, - number: "", - svg: false, - name: "" +const DEFAULT_SETTINGS = { + defaultState: { + name: 'Default', + mapZoom: 1.0, + mapCenter: new leafletSrc.LatLng(40.44694705960048, -180.70312500000003), + query: '', + chosenMapSource: 0, + }, + savedStates: [], + markerIconRules: [ + { + ruleName: 'default', + preset: true, + iconDetails: { + prefix: 'fas', + icon: 'fa-circle', + markerColor: 'blue', + }, }, - initialize: function(options) { - options = L.Util.setOptions(this, options); + { + ruleName: '#trip', + preset: false, + iconDetails: { + prefix: 'fas', + icon: 'fa-hiking', + markerColor: 'green', + }, }, - createIcon: function() { - var div = document.createElement("div"), options = this.options; - if (options.icon) { - div.innerHTML = this._createInner(); - } - if (options.innerHTML) { - div.innerHTML = options.innerHTML; - } - if (options.bgPos) { - div.style.backgroundPosition = -options.bgPos.x + "px " + -options.bgPos.y + "px"; - } - if (!options.svg) { - this._setIconStyles(div, options.shape + "-" + options.markerColor); - } else { - this._setIconStyles(div, "svg"); - } - return div; + { + ruleName: '#trip-water', + preset: false, + iconDetails: { prefix: 'fas', markerColor: 'blue' }, }, - _getColorHex: function (color) { - var colorMap = { - red: "#a23337", - "orange-dark": "#d73e29", - orange: "#ef9227", - yellow: "#f5bb39", - "blue-dark": "#276273", - cyan: "#32a9dd", - purple: "#440444", - violet: "#90278d", - pink: "#c057a0", - green: "#006838", - white: "#e8e8e8", - black: "#211c1d" - }; - return colorMap[color] || color; + { + ruleName: '#dogs', + preset: false, + iconDetails: { prefix: 'fas', icon: 'fa-paw' }, }, - _createSvg: function (shape, markerColor) { - var svgMap = { - circle: '', - square: '', - star: '', - penta: '' - }; - return svgMap[shape]; + ], + zoomOnGoFromNote: 15, + autoZoom: true, + markerClickBehavior: 'samePane', + newNoteNameFormat: 'Location added on {{date:YYYY-MM-DD}}T{{date:HH-mm}}', + showNoteNamePopup: true, + showNotePreview: true, + showClusterPreview: false, + debug: false, + openIn: [ + { + name: 'Google Maps', + urlPattern: 'https://maps.google.com/?q={x},{y}', }, - _createInner: function() { - var iconStyle = "", iconNumber = "", iconClass = "", result = "", options = this.options; - if (options.iconColor) { - iconStyle = "color: " + options.iconColor + ";"; - } - if (options.iconRotate !== 0) { - iconStyle += "-webkit-transform: rotate(" + options.iconRotate + "deg);"; - iconStyle += "-moz-transform: rotate(" + options.iconRotate + "deg);"; - iconStyle += "-o-transform: rotate(" + options.iconRotate + "deg);"; - iconStyle += "-ms-transform: rotate(" + options.iconRotate + "deg);"; - iconStyle += "transform: rotate(" + options.iconRotate + "deg);"; - } - if (options.number) { - iconNumber = 'number="' + options.number + '" '; - } - if (options.extraClasses.length) { - iconClass += options.extraClasses + " "; - } - if (options.prefix.length) { - iconClass += options.prefix + " "; - } - if (options.icon.length) { - iconClass += options.icon + " "; - } - if (options.svg) { - result += this._createSvg(options.shape, this._getColorHex(options.markerColor)); - } - - result += ''; - - if (options.name.length) { - result += '
' + options.name + '
'; - } - - return result; + ], + urlParsingRules: [ + { + name: 'OpenStreetMap Show Address', + regExp: /https:\/\/www.openstreetmap.org\S*query=([0-9\.\-]+%2C[0-9\.\-]+)\S*/ + .source, + ruleType: 'latLng', + preset: true, }, - _setIconStyles: function(img, name) { - var options = this.options, size = L.point(options[name === "shadow" ? "shadowSize" : "iconSize"]), anchor, leafletName; - if (name === "shadow") { - anchor = L.point(options.shadowAnchor || options.iconAnchor); - leafletName = "shadow"; - } else { - anchor = L.point(options.iconAnchor); - leafletName = "icon"; - } - if (!anchor && size) { - anchor = size.divideBy(2, true); - } - img.className = "leaflet-marker-" + leafletName + " extra-marker extra-marker-" + name + " " + options.className; - if (anchor) { - img.style.marginLeft = -anchor.x + "px"; - img.style.marginTop = -anchor.y + "px"; - } - if (size) { - img.style.width = size.x + "px"; - img.style.height = size.y + "px"; - } + { + name: 'Generic Lat,Lng', + regExp: /([0-9\.\-]+), ([0-9\.\-]+)/.source, + ruleType: 'latLng', + preset: true, + }, + ], + mapControls: { + filtersDisplayed: true, + viewDisplayed: true, + presetsDisplayed: false, + }, + maxClusterRadiusPixels: 20, + searchProvider: 'osm', + useGooglePlaces: false, + mapSources: [ + { + name: 'CartoDB', + urlLight: 'https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}.png', + preset: true, }, - createShadow: function() { - var div = document.createElement("div"); - this._setIconStyles(div, "shadow"); - return div; + ], + chosenMapMode: 'auto', + saveHistory: true, + letZoomBeyondMax: false, + queryForFollowActiveNote: 'path:"$PATH$"', + supportRealTimeGeolocation: false +}; +function convertLegacyMarkerIcons(settings) { + if (settings.markerIcons) { + settings.markerIconRules = []; + for (let key in settings.markerIcons) { + const newRule = { + ruleName: key, + preset: key === 'default', + iconDetails: settings.markerIcons[key], + }; + settings.markerIconRules.push(newRule); } - }); - ExtraMarkers.icon = L.ExtraMarkers.icon = function(options) { - return new L.ExtraMarkers.Icon(options); - }; - - exports.ExtraMarkers = ExtraMarkers; - - Object.defineProperty(exports, '__esModule', { value: true }); - -}))); - - -}); - -var css_248z = "/*!\n * leaflet-extra-markers\n * Custom Markers for Leaflet JS based on Awesome Markers\n * Leaflet ExtraMarkers\n * https://github.com/coryasilva/Leaflet.ExtraMarkers/\n * @author coryasilva \n * @version 1.2.1\n */.extra-marker{background:url(\"data:image/png;base64,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\") no-repeat 0 0;width:35px;height:46px;position:absolute;left:0;top:0;display:block;text-align:center}.extra-marker-shadow{background:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAQCAYAAACcN8ZaAAAB3klEQVR42s3U4UdDURzG8czMXJnJ1Vwzc6VJZjaZJdlMlpQsKdmUFNOUspRSSqUolfQfr+fF98Vx5mwv9qbDx7LdznnO7/7Omej3+/+Ga0QMUYkhbvBgmhzCQxwxibIGrGEF8CQhU+LLtKQkQNqScUgjxRxTBIxbgfgD/BgnhM8kM5KTeclLQYqGkkMRBckzR8ic/mAgd5BAZplsUaqyIg2sDtHg2brUZJk5SmwopErJUWE8SpmTMhNvya60Zd/SNrR4bkeaskG4uiwRZk6yrJEYFibGAxn+scECHTmTnuVCzvmty3PHciB7bGKN6lQkzysPqIrHmpFhYbKUtckC1/Ioz4ZHuZdbuSLYiRxRpSZVWXZVxAzC0R4Ik5SQsu6w8yd5l2/5kg95I9SdXMoZQfYIUjeqEUrgOkXGPeN4TYRhxy8E+ZUf+eS7B7miIoeybVSjKDnm8u3+gH3pDTYwu1igATvs/pXqvBKiR4i2bNJfi1ZfUAnjgrOG8wY2quNzBKuU/ZS+uSFEl5O0xRGuUIlZCcw7xG5QPkeHYUSNV5WXGou2sC3rBC0LjenqCXGO0WEiTJa0Lr4KixdHBrDGuGGiRqCUpFk8pGIpQtCU7p4YPwxYxEMCk1aAMQZh8Ac8PfbIzYPJOwAAAABJRU5ErkJggg==\") no-repeat 0 0;width:36px;height:16px}@media (min--moz-device-pixel-ratio:1.5),(-webkit-min-device-pixel-ratio:1.5),(min-device-pixel-ratio:1.5),(min-resolution:1.5dppx){.extra-marker{background-image:url(\"data:image/png;base64,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\");background-size:540px 184px}.extra-marker-shadow{background-image:url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAAAgCAYAAACvgw7DAAAFhElEQVR42tWZ/0ubVxSHZZQxpJQRwoqEUkJQQhlBCcEiQRGJiKFEQqQ4lKFYLA5FsSjKioqipRutbLJ2f627g+dyDmfvqfetzlLh+aFpcr88+dxzb+7bdwt/33wG974g/rhu+pdzwt86fJdA/82w7Un/18m6kRBXgD+5+4YHDt/fEtImfRppVlJ+MY4QEWEmbyZZUBQVP2TwMJGBDMx7aFP6K4gwJBlBecVYISIDCSJAJm0mUIJH8NhQdqjkh8/SNv2VRB6SjCAtJ2dKMGuFIEIEMHGZ2CAMQdXwxPDjNdQ++f+0Q9tD9F1RkgYYLwlCDmIg19IhJQiRVJToFAlMViYxHBiBOjQyGP0ETzMw76Ed+qC/YSVrSAkqiRySo1IjAnwkKSKlQKMIQQYS4sQZ/Bg0A+MwYZg0TKViPjeh+mjS72iUhKCqyCE5pCZdDEmxUmjwURQSZSCiqSbXCkwHZmAW2g7PEmkbZml/mj6nlKgm42rE9DDushHzQGpNohjefB8pD2NK6GSEjscZ1AyD7QTmAt1AD+YVz/Mjn6e9LswB0pCEICVnhFQPIabEfAoiJj0xkhaWj5LSoNMW39ocA14I/BRYCvwMy58NbdDe4r9twwLCEIUcEoSYCbWkhqk1g0lLyTv92bTQUBkpdZWSDoNbZAKrgbXAy8B64JdE1jN4SVsvAquwokUhaJ70dNTyaiEmLqUaYiqUArZu0qLF+EdjOa/wwWKsK2r5tPiGFhjoGhPcCmwHdgKvEtlRbMNWYDOwQbtIEjlGDIlhKUmNqZOWKuOPW3bRSct1iUGMbM2PabxBp20GtMygt5jkfuAg8DpwaOF1y6+BA9iDXdpDEoKQQ79LLKv5mBZVX8ZZQiO66Nqt2jngISFNTJkoPqXjLoOKUvaY5HHgJHDmcAoncBw4UtIOkLtnxJAapEid6aqkTKliW2f5VOPysXUFjJQ0Mf1KTAXzTb6VeeK8wQQOmeibwNvA7xn8xv+95X3nyIqCDiU9iGFJUXPWkLKo6krbLJ2GpIQdiJoiy8dJyg3E1IjoDDvCCgPfZ3LnCHgf+MNwwevveE+UE1N0RGKilJ0MIUv021Vb86QIYefJJUSkXF1d4eS6rdoXM0uUV5nA6ygFCZeBDxpe+1MEkSBJzbESs6uWzwu+gEWzdFpIidtxzWzHck5h6fgpETHI8cWYGlOMW7VKzEKWGCb/V+Bj4G/4wGtRzDsSc07SjjKSsqaEPFdCpkWIpMQc9UmJCLEXVVaGFXPP4G/XUnybjpg3TPhSS4GPKjHvVVJOY10hJduxyKpa0gt01Nlk3JxkbXEt+j8OBREhpIgRORzw6LiqdqUexXeTb/qUFFzE1MAly4vaQkpYNrHAqh1nSS2Ztl0yJiFsvyYhbh0RHDH+UvJSw7cxqM4xc9SZdbUrnaniewEiRBJyoBKyniGk4y8ZOY+kLhn4z19+MYLcw8ghr0ZqppnEMpPbZUmcIOAMTA1hubDTILenziKT5nBmt92B9G1XhOQQk3iliRgGU+JbqzOBttqdNkUOp1451e5LUWXJSFHtaCHebxunqKZJ4d+3LEZ2JwZWYcCjLKlnTHCZFGwgIB7MYjFdUculJwczKaZquVT9c4gUVKeG9P3fYuS3VPaPyRrf7CQ7Ro/0yDWD+qHn7C5j5ug+aO9m7c2+FZLndv/2xPin4BLJqcZf2wiaMbdxs3KzJncjzlWjFFM5lJl0+A/I7lpMX+bdDHKIe1WlZ0zuddXVIjJMMsr21t6mI+8DsbsXQ2pEDqdhuf+tsHM8YfJgbujZZh0Z/W4xNX9fXoz/+8nKKdlnSYqKTYctplYIfC1i7KFPnhwwUXnMah+dioxCsgyEfD1iIPMxrVAQ0p8ZexLuWsw/8PFSG0HPbPgAAAAASUVORK5CYII=\");background-size:35px 16px}}.extra-marker.extra-marker-svg{background:none}.extra-marker.extra-marker-svg .svg-inline--fa,.extra-marker.extra-marker-svg i{position:absolute;left:0;width:35px}.extra-marker .svg-inline--fa,.extra-marker i{color:#fff;margin-top:7px;display:inline-block;font-size:14px}.extra-marker .svg-inline--fa{margin-top:10px;background:none}.extra-marker .svg-inline--fa,.extra-marker i.fa,.extra-marker i.fab,.extra-marker i.fas,.extra-marker i.far,.extra-marker i.fal{margin-top:10px}.extra-marker .svg-inline--fa.fa-2x,.extra-marker i.fa.fa-2x,.extra-marker i.fab.fa-2x,.extra-marker i.fas.fa-2x,.extra-marker i.far.fa-2x,.extra-marker i.fal.fa-2x{font-size:16px;margin-top:9px}.extra-marker .svg-inline--fa.fa-3x,.extra-marker i.fa.fa-3x,.extra-marker i.fab.fa-3x,.extra-marker i.fas.fa-3x,.extra-marker i.far.fa-3x,.extra-marker i.fal.fa-3x{font-size:18px;margin-top:9px}.extra-marker .svg-inline--fa.fa-4x,.extra-marker i.fa.fa-4x,.extra-marker i.fab.fa-4x,.extra-marker i.fas.fa-4x,.extra-marker i.far.fa-4x,.extra-marker i.fal.fa-4x{font-size:20px;margin-top:8px}.extra-marker .svg-inline--fa.fa-5x,.extra-marker i.fa.fa-5x,.extra-marker i.fab.fa-5x,.extra-marker i.fas.fa-5x,.extra-marker i.far.fa-5x,.extra-marker i.fal.fa-5x{font-size:24px;margin-top:6px}.extra-marker .fa-number:before{content:attr(number)}.extra-marker i.glyphicon{margin-top:10px}.extra-marker i.icon{margin-right:0;opacity:1}.extra-marker-circle-red{background-position:0 0}.extra-marker-circle-orange-dark{background-position:-36px 0}.extra-marker-circle-orange{background-position:-72px 0}.extra-marker-circle-yellow{background-position:-108px 0}.extra-marker-circle-blue-dark{background-position:-144px 0}.extra-marker-circle-blue{background-position:-180px 0}.extra-marker-circle-cyan{background-position:-216px 0}.extra-marker-circle-purple{background-position:-252px 0}.extra-marker-circle-violet{background-position:-288px 0}.extra-marker-circle-pink{background-position:-324px 0}.extra-marker-circle-green-dark{background-position:-360px 0}.extra-marker-circle-green{background-position:-396px 0}.extra-marker-circle-green-light{background-position:-432px 0}.extra-marker-circle-black{background-position:-468px 0}.extra-marker-circle-white{background-position:-504px 0}.extra-marker-square-red{background-position:0 -46px}.extra-marker-square-orange-dark{background-position:-36px -46px}.extra-marker-square-orange{background-position:-72px -46px}.extra-marker-square-yellow{background-position:-108px -46px}.extra-marker-square-blue-dark{background-position:-144px -46px}.extra-marker-square-blue{background-position:-180px -46px}.extra-marker-square-cyan{background-position:-216px -46px}.extra-marker-square-purple{background-position:-252px -46px}.extra-marker-square-violet{background-position:-288px -46px}.extra-marker-square-pink{background-position:-324px -46px}.extra-marker-square-green-dark{background-position:-360px -46px}.extra-marker-square-green{background-position:-396px -46px}.extra-marker-square-green-light{background-position:-432px -46px}.extra-marker-square-black{background-position:-468px -46px}.extra-marker-square-white{background-position:-504px -46px}.extra-marker-star-red{background-position:0 -92px}.extra-marker-star-orange-dark{background-position:-36px -92px}.extra-marker-star-orange{background-position:-72px -92px}.extra-marker-star-yellow{background-position:-108px -92px}.extra-marker-star-blue-dark{background-position:-144px -92px}.extra-marker-star-blue{background-position:-180px -92px}.extra-marker-star-cyan{background-position:-216px -92px}.extra-marker-star-purple{background-position:-252px -92px}.extra-marker-star-violet{background-position:-288px -92px}.extra-marker-star-pink{background-position:-324px -92px}.extra-marker-star-green-dark{background-position:-360px -92px}.extra-marker-star-green{background-position:-396px -92px}.extra-marker-star-green-light{background-position:-432px -92px}.extra-marker-star-black{background-position:-468px -92px}.extra-marker-star-white{background-position:-504px -92px}.extra-marker-penta-red{background-position:0 -138px}.extra-marker-penta-orange-dark{background-position:-36px -138px}.extra-marker-penta-orange{background-position:-72px -138px}.extra-marker-penta-yellow{background-position:-108px -138px}.extra-marker-penta-blue-dark{background-position:-144px -138px}.extra-marker-penta-blue{background-position:-180px -138px}.extra-marker-penta-cyan{background-position:-216px -138px}.extra-marker-penta-purple{background-position:-252px -138px}.extra-marker-penta-violet{background-position:-288px -138px}.extra-marker-penta-pink{background-position:-324px -138px}.extra-marker-penta-green-dark{background-position:-360px -138px}.extra-marker-penta-green{background-position:-396px -138px}.extra-marker-penta-green-light{background-position:-432px -138px}.extra-marker-penta-black{background-position:-468px -138px}.extra-marker-penta-white{background-position:-504px -138px}"; -styleInject(css_248z); - -// The pound sign is optional here -const TAG_NAME_WITH_HEADER = /tag:(#?[\p{L}\p{N}_\/\-]*)/gu; -// Note no '#' sign -const INLINE_TAG_IN_NOTE = /tag:(?[\p{L}\p{N}_\/\-]+)/gu; -// path:"..." -const PATH_QUERY_WITH_HEADER = /path:"(['\p{L}\p{N}_\s/\-\\\.]+?)"/gu; -const LINKEDTO_QUERY_WITH_HEADER = /linkedto:"(['\p{L}\p{N}_\s/\-\\\.]+?)"/gu; -const LINKEDFROM_QUERY_WITH_HEADER = /linkedfrom:"(['\p{L}\p{N}_\s/\-\\\.]+?)"/gu; -// path:"path with spaces" OR path:path_without_spaces -const QUOTED_OR_NOT_QUOTED_PATH = /path:(("([\p{L}\p{N}_\s'/\-\\\.]*)")|([\p{L}\p{N}_'/\-\\\.]*))/gu; -const QUOTED_OR_NOT_QUOTED_LINKEDTO = /linkedto:(("([\p{L}\p{N}_\s'/\-\\\.]*)")|([\p{L}\p{N}_'/\-\\\.]*))/gu; -const QUOTED_OR_NOT_QUOTED_LINKEDFROM = /linkedfrom:(("([\p{L}\p{N}_\s'/\-\\\.]*)")|([\p{L}\p{N}_'/\-\\\.]*))/gu; -const INLINE_LOCATION_OLD_SYNTAX = /`location:\s*\[?(?[+-]?([0-9]*[.])?[0-9]+)\s*,\s*(?[+-]?([0-9]*[.])?[0-9]+)\]?/g; -const INLINE_LOCATION_WITH_TAGS = /\[(?.*?)\]\(geo:(?[+-]?([0-9]*[.])?[0-9]+),(?[+-]?([0-9]*[.])?[0-9]+)\)[ \t]*(?(tag:[\p{L}\p{N}_\/\-]+[\s,.]+)*)/gu; -/** - * Returns a match object if the given cursor position has the beginning - * of a `tag:...` expression - */ -function getTagUnderCursor(line, cursorPosition) { - return matchByPosition(line, TAG_NAME_WITH_HEADER, cursorPosition); -} - -// Ugly hack for obsidian-leaflet compatability, see https://github.com/esm7/obsidian-map-view/issues/6 -// @ts-ignore -let localL = L; -/** An object that represents a single marker in a file, which is either a complete note with a geolocation, or an inline geolocation inside a note */ -class FileMarker { - /** - * Construct a new FileMarker object - * @param file The file the pin comes from - * @param location The geolocation - */ - constructor(file, location) { - /** Tags that this marker includes */ - this.tags = []; - this.file = file; - this.location = location; - this.generateId(); - } - isSame(other) { - var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v; - return (this.file.name === other.file.name && - this.location.toString() === other.location.toString() && - this.fileLocation === other.fileLocation && - this.fileLine === other.fileLine && - this.extraName === other.extraName && - ((_b = (_a = this.icon) === null || _a === void 0 ? void 0 : _a.options) === null || _b === void 0 ? void 0 : _b.iconUrl) === ((_d = (_c = other.icon) === null || _c === void 0 ? void 0 : _c.options) === null || _d === void 0 ? void 0 : _d.iconUrl) && - // @ts-ignore - ((_f = (_e = this.icon) === null || _e === void 0 ? void 0 : _e.options) === null || _f === void 0 ? void 0 : _f.icon) === ((_h = (_g = other.icon) === null || _g === void 0 ? void 0 : _g.options) === null || _h === void 0 ? void 0 : _h.icon) && - // @ts-ignore - ((_k = (_j = this.icon) === null || _j === void 0 ? void 0 : _j.options) === null || _k === void 0 ? void 0 : _k.iconColor) === ((_m = (_l = other.icon) === null || _l === void 0 ? void 0 : _l.options) === null || _m === void 0 ? void 0 : _m.iconColor) && - // @ts-ignore - ((_p = (_o = this.icon) === null || _o === void 0 ? void 0 : _o.options) === null || _p === void 0 ? void 0 : _p.markerColor) === - ((_r = (_q = other.icon) === null || _q === void 0 ? void 0 : _q.options) === null || _r === void 0 ? void 0 : _r.markerColor) && - // @ts-ignore - ((_t = (_s = this.icon) === null || _s === void 0 ? void 0 : _s.options) === null || _t === void 0 ? void 0 : _t.shape) === ((_v = (_u = other.icon) === null || _u === void 0 ? void 0 : _u.options) === null || _v === void 0 ? void 0 : _v.shape)); - } - generateId() { - this.id = - this.file.name + - this.location.lat.toString() + - this.location.lng.toString() + - this.fileLocation || - 'nofileloc' + this.fileLine || - 'nofileline'; + settings.markerIcons = null; + return true; } + return false; } -/** - * Create a FileMarker for every front matter and inline geolocation in the given file. - * Properties that are not essential for filtering, e.g. marker icons, are not created here yet. - * @param mapToAppendTo The list of file markers to append to - * @param file The file object to parse - * @param settings The plugin settings - * @param app The Obsidian App instance - * @param skipMetadata If true will not find markers in the front matter - */ -function buildAndAppendFileMarkers(mapToAppendTo, file, settings, app, skipMetadata) { - return __awaiter(this, void 0, void 0, function* () { - const fileCache = app.metadataCache.getFileCache(file); - const frontMatter = fileCache === null || fileCache === void 0 ? void 0 : fileCache.frontmatter; - if (frontMatter) { - if (!skipMetadata) { - const location = getFrontMatterLocation(file, app); - if (location) { - verifyLocation(location); - let marker = new FileMarker(file, location); - marker.tags = obsidian.getAllTags(fileCache); - mapToAppendTo.push(marker); - } - } - if ('locations' in frontMatter) { - const markersFromFile = yield getMarkersFromFileContent(file, settings, app); - mapToAppendTo.push(...markersFromFile); - } - } - }); -} -/** - * Create FileMarker instances for all the files in the given list - * @param files The list of file objects to find geolocations in. - * @param settings The plugin settings - * @param app The Obsidian App instance - */ -function buildMarkers(files, settings, app) { - return __awaiter(this, void 0, void 0, function* () { - if (settings.debug) - console.time('buildMarkers'); - let markers = []; - for (const file of files) { - yield buildAndAppendFileMarkers(markers, file, settings, app); - } - if (settings.debug) - console.timeEnd('buildMarkers'); - return markers; - }); -} -/** - * Add more data to the markers, e.g. icons and other items that were not needed for the stage of filtering - * them. - * Modifies the markers in-place. - */ -function finalizeMarkers(markers, settings) { - for (const marker of markers) - marker.icon = getIconFromRules(marker.tags, settings.markerIconRules); -} -function checkTagPatternMatch(tagPattern, tags) { - let match = wildcard(tagPattern, tags); - return match && match.length > 0; +function convertLegacyTilesUrl(settings) { + if (settings.tilesUrl) { + settings.mapSources = [ + { + name: 'Default', + urlLight: settings.tilesUrl, + maxZoom: DEFAULT_MAX_TILE_ZOOM, + }, + ]; + settings.tilesUrl = null; + return true; + } + return false; } -function getIconFromRules(tags, rules) { - // We iterate over the rules and apply them one by one, so later rules override earlier ones - let result = rules.find((item) => item.ruleName === 'default').iconDetails; - for (const rule of rules) { - if (checkTagPatternMatch(rule.ruleName, tags)) { - result = Object.assign({}, result, rule.iconDetails); - } +function convertLegacyDefaultState(settings) { + var _a; + if (settings.defaultTags || + settings.defaultZoom || + settings.defaultMapCenter || + settings.chosenMapSource) { + settings.defaultState = { + name: 'Default', + mapZoom: settings.defaultZoom || DEFAULT_SETTINGS.defaultState.mapZoom, + mapCenter: settings.defaultMapCenter || + DEFAULT_SETTINGS.defaultState.mapCenter, + query: settings.defaultTags.join(' OR ') || + DEFAULT_SETTINGS.defaultState.query, + chosenMapSource: (_a = settings.chosenMapSource) !== null && _a !== void 0 ? _a : DEFAULT_SETTINGS.defaultState.chosenMapSource, + }; + settings.defaultTags = + settings.defaultZoom = + settings.defaultMapCenter = + settings.chosenMapSource = + null; + return true; } - return getIconFromOptions(result); + return false; } -function getIconFromOptions(iconSpec) { - // Ugly hack for obsidian-leaflet compatability, see https://github.com/esm7/obsidian-map-view/issues/6 - // @ts-ignore - const backupL = L; - try { - // @ts-ignore - L = localL; - return leafletSrc.ExtraMarkers.icon(iconSpec); +function removeLegacyPresets1(settings) { + const googleMapsParsingRule = settings.urlParsingRules.findIndex((rule) => rule.name == 'Google Maps' && rule.preset); + if (googleMapsParsingRule > -1) { + settings.urlParsingRules.splice(googleMapsParsingRule, 1); + return true; } - finally { - // @ts-ignore - L = backupL; + if (settings.mapSources.findIndex((item) => item.name == DEFAULT_SETTINGS.mapSources[0].name) === -1) { + settings.mapSources.unshift(DEFAULT_SETTINGS.mapSources[0]); + return true; } + return false; } -/** - * Make sure that the coordinates are valid world coordinates - * -90 <= longitude <= 90 and -180 <= latitude <= 180 - * @param location - */ -function verifyLocation(location) { - if (location.lng < LNG_LIMITS[0] || - location.lng > LNG_LIMITS[1]) - throw Error(`Lng ${location.lng} is outside the allowed limits`); - if (location.lat < LAT_LIMITS[0] || - location.lat > LAT_LIMITS[1]) - throw Error(`Lat ${location.lat} is outside the allowed limits`); +function convertTagsToQueries(settings) { + let changed = false; + let defaultState = settings.defaultState; + if (defaultState.tags && defaultState.tags.length > 0) { + defaultState.query = defaultState.tags.join(' OR '); + delete defaultState.tags; + changed = true; + } + for (let preset of settings.savedStates) { + let legacyPreset = preset; + if (legacyPreset.tags && legacyPreset.tags.length > 0) { + legacyPreset.query = legacyPreset.tags.join(' OR '); + delete legacyPreset.tags; + changed = true; + } + } + return changed; } -/** - * Find all inline geolocations in a string - * @param content The file contents to find the coordinates in - */ -function matchInlineLocation(content) { - // Old syntax of ` `location: ... ` `. This syntax doesn't support a name so we leave an empty capture group - const locationRegex1 = INLINE_LOCATION_OLD_SYNTAX; - // New syntax of `[name](geo:...)` and an optional tags as `tag:tagName` separated by whitespaces - const locationRegex2 = INLINE_LOCATION_WITH_TAGS; - const matches1 = content.matchAll(locationRegex1); - const matches2 = content.matchAll(locationRegex2); - return Array.from(matches1).concat(Array.from(matches2)); +function convertUrlParsingRules1(settings) { + let changed = false; + for (let rule of settings.urlParsingRules) { + const legacyRule = rule; + if (legacyRule.order) { + rule.ruleType = + legacyRule.order === 'latFirst' ? 'latLng' : 'lngLat'; + delete legacyRule.order; + changed = true; + } + } + return changed; } -/** - * Build markers from inline locations in the file body. - * Properties non-essential for filtering, e.g. the marker icon, are not built here yet. - * @param file The file object to load - * @param settings The plugin settings - * @param app The Obsidian App instance - */ -function getMarkersFromFileContent(file, settings, app) { +function convertLegacySettings(settings, plugin) { return __awaiter(this, void 0, void 0, function* () { - let markers = []; - // Get the tags of the file, to these we will add the tags associated with each individual marker (inline tags) - const fileTags = obsidian.getAllTags(app.metadataCache.getFileCache(file)); - const content = yield app.vault.read(file); - const matches = matchInlineLocation(content); - for (const match of matches) { - try { - const location = new leafletSrc.LatLng(parseFloat(match.groups.lat), parseFloat(match.groups.lng)); - verifyLocation(location); - const marker = new FileMarker(file, location); - if (match.groups.name && match.groups.name.length > 0) - marker.extraName = match.groups.name; - if (match.groups.tags) { - // Parse the list of tags - const tagRegex = INLINE_TAG_IN_NOTE; - const tags = match.groups.tags.matchAll(tagRegex); - for (const tag of tags) - if (tag.groups.tag) - marker.tags.push('#' + tag.groups.tag); - } - marker.tags = marker.tags.concat(fileTags); - marker.fileLocation = match.index; - marker.fileLine = - content.substring(0, marker.fileLocation).split('\n').length - - 1; - // Regenerate the ID because the marker details changed since it was generated - marker.generateId(); - markers.push(marker); - } - catch (e) { - console.log(`Error converting location in file ${file.name}: could not parse ${match[0]}`, e); - } + let changed = false; + // Convert old settings formats that are no longer supported + if (convertLegacyMarkerIcons(settings)) { + changed = true; + new obsidian.Notice('Map View: legacy marker icons were converted to the new format'); } - return markers; - }); -} -/** - * Get the geolocation stored in the front matter of a file - * @param file The file to load the front matter from - * @param app The Obsidian App instance - */ -function getFrontMatterLocation(file, app) { - const fileCache = app.metadataCache.getFileCache(file); - const frontMatter = fileCache === null || fileCache === void 0 ? void 0 : fileCache.frontmatter; - if (frontMatter && (frontMatter === null || frontMatter === void 0 ? void 0 : frontMatter.location)) { - try { - const location = frontMatter.location; - // We have a single location at hand - if (location.length == 2 && - typeof location[0] === 'number' && - typeof location[1] === 'number') { - const location = new leafletSrc.LatLng(frontMatter.location[0], frontMatter.location[1]); - verifyLocation(location); - return location; - } - else - console.log(`Unknown: `, location); + if (convertLegacyTilesUrl(settings)) { + changed = true; + new obsidian.Notice('Map View: legacy tiles URL was converted to the new format'); } - catch (e) { - console.log(`Error converting location in file ${file.name}:`, e); + if (convertLegacyDefaultState(settings)) { + changed = true; + new obsidian.Notice('Map View: legacy default state was converted to the new format'); } - } - return null; + if (removeLegacyPresets1(settings)) { + changed = true; + new obsidian.Notice('Map View: legacy URL parsing rules and/or map sources were converted. See the release notes'); + } + if (convertTagsToQueries(settings)) { + changed = true; + new obsidian.Notice('Map View: legacy tag queries were converted to the new query format'); + } + if (convertUrlParsingRules1(settings)) { + changed = true; + new obsidian.Notice('Map View: URL parsing rules were converted to the new format'); + } + if (changed) + plugin.saveSettings(); + }); } class NewPresetDialog extends obsidian.Modal { @@ -18960,12 +21887,13 @@ class Query { preprocessQueryString(queryString) { // 1. Replace tag:#abc by "tag:#abc" because this parser doesn't like the '#' symbol // 2. Replace path:"abc def/ghi" by "path:abc def/dhi" because the parser doesn't like quotes as part of the words - // 3. Same goes for linkedto:"" and linkedfrom:"" + // 3. Same goes for linkedto:"", linkedfrom:"" and name:"" let newString = queryString .replace(TAG_NAME_WITH_HEADER, '"tag:$1"') .replace(PATH_QUERY_WITH_HEADER, '"path:$1"') .replace(LINKEDTO_QUERY_WITH_HEADER, '"linkedto:$1"') - .replace(LINKEDFROM_QUERY_WITH_HEADER, '"linkedfrom:$1"'); + .replace(LINKEDFROM_QUERY_WITH_HEADER, '"linkedfrom:$1"') + .replace(NAME_QUERY_WITH_HEADER, '"name:$1"'); return newString; } testMarker(marker) { @@ -19019,6 +21947,16 @@ class Query { } return false; } + else if (value.startsWith('name:')) { + const query = value.replace('name:', '').toLowerCase(); + if (query.length === 0) + return false; + // For inline geolocations, completely ignore the file name and use only the link name + if (marker.extraName) + return marker.extraName.toLowerCase().includes(query); + // For front matter geolocations, use the file name + return marker.file.name.toLowerCase().includes(query); + } else if (value.startsWith('path:')) { const queryPath = value.replace('path:', '').toLowerCase(); if (queryPath.length === 0) @@ -19050,6 +21988,14 @@ class Query { return true; } } + else if (value.startsWith('lines:')) { + const linesQueryMatch = value.match(/(lines:)([0-9]+)-([0-9]+)/); + if (linesQueryMatch && linesQueryMatch.length === 4) { + const fromLine = parseInt(linesQueryMatch[2]); + const toLine = parseInt(linesQueryMatch[3]); + return marker.fileLine && marker.fileLine >= fromLine && marker.fileLine <= toLine; + } + } else throw new Error('Unsupported query format' + value); } @@ -19181,6 +22127,7 @@ class QuerySuggest extends obsidian.PopoverSuggest { return [ { text: 'SEARCH OPERATORS', group: true }, { text: 'tag:', append: '#' }, + { text: 'name:', textToInsert: 'name:""', cursorOffset: -1 }, { text: 'path:', textToInsert: 'path:""', cursorOffset: -1 }, { text: 'linkedto:', @@ -19236,199 +22183,65 @@ class QuerySuggest extends obsidian.PopoverSuggest { } } close() { - this.suggestionsDiv.remove(); - this.clear(); - for (const [eventName, handler] of this.eventHandlers) - this.sourceElement.inputEl.removeEventListener(eventName, handler); - } - updateSelection(newSelection) { - var _a; - if (this.selection && this.selection.element) { - this.selection.element.removeClass('is-selected'); - } - if (!newSelection.group) { - (_a = newSelection.element) === null || _a === void 0 ? void 0 : _a.addClass('is-selected'); - this.selection = newSelection; - } - } - renderSuggestion(value, el) { - el.setText(value.text); - } - selectSuggestion(suggestion, event) { - var _a, _b, _c, _d; - // We don't use it, but need it here to inherit from QuerySuggest - if (!suggestion.group) { - const insertAt = suggestion.insertAt != null - ? suggestion.insertAt - : this.sourceElement.inputEl.selectionStart; - const insertSkip = (_a = suggestion.insertSkip) !== null && _a !== void 0 ? _a : 0; - let addedText = (_b = suggestion.textToInsert) !== null && _b !== void 0 ? _b : suggestion.text; - addedText += (_c = suggestion.append) !== null && _c !== void 0 ? _c : ''; - const currentText = this.sourceElement.getValue(); - const newText = currentText.substring(0, insertAt) + - addedText + - currentText.substring(insertAt + insertSkip); - this.sourceElement.setValue(newText); - this.sourceElement.inputEl.selectionEnd = - this.sourceElement.inputEl.selectionStart = - insertAt + - addedText.length + - ((_d = suggestion === null || suggestion === void 0 ? void 0 : suggestion.cursorOffset) !== null && _d !== void 0 ? _d : 0); - // Don't allow a click to steal the focus from the text box - event.preventDefault(); - // This causes the text area to scroll to the new cursor position - this.sourceElement.inputEl.blur(); - this.sourceElement.inputEl.focus(); - // Refresh the suggestion box - this.doSuggestIfNeeded(); - // Make the UI react to the change - this.sourceElement.onChanged(); - } - } - getAllPathNames(search) { - const allFiles = this.app.vault.getFiles(); - let toReturn = []; - for (const file of allFiles) { - if (!search || - (search && - file.path.toLowerCase().includes(search.toLowerCase()))) - toReturn.push(file.path); - } - return toReturn; - } -} - -class LocationSearchDialog extends obsidian.SuggestModal { - constructor(app, settings, dialogAction, title, editor = null, includeResults = null, hasIcons = false, moreInstructions = null) { - super(app); - this.lastSearchTime = 0; - this.delayInMs = 250; - this.lastSearch = ''; - this.lastSearchResults = []; - this.includeResults = []; - this.hasIcons = false; - this.editor = null; - // If specified, this rectangle is used as a parameter for the various geocoding providers, so they can - // prioritize results that are closer to the current view - this.searchArea = null; - this.settings = settings; - this.searcher = new GeoSearcher(app, settings); - this.dialogAction = dialogAction; - this.editor = editor; - this.includeResults = includeResults; - this.hasIcons = hasIcons; - this.setPlaceholder(title + ': type a place name or paste a string to parse'); - let instructions = [{ command: 'enter', purpose: 'to use' }]; - if (moreInstructions) - instructions = instructions.concat(moreInstructions); - this.setInstructions(instructions); - this.inputEl.addEventListener('keypress', (ev) => { - // In the case of a custom select function, trigger it also for Shift+Enter. - // Obsidian doesn't have an API for that, so we find the selected item in a rather patchy way, - // and manually close the dialog - if (ev.key == 'Enter' && - ev.shiftKey && - this.customOnSelect != null) { - const chooser = this.chooser; - const selectedItem = chooser === null || chooser === void 0 ? void 0 : chooser.selectedItem; - const values = chooser === null || chooser === void 0 ? void 0 : chooser.values; - if (chooser && values) { - this.onChooseSuggestion(values[selectedItem], ev); - this.close(); - } - } - }); - } - getSuggestions(query) { - let result = []; - // Get results from the "to include" list, e.g. existing markers - let resultsToInclude = []; - if (this.includeResults) - for (const toInclude of this.includeResults) { - if (query.length == 0 || - toInclude.name.toLowerCase().includes(query.toLowerCase())) - resultsToInclude.push(toInclude); - if (resultsToInclude.length >= MAX_MARKER_SUGGESTIONS) - break; - } - result = result.concat(resultsToInclude); - // From this point onward, results are added asynchronously. - // We make sure to add them *after* the synchronuous results, otherwise - // it will be very annoying for a user who may have already selected something. - if (query == this.lastSearch) { - result = result.concat(this.lastSearchResults); - } - this.getSearchResultsWithDelay(query); - return result; + this.suggestionsDiv.remove(); + this.clear(); + for (const [eventName, handler] of this.eventHandlers) + this.sourceElement.inputEl.removeEventListener(eventName, handler); } - renderSuggestion(value, el) { + updateSelection(newSelection) { var _a; - el.addClass('map-search-suggestion'); - if (this.hasIcons) { - let iconDiv = el.createDiv('search-icon-div'); - const compiledIcon = getIconFromOptions((_a = value.icon) !== null && _a !== void 0 ? _a : SEARCH_RESULT_MARKER); - let iconElement = compiledIcon.createIcon(); - let style = iconElement.style; - style.marginLeft = style.marginTop = '0'; - style.position = 'relative'; - iconDiv.append(iconElement); - let textDiv = el.createDiv('search-text-div'); - textDiv.appendText(value.name); + if (this.selection && this.selection.element) { + this.selection.element.removeClass('is-selected'); + } + if (!newSelection.group) { + (_a = newSelection.element) === null || _a === void 0 ? void 0 : _a.addClass('is-selected'); + this.selection = newSelection; } - else - el.appendText(value.name); - } - onChooseSuggestion(value, evt) { - if (this.dialogAction == 'newNote') - this.newNote(value.location, evt, value.name); - else if (this.dialogAction == 'addToNote') - this.addToNote(value.location, evt, value.name); - else if (this.dialogAction == 'custom' && this.customOnSelect != null) - this.customOnSelect(value, evt); } - newNote(location, ev, query) { - return __awaiter(this, void 0, void 0, function* () { - const locationString = `${location.lat},${location.lng}`; - const newFileName = formatWithTemplates(this.settings.newNoteNameFormat, query); - const file = yield newNote(this.app, 'singleLocation', this.settings.newNotePath, newFileName, locationString, this.settings.newNoteTemplate); - // If there is an open map view, use it to decide how and where to open the file. - // Otherwise, open the file from the active leaf - const mapView = findOpenMapView(this.app); - if (mapView) { - mapView.mapContainer.goToFile(file, ev.ctrlKey, handleNewNoteCursorMarker); - } - else { - const leaf = this.app.workspace.activeLeaf; - yield leaf.openFile(file); - const editor = yield getEditor(this.app); - if (editor) - yield handleNewNoteCursorMarker(editor); - } - }); + renderSuggestion(value, el) { + el.setText(value.text); } - addToNote(location, ev, query) { - return __awaiter(this, void 0, void 0, function* () { - const locationString = `[${location.lat},${location.lng}]`; - verifyOrAddFrontMatter(this.editor, 'location', locationString); - }); + selectSuggestion(suggestion, event) { + var _a, _b, _c, _d; + // We don't use it, but need it here to inherit from QuerySuggest + if (!suggestion.group) { + const insertAt = suggestion.insertAt != null + ? suggestion.insertAt + : this.sourceElement.inputEl.selectionStart; + const insertSkip = (_a = suggestion.insertSkip) !== null && _a !== void 0 ? _a : 0; + let addedText = (_b = suggestion.textToInsert) !== null && _b !== void 0 ? _b : suggestion.text; + addedText += (_c = suggestion.append) !== null && _c !== void 0 ? _c : ''; + const currentText = this.sourceElement.getValue(); + const newText = currentText.substring(0, insertAt) + + addedText + + currentText.substring(insertAt + insertSkip); + this.sourceElement.setValue(newText); + this.sourceElement.inputEl.selectionEnd = + this.sourceElement.inputEl.selectionStart = + insertAt + + addedText.length + + ((_d = suggestion === null || suggestion === void 0 ? void 0 : suggestion.cursorOffset) !== null && _d !== void 0 ? _d : 0); + // Don't allow a click to steal the focus from the text box + event.preventDefault(); + // This causes the text area to scroll to the new cursor position + this.sourceElement.inputEl.blur(); + this.sourceElement.inputEl.focus(); + // Refresh the suggestion box + this.doSuggestIfNeeded(); + // Make the UI react to the change + this.sourceElement.onChanged(); + } } - getSearchResultsWithDelay(query) { - return __awaiter(this, void 0, void 0, function* () { - if (query === this.lastSearch || query.length < 3) - return; - const timestamp = Date.now(); - this.lastSearchTime = timestamp; - const Sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); - yield Sleep(this.delayInMs); - if (this.lastSearchTime != timestamp) { - // Search is canceled by a newer search - return; - } - // After the sleep our search is still the last -- so the user stopped and we can go on - this.lastSearch = query; - this.lastSearchResults = yield this.searcher.search(query, this.searchArea); - this.updateSuggestions(); - }); + getAllPathNames(search) { + const allFiles = this.app.vault.getFiles(); + let toReturn = []; + for (const file of allFiles) { + if (!search || + (search && + file.path.toLowerCase().includes(search.toLowerCase()))) + toReturn.push(file.path); + } + return toReturn; } } @@ -19844,6 +22657,41 @@ class SearchControl extends leafletSrc.Control { searchDialog.open(); } } +class RealTimeControl extends leafletSrc.Control { + constructor(options, view, app, settings) { + super(options); + this.view = view; + this.app = app; + this.settings = settings; + } + onAdd(map) { + const div = leafletSrc.DomUtil.create('div', 'leaflet-bar leaflet-control'); + this.locateButton = div.createEl('a'); + this.locateButton.innerHTML = '⌖'; + this.locateButton.style.fontSize = '25px'; + this.locateButton.onClickEvent((ev) => { + new obsidian.Notice('Asking for the current location'); + open('geohelper://locate'); + this.clearButton.style.display = 'block'; + }); + this.clearButton = div.createEl('a'); + this.clearButton.innerHTML = 'X'; + this.clearButton.style.display = 'none'; + this.clearButton.onClickEvent((ev) => { + this.view.setRealTimeLocation(null, 0, 'clear'); + this.clearButton.style.display = 'none'; + }); + return div; + } +} + +function isSame(loc1, loc2) { + if (loc1 === null && loc2 === null) + return true; + if (loc1 === null || loc2 === null) + return false; + return loc1.center.distanceTo(loc2.center) < 1 && loc1.accuracy == loc2.accuracy; +} class MapContainer { /** @@ -19860,16 +22708,22 @@ class MapContainer { this.markers = new Map(); /** The search controls (search & clear buttons) */ this.searchControls = null; + /** The real-time geolocation controls */ + this.realTimeControls = null; /** A marker of the last search result */ this.searchResult = null; /** The currently highlighted marker (if any) */ this.highlight = null; /** The actual entity that is highlighted, which is either equal to the above, or the cluster group that it belongs to */ this.actualHighlight = null; + // TODO document + this.realTimeLocationMarker = null; + this.realTimeLocationRadius = null; } })(); this.ongoingChanges = 0; this.freezeMap = false; + this.lastRealTimeLocation = null; /** Is the view currently open */ this.isOpen = false; this.settings = settings; @@ -19895,7 +22749,7 @@ class MapContainer { } copyStateUrl() { const params = stateToUrl(this.state); - const url = `obsidian://mapview?action=open&${params}`; + const url = `obsidian://mapview?do=open&${params}`; navigator.clipboard.writeText(url); new obsidian.Notice('Copied state URL to clipboard'); } @@ -19972,6 +22826,8 @@ class MapContainer { * we want to reliably get the status of freezeMap */ highLevelSetViewState(partialState) { + if (Object.keys(partialState).length === 0) + return; const state = this.getState(); if (state) { const newState = Object.assign({}, state, partialState); @@ -20092,6 +22948,7 @@ class MapContainer { }); (_c = (_b = this.display) === null || _b === void 0 ? void 0 : _b.controls) === null || _c === void 0 ? void 0 : _c.invalidateActivePreset(); this.setHighlight(this.display.highlight); + this.updateRealTimeLocationMarkers(); })); this.display.map.on('moveend', (event) => __awaiter(this, void 0, void 0, function* () { var _d, _e; @@ -20102,6 +22959,7 @@ class MapContainer { }); (_e = (_d = this.display) === null || _d === void 0 ? void 0 : _d.controls) === null || _e === void 0 ? void 0 : _e.invalidateActivePreset(); this.setHighlight(this.display.highlight); + this.updateRealTimeLocationMarkers(); })); this.display.map.on('movestart', (event) => { this.ongoingChanges += 1; @@ -20114,20 +22972,23 @@ class MapContainer { }); this.display.map.on('viewreset', () => { this.setHighlight(this.display.highlight); + this.updateRealTimeLocationMarkers(); }); if (this.viewSettings.showSearch) { this.display.searchControls = new SearchControl({ position: 'topright' }, this, this.app, this.settings); this.display.map.addControl(this.display.searchControls); } + if (this.viewSettings.showRealTimeButton && this.settings.supportRealTimeGeolocation) { + this.display.realTimeControls = new RealTimeControl({ position: 'topright' }, this, this.app, this.settings); + this.display.map.addControl(this.display.realTimeControls); + } if (this.settings.showClusterPreview) { this.display.clusterGroup.on('clustermouseover', (event) => { - var _a; - if (!((_a = this.app) === null || _a === void 0 ? void 0 : _a.isMobile)) + if (!isMobile(this.app)) this.openClusterPreviewPopup(event); }); this.display.clusterGroup.on('clustercontextmenu', (event) => { - var _a; - if ((_a = this.app) === null || _a === void 0 ? void 0 : _a.isMobile) + if (isMobile(this.app)) this.openClusterPreviewPopup(event); }); this.display.clusterGroup.on('clustermouseout', (event) => { @@ -20135,6 +22996,7 @@ class MapContainer { }); this.display.clusterGroup.on('clusterclick', () => { this.setHighlight(this.display.highlight); + this.updateRealTimeLocationMarkers(); }); } this.display.map.on('click', (event) => { @@ -20143,43 +23005,9 @@ class MapContainer { // Build the map marker right-click context menu this.display.map.on('contextmenu', (event) => __awaiter(this, void 0, void 0, function* () { let mapPopup = new obsidian.Menu(); - mapPopup.setNoIcon(); - const location = `${event.latlng.lat},${event.latlng.lng}`; - mapPopup.addItem((item) => { - item.setTitle('New note here (inline)'); - item.onClick((ev) => __awaiter(this, void 0, void 0, function* () { - const newFileName = formatWithTemplates(this.settings.newNoteNameFormat); - const file = yield newNote(this.app, 'multiLocation', this.settings.newNotePath, newFileName, location, this.settings.newNoteTemplate); - this.goToFile(file, ev.ctrlKey, handleNewNoteCursorMarker); - })); - }); - mapPopup.addItem((item) => { - item.setTitle('New note here (front matter)'); - item.onClick((ev) => __awaiter(this, void 0, void 0, function* () { - const newFileName = formatWithTemplates(this.settings.newNoteNameFormat); - const file = yield newNote(this.app, 'singleLocation', this.settings.newNotePath, newFileName, location, this.settings.newNoteTemplate); - this.goToFile(file, ev.ctrlKey, handleNewNoteCursorMarker); - })); - }); - mapPopup.addItem((item) => { - item.setTitle(`Copy geolocation`); - item.onClick((_ev) => { - navigator.clipboard.writeText(`[](geo:${location})`); - }); - }); - mapPopup.addItem((item) => { - item.setTitle(`Copy geolocation as front matter`); - item.onClick((_ev) => { - navigator.clipboard.writeText(`---\nlocation: [${location}]\n---\n\n`); - }); - }); - mapPopup.addItem((item) => { - item.setTitle('Open in default app'); - item.onClick((_ev) => { - open(`geo:${event.latlng.lat},${event.latlng.lng}`); - }); - }); - populateOpenInItems(mapPopup, event.latlng, this.settings); + addNewNoteItems(mapPopup, event.latlng, this, this.settings, this.app); + addCopyGeolocationItems(mapPopup, event.latlng); + addOpenWith(mapPopup, event.latlng, this.settings); mapPopup.showAtPosition(event.originalEvent); })); }); @@ -20280,20 +23108,17 @@ class MapContainer { icon: marker.icon || new leafletSrc.Icon.Default(), }); newMarker.on('click', (event) => { - var _a; - if ((_a = this.app) === null || _a === void 0 ? void 0 : _a.isMobile) + if (isMobile(this.app)) this.showMarkerPopups(marker, newMarker); else this.goToMarker(marker, event.originalEvent.ctrlKey, true); }); newMarker.on('mouseover', (event) => { - var _a; - if (!((_a = this.app) === null || _a === void 0 ? void 0 : _a.isMobile)) + if (!isMobile(this.app)) this.showMarkerPopups(marker, newMarker); }); newMarker.on('mouseout', (event) => { - var _a; - if (!((_a = this.app) === null || _a === void 0 ? void 0 : _a.isMobile)) + if (!isMobile(this.app)) newMarker.closePopup(); }); newMarker.on('add', (event) => { @@ -20309,25 +23134,19 @@ class MapContainer { openMarkerContextMenu(fileMarker, mapMarker, ev) { this.setHighlight(mapMarker); let mapPopup = new obsidian.Menu(); - mapPopup.setNoIcon(); mapPopup.addItem((item) => { item.setTitle('Open note'); + item.setIcon('file'); + item.setSection('open-note'); item.onClick((ev) => __awaiter(this, void 0, void 0, function* () { this.goToMarker(fileMarker, ev.ctrlKey, true); })); }); - mapPopup.addItem((item) => { - item.setTitle('Open geolocation in default app'); - item.onClick((ev) => { - open(`geo:${fileMarker.location.lat},${fileMarker.location.lng}`); - }); - }); populateOpenInItems(mapPopup, fileMarker.location, this.settings); if (ev) mapPopup.showAtPosition(ev); } showMarkerPopups(fileMarker, mapMarker) { - var _a, _b; if (this.settings.showNotePreview) { const previewDetails = { scroll: fileMarker.fileLine, @@ -20351,7 +23170,7 @@ class MapContainer { ? fileName.substring(0, fileName.lastIndexOf('.md')) : fileName; let content = `

${fileNameWithoutExtension}

`; - if (((_a = this.app) === null || _a === void 0 ? void 0 : _a.isMobile) && + if (isMobile(this.app) && fileMarker.extraName && fileMarker.extraName.length > 0) content += `

${fileMarker.extraName}

`; @@ -20360,17 +23179,19 @@ class MapContainer { closeButton: true, autoPan: false, className: 'marker-popup', + }) + .on('popupopen', (event) => { + var _a; + (_a = event.popup + .getElement()) === null || _a === void 0 ? void 0 : _a.onClickEvent(() => { + this.goToMarker(fileMarker, false, true); + }); }) .openPopup() .on('popupclose', (event) => { // For some reason popups don't recycle on mobile if this is not added mapMarker.unbindPopup(); }); - (_b = mapMarker - .getPopup() - .getElement()) === null || _b === void 0 ? void 0 : _b.onClickEvent(() => { - this.goToMarker(fileMarker, false, true); - }); } } openClusterPreviewPopup(event) { @@ -20588,6 +23409,40 @@ class MapContainer { } return null; } + updateRealTimeLocationMarkers() { + if (this.display.realTimeLocationMarker) + this.display.realTimeLocationMarker.removeFrom(this.display.map); + if (this.display.realTimeLocationRadius) + this.display.realTimeLocationRadius.removeFrom(this.display.map); + if (this.lastRealTimeLocation === null) + return; + const center = this.lastRealTimeLocation.center; + const accuracy = this.lastRealTimeLocation.accuracy; + this.display.realTimeLocationMarker = leafletSrc.marker(center, { + icon: getIconFromOptions(CURRENT_LOCATION_MARKER), + }).addTo(this.display.map); + this.display.realTimeLocationRadius = leafletSrc.circle(center, { radius: accuracy }).addTo(this.display.map); + } + setRealTimeLocation(center, accuracy, source) { + const location = center === null ? null : { + center: center, + accuracy: accuracy, + source: source, + timestamp: Date.now() + }; + console.log('new location:', location); + if (!isSame(location, this.lastRealTimeLocation)) { + this.lastRealTimeLocation = location; + this.updateRealTimeLocationMarkers(); + let newState = {}; + if (!this.display.map.getBounds().contains(location.center)) + newState.mapCenter = location.center; + // TODO take the radius into account + if (this.state.mapZoom < MIN_REAL_TIME_LOCATION_ZOOM) + newState.mapZoom = MIN_REAL_TIME_LOCATION_ZOOM; + this.highLevelSetViewState(newState); + } + } } class BaseMapView extends obsidian.ItemView { @@ -20624,6 +23479,7 @@ class BaseMapView extends obsidian.ItemView { item.setTitle('Copy Map View URL').onClick(() => { this.mapContainer.copyStateUrl(); }); + item.setIcon('curly-braces'); }); super.onPaneMenu(menu, source); } @@ -20739,6 +23595,7 @@ class MainMapView extends BaseMapView { viewTabType: 'regular', showPresets: true, showSearch: true, + showRealTimeButton: true, showOpenButton: false, }; super(leaf, settings, viewSettings, plugin); @@ -21497,17 +24354,28 @@ class MapViewPlugin extends obsidian.Plugin { // this.registerView(consts.MINI_MAP_VIEW_NAME, (leaf: WorkspaceLeaf) => { // return new MiniMapView(leaf, this.settings, this); // }); - this.registerObsidianProtocolHandler('mapview', (params) => { - if (params.action == 'mapview') { - const state = stateFromParsedUrl(params); - // If a saved URL is opened in another device on which there aren't the same sources, use - // the default source instead - if (state.chosenMapSource >= this.settings.mapSources.length) - state.chosenMapSource = - DEFAULT_SETTINGS.defaultState.chosenMapSource; - this.openMapWithState(state, false, false); + this.registerObsidianProtocolHandler('mapview', (params) => __awaiter(this, void 0, void 0, function* () { + if (params.action === 'mapview') { + if (params.do === 'update-real-time-location') { + const location = params.centerLat && params.centerLng + ? new leafletSrc.LatLng(parseFloat(params.centerLat), parseFloat(params.centerLng)) : null; + const accuracy = params.accuracy; + const map = yield this.openMap(false, null); + if (map) { + map.mapContainer.setRealTimeLocation(location, parseFloat(accuracy), 'geohelper'); + } + } + else { + const state = stateFromParsedUrl(params); + // If a saved URL is opened in another device on which there aren't the same sources, use + // the default source instead + if (state.chosenMapSource >= this.settings.mapSources.length) + state.chosenMapSource = + DEFAULT_SETTINGS.defaultState.chosenMapSource; + this.openMapWithState(state, false, false); + } } - }); + })); this.suggestor = new LocationSuggest(this.app, this.settings); this.tagSuggestor = new TagSuggest(this.app, this.settings); this.urlConvertor = new UrlConvertor(this.app, this.settings); @@ -21584,38 +24452,18 @@ class MapViewPlugin extends obsidian.Plugin { this.addSettingTab(new SettingsTab(this.app, this)); // Add items to the file context menu (run when the context menu is built) // This is the context menu in the File Explorer and clicking "More options" (three dots) from within a file. - this.app.workspace.on('file-menu', (menu, file, source, leaf) => __awaiter(this, void 0, void 0, function* () { return this.onFileMenu(menu, file, source, leaf); })); + this.app.workspace.on('file-menu', (menu, file, source, leaf) => this.onFileMenu(menu, file, source, leaf)); // Currently frozen until I have time to work on this feature's quirks // if (this.app.workspace.layoutReady) this.initMiniMap() // else this.app.workspace.onLayoutReady(() => this.initMiniMap()); // Add items to the editor context menu (run when the context menu is built) // This is the context menu when right clicking within an editor view. - this.app.workspace.on('editor-menu', (menu, editor, view) => __awaiter(this, void 0, void 0, function* () { return this.onEditorMenu(menu, editor, view); })); - }); - } - /** - * Open an instance of the map at the given geolocation. - * The active query is cleared so we'll be sure that the location is actually displayed. - * @param location The geolocation to open the map at - * @param ctrlKey Was the control key pressed - * @param file the file this location belongs to - * @param fileLine the line in the file (if it's an inline link) - * @param keepZoom don't zoom the map - */ - openMapWithLocation(location, ctrlKey, file, fileLine = null, keepZoom = false) { - return __awaiter(this, void 0, void 0, function* () { - let newState = { - mapCenter: location, - query: '', - }; - if (!keepZoom) - newState = Object.assign(newState, { - mapZoom: this.settings.zoomOnGoFromNote, - }); - yield this.openMapWithState(newState, ctrlKey, false, file, fileLine); + this.app.workspace.on('editor-menu', (menu, editor, view) => { + this.onEditorMenu(menu, editor, view); + }); }); } - openMapWithState(state, ctrlKey, forceAutoFit, highlightFile = null, highlightFileLine = null) { + openMap(ctrlKey, state) { return __awaiter(this, void 0, void 0, function* () { // Find the best candidate for a leaf to open the map view on. // If there's an open map view, use that, otherwise use the current leaf. @@ -21632,30 +24480,60 @@ class MapViewPlugin extends obsidian.Plugin { type: MAP_VIEW_NAME, state: state, }); - if (chosenLeaf.view instanceof MainMapView) { - const map = chosenLeaf.view.mapContainer; + if (chosenLeaf.view instanceof MainMapView) + return chosenLeaf.view; + return null; + }); + } + openMapWithState(state, ctrlKey, forceAutoFit, highlightFile = null, highlightFileLine = null) { + return __awaiter(this, void 0, void 0, function* () { + const mapView = yield this.openMap(ctrlKey, state); + if (mapView && mapView.mapContainer) { + const map = mapView.mapContainer; if (forceAutoFit) map.autoFitMapToMarkers(); if (highlightFile) { const markerToHighlight = map.findMarkerByFileLine(highlightFile, highlightFileLine); - chosenLeaf.view.mapContainer.setHighlight(markerToHighlight); + map.setHighlight(markerToHighlight); } } }); } + /** + * Open an instance of the map at the given geolocation. + * The active query is cleared so we'll be sure that the location is actually displayed. + * @param location The geolocation to open the map at + * @param ctrlKey Was the control key pressed + * @param file the file this location belongs to + * @param fileLine the line in the file (if it's an inline link) + * @param keepZoom don't zoom the map + */ + openMapWithLocation(location, ctrlKey, file, fileLine = null, keepZoom = false) { + return __awaiter(this, void 0, void 0, function* () { + let newState = { + mapCenter: location, + query: '', + }; + if (!keepZoom) + newState = Object.assign(newState, { + mapZoom: this.settings.zoomOnGoFromNote, + }); + yield this.openMapWithState(newState, ctrlKey, false, file, fileLine); + }); + } /** * Get the geolocation on the current editor line * @param editor obsidian Editor instance * @param view obsidian FileView instance * @private */ - getLocationOnEditorLine(editor, view) { - const line = editor.getLine(editor.getCursor().line); + getLocationOnEditorLine(editor, lineNumber, view, alsoFrontMatter) { + const line = editor.getLine(lineNumber); const match = matchInlineLocation(line)[0]; let selectedLocation = null; if (match) selectedLocation = new leafletSrc.LatLng(parseFloat(match.groups.lat), parseFloat(match.groups.lng)); - else { + else if (alsoFrontMatter) { const fmLocation = getFrontMatterLocation(view.file, this.app); if (line.indexOf('location') > -1 && fmLocation) selectedLocation = fmLocation; @@ -21687,127 +24565,71 @@ class MapViewPlugin extends obsidian.Plugin { .setViewState({ type: MINI_MAP_VIEW_NAME }); } onFileMenu(menu, file, _source, leaf) { - return __awaiter(this, void 0, void 0, function* () { - if (file instanceof obsidian.TFile) { - let hasAnyLocation = false; - const location = getFrontMatterLocation(file, this.app); - if (location) { - // If there is a geolocation in the front matter of the file - // Add an option to open it in the map - menu.addItem((item) => { - item.setTitle('Show on map'); - item.setSection('mapview'); - item.setIcon('globe'); - item.onClick((evt) => __awaiter(this, void 0, void 0, function* () { - return yield this.openMapWithLocation(location, evt.ctrlKey, file, null, evt.shiftKey); - })); - }); - // Add an option to open it in the default app - menu.addItem((item) => { - item.setTitle('Open with default app'); - item.setSection('mapview'); - item.onClick((_ev) => { - open(`geo:${location.lat},${location.lng}`); - }); - }); - // Populate menu items from user defined "Open In" strings - populateOpenInItems(menu, location, this.settings); - hasAnyLocation = true; - } - else { - if (leaf && leaf.view instanceof obsidian.MarkdownView) { - // If there is no valid geolocation in the front matter, add a menu item to populate it. - const editor = leaf.view.editor; - menu.addItem((item) => { - item.setTitle('Add geolocation (front matter)'); - item.setSection('mapview'); - item.setIcon('globe'); - item.onClick((evt) => __awaiter(this, void 0, void 0, function* () { - const dialog = new LocationSearchDialog(this.app, this.settings, 'addToNote', 'Add geolocation to note', editor); - dialog.open(); - })); - }); - } - } - const contentMarkers = yield getMarkersFromFileContent(file, this.settings, this.app); - if (contentMarkers.length > 0) { - hasAnyLocation = true; - } - if (hasAnyLocation) { - menu.addItem((item) => { - item.setTitle('Focus note in Map View'); - item.setIcon('globe'); - item.setSection('mapview'); - item.onClick((evt) => __awaiter(this, void 0, void 0, function* () { - return yield this.openMapWithState({ - query: replaceFollowActiveNoteQuery(file, this.settings), - }, evt.ctrlKey, true); - })); - }); + const editor = leaf && leaf.view instanceof obsidian.MarkdownView ? leaf.view.editor : null; + if (file instanceof obsidian.TFile) { + const location = getFrontMatterLocation(file, this.app); + if (location) { + // If there is a geolocation in the front matter of the file + // Add an option to open it in the map + addShowOnMap(menu, location, file, null, this); + // Add an option to open it in the default app + addOpenWith(menu, location, this.settings); + } + else { + if (editor) { + // If there is no valid geolocation in the front matter, add a menu item to populate it. + addGeolocationToNote(menu, this.app, editor, this.settings); } } - }); + if (isMobile(this.app)) { + // On mobile there's no editor context menu, so add it here instead + this.onEditorMenu(menu, editor, leaf.view); + } + addFocusNoteInMapView(menu, file, this.settings, this); + if (this.settings.debug) + addImport(menu, editor, this.app, this, this.settings); + } } onEditorMenu(menu, editor, view) { - return __awaiter(this, void 0, void 0, function* () { - if (view instanceof obsidian.FileView) { - const location = this.getLocationOnEditorLine(editor, view); + if (!editor) + return; + if (view instanceof obsidian.FileView) { + let multiLineMode = false; + const [fromLine, toLine, geolocations] = this.geolocationsWithinSelection(editor, view); + if (geolocations.length > 0) { + multiLineMode = true; + addFocusLinesInMapView(menu, view.file, fromLine, toLine, geolocations.length, this, this.settings); + } + if (!multiLineMode) { + const editorLine = editor.getCursor().line; + const location = this.getLocationOnEditorLine(editor, editorLine, view, true); if (location) { - // If there is a geolocation on the line - // Add an option to open it in the map - menu.addItem((item) => { - item.setTitle('Show on map'); - item.setIcon('globe'); - item.setSection('mapview'); - item.onClick((evt) => __awaiter(this, void 0, void 0, function* () { - return yield this.openMapWithLocation(location, evt.ctrlKey, view.file, editor.getCursor().line, evt.shiftKey); - })); - }); - // Add an option to open it in the default app - menu.addItem((item) => { - item.setTitle('Open with default app'); - item.setSection('mapview'); - item.onClick((_ev) => { - open(`geo:${location.lat},${location.lng}`); - }); - }); - // Populate menu items from user defined "Open In" strings - populateOpenInItems(menu, location, this.settings); + const editorLine = editor.getCursor().line; + addShowOnMap(menu, location, view.file, editorLine, this); + addOpenWith(menu, location, this.settings); } - if (editor.getSelection()) { - // If there is text selected, add a menu item to convert it to coordinates using geosearch - menu.addItem((item) => { - item.setTitle('Convert to geolocation (geosearch)'); - item.setSection('mapview'); - item.onClick(() => __awaiter(this, void 0, void 0, function* () { return yield this.suggestor.selectionToLink(editor); })); - }); - } - if (this.urlConvertor.hasMatchInLine(editor)) - // If the line contains a recognized geolocation that can be converted from a URL parsing rule - menu.addItem((item) => __awaiter(this, void 0, void 0, function* () { - item.setTitle('Convert to geolocation'); - item.setSection('mapview'); - item.onClick(() => __awaiter(this, void 0, void 0, function* () { - this.urlConvertor.convertUrlAtCursorToGeolocation(editor); - })); - })); - const clipboard = yield navigator.clipboard.readText(); - let clipboardLocation = this.urlConvertor.parseLocationFromUrl(clipboard); - if (clipboardLocation) { - // If the clipboard contains a recognized geolocation that can be converted from a URL parsing rule - menu.addItem((item) => { - item.setTitle('Paste as geolocation'); - item.setSection('mapview'); - item.onClick(() => __awaiter(this, void 0, void 0, function* () { - if (clipboardLocation instanceof Promise) - clipboardLocation = yield clipboardLocation; - if (clipboardLocation) - this.urlConvertor.insertLocationToEditor(clipboardLocation.location, editor); - })); - }); + } + addUrlConversionItems(menu, editor, this.suggestor, this.urlConvertor); + } + } + geolocationsWithinSelection(editor, view) { + const editorSelections = editor.listSelections(); + if (editorSelections && editorSelections.length > 0) { + const anchorLine = editorSelections[0].anchor.line; + const headLine = editorSelections[0].head.line; + if (anchorLine != headLine) { + const fromLine = Math.min(anchorLine, headLine); + const toLine = Math.max(anchorLine, headLine); + let geolocations = []; + for (let line = fromLine; line <= toLine; line++) { + const geolocationOnLine = this.getLocationOnEditorLine(editor, line, view, false); + if (geolocationOnLine) + geolocations.push(geolocationOnLine); } + return [fromLine, toLine, geolocations]; } - }); + } + return [null, null, []]; } } diff --git a/.obsidian/plugins/obsidian-map-view/manifest.json b/.obsidian/plugins/obsidian-map-view/manifest.json index 5e431ea8..25e324ab 100644 --- a/.obsidian/plugins/obsidian-map-view/manifest.json +++ b/.obsidian/plugins/obsidian-map-view/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-map-view", "name": "Map View", - "version": "2.1.1", + "version": "2.2.0", "minAppVersion": "0.15.3", "description": "An interactive map view.", "isDesktopOnly": false diff --git a/.obsidian/plugins/obsidian-reminder-plugin/data.json b/.obsidian/plugins/obsidian-reminder-plugin/data.json index 6c514849..0fd54b70 100644 --- a/.obsidian/plugins/obsidian-reminder-plugin/data.json +++ b/.obsidian/plugins/obsidian-reminder-plugin/data.json @@ -341,26 +341,26 @@ } ], "01.02 Home/Household.md": [ - { - "title": "🛌 [[Household]]: Buy new bed clothes", - "time": "2022-09-30", - "rowNumber": 61 - }, { "title": ":bed: [[Household]] Change bedsheets %%done_del%%", "time": "2022-10-01", - "rowNumber": 96 - }, - { - "title": "🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%%", - "time": "2022-10-03", - "rowNumber": 90 + "rowNumber": 97 }, { "title": "♻ [[Household]]: *Cardboard* recycling collection %%done_del%%", "time": "2022-10-04", "rowNumber": 79 }, + { + "title": "🛌 [[Household]]: Buy new bed clothes", + "time": "2022-10-08", + "rowNumber": 61 + }, + { + "title": "🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%%", + "time": "2022-10-10", + "rowNumber": 90 + }, { "title": "♻ [[Household]]: *Paper* recycling collection %%done_del%%", "time": "2022-10-11", @@ -398,17 +398,17 @@ { "title": ":birthday: **[[MRCK|Meggi-mo]]'s Papa** (1962)", "time": "2023-02-02", - "rowNumber": 277 + "rowNumber": 259 }, { "title": ":birthday: **[[MRCK|Meggi-mo]]**", "time": "2023-02-28", - "rowNumber": 275 + "rowNumber": 257 }, { "title": "[[MRCK|Meggi-mo]] Saint Patrick's Day", "time": "2023-03-17", - "rowNumber": 279 + "rowNumber": 261 } ], "01.03 Family/Thaïs Bédier.md": [ @@ -502,13 +502,18 @@ "05.02 Networks/Configuring UFW.md": [ { "title": "🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%%", - "time": "2022-10-01", + "time": "2022-10-08", "rowNumber": 239 }, + { + "title": "[[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix", + "time": "2022-10-08", + "rowNumber": 269 + }, { "title": "🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list", - "time": "2022-10-01", - "rowNumber": 268 + "time": "2022-10-08", + "rowNumber": 272 } ], "00.01 Admin/Calendars/2022-01-22.md": [ @@ -583,7 +588,7 @@ { "title": ":label: [[Bookmarks - Obsidian]]: Review bookmarks", "time": "2022-11-15", - "rowNumber": 255 + "rowNumber": 266 } ], "00.08 Bookmarks/Bookmarks - Selfhosted Apps.md": [ @@ -606,6 +611,13 @@ "time": "2022-12-09", "rowNumber": 82 } + ], + "00.08 Bookmarks/Bookmarks - Work.md": [ + { + "title": ":label: [[Bookmarks - Work]]: review bookmarks", + "time": "2022-12-16", + "rowNumber": 71 + } ] }, "debug": false, diff --git a/.obsidian/plugins/obsidian-style-settings/main.js b/.obsidian/plugins/obsidian-style-settings/main.js index 2999162a..1fd18cd3 100644 --- a/.obsidian/plugins/obsidian-style-settings/main.js +++ b/.obsidian/plugins/obsidian-style-settings/main.js @@ -3861,7 +3861,14 @@ const tr = {}; const uk = {}; -const zh = {}; +const zh = { + "Default:": "默认:", + "Error:": "错误:", + "missing default light value, or value is not in a valid color format": "缺少默认的浅色模式色值,或该色值没有采用一个有效的颜色格式", + "missing default dark value, or value is not in a valid color format": "缺少默认的深色模式色值,或该色值没有采用一个有效的颜色格式", + "missing default value, or value is not in a valid color format": "缺少默认色值,或该色值没有采用一个有效的颜色格式", + "missing default value": "缺少默认色值", +}; const zhTw = {}; diff --git a/.obsidian/plugins/obsidian-style-settings/manifest.json b/.obsidian/plugins/obsidian-style-settings/manifest.json index 5225fc1c..d0d74600 100644 --- a/.obsidian/plugins/obsidian-style-settings/manifest.json +++ b/.obsidian/plugins/obsidian-style-settings/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-style-settings", "name": "Style Settings", - "version": "0.4.11", + "version": "0.4.12", "minAppVersion": "0.11.5", "description": "Offers controls for adjusting theme, plugin, and snippet CSS variables.", "author": "mgmeyers", diff --git a/.obsidian/plugins/obsidian-tasks-plugin/main.js b/.obsidian/plugins/obsidian-tasks-plugin/main.js index f6159ef4..59b088f0 100644 --- a/.obsidian/plugins/obsidian-tasks-plugin/main.js +++ b/.obsidian/plugins/obsidian-tasks-plugin/main.js @@ -122,31 +122,30 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -"use strict";var b_=Object.create;var Cn=Object.defineProperty,v_=Object.defineProperties,E_=Object.getOwnPropertyDescriptor,R_=Object.getOwnPropertyDescriptors,w_=Object.getOwnPropertyNames,zd=Object.getOwnPropertySymbols,D_=Object.getPrototypeOf,Vd=Object.prototype.hasOwnProperty,M_=Object.prototype.propertyIsEnumerable;var Kd=(r,e,t)=>e in r?Cn(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,$e=(r,e)=>{for(var t in e||(e={}))Vd.call(e,t)&&Kd(r,t,e[t]);if(zd)for(var t of zd(e))M_.call(e,t)&&Kd(r,t,e[t]);return r},qt=(r,e)=>v_(r,R_(e));var h=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),P_=(r,e)=>{for(var t in e)Cn(r,t,{get:e[t],enumerable:!0})},Zd=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of w_(e))!Vd.call(r,i)&&i!==t&&Cn(r,i,{get:()=>e[i],enumerable:!(n=E_(e,i))||n.enumerable});return r};var os=(r,e,t)=>(t=r!=null?b_(D_(r)):{},Zd(e||!r||!r.__esModule?Cn(t,"default",{value:r,enumerable:!0}):t,r)),O_=r=>Zd(Cn({},"__esModule",{value:!0}),r);var ne=(r,e,t)=>new Promise((n,i)=>{var s=u=>{try{o(t.next(u))}catch(l){i(l)}},a=u=>{try{o(t.throw(u))}catch(l){i(l)}},o=u=>u.done?n(u.value):Promise.resolve(u.value).then(s,a);o((t=t.apply(r,e)).next())});var Mf=h((DA,hs)=>{var sf,af,of,uf,lf,cf,df,ff,pf,fs,eo,hf,mf,yf,Qr,gf,_f,Tf,bf,vf,Ef,Rf,wf,Df,ps;(function(r){var e=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){r(t(e,t(n)))}):typeof hs=="object"&&typeof hs.exports=="object"?r(t(e,t(hs.exports))):r(t(e));function t(n,i){return n!==e&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(s,a){return n[s]=i?i(s,a):a}}})(function(r){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])};sf=function(n,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");e(n,i);function s(){this.constructor=n}n.prototype=i===null?Object.create(i):(s.prototype=i.prototype,new s)},af=Object.assign||function(n){for(var i,s=1,a=arguments.length;s=0;c--)(l=n[c])&&(u=(o<3?l(u):o>3?l(i,s,u):l(i,s))||u);return o>3&&u&&Object.defineProperty(i,s,u),u},lf=function(n,i){return function(s,a){i(s,a,n)}},cf=function(n,i){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,i)},df=function(n,i,s,a){function o(u){return u instanceof s?u:new s(function(l){l(u)})}return new(s||(s=Promise))(function(u,l){function c(p){try{f(a.next(p))}catch(y){l(y)}}function d(p){try{f(a.throw(p))}catch(y){l(y)}}function f(p){p.done?u(p.value):o(p.value).then(c,d)}f((a=a.apply(n,i||[])).next())})},ff=function(n,i){var s={label:0,sent:function(){if(u[0]&1)throw u[1];return u[1]},trys:[],ops:[]},a,o,u,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(f){return function(p){return d([f,p])}}function d(f){if(a)throw new TypeError("Generator is already executing.");for(;s;)try{if(a=1,o&&(u=f[0]&2?o.return:f[0]?o.throw||((u=o.return)&&u.call(o),0):o.next)&&!(u=u.call(o,f[1])).done)return u;switch(o=0,u&&(f=[f[0]&2,u.value]),f[0]){case 0:case 1:u=f;break;case 4:return s.label++,{value:f[1],done:!1};case 5:s.label++,o=f[1],f=[0];continue;case 7:f=s.ops.pop(),s.trys.pop();continue;default:if(u=s.trys,!(u=u.length>0&&u[u.length-1])&&(f[0]===6||f[0]===2)){s=0;continue}if(f[0]===3&&(!u||f[1]>u[0]&&f[1]=n.length&&(n=void 0),{value:n&&n[a++],done:!n}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")},eo=function(n,i){var s=typeof Symbol=="function"&&n[Symbol.iterator];if(!s)return n;var a=s.call(n),o,u=[],l;try{for(;(i===void 0||i-- >0)&&!(o=a.next()).done;)u.push(o.value)}catch(c){l={error:c}}finally{try{o&&!o.done&&(s=a.return)&&s.call(a)}finally{if(l)throw l.error}}return u},hf=function(){for(var n=[],i=0;i1||c(m,g)})})}function c(m,g){try{d(a[m](g))}catch(k){y(u[0][3],k)}}function d(m){m.value instanceof Qr?Promise.resolve(m.value.v).then(f,p):y(u[0][2],m)}function f(m){c("next",m)}function p(m){c("throw",m)}function y(m,g){m(g),u.shift(),u.length&&c(u[0][0],u[0][1])}},_f=function(n){var i,s;return i={},a("next"),a("throw",function(o){throw o}),a("return"),i[Symbol.iterator]=function(){return this},i;function a(o,u){i[o]=n[o]?function(l){return(s=!s)?{value:Qr(n[o](l)),done:o==="return"}:u?u(l):l}:u}},Tf=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=n[Symbol.asyncIterator],s;return i?i.call(n):(n=typeof fs=="function"?fs(n):n[Symbol.iterator](),s={},a("next"),a("throw"),a("return"),s[Symbol.asyncIterator]=function(){return this},s);function a(u){s[u]=n[u]&&function(l){return new Promise(function(c,d){l=n[u](l),o(c,d,l.done,l.value)})}}function o(u,l,c,d){Promise.resolve(d).then(function(f){u({value:f,done:c})},l)}},bf=function(n,i){return Object.defineProperty?Object.defineProperty(n,"raw",{value:i}):n.raw=i,n};var t=Object.create?function(n,i){Object.defineProperty(n,"default",{enumerable:!0,value:i})}:function(n,i){n.default=i};vf=function(n){if(n&&n.__esModule)return n;var i={};if(n!=null)for(var s in n)s!=="default"&&Object.prototype.hasOwnProperty.call(n,s)&&ps(i,n,s);return t(i,n),i},Ef=function(n){return n&&n.__esModule?n:{default:n}},Rf=function(n,i,s,a){if(s==="a"&&!a)throw new TypeError("Private accessor was defined without a getter");if(typeof i=="function"?n!==i||!a:!i.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return s==="m"?a:s==="a"?a.call(n):a?a.value:i.get(n)},wf=function(n,i,s,a,o){if(a==="m")throw new TypeError("Private method is not writable");if(a==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof i=="function"?n!==i||!o:!i.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return a==="a"?o.call(n,s):o?o.value=s:i.set(n,s),s},Df=function(n,i){if(i===null||typeof i!="object"&&typeof i!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof n=="function"?i===n:n.has(i)},r("__extends",sf),r("__assign",af),r("__rest",of),r("__decorate",uf),r("__param",lf),r("__metadata",cf),r("__awaiter",df),r("__generator",ff),r("__exportStar",pf),r("__createBinding",ps),r("__values",fs),r("__read",eo),r("__spread",hf),r("__spreadArrays",mf),r("__spreadArray",yf),r("__await",Qr),r("__asyncGenerator",gf),r("__asyncDelegator",_f),r("__asyncValues",Tf),r("__makeTemplateObject",bf),r("__importStar",vf),r("__importDefault",Ef),r("__classPrivateFieldGet",Rf),r("__classPrivateFieldSet",wf),r("__classPrivateFieldIn",Df)})});var Q=h(yr=>{"use strict";Object.defineProperty(yr,"__esModule",{value:!0});yr.matchAnyPattern=yr.extractTerms=yr.repeatedTimeunitPattern=void 0;function bT(r,e){let t=e.replace(/\((?!\?)/g,"(?:");return`${r}${t}\\s{0,5}(?:,?\\s{0,5}${t}){0,10}`}yr.repeatedTimeunitPattern=bT;function bp(r){let e;return r instanceof Array?e=[...r]:r instanceof Map?e=Array.from(r.keys()):e=Object.keys(r),e}yr.extractTerms=bp;function vT(r){return`(?:${bp(r).sort((t,n)=>n.length-t.length).join("|").replace(/\./g,"\\.")})`}yr.matchAnyPattern=vT});var z=h((ho,mo)=>{(function(r,e){typeof ho=="object"&&typeof mo!="undefined"?mo.exports=e():typeof define=="function"&&define.amd?define(e):(r=typeof globalThis!="undefined"?globalThis:r||self).dayjs=e()})(ho,function(){"use strict";var r=1e3,e=6e4,t=36e5,n="millisecond",i="second",s="minute",a="hour",o="day",u="week",l="month",c="quarter",d="year",f="date",p="Invalid Date",y=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},k=function(P,v,_){var O=String(P);return!O||O.length>=v?P:""+Array(v+1-O.length).join(_)+P},x={s:k,z:function(P){var v=-P.utcOffset(),_=Math.abs(v),O=Math.floor(_/60),E=_%60;return(v<=0?"+":"-")+k(O,2,"0")+":"+k(E,2,"0")},m:function P(v,_){if(v.date()<_.date())return-P(_,v);var O=12*(_.year()-v.year())+(_.month()-v.month()),E=v.clone().add(O,l),S=_-E<0,A=v.clone().add(O+(S?-1:1),l);return+(-(O+(_-E)/(S?E-A:A-E))||0)},a:function(P){return P<0?Math.ceil(P)||0:Math.floor(P)},p:function(P){return{M:l,y:d,w:u,d:o,D:f,h:a,m:s,s:i,ms:n,Q:c}[P]||String(P||"").toLowerCase().replace(/s$/,"")},u:function(P){return P===void 0}},C="en",H={};H[C]=g;var re=function(P){return P instanceof ye},de=function(P,v,_){var O;if(!P)return C;if(typeof P=="string")H[P]&&(O=P),v&&(H[P]=v,O=P);else{var E=P.name;H[E]=P,O=E}return!_&&O&&(C=O),O||!_&&C},J=function(P,v){if(re(P))return P.clone();var _=typeof v=="object"?v:{};return _.date=P,_.args=arguments,new ye(_)},M=x;M.l=de,M.i=re,M.w=function(P,v){return J(P,{locale:v.$L,utc:v.$u,x:v.$x,$offset:v.$offset})};var ye=function(){function P(_){this.$L=de(_.locale,null,!0),this.parse(_)}var v=P.prototype;return v.parse=function(_){this.$d=function(O){var E=O.date,S=O.utc;if(E===null)return new Date(NaN);if(M.u(E))return new Date;if(E instanceof Date)return new Date(E);if(typeof E=="string"&&!/Z$/i.test(E)){var A=E.match(y);if(A){var q=A[2]-1||0,ee=(A[7]||"0").substring(0,3);return S?new Date(Date.UTC(A[1],q,A[3]||1,A[4]||0,A[5]||0,A[6]||0,ee)):new Date(A[1],q,A[3]||1,A[4]||0,A[5]||0,A[6]||0,ee)}}return new Date(E)}(_),this.$x=_.x||{},this.init()},v.init=function(){var _=this.$d;this.$y=_.getFullYear(),this.$M=_.getMonth(),this.$D=_.getDate(),this.$W=_.getDay(),this.$H=_.getHours(),this.$m=_.getMinutes(),this.$s=_.getSeconds(),this.$ms=_.getMilliseconds()},v.$utils=function(){return M},v.isValid=function(){return this.$d.toString()!==p},v.isSame=function(_,O){var E=J(_);return this.startOf(O)<=E&&E<=this.endOf(O)},v.isAfter=function(_,O){return J(_){"use strict";var ET=gr&&gr.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(gr,"__esModule",{value:!0});gr.findYearClosestToRef=gr.findMostLikelyADYear=void 0;var RT=ET(z());function wT(r){return r<100&&(r>50?r=r+1900:r=r+2e3),r}gr.findMostLikelyADYear=wT;function DT(r,e,t){let n=RT.default(r),i=n;i=i.month(t-1),i=i.date(e),i=i.year(n.year());let s=i.add(1,"y"),a=i.add(-1,"y");return Math.abs(s.diff(n)){"use strict";Object.defineProperty(F,"__esModule",{value:!0});F.parseTimeUnits=F.TIME_UNITS_PATTERN=F.parseYear=F.YEAR_PATTERN=F.parseOrdinalNumberPattern=F.ORDINAL_NUMBER_PATTERN=F.parseNumberPattern=F.NUMBER_PATTERN=F.TIME_UNIT_DICTIONARY=F.ORDINAL_WORD_DICTIONARY=F.INTEGER_WORD_DICTIONARY=F.MONTH_DICTIONARY=F.FULL_MONTH_NAME_DICTIONARY=F.WEEKDAY_DICTIONARY=void 0;var Rs=Q(),MT=Se();F.WEEKDAY_DICTIONARY={sunday:0,sun:0,"sun.":0,monday:1,mon:1,"mon.":1,tuesday:2,tue:2,"tue.":2,wednesday:3,wed:3,"wed.":3,thursday:4,thurs:4,"thurs.":4,thur:4,"thur.":4,thu:4,"thu.":4,friday:5,fri:5,"fri.":5,saturday:6,sat:6,"sat.":6};F.FULL_MONTH_NAME_DICTIONARY={january:1,february:2,march:3,april:4,may:5,june:6,july:7,august:8,september:9,october:10,november:11,december:12};F.MONTH_DICTIONARY=Object.assign(Object.assign({},F.FULL_MONTH_NAME_DICTIONARY),{jan:1,"jan.":1,feb:2,"feb.":2,mar:3,"mar.":3,apr:4,"apr.":4,jun:6,"jun.":6,jul:7,"jul.":7,aug:8,"aug.":8,sep:9,"sep.":9,sept:9,"sept.":9,oct:10,"oct.":10,nov:11,"nov.":11,dec:12,"dec.":12});F.INTEGER_WORD_DICTIONARY={one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9,ten:10,eleven:11,twelve:12};F.ORDINAL_WORD_DICTIONARY={first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,tenth:10,eleventh:11,twelfth:12,thirteenth:13,fourteenth:14,fifteenth:15,sixteenth:16,seventeenth:17,eighteenth:18,nineteenth:19,twentieth:20,"twenty first":21,"twenty-first":21,"twenty second":22,"twenty-second":22,"twenty third":23,"twenty-third":23,"twenty fourth":24,"twenty-fourth":24,"twenty fifth":25,"twenty-fifth":25,"twenty sixth":26,"twenty-sixth":26,"twenty seventh":27,"twenty-seventh":27,"twenty eighth":28,"twenty-eighth":28,"twenty ninth":29,"twenty-ninth":29,thirtieth:30,"thirty first":31,"thirty-first":31};F.TIME_UNIT_DICTIONARY={sec:"second",second:"second",seconds:"second",min:"minute",mins:"minute",minute:"minute",minutes:"minute",h:"hour",hr:"hour",hrs:"hour",hour:"hour",hours:"hour",day:"d",days:"d",week:"week",weeks:"week",month:"month",months:"month",qtr:"quarter",quarter:"quarter",quarters:"quarter",y:"year",yr:"year",year:"year",years:"year"};F.NUMBER_PATTERN=`(?:${Rs.matchAnyPattern(F.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s{0,2}an?)?|an?\\b(?:\\s{0,2}few)?|few|several|a?\\s{0,2}couple\\s{0,2}(?:of)?)`;function Ep(r){let e=r.toLowerCase();return F.INTEGER_WORD_DICTIONARY[e]!==void 0?F.INTEGER_WORD_DICTIONARY[e]:e==="a"||e==="an"?1:e.match(/few/)?3:e.match(/half/)?.5:e.match(/couple/)?2:e.match(/several/)?7:parseFloat(e)}F.parseNumberPattern=Ep;F.ORDINAL_NUMBER_PATTERN=`(?:${Rs.matchAnyPattern(F.ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:st|nd|rd|th)?)`;function PT(r){let e=r.toLowerCase();return F.ORDINAL_WORD_DICTIONARY[e]!==void 0?F.ORDINAL_WORD_DICTIONARY[e]:(e=e.replace(/(?:st|nd|rd|th)$/i,""),parseInt(e))}F.parseOrdinalNumberPattern=PT;F.YEAR_PATTERN="(?:[1-9][0-9]{0,3}\\s{0,2}(?:BE|AD|BC|BCE|CE)|[1-2][0-9]{3}|[5-9][0-9])";function OT(r){if(/BE/i.test(r))return r=r.replace(/BE/i,""),parseInt(r)-543;if(/BCE?/i.test(r))return r=r.replace(/BCE?/i,""),-parseInt(r);if(/(AD|CE)/i.test(r))return r=r.replace(/(AD|CE)/i,""),parseInt(r);let e=parseInt(r);return MT.findMostLikelyADYear(e)}F.parseYear=OT;var Rp=`(${F.NUMBER_PATTERN})\\s{0,3}(${Rs.matchAnyPattern(F.TIME_UNIT_DICTIONARY)})`,vp=new RegExp(Rp,"i");F.TIME_UNITS_PATTERN=Rs.repeatedTimeunitPattern("(?:(?:about|around)\\s{0,3})?",Rp);function AT(r){let e={},t=r,n=vp.exec(t);for(;n;)kT(e,n),t=t.substring(n[0].length).trim(),n=vp.exec(t);return e}F.parseTimeUnits=AT;function kT(r,e){let t=Ep(e[1]),n=F.TIME_UNIT_DICTIONARY[e[2].toLowerCase()];r[n]=t}});var wp=h((yo,go)=>{(function(r,e){typeof yo=="object"&&typeof go!="undefined"?go.exports=e():typeof define=="function"&&define.amd?define(e):(r=typeof globalThis!="undefined"?globalThis:r||self).dayjs_plugin_quarterOfYear=e()})(yo,function(){"use strict";var r="month",e="quarter";return function(t,n){var i=n.prototype;i.quarter=function(o){return this.$utils().u(o)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(o-1))};var s=i.add;i.add=function(o,u){return o=Number(o),this.$utils().p(u)===e?this.add(3*o,r):s.bind(this)(o,u)};var a=i.startOf;i.startOf=function(o,u){var l=this.$utils(),c=!!l.u(u)||u;if(l.p(o)===e){var d=this.quarter()-1;return c?this.month(3*d).startOf(r).startOf("day"):this.month(3*d+2).endOf(r).endOf("day")}return a.bind(this)(o,u)}}})});var it=h(At=>{"use strict";Object.defineProperty(At,"__esModule",{value:!0});At.implySimilarTime=At.assignSimilarTime=At.assignSimilarDate=At.assignTheNextDay=void 0;var Dp=Ee();function NT(r,e){e=e.add(1,"day"),Mp(r,e),Pp(r,e)}At.assignTheNextDay=NT;function Mp(r,e){r.assign("day",e.date()),r.assign("month",e.month()+1),r.assign("year",e.year())}At.assignSimilarDate=Mp;function CT(r,e){r.assign("hour",e.hour()),r.assign("minute",e.minute()),r.assign("second",e.second()),r.assign("millisecond",e.millisecond()),r.get("hour")<12?r.assign("meridiem",Dp.Meridiem.AM):r.assign("meridiem",Dp.Meridiem.PM)}At.assignSimilarTime=CT;function Pp(r,e){r.imply("hour",e.hour()),r.imply("minute",e.minute()),r.imply("second",e.second()),r.imply("millisecond",e.millisecond())}At.implySimilarTime=Pp});var Op=h(Sr=>{"use strict";Object.defineProperty(Sr,"__esModule",{value:!0});Sr.toTimezoneOffset=Sr.TIMEZONE_ABBR_MAP=void 0;Sr.TIMEZONE_ABBR_MAP={ACDT:630,ACST:570,ADT:-180,AEDT:660,AEST:600,AFT:270,AKDT:-480,AKST:-540,ALMT:360,AMST:-180,AMT:-240,ANAST:720,ANAT:720,AQTT:300,ART:-180,AST:-240,AWDT:540,AWST:480,AZOST:0,AZOT:-60,AZST:300,AZT:240,BNT:480,BOT:-240,BRST:-120,BRT:-180,BST:60,BTT:360,CAST:480,CAT:120,CCT:390,CDT:-300,CEST:120,CET:60,CHADT:825,CHAST:765,CKT:-600,CLST:-180,CLT:-240,COT:-300,CST:-360,CVT:-60,CXT:420,ChST:600,DAVT:420,EASST:-300,EAST:-360,EAT:180,ECT:-300,EDT:-240,EEST:180,EET:120,EGST:0,EGT:-60,EST:-300,ET:-300,FJST:780,FJT:720,FKST:-180,FKT:-240,FNT:-120,GALT:-360,GAMT:-540,GET:240,GFT:-180,GILT:720,GMT:0,GST:240,GYT:-240,HAA:-180,HAC:-300,HADT:-540,HAE:-240,HAP:-420,HAR:-360,HAST:-600,HAT:-90,HAY:-480,HKT:480,HLV:-210,HNA:-240,HNC:-360,HNE:-300,HNP:-480,HNR:-420,HNT:-150,HNY:-540,HOVT:420,ICT:420,IDT:180,IOT:360,IRDT:270,IRKST:540,IRKT:540,IRST:210,IST:330,JST:540,KGT:360,KRAST:480,KRAT:480,KST:540,KUYT:240,LHDT:660,LHST:630,LINT:840,MAGST:720,MAGT:720,MART:-510,MAWT:300,MDT:-360,MESZ:120,MEZ:60,MHT:720,MMT:390,MSD:240,MSK:180,MST:-420,MUT:240,MVT:300,MYT:480,NCT:660,NDT:-90,NFT:690,NOVST:420,NOVT:360,NPT:345,NST:-150,NUT:-660,NZDT:780,NZST:720,OMSST:420,OMST:420,PDT:-420,PET:-300,PETST:720,PETT:720,PGT:600,PHOT:780,PHT:480,PKT:300,PMDT:-120,PMST:-180,PONT:660,PST:-480,PT:-480,PWT:540,PYST:-180,PYT:-240,RET:240,SAMT:240,SAST:120,SBT:660,SCT:240,SGT:480,SRT:-180,SST:-660,TAHT:-600,TFT:300,TJT:300,TKT:780,TLT:540,TMT:300,TVT:720,ULAT:480,UTC:0,UYST:-120,UYT:-180,UZT:300,VET:-210,VLAST:660,VLAT:660,VUT:660,WAST:120,WAT:60,WEST:60,WESZ:60,WET:0,WEZ:0,WFT:720,WGST:-120,WGT:-180,WIB:420,WIT:540,WITA:480,WST:780,WT:0,YAKST:600,YAKT:600,YAPT:600,YEKST:360,YEKT:360};function xT(r){var e;return r==null?null:typeof r=="number"?r:(e=Sr.TIMEZONE_ABBR_MAP[r])!==null&&e!==void 0?e:null}Sr.toTimezoneOffset=xT});var pe=h(kt=>{"use strict";var Ap=kt&&kt.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(kt,"__esModule",{value:!0});kt.ParsingResult=kt.ParsingComponents=kt.ReferenceWithTimezone=void 0;var ST=Ap(wp()),ws=Ap(z()),_o=it(),IT=Op();ws.default.extend(ST.default);var To=class{constructor(e){var t;e=e!=null?e:new Date,e instanceof Date?this.instant=e:(this.instant=(t=e.instant)!==null&&t!==void 0?t:new Date,this.timezoneOffset=IT.toTimezoneOffset(e.timezone))}};kt.ReferenceWithTimezone=To;var Ir=class{constructor(e,t){if(this.reference=e,this.knownValues={},this.impliedValues={},t)for(let i in t)this.knownValues[i]=t[i];let n=ws.default(e.instant);this.imply("day",n.date()),this.imply("month",n.month()+1),this.imply("year",n.year()),this.imply("hour",12),this.imply("minute",0),this.imply("second",0),this.imply("millisecond",0)}get(e){return e in this.knownValues?this.knownValues[e]:e in this.impliedValues?this.impliedValues[e]:null}isCertain(e){return e in this.knownValues}getCertainComponents(){return Object.keys(this.knownValues)}imply(e,t){return e in this.knownValues?this:(this.impliedValues[e]=t,this)}assign(e,t){return this.knownValues[e]=t,delete this.impliedValues[e],this}delete(e){delete this.knownValues[e],delete this.impliedValues[e]}clone(){let e=new Ir(this.reference);e.knownValues={},e.impliedValues={};for(let t in this.knownValues)e.knownValues[t]=this.knownValues[t];for(let t in this.impliedValues)e.impliedValues[t]=this.impliedValues[t];return e}isOnlyDate(){return!this.isCertain("hour")&&!this.isCertain("minute")&&!this.isCertain("second")}isOnlyTime(){return!this.isCertain("weekday")&&!this.isCertain("day")&&!this.isCertain("month")}isOnlyWeekdayComponent(){return this.isCertain("weekday")&&!this.isCertain("day")&&!this.isCertain("month")}isOnlyDayMonthComponent(){return this.isCertain("day")&&this.isCertain("month")&&!this.isCertain("year")}isValidDate(){let e=this.dateWithoutTimezoneAdjustment();return!(e.getFullYear()!==this.get("year")||e.getMonth()!==this.get("month")-1||e.getDate()!==this.get("day")||this.get("hour")!=null&&e.getHours()!=this.get("hour")||this.get("minute")!=null&&e.getMinutes()!=this.get("minute"))}toString(){return`[ParsingComponents {knownValues: ${JSON.stringify(this.knownValues)}, impliedValues: ${JSON.stringify(this.impliedValues)}}, reference: ${JSON.stringify(this.reference)}]`}dayjs(){return ws.default(this.date())}date(){let e=this.dateWithoutTimezoneAdjustment();return new Date(e.getTime()+this.getSystemTimezoneAdjustmentMinute(e)*6e4)}dateWithoutTimezoneAdjustment(){let e=new Date(this.get("year"),this.get("month")-1,this.get("day"),this.get("hour"),this.get("minute"),this.get("second"),this.get("millisecond"));return e.setFullYear(this.get("year")),e}getSystemTimezoneAdjustmentMinute(e){var t,n;(!e||e.getTime()<0)&&(e=new Date);let i=-e.getTimezoneOffset(),s=(n=(t=this.get("timezoneOffset"))!==null&&t!==void 0?t:this.reference.timezoneOffset)!==null&&n!==void 0?n:i;return i-s}static createRelativeFromReference(e,t){let n=ws.default(e.instant);for(let s in t)n=n.add(t[s],s);let i=new Ir(e);return t.hour||t.minute||t.second?(_o.assignSimilarTime(i,n),_o.assignSimilarDate(i,n),e.timezoneOffset!==null&&i.assign("timezoneOffset",-e.instant.getTimezoneOffset())):(_o.implySimilarTime(i,n),e.timezoneOffset!==null&&i.imply("timezoneOffset",-e.instant.getTimezoneOffset()),t.d?(i.assign("day",n.date()),i.assign("month",n.month()+1),i.assign("year",n.year())):(t.week&&i.imply("weekday",n.day()),i.imply("day",n.date()),t.month?(i.assign("month",n.month()+1),i.assign("year",n.year())):(i.imply("month",n.month()+1),t.year?i.assign("year",n.year()):i.imply("year",n.year())))),i}};kt.ParsingComponents=Ir;var Bn=class{constructor(e,t,n,i,s){this.reference=e,this.refDate=e.instant,this.index=t,this.text=n,this.start=i||new Ir(e),this.end=s}clone(){let e=new Bn(this.reference,this.index,this.text);return e.start=this.start?this.start.clone():null,e.end=this.end?this.end.clone():null,e}date(){return this.start.date()}toString(){return`[ParsingResult {index: ${this.index}, text: '${this.text}', ...}]`}};kt.ParsingResult=Bn});var R=h(Ds=>{"use strict";Object.defineProperty(Ds,"__esModule",{value:!0});Ds.AbstractParserWithWordBoundaryChecking=void 0;var bo=class{constructor(){this.cachedInnerPattern=null,this.cachedPattern=null}patternLeftBoundary(){return"(\\W|^)"}pattern(e){let t=this.innerPattern(e);return t==this.cachedInnerPattern?this.cachedPattern:(this.cachedPattern=new RegExp(`${this.patternLeftBoundary()}${t.source}`,t.flags),this.cachedInnerPattern=t,this.cachedPattern)}extract(e,t){var n;let i=(n=t[1])!==null&&n!==void 0?n:"";t.index=t.index+i.length,t[0]=t[0].substring(i.length);for(let s=2;s{"use strict";Object.defineProperty(Ro,"__esModule",{value:!0});var Eo=Ie(),UT=pe(),FT=R(),qT=new RegExp(`(?:within|in|for)\\s*(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${Eo.TIME_UNITS_PATTERN})(?=\\W|$)`,"i"),WT=new RegExp(`(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${Eo.TIME_UNITS_PATTERN})(?=\\W|$)`,"i"),vo=class extends FT.AbstractParserWithWordBoundaryChecking{innerPattern(e){return e.option.forwardDate?WT:qT}innerExtract(e,t){let n=Eo.parseTimeUnits(t[1]);return UT.ParsingComponents.createRelativeFromReference(e.reference,n)}};Ro.default=vo});var Up=h(Do=>{"use strict";Object.defineProperty(Do,"__esModule",{value:!0});var LT=Se(),Sp=Ie(),Ip=Ie(),Ms=Ie(),YT=Q(),$T=R(),jT=new RegExp(`(?:on\\s{0,3})?(${Ms.ORDINAL_NUMBER_PATTERN})(?:\\s{0,3}(?:to|\\-|\\\u2013|until|through|till)?\\s{0,3}(${Ms.ORDINAL_NUMBER_PATTERN}))?(?:-|/|\\s{0,3}(?:of)?\\s{0,3})(${YT.matchAnyPattern(Sp.MONTH_DICTIONARY)})(?:(?:-|/|,?\\s{0,3})(${Ip.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),Np=1,Cp=2,BT=3,xp=4,wo=class extends $T.AbstractParserWithWordBoundaryChecking{innerPattern(){return jT}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=Sp.MONTH_DICTIONARY[t[BT].toLowerCase()],s=Ms.parseOrdinalNumberPattern(t[Np]);if(s>31)return t.index=t.index+t[Np].length,null;if(n.start.assign("month",i),n.start.assign("day",s),t[xp]){let a=Ip.parseYear(t[xp]);n.start.assign("year",a)}else{let a=LT.findYearClosestToRef(e.refDate,s,i);n.start.imply("year",a)}if(t[Cp]){let a=Ms.parseOrdinalNumberPattern(t[Cp]);n.end=n.start.clone(),n.end.assign("day",a)}return n}};Do.default=wo});var Yp=h(Po=>{"use strict";Object.defineProperty(Po,"__esModule",{value:!0});var GT=Se(),Wp=Ie(),Ps=Ie(),Lp=Ie(),HT=Q(),zT=R(),KT=new RegExp(`(${HT.matchAnyPattern(Wp.MONTH_DICTIONARY)})(?:-|/|\\s*,?\\s*)(${Ps.ORDINAL_NUMBER_PATTERN})(?!\\s*(?:am|pm))\\s*(?:(?:to|\\-)\\s*(${Ps.ORDINAL_NUMBER_PATTERN})\\s*)?(?:(?:-|/|\\s*,?\\s*)(${Lp.YEAR_PATTERN}))?(?=\\W|$)(?!\\:\\d)`,"i"),VT=1,ZT=2,Fp=3,qp=4,Mo=class extends zT.AbstractParserWithWordBoundaryChecking{innerPattern(){return KT}innerExtract(e,t){let n=Wp.MONTH_DICTIONARY[t[VT].toLowerCase()],i=Ps.parseOrdinalNumberPattern(t[ZT]);if(i>31)return null;let s=e.createParsingComponents({day:i,month:n});if(t[qp]){let u=Lp.parseYear(t[qp]);s.assign("year",u)}else{let u=GT.findYearClosestToRef(e.refDate,i,n);s.imply("year",u)}if(!t[Fp])return s;let a=Ps.parseOrdinalNumberPattern(t[Fp]),o=e.createParsingResult(t.index,t[0]);return o.start=s,o.end=s.clone(),o.end.assign("day",a),o}};Po.default=Mo});var Bp=h(ko=>{"use strict";Object.defineProperty(ko,"__esModule",{value:!0});var Oo=Ie(),XT=Se(),QT=Q(),jp=Ie(),JT=R(),eb=new RegExp(`((?:in)\\s*)?(${QT.matchAnyPattern(Oo.MONTH_DICTIONARY)})\\s*(?:[,-]?\\s*(${jp.YEAR_PATTERN})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),tb=1,rb=2,$p=3,Ao=class extends JT.AbstractParserWithWordBoundaryChecking{innerPattern(){return eb}innerExtract(e,t){let n=t[rb].toLowerCase();if(t[0].length<=3&&!Oo.FULL_MONTH_NAME_DICTIONARY[n])return null;let i=e.createParsingResult(t.index+(t[tb]||"").length,t.index+t[0].length);i.start.imply("day",1);let s=Oo.MONTH_DICTIONARY[n];if(i.start.assign("month",s),t[$p]){let a=jp.parseYear(t[$p]);i.start.assign("year",a)}else{let a=XT.findYearClosestToRef(e.refDate,1,s);i.start.imply("year",a)}return i}};ko.default=Ao});var zp=h(Co=>{"use strict";Object.defineProperty(Co,"__esModule",{value:!0});var Hp=Ie(),nb=Q(),ib=R(),sb=new RegExp(`([0-9]{4})[\\.\\/\\s](?:(${nb.matchAnyPattern(Hp.MONTH_DICTIONARY)})|([0-9]{1,2}))[\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),ab=1,ob=2,Gp=3,ub=4,No=class extends ib.AbstractParserWithWordBoundaryChecking{innerPattern(){return sb}innerExtract(e,t){let n=t[Gp]?parseInt(t[Gp]):Hp.MONTH_DICTIONARY[t[ob].toLowerCase()];if(n<1||n>12)return null;let i=parseInt(t[ab]);return{day:parseInt(t[ub]),month:n,year:i}}};Co.default=No});var Kp=h(So=>{"use strict";Object.defineProperty(So,"__esModule",{value:!0});var lb=R(),cb=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),db=1,fb=2,xo=class extends lb.AbstractParserWithWordBoundaryChecking{innerPattern(){return cb}innerExtract(e,t){let n=parseInt(t[fb]),i=parseInt(t[db]);return e.createParsingComponents().imply("day",1).assign("month",i).assign("year",n)}};So.default=xo});var Ur=h(ks=>{"use strict";Object.defineProperty(ks,"__esModule",{value:!0});ks.AbstractTimeExpressionParser=void 0;var Be=Ee();function pb(r,e,t,n){return new RegExp(`${r}${e}(\\d{1,4})(?:(?:\\.|:|\uFF1A)(\\d{1,2})(?:(?::|\uFF1A)(\\d{2})(?:\\.(\\d{1,6}))?)?)?(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?${t}`,n)}function hb(r,e){return new RegExp(`^(${r})(\\d{1,4})(?:(?:\\.|\\:|\\\uFF1A)(\\d{1,2})(?:(?:\\.|\\:|\\\uFF1A)(\\d{1,2})(?:\\.(\\d{1,6}))?)?)?(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?${e}`,"i")}var Vp=2,nn=3,Os=4,As=5,Gn=6,Io=class{constructor(e=!1){this.cachedPrimaryPrefix=null,this.cachedPrimarySuffix=null,this.cachedPrimaryTimePattern=null,this.cachedFollowingPhase=null,this.cachedFollowingSuffix=null,this.cachedFollowingTimePatten=null,this.strictMode=e}patternFlags(){return"i"}primaryPatternLeftBoundary(){return"(^|\\s|T|\\b)"}primarySuffix(){return"(?=\\W|$)"}followingSuffix(){return"(?=\\W|$)"}pattern(e){return this.getPrimaryTimePatternThroughCache()}extract(e,t){let n=this.extractPrimaryTimeComponents(e,t);if(!n)return t.index+=t[0].length,null;let i=t.index+t[1].length,s=t[0].substring(t[1].length),a=e.createParsingResult(i,s,n);t.index+=t[0].length;let o=e.text.substring(t.index),l=this.getFollowingTimePatternThroughCache().exec(o);return s.match(/^\d{3,4}/)&&l&&l[0].match(/^\s*([+-])\s*\d{2,4}$/)?null:!l||l[0].match(/^\s*([+-])\s*\d{3,4}$/)?this.checkAndReturnWithoutFollowingPattern(a):(a.end=this.extractFollowingTimeComponents(e,l,a),a.end&&(a.text+=l[0]),this.checkAndReturnWithFollowingPattern(a))}extractPrimaryTimeComponents(e,t,n=!1){let i=e.createParsingComponents(),s=0,a=null,o=parseInt(t[Vp]);if(o>100){if(this.strictMode||t[nn]!=null)return null;s=o%100,o=Math.floor(o/100)}if(o>24)return null;if(t[nn]!=null){if(t[nn].length==1&&!t[Gn])return null;s=parseInt(t[nn])}if(s>=60)return null;if(o>12&&(a=Be.Meridiem.PM),t[Gn]!=null){if(o>12)return null;let u=t[Gn][0].toLowerCase();u=="a"&&(a=Be.Meridiem.AM,o==12&&(o=0)),u=="p"&&(a=Be.Meridiem.PM,o!=12&&(o+=12))}if(i.assign("hour",o),i.assign("minute",s),a!==null?i.assign("meridiem",a):o<12?i.imply("meridiem",Be.Meridiem.AM):i.imply("meridiem",Be.Meridiem.PM),t[As]!=null){let u=parseInt(t[As].substring(0,3));if(u>=1e3)return null;i.assign("millisecond",u)}if(t[Os]!=null){let u=parseInt(t[Os]);if(u>=60)return null;i.assign("second",u)}return i}extractFollowingTimeComponents(e,t,n){let i=e.createParsingComponents();if(t[As]!=null){let u=parseInt(t[As].substring(0,3));if(u>=1e3)return null;i.assign("millisecond",u)}if(t[Os]!=null){let u=parseInt(t[Os]);if(u>=60)return null;i.assign("second",u)}let s=parseInt(t[Vp]),a=0,o=-1;if(t[nn]!=null?a=parseInt(t[nn]):s>100&&(a=s%100,s=Math.floor(s/100)),a>=60||s>24)return null;if(s>=12&&(o=Be.Meridiem.PM),t[Gn]!=null){if(s>12)return null;let u=t[Gn][0].toLowerCase();u=="a"&&(o=Be.Meridiem.AM,s==12&&(s=0,i.isCertain("day")||i.imply("day",i.get("day")+1))),u=="p"&&(o=Be.Meridiem.PM,s!=12&&(s+=12)),n.start.isCertain("meridiem")||(o==Be.Meridiem.AM?(n.start.imply("meridiem",Be.Meridiem.AM),n.start.get("hour")==12&&n.start.assign("hour",0)):(n.start.imply("meridiem",Be.Meridiem.PM),n.start.get("hour")!=12&&n.start.assign("hour",n.start.get("hour")+12)))}return i.assign("hour",s),i.assign("minute",a),o>=0?i.assign("meridiem",o):n.start.isCertain("meridiem")&&n.start.get("hour")>12?n.start.get("hour")-12>s?i.imply("meridiem",Be.Meridiem.AM):s<=12&&(i.assign("hour",s+12),i.assign("meridiem",Be.Meridiem.PM)):s>12?i.imply("meridiem",Be.Meridiem.PM):s<=12&&i.imply("meridiem",Be.Meridiem.AM),i.date().getTime()24)return null}return e}checkAndReturnWithFollowingPattern(e){if(e.text.match(/^\d+-\d+$/))return null;let t=e.text.match(/[^\d:.](\d[\d.]+)\s*-\s*(\d[\d.]+)$/);if(t){if(this.strictMode)return null;let n=t[1],i=t[2];if(i.includes(".")&&!i.match(/\d(\.\d{2})+$/))return null;let s=parseInt(i),a=parseInt(n);if(s>24||a>24)return null}return e}getPrimaryTimePatternThroughCache(){let e=this.primaryPrefix(),t=this.primarySuffix();return this.cachedPrimaryPrefix===e&&this.cachedPrimarySuffix===t?this.cachedPrimaryTimePattern:(this.cachedPrimaryTimePattern=pb(this.primaryPatternLeftBoundary(),e,t,this.patternFlags()),this.cachedPrimaryPrefix=e,this.cachedPrimarySuffix=t,this.cachedPrimaryTimePattern)}getFollowingTimePatternThroughCache(){let e=this.followingPhase(),t=this.followingSuffix();return this.cachedFollowingPhase===e&&this.cachedFollowingSuffix===t?this.cachedFollowingTimePatten:(this.cachedFollowingTimePatten=hb(e,t),this.cachedFollowingPhase=e,this.cachedFollowingSuffix=t,this.cachedFollowingTimePatten)}};ks.AbstractTimeExpressionParser=Io});var Zp=h(Fo=>{"use strict";Object.defineProperty(Fo,"__esModule",{value:!0});var Ns=Ee(),mb=Ur(),Uo=class extends mb.AbstractTimeExpressionParser{constructor(e){super(e)}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|to|\\?)\\s*"}primaryPrefix(){return"(?:(?:at|from)\\s*)??"}primarySuffix(){return"(?:\\s*(?:o\\W*clock|at\\s*night|in\\s*the\\s*(?:morning|afternoon)))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(e,t){let n=super.extractPrimaryTimeComponents(e,t);if(n){if(t[0].endsWith("night")){let i=n.get("hour");i>=6&&i<12?(n.assign("hour",n.get("hour")+12),n.assign("meridiem",Ns.Meridiem.PM)):i<6&&n.assign("meridiem",Ns.Meridiem.AM)}if(t[0].endsWith("afternoon")){n.assign("meridiem",Ns.Meridiem.PM);let i=n.get("hour");i>=0&&i<=6&&n.assign("hour",n.get("hour")+12)}t[0].endsWith("morning")&&(n.assign("meridiem",Ns.Meridiem.AM),n.get("hour")<12&&n.assign("hour",n.get("hour")))}return n}};Fo.default=Uo});var st=h(sn=>{"use strict";Object.defineProperty(sn,"__esModule",{value:!0});sn.addImpliedTimeUnits=sn.reverseTimeUnits=void 0;function yb(r){let e={};for(let t in r)e[t]=-r[t];return e}sn.reverseTimeUnits=yb;function gb(r,e){let t=r.clone(),n=r.dayjs();for(let i in e)n=n.add(e[i],i);return("day"in e||"d"in e||"week"in e||"month"in e||"year"in e)&&(t.imply("day",n.date()),t.imply("month",n.month()+1),t.imply("year",n.year())),("second"in e||"minute"in e||"hour"in e)&&(t.imply("second",n.second()),t.imply("minute",n.minute()),t.imply("hour",n.hour())),t}sn.addImpliedTimeUnits=gb});var Xp=h(Lo=>{"use strict";Object.defineProperty(Lo,"__esModule",{value:!0});var Wo=Ie(),_b=pe(),Tb=R(),bb=st(),vb=new RegExp(`(${Wo.TIME_UNITS_PATTERN})\\s{0,5}(?:ago|before|earlier)(?=(?:\\W|$))`,"i"),Eb=new RegExp(`(${Wo.TIME_UNITS_PATTERN})\\s{0,5}ago(?=(?:\\W|$))`,"i"),qo=class extends Tb.AbstractParserWithWordBoundaryChecking{constructor(e){super(),this.strictMode=e}innerPattern(){return this.strictMode?Eb:vb}innerExtract(e,t){let n=Wo.parseTimeUnits(t[1]),i=bb.reverseTimeUnits(n);return _b.ParsingComponents.createRelativeFromReference(e.reference,i)}};Lo.default=qo});var Qp=h(jo=>{"use strict";Object.defineProperty(jo,"__esModule",{value:!0});var $o=Ie(),Rb=pe(),wb=R(),Db=new RegExp(`(${$o.TIME_UNITS_PATTERN})\\s{0,5}(?:later|after|from now|henceforth|forward|out)(?=(?:\\W|$))`,"i"),Mb=new RegExp("("+$o.TIME_UNITS_PATTERN+")(later|from now)(?=(?:\\W|$))","i"),Pb=1,Yo=class extends wb.AbstractParserWithWordBoundaryChecking{constructor(e){super(),this.strictMode=e}innerPattern(){return this.strictMode?Mb:Db}innerExtract(e,t){let n=$o.parseTimeUnits(t[Pb]);return Rb.ParsingComponents.createRelativeFromReference(e.reference,n)}};jo.default=Yo});var on=h(an=>{"use strict";Object.defineProperty(an,"__esModule",{value:!0});an.MergingRefiner=an.Filter=void 0;var Bo=class{refine(e,t){return t.filter(n=>this.isValid(e,n))}};an.Filter=Bo;var Go=class{refine(e,t){if(t.length<2)return t;let n=[],i=t[0],s=null;for(let a=1;a{console.log(`${this.constructor.name} merged ${u} and ${l} into ${c}`)}),i=c}}return i!=null&&n.push(i),n}};an.MergingRefiner=Go});var Nt=h(zo=>{"use strict";Object.defineProperty(zo,"__esModule",{value:!0});var Ob=on(),Ho=class extends Ob.MergingRefiner{shouldMergeResults(e,t,n){return!t.end&&!n.end&&e.match(this.patternBetween())!=null}mergeResults(e,t,n){if(!t.start.isOnlyWeekdayComponent()&&!n.start.isOnlyWeekdayComponent()&&(n.start.getCertainComponents().forEach(s=>{t.start.isCertain(s)||t.start.assign(s,n.start.get(s))}),t.start.getCertainComponents().forEach(s=>{n.start.isCertain(s)||n.start.assign(s,t.start.get(s))})),t.start.date().getTime()>n.start.date().getTime()){let s=t.start.dayjs(),a=n.start.dayjs();t.start.isOnlyWeekdayComponent()&&s.add(-7,"days").isBefore(a)?(s=s.add(-7,"days"),t.start.imply("day",s.date()),t.start.imply("month",s.month()+1),t.start.imply("year",s.year())):n.start.isOnlyWeekdayComponent()&&a.add(7,"days").isAfter(s)?(a=a.add(7,"days"),n.start.imply("day",a.date()),n.start.imply("month",a.month()+1),n.start.imply("year",a.year())):[n,t]=[t,n]}let i=t.clone();return i.start=t.start,i.end=n.start,i.index=Math.min(t.index,n.index),t.index{"use strict";var Ab=Hn&&Hn.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Hn,"__esModule",{value:!0});var kb=Ab(Nt()),Ko=class extends kb.default{patternBetween(){return/^\s*(to|-)\s*$/i}};Hn.default=Ko});var eh=h(un=>{"use strict";Object.defineProperty(un,"__esModule",{value:!0});un.mergeDateTimeComponent=un.mergeDateTimeResult=void 0;var Nb=Ee();function Cb(r,e){let t=r.clone(),n=r.start,i=e.start;if(t.start=Vo(n,i),r.end!=null||e.end!=null){let s=r.end==null?r.start:r.end,a=e.end==null?e.start:e.end,o=Vo(s,a);r.end==null&&o.date().getTime(){"use strict";Object.defineProperty(Xo,"__esModule",{value:!0});var xb=on(),th=eh(),Zo=class extends xb.MergingRefiner{shouldMergeResults(e,t,n){return(t.start.isOnlyDate()&&n.start.isOnlyTime()||n.start.isOnlyDate()&&t.start.isOnlyTime())&&e.match(this.patternBetween())!=null}mergeResults(e,t,n){let i=t.start.isOnlyDate()?th.mergeDateTimeResult(t,n):th.mergeDateTimeResult(n,t);return i.index=t.index,i.text=t.text+e+n.text,i}};Xo.default=Zo});var rh=h(zn=>{"use strict";var Sb=zn&&zn.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(zn,"__esModule",{value:!0});var Ib=Sb(Gt()),Qo=class extends Ib.default{patternBetween(){return new RegExp("^\\s*(T|at|after|before|on|of|,|-)?\\s*$")}};zn.default=Qo});var nh=h(eu=>{"use strict";Object.defineProperty(eu,"__esModule",{value:!0});var Ub=new RegExp("^\\s*,?\\s*\\(?([A-Z]{2,4})\\)?(?=\\W|$)","i"),Fb={ACDT:630,ACST:570,ADT:-180,AEDT:660,AEST:600,AFT:270,AKDT:-480,AKST:-540,ALMT:360,AMST:-180,AMT:-240,ANAST:720,ANAT:720,AQTT:300,ART:-180,AST:-240,AWDT:540,AWST:480,AZOST:0,AZOT:-60,AZST:300,AZT:240,BNT:480,BOT:-240,BRST:-120,BRT:-180,BST:60,BTT:360,CAST:480,CAT:120,CCT:390,CDT:-300,CEST:120,CET:60,CHADT:825,CHAST:765,CKT:-600,CLST:-180,CLT:-240,COT:-300,CST:-360,CVT:-60,CXT:420,ChST:600,DAVT:420,EASST:-300,EAST:-360,EAT:180,ECT:-300,EDT:-240,EEST:180,EET:120,EGST:0,EGT:-60,EST:-300,ET:-300,FJST:780,FJT:720,FKST:-180,FKT:-240,FNT:-120,GALT:-360,GAMT:-540,GET:240,GFT:-180,GILT:720,GMT:0,GST:240,GYT:-240,HAA:-180,HAC:-300,HADT:-540,HAE:-240,HAP:-420,HAR:-360,HAST:-600,HAT:-90,HAY:-480,HKT:480,HLV:-210,HNA:-240,HNC:-360,HNE:-300,HNP:-480,HNR:-420,HNT:-150,HNY:-540,HOVT:420,ICT:420,IDT:180,IOT:360,IRDT:270,IRKST:540,IRKT:540,IRST:210,IST:330,JST:540,KGT:360,KRAST:480,KRAT:480,KST:540,KUYT:240,LHDT:660,LHST:630,LINT:840,MAGST:720,MAGT:720,MART:-510,MAWT:300,MDT:-360,MESZ:120,MEZ:60,MHT:720,MMT:390,MSD:240,MSK:240,MST:-420,MUT:240,MVT:300,MYT:480,NCT:660,NDT:-90,NFT:690,NOVST:420,NOVT:360,NPT:345,NST:-150,NUT:-660,NZDT:780,NZST:720,OMSST:420,OMST:420,PDT:-420,PET:-300,PETST:720,PETT:720,PGT:600,PHOT:780,PHT:480,PKT:300,PMDT:-120,PMST:-180,PONT:660,PST:-480,PT:-480,PWT:540,PYST:-180,PYT:-240,RET:240,SAMT:240,SAST:120,SBT:660,SCT:240,SGT:480,SRT:-180,SST:-660,TAHT:-600,TFT:300,TJT:300,TKT:780,TLT:540,TMT:300,TVT:720,ULAT:480,UTC:0,UYST:-120,UYT:-180,UZT:300,VET:-210,VLAST:660,VLAT:660,VUT:660,WAST:120,WAT:60,WEST:60,WESZ:60,WET:0,WEZ:0,WFT:720,WGST:-120,WGT:-180,WIB:420,WIT:540,WITA:480,WST:780,WT:0,YAKST:600,YAKT:600,YAPT:600,YEKST:360,YEKT:360},Jo=class{constructor(e){this.timezone=Object.assign(Object.assign({},Fb),e)}refine(e,t){var n;let i=(n=e.option.timezones)!==null&&n!==void 0?n:{};return t.forEach(s=>{var a,o;let u=e.text.substring(s.index+s.text.length),l=Ub.exec(u);if(!l)return;let c=l[1].toUpperCase(),d=(o=(a=i[c])!==null&&a!==void 0?a:this.timezone[c])!==null&&o!==void 0?o:null;if(d===null)return;e.debug(()=>{console.log(`Extracting timezone: '${c}' into: ${d} for: ${s.start}`)});let f=s.start.get("timezoneOffset");f!==null&&d!=f&&(s.start.isCertain("timezoneOffset")||c!=l[1])||s.start.isOnlyDate()&&c!=l[1]||(s.text+=l[0],s.start.isCertain("timezoneOffset")||s.start.assign("timezoneOffset",d),s.end!=null&&!s.end.isCertain("timezoneOffset")&&s.end.assign("timezoneOffset",d))}),t}};eu.default=Jo});var Cs=h(ru=>{"use strict";Object.defineProperty(ru,"__esModule",{value:!0});var qb=new RegExp("^\\s*(?:\\(?(?:GMT|UTC)\\s?)?([+-])(\\d{1,2})(?::?(\\d{2}))?\\)?","i"),Wb=1,Lb=2,Yb=3,tu=class{refine(e,t){return t.forEach(function(n){if(n.start.isCertain("timezoneOffset"))return;let i=e.text.substring(n.index+n.text.length),s=qb.exec(i);if(!s)return;e.debug(()=>{console.log(`Extracting timezone: '${s[0]}' into : ${n}`)});let a=parseInt(s[Lb]),o=parseInt(s[Yb]||"0"),u=a*60+o;u>14*60||(s[Wb]==="-"&&(u=-u),n.end!=null&&n.end.assign("timezoneOffset",u),n.start.assign("timezoneOffset",u),n.text+=s[0])}),t}};ru.default=tu});var ih=h(iu=>{"use strict";Object.defineProperty(iu,"__esModule",{value:!0});var nu=class{refine(e,t){if(t.length<2)return t;let n=[],i=t[0];for(let s=1;si.text.length&&(i=a):(n.push(i),i=a)}return i!=null&&n.push(i),n}};iu.default=nu});var sh=h(Kn=>{"use strict";var $b=Kn&&Kn.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Kn,"__esModule",{value:!0});var jb=$b(z()),su=class{refine(e,t){return e.option.forwardDate&&t.forEach(function(n){let i=jb.default(e.refDate);if(n.start.isOnlyDayMonthComponent()&&i.isAfter(n.start.dayjs()))for(let s=0;s<3&&i.isAfter(n.start.dayjs());s++)n.start.imply("year",n.start.get("year")+1),e.debug(()=>{console.log(`Forward yearly adjusted for ${n} (${n.start})`)}),n.end&&!n.end.isCertain("year")&&(n.end.imply("year",n.end.get("year")+1),e.debug(()=>{console.log(`Forward yearly adjusted for ${n} (${n.end})`)}));n.start.isOnlyWeekdayComponent()&&i.isAfter(n.start.dayjs())&&(i.day()>=n.start.get("weekday")?i=i.day(n.start.get("weekday")+7):i=i.day(n.start.get("weekday")),n.start.imply("day",i.date()),n.start.imply("month",i.month()+1),n.start.imply("year",i.year()),e.debug(()=>{console.log(`Forward weekly adjusted for ${n} (${n.start})`)}),n.end&&n.end.isOnlyWeekdayComponent()&&(i.day()>n.end.get("weekday")?i=i.day(n.end.get("weekday")+7):i=i.day(n.end.get("weekday")),n.end.imply("day",i.date()),n.end.imply("month",i.month()+1),n.end.imply("year",i.year()),e.debug(()=>{console.log(`Forward weekly adjusted for ${n} (${n.end})`)})))}),t}};Kn.default=su});var ah=h(ou=>{"use strict";Object.defineProperty(ou,"__esModule",{value:!0});var Bb=on(),au=class extends Bb.Filter{constructor(e){super(),this.strictMode=e}isValid(e,t){return t.text.replace(" ","").match(/^\d*(\.\d*)?$/)?(e.debug(()=>{console.log(`Removing unlikely result '${t.text}'`)}),!1):t.start.isValidDate()?t.end&&!t.end.isValidDate()?(e.debug(()=>{console.log(`Removing invalid result: ${t} (${t.end})`)}),!1):this.strictMode?this.isStrictModeValid(e,t):!0:(e.debug(()=>{console.log(`Removing invalid result: ${t} (${t.start})`)}),!1)}isStrictModeValid(e,t){return t.start.isOnlyWeekdayComponent()?(e.debug(()=>{console.log(`(Strict) Removing weekday only component: ${t} (${t.end})`)}),!1):t.start.isOnlyTime()&&(!t.start.isCertain("hour")||!t.start.isCertain("minute"))?(e.debug(()=>{console.log(`(Strict) Removing uncertain time component: ${t} (${t.end})`)}),!1):!0}};ou.default=au});var cu=h(lu=>{"use strict";Object.defineProperty(lu,"__esModule",{value:!0});var Gb=R(),Hb=new RegExp("([0-9]{4})\\-([0-9]{1,2})\\-([0-9]{1,2})(?:T([0-9]{1,2}):([0-9]{1,2})(?::([0-9]{1,2})(?:\\.(\\d{1,4}))?)?(?:Z|([+-]\\d{2}):?(\\d{2})?)?)?(?=\\W|$)","i"),zb=1,Kb=2,Vb=3,oh=4,Zb=5,uh=6,lh=7,ch=8,dh=9,uu=class extends Gb.AbstractParserWithWordBoundaryChecking{innerPattern(){return Hb}innerExtract(e,t){let n={};if(n.year=parseInt(t[zb]),n.month=parseInt(t[Kb]),n.day=parseInt(t[Vb]),t[oh]!=null)if(n.hour=parseInt(t[oh]),n.minute=parseInt(t[Zb]),t[uh]!=null&&(n.second=parseInt(t[uh])),t[lh]!=null&&(n.millisecond=parseInt(t[lh])),t[ch]==null)n.timezoneOffset=0;else{let i=parseInt(t[ch]),s=0;t[dh]!=null&&(s=parseInt(t[dh]));let a=i*60;a<0?a-=s:a+=s,n.timezoneOffset=a}return n}};lu.default=uu});var fh=h(fu=>{"use strict";Object.defineProperty(fu,"__esModule",{value:!0});var Xb=on(),du=class extends Xb.MergingRefiner{mergeResults(e,t,n){let i=n.clone();return i.index=t.index,i.text=t.text+e+i.text,i.start.assign("weekday",t.start.get("weekday")),i.end&&i.end.assign("weekday",t.start.get("weekday")),i}shouldMergeResults(e,t,n){return t.start.isOnlyWeekdayComponent()&&!t.start.isCertain("hour")&&n.start.isCertain("day")&&e.match(/^,?\s*$/)!=null}};fu.default=du});var Ht=h(ln=>{"use strict";var Fr=ln&&ln.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ln,"__esModule",{value:!0});ln.includeCommonConfiguration=void 0;var Qb=Fr(nh()),Jb=Fr(Cs()),ph=Fr(ih()),ev=Fr(sh()),tv=Fr(ah()),rv=Fr(cu()),nv=Fr(fh());function iv(r,e=!1){return r.parsers.unshift(new rv.default),r.refiners.unshift(new nv.default),r.refiners.unshift(new Qb.default),r.refiners.unshift(new Jb.default),r.refiners.unshift(new ph.default),r.refiners.push(new ph.default),r.refiners.push(new ev.default),r.refiners.push(new tv.default(e)),r}ln.includeCommonConfiguration=iv});var Kt=h(X=>{"use strict";var sv=X&&X.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(X,"__esModule",{value:!0});X.noon=X.morning=X.midnight=X.yesterdayEvening=X.evening=X.lastNight=X.tonight=X.theDayAfter=X.tomorrow=X.theDayBefore=X.yesterday=X.today=X.now=void 0;var Ct=pe(),cn=sv(z()),zt=it(),Vn=Ee();function av(r){let e=cn.default(r.instant),t=new Ct.ParsingComponents(r,{});return zt.assignSimilarDate(t,e),zt.assignSimilarTime(t,e),r.timezoneOffset!==null&&t.assign("timezoneOffset",e.utcOffset()),t}X.now=av;function ov(r){let e=cn.default(r.instant),t=new Ct.ParsingComponents(r,{});return zt.assignSimilarDate(t,e),zt.implySimilarTime(t,e),t}X.today=ov;function uv(r){return hh(r,1)}X.yesterday=uv;function hh(r,e){return pu(r,-e)}X.theDayBefore=hh;function lv(r){return pu(r,1)}X.tomorrow=lv;function pu(r,e){let t=cn.default(r.instant),n=new Ct.ParsingComponents(r,{});return t=t.add(e,"day"),zt.assignSimilarDate(n,t),zt.implySimilarTime(n,t),n}X.theDayAfter=pu;function cv(r,e=22){let t=cn.default(r.instant),n=new Ct.ParsingComponents(r,{});return n.imply("hour",e),n.imply("meridiem",Vn.Meridiem.PM),zt.assignSimilarDate(n,t),n}X.tonight=cv;function dv(r,e=0){let t=cn.default(r.instant),n=new Ct.ParsingComponents(r,{});return t.hour()<6&&(t=t.add(-1,"day")),zt.assignSimilarDate(n,t),n.imply("hour",e),n}X.lastNight=dv;function fv(r,e=20){let t=new Ct.ParsingComponents(r,{});return t.imply("meridiem",Vn.Meridiem.PM),t.imply("hour",e),t}X.evening=fv;function pv(r,e=20){let t=cn.default(r.instant),n=new Ct.ParsingComponents(r,{});return t=t.add(-1,"day"),zt.assignSimilarDate(n,t),n.imply("hour",e),n.imply("meridiem",Vn.Meridiem.PM),n}X.yesterdayEvening=pv;function hv(r){let e=new Ct.ParsingComponents(r,{});return e.imply("hour",0),e.imply("minute",0),e.imply("second",0),e}X.midnight=hv;function mv(r,e=6){let t=new Ct.ParsingComponents(r,{});return t.imply("meridiem",Vn.Meridiem.AM),t.imply("hour",e),t}X.morning=mv;function yv(r){let e=new Ct.ParsingComponents(r,{});return e.imply("meridiem",Vn.Meridiem.AM),e.imply("hour",12),e}X.noon=yv});var mh=h(yt=>{"use strict";var gv=yt&&yt.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),_v=yt&&yt.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),Tv=yt&&yt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&gv(e,r,t);return _v(e,r),e},bv=yt&&yt.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(yt,"__esModule",{value:!0});var vv=bv(z()),Ev=R(),Rv=it(),Zn=Tv(Kt()),wv=/(now|today|tonight|tomorrow|tmr|tmrw|yesterday|last\s*night)(?=\W|$)/i,hu=class extends Ev.AbstractParserWithWordBoundaryChecking{innerPattern(e){return wv}innerExtract(e,t){let n=vv.default(e.refDate),i=t[0].toLowerCase(),s=e.createParsingComponents();switch(i){case"now":return Zn.now(e.reference);case"today":return Zn.today(e.reference);case"yesterday":return Zn.yesterday(e.reference);case"tomorrow":case"tmr":case"tmrw":return Zn.tomorrow(e.reference);case"tonight":return Zn.tonight(e.reference);default:i.match(/last\s*night/)&&(n.hour()>6&&(n=n.add(-1,"day")),Rv.assignSimilarDate(s,n),s.imply("hour",0));break}return s}};yt.default=hu});var yh=h(Xn=>{"use strict";var Dv=Xn&&Xn.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Xn,"__esModule",{value:!0});var xs=Ee(),Mv=R(),Pv=Dv(z()),Ov=it(),Av=/(?:this)?\s{0,3}(morning|afternoon|evening|night|midnight|noon)(?=\W|$)/i,mu=class extends Mv.AbstractParserWithWordBoundaryChecking{innerPattern(){return Av}innerExtract(e,t){let n=Pv.default(e.refDate),i=e.createParsingComponents();switch(t[1].toLowerCase()){case"afternoon":i.imply("meridiem",xs.Meridiem.PM),i.imply("hour",15);break;case"evening":case"night":i.imply("meridiem",xs.Meridiem.PM),i.imply("hour",20);break;case"midnight":Ov.assignTheNextDay(i,n),i.imply("hour",0),i.imply("minute",0),i.imply("second",0);break;case"morning":i.imply("meridiem",xs.Meridiem.AM),i.imply("hour",6);break;case"noon":i.imply("meridiem",xs.Meridiem.AM),i.imply("hour",12);break}return i}};Xn.default=mu});var qr=h(_r=>{"use strict";var kv=_r&&_r.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(_r,"__esModule",{value:!0});_r.toDayJSClosestWeekday=_r.toDayJSWeekday=void 0;var gh=kv(z());function Nv(r,e,t){if(!t)return _h(r,e);let n=gh.default(r);switch(t){case"this":n=n.day(e);break;case"next":n=n.day(e+7);break;case"last":n=n.day(e-7);break}return n}_r.toDayJSWeekday=Nv;function _h(r,e){let t=gh.default(r),n=t.day();return Math.abs(e-7-n){"use strict";Object.defineProperty(gu,"__esModule",{value:!0});var Th=Ie(),Cv=Q(),xv=R(),Sv=qr(),Iv=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:on\\s*?)?(?:(this|last|past|next)\\s*)?(${Cv.matchAnyPattern(Th.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(this|last|past|next)\\s*week)?(?=\\W|$)`,"i"),Uv=1,Fv=2,qv=3,yu=class extends xv.AbstractParserWithWordBoundaryChecking{innerPattern(){return Iv}innerExtract(e,t){let n=t[Fv].toLowerCase(),i=Th.WEEKDAY_DICTIONARY[n],s=t[Uv],a=t[qv],o=s||a;o=o||"",o=o.toLowerCase();let u=null;o=="last"||o=="past"?u="last":o=="next"?u="next":o=="this"&&(u="this");let l=Sv.toDayJSWeekday(e.refDate,i,u);return e.createParsingComponents().assign("weekday",i).imply("day",l.date()).imply("month",l.month()+1).imply("year",l.year())}};gu.default=yu});var Rh=h(Qn=>{"use strict";var Wv=Qn&&Qn.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Qn,"__esModule",{value:!0});var Eh=Ie(),vh=pe(),Lv=Wv(z()),Yv=R(),$v=Q(),jv=new RegExp(`(this|last|past|next|after\\s*this)\\s*(${$v.matchAnyPattern(Eh.TIME_UNIT_DICTIONARY)})(?=\\s*)(?=\\W|$)`,"i"),Bv=1,Gv=2,_u=class extends Yv.AbstractParserWithWordBoundaryChecking{innerPattern(){return jv}innerExtract(e,t){let n=t[Bv].toLowerCase(),i=t[Gv].toLowerCase(),s=Eh.TIME_UNIT_DICTIONARY[i];if(n=="next"||n.startsWith("after")){let u={};return u[s]=1,vh.ParsingComponents.createRelativeFromReference(e.reference,u)}if(n=="last"||n=="past"){let u={};return u[s]=-1,vh.ParsingComponents.createRelativeFromReference(e.reference,u)}let a=e.createParsingComponents(),o=Lv.default(e.reference.instant);return i.match(/week/i)?(o=o.add(-o.get("d"),"d"),a.imply("day",o.date()),a.imply("month",o.month()+1),a.imply("year",o.year())):i.match(/month/i)?(o=o.add(-o.date()+1,"d"),a.imply("day",o.date()),a.assign("year",o.year()),a.assign("month",o.month()+1)):i.match(/year/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),a.imply("day",o.date()),a.imply("month",o.month()+1),a.assign("year",o.year())),a}};Qn.default=_u});var gt=h(pn=>{"use strict";Object.defineProperty(pn,"__esModule",{value:!0});pn.ParsingContext=pn.Chrono=void 0;var dn=pe(),Hv=Tu(),fn=class{constructor(e){e=e||Hv.createCasualConfiguration(),this.parsers=[...e.parsers],this.refiners=[...e.refiners]}clone(){return new fn({parsers:[...this.parsers],refiners:[...this.refiners]})}parseDate(e,t,n){let i=this.parse(e,t,n);return i.length>0?i[0].start.date():null}parse(e,t,n){let i=new Ss(e,t,n),s=[];return this.parsers.forEach(a=>{let o=fn.executeParser(i,a);s=s.concat(o)}),s.sort((a,o)=>a.index-o.index),this.refiners.forEach(function(a){s=a.refine(i,s)}),s}static executeParser(e,t){let n=[],i=t.pattern(e),s=e.text,a=e.text,o=i.exec(a);for(;o;){let u=o.index+s.length-a.length;o.index=u;let l=t.extract(e,o);if(!l){a=s.substring(o.index+1),o=i.exec(a);continue}let c=null;l instanceof dn.ParsingResult?c=l:l instanceof dn.ParsingComponents?(c=e.createParsingResult(o.index,o[0]),c.start=l):c=e.createParsingResult(o.index,o[0],l),e.debug(()=>console.log(`${t.constructor.name} extracted result ${c}`)),n.push(c),a=s.substring(u+c.text.length),o=i.exec(a)}return n}};pn.Chrono=fn;var Ss=class{constructor(e,t,n){this.text=e,this.reference=new dn.ReferenceWithTimezone(t),this.option=n!=null?n:{},this.refDate=this.reference.instant}createParsingComponents(e){return e instanceof dn.ParsingComponents?e:new dn.ParsingComponents(this.reference,e)}createParsingResult(e,t,n,i){let s=typeof t=="string"?t:this.text.substring(e,t),a=n?this.createParsingComponents(n):null,o=i?this.createParsingComponents(i):null;return new dn.ParsingResult(this.reference,e,s,a,o)}debug(e){this.option.debug&&(this.option.debug instanceof Function?this.option.debug(e):this.option.debug.debug(e))}};pn.ParsingContext=Ss});var Wr=h(Eu=>{"use strict";Object.defineProperty(Eu,"__esModule",{value:!0});var wh=Se(),zv=new RegExp("([^\\d]|^)([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})(?:[\\/\\.\\-]([0-9]{4}|[0-9]{2}))?(\\W|$)","i"),Is=1,Dh=5,Mh=2,Ph=3,bu=4,vu=class{constructor(e){this.groupNumberMonth=e?Ph:Mh,this.groupNumberDay=e?Mh:Ph}pattern(){return zv}extract(e,t){if(t[Is]=="/"||t[Dh]=="/"){t.index+=t[0].length;return}let n=t.index+t[Is].length,i=t[0].substr(t[Is].length,t[0].length-t[Is].length-t[Dh].length);if(i.match(/^\d\.\d$/)||i.match(/^\d\.\d{1,2}\.\d{1,2}\s*$/)||!t[bu]&&t[0].indexOf("/")<0)return;let s=e.createParsingResult(n,i),a=parseInt(t[this.groupNumberMonth]),o=parseInt(t[this.groupNumberDay]);if((a<1||a>12)&&a>12)if(o>=1&&o<=12&&a<=31)[o,a]=[a,o];else return null;if(o<1||o>31)return null;if(s.start.assign("day",o),s.start.assign("month",a),t[bu]){let u=parseInt(t[bu]),l=wh.findMostLikelyADYear(u);s.start.assign("year",l)}else{let u=wh.findYearClosestToRef(e.refDate,o,a);s.start.imply("year",u)}return s}};Eu.default=vu});var Ah=h(wu=>{"use strict";Object.defineProperty(wu,"__esModule",{value:!0});var Oh=Ie(),Kv=pe(),Vv=R(),Zv=st(),Xv=new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${Oh.TIME_UNITS_PATTERN})(?=\\W|$)`,"i"),Ru=class extends Vv.AbstractParserWithWordBoundaryChecking{innerPattern(){return Xv}innerExtract(e,t){let n=t[1].toLowerCase(),i=Oh.parseTimeUnits(t[2]);switch(n){case"last":case"past":case"-":i=Zv.reverseTimeUnits(i);break}return Kv.ParsingComponents.createRelativeFromReference(e.reference,i)}};wu.default=Ru});var Nh=h(Pu=>{"use strict";Object.defineProperty(Pu,"__esModule",{value:!0});var Qv=on(),Du=pe(),Jv=Ie(),e1=st();function kh(r){return r.text.match(/\s+(before|from)$/i)!=null}function t1(r){return r.text.match(/\s+(after|since)$/i)!=null}var Mu=class extends Qv.MergingRefiner{patternBetween(){return/^\s*$/i}shouldMergeResults(e,t,n){return!e.match(this.patternBetween())||!kh(t)&&!t1(t)?!1:!!n.start.get("day")&&!!n.start.get("month")&&!!n.start.get("year")}mergeResults(e,t,n){let i=Jv.parseTimeUnits(t.text);kh(t)&&(i=e1.reverseTimeUnits(i));let s=Du.ParsingComponents.createRelativeFromReference(new Du.ReferenceWithTimezone(n.start.date()),i);return new Du.ParsingResult(n.reference,t.index,`${t.text}${e}${n.text}`,s)}};Pu.default=Mu});var Tu=h(_e=>{"use strict";var we=_e&&_e.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(_e,"__esModule",{value:!0});_e.createConfiguration=_e.createCasualConfiguration=_e.parseDate=_e.parse=_e.GB=_e.strict=_e.casual=void 0;var r1=we(kp()),n1=we(Up()),i1=we(Yp()),s1=we(Bp()),a1=we(zp()),o1=we(Kp()),u1=we(Zp()),l1=we(Xp()),c1=we(Qp()),d1=we(Jp()),f1=we(rh()),p1=Ht(),h1=we(mh()),m1=we(yh()),y1=we(bh()),g1=we(Rh()),Ou=gt(),_1=we(Wr()),T1=we(Ah()),b1=we(Nh());_e.casual=new Ou.Chrono(Ch(!1));_e.strict=new Ou.Chrono(Us(!0,!1));_e.GB=new Ou.Chrono(Us(!1,!0));function v1(r,e,t){return _e.casual.parse(r,e,t)}_e.parse=v1;function E1(r,e,t){return _e.casual.parseDate(r,e,t)}_e.parseDate=E1;function Ch(r=!1){let e=Us(!1,r);return e.parsers.unshift(new h1.default),e.parsers.unshift(new m1.default),e.parsers.unshift(new s1.default),e.parsers.unshift(new g1.default),e.parsers.unshift(new T1.default),e}_e.createCasualConfiguration=Ch;function Us(r=!0,e=!1){return p1.includeCommonConfiguration({parsers:[new _1.default(e),new r1.default,new n1.default,new i1.default,new y1.default,new a1.default,new o1.default,new u1.default(r),new l1.default(r),new c1.default(r)],refiners:[new b1.default,new f1.default,new d1.default]},r)}_e.createConfiguration=Us});var xh=h(ku=>{"use strict";Object.defineProperty(ku,"__esModule",{value:!0});var R1=Ur(),Au=class extends R1.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:um|von)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|bis)\\s*"}extractPrimaryTimeComponents(e,t){return t[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(e,t)}};ku.default=Au});var Jn=h(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.parseTimeUnits=te.TIME_UNITS_PATTERN=te.parseYear=te.YEAR_PATTERN=te.parseNumberPattern=te.NUMBER_PATTERN=te.TIME_UNIT_DICTIONARY=te.INTEGER_WORD_DICTIONARY=te.MONTH_DICTIONARY=te.WEEKDAY_DICTIONARY=void 0;var Nu=Q(),w1=Se();te.WEEKDAY_DICTIONARY={sonntag:0,so:0,montag:1,mo:1,dienstag:2,di:2,mittwoch:3,mi:3,donnerstag:4,do:4,freitag:5,fr:5,samstag:6,sa:6};te.MONTH_DICTIONARY={januar:1,j\u00E4nner:1,janner:1,jan:1,"jan.":1,februar:2,feber:2,feb:2,"feb.":2,m\u00E4rz:3,maerz:3,m\u00E4r:3,"m\xE4r.":3,mrz:3,"mrz.":3,april:4,apr:4,"apr.":4,mai:5,juni:6,jun:6,"jun.":6,juli:7,jul:7,"jul.":7,august:8,aug:8,"aug.":8,september:9,sep:9,"sep.":9,sept:9,"sept.":9,oktober:10,okt:10,"okt.":10,november:11,nov:11,"nov.":11,dezember:12,dez:12,"dez.":12};te.INTEGER_WORD_DICTIONARY={eins:1,eine:1,einem:1,einen:1,einer:1,zwei:2,drei:3,vier:4,f\u00FCnf:5,fuenf:5,sechs:6,sieben:7,acht:8,neun:9,zehn:10,elf:11,zw\u00F6lf:12,zwoelf:12};te.TIME_UNIT_DICTIONARY={sek:"second",sekunde:"second",sekunden:"second",min:"minute",minute:"minute",minuten:"minute",h:"hour",std:"hour",stunde:"hour",stunden:"hour",tag:"d",tage:"d",tagen:"d",woche:"week",wochen:"week",monat:"month",monate:"month",monaten:"month",monats:"month",quartal:"quarter",quartals:"quarter",quartale:"quarter",quartalen:"quarter",a:"year",j:"year",jr:"year",jahr:"year",jahre:"year",jahren:"year",jahres:"year"};te.NUMBER_PATTERN=`(?:${Nu.matchAnyPattern(te.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s*an?)?|an?\\b(?:\\s*few)?|few|several|a?\\s*couple\\s*(?:of)?)`;function Ih(r){let e=r.toLowerCase();return te.INTEGER_WORD_DICTIONARY[e]!==void 0?te.INTEGER_WORD_DICTIONARY[e]:e==="a"||e==="an"?1:e.match(/few/)?3:e.match(/half/)?.5:e.match(/couple/)?2:e.match(/several/)?7:parseFloat(e)}te.parseNumberPattern=Ih;te.YEAR_PATTERN="(?:[0-9]{1,4}(?:\\s*[vn]\\.?\\s*(?:C(?:hr)?|(?:u\\.?|d\\.?(?:\\s*g\\.?)?)?\\s*Z)\\.?|\\s*(?:u\\.?|d\\.?(?:\\s*g\\.)?)\\s*Z\\.?)?)";function D1(r){if(/v/i.test(r))return-parseInt(r.replace(/[^0-9]+/gi,""));if(/n/i.test(r))return parseInt(r.replace(/[^0-9]+/gi,""));if(/z/i.test(r))return parseInt(r.replace(/[^0-9]+/gi,""));let e=parseInt(r);return w1.findMostLikelyADYear(e)}te.parseYear=D1;var Uh=`(${te.NUMBER_PATTERN})\\s{0,5}(${Nu.matchAnyPattern(te.TIME_UNIT_DICTIONARY)})\\s{0,5}`,Sh=new RegExp(Uh,"i");te.TIME_UNITS_PATTERN=Nu.repeatedTimeunitPattern("",Uh);function M1(r){let e={},t=r,n=Sh.exec(t);for(;n;)P1(e,n),t=t.substring(n[0].length),n=Sh.exec(t);return e}te.parseTimeUnits=M1;function P1(r,e){let t=Ih(e[1]),n=te.TIME_UNIT_DICTIONARY[e[2].toLowerCase()];r[n]=t}});var qh=h(xu=>{"use strict";Object.defineProperty(xu,"__esModule",{value:!0});var Fh=Jn(),O1=Q(),A1=R(),k1=qr(),N1=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:a[mn]\\s*?)?(?:(diese[mn]|letzte[mn]|n(?:\xE4|ae)chste[mn])\\s*)?(${O1.matchAnyPattern(Fh.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(diese|letzte|n(?:\xE4|ae)chste)\\s*woche)?(?=\\W|$)`,"i"),C1=1,x1=3,S1=2,Cu=class extends A1.AbstractParserWithWordBoundaryChecking{innerPattern(){return N1}innerExtract(e,t){let n=t[S1].toLowerCase(),i=Fh.WEEKDAY_DICTIONARY[n],s=t[C1],a=t[x1],o=s||a;o=o||"",o=o.toLowerCase();let u=null;o.match(/letzte/)?u="last":o.match(/chste/)?u="next":o.match(/diese/)&&(u="this");let l=k1.toDayJSWeekday(e.refDate,i,u);return e.createParsingComponents().assign("weekday",i).imply("day",l.date()).imply("month",l.month()+1).imply("year",l.year())}};xu.default=Cu});var $h=h(Su=>{"use strict";Object.defineProperty(Su,"__esModule",{value:!0});var Tr=Ee(),I1=new RegExp("(^|\\s|T)(?:(?:um|von)\\s*)?(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s)?)?(?:\\s*Uhr)?(?:\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\s+der\\s+Nacht))?(?=\\W|$)","i"),U1=new RegExp("^\\s*(\\-|\\\u2013|\\~|\\\u301C|bis(?:\\s+um)?|\\?)\\s*(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s)?)?(?:\\s*Uhr)?(?:\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\s+der\\s+Nacht))?(?=\\W|$)","i"),F1=2,Wh=3,Lh=4,Yh=5,hn=class{pattern(e){return I1}extract(e,t){let n=e.createParsingResult(t.index+t[1].length,t[0].substring(t[1].length));if(n.text.match(/^\d{4}$/)||(n.start=hn.extractTimeComponent(n.start.clone(),t),!n.start))return t.index+=t[0].length,null;let i=e.text.substring(t.index+t[0].length),s=U1.exec(i);return s&&(n.end=hn.extractTimeComponent(n.start.clone(),s),n.end&&(n.text+=s[0])),n}static extractTimeComponent(e,t){let n=0,i=0,s=null;if(n=parseInt(t[F1]),t[Wh]!=null&&(i=parseInt(t[Wh])),i>=60||n>24)return null;if(n>=12&&(s=Tr.Meridiem.PM),t[Yh]!=null){if(n>12)return null;let a=t[Yh].toLowerCase();a.match(/morgen|vormittag/)&&(s=Tr.Meridiem.AM,n==12&&(n=0)),a.match(/nachmittag|abend/)&&(s=Tr.Meridiem.PM,n!=12&&(n+=12)),a.match(/nacht/)&&(n==12?(s=Tr.Meridiem.AM,n=0):n<6?s=Tr.Meridiem.AM:(s=Tr.Meridiem.PM,n+=12))}if(e.assign("hour",n),e.assign("minute",i),s!==null?e.assign("meridiem",s):n<12?e.imply("meridiem",Tr.Meridiem.AM):e.imply("meridiem",Tr.Meridiem.PM),t[Lh]!=null){let a=parseInt(t[Lh]);if(a>=60)return null;e.assign("second",a)}return e}};Su.default=hn});var jh=h(ei=>{"use strict";var q1=ei&&ei.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ei,"__esModule",{value:!0});var W1=q1(Nt()),Iu=class extends W1.default{patternBetween(){return/^\s*(bis(?:\s*(?:am|zum))?|-)\s*$/i}};ei.default=Iu});var Bh=h(ti=>{"use strict";var L1=ti&&ti.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ti,"__esModule",{value:!0});var Y1=L1(Gt()),Uu=class extends Y1.default{patternBetween(){return new RegExp("^\\s*(T|um|am|,|-)?\\s*$")}};ti.default=Uu});var Fu=h(ni=>{"use strict";var $1=ni&&ni.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ni,"__esModule",{value:!0});var j1=$1(z()),Lr=Ee(),B1=R(),G1=it(),H1=st(),ri=class extends B1.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(diesen)?\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht)(?=\W|$)/i}innerExtract(e,t){let n=j1.default(e.refDate),i=t[2].toLowerCase(),s=e.createParsingComponents();return G1.implySimilarTime(s,n),ri.extractTimeComponents(s,i)}static extractTimeComponents(e,t){switch(t){case"morgen":e.imply("hour",6),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Lr.Meridiem.AM);break;case"vormittag":e.imply("hour",9),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Lr.Meridiem.AM);break;case"mittag":case"mittags":e.imply("hour",12),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Lr.Meridiem.AM);break;case"nachmittag":e.imply("hour",15),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Lr.Meridiem.PM);break;case"abend":e.imply("hour",18),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Lr.Meridiem.PM);break;case"nacht":e.imply("hour",22),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Lr.Meridiem.PM);break;case"mitternacht":e.get("hour")>1&&(e=H1.addImpliedTimeUnits(e,{day:1})),e.imply("hour",0),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Lr.Meridiem.AM);break}return e}};ni.default=ri});var zh=h(_t=>{"use strict";var z1=_t&&_t.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),K1=_t&&_t.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),V1=_t&&_t.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&z1(e,r,t);return K1(e,r),e},Hh=_t&&_t.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(_t,"__esModule",{value:!0});var Z1=Hh(z()),X1=R(),Yr=it(),Q1=Hh(Fu()),Gh=V1(Kt()),J1=new RegExp("(jetzt|heute|morgen|\xFCbermorgen|uebermorgen|gestern|vorgestern|letzte\\s*nacht)(?:\\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht))?(?=\\W|$)","i"),eE=1,tE=2,qu=class extends X1.AbstractParserWithWordBoundaryChecking{innerPattern(e){return J1}innerExtract(e,t){let n=Z1.default(e.refDate),i=(t[eE]||"").toLowerCase(),s=(t[tE]||"").toLowerCase(),a=e.createParsingComponents();switch(i){case"jetzt":a=Gh.now(e.reference);break;case"heute":a=Gh.today(e.reference);break;case"morgen":Yr.assignTheNextDay(a,n);break;case"\xFCbermorgen":case"uebermorgen":n=n.add(1,"day"),Yr.assignTheNextDay(a,n);break;case"gestern":n=n.add(-1,"day"),Yr.assignSimilarDate(a,n),Yr.implySimilarTime(a,n);break;case"vorgestern":n=n.add(-2,"day"),Yr.assignSimilarDate(a,n),Yr.implySimilarTime(a,n);break;default:i.match(/letzte\s*nacht/)&&(n.hour()>6&&(n=n.add(-1,"day")),Yr.assignSimilarDate(a,n),a.imply("hour",0));break}return s&&(a=Q1.default.extractTimeComponents(a,s)),a}};_t.default=qu});var Jh=h(Lu=>{"use strict";Object.defineProperty(Lu,"__esModule",{value:!0});var rE=Se(),Xh=Jn(),Qh=Jn(),nE=Q(),iE=R(),sE=new RegExp(`(?:am\\s*?)?(?:den\\s*?)?([0-9]{1,2})\\.(?:\\s*(?:bis(?:\\s*(?:am|zum))?|\\-|\\\u2013|\\s)\\s*([0-9]{1,2})\\.?)?\\s*(${nE.matchAnyPattern(Xh.MONTH_DICTIONARY)})(?:(?:-|/|,?\\s*)(${Qh.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),Kh=1,Vh=2,aE=3,Zh=4,Wu=class extends iE.AbstractParserWithWordBoundaryChecking{innerPattern(){return sE}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=Xh.MONTH_DICTIONARY[t[aE].toLowerCase()],s=parseInt(t[Kh]);if(s>31)return t.index=t.index+t[Kh].length,null;if(n.start.assign("month",i),n.start.assign("day",s),t[Zh]){let a=Qh.parseYear(t[Zh]);n.start.assign("year",a)}else{let a=rE.findYearClosestToRef(e.refDate,s,i);n.start.imply("year",a)}if(t[Vh]){let a=parseInt(t[Vh]);n.end=n.start.clone(),n.end.assign("day",a)}return n}};Lu.default=Wu});var em=h($u=>{"use strict";Object.defineProperty($u,"__esModule",{value:!0});var Fs=Jn(),oE=pe(),uE=R(),lE=st(),cE=Q(),Yu=class extends uE.AbstractParserWithWordBoundaryChecking{constructor(){super()}innerPattern(){return new RegExp(`(?:\\s*((?:n\xE4chste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?|vor|in)\\s*)?(${Fs.NUMBER_PATTERN})?(?:\\s*(n\xE4chste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?)?\\s*(${cE.matchAnyPattern(Fs.TIME_UNIT_DICTIONARY)})`,"i")}innerExtract(e,t){let n=t[2]?Fs.parseNumberPattern(t[2]):1,i=Fs.TIME_UNIT_DICTIONARY[t[4].toLowerCase()],s={};s[i]=n;let a=t[1]||t[3]||"";if(a=a.toLowerCase(),!!a)return(/vor/.test(a)||/letzte/.test(a)||/vergangen/.test(a))&&(s=lE.reverseTimeUnits(s)),oE.ParsingComponents.createRelativeFromReference(e.reference,s)}};$u.default=Yu});var nm=h(De=>{"use strict";var Tt=De&&De.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(De,"__esModule",{value:!0});De.createConfiguration=De.createCasualConfiguration=De.parseDate=De.parse=De.strict=De.casual=void 0;var dE=Ht(),tm=gt(),fE=Tt(Wr()),pE=Tt(cu()),hE=Tt(xh()),mE=Tt(qh()),yE=Tt($h()),gE=Tt(jh()),_E=Tt(Bh()),TE=Tt(zh()),bE=Tt(Fu()),vE=Tt(Jh()),EE=Tt(em());De.casual=new tm.Chrono(rm());De.strict=new tm.Chrono(ju(!0));function RE(r,e,t){return De.casual.parse(r,e,t)}De.parse=RE;function wE(r,e,t){return De.casual.parseDate(r,e,t)}De.parseDate=wE;function rm(r=!0){let e=ju(!1,r);return e.parsers.unshift(new bE.default),e.parsers.unshift(new TE.default),e.parsers.unshift(new EE.default),e}De.createCasualConfiguration=rm;function ju(r=!0,e=!0){return dE.includeCommonConfiguration({parsers:[new pE.default,new fE.default(e),new hE.default,new yE.default,new vE.default,new mE.default],refiners:[new gE.default,new _E.default]},r)}De.createConfiguration=ju});var sm=h(bt=>{"use strict";var DE=bt&&bt.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),ME=bt&&bt.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),PE=bt&&bt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&DE(e,r,t);return ME(e,r),e},OE=bt&&bt.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(bt,"__esModule",{value:!0});var AE=OE(z()),kE=Ee(),NE=R(),im=it(),qs=PE(Kt()),Bu=class extends NE.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(maintenant|aujourd'hui|demain|hier|cette\s*nuit|la\s*veille)(?=\W|$)/i}innerExtract(e,t){let n=AE.default(e.refDate),i=t[0].toLowerCase(),s=e.createParsingComponents();switch(i){case"maintenant":return qs.now(e.reference);case"aujourd'hui":return qs.today(e.reference);case"hier":return qs.yesterday(e.reference);case"demain":return qs.tomorrow(e.reference);default:i.match(/cette\s*nuit/)?(im.assignSimilarDate(s,n),s.imply("hour",22),s.imply("meridiem",kE.Meridiem.PM)):i.match(/la\s*veille/)&&(n=n.add(-1,"day"),im.assignSimilarDate(s,n),s.imply("hour",0))}return s}};bt.default=Bu});var am=h(Hu=>{"use strict";Object.defineProperty(Hu,"__esModule",{value:!0});var ii=Ee(),CE=R(),Gu=class extends CE.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(cet?)?\s*(matin|soir|après-midi|aprem|a midi|à minuit)(?=\W|$)/i}innerExtract(e,t){let n=t[2].toLowerCase(),i=e.createParsingComponents();switch(n){case"apr\xE8s-midi":case"aprem":i.imply("hour",14),i.imply("minute",0),i.imply("meridiem",ii.Meridiem.PM);break;case"soir":i.imply("hour",18),i.imply("minute",0),i.imply("meridiem",ii.Meridiem.PM);break;case"matin":i.imply("hour",8),i.imply("minute",0),i.imply("meridiem",ii.Meridiem.AM);break;case"a midi":i.imply("hour",12),i.imply("minute",0),i.imply("meridiem",ii.Meridiem.AM);break;case"\xE0 minuit":i.imply("hour",0),i.imply("meridiem",ii.Meridiem.AM);break}return i}};Hu.default=Gu});var om=h(Ku=>{"use strict";Object.defineProperty(Ku,"__esModule",{value:!0});var xE=Ur(),zu=class extends xE.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:[\xE0a])\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|[\xE0a]|\\?)\\s*"}extractPrimaryTimeComponents(e,t){return t[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(e,t)}};Ku.default=zu});var um=h(si=>{"use strict";var SE=si&&si.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(si,"__esModule",{value:!0});var IE=SE(Gt()),Vu=class extends IE.default{patternBetween(){return new RegExp("^\\s*(T|\xE0|a|vers|de|,|-)?\\s*$")}};si.default=Vu});var lm=h(ai=>{"use strict";var UE=ai&&ai.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ai,"__esModule",{value:!0});var FE=UE(Nt()),Zu=class extends FE.default{patternBetween(){return/^\s*(à|a|-)\s*$/i}};ai.default=Zu});var br=h(K=>{"use strict";Object.defineProperty(K,"__esModule",{value:!0});K.parseTimeUnits=K.TIME_UNITS_PATTERN=K.parseYear=K.YEAR_PATTERN=K.parseOrdinalNumberPattern=K.ORDINAL_NUMBER_PATTERN=K.parseNumberPattern=K.NUMBER_PATTERN=K.TIME_UNIT_DICTIONARY=K.INTEGER_WORD_DICTIONARY=K.MONTH_DICTIONARY=K.WEEKDAY_DICTIONARY=void 0;var Xu=Q();K.WEEKDAY_DICTIONARY={dimanche:0,dim:0,lundi:1,lun:1,mardi:2,mar:2,mercredi:3,mer:3,jeudi:4,jeu:4,vendredi:5,ven:5,samedi:6,sam:6};K.MONTH_DICTIONARY={janvier:1,jan:1,"jan.":1,f\u00E9vrier:2,f\u00E9v:2,"f\xE9v.":2,fevrier:2,fev:2,"fev.":2,mars:3,mar:3,"mar.":3,avril:4,avr:4,"avr.":4,mai:5,juin:6,jun:6,juillet:7,juil:7,jul:7,"jul.":7,ao\u00FBt:8,aout:8,septembre:9,sep:9,"sep.":9,sept:9,"sept.":9,octobre:10,oct:10,"oct.":10,novembre:11,nov:11,"nov.":11,d\u00E9cembre:12,decembre:12,dec:12,"dec.":12};K.INTEGER_WORD_DICTIONARY={un:1,deux:2,trois:3,quatre:4,cinq:5,six:6,sept:7,huit:8,neuf:9,dix:10,onze:11,douze:12,treize:13};K.TIME_UNIT_DICTIONARY={sec:"second",seconde:"second",secondes:"second",min:"minute",mins:"minute",minute:"minute",minutes:"minute",h:"hour",hr:"hour",hrs:"hour",heure:"hour",heures:"hour",jour:"d",jours:"d",semaine:"week",semaines:"week",mois:"month",trimestre:"quarter",trimestres:"quarter",ans:"year",ann\u00E9e:"year",ann\u00E9es:"year"};K.NUMBER_PATTERN=`(?:${Xu.matchAnyPattern(K.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|une?\\b|quelques?|demi-?)`;function dm(r){let e=r.toLowerCase();return K.INTEGER_WORD_DICTIONARY[e]!==void 0?K.INTEGER_WORD_DICTIONARY[e]:e==="une"||e==="un"?1:e.match(/quelques?/)?3:e.match(/demi-?/)?.5:parseFloat(e)}K.parseNumberPattern=dm;K.ORDINAL_NUMBER_PATTERN="(?:[0-9]{1,2}(?:er)?)";function qE(r){let e=r.toLowerCase();return e=e.replace(/(?:er)$/i,""),parseInt(e)}K.parseOrdinalNumberPattern=qE;K.YEAR_PATTERN="(?:[1-9][0-9]{0,3}\\s*(?:AC|AD|p\\.\\s*C(?:hr?)?\\.\\s*n\\.)|[1-2][0-9]{3}|[5-9][0-9])";function WE(r){if(/AC/i.test(r))return r=r.replace(/BC/i,""),-parseInt(r);if(/AD/i.test(r)||/C/i.test(r))return r=r.replace(/[^\d]+/i,""),parseInt(r);let e=parseInt(r);return e<100&&(e>50?e=e+1900:e=e+2e3),e}K.parseYear=WE;var fm=`(${K.NUMBER_PATTERN})\\s{0,5}(${Xu.matchAnyPattern(K.TIME_UNIT_DICTIONARY)})\\s{0,5}`,cm=new RegExp(fm,"i");K.TIME_UNITS_PATTERN=Xu.repeatedTimeunitPattern("",fm);function LE(r){let e={},t=r,n=cm.exec(t);for(;n;)YE(e,n),t=t.substring(n[0].length),n=cm.exec(t);return e}K.parseTimeUnits=LE;function YE(r,e){let t=dm(e[1]),n=K.TIME_UNIT_DICTIONARY[e[2].toLowerCase()];r[n]=t}});var hm=h(Ju=>{"use strict";Object.defineProperty(Ju,"__esModule",{value:!0});var pm=br(),$E=Q(),jE=R(),BE=qr(),GE=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(?:ce)\\s*)?(${$E.matchAnyPattern(pm.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(dernier|prochain)\\s*)?(?=\\W|\\d|$)`,"i"),HE=1,zE=2,Qu=class extends jE.AbstractParserWithWordBoundaryChecking{innerPattern(){return GE}innerExtract(e,t){let n=t[HE].toLowerCase(),i=pm.WEEKDAY_DICTIONARY[n];if(i===void 0)return null;let s=t[zE];s=s||"",s=s.toLowerCase();let a=null;s=="dernier"?a="last":s=="prochain"&&(a="next");let o=BE.toDayJSWeekday(e.refDate,i,a);return e.createParsingComponents().assign("weekday",i).imply("day",o.date()).imply("month",o.month()+1).imply("year",o.year())}};Ju.default=Qu});var _m=h(el=>{"use strict";Object.defineProperty(el,"__esModule",{value:!0});var oi=Ee(),KE=new RegExp("(^|\\s|T)(?:(?:[\xE0a])\\s*)?(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s|:)?)?(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?(?=\\W|$)","i"),VE=new RegExp("^\\s*(\\-|\\\u2013|\\~|\\\u301C|[\xE0a]|\\?)\\s*(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s|:)?)?(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?(?=\\W|$)","i"),ZE=2,mm=3,ym=4,gm=5,mn=class{pattern(e){return KE}extract(e,t){let n=e.createParsingResult(t.index+t[1].length,t[0].substring(t[1].length));if(n.text.match(/^\d{4}$/)||(n.start=mn.extractTimeComponent(n.start.clone(),t),!n.start))return t.index+=t[0].length,null;let i=e.text.substring(t.index+t[0].length),s=VE.exec(i);return s&&(n.end=mn.extractTimeComponent(n.start.clone(),s),n.end&&(n.text+=s[0])),n}static extractTimeComponent(e,t){let n=0,i=0,s=null;if(n=parseInt(t[ZE]),t[mm]!=null&&(i=parseInt(t[mm])),i>=60||n>24)return null;if(n>=12&&(s=oi.Meridiem.PM),t[gm]!=null){if(n>12)return null;let a=t[gm][0].toLowerCase();a=="a"&&(s=oi.Meridiem.AM,n==12&&(n=0)),a=="p"&&(s=oi.Meridiem.PM,n!=12&&(n+=12))}if(e.assign("hour",n),e.assign("minute",i),s!==null?e.assign("meridiem",s):n<12?e.imply("meridiem",oi.Meridiem.AM):e.imply("meridiem",oi.Meridiem.PM),t[ym]!=null){let a=parseInt(t[ym]);if(a>=60)return null;e.assign("second",a)}return e}};el.default=mn});var wm=h(rl=>{"use strict";Object.defineProperty(rl,"__esModule",{value:!0});var XE=Se(),Em=br(),Rm=br(),Ws=br(),QE=Q(),JE=R(),e0=new RegExp(`(?:on\\s*?)?(${Ws.ORDINAL_NUMBER_PATTERN})(?:\\s*(?:au|\\-|\\\u2013|jusqu'au?|\\s)\\s*(${Ws.ORDINAL_NUMBER_PATTERN}))?(?:-|/|\\s*(?:de)?\\s*)(${QE.matchAnyPattern(Em.MONTH_DICTIONARY)})(?:(?:-|/|,?\\s*)(${Rm.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),Tm=1,bm=2,t0=3,vm=4,tl=class extends JE.AbstractParserWithWordBoundaryChecking{innerPattern(){return e0}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=Em.MONTH_DICTIONARY[t[t0].toLowerCase()],s=Ws.parseOrdinalNumberPattern(t[Tm]);if(s>31)return t.index=t.index+t[Tm].length,null;if(n.start.assign("month",i),n.start.assign("day",s),t[vm]){let a=Rm.parseYear(t[vm]);n.start.assign("year",a)}else{let a=XE.findYearClosestToRef(e.refDate,s,i);n.start.imply("year",a)}if(t[bm]){let a=Ws.parseOrdinalNumberPattern(t[bm]);n.end=n.start.clone(),n.end.assign("day",a)}return n}};rl.default=tl});var Mm=h(il=>{"use strict";Object.defineProperty(il,"__esModule",{value:!0});var Dm=br(),r0=pe(),n0=R(),i0=st(),nl=class extends n0.AbstractParserWithWordBoundaryChecking{constructor(){super()}innerPattern(){return new RegExp(`il y a\\s*(${Dm.TIME_UNITS_PATTERN})(?=(?:\\W|$))`,"i")}innerExtract(e,t){let n=Dm.parseTimeUnits(t[1]),i=i0.reverseTimeUnits(n);return r0.ParsingComponents.createRelativeFromReference(e.reference,i)}};il.default=nl});var Om=h(al=>{"use strict";Object.defineProperty(al,"__esModule",{value:!0});var Pm=br(),s0=pe(),a0=R(),sl=class extends a0.AbstractParserWithWordBoundaryChecking{innerPattern(){return new RegExp(`(?:dans|en|pour|pendant|de)\\s*(${Pm.TIME_UNITS_PATTERN})(?=\\W|$)`,"i")}innerExtract(e,t){let n=Pm.parseTimeUnits(t[1]);return s0.ParsingComponents.createRelativeFromReference(e.reference,n)}};al.default=sl});var Am=h(ul=>{"use strict";Object.defineProperty(ul,"__esModule",{value:!0});var Ls=br(),o0=pe(),u0=R(),l0=st(),c0=Q(),ol=class extends u0.AbstractParserWithWordBoundaryChecking{constructor(){super()}innerPattern(){return new RegExp(`(?:les?|la|l'|du|des?)\\s*(${Ls.NUMBER_PATTERN})?(?:\\s*(prochaine?s?|derni[e\xE8]re?s?|pass[\xE9e]e?s?|pr[\xE9e]c[\xE9e]dents?|suivante?s?))?\\s*(${c0.matchAnyPattern(Ls.TIME_UNIT_DICTIONARY)})(?:\\s*(prochaine?s?|derni[e\xE8]re?s?|pass[\xE9e]e?s?|pr[\xE9e]c[\xE9e]dents?|suivante?s?))?`,"i")}innerExtract(e,t){let n=t[1]?Ls.parseNumberPattern(t[1]):1,i=Ls.TIME_UNIT_DICTIONARY[t[3].toLowerCase()],s={};s[i]=n;let a=t[2]||t[4]||"";if(a=a.toLowerCase(),!!a)return(/derni[eè]re?s?/.test(a)||/pass[ée]e?s?/.test(a)||/pr[ée]c[ée]dents?/.test(a))&&(s=l0.reverseTimeUnits(s)),o0.ParsingComponents.createRelativeFromReference(e.reference,s)}};ul.default=ol});var Cm=h(Me=>{"use strict";var at=Me&&Me.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Me,"__esModule",{value:!0});Me.createConfiguration=Me.createCasualConfiguration=Me.parseDate=Me.parse=Me.strict=Me.casual=void 0;var d0=Ht(),km=gt(),f0=at(sm()),p0=at(am()),h0=at(Wr()),m0=at(om()),y0=at(um()),g0=at(lm()),_0=at(hm()),T0=at(_m()),b0=at(wm()),v0=at(Mm()),E0=at(Om()),R0=at(Am());Me.casual=new km.Chrono(Nm());Me.strict=new km.Chrono(ll(!0));function w0(r,e,t){return Me.casual.parse(r,e,t)}Me.parse=w0;function D0(r,e,t){return Me.casual.parseDate(r,e,t)}Me.parseDate=D0;function Nm(r=!0){let e=ll(!1,r);return e.parsers.unshift(new f0.default),e.parsers.unshift(new p0.default),e.parsers.unshift(new R0.default),e}Me.createCasualConfiguration=Nm;function ll(r=!0,e=!0){return d0.includeCommonConfiguration({parsers:[new h0.default(e),new b0.default,new m0.default,new T0.default,new v0.default,new E0.default,new _0.default],refiners:[new y0.default,new g0.default]},r)}Me.createConfiguration=ll});var xm=h(Ys=>{"use strict";Object.defineProperty(Ys,"__esModule",{value:!0});Ys.toHankaku=void 0;function M0(r){return String(r).replace(/\u2019/g,"'").replace(/\u201D/g,'"').replace(/\u3000/g," ").replace(/\uFFE5/g,"\xA5").replace(/[\uFF01\uFF03-\uFF06\uFF08\uFF09\uFF0C-\uFF19\uFF1C-\uFF1F\uFF21-\uFF3B\uFF3D\uFF3F\uFF41-\uFF5B\uFF5D\uFF5E]/g,P0)}Ys.toHankaku=M0;function P0(r){return String.fromCharCode(r.charCodeAt(0)-65248)}});var Im=h(ui=>{"use strict";var O0=ui&&ui.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ui,"__esModule",{value:!0});var cl=xm(),A0=Se(),k0=O0(z()),N0=/(?:(?:([同今本])|((昭和|平成|令和)?([0-90-9]{1,4}|元)))年\s*)?([0-90-9]{1,2})月\s*([0-90-9]{1,2})日/i,Sm=1,C0=2,dl=3,x0=4,S0=5,I0=6,fl=class{pattern(){return N0}extract(e,t){let n=parseInt(cl.toHankaku(t[S0])),i=parseInt(cl.toHankaku(t[I0])),s=e.createParsingComponents({day:i,month:n});if(t[Sm]&&t[Sm].match("\u540C|\u4ECA|\u672C")){let a=k0.default(e.refDate);s.assign("year",a.year())}if(t[C0]){let a=t[x0],o=a=="\u5143"?1:parseInt(cl.toHankaku(a));t[dl]=="\u4EE4\u548C"?o+=2018:t[dl]=="\u5E73\u6210"?o+=1988:t[dl]=="\u662D\u548C"&&(o+=1925),s.assign("year",o)}else{let a=A0.findYearClosestToRef(e.refDate,i,n);s.imply("year",a)}return s}};ui.default=fl});var Um=h(li=>{"use strict";var U0=li&&li.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(li,"__esModule",{value:!0});var F0=U0(Nt()),pl=class extends F0.default{patternBetween(){return/^\s*(から|ー|-)\s*$/i}};li.default=pl});var qm=h(vt=>{"use strict";var q0=vt&&vt.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),W0=vt&&vt.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),L0=vt&&vt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&q0(e,r,t);return W0(e,r),e},Y0=vt&&vt.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(vt,"__esModule",{value:!0});var $0=Y0(z()),Fm=Ee(),hl=L0(Kt()),j0=/今日|当日|昨日|明日|今夜|今夕|今晩|今朝/i,ml=class{pattern(){return j0}extract(e,t){let n=t[0],i=$0.default(e.refDate),s=e.createParsingComponents();switch(n){case"\u6628\u65E5":return hl.yesterday(e.reference);case"\u660E\u65E5":return hl.tomorrow(e.reference);case"\u4ECA\u65E5":case"\u5F53\u65E5":return hl.today(e.reference)}return n=="\u4ECA\u591C"||n=="\u4ECA\u5915"||n=="\u4ECA\u6669"?(s.imply("hour",22),s.assign("meridiem",Fm.Meridiem.PM)):n.match("\u4ECA\u671D")&&(s.imply("hour",6),s.assign("meridiem",Fm.Meridiem.AM)),s.assign("day",i.date()),s.assign("month",i.month()+1),s.assign("year",i.year()),s}};vt.default=ml});var Ym=h(Pe=>{"use strict";var yl=Pe&&Pe.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Pe,"__esModule",{value:!0});Pe.createConfiguration=Pe.createCasualConfiguration=Pe.parseDate=Pe.parse=Pe.strict=Pe.casual=void 0;var B0=yl(Im()),G0=yl(Um()),H0=yl(qm()),Wm=gt();Pe.casual=new Wm.Chrono(Lm());Pe.strict=new Wm.Chrono(gl());function z0(r,e,t){return Pe.casual.parse(r,e,t)}Pe.parse=z0;function K0(r,e,t){return Pe.casual.parseDate(r,e,t)}Pe.parseDate=K0;function Lm(){let r=gl();return r.parsers.unshift(new H0.default),r}Pe.createCasualConfiguration=Lm;function gl(){return{parsers:[new B0.default],refiners:[new G0.default]}}Pe.createConfiguration=gl});var $s=h(xt=>{"use strict";Object.defineProperty(xt,"__esModule",{value:!0});xt.parseYear=xt.YEAR_PATTERN=xt.MONTH_DICTIONARY=xt.WEEKDAY_DICTIONARY=void 0;xt.WEEKDAY_DICTIONARY={domingo:0,dom:0,segunda:1,"segunda-feira":1,seg:1,ter\u00E7a:2,"ter\xE7a-feira":2,ter:2,quarta:3,"quarta-feira":3,qua:3,quinta:4,"quinta-feira":4,qui:4,sexta:5,"sexta-feira":5,sex:5,s\u00E1bado:6,sabado:6,sab:6};xt.MONTH_DICTIONARY={janeiro:1,jan:1,"jan.":1,fevereiro:2,fev:2,"fev.":2,mar\u00E7o:3,mar:3,"mar.":3,abril:4,abr:4,"abr.":4,maio:5,mai:5,"mai.":5,junho:6,jun:6,"jun.":6,julho:7,jul:7,"jul.":7,agosto:8,ago:8,"ago.":8,setembro:9,set:9,"set.":9,outubro:10,out:10,"out.":10,novembro:11,nov:11,"nov.":11,dezembro:12,dez:12,"dez.":12};xt.YEAR_PATTERN="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?";function V0(r){if(r.match(/^[0-9]{1,4}$/)){let e=parseInt(r);return e<100&&(e>50?e=e+1900:e=e+2e3),e}return r.match(/a\.?\s*c\.?/i)?(r=r.replace(/a\.?\s*c\.?/i,""),-parseInt(r)):parseInt(r)}xt.parseYear=V0});var jm=h(Tl=>{"use strict";Object.defineProperty(Tl,"__esModule",{value:!0});var $m=$s(),Z0=Q(),X0=R(),Q0=qr(),J0=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(este|esta|passado|pr[o\xF3]ximo)\\s*)?(${Z0.matchAnyPattern($m.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(este|esta|passado|pr[\xF3o]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i"),eR=1,tR=2,rR=3,_l=class extends X0.AbstractParserWithWordBoundaryChecking{innerPattern(){return J0}innerExtract(e,t){let n=t[tR].toLowerCase(),i=$m.WEEKDAY_DICTIONARY[n];if(i===void 0)return null;let s=t[eR],a=t[rR],o=s||a||"";o=o.toLowerCase();let u=null;o=="passado"?u="this":o=="pr\xF3ximo"||o=="proximo"?u="next":o=="este"&&(u="this");let l=Q0.toDayJSWeekday(e.refDate,i,u);return e.createParsingComponents().assign("weekday",i).imply("day",l.date()).imply("month",l.month()+1).imply("year",l.year())}};Tl.default=_l});var Bm=h(vl=>{"use strict";Object.defineProperty(vl,"__esModule",{value:!0});var nR=Ur(),bl=class extends nR.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:ao?|\xE0s?|das|da|de|do)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|a(?:o)?|\\?)\\s*"}};vl.default=bl});var Gm=h(ci=>{"use strict";var iR=ci&&ci.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ci,"__esModule",{value:!0});var sR=iR(Gt()),El=class extends sR.default{patternBetween(){return new RegExp("^\\s*(?:,|\xE0)?\\s*$")}};ci.default=El});var Hm=h(di=>{"use strict";var aR=di&&di.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(di,"__esModule",{value:!0});var oR=aR(Nt()),Rl=class extends oR.default{patternBetween(){return/^\s*(?:-)\s*$/i}};di.default=Rl});var Qm=h(Dl=>{"use strict";Object.defineProperty(Dl,"__esModule",{value:!0});var uR=Se(),Zm=$s(),Xm=$s(),lR=Q(),cR=R(),dR=new RegExp(`([0-9]{1,2})(?:\xBA|\xAA|\xB0)?(?:\\s*(?:desde|de|\\-|\\\u2013|ao?|\\s)\\s*([0-9]{1,2})(?:\xBA|\xAA|\xB0)?)?\\s*(?:de)?\\s*(?:-|/|\\s*(?:de|,)?\\s*)(${lR.matchAnyPattern(Zm.MONTH_DICTIONARY)})(?:\\s*(?:de|,)?\\s*(${Xm.YEAR_PATTERN}))?(?=\\W|$)`,"i"),zm=1,Km=2,fR=3,Vm=4,wl=class extends cR.AbstractParserWithWordBoundaryChecking{innerPattern(){return dR}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=Zm.MONTH_DICTIONARY[t[fR].toLowerCase()],s=parseInt(t[zm]);if(s>31)return t.index=t.index+t[zm].length,null;if(n.start.assign("month",i),n.start.assign("day",s),t[Vm]){let a=Xm.parseYear(t[Vm]);n.start.assign("year",a)}else{let a=uR.findYearClosestToRef(e.refDate,s,i);n.start.imply("year",a)}if(t[Km]){let a=parseInt(t[Km]);n.end=n.start.clone(),n.end.assign("day",a)}return n}};Dl.default=wl});var Jm=h(Vt=>{"use strict";var pR=Vt&&Vt.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),hR=Vt&&Vt.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),mR=Vt&&Vt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&pR(e,r,t);return hR(e,r),e};Object.defineProperty(Vt,"__esModule",{value:!0});var yR=R(),js=mR(Kt()),Ml=class extends yR.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(agora|hoje|amanha|amanhã|ontem)(?=\W|$)/i}innerExtract(e,t){let n=t[0].toLowerCase(),i=e.createParsingComponents();switch(n){case"agora":return js.now(e.reference);case"hoje":return js.today(e.reference);case"amanha":case"amanh\xE3":return js.tomorrow(e.reference);case"ontem":return js.yesterday(e.reference)}return i}};Vt.default=Ml});var ey=h(fi=>{"use strict";var gR=fi&&fi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(fi,"__esModule",{value:!0});var Bs=Ee(),_R=R(),TR=it(),bR=gR(z()),Pl=class extends _R.AbstractParserWithWordBoundaryChecking{innerPattern(){return/(?:esta\s*)?(manha|manhã|tarde|meia-noite|meio-dia|noite)(?=\W|$)/i}innerExtract(e,t){let n=bR.default(e.refDate),i=e.createParsingComponents();switch(t[1].toLowerCase()){case"tarde":i.imply("meridiem",Bs.Meridiem.PM),i.imply("hour",15);break;case"noite":i.imply("meridiem",Bs.Meridiem.PM),i.imply("hour",22);break;case"manha":case"manh\xE3":i.imply("meridiem",Bs.Meridiem.AM),i.imply("hour",6);break;case"meia-noite":TR.assignTheNextDay(i,n),i.imply("hour",0),i.imply("minute",0),i.imply("second",0);break;case"meio-dia":i.imply("meridiem",Bs.Meridiem.AM),i.imply("hour",12);break}return i}};fi.default=Pl});var ny=h(Oe=>{"use strict";var vr=Oe&&Oe.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Oe,"__esModule",{value:!0});Oe.createConfiguration=Oe.createCasualConfiguration=Oe.parseDate=Oe.parse=Oe.strict=Oe.casual=void 0;var vR=Ht(),ty=gt(),ER=vr(Wr()),RR=vr(jm()),wR=vr(Bm()),DR=vr(Gm()),MR=vr(Hm()),PR=vr(Qm()),OR=vr(Jm()),AR=vr(ey());Oe.casual=new ty.Chrono(ry());Oe.strict=new ty.Chrono(Ol(!0));function kR(r,e,t){return Oe.casual.parse(r,e,t)}Oe.parse=kR;function NR(r,e,t){return Oe.casual.parseDate(r,e,t)}Oe.parseDate=NR;function ry(r=!0){let e=Ol(!1,r);return e.parsers.push(new OR.default),e.parsers.push(new AR.default),e}Oe.createCasualConfiguration=ry;function Ol(r=!0,e=!0){return vR.includeCommonConfiguration({parsers:[new ER.default(e),new RR.default,new wR.default,new PR.default],refiners:[new DR.default,new MR.default]},r)}Oe.createConfiguration=Ol});var iy=h(pi=>{"use strict";var CR=pi&&pi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(pi,"__esModule",{value:!0});var xR=CR(Nt()),Al=class extends xR.default{patternBetween(){return/^\s*(tot|-)\s*$/i}};pi.default=Al});var sy=h(hi=>{"use strict";var SR=hi&&hi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(hi,"__esModule",{value:!0});var IR=SR(Gt()),kl=class extends IR.default{patternBetween(){return new RegExp("^\\s*(om|na|voor|in de|,|-)?\\s*$")}};hi.default=kl});var ay=h(Zt=>{"use strict";var UR=Zt&&Zt.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),FR=Zt&&Zt.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),qR=Zt&&Zt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&UR(e,r,t);return FR(e,r),e};Object.defineProperty(Zt,"__esModule",{value:!0});var WR=R(),Gs=qR(Kt()),Nl=class extends WR.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(nu|vandaag|morgen|morgend|gisteren)(?=\W|$)/i}innerExtract(e,t){let n=t[0].toLowerCase(),i=e.createParsingComponents();switch(n){case"nu":return Gs.now(e.reference);case"vandaag":return Gs.today(e.reference);case"morgen":case"morgend":return Gs.tomorrow(e.reference);case"gisteren":return Gs.yesterday(e.reference)}return i}};Zt.default=Nl});var oy=h(mi=>{"use strict";var LR=mi&&mi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(mi,"__esModule",{value:!0});var Hs=Ee(),YR=R(),$R=LR(z()),jR=it(),BR=1,GR=2,Cl=class extends YR.AbstractParserWithWordBoundaryChecking{innerPattern(){return/(deze)?\s*(namiddag|avond|middernacht|ochtend|middag|'s middags|'s avonds|'s ochtends)(?=\W|$)/i}innerExtract(e,t){let n=$R.default(e.refDate),i=e.createParsingComponents();switch(t[BR]==="deze"&&(i.assign("day",e.refDate.getDate()),i.assign("month",e.refDate.getMonth()+1),i.assign("year",e.refDate.getFullYear())),t[GR].toLowerCase()){case"namiddag":case"'s namiddags":i.imply("meridiem",Hs.Meridiem.PM),i.imply("hour",15);break;case"avond":case"'s avonds'":i.imply("meridiem",Hs.Meridiem.PM),i.imply("hour",20);break;case"middernacht":jR.assignTheNextDay(i,n),i.imply("hour",0),i.imply("minute",0),i.imply("second",0);break;case"ochtend":case"'s ochtends":i.imply("meridiem",Hs.Meridiem.AM),i.imply("hour",6);break;case"middag":case"'s middags":i.imply("meridiem",Hs.Meridiem.AM),i.imply("hour",12);break}return i}};mi.default=Cl});var Qe=h($=>{"use strict";Object.defineProperty($,"__esModule",{value:!0});$.parseTimeUnits=$.TIME_UNITS_PATTERN=$.parseYear=$.YEAR_PATTERN=$.parseOrdinalNumberPattern=$.ORDINAL_NUMBER_PATTERN=$.parseNumberPattern=$.NUMBER_PATTERN=$.TIME_UNIT_DICTIONARY=$.ORDINAL_WORD_DICTIONARY=$.INTEGER_WORD_DICTIONARY=$.MONTH_DICTIONARY=$.WEEKDAY_DICTIONARY=void 0;var zs=Q(),HR=Se();$.WEEKDAY_DICTIONARY={zondag:0,zon:0,"zon.":0,zo:0,"zo.":0,maandag:1,ma:1,"ma.":1,dinsdag:2,din:2,"din.":2,di:2,"di.":2,woensdag:3,woe:3,"woe.":3,wo:3,"wo.":3,donderdag:4,dond:4,"dond.":4,do:4,"do.":4,vrijdag:5,vrij:5,"vrij.":5,vr:5,"vr.":5,zaterdag:6,zat:6,"zat.":6,za:6,"za.":6};$.MONTH_DICTIONARY={januari:1,jan:1,"jan.":1,februari:2,feb:2,"feb.":2,maart:3,mar:3,"mar.":3,april:4,apr:4,"apr.":4,mei:5,juni:6,jun:6,"jun.":6,juli:7,jul:7,"jul.":7,augustus:8,aug:8,"aug.":8,september:9,sep:9,"sep.":9,sept:9,"sept.":9,oktober:10,okt:10,"okt.":10,november:11,nov:11,"nov.":11,december:12,dec:12,"dec.":12};$.INTEGER_WORD_DICTIONARY={een:1,twee:2,drie:3,vier:4,vijf:5,zes:6,zeven:7,acht:8,negen:9,tien:10,elf:11,twaalf:12};$.ORDINAL_WORD_DICTIONARY={eerste:1,tweede:2,derde:3,vierde:4,vijfde:5,zesde:6,zevende:7,achtste:8,negende:9,tiende:10,elfde:11,twaalfde:12,dertiende:13,veertiende:14,vijftiende:15,zestiende:16,zeventiende:17,achttiende:18,negentiende:19,twintigste:20,eenentwintigste:21,twee\u00EBntwintigste:22,drieentwintigste:23,vierentwintigste:24,vijfentwintigste:25,zesentwintigste:26,zevenentwintigste:27,achtentwintig:28,negenentwintig:29,dertigste:30,eenendertigste:31};$.TIME_UNIT_DICTIONARY={sec:"second",second:"second",seconden:"second",min:"minute",mins:"minute",minute:"minute",minuut:"minute",minuten:"minute",minuutje:"minute",h:"hour",hr:"hour",hrs:"hour",uur:"hour",u:"hour",uren:"hour",dag:"d",dagen:"d",week:"week",weken:"week",maand:"month",maanden:"month",jaar:"year",jr:"year",jaren:"year"};$.NUMBER_PATTERN=`(?:${zs.matchAnyPattern($.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+[\\.,][0-9]+|halve?|half|paar)`;function ly(r){let e=r.toLowerCase();return $.INTEGER_WORD_DICTIONARY[e]!==void 0?$.INTEGER_WORD_DICTIONARY[e]:e==="paar"?2:e==="half"||e.match(/halve?/)?.5:parseFloat(e.replace(",","."))}$.parseNumberPattern=ly;$.ORDINAL_NUMBER_PATTERN=`(?:${zs.matchAnyPattern($.ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:ste|de)?)`;function zR(r){let e=r.toLowerCase();return $.ORDINAL_WORD_DICTIONARY[e]!==void 0?$.ORDINAL_WORD_DICTIONARY[e]:(e=e.replace(/(?:ste|de)$/i,""),parseInt(e))}$.parseOrdinalNumberPattern=zR;$.YEAR_PATTERN="(?:[1-9][0-9]{0,3}\\s*(?:voor Christus|na Christus)|[1-2][0-9]{3}|[5-9][0-9])";function KR(r){if(/voor Christus/i.test(r))return r=r.replace(/voor Christus/i,""),-parseInt(r);if(/na Christus/i.test(r))return r=r.replace(/na Christus/i,""),parseInt(r);let e=parseInt(r);return HR.findMostLikelyADYear(e)}$.parseYear=KR;var cy=`(${$.NUMBER_PATTERN})\\s{0,5}(${zs.matchAnyPattern($.TIME_UNIT_DICTIONARY)})\\s{0,5}`,uy=new RegExp(cy,"i");$.TIME_UNITS_PATTERN=zs.repeatedTimeunitPattern("(?:(?:binnen|in)\\s*)?",cy);function VR(r){let e={},t=r,n=uy.exec(t);for(;n;)ZR(e,n),t=t.substring(n[0].length),n=uy.exec(t);return e}$.parseTimeUnits=VR;function ZR(r,e){let t=ly(e[1]),n=$.TIME_UNIT_DICTIONARY[e[2].toLowerCase()];r[n]=t}});var fy=h(Sl=>{"use strict";Object.defineProperty(Sl,"__esModule",{value:!0});var dy=Qe(),XR=pe(),QR=R(),xl=class extends QR.AbstractParserWithWordBoundaryChecking{innerPattern(){return new RegExp("(?:binnen|in|binnen de|voor)\\s*("+dy.TIME_UNITS_PATTERN+")(?=\\W|$)","i")}innerExtract(e,t){let n=dy.parseTimeUnits(t[1]);return XR.ParsingComponents.createRelativeFromReference(e.reference,n)}};Sl.default=xl});var hy=h(Ul=>{"use strict";Object.defineProperty(Ul,"__esModule",{value:!0});var py=Qe(),JR=Q(),ew=R(),tw=qr(),rw=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:op\\s*?)?(?:(deze|vorige|volgende)\\s*(?:week\\s*)?)?(${JR.matchAnyPattern(py.WEEKDAY_DICTIONARY)})(?=\\W|$)`,"i"),nw=1,iw=2,sw=3,Il=class extends ew.AbstractParserWithWordBoundaryChecking{innerPattern(){return rw}innerExtract(e,t){let n=t[iw].toLowerCase(),i=py.WEEKDAY_DICTIONARY[n],s=t[nw],a=t[sw],o=s||a;o=o||"",o=o.toLowerCase();let u=null;o=="vorige"?u="last":o=="volgende"?u="next":o=="deze"&&(u="this");let l=tw.toDayJSWeekday(e.refDate,i,u);return e.createParsingComponents().assign("weekday",i).imply("day",l.date()).imply("month",l.month()+1).imply("year",l.year())}};Ul.default=Il});var by=h(ql=>{"use strict";Object.defineProperty(ql,"__esModule",{value:!0});var aw=Se(),_y=Qe(),Ks=Qe(),Ty=Qe(),ow=Q(),uw=R(),lw=new RegExp(`(?:on\\s*?)?(${Ks.ORDINAL_NUMBER_PATTERN})(?:\\s*(?:tot|\\-|\\\u2013|until|through|till|\\s)\\s*(${Ks.ORDINAL_NUMBER_PATTERN}))?(?:-|/|\\s*(?:of)?\\s*)(`+ow.matchAnyPattern(_y.MONTH_DICTIONARY)+`)(?:(?:-|/|,?\\s*)(${Ty.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),cw=3,my=1,yy=2,gy=4,Fl=class extends uw.AbstractParserWithWordBoundaryChecking{innerPattern(){return lw}innerExtract(e,t){let n=_y.MONTH_DICTIONARY[t[cw].toLowerCase()],i=Ks.parseOrdinalNumberPattern(t[my]);if(i>31)return t.index=t.index+t[my].length,null;let s=e.createParsingComponents({day:i,month:n});if(t[gy]){let u=Ty.parseYear(t[gy]);s.assign("year",u)}else{let u=aw.findYearClosestToRef(e.refDate,i,n);s.imply("year",u)}if(!t[yy])return s;let a=Ks.parseOrdinalNumberPattern(t[yy]),o=e.createParsingResult(t.index,t[0]);return o.start=s,o.end=s.clone(),o.end.assign("day",a),o}};ql.default=Fl});var wy=h(Ll=>{"use strict";Object.defineProperty(Ll,"__esModule",{value:!0});var Ey=Qe(),dw=Se(),fw=Q(),Ry=Qe(),pw=R(),hw=new RegExp(`(${fw.matchAnyPattern(Ey.MONTH_DICTIONARY)})\\s*(?:[,-]?\\s*(${Ry.YEAR_PATTERN})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),mw=1,vy=2,Wl=class extends pw.AbstractParserWithWordBoundaryChecking{innerPattern(){return hw}innerExtract(e,t){let n=e.createParsingComponents();n.imply("day",1);let i=t[mw],s=Ey.MONTH_DICTIONARY[i.toLowerCase()];if(n.assign("month",s),t[vy]){let a=Ry.parseYear(t[vy]);n.assign("year",a)}else{let a=dw.findYearClosestToRef(e.refDate,1,s);n.imply("year",a)}return n}};Ll.default=Wl});var Dy=h($l=>{"use strict";Object.defineProperty($l,"__esModule",{value:!0});var yw=R(),gw=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),_w=1,Tw=2,Yl=class extends yw.AbstractParserWithWordBoundaryChecking{innerPattern(){return gw}innerExtract(e,t){let n=parseInt(t[Tw]),i=parseInt(t[_w]);return e.createParsingComponents().imply("day",1).assign("month",i).assign("year",n)}};$l.default=Yl});var My=h(Bl=>{"use strict";Object.defineProperty(Bl,"__esModule",{value:!0});var bw=Ur(),jl=class extends bw.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:om)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|om|\\?)\\s*"}primarySuffix(){return"(?:\\s*(?:uur))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(e,t){return t[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(e,t)}};Bl.default=jl});var Ay=h(Hl=>{"use strict";Object.defineProperty(Hl,"__esModule",{value:!0});var Oy=Qe(),vw=Q(),Ew=R(),Rw=new RegExp(`([0-9]{4})[\\.\\/\\s](?:(${vw.matchAnyPattern(Oy.MONTH_DICTIONARY)})|([0-9]{1,2}))[\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),ww=1,Dw=2,Py=3,Mw=4,Gl=class extends Ew.AbstractParserWithWordBoundaryChecking{innerPattern(){return Rw}innerExtract(e,t){let n=t[Py]?parseInt(t[Py]):Oy.MONTH_DICTIONARY[t[Dw].toLowerCase()];if(n<1||n>12)return null;let i=parseInt(t[ww]);return{day:parseInt(t[Mw]),month:n,year:i}}};Hl.default=Gl});var ky=h(yi=>{"use strict";var Pw=yi&&yi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(yi,"__esModule",{value:!0});var Ow=R(),Vs=Ee(),zl=it(),Aw=Pw(z()),kw=1,Nw=2,Kl=class extends Ow.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(gisteren|morgen|van)(ochtend|middag|namiddag|avond|nacht)(?=\W|$)/i}innerExtract(e,t){let n=t[kw].toLowerCase(),i=t[Nw].toLowerCase(),s=e.createParsingComponents(),a=Aw.default(e.refDate);switch(n){case"gisteren":zl.assignSimilarDate(s,a.add(-1,"day"));break;case"van":zl.assignSimilarDate(s,a);break;case"morgen":zl.assignTheNextDay(s,a);break}switch(i){case"ochtend":s.imply("meridiem",Vs.Meridiem.AM),s.imply("hour",6);break;case"middag":s.imply("meridiem",Vs.Meridiem.AM),s.imply("hour",12);break;case"namiddag":s.imply("meridiem",Vs.Meridiem.PM),s.imply("hour",15);break;case"avond":s.imply("meridiem",Vs.Meridiem.PM),s.imply("hour",20);break}return s}};yi.default=Kl});var Cy=h(Zl=>{"use strict";Object.defineProperty(Zl,"__esModule",{value:!0});var Ny=Qe(),Cw=pe(),xw=R(),Sw=st(),Iw=new RegExp(`(deze|vorige|afgelopen|komende|over|\\+|-)\\s*(${Ny.TIME_UNITS_PATTERN})(?=\\W|$)`,"i"),Vl=class extends xw.AbstractParserWithWordBoundaryChecking{innerPattern(){return Iw}innerExtract(e,t){let n=t[1].toLowerCase(),i=Ny.parseTimeUnits(t[2]);switch(n){case"vorige":case"afgelopen":case"-":i=Sw.reverseTimeUnits(i);break}return Cw.ParsingComponents.createRelativeFromReference(e.reference,i)}};Zl.default=Vl});var Iy=h(gi=>{"use strict";var Uw=gi&&gi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(gi,"__esModule",{value:!0});var Sy=Qe(),xy=pe(),Fw=Uw(z()),qw=R(),Ww=Q(),Lw=new RegExp(`(dit|deze|komende|volgend|volgende|afgelopen|vorige)\\s*(${Ww.matchAnyPattern(Sy.TIME_UNIT_DICTIONARY)})(?=\\s*)(?=\\W|$)`,"i"),Yw=1,$w=2,Xl=class extends qw.AbstractParserWithWordBoundaryChecking{innerPattern(){return Lw}innerExtract(e,t){let n=t[Yw].toLowerCase(),i=t[$w].toLowerCase(),s=Sy.TIME_UNIT_DICTIONARY[i];if(n=="volgend"||n=="volgende"||n=="komende"){let u={};return u[s]=1,xy.ParsingComponents.createRelativeFromReference(e.reference,u)}if(n=="afgelopen"||n=="vorige"){let u={};return u[s]=-1,xy.ParsingComponents.createRelativeFromReference(e.reference,u)}let a=e.createParsingComponents(),o=Fw.default(e.reference.instant);return i.match(/week/i)?(o=o.add(-o.get("d"),"d"),a.imply("day",o.date()),a.imply("month",o.month()+1),a.imply("year",o.year())):i.match(/maand/i)?(o=o.add(-o.date()+1,"d"),a.imply("day",o.date()),a.assign("year",o.year()),a.assign("month",o.month()+1)):i.match(/jaar/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),a.imply("day",o.date()),a.imply("month",o.month()+1),a.assign("year",o.year())),a}};gi.default=Xl});var Uy=h(ec=>{"use strict";Object.defineProperty(ec,"__esModule",{value:!0});var Jl=Qe(),jw=pe(),Bw=R(),Gw=st(),Hw=new RegExp("("+Jl.TIME_UNITS_PATTERN+")(?:geleden|voor|eerder)(?=(?:\\W|$))","i"),zw=new RegExp("("+Jl.TIME_UNITS_PATTERN+")geleden(?=(?:\\W|$))","i"),Ql=class extends Bw.AbstractParserWithWordBoundaryChecking{constructor(e){super(),this.strictMode=e}innerPattern(){return this.strictMode?zw:Hw}innerExtract(e,t){let n=Jl.parseTimeUnits(t[1]),i=Gw.reverseTimeUnits(n);return jw.ParsingComponents.createRelativeFromReference(e.reference,i)}};ec.default=Ql});var Fy=h(nc=>{"use strict";Object.defineProperty(nc,"__esModule",{value:!0});var rc=Qe(),Kw=pe(),Vw=R(),Zw=new RegExp("("+rc.TIME_UNITS_PATTERN+")(later|na|vanaf nu|voortaan|vooruit|uit)(?=(?:\\W|$))","i"),Xw=new RegExp("("+rc.TIME_UNITS_PATTERN+")(later|vanaf nu)(?=(?:\\W|$))","i"),Qw=1,tc=class extends Vw.AbstractParserWithWordBoundaryChecking{constructor(e){super(),this.strictMode=e}innerPattern(){return this.strictMode?Xw:Zw}innerExtract(e,t){let n=rc.parseTimeUnits(t[Qw]);return Kw.ParsingComponents.createRelativeFromReference(e.reference,n)}};nc.default=tc});var Yy=h(Ae=>{"use strict";var Ue=Ae&&Ae.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ae,"__esModule",{value:!0});Ae.createConfiguration=Ae.createCasualConfiguration=Ae.parseDate=Ae.parse=Ae.strict=Ae.casual=void 0;var Jw=Ht(),qy=gt(),eD=Ue(iy()),tD=Ue(sy()),rD=Ue(ay()),nD=Ue(oy()),iD=Ue(Wr()),sD=Ue(fy()),aD=Ue(hy()),oD=Ue(by()),Wy=Ue(wy()),uD=Ue(Dy()),lD=Ue(My()),cD=Ue(Ay()),dD=Ue(ky()),fD=Ue(Cy()),pD=Ue(Iy()),hD=Ue(Uy()),mD=Ue(Fy());Ae.casual=new qy.Chrono(Ly());Ae.strict=new qy.Chrono(ic(!0));function yD(r,e,t){return Ae.casual.parse(r,e,t)}Ae.parse=yD;function gD(r,e,t){return Ae.casual.parseDate(r,e,t)}Ae.parseDate=gD;function Ly(r=!0){let e=ic(!1,r);return e.parsers.unshift(new rD.default),e.parsers.unshift(new nD.default),e.parsers.unshift(new dD.default),e.parsers.unshift(new Wy.default),e.parsers.unshift(new pD.default),e.parsers.unshift(new fD.default),e}Ae.createCasualConfiguration=Ly;function ic(r=!0,e=!0){return Jw.includeCommonConfiguration({parsers:[new iD.default(e),new sD.default,new oD.default,new Wy.default,new aD.default,new cD.default,new uD.default,new lD.default(r),new hD.default(r),new mD.default(r)],refiners:[new tD.default,new eD.default]},r)}Ae.createConfiguration=ic});var Gy=h(_i=>{"use strict";var _D=_i&&_i.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(_i,"__esModule",{value:!0});var TD=_D(z()),bD=R(),vD=1,$y=2,ED=3,jy=4,By=5,RD=6,sc=class extends bD.AbstractParserWithWordBoundaryChecking{innerPattern(e){return new RegExp("(\u800C\u5BB6|\u7ACB(?:\u523B|\u5373)|\u5373\u523B)|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(?:\u65E5|\u5929)(?:[\\s|,|\uFF0C]*)(?:(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?","i")}innerExtract(e,t){let n=t.index,i=e.createParsingResult(n,t[0]),s=TD.default(e.refDate),a=s;if(t[vD])i.start.imply("hour",s.hour()),i.start.imply("minute",s.minute()),i.start.imply("second",s.second()),i.start.imply("millisecond",s.millisecond());else if(t[$y]){let o=t[$y],u=t[ED];o=="\u660E"||o=="\u807D"?s.hour()>1&&(a=a.add(1,"day")):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?a=a.add(-1,"day"):o=="\u524D"?a=a.add(-2,"day"):o=="\u5927\u524D"?a=a.add(-3,"day"):o=="\u5F8C"?a=a.add(2,"day"):o=="\u5927\u5F8C"&&(a=a.add(3,"day")),u=="\u65E9"||u=="\u671D"?i.start.imply("hour",6):u=="\u665A"&&(i.start.imply("hour",22),i.start.imply("meridiem",1))}else if(t[jy]){let u=t[jy][0];u=="\u65E9"||u=="\u671D"||u=="\u4E0A"?i.start.imply("hour",6):u=="\u4E0B"||u=="\u664F"?(i.start.imply("hour",15),i.start.imply("meridiem",1)):u=="\u4E2D"?(i.start.imply("hour",12),i.start.imply("meridiem",1)):u=="\u591C"||u=="\u665A"?(i.start.imply("hour",22),i.start.imply("meridiem",1)):u=="\u51CC"&&i.start.imply("hour",0)}else if(t[By]){let o=t[By];o=="\u660E"||o=="\u807D"?s.hour()>1&&(a=a.add(1,"day")):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?a=a.add(-1,"day"):o=="\u524D"?a=a.add(-2,"day"):o=="\u5927\u524D"?a=a.add(-3,"day"):o=="\u5F8C"?a=a.add(2,"day"):o=="\u5927\u5F8C"&&(a=a.add(3,"day"));let u=t[RD];if(u){let l=u[0];l=="\u65E9"||l=="\u671D"||l=="\u4E0A"?i.start.imply("hour",6):l=="\u4E0B"||l=="\u664F"?(i.start.imply("hour",15),i.start.imply("meridiem",1)):l=="\u4E2D"?(i.start.imply("hour",12),i.start.imply("meridiem",1)):l=="\u591C"||l=="\u665A"?(i.start.imply("hour",22),i.start.imply("meridiem",1)):l=="\u51CC"&&i.start.imply("hour",0)}}return i.start.assign("day",a.date()),i.start.assign("month",a.month()+1),i.start.assign("year",a.year()),i}};_i.default=sc});var yn=h(He=>{"use strict";Object.defineProperty(He,"__esModule",{value:!0});He.zhStringToYear=He.zhStringToNumber=He.WEEKDAY_OFFSET=He.NUMBER=void 0;He.NUMBER={\u96F6:0,\u4E00:1,\u4E8C:2,\u5169:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9,\u5341:10,\u5EFF:20,\u5345:30};He.WEEKDAY_OFFSET={\u5929:0,\u65E5:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6};function wD(r){let e=0;for(let t=0;t{"use strict";var MD=Ti&&Ti.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ti,"__esModule",{value:!0});var PD=MD(z()),OD=R(),$r=yn(),ac=1,Hy=2,oc=3,uc=class extends OD.AbstractParserWithWordBoundaryChecking{innerPattern(){return new RegExp("(\\d{2,4}|["+Object.keys($r.NUMBER).join("")+"]{4}|["+Object.keys($r.NUMBER).join("")+"]{2})?(?:\\s*)(?:\u5E74)?(?:[\\s|,|\uFF0C]*)(\\d{1,2}|["+Object.keys($r.NUMBER).join("")+"]{1,2})(?:\\s*)(?:\u6708)(?:\\s*)(\\d{1,2}|["+Object.keys($r.NUMBER).join("")+"]{1,2})?(?:\\s*)(?:\u65E5|\u865F)?")}innerExtract(e,t){let n=PD.default(e.refDate),i=e.createParsingResult(t.index,t[0]),s=parseInt(t[Hy]);if(isNaN(s)&&(s=$r.zhStringToNumber(t[Hy])),i.start.assign("month",s),t[oc]){let a=parseInt(t[oc]);isNaN(a)&&(a=$r.zhStringToNumber(t[oc])),i.start.assign("day",a)}else i.start.imply("day",n.date());if(t[ac]){let a=parseInt(t[ac]);isNaN(a)&&(a=$r.zhStringToYear(t[ac])),i.start.assign("year",a)}else i.start.imply("year",n.year());return i}};Ti.default=uc});var Vy=h(bi=>{"use strict";var AD=bi&&bi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(bi,"__esModule",{value:!0});var kD=AD(z()),ND=R(),Ky=yn(),CD=new RegExp("(\\d+|["+Object.keys(Ky.NUMBER).join("")+"]+|\u534A|\u5E7E)(?:\\s*)(?:\u500B)?(\u79D2(?:\u9418)?|\u5206\u9418|\u5C0F\u6642|\u9418|\u65E5|\u5929|\u661F\u671F|\u79AE\u62DC|\u6708|\u5E74)(?:(?:\u4E4B|\u904E)?\u5F8C|(?:\u4E4B)?\u5167)","i"),lc=1,xD=2,cc=class extends ND.AbstractParserWithWordBoundaryChecking{innerPattern(){return CD}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=parseInt(t[lc]);if(isNaN(i)&&(i=Ky.zhStringToNumber(t[lc])),isNaN(i)){let u=t[lc];if(u==="\u5E7E")i=3;else if(u==="\u534A")i=.5;else return null}let s=kD.default(e.refDate),o=t[xD][0];return o.match(/[日天星禮月年]/)?(o=="\u65E5"||o=="\u5929"?s=s.add(i,"d"):o=="\u661F"||o=="\u79AE"?s=s.add(i*7,"d"):o=="\u6708"?s=s.add(i,"month"):o=="\u5E74"&&(s=s.add(i,"year")),n.start.assign("year",s.year()),n.start.assign("month",s.month()+1),n.start.assign("day",s.date()),n):(o=="\u79D2"?s=s.add(i,"second"):o=="\u5206"?s=s.add(i,"minute"):(o=="\u5C0F"||o=="\u9418")&&(s=s.add(i,"hour")),n.start.imply("year",s.year()),n.start.imply("month",s.month()+1),n.start.imply("day",s.date()),n.start.assign("hour",s.hour()),n.start.assign("minute",s.minute()),n.start.assign("second",s.second()),n)}};bi.default=cc});var Xy=h(vi=>{"use strict";var SD=vi&&vi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(vi,"__esModule",{value:!0});var ID=SD(z()),UD=R(),Zy=yn(),FD=new RegExp("(?\u4E0A|\u4ECA|\u4E0B|\u9019|\u5462)(?:\u500B)?(?:\u661F\u671F|\u79AE\u62DC|\u9031)(?"+Object.keys(Zy.WEEKDAY_OFFSET).join("|")+")"),dc=class extends UD.AbstractParserWithWordBoundaryChecking{innerPattern(){return FD}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=t.groups.weekday,s=Zy.WEEKDAY_OFFSET[i];if(s===void 0)return null;let a=null,o=t.groups.prefix;o=="\u4E0A"?a="last":o=="\u4E0B"?a="next":(o=="\u4ECA"||o=="\u9019"||o=="\u5462")&&(a="this");let u=ID.default(e.refDate),l=!1,c=u.day();return a=="last"||a=="past"?(u=u.day(s-7),l=!0):a=="next"?(u=u.day(s+7),l=!0):a=="this"?u=u.day(s):Math.abs(s-7-c){"use strict";var qD=Ei&&Ei.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ei,"__esModule",{value:!0});var WD=qD(z()),LD=R(),ut=yn(),YD=new RegExp("(?:\u7531|\u5F9E|\u81EA)?(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(ut.NUMBER).join("")+"]+)(?:\\s*)(?:\u9EDE|\u6642|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(ut.NUMBER).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(ut.NUMBER).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),$D=new RegExp("(?:^\\s*(?:\u5230|\u81F3|\\-|\\\u2013|\\~|\\\u301C)\\s*)(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(ut.NUMBER).join("")+"]+)(?:\\s*)(?:\u9EDE|\u6642|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(ut.NUMBER).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(ut.NUMBER).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),Zs=1,Xs=2,Qs=3,Js=4,ea=5,ta=6,ot=7,gn=8,ra=9,fc=class extends LD.AbstractParserWithWordBoundaryChecking{innerPattern(){return YD}innerExtract(e,t){if(t.index>0&&e.text[t.index-1].match(/\w/))return null;let n=WD.default(e.refDate),i=e.createParsingResult(t.index,t[0]),s=n.clone();if(t[Zs]){var a=t[Zs];a=="\u660E"||a=="\u807D"?n.hour()>1&&s.add(1,"day"):a=="\u6628"||a=="\u5C0B"||a=="\u7434"?s.add(-1,"day"):a=="\u524D"?s.add(-2,"day"):a=="\u5927\u524D"?s.add(-3,"day"):a=="\u5F8C"?s.add(2,"day"):a=="\u5927\u5F8C"&&s.add(3,"day"),i.start.assign("day",s.date()),i.start.assign("month",s.month()+1),i.start.assign("year",s.year())}else if(t[Js]){var o=t[Js];o=="\u660E"||o=="\u807D"?s.add(1,"day"):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?s.add(-1,"day"):o=="\u524D"?s.add(-2,"day"):o=="\u5927\u524D"?s.add(-3,"day"):o=="\u5F8C"?s.add(2,"day"):o=="\u5927\u5F8C"&&s.add(3,"day"),i.start.assign("day",s.date()),i.start.assign("month",s.month()+1),i.start.assign("year",s.year())}else i.start.imply("day",s.date()),i.start.imply("month",s.month()+1),i.start.imply("year",s.year());let u=0,l=0,c=-1;if(t[gn]){var d=parseInt(t[gn]);if(isNaN(d)&&(d=ut.zhStringToNumber(t[gn])),d>=60)return null;i.start.assign("second",d)}if(u=parseInt(t[ta]),isNaN(u)&&(u=ut.zhStringToNumber(t[ta])),t[ot]?t[ot]=="\u534A"?l=30:t[ot]=="\u6B63"||t[ot]=="\u6574"?l=0:(l=parseInt(t[ot]),isNaN(l)&&(l=ut.zhStringToNumber(t[ot]))):u>100&&(l=u%100,u=Math.floor(u/100)),l>=60||u>24)return null;if(u>=12&&(c=1),t[ra]){if(u>12)return null;var f=t[ra][0].toLowerCase();f=="a"&&(c=0,u==12&&(u=0)),f=="p"&&(c=1,u!=12&&(u+=12))}else if(t[Xs]){var p=t[Xs],y=p[0];y=="\u671D"||y=="\u65E9"?(c=0,u==12&&(u=0)):y=="\u665A"&&(c=1,u!=12&&(u+=12))}else if(t[Qs]){var m=t[Qs],g=m[0];g=="\u4E0A"||g=="\u671D"||g=="\u65E9"||g=="\u51CC"?(c=0,u==12&&(u=0)):(g=="\u4E0B"||g=="\u664F"||g=="\u665A")&&(c=1,u!=12&&(u+=12))}else if(t[ea]){var k=t[ea],x=k[0];x=="\u4E0A"||x=="\u671D"||x=="\u65E9"||x=="\u51CC"?(c=0,u==12&&(u=0)):(x=="\u4E0B"||x=="\u664F"||x=="\u665A")&&(c=1,u!=12&&(u+=12))}if(i.start.assign("hour",u),i.start.assign("minute",l),c>=0?i.start.assign("meridiem",c):u<12?i.start.imply("meridiem",0):i.start.imply("meridiem",1),t=$D.exec(e.text.substring(i.index+i.text.length)),!t)return i.text.match(/^\d+$/)?null:i;let C=s.clone();if(i.end=e.createParsingComponents(),t[Zs]){var a=t[Zs];a=="\u660E"||a=="\u807D"?n.hour()>1&&C.add(1,"day"):a=="\u6628"||a=="\u5C0B"||a=="\u7434"?C.add(-1,"day"):a=="\u524D"?C.add(-2,"day"):a=="\u5927\u524D"?C.add(-3,"day"):a=="\u5F8C"?C.add(2,"day"):a=="\u5927\u5F8C"&&C.add(3,"day"),i.end.assign("day",C.date()),i.end.assign("month",C.month()+1),i.end.assign("year",C.year())}else if(t[Js]){var o=t[Js];o=="\u660E"||o=="\u807D"?C.add(1,"day"):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?C.add(-1,"day"):o=="\u524D"?C.add(-2,"day"):o=="\u5927\u524D"?C.add(-3,"day"):o=="\u5F8C"?C.add(2,"day"):o=="\u5927\u5F8C"&&C.add(3,"day"),i.end.assign("day",C.date()),i.end.assign("month",C.month()+1),i.end.assign("year",C.year())}else i.end.imply("day",C.date()),i.end.imply("month",C.month()+1),i.end.imply("year",C.year());if(u=0,l=0,c=-1,t[gn]){var d=parseInt(t[gn]);if(isNaN(d)&&(d=ut.zhStringToNumber(t[gn])),d>=60)return null;i.end.assign("second",d)}if(u=parseInt(t[ta]),isNaN(u)&&(u=ut.zhStringToNumber(t[ta])),t[ot]?t[ot]=="\u534A"?l=30:t[ot]=="\u6B63"||t[ot]=="\u6574"?l=0:(l=parseInt(t[ot]),isNaN(l)&&(l=ut.zhStringToNumber(t[ot]))):u>100&&(l=u%100,u=Math.floor(u/100)),l>=60||u>24)return null;if(u>=12&&(c=1),t[ra]){if(u>12)return null;var f=t[ra][0].toLowerCase();f=="a"&&(c=0,u==12&&(u=0)),f=="p"&&(c=1,u!=12&&(u+=12)),i.start.isCertain("meridiem")||(c==0?(i.start.imply("meridiem",0),i.start.get("hour")==12&&i.start.assign("hour",0)):(i.start.imply("meridiem",1),i.start.get("hour")!=12&&i.start.assign("hour",i.start.get("hour")+12)))}else if(t[Xs]){var p=t[Xs],y=p[0];y=="\u671D"||y=="\u65E9"?(c=0,u==12&&(u=0)):y=="\u665A"&&(c=1,u!=12&&(u+=12))}else if(t[Qs]){var m=t[Qs],g=m[0];g=="\u4E0A"||g=="\u671D"||g=="\u65E9"||g=="\u51CC"?(c=0,u==12&&(u=0)):(g=="\u4E0B"||g=="\u664F"||g=="\u665A")&&(c=1,u!=12&&(u+=12))}else if(t[ea]){var k=t[ea],x=k[0];x=="\u4E0A"||x=="\u671D"||x=="\u65E9"||x=="\u51CC"?(c=0,u==12&&(u=0)):(x=="\u4E0B"||x=="\u664F"||x=="\u665A")&&(c=1,u!=12&&(u+=12))}return i.text=i.text+t[0],i.end.assign("hour",u),i.end.assign("minute",l),c>=0?i.end.assign("meridiem",c):i.start.isCertain("meridiem")&&i.start.get("meridiem")==1&&i.start.get("hour")>u?i.end.imply("meridiem",0):u>12&&i.end.imply("meridiem",1),i.end.date().getTime(){"use strict";var jD=Ri&&Ri.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ri,"__esModule",{value:!0});var BD=jD(z()),GD=R(),Jy=yn(),HD=new RegExp("(?:\u661F\u671F|\u79AE\u62DC|\u9031)(?"+Object.keys(Jy.WEEKDAY_OFFSET).join("|")+")"),pc=class extends GD.AbstractParserWithWordBoundaryChecking{innerPattern(){return HD}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=t.groups.weekday,s=Jy.WEEKDAY_OFFSET[i];if(s===void 0)return null;let a=BD.default(e.refDate),o=!1,u=a.day();return Math.abs(s-7-u){"use strict";var zD=wi&&wi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(wi,"__esModule",{value:!0});var KD=zD(Nt()),hc=class extends KD.default{patternBetween(){return/^\s*(至|到|\-|\~|~|-|ー)\s*$/i}};wi.default=hc});var rg=h(Di=>{"use strict";var VD=Di&&Di.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Di,"__esModule",{value:!0});var ZD=VD(Gt()),mc=class extends ZD.default{patternBetween(){return/^\s*$/i}};Di.default=mc});var ng=h(Te=>{"use strict";var Xt=Te&&Te.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Te,"__esModule",{value:!0});Te.createConfiguration=Te.createCasualConfiguration=Te.parseDate=Te.parse=Te.strict=Te.casual=Te.hant=void 0;var yc=gt(),XD=Xt(Cs()),QD=Ht(),JD=Xt(Gy()),eM=Xt(zy()),tM=Xt(Vy()),rM=Xt(Xy()),nM=Xt(Qy()),iM=Xt(eg()),sM=Xt(tg()),aM=Xt(rg());Te.hant=new yc.Chrono(gc());Te.casual=new yc.Chrono(gc());Te.strict=new yc.Chrono(_c());function oM(r,e,t){return Te.casual.parse(r,e,t)}Te.parse=oM;function uM(r,e,t){return Te.casual.parseDate(r,e,t)}Te.parseDate=uM;function gc(){let r=_c();return r.parsers.unshift(new JD.default),r}Te.createCasualConfiguration=gc;function _c(){let r=QD.includeCommonConfiguration({parsers:[new eM.default,new rM.default,new iM.default,new nM.default,new tM.default],refiners:[new sM.default,new aM.default]});return r.refiners=r.refiners.filter(e=>!(e instanceof XD.default)),r}Te.createConfiguration=_c});var og=h(Mi=>{"use strict";var lM=Mi&&Mi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Mi,"__esModule",{value:!0});var cM=lM(z()),dM=R(),fM=1,ig=2,pM=3,sg=4,ag=5,hM=6,Tc=class extends dM.AbstractParserWithWordBoundaryChecking{innerPattern(e){return new RegExp("(\u73B0\u5728|\u7ACB(?:\u523B|\u5373)|\u5373\u523B)|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(\u65E9|\u665A)|(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(?:\u65E5|\u5929)(?:[\\s|,|\uFF0C]*)(?:(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?","i")}innerExtract(e,t){let n=t.index,i=e.createParsingResult(n,t[0]),s=cM.default(e.refDate),a=s;if(t[fM])i.start.imply("hour",s.hour()),i.start.imply("minute",s.minute()),i.start.imply("second",s.second()),i.start.imply("millisecond",s.millisecond());else if(t[ig]){let o=t[ig],u=t[pM];o=="\u660E"?s.hour()>1&&(a=a.add(1,"day")):o=="\u6628"?a=a.add(-1,"day"):o=="\u524D"?a=a.add(-2,"day"):o=="\u5927\u524D"?a=a.add(-3,"day"):o=="\u540E"?a=a.add(2,"day"):o=="\u5927\u540E"&&(a=a.add(3,"day")),u=="\u65E9"?i.start.imply("hour",6):u=="\u665A"&&(i.start.imply("hour",22),i.start.imply("meridiem",1))}else if(t[sg]){let u=t[sg][0];u=="\u65E9"||u=="\u4E0A"?i.start.imply("hour",6):u=="\u4E0B"?(i.start.imply("hour",15),i.start.imply("meridiem",1)):u=="\u4E2D"?(i.start.imply("hour",12),i.start.imply("meridiem",1)):u=="\u591C"||u=="\u665A"?(i.start.imply("hour",22),i.start.imply("meridiem",1)):u=="\u51CC"&&i.start.imply("hour",0)}else if(t[ag]){let o=t[ag];o=="\u660E"?s.hour()>1&&(a=a.add(1,"day")):o=="\u6628"?a=a.add(-1,"day"):o=="\u524D"?a=a.add(-2,"day"):o=="\u5927\u524D"?a=a.add(-3,"day"):o=="\u540E"?a=a.add(2,"day"):o=="\u5927\u540E"&&(a=a.add(3,"day"));let u=t[hM];if(u){let l=u[0];l=="\u65E9"||l=="\u4E0A"?i.start.imply("hour",6):l=="\u4E0B"?(i.start.imply("hour",15),i.start.imply("meridiem",1)):l=="\u4E2D"?(i.start.imply("hour",12),i.start.imply("meridiem",1)):l=="\u591C"||l=="\u665A"?(i.start.imply("hour",22),i.start.imply("meridiem",1)):l=="\u51CC"&&i.start.imply("hour",0)}}return i.start.assign("day",a.date()),i.start.assign("month",a.month()+1),i.start.assign("year",a.year()),i}};Mi.default=Tc});var _n=h(ze=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});ze.zhStringToYear=ze.zhStringToNumber=ze.WEEKDAY_OFFSET=ze.NUMBER=void 0;ze.NUMBER={\u96F6:0,"\u3007":0,\u4E00:1,\u4E8C:2,\u4E24:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9,\u5341:10};ze.WEEKDAY_OFFSET={\u5929:0,\u65E5:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6};function mM(r){let e=0;for(let t=0;t{"use strict";var gM=Pi&&Pi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Pi,"__esModule",{value:!0});var _M=gM(z()),TM=R(),jr=_n(),bc=1,ug=2,vc=3,Ec=class extends TM.AbstractParserWithWordBoundaryChecking{innerPattern(){return new RegExp("(\\d{2,4}|["+Object.keys(jr.NUMBER).join("")+"]{4}|["+Object.keys(jr.NUMBER).join("")+"]{2})?(?:\\s*)(?:\u5E74)?(?:[\\s|,|\uFF0C]*)(\\d{1,2}|["+Object.keys(jr.NUMBER).join("")+"]{1,3})(?:\\s*)(?:\u6708)(?:\\s*)(\\d{1,2}|["+Object.keys(jr.NUMBER).join("")+"]{1,3})?(?:\\s*)(?:\u65E5|\u53F7)?")}innerExtract(e,t){let n=_M.default(e.refDate),i=e.createParsingResult(t.index,t[0]),s=parseInt(t[ug]);if(isNaN(s)&&(s=jr.zhStringToNumber(t[ug])),i.start.assign("month",s),t[vc]){let a=parseInt(t[vc]);isNaN(a)&&(a=jr.zhStringToNumber(t[vc])),i.start.assign("day",a)}else i.start.imply("day",n.date());if(t[bc]){let a=parseInt(t[bc]);isNaN(a)&&(a=jr.zhStringToYear(t[bc])),i.start.assign("year",a)}else i.start.imply("year",n.year());return i}};Pi.default=Ec});var dg=h(Oi=>{"use strict";var bM=Oi&&Oi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Oi,"__esModule",{value:!0});var vM=bM(z()),EM=R(),cg=_n(),RM=new RegExp("(\\d+|["+Object.keys(cg.NUMBER).join("")+"]+|\u534A|\u51E0)(?:\\s*)(?:\u4E2A)?(\u79D2(?:\u949F)?|\u5206\u949F|\u5C0F\u65F6|\u949F|\u65E5|\u5929|\u661F\u671F|\u793C\u62DC|\u6708|\u5E74)(?:(?:\u4E4B|\u8FC7)?\u540E|(?:\u4E4B)?\u5185)","i"),Rc=1,wM=2,wc=class extends EM.AbstractParserWithWordBoundaryChecking{innerPattern(){return RM}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=parseInt(t[Rc]);if(isNaN(i)&&(i=cg.zhStringToNumber(t[Rc])),isNaN(i)){let u=t[Rc];if(u==="\u51E0")i=3;else if(u==="\u534A")i=.5;else return null}let s=vM.default(e.refDate),o=t[wM][0];return o.match(/[日天星礼月年]/)?(o=="\u65E5"||o=="\u5929"?s=s.add(i,"d"):o=="\u661F"||o=="\u793C"?s=s.add(i*7,"d"):o=="\u6708"?s=s.add(i,"month"):o=="\u5E74"&&(s=s.add(i,"year")),n.start.assign("year",s.year()),n.start.assign("month",s.month()+1),n.start.assign("day",s.date()),n):(o=="\u79D2"?s=s.add(i,"second"):o=="\u5206"?s=s.add(i,"minute"):(o=="\u5C0F"||o=="\u949F")&&(s=s.add(i,"hour")),n.start.imply("year",s.year()),n.start.imply("month",s.month()+1),n.start.imply("day",s.date()),n.start.assign("hour",s.hour()),n.start.assign("minute",s.minute()),n.start.assign("second",s.second()),n)}};Oi.default=wc});var pg=h(Ai=>{"use strict";var DM=Ai&&Ai.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ai,"__esModule",{value:!0});var MM=DM(z()),PM=R(),fg=_n(),OM=new RegExp("(?\u4E0A|\u4E0B|\u8FD9)(?:\u4E2A)?(?:\u661F\u671F|\u793C\u62DC|\u5468)(?"+Object.keys(fg.WEEKDAY_OFFSET).join("|")+")"),Dc=class extends PM.AbstractParserWithWordBoundaryChecking{innerPattern(){return OM}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=t.groups.weekday,s=fg.WEEKDAY_OFFSET[i];if(s===void 0)return null;let a=null,o=t.groups.prefix;o=="\u4E0A"?a="last":o=="\u4E0B"?a="next":o=="\u8FD9"&&(a="this");let u=MM.default(e.refDate),l=!1,c=u.day();return a=="last"||a=="past"?(u=u.day(s-7),l=!0):a=="next"?(u=u.day(s+7),l=!0):a=="this"?u=u.day(s):Math.abs(s-7-c){"use strict";var AM=ki&&ki.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ki,"__esModule",{value:!0});var kM=AM(z()),NM=R(),ct=_n(),CM=new RegExp("(?:\u4ECE|\u81EA)?(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(ct.NUMBER).join("")+"]+)(?:\\s*)(?:\u70B9|\u65F6|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(ct.NUMBER).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(ct.NUMBER).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),xM=new RegExp("(?:^\\s*(?:\u5230|\u81F3|\\-|\\\u2013|\\~|\\\u301C)\\s*)(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(ct.NUMBER).join("")+"]+)(?:\\s*)(?:\u70B9|\u65F6|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(ct.NUMBER).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(ct.NUMBER).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),na=1,ia=2,sa=3,aa=4,oa=5,ua=6,lt=7,Tn=8,la=9,Mc=class extends NM.AbstractParserWithWordBoundaryChecking{innerPattern(){return CM}innerExtract(e,t){if(t.index>0&&e.text[t.index-1].match(/\w/))return null;let n=kM.default(e.refDate),i=e.createParsingResult(t.index,t[0]),s=n.clone();if(t[na]){let c=t[na];c=="\u660E"?n.hour()>1&&s.add(1,"day"):c=="\u6628"?s.add(-1,"day"):c=="\u524D"?s.add(-2,"day"):c=="\u5927\u524D"?s.add(-3,"day"):c=="\u540E"?s.add(2,"day"):c=="\u5927\u540E"&&s.add(3,"day"),i.start.assign("day",s.date()),i.start.assign("month",s.month()+1),i.start.assign("year",s.year())}else if(t[aa]){let c=t[aa];c=="\u660E"?s.add(1,"day"):c=="\u6628"?s.add(-1,"day"):c=="\u524D"?s.add(-2,"day"):c=="\u5927\u524D"?s.add(-3,"day"):c=="\u540E"?s.add(2,"day"):c=="\u5927\u540E"&&s.add(3,"day"),i.start.assign("day",s.date()),i.start.assign("month",s.month()+1),i.start.assign("year",s.year())}else i.start.imply("day",s.date()),i.start.imply("month",s.month()+1),i.start.imply("year",s.year());let a=0,o=0,u=-1;if(t[Tn]){let c=parseInt(t[Tn]);if(isNaN(c)&&(c=ct.zhStringToNumber(t[Tn])),c>=60)return null;i.start.assign("second",c)}if(a=parseInt(t[ua]),isNaN(a)&&(a=ct.zhStringToNumber(t[ua])),t[lt]?t[lt]=="\u534A"?o=30:t[lt]=="\u6B63"||t[lt]=="\u6574"?o=0:(o=parseInt(t[lt]),isNaN(o)&&(o=ct.zhStringToNumber(t[lt]))):a>100&&(o=a%100,a=Math.floor(a/100)),o>=60||a>24)return null;if(a>=12&&(u=1),t[la]){if(a>12)return null;let c=t[la][0].toLowerCase();c=="a"&&(u=0,a==12&&(a=0)),c=="p"&&(u=1,a!=12&&(a+=12))}else if(t[ia]){let d=t[ia][0];d=="\u65E9"?(u=0,a==12&&(a=0)):d=="\u665A"&&(u=1,a!=12&&(a+=12))}else if(t[sa]){let d=t[sa][0];d=="\u4E0A"||d=="\u65E9"||d=="\u51CC"?(u=0,a==12&&(a=0)):(d=="\u4E0B"||d=="\u665A")&&(u=1,a!=12&&(a+=12))}else if(t[oa]){let d=t[oa][0];d=="\u4E0A"||d=="\u65E9"||d=="\u51CC"?(u=0,a==12&&(a=0)):(d=="\u4E0B"||d=="\u665A")&&(u=1,a!=12&&(a+=12))}if(i.start.assign("hour",a),i.start.assign("minute",o),u>=0?i.start.assign("meridiem",u):a<12?i.start.imply("meridiem",0):i.start.imply("meridiem",1),t=xM.exec(e.text.substring(i.index+i.text.length)),!t)return i.text.match(/^\d+$/)?null:i;let l=s.clone();if(i.end=e.createParsingComponents(),t[na]){let c=t[na];c=="\u660E"?n.hour()>1&&l.add(1,"day"):c=="\u6628"?l.add(-1,"day"):c=="\u524D"?l.add(-2,"day"):c=="\u5927\u524D"?l.add(-3,"day"):c=="\u540E"?l.add(2,"day"):c=="\u5927\u540E"&&l.add(3,"day"),i.end.assign("day",l.date()),i.end.assign("month",l.month()+1),i.end.assign("year",l.year())}else if(t[aa]){let c=t[aa];c=="\u660E"?l.add(1,"day"):c=="\u6628"?l.add(-1,"day"):c=="\u524D"?l.add(-2,"day"):c=="\u5927\u524D"?l.add(-3,"day"):c=="\u540E"?l.add(2,"day"):c=="\u5927\u540E"&&l.add(3,"day"),i.end.assign("day",l.date()),i.end.assign("month",l.month()+1),i.end.assign("year",l.year())}else i.end.imply("day",l.date()),i.end.imply("month",l.month()+1),i.end.imply("year",l.year());if(a=0,o=0,u=-1,t[Tn]){let c=parseInt(t[Tn]);if(isNaN(c)&&(c=ct.zhStringToNumber(t[Tn])),c>=60)return null;i.end.assign("second",c)}if(a=parseInt(t[ua]),isNaN(a)&&(a=ct.zhStringToNumber(t[ua])),t[lt]?t[lt]=="\u534A"?o=30:t[lt]=="\u6B63"||t[lt]=="\u6574"?o=0:(o=parseInt(t[lt]),isNaN(o)&&(o=ct.zhStringToNumber(t[lt]))):a>100&&(o=a%100,a=Math.floor(a/100)),o>=60||a>24)return null;if(a>=12&&(u=1),t[la]){if(a>12)return null;let c=t[la][0].toLowerCase();c=="a"&&(u=0,a==12&&(a=0)),c=="p"&&(u=1,a!=12&&(a+=12)),i.start.isCertain("meridiem")||(u==0?(i.start.imply("meridiem",0),i.start.get("hour")==12&&i.start.assign("hour",0)):(i.start.imply("meridiem",1),i.start.get("hour")!=12&&i.start.assign("hour",i.start.get("hour")+12)))}else if(t[ia]){let d=t[ia][0];d=="\u65E9"?(u=0,a==12&&(a=0)):d=="\u665A"&&(u=1,a!=12&&(a+=12))}else if(t[sa]){let d=t[sa][0];d=="\u4E0A"||d=="\u65E9"||d=="\u51CC"?(u=0,a==12&&(a=0)):(d=="\u4E0B"||d=="\u665A")&&(u=1,a!=12&&(a+=12))}else if(t[oa]){let d=t[oa][0];d=="\u4E0A"||d=="\u65E9"||d=="\u51CC"?(u=0,a==12&&(a=0)):(d=="\u4E0B"||d=="\u665A")&&(u=1,a!=12&&(a+=12))}return i.text=i.text+t[0],i.end.assign("hour",a),i.end.assign("minute",o),u>=0?i.end.assign("meridiem",u):i.start.isCertain("meridiem")&&i.start.get("meridiem")==1&&i.start.get("hour")>a?i.end.imply("meridiem",0):a>12&&i.end.imply("meridiem",1),i.end.date().getTime(){"use strict";var SM=Ni&&Ni.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ni,"__esModule",{value:!0});var IM=SM(z()),UM=R(),mg=_n(),FM=new RegExp("(?:\u661F\u671F|\u793C\u62DC|\u5468)(?"+Object.keys(mg.WEEKDAY_OFFSET).join("|")+")"),Pc=class extends UM.AbstractParserWithWordBoundaryChecking{innerPattern(){return FM}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=t.groups.weekday,s=mg.WEEKDAY_OFFSET[i];if(s===void 0)return null;let a=IM.default(e.refDate),o=!1,u=a.day();return Math.abs(s-7-u){"use strict";var qM=Ci&&Ci.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ci,"__esModule",{value:!0});var WM=qM(Nt()),Oc=class extends WM.default{patternBetween(){return/^\s*(至|到|-|~|~|-|ー)\s*$/i}};Ci.default=Oc});var _g=h(xi=>{"use strict";var LM=xi&&xi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(xi,"__esModule",{value:!0});var YM=LM(Gt()),Ac=class extends YM.default{patternBetween(){return/^\s*$/i}};xi.default=Ac});var Tg=h(be=>{"use strict";var Qt=be&&be.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(be,"__esModule",{value:!0});be.createConfiguration=be.createCasualConfiguration=be.parseDate=be.parse=be.strict=be.casual=be.hans=void 0;var kc=gt(),$M=Qt(Cs()),jM=Ht(),BM=Qt(og()),GM=Qt(lg()),HM=Qt(dg()),zM=Qt(pg()),KM=Qt(hg()),VM=Qt(yg()),ZM=Qt(gg()),XM=Qt(_g());be.hans=new kc.Chrono(Nc());be.casual=new kc.Chrono(Nc());be.strict=new kc.Chrono(Cc());function QM(r,e,t){return be.casual.parse(r,e,t)}be.parse=QM;function JM(r,e,t){return be.casual.parseDate(r,e,t)}be.parseDate=JM;function Nc(){let r=Cc();return r.parsers.unshift(new BM.default),r}be.createCasualConfiguration=Nc;function Cc(){let r=jM.includeCommonConfiguration({parsers:[new GM.default,new zM.default,new VM.default,new KM.default,new HM.default],refiners:[new ZM.default,new XM.default]});return r.refiners=r.refiners.filter(e=>!(e instanceof $M.default)),r}be.createConfiguration=Cc});var vg=h(Je=>{"use strict";var bg=Je&&Je.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),eP=Je&&Je.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),tP=Je&&Je.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&bg(e,r,t)},rP=Je&&Je.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&bg(e,r,t);return eP(e,r),e};Object.defineProperty(Je,"__esModule",{value:!0});Je.hans=void 0;tP(ng(),Je);Je.hans=rP(Tg())});var Ke=h(U=>{"use strict";Object.defineProperty(U,"__esModule",{value:!0});U.parseTimeUnits=U.TIME_UNITS_PATTERN=U.parseYear=U.YEAR_PATTERN=U.parseOrdinalNumberPattern=U.ORDINAL_NUMBER_PATTERN=U.parseNumberPattern=U.NUMBER_PATTERN=U.TIME_UNIT_DICTIONARY=U.ORDINAL_WORD_DICTIONARY=U.INTEGER_WORD_DICTIONARY=U.MONTH_DICTIONARY=U.FULL_MONTH_NAME_DICTIONARY=U.WEEKDAY_DICTIONARY=U.REGEX_PARTS=void 0;var ca=Q(),nP=Se();U.REGEX_PARTS={leftBoundary:"([^\\p{L}\\p{N}_]|^)",rightBoundary:"(?=[^\\p{L}\\p{N}_]|$)",flags:"iu"};U.WEEKDAY_DICTIONARY={\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435:0,\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u044F:0,\u0432\u0441\u043A:0,"\u0432\u0441\u043A.":0,\u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A:1,\u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A\u0430:1,\u043F\u043D:1,"\u043F\u043D.":1,\u0432\u0442\u043E\u0440\u043D\u0438\u043A:2,\u0432\u0442\u043E\u0440\u043D\u0438\u043A\u0430:2,\u0432\u0442:2,"\u0432\u0442.":2,\u0441\u0440\u0435\u0434\u0430:3,\u0441\u0440\u0435\u0434\u044B:3,\u0441\u0440\u0435\u0434\u0443:3,\u0441\u0440:3,"\u0441\u0440.":3,\u0447\u0435\u0442\u0432\u0435\u0440\u0433:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430:4,\u0447\u0442:4,"\u0447\u0442.":4,\u043F\u044F\u0442\u043D\u0438\u0446\u0430:5,\u043F\u044F\u0442\u043D\u0438\u0446\u0443:5,\u043F\u044F\u0442\u043D\u0438\u0446\u044B:5,\u043F\u0442:5,"\u043F\u0442.":5,\u0441\u0443\u0431\u0431\u043E\u0442\u0430:6,\u0441\u0443\u0431\u0431\u043E\u0442\u0443:6,\u0441\u0443\u0431\u0431\u043E\u0442\u044B:6,\u0441\u0431:6,"\u0441\u0431.":6};U.FULL_MONTH_NAME_DICTIONARY={\u044F\u043D\u0432\u0430\u0440\u044C:1,\u044F\u043D\u0432\u0430\u0440\u044F:1,\u044F\u043D\u0432\u0430\u0440\u0435:1,\u0444\u0435\u0432\u0440\u044F\u043B\u044C:2,\u0444\u0435\u0432\u0440\u044F\u043B\u044F:2,\u0444\u0435\u0432\u0440\u044F\u043B\u0435:2,\u043C\u0430\u0440\u0442:3,\u043C\u0430\u0440\u0442\u0430:3,\u043C\u0430\u0440\u0442\u0435:3,\u0430\u043F\u0440\u0435\u043B\u044C:4,\u0430\u043F\u0440\u0435\u043B\u044F:4,\u0430\u043F\u0440\u0435\u043B\u0435:4,\u043C\u0430\u0439:5,\u043C\u0430\u044F:5,\u043C\u0430\u0435:5,\u0438\u044E\u043D\u044C:6,\u0438\u044E\u043D\u044F:6,\u0438\u044E\u043D\u0435:6,\u0438\u044E\u043B\u044C:7,\u0438\u044E\u043B\u044F:7,\u0438\u044E\u043B\u0435:7,\u0430\u0432\u0433\u0443\u0441\u0442:8,\u0430\u0432\u0433\u0443\u0441\u0442\u0430:8,\u0430\u0432\u0433\u0443\u0441\u0442\u0435:8,\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044C:9,\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044F:9,\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u0435:9,\u043E\u043A\u0442\u044F\u0431\u0440\u044C:10,\u043E\u043A\u0442\u044F\u0431\u0440\u044F:10,\u043E\u043A\u0442\u044F\u0431\u0440\u0435:10,\u043D\u043E\u044F\u0431\u0440\u044C:11,\u043D\u043E\u044F\u0431\u0440\u044F:11,\u043D\u043E\u044F\u0431\u0440\u0435:11,\u0434\u0435\u043A\u0430\u0431\u0440\u044C:12,\u0434\u0435\u043A\u0430\u0431\u0440\u044F:12,\u0434\u0435\u043A\u0430\u0431\u0440\u0435:12};U.MONTH_DICTIONARY=Object.assign(Object.assign({},U.FULL_MONTH_NAME_DICTIONARY),{\u044F\u043D\u0432:1,"\u044F\u043D\u0432.":1,\u0444\u0435\u0432:2,"\u0444\u0435\u0432.":2,\u043C\u0430\u0440:3,"\u043C\u0430\u0440.":3,\u0430\u043F\u0440:4,"\u0430\u043F\u0440.":4,\u0430\u0432\u0433:8,"\u0430\u0432\u0433.":8,\u0441\u0435\u043D:9,"\u0441\u0435\u043D.":9,\u043E\u043A\u0442:10,"\u043E\u043A\u0442.":10,\u043D\u043E\u044F:11,"\u043D\u043E\u044F.":11,\u0434\u0435\u043A:12,"\u0434\u0435\u043A.":12});U.INTEGER_WORD_DICTIONARY={\u043E\u0434\u0438\u043D:1,\u043E\u0434\u043D\u0430:1,\u043E\u0434\u043D\u043E\u0439:1,\u043E\u0434\u043D\u0443:1,\u0434\u0432\u0435:2,\u0434\u0432\u0430:2,\u0434\u0432\u0443\u0445:2,\u0442\u0440\u0438:3,\u0442\u0440\u0435\u0445:3,\u0442\u0440\u0451\u0445:3,\u0447\u0435\u0442\u044B\u0440\u0435:4,\u0447\u0435\u0442\u044B\u0440\u0435\u0445:4,\u0447\u0435\u0442\u044B\u0440\u0451\u0445:4,\u043F\u044F\u0442\u044C:5,\u043F\u044F\u0442\u0438:5,\u0448\u0435\u0441\u0442\u044C:6,\u0448\u0435\u0441\u0442\u0438:6,\u0441\u0435\u043C\u044C:7,\u0441\u0435\u043C\u0438:7,\u0432\u043E\u0441\u0435\u043C\u044C:8,\u0432\u043E\u0441\u0435\u043C\u044C\u043C\u0438:8,\u0434\u0435\u0432\u044F\u0442\u044C:9,\u0434\u0435\u0432\u044F\u0442\u0438:9,\u0434\u0435\u0441\u044F\u0442\u044C:10,\u0434\u0435\u0441\u044F\u0442\u0438:10,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u044C:11,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u0438:11,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u044C:12,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u0438:12};U.ORDINAL_WORD_DICTIONARY={\u043F\u0435\u0440\u0432\u043E\u0435:1,\u043F\u0435\u0440\u0432\u043E\u0433\u043E:1,\u0432\u0442\u043E\u0440\u043E\u0435:2,\u0432\u0442\u043E\u0440\u043E\u0433\u043E:2,\u0442\u0440\u0435\u0442\u044C\u0435:3,\u0442\u0440\u0435\u0442\u044C\u0435\u0433\u043E:3,\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0435:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0433\u043E:4,\u043F\u044F\u0442\u043E\u0435:5,\u043F\u044F\u0442\u043E\u0433\u043E:5,\u0448\u0435\u0441\u0442\u043E\u0435:6,\u0448\u0435\u0441\u0442\u043E\u0433\u043E:6,\u0441\u0435\u0434\u044C\u043C\u043E\u0435:7,\u0441\u0435\u0434\u044C\u043C\u043E\u0433\u043E:7,\u0432\u043E\u0441\u044C\u043C\u043E\u0435:8,\u0432\u043E\u0441\u044C\u043C\u043E\u0433\u043E:8,\u0434\u0435\u0432\u044F\u0442\u043E\u0435:9,\u0434\u0435\u0432\u044F\u0442\u043E\u0433\u043E:9,\u0434\u0435\u0441\u044F\u0442\u043E\u0435:10,\u0434\u0435\u0441\u044F\u0442\u043E\u0433\u043E:10,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:11,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:11,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:12,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:12,\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:13,\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:13,\u0447\u0435\u0442\u044B\u0440\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:14,\u0447\u0435\u0442\u044B\u0440\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:14,\u043F\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:15,\u043F\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:15,\u0448\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:16,\u0448\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:16,\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:17,\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:17,\u0432\u043E\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:18,\u0432\u043E\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:18,\u0434\u0435\u0432\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:19,\u0434\u0435\u0432\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:19,\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u043E\u0435:20,\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:20,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0435":21,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0433\u043E":21,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u0442\u043E\u0440\u043E\u0435":22,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u0442\u043E\u0440\u043E\u0433\u043E":22,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0442\u0440\u0435\u0442\u044C\u0435":23,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0442\u0440\u0435\u0442\u044C\u0435\u0433\u043E":23,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0435":24,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0433\u043E":24,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u044F\u0442\u043E\u0435":25,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u044F\u0442\u043E\u0433\u043E":25,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0448\u0435\u0441\u0442\u043E\u0435":26,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0448\u0435\u0441\u0442\u043E\u0433\u043E":26,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0441\u0435\u0434\u044C\u043C\u043E\u0435":27,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0441\u0435\u0434\u044C\u043C\u043E\u0433\u043E":27,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u043E\u0441\u044C\u043C\u043E\u0435":28,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u043E\u0441\u044C\u043C\u043E\u0433\u043E":28,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0434\u0435\u0432\u044F\u0442\u043E\u0435":29,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0434\u0435\u0432\u044F\u0442\u043E\u0433\u043E":29,\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u043E\u0435:30,\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u043E\u0433\u043E:30,"\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0435":31,"\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0433\u043E":31};U.TIME_UNIT_DICTIONARY={\u0441\u0435\u043A:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0430:"second",\u0441\u0435\u043A\u0443\u043D\u0434:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u044B:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0443:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0430:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0438:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u0435\u043A:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0443:"second",\u043C\u0438\u043D:"minute",\u043C\u0438\u043D\u0443\u0442\u0430:"minute",\u043C\u0438\u043D\u0443\u0442:"minute",\u043C\u0438\u043D\u0443\u0442\u044B:"minute",\u043C\u0438\u043D\u0443\u0442\u0443:"minute",\u043C\u0438\u043D\u0443\u0442\u043E\u043A:"minute",\u043C\u0438\u043D\u0443\u0442\u043A\u0438:"minute",\u043C\u0438\u043D\u0443\u0442\u043A\u0443:"minute",\u0447\u0430\u0441:"hour",\u0447\u0430\u0441\u043E\u0432:"hour",\u0447\u0430\u0441\u0430:"hour",\u0447\u0430\u0441\u0443:"hour",\u0447\u0430\u0441\u0438\u043A\u043E\u0432:"hour",\u0447\u0430\u0441\u0438\u043A\u0430:"hour",\u0447\u0430\u0441\u0438\u043A\u0435:"hour",\u0447\u0430\u0441\u0438\u043A:"hour",\u0434\u0435\u043D\u044C:"d",\u0434\u043D\u044F:"d",\u0434\u043D\u0435\u0439:"d",\u0441\u0443\u0442\u043E\u043A:"d",\u0441\u0443\u0442\u043A\u0438:"d",\u043D\u0435\u0434\u0435\u043B\u044F:"week",\u043D\u0435\u0434\u0435\u043B\u0435:"week",\u043D\u0435\u0434\u0435\u043B\u0438:"week",\u043D\u0435\u0434\u0435\u043B\u044E:"week",\u043D\u0435\u0434\u0435\u043B\u044C:"week",\u043D\u0435\u0434\u0435\u043B\u044C\u043A\u0435:"week",\u043D\u0435\u0434\u0435\u043B\u044C\u043A\u0438:"week",\u043D\u0435\u0434\u0435\u043B\u0435\u043A:"week",\u043C\u0435\u0441\u044F\u0446:"month",\u043C\u0435\u0441\u044F\u0446\u0435:"month",\u043C\u0435\u0441\u044F\u0446\u0435\u0432:"month",\u043C\u0435\u0441\u044F\u0446\u0430:"month",\u043A\u0432\u0430\u0440\u0442\u0430\u043B:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u0435:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u043E\u0432:"quarter",\u0433\u043E\u0434:"year",\u0433\u043E\u0434\u0430:"year",\u0433\u043E\u0434\u0443:"year",\u0433\u043E\u0434\u043E\u0432:"year",\u043B\u0435\u0442:"year",\u0433\u043E\u0434\u0438\u043A:"year",\u0433\u043E\u0434\u0438\u043A\u0430:"year",\u0433\u043E\u0434\u0438\u043A\u043E\u0432:"year"};U.NUMBER_PATTERN=`(?:${ca.matchAnyPattern(U.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|\u043F\u043E\u043B|\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E|\u043F\u0430\u0440(?:\u044B|\u0443)|\\s{0,3})`;function Rg(r){let e=r.toLowerCase();return U.INTEGER_WORD_DICTIONARY[e]!==void 0?U.INTEGER_WORD_DICTIONARY[e]:e.match(/несколько/)?3:e.match(/пол/)?.5:e.match(/пар/)?2:e===""?1:parseFloat(e)}U.parseNumberPattern=Rg;U.ORDINAL_NUMBER_PATTERN=`(?:${ca.matchAnyPattern(U.ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:\u0433\u043E|\u043E\u0433\u043E|\u0435|\u043E\u0435)?)`;function iP(r){let e=r.toLowerCase();return U.ORDINAL_WORD_DICTIONARY[e]!==void 0?U.ORDINAL_WORD_DICTIONARY[e]:(e=e.replace(/(?:st|nd|rd|th)$/i,""),parseInt(e))}U.parseOrdinalNumberPattern=iP;var xc="(?:\\s+(?:\u0433\u043E\u0434\u0443|\u0433\u043E\u0434\u0430|\u0433\u043E\u0434|\u0433|\u0433.))?";U.YEAR_PATTERN=`(?:[1-9][0-9]{0,3}${xc}\\s*(?:\u043D.\u044D.|\u0434\u043E \u043D.\u044D.|\u043D. \u044D.|\u0434\u043E \u043D. \u044D.)|[1-2][0-9]{3}${xc}|[5-9][0-9]${xc})`;function sP(r){if(/(год|года|г|г.)/i.test(r)&&(r=r.replace(/(год|года|г|г.)/i,"")),/(до н.э.|до н. э.)/i.test(r))return r=r.replace(/(до н.э.|до н. э.)/i,""),-parseInt(r);if(/(н. э.|н.э.)/i.test(r))return r=r.replace(/(н. э.|н.э.)/i,""),parseInt(r);let e=parseInt(r);return nP.findMostLikelyADYear(e)}U.parseYear=sP;var wg=`(${U.NUMBER_PATTERN})\\s{0,3}(${ca.matchAnyPattern(U.TIME_UNIT_DICTIONARY)})`,Eg=new RegExp(wg,"i");U.TIME_UNITS_PATTERN=ca.repeatedTimeunitPattern("(?:(?:\u043E\u043A\u043E\u043B\u043E|\u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E)\\s{0,3})?",wg);function aP(r){let e={},t=r,n=Eg.exec(t);for(;n;)oP(e,n),t=t.substring(n[0].length).trim(),n=Eg.exec(t);return e}U.parseTimeUnits=aP;function oP(r,e){let t=Rg(e[1]),n=U.TIME_UNIT_DICTIONARY[e[2].toLowerCase()];r[n]=t}});var Mg=h(Ic=>{"use strict";Object.defineProperty(Ic,"__esModule",{value:!0});var Si=Ke(),uP=pe(),lP=R(),Dg=`(?:(?:\u043E\u043A\u043E\u043B\u043E|\u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E)\\s*(?:~\\s*)?)?(${Si.TIME_UNITS_PATTERN})${Si.REGEX_PARTS.rightBoundary}`,cP=new RegExp(`(?:\u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435|\u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0438)\\s*${Dg}`,Si.REGEX_PARTS.flags),dP=new RegExp(Dg,"i"),Sc=class extends lP.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return Si.REGEX_PARTS.leftBoundary}innerPattern(e){return e.option.forwardDate?dP:cP}innerExtract(e,t){let n=Si.parseTimeUnits(t[1]);return uP.ParsingComponents.createRelativeFromReference(e.reference,n)}};Ic.default=Sc});var Ng=h(Fc=>{"use strict";Object.defineProperty(Fc,"__esModule",{value:!0});var fP=Se(),Ii=Ke(),kg=Ke(),da=Ke(),pP=Q(),hP=R(),mP=new RegExp(`(?:\u0441)?\\s*(${da.ORDINAL_NUMBER_PATTERN})(?:\\s{0,3}(?:\u043F\u043E|-|\u2013|\u0434\u043E)?\\s{0,3}(${da.ORDINAL_NUMBER_PATTERN}))?(?:-|\\/|\\s{0,3}(?:of)?\\s{0,3})(${pP.matchAnyPattern(Ii.MONTH_DICTIONARY)})(?:(?:-|\\/|,?\\s{0,3})(${kg.YEAR_PATTERN}(?![^\\s]\\d)))?${Ii.REGEX_PARTS.rightBoundary}`,Ii.REGEX_PARTS.flags),Pg=1,Og=2,yP=3,Ag=4,Uc=class extends hP.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return Ii.REGEX_PARTS.leftBoundary}innerPattern(){return mP}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=Ii.MONTH_DICTIONARY[t[yP].toLowerCase()],s=da.parseOrdinalNumberPattern(t[Pg]);if(s>31)return t.index=t.index+t[Pg].length,null;if(n.start.assign("month",i),n.start.assign("day",s),t[Ag]){let a=kg.parseYear(t[Ag]);n.start.assign("year",a)}else{let a=fP.findYearClosestToRef(e.refDate,s,i);n.start.imply("year",a)}if(t[Og]){let a=da.parseOrdinalNumberPattern(t[Og]);n.end=n.start.clone(),n.end.assign("day",a)}return n}};Fc.default=Uc});var Sg=h(Wc=>{"use strict";Object.defineProperty(Wc,"__esModule",{value:!0});var Ui=Ke(),gP=Se(),_P=Q(),xg=Ke(),TP=R(),bP=new RegExp(`((?:\u0432)\\s*)?(${_P.matchAnyPattern(Ui.MONTH_DICTIONARY)})\\s*(?:[,-]?\\s*(${xg.YEAR_PATTERN})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,Ui.REGEX_PARTS.flags),vP=2,Cg=3,qc=class extends TP.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return Ui.REGEX_PARTS.leftBoundary}innerPattern(){return bP}innerExtract(e,t){let n=t[vP].toLowerCase();if(t[0].length<=3&&!Ui.FULL_MONTH_NAME_DICTIONARY[n])return null;let i=e.createParsingResult(t.index,t.index+t[0].length);i.start.imply("day",1);let s=Ui.MONTH_DICTIONARY[n];if(i.start.assign("month",s),t[Cg]){let a=xg.parseYear(t[Cg]);i.start.assign("year",a)}else{let a=gP.findYearClosestToRef(e.refDate,1,s);i.start.imply("year",a)}return i}};Wc.default=qc});var Ug=h(Yc=>{"use strict";Object.defineProperty(Yc,"__esModule",{value:!0});var fa=Ee(),EP=Ur(),Ig=Ke(),Lc=class extends EP.AbstractTimeExpressionParser{constructor(e){super(e)}patternFlags(){return Ig.REGEX_PARTS.flags}primaryPatternLeftBoundary(){return"(^|\\s|T|(?:[^\\p{L}\\p{N}_]))"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|\u0434\u043E|\u0438|\u043F\u043E|\\?)\\s*"}primaryPrefix(){return"(?:(?:\u0432|\u0441)\\s*)??"}primarySuffix(){return`(?:\\s*(?:\u0443\u0442\u0440\u0430|\u0432\u0435\u0447\u0435\u0440\u0430|\u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043B\u0443\u0434\u043D\u044F))?(?!\\/)${Ig.REGEX_PARTS.rightBoundary}`}extractPrimaryTimeComponents(e,t){let n=super.extractPrimaryTimeComponents(e,t);if(n){if(t[0].endsWith("\u0432\u0435\u0447\u0435\u0440\u0430")){let i=n.get("hour");i>=6&&i<12?(n.assign("hour",n.get("hour")+12),n.assign("meridiem",fa.Meridiem.PM)):i<6&&n.assign("meridiem",fa.Meridiem.AM)}if(t[0].endsWith("\u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043B\u0443\u0434\u043D\u044F")){n.assign("meridiem",fa.Meridiem.PM);let i=n.get("hour");i>=0&&i<=6&&n.assign("hour",n.get("hour")+12)}t[0].endsWith("\u0443\u0442\u0440\u0430")&&(n.assign("meridiem",fa.Meridiem.AM),n.get("hour")<12&&n.assign("hour",n.get("hour")))}return n}};Yc.default=Lc});var Fg=h(jc=>{"use strict";Object.defineProperty(jc,"__esModule",{value:!0});var pa=Ke(),RP=pe(),wP=R(),DP=st(),MP=new RegExp(`(${pa.TIME_UNITS_PATTERN})\\s{0,5}\u043D\u0430\u0437\u0430\u0434(?=(?:\\W|$))`,pa.REGEX_PARTS.flags),$c=class extends wP.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return pa.REGEX_PARTS.leftBoundary}innerPattern(){return MP}innerExtract(e,t){let n=pa.parseTimeUnits(t[1]),i=DP.reverseTimeUnits(n);return RP.ParsingComponents.createRelativeFromReference(e.reference,i)}};jc.default=$c});var qg=h(Fi=>{"use strict";var PP=Fi&&Fi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Fi,"__esModule",{value:!0});var OP=PP(Nt()),Bc=class extends OP.default{patternBetween(){return/^\s*(и до|и по|до|по|-)\s*$/i}};Fi.default=Bc});var Wg=h(qi=>{"use strict";var AP=qi&&qi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(qi,"__esModule",{value:!0});var kP=AP(Gt()),Gc=class extends kP.default{patternBetween(){return new RegExp("^\\s*(T|\u0432|,|-)?\\s*$")}};qi.default=Gc});var Lg=h(Jt=>{"use strict";var NP=Jt&&Jt.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),CP=Jt&&Jt.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),xP=Jt&&Jt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&NP(e,r,t);return CP(e,r),e};Object.defineProperty(Jt,"__esModule",{value:!0});var SP=R(),Wi=xP(Kt()),Hc=Ke(),IP=new RegExp(`(?:\u0441|\u0441\u043E)?\\s*(\u0441\u0435\u0433\u043E\u0434\u043D\u044F|\u0432\u0447\u0435\u0440\u0430|\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430)${Hc.REGEX_PARTS.rightBoundary}`,Hc.REGEX_PARTS.flags),zc=class extends SP.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return Hc.REGEX_PARTS.leftBoundary}innerPattern(e){return IP}innerExtract(e,t){let n=t[1].toLowerCase(),i=e.createParsingComponents();switch(n){case"\u0441\u0435\u0433\u043E\u0434\u043D\u044F":return Wi.today(e.reference);case"\u0432\u0447\u0435\u0440\u0430":return Wi.yesterday(e.reference);case"\u0437\u0430\u0432\u0442\u0440\u0430":return Wi.tomorrow(e.reference);case"\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430":return Wi.theDayAfter(e.reference,2);case"\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430":return Wi.theDayBefore(e.reference,2)}return i}};Jt.default=zc});var Yg=h(Et=>{"use strict";var UP=Et&&Et.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),FP=Et&&Et.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),qP=Et&&Et.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&UP(e,r,t);return FP(e,r),e},WP=Et&&Et.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Et,"__esModule",{value:!0});var LP=R(),Br=qP(Kt()),YP=it(),$P=WP(z()),Kc=Ke(),jP=new RegExp(`(\u0441\u0435\u0439\u0447\u0430\u0441|\u043F\u0440\u043E\u0448\u043B\u044B\u043C\\s*\u0432\u0435\u0447\u0435\u0440\u043E\u043C|\u043F\u0440\u043E\u0448\u043B\u043E\u0439\\s*\u043D\u043E\u0447\u044C\u044E|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439\\s*\u043D\u043E\u0447\u044C\u044E|\u0441\u0435\u0433\u043E\u0434\u043D\u044F\\s*\u043D\u043E\u0447\u044C\u044E|\u044D\u0442\u043E\u0439\\s*\u043D\u043E\u0447\u044C\u044E|\u043D\u043E\u0447\u044C\u044E|\u044D\u0442\u0438\u043C \u0443\u0442\u0440\u043E\u043C|\u0443\u0442\u0440\u043E\u043C|\u0443\u0442\u0440\u0430|\u0432\\s*\u043F\u043E\u043B\u0434\u0435\u043D\u044C|\u0432\u0435\u0447\u0435\u0440\u043E\u043C|\u0432\u0435\u0447\u0435\u0440\u0430|\u0432\\s*\u043F\u043E\u043B\u043D\u043E\u0447\u044C)${Kc.REGEX_PARTS.rightBoundary}`,Kc.REGEX_PARTS.flags),Vc=class extends LP.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return Kc.REGEX_PARTS.leftBoundary}innerPattern(){return jP}innerExtract(e,t){let n=$P.default(e.refDate),i=t[0].toLowerCase(),s=e.createParsingComponents();if(i==="\u0441\u0435\u0439\u0447\u0430\u0441")return Br.now(e.reference);if(i==="\u0432\u0435\u0447\u0435\u0440\u043E\u043C"||i==="\u0432\u0435\u0447\u0435\u0440\u0430")return Br.evening(e.reference);if(i.endsWith("\u0443\u0442\u0440\u043E\u043C")||i.endsWith("\u0443\u0442\u0440\u0430"))return Br.morning(e.reference);if(i.match(/в\s*полдень/))return Br.noon(e.reference);if(i.match(/прошлой\s*ночью/))return Br.lastNight(e.reference);if(i.match(/прошлым\s*вечером/))return Br.yesterdayEvening(e.reference);if(i.match(/следующей\s*ночью/)){let a=n.hour()<22?1:2;n=n.add(a,"day"),YP.assignSimilarDate(s,n),s.imply("hour",0)}return i.match(/в\s*полночь/)||i.endsWith("\u043D\u043E\u0447\u044C\u044E")?Br.midnight(e.reference):s}};Et.default=Vc});var $g=h(Xc=>{"use strict";Object.defineProperty(Xc,"__esModule",{value:!0});var Li=Ke(),BP=Q(),GP=R(),HP=qr(),zP=new RegExp(`(?:(?:,|\\(|\uFF08)\\s*)?(?:\u0432\\s*?)?(?:(\u044D\u0442\u0443|\u044D\u0442\u043E\u0442|\u043F\u0440\u043E\u0448\u043B\u044B\u0439|\u043F\u0440\u043E\u0448\u043B\u0443\u044E|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E)\\s*)?(${BP.matchAnyPattern(Li.WEEKDAY_DICTIONARY)})(?:\\s*(?:,|\\)|\uFF09))?(?:\\s*\u043D\u0430\\s*(\u044D\u0442\u043E\u0439|\u043F\u0440\u043E\u0448\u043B\u043E\u0439|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439)\\s*\u043D\u0435\u0434\u0435\u043B\u0435)?${Li.REGEX_PARTS.rightBoundary}`,Li.REGEX_PARTS.flags),KP=1,VP=2,ZP=3,Zc=class extends GP.AbstractParserWithWordBoundaryChecking{innerPattern(){return zP}patternLeftBoundary(){return Li.REGEX_PARTS.leftBoundary}innerExtract(e,t){let n=t[VP].toLowerCase(),i=Li.WEEKDAY_DICTIONARY[n],s=t[KP],a=t[ZP],o=s||a;o=o||"",o=o.toLowerCase();let u=null;o=="\u043F\u0440\u043E\u0448\u043B\u044B\u0439"||o=="\u043F\u0440\u043E\u0448\u043B\u0443\u044E"||o=="\u043F\u0440\u043E\u0448\u043B\u043E\u0439"?u="last":o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439"||o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E"||o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439"||o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E"?u="next":(o=="\u044D\u0442\u043E\u0442"||o=="\u044D\u0442\u0443"||o=="\u044D\u0442\u043E\u0439")&&(u="this");let l=HP.toDayJSWeekday(e.refDate,i,u);return e.createParsingComponents().assign("weekday",i).imply("day",l.date()).imply("month",l.month()+1).imply("year",l.year())}};Xc.default=Zc});var Bg=h($i=>{"use strict";var XP=$i&&$i.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty($i,"__esModule",{value:!0});var Yi=Ke(),jg=pe(),QP=XP(z()),JP=R(),eO=Q(),tO=new RegExp(`(\u0432 \u043F\u0440\u043E\u0448\u043B\u043E\u043C|\u043D\u0430 \u043F\u0440\u043E\u0448\u043B\u043E\u0439|\u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439|\u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C|\u043D\u0430 \u044D\u0442\u043E\u0439|\u0432 \u044D\u0442\u043E\u043C)\\s*(${eO.matchAnyPattern(Yi.TIME_UNIT_DICTIONARY)})(?=\\s*)${Yi.REGEX_PARTS.rightBoundary}`,Yi.REGEX_PARTS.flags),rO=1,nO=2,Qc=class extends JP.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return Yi.REGEX_PARTS.leftBoundary}innerPattern(){return tO}innerExtract(e,t){let n=t[rO].toLowerCase(),i=t[nO].toLowerCase(),s=Yi.TIME_UNIT_DICTIONARY[i];if(n=="\u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439"||n=="\u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C"){let u={};return u[s]=1,jg.ParsingComponents.createRelativeFromReference(e.reference,u)}if(n=="\u0432 \u043F\u0440\u043E\u0448\u043B\u043E\u043C"||n=="\u043D\u0430 \u043F\u0440\u043E\u0448\u043B\u043E\u0439"){let u={};return u[s]=-1,jg.ParsingComponents.createRelativeFromReference(e.reference,u)}let a=e.createParsingComponents(),o=QP.default(e.reference.instant);return s.match(/week/i)?(o=o.add(-o.get("d"),"d"),a.imply("day",o.date()),a.imply("month",o.month()+1),a.imply("year",o.year())):s.match(/month/i)?(o=o.add(-o.date()+1,"d"),a.imply("day",o.date()),a.assign("year",o.year()),a.assign("month",o.month()+1)):s.match(/year/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),a.imply("day",o.date()),a.imply("month",o.month()+1),a.assign("year",o.year())),a}};$i.default=Qc});var Gg=h(ed=>{"use strict";Object.defineProperty(ed,"__esModule",{value:!0});var ji=Ke(),iO=pe(),sO=R(),aO=st(),oO=new RegExp(`(\u044D\u0442\u0438|\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435|\u043F\u0440\u043E\u0448\u043B\u044B\u0435|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435|\u043F\u043E\u0441\u043B\u0435|\u0447\u0435\u0440\u0435\u0437|\\+|-)\\s*(${ji.TIME_UNITS_PATTERN})${ji.REGEX_PARTS.rightBoundary}`,ji.REGEX_PARTS.flags),Jc=class extends sO.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return ji.REGEX_PARTS.leftBoundary}innerPattern(){return oO}innerExtract(e,t){let n=t[1].toLowerCase(),i=ji.parseTimeUnits(t[2]);switch(n){case"\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435":case"\u043F\u0440\u043E\u0448\u043B\u044B\u0435":case"-":i=aO.reverseTimeUnits(i);break}return iO.ParsingComponents.createRelativeFromReference(e.reference,i)}};ed.default=Jc});var Kg=h(ke=>{"use strict";var et=ke&&ke.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ke,"__esModule",{value:!0});ke.createConfiguration=ke.createCasualConfiguration=ke.parseDate=ke.parse=ke.strict=ke.casual=void 0;var uO=et(Mg()),lO=et(Ng()),cO=et(Sg()),dO=et(Ug()),fO=et(Fg()),pO=et(qg()),hO=et(Wg()),mO=Ht(),yO=et(Lg()),gO=et(Yg()),_O=et($g()),TO=et(Bg()),Hg=gt(),bO=et(Wr()),vO=et(Gg());ke.casual=new Hg.Chrono(zg());ke.strict=new Hg.Chrono(td(!0));function EO(r,e,t){return ke.casual.parse(r,e,t)}ke.parse=EO;function RO(r,e,t){return ke.casual.parseDate(r,e,t)}ke.parseDate=RO;function zg(){let r=td(!1);return r.parsers.unshift(new yO.default),r.parsers.unshift(new gO.default),r.parsers.unshift(new cO.default),r.parsers.unshift(new TO.default),r.parsers.unshift(new vO.default),r}ke.createCasualConfiguration=zg;function td(r=!0){return mO.includeCommonConfiguration({parsers:[new bO.default(!0),new uO.default,new lO.default,new _O.default,new dO.default(r),new fO.default],refiners:[new hO.default,new pO.default]},r)}ke.createConfiguration=td});var Ee=h(W=>{"use strict";var wO=W&&W.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),DO=W&&W.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),Er=W&&W.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&wO(e,r,t);return DO(e,r),e};Object.defineProperty(W,"__esModule",{value:!0});W.parseDate=W.parse=W.casual=W.strict=W.ru=W.zh=W.nl=W.pt=W.ja=W.fr=W.de=W.Meridiem=W.Chrono=W.en=void 0;var rd=Er(Tu());W.en=rd;var MO=gt();Object.defineProperty(W,"Chrono",{enumerable:!0,get:function(){return MO.Chrono}});var PO;(function(r){r[r.AM=0]="AM",r[r.PM=1]="PM"})(PO=W.Meridiem||(W.Meridiem={}));var OO=Er(nm());W.de=OO;var AO=Er(Cm());W.fr=AO;var kO=Er(Ym());W.ja=kO;var NO=Er(ny());W.pt=NO;var CO=Er(Yy());W.nl=CO;var xO=Er(vg());W.zh=xO;var SO=Er(Kg());W.ru=SO;W.strict=rd.strict;W.casual=rd.casual;function IO(r,e,t){return W.casual.parse(r,e,t)}W.parse=IO;function UO(r,e,t){return W.casual.parseDate(r,e,t)}W.parseDate=UO});var It=h(Dr=>{"use strict";Dr.__esModule=!0;var BO;(function(r){r.AND="AND",r.OR="OR",r.XOR="XOR",r.NOT="NOT"})(BO=Dr.Operators||(Dr.Operators={}));var GO;(function(r){r.OPEN_PARENTHESIS="(",r.CLOSE_PARENTHESIS=")"})(GO=Dr.StructuralCharacters||(Dr.StructuralCharacters={}));var HO;(function(r){r.IDENTIFIER="IDENTIFIER",r.OPERATOR="OPERATOR",r.STRUCTURAL_CHARACTER="STRUCTURAL_CHARACTER",r.EOF="EOF",r.COMMENT="COMMENT"})(HO=Dr.Tokens||(Dr.Tokens={}))});var hd=h(Pa=>{"use strict";Pa.__esModule=!0;var he=It();Pa.OPERATOR_PRECEDENCE={NOT:0,XOR:1,AND:2,OR:3};Pa.VALID_TOKENS={identifierOnly:[{name:he.Tokens.IDENTIFIER},{name:he.Tokens.STRUCTURAL_CHARACTER,value:he.StructuralCharacters.OPEN_PARENTHESIS}],identifierOrNot:[{name:he.Tokens.IDENTIFIER},{name:he.Tokens.STRUCTURAL_CHARACTER,value:he.StructuralCharacters.OPEN_PARENTHESIS},{name:he.Tokens.OPERATOR,value:he.Operators.NOT}],binaryOperator:[{name:he.Tokens.OPERATOR,value:he.Operators.AND},{name:he.Tokens.OPERATOR,value:he.Operators.OR},{name:he.Tokens.OPERATOR,value:he.Operators.XOR}],binaryOperatorOrClose:[{name:he.Tokens.OPERATOR,value:he.Operators.AND},{name:he.Tokens.OPERATOR,value:he.Operators.OR},{name:he.Tokens.OPERATOR,value:he.Operators.XOR},{name:he.Tokens.STRUCTURAL_CHARACTER,value:he.StructuralCharacters.CLOSE_PARENTHESIS}]}});var md=h(rr=>{"use strict";rr.__esModule=!0;var wn=It();rr.STRUCTURAL_CHARACTERS={"(":wn.StructuralCharacters.OPEN_PARENTHESIS,")":wn.StructuralCharacters.CLOSE_PARENTHESIS};rr.OPERATORS={AND:wn.Operators.AND,OR:wn.Operators.OR,XOR:wn.Operators.XOR,NOT:wn.Operators.NOT};rr.SEPARATORS=new Set([32,9,10,13].map(function(r){return String.fromCodePoint(r)}));rr.QUOTED_IDENTIFIER_DELIMITER=String.fromCodePoint(34);rr.COMMENT_DELIMITER=String.fromCodePoint(35);rr.EOL=String.fromCodePoint(10);rr.ESCAPE_CHARACTER=String.fromCodePoint(92)});var s_=h(nr=>{"use strict";var yd=nr&&nr.__assign||function(){return yd=Object.assign||function(r){for(var e,t=1,n=arguments.length;t{"use strict";gd.__esModule=!0;var Dn=It(),tt=md(),Mn=s_();gd.lex=function(r){for(var e=null,t=null,n=null,i=0;i{"use strict";var zO=ir&&ir.__spreadArrays||function(){for(var r=0,e=0,t=arguments.length;e{"use strict";var On=Zi&&Zi.__spreadArrays||function(){for(var r=0,e=0,t=arguments.length;e{"use strict";sr.__esModule=!0;var c_=It();sr.andUtil=function(r,e){return r&&e};sr.orUtil=function(r,e){return r||e};sr.xorUtil=function(r,e){return r!==e};sr.notUtil=function(r){return!r};sr.isIdentifier=function(r){var e=r.name,t=r.value;return e===c_.Tokens.IDENTIFIER&&typeof t=="string"};sr.isOperator=function(r){var e=r.name,t=r.value;return e===c_.Tokens.OPERATOR&&typeof t=="string"};sr.throwInvalidExpression=function(r){throw new TypeError("Invalid postfix expression: "+r)}});var d_=h(Rd=>{"use strict";var Xi;Rd.__esModule=!0;var vd=It(),Ed=bd();Rd.OPERATOR_MAP=(Xi={},Xi[vd.Operators.AND]=Ed.andUtil,Xi[vd.Operators.OR]=Ed.orUtil,Xi[vd.Operators.XOR]=Ed.xorUtil,Xi)});var p_=h(Kr=>{"use strict";var wd=Kr&&Kr.__spreadArrays||function(){for(var r=0,e=0,t=arguments.length;e{"use strict";Qi.__esModule=!0;var h_=p_();Qi.getEvaluator=h_.getEvaluator;Qi.evaluate=h_.evaluate;var XO=Td();Qi.parse=XO.parse});var iA={};P_(iA,{default:()=>Ga});module.exports=O_(iA);var T_=require("obsidian");var gs=require("obsidian");var aA=new Error("timeout while waiting for mutex to become available"),oA=new Error("mutex already locked"),A_=new Error("request for lock canceled"),Xd=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function u(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,u)}l((n=n.apply(r,e||[])).next())})},Za=class{constructor(e,t=A_){if(this._maxConcurrency=e,this._cancelError=t,this._queue=[],this._waiters=[],e<=0)throw new Error("semaphore must be initialized to a positive value");this._value=e}acquire(){let e=this.isLocked(),t=new Promise((n,i)=>this._queue.push({resolve:n,reject:i}));return e||this._dispatch(),t}runExclusive(e){return Xd(this,void 0,void 0,function*(){let[t,n]=yield this.acquire();try{return yield e(t)}finally{n()}})}waitForUnlock(){return Xd(this,void 0,void 0,function*(){return this.isLocked()?new Promise(t=>this._waiters.push({resolve:t})):Promise.resolve()})}isLocked(){return this._value<=0}release(){if(this._maxConcurrency>1)throw new Error("this method is unavailable on semaphores with concurrency > 1; use the scoped release returned by acquire instead");if(this._currentReleaser){let e=this._currentReleaser;this._currentReleaser=void 0,e()}}cancel(){this._queue.forEach(e=>e.reject(this._cancelError)),this._queue=[]}_dispatch(){let e=this._queue.shift();if(!e)return;let t=!1;this._currentReleaser=()=>{t||(t=!0,this._value++,this._resolveWaiters(),this._dispatch())},e.resolve([this._value--,this._currentReleaser])}_resolveWaiters(){this._waiters.forEach(e=>e.resolve()),this._waiters=[]}},k_=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function u(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,u)}l((n=n.apply(r,e||[])).next())})},us=class{constructor(e){this._semaphore=new Za(1,e)}acquire(){return k_(this,void 0,void 0,function*(){let[,e]=yield this._semaphore.acquire();return e})}runExclusive(e){return this._semaphore.runExclusive(()=>e())}isLocked(){return this._semaphore.isLocked()}waitForUnlock(){return this._semaphore.waitForUnlock()}release(){this._semaphore.release()}cancel(){return this._semaphore.cancel()}};var ap=require("obsidian");var Jd=require("obsidian");var Qd=[{index:9999,internalName:"INTERNAL_TESTING_ENABLED_BY_DEFAULT",displayName:"Test Item. Used to validate the Feature Framework.",description:"Description",enabledByDefault:!0,stable:!1}];var Rt=class{constructor(e,t,n,i,s,a){this.internalName=e;this.index=t;this.description=n;this.displayName=i;this.enabledByDefault=s;this.stable=a}static get values(){let e=[];return Qd.forEach(t=>{e=[...e,new Rt(t.internalName,t.index,t.description,t.displayName,t.enabledByDefault,t.stable)]}),e}static get settingsFlags(){let e={};return Rt.values.forEach(t=>{e[t.internalName]=t.enabledByDefault}),e}static fromString(e){for(let t of Rt.values)if(e===t.internalName)return t;throw new RangeError(`Illegal argument passed to fromString(): ${e} does not correspond to any available Feature ${this.prototype.constructor.name}`)}};var C_={globalFilter:"",removeGlobalFilter:!1,setDoneDate:!0,autoSuggestInEditor:!0,autoSuggestMinMatch:0,autoSuggestMaxItems:6,features:Rt.settingsFlags},xn=$e({},C_),ie=()=>{for(let r in Rt.settingsFlags)xn.features[r]===void 0&&(xn.features[r]=Rt.settingsFlags[r]);return $e({},xn)},Wt=r=>(xn=$e($e({},xn),r),ie());var Xa,Qa,ef=({metadataCache:r,vault:e})=>{Xa=r,Qa=e},ls=t=>ne(void 0,[t],function*({originalTask:r,newTasks:e}){if(Qa===void 0||Xa===void 0){console.error("Tasks: cannot use File before initializing it.");return}Array.isArray(e)||(e=[e]),tf({originalTask:r,newTasks:e,vault:Qa,metadataCache:Xa,previousTries:0})}),tf=s=>ne(void 0,[s],function*({originalTask:r,newTasks:e,vault:t,metadataCache:n,previousTries:i}){let a=()=>{if(i>10){console.error("Tasks: Too many retries. File update not possible ...");return}let g=Math.min(Math.pow(10,i),100);setTimeout(()=>{tf({originalTask:r,newTasks:e,vault:t,metadataCache:n,previousTries:i+1})},g)},o=t.getAbstractFileByPath(r.path);if(!(o instanceof Jd.TFile))return console.warn(`Tasks: No file found for task ${r.description}. Retrying ...`),a();if(o.extension!=="md"){console.error("Tasks: Only supporting files with the .md file extension.");return}let u=n.getFileCache(o);if(u==null||u===null)return console.warn(`Tasks: No file cache found for file ${o.path}. Retrying ...`),a();let l=u.listItems;if(l===void 0||l.length===0)return console.warn(`Tasks: No list items found in file cache of ${o.path}. Retrying ...`),a();let d=(yield t.read(o)).split(` -`),{globalFilter:f}=ie(),p,y=0;for(let g of l){if(g.position.start.lineg.toFileLineString()),...d.slice(p.position.start.line+1)];yield t.modify(o,m.join(` -`))});var Xr=class{constructor(){this.hideTaskCount=!1;this.hideBacklinks=!1;this.hidePriority=!1;this.hideStartDate=!1;this.hideScheduledDate=!1;this.hideDoneDate=!1;this.hideDueDate=!1;this.hideRecurrenceRule=!1;this.hideEditButton=!1;this.hideUrgency=!0;this.shortMode=!1}};var cs=["MO","TU","WE","TH","FR","SA","SU"],ge=function(){function r(e,t){if(t===0)throw new Error("Can't create weekday with n == 0");this.weekday=e,this.n=t}return r.fromStr=function(e){return new r(cs.indexOf(e))},r.prototype.nth=function(e){return this.n===e?this:new r(this.weekday,e)},r.prototype.equals=function(e){return this.weekday===e.weekday&&this.n===e.n},r.prototype.toString=function(){var e=cs[this.weekday];return this.n&&(e=(this.n>0?"+":"")+String(this.n)+e),e},r.prototype.getJsWeekday=function(){return this.weekday===6?0:this.weekday+1},r}();var ae=function(r){return r!=null},Ve=function(r){return typeof r=="number"},Ja=function(r){return typeof r=="string"&&cs.includes(r)},xe=Array.isArray,rt=function(r,e){e===void 0&&(e=r),arguments.length===1&&(e=r,r=0);for(var t=[],n=r;n>0,n.length>e?String(n):(e=e-n.length,e>t.length&&(t+=j(t,e/t.length)),t.slice(0,e)+String(n))}var nf=function(r,e,t){var n=r.split(e);return t?n.slice(0,t).concat([n.slice(t).join(e)]):n},Fe=function(r,e){var t=r%e;return t*e<0?t+e:t},ds=function(r,e){return{div:Math.floor(r/e),mod:Fe(r,e)}},Ze=function(r){return!ae(r)||r.length===0},me=function(r){return!Ze(r)},B=function(r,e){return me(r)&&r.indexOf(e)!==-1};var dr;(function(r){r.MONTH_DAYS=[31,28,31,30,31,30,31,31,30,31,30,31],r.ONE_DAY=1e3*60*60*24,r.MAXYEAR=9999,r.ORDINAL_BASE=new Date(Date.UTC(1970,0,1)),r.PY_WEEKDAYS=[6,0,1,2,3,4,5],r.getYearDay=function(e){var t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate());return Math.ceil((t.valueOf()-new Date(e.getUTCFullYear(),0,1).valueOf())/r.ONE_DAY)+1},r.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},r.isDate=function(e){return e instanceof Date},r.isValidDate=function(e){return r.isDate(e)&&!isNaN(e.getTime())},r.tzOffset=function(e){return e.getTimezoneOffset()*60*1e3},r.daysBetween=function(e,t){var n=e.getTime()-r.tzOffset(e),i=t.getTime()-r.tzOffset(t),s=n-i;return Math.round(s/r.ONE_DAY)},r.toOrdinal=function(e){return r.daysBetween(e,r.ORDINAL_BASE)},r.fromOrdinal=function(e){return new Date(r.ORDINAL_BASE.getTime()+e*r.ONE_DAY)},r.getMonthDays=function(e){var t=e.getUTCMonth();return t===1&&r.isLeapYear(e.getUTCFullYear())?29:r.MONTH_DAYS[t]},r.getWeekday=function(e){return r.PY_WEEKDAYS[e.getUTCDay()]},r.monthRange=function(e,t){var n=new Date(Date.UTC(e,t,1));return[r.getWeekday(n),r.getMonthDays(n)]},r.combine=function(e,t){return t=t||e,new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()))},r.clone=function(e){var t=new Date(e.getTime());return t},r.cloneDates=function(e){for(var t=[],n=0;nthis.maxDate;if(this.method==="between"){if(t)return!0;if(n)return!1}else if(this.method==="before"){if(n)return!1}else if(this.method==="after")return t?!0:(this.add(e),!1);return this.add(e)},r.prototype.add=function(e){return this._result.push(e),!0},r.prototype.getValue=function(){var e=this._result;switch(this.method){case"all":case"between":return e;case"before":case"after":default:return e.length?e[e.length-1]:null}},r.prototype.clone=function(){return new r(this.method,this.args)},r}(),Lt=x_;var Pf=os(Mf(),1),{__extends:Jr,__assign:je,__rest:MA,__decorate:PA,__param:OA,__metadata:AA,__awaiter:kA,__generator:NA,__exportStar:CA,__createBinding:xA,__values:SA,__read:IA,__spread:UA,__spreadArrays:FA,__spreadArray:T,__await:qA,__asyncGenerator:WA,__asyncDelegator:LA,__asyncValues:YA,__makeTemplateObject:$A,__importStar:jA,__importDefault:BA,__classPrivateFieldGet:GA,__classPrivateFieldSet:HA,__classPrivateFieldIn:zA}=Pf.default;var S_=function(r){Jr(e,r);function e(t,n,i){var s=r.call(this,t,n)||this;return s.iterator=i,s}return e.prototype.add=function(t){return this.iterator(t,this._result.length)?(this._result.push(t),!0):!1},e}(Lt),to=S_;var I_={dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],tokens:{SKIP:/^[ \r\n\t]+|^\.$/,number:/^[1-9][0-9]*/,numberAsText:/^(one|two|three)/i,every:/^every/i,"day(s)":/^days?/i,"weekday(s)":/^weekdays?/i,"week(s)":/^weeks?/i,"hour(s)":/^hours?/i,"minute(s)":/^minutes?/i,"month(s)":/^months?/i,"year(s)":/^years?/i,on:/^(on|in)/i,at:/^(at)/i,the:/^the/i,first:/^first/i,second:/^second/i,third:/^third/i,nth:/^([1-9][0-9]*)(\.|th|nd|rd|st)/i,last:/^last/i,for:/^for/i,"time(s)":/^times?/i,until:/^(un)?til/i,monday:/^mo(n(day)?)?/i,tuesday:/^tu(e(s(day)?)?)?/i,wednesday:/^we(d(n(esday)?)?)?/i,thursday:/^th(u(r(sday)?)?)?/i,friday:/^fr(i(day)?)?/i,saturday:/^sa(t(urday)?)?/i,sunday:/^su(n(day)?)?/i,january:/^jan(uary)?/i,february:/^feb(ruary)?/i,march:/^mar(ch)?/i,april:/^apr(il)?/i,may:/^may/i,june:/^june?/i,july:/^july?/i,august:/^aug(ust)?/i,september:/^sep(t(ember)?)?/i,october:/^oct(ober)?/i,november:/^nov(ember)?/i,december:/^dec(ember)?/i,comma:/^(,\s*|(and|or)\s*)+/i}},kr=I_;var Of=function(r,e){return r.indexOf(e)!==-1},U_=function(r){return r.toString()},F_=function(r,e,t){return"".concat(e," ").concat(t,", ").concat(r)},q_=function(){function r(e,t,n,i){if(t===void 0&&(t=U_),n===void 0&&(n=kr),i===void 0&&(i=F_),this.text=[],this.language=n||kr,this.gettext=t,this.dateFormatter=i,this.rrule=e,this.options=e.options,this.origOptions=e.origOptions,this.origOptions.bymonthday){var s=[].concat(this.options.bymonthday),a=[].concat(this.options.bynmonthday);s.sort(function(c,d){return c-d}),a.sort(function(c,d){return d-c}),this.bymonthday=s.concat(a),this.bymonthday.length||(this.bymonthday=null)}if(ae(this.origOptions.byweekday)){var o=xe(this.origOptions.byweekday)?this.origOptions.byweekday:[this.origOptions.byweekday],u=String(o);this.byweekday={allWeeks:o.filter(function(c){return!c.n}),someWeeks:o.filter(function(c){return Boolean(c.n)}),isWeekdays:u.indexOf("MO")!==-1&&u.indexOf("TU")!==-1&&u.indexOf("WE")!==-1&&u.indexOf("TH")!==-1&&u.indexOf("FR")!==-1&&u.indexOf("SA")===-1&&u.indexOf("SU")===-1,isEveryDay:u.indexOf("MO")!==-1&&u.indexOf("TU")!==-1&&u.indexOf("WE")!==-1&&u.indexOf("TH")!==-1&&u.indexOf("FR")!==-1&&u.indexOf("SA")!==-1&&u.indexOf("SU")!==-1};var l=function(c,d){return c.weekday-d.weekday};this.byweekday.allWeeks.sort(l),this.byweekday.someWeeks.sort(l),this.byweekday.allWeeks.length||(this.byweekday.allWeeks=null),this.byweekday.someWeeks.length||(this.byweekday.someWeeks=null)}else this.byweekday=null}return r.isFullyConvertible=function(e){var t=!0;if(!(e.options.freq in r.IMPLEMENTED)||e.origOptions.until&&e.origOptions.count)return!1;for(var n in e.origOptions){if(Of(["dtstart","wkst","freq"],n))return!0;if(!Of(r.IMPLEMENTED[e.options.freq],n))return!1}return t},r.prototype.isFullyConvertible=function(){return r.isFullyConvertible(this.rrule)},r.prototype.toString=function(){var e=this.gettext;if(!(this.options.freq in r.IMPLEMENTED))return e("RRule error: Unable to fully convert this rrule to text");if(this.text=[e("every")],this[D.FREQUENCIES[this.options.freq]](),this.options.until){this.add(e("until"));var t=this.options.until;this.add(this.dateFormatter(t.getUTCFullYear(),this.language.monthNames[t.getUTCMonth()],t.getUTCDate()))}else this.options.count&&this.add(e("for")).add(this.options.count.toString()).add(this.plural(this.options.count)?e("times"):e("time"));return this.isFullyConvertible()||this.add(e("(~ approximate)")),this.text.join("")},r.prototype.HOURLY=function(){var e=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?e("hours"):e("hour"))},r.prototype.MINUTELY=function(){var e=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?e("minutes"):e("minute"))},r.prototype.DAILY=function(){var e=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.byweekday&&this.byweekday.isWeekdays?this.add(this.plural(this.options.interval)?e("weekdays"):e("weekday")):this.add(this.plural(this.options.interval)?e("days"):e("day")),this.origOptions.bymonth&&(this.add(e("in")),this._bymonth()),this.bymonthday?this._bymonthday():this.byweekday?this._byweekday():this.origOptions.byhour&&this._byhour()},r.prototype.WEEKLY=function(){var e=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()).add(this.plural(this.options.interval)?e("weeks"):e("week")),this.byweekday&&this.byweekday.isWeekdays?this.options.interval===1?this.add(this.plural(this.options.interval)?e("weekdays"):e("weekday")):this.add(e("on")).add(e("weekdays")):this.byweekday&&this.byweekday.isEveryDay?this.add(this.plural(this.options.interval)?e("days"):e("day")):(this.options.interval===1&&this.add(e("week")),this.origOptions.bymonth&&(this.add(e("in")),this._bymonth()),this.bymonthday?this._bymonthday():this.byweekday&&this._byweekday())},r.prototype.MONTHLY=function(){var e=this.gettext;this.origOptions.bymonth?(this.options.interval!==1&&(this.add(this.options.interval.toString()).add(e("months")),this.plural(this.options.interval)&&this.add(e("in"))),this._bymonth()):(this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?e("months"):e("month"))),this.bymonthday?this._bymonthday():this.byweekday&&this.byweekday.isWeekdays?this.add(e("on")).add(e("weekdays")):this.byweekday&&this._byweekday()},r.prototype.YEARLY=function(){var e=this.gettext;this.origOptions.bymonth?(this.options.interval!==1&&(this.add(this.options.interval.toString()),this.add(e("years"))),this._bymonth()):(this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?e("years"):e("year"))),this.bymonthday?this._bymonthday():this.byweekday&&this._byweekday(),this.options.byyearday&&this.add(e("on the")).add(this.list(this.options.byyearday,this.nth,e("and"))).add(e("day")),this.options.byweekno&&this.add(e("in")).add(this.plural(this.options.byweekno.length)?e("weeks"):e("week")).add(this.list(this.options.byweekno,void 0,e("and")))},r.prototype._bymonthday=function(){var e=this.gettext;this.byweekday&&this.byweekday.allWeeks?this.add(e("on")).add(this.list(this.byweekday.allWeeks,this.weekdaytext,e("or"))).add(e("the")).add(this.list(this.bymonthday,this.nth,e("or"))):this.add(e("on the")).add(this.list(this.bymonthday,this.nth,e("and")))},r.prototype._byweekday=function(){var e=this.gettext;this.byweekday.allWeeks&&!this.byweekday.isWeekdays&&this.add(e("on")).add(this.list(this.byweekday.allWeeks,this.weekdaytext)),this.byweekday.someWeeks&&(this.byweekday.allWeeks&&this.add(e("and")),this.add(e("on the")).add(this.list(this.byweekday.someWeeks,this.weekdaytext,e("and"))))},r.prototype._byhour=function(){var e=this.gettext;this.add(e("at")).add(this.list(this.origOptions.byhour,void 0,e("and")))},r.prototype._bymonth=function(){this.add(this.list(this.options.bymonth,this.monthtext,this.gettext("and")))},r.prototype.nth=function(e){e=parseInt(e.toString(),10);var t,n=this.gettext;if(e===-1)return n("last");var i=Math.abs(e);switch(i){case 1:case 21:case 31:t=i+n("st");break;case 2:case 22:t=i+n("nd");break;case 3:case 23:t=i+n("rd");break;default:t=i+n("th")}return e<0?t+" "+n("last"):t},r.prototype.monthtext=function(e){return this.language.monthNames[e-1]},r.prototype.weekdaytext=function(e){var t=Ve(e)?(e+1)%7:e.getJsWeekday();return(e.n?this.nth(e.n)+" ":"")+this.language.dayNames[t]},r.prototype.plural=function(e){return e%100!==1},r.prototype.add=function(e){return this.text.push(" "),this.text.push(e),this},r.prototype.list=function(e,t,n,i){var s=this;i===void 0&&(i=","),xe(e)||(e=[e]);var a=function(u,l,c){for(var d="",f=0;fe[0].length)&&(e=s,t=i)}if(e!=null&&(this.text=this.text.substr(e[0].length),this.text===""&&(this.done=!0)),e==null){this.done=!0,this.symbol=null,this.value=null;return}}while(t==="SKIP");return this.symbol=t,this.value=e,!0},r.prototype.accept=function(e){if(this.symbol===e){if(this.value){var t=this.value;return this.nextSymbol(),t}return this.nextSymbol(),!0}return!1},r.prototype.acceptNumber=function(){return this.accept("number")},r.prototype.expect=function(e){if(this.accept(e))return!0;throw new Error("expected "+e+" but found "+this.symbol)},r}();function Sn(r,e){e===void 0&&(e=kr);var t={},n=new W_(e.tokens);if(!n.start(r))return null;return i(),t;function i(){n.expect("every");var f=n.acceptNumber();if(f&&(t.interval=parseInt(f[0],10)),n.isDone())throw new Error("Unexpected end");switch(n.symbol){case"day(s)":t.freq=D.DAILY,n.nextSymbol()&&(a(),d());break;case"weekday(s)":t.freq=D.WEEKLY,t.byweekday=[D.MO,D.TU,D.WE,D.TH,D.FR],n.nextSymbol(),d();break;case"week(s)":t.freq=D.WEEKLY,n.nextSymbol()&&(s(),d());break;case"hour(s)":t.freq=D.HOURLY,n.nextSymbol()&&(s(),d());break;case"minute(s)":t.freq=D.MINUTELY,n.nextSymbol()&&(s(),d());break;case"month(s)":t.freq=D.MONTHLY,n.nextSymbol()&&(s(),d());break;case"year(s)":t.freq=D.YEARLY,n.nextSymbol()&&(s(),d());break;case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":t.freq=D.WEEKLY;var p=n.symbol.substr(0,2).toUpperCase();if(t.byweekday=[D[p]],!n.nextSymbol())return;for(;n.accept("comma");){if(n.isDone())throw new Error("Unexpected end");var y=u();if(!y)throw new Error("Unexpected symbol "+n.symbol+", expected weekday");t.byweekday.push(D[y]),n.nextSymbol()}c(),d();break;case"january":case"february":case"march":case"april":case"may":case"june":case"july":case"august":case"september":case"october":case"november":case"december":if(t.freq=D.YEARLY,t.bymonth=[o()],!n.nextSymbol())return;for(;n.accept("comma");){if(n.isDone())throw new Error("Unexpected end");var m=o();if(!m)throw new Error("Unexpected symbol "+n.symbol+", expected month");t.bymonth.push(m),n.nextSymbol()}s(),d();break;default:throw new Error("Unknown symbol")}}function s(){var f=n.accept("on"),p=n.accept("the");if(!!(f||p))do{var y=l(),m=u(),g=o();if(y)m?(n.nextSymbol(),t.byweekday||(t.byweekday=[]),t.byweekday.push(D[m].nth(y))):(t.bymonthday||(t.bymonthday=[]),t.bymonthday.push(y),n.accept("day(s)"));else if(m)n.nextSymbol(),t.byweekday||(t.byweekday=[]),t.byweekday.push(D[m]);else if(n.symbol==="weekday(s)")n.nextSymbol(),t.byweekday||(t.byweekday=[D.MO,D.TU,D.WE,D.TH,D.FR]);else if(n.symbol==="week(s)"){n.nextSymbol();var k=n.acceptNumber();if(!k)throw new Error("Unexpected symbol "+n.symbol+", expected week number");for(t.byweekno=[parseInt(k[0],10)];n.accept("comma");){if(k=n.acceptNumber(),!k)throw new Error("Unexpected symbol "+n.symbol+"; expected monthday");t.byweekno.push(parseInt(k[0],10))}}else if(g)n.nextSymbol(),t.bymonth||(t.bymonth=[]),t.bymonth.push(g);else return}while(n.accept("comma")||n.accept("the")||n.accept("on"))}function a(){var f=n.accept("at");if(!!f)do{var p=n.acceptNumber();if(!p)throw new Error("Unexpected symbol "+n.symbol+", expected hour");for(t.byhour=[parseInt(p[0],10)];n.accept("comma");){if(p=n.acceptNumber(),!p)throw new Error("Unexpected symbol "+n.symbol+"; expected hour");t.byhour.push(parseInt(p[0],10))}}while(n.accept("comma")||n.accept("at"))}function o(){switch(n.symbol){case"january":return 1;case"february":return 2;case"march":return 3;case"april":return 4;case"may":return 5;case"june":return 6;case"july":return 7;case"august":return 8;case"september":return 9;case"october":return 10;case"november":return 11;case"december":return 12;default:return!1}}function u(){switch(n.symbol){case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":return n.symbol.substr(0,2).toUpperCase();default:return!1}}function l(){switch(n.symbol){case"last":return n.nextSymbol(),-1;case"first":return n.nextSymbol(),1;case"second":return n.nextSymbol(),n.accept("last")?-2:2;case"third":return n.nextSymbol(),n.accept("last")?-3:3;case"nth":var f=parseInt(n.value[1],10);if(f<-366||f>366)throw new Error("Nth out of range: "+f);return n.nextSymbol(),n.accept("last")?-f:f;default:return!1}}function c(){n.accept("on"),n.accept("the");var f=l();if(!!f)for(t.bymonthday=[f],n.nextSymbol();n.accept("comma");){if(f=l(),!f)throw new Error("Unexpected symbol "+n.symbol+"; expected monthday");t.bymonthday.push(f),n.nextSymbol()}}function d(){if(n.symbol==="until"){var f=Date.parse(n.text);if(!f)throw new Error("Cannot parse until date:"+n.text);t.until=new Date(f)}else n.accept("for")&&(t.count=parseInt(n.value[0],10),n.expect("number"))}}var L;(function(r){r[r.YEARLY=0]="YEARLY",r[r.MONTHLY=1]="MONTHLY",r[r.WEEKLY=2]="WEEKLY",r[r.DAILY=3]="DAILY",r[r.HOURLY=4]="HOURLY",r[r.MINUTELY=5]="MINUTELY",r[r.SECONDLY=6]="SECONDLY"})(L||(L={}));function In(r){return r12){var n=Math.floor(this.month/12),i=Fe(this.month,12);this.month=i,this.year+=n,this.month===0&&(this.month=12,--this.year)}},e.prototype.addWeekly=function(t,n){n>this.getWeekday()?this.day+=-(this.getWeekday()+1+(6-n))+t*7:this.day+=-(this.getWeekday()-n)+t*7,this.fixDay()},e.prototype.addDaily=function(t){this.day+=t,this.fixDay()},e.prototype.addHours=function(t,n,i){for(n&&(this.hour+=Math.floor((23-this.hour)/t)*t);;){this.hour+=t;var s=ds(this.hour,24),a=s.div,o=s.mod;if(a&&(this.hour=o,this.addDaily(a)),Ze(i)||B(i,this.hour))break}},e.prototype.addMinutes=function(t,n,i,s){for(n&&(this.minute+=Math.floor((1439-(this.hour*60+this.minute))/t)*t);;){this.minute+=t;var a=ds(this.minute,60),o=a.div,u=a.mod;if(o&&(this.minute=u,this.addHours(o,!1,i)),(Ze(i)||B(i,this.hour))&&(Ze(s)||B(s,this.minute)))break}},e.prototype.addSeconds=function(t,n,i,s,a){for(n&&(this.second+=Math.floor((86399-(this.hour*3600+this.minute*60+this.second))/t)*t);;){this.second+=t;var o=ds(this.second,60),u=o.div,l=o.mod;if(u&&(this.second=l,this.addMinutes(u,!1,i,s)),(Ze(i)||B(i,this.hour))&&(Ze(s)||B(s,this.minute))&&(Ze(a)||B(a,this.second)))break}},e.prototype.fixDay=function(){if(!(this.day<=28)){var t=dr.monthRange(this.year,this.month-1)[1];if(!(this.day<=t))for(;this.day>t;){if(this.day-=t,++this.month,this.month===13&&(this.month=1,++this.year,this.year>dr.MAXYEAR))return;t=dr.monthRange(this.year,this.month-1)[1]}}},e.prototype.add=function(t,n){var i=t.freq,s=t.interval,a=t.wkst,o=t.byhour,u=t.byminute,l=t.bysecond;switch(i){case L.YEARLY:return this.addYears(s);case L.MONTHLY:return this.addMonths(s);case L.WEEKLY:return this.addWeekly(s,a);case L.DAILY:return this.addDaily(s);case L.HOURLY:return this.addHours(s,n,o);case L.MINUTELY:return this.addMinutes(s,n,o,u);case L.SECONDLY:return this.addSeconds(s,n,o,u,l)}},e}(tn);function ro(r){for(var e=[],t=Object.keys(r),n=0,i=t;n=-366&&n<=366))throw new Error("bysetpos must be between 1 and 366, or between -366 and -1")}}if(!(Boolean(e.byweekno)||me(e.byweekno)||me(e.byyearday)||Boolean(e.bymonthday)||me(e.bymonthday)||ae(e.byweekday)||ae(e.byeaster)))switch(e.freq){case D.YEARLY:e.bymonth||(e.bymonth=e.dtstart.getUTCMonth()+1),e.bymonthday=e.dtstart.getUTCDate();break;case D.MONTHLY:e.bymonthday=e.dtstart.getUTCDate();break;case D.WEEKLY:e.byweekday=[N.getWeekday(e.dtstart)];break}if(ae(e.bymonth)&&!xe(e.bymonth)&&(e.bymonth=[e.bymonth]),ae(e.byyearday)&&!xe(e.byyearday)&&Ve(e.byyearday)&&(e.byyearday=[e.byyearday]),!ae(e.bymonthday))e.bymonthday=[],e.bynmonthday=[];else if(xe(e.bymonthday)){for(var i=[],s=[],t=0;t0?i.push(n):n<0&&s.push(n)}e.bymonthday=i,e.bynmonthday=s}else e.bymonthday<0?(e.bynmonthday=[e.bymonthday],e.bymonthday=[]):(e.bynmonthday=[],e.bymonthday=[e.bymonthday]);if(ae(e.byweekno)&&!xe(e.byweekno)&&(e.byweekno=[e.byweekno]),!ae(e.byweekday))e.bynweekday=null;else if(Ve(e.byweekday))e.byweekday=[e.byweekday],e.bynweekday=null;else if(Ja(e.byweekday))e.byweekday=[ge.fromStr(e.byweekday).weekday],e.bynweekday=null;else if(e.byweekday instanceof ge)!e.byweekday.n||e.freq>D.MONTHLY?(e.byweekday=[e.byweekday.weekday],e.bynweekday=null):(e.bynweekday=[[e.byweekday.weekday,e.byweekday.n]],e.byweekday=null);else{for(var a=[],o=[],t=0;tD.MONTHLY?a.push(u.weekday):o.push([u.weekday,u.n])}e.byweekday=me(a)?a:null,e.bynweekday=me(o)?o:null}return ae(e.byhour)?Ve(e.byhour)&&(e.byhour=[e.byhour]):e.byhour=e.freq=4?(c=0,l=o.yearlen+Fe(a-e.wkst,7)):l=n-c;for(var d=Math.floor(l/7),f=Fe(l,7),p=Math.floor(d+f/4),y=0;y0&&m<=p){var g=void 0;m>1?(g=c+(m-1)*7,c!==u&&(g-=7-u)):g=c;for(var k=0;k<7&&(o.wnomask[g]=1,g++,o.wdaymask[g]!==e.wkst);k++);}}if(B(e.byweekno,1)){var g=c+p*7;if(c!==u&&(g-=7-u),g=4?(H=0,de=re+Fe(C-e.wkst,7)):de=n-c,x=Math.floor(52+Fe(de,7)/4)}if(B(e.byweekno,x))for(var g=0;gs)return Yt(r);if(x>=t){var C=Qf(x,e);if(!r.accept(C)||o&&(--o,!o))return Yt(r)}}else for(var k=p;ks)return Yt(r);if(x>=t){var C=Qf(x,e);if(!r.accept(C)||o&&(--o,!o))return Yt(r)}}}if(e.interval===0||(u.add(e,m),u.year>N.MAXYEAR))return Yt(r);In(n)||(c=l.gettimeset(n)(u.hour,u.minute,u.second,0)),l.rebuild(u.year,u.month)}}function X_(r,e,t){var n=t.bymonth,i=t.byweekno,s=t.byweekday,a=t.byeaster,o=t.bymonthday,u=t.bynmonthday,l=t.byyearday;return me(n)&&!B(n,r.mmask[e])||me(i)&&!r.wnomask[e]||me(s)&&!B(s,r.wdaymask[e])||me(r.nwdaymask)&&!r.nwdaymask[e]||a!==null&&!B(r.eastermask,e)||(me(o)||me(u))&&!B(o,r.mdaymask[e])&&!B(u,r.nmdaymask[e])||me(l)&&(e=r.yearlen&&!B(l,e+1-r.yearlen)&&!B(l,-r.nextyearlen+e-r.yearlen))}function Qf(r,e){return new Nr(r,e.tzid).rezonedDate()}function Yt(r){return r.getValue()}function Q_(r,e,t,n,i){for(var s=!1,a=e;a=D.HOURLY&&me(i)&&!B(i,e.hour)||n>=D.MINUTELY&&me(s)&&!B(s,e.minute)||n>=D.SECONDLY&&me(a)&&!B(a,e.second)?[]:r.gettimeset(n)(e.hour,e.minute,e.second,e.millisecond)}var nt={MO:new ge(0),TU:new ge(1),WE:new ge(2),TH:new ge(3),FR:new ge(4),SA:new ge(5),SU:new ge(6)},Un={freq:L.YEARLY,dtstart:null,interval:1,wkst:nt.MO,count:null,until:null,tzid:null,bysetpos:null,bymonth:null,bymonthday:null,bynmonthday:null,byyearday:null,byweekno:null,byweekday:null,bynweekday:null,byhour:null,byminute:null,bysecond:null,byeaster:null},If=Object.keys(Un),D=function(){function r(e,t){e===void 0&&(e={}),t===void 0&&(t=!1),this._cache=t?null:new qf,this.origOptions=ro(e);var n=xf(e).parsedOptions;this.options=n}return r.parseText=function(e,t){return Sn(e,t)},r.fromText=function(e,t){return Af(e,t)},r.fromString=function(e){return new r(r.parseString(e)||void 0)},r.prototype._iter=function(e){return ms(e,this.options)},r.prototype._cacheGet=function(e,t){return this._cache?this._cache._cacheGet(e,t):!1},r.prototype._cacheAdd=function(e,t,n){if(!!this._cache)return this._cache._cacheAdd(e,t,n)},r.prototype.all=function(e){if(e)return this._iter(new to("all",{},e));var t=this._cacheGet("all");return t===!1&&(t=this._iter(new Lt("all",{})),this._cacheAdd("all",t)),t},r.prototype.between=function(e,t,n,i){if(n===void 0&&(n=!1),!N.isValidDate(e)||!N.isValidDate(t))throw new Error("Invalid date passed in to RRule.between");var s={before:t,after:e,inc:n};if(i)return this._iter(new to("between",s,i));var a=this._cacheGet("between",s);return a===!1&&(a=this._iter(new Lt("between",s)),this._cacheAdd("between",a,s)),a},r.prototype.before=function(e,t){if(t===void 0&&(t=!1),!N.isValidDate(e))throw new Error("Invalid date passed in to RRule.before");var n={dt:e,inc:t},i=this._cacheGet("before",n);return i===!1&&(i=this._iter(new Lt("before",n)),this._cacheAdd("before",i,n)),i},r.prototype.after=function(e,t){if(t===void 0&&(t=!1),!N.isValidDate(e))throw new Error("Invalid date passed in to RRule.after");var n={dt:e,inc:t},i=this._cacheGet("after",n);return i===!1&&(i=this._iter(new Lt("after",n)),this._cacheAdd("after",i,n)),i},r.prototype.count=function(){return this.all().length},r.prototype.toString=function(){return Wn(this.origOptions)},r.prototype.toText=function(e,t,n){return kf(this,e,t,n)},r.prototype.isFullyConvertibleToText=function(){return Nf(this)},r.prototype.clone=function(){return new r(this.origOptions)},r.FREQUENCIES=["YEARLY","MONTHLY","WEEKLY","DAILY","HOURLY","MINUTELY","SECONDLY"],r.YEARLY=L.YEARLY,r.MONTHLY=L.MONTHLY,r.WEEKLY=L.WEEKLY,r.DAILY=L.DAILY,r.HOURLY=L.HOURLY,r.MINUTELY=L.MINUTELY,r.SECONDLY=L.SECONDLY,r.MO=nt.MO,r.TU=nt.TU,r.WE=nt.WE,r.TH=nt.TH,r.FR=nt.FR,r.SA=nt.SA,r.SU=nt.SU,r.parseString=qn,r.optionsToString=Wn,r}();function Jf(r,e,t,n,i,s){var a={},o=r.accept;function u(f,p){t.forEach(function(y){y.between(f,p,!0).forEach(function(m){a[Number(m)]=!0})})}i.forEach(function(f){var p=new Nr(f,s).rezonedDate();a[Number(p)]=!0}),r.accept=function(f){var p=Number(f);return isNaN(p)?o.call(this,f):!a[p]&&(u(new Date(p-1),new Date(p+1)),!a[p])?(a[p]=!0,o.call(this,f)):!0},r.method==="between"&&(u(r.args.after,r.args.before),r.accept=function(f){var p=Number(f);return a[p]?!0:(a[p]=!0,o.call(this,f))});for(var l=0;l1||i.length||s.length||a.length){var c=new so(l);return c.dtstart(o),c.tzid(u||void 0),n.forEach(function(f){c.rrule(new D(io(f,o,u),l))}),i.forEach(function(f){c.rdate(f)}),s.forEach(function(f){c.exrule(new D(io(f,o,u),l))}),a.forEach(function(f){c.exdate(f)}),e.compatible&&e.dtstart&&c.rdate(o),c}var d=n[0]||{};return new D(io(d,d.dtstart||e.dtstart||o,d.tzid||e.tzid||u),l)}function ys(r,e){return e===void 0&&(e={}),tT(r,rT(e))}function io(r,e,t){return je(je({},r),{dtstart:e,tzid:t})}function rT(r){var e=[],t=Object.keys(r),n=Object.keys(ep);if(t.forEach(function(i){B(n,i)||e.push(i)}),e.length)throw new Error("Invalid options: "+e.join(", "));return je(je({},ep),r)}function nT(r){if(r.indexOf(":")===-1)return{name:"RRULE",value:r};var e=nf(r,":",1),t=e[0],n=e[1];return{name:t,value:n}}function iT(r){var e=nT(r),t=e.name,n=e.value,i=t.split(";");if(!i)throw new Error("empty property name");return{name:i[0].toUpperCase(),parms:i.slice(1),value:n}}function sT(r,e){if(e===void 0&&(e=!1),r=r&&r.trim(),!r)throw new Error("Invalid empty string");if(!e)return r.split(/\s/);for(var t=r.split(` -`),n=0;n0&&i[0]===" "?(t[n-1]+=i.slice(1),t.splice(n,1)):n+=1:t.splice(n,1)}return t}function aT(r){r.forEach(function(e){if(!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(e))throw new Error("unsupported RDATE/EXDATE parm: "+e)})}function tp(r,e){return aT(e),r.split(",").map(function(t){return N.untilStringToDate(t)})}function rp(r){var e=this;return function(t){if(t!==void 0&&(e["_".concat(r)]=t),e["_".concat(r)]!==void 0)return e["_".concat(r)];for(var n=0;ne in r?Sn(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Ye=(r,e)=>{for(var t in e||(e={}))lf.call(e,t)&&uf(r,t,e[t]);if(of)for(var t of of(e))W_.call(e,t)&&uf(r,t,e[t]);return r},Wt=(r,e)=>S_(r,U_(e));var h=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),L_=(r,e)=>{for(var t in e)Sn(r,t,{get:e[t],enumerable:!0})},cf=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of F_(e))!lf.call(r,i)&&i!==t&&Sn(r,i,{get:()=>e[i],enumerable:!(n=I_(e,i))||n.enumerable});return r};var ps=(r,e,t)=>(t=r!=null?x_(q_(r)):{},cf(e||!r||!r.__esModule?Sn(t,"default",{value:r,enumerable:!0}):t,r)),Y_=r=>cf(Sn({},"__esModule",{value:!0}),r);var ne=(r,e,t)=>new Promise((n,i)=>{var s=u=>{try{o(t.next(u))}catch(l){i(l)}},a=u=>{try{o(t.throw(u))}catch(l){i(l)}},o=u=>u.done?n(u.value):Promise.resolve(u.value).then(s,a);o((t=t.apply(r,e)).next())});var Wf=h((qA,bs)=>{var _f,Tf,bf,vf,Ef,Rf,wf,Df,Mf,_s,ao,Of,Pf,Af,Jr,kf,Nf,Cf,xf,Sf,If,Uf,Ff,qf,Ts;(function(r){var e=typeof global=="object"?global:typeof self=="object"?self:typeof this=="object"?this:{};typeof define=="function"&&define.amd?define("tslib",["exports"],function(n){r(t(e,t(n)))}):typeof bs=="object"&&typeof bs.exports=="object"?r(t(e,t(bs.exports))):r(t(e));function t(n,i){return n!==e&&(typeof Object.create=="function"?Object.defineProperty(n,"__esModule",{value:!0}):n.__esModule=!0),function(s,a){return n[s]=i?i(s,a):a}}})(function(r){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])};_f=function(n,i){if(typeof i!="function"&&i!==null)throw new TypeError("Class extends value "+String(i)+" is not a constructor or null");e(n,i);function s(){this.constructor=n}n.prototype=i===null?Object.create(i):(s.prototype=i.prototype,new s)},Tf=Object.assign||function(n){for(var i,s=1,a=arguments.length;s=0;c--)(l=n[c])&&(u=(o<3?l(u):o>3?l(i,s,u):l(i,s))||u);return o>3&&u&&Object.defineProperty(i,s,u),u},Ef=function(n,i){return function(s,a){i(s,a,n)}},Rf=function(n,i){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(n,i)},wf=function(n,i,s,a){function o(u){return u instanceof s?u:new s(function(l){l(u)})}return new(s||(s=Promise))(function(u,l){function c(p){try{f(a.next(p))}catch(y){l(y)}}function d(p){try{f(a.throw(p))}catch(y){l(y)}}function f(p){p.done?u(p.value):o(p.value).then(c,d)}f((a=a.apply(n,i||[])).next())})},Df=function(n,i){var s={label:0,sent:function(){if(u[0]&1)throw u[1];return u[1]},trys:[],ops:[]},a,o,u,l;return l={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(l[Symbol.iterator]=function(){return this}),l;function c(f){return function(p){return d([f,p])}}function d(f){if(a)throw new TypeError("Generator is already executing.");for(;s;)try{if(a=1,o&&(u=f[0]&2?o.return:f[0]?o.throw||((u=o.return)&&u.call(o),0):o.next)&&!(u=u.call(o,f[1])).done)return u;switch(o=0,u&&(f=[f[0]&2,u.value]),f[0]){case 0:case 1:u=f;break;case 4:return s.label++,{value:f[1],done:!1};case 5:s.label++,o=f[1],f=[0];continue;case 7:f=s.ops.pop(),s.trys.pop();continue;default:if(u=s.trys,!(u=u.length>0&&u[u.length-1])&&(f[0]===6||f[0]===2)){s=0;continue}if(f[0]===3&&(!u||f[1]>u[0]&&f[1]=n.length&&(n=void 0),{value:n&&n[a++],done:!n}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")},ao=function(n,i){var s=typeof Symbol=="function"&&n[Symbol.iterator];if(!s)return n;var a=s.call(n),o,u=[],l;try{for(;(i===void 0||i-- >0)&&!(o=a.next()).done;)u.push(o.value)}catch(c){l={error:c}}finally{try{o&&!o.done&&(s=a.return)&&s.call(a)}finally{if(l)throw l.error}}return u},Of=function(){for(var n=[],i=0;i1||c(m,_)})})}function c(m,_){try{d(a[m](_))}catch(A){y(u[0][3],A)}}function d(m){m.value instanceof Jr?Promise.resolve(m.value.v).then(f,p):y(u[0][2],m)}function f(m){c("next",m)}function p(m){c("throw",m)}function y(m,_){m(_),u.shift(),u.length&&c(u[0][0],u[0][1])}},Nf=function(n){var i,s;return i={},a("next"),a("throw",function(o){throw o}),a("return"),i[Symbol.iterator]=function(){return this},i;function a(o,u){i[o]=n[o]?function(l){return(s=!s)?{value:Jr(n[o](l)),done:o==="return"}:u?u(l):l}:u}},Cf=function(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i=n[Symbol.asyncIterator],s;return i?i.call(n):(n=typeof _s=="function"?_s(n):n[Symbol.iterator](),s={},a("next"),a("throw"),a("return"),s[Symbol.asyncIterator]=function(){return this},s);function a(u){s[u]=n[u]&&function(l){return new Promise(function(c,d){l=n[u](l),o(c,d,l.done,l.value)})}}function o(u,l,c,d){Promise.resolve(d).then(function(f){u({value:f,done:c})},l)}},xf=function(n,i){return Object.defineProperty?Object.defineProperty(n,"raw",{value:i}):n.raw=i,n};var t=Object.create?function(n,i){Object.defineProperty(n,"default",{enumerable:!0,value:i})}:function(n,i){n.default=i};Sf=function(n){if(n&&n.__esModule)return n;var i={};if(n!=null)for(var s in n)s!=="default"&&Object.prototype.hasOwnProperty.call(n,s)&&Ts(i,n,s);return t(i,n),i},If=function(n){return n&&n.__esModule?n:{default:n}},Uf=function(n,i,s,a){if(s==="a"&&!a)throw new TypeError("Private accessor was defined without a getter");if(typeof i=="function"?n!==i||!a:!i.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return s==="m"?a:s==="a"?a.call(n):a?a.value:i.get(n)},Ff=function(n,i,s,a,o){if(a==="m")throw new TypeError("Private method is not writable");if(a==="a"&&!o)throw new TypeError("Private accessor was defined without a setter");if(typeof i=="function"?n!==i||!o:!i.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return a==="a"?o.call(n,s):o?o.value=s:i.set(n,s),s},qf=function(n,i){if(i===null||typeof i!="object"&&typeof i!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof n=="function"?i===n:n.has(i)},r("__extends",_f),r("__assign",Tf),r("__rest",bf),r("__decorate",vf),r("__param",Ef),r("__metadata",Rf),r("__awaiter",wf),r("__generator",Df),r("__exportStar",Mf),r("__createBinding",Ts),r("__values",_s),r("__read",ao),r("__spread",Of),r("__spreadArrays",Pf),r("__spreadArray",Af),r("__await",Jr),r("__asyncGenerator",kf),r("__asyncDelegator",Nf),r("__asyncValues",Cf),r("__makeTemplateObject",xf),r("__importStar",Sf),r("__importDefault",If),r("__classPrivateFieldGet",Uf),r("__classPrivateFieldSet",Ff),r("__classPrivateFieldIn",qf)})});var J=h(_r=>{"use strict";Object.defineProperty(_r,"__esModule",{value:!0});_r.matchAnyPattern=_r.extractTerms=_r.repeatedTimeunitPattern=void 0;function xT(r,e){let t=e.replace(/\((?!\?)/g,"(?:");return`${r}${t}\\s{0,5}(?:,?\\s{0,5}${t}){0,10}`}_r.repeatedTimeunitPattern=xT;function xp(r){let e;return r instanceof Array?e=[...r]:r instanceof Map?e=Array.from(r.keys()):e=Object.keys(r),e}_r.extractTerms=xp;function ST(r){return`(?:${xp(r).sort((t,n)=>n.length-t.length).join("|").replace(/\./g,"\\.")})`}_r.matchAnyPattern=ST});var K=h((bo,vo)=>{(function(r,e){typeof bo=="object"&&typeof vo!="undefined"?vo.exports=e():typeof define=="function"&&define.amd?define(e):(r=typeof globalThis!="undefined"?globalThis:r||self).dayjs=e()})(bo,function(){"use strict";var r=1e3,e=6e4,t=36e5,n="millisecond",i="second",s="minute",a="hour",o="day",u="week",l="month",c="quarter",d="year",f="date",p="Invalid Date",y=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,m=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,_={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},A=function(w,v,T){var P=String(w);return!P||P.length>=v?w:""+Array(v+1-P.length).join(T)+w},I={s:A,z:function(w){var v=-w.utcOffset(),T=Math.abs(v),P=Math.floor(T/60),E=T%60;return(v<=0?"+":"-")+A(P,2,"0")+":"+A(E,2,"0")},m:function w(v,T){if(v.date(){"use strict";var IT=Tr&&Tr.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Tr,"__esModule",{value:!0});Tr.findYearClosestToRef=Tr.findMostLikelyADYear=void 0;var UT=IT(K());function FT(r){return r<100&&(r>50?r=r+1900:r=r+2e3),r}Tr.findMostLikelyADYear=FT;function qT(r,e,t){let n=UT.default(r),i=n;i=i.month(t-1),i=i.date(e),i=i.year(n.year());let s=i.add(1,"y"),a=i.add(-1,"y");return Math.abs(s.diff(n)){"use strict";Object.defineProperty(W,"__esModule",{value:!0});W.parseTimeUnits=W.TIME_UNITS_PATTERN=W.parseYear=W.YEAR_PATTERN=W.parseOrdinalNumberPattern=W.ORDINAL_NUMBER_PATTERN=W.parseNumberPattern=W.NUMBER_PATTERN=W.TIME_UNIT_DICTIONARY=W.ORDINAL_WORD_DICTIONARY=W.INTEGER_WORD_DICTIONARY=W.MONTH_DICTIONARY=W.FULL_MONTH_NAME_DICTIONARY=W.WEEKDAY_DICTIONARY=void 0;var As=J(),WT=xe();W.WEEKDAY_DICTIONARY={sunday:0,sun:0,"sun.":0,monday:1,mon:1,"mon.":1,tuesday:2,tue:2,"tue.":2,wednesday:3,wed:3,"wed.":3,thursday:4,thurs:4,"thurs.":4,thur:4,"thur.":4,thu:4,"thu.":4,friday:5,fri:5,"fri.":5,saturday:6,sat:6,"sat.":6};W.FULL_MONTH_NAME_DICTIONARY={january:1,february:2,march:3,april:4,may:5,june:6,july:7,august:8,september:9,october:10,november:11,december:12};W.MONTH_DICTIONARY=Object.assign(Object.assign({},W.FULL_MONTH_NAME_DICTIONARY),{jan:1,"jan.":1,feb:2,"feb.":2,mar:3,"mar.":3,apr:4,"apr.":4,jun:6,"jun.":6,jul:7,"jul.":7,aug:8,"aug.":8,sep:9,"sep.":9,sept:9,"sept.":9,oct:10,"oct.":10,nov:11,"nov.":11,dec:12,"dec.":12});W.INTEGER_WORD_DICTIONARY={one:1,two:2,three:3,four:4,five:5,six:6,seven:7,eight:8,nine:9,ten:10,eleven:11,twelve:12};W.ORDINAL_WORD_DICTIONARY={first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,tenth:10,eleventh:11,twelfth:12,thirteenth:13,fourteenth:14,fifteenth:15,sixteenth:16,seventeenth:17,eighteenth:18,nineteenth:19,twentieth:20,"twenty first":21,"twenty-first":21,"twenty second":22,"twenty-second":22,"twenty third":23,"twenty-third":23,"twenty fourth":24,"twenty-fourth":24,"twenty fifth":25,"twenty-fifth":25,"twenty sixth":26,"twenty-sixth":26,"twenty seventh":27,"twenty-seventh":27,"twenty eighth":28,"twenty-eighth":28,"twenty ninth":29,"twenty-ninth":29,thirtieth:30,"thirty first":31,"thirty-first":31};W.TIME_UNIT_DICTIONARY={sec:"second",second:"second",seconds:"second",min:"minute",mins:"minute",minute:"minute",minutes:"minute",h:"hour",hr:"hour",hrs:"hour",hour:"hour",hours:"hour",day:"d",days:"d",week:"week",weeks:"week",month:"month",months:"month",qtr:"quarter",quarter:"quarter",quarters:"quarter",y:"year",yr:"year",year:"year",years:"year"};W.NUMBER_PATTERN=`(?:${As.matchAnyPattern(W.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s{0,2}an?)?|an?\\b(?:\\s{0,2}few)?|few|several|a?\\s{0,2}couple\\s{0,2}(?:of)?)`;function Ip(r){let e=r.toLowerCase();return W.INTEGER_WORD_DICTIONARY[e]!==void 0?W.INTEGER_WORD_DICTIONARY[e]:e==="a"||e==="an"?1:e.match(/few/)?3:e.match(/half/)?.5:e.match(/couple/)?2:e.match(/several/)?7:parseFloat(e)}W.parseNumberPattern=Ip;W.ORDINAL_NUMBER_PATTERN=`(?:${As.matchAnyPattern(W.ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:st|nd|rd|th)?)`;function LT(r){let e=r.toLowerCase();return W.ORDINAL_WORD_DICTIONARY[e]!==void 0?W.ORDINAL_WORD_DICTIONARY[e]:(e=e.replace(/(?:st|nd|rd|th)$/i,""),parseInt(e))}W.parseOrdinalNumberPattern=LT;W.YEAR_PATTERN="(?:[1-9][0-9]{0,3}\\s{0,2}(?:BE|AD|BC|BCE|CE)|[1-2][0-9]{3}|[5-9][0-9])";function YT(r){if(/BE/i.test(r))return r=r.replace(/BE/i,""),parseInt(r)-543;if(/BCE?/i.test(r))return r=r.replace(/BCE?/i,""),-parseInt(r);if(/(AD|CE)/i.test(r))return r=r.replace(/(AD|CE)/i,""),parseInt(r);let e=parseInt(r);return WT.findMostLikelyADYear(e)}W.parseYear=YT;var Up=`(${W.NUMBER_PATTERN})\\s{0,3}(${As.matchAnyPattern(W.TIME_UNIT_DICTIONARY)})`,Sp=new RegExp(Up,"i");W.TIME_UNITS_PATTERN=As.repeatedTimeunitPattern("(?:(?:about|around)\\s{0,3})?",Up);function $T(r){let e={},t=r,n=Sp.exec(t);for(;n;)jT(e,n),t=t.substring(n[0].length).trim(),n=Sp.exec(t);return e}W.parseTimeUnits=$T;function jT(r,e){let t=Ip(e[1]),n=W.TIME_UNIT_DICTIONARY[e[2].toLowerCase()];r[n]=t}});var Fp=h((Eo,Ro)=>{(function(r,e){typeof Eo=="object"&&typeof Ro!="undefined"?Ro.exports=e():typeof define=="function"&&define.amd?define(e):(r=typeof globalThis!="undefined"?globalThis:r||self).dayjs_plugin_quarterOfYear=e()})(Eo,function(){"use strict";var r="month",e="quarter";return function(t,n){var i=n.prototype;i.quarter=function(o){return this.$utils().u(o)?Math.ceil((this.month()+1)/3):this.month(this.month()%3+3*(o-1))};var s=i.add;i.add=function(o,u){return o=Number(o),this.$utils().p(u)===e?this.add(3*o,r):s.bind(this)(o,u)};var a=i.startOf;i.startOf=function(o,u){var l=this.$utils(),c=!!l.u(u)||u;if(l.p(o)===e){var d=this.quarter()-1;return c?this.month(3*d).startOf(r).startOf("day"):this.month(3*d+2).endOf(r).endOf("day")}return a.bind(this)(o,u)}}})});var it=h(kt=>{"use strict";Object.defineProperty(kt,"__esModule",{value:!0});kt.implySimilarTime=kt.assignSimilarTime=kt.assignSimilarDate=kt.assignTheNextDay=void 0;var qp=Ee();function BT(r,e){e=e.add(1,"day"),Wp(r,e),Lp(r,e)}kt.assignTheNextDay=BT;function Wp(r,e){r.assign("day",e.date()),r.assign("month",e.month()+1),r.assign("year",e.year())}kt.assignSimilarDate=Wp;function GT(r,e){r.assign("hour",e.hour()),r.assign("minute",e.minute()),r.assign("second",e.second()),r.assign("millisecond",e.millisecond()),r.get("hour")<12?r.assign("meridiem",qp.Meridiem.AM):r.assign("meridiem",qp.Meridiem.PM)}kt.assignSimilarTime=GT;function Lp(r,e){r.imply("hour",e.hour()),r.imply("minute",e.minute()),r.imply("second",e.second()),r.imply("millisecond",e.millisecond())}kt.implySimilarTime=Lp});var Yp=h(Ir=>{"use strict";Object.defineProperty(Ir,"__esModule",{value:!0});Ir.toTimezoneOffset=Ir.TIMEZONE_ABBR_MAP=void 0;Ir.TIMEZONE_ABBR_MAP={ACDT:630,ACST:570,ADT:-180,AEDT:660,AEST:600,AFT:270,AKDT:-480,AKST:-540,ALMT:360,AMST:-180,AMT:-240,ANAST:720,ANAT:720,AQTT:300,ART:-180,AST:-240,AWDT:540,AWST:480,AZOST:0,AZOT:-60,AZST:300,AZT:240,BNT:480,BOT:-240,BRST:-120,BRT:-180,BST:60,BTT:360,CAST:480,CAT:120,CCT:390,CDT:-300,CEST:120,CET:60,CHADT:825,CHAST:765,CKT:-600,CLST:-180,CLT:-240,COT:-300,CST:-360,CVT:-60,CXT:420,ChST:600,DAVT:420,EASST:-300,EAST:-360,EAT:180,ECT:-300,EDT:-240,EEST:180,EET:120,EGST:0,EGT:-60,EST:-300,ET:-300,FJST:780,FJT:720,FKST:-180,FKT:-240,FNT:-120,GALT:-360,GAMT:-540,GET:240,GFT:-180,GILT:720,GMT:0,GST:240,GYT:-240,HAA:-180,HAC:-300,HADT:-540,HAE:-240,HAP:-420,HAR:-360,HAST:-600,HAT:-90,HAY:-480,HKT:480,HLV:-210,HNA:-240,HNC:-360,HNE:-300,HNP:-480,HNR:-420,HNT:-150,HNY:-540,HOVT:420,ICT:420,IDT:180,IOT:360,IRDT:270,IRKST:540,IRKT:540,IRST:210,IST:330,JST:540,KGT:360,KRAST:480,KRAT:480,KST:540,KUYT:240,LHDT:660,LHST:630,LINT:840,MAGST:720,MAGT:720,MART:-510,MAWT:300,MDT:-360,MESZ:120,MEZ:60,MHT:720,MMT:390,MSD:240,MSK:180,MST:-420,MUT:240,MVT:300,MYT:480,NCT:660,NDT:-90,NFT:690,NOVST:420,NOVT:360,NPT:345,NST:-150,NUT:-660,NZDT:780,NZST:720,OMSST:420,OMST:420,PDT:-420,PET:-300,PETST:720,PETT:720,PGT:600,PHOT:780,PHT:480,PKT:300,PMDT:-120,PMST:-180,PONT:660,PST:-480,PT:-480,PWT:540,PYST:-180,PYT:-240,RET:240,SAMT:240,SAST:120,SBT:660,SCT:240,SGT:480,SRT:-180,SST:-660,TAHT:-600,TFT:300,TJT:300,TKT:780,TLT:540,TMT:300,TVT:720,ULAT:480,UTC:0,UYST:-120,UYT:-180,UZT:300,VET:-210,VLAST:660,VLAT:660,VUT:660,WAST:120,WAT:60,WEST:60,WESZ:60,WET:0,WEZ:0,WFT:720,WGST:-120,WGT:-180,WIB:420,WIT:540,WITA:480,WST:780,WT:0,YAKST:600,YAKT:600,YAPT:600,YEKST:360,YEKT:360};function HT(r){var e;return r==null?null:typeof r=="number"?r:(e=Ir.TIMEZONE_ABBR_MAP[r])!==null&&e!==void 0?e:null}Ir.toTimezoneOffset=HT});var he=h(Nt=>{"use strict";var $p=Nt&&Nt.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Nt,"__esModule",{value:!0});Nt.ParsingResult=Nt.ParsingComponents=Nt.ReferenceWithTimezone=void 0;var zT=$p(Fp()),ks=$p(K()),wo=it(),KT=Yp();ks.default.extend(zT.default);var Do=class{constructor(e){var t;e=e!=null?e:new Date,e instanceof Date?this.instant=e:(this.instant=(t=e.instant)!==null&&t!==void 0?t:new Date,this.timezoneOffset=KT.toTimezoneOffset(e.timezone))}};Nt.ReferenceWithTimezone=Do;var Ur=class{constructor(e,t){if(this.reference=e,this.knownValues={},this.impliedValues={},t)for(let i in t)this.knownValues[i]=t[i];let n=ks.default(e.instant);this.imply("day",n.date()),this.imply("month",n.month()+1),this.imply("year",n.year()),this.imply("hour",12),this.imply("minute",0),this.imply("second",0),this.imply("millisecond",0)}get(e){return e in this.knownValues?this.knownValues[e]:e in this.impliedValues?this.impliedValues[e]:null}isCertain(e){return e in this.knownValues}getCertainComponents(){return Object.keys(this.knownValues)}imply(e,t){return e in this.knownValues?this:(this.impliedValues[e]=t,this)}assign(e,t){return this.knownValues[e]=t,delete this.impliedValues[e],this}delete(e){delete this.knownValues[e],delete this.impliedValues[e]}clone(){let e=new Ur(this.reference);e.knownValues={},e.impliedValues={};for(let t in this.knownValues)e.knownValues[t]=this.knownValues[t];for(let t in this.impliedValues)e.impliedValues[t]=this.impliedValues[t];return e}isOnlyDate(){return!this.isCertain("hour")&&!this.isCertain("minute")&&!this.isCertain("second")}isOnlyTime(){return!this.isCertain("weekday")&&!this.isCertain("day")&&!this.isCertain("month")}isOnlyWeekdayComponent(){return this.isCertain("weekday")&&!this.isCertain("day")&&!this.isCertain("month")}isOnlyDayMonthComponent(){return this.isCertain("day")&&this.isCertain("month")&&!this.isCertain("year")}isValidDate(){let e=this.dateWithoutTimezoneAdjustment();return!(e.getFullYear()!==this.get("year")||e.getMonth()!==this.get("month")-1||e.getDate()!==this.get("day")||this.get("hour")!=null&&e.getHours()!=this.get("hour")||this.get("minute")!=null&&e.getMinutes()!=this.get("minute"))}toString(){return`[ParsingComponents {knownValues: ${JSON.stringify(this.knownValues)}, impliedValues: ${JSON.stringify(this.impliedValues)}}, reference: ${JSON.stringify(this.reference)}]`}dayjs(){return ks.default(this.date())}date(){let e=this.dateWithoutTimezoneAdjustment();return new Date(e.getTime()+this.getSystemTimezoneAdjustmentMinute(e)*6e4)}dateWithoutTimezoneAdjustment(){let e=new Date(this.get("year"),this.get("month")-1,this.get("day"),this.get("hour"),this.get("minute"),this.get("second"),this.get("millisecond"));return e.setFullYear(this.get("year")),e}getSystemTimezoneAdjustmentMinute(e){var t,n;(!e||e.getTime()<0)&&(e=new Date);let i=-e.getTimezoneOffset(),s=(n=(t=this.get("timezoneOffset"))!==null&&t!==void 0?t:this.reference.timezoneOffset)!==null&&n!==void 0?n:i;return i-s}static createRelativeFromReference(e,t){let n=ks.default(e.instant);for(let s in t)n=n.add(t[s],s);let i=new Ur(e);return t.hour||t.minute||t.second?(wo.assignSimilarTime(i,n),wo.assignSimilarDate(i,n),e.timezoneOffset!==null&&i.assign("timezoneOffset",-e.instant.getTimezoneOffset())):(wo.implySimilarTime(i,n),e.timezoneOffset!==null&&i.imply("timezoneOffset",-e.instant.getTimezoneOffset()),t.d?(i.assign("day",n.date()),i.assign("month",n.month()+1),i.assign("year",n.year())):(t.week&&i.imply("weekday",n.day()),i.imply("day",n.date()),t.month?(i.assign("month",n.month()+1),i.assign("year",n.year())):(i.imply("month",n.month()+1),t.year?i.assign("year",n.year()):i.imply("year",n.year())))),i}};Nt.ParsingComponents=Ur;var Hn=class{constructor(e,t,n,i,s){this.reference=e,this.refDate=e.instant,this.index=t,this.text=n,this.start=i||new Ur(e),this.end=s}clone(){let e=new Hn(this.reference,this.index,this.text);return e.start=this.start?this.start.clone():null,e.end=this.end?this.end.clone():null,e}date(){return this.start.date()}toString(){return`[ParsingResult {index: ${this.index}, text: '${this.text}', ...}]`}};Nt.ParsingResult=Hn});var R=h(Ns=>{"use strict";Object.defineProperty(Ns,"__esModule",{value:!0});Ns.AbstractParserWithWordBoundaryChecking=void 0;var Mo=class{constructor(){this.cachedInnerPattern=null,this.cachedPattern=null}patternLeftBoundary(){return"(\\W|^)"}pattern(e){let t=this.innerPattern(e);return t==this.cachedInnerPattern?this.cachedPattern:(this.cachedPattern=new RegExp(`${this.patternLeftBoundary()}${t.source}`,t.flags),this.cachedInnerPattern=t,this.cachedPattern)}extract(e,t){var n;let i=(n=t[1])!==null&&n!==void 0?n:"";t.index=t.index+i.length,t[0]=t[0].substring(i.length);for(let s=2;s{"use strict";Object.defineProperty(Ao,"__esModule",{value:!0});var Po=Se(),VT=he(),ZT=R(),XT=new RegExp(`(?:within|in|for)\\s*(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${Po.TIME_UNITS_PATTERN})(?=\\W|$)`,"i"),QT=new RegExp(`(?:(?:about|around|roughly|approximately|just)\\s*(?:~\\s*)?)?(${Po.TIME_UNITS_PATTERN})(?=\\W|$)`,"i"),Oo=class extends ZT.AbstractParserWithWordBoundaryChecking{innerPattern(e){return e.option.forwardDate?QT:XT}innerExtract(e,t){let n=Po.parseTimeUnits(t[1]);return VT.ParsingComponents.createRelativeFromReference(e.reference,n)}};Ao.default=Oo});var Vp=h(No=>{"use strict";Object.defineProperty(No,"__esModule",{value:!0});var JT=xe(),zp=Se(),Kp=Se(),Cs=Se(),eb=J(),tb=R(),rb=new RegExp(`(?:on\\s{0,3})?(${Cs.ORDINAL_NUMBER_PATTERN})(?:\\s{0,3}(?:to|\\-|\\\u2013|until|through|till)?\\s{0,3}(${Cs.ORDINAL_NUMBER_PATTERN}))?(?:-|/|\\s{0,3}(?:of)?\\s{0,3})(${eb.matchAnyPattern(zp.MONTH_DICTIONARY)})(?:(?:-|/|,?\\s{0,3})(${Kp.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),Bp=1,Gp=2,nb=3,Hp=4,ko=class extends tb.AbstractParserWithWordBoundaryChecking{innerPattern(){return rb}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=zp.MONTH_DICTIONARY[t[nb].toLowerCase()],s=Cs.parseOrdinalNumberPattern(t[Bp]);if(s>31)return t.index=t.index+t[Bp].length,null;if(n.start.assign("month",i),n.start.assign("day",s),t[Hp]){let a=Kp.parseYear(t[Hp]);n.start.assign("year",a)}else{let a=JT.findYearClosestToRef(e.refDate,s,i);n.start.imply("year",a)}if(t[Gp]){let a=Cs.parseOrdinalNumberPattern(t[Gp]);n.end=n.start.clone(),n.end.assign("day",a)}return n}};No.default=ko});var eh=h(xo=>{"use strict";Object.defineProperty(xo,"__esModule",{value:!0});var ib=xe(),Qp=Se(),xs=Se(),Jp=Se(),sb=J(),ab=R(),ob=new RegExp(`(${sb.matchAnyPattern(Qp.MONTH_DICTIONARY)})(?:-|/|\\s*,?\\s*)(${xs.ORDINAL_NUMBER_PATTERN})(?!\\s*(?:am|pm))\\s*(?:(?:to|\\-)\\s*(${xs.ORDINAL_NUMBER_PATTERN})\\s*)?(?:(?:-|/|\\s*,?\\s*)(${Jp.YEAR_PATTERN}))?(?=\\W|$)(?!\\:\\d)`,"i"),ub=1,lb=2,Zp=3,Xp=4,Co=class extends ab.AbstractParserWithWordBoundaryChecking{innerPattern(){return ob}innerExtract(e,t){let n=Qp.MONTH_DICTIONARY[t[ub].toLowerCase()],i=xs.parseOrdinalNumberPattern(t[lb]);if(i>31)return null;let s=e.createParsingComponents({day:i,month:n});if(t[Xp]){let u=Jp.parseYear(t[Xp]);s.assign("year",u)}else{let u=ib.findYearClosestToRef(e.refDate,i,n);s.imply("year",u)}if(!t[Zp])return s;let a=xs.parseOrdinalNumberPattern(t[Zp]),o=e.createParsingResult(t.index,t[0]);return o.start=s,o.end=s.clone(),o.end.assign("day",a),o}};xo.default=Co});var nh=h(Uo=>{"use strict";Object.defineProperty(Uo,"__esModule",{value:!0});var So=Se(),cb=xe(),db=J(),rh=Se(),fb=R(),pb=new RegExp(`((?:in)\\s*)?(${db.matchAnyPattern(So.MONTH_DICTIONARY)})\\s*(?:[,-]?\\s*(${rh.YEAR_PATTERN})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),hb=1,mb=2,th=3,Io=class extends fb.AbstractParserWithWordBoundaryChecking{innerPattern(){return pb}innerExtract(e,t){let n=t[mb].toLowerCase();if(t[0].length<=3&&!So.FULL_MONTH_NAME_DICTIONARY[n])return null;let i=e.createParsingResult(t.index+(t[hb]||"").length,t.index+t[0].length);i.start.imply("day",1);let s=So.MONTH_DICTIONARY[n];if(i.start.assign("month",s),t[th]){let a=rh.parseYear(t[th]);i.start.assign("year",a)}else{let a=cb.findYearClosestToRef(e.refDate,1,s);i.start.imply("year",a)}return i}};Uo.default=Io});var ah=h(qo=>{"use strict";Object.defineProperty(qo,"__esModule",{value:!0});var sh=Se(),yb=J(),gb=R(),_b=new RegExp(`([0-9]{4})[\\.\\/\\s](?:(${yb.matchAnyPattern(sh.MONTH_DICTIONARY)})|([0-9]{1,2}))[\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),Tb=1,bb=2,ih=3,vb=4,Fo=class extends gb.AbstractParserWithWordBoundaryChecking{innerPattern(){return _b}innerExtract(e,t){let n=t[ih]?parseInt(t[ih]):sh.MONTH_DICTIONARY[t[bb].toLowerCase()];if(n<1||n>12)return null;let i=parseInt(t[Tb]);return{day:parseInt(t[vb]),month:n,year:i}}};qo.default=Fo});var oh=h(Lo=>{"use strict";Object.defineProperty(Lo,"__esModule",{value:!0});var Eb=R(),Rb=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),wb=1,Db=2,Wo=class extends Eb.AbstractParserWithWordBoundaryChecking{innerPattern(){return Rb}innerExtract(e,t){let n=parseInt(t[Db]),i=parseInt(t[wb]);return e.createParsingComponents().imply("day",1).assign("month",i).assign("year",n)}};Lo.default=Wo});var Fr=h(Us=>{"use strict";Object.defineProperty(Us,"__esModule",{value:!0});Us.AbstractTimeExpressionParser=void 0;var je=Ee();function Mb(r,e,t,n){return new RegExp(`${r}${e}(\\d{1,4})(?:(?:\\.|:|\uFF1A)(\\d{1,2})(?:(?::|\uFF1A)(\\d{2})(?:\\.(\\d{1,6}))?)?)?(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?${t}`,n)}function Ob(r,e){return new RegExp(`^(${r})(\\d{1,4})(?:(?:\\.|\\:|\\\uFF1A)(\\d{1,2})(?:(?:\\.|\\:|\\\uFF1A)(\\d{1,2})(?:\\.(\\d{1,6}))?)?)?(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?${e}`,"i")}var uh=2,sn=3,Ss=4,Is=5,zn=6,Yo=class{constructor(e=!1){this.cachedPrimaryPrefix=null,this.cachedPrimarySuffix=null,this.cachedPrimaryTimePattern=null,this.cachedFollowingPhase=null,this.cachedFollowingSuffix=null,this.cachedFollowingTimePatten=null,this.strictMode=e}patternFlags(){return"i"}primaryPatternLeftBoundary(){return"(^|\\s|T|\\b)"}primarySuffix(){return"(?=\\W|$)"}followingSuffix(){return"(?=\\W|$)"}pattern(e){return this.getPrimaryTimePatternThroughCache()}extract(e,t){let n=this.extractPrimaryTimeComponents(e,t);if(!n)return t.index+=t[0].length,null;let i=t.index+t[1].length,s=t[0].substring(t[1].length),a=e.createParsingResult(i,s,n);t.index+=t[0].length;let o=e.text.substring(t.index),l=this.getFollowingTimePatternThroughCache().exec(o);return s.match(/^\d{3,4}/)&&l&&l[0].match(/^\s*([+-])\s*\d{2,4}$/)?null:!l||l[0].match(/^\s*([+-])\s*\d{3,4}$/)?this.checkAndReturnWithoutFollowingPattern(a):(a.end=this.extractFollowingTimeComponents(e,l,a),a.end&&(a.text+=l[0]),this.checkAndReturnWithFollowingPattern(a))}extractPrimaryTimeComponents(e,t,n=!1){let i=e.createParsingComponents(),s=0,a=null,o=parseInt(t[uh]);if(o>100){if(this.strictMode||t[sn]!=null)return null;s=o%100,o=Math.floor(o/100)}if(o>24)return null;if(t[sn]!=null){if(t[sn].length==1&&!t[zn])return null;s=parseInt(t[sn])}if(s>=60)return null;if(o>12&&(a=je.Meridiem.PM),t[zn]!=null){if(o>12)return null;let u=t[zn][0].toLowerCase();u=="a"&&(a=je.Meridiem.AM,o==12&&(o=0)),u=="p"&&(a=je.Meridiem.PM,o!=12&&(o+=12))}if(i.assign("hour",o),i.assign("minute",s),a!==null?i.assign("meridiem",a):o<12?i.imply("meridiem",je.Meridiem.AM):i.imply("meridiem",je.Meridiem.PM),t[Is]!=null){let u=parseInt(t[Is].substring(0,3));if(u>=1e3)return null;i.assign("millisecond",u)}if(t[Ss]!=null){let u=parseInt(t[Ss]);if(u>=60)return null;i.assign("second",u)}return i}extractFollowingTimeComponents(e,t,n){let i=e.createParsingComponents();if(t[Is]!=null){let u=parseInt(t[Is].substring(0,3));if(u>=1e3)return null;i.assign("millisecond",u)}if(t[Ss]!=null){let u=parseInt(t[Ss]);if(u>=60)return null;i.assign("second",u)}let s=parseInt(t[uh]),a=0,o=-1;if(t[sn]!=null?a=parseInt(t[sn]):s>100&&(a=s%100,s=Math.floor(s/100)),a>=60||s>24)return null;if(s>=12&&(o=je.Meridiem.PM),t[zn]!=null){if(s>12)return null;let u=t[zn][0].toLowerCase();u=="a"&&(o=je.Meridiem.AM,s==12&&(s=0,i.isCertain("day")||i.imply("day",i.get("day")+1))),u=="p"&&(o=je.Meridiem.PM,s!=12&&(s+=12)),n.start.isCertain("meridiem")||(o==je.Meridiem.AM?(n.start.imply("meridiem",je.Meridiem.AM),n.start.get("hour")==12&&n.start.assign("hour",0)):(n.start.imply("meridiem",je.Meridiem.PM),n.start.get("hour")!=12&&n.start.assign("hour",n.start.get("hour")+12)))}return i.assign("hour",s),i.assign("minute",a),o>=0?i.assign("meridiem",o):n.start.isCertain("meridiem")&&n.start.get("hour")>12?n.start.get("hour")-12>s?i.imply("meridiem",je.Meridiem.AM):s<=12&&(i.assign("hour",s+12),i.assign("meridiem",je.Meridiem.PM)):s>12?i.imply("meridiem",je.Meridiem.PM):s<=12&&i.imply("meridiem",je.Meridiem.AM),i.date().getTime()24)return null}return e}checkAndReturnWithFollowingPattern(e){if(e.text.match(/^\d+-\d+$/))return null;let t=e.text.match(/[^\d:.](\d[\d.]+)\s*-\s*(\d[\d.]+)$/);if(t){if(this.strictMode)return null;let n=t[1],i=t[2];if(i.includes(".")&&!i.match(/\d(\.\d{2})+$/))return null;let s=parseInt(i),a=parseInt(n);if(s>24||a>24)return null}return e}getPrimaryTimePatternThroughCache(){let e=this.primaryPrefix(),t=this.primarySuffix();return this.cachedPrimaryPrefix===e&&this.cachedPrimarySuffix===t?this.cachedPrimaryTimePattern:(this.cachedPrimaryTimePattern=Mb(this.primaryPatternLeftBoundary(),e,t,this.patternFlags()),this.cachedPrimaryPrefix=e,this.cachedPrimarySuffix=t,this.cachedPrimaryTimePattern)}getFollowingTimePatternThroughCache(){let e=this.followingPhase(),t=this.followingSuffix();return this.cachedFollowingPhase===e&&this.cachedFollowingSuffix===t?this.cachedFollowingTimePatten:(this.cachedFollowingTimePatten=Ob(e,t),this.cachedFollowingPhase=e,this.cachedFollowingSuffix=t,this.cachedFollowingTimePatten)}};Us.AbstractTimeExpressionParser=Yo});var lh=h(jo=>{"use strict";Object.defineProperty(jo,"__esModule",{value:!0});var Fs=Ee(),Pb=Fr(),$o=class extends Pb.AbstractTimeExpressionParser{constructor(e){super(e)}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|to|\\?)\\s*"}primaryPrefix(){return"(?:(?:at|from)\\s*)??"}primarySuffix(){return"(?:\\s*(?:o\\W*clock|at\\s*night|in\\s*the\\s*(?:morning|afternoon)))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(e,t){let n=super.extractPrimaryTimeComponents(e,t);if(n){if(t[0].endsWith("night")){let i=n.get("hour");i>=6&&i<12?(n.assign("hour",n.get("hour")+12),n.assign("meridiem",Fs.Meridiem.PM)):i<6&&n.assign("meridiem",Fs.Meridiem.AM)}if(t[0].endsWith("afternoon")){n.assign("meridiem",Fs.Meridiem.PM);let i=n.get("hour");i>=0&&i<=6&&n.assign("hour",n.get("hour")+12)}t[0].endsWith("morning")&&(n.assign("meridiem",Fs.Meridiem.AM),n.get("hour")<12&&n.assign("hour",n.get("hour")))}return n}};jo.default=$o});var st=h(an=>{"use strict";Object.defineProperty(an,"__esModule",{value:!0});an.addImpliedTimeUnits=an.reverseTimeUnits=void 0;function Ab(r){let e={};for(let t in r)e[t]=-r[t];return e}an.reverseTimeUnits=Ab;function kb(r,e){let t=r.clone(),n=r.dayjs();for(let i in e)n=n.add(e[i],i);return("day"in e||"d"in e||"week"in e||"month"in e||"year"in e)&&(t.imply("day",n.date()),t.imply("month",n.month()+1),t.imply("year",n.year())),("second"in e||"minute"in e||"hour"in e)&&(t.imply("second",n.second()),t.imply("minute",n.minute()),t.imply("hour",n.hour())),t}an.addImpliedTimeUnits=kb});var ch=h(Ho=>{"use strict";Object.defineProperty(Ho,"__esModule",{value:!0});var Go=Se(),Nb=he(),Cb=R(),xb=st(),Sb=new RegExp(`(${Go.TIME_UNITS_PATTERN})\\s{0,5}(?:ago|before|earlier)(?=(?:\\W|$))`,"i"),Ib=new RegExp(`(${Go.TIME_UNITS_PATTERN})\\s{0,5}ago(?=(?:\\W|$))`,"i"),Bo=class extends Cb.AbstractParserWithWordBoundaryChecking{constructor(e){super(),this.strictMode=e}innerPattern(){return this.strictMode?Ib:Sb}innerExtract(e,t){let n=Go.parseTimeUnits(t[1]),i=xb.reverseTimeUnits(n);return Nb.ParsingComponents.createRelativeFromReference(e.reference,i)}};Ho.default=Bo});var dh=h(Vo=>{"use strict";Object.defineProperty(Vo,"__esModule",{value:!0});var Ko=Se(),Ub=he(),Fb=R(),qb=new RegExp(`(${Ko.TIME_UNITS_PATTERN})\\s{0,5}(?:later|after|from now|henceforth|forward|out)(?=(?:\\W|$))`,"i"),Wb=new RegExp("("+Ko.TIME_UNITS_PATTERN+")(later|from now)(?=(?:\\W|$))","i"),Lb=1,zo=class extends Fb.AbstractParserWithWordBoundaryChecking{constructor(e){super(),this.strictMode=e}innerPattern(){return this.strictMode?Wb:qb}innerExtract(e,t){let n=Ko.parseTimeUnits(t[Lb]);return Ub.ParsingComponents.createRelativeFromReference(e.reference,n)}};Vo.default=zo});var un=h(on=>{"use strict";Object.defineProperty(on,"__esModule",{value:!0});on.MergingRefiner=on.Filter=void 0;var Zo=class{refine(e,t){return t.filter(n=>this.isValid(e,n))}};on.Filter=Zo;var Xo=class{refine(e,t){if(t.length<2)return t;let n=[],i=t[0],s=null;for(let a=1;a{console.log(`${this.constructor.name} merged ${u} and ${l} into ${c}`)}),i=c}}return i!=null&&n.push(i),n}};on.MergingRefiner=Xo});var Ct=h(Jo=>{"use strict";Object.defineProperty(Jo,"__esModule",{value:!0});var Yb=un(),Qo=class extends Yb.MergingRefiner{shouldMergeResults(e,t,n){return!t.end&&!n.end&&e.match(this.patternBetween())!=null}mergeResults(e,t,n){if(!t.start.isOnlyWeekdayComponent()&&!n.start.isOnlyWeekdayComponent()&&(n.start.getCertainComponents().forEach(s=>{t.start.isCertain(s)||t.start.assign(s,n.start.get(s))}),t.start.getCertainComponents().forEach(s=>{n.start.isCertain(s)||n.start.assign(s,t.start.get(s))})),t.start.date().getTime()>n.start.date().getTime()){let s=t.start.dayjs(),a=n.start.dayjs();t.start.isOnlyWeekdayComponent()&&s.add(-7,"days").isBefore(a)?(s=s.add(-7,"days"),t.start.imply("day",s.date()),t.start.imply("month",s.month()+1),t.start.imply("year",s.year())):n.start.isOnlyWeekdayComponent()&&a.add(7,"days").isAfter(s)?(a=a.add(7,"days"),n.start.imply("day",a.date()),n.start.imply("month",a.month()+1),n.start.imply("year",a.year())):[n,t]=[t,n]}let i=t.clone();return i.start=t.start,i.end=n.start,i.index=Math.min(t.index,n.index),t.index{"use strict";var $b=Kn&&Kn.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Kn,"__esModule",{value:!0});var jb=$b(Ct()),eu=class extends jb.default{patternBetween(){return/^\s*(to|-)\s*$/i}};Kn.default=eu});var ph=h(ln=>{"use strict";Object.defineProperty(ln,"__esModule",{value:!0});ln.mergeDateTimeComponent=ln.mergeDateTimeResult=void 0;var Bb=Ee();function Gb(r,e){let t=r.clone(),n=r.start,i=e.start;if(t.start=tu(n,i),r.end!=null||e.end!=null){let s=r.end==null?r.start:r.end,a=e.end==null?e.start:e.end,o=tu(s,a);r.end==null&&o.date().getTime(){"use strict";Object.defineProperty(nu,"__esModule",{value:!0});var Hb=un(),hh=ph(),ru=class extends Hb.MergingRefiner{shouldMergeResults(e,t,n){return(t.start.isOnlyDate()&&n.start.isOnlyTime()||n.start.isOnlyDate()&&t.start.isOnlyTime())&&e.match(this.patternBetween())!=null}mergeResults(e,t,n){let i=t.start.isOnlyDate()?hh.mergeDateTimeResult(t,n):hh.mergeDateTimeResult(n,t);return i.index=t.index,i.text=t.text+e+n.text,i}};nu.default=ru});var mh=h(Vn=>{"use strict";var zb=Vn&&Vn.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Vn,"__esModule",{value:!0});var Kb=zb(Ht()),iu=class extends Kb.default{patternBetween(){return new RegExp("^\\s*(T|at|after|before|on|of|,|-)?\\s*$")}};Vn.default=iu});var yh=h(au=>{"use strict";Object.defineProperty(au,"__esModule",{value:!0});var Vb=new RegExp("^\\s*,?\\s*\\(?([A-Z]{2,4})\\)?(?=\\W|$)","i"),Zb={ACDT:630,ACST:570,ADT:-180,AEDT:660,AEST:600,AFT:270,AKDT:-480,AKST:-540,ALMT:360,AMST:-180,AMT:-240,ANAST:720,ANAT:720,AQTT:300,ART:-180,AST:-240,AWDT:540,AWST:480,AZOST:0,AZOT:-60,AZST:300,AZT:240,BNT:480,BOT:-240,BRST:-120,BRT:-180,BST:60,BTT:360,CAST:480,CAT:120,CCT:390,CDT:-300,CEST:120,CET:60,CHADT:825,CHAST:765,CKT:-600,CLST:-180,CLT:-240,COT:-300,CST:-360,CVT:-60,CXT:420,ChST:600,DAVT:420,EASST:-300,EAST:-360,EAT:180,ECT:-300,EDT:-240,EEST:180,EET:120,EGST:0,EGT:-60,EST:-300,ET:-300,FJST:780,FJT:720,FKST:-180,FKT:-240,FNT:-120,GALT:-360,GAMT:-540,GET:240,GFT:-180,GILT:720,GMT:0,GST:240,GYT:-240,HAA:-180,HAC:-300,HADT:-540,HAE:-240,HAP:-420,HAR:-360,HAST:-600,HAT:-90,HAY:-480,HKT:480,HLV:-210,HNA:-240,HNC:-360,HNE:-300,HNP:-480,HNR:-420,HNT:-150,HNY:-540,HOVT:420,ICT:420,IDT:180,IOT:360,IRDT:270,IRKST:540,IRKT:540,IRST:210,IST:330,JST:540,KGT:360,KRAST:480,KRAT:480,KST:540,KUYT:240,LHDT:660,LHST:630,LINT:840,MAGST:720,MAGT:720,MART:-510,MAWT:300,MDT:-360,MESZ:120,MEZ:60,MHT:720,MMT:390,MSD:240,MSK:240,MST:-420,MUT:240,MVT:300,MYT:480,NCT:660,NDT:-90,NFT:690,NOVST:420,NOVT:360,NPT:345,NST:-150,NUT:-660,NZDT:780,NZST:720,OMSST:420,OMST:420,PDT:-420,PET:-300,PETST:720,PETT:720,PGT:600,PHOT:780,PHT:480,PKT:300,PMDT:-120,PMST:-180,PONT:660,PST:-480,PT:-480,PWT:540,PYST:-180,PYT:-240,RET:240,SAMT:240,SAST:120,SBT:660,SCT:240,SGT:480,SRT:-180,SST:-660,TAHT:-600,TFT:300,TJT:300,TKT:780,TLT:540,TMT:300,TVT:720,ULAT:480,UTC:0,UYST:-120,UYT:-180,UZT:300,VET:-210,VLAST:660,VLAT:660,VUT:660,WAST:120,WAT:60,WEST:60,WESZ:60,WET:0,WEZ:0,WFT:720,WGST:-120,WGT:-180,WIB:420,WIT:540,WITA:480,WST:780,WT:0,YAKST:600,YAKT:600,YAPT:600,YEKST:360,YEKT:360},su=class{constructor(e){this.timezone=Object.assign(Object.assign({},Zb),e)}refine(e,t){var n;let i=(n=e.option.timezones)!==null&&n!==void 0?n:{};return t.forEach(s=>{var a,o;let u=e.text.substring(s.index+s.text.length),l=Vb.exec(u);if(!l)return;let c=l[1].toUpperCase(),d=(o=(a=i[c])!==null&&a!==void 0?a:this.timezone[c])!==null&&o!==void 0?o:null;if(d===null)return;e.debug(()=>{console.log(`Extracting timezone: '${c}' into: ${d} for: ${s.start}`)});let f=s.start.get("timezoneOffset");f!==null&&d!=f&&(s.start.isCertain("timezoneOffset")||c!=l[1])||s.start.isOnlyDate()&&c!=l[1]||(s.text+=l[0],s.start.isCertain("timezoneOffset")||s.start.assign("timezoneOffset",d),s.end!=null&&!s.end.isCertain("timezoneOffset")&&s.end.assign("timezoneOffset",d))}),t}};au.default=su});var qs=h(uu=>{"use strict";Object.defineProperty(uu,"__esModule",{value:!0});var Xb=new RegExp("^\\s*(?:\\(?(?:GMT|UTC)\\s?)?([+-])(\\d{1,2})(?::?(\\d{2}))?\\)?","i"),Qb=1,Jb=2,ev=3,ou=class{refine(e,t){return t.forEach(function(n){if(n.start.isCertain("timezoneOffset"))return;let i=e.text.substring(n.index+n.text.length),s=Xb.exec(i);if(!s)return;e.debug(()=>{console.log(`Extracting timezone: '${s[0]}' into : ${n}`)});let a=parseInt(s[Jb]),o=parseInt(s[ev]||"0"),u=a*60+o;u>14*60||(s[Qb]==="-"&&(u=-u),n.end!=null&&n.end.assign("timezoneOffset",u),n.start.assign("timezoneOffset",u),n.text+=s[0])}),t}};uu.default=ou});var gh=h(cu=>{"use strict";Object.defineProperty(cu,"__esModule",{value:!0});var lu=class{refine(e,t){if(t.length<2)return t;let n=[],i=t[0];for(let s=1;si.text.length&&(i=a):(n.push(i),i=a)}return i!=null&&n.push(i),n}};cu.default=lu});var _h=h(Zn=>{"use strict";var tv=Zn&&Zn.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Zn,"__esModule",{value:!0});var rv=tv(K()),du=class{refine(e,t){return e.option.forwardDate&&t.forEach(function(n){let i=rv.default(e.refDate);if(n.start.isOnlyDayMonthComponent()&&i.isAfter(n.start.dayjs()))for(let s=0;s<3&&i.isAfter(n.start.dayjs());s++)n.start.imply("year",n.start.get("year")+1),e.debug(()=>{console.log(`Forward yearly adjusted for ${n} (${n.start})`)}),n.end&&!n.end.isCertain("year")&&(n.end.imply("year",n.end.get("year")+1),e.debug(()=>{console.log(`Forward yearly adjusted for ${n} (${n.end})`)}));n.start.isOnlyWeekdayComponent()&&i.isAfter(n.start.dayjs())&&(i.day()>=n.start.get("weekday")?i=i.day(n.start.get("weekday")+7):i=i.day(n.start.get("weekday")),n.start.imply("day",i.date()),n.start.imply("month",i.month()+1),n.start.imply("year",i.year()),e.debug(()=>{console.log(`Forward weekly adjusted for ${n} (${n.start})`)}),n.end&&n.end.isOnlyWeekdayComponent()&&(i.day()>n.end.get("weekday")?i=i.day(n.end.get("weekday")+7):i=i.day(n.end.get("weekday")),n.end.imply("day",i.date()),n.end.imply("month",i.month()+1),n.end.imply("year",i.year()),e.debug(()=>{console.log(`Forward weekly adjusted for ${n} (${n.end})`)})))}),t}};Zn.default=du});var Th=h(pu=>{"use strict";Object.defineProperty(pu,"__esModule",{value:!0});var nv=un(),fu=class extends nv.Filter{constructor(e){super(),this.strictMode=e}isValid(e,t){return t.text.replace(" ","").match(/^\d*(\.\d*)?$/)?(e.debug(()=>{console.log(`Removing unlikely result '${t.text}'`)}),!1):t.start.isValidDate()?t.end&&!t.end.isValidDate()?(e.debug(()=>{console.log(`Removing invalid result: ${t} (${t.end})`)}),!1):this.strictMode?this.isStrictModeValid(e,t):!0:(e.debug(()=>{console.log(`Removing invalid result: ${t} (${t.start})`)}),!1)}isStrictModeValid(e,t){return t.start.isOnlyWeekdayComponent()?(e.debug(()=>{console.log(`(Strict) Removing weekday only component: ${t} (${t.end})`)}),!1):t.start.isOnlyTime()&&(!t.start.isCertain("hour")||!t.start.isCertain("minute"))?(e.debug(()=>{console.log(`(Strict) Removing uncertain time component: ${t} (${t.end})`)}),!1):!0}};pu.default=fu});var yu=h(mu=>{"use strict";Object.defineProperty(mu,"__esModule",{value:!0});var iv=R(),sv=new RegExp("([0-9]{4})\\-([0-9]{1,2})\\-([0-9]{1,2})(?:T([0-9]{1,2}):([0-9]{1,2})(?::([0-9]{1,2})(?:\\.(\\d{1,4}))?)?(?:Z|([+-]\\d{2}):?(\\d{2})?)?)?(?=\\W|$)","i"),av=1,ov=2,uv=3,bh=4,lv=5,vh=6,Eh=7,Rh=8,wh=9,hu=class extends iv.AbstractParserWithWordBoundaryChecking{innerPattern(){return sv}innerExtract(e,t){let n={};if(n.year=parseInt(t[av]),n.month=parseInt(t[ov]),n.day=parseInt(t[uv]),t[bh]!=null)if(n.hour=parseInt(t[bh]),n.minute=parseInt(t[lv]),t[vh]!=null&&(n.second=parseInt(t[vh])),t[Eh]!=null&&(n.millisecond=parseInt(t[Eh])),t[Rh]==null)n.timezoneOffset=0;else{let i=parseInt(t[Rh]),s=0;t[wh]!=null&&(s=parseInt(t[wh]));let a=i*60;a<0?a-=s:a+=s,n.timezoneOffset=a}return n}};mu.default=hu});var Dh=h(_u=>{"use strict";Object.defineProperty(_u,"__esModule",{value:!0});var cv=un(),gu=class extends cv.MergingRefiner{mergeResults(e,t,n){let i=n.clone();return i.index=t.index,i.text=t.text+e+i.text,i.start.assign("weekday",t.start.get("weekday")),i.end&&i.end.assign("weekday",t.start.get("weekday")),i}shouldMergeResults(e,t,n){return t.start.isOnlyWeekdayComponent()&&!t.start.isCertain("hour")&&n.start.isCertain("day")&&e.match(/^,?\s*$/)!=null}};_u.default=gu});var zt=h(cn=>{"use strict";var qr=cn&&cn.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(cn,"__esModule",{value:!0});cn.includeCommonConfiguration=void 0;var dv=qr(yh()),fv=qr(qs()),Mh=qr(gh()),pv=qr(_h()),hv=qr(Th()),mv=qr(yu()),yv=qr(Dh());function gv(r,e=!1){return r.parsers.unshift(new mv.default),r.refiners.unshift(new yv.default),r.refiners.unshift(new dv.default),r.refiners.unshift(new fv.default),r.refiners.unshift(new Mh.default),r.refiners.push(new Mh.default),r.refiners.push(new pv.default),r.refiners.push(new hv.default(e)),r}cn.includeCommonConfiguration=gv});var Vt=h(Q=>{"use strict";var _v=Q&&Q.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Q,"__esModule",{value:!0});Q.noon=Q.morning=Q.midnight=Q.yesterdayEvening=Q.evening=Q.lastNight=Q.tonight=Q.theDayAfter=Q.tomorrow=Q.theDayBefore=Q.yesterday=Q.today=Q.now=void 0;var xt=he(),dn=_v(K()),Kt=it(),Xn=Ee();function Tv(r){let e=dn.default(r.instant),t=new xt.ParsingComponents(r,{});return Kt.assignSimilarDate(t,e),Kt.assignSimilarTime(t,e),r.timezoneOffset!==null&&t.assign("timezoneOffset",e.utcOffset()),t}Q.now=Tv;function bv(r){let e=dn.default(r.instant),t=new xt.ParsingComponents(r,{});return Kt.assignSimilarDate(t,e),Kt.implySimilarTime(t,e),t}Q.today=bv;function vv(r){return Oh(r,1)}Q.yesterday=vv;function Oh(r,e){return Tu(r,-e)}Q.theDayBefore=Oh;function Ev(r){return Tu(r,1)}Q.tomorrow=Ev;function Tu(r,e){let t=dn.default(r.instant),n=new xt.ParsingComponents(r,{});return t=t.add(e,"day"),Kt.assignSimilarDate(n,t),Kt.implySimilarTime(n,t),n}Q.theDayAfter=Tu;function Rv(r,e=22){let t=dn.default(r.instant),n=new xt.ParsingComponents(r,{});return n.imply("hour",e),n.imply("meridiem",Xn.Meridiem.PM),Kt.assignSimilarDate(n,t),n}Q.tonight=Rv;function wv(r,e=0){let t=dn.default(r.instant),n=new xt.ParsingComponents(r,{});return t.hour()<6&&(t=t.add(-1,"day")),Kt.assignSimilarDate(n,t),n.imply("hour",e),n}Q.lastNight=wv;function Dv(r,e=20){let t=new xt.ParsingComponents(r,{});return t.imply("meridiem",Xn.Meridiem.PM),t.imply("hour",e),t}Q.evening=Dv;function Mv(r,e=20){let t=dn.default(r.instant),n=new xt.ParsingComponents(r,{});return t=t.add(-1,"day"),Kt.assignSimilarDate(n,t),n.imply("hour",e),n.imply("meridiem",Xn.Meridiem.PM),n}Q.yesterdayEvening=Mv;function Ov(r){let e=new xt.ParsingComponents(r,{});return e.imply("hour",0),e.imply("minute",0),e.imply("second",0),e}Q.midnight=Ov;function Pv(r,e=6){let t=new xt.ParsingComponents(r,{});return t.imply("meridiem",Xn.Meridiem.AM),t.imply("hour",e),t}Q.morning=Pv;function Av(r){let e=new xt.ParsingComponents(r,{});return e.imply("meridiem",Xn.Meridiem.AM),e.imply("hour",12),e}Q.noon=Av});var Ph=h(gt=>{"use strict";var kv=gt&>.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),Nv=gt&>.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),Cv=gt&>.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&kv(e,r,t);return Nv(e,r),e},xv=gt&>.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(gt,"__esModule",{value:!0});var Sv=xv(K()),Iv=R(),Uv=it(),Qn=Cv(Vt()),Fv=/(now|today|tonight|tomorrow|tmr|tmrw|yesterday|last\s*night)(?=\W|$)/i,bu=class extends Iv.AbstractParserWithWordBoundaryChecking{innerPattern(e){return Fv}innerExtract(e,t){let n=Sv.default(e.refDate),i=t[0].toLowerCase(),s=e.createParsingComponents();switch(i){case"now":return Qn.now(e.reference);case"today":return Qn.today(e.reference);case"yesterday":return Qn.yesterday(e.reference);case"tomorrow":case"tmr":case"tmrw":return Qn.tomorrow(e.reference);case"tonight":return Qn.tonight(e.reference);default:i.match(/last\s*night/)&&(n.hour()>6&&(n=n.add(-1,"day")),Uv.assignSimilarDate(s,n),s.imply("hour",0));break}return s}};gt.default=bu});var Ah=h(Jn=>{"use strict";var qv=Jn&&Jn.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Jn,"__esModule",{value:!0});var Ws=Ee(),Wv=R(),Lv=qv(K()),Yv=it(),$v=/(?:this)?\s{0,3}(morning|afternoon|evening|night|midnight|noon)(?=\W|$)/i,vu=class extends Wv.AbstractParserWithWordBoundaryChecking{innerPattern(){return $v}innerExtract(e,t){let n=Lv.default(e.refDate),i=e.createParsingComponents();switch(t[1].toLowerCase()){case"afternoon":i.imply("meridiem",Ws.Meridiem.PM),i.imply("hour",15);break;case"evening":case"night":i.imply("meridiem",Ws.Meridiem.PM),i.imply("hour",20);break;case"midnight":Yv.assignTheNextDay(i,n),i.imply("hour",0),i.imply("minute",0),i.imply("second",0);break;case"morning":i.imply("meridiem",Ws.Meridiem.AM),i.imply("hour",6);break;case"noon":i.imply("meridiem",Ws.Meridiem.AM),i.imply("hour",12);break}return i}};Jn.default=vu});var Wr=h(br=>{"use strict";var jv=br&&br.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(br,"__esModule",{value:!0});br.toDayJSClosestWeekday=br.toDayJSWeekday=void 0;var kh=jv(K());function Bv(r,e,t){if(!t)return Nh(r,e);let n=kh.default(r);switch(t){case"this":n=n.day(e);break;case"next":n=n.day(e+7);break;case"last":n=n.day(e-7);break}return n}br.toDayJSWeekday=Bv;function Nh(r,e){let t=kh.default(r),n=t.day();return Math.abs(e-7-n){"use strict";Object.defineProperty(Ru,"__esModule",{value:!0});var Ch=Se(),Gv=J(),Hv=R(),zv=Wr(),Kv=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:on\\s*?)?(?:(this|last|past|next)\\s*)?(${Gv.matchAnyPattern(Ch.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(this|last|past|next)\\s*week)?(?=\\W|$)`,"i"),Vv=1,Zv=2,Xv=3,Eu=class extends Hv.AbstractParserWithWordBoundaryChecking{innerPattern(){return Kv}innerExtract(e,t){let n=t[Zv].toLowerCase(),i=Ch.WEEKDAY_DICTIONARY[n],s=t[Vv],a=t[Xv],o=s||a;o=o||"",o=o.toLowerCase();let u=null;o=="last"||o=="past"?u="last":o=="next"?u="next":o=="this"&&(u="this");let l=zv.toDayJSWeekday(e.refDate,i,u);return e.createParsingComponents().assign("weekday",i).imply("day",l.date()).imply("month",l.month()+1).imply("year",l.year())}};Ru.default=Eu});var Uh=h(ei=>{"use strict";var Qv=ei&&ei.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ei,"__esModule",{value:!0});var Ih=Se(),Sh=he(),Jv=Qv(K()),e1=R(),t1=J(),r1=new RegExp(`(this|last|past|next|after\\s*this)\\s*(${t1.matchAnyPattern(Ih.TIME_UNIT_DICTIONARY)})(?=\\s*)(?=\\W|$)`,"i"),n1=1,i1=2,wu=class extends e1.AbstractParserWithWordBoundaryChecking{innerPattern(){return r1}innerExtract(e,t){let n=t[n1].toLowerCase(),i=t[i1].toLowerCase(),s=Ih.TIME_UNIT_DICTIONARY[i];if(n=="next"||n.startsWith("after")){let u={};return u[s]=1,Sh.ParsingComponents.createRelativeFromReference(e.reference,u)}if(n=="last"||n=="past"){let u={};return u[s]=-1,Sh.ParsingComponents.createRelativeFromReference(e.reference,u)}let a=e.createParsingComponents(),o=Jv.default(e.reference.instant);return i.match(/week/i)?(o=o.add(-o.get("d"),"d"),a.imply("day",o.date()),a.imply("month",o.month()+1),a.imply("year",o.year())):i.match(/month/i)?(o=o.add(-o.date()+1,"d"),a.imply("day",o.date()),a.assign("year",o.year()),a.assign("month",o.month()+1)):i.match(/year/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),a.imply("day",o.date()),a.imply("month",o.month()+1),a.assign("year",o.year())),a}};ei.default=wu});var _t=h(hn=>{"use strict";Object.defineProperty(hn,"__esModule",{value:!0});hn.ParsingContext=hn.Chrono=void 0;var fn=he(),s1=Du(),pn=class{constructor(e){e=e||s1.createCasualConfiguration(),this.parsers=[...e.parsers],this.refiners=[...e.refiners]}clone(){return new pn({parsers:[...this.parsers],refiners:[...this.refiners]})}parseDate(e,t,n){let i=this.parse(e,t,n);return i.length>0?i[0].start.date():null}parse(e,t,n){let i=new Ls(e,t,n),s=[];return this.parsers.forEach(a=>{let o=pn.executeParser(i,a);s=s.concat(o)}),s.sort((a,o)=>a.index-o.index),this.refiners.forEach(function(a){s=a.refine(i,s)}),s}static executeParser(e,t){let n=[],i=t.pattern(e),s=e.text,a=e.text,o=i.exec(a);for(;o;){let u=o.index+s.length-a.length;o.index=u;let l=t.extract(e,o);if(!l){a=s.substring(o.index+1),o=i.exec(a);continue}let c=null;l instanceof fn.ParsingResult?c=l:l instanceof fn.ParsingComponents?(c=e.createParsingResult(o.index,o[0]),c.start=l):c=e.createParsingResult(o.index,o[0],l),e.debug(()=>console.log(`${t.constructor.name} extracted result ${c}`)),n.push(c),a=s.substring(u+c.text.length),o=i.exec(a)}return n}};hn.Chrono=pn;var Ls=class{constructor(e,t,n){this.text=e,this.reference=new fn.ReferenceWithTimezone(t),this.option=n!=null?n:{},this.refDate=this.reference.instant}createParsingComponents(e){return e instanceof fn.ParsingComponents?e:new fn.ParsingComponents(this.reference,e)}createParsingResult(e,t,n,i){let s=typeof t=="string"?t:this.text.substring(e,t),a=n?this.createParsingComponents(n):null,o=i?this.createParsingComponents(i):null;return new fn.ParsingResult(this.reference,e,s,a,o)}debug(e){this.option.debug&&(this.option.debug instanceof Function?this.option.debug(e):this.option.debug.debug(e))}};hn.ParsingContext=Ls});var Lr=h(Pu=>{"use strict";Object.defineProperty(Pu,"__esModule",{value:!0});var Fh=xe(),a1=new RegExp("([^\\d]|^)([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})(?:[\\/\\.\\-]([0-9]{4}|[0-9]{2}))?(\\W|$)","i"),Ys=1,qh=5,Wh=2,Lh=3,Mu=4,Ou=class{constructor(e){this.groupNumberMonth=e?Lh:Wh,this.groupNumberDay=e?Wh:Lh}pattern(){return a1}extract(e,t){if(t[Ys]=="/"||t[qh]=="/"){t.index+=t[0].length;return}let n=t.index+t[Ys].length,i=t[0].substr(t[Ys].length,t[0].length-t[Ys].length-t[qh].length);if(i.match(/^\d\.\d$/)||i.match(/^\d\.\d{1,2}\.\d{1,2}\s*$/)||!t[Mu]&&t[0].indexOf("/")<0)return;let s=e.createParsingResult(n,i),a=parseInt(t[this.groupNumberMonth]),o=parseInt(t[this.groupNumberDay]);if((a<1||a>12)&&a>12)if(o>=1&&o<=12&&a<=31)[o,a]=[a,o];else return null;if(o<1||o>31)return null;if(s.start.assign("day",o),s.start.assign("month",a),t[Mu]){let u=parseInt(t[Mu]),l=Fh.findMostLikelyADYear(u);s.start.assign("year",l)}else{let u=Fh.findYearClosestToRef(e.refDate,o,a);s.start.imply("year",u)}return s}};Pu.default=Ou});var $h=h(ku=>{"use strict";Object.defineProperty(ku,"__esModule",{value:!0});var Yh=Se(),o1=he(),u1=R(),l1=st(),c1=new RegExp(`(this|last|past|next|after|\\+|-)\\s*(${Yh.TIME_UNITS_PATTERN})(?=\\W|$)`,"i"),Au=class extends u1.AbstractParserWithWordBoundaryChecking{innerPattern(){return c1}innerExtract(e,t){let n=t[1].toLowerCase(),i=Yh.parseTimeUnits(t[2]);switch(n){case"last":case"past":case"-":i=l1.reverseTimeUnits(i);break}return o1.ParsingComponents.createRelativeFromReference(e.reference,i)}};ku.default=Au});var Bh=h(xu=>{"use strict";Object.defineProperty(xu,"__esModule",{value:!0});var d1=un(),Nu=he(),f1=Se(),p1=st();function jh(r){return r.text.match(/\s+(before|from)$/i)!=null}function h1(r){return r.text.match(/\s+(after|since)$/i)!=null}var Cu=class extends d1.MergingRefiner{patternBetween(){return/^\s*$/i}shouldMergeResults(e,t,n){return!e.match(this.patternBetween())||!jh(t)&&!h1(t)?!1:!!n.start.get("day")&&!!n.start.get("month")&&!!n.start.get("year")}mergeResults(e,t,n){let i=f1.parseTimeUnits(t.text);jh(t)&&(i=p1.reverseTimeUnits(i));let s=Nu.ParsingComponents.createRelativeFromReference(new Nu.ReferenceWithTimezone(n.start.date()),i);return new Nu.ParsingResult(n.reference,t.index,`${t.text}${e}${n.text}`,s)}};xu.default=Cu});var Du=h(_e=>{"use strict";var we=_e&&_e.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(_e,"__esModule",{value:!0});_e.createConfiguration=_e.createCasualConfiguration=_e.parseDate=_e.parse=_e.GB=_e.strict=_e.casual=void 0;var m1=we(jp()),y1=we(Vp()),g1=we(eh()),_1=we(nh()),T1=we(ah()),b1=we(oh()),v1=we(lh()),E1=we(ch()),R1=we(dh()),w1=we(fh()),D1=we(mh()),M1=zt(),O1=we(Ph()),P1=we(Ah()),A1=we(xh()),k1=we(Uh()),Su=_t(),N1=we(Lr()),C1=we($h()),x1=we(Bh());_e.casual=new Su.Chrono(Gh(!1));_e.strict=new Su.Chrono($s(!0,!1));_e.GB=new Su.Chrono($s(!1,!0));function S1(r,e,t){return _e.casual.parse(r,e,t)}_e.parse=S1;function I1(r,e,t){return _e.casual.parseDate(r,e,t)}_e.parseDate=I1;function Gh(r=!1){let e=$s(!1,r);return e.parsers.unshift(new O1.default),e.parsers.unshift(new P1.default),e.parsers.unshift(new _1.default),e.parsers.unshift(new k1.default),e.parsers.unshift(new C1.default),e}_e.createCasualConfiguration=Gh;function $s(r=!0,e=!1){return M1.includeCommonConfiguration({parsers:[new N1.default(e),new m1.default,new y1.default,new g1.default,new A1.default,new T1.default,new b1.default,new v1.default(r),new E1.default(r),new R1.default(r)],refiners:[new x1.default,new D1.default,new w1.default]},r)}_e.createConfiguration=$s});var Hh=h(Uu=>{"use strict";Object.defineProperty(Uu,"__esModule",{value:!0});var U1=Fr(),Iu=class extends U1.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:um|von)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|bis)\\s*"}extractPrimaryTimeComponents(e,t){return t[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(e,t)}};Uu.default=Iu});var ti=h(te=>{"use strict";Object.defineProperty(te,"__esModule",{value:!0});te.parseTimeUnits=te.TIME_UNITS_PATTERN=te.parseYear=te.YEAR_PATTERN=te.parseNumberPattern=te.NUMBER_PATTERN=te.TIME_UNIT_DICTIONARY=te.INTEGER_WORD_DICTIONARY=te.MONTH_DICTIONARY=te.WEEKDAY_DICTIONARY=void 0;var Fu=J(),F1=xe();te.WEEKDAY_DICTIONARY={sonntag:0,so:0,montag:1,mo:1,dienstag:2,di:2,mittwoch:3,mi:3,donnerstag:4,do:4,freitag:5,fr:5,samstag:6,sa:6};te.MONTH_DICTIONARY={januar:1,j\u00E4nner:1,janner:1,jan:1,"jan.":1,februar:2,feber:2,feb:2,"feb.":2,m\u00E4rz:3,maerz:3,m\u00E4r:3,"m\xE4r.":3,mrz:3,"mrz.":3,april:4,apr:4,"apr.":4,mai:5,juni:6,jun:6,"jun.":6,juli:7,jul:7,"jul.":7,august:8,aug:8,"aug.":8,september:9,sep:9,"sep.":9,sept:9,"sept.":9,oktober:10,okt:10,"okt.":10,november:11,nov:11,"nov.":11,dezember:12,dez:12,"dez.":12};te.INTEGER_WORD_DICTIONARY={eins:1,eine:1,einem:1,einen:1,einer:1,zwei:2,drei:3,vier:4,f\u00FCnf:5,fuenf:5,sechs:6,sieben:7,acht:8,neun:9,zehn:10,elf:11,zw\u00F6lf:12,zwoelf:12};te.TIME_UNIT_DICTIONARY={sek:"second",sekunde:"second",sekunden:"second",min:"minute",minute:"minute",minuten:"minute",h:"hour",std:"hour",stunde:"hour",stunden:"hour",tag:"d",tage:"d",tagen:"d",woche:"week",wochen:"week",monat:"month",monate:"month",monaten:"month",monats:"month",quartal:"quarter",quartals:"quarter",quartale:"quarter",quartalen:"quarter",a:"year",j:"year",jr:"year",jahr:"year",jahre:"year",jahren:"year",jahres:"year"};te.NUMBER_PATTERN=`(?:${Fu.matchAnyPattern(te.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s*an?)?|an?\\b(?:\\s*few)?|few|several|a?\\s*couple\\s*(?:of)?)`;function Kh(r){let e=r.toLowerCase();return te.INTEGER_WORD_DICTIONARY[e]!==void 0?te.INTEGER_WORD_DICTIONARY[e]:e==="a"||e==="an"?1:e.match(/few/)?3:e.match(/half/)?.5:e.match(/couple/)?2:e.match(/several/)?7:parseFloat(e)}te.parseNumberPattern=Kh;te.YEAR_PATTERN="(?:[0-9]{1,4}(?:\\s*[vn]\\.?\\s*(?:C(?:hr)?|(?:u\\.?|d\\.?(?:\\s*g\\.?)?)?\\s*Z)\\.?|\\s*(?:u\\.?|d\\.?(?:\\s*g\\.)?)\\s*Z\\.?)?)";function q1(r){if(/v/i.test(r))return-parseInt(r.replace(/[^0-9]+/gi,""));if(/n/i.test(r))return parseInt(r.replace(/[^0-9]+/gi,""));if(/z/i.test(r))return parseInt(r.replace(/[^0-9]+/gi,""));let e=parseInt(r);return F1.findMostLikelyADYear(e)}te.parseYear=q1;var Vh=`(${te.NUMBER_PATTERN})\\s{0,5}(${Fu.matchAnyPattern(te.TIME_UNIT_DICTIONARY)})\\s{0,5}`,zh=new RegExp(Vh,"i");te.TIME_UNITS_PATTERN=Fu.repeatedTimeunitPattern("",Vh);function W1(r){let e={},t=r,n=zh.exec(t);for(;n;)L1(e,n),t=t.substring(n[0].length),n=zh.exec(t);return e}te.parseTimeUnits=W1;function L1(r,e){let t=Kh(e[1]),n=te.TIME_UNIT_DICTIONARY[e[2].toLowerCase()];r[n]=t}});var Xh=h(Wu=>{"use strict";Object.defineProperty(Wu,"__esModule",{value:!0});var Zh=ti(),Y1=J(),$1=R(),j1=Wr(),B1=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:a[mn]\\s*?)?(?:(diese[mn]|letzte[mn]|n(?:\xE4|ae)chste[mn])\\s*)?(${Y1.matchAnyPattern(Zh.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(diese|letzte|n(?:\xE4|ae)chste)\\s*woche)?(?=\\W|$)`,"i"),G1=1,H1=3,z1=2,qu=class extends $1.AbstractParserWithWordBoundaryChecking{innerPattern(){return B1}innerExtract(e,t){let n=t[z1].toLowerCase(),i=Zh.WEEKDAY_DICTIONARY[n],s=t[G1],a=t[H1],o=s||a;o=o||"",o=o.toLowerCase();let u=null;o.match(/letzte/)?u="last":o.match(/chste/)?u="next":o.match(/diese/)&&(u="this");let l=j1.toDayJSWeekday(e.refDate,i,u);return e.createParsingComponents().assign("weekday",i).imply("day",l.date()).imply("month",l.month()+1).imply("year",l.year())}};Wu.default=qu});var tm=h(Lu=>{"use strict";Object.defineProperty(Lu,"__esModule",{value:!0});var vr=Ee(),K1=new RegExp("(^|\\s|T)(?:(?:um|von)\\s*)?(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s)?)?(?:\\s*Uhr)?(?:\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\s+der\\s+Nacht))?(?=\\W|$)","i"),V1=new RegExp("^\\s*(\\-|\\\u2013|\\~|\\\u301C|bis(?:\\s+um)?|\\?)\\s*(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s)?)?(?:\\s*Uhr)?(?:\\s*(morgens|vormittags|nachmittags|abends|nachts|am\\s+(?:Morgen|Vormittag|Nachmittag|Abend)|in\\s+der\\s+Nacht))?(?=\\W|$)","i"),Z1=2,Qh=3,Jh=4,em=5,mn=class{pattern(e){return K1}extract(e,t){let n=e.createParsingResult(t.index+t[1].length,t[0].substring(t[1].length));if(n.text.match(/^\d{4}$/)||(n.start=mn.extractTimeComponent(n.start.clone(),t),!n.start))return t.index+=t[0].length,null;let i=e.text.substring(t.index+t[0].length),s=V1.exec(i);return s&&(n.end=mn.extractTimeComponent(n.start.clone(),s),n.end&&(n.text+=s[0])),n}static extractTimeComponent(e,t){let n=0,i=0,s=null;if(n=parseInt(t[Z1]),t[Qh]!=null&&(i=parseInt(t[Qh])),i>=60||n>24)return null;if(n>=12&&(s=vr.Meridiem.PM),t[em]!=null){if(n>12)return null;let a=t[em].toLowerCase();a.match(/morgen|vormittag/)&&(s=vr.Meridiem.AM,n==12&&(n=0)),a.match(/nachmittag|abend/)&&(s=vr.Meridiem.PM,n!=12&&(n+=12)),a.match(/nacht/)&&(n==12?(s=vr.Meridiem.AM,n=0):n<6?s=vr.Meridiem.AM:(s=vr.Meridiem.PM,n+=12))}if(e.assign("hour",n),e.assign("minute",i),s!==null?e.assign("meridiem",s):n<12?e.imply("meridiem",vr.Meridiem.AM):e.imply("meridiem",vr.Meridiem.PM),t[Jh]!=null){let a=parseInt(t[Jh]);if(a>=60)return null;e.assign("second",a)}return e}};Lu.default=mn});var rm=h(ri=>{"use strict";var X1=ri&&ri.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ri,"__esModule",{value:!0});var Q1=X1(Ct()),Yu=class extends Q1.default{patternBetween(){return/^\s*(bis(?:\s*(?:am|zum))?|-)\s*$/i}};ri.default=Yu});var nm=h(ni=>{"use strict";var J1=ni&&ni.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ni,"__esModule",{value:!0});var eE=J1(Ht()),$u=class extends eE.default{patternBetween(){return new RegExp("^\\s*(T|um|am|,|-)?\\s*$")}};ni.default=$u});var ju=h(si=>{"use strict";var tE=si&&si.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(si,"__esModule",{value:!0});var rE=tE(K()),Yr=Ee(),nE=R(),iE=it(),sE=st(),ii=class extends nE.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(diesen)?\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht)(?=\W|$)/i}innerExtract(e,t){let n=rE.default(e.refDate),i=t[2].toLowerCase(),s=e.createParsingComponents();return iE.implySimilarTime(s,n),ii.extractTimeComponents(s,i)}static extractTimeComponents(e,t){switch(t){case"morgen":e.imply("hour",6),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Yr.Meridiem.AM);break;case"vormittag":e.imply("hour",9),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Yr.Meridiem.AM);break;case"mittag":case"mittags":e.imply("hour",12),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Yr.Meridiem.AM);break;case"nachmittag":e.imply("hour",15),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Yr.Meridiem.PM);break;case"abend":e.imply("hour",18),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Yr.Meridiem.PM);break;case"nacht":e.imply("hour",22),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Yr.Meridiem.PM);break;case"mitternacht":e.get("hour")>1&&(e=sE.addImpliedTimeUnits(e,{day:1})),e.imply("hour",0),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Yr.Meridiem.AM);break}return e}};si.default=ii});var am=h(Tt=>{"use strict";var aE=Tt&&Tt.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),oE=Tt&&Tt.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),uE=Tt&&Tt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&aE(e,r,t);return oE(e,r),e},sm=Tt&&Tt.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Tt,"__esModule",{value:!0});var lE=sm(K()),cE=R(),$r=it(),dE=sm(ju()),im=uE(Vt()),fE=new RegExp("(jetzt|heute|morgen|\xFCbermorgen|uebermorgen|gestern|vorgestern|letzte\\s*nacht)(?:\\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht))?(?=\\W|$)","i"),pE=1,hE=2,Bu=class extends cE.AbstractParserWithWordBoundaryChecking{innerPattern(e){return fE}innerExtract(e,t){let n=lE.default(e.refDate),i=(t[pE]||"").toLowerCase(),s=(t[hE]||"").toLowerCase(),a=e.createParsingComponents();switch(i){case"jetzt":a=im.now(e.reference);break;case"heute":a=im.today(e.reference);break;case"morgen":$r.assignTheNextDay(a,n);break;case"\xFCbermorgen":case"uebermorgen":n=n.add(1,"day"),$r.assignTheNextDay(a,n);break;case"gestern":n=n.add(-1,"day"),$r.assignSimilarDate(a,n),$r.implySimilarTime(a,n);break;case"vorgestern":n=n.add(-2,"day"),$r.assignSimilarDate(a,n),$r.implySimilarTime(a,n);break;default:i.match(/letzte\s*nacht/)&&(n.hour()>6&&(n=n.add(-1,"day")),$r.assignSimilarDate(a,n),a.imply("hour",0));break}return s&&(a=dE.default.extractTimeComponents(a,s)),a}};Tt.default=Bu});var fm=h(Hu=>{"use strict";Object.defineProperty(Hu,"__esModule",{value:!0});var mE=xe(),cm=ti(),dm=ti(),yE=J(),gE=R(),_E=new RegExp(`(?:am\\s*?)?(?:den\\s*?)?([0-9]{1,2})\\.(?:\\s*(?:bis(?:\\s*(?:am|zum))?|\\-|\\\u2013|\\s)\\s*([0-9]{1,2})\\.?)?\\s*(${yE.matchAnyPattern(cm.MONTH_DICTIONARY)})(?:(?:-|/|,?\\s*)(${dm.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),om=1,um=2,TE=3,lm=4,Gu=class extends gE.AbstractParserWithWordBoundaryChecking{innerPattern(){return _E}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=cm.MONTH_DICTIONARY[t[TE].toLowerCase()],s=parseInt(t[om]);if(s>31)return t.index=t.index+t[om].length,null;if(n.start.assign("month",i),n.start.assign("day",s),t[lm]){let a=dm.parseYear(t[lm]);n.start.assign("year",a)}else{let a=mE.findYearClosestToRef(e.refDate,s,i);n.start.imply("year",a)}if(t[um]){let a=parseInt(t[um]);n.end=n.start.clone(),n.end.assign("day",a)}return n}};Hu.default=Gu});var pm=h(Ku=>{"use strict";Object.defineProperty(Ku,"__esModule",{value:!0});var js=ti(),bE=he(),vE=R(),EE=st(),RE=J(),zu=class extends vE.AbstractParserWithWordBoundaryChecking{constructor(){super()}innerPattern(){return new RegExp(`(?:\\s*((?:n\xE4chste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?|vor|in)\\s*)?(${js.NUMBER_PATTERN})?(?:\\s*(n\xE4chste|kommende|folgende|letzte|vergangene|vorige|vor(?:her|an)gegangene)(?:s|n|m|r)?)?\\s*(${RE.matchAnyPattern(js.TIME_UNIT_DICTIONARY)})`,"i")}innerExtract(e,t){let n=t[2]?js.parseNumberPattern(t[2]):1,i=js.TIME_UNIT_DICTIONARY[t[4].toLowerCase()],s={};s[i]=n;let a=t[1]||t[3]||"";if(a=a.toLowerCase(),!!a)return(/vor/.test(a)||/letzte/.test(a)||/vergangen/.test(a))&&(s=EE.reverseTimeUnits(s)),bE.ParsingComponents.createRelativeFromReference(e.reference,s)}};Ku.default=zu});var ym=h(De=>{"use strict";var bt=De&&De.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(De,"__esModule",{value:!0});De.createConfiguration=De.createCasualConfiguration=De.parseDate=De.parse=De.strict=De.casual=void 0;var wE=zt(),hm=_t(),DE=bt(Lr()),ME=bt(yu()),OE=bt(Hh()),PE=bt(Xh()),AE=bt(tm()),kE=bt(rm()),NE=bt(nm()),CE=bt(am()),xE=bt(ju()),SE=bt(fm()),IE=bt(pm());De.casual=new hm.Chrono(mm());De.strict=new hm.Chrono(Vu(!0));function UE(r,e,t){return De.casual.parse(r,e,t)}De.parse=UE;function FE(r,e,t){return De.casual.parseDate(r,e,t)}De.parseDate=FE;function mm(r=!0){let e=Vu(!1,r);return e.parsers.unshift(new xE.default),e.parsers.unshift(new CE.default),e.parsers.unshift(new IE.default),e}De.createCasualConfiguration=mm;function Vu(r=!0,e=!0){return wE.includeCommonConfiguration({parsers:[new ME.default,new DE.default(e),new OE.default,new AE.default,new SE.default,new PE.default],refiners:[new kE.default,new NE.default]},r)}De.createConfiguration=Vu});var _m=h(vt=>{"use strict";var qE=vt&&vt.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),WE=vt&&vt.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),LE=vt&&vt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&qE(e,r,t);return WE(e,r),e},YE=vt&&vt.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(vt,"__esModule",{value:!0});var $E=YE(K()),jE=Ee(),BE=R(),gm=it(),Bs=LE(Vt()),Zu=class extends BE.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(maintenant|aujourd'hui|demain|hier|cette\s*nuit|la\s*veille)(?=\W|$)/i}innerExtract(e,t){let n=$E.default(e.refDate),i=t[0].toLowerCase(),s=e.createParsingComponents();switch(i){case"maintenant":return Bs.now(e.reference);case"aujourd'hui":return Bs.today(e.reference);case"hier":return Bs.yesterday(e.reference);case"demain":return Bs.tomorrow(e.reference);default:i.match(/cette\s*nuit/)?(gm.assignSimilarDate(s,n),s.imply("hour",22),s.imply("meridiem",jE.Meridiem.PM)):i.match(/la\s*veille/)&&(n=n.add(-1,"day"),gm.assignSimilarDate(s,n),s.imply("hour",0))}return s}};vt.default=Zu});var Tm=h(Qu=>{"use strict";Object.defineProperty(Qu,"__esModule",{value:!0});var ai=Ee(),GE=R(),Xu=class extends GE.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(cet?)?\s*(matin|soir|après-midi|aprem|a midi|à minuit)(?=\W|$)/i}innerExtract(e,t){let n=t[2].toLowerCase(),i=e.createParsingComponents();switch(n){case"apr\xE8s-midi":case"aprem":i.imply("hour",14),i.imply("minute",0),i.imply("meridiem",ai.Meridiem.PM);break;case"soir":i.imply("hour",18),i.imply("minute",0),i.imply("meridiem",ai.Meridiem.PM);break;case"matin":i.imply("hour",8),i.imply("minute",0),i.imply("meridiem",ai.Meridiem.AM);break;case"a midi":i.imply("hour",12),i.imply("minute",0),i.imply("meridiem",ai.Meridiem.AM);break;case"\xE0 minuit":i.imply("hour",0),i.imply("meridiem",ai.Meridiem.AM);break}return i}};Qu.default=Xu});var bm=h(el=>{"use strict";Object.defineProperty(el,"__esModule",{value:!0});var HE=Fr(),Ju=class extends HE.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:[\xE0a])\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|[\xE0a]|\\?)\\s*"}extractPrimaryTimeComponents(e,t){return t[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(e,t)}};el.default=Ju});var vm=h(oi=>{"use strict";var zE=oi&&oi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(oi,"__esModule",{value:!0});var KE=zE(Ht()),tl=class extends KE.default{patternBetween(){return new RegExp("^\\s*(T|\xE0|a|vers|de|,|-)?\\s*$")}};oi.default=tl});var Em=h(ui=>{"use strict";var VE=ui&&ui.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ui,"__esModule",{value:!0});var ZE=VE(Ct()),rl=class extends ZE.default{patternBetween(){return/^\s*(à|a|-)\s*$/i}};ui.default=rl});var Er=h(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.parseTimeUnits=V.TIME_UNITS_PATTERN=V.parseYear=V.YEAR_PATTERN=V.parseOrdinalNumberPattern=V.ORDINAL_NUMBER_PATTERN=V.parseNumberPattern=V.NUMBER_PATTERN=V.TIME_UNIT_DICTIONARY=V.INTEGER_WORD_DICTIONARY=V.MONTH_DICTIONARY=V.WEEKDAY_DICTIONARY=void 0;var nl=J();V.WEEKDAY_DICTIONARY={dimanche:0,dim:0,lundi:1,lun:1,mardi:2,mar:2,mercredi:3,mer:3,jeudi:4,jeu:4,vendredi:5,ven:5,samedi:6,sam:6};V.MONTH_DICTIONARY={janvier:1,jan:1,"jan.":1,f\u00E9vrier:2,f\u00E9v:2,"f\xE9v.":2,fevrier:2,fev:2,"fev.":2,mars:3,mar:3,"mar.":3,avril:4,avr:4,"avr.":4,mai:5,juin:6,jun:6,juillet:7,juil:7,jul:7,"jul.":7,ao\u00FBt:8,aout:8,septembre:9,sep:9,"sep.":9,sept:9,"sept.":9,octobre:10,oct:10,"oct.":10,novembre:11,nov:11,"nov.":11,d\u00E9cembre:12,decembre:12,dec:12,"dec.":12};V.INTEGER_WORD_DICTIONARY={un:1,deux:2,trois:3,quatre:4,cinq:5,six:6,sept:7,huit:8,neuf:9,dix:10,onze:11,douze:12,treize:13};V.TIME_UNIT_DICTIONARY={sec:"second",seconde:"second",secondes:"second",min:"minute",mins:"minute",minute:"minute",minutes:"minute",h:"hour",hr:"hour",hrs:"hour",heure:"hour",heures:"hour",jour:"d",jours:"d",semaine:"week",semaines:"week",mois:"month",trimestre:"quarter",trimestres:"quarter",ans:"year",ann\u00E9e:"year",ann\u00E9es:"year"};V.NUMBER_PATTERN=`(?:${nl.matchAnyPattern(V.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|une?\\b|quelques?|demi-?)`;function wm(r){let e=r.toLowerCase();return V.INTEGER_WORD_DICTIONARY[e]!==void 0?V.INTEGER_WORD_DICTIONARY[e]:e==="une"||e==="un"?1:e.match(/quelques?/)?3:e.match(/demi-?/)?.5:parseFloat(e)}V.parseNumberPattern=wm;V.ORDINAL_NUMBER_PATTERN="(?:[0-9]{1,2}(?:er)?)";function XE(r){let e=r.toLowerCase();return e=e.replace(/(?:er)$/i,""),parseInt(e)}V.parseOrdinalNumberPattern=XE;V.YEAR_PATTERN="(?:[1-9][0-9]{0,3}\\s*(?:AC|AD|p\\.\\s*C(?:hr?)?\\.\\s*n\\.)|[1-2][0-9]{3}|[5-9][0-9])";function QE(r){if(/AC/i.test(r))return r=r.replace(/BC/i,""),-parseInt(r);if(/AD/i.test(r)||/C/i.test(r))return r=r.replace(/[^\d]+/i,""),parseInt(r);let e=parseInt(r);return e<100&&(e>50?e=e+1900:e=e+2e3),e}V.parseYear=QE;var Dm=`(${V.NUMBER_PATTERN})\\s{0,5}(${nl.matchAnyPattern(V.TIME_UNIT_DICTIONARY)})\\s{0,5}`,Rm=new RegExp(Dm,"i");V.TIME_UNITS_PATTERN=nl.repeatedTimeunitPattern("",Dm);function JE(r){let e={},t=r,n=Rm.exec(t);for(;n;)e0(e,n),t=t.substring(n[0].length),n=Rm.exec(t);return e}V.parseTimeUnits=JE;function e0(r,e){let t=wm(e[1]),n=V.TIME_UNIT_DICTIONARY[e[2].toLowerCase()];r[n]=t}});var Om=h(sl=>{"use strict";Object.defineProperty(sl,"__esModule",{value:!0});var Mm=Er(),t0=J(),r0=R(),n0=Wr(),i0=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(?:ce)\\s*)?(${t0.matchAnyPattern(Mm.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(dernier|prochain)\\s*)?(?=\\W|\\d|$)`,"i"),s0=1,a0=2,il=class extends r0.AbstractParserWithWordBoundaryChecking{innerPattern(){return i0}innerExtract(e,t){let n=t[s0].toLowerCase(),i=Mm.WEEKDAY_DICTIONARY[n];if(i===void 0)return null;let s=t[a0];s=s||"",s=s.toLowerCase();let a=null;s=="dernier"?a="last":s=="prochain"&&(a="next");let o=n0.toDayJSWeekday(e.refDate,i,a);return e.createParsingComponents().assign("weekday",i).imply("day",o.date()).imply("month",o.month()+1).imply("year",o.year())}};sl.default=il});var Nm=h(al=>{"use strict";Object.defineProperty(al,"__esModule",{value:!0});var li=Ee(),o0=new RegExp("(^|\\s|T)(?:(?:[\xE0a])\\s*)?(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s|:)?)?(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?(?=\\W|$)","i"),u0=new RegExp("^\\s*(\\-|\\\u2013|\\~|\\\u301C|[\xE0a]|\\?)\\s*(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s|:)?)?(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?(?=\\W|$)","i"),l0=2,Pm=3,Am=4,km=5,yn=class{pattern(e){return o0}extract(e,t){let n=e.createParsingResult(t.index+t[1].length,t[0].substring(t[1].length));if(n.text.match(/^\d{4}$/)||(n.start=yn.extractTimeComponent(n.start.clone(),t),!n.start))return t.index+=t[0].length,null;let i=e.text.substring(t.index+t[0].length),s=u0.exec(i);return s&&(n.end=yn.extractTimeComponent(n.start.clone(),s),n.end&&(n.text+=s[0])),n}static extractTimeComponent(e,t){let n=0,i=0,s=null;if(n=parseInt(t[l0]),t[Pm]!=null&&(i=parseInt(t[Pm])),i>=60||n>24)return null;if(n>=12&&(s=li.Meridiem.PM),t[km]!=null){if(n>12)return null;let a=t[km][0].toLowerCase();a=="a"&&(s=li.Meridiem.AM,n==12&&(n=0)),a=="p"&&(s=li.Meridiem.PM,n!=12&&(n+=12))}if(e.assign("hour",n),e.assign("minute",i),s!==null?e.assign("meridiem",s):n<12?e.imply("meridiem",li.Meridiem.AM):e.imply("meridiem",li.Meridiem.PM),t[Am]!=null){let a=parseInt(t[Am]);if(a>=60)return null;e.assign("second",a)}return e}};al.default=yn});var Fm=h(ul=>{"use strict";Object.defineProperty(ul,"__esModule",{value:!0});var c0=xe(),Im=Er(),Um=Er(),Gs=Er(),d0=J(),f0=R(),p0=new RegExp(`(?:on\\s*?)?(${Gs.ORDINAL_NUMBER_PATTERN})(?:\\s*(?:au|\\-|\\\u2013|jusqu'au?|\\s)\\s*(${Gs.ORDINAL_NUMBER_PATTERN}))?(?:-|/|\\s*(?:de)?\\s*)(${d0.matchAnyPattern(Im.MONTH_DICTIONARY)})(?:(?:-|/|,?\\s*)(${Um.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),Cm=1,xm=2,h0=3,Sm=4,ol=class extends f0.AbstractParserWithWordBoundaryChecking{innerPattern(){return p0}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=Im.MONTH_DICTIONARY[t[h0].toLowerCase()],s=Gs.parseOrdinalNumberPattern(t[Cm]);if(s>31)return t.index=t.index+t[Cm].length,null;if(n.start.assign("month",i),n.start.assign("day",s),t[Sm]){let a=Um.parseYear(t[Sm]);n.start.assign("year",a)}else{let a=c0.findYearClosestToRef(e.refDate,s,i);n.start.imply("year",a)}if(t[xm]){let a=Gs.parseOrdinalNumberPattern(t[xm]);n.end=n.start.clone(),n.end.assign("day",a)}return n}};ul.default=ol});var Wm=h(cl=>{"use strict";Object.defineProperty(cl,"__esModule",{value:!0});var qm=Er(),m0=he(),y0=R(),g0=st(),ll=class extends y0.AbstractParserWithWordBoundaryChecking{constructor(){super()}innerPattern(){return new RegExp(`il y a\\s*(${qm.TIME_UNITS_PATTERN})(?=(?:\\W|$))`,"i")}innerExtract(e,t){let n=qm.parseTimeUnits(t[1]),i=g0.reverseTimeUnits(n);return m0.ParsingComponents.createRelativeFromReference(e.reference,i)}};cl.default=ll});var Ym=h(fl=>{"use strict";Object.defineProperty(fl,"__esModule",{value:!0});var Lm=Er(),_0=he(),T0=R(),dl=class extends T0.AbstractParserWithWordBoundaryChecking{innerPattern(){return new RegExp(`(?:dans|en|pour|pendant|de)\\s*(${Lm.TIME_UNITS_PATTERN})(?=\\W|$)`,"i")}innerExtract(e,t){let n=Lm.parseTimeUnits(t[1]);return _0.ParsingComponents.createRelativeFromReference(e.reference,n)}};fl.default=dl});var $m=h(hl=>{"use strict";Object.defineProperty(hl,"__esModule",{value:!0});var Hs=Er(),b0=he(),v0=R(),E0=st(),R0=J(),pl=class extends v0.AbstractParserWithWordBoundaryChecking{constructor(){super()}innerPattern(){return new RegExp(`(?:les?|la|l'|du|des?)\\s*(${Hs.NUMBER_PATTERN})?(?:\\s*(prochaine?s?|derni[e\xE8]re?s?|pass[\xE9e]e?s?|pr[\xE9e]c[\xE9e]dents?|suivante?s?))?\\s*(${R0.matchAnyPattern(Hs.TIME_UNIT_DICTIONARY)})(?:\\s*(prochaine?s?|derni[e\xE8]re?s?|pass[\xE9e]e?s?|pr[\xE9e]c[\xE9e]dents?|suivante?s?))?`,"i")}innerExtract(e,t){let n=t[1]?Hs.parseNumberPattern(t[1]):1,i=Hs.TIME_UNIT_DICTIONARY[t[3].toLowerCase()],s={};s[i]=n;let a=t[2]||t[4]||"";if(a=a.toLowerCase(),!!a)return(/derni[eè]re?s?/.test(a)||/pass[ée]e?s?/.test(a)||/pr[ée]c[ée]dents?/.test(a))&&(s=E0.reverseTimeUnits(s)),b0.ParsingComponents.createRelativeFromReference(e.reference,s)}};hl.default=pl});var Gm=h(Me=>{"use strict";var at=Me&&Me.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Me,"__esModule",{value:!0});Me.createConfiguration=Me.createCasualConfiguration=Me.parseDate=Me.parse=Me.strict=Me.casual=void 0;var w0=zt(),jm=_t(),D0=at(_m()),M0=at(Tm()),O0=at(Lr()),P0=at(bm()),A0=at(vm()),k0=at(Em()),N0=at(Om()),C0=at(Nm()),x0=at(Fm()),S0=at(Wm()),I0=at(Ym()),U0=at($m());Me.casual=new jm.Chrono(Bm());Me.strict=new jm.Chrono(ml(!0));function F0(r,e,t){return Me.casual.parse(r,e,t)}Me.parse=F0;function q0(r,e,t){return Me.casual.parseDate(r,e,t)}Me.parseDate=q0;function Bm(r=!0){let e=ml(!1,r);return e.parsers.unshift(new D0.default),e.parsers.unshift(new M0.default),e.parsers.unshift(new U0.default),e}Me.createCasualConfiguration=Bm;function ml(r=!0,e=!0){return w0.includeCommonConfiguration({parsers:[new O0.default(e),new x0.default,new P0.default,new C0.default,new S0.default,new I0.default,new N0.default],refiners:[new A0.default,new k0.default]},r)}Me.createConfiguration=ml});var Hm=h(zs=>{"use strict";Object.defineProperty(zs,"__esModule",{value:!0});zs.toHankaku=void 0;function W0(r){return String(r).replace(/\u2019/g,"'").replace(/\u201D/g,'"').replace(/\u3000/g," ").replace(/\uFFE5/g,"\xA5").replace(/[\uFF01\uFF03-\uFF06\uFF08\uFF09\uFF0C-\uFF19\uFF1C-\uFF1F\uFF21-\uFF3B\uFF3D\uFF3F\uFF41-\uFF5B\uFF5D\uFF5E]/g,L0)}zs.toHankaku=W0;function L0(r){return String.fromCharCode(r.charCodeAt(0)-65248)}});var Km=h(ci=>{"use strict";var Y0=ci&&ci.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ci,"__esModule",{value:!0});var yl=Hm(),$0=xe(),j0=Y0(K()),B0=/(?:(?:([同今本])|((昭和|平成|令和)?([0-90-9]{1,4}|元)))年\s*)?([0-90-9]{1,2})月\s*([0-90-9]{1,2})日/i,zm=1,G0=2,gl=3,H0=4,z0=5,K0=6,_l=class{pattern(){return B0}extract(e,t){let n=parseInt(yl.toHankaku(t[z0])),i=parseInt(yl.toHankaku(t[K0])),s=e.createParsingComponents({day:i,month:n});if(t[zm]&&t[zm].match("\u540C|\u4ECA|\u672C")){let a=j0.default(e.refDate);s.assign("year",a.year())}if(t[G0]){let a=t[H0],o=a=="\u5143"?1:parseInt(yl.toHankaku(a));t[gl]=="\u4EE4\u548C"?o+=2018:t[gl]=="\u5E73\u6210"?o+=1988:t[gl]=="\u662D\u548C"&&(o+=1925),s.assign("year",o)}else{let a=$0.findYearClosestToRef(e.refDate,i,n);s.imply("year",a)}return s}};ci.default=_l});var Vm=h(di=>{"use strict";var V0=di&&di.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(di,"__esModule",{value:!0});var Z0=V0(Ct()),Tl=class extends Z0.default{patternBetween(){return/^\s*(から|ー|-)\s*$/i}};di.default=Tl});var Xm=h(Et=>{"use strict";var X0=Et&&Et.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),Q0=Et&&Et.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),J0=Et&&Et.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&X0(e,r,t);return Q0(e,r),e},eR=Et&&Et.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Et,"__esModule",{value:!0});var tR=eR(K()),Zm=Ee(),bl=J0(Vt()),rR=/今日|当日|昨日|明日|今夜|今夕|今晩|今朝/i,vl=class{pattern(){return rR}extract(e,t){let n=t[0],i=tR.default(e.refDate),s=e.createParsingComponents();switch(n){case"\u6628\u65E5":return bl.yesterday(e.reference);case"\u660E\u65E5":return bl.tomorrow(e.reference);case"\u4ECA\u65E5":case"\u5F53\u65E5":return bl.today(e.reference)}return n=="\u4ECA\u591C"||n=="\u4ECA\u5915"||n=="\u4ECA\u6669"?(s.imply("hour",22),s.assign("meridiem",Zm.Meridiem.PM)):n.match("\u4ECA\u671D")&&(s.imply("hour",6),s.assign("meridiem",Zm.Meridiem.AM)),s.assign("day",i.date()),s.assign("month",i.month()+1),s.assign("year",i.year()),s}};Et.default=vl});var ey=h(Oe=>{"use strict";var El=Oe&&Oe.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Oe,"__esModule",{value:!0});Oe.createConfiguration=Oe.createCasualConfiguration=Oe.parseDate=Oe.parse=Oe.strict=Oe.casual=void 0;var nR=El(Km()),iR=El(Vm()),sR=El(Xm()),Qm=_t();Oe.casual=new Qm.Chrono(Jm());Oe.strict=new Qm.Chrono(Rl());function aR(r,e,t){return Oe.casual.parse(r,e,t)}Oe.parse=aR;function oR(r,e,t){return Oe.casual.parseDate(r,e,t)}Oe.parseDate=oR;function Jm(){let r=Rl();return r.parsers.unshift(new sR.default),r}Oe.createCasualConfiguration=Jm;function Rl(){return{parsers:[new nR.default],refiners:[new iR.default]}}Oe.createConfiguration=Rl});var Ks=h(St=>{"use strict";Object.defineProperty(St,"__esModule",{value:!0});St.parseYear=St.YEAR_PATTERN=St.MONTH_DICTIONARY=St.WEEKDAY_DICTIONARY=void 0;St.WEEKDAY_DICTIONARY={domingo:0,dom:0,segunda:1,"segunda-feira":1,seg:1,ter\u00E7a:2,"ter\xE7a-feira":2,ter:2,quarta:3,"quarta-feira":3,qua:3,quinta:4,"quinta-feira":4,qui:4,sexta:5,"sexta-feira":5,sex:5,s\u00E1bado:6,sabado:6,sab:6};St.MONTH_DICTIONARY={janeiro:1,jan:1,"jan.":1,fevereiro:2,fev:2,"fev.":2,mar\u00E7o:3,mar:3,"mar.":3,abril:4,abr:4,"abr.":4,maio:5,mai:5,"mai.":5,junho:6,jun:6,"jun.":6,julho:7,jul:7,"jul.":7,agosto:8,ago:8,"ago.":8,setembro:9,set:9,"set.":9,outubro:10,out:10,"out.":10,novembro:11,nov:11,"nov.":11,dezembro:12,dez:12,"dez.":12};St.YEAR_PATTERN="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?";function uR(r){if(r.match(/^[0-9]{1,4}$/)){let e=parseInt(r);return e<100&&(e>50?e=e+1900:e=e+2e3),e}return r.match(/a\.?\s*c\.?/i)?(r=r.replace(/a\.?\s*c\.?/i,""),-parseInt(r)):parseInt(r)}St.parseYear=uR});var ry=h(Dl=>{"use strict";Object.defineProperty(Dl,"__esModule",{value:!0});var ty=Ks(),lR=J(),cR=R(),dR=Wr(),fR=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:(este|esta|passado|pr[o\xF3]ximo)\\s*)?(${lR.matchAnyPattern(ty.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\\uFF09))?(?:\\s*(este|esta|passado|pr[\xF3o]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i"),pR=1,hR=2,mR=3,wl=class extends cR.AbstractParserWithWordBoundaryChecking{innerPattern(){return fR}innerExtract(e,t){let n=t[hR].toLowerCase(),i=ty.WEEKDAY_DICTIONARY[n];if(i===void 0)return null;let s=t[pR],a=t[mR],o=s||a||"";o=o.toLowerCase();let u=null;o=="passado"?u="this":o=="pr\xF3ximo"||o=="proximo"?u="next":o=="este"&&(u="this");let l=dR.toDayJSWeekday(e.refDate,i,u);return e.createParsingComponents().assign("weekday",i).imply("day",l.date()).imply("month",l.month()+1).imply("year",l.year())}};Dl.default=wl});var ny=h(Ol=>{"use strict";Object.defineProperty(Ol,"__esModule",{value:!0});var yR=Fr(),Ml=class extends yR.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:ao?|\xE0s?|das|da|de|do)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|a(?:o)?|\\?)\\s*"}};Ol.default=Ml});var iy=h(fi=>{"use strict";var gR=fi&&fi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(fi,"__esModule",{value:!0});var _R=gR(Ht()),Pl=class extends _R.default{patternBetween(){return new RegExp("^\\s*(?:,|\xE0)?\\s*$")}};fi.default=Pl});var sy=h(pi=>{"use strict";var TR=pi&&pi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(pi,"__esModule",{value:!0});var bR=TR(Ct()),Al=class extends bR.default{patternBetween(){return/^\s*(?:-)\s*$/i}};pi.default=Al});var dy=h(Nl=>{"use strict";Object.defineProperty(Nl,"__esModule",{value:!0});var vR=xe(),ly=Ks(),cy=Ks(),ER=J(),RR=R(),wR=new RegExp(`([0-9]{1,2})(?:\xBA|\xAA|\xB0)?(?:\\s*(?:desde|de|\\-|\\\u2013|ao?|\\s)\\s*([0-9]{1,2})(?:\xBA|\xAA|\xB0)?)?\\s*(?:de)?\\s*(?:-|/|\\s*(?:de|,)?\\s*)(${ER.matchAnyPattern(ly.MONTH_DICTIONARY)})(?:\\s*(?:de|,)?\\s*(${cy.YEAR_PATTERN}))?(?=\\W|$)`,"i"),ay=1,oy=2,DR=3,uy=4,kl=class extends RR.AbstractParserWithWordBoundaryChecking{innerPattern(){return wR}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=ly.MONTH_DICTIONARY[t[DR].toLowerCase()],s=parseInt(t[ay]);if(s>31)return t.index=t.index+t[ay].length,null;if(n.start.assign("month",i),n.start.assign("day",s),t[uy]){let a=cy.parseYear(t[uy]);n.start.assign("year",a)}else{let a=vR.findYearClosestToRef(e.refDate,s,i);n.start.imply("year",a)}if(t[oy]){let a=parseInt(t[oy]);n.end=n.start.clone(),n.end.assign("day",a)}return n}};Nl.default=kl});var fy=h(Zt=>{"use strict";var MR=Zt&&Zt.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),OR=Zt&&Zt.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),PR=Zt&&Zt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&MR(e,r,t);return OR(e,r),e};Object.defineProperty(Zt,"__esModule",{value:!0});var AR=R(),Vs=PR(Vt()),Cl=class extends AR.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(agora|hoje|amanha|amanhã|ontem)(?=\W|$)/i}innerExtract(e,t){let n=t[0].toLowerCase(),i=e.createParsingComponents();switch(n){case"agora":return Vs.now(e.reference);case"hoje":return Vs.today(e.reference);case"amanha":case"amanh\xE3":return Vs.tomorrow(e.reference);case"ontem":return Vs.yesterday(e.reference)}return i}};Zt.default=Cl});var py=h(hi=>{"use strict";var kR=hi&&hi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(hi,"__esModule",{value:!0});var Zs=Ee(),NR=R(),CR=it(),xR=kR(K()),xl=class extends NR.AbstractParserWithWordBoundaryChecking{innerPattern(){return/(?:esta\s*)?(manha|manhã|tarde|meia-noite|meio-dia|noite)(?=\W|$)/i}innerExtract(e,t){let n=xR.default(e.refDate),i=e.createParsingComponents();switch(t[1].toLowerCase()){case"tarde":i.imply("meridiem",Zs.Meridiem.PM),i.imply("hour",15);break;case"noite":i.imply("meridiem",Zs.Meridiem.PM),i.imply("hour",22);break;case"manha":case"manh\xE3":i.imply("meridiem",Zs.Meridiem.AM),i.imply("hour",6);break;case"meia-noite":CR.assignTheNextDay(i,n),i.imply("hour",0),i.imply("minute",0),i.imply("second",0);break;case"meio-dia":i.imply("meridiem",Zs.Meridiem.AM),i.imply("hour",12);break}return i}};hi.default=xl});var yy=h(Pe=>{"use strict";var Rr=Pe&&Pe.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Pe,"__esModule",{value:!0});Pe.createConfiguration=Pe.createCasualConfiguration=Pe.parseDate=Pe.parse=Pe.strict=Pe.casual=void 0;var SR=zt(),hy=_t(),IR=Rr(Lr()),UR=Rr(ry()),FR=Rr(ny()),qR=Rr(iy()),WR=Rr(sy()),LR=Rr(dy()),YR=Rr(fy()),$R=Rr(py());Pe.casual=new hy.Chrono(my());Pe.strict=new hy.Chrono(Sl(!0));function jR(r,e,t){return Pe.casual.parse(r,e,t)}Pe.parse=jR;function BR(r,e,t){return Pe.casual.parseDate(r,e,t)}Pe.parseDate=BR;function my(r=!0){let e=Sl(!1,r);return e.parsers.push(new YR.default),e.parsers.push(new $R.default),e}Pe.createCasualConfiguration=my;function Sl(r=!0,e=!0){return SR.includeCommonConfiguration({parsers:[new IR.default(e),new UR.default,new FR.default,new LR.default],refiners:[new qR.default,new WR.default]},r)}Pe.createConfiguration=Sl});var gy=h(mi=>{"use strict";var GR=mi&&mi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(mi,"__esModule",{value:!0});var HR=GR(Ct()),Il=class extends HR.default{patternBetween(){return/^\s*(tot|-)\s*$/i}};mi.default=Il});var _y=h(yi=>{"use strict";var zR=yi&&yi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(yi,"__esModule",{value:!0});var KR=zR(Ht()),Ul=class extends KR.default{patternBetween(){return new RegExp("^\\s*(om|na|voor|in de|,|-)?\\s*$")}};yi.default=Ul});var Ty=h(Xt=>{"use strict";var VR=Xt&&Xt.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),ZR=Xt&&Xt.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),XR=Xt&&Xt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&VR(e,r,t);return ZR(e,r),e};Object.defineProperty(Xt,"__esModule",{value:!0});var QR=R(),Xs=XR(Vt()),Fl=class extends QR.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(nu|vandaag|morgen|morgend|gisteren)(?=\W|$)/i}innerExtract(e,t){let n=t[0].toLowerCase(),i=e.createParsingComponents();switch(n){case"nu":return Xs.now(e.reference);case"vandaag":return Xs.today(e.reference);case"morgen":case"morgend":return Xs.tomorrow(e.reference);case"gisteren":return Xs.yesterday(e.reference)}return i}};Xt.default=Fl});var by=h(gi=>{"use strict";var JR=gi&&gi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(gi,"__esModule",{value:!0});var Qs=Ee(),ew=R(),tw=JR(K()),rw=it(),nw=1,iw=2,ql=class extends ew.AbstractParserWithWordBoundaryChecking{innerPattern(){return/(deze)?\s*(namiddag|avond|middernacht|ochtend|middag|'s middags|'s avonds|'s ochtends)(?=\W|$)/i}innerExtract(e,t){let n=tw.default(e.refDate),i=e.createParsingComponents();switch(t[nw]==="deze"&&(i.assign("day",e.refDate.getDate()),i.assign("month",e.refDate.getMonth()+1),i.assign("year",e.refDate.getFullYear())),t[iw].toLowerCase()){case"namiddag":case"'s namiddags":i.imply("meridiem",Qs.Meridiem.PM),i.imply("hour",15);break;case"avond":case"'s avonds'":i.imply("meridiem",Qs.Meridiem.PM),i.imply("hour",20);break;case"middernacht":rw.assignTheNextDay(i,n),i.imply("hour",0),i.imply("minute",0),i.imply("second",0);break;case"ochtend":case"'s ochtends":i.imply("meridiem",Qs.Meridiem.AM),i.imply("hour",6);break;case"middag":case"'s middags":i.imply("meridiem",Qs.Meridiem.AM),i.imply("hour",12);break}return i}};gi.default=ql});var Qe=h($=>{"use strict";Object.defineProperty($,"__esModule",{value:!0});$.parseTimeUnits=$.TIME_UNITS_PATTERN=$.parseYear=$.YEAR_PATTERN=$.parseOrdinalNumberPattern=$.ORDINAL_NUMBER_PATTERN=$.parseNumberPattern=$.NUMBER_PATTERN=$.TIME_UNIT_DICTIONARY=$.ORDINAL_WORD_DICTIONARY=$.INTEGER_WORD_DICTIONARY=$.MONTH_DICTIONARY=$.WEEKDAY_DICTIONARY=void 0;var Js=J(),sw=xe();$.WEEKDAY_DICTIONARY={zondag:0,zon:0,"zon.":0,zo:0,"zo.":0,maandag:1,ma:1,"ma.":1,dinsdag:2,din:2,"din.":2,di:2,"di.":2,woensdag:3,woe:3,"woe.":3,wo:3,"wo.":3,donderdag:4,dond:4,"dond.":4,do:4,"do.":4,vrijdag:5,vrij:5,"vrij.":5,vr:5,"vr.":5,zaterdag:6,zat:6,"zat.":6,za:6,"za.":6};$.MONTH_DICTIONARY={januari:1,jan:1,"jan.":1,februari:2,feb:2,"feb.":2,maart:3,mar:3,"mar.":3,april:4,apr:4,"apr.":4,mei:5,juni:6,jun:6,"jun.":6,juli:7,jul:7,"jul.":7,augustus:8,aug:8,"aug.":8,september:9,sep:9,"sep.":9,sept:9,"sept.":9,oktober:10,okt:10,"okt.":10,november:11,nov:11,"nov.":11,december:12,dec:12,"dec.":12};$.INTEGER_WORD_DICTIONARY={een:1,twee:2,drie:3,vier:4,vijf:5,zes:6,zeven:7,acht:8,negen:9,tien:10,elf:11,twaalf:12};$.ORDINAL_WORD_DICTIONARY={eerste:1,tweede:2,derde:3,vierde:4,vijfde:5,zesde:6,zevende:7,achtste:8,negende:9,tiende:10,elfde:11,twaalfde:12,dertiende:13,veertiende:14,vijftiende:15,zestiende:16,zeventiende:17,achttiende:18,negentiende:19,twintigste:20,eenentwintigste:21,twee\u00EBntwintigste:22,drieentwintigste:23,vierentwintigste:24,vijfentwintigste:25,zesentwintigste:26,zevenentwintigste:27,achtentwintig:28,negenentwintig:29,dertigste:30,eenendertigste:31};$.TIME_UNIT_DICTIONARY={sec:"second",second:"second",seconden:"second",min:"minute",mins:"minute",minute:"minute",minuut:"minute",minuten:"minute",minuutje:"minute",h:"hour",hr:"hour",hrs:"hour",uur:"hour",u:"hour",uren:"hour",dag:"d",dagen:"d",week:"week",weken:"week",maand:"month",maanden:"month",jaar:"year",jr:"year",jaren:"year"};$.NUMBER_PATTERN=`(?:${Js.matchAnyPattern($.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+[\\.,][0-9]+|halve?|half|paar)`;function Ey(r){let e=r.toLowerCase();return $.INTEGER_WORD_DICTIONARY[e]!==void 0?$.INTEGER_WORD_DICTIONARY[e]:e==="paar"?2:e==="half"||e.match(/halve?/)?.5:parseFloat(e.replace(",","."))}$.parseNumberPattern=Ey;$.ORDINAL_NUMBER_PATTERN=`(?:${Js.matchAnyPattern($.ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:ste|de)?)`;function aw(r){let e=r.toLowerCase();return $.ORDINAL_WORD_DICTIONARY[e]!==void 0?$.ORDINAL_WORD_DICTIONARY[e]:(e=e.replace(/(?:ste|de)$/i,""),parseInt(e))}$.parseOrdinalNumberPattern=aw;$.YEAR_PATTERN="(?:[1-9][0-9]{0,3}\\s*(?:voor Christus|na Christus)|[1-2][0-9]{3}|[5-9][0-9])";function ow(r){if(/voor Christus/i.test(r))return r=r.replace(/voor Christus/i,""),-parseInt(r);if(/na Christus/i.test(r))return r=r.replace(/na Christus/i,""),parseInt(r);let e=parseInt(r);return sw.findMostLikelyADYear(e)}$.parseYear=ow;var Ry=`(${$.NUMBER_PATTERN})\\s{0,5}(${Js.matchAnyPattern($.TIME_UNIT_DICTIONARY)})\\s{0,5}`,vy=new RegExp(Ry,"i");$.TIME_UNITS_PATTERN=Js.repeatedTimeunitPattern("(?:(?:binnen|in)\\s*)?",Ry);function uw(r){let e={},t=r,n=vy.exec(t);for(;n;)lw(e,n),t=t.substring(n[0].length),n=vy.exec(t);return e}$.parseTimeUnits=uw;function lw(r,e){let t=Ey(e[1]),n=$.TIME_UNIT_DICTIONARY[e[2].toLowerCase()];r[n]=t}});var Dy=h(Ll=>{"use strict";Object.defineProperty(Ll,"__esModule",{value:!0});var wy=Qe(),cw=he(),dw=R(),Wl=class extends dw.AbstractParserWithWordBoundaryChecking{innerPattern(){return new RegExp("(?:binnen|in|binnen de|voor)\\s*("+wy.TIME_UNITS_PATTERN+")(?=\\W|$)","i")}innerExtract(e,t){let n=wy.parseTimeUnits(t[1]);return cw.ParsingComponents.createRelativeFromReference(e.reference,n)}};Ll.default=Wl});var Oy=h($l=>{"use strict";Object.defineProperty($l,"__esModule",{value:!0});var My=Qe(),fw=J(),pw=R(),hw=Wr(),mw=new RegExp(`(?:(?:\\,|\\(|\\\uFF08)\\s*)?(?:op\\s*?)?(?:(deze|vorige|volgende)\\s*(?:week\\s*)?)?(${fw.matchAnyPattern(My.WEEKDAY_DICTIONARY)})(?=\\W|$)`,"i"),yw=1,gw=2,_w=3,Yl=class extends pw.AbstractParserWithWordBoundaryChecking{innerPattern(){return mw}innerExtract(e,t){let n=t[gw].toLowerCase(),i=My.WEEKDAY_DICTIONARY[n],s=t[yw],a=t[_w],o=s||a;o=o||"",o=o.toLowerCase();let u=null;o=="vorige"?u="last":o=="volgende"?u="next":o=="deze"&&(u="this");let l=hw.toDayJSWeekday(e.refDate,i,u);return e.createParsingComponents().assign("weekday",i).imply("day",l.date()).imply("month",l.month()+1).imply("year",l.year())}};$l.default=Yl});var xy=h(Bl=>{"use strict";Object.defineProperty(Bl,"__esModule",{value:!0});var Tw=xe(),Ny=Qe(),ea=Qe(),Cy=Qe(),bw=J(),vw=R(),Ew=new RegExp(`(?:on\\s*?)?(${ea.ORDINAL_NUMBER_PATTERN})(?:\\s*(?:tot|\\-|\\\u2013|until|through|till|\\s)\\s*(${ea.ORDINAL_NUMBER_PATTERN}))?(?:-|/|\\s*(?:of)?\\s*)(`+bw.matchAnyPattern(Ny.MONTH_DICTIONARY)+`)(?:(?:-|/|,?\\s*)(${Cy.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i"),Rw=3,Py=1,Ay=2,ky=4,jl=class extends vw.AbstractParserWithWordBoundaryChecking{innerPattern(){return Ew}innerExtract(e,t){let n=Ny.MONTH_DICTIONARY[t[Rw].toLowerCase()],i=ea.parseOrdinalNumberPattern(t[Py]);if(i>31)return t.index=t.index+t[Py].length,null;let s=e.createParsingComponents({day:i,month:n});if(t[ky]){let u=Cy.parseYear(t[ky]);s.assign("year",u)}else{let u=Tw.findYearClosestToRef(e.refDate,i,n);s.imply("year",u)}if(!t[Ay])return s;let a=ea.parseOrdinalNumberPattern(t[Ay]),o=e.createParsingResult(t.index,t[0]);return o.start=s,o.end=s.clone(),o.end.assign("day",a),o}};Bl.default=jl});var Fy=h(Hl=>{"use strict";Object.defineProperty(Hl,"__esModule",{value:!0});var Iy=Qe(),ww=xe(),Dw=J(),Uy=Qe(),Mw=R(),Ow=new RegExp(`(${Dw.matchAnyPattern(Iy.MONTH_DICTIONARY)})\\s*(?:[,-]?\\s*(${Uy.YEAR_PATTERN})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i"),Pw=1,Sy=2,Gl=class extends Mw.AbstractParserWithWordBoundaryChecking{innerPattern(){return Ow}innerExtract(e,t){let n=e.createParsingComponents();n.imply("day",1);let i=t[Pw],s=Iy.MONTH_DICTIONARY[i.toLowerCase()];if(n.assign("month",s),t[Sy]){let a=Uy.parseYear(t[Sy]);n.assign("year",a)}else{let a=ww.findYearClosestToRef(e.refDate,1,s);n.imply("year",a)}return n}};Hl.default=Gl});var qy=h(Kl=>{"use strict";Object.defineProperty(Kl,"__esModule",{value:!0});var Aw=R(),kw=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i"),Nw=1,Cw=2,zl=class extends Aw.AbstractParserWithWordBoundaryChecking{innerPattern(){return kw}innerExtract(e,t){let n=parseInt(t[Cw]),i=parseInt(t[Nw]);return e.createParsingComponents().imply("day",1).assign("month",i).assign("year",n)}};Kl.default=zl});var Wy=h(Zl=>{"use strict";Object.defineProperty(Zl,"__esModule",{value:!0});var xw=Fr(),Vl=class extends xw.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:om)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|om|\\?)\\s*"}primarySuffix(){return"(?:\\s*(?:uur))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(e,t){return t[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(e,t)}};Zl.default=Vl});var $y=h(Ql=>{"use strict";Object.defineProperty(Ql,"__esModule",{value:!0});var Yy=Qe(),Sw=J(),Iw=R(),Uw=new RegExp(`([0-9]{4})[\\.\\/\\s](?:(${Sw.matchAnyPattern(Yy.MONTH_DICTIONARY)})|([0-9]{1,2}))[\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i"),Fw=1,qw=2,Ly=3,Ww=4,Xl=class extends Iw.AbstractParserWithWordBoundaryChecking{innerPattern(){return Uw}innerExtract(e,t){let n=t[Ly]?parseInt(t[Ly]):Yy.MONTH_DICTIONARY[t[qw].toLowerCase()];if(n<1||n>12)return null;let i=parseInt(t[Fw]);return{day:parseInt(t[Ww]),month:n,year:i}}};Ql.default=Xl});var jy=h(_i=>{"use strict";var Lw=_i&&_i.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(_i,"__esModule",{value:!0});var Yw=R(),ta=Ee(),Jl=it(),$w=Lw(K()),jw=1,Bw=2,ec=class extends Yw.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(gisteren|morgen|van)(ochtend|middag|namiddag|avond|nacht)(?=\W|$)/i}innerExtract(e,t){let n=t[jw].toLowerCase(),i=t[Bw].toLowerCase(),s=e.createParsingComponents(),a=$w.default(e.refDate);switch(n){case"gisteren":Jl.assignSimilarDate(s,a.add(-1,"day"));break;case"van":Jl.assignSimilarDate(s,a);break;case"morgen":Jl.assignTheNextDay(s,a);break}switch(i){case"ochtend":s.imply("meridiem",ta.Meridiem.AM),s.imply("hour",6);break;case"middag":s.imply("meridiem",ta.Meridiem.AM),s.imply("hour",12);break;case"namiddag":s.imply("meridiem",ta.Meridiem.PM),s.imply("hour",15);break;case"avond":s.imply("meridiem",ta.Meridiem.PM),s.imply("hour",20);break}return s}};_i.default=ec});var Gy=h(rc=>{"use strict";Object.defineProperty(rc,"__esModule",{value:!0});var By=Qe(),Gw=he(),Hw=R(),zw=st(),Kw=new RegExp(`(deze|vorige|afgelopen|komende|over|\\+|-)\\s*(${By.TIME_UNITS_PATTERN})(?=\\W|$)`,"i"),tc=class extends Hw.AbstractParserWithWordBoundaryChecking{innerPattern(){return Kw}innerExtract(e,t){let n=t[1].toLowerCase(),i=By.parseTimeUnits(t[2]);switch(n){case"vorige":case"afgelopen":case"-":i=zw.reverseTimeUnits(i);break}return Gw.ParsingComponents.createRelativeFromReference(e.reference,i)}};rc.default=tc});var Ky=h(Ti=>{"use strict";var Vw=Ti&&Ti.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ti,"__esModule",{value:!0});var zy=Qe(),Hy=he(),Zw=Vw(K()),Xw=R(),Qw=J(),Jw=new RegExp(`(dit|deze|komende|volgend|volgende|afgelopen|vorige)\\s*(${Qw.matchAnyPattern(zy.TIME_UNIT_DICTIONARY)})(?=\\s*)(?=\\W|$)`,"i"),eD=1,tD=2,nc=class extends Xw.AbstractParserWithWordBoundaryChecking{innerPattern(){return Jw}innerExtract(e,t){let n=t[eD].toLowerCase(),i=t[tD].toLowerCase(),s=zy.TIME_UNIT_DICTIONARY[i];if(n=="volgend"||n=="volgende"||n=="komende"){let u={};return u[s]=1,Hy.ParsingComponents.createRelativeFromReference(e.reference,u)}if(n=="afgelopen"||n=="vorige"){let u={};return u[s]=-1,Hy.ParsingComponents.createRelativeFromReference(e.reference,u)}let a=e.createParsingComponents(),o=Zw.default(e.reference.instant);return i.match(/week/i)?(o=o.add(-o.get("d"),"d"),a.imply("day",o.date()),a.imply("month",o.month()+1),a.imply("year",o.year())):i.match(/maand/i)?(o=o.add(-o.date()+1,"d"),a.imply("day",o.date()),a.assign("year",o.year()),a.assign("month",o.month()+1)):i.match(/jaar/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),a.imply("day",o.date()),a.imply("month",o.month()+1),a.assign("year",o.year())),a}};Ti.default=nc});var Vy=h(ac=>{"use strict";Object.defineProperty(ac,"__esModule",{value:!0});var sc=Qe(),rD=he(),nD=R(),iD=st(),sD=new RegExp("("+sc.TIME_UNITS_PATTERN+")(?:geleden|voor|eerder)(?=(?:\\W|$))","i"),aD=new RegExp("("+sc.TIME_UNITS_PATTERN+")geleden(?=(?:\\W|$))","i"),ic=class extends nD.AbstractParserWithWordBoundaryChecking{constructor(e){super(),this.strictMode=e}innerPattern(){return this.strictMode?aD:sD}innerExtract(e,t){let n=sc.parseTimeUnits(t[1]),i=iD.reverseTimeUnits(n);return rD.ParsingComponents.createRelativeFromReference(e.reference,i)}};ac.default=ic});var Zy=h(lc=>{"use strict";Object.defineProperty(lc,"__esModule",{value:!0});var uc=Qe(),oD=he(),uD=R(),lD=new RegExp("("+uc.TIME_UNITS_PATTERN+")(later|na|vanaf nu|voortaan|vooruit|uit)(?=(?:\\W|$))","i"),cD=new RegExp("("+uc.TIME_UNITS_PATTERN+")(later|vanaf nu)(?=(?:\\W|$))","i"),dD=1,oc=class extends uD.AbstractParserWithWordBoundaryChecking{constructor(e){super(),this.strictMode=e}innerPattern(){return this.strictMode?cD:lD}innerExtract(e,t){let n=uc.parseTimeUnits(t[dD]);return oD.ParsingComponents.createRelativeFromReference(e.reference,n)}};lc.default=oc});var eg=h(Ae=>{"use strict";var Ie=Ae&&Ae.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ae,"__esModule",{value:!0});Ae.createConfiguration=Ae.createCasualConfiguration=Ae.parseDate=Ae.parse=Ae.strict=Ae.casual=void 0;var fD=zt(),Xy=_t(),pD=Ie(gy()),hD=Ie(_y()),mD=Ie(Ty()),yD=Ie(by()),gD=Ie(Lr()),_D=Ie(Dy()),TD=Ie(Oy()),bD=Ie(xy()),Qy=Ie(Fy()),vD=Ie(qy()),ED=Ie(Wy()),RD=Ie($y()),wD=Ie(jy()),DD=Ie(Gy()),MD=Ie(Ky()),OD=Ie(Vy()),PD=Ie(Zy());Ae.casual=new Xy.Chrono(Jy());Ae.strict=new Xy.Chrono(cc(!0));function AD(r,e,t){return Ae.casual.parse(r,e,t)}Ae.parse=AD;function kD(r,e,t){return Ae.casual.parseDate(r,e,t)}Ae.parseDate=kD;function Jy(r=!0){let e=cc(!1,r);return e.parsers.unshift(new mD.default),e.parsers.unshift(new yD.default),e.parsers.unshift(new wD.default),e.parsers.unshift(new Qy.default),e.parsers.unshift(new MD.default),e.parsers.unshift(new DD.default),e}Ae.createCasualConfiguration=Jy;function cc(r=!0,e=!0){return fD.includeCommonConfiguration({parsers:[new gD.default(e),new _D.default,new bD.default,new Qy.default,new TD.default,new RD.default,new vD.default,new ED.default(r),new OD.default(r),new PD.default(r)],refiners:[new hD.default,new pD.default]},r)}Ae.createConfiguration=cc});var ig=h(bi=>{"use strict";var ND=bi&&bi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(bi,"__esModule",{value:!0});var CD=ND(K()),xD=R(),SD=1,tg=2,ID=3,rg=4,ng=5,UD=6,dc=class extends xD.AbstractParserWithWordBoundaryChecking{innerPattern(e){return new RegExp("(\u800C\u5BB6|\u7ACB(?:\u523B|\u5373)|\u5373\u523B)|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(?:\u65E5|\u5929)(?:[\\s|,|\uFF0C]*)(?:(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?","i")}innerExtract(e,t){let n=t.index,i=e.createParsingResult(n,t[0]),s=CD.default(e.refDate),a=s;if(t[SD])i.start.imply("hour",s.hour()),i.start.imply("minute",s.minute()),i.start.imply("second",s.second()),i.start.imply("millisecond",s.millisecond());else if(t[tg]){let o=t[tg],u=t[ID];o=="\u660E"||o=="\u807D"?s.hour()>1&&(a=a.add(1,"day")):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?a=a.add(-1,"day"):o=="\u524D"?a=a.add(-2,"day"):o=="\u5927\u524D"?a=a.add(-3,"day"):o=="\u5F8C"?a=a.add(2,"day"):o=="\u5927\u5F8C"&&(a=a.add(3,"day")),u=="\u65E9"||u=="\u671D"?i.start.imply("hour",6):u=="\u665A"&&(i.start.imply("hour",22),i.start.imply("meridiem",1))}else if(t[rg]){let u=t[rg][0];u=="\u65E9"||u=="\u671D"||u=="\u4E0A"?i.start.imply("hour",6):u=="\u4E0B"||u=="\u664F"?(i.start.imply("hour",15),i.start.imply("meridiem",1)):u=="\u4E2D"?(i.start.imply("hour",12),i.start.imply("meridiem",1)):u=="\u591C"||u=="\u665A"?(i.start.imply("hour",22),i.start.imply("meridiem",1)):u=="\u51CC"&&i.start.imply("hour",0)}else if(t[ng]){let o=t[ng];o=="\u660E"||o=="\u807D"?s.hour()>1&&(a=a.add(1,"day")):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?a=a.add(-1,"day"):o=="\u524D"?a=a.add(-2,"day"):o=="\u5927\u524D"?a=a.add(-3,"day"):o=="\u5F8C"?a=a.add(2,"day"):o=="\u5927\u5F8C"&&(a=a.add(3,"day"));let u=t[UD];if(u){let l=u[0];l=="\u65E9"||l=="\u671D"||l=="\u4E0A"?i.start.imply("hour",6):l=="\u4E0B"||l=="\u664F"?(i.start.imply("hour",15),i.start.imply("meridiem",1)):l=="\u4E2D"?(i.start.imply("hour",12),i.start.imply("meridiem",1)):l=="\u591C"||l=="\u665A"?(i.start.imply("hour",22),i.start.imply("meridiem",1)):l=="\u51CC"&&i.start.imply("hour",0)}}return i.start.assign("day",a.date()),i.start.assign("month",a.month()+1),i.start.assign("year",a.year()),i}};bi.default=dc});var gn=h(Ge=>{"use strict";Object.defineProperty(Ge,"__esModule",{value:!0});Ge.zhStringToYear=Ge.zhStringToNumber=Ge.WEEKDAY_OFFSET=Ge.NUMBER=void 0;Ge.NUMBER={\u96F6:0,\u4E00:1,\u4E8C:2,\u5169:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9,\u5341:10,\u5EFF:20,\u5345:30};Ge.WEEKDAY_OFFSET={\u5929:0,\u65E5:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6};function FD(r){let e=0;for(let t=0;t{"use strict";var WD=vi&&vi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(vi,"__esModule",{value:!0});var LD=WD(K()),YD=R(),jr=gn(),fc=1,sg=2,pc=3,hc=class extends YD.AbstractParserWithWordBoundaryChecking{innerPattern(){return new RegExp("(\\d{2,4}|["+Object.keys(jr.NUMBER).join("")+"]{4}|["+Object.keys(jr.NUMBER).join("")+"]{2})?(?:\\s*)(?:\u5E74)?(?:[\\s|,|\uFF0C]*)(\\d{1,2}|["+Object.keys(jr.NUMBER).join("")+"]{1,2})(?:\\s*)(?:\u6708)(?:\\s*)(\\d{1,2}|["+Object.keys(jr.NUMBER).join("")+"]{1,2})?(?:\\s*)(?:\u65E5|\u865F)?")}innerExtract(e,t){let n=LD.default(e.refDate),i=e.createParsingResult(t.index,t[0]),s=parseInt(t[sg]);if(isNaN(s)&&(s=jr.zhStringToNumber(t[sg])),i.start.assign("month",s),t[pc]){let a=parseInt(t[pc]);isNaN(a)&&(a=jr.zhStringToNumber(t[pc])),i.start.assign("day",a)}else i.start.imply("day",n.date());if(t[fc]){let a=parseInt(t[fc]);isNaN(a)&&(a=jr.zhStringToYear(t[fc])),i.start.assign("year",a)}else i.start.imply("year",n.year());return i}};vi.default=hc});var ug=h(Ei=>{"use strict";var $D=Ei&&Ei.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ei,"__esModule",{value:!0});var jD=$D(K()),BD=R(),og=gn(),GD=new RegExp("(\\d+|["+Object.keys(og.NUMBER).join("")+"]+|\u534A|\u5E7E)(?:\\s*)(?:\u500B)?(\u79D2(?:\u9418)?|\u5206\u9418|\u5C0F\u6642|\u9418|\u65E5|\u5929|\u661F\u671F|\u79AE\u62DC|\u6708|\u5E74)(?:(?:\u4E4B|\u904E)?\u5F8C|(?:\u4E4B)?\u5167)","i"),mc=1,HD=2,yc=class extends BD.AbstractParserWithWordBoundaryChecking{innerPattern(){return GD}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=parseInt(t[mc]);if(isNaN(i)&&(i=og.zhStringToNumber(t[mc])),isNaN(i)){let u=t[mc];if(u==="\u5E7E")i=3;else if(u==="\u534A")i=.5;else return null}let s=jD.default(e.refDate),o=t[HD][0];return o.match(/[日天星禮月年]/)?(o=="\u65E5"||o=="\u5929"?s=s.add(i,"d"):o=="\u661F"||o=="\u79AE"?s=s.add(i*7,"d"):o=="\u6708"?s=s.add(i,"month"):o=="\u5E74"&&(s=s.add(i,"year")),n.start.assign("year",s.year()),n.start.assign("month",s.month()+1),n.start.assign("day",s.date()),n):(o=="\u79D2"?s=s.add(i,"second"):o=="\u5206"?s=s.add(i,"minute"):(o=="\u5C0F"||o=="\u9418")&&(s=s.add(i,"hour")),n.start.imply("year",s.year()),n.start.imply("month",s.month()+1),n.start.imply("day",s.date()),n.start.assign("hour",s.hour()),n.start.assign("minute",s.minute()),n.start.assign("second",s.second()),n)}};Ei.default=yc});var cg=h(Ri=>{"use strict";var zD=Ri&&Ri.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ri,"__esModule",{value:!0});var KD=zD(K()),VD=R(),lg=gn(),ZD=new RegExp("(?\u4E0A|\u4ECA|\u4E0B|\u9019|\u5462)(?:\u500B)?(?:\u661F\u671F|\u79AE\u62DC|\u9031)(?"+Object.keys(lg.WEEKDAY_OFFSET).join("|")+")"),gc=class extends VD.AbstractParserWithWordBoundaryChecking{innerPattern(){return ZD}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=t.groups.weekday,s=lg.WEEKDAY_OFFSET[i];if(s===void 0)return null;let a=null,o=t.groups.prefix;o=="\u4E0A"?a="last":o=="\u4E0B"?a="next":(o=="\u4ECA"||o=="\u9019"||o=="\u5462")&&(a="this");let u=KD.default(e.refDate),l=!1,c=u.day();return a=="last"||a=="past"?(u=u.day(s-7),l=!0):a=="next"?(u=u.day(s+7),l=!0):a=="this"?u=u.day(s):Math.abs(s-7-c){"use strict";var XD=wi&&wi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(wi,"__esModule",{value:!0});var QD=XD(K()),JD=R(),ut=gn(),eM=new RegExp("(?:\u7531|\u5F9E|\u81EA)?(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(ut.NUMBER).join("")+"]+)(?:\\s*)(?:\u9EDE|\u6642|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(ut.NUMBER).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(ut.NUMBER).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),tM=new RegExp("(?:^\\s*(?:\u5230|\u81F3|\\-|\\\u2013|\\~|\\\u301C)\\s*)(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u5F8C|\u5927\u5F8C|\u807D|\u6628|\u5C0B|\u7434)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348|\u665D)|\u671D(?:\u65E9)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348|\u665D)|\u664F(?:\u665D)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(ut.NUMBER).join("")+"]+)(?:\\s*)(?:\u9EDE|\u6642|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(ut.NUMBER).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(ut.NUMBER).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),ra=1,na=2,ia=3,sa=4,aa=5,oa=6,ot=7,_n=8,ua=9,_c=class extends JD.AbstractParserWithWordBoundaryChecking{innerPattern(){return eM}innerExtract(e,t){if(t.index>0&&e.text[t.index-1].match(/\w/))return null;let n=QD.default(e.refDate),i=e.createParsingResult(t.index,t[0]),s=n.clone();if(t[ra]){var a=t[ra];a=="\u660E"||a=="\u807D"?n.hour()>1&&s.add(1,"day"):a=="\u6628"||a=="\u5C0B"||a=="\u7434"?s.add(-1,"day"):a=="\u524D"?s.add(-2,"day"):a=="\u5927\u524D"?s.add(-3,"day"):a=="\u5F8C"?s.add(2,"day"):a=="\u5927\u5F8C"&&s.add(3,"day"),i.start.assign("day",s.date()),i.start.assign("month",s.month()+1),i.start.assign("year",s.year())}else if(t[sa]){var o=t[sa];o=="\u660E"||o=="\u807D"?s.add(1,"day"):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?s.add(-1,"day"):o=="\u524D"?s.add(-2,"day"):o=="\u5927\u524D"?s.add(-3,"day"):o=="\u5F8C"?s.add(2,"day"):o=="\u5927\u5F8C"&&s.add(3,"day"),i.start.assign("day",s.date()),i.start.assign("month",s.month()+1),i.start.assign("year",s.year())}else i.start.imply("day",s.date()),i.start.imply("month",s.month()+1),i.start.imply("year",s.year());let u=0,l=0,c=-1;if(t[_n]){var d=parseInt(t[_n]);if(isNaN(d)&&(d=ut.zhStringToNumber(t[_n])),d>=60)return null;i.start.assign("second",d)}if(u=parseInt(t[oa]),isNaN(u)&&(u=ut.zhStringToNumber(t[oa])),t[ot]?t[ot]=="\u534A"?l=30:t[ot]=="\u6B63"||t[ot]=="\u6574"?l=0:(l=parseInt(t[ot]),isNaN(l)&&(l=ut.zhStringToNumber(t[ot]))):u>100&&(l=u%100,u=Math.floor(u/100)),l>=60||u>24)return null;if(u>=12&&(c=1),t[ua]){if(u>12)return null;var f=t[ua][0].toLowerCase();f=="a"&&(c=0,u==12&&(u=0)),f=="p"&&(c=1,u!=12&&(u+=12))}else if(t[na]){var p=t[na],y=p[0];y=="\u671D"||y=="\u65E9"?(c=0,u==12&&(u=0)):y=="\u665A"&&(c=1,u!=12&&(u+=12))}else if(t[ia]){var m=t[ia],_=m[0];_=="\u4E0A"||_=="\u671D"||_=="\u65E9"||_=="\u51CC"?(c=0,u==12&&(u=0)):(_=="\u4E0B"||_=="\u664F"||_=="\u665A")&&(c=1,u!=12&&(u+=12))}else if(t[aa]){var A=t[aa],I=A[0];I=="\u4E0A"||I=="\u671D"||I=="\u65E9"||I=="\u51CC"?(c=0,u==12&&(u=0)):(I=="\u4E0B"||I=="\u664F"||I=="\u665A")&&(c=1,u!=12&&(u+=12))}if(i.start.assign("hour",u),i.start.assign("minute",l),c>=0?i.start.assign("meridiem",c):u<12?i.start.imply("meridiem",0):i.start.imply("meridiem",1),t=tM.exec(e.text.substring(i.index+i.text.length)),!t)return i.text.match(/^\d+$/)?null:i;let C=s.clone();if(i.end=e.createParsingComponents(),t[ra]){var a=t[ra];a=="\u660E"||a=="\u807D"?n.hour()>1&&C.add(1,"day"):a=="\u6628"||a=="\u5C0B"||a=="\u7434"?C.add(-1,"day"):a=="\u524D"?C.add(-2,"day"):a=="\u5927\u524D"?C.add(-3,"day"):a=="\u5F8C"?C.add(2,"day"):a=="\u5927\u5F8C"&&C.add(3,"day"),i.end.assign("day",C.date()),i.end.assign("month",C.month()+1),i.end.assign("year",C.year())}else if(t[sa]){var o=t[sa];o=="\u660E"||o=="\u807D"?C.add(1,"day"):o=="\u6628"||o=="\u5C0B"||o=="\u7434"?C.add(-1,"day"):o=="\u524D"?C.add(-2,"day"):o=="\u5927\u524D"?C.add(-3,"day"):o=="\u5F8C"?C.add(2,"day"):o=="\u5927\u5F8C"&&C.add(3,"day"),i.end.assign("day",C.date()),i.end.assign("month",C.month()+1),i.end.assign("year",C.year())}else i.end.imply("day",C.date()),i.end.imply("month",C.month()+1),i.end.imply("year",C.year());if(u=0,l=0,c=-1,t[_n]){var d=parseInt(t[_n]);if(isNaN(d)&&(d=ut.zhStringToNumber(t[_n])),d>=60)return null;i.end.assign("second",d)}if(u=parseInt(t[oa]),isNaN(u)&&(u=ut.zhStringToNumber(t[oa])),t[ot]?t[ot]=="\u534A"?l=30:t[ot]=="\u6B63"||t[ot]=="\u6574"?l=0:(l=parseInt(t[ot]),isNaN(l)&&(l=ut.zhStringToNumber(t[ot]))):u>100&&(l=u%100,u=Math.floor(u/100)),l>=60||u>24)return null;if(u>=12&&(c=1),t[ua]){if(u>12)return null;var f=t[ua][0].toLowerCase();f=="a"&&(c=0,u==12&&(u=0)),f=="p"&&(c=1,u!=12&&(u+=12)),i.start.isCertain("meridiem")||(c==0?(i.start.imply("meridiem",0),i.start.get("hour")==12&&i.start.assign("hour",0)):(i.start.imply("meridiem",1),i.start.get("hour")!=12&&i.start.assign("hour",i.start.get("hour")+12)))}else if(t[na]){var p=t[na],y=p[0];y=="\u671D"||y=="\u65E9"?(c=0,u==12&&(u=0)):y=="\u665A"&&(c=1,u!=12&&(u+=12))}else if(t[ia]){var m=t[ia],_=m[0];_=="\u4E0A"||_=="\u671D"||_=="\u65E9"||_=="\u51CC"?(c=0,u==12&&(u=0)):(_=="\u4E0B"||_=="\u664F"||_=="\u665A")&&(c=1,u!=12&&(u+=12))}else if(t[aa]){var A=t[aa],I=A[0];I=="\u4E0A"||I=="\u671D"||I=="\u65E9"||I=="\u51CC"?(c=0,u==12&&(u=0)):(I=="\u4E0B"||I=="\u664F"||I=="\u665A")&&(c=1,u!=12&&(u+=12))}return i.text=i.text+t[0],i.end.assign("hour",u),i.end.assign("minute",l),c>=0?i.end.assign("meridiem",c):i.start.isCertain("meridiem")&&i.start.get("meridiem")==1&&i.start.get("hour")>u?i.end.imply("meridiem",0):u>12&&i.end.imply("meridiem",1),i.end.date().getTime(){"use strict";var rM=Di&&Di.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Di,"__esModule",{value:!0});var nM=rM(K()),iM=R(),fg=gn(),sM=new RegExp("(?:\u661F\u671F|\u79AE\u62DC|\u9031)(?"+Object.keys(fg.WEEKDAY_OFFSET).join("|")+")"),Tc=class extends iM.AbstractParserWithWordBoundaryChecking{innerPattern(){return sM}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=t.groups.weekday,s=fg.WEEKDAY_OFFSET[i];if(s===void 0)return null;let a=nM.default(e.refDate),o=!1,u=a.day();return Math.abs(s-7-u){"use strict";var aM=Mi&&Mi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Mi,"__esModule",{value:!0});var oM=aM(Ct()),bc=class extends oM.default{patternBetween(){return/^\s*(至|到|\-|\~|~|-|ー)\s*$/i}};Mi.default=bc});var mg=h(Oi=>{"use strict";var uM=Oi&&Oi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Oi,"__esModule",{value:!0});var lM=uM(Ht()),vc=class extends lM.default{patternBetween(){return/^\s*$/i}};Oi.default=vc});var yg=h(Te=>{"use strict";var Qt=Te&&Te.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Te,"__esModule",{value:!0});Te.createConfiguration=Te.createCasualConfiguration=Te.parseDate=Te.parse=Te.strict=Te.casual=Te.hant=void 0;var Ec=_t(),cM=Qt(qs()),dM=zt(),fM=Qt(ig()),pM=Qt(ag()),hM=Qt(ug()),mM=Qt(cg()),yM=Qt(dg()),gM=Qt(pg()),_M=Qt(hg()),TM=Qt(mg());Te.hant=new Ec.Chrono(Rc());Te.casual=new Ec.Chrono(Rc());Te.strict=new Ec.Chrono(wc());function bM(r,e,t){return Te.casual.parse(r,e,t)}Te.parse=bM;function vM(r,e,t){return Te.casual.parseDate(r,e,t)}Te.parseDate=vM;function Rc(){let r=wc();return r.parsers.unshift(new fM.default),r}Te.createCasualConfiguration=Rc;function wc(){let r=dM.includeCommonConfiguration({parsers:[new pM.default,new mM.default,new gM.default,new yM.default,new hM.default],refiners:[new _M.default,new TM.default]});return r.refiners=r.refiners.filter(e=>!(e instanceof cM.default)),r}Te.createConfiguration=wc});var bg=h(Pi=>{"use strict";var EM=Pi&&Pi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Pi,"__esModule",{value:!0});var RM=EM(K()),wM=R(),DM=1,gg=2,MM=3,_g=4,Tg=5,OM=6,Dc=class extends wM.AbstractParserWithWordBoundaryChecking{innerPattern(e){return new RegExp("(\u73B0\u5728|\u7ACB(?:\u523B|\u5373)|\u5373\u523B)|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(\u65E9|\u665A)|(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(?:\u65E5|\u5929)(?:[\\s|,|\uFF0C]*)(?:(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?","i")}innerExtract(e,t){let n=t.index,i=e.createParsingResult(n,t[0]),s=RM.default(e.refDate),a=s;if(t[DM])i.start.imply("hour",s.hour()),i.start.imply("minute",s.minute()),i.start.imply("second",s.second()),i.start.imply("millisecond",s.millisecond());else if(t[gg]){let o=t[gg],u=t[MM];o=="\u660E"?s.hour()>1&&(a=a.add(1,"day")):o=="\u6628"?a=a.add(-1,"day"):o=="\u524D"?a=a.add(-2,"day"):o=="\u5927\u524D"?a=a.add(-3,"day"):o=="\u540E"?a=a.add(2,"day"):o=="\u5927\u540E"&&(a=a.add(3,"day")),u=="\u65E9"?i.start.imply("hour",6):u=="\u665A"&&(i.start.imply("hour",22),i.start.imply("meridiem",1))}else if(t[_g]){let u=t[_g][0];u=="\u65E9"||u=="\u4E0A"?i.start.imply("hour",6):u=="\u4E0B"?(i.start.imply("hour",15),i.start.imply("meridiem",1)):u=="\u4E2D"?(i.start.imply("hour",12),i.start.imply("meridiem",1)):u=="\u591C"||u=="\u665A"?(i.start.imply("hour",22),i.start.imply("meridiem",1)):u=="\u51CC"&&i.start.imply("hour",0)}else if(t[Tg]){let o=t[Tg];o=="\u660E"?s.hour()>1&&(a=a.add(1,"day")):o=="\u6628"?a=a.add(-1,"day"):o=="\u524D"?a=a.add(-2,"day"):o=="\u5927\u524D"?a=a.add(-3,"day"):o=="\u540E"?a=a.add(2,"day"):o=="\u5927\u540E"&&(a=a.add(3,"day"));let u=t[OM];if(u){let l=u[0];l=="\u65E9"||l=="\u4E0A"?i.start.imply("hour",6):l=="\u4E0B"?(i.start.imply("hour",15),i.start.imply("meridiem",1)):l=="\u4E2D"?(i.start.imply("hour",12),i.start.imply("meridiem",1)):l=="\u591C"||l=="\u665A"?(i.start.imply("hour",22),i.start.imply("meridiem",1)):l=="\u51CC"&&i.start.imply("hour",0)}}return i.start.assign("day",a.date()),i.start.assign("month",a.month()+1),i.start.assign("year",a.year()),i}};Pi.default=Dc});var Tn=h(He=>{"use strict";Object.defineProperty(He,"__esModule",{value:!0});He.zhStringToYear=He.zhStringToNumber=He.WEEKDAY_OFFSET=He.NUMBER=void 0;He.NUMBER={\u96F6:0,"\u3007":0,\u4E00:1,\u4E8C:2,\u4E24:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6,\u4E03:7,\u516B:8,\u4E5D:9,\u5341:10};He.WEEKDAY_OFFSET={\u5929:0,\u65E5:0,\u4E00:1,\u4E8C:2,\u4E09:3,\u56DB:4,\u4E94:5,\u516D:6};function PM(r){let e=0;for(let t=0;t{"use strict";var kM=Ai&&Ai.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ai,"__esModule",{value:!0});var NM=kM(K()),CM=R(),Br=Tn(),Mc=1,vg=2,Oc=3,Pc=class extends CM.AbstractParserWithWordBoundaryChecking{innerPattern(){return new RegExp("(\\d{2,4}|["+Object.keys(Br.NUMBER).join("")+"]{4}|["+Object.keys(Br.NUMBER).join("")+"]{2})?(?:\\s*)(?:\u5E74)?(?:[\\s|,|\uFF0C]*)(\\d{1,2}|["+Object.keys(Br.NUMBER).join("")+"]{1,3})(?:\\s*)(?:\u6708)(?:\\s*)(\\d{1,2}|["+Object.keys(Br.NUMBER).join("")+"]{1,3})?(?:\\s*)(?:\u65E5|\u53F7)?")}innerExtract(e,t){let n=NM.default(e.refDate),i=e.createParsingResult(t.index,t[0]),s=parseInt(t[vg]);if(isNaN(s)&&(s=Br.zhStringToNumber(t[vg])),i.start.assign("month",s),t[Oc]){let a=parseInt(t[Oc]);isNaN(a)&&(a=Br.zhStringToNumber(t[Oc])),i.start.assign("day",a)}else i.start.imply("day",n.date());if(t[Mc]){let a=parseInt(t[Mc]);isNaN(a)&&(a=Br.zhStringToYear(t[Mc])),i.start.assign("year",a)}else i.start.imply("year",n.year());return i}};Ai.default=Pc});var wg=h(ki=>{"use strict";var xM=ki&&ki.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ki,"__esModule",{value:!0});var SM=xM(K()),IM=R(),Rg=Tn(),UM=new RegExp("(\\d+|["+Object.keys(Rg.NUMBER).join("")+"]+|\u534A|\u51E0)(?:\\s*)(?:\u4E2A)?(\u79D2(?:\u949F)?|\u5206\u949F|\u5C0F\u65F6|\u949F|\u65E5|\u5929|\u661F\u671F|\u793C\u62DC|\u6708|\u5E74)(?:(?:\u4E4B|\u8FC7)?\u540E|(?:\u4E4B)?\u5185)","i"),Ac=1,FM=2,kc=class extends IM.AbstractParserWithWordBoundaryChecking{innerPattern(){return UM}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=parseInt(t[Ac]);if(isNaN(i)&&(i=Rg.zhStringToNumber(t[Ac])),isNaN(i)){let u=t[Ac];if(u==="\u51E0")i=3;else if(u==="\u534A")i=.5;else return null}let s=SM.default(e.refDate),o=t[FM][0];return o.match(/[日天星礼月年]/)?(o=="\u65E5"||o=="\u5929"?s=s.add(i,"d"):o=="\u661F"||o=="\u793C"?s=s.add(i*7,"d"):o=="\u6708"?s=s.add(i,"month"):o=="\u5E74"&&(s=s.add(i,"year")),n.start.assign("year",s.year()),n.start.assign("month",s.month()+1),n.start.assign("day",s.date()),n):(o=="\u79D2"?s=s.add(i,"second"):o=="\u5206"?s=s.add(i,"minute"):(o=="\u5C0F"||o=="\u949F")&&(s=s.add(i,"hour")),n.start.imply("year",s.year()),n.start.imply("month",s.month()+1),n.start.imply("day",s.date()),n.start.assign("hour",s.hour()),n.start.assign("minute",s.minute()),n.start.assign("second",s.second()),n)}};ki.default=kc});var Mg=h(Ni=>{"use strict";var qM=Ni&&Ni.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ni,"__esModule",{value:!0});var WM=qM(K()),LM=R(),Dg=Tn(),YM=new RegExp("(?\u4E0A|\u4E0B|\u8FD9)(?:\u4E2A)?(?:\u661F\u671F|\u793C\u62DC|\u5468)(?"+Object.keys(Dg.WEEKDAY_OFFSET).join("|")+")"),Nc=class extends LM.AbstractParserWithWordBoundaryChecking{innerPattern(){return YM}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=t.groups.weekday,s=Dg.WEEKDAY_OFFSET[i];if(s===void 0)return null;let a=null,o=t.groups.prefix;o=="\u4E0A"?a="last":o=="\u4E0B"?a="next":o=="\u8FD9"&&(a="this");let u=WM.default(e.refDate),l=!1,c=u.day();return a=="last"||a=="past"?(u=u.day(s-7),l=!0):a=="next"?(u=u.day(s+7),l=!0):a=="this"?u=u.day(s):Math.abs(s-7-c){"use strict";var $M=Ci&&Ci.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ci,"__esModule",{value:!0});var jM=$M(K()),BM=R(),ct=Tn(),GM=new RegExp("(?:\u4ECE|\u81EA)?(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(ct.NUMBER).join("")+"]+)(?:\\s*)(?:\u70B9|\u65F6|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(ct.NUMBER).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(ct.NUMBER).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),HM=new RegExp("(?:^\\s*(?:\u5230|\u81F3|\\-|\\\u2013|\\~|\\\u301C)\\s*)(?:(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(\u65E9|\u671D|\u665A)|(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668))|(\u4ECA|\u660E|\u524D|\u5927\u524D|\u540E|\u5927\u540E|\u6628)(?:\u65E5|\u5929)(?:[\\s,\uFF0C]*)(?:(\u4E0A(?:\u5348)|\u65E9(?:\u4E0A)|\u4E0B(?:\u5348)|\u665A(?:\u4E0A)|\u591C(?:\u665A)?|\u4E2D(?:\u5348)|\u51CC(?:\u6668)))?)?(?:[\\s,\uFF0C]*)(?:(\\d+|["+Object.keys(ct.NUMBER).join("")+"]+)(?:\\s*)(?:\u70B9|\u65F6|:|\uFF1A)(?:\\s*)(\\d+|\u534A|\u6B63|\u6574|["+Object.keys(ct.NUMBER).join("")+"]+)?(?:\\s*)(?:\u5206|:|\uFF1A)?(?:\\s*)(\\d+|["+Object.keys(ct.NUMBER).join("")+"]+)?(?:\\s*)(?:\u79D2)?)(?:\\s*(A.M.|P.M.|AM?|PM?))?","i"),la=1,ca=2,da=3,fa=4,pa=5,ha=6,lt=7,bn=8,ma=9,Cc=class extends BM.AbstractParserWithWordBoundaryChecking{innerPattern(){return GM}innerExtract(e,t){if(t.index>0&&e.text[t.index-1].match(/\w/))return null;let n=jM.default(e.refDate),i=e.createParsingResult(t.index,t[0]),s=n.clone();if(t[la]){let c=t[la];c=="\u660E"?n.hour()>1&&s.add(1,"day"):c=="\u6628"?s.add(-1,"day"):c=="\u524D"?s.add(-2,"day"):c=="\u5927\u524D"?s.add(-3,"day"):c=="\u540E"?s.add(2,"day"):c=="\u5927\u540E"&&s.add(3,"day"),i.start.assign("day",s.date()),i.start.assign("month",s.month()+1),i.start.assign("year",s.year())}else if(t[fa]){let c=t[fa];c=="\u660E"?s.add(1,"day"):c=="\u6628"?s.add(-1,"day"):c=="\u524D"?s.add(-2,"day"):c=="\u5927\u524D"?s.add(-3,"day"):c=="\u540E"?s.add(2,"day"):c=="\u5927\u540E"&&s.add(3,"day"),i.start.assign("day",s.date()),i.start.assign("month",s.month()+1),i.start.assign("year",s.year())}else i.start.imply("day",s.date()),i.start.imply("month",s.month()+1),i.start.imply("year",s.year());let a=0,o=0,u=-1;if(t[bn]){let c=parseInt(t[bn]);if(isNaN(c)&&(c=ct.zhStringToNumber(t[bn])),c>=60)return null;i.start.assign("second",c)}if(a=parseInt(t[ha]),isNaN(a)&&(a=ct.zhStringToNumber(t[ha])),t[lt]?t[lt]=="\u534A"?o=30:t[lt]=="\u6B63"||t[lt]=="\u6574"?o=0:(o=parseInt(t[lt]),isNaN(o)&&(o=ct.zhStringToNumber(t[lt]))):a>100&&(o=a%100,a=Math.floor(a/100)),o>=60||a>24)return null;if(a>=12&&(u=1),t[ma]){if(a>12)return null;let c=t[ma][0].toLowerCase();c=="a"&&(u=0,a==12&&(a=0)),c=="p"&&(u=1,a!=12&&(a+=12))}else if(t[ca]){let d=t[ca][0];d=="\u65E9"?(u=0,a==12&&(a=0)):d=="\u665A"&&(u=1,a!=12&&(a+=12))}else if(t[da]){let d=t[da][0];d=="\u4E0A"||d=="\u65E9"||d=="\u51CC"?(u=0,a==12&&(a=0)):(d=="\u4E0B"||d=="\u665A")&&(u=1,a!=12&&(a+=12))}else if(t[pa]){let d=t[pa][0];d=="\u4E0A"||d=="\u65E9"||d=="\u51CC"?(u=0,a==12&&(a=0)):(d=="\u4E0B"||d=="\u665A")&&(u=1,a!=12&&(a+=12))}if(i.start.assign("hour",a),i.start.assign("minute",o),u>=0?i.start.assign("meridiem",u):a<12?i.start.imply("meridiem",0):i.start.imply("meridiem",1),t=HM.exec(e.text.substring(i.index+i.text.length)),!t)return i.text.match(/^\d+$/)?null:i;let l=s.clone();if(i.end=e.createParsingComponents(),t[la]){let c=t[la];c=="\u660E"?n.hour()>1&&l.add(1,"day"):c=="\u6628"?l.add(-1,"day"):c=="\u524D"?l.add(-2,"day"):c=="\u5927\u524D"?l.add(-3,"day"):c=="\u540E"?l.add(2,"day"):c=="\u5927\u540E"&&l.add(3,"day"),i.end.assign("day",l.date()),i.end.assign("month",l.month()+1),i.end.assign("year",l.year())}else if(t[fa]){let c=t[fa];c=="\u660E"?l.add(1,"day"):c=="\u6628"?l.add(-1,"day"):c=="\u524D"?l.add(-2,"day"):c=="\u5927\u524D"?l.add(-3,"day"):c=="\u540E"?l.add(2,"day"):c=="\u5927\u540E"&&l.add(3,"day"),i.end.assign("day",l.date()),i.end.assign("month",l.month()+1),i.end.assign("year",l.year())}else i.end.imply("day",l.date()),i.end.imply("month",l.month()+1),i.end.imply("year",l.year());if(a=0,o=0,u=-1,t[bn]){let c=parseInt(t[bn]);if(isNaN(c)&&(c=ct.zhStringToNumber(t[bn])),c>=60)return null;i.end.assign("second",c)}if(a=parseInt(t[ha]),isNaN(a)&&(a=ct.zhStringToNumber(t[ha])),t[lt]?t[lt]=="\u534A"?o=30:t[lt]=="\u6B63"||t[lt]=="\u6574"?o=0:(o=parseInt(t[lt]),isNaN(o)&&(o=ct.zhStringToNumber(t[lt]))):a>100&&(o=a%100,a=Math.floor(a/100)),o>=60||a>24)return null;if(a>=12&&(u=1),t[ma]){if(a>12)return null;let c=t[ma][0].toLowerCase();c=="a"&&(u=0,a==12&&(a=0)),c=="p"&&(u=1,a!=12&&(a+=12)),i.start.isCertain("meridiem")||(u==0?(i.start.imply("meridiem",0),i.start.get("hour")==12&&i.start.assign("hour",0)):(i.start.imply("meridiem",1),i.start.get("hour")!=12&&i.start.assign("hour",i.start.get("hour")+12)))}else if(t[ca]){let d=t[ca][0];d=="\u65E9"?(u=0,a==12&&(a=0)):d=="\u665A"&&(u=1,a!=12&&(a+=12))}else if(t[da]){let d=t[da][0];d=="\u4E0A"||d=="\u65E9"||d=="\u51CC"?(u=0,a==12&&(a=0)):(d=="\u4E0B"||d=="\u665A")&&(u=1,a!=12&&(a+=12))}else if(t[pa]){let d=t[pa][0];d=="\u4E0A"||d=="\u65E9"||d=="\u51CC"?(u=0,a==12&&(a=0)):(d=="\u4E0B"||d=="\u665A")&&(u=1,a!=12&&(a+=12))}return i.text=i.text+t[0],i.end.assign("hour",a),i.end.assign("minute",o),u>=0?i.end.assign("meridiem",u):i.start.isCertain("meridiem")&&i.start.get("meridiem")==1&&i.start.get("hour")>a?i.end.imply("meridiem",0):a>12&&i.end.imply("meridiem",1),i.end.date().getTime(){"use strict";var zM=xi&&xi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(xi,"__esModule",{value:!0});var KM=zM(K()),VM=R(),Pg=Tn(),ZM=new RegExp("(?:\u661F\u671F|\u793C\u62DC|\u5468)(?"+Object.keys(Pg.WEEKDAY_OFFSET).join("|")+")"),xc=class extends VM.AbstractParserWithWordBoundaryChecking{innerPattern(){return ZM}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=t.groups.weekday,s=Pg.WEEKDAY_OFFSET[i];if(s===void 0)return null;let a=KM.default(e.refDate),o=!1,u=a.day();return Math.abs(s-7-u){"use strict";var XM=Si&&Si.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Si,"__esModule",{value:!0});var QM=XM(Ct()),Sc=class extends QM.default{patternBetween(){return/^\s*(至|到|-|~|~|-|ー)\s*$/i}};Si.default=Sc});var Ng=h(Ii=>{"use strict";var JM=Ii&&Ii.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Ii,"__esModule",{value:!0});var eO=JM(Ht()),Ic=class extends eO.default{patternBetween(){return/^\s*$/i}};Ii.default=Ic});var Cg=h(be=>{"use strict";var Jt=be&&be.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(be,"__esModule",{value:!0});be.createConfiguration=be.createCasualConfiguration=be.parseDate=be.parse=be.strict=be.casual=be.hans=void 0;var Uc=_t(),tO=Jt(qs()),rO=zt(),nO=Jt(bg()),iO=Jt(Eg()),sO=Jt(wg()),aO=Jt(Mg()),oO=Jt(Og()),uO=Jt(Ag()),lO=Jt(kg()),cO=Jt(Ng());be.hans=new Uc.Chrono(Fc());be.casual=new Uc.Chrono(Fc());be.strict=new Uc.Chrono(qc());function dO(r,e,t){return be.casual.parse(r,e,t)}be.parse=dO;function fO(r,e,t){return be.casual.parseDate(r,e,t)}be.parseDate=fO;function Fc(){let r=qc();return r.parsers.unshift(new nO.default),r}be.createCasualConfiguration=Fc;function qc(){let r=rO.includeCommonConfiguration({parsers:[new iO.default,new aO.default,new uO.default,new oO.default,new sO.default],refiners:[new lO.default,new cO.default]});return r.refiners=r.refiners.filter(e=>!(e instanceof tO.default)),r}be.createConfiguration=qc});var Sg=h(Je=>{"use strict";var xg=Je&&Je.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),pO=Je&&Je.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),hO=Je&&Je.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&xg(e,r,t)},mO=Je&&Je.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&xg(e,r,t);return pO(e,r),e};Object.defineProperty(Je,"__esModule",{value:!0});Je.hans=void 0;hO(yg(),Je);Je.hans=mO(Cg())});var ze=h(q=>{"use strict";Object.defineProperty(q,"__esModule",{value:!0});q.parseTimeUnits=q.TIME_UNITS_PATTERN=q.parseYear=q.YEAR_PATTERN=q.parseOrdinalNumberPattern=q.ORDINAL_NUMBER_PATTERN=q.parseNumberPattern=q.NUMBER_PATTERN=q.TIME_UNIT_DICTIONARY=q.ORDINAL_WORD_DICTIONARY=q.INTEGER_WORD_DICTIONARY=q.MONTH_DICTIONARY=q.FULL_MONTH_NAME_DICTIONARY=q.WEEKDAY_DICTIONARY=q.REGEX_PARTS=void 0;var ya=J(),yO=xe();q.REGEX_PARTS={leftBoundary:"([^\\p{L}\\p{N}_]|^)",rightBoundary:"(?=[^\\p{L}\\p{N}_]|$)",flags:"iu"};q.WEEKDAY_DICTIONARY={\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435:0,\u0432\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u044F:0,\u0432\u0441\u043A:0,"\u0432\u0441\u043A.":0,\u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A:1,\u043F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A\u0430:1,\u043F\u043D:1,"\u043F\u043D.":1,\u0432\u0442\u043E\u0440\u043D\u0438\u043A:2,\u0432\u0442\u043E\u0440\u043D\u0438\u043A\u0430:2,\u0432\u0442:2,"\u0432\u0442.":2,\u0441\u0440\u0435\u0434\u0430:3,\u0441\u0440\u0435\u0434\u044B:3,\u0441\u0440\u0435\u0434\u0443:3,\u0441\u0440:3,"\u0441\u0440.":3,\u0447\u0435\u0442\u0432\u0435\u0440\u0433:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430:4,\u0447\u0442:4,"\u0447\u0442.":4,\u043F\u044F\u0442\u043D\u0438\u0446\u0430:5,\u043F\u044F\u0442\u043D\u0438\u0446\u0443:5,\u043F\u044F\u0442\u043D\u0438\u0446\u044B:5,\u043F\u0442:5,"\u043F\u0442.":5,\u0441\u0443\u0431\u0431\u043E\u0442\u0430:6,\u0441\u0443\u0431\u0431\u043E\u0442\u0443:6,\u0441\u0443\u0431\u0431\u043E\u0442\u044B:6,\u0441\u0431:6,"\u0441\u0431.":6};q.FULL_MONTH_NAME_DICTIONARY={\u044F\u043D\u0432\u0430\u0440\u044C:1,\u044F\u043D\u0432\u0430\u0440\u044F:1,\u044F\u043D\u0432\u0430\u0440\u0435:1,\u0444\u0435\u0432\u0440\u044F\u043B\u044C:2,\u0444\u0435\u0432\u0440\u044F\u043B\u044F:2,\u0444\u0435\u0432\u0440\u044F\u043B\u0435:2,\u043C\u0430\u0440\u0442:3,\u043C\u0430\u0440\u0442\u0430:3,\u043C\u0430\u0440\u0442\u0435:3,\u0430\u043F\u0440\u0435\u043B\u044C:4,\u0430\u043F\u0440\u0435\u043B\u044F:4,\u0430\u043F\u0440\u0435\u043B\u0435:4,\u043C\u0430\u0439:5,\u043C\u0430\u044F:5,\u043C\u0430\u0435:5,\u0438\u044E\u043D\u044C:6,\u0438\u044E\u043D\u044F:6,\u0438\u044E\u043D\u0435:6,\u0438\u044E\u043B\u044C:7,\u0438\u044E\u043B\u044F:7,\u0438\u044E\u043B\u0435:7,\u0430\u0432\u0433\u0443\u0441\u0442:8,\u0430\u0432\u0433\u0443\u0441\u0442\u0430:8,\u0430\u0432\u0433\u0443\u0441\u0442\u0435:8,\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044C:9,\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044F:9,\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u0435:9,\u043E\u043A\u0442\u044F\u0431\u0440\u044C:10,\u043E\u043A\u0442\u044F\u0431\u0440\u044F:10,\u043E\u043A\u0442\u044F\u0431\u0440\u0435:10,\u043D\u043E\u044F\u0431\u0440\u044C:11,\u043D\u043E\u044F\u0431\u0440\u044F:11,\u043D\u043E\u044F\u0431\u0440\u0435:11,\u0434\u0435\u043A\u0430\u0431\u0440\u044C:12,\u0434\u0435\u043A\u0430\u0431\u0440\u044F:12,\u0434\u0435\u043A\u0430\u0431\u0440\u0435:12};q.MONTH_DICTIONARY=Object.assign(Object.assign({},q.FULL_MONTH_NAME_DICTIONARY),{\u044F\u043D\u0432:1,"\u044F\u043D\u0432.":1,\u0444\u0435\u0432:2,"\u0444\u0435\u0432.":2,\u043C\u0430\u0440:3,"\u043C\u0430\u0440.":3,\u0430\u043F\u0440:4,"\u0430\u043F\u0440.":4,\u0430\u0432\u0433:8,"\u0430\u0432\u0433.":8,\u0441\u0435\u043D:9,"\u0441\u0435\u043D.":9,\u043E\u043A\u0442:10,"\u043E\u043A\u0442.":10,\u043D\u043E\u044F:11,"\u043D\u043E\u044F.":11,\u0434\u0435\u043A:12,"\u0434\u0435\u043A.":12});q.INTEGER_WORD_DICTIONARY={\u043E\u0434\u0438\u043D:1,\u043E\u0434\u043D\u0430:1,\u043E\u0434\u043D\u043E\u0439:1,\u043E\u0434\u043D\u0443:1,\u0434\u0432\u0435:2,\u0434\u0432\u0430:2,\u0434\u0432\u0443\u0445:2,\u0442\u0440\u0438:3,\u0442\u0440\u0435\u0445:3,\u0442\u0440\u0451\u0445:3,\u0447\u0435\u0442\u044B\u0440\u0435:4,\u0447\u0435\u0442\u044B\u0440\u0435\u0445:4,\u0447\u0435\u0442\u044B\u0440\u0451\u0445:4,\u043F\u044F\u0442\u044C:5,\u043F\u044F\u0442\u0438:5,\u0448\u0435\u0441\u0442\u044C:6,\u0448\u0435\u0441\u0442\u0438:6,\u0441\u0435\u043C\u044C:7,\u0441\u0435\u043C\u0438:7,\u0432\u043E\u0441\u0435\u043C\u044C:8,\u0432\u043E\u0441\u0435\u043C\u044C\u043C\u0438:8,\u0434\u0435\u0432\u044F\u0442\u044C:9,\u0434\u0435\u0432\u044F\u0442\u0438:9,\u0434\u0435\u0441\u044F\u0442\u044C:10,\u0434\u0435\u0441\u044F\u0442\u0438:10,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u044C:11,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u0438:11,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u044C:12,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u0438:12};q.ORDINAL_WORD_DICTIONARY={\u043F\u0435\u0440\u0432\u043E\u0435:1,\u043F\u0435\u0440\u0432\u043E\u0433\u043E:1,\u0432\u0442\u043E\u0440\u043E\u0435:2,\u0432\u0442\u043E\u0440\u043E\u0433\u043E:2,\u0442\u0440\u0435\u0442\u044C\u0435:3,\u0442\u0440\u0435\u0442\u044C\u0435\u0433\u043E:3,\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0435:4,\u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0433\u043E:4,\u043F\u044F\u0442\u043E\u0435:5,\u043F\u044F\u0442\u043E\u0433\u043E:5,\u0448\u0435\u0441\u0442\u043E\u0435:6,\u0448\u0435\u0441\u0442\u043E\u0433\u043E:6,\u0441\u0435\u0434\u044C\u043C\u043E\u0435:7,\u0441\u0435\u0434\u044C\u043C\u043E\u0433\u043E:7,\u0432\u043E\u0441\u044C\u043C\u043E\u0435:8,\u0432\u043E\u0441\u044C\u043C\u043E\u0433\u043E:8,\u0434\u0435\u0432\u044F\u0442\u043E\u0435:9,\u0434\u0435\u0432\u044F\u0442\u043E\u0433\u043E:9,\u0434\u0435\u0441\u044F\u0442\u043E\u0435:10,\u0434\u0435\u0441\u044F\u0442\u043E\u0433\u043E:10,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:11,\u043E\u0434\u0438\u043D\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:11,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:12,\u0434\u0432\u0435\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:12,\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:13,\u0442\u0440\u0438\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:13,\u0447\u0435\u0442\u044B\u0440\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:14,\u0447\u0435\u0442\u044B\u0440\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:14,\u043F\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:15,\u043F\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:15,\u0448\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:16,\u0448\u0435\u0441\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:16,\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:17,\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:17,\u0432\u043E\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:18,\u0432\u043E\u0441\u0435\u043C\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:18,\u0434\u0435\u0432\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0435:19,\u0434\u0435\u0432\u044F\u0442\u043D\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:19,\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u043E\u0435:20,\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u043E\u0433\u043E:20,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0435":21,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0433\u043E":21,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u0442\u043E\u0440\u043E\u0435":22,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u0442\u043E\u0440\u043E\u0433\u043E":22,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0442\u0440\u0435\u0442\u044C\u0435":23,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0442\u0440\u0435\u0442\u044C\u0435\u0433\u043E":23,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0435":24,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043E\u0433\u043E":24,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u044F\u0442\u043E\u0435":25,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u043F\u044F\u0442\u043E\u0433\u043E":25,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0448\u0435\u0441\u0442\u043E\u0435":26,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0448\u0435\u0441\u0442\u043E\u0433\u043E":26,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0441\u0435\u0434\u044C\u043C\u043E\u0435":27,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0441\u0435\u0434\u044C\u043C\u043E\u0433\u043E":27,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u043E\u0441\u044C\u043C\u043E\u0435":28,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0432\u043E\u0441\u044C\u043C\u043E\u0433\u043E":28,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0434\u0435\u0432\u044F\u0442\u043E\u0435":29,"\u0434\u0432\u0430\u0434\u0446\u0430\u0442\u044C \u0434\u0435\u0432\u044F\u0442\u043E\u0433\u043E":29,\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u043E\u0435:30,\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u043E\u0433\u043E:30,"\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0435":31,"\u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044C \u043F\u0435\u0440\u0432\u043E\u0433\u043E":31};q.TIME_UNIT_DICTIONARY={\u0441\u0435\u043A:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0430:"second",\u0441\u0435\u043A\u0443\u043D\u0434:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u044B:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u0443:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0430:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0438:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u0435\u043A:"second",\u0441\u0435\u043A\u0443\u043D\u0434\u043E\u0447\u043A\u0443:"second",\u043C\u0438\u043D:"minute",\u043C\u0438\u043D\u0443\u0442\u0430:"minute",\u043C\u0438\u043D\u0443\u0442:"minute",\u043C\u0438\u043D\u0443\u0442\u044B:"minute",\u043C\u0438\u043D\u0443\u0442\u0443:"minute",\u043C\u0438\u043D\u0443\u0442\u043E\u043A:"minute",\u043C\u0438\u043D\u0443\u0442\u043A\u0438:"minute",\u043C\u0438\u043D\u0443\u0442\u043A\u0443:"minute",\u0447\u0430\u0441:"hour",\u0447\u0430\u0441\u043E\u0432:"hour",\u0447\u0430\u0441\u0430:"hour",\u0447\u0430\u0441\u0443:"hour",\u0447\u0430\u0441\u0438\u043A\u043E\u0432:"hour",\u0447\u0430\u0441\u0438\u043A\u0430:"hour",\u0447\u0430\u0441\u0438\u043A\u0435:"hour",\u0447\u0430\u0441\u0438\u043A:"hour",\u0434\u0435\u043D\u044C:"d",\u0434\u043D\u044F:"d",\u0434\u043D\u0435\u0439:"d",\u0441\u0443\u0442\u043E\u043A:"d",\u0441\u0443\u0442\u043A\u0438:"d",\u043D\u0435\u0434\u0435\u043B\u044F:"week",\u043D\u0435\u0434\u0435\u043B\u0435:"week",\u043D\u0435\u0434\u0435\u043B\u0438:"week",\u043D\u0435\u0434\u0435\u043B\u044E:"week",\u043D\u0435\u0434\u0435\u043B\u044C:"week",\u043D\u0435\u0434\u0435\u043B\u044C\u043A\u0435:"week",\u043D\u0435\u0434\u0435\u043B\u044C\u043A\u0438:"week",\u043D\u0435\u0434\u0435\u043B\u0435\u043A:"week",\u043C\u0435\u0441\u044F\u0446:"month",\u043C\u0435\u0441\u044F\u0446\u0435:"month",\u043C\u0435\u0441\u044F\u0446\u0435\u0432:"month",\u043C\u0435\u0441\u044F\u0446\u0430:"month",\u043A\u0432\u0430\u0440\u0442\u0430\u043B:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u0435:"quarter",\u043A\u0432\u0430\u0440\u0442\u0430\u043B\u043E\u0432:"quarter",\u0433\u043E\u0434:"year",\u0433\u043E\u0434\u0430:"year",\u0433\u043E\u0434\u0443:"year",\u0433\u043E\u0434\u043E\u0432:"year",\u043B\u0435\u0442:"year",\u0433\u043E\u0434\u0438\u043A:"year",\u0433\u043E\u0434\u0438\u043A\u0430:"year",\u0433\u043E\u0434\u0438\u043A\u043E\u0432:"year"};q.NUMBER_PATTERN=`(?:${ya.matchAnyPattern(q.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|\u043F\u043E\u043B|\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E|\u043F\u0430\u0440(?:\u044B|\u0443)|\\s{0,3})`;function Ug(r){let e=r.toLowerCase();return q.INTEGER_WORD_DICTIONARY[e]!==void 0?q.INTEGER_WORD_DICTIONARY[e]:e.match(/несколько/)?3:e.match(/пол/)?.5:e.match(/пар/)?2:e===""?1:parseFloat(e)}q.parseNumberPattern=Ug;q.ORDINAL_NUMBER_PATTERN=`(?:${ya.matchAnyPattern(q.ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:\u0433\u043E|\u043E\u0433\u043E|\u0435|\u043E\u0435)?)`;function gO(r){let e=r.toLowerCase();return q.ORDINAL_WORD_DICTIONARY[e]!==void 0?q.ORDINAL_WORD_DICTIONARY[e]:(e=e.replace(/(?:st|nd|rd|th)$/i,""),parseInt(e))}q.parseOrdinalNumberPattern=gO;var Wc="(?:\\s+(?:\u0433\u043E\u0434\u0443|\u0433\u043E\u0434\u0430|\u0433\u043E\u0434|\u0433|\u0433.))?";q.YEAR_PATTERN=`(?:[1-9][0-9]{0,3}${Wc}\\s*(?:\u043D.\u044D.|\u0434\u043E \u043D.\u044D.|\u043D. \u044D.|\u0434\u043E \u043D. \u044D.)|[1-2][0-9]{3}${Wc}|[5-9][0-9]${Wc})`;function _O(r){if(/(год|года|г|г.)/i.test(r)&&(r=r.replace(/(год|года|г|г.)/i,"")),/(до н.э.|до н. э.)/i.test(r))return r=r.replace(/(до н.э.|до н. э.)/i,""),-parseInt(r);if(/(н. э.|н.э.)/i.test(r))return r=r.replace(/(н. э.|н.э.)/i,""),parseInt(r);let e=parseInt(r);return yO.findMostLikelyADYear(e)}q.parseYear=_O;var Fg=`(${q.NUMBER_PATTERN})\\s{0,3}(${ya.matchAnyPattern(q.TIME_UNIT_DICTIONARY)})`,Ig=new RegExp(Fg,"i");q.TIME_UNITS_PATTERN=ya.repeatedTimeunitPattern("(?:(?:\u043E\u043A\u043E\u043B\u043E|\u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E)\\s{0,3})?",Fg);function TO(r){let e={},t=r,n=Ig.exec(t);for(;n;)bO(e,n),t=t.substring(n[0].length).trim(),n=Ig.exec(t);return e}q.parseTimeUnits=TO;function bO(r,e){let t=Ug(e[1]),n=q.TIME_UNIT_DICTIONARY[e[2].toLowerCase()];r[n]=t}});var Wg=h(Yc=>{"use strict";Object.defineProperty(Yc,"__esModule",{value:!0});var Ui=ze(),vO=he(),EO=R(),qg=`(?:(?:\u043E\u043A\u043E\u043B\u043E|\u043F\u0440\u0438\u043C\u0435\u0440\u043D\u043E)\\s*(?:~\\s*)?)?(${Ui.TIME_UNITS_PATTERN})${Ui.REGEX_PARTS.rightBoundary}`,RO=new RegExp(`(?:\u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0435|\u0432 \u0442\u0435\u0447\u0435\u043D\u0438\u0438)\\s*${qg}`,Ui.REGEX_PARTS.flags),wO=new RegExp(qg,"i"),Lc=class extends EO.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return Ui.REGEX_PARTS.leftBoundary}innerPattern(e){return e.option.forwardDate?wO:RO}innerExtract(e,t){let n=Ui.parseTimeUnits(t[1]);return vO.ParsingComponents.createRelativeFromReference(e.reference,n)}};Yc.default=Lc});var Bg=h(jc=>{"use strict";Object.defineProperty(jc,"__esModule",{value:!0});var DO=xe(),Fi=ze(),jg=ze(),ga=ze(),MO=J(),OO=R(),PO=new RegExp(`(?:\u0441)?\\s*(${ga.ORDINAL_NUMBER_PATTERN})(?:\\s{0,3}(?:\u043F\u043E|-|\u2013|\u0434\u043E)?\\s{0,3}(${ga.ORDINAL_NUMBER_PATTERN}))?(?:-|\\/|\\s{0,3}(?:of)?\\s{0,3})(${MO.matchAnyPattern(Fi.MONTH_DICTIONARY)})(?:(?:-|\\/|,?\\s{0,3})(${jg.YEAR_PATTERN}(?![^\\s]\\d)))?${Fi.REGEX_PARTS.rightBoundary}`,Fi.REGEX_PARTS.flags),Lg=1,Yg=2,AO=3,$g=4,$c=class extends OO.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return Fi.REGEX_PARTS.leftBoundary}innerPattern(){return PO}innerExtract(e,t){let n=e.createParsingResult(t.index,t[0]),i=Fi.MONTH_DICTIONARY[t[AO].toLowerCase()],s=ga.parseOrdinalNumberPattern(t[Lg]);if(s>31)return t.index=t.index+t[Lg].length,null;if(n.start.assign("month",i),n.start.assign("day",s),t[$g]){let a=jg.parseYear(t[$g]);n.start.assign("year",a)}else{let a=DO.findYearClosestToRef(e.refDate,s,i);n.start.imply("year",a)}if(t[Yg]){let a=ga.parseOrdinalNumberPattern(t[Yg]);n.end=n.start.clone(),n.end.assign("day",a)}return n}};jc.default=$c});var zg=h(Gc=>{"use strict";Object.defineProperty(Gc,"__esModule",{value:!0});var qi=ze(),kO=xe(),NO=J(),Hg=ze(),CO=R(),xO=new RegExp(`((?:\u0432)\\s*)?(${NO.matchAnyPattern(qi.MONTH_DICTIONARY)})\\s*(?:[,-]?\\s*(${Hg.YEAR_PATTERN})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,qi.REGEX_PARTS.flags),SO=2,Gg=3,Bc=class extends CO.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return qi.REGEX_PARTS.leftBoundary}innerPattern(){return xO}innerExtract(e,t){let n=t[SO].toLowerCase();if(t[0].length<=3&&!qi.FULL_MONTH_NAME_DICTIONARY[n])return null;let i=e.createParsingResult(t.index,t.index+t[0].length);i.start.imply("day",1);let s=qi.MONTH_DICTIONARY[n];if(i.start.assign("month",s),t[Gg]){let a=Hg.parseYear(t[Gg]);i.start.assign("year",a)}else{let a=kO.findYearClosestToRef(e.refDate,1,s);i.start.imply("year",a)}return i}};Gc.default=Bc});var Vg=h(zc=>{"use strict";Object.defineProperty(zc,"__esModule",{value:!0});var _a=Ee(),IO=Fr(),Kg=ze(),Hc=class extends IO.AbstractTimeExpressionParser{constructor(e){super(e)}patternFlags(){return Kg.REGEX_PARTS.flags}primaryPatternLeftBoundary(){return"(^|\\s|T|(?:[^\\p{L}\\p{N}_]))"}followingPhase(){return"\\s*(?:\\-|\\\u2013|\\~|\\\u301C|\u0434\u043E|\u0438|\u043F\u043E|\\?)\\s*"}primaryPrefix(){return"(?:(?:\u0432|\u0441)\\s*)??"}primarySuffix(){return`(?:\\s*(?:\u0443\u0442\u0440\u0430|\u0432\u0435\u0447\u0435\u0440\u0430|\u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043B\u0443\u0434\u043D\u044F))?(?!\\/)${Kg.REGEX_PARTS.rightBoundary}`}extractPrimaryTimeComponents(e,t){let n=super.extractPrimaryTimeComponents(e,t);if(n){if(t[0].endsWith("\u0432\u0435\u0447\u0435\u0440\u0430")){let i=n.get("hour");i>=6&&i<12?(n.assign("hour",n.get("hour")+12),n.assign("meridiem",_a.Meridiem.PM)):i<6&&n.assign("meridiem",_a.Meridiem.AM)}if(t[0].endsWith("\u043F\u043E\u0441\u043B\u0435 \u043F\u043E\u043B\u0443\u0434\u043D\u044F")){n.assign("meridiem",_a.Meridiem.PM);let i=n.get("hour");i>=0&&i<=6&&n.assign("hour",n.get("hour")+12)}t[0].endsWith("\u0443\u0442\u0440\u0430")&&(n.assign("meridiem",_a.Meridiem.AM),n.get("hour")<12&&n.assign("hour",n.get("hour")))}return n}};zc.default=Hc});var Zg=h(Vc=>{"use strict";Object.defineProperty(Vc,"__esModule",{value:!0});var Ta=ze(),UO=he(),FO=R(),qO=st(),WO=new RegExp(`(${Ta.TIME_UNITS_PATTERN})\\s{0,5}\u043D\u0430\u0437\u0430\u0434(?=(?:\\W|$))`,Ta.REGEX_PARTS.flags),Kc=class extends FO.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return Ta.REGEX_PARTS.leftBoundary}innerPattern(){return WO}innerExtract(e,t){let n=Ta.parseTimeUnits(t[1]),i=qO.reverseTimeUnits(n);return UO.ParsingComponents.createRelativeFromReference(e.reference,i)}};Vc.default=Kc});var Xg=h(Wi=>{"use strict";var LO=Wi&&Wi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Wi,"__esModule",{value:!0});var YO=LO(Ct()),Zc=class extends YO.default{patternBetween(){return/^\s*(и до|и по|до|по|-)\s*$/i}};Wi.default=Zc});var Qg=h(Li=>{"use strict";var $O=Li&&Li.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Li,"__esModule",{value:!0});var jO=$O(Ht()),Xc=class extends jO.default{patternBetween(){return new RegExp("^\\s*(T|\u0432|,|-)?\\s*$")}};Li.default=Xc});var Jg=h(er=>{"use strict";var BO=er&&er.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),GO=er&&er.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),HO=er&&er.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&BO(e,r,t);return GO(e,r),e};Object.defineProperty(er,"__esModule",{value:!0});var zO=R(),Yi=HO(Vt()),Qc=ze(),KO=new RegExp(`(?:\u0441|\u0441\u043E)?\\s*(\u0441\u0435\u0433\u043E\u0434\u043D\u044F|\u0432\u0447\u0435\u0440\u0430|\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430|\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430)${Qc.REGEX_PARTS.rightBoundary}`,Qc.REGEX_PARTS.flags),Jc=class extends zO.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return Qc.REGEX_PARTS.leftBoundary}innerPattern(e){return KO}innerExtract(e,t){let n=t[1].toLowerCase(),i=e.createParsingComponents();switch(n){case"\u0441\u0435\u0433\u043E\u0434\u043D\u044F":return Yi.today(e.reference);case"\u0432\u0447\u0435\u0440\u0430":return Yi.yesterday(e.reference);case"\u0437\u0430\u0432\u0442\u0440\u0430":return Yi.tomorrow(e.reference);case"\u043F\u043E\u0441\u043B\u0435\u0437\u0430\u0432\u0442\u0440\u0430":return Yi.theDayAfter(e.reference,2);case"\u043F\u043E\u0437\u0430\u0432\u0447\u0435\u0440\u0430":return Yi.theDayBefore(e.reference,2)}return i}};er.default=Jc});var e_=h(Rt=>{"use strict";var VO=Rt&&Rt.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),ZO=Rt&&Rt.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),XO=Rt&&Rt.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&VO(e,r,t);return ZO(e,r),e},QO=Rt&&Rt.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Rt,"__esModule",{value:!0});var JO=R(),Gr=XO(Vt()),eP=it(),tP=QO(K()),ed=ze(),rP=new RegExp(`(\u0441\u0435\u0439\u0447\u0430\u0441|\u043F\u0440\u043E\u0448\u043B\u044B\u043C\\s*\u0432\u0435\u0447\u0435\u0440\u043E\u043C|\u043F\u0440\u043E\u0448\u043B\u043E\u0439\\s*\u043D\u043E\u0447\u044C\u044E|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439\\s*\u043D\u043E\u0447\u044C\u044E|\u0441\u0435\u0433\u043E\u0434\u043D\u044F\\s*\u043D\u043E\u0447\u044C\u044E|\u044D\u0442\u043E\u0439\\s*\u043D\u043E\u0447\u044C\u044E|\u043D\u043E\u0447\u044C\u044E|\u044D\u0442\u0438\u043C \u0443\u0442\u0440\u043E\u043C|\u0443\u0442\u0440\u043E\u043C|\u0443\u0442\u0440\u0430|\u0432\\s*\u043F\u043E\u043B\u0434\u0435\u043D\u044C|\u0432\u0435\u0447\u0435\u0440\u043E\u043C|\u0432\u0435\u0447\u0435\u0440\u0430|\u0432\\s*\u043F\u043E\u043B\u043D\u043E\u0447\u044C)${ed.REGEX_PARTS.rightBoundary}`,ed.REGEX_PARTS.flags),td=class extends JO.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return ed.REGEX_PARTS.leftBoundary}innerPattern(){return rP}innerExtract(e,t){let n=tP.default(e.refDate),i=t[0].toLowerCase(),s=e.createParsingComponents();if(i==="\u0441\u0435\u0439\u0447\u0430\u0441")return Gr.now(e.reference);if(i==="\u0432\u0435\u0447\u0435\u0440\u043E\u043C"||i==="\u0432\u0435\u0447\u0435\u0440\u0430")return Gr.evening(e.reference);if(i.endsWith("\u0443\u0442\u0440\u043E\u043C")||i.endsWith("\u0443\u0442\u0440\u0430"))return Gr.morning(e.reference);if(i.match(/в\s*полдень/))return Gr.noon(e.reference);if(i.match(/прошлой\s*ночью/))return Gr.lastNight(e.reference);if(i.match(/прошлым\s*вечером/))return Gr.yesterdayEvening(e.reference);if(i.match(/следующей\s*ночью/)){let a=n.hour()<22?1:2;n=n.add(a,"day"),eP.assignSimilarDate(s,n),s.imply("hour",0)}return i.match(/в\s*полночь/)||i.endsWith("\u043D\u043E\u0447\u044C\u044E")?Gr.midnight(e.reference):s}};Rt.default=td});var t_=h(nd=>{"use strict";Object.defineProperty(nd,"__esModule",{value:!0});var $i=ze(),nP=J(),iP=R(),sP=Wr(),aP=new RegExp(`(?:(?:,|\\(|\uFF08)\\s*)?(?:\u0432\\s*?)?(?:(\u044D\u0442\u0443|\u044D\u0442\u043E\u0442|\u043F\u0440\u043E\u0448\u043B\u044B\u0439|\u043F\u0440\u043E\u0448\u043B\u0443\u044E|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E)\\s*)?(${nP.matchAnyPattern($i.WEEKDAY_DICTIONARY)})(?:\\s*(?:,|\\)|\uFF09))?(?:\\s*\u043D\u0430\\s*(\u044D\u0442\u043E\u0439|\u043F\u0440\u043E\u0448\u043B\u043E\u0439|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439)\\s*\u043D\u0435\u0434\u0435\u043B\u0435)?${$i.REGEX_PARTS.rightBoundary}`,$i.REGEX_PARTS.flags),oP=1,uP=2,lP=3,rd=class extends iP.AbstractParserWithWordBoundaryChecking{innerPattern(){return aP}patternLeftBoundary(){return $i.REGEX_PARTS.leftBoundary}innerExtract(e,t){let n=t[uP].toLowerCase(),i=$i.WEEKDAY_DICTIONARY[n],s=t[oP],a=t[lP],o=s||a;o=o||"",o=o.toLowerCase();let u=null;o=="\u043F\u0440\u043E\u0448\u043B\u044B\u0439"||o=="\u043F\u0440\u043E\u0448\u043B\u0443\u044E"||o=="\u043F\u0440\u043E\u0448\u043B\u043E\u0439"?u="last":o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439"||o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0443\u044E"||o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439"||o=="\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0433\u043E"?u="next":(o=="\u044D\u0442\u043E\u0442"||o=="\u044D\u0442\u0443"||o=="\u044D\u0442\u043E\u0439")&&(u="this");let l=sP.toDayJSWeekday(e.refDate,i,u);return e.createParsingComponents().assign("weekday",i).imply("day",l.date()).imply("month",l.month()+1).imply("year",l.year())}};nd.default=rd});var n_=h(Bi=>{"use strict";var cP=Bi&&Bi.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(Bi,"__esModule",{value:!0});var ji=ze(),r_=he(),dP=cP(K()),fP=R(),pP=J(),hP=new RegExp(`(\u0432 \u043F\u0440\u043E\u0448\u043B\u043E\u043C|\u043D\u0430 \u043F\u0440\u043E\u0448\u043B\u043E\u0439|\u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439|\u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C|\u043D\u0430 \u044D\u0442\u043E\u0439|\u0432 \u044D\u0442\u043E\u043C)\\s*(${pP.matchAnyPattern(ji.TIME_UNIT_DICTIONARY)})(?=\\s*)${ji.REGEX_PARTS.rightBoundary}`,ji.REGEX_PARTS.flags),mP=1,yP=2,id=class extends fP.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return ji.REGEX_PARTS.leftBoundary}innerPattern(){return hP}innerExtract(e,t){let n=t[mP].toLowerCase(),i=t[yP].toLowerCase(),s=ji.TIME_UNIT_DICTIONARY[i];if(n=="\u043D\u0430 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u0439"||n=="\u0432 \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0435\u043C"){let u={};return u[s]=1,r_.ParsingComponents.createRelativeFromReference(e.reference,u)}if(n=="\u0432 \u043F\u0440\u043E\u0448\u043B\u043E\u043C"||n=="\u043D\u0430 \u043F\u0440\u043E\u0448\u043B\u043E\u0439"){let u={};return u[s]=-1,r_.ParsingComponents.createRelativeFromReference(e.reference,u)}let a=e.createParsingComponents(),o=dP.default(e.reference.instant);return s.match(/week/i)?(o=o.add(-o.get("d"),"d"),a.imply("day",o.date()),a.imply("month",o.month()+1),a.imply("year",o.year())):s.match(/month/i)?(o=o.add(-o.date()+1,"d"),a.imply("day",o.date()),a.assign("year",o.year()),a.assign("month",o.month()+1)):s.match(/year/i)&&(o=o.add(-o.date()+1,"d"),o=o.add(-o.month(),"month"),a.imply("day",o.date()),a.imply("month",o.month()+1),a.assign("year",o.year())),a}};Bi.default=id});var i_=h(ad=>{"use strict";Object.defineProperty(ad,"__esModule",{value:!0});var Gi=ze(),gP=he(),_P=R(),TP=st(),bP=new RegExp(`(\u044D\u0442\u0438|\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435|\u043F\u0440\u043E\u0448\u043B\u044B\u0435|\u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0435|\u043F\u043E\u0441\u043B\u0435|\u0447\u0435\u0440\u0435\u0437|\\+|-)\\s*(${Gi.TIME_UNITS_PATTERN})${Gi.REGEX_PARTS.rightBoundary}`,Gi.REGEX_PARTS.flags),sd=class extends _P.AbstractParserWithWordBoundaryChecking{patternLeftBoundary(){return Gi.REGEX_PARTS.leftBoundary}innerPattern(){return bP}innerExtract(e,t){let n=t[1].toLowerCase(),i=Gi.parseTimeUnits(t[2]);switch(n){case"\u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0438\u0435":case"\u043F\u0440\u043E\u0448\u043B\u044B\u0435":case"-":i=TP.reverseTimeUnits(i);break}return gP.ParsingComponents.createRelativeFromReference(e.reference,i)}};ad.default=sd});var o_=h(ke=>{"use strict";var et=ke&&ke.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(ke,"__esModule",{value:!0});ke.createConfiguration=ke.createCasualConfiguration=ke.parseDate=ke.parse=ke.strict=ke.casual=void 0;var vP=et(Wg()),EP=et(Bg()),RP=et(zg()),wP=et(Vg()),DP=et(Zg()),MP=et(Xg()),OP=et(Qg()),PP=zt(),AP=et(Jg()),kP=et(e_()),NP=et(t_()),CP=et(n_()),s_=_t(),xP=et(Lr()),SP=et(i_());ke.casual=new s_.Chrono(a_());ke.strict=new s_.Chrono(od(!0));function IP(r,e,t){return ke.casual.parse(r,e,t)}ke.parse=IP;function UP(r,e,t){return ke.casual.parseDate(r,e,t)}ke.parseDate=UP;function a_(){let r=od(!1);return r.parsers.unshift(new AP.default),r.parsers.unshift(new kP.default),r.parsers.unshift(new RP.default),r.parsers.unshift(new CP.default),r.parsers.unshift(new SP.default),r}ke.createCasualConfiguration=a_;function od(r=!0){return PP.includeCommonConfiguration({parsers:[new xP.default(!0),new vP.default,new EP.default,new NP.default,new wP.default(r),new DP.default],refiners:[new OP.default,new MP.default]},r)}ke.createConfiguration=od});var Ee=h(L=>{"use strict";var FP=L&&L.__createBinding||(Object.create?function(r,e,t,n){n===void 0&&(n=t),Object.defineProperty(r,n,{enumerable:!0,get:function(){return e[t]}})}:function(r,e,t,n){n===void 0&&(n=t),r[n]=e[t]}),qP=L&&L.__setModuleDefault||(Object.create?function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}:function(r,e){r.default=e}),wr=L&&L.__importStar||function(r){if(r&&r.__esModule)return r;var e={};if(r!=null)for(var t in r)t!=="default"&&Object.prototype.hasOwnProperty.call(r,t)&&FP(e,r,t);return qP(e,r),e};Object.defineProperty(L,"__esModule",{value:!0});L.parseDate=L.parse=L.casual=L.strict=L.ru=L.zh=L.nl=L.pt=L.ja=L.fr=L.de=L.Meridiem=L.Chrono=L.en=void 0;var ud=wr(Du());L.en=ud;var WP=_t();Object.defineProperty(L,"Chrono",{enumerable:!0,get:function(){return WP.Chrono}});var LP;(function(r){r[r.AM=0]="AM",r[r.PM=1]="PM"})(LP=L.Meridiem||(L.Meridiem={}));var YP=wr(ym());L.de=YP;var $P=wr(Gm());L.fr=$P;var jP=wr(ey());L.ja=jP;var BP=wr(yy());L.pt=BP;var GP=wr(eg());L.nl=GP;var HP=wr(Sg());L.zh=HP;var zP=wr(o_());L.ru=zP;L.strict=ud.strict;L.casual=ud.casual;function KP(r,e,t){return L.casual.parse(r,e,t)}L.parse=KP;function VP(r,e,t){return L.casual.parseDate(r,e,t)}L.parseDate=VP});var Ut=h(Or=>{"use strict";Or.__esModule=!0;var nA;(function(r){r.AND="AND",r.OR="OR",r.XOR="XOR",r.NOT="NOT"})(nA=Or.Operators||(Or.Operators={}));var iA;(function(r){r.OPEN_PARENTHESIS="(",r.CLOSE_PARENTHESIS=")"})(iA=Or.StructuralCharacters||(Or.StructuralCharacters={}));var sA;(function(r){r.IDENTIFIER="IDENTIFIER",r.OPERATOR="OPERATOR",r.STRUCTURAL_CHARACTER="STRUCTURAL_CHARACTER",r.EOF="EOF",r.COMMENT="COMMENT"})(sA=Or.Tokens||(Or.Tokens={}))});var bd=h(xa=>{"use strict";xa.__esModule=!0;var me=Ut();xa.OPERATOR_PRECEDENCE={NOT:0,XOR:1,AND:2,OR:3};xa.VALID_TOKENS={identifierOnly:[{name:me.Tokens.IDENTIFIER},{name:me.Tokens.STRUCTURAL_CHARACTER,value:me.StructuralCharacters.OPEN_PARENTHESIS}],identifierOrNot:[{name:me.Tokens.IDENTIFIER},{name:me.Tokens.STRUCTURAL_CHARACTER,value:me.StructuralCharacters.OPEN_PARENTHESIS},{name:me.Tokens.OPERATOR,value:me.Operators.NOT}],binaryOperator:[{name:me.Tokens.OPERATOR,value:me.Operators.AND},{name:me.Tokens.OPERATOR,value:me.Operators.OR},{name:me.Tokens.OPERATOR,value:me.Operators.XOR}],binaryOperatorOrClose:[{name:me.Tokens.OPERATOR,value:me.Operators.AND},{name:me.Tokens.OPERATOR,value:me.Operators.OR},{name:me.Tokens.OPERATOR,value:me.Operators.XOR},{name:me.Tokens.STRUCTURAL_CHARACTER,value:me.StructuralCharacters.CLOSE_PARENTHESIS}]}});var vd=h(nr=>{"use strict";nr.__esModule=!0;var Dn=Ut();nr.STRUCTURAL_CHARACTERS={"(":Dn.StructuralCharacters.OPEN_PARENTHESIS,")":Dn.StructuralCharacters.CLOSE_PARENTHESIS};nr.OPERATORS={AND:Dn.Operators.AND,OR:Dn.Operators.OR,XOR:Dn.Operators.XOR,NOT:Dn.Operators.NOT};nr.SEPARATORS=new Set([32,9,10,13].map(function(r){return String.fromCodePoint(r)}));nr.QUOTED_IDENTIFIER_DELIMITER=String.fromCodePoint(34);nr.COMMENT_DELIMITER=String.fromCodePoint(35);nr.EOL=String.fromCodePoint(10);nr.ESCAPE_CHARACTER=String.fromCodePoint(92)});var __=h(ir=>{"use strict";var Ed=ir&&ir.__assign||function(){return Ed=Object.assign||function(r){for(var e,t=1,n=arguments.length;t{"use strict";Rd.__esModule=!0;var Mn=Ut(),tt=vd(),On=__();Rd.lex=function(r){for(var e=null,t=null,n=null,i=0;i{"use strict";var aA=sr&&sr.__spreadArrays||function(){for(var r=0,e=0,t=arguments.length;e{"use strict";var An=Qi&&Qi.__spreadArrays||function(){for(var r=0,e=0,t=arguments.length;e{"use strict";ar.__esModule=!0;var R_=Ut();ar.andUtil=function(r,e){return r&&e};ar.orUtil=function(r,e){return r||e};ar.xorUtil=function(r,e){return r!==e};ar.notUtil=function(r){return!r};ar.isIdentifier=function(r){var e=r.name,t=r.value;return e===R_.Tokens.IDENTIFIER&&typeof t=="string"};ar.isOperator=function(r){var e=r.name,t=r.value;return e===R_.Tokens.OPERATOR&&typeof t=="string"};ar.throwInvalidExpression=function(r){throw new TypeError("Invalid postfix expression: "+r)}});var w_=h(Ad=>{"use strict";var Ji;Ad.__esModule=!0;var Od=Ut(),Pd=Md();Ad.OPERATOR_MAP=(Ji={},Ji[Od.Operators.AND]=Pd.andUtil,Ji[Od.Operators.OR]=Pd.orUtil,Ji[Od.Operators.XOR]=Pd.xorUtil,Ji)});var M_=h(Vr=>{"use strict";var kd=Vr&&Vr.__spreadArrays||function(){for(var r=0,e=0,t=arguments.length;e{"use strict";es.__esModule=!0;var O_=M_();es.getEvaluator=O_.getEvaluator;es.evaluate=O_.evaluate;var cA=Dd();es.parse=cA.parse});var gA={};L_(gA,{default:()=>Xa});module.exports=Y_(gA);var C_=require("obsidian");var Rs=require("obsidian");var TA=new Error("timeout while waiting for mutex to become available"),bA=new Error("mutex already locked"),$_=new Error("request for lock canceled"),df=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function u(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,u)}l((n=n.apply(r,e||[])).next())})},ro=class{constructor(e,t=$_){if(this._maxConcurrency=e,this._cancelError=t,this._queue=[],this._waiters=[],e<=0)throw new Error("semaphore must be initialized to a positive value");this._value=e}acquire(){let e=this.isLocked(),t=new Promise((n,i)=>this._queue.push({resolve:n,reject:i}));return e||this._dispatch(),t}runExclusive(e){return df(this,void 0,void 0,function*(){let[t,n]=yield this.acquire();try{return yield e(t)}finally{n()}})}waitForUnlock(){return df(this,void 0,void 0,function*(){return this.isLocked()?new Promise(t=>this._waiters.push({resolve:t})):Promise.resolve()})}isLocked(){return this._value<=0}release(){if(this._maxConcurrency>1)throw new Error("this method is unavailable on semaphores with concurrency > 1; use the scoped release returned by acquire instead");if(this._currentReleaser){let e=this._currentReleaser;this._currentReleaser=void 0,e()}}cancel(){this._queue.forEach(e=>e.reject(this._cancelError)),this._queue=[]}_dispatch(){let e=this._queue.shift();if(!e)return;let t=!1;this._currentReleaser=()=>{t||(t=!0,this._value++,this._resolveWaiters(),this._dispatch())},e.resolve([this._value--,this._currentReleaser])}_resolveWaiters(){this._waiters.forEach(e=>e.resolve()),this._waiters=[]}},j_=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(c){try{l(n.next(c))}catch(d){a(d)}}function u(c){try{l(n.throw(c))}catch(d){a(d)}}function l(c){c.done?s(c.value):i(c.value).then(o,u)}l((n=n.apply(r,e||[])).next())})},hs=class{constructor(e){this._semaphore=new ro(1,e)}acquire(){return j_(this,void 0,void 0,function*(){let[,e]=yield this._semaphore.acquire();return e})}runExclusive(e){return this._semaphore.runExclusive(()=>e())}isLocked(){return this._semaphore.isLocked()}waitForUnlock(){return this._semaphore.waitForUnlock()}release(){this._semaphore.release()}cancel(){return this._semaphore.cancel()}};var Tp=require("obsidian");var pf=require("obsidian");var ff=[{index:9999,internalName:"INTERNAL_TESTING_ENABLED_BY_DEFAULT",displayName:"Test Item. Used to validate the Feature Framework.",description:"Description",enabledByDefault:!0,stable:!1}];var wt=class{constructor(e,t,n,i,s,a){this.internalName=e;this.index=t;this.description=n;this.displayName=i;this.enabledByDefault=s;this.stable=a}static get values(){let e=[];return ff.forEach(t=>{e=[...e,new wt(t.internalName,t.index,t.description,t.displayName,t.enabledByDefault,t.stable)]}),e}static get settingsFlags(){let e={};return wt.values.forEach(t=>{e[t.internalName]=t.enabledByDefault}),e}static fromString(e){for(let t of wt.values)if(e===t.internalName)return t;throw new RangeError(`Illegal argument passed to fromString(): ${e} does not correspond to any available Feature ${this.prototype.constructor.name}`)}};var G_={globalFilter:"",removeGlobalFilter:!1,setDoneDate:!0,autoSuggestInEditor:!0,autoSuggestMinMatch:0,autoSuggestMaxItems:6,features:wt.settingsFlags},In=Ye({},G_),ie=()=>{for(let r in wt.settingsFlags)In.features[r]===void 0&&(In.features[r]=wt.settingsFlags[r]);return Ye({},In)},Lt=r=>(In=Ye(Ye({},In),r),ie());var no,io,hf=({metadataCache:r,vault:e})=>{no=r,io=e},ms=t=>ne(void 0,[t],function*({originalTask:r,newTasks:e}){if(io===void 0||no===void 0){console.error("Tasks: cannot use File before initializing it.");return}Array.isArray(e)||(e=[e]),mf({originalTask:r,newTasks:e,vault:io,metadataCache:no,previousTries:0})}),mf=s=>ne(void 0,[s],function*({originalTask:r,newTasks:e,vault:t,metadataCache:n,previousTries:i}){let a=()=>{if(i>10){console.error("Tasks: Too many retries. File update not possible ...");return}let _=Math.min(Math.pow(10,i),100);setTimeout(()=>{mf({originalTask:r,newTasks:e,vault:t,metadataCache:n,previousTries:i+1})},_)},o=t.getAbstractFileByPath(r.path);if(!(o instanceof pf.TFile))return console.warn(`Tasks: No file found for task ${r.description}. Retrying ...`),a();if(o.extension!=="md"){console.error("Tasks: Only supporting files with the .md file extension.");return}let u=n.getFileCache(o);if(u==null||u===null)return console.warn(`Tasks: No file cache found for file ${o.path}. Retrying ...`),a();let l=u.listItems;if(l===void 0||l.length===0)return console.warn(`Tasks: No list items found in file cache of ${o.path}. Retrying ...`),a();let d=(yield t.read(o)).split(` +`),{globalFilter:f}=ie(),p,y=0;for(let _ of l){if(_.position.start.line_.toFileLineString()),...d.slice(p.position.start.line+1)];yield t.modify(o,m.join(` +`))});var Qr=class{constructor(){this.hideTaskCount=!1;this.hideBacklinks=!1;this.hidePriority=!1;this.hideStartDate=!1;this.hideScheduledDate=!1;this.hideDoneDate=!1;this.hideDueDate=!1;this.hideRecurrenceRule=!1;this.hideEditButton=!1;this.hideUrgency=!0;this.shortMode=!1}};var ys=["MO","TU","WE","TH","FR","SA","SU"],ge=function(){function r(e,t){if(t===0)throw new Error("Can't create weekday with n == 0");this.weekday=e,this.n=t}return r.fromStr=function(e){return new r(ys.indexOf(e))},r.prototype.nth=function(e){return this.n===e?this:new r(this.weekday,e)},r.prototype.equals=function(e){return this.weekday===e.weekday&&this.n===e.n},r.prototype.toString=function(){var e=ys[this.weekday];return this.n&&(e=(this.n>0?"+":"")+String(this.n)+e),e},r.prototype.getJsWeekday=function(){return this.weekday===6?0:this.weekday+1},r}();var ae=function(r){return r!=null},Ve=function(r){return typeof r=="number"},so=function(r){return typeof r=="string"&&ys.includes(r)},Ce=Array.isArray,rt=function(r,e){e===void 0&&(e=r),arguments.length===1&&(e=r,r=0);for(var t=[],n=r;n>0,n.length>e?String(n):(e=e-n.length,e>t.length&&(t+=j(t,e/t.length)),t.slice(0,e)+String(n))}var gf=function(r,e,t){var n=r.split(e);return t?n.slice(0,t).concat([n.slice(t).join(e)]):n},Fe=function(r,e){var t=r%e;return t*e<0?t+e:t},gs=function(r,e){return{div:Math.floor(r/e),mod:Fe(r,e)}},Ze=function(r){return!ae(r)||r.length===0},ye=function(r){return!Ze(r)},G=function(r,e){return ye(r)&&r.indexOf(e)!==-1};var pr;(function(r){r.MONTH_DAYS=[31,28,31,30,31,30,31,31,30,31,30,31],r.ONE_DAY=1e3*60*60*24,r.MAXYEAR=9999,r.ORDINAL_BASE=new Date(Date.UTC(1970,0,1)),r.PY_WEEKDAYS=[6,0,1,2,3,4,5],r.getYearDay=function(e){var t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate());return Math.ceil((t.valueOf()-new Date(e.getUTCFullYear(),0,1).valueOf())/r.ONE_DAY)+1},r.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},r.isDate=function(e){return e instanceof Date},r.isValidDate=function(e){return r.isDate(e)&&!isNaN(e.getTime())},r.tzOffset=function(e){return e.getTimezoneOffset()*60*1e3},r.daysBetween=function(e,t){var n=e.getTime()-r.tzOffset(e),i=t.getTime()-r.tzOffset(t),s=n-i;return Math.round(s/r.ONE_DAY)},r.toOrdinal=function(e){return r.daysBetween(e,r.ORDINAL_BASE)},r.fromOrdinal=function(e){return new Date(r.ORDINAL_BASE.getTime()+e*r.ONE_DAY)},r.getMonthDays=function(e){var t=e.getUTCMonth();return t===1&&r.isLeapYear(e.getUTCFullYear())?29:r.MONTH_DAYS[t]},r.getWeekday=function(e){return r.PY_WEEKDAYS[e.getUTCDay()]},r.monthRange=function(e,t){var n=new Date(Date.UTC(e,t,1));return[r.getWeekday(n),r.getMonthDays(n)]},r.combine=function(e,t){return t=t||e,new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()))},r.clone=function(e){var t=new Date(e.getTime());return t},r.cloneDates=function(e){for(var t=[],n=0;nthis.maxDate;if(this.method==="between"){if(t)return!0;if(n)return!1}else if(this.method==="before"){if(n)return!1}else if(this.method==="after")return t?!0:(this.add(e),!1);return this.add(e)},r.prototype.add=function(e){return this._result.push(e),!0},r.prototype.getValue=function(){var e=this._result;switch(this.method){case"all":case"between":return e;case"before":case"after":default:return e.length?e[e.length-1]:null}},r.prototype.clone=function(){return new r(this.method,this.args)},r}(),Yt=H_;var Lf=ps(Wf(),1),{__extends:en,__assign:$e,__rest:WA,__decorate:LA,__param:YA,__metadata:$A,__awaiter:jA,__generator:BA,__exportStar:GA,__createBinding:HA,__values:zA,__read:KA,__spread:VA,__spreadArrays:ZA,__spreadArray:b,__await:XA,__asyncGenerator:QA,__asyncDelegator:JA,__asyncValues:ek,__makeTemplateObject:tk,__importStar:rk,__importDefault:nk,__classPrivateFieldGet:ik,__classPrivateFieldSet:sk,__classPrivateFieldIn:ak}=Lf.default;var z_=function(r){en(e,r);function e(t,n,i){var s=r.call(this,t,n)||this;return s.iterator=i,s}return e.prototype.add=function(t){return this.iterator(t,this._result.length)?(this._result.push(t),!0):!1},e}(Yt),oo=z_;var K_={dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],tokens:{SKIP:/^[ \r\n\t]+|^\.$/,number:/^[1-9][0-9]*/,numberAsText:/^(one|two|three)/i,every:/^every/i,"day(s)":/^days?/i,"weekday(s)":/^weekdays?/i,"week(s)":/^weeks?/i,"hour(s)":/^hours?/i,"minute(s)":/^minutes?/i,"month(s)":/^months?/i,"year(s)":/^years?/i,on:/^(on|in)/i,at:/^(at)/i,the:/^the/i,first:/^first/i,second:/^second/i,third:/^third/i,nth:/^([1-9][0-9]*)(\.|th|nd|rd|st)/i,last:/^last/i,for:/^for/i,"time(s)":/^times?/i,until:/^(un)?til/i,monday:/^mo(n(day)?)?/i,tuesday:/^tu(e(s(day)?)?)?/i,wednesday:/^we(d(n(esday)?)?)?/i,thursday:/^th(u(r(sday)?)?)?/i,friday:/^fr(i(day)?)?/i,saturday:/^sa(t(urday)?)?/i,sunday:/^su(n(day)?)?/i,january:/^jan(uary)?/i,february:/^feb(ruary)?/i,march:/^mar(ch)?/i,april:/^apr(il)?/i,may:/^may/i,june:/^june?/i,july:/^july?/i,august:/^aug(ust)?/i,september:/^sep(t(ember)?)?/i,october:/^oct(ober)?/i,november:/^nov(ember)?/i,december:/^dec(ember)?/i,comma:/^(,\s*|(and|or)\s*)+/i}},Nr=K_;var Yf=function(r,e){return r.indexOf(e)!==-1},V_=function(r){return r.toString()},Z_=function(r,e,t){return"".concat(e," ").concat(t,", ").concat(r)},X_=function(){function r(e,t,n,i){if(t===void 0&&(t=V_),n===void 0&&(n=Nr),i===void 0&&(i=Z_),this.text=[],this.language=n||Nr,this.gettext=t,this.dateFormatter=i,this.rrule=e,this.options=e.options,this.origOptions=e.origOptions,this.origOptions.bymonthday){var s=[].concat(this.options.bymonthday),a=[].concat(this.options.bynmonthday);s.sort(function(c,d){return c-d}),a.sort(function(c,d){return d-c}),this.bymonthday=s.concat(a),this.bymonthday.length||(this.bymonthday=null)}if(ae(this.origOptions.byweekday)){var o=Ce(this.origOptions.byweekday)?this.origOptions.byweekday:[this.origOptions.byweekday],u=String(o);this.byweekday={allWeeks:o.filter(function(c){return!c.n}),someWeeks:o.filter(function(c){return Boolean(c.n)}),isWeekdays:u.indexOf("MO")!==-1&&u.indexOf("TU")!==-1&&u.indexOf("WE")!==-1&&u.indexOf("TH")!==-1&&u.indexOf("FR")!==-1&&u.indexOf("SA")===-1&&u.indexOf("SU")===-1,isEveryDay:u.indexOf("MO")!==-1&&u.indexOf("TU")!==-1&&u.indexOf("WE")!==-1&&u.indexOf("TH")!==-1&&u.indexOf("FR")!==-1&&u.indexOf("SA")!==-1&&u.indexOf("SU")!==-1};var l=function(c,d){return c.weekday-d.weekday};this.byweekday.allWeeks.sort(l),this.byweekday.someWeeks.sort(l),this.byweekday.allWeeks.length||(this.byweekday.allWeeks=null),this.byweekday.someWeeks.length||(this.byweekday.someWeeks=null)}else this.byweekday=null}return r.isFullyConvertible=function(e){var t=!0;if(!(e.options.freq in r.IMPLEMENTED)||e.origOptions.until&&e.origOptions.count)return!1;for(var n in e.origOptions){if(Yf(["dtstart","wkst","freq"],n))return!0;if(!Yf(r.IMPLEMENTED[e.options.freq],n))return!1}return t},r.prototype.isFullyConvertible=function(){return r.isFullyConvertible(this.rrule)},r.prototype.toString=function(){var e=this.gettext;if(!(this.options.freq in r.IMPLEMENTED))return e("RRule error: Unable to fully convert this rrule to text");if(this.text=[e("every")],this[O.FREQUENCIES[this.options.freq]](),this.options.until){this.add(e("until"));var t=this.options.until;this.add(this.dateFormatter(t.getUTCFullYear(),this.language.monthNames[t.getUTCMonth()],t.getUTCDate()))}else this.options.count&&this.add(e("for")).add(this.options.count.toString()).add(this.plural(this.options.count)?e("times"):e("time"));return this.isFullyConvertible()||this.add(e("(~ approximate)")),this.text.join("")},r.prototype.HOURLY=function(){var e=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?e("hours"):e("hour"))},r.prototype.MINUTELY=function(){var e=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?e("minutes"):e("minute"))},r.prototype.DAILY=function(){var e=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()),this.byweekday&&this.byweekday.isWeekdays?this.add(this.plural(this.options.interval)?e("weekdays"):e("weekday")):this.add(this.plural(this.options.interval)?e("days"):e("day")),this.origOptions.bymonth&&(this.add(e("in")),this._bymonth()),this.bymonthday?this._bymonthday():this.byweekday?this._byweekday():this.origOptions.byhour&&this._byhour()},r.prototype.WEEKLY=function(){var e=this.gettext;this.options.interval!==1&&this.add(this.options.interval.toString()).add(this.plural(this.options.interval)?e("weeks"):e("week")),this.byweekday&&this.byweekday.isWeekdays?this.options.interval===1?this.add(this.plural(this.options.interval)?e("weekdays"):e("weekday")):this.add(e("on")).add(e("weekdays")):this.byweekday&&this.byweekday.isEveryDay?this.add(this.plural(this.options.interval)?e("days"):e("day")):(this.options.interval===1&&this.add(e("week")),this.origOptions.bymonth&&(this.add(e("in")),this._bymonth()),this.bymonthday?this._bymonthday():this.byweekday&&this._byweekday())},r.prototype.MONTHLY=function(){var e=this.gettext;this.origOptions.bymonth?(this.options.interval!==1&&(this.add(this.options.interval.toString()).add(e("months")),this.plural(this.options.interval)&&this.add(e("in"))),this._bymonth()):(this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?e("months"):e("month"))),this.bymonthday?this._bymonthday():this.byweekday&&this.byweekday.isWeekdays?this.add(e("on")).add(e("weekdays")):this.byweekday&&this._byweekday()},r.prototype.YEARLY=function(){var e=this.gettext;this.origOptions.bymonth?(this.options.interval!==1&&(this.add(this.options.interval.toString()),this.add(e("years"))),this._bymonth()):(this.options.interval!==1&&this.add(this.options.interval.toString()),this.add(this.plural(this.options.interval)?e("years"):e("year"))),this.bymonthday?this._bymonthday():this.byweekday&&this._byweekday(),this.options.byyearday&&this.add(e("on the")).add(this.list(this.options.byyearday,this.nth,e("and"))).add(e("day")),this.options.byweekno&&this.add(e("in")).add(this.plural(this.options.byweekno.length)?e("weeks"):e("week")).add(this.list(this.options.byweekno,void 0,e("and")))},r.prototype._bymonthday=function(){var e=this.gettext;this.byweekday&&this.byweekday.allWeeks?this.add(e("on")).add(this.list(this.byweekday.allWeeks,this.weekdaytext,e("or"))).add(e("the")).add(this.list(this.bymonthday,this.nth,e("or"))):this.add(e("on the")).add(this.list(this.bymonthday,this.nth,e("and")))},r.prototype._byweekday=function(){var e=this.gettext;this.byweekday.allWeeks&&!this.byweekday.isWeekdays&&this.add(e("on")).add(this.list(this.byweekday.allWeeks,this.weekdaytext)),this.byweekday.someWeeks&&(this.byweekday.allWeeks&&this.add(e("and")),this.add(e("on the")).add(this.list(this.byweekday.someWeeks,this.weekdaytext,e("and"))))},r.prototype._byhour=function(){var e=this.gettext;this.add(e("at")).add(this.list(this.origOptions.byhour,void 0,e("and")))},r.prototype._bymonth=function(){this.add(this.list(this.options.bymonth,this.monthtext,this.gettext("and")))},r.prototype.nth=function(e){e=parseInt(e.toString(),10);var t,n=this.gettext;if(e===-1)return n("last");var i=Math.abs(e);switch(i){case 1:case 21:case 31:t=i+n("st");break;case 2:case 22:t=i+n("nd");break;case 3:case 23:t=i+n("rd");break;default:t=i+n("th")}return e<0?t+" "+n("last"):t},r.prototype.monthtext=function(e){return this.language.monthNames[e-1]},r.prototype.weekdaytext=function(e){var t=Ve(e)?(e+1)%7:e.getJsWeekday();return(e.n?this.nth(e.n)+" ":"")+this.language.dayNames[t]},r.prototype.plural=function(e){return e%100!==1},r.prototype.add=function(e){return this.text.push(" "),this.text.push(e),this},r.prototype.list=function(e,t,n,i){var s=this;i===void 0&&(i=","),Ce(e)||(e=[e]);var a=function(u,l,c){for(var d="",f=0;fe[0].length)&&(e=s,t=i)}if(e!=null&&(this.text=this.text.substr(e[0].length),this.text===""&&(this.done=!0)),e==null){this.done=!0,this.symbol=null,this.value=null;return}}while(t==="SKIP");return this.symbol=t,this.value=e,!0},r.prototype.accept=function(e){if(this.symbol===e){if(this.value){var t=this.value;return this.nextSymbol(),t}return this.nextSymbol(),!0}return!1},r.prototype.acceptNumber=function(){return this.accept("number")},r.prototype.expect=function(e){if(this.accept(e))return!0;throw new Error("expected "+e+" but found "+this.symbol)},r}();function Un(r,e){e===void 0&&(e=Nr);var t={},n=new Q_(e.tokens);if(!n.start(r))return null;return i(),t;function i(){n.expect("every");var f=n.acceptNumber();if(f&&(t.interval=parseInt(f[0],10)),n.isDone())throw new Error("Unexpected end");switch(n.symbol){case"day(s)":t.freq=O.DAILY,n.nextSymbol()&&(a(),d());break;case"weekday(s)":t.freq=O.WEEKLY,t.byweekday=[O.MO,O.TU,O.WE,O.TH,O.FR],n.nextSymbol(),d();break;case"week(s)":t.freq=O.WEEKLY,n.nextSymbol()&&(s(),d());break;case"hour(s)":t.freq=O.HOURLY,n.nextSymbol()&&(s(),d());break;case"minute(s)":t.freq=O.MINUTELY,n.nextSymbol()&&(s(),d());break;case"month(s)":t.freq=O.MONTHLY,n.nextSymbol()&&(s(),d());break;case"year(s)":t.freq=O.YEARLY,n.nextSymbol()&&(s(),d());break;case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":t.freq=O.WEEKLY;var p=n.symbol.substr(0,2).toUpperCase();if(t.byweekday=[O[p]],!n.nextSymbol())return;for(;n.accept("comma");){if(n.isDone())throw new Error("Unexpected end");var y=u();if(!y)throw new Error("Unexpected symbol "+n.symbol+", expected weekday");t.byweekday.push(O[y]),n.nextSymbol()}c(),d();break;case"january":case"february":case"march":case"april":case"may":case"june":case"july":case"august":case"september":case"october":case"november":case"december":if(t.freq=O.YEARLY,t.bymonth=[o()],!n.nextSymbol())return;for(;n.accept("comma");){if(n.isDone())throw new Error("Unexpected end");var m=o();if(!m)throw new Error("Unexpected symbol "+n.symbol+", expected month");t.bymonth.push(m),n.nextSymbol()}s(),d();break;default:throw new Error("Unknown symbol")}}function s(){var f=n.accept("on"),p=n.accept("the");if(!!(f||p))do{var y=l(),m=u(),_=o();if(y)m?(n.nextSymbol(),t.byweekday||(t.byweekday=[]),t.byweekday.push(O[m].nth(y))):(t.bymonthday||(t.bymonthday=[]),t.bymonthday.push(y),n.accept("day(s)"));else if(m)n.nextSymbol(),t.byweekday||(t.byweekday=[]),t.byweekday.push(O[m]);else if(n.symbol==="weekday(s)")n.nextSymbol(),t.byweekday||(t.byweekday=[O.MO,O.TU,O.WE,O.TH,O.FR]);else if(n.symbol==="week(s)"){n.nextSymbol();var A=n.acceptNumber();if(!A)throw new Error("Unexpected symbol "+n.symbol+", expected week number");for(t.byweekno=[parseInt(A[0],10)];n.accept("comma");){if(A=n.acceptNumber(),!A)throw new Error("Unexpected symbol "+n.symbol+"; expected monthday");t.byweekno.push(parseInt(A[0],10))}}else if(_)n.nextSymbol(),t.bymonth||(t.bymonth=[]),t.bymonth.push(_);else return}while(n.accept("comma")||n.accept("the")||n.accept("on"))}function a(){var f=n.accept("at");if(!!f)do{var p=n.acceptNumber();if(!p)throw new Error("Unexpected symbol "+n.symbol+", expected hour");for(t.byhour=[parseInt(p[0],10)];n.accept("comma");){if(p=n.acceptNumber(),!p)throw new Error("Unexpected symbol "+n.symbol+"; expected hour");t.byhour.push(parseInt(p[0],10))}}while(n.accept("comma")||n.accept("at"))}function o(){switch(n.symbol){case"january":return 1;case"february":return 2;case"march":return 3;case"april":return 4;case"may":return 5;case"june":return 6;case"july":return 7;case"august":return 8;case"september":return 9;case"october":return 10;case"november":return 11;case"december":return 12;default:return!1}}function u(){switch(n.symbol){case"monday":case"tuesday":case"wednesday":case"thursday":case"friday":case"saturday":case"sunday":return n.symbol.substr(0,2).toUpperCase();default:return!1}}function l(){switch(n.symbol){case"last":return n.nextSymbol(),-1;case"first":return n.nextSymbol(),1;case"second":return n.nextSymbol(),n.accept("last")?-2:2;case"third":return n.nextSymbol(),n.accept("last")?-3:3;case"nth":var f=parseInt(n.value[1],10);if(f<-366||f>366)throw new Error("Nth out of range: "+f);return n.nextSymbol(),n.accept("last")?-f:f;default:return!1}}function c(){n.accept("on"),n.accept("the");var f=l();if(!!f)for(t.bymonthday=[f],n.nextSymbol();n.accept("comma");){if(f=l(),!f)throw new Error("Unexpected symbol "+n.symbol+"; expected monthday");t.bymonthday.push(f),n.nextSymbol()}}function d(){if(n.symbol==="until"){var f=Date.parse(n.text);if(!f)throw new Error("Cannot parse until date:"+n.text);t.until=new Date(f)}else n.accept("for")&&(t.count=parseInt(n.value[0],10),n.expect("number"))}}var Y;(function(r){r[r.YEARLY=0]="YEARLY",r[r.MONTHLY=1]="MONTHLY",r[r.WEEKLY=2]="WEEKLY",r[r.DAILY=3]="DAILY",r[r.HOURLY=4]="HOURLY",r[r.MINUTELY=5]="MINUTELY",r[r.SECONDLY=6]="SECONDLY"})(Y||(Y={}));function Fn(r){return r12){var n=Math.floor(this.month/12),i=Fe(this.month,12);this.month=i,this.year+=n,this.month===0&&(this.month=12,--this.year)}},e.prototype.addWeekly=function(t,n){n>this.getWeekday()?this.day+=-(this.getWeekday()+1+(6-n))+t*7:this.day+=-(this.getWeekday()-n)+t*7,this.fixDay()},e.prototype.addDaily=function(t){this.day+=t,this.fixDay()},e.prototype.addHours=function(t,n,i){for(n&&(this.hour+=Math.floor((23-this.hour)/t)*t);;){this.hour+=t;var s=gs(this.hour,24),a=s.div,o=s.mod;if(a&&(this.hour=o,this.addDaily(a)),Ze(i)||G(i,this.hour))break}},e.prototype.addMinutes=function(t,n,i,s){for(n&&(this.minute+=Math.floor((1439-(this.hour*60+this.minute))/t)*t);;){this.minute+=t;var a=gs(this.minute,60),o=a.div,u=a.mod;if(o&&(this.minute=u,this.addHours(o,!1,i)),(Ze(i)||G(i,this.hour))&&(Ze(s)||G(s,this.minute)))break}},e.prototype.addSeconds=function(t,n,i,s,a){for(n&&(this.second+=Math.floor((86399-(this.hour*3600+this.minute*60+this.second))/t)*t);;){this.second+=t;var o=gs(this.second,60),u=o.div,l=o.mod;if(u&&(this.second=l,this.addMinutes(u,!1,i,s)),(Ze(i)||G(i,this.hour))&&(Ze(s)||G(s,this.minute))&&(Ze(a)||G(a,this.second)))break}},e.prototype.fixDay=function(){if(!(this.day<=28)){var t=pr.monthRange(this.year,this.month-1)[1];if(!(this.day<=t))for(;this.day>t;){if(this.day-=t,++this.month,this.month===13&&(this.month=1,++this.year,this.year>pr.MAXYEAR))return;t=pr.monthRange(this.year,this.month-1)[1]}}},e.prototype.add=function(t,n){var i=t.freq,s=t.interval,a=t.wkst,o=t.byhour,u=t.byminute,l=t.bysecond;switch(i){case Y.YEARLY:return this.addYears(s);case Y.MONTHLY:return this.addMonths(s);case Y.WEEKLY:return this.addWeekly(s,a);case Y.DAILY:return this.addDaily(s);case Y.HOURLY:return this.addHours(s,n,o);case Y.MINUTELY:return this.addMinutes(s,n,o,u);case Y.SECONDLY:return this.addSeconds(s,n,o,u,l)}},e}(rn);function uo(r){for(var e=[],t=Object.keys(r),n=0,i=t;n=-366&&n<=366))throw new Error("bysetpos must be between 1 and 366, or between -366 and -1")}}if(!(Boolean(e.byweekno)||ye(e.byweekno)||ye(e.byyearday)||Boolean(e.bymonthday)||ye(e.bymonthday)||ae(e.byweekday)||ae(e.byeaster)))switch(e.freq){case O.YEARLY:e.bymonth||(e.bymonth=e.dtstart.getUTCMonth()+1),e.bymonthday=e.dtstart.getUTCDate();break;case O.MONTHLY:e.bymonthday=e.dtstart.getUTCDate();break;case O.WEEKLY:e.byweekday=[N.getWeekday(e.dtstart)];break}if(ae(e.bymonth)&&!Ce(e.bymonth)&&(e.bymonth=[e.bymonth]),ae(e.byyearday)&&!Ce(e.byyearday)&&Ve(e.byyearday)&&(e.byyearday=[e.byyearday]),!ae(e.bymonthday))e.bymonthday=[],e.bynmonthday=[];else if(Ce(e.bymonthday)){for(var i=[],s=[],t=0;t0?i.push(n):n<0&&s.push(n)}e.bymonthday=i,e.bynmonthday=s}else e.bymonthday<0?(e.bynmonthday=[e.bymonthday],e.bymonthday=[]):(e.bynmonthday=[],e.bymonthday=[e.bymonthday]);if(ae(e.byweekno)&&!Ce(e.byweekno)&&(e.byweekno=[e.byweekno]),!ae(e.byweekday))e.bynweekday=null;else if(Ve(e.byweekday))e.byweekday=[e.byweekday],e.bynweekday=null;else if(so(e.byweekday))e.byweekday=[ge.fromStr(e.byweekday).weekday],e.bynweekday=null;else if(e.byweekday instanceof ge)!e.byweekday.n||e.freq>O.MONTHLY?(e.byweekday=[e.byweekday.weekday],e.bynweekday=null):(e.bynweekday=[[e.byweekday.weekday,e.byweekday.n]],e.byweekday=null);else{for(var a=[],o=[],t=0;tO.MONTHLY?a.push(u.weekday):o.push([u.weekday,u.n])}e.byweekday=ye(a)?a:null,e.bynweekday=ye(o)?o:null}return ae(e.byhour)?Ve(e.byhour)&&(e.byhour=[e.byhour]):e.byhour=e.freq=4?(c=0,l=o.yearlen+Fe(a-e.wkst,7)):l=n-c;for(var d=Math.floor(l/7),f=Fe(l,7),p=Math.floor(d+f/4),y=0;y0&&m<=p){var _=void 0;m>1?(_=c+(m-1)*7,c!==u&&(_-=7-u)):_=c;for(var A=0;A<7&&(o.wnomask[_]=1,_++,o.wdaymask[_]!==e.wkst);A++);}}if(G(e.byweekno,1)){var _=c+p*7;if(c!==u&&(_-=7-u),_=4?(z=0,fe=re+Fe(C-e.wkst,7)):fe=n-c,I=Math.floor(52+Fe(fe,7)/4)}if(G(e.byweekno,I))for(var _=0;_s)return $t(r);if(I>=t){var C=dp(I,e);if(!r.accept(C)||o&&(--o,!o))return $t(r)}}else for(var A=p;As)return $t(r);if(I>=t){var C=dp(I,e);if(!r.accept(C)||o&&(--o,!o))return $t(r)}}}if(e.interval===0||(u.add(e,m),u.year>N.MAXYEAR))return $t(r);Fn(n)||(c=l.gettimeset(n)(u.hour,u.minute,u.second,0)),l.rebuild(u.year,u.month)}}function cT(r,e,t){var n=t.bymonth,i=t.byweekno,s=t.byweekday,a=t.byeaster,o=t.bymonthday,u=t.bynmonthday,l=t.byyearday;return ye(n)&&!G(n,r.mmask[e])||ye(i)&&!r.wnomask[e]||ye(s)&&!G(s,r.wdaymask[e])||ye(r.nwdaymask)&&!r.nwdaymask[e]||a!==null&&!G(r.eastermask,e)||(ye(o)||ye(u))&&!G(o,r.mdaymask[e])&&!G(u,r.nmdaymask[e])||ye(l)&&(e=r.yearlen&&!G(l,e+1-r.yearlen)&&!G(l,-r.nextyearlen+e-r.yearlen))}function dp(r,e){return new Cr(r,e.tzid).rezonedDate()}function $t(r){return r.getValue()}function dT(r,e,t,n,i){for(var s=!1,a=e;a=O.HOURLY&&ye(i)&&!G(i,e.hour)||n>=O.MINUTELY&&ye(s)&&!G(s,e.minute)||n>=O.SECONDLY&&ye(a)&&!G(a,e.second)?[]:r.gettimeset(n)(e.hour,e.minute,e.second,e.millisecond)}var nt={MO:new ge(0),TU:new ge(1),WE:new ge(2),TH:new ge(3),FR:new ge(4),SA:new ge(5),SU:new ge(6)},qn={freq:Y.YEARLY,dtstart:null,interval:1,wkst:nt.MO,count:null,until:null,tzid:null,bysetpos:null,bymonth:null,bymonthday:null,bynmonthday:null,byyearday:null,byweekno:null,byweekday:null,bynweekday:null,byhour:null,byminute:null,bysecond:null,byeaster:null},Kf=Object.keys(qn),O=function(){function r(e,t){e===void 0&&(e={}),t===void 0&&(t=!1),this._cache=t?null:new Xf,this.origOptions=uo(e);var n=Hf(e).parsedOptions;this.options=n}return r.parseText=function(e,t){return Un(e,t)},r.fromText=function(e,t){return $f(e,t)},r.fromString=function(e){return new r(r.parseString(e)||void 0)},r.prototype._iter=function(e){return vs(e,this.options)},r.prototype._cacheGet=function(e,t){return this._cache?this._cache._cacheGet(e,t):!1},r.prototype._cacheAdd=function(e,t,n){if(!!this._cache)return this._cache._cacheAdd(e,t,n)},r.prototype.all=function(e){if(e)return this._iter(new oo("all",{},e));var t=this._cacheGet("all");return t===!1&&(t=this._iter(new Yt("all",{})),this._cacheAdd("all",t)),t},r.prototype.between=function(e,t,n,i){if(n===void 0&&(n=!1),!N.isValidDate(e)||!N.isValidDate(t))throw new Error("Invalid date passed in to RRule.between");var s={before:t,after:e,inc:n};if(i)return this._iter(new oo("between",s,i));var a=this._cacheGet("between",s);return a===!1&&(a=this._iter(new Yt("between",s)),this._cacheAdd("between",a,s)),a},r.prototype.before=function(e,t){if(t===void 0&&(t=!1),!N.isValidDate(e))throw new Error("Invalid date passed in to RRule.before");var n={dt:e,inc:t},i=this._cacheGet("before",n);return i===!1&&(i=this._iter(new Yt("before",n)),this._cacheAdd("before",i,n)),i},r.prototype.after=function(e,t){if(t===void 0&&(t=!1),!N.isValidDate(e))throw new Error("Invalid date passed in to RRule.after");var n={dt:e,inc:t},i=this._cacheGet("after",n);return i===!1&&(i=this._iter(new Yt("after",n)),this._cacheAdd("after",i,n)),i},r.prototype.count=function(){return this.all().length},r.prototype.toString=function(){return Yn(this.origOptions)},r.prototype.toText=function(e,t,n){return jf(this,e,t,n)},r.prototype.isFullyConvertibleToText=function(){return Bf(this)},r.prototype.clone=function(){return new r(this.origOptions)},r.FREQUENCIES=["YEARLY","MONTHLY","WEEKLY","DAILY","HOURLY","MINUTELY","SECONDLY"],r.YEARLY=Y.YEARLY,r.MONTHLY=Y.MONTHLY,r.WEEKLY=Y.WEEKLY,r.DAILY=Y.DAILY,r.HOURLY=Y.HOURLY,r.MINUTELY=Y.MINUTELY,r.SECONDLY=Y.SECONDLY,r.MO=nt.MO,r.TU=nt.TU,r.WE=nt.WE,r.TH=nt.TH,r.FR=nt.FR,r.SA=nt.SA,r.SU=nt.SU,r.parseString=Ln,r.optionsToString=Yn,r}();function fp(r,e,t,n,i,s){var a={},o=r.accept;function u(f,p){t.forEach(function(y){y.between(f,p,!0).forEach(function(m){a[Number(m)]=!0})})}i.forEach(function(f){var p=new Cr(f,s).rezonedDate();a[Number(p)]=!0}),r.accept=function(f){var p=Number(f);return isNaN(p)?o.call(this,f):!a[p]&&(u(new Date(p-1),new Date(p+1)),!a[p])?(a[p]=!0,o.call(this,f)):!0},r.method==="between"&&(u(r.args.after,r.args.before),r.accept=function(f){var p=Number(f);return a[p]?!0:(a[p]=!0,o.call(this,f))});for(var l=0;l1||i.length||s.length||a.length){var c=new fo(l);return c.dtstart(o),c.tzid(u||void 0),n.forEach(function(f){c.rrule(new O(co(f,o,u),l))}),i.forEach(function(f){c.rdate(f)}),s.forEach(function(f){c.exrule(new O(co(f,o,u),l))}),a.forEach(function(f){c.exdate(f)}),e.compatible&&e.dtstart&&c.rdate(o),c}var d=n[0]||{};return new O(co(d,d.dtstart||e.dtstart||o,d.tzid||e.tzid||u),l)}function Es(r,e){return e===void 0&&(e={}),hT(r,mT(e))}function co(r,e,t){return $e($e({},r),{dtstart:e,tzid:t})}function mT(r){var e=[],t=Object.keys(r),n=Object.keys(pp);if(t.forEach(function(i){G(n,i)||e.push(i)}),e.length)throw new Error("Invalid options: "+e.join(", "));return $e($e({},pp),r)}function yT(r){if(r.indexOf(":")===-1)return{name:"RRULE",value:r};var e=gf(r,":",1),t=e[0],n=e[1];return{name:t,value:n}}function gT(r){var e=yT(r),t=e.name,n=e.value,i=t.split(";");if(!i)throw new Error("empty property name");return{name:i[0].toUpperCase(),parms:i.slice(1),value:n}}function _T(r,e){if(e===void 0&&(e=!1),r=r&&r.trim(),!r)throw new Error("Invalid empty string");if(!e)return r.split(/\s/);for(var t=r.split(` +`),n=0;n0&&i[0]===" "?(t[n-1]+=i.slice(1),t.splice(n,1)):n+=1:t.splice(n,1)}return t}function TT(r){r.forEach(function(e){if(!/(VALUE=DATE(-TIME)?)|(TZID=)/.test(e))throw new Error("unsupported RDATE/EXDATE parm: "+e)})}function hp(r,e){return TT(e),r.split(",").map(function(t){return N.untilStringToDate(t)})}function mp(r){var e=this;return function(t){if(t!==void 0&&(e["_".concat(r)]=t),e["_".concat(r)]!==void 0)return e["_".concat(r)];for(var n=0;ne(t,n)*-1}static makeCompositeComparator(e){return(t,n)=>{for(let i of e){let s=i(t,n);if(s!==0)return s}return 0}}static compareByUrgency(e,t){return t.urgency-e.urgency}static compareByStatus(e,t){return e.statust.status?-1:0}static compareByPriority(e,t){return e.priority.localeCompare(t.priority)}static compareByStartDate(e,t){return G.compareByDate(e.startDate,t.startDate)}static compareByScheduledDate(e,t){return G.compareByDate(e.scheduledDate,t.scheduledDate)}static compareByDueDate(e,t){return G.compareByDate(e.dueDate,t.dueDate)}static compareByDoneDate(e,t){return G.compareByDate(e.doneDate,t.doneDate)}static compareByTag(e,t){if(e.tags.length===0&&t.tags.length===0)return 0;if(e.tags.length===0)return 1;if(t.tags.length===0)return-1;let n=G.tagPropertyInstance-1;return e.tags.length=G.tagPropertyInstance?1:t.tags.length=G.tagPropertyInstance?-1:e.tags.lengtht.tags[n]?1:0}static compareByDate(e,t){return e!==null&&t===null?-1:e===null&&t!==null?1:e!==null&&t!==null?e.isAfter(t)?1:e.isBefore(t)?-1:0:0}static compareByPath(e,t){return e.patht.path?1:0}static compareByDescription(e,t){return G.cleanDescription(e.description).localeCompare(G.cleanDescription(t.description))}static cleanDescription(e){let t=ie().globalFilter;e=e.replace(t,"").trim();let n=/^\[\[?([^\]]*)\]/,i=e.match(n);if(i!==null){let l=i[1];e=l.substring(l.indexOf("|")+1)+e.replace(n,"")}let s=/^\*\*?([^*]*)\*/,a=e.match(s);a!==null&&(e=a[1]+e.replace(n,""));let o=/^==?([^=]*)==/,u=e.match(o);return u!==null&&(e=u[1]+e.replace(o,"")),e}},Ge=G;Ge.tagPropertyInstance=1,Ge.comparators={urgency:G.compareByUrgency,description:G.compareByDescription,priority:G.compareByPriority,start:G.compareByStartDate,scheduled:G.compareByScheduledDate,due:G.compareByDueDate,done:G.compareByDoneDate,path:G.compareByPath,status:G.compareByStatus,tag:G.compareByTag};var ht=class{constructor({rrule:e,baseOnToday:t,referenceDate:n,startDate:i,scheduledDate:s,dueDate:a}){this.rrule=e,this.baseOnToday=t,this.referenceDate=n,this.startDate=i,this.scheduledDate=s,this.dueDate=a}static fromText({recurrenceRuleText:e,startDate:t,scheduledDate:n,dueDate:i}){try{let s=e.match(/^([a-zA-Z0-9, !]+?)( when done)?$/i);if(s==null)return null;let a=s[1].trim(),o=s[2]!==void 0,u=D.parseText(a);if(u!==null){let l=null;i?l=window.moment(i):n?l=window.moment(n):t&&(l=window.moment(t)),!o&&l!==null?u.dtstart=window.moment(l).startOf("day").utc(!0).toDate():u.dtstart=window.moment().startOf("day").utc(!0).toDate();let c=new D(u);return new ht({rrule:c,baseOnToday:o,referenceDate:l,startDate:t,scheduledDate:n,dueDate:i})}}catch(s){}return null}toText(){let e=this.rrule.toText();return this.baseOnToday&&(e+=" when done"),e}next(){var t;let e;if(this.baseOnToday){let n=window.moment();e=new D(qt($e({},this.rrule.origOptions),{dtstart:n.startOf("day").utc(!0).toDate()})).after(n.endOf("day").utc(!0).toDate())}else{let n=window.moment((t=this.referenceDate)!=null?t:void 0).endOf("day").utc(!0);e=this.rrule.after(n.toDate())}if(e!==null){let i=window.moment.utc(e).local(!0).startOf("day"),s=null,a=null,o=null;if(this.referenceDate){if(this.startDate){let u=window.moment.duration(this.startDate.diff(this.referenceDate));s=window.moment(i),s.add(Math.round(u.asDays()),"days")}if(this.scheduledDate){let u=window.moment.duration(this.scheduledDate.diff(this.referenceDate));a=window.moment(i),a.add(Math.round(u.asDays()),"days")}if(this.dueDate){let u=window.moment.duration(this.dueDate.diff(this.referenceDate));o=window.moment(i),o.add(Math.round(u.asDays()),"days")}}return{startDate:s,scheduledDate:a,dueDate:o}}return null}identicalTo(e){return this.baseOnToday!==e.baseOnToday||Ge.compareByDate(this.startDate,e.startDate)!==0||Ge.compareByDate(this.scheduledDate,e.scheduledDate)!==0||Ge.compareByDate(this.dueDate,e.dueDate)!==0?!1:this.toText()===e.toText()}};var jt=class{static calculate(e){let t=0;if(e.dueDate!==null){let n=Math.round(window.moment().diff(e.dueDate)/jt.milliSecondsPerDay),i;n>=7?i=1:n>=-14?i=(n+14)*.8/21+.2:i=.2,t+=i*jt.dueCoefficient}switch(e.scheduledDate!==null&&window.moment().isSameOrAfter(e.scheduledDate)&&(t+=1*jt.scheduledCoefficient),e.startDate!==null&&window.moment().isBefore(e.startDate)&&(t+=1*jt.startedCoefficient),e.priority){case"1":t+=1*jt.priorityCoefficient;break;case"2":t+=.65*jt.priorityCoefficient;break;case"3":t+=.325*jt.priorityCoefficient;break}return t}},$t=jt;$t.dueCoefficient=12,$t.scheduledCoefficient=5,$t.startedCoefficient=-3,$t.priorityCoefficient=6,$t.milliSecondsPerDay=1e3*60*60*24;var Re={High:"\u23EB",Medium:"\u{1F53C}",Low:"\u{1F53D}",None:""},Dt="\u{1F501}",Mt="\u{1F6EB}",Pt="\u23F3",Ot="\u{1F4C5}",ao="\u2705",Xe=class{},w=Xe;w.dateFormat="YYYY-MM-DD",w.indentationRegex=/^([\s\t>]*)/,w.listMarkerRegex=/[-*]/,w.checkboxRegex=/\[(.)\]/u,w.afterCheckboxRegex=/ *(.*)/u,w.taskRegex=new RegExp(Xe.indentationRegex.source+Xe.listMarkerRegex.source+" +"+Xe.checkboxRegex.source+Xe.afterCheckboxRegex.source,"u"),w.nonTaskRegex=new RegExp(Xe.indentationRegex.source+Xe.listMarkerRegex.source+"? *("+Xe.checkboxRegex.source+")?"+Xe.afterCheckboxRegex.source,"u"),w.listItemRegex=new RegExp(Xe.indentationRegex.source+"("+Xe.listMarkerRegex.source+")"),w.blockLinkRegex=/ \^[a-zA-Z0-9-]+$/u,w.priorityRegex=/([⏫🔼🔽])$/u,w.startDateRegex=/🛫 *(\d{4}-\d{2}-\d{2})$/u,w.scheduledDateRegex=/[⏳⌛] *(\d{4}-\d{2}-\d{2})$/u,w.dueDateRegex=/[📅📆🗓] *(\d{4}-\d{2}-\d{2})$/u,w.doneDateRegex=/✅ *(\d{4}-\d{2}-\d{2})$/u,w.recurrenceRegex=/🔁 ?([a-zA-Z0-9, !]+)$/iu,w.hashTags=/(^|\s)#[^ !@#$%^&*(),.?":{}|<>]*/g,w.hashTagsFromEnd=new RegExp(Xe.hashTags.source+"$");var oe=class{constructor({status:e,description:t,path:n,indentation:i,sectionStart:s,sectionIndex:a,originalStatusCharacter:o,precedingHeader:u,priority:l,startDate:c,scheduledDate:d,dueDate:f,doneDate:p,recurrence:y,blockLink:m,tags:g}){this._urgency=null;this.status=e,this.description=t,this.path=n,this.indentation=i,this.sectionStart=s,this.sectionIndex=a,this.originalStatusCharacter=o,this.precedingHeader=u,this.tags=g,this.priority=l,this.startDate=c,this.scheduledDate=d,this.dueDate=f,this.doneDate=p,this.recurrence=y,this.blockLink=m}static fromLine({line:e,path:t,sectionStart:n,sectionIndex:i,precedingHeader:s}){let a=e.match(w.taskRegex);if(a===null)return null;let o=a[3].trim(),{globalFilter:u}=ie();if(!o.includes(u))return null;let l=o,c=a[1],d=a[2],f;switch(d){case" ":f="Todo";break;default:f="Done"}let p=l.match(w.blockLinkRegex),y=p!==null?p[0]:"";y!==""&&(l=l.replace(w.blockLinkRegex,"").trim());let m,g="3",k=null,x=null,C=null,H=null,re="",de=null,J=[],M="",ye=20,ce=0;do{m=!1;let v=l.match(w.priorityRegex);if(v!==null){switch(v[1]){case Re.Low:g="4";break;case Re.Medium:g="2";break;case Re.High:g="1";break}l=l.replace(w.priorityRegex,"").trim(),m=!0}let _=l.match(w.doneDateRegex);_!==null&&(H=window.moment(_[1],w.dateFormat),l=l.replace(w.doneDateRegex,"").trim(),m=!0);let O=l.match(w.dueDateRegex);O!==null&&(C=window.moment(O[1],w.dateFormat),l=l.replace(w.dueDateRegex,"").trim(),m=!0);let E=l.match(w.scheduledDateRegex);E!==null&&(x=window.moment(E[1],w.dateFormat),l=l.replace(w.scheduledDateRegex,"").trim(),m=!0);let S=l.match(w.startDateRegex);S!==null&&(k=window.moment(S[1],w.dateFormat),l=l.replace(w.startDateRegex,"").trim(),m=!0);let A=l.match(w.recurrenceRegex);A!==null&&(re=A[1].trim(),l=l.replace(w.recurrenceRegex,"").trim(),m=!0);let q=l.match(w.hashTagsFromEnd);if(q!=null){l=l.replace(w.hashTagsFromEnd,"").trim(),m=!0;let ee=q[0].trim();M=M.length>0?[ee,M].join(" "):ee}ce++}while(m&&ce<=ye);re.length>0&&(de=ht.fromText({recurrenceRuleText:re,startDate:k,scheduledDate:x,dueDate:C})),M.length>0&&(l+=" "+M);let P=l.match(w.hashTags);return P!==null&&(J=P.filter(v=>v!==u).map(v=>v.trim())),new oe({status:f,description:l,path:t,indentation:c,sectionStart:n,sectionIndex:i,originalStatusCharacter:d,precedingHeader:s,priority:g,startDate:k,scheduledDate:x,dueDate:C,doneDate:H,recurrence:de,blockLink:y,tags:J})}toLi(s){return ne(this,arguments,function*({parentUlElement:e,listIndex:t,layoutOptions:n,isFilenameUnique:i}){let a=e.createEl("li");a.addClasses(["task-list-item","plugin-tasks-list-item"]);let o=this.toString(n),{globalFilter:u,removeGlobalFilter:l}=ie();l&&(o=o.replace(u,"").trim());let c=a.createSpan();c.addClass("tasks-list-text"),yield ap.MarkdownRenderer.renderMarkdown(o,c,this.path,null);let d=c.querySelector("blockquote"),f=d!=null?d:c,p=f.querySelector("p");if(p!==null){for(;p.firstChild;)f.insertBefore(p.firstChild,p);p.remove()}c.findAll("p").forEach(m=>{m.hasChildNodes()||m.remove()}),c.findAll(".footnotes").forEach(m=>{m.remove()});let y=a.createEl("input");return y.addClass("task-list-item-checkbox"),y.type="checkbox",this.status!=="Todo"&&(y.checked=!0,a.addClass("is-checked")),y.onClickEvent(m=>{m.preventDefault(),m.stopPropagation(),y.disabled=!0;let g=this.toggle();ls({originalTask:this,newTasks:g})}),a.prepend(y),a.setAttr("data-task",this.originalStatusCharacter.trim()),a.setAttr("data-line",t),y.setAttr("data-line",t),n!=null&&n.shortMode&&this.addTooltip({element:c,isFilenameUnique:i}),a})}toString(e){var i;e=e!=null?e:new Xr;let t=this.description;if(!e.hidePriority){let s="";this.priority==="1"?s=" "+Re.High:this.priority==="2"?s=" "+Re.Medium:this.priority==="4"&&(s=" "+Re.Low),t+=s}return!e.hideRecurrenceRule&&this.recurrence&&(t+=e.shortMode?" "+Dt:` ${Dt} ${this.recurrence.toText()}`),!e.hideStartDate&&this.startDate&&(t+=e.shortMode?" "+Mt:` ${Mt} ${this.startDate.format(w.dateFormat)}`),!e.hideScheduledDate&&this.scheduledDate&&(t+=e.shortMode?" "+Pt:` ${Pt} ${this.scheduledDate.format(w.dateFormat)}`),!e.hideDueDate&&this.dueDate&&(t+=e.shortMode?" "+Ot:` ${Ot} ${this.dueDate.format(w.dateFormat)}`),!e.hideDoneDate&&this.doneDate&&(t+=e.shortMode?" "+ao:` ${ao} ${this.doneDate.format(w.dateFormat)}`),t+=(i=this.blockLink)!=null?i:"",t}toFileLineString(){return`${this.indentation}- [${this.originalStatusCharacter}] ${this.toString()}`}toggle(){let e=this.status==="Todo"?"Done":"Todo",t=null,n=null;if(e!=="Todo"){let{setDoneDate:a}=ie();a&&(t=window.moment()),this.recurrence!==null&&(n=this.recurrence.next())}let i=new oe(qt($e({},this),{status:e,doneDate:t,originalStatusCharacter:e==="Done"?"x":" "})),s=[];if(n!==null){let a=new oe(qt($e($e({},this),n),{blockLink:""}));s.push(a)}return s.push(i),s}get urgency(){return this._urgency===null&&(this._urgency=$t.calculate(this)),this._urgency}get filename(){let e=this.path.match(/([^/]+)\.md$/);return e!==null?e[1]:null}getLinkText({isFilenameUnique:e}){let t;return e?t=this.filename:t="/"+this.path,t===null?null:(this.precedingHeader!==null&&this.precedingHeader!==t&&(t=t+" > "+this.precedingHeader),t)}static tasksListsIdentical(e,t){return e.length!==t.length?!1:e.every((n,i)=>n.identicalTo(t[i]))}identicalTo(e){let t=["status","description","path","indentation","sectionStart","sectionIndex","originalStatusCharacter","precedingHeader","priority","blockLink"];for(let s of t)if(this[s]!==e[s])return!1;if(this.tags.length!==e.tags.length||!this.tags.every(function(s,a){return s===e.tags[a]}))return!1;t=["startDate","scheduledDate","dueDate","doneDate"];for(let s of t){let a=this[s],o=e[s];if(Ge.compareByDate(a,o)!==0)return!1}let n=this.recurrence,i=e.recurrence;return n===null&&i!==null||n!==null&&i===null?!1:!(n&&i&&!n.identicalTo(i))}addTooltip({element:e,isFilenameUnique:t}){e.addEventListener("mouseenter",()=>{let n=e.createDiv();n.addClasses(["tooltip","mod-right"]),this.recurrence&&n.createDiv().setText(`${Dt} ${this.recurrence.toText()}`),this.startDate&&n.createDiv().setText(oe.toTooltipDate({signifier:Mt,date:this.startDate})),this.scheduledDate&&n.createDiv().setText(oe.toTooltipDate({signifier:Pt,date:this.scheduledDate})),this.dueDate&&n.createDiv().setText(oe.toTooltipDate({signifier:Ot,date:this.dueDate})),this.doneDate&&n.createDiv().setText(oe.toTooltipDate({signifier:ao,date:this.doneDate}));let i=this.getLinkText({isFilenameUnique:t});i&&n.createDiv().setText(`\u{1F517} ${i}`),e.addEventListener("mouseleave",()=>{n.remove()})})}static toTooltipDate({signifier:e,date:t}){return`${e} ${t.format(w.dateFormat)} (${t.from(window.moment().startOf("day"))})`}escapeRegExp(e){return e.replace(/([.*+?^${}()|[\]/\\])/g,"\\$1")}getDescriptionWithoutGlobalFilter(){let{globalFilter:e}=ie(),t=this.description;if(e.length===0)return t;let n=RegExp("(^|\\s)"+this.escapeRegExp(e)+"($|\\s)","ug");return this.description.search(n)>-1&&(t=t.replace(n,"$1$2").replace(" "," ").trim()),t}};var hr=class{constructor({metadataCache:e,vault:t,events:n}){this.metadataCache=e,this.metadataCacheEventReferences=[],this.vault=t,this.vaultEventReferences=[],this.events=n,this.eventsEventReferences=[],this.tasksMutex=new us,this.state="Cold",this.tasks=[],this.loadedAfterFirstResolve=!1,this.subscribeToCache(),this.subscribeToVault(),this.subscribeToEvents(),this.loadVault()}unload(){for(let e of this.metadataCacheEventReferences)this.metadataCache.offref(e);for(let e of this.vaultEventReferences)this.vault.offref(e);for(let e of this.eventsEventReferences)this.events.off(e)}getTasks(){return this.tasks}getState(){return this.state}notifySubscribers(){this.events.triggerCacheUpdate({tasks:this.tasks,state:this.state})}subscribeToCache(){let e=this.metadataCache.on("resolved",()=>ne(this,null,function*(){this.loadedAfterFirstResolve||(this.loadedAfterFirstResolve=!0,this.loadVault())}));this.metadataCacheEventReferences.push(e);let t=this.metadataCache.on("changed",n=>{this.tasksMutex.runExclusive(()=>{this.indexFile(n)})});this.metadataCacheEventReferences.push(t)}subscribeToVault(){let e=this.vault.on("create",i=>{i instanceof gs.TFile&&this.tasksMutex.runExclusive(()=>{this.indexFile(i)})});this.vaultEventReferences.push(e);let t=this.vault.on("delete",i=>{i instanceof gs.TFile&&this.tasksMutex.runExclusive(()=>{this.tasks=this.tasks.filter(s=>s.path!==i.path),this.notifySubscribers()})});this.vaultEventReferences.push(t);let n=this.vault.on("rename",(i,s)=>{i instanceof gs.TFile&&this.tasksMutex.runExclusive(()=>{this.tasks=this.tasks.map(a=>a.path===s?new oe(qt($e({},a),{path:i.path})):a),this.notifySubscribers()})});this.vaultEventReferences.push(n)}subscribeToEvents(){let e=this.events.onRequestCacheUpdate(t=>{t({tasks:this.tasks,state:this.state})});this.eventsEventReferences.push(e)}loadVault(){return this.tasksMutex.runExclusive(()=>ne(this,null,function*(){this.state="Initializing",yield Promise.all(this.vault.getMarkdownFiles().map(e=>this.indexFile(e))),this.state="Warm",this.notifySubscribers()}))}indexFile(e){return ne(this,null,function*(){let t=this.metadataCache.getFileCache(e);if(t==null)return;let n=this.tasks.filter(a=>a.path===e.path),i=t.listItems,s=[];if(i!==void 0){let a=yield this.vault.cachedRead(e);s=hr.getTasksFromFileContent(a,i,t,e)}oe.tasksListsIdentical(n,s)||(this.getState()=="Warm"&&console.debug(`At least one task, its line number or its heading has changed in ${e.path}: triggering a refresh of all active Tasks blocks in Live Preview and Reading mode views.`),this.tasks=this.tasks.filter(a=>a.path!==e.path),this.tasks.push(...s),this.notifySubscribers())})}static getTasksFromFileContent(e,t,n,i){let s=[],a=e.split(` -`),o=null,u=0;for(let l of t)if(l.task!==void 0){if((o===null||o.position.end.line=e)return n;return null}static getPrecedingHeader(e,t){if(t===void 0)return null;let n=null;for(let i of t){if(i.position.start.line>e)return n;n=i.heading}return n}};var ad=require("obsidian");var Xg=require("obsidian");function rn(){}function lo(r){return r()}function up(){return Object.create(null)}function xr(r){r.forEach(lo)}function cp(r){return typeof r=="function"}function dp(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function fp(r){return Object.keys(r).length===0}var pp=!1;function oT(){pp=!0}function uT(){pp=!1}function b(r,e){r.appendChild(e)}function co(r,e,t){r.insertBefore(e,t||null)}function Es(r){r.parentNode.removeChild(r)}function I(r){return document.createElement(r)}function lT(r){return document.createElementNS("http://www.w3.org/2000/svg",r)}function Bt(r){return document.createTextNode(r)}function Z(){return Bt(" ")}function mr(r,e,t,n){return r.addEventListener(e,t,n),()=>r.removeEventListener(e,t,n)}function hp(r){return function(e){return e.preventDefault(),r.call(this,e)}}function Y(r,e,t){t==null?r.removeAttribute(e):r.getAttribute(e)!==t&&r.setAttribute(e,t)}function cT(r){return Array.from(r.childNodes)}function mp(r,e){e=""+e,r.wholeText!==e&&(r.data=e)}function mt(r,e){r.value=e==null?"":e}function fo(r,e){for(let t=0;t{let u=s.map(lo).filter(cp);a?a.push(...u):xr(u),r.$$.on_mount=[]}),o.forEach(jn)}function _p(r,e){let t=r.$$;t.fragment!==null&&(xr(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function _T(r,e){r.$$.dirty[0]===-1&&(Ln.push(r),pT(),r.$$.dirty.fill(0)),r.$$.dirty[e/31|0]|=1<{let y=p.length?p[0]:f;return l.ctx&&i(l.ctx[d],l.ctx[d]=y)&&(!l.skip_bound&&l.bound[d]&&l.bound[d](y),c&&_T(r,d)),f}):[],l.update(),c=!0,xr(l.before_update),l.fragment=n?n(l.ctx):!1,e.target){if(e.hydrate){oT();let d=cT(e.target);l.fragment&&l.fragment.l(d),d.forEach(Es)}else l.fragment&&l.fragment.c();e.intro&&yT(r.$$.fragment),gT(r,e.target,e.anchor,e.customElement),uT(),gp()}Yn(u)}var TT;typeof HTMLElement=="function"&&(TT=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){let{on_mount:r}=this.$$;this.$$.on_disconnect=r.map(lo).filter(cp);for(let e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(r,e,t){this[r]=t}disconnectedCallback(){xr(this.$$.on_disconnect)}$destroy(){_p(this,1),this.$destroy=rn}$on(r,e){let t=this.$$.callbacks[r]||(this.$$.callbacks[r]=[]);return t.push(e),()=>{let n=t.indexOf(e);n!==-1&&t.splice(n,1)}}$set(r){this.$$set&&!fp(r)&&(this.$$.skip_bound=!0,this.$$set(r),this.$$.skip_bound=!1)}});var vs=class{$destroy(){_p(this,1),this.$destroy=rn}$on(e,t){let n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{let i=n.indexOf(t);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!fp(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};var Bi=os(Ee());var FO={td:"today",tm:"tomorrow",yd:"yesterday",tw:"this week",nw:"next week",weekend:"sat",we:"sat"};function bn(r){for(let[e,t]of Object.entries(FO))r=r.replace(RegExp(`\\b${e}\\s`,"i"),t);return r}function qO(r){let e,t,n,i,s,a,o,u,l,c,d,f,p,y,m,g,k,x,C,H,re,de,J,M,ye,ce,P,v,_,O,E,S,A,q,ee,ue,se,ft,Le,or,ur,pt,Ne,Ce,lr,Pr,Ut,Pd,kn,Od,Ad,Ji,kd,cr,es,Nd,Ft,Cd,Nn,xd,Sd,ts,Id,Ud,Fd,Vr,Zr,qd,Or,rs,Wd,Ha,ns=r[0].status+"",za,Ld,is,Yd,ss,$d,jd,Bd,Ka,Gd,as,Va,Hd;return{c(){e=I("div"),t=I("form"),n=I("div"),i=I("label"),i.textContent="Description",s=Z(),a=I("input"),o=Z(),u=I("hr"),l=Z(),c=I("div"),d=I("label"),d.textContent="Priority",f=Z(),p=I("select"),y=I("option"),y.textContent="None",m=I("option"),m.textContent=`${Re.High} High`,g=I("option"),g.textContent=`${Re.Medium} Medium`,k=I("option"),k.textContent=`${Re.Low} Low`,x=Z(),C=I("hr"),H=Z(),re=I("div"),de=I("label"),de.textContent="Recurrence",J=Z(),M=I("input"),ye=Z(),ce=I("code"),P=Bt(Dt),v=Z(),_=new Cr(!1),O=Z(),E=I("hr"),S=Z(),A=I("div"),q=I("div"),ee=I("label"),ee.textContent="Due",ue=Z(),se=I("input"),ft=Z(),Le=I("code"),or=Bt(Ot),ur=Z(),pt=new Cr(!1),Ne=Z(),Ce=I("div"),lr=I("label"),lr.textContent="Scheduled",Pr=Z(),Ut=I("input"),Pd=Z(),kn=I("code"),Od=Bt(Pt),Ad=Z(),Ji=new Cr(!1),kd=Z(),cr=I("div"),es=I("label"),es.textContent="Start",Nd=Z(),Ft=I("input"),Cd=Z(),Nn=I("code"),xd=Bt(Mt),Sd=Z(),ts=new Cr(!1),Id=Z(),Ud=I("hr"),Fd=Z(),Vr=I("div"),Zr=I("div"),qd=Bt(`Status: - `),Or=I("input"),Wd=Z(),Ha=I("code"),za=Bt(ns),Ld=Z(),is=I("div"),Yd=Bt(`Done on: - `),ss=I("code"),$d=Z(),jd=I("hr"),Bd=Z(),Ka=I("div"),Gd=Z(),as=I("div"),as.innerHTML='',Y(i,"for","description"),Y(a,"id","description"),Y(a,"type","text"),Y(a,"class","tasks-modal-description"),Y(a,"placeholder","Take out the trash"),Y(n,"class","tasks-modal-section"),Y(d,"for","priority"),y.__value="none",y.value=y.__value,m.__value="high",m.value=m.__value,g.__value="medium",g.value=g.__value,k.__value="low",k.value=k.__value,Y(p,"id","priority"),Y(p,"class","dropdown"),r[0].priority===void 0&&jn(()=>r[14].call(p)),Y(c,"class","tasks-modal-section"),Y(de,"for","recurrence"),Y(M,"id","description"),Y(M,"type","text"),Y(M,"placeholder","Try 'every 2 weeks on Thursday'."),_.a=null,Y(re,"class","tasks-modal-section"),Y(ee,"for","due"),Y(se,"id","due"),Y(se,"type","text"),Y(se,"placeholder",nd),pt.a=null,Y(q,"class","tasks-modal-date"),Y(lr,"for","scheduled"),Y(Ut,"id","scheduled"),Y(Ut,"type","text"),Y(Ut,"placeholder",nd),Ji.a=null,Y(Ce,"class","tasks-modal-date"),Y(es,"for","start"),Y(Ft,"id","start"),Y(Ft,"type","text"),Y(Ft,"placeholder",nd),ts.a=null,Y(cr,"class","tasks-modal-date"),Y(A,"class","tasks-modal-section"),Y(Or,"type","checkbox"),Y(Or,"class","task-list-item-checkbox tasks-modal-checkbox"),Or.checked=rs=r[0].status==="Done",Or.disabled=!0,Y(Vr,"class","tasks-modal-section"),Y(Ka,"class","tasks-modal-section"),Y(as,"class","tasks-modal-section"),Y(e,"class","tasks-modal")},m(fe,Ye){co(fe,e,Ye),b(e,t),b(t,n),b(n,i),b(n,s),b(n,a),mt(a,r[0].description),r[13](a),b(t,o),b(t,u),b(t,l),b(t,c),b(c,d),b(c,f),b(c,p),b(p,y),b(p,m),b(p,g),b(p,k),fo(p,r[0].priority),b(t,x),b(t,C),b(t,H),b(t,re),b(re,de),b(re,J),b(re,M),mt(M,r[0].recurrenceRule),b(re,ye),b(re,ce),b(ce,P),b(ce,v),_.m(r[5],ce),b(t,O),b(t,E),b(t,S),b(t,A),b(A,q),b(q,ee),b(q,ue),b(q,se),mt(se,r[0].dueDate),b(q,ft),b(q,Le),b(Le,or),b(Le,ur),pt.m(r[4],Le),b(A,Ne),b(A,Ce),b(Ce,lr),b(Ce,Pr),b(Ce,Ut),mt(Ut,r[0].scheduledDate),b(Ce,Pd),b(Ce,kn),b(kn,Od),b(kn,Ad),Ji.m(r[3],kn),b(A,kd),b(A,cr),b(cr,es),b(cr,Nd),b(cr,Ft),mt(Ft,r[0].startDate),b(cr,Cd),b(cr,Nn),b(Nn,xd),b(Nn,Sd),ts.m(r[2],Nn),b(t,Id),b(t,Ud),b(t,Fd),b(t,Vr),b(Vr,Zr),b(Zr,qd),b(Zr,Or),b(Zr,Wd),b(Zr,Ha),b(Ha,za),b(Vr,Ld),b(Vr,is),b(is,Yd),b(is,ss),ss.innerHTML=r[6],b(t,$d),b(t,jd),b(t,Bd),b(t,Ka),b(t,Gd),b(t,as),Va||(Hd=[mr(a,"input",r[12]),mr(p,"change",r[14]),mr(M,"input",r[15]),mr(se,"input",r[16]),mr(Ut,"input",r[17]),mr(Ft,"input",r[18]),mr(t,"submit",hp(r[7]))],Va=!0)},p(fe,[Ye]){Ye&1&&a.value!==fe[0].description&&mt(a,fe[0].description),Ye&1&&fo(p,fe[0].priority),Ye&1&&M.value!==fe[0].recurrenceRule&&mt(M,fe[0].recurrenceRule),Ye&32&&_.p(fe[5]),Ye&1&&se.value!==fe[0].dueDate&&mt(se,fe[0].dueDate),Ye&16&&pt.p(fe[4]),Ye&1&&Ut.value!==fe[0].scheduledDate&&mt(Ut,fe[0].scheduledDate),Ye&8&&Ji.p(fe[3]),Ye&1&&Ft.value!==fe[0].startDate&&mt(Ft,fe[0].startDate),Ye&4&&ts.p(fe[2]),Ye&1&&rs!==(rs=fe[0].status==="Done")&&(Or.checked=rs),Ye&1&&ns!==(ns=fe[0].status+"")&&mp(za,ns),Ye&64&&(ss.innerHTML=fe[6])},i:rn,o:rn,d(fe){fe&&Es(e),r[13](null),Va=!1,xr(Hd)}}}var nd="Try 'Monday' or 'tomorrow', or [td|tm|yd|tw|nw|we] then space.";function WO(r,e,t){var n,i;let{task:s}=e,{onSubmit:a}=e,o,u={description:"",status:"Todo",priority:"none",recurrenceRule:"",startDate:"",scheduledDate:"",dueDate:"",doneDate:""},l="",c="",d="",f="",p="",y=!1;function m(M,ye,ce=void 0){if(!ye)return`no ${M} date`;let P=Bi.parseDate(ye,ce,{forwardDate:ce!=null});return P!==null?window.moment(P).format("YYYY-MM-DD"):`invalid ${M} date`}po(()=>{let{globalFilter:M}=ie(),ye=s.getDescriptionWithoutGlobalFilter();(ye!=s.description||ye.indexOf(M)==-1)&&(y=!0);let ce="none";s.priority==="4"?ce="low":s.priority==="2"?ce="medium":s.priority==="1"&&(ce="high"),t(0,u={description:ye,status:s.status,priority:ce,recurrenceRule:s.recurrence?s.recurrence.toText():"",startDate:s.startDate?s.startDate.format("YYYY-MM-DD"):"",scheduledDate:s.scheduledDate?s.scheduledDate.format("YYYY-MM-DD"):"",dueDate:s.dueDate?s.dueDate.format("YYYY-MM-DD"):"",doneDate:s.doneDate?s.doneDate.format("YYYY-MM-DD"):""}),setTimeout(()=>{o.focus()},10)});let g=()=>{let{globalFilter:M}=ie(),ye=u.description.trim();y&&(ye=M+" "+ye);let ce=null,P=Bi.parseDate(u.startDate,new Date,{forwardDate:!0});P!==null&&(ce=window.moment(P));let v=null,_=Bi.parseDate(u.scheduledDate,new Date,{forwardDate:!0});_!==null&&(v=window.moment(_));let O=null,E=Bi.parseDate(u.dueDate,new Date,{forwardDate:!0});E!==null&&(O=window.moment(E));let S=null;u.recurrenceRule&&(S=ht.fromText({recurrenceRuleText:u.recurrenceRule,startDate:ce,scheduledDate:v,dueDate:O}));let A;switch(u.priority){case"low":A="4";break;case"medium":A="2";break;case"high":A="1";break;default:A="3"}let q=new oe(Object.assign(Object.assign({},s),{description:ye,status:u.status,priority:A,recurrence:S,startDate:ce,scheduledDate:v,dueDate:O,doneDate:window.moment(u.doneDate,"YYYY-MM-DD").isValid()?window.moment(u.doneDate,"YYYY-MM-DD"):null}));a([q])};function k(){u.description=this.value,t(0,u)}function x(M){bs[M?"unshift":"push"](()=>{o=M,t(1,o)})}function C(){u.priority=yp(this),t(0,u)}function H(){u.recurrenceRule=this.value,t(0,u)}function re(){u.dueDate=this.value,t(0,u)}function de(){u.scheduledDate=this.value,t(0,u)}function J(){u.startDate=this.value,t(0,u)}return r.$$set=M=>{"task"in M&&t(8,s=M.task),"onSubmit"in M&&t(9,a=M.onSubmit)},r.$$.update=()=>{if(r.$$.dirty&1){e:t(0,u.startDate=bn(u.startDate),u),t(2,l=m("start",u.startDate,new Date))}if(r.$$.dirty&1){e:t(0,u.scheduledDate=bn(u.scheduledDate),u),t(3,c=m("scheduled",u.scheduledDate,new Date))}if(r.$$.dirty&1){e:t(0,u.dueDate=bn(u.dueDate),u),t(4,d=m("due",u.dueDate,new Date))}if(r.$$.dirty&3073){e:u.recurrenceRule?t(5,f=t(11,i=t(10,n=ht.fromText({recurrenceRuleText:u.recurrenceRule,startDate:null,scheduledDate:null,dueDate:null}))===null||n===void 0?void 0:n.toText())!==null&&i!==void 0?i:"invalid recurrence rule"):t(5,f="not recurring")}if(r.$$.dirty&1){e:t(6,p=m("done",u.doneDate))}},[u,o,l,c,d,f,p,g,s,a,n,i,k,x,C,H,re,de,J]}var id=class extends vs{constructor(e){super(),Tp(this,e,WO,qO,dp,{task:8,onSubmit:9})}},Zg=id;var vn=class extends Xg.Modal{constructor({app:t,task:n,onSubmit:i}){super(t);this.task=n,this.onSubmit=s=>{i(s),this.close()}}onOpen(){this.titleEl.setText("Create or edit Task");let{contentEl:t}=this;new Zg({target:t,props:{task:this.task,onSubmit:this.onSubmit}})}onClose(){let{contentEl:t}=this;t.empty()}};var Qg=(r,e,t,n)=>{var d;if(r)return t instanceof ad.MarkdownView;if(!(t instanceof ad.MarkdownView))return;let i=(d=t.file)==null?void 0:d.path;if(i===void 0)return;let a=e.getCursor().line,o=e.getLine(a),u=LO({line:o,path:i}),l=f=>{let p=f.map(y=>y.toFileLineString()).join(` -`);e.setLine(a,p)};new vn({app:n,task:u,onSubmit:l}).open()},LO=({line:r,path:e})=>{var c;let t=oe.fromLine({line:r,path:e,sectionStart:0,sectionIndex:0,precedingHeader:null});if(t!==null)return t;let n=r.match(w.nonTaskRegex);if(n===null)return console.error("Tasks: Cannot create task on line:",r),new oe({status:"Todo",description:"",path:e,indentation:"",originalStatusCharacter:" ",priority:"3",startDate:null,scheduledDate:null,dueDate:null,doneDate:null,recurrence:null,sectionStart:0,sectionIndex:0,precedingHeader:null,blockLink:"",tags:[]});let i=n[1],s=(c=n[3])!=null?c:" ",a=s===" "?"Todo":"Done",o=n[4],u=r.match(w.blockLinkRegex),l=u!==null?u[0]:"";return l!==""&&(o=o.replace(w.blockLinkRegex,"")),new oe({status:a,description:o,path:e,indentation:i,originalStatusCharacter:s,blockLink:l,priority:"3",startDate:null,scheduledDate:null,dueDate:null,doneDate:null,recurrence:null,sectionStart:0,sectionIndex:0,precedingHeader:null,tags:[]})};var od=require("obsidian");var Jg=(r,e,t)=>{var u;if(r)return t instanceof od.MarkdownView;if(!(t instanceof od.MarkdownView))return;let n=(u=t.file)==null?void 0:u.path;if(n===void 0)return;let i=e.getCursor(),s=i.line,a=e.getLine(s),o=YO(a,n);e.setLine(s,o),e.setCursor({line:i.line,ch:jO(i.ch,a,o)})},YO=(r,e)=>{let t=r,n=oe.fromLine({line:r,path:e,sectionStart:0,sectionIndex:0,precedingHeader:null});if(n!==null)t=$O(n);else{let i=r.match(w.taskRegex);if(i!==null){let a=i[2].toLowerCase()===" "?"x":" ";t=r.replace(w.taskRegex,`$1- [${a}] $3`)}else w.listItemRegex.test(r)?t=r.replace(w.listItemRegex,"$1$2 [ ]"):t=r.replace(w.indentationRegex,"$1- ")}return t},$O=r=>r.toggle().map(n=>n.toFileLineString()).join(` -`),jO=(r,e,t)=>{let n=t.length;if(n<=e.length)return r>=t.length?n:r;let i=13;if(t.match(w.doneDateRegex)&&n-e.length>=i&&(n-=i),n>=2*e.length&&t.search(`.+ -.+`)!==-1)return r+n-e.length;let s=t.search(/[-*]/);return rQg(t,n,i,this.app)}),e.addCommand({id:"toggle-done",name:"Toggle task done",icon:"check-in-circle",editorCheckCallback:Jg})}};var ma=class{constructor({obsidianEvents:e}){this.obsidianEvents=e}onCacheUpdate(e){return this.obsidianEvents.on("obsidian-tasks-plugin:cache-update",e)}triggerCacheUpdate(e){this.obsidianEvents.trigger("obsidian-tasks-plugin:cache-update",e)}onRequestCacheUpdate(e){return this.obsidianEvents.on("obsidian-tasks-plugin:request-cache-update",e)}triggerRequestCacheUpdate(e){this.obsidianEvents.trigger("obsidian-tasks-plugin:request-cache-update",e)}off(e){this.obsidianEvents.offref(e)}};var ya=class{constructor({plugin:e}){this.markdownPostProcessor=this._markdownPostProcessor.bind(this);e.registerMarkdownPostProcessor(this._markdownPostProcessor.bind(this))}_markdownPostProcessor(e,t){return ne(this,null,function*(){var c;let{globalFilter:n}=ie(),i=e.findAll(".task-list-item").filter(d=>{var y;let f=(y=d.textContent)==null?void 0:y.split(` +`).map(function(i){return i.replace(/^RRULE:/,"EXRULE:")}).filter(function(i){return!/^DTSTART/.test(i)}))}),this._rdate.length&&t.push(_p("RDATE",this._rdate,this.tzid())),this._exdate.length&&t.push(_p("EXDATE",this._exdate,this.tzid())),t},e.prototype.toString=function(){return this.valueOf().join(` +`)},e.prototype.clone=function(){var t=new e(!!this._cache);return this._rrule.forEach(function(n){return t.rrule(n.clone())}),this._exrule.forEach(function(n){return t.exrule(n.clone())}),this._rdate.forEach(function(n){return t.rdate(new Date(n.getTime()))}),this._exdate.forEach(function(n){return t.exdate(new Date(n.getTime()))}),t},e}(O);function yp(r,e){if(!(r instanceof O))throw new TypeError(String(r)+" is not RRule instance");G(e.map(String),String(r))||e.push(r)}function gp(r,e){if(!(r instanceof Date))throw new TypeError(String(r)+" is not Date instance");G(e.map(Number),Number(r))||(e.push(r),N.sort(e))}function _p(r,e,t){var n=!t||t.toUpperCase()==="UTC",i=n?"".concat(r,":"):"".concat(r,";TZID=").concat(t,":"),s=e.map(function(a){return N.timeToUntilString(a.valueOf(),n)}).join(",");return"".concat(i).concat(s)}var H=class{static by(e,t){let n=[H.compareByUrgency,H.compareByStatus,H.compareByDueDate,H.compareByPriority,H.compareByPath],i=[];for(let{property:s,reverse:a,propertyInstance:o}of e.sorting){let u=H.comparators[s];i.push(a?H.makeReversedComparator(u):u),s==="tag"&&(H.tagPropertyInstance=o)}return t.sort(H.makeCompositeComparator([...i,...n]))}static makeReversedComparator(e){return(t,n)=>e(t,n)*-1}static makeCompositeComparator(e){return(t,n)=>{for(let i of e){let s=i(t,n);if(s!==0)return s}return 0}}static compareByUrgency(e,t){return t.urgency-e.urgency}static compareByStatus(e,t){return e.statust.status?-1:0}static compareByPriority(e,t){return e.priority.localeCompare(t.priority)}static compareByStartDate(e,t){return H.compareByDate(e.startDate,t.startDate)}static compareByScheduledDate(e,t){return H.compareByDate(e.scheduledDate,t.scheduledDate)}static compareByDueDate(e,t){return H.compareByDate(e.dueDate,t.dueDate)}static compareByDoneDate(e,t){return H.compareByDate(e.doneDate,t.doneDate)}static compareByTag(e,t){if(e.tags.length===0&&t.tags.length===0)return 0;if(e.tags.length===0)return 1;if(t.tags.length===0)return-1;let n=H.tagPropertyInstance-1;return e.tags.length=H.tagPropertyInstance?1:t.tags.length=H.tagPropertyInstance?-1:e.tags.lengtht.tags[n]?1:0}static compareByDate(e,t){return e!==null&&t===null?-1:e===null&&t!==null?1:e!==null&&t!==null?e.isAfter(t)?1:e.isBefore(t)?-1:0:0}static compareByPath(e,t){return e.patht.path?1:0}static compareByDescription(e,t){return H.cleanDescription(e.description).localeCompare(H.cleanDescription(t.description))}static cleanDescription(e){let t=ie().globalFilter;e=e.replace(t,"").trim();let n=/^\[\[?([^\]]*)\]/,i=e.match(n);if(i!==null){let l=i[1];e=l.substring(l.indexOf("|")+1)+e.replace(n,"")}let s=/^\*\*?([^*]*)\*/,a=e.match(s);a!==null&&(e=a[1]+e.replace(n,""));let o=/^==?([^=]*)==/,u=e.match(o);return u!==null&&(e=u[1]+e.replace(o,"")),e}},Be=H;Be.tagPropertyInstance=1,Be.comparators={urgency:H.compareByUrgency,description:H.compareByDescription,priority:H.compareByPriority,start:H.compareByStartDate,scheduled:H.compareByScheduledDate,due:H.compareByDueDate,done:H.compareByDoneDate,path:H.compareByPath,status:H.compareByStatus,tag:H.compareByTag};var mt=class{constructor({rrule:e,baseOnToday:t,referenceDate:n,startDate:i,scheduledDate:s,dueDate:a}){this.rrule=e,this.baseOnToday=t,this.referenceDate=n,this.startDate=i,this.scheduledDate=s,this.dueDate=a}static fromText({recurrenceRuleText:e,startDate:t,scheduledDate:n,dueDate:i}){try{let s=e.match(/^([a-zA-Z0-9, !]+?)( when done)?$/i);if(s==null)return null;let a=s[1].trim(),o=s[2]!==void 0,u=O.parseText(a);if(u!==null){let l=null;i?l=window.moment(i):n?l=window.moment(n):t&&(l=window.moment(t)),!o&&l!==null?u.dtstart=window.moment(l).startOf("day").utc(!0).toDate():u.dtstart=window.moment().startOf("day").utc(!0).toDate();let c=new O(u);return new mt({rrule:c,baseOnToday:o,referenceDate:l,startDate:t,scheduledDate:n,dueDate:i})}}catch(s){}return null}toText(){let e=this.rrule.toText();return this.baseOnToday&&(e+=" when done"),e}next(){var t;let e;if(this.baseOnToday){let n=window.moment();e=new O(Wt(Ye({},this.rrule.origOptions),{dtstart:n.startOf("day").utc(!0).toDate()})).after(n.endOf("day").utc(!0).toDate())}else{let n=window.moment((t=this.referenceDate)!=null?t:void 0).endOf("day").utc(!0);e=this.rrule.after(n.toDate())}if(e!==null){let i=window.moment.utc(e).local(!0).startOf("day"),s=null,a=null,o=null;if(this.referenceDate){if(this.startDate){let u=window.moment.duration(this.startDate.diff(this.referenceDate));s=window.moment(i),s.add(Math.round(u.asDays()),"days")}if(this.scheduledDate){let u=window.moment.duration(this.scheduledDate.diff(this.referenceDate));a=window.moment(i),a.add(Math.round(u.asDays()),"days")}if(this.dueDate){let u=window.moment.duration(this.dueDate.diff(this.referenceDate));o=window.moment(i),o.add(Math.round(u.asDays()),"days")}}return{startDate:s,scheduledDate:a,dueDate:o}}return null}identicalTo(e){return this.baseOnToday!==e.baseOnToday||Be.compareByDate(this.startDate,e.startDate)!==0||Be.compareByDate(this.scheduledDate,e.scheduledDate)!==0||Be.compareByDate(this.dueDate,e.dueDate)!==0?!1:this.toText()===e.toText()}};var Bt=class{static calculate(e){let t=0;if(e.dueDate!==null){let n=Math.round(window.moment().diff(e.dueDate)/Bt.milliSecondsPerDay),i;n>=7?i=1:n>=-14?i=(n+14)*.8/21+.2:i=.2,t+=i*Bt.dueCoefficient}switch(e.scheduledDate!==null&&window.moment().isSameOrAfter(e.scheduledDate)&&(t+=1*Bt.scheduledCoefficient),e.startDate!==null&&window.moment().isBefore(e.startDate)&&(t+=1*Bt.startedCoefficient),e.priority){case"1":t+=1*Bt.priorityCoefficient;break;case"2":t+=.65*Bt.priorityCoefficient;break;case"3":t+=.325*Bt.priorityCoefficient;break}return t}},jt=Bt;jt.dueCoefficient=12,jt.scheduledCoefficient=5,jt.startedCoefficient=-3,jt.priorityCoefficient=6,jt.milliSecondsPerDay=1e3*60*60*24;var Re={High:"\u23EB",Medium:"\u{1F53C}",Low:"\u{1F53D}",None:""},Mt="\u{1F501}",Ot="\u{1F6EB}",Pt="\u23F3",At="\u{1F4C5}",po="\u2705",Xe=class{},D=Xe;D.dateFormat="YYYY-MM-DD",D.indentationRegex=/^([\s\t>]*)/,D.listMarkerRegex=/[-*]/,D.checkboxRegex=/\[(.)\]/u,D.afterCheckboxRegex=/ *(.*)/u,D.taskRegex=new RegExp(Xe.indentationRegex.source+Xe.listMarkerRegex.source+" +"+Xe.checkboxRegex.source+Xe.afterCheckboxRegex.source,"u"),D.nonTaskRegex=new RegExp(Xe.indentationRegex.source+Xe.listMarkerRegex.source+"? *("+Xe.checkboxRegex.source+")?"+Xe.afterCheckboxRegex.source,"u"),D.listItemRegex=new RegExp(Xe.indentationRegex.source+"("+Xe.listMarkerRegex.source+")"),D.blockLinkRegex=/ \^[a-zA-Z0-9-]+$/u,D.priorityRegex=/([⏫🔼🔽])$/u,D.startDateRegex=/🛫 *(\d{4}-\d{2}-\d{2})$/u,D.scheduledDateRegex=/[⏳⌛] *(\d{4}-\d{2}-\d{2})$/u,D.dueDateRegex=/[📅📆🗓] *(\d{4}-\d{2}-\d{2})$/u,D.doneDateRegex=/✅ *(\d{4}-\d{2}-\d{2})$/u,D.recurrenceRegex=/🔁 ?([a-zA-Z0-9, !]+)$/iu,D.hashTags=/(^|\s)#[^ !@#$%^&*(),.?":{}|<>]*/g,D.hashTagsFromEnd=new RegExp(Xe.hashTags.source+"$");var oe=class{constructor({status:e,description:t,path:n,indentation:i,sectionStart:s,sectionIndex:a,originalStatusCharacter:o,precedingHeader:u,priority:l,startDate:c,scheduledDate:d,dueDate:f,doneDate:p,recurrence:y,blockLink:m,tags:_}){this._urgency=null;this.status=e,this.description=t,this.path=n,this.indentation=i,this.sectionStart=s,this.sectionIndex=a,this.originalStatusCharacter=o,this.precedingHeader=u,this.tags=_,this.priority=l,this.startDate=c,this.scheduledDate=d,this.dueDate=f,this.doneDate=p,this.recurrence=y,this.blockLink=m}static fromLine({line:e,path:t,sectionStart:n,sectionIndex:i,precedingHeader:s}){let a=e.match(D.taskRegex);if(a===null)return null;let o=a[3].trim(),{globalFilter:u}=ie();if(!o.includes(u))return null;let l=o,c=a[1],d=a[2],f;switch(d){case" ":f="Todo";break;default:f="Done"}let p=l.match(D.blockLinkRegex),y=p!==null?p[0]:"";y!==""&&(l=l.replace(D.blockLinkRegex,"").trim());let m,_="3",A=null,I=null,C=null,z=null,re="",fe=null,ee=[],x="",le=20,pe=0;do{m=!1;let v=l.match(D.priorityRegex);if(v!==null){switch(v[1]){case Re.Low:_="4";break;case Re.Medium:_="2";break;case Re.High:_="1";break}l=l.replace(D.priorityRegex,"").trim(),m=!0}let T=l.match(D.doneDateRegex);T!==null&&(z=window.moment(T[1],D.dateFormat),l=l.replace(D.doneDateRegex,"").trim(),m=!0);let P=l.match(D.dueDateRegex);P!==null&&(C=window.moment(P[1],D.dateFormat),l=l.replace(D.dueDateRegex,"").trim(),m=!0);let E=l.match(D.scheduledDateRegex);E!==null&&(I=window.moment(E[1],D.dateFormat),l=l.replace(D.scheduledDateRegex,"").trim(),m=!0);let U=l.match(D.startDateRegex);U!==null&&(A=window.moment(U[1],D.dateFormat),l=l.replace(D.startDateRegex,"").trim(),m=!0);let M=l.match(D.recurrenceRegex);M!==null&&(re=M[1].trim(),l=l.replace(D.recurrenceRegex,"").trim(),m=!0);let F=l.match(D.hashTagsFromEnd);if(F!=null){l=l.replace(D.hashTagsFromEnd,"").trim(),m=!0;let X=F[0].trim();x=x.length>0?[X,x].join(" "):X}pe++}while(m&&pe<=le);re.length>0&&(fe=mt.fromText({recurrenceRuleText:re,startDate:A,scheduledDate:I,dueDate:C})),x.length>0&&(l+=" "+x);let w=l.match(D.hashTags);return w!==null&&(ee=w.filter(v=>v!==u).map(v=>v.trim())),new oe({status:f,description:l,path:t,indentation:c,sectionStart:n,sectionIndex:i,originalStatusCharacter:d,precedingHeader:s,priority:_,startDate:A,scheduledDate:I,dueDate:C,doneDate:z,recurrence:fe,blockLink:y,tags:ee})}toLi(s){return ne(this,arguments,function*({parentUlElement:e,listIndex:t,layoutOptions:n,isFilenameUnique:i}){let a=e.createEl("li");a.addClasses(["task-list-item","plugin-tasks-list-item"]);let o=this.toString(n),{globalFilter:u,removeGlobalFilter:l}=ie();l&&(o=o.replace(u,"").trim());let c=a.createSpan();c.addClass("tasks-list-text"),yield Tp.MarkdownRenderer.renderMarkdown(o,c,this.path,null);let d=c.querySelector("blockquote"),f=d!=null?d:c,p=f.querySelector("p");if(p!==null){for(;p.firstChild;)f.insertBefore(p.firstChild,p);p.remove()}c.findAll("p").forEach(m=>{m.hasChildNodes()||m.remove()}),c.findAll(".footnotes").forEach(m=>{m.remove()});let y=a.createEl("input");return y.addClass("task-list-item-checkbox"),y.type="checkbox",this.status!=="Todo"&&(y.checked=!0,a.addClass("is-checked")),y.onClickEvent(m=>{m.preventDefault(),m.stopPropagation(),y.disabled=!0;let _=this.toggle();ms({originalTask:this,newTasks:_})}),a.prepend(y),a.setAttr("data-task",this.originalStatusCharacter.trim()),a.setAttr("data-line",t),y.setAttr("data-line",t),n!=null&&n.shortMode&&this.addTooltip({element:c,isFilenameUnique:i}),a})}toString(e){var i;e=e!=null?e:new Qr;let t=this.description;if(!e.hidePriority){let s="";this.priority==="1"?s=" "+Re.High:this.priority==="2"?s=" "+Re.Medium:this.priority==="4"&&(s=" "+Re.Low),t+=s}return!e.hideRecurrenceRule&&this.recurrence&&(t+=e.shortMode?" "+Mt:` ${Mt} ${this.recurrence.toText()}`),!e.hideStartDate&&this.startDate&&(t+=e.shortMode?" "+Ot:` ${Ot} ${this.startDate.format(D.dateFormat)}`),!e.hideScheduledDate&&this.scheduledDate&&(t+=e.shortMode?" "+Pt:` ${Pt} ${this.scheduledDate.format(D.dateFormat)}`),!e.hideDueDate&&this.dueDate&&(t+=e.shortMode?" "+At:` ${At} ${this.dueDate.format(D.dateFormat)}`),!e.hideDoneDate&&this.doneDate&&(t+=e.shortMode?" "+po:` ${po} ${this.doneDate.format(D.dateFormat)}`),t+=(i=this.blockLink)!=null?i:"",t}toFileLineString(){return`${this.indentation}- [${this.originalStatusCharacter}] ${this.toString()}`}toggle(){let e=this.status==="Todo"?"Done":"Todo",t=null,n=null;if(e!=="Todo"){let{setDoneDate:a}=ie();a&&(t=window.moment()),this.recurrence!==null&&(n=this.recurrence.next())}let i=new oe(Wt(Ye({},this),{status:e,doneDate:t,originalStatusCharacter:e==="Done"?"x":" "})),s=[];if(n!==null){let a=new oe(Wt(Ye(Ye({},this),n),{blockLink:""}));s.push(a)}return s.push(i),s}get urgency(){return this._urgency===null&&(this._urgency=jt.calculate(this)),this._urgency}get filename(){let e=this.path.match(/([^/]+)\.md$/);return e!==null?e[1]:null}getLinkText({isFilenameUnique:e}){let t;return e?t=this.filename:t="/"+this.path,t===null?null:(this.precedingHeader!==null&&this.precedingHeader!==t&&(t=t+" > "+this.precedingHeader),t)}static tasksListsIdentical(e,t){return e.length!==t.length?!1:e.every((n,i)=>n.identicalTo(t[i]))}identicalTo(e){let t=["status","description","path","indentation","sectionStart","sectionIndex","originalStatusCharacter","precedingHeader","priority","blockLink"];for(let s of t)if(this[s]!==e[s])return!1;if(this.tags.length!==e.tags.length||!this.tags.every(function(s,a){return s===e.tags[a]}))return!1;t=["startDate","scheduledDate","dueDate","doneDate"];for(let s of t){let a=this[s],o=e[s];if(Be.compareByDate(a,o)!==0)return!1}let n=this.recurrence,i=e.recurrence;return n===null&&i!==null||n!==null&&i===null?!1:!(n&&i&&!n.identicalTo(i))}addTooltip({element:e,isFilenameUnique:t}){e.addEventListener("mouseenter",()=>{let n=e.createDiv();n.addClasses(["tooltip","mod-right"]),this.recurrence&&n.createDiv().setText(`${Mt} ${this.recurrence.toText()}`),this.startDate&&n.createDiv().setText(oe.toTooltipDate({signifier:Ot,date:this.startDate})),this.scheduledDate&&n.createDiv().setText(oe.toTooltipDate({signifier:Pt,date:this.scheduledDate})),this.dueDate&&n.createDiv().setText(oe.toTooltipDate({signifier:At,date:this.dueDate})),this.doneDate&&n.createDiv().setText(oe.toTooltipDate({signifier:po,date:this.doneDate}));let i=this.getLinkText({isFilenameUnique:t});i&&n.createDiv().setText(`\u{1F517} ${i}`),e.addEventListener("mouseleave",()=>{n.remove()})})}static toTooltipDate({signifier:e,date:t}){return`${e} ${t.format(D.dateFormat)} (${t.from(window.moment().startOf("day"))})`}escapeRegExp(e){return e.replace(/([.*+?^${}()|[\]/\\])/g,"\\$1")}getDescriptionWithoutGlobalFilter(){let{globalFilter:e}=ie(),t=this.description;if(e.length===0)return t;let n=RegExp("(^|\\s)"+this.escapeRegExp(e)+"($|\\s)","ug");return this.description.search(n)>-1&&(t=t.replace(n,"$1$2").replace(" "," ").trim()),t}};var yr=class{constructor({metadataCache:e,vault:t,events:n}){this.metadataCache=e,this.metadataCacheEventReferences=[],this.vault=t,this.vaultEventReferences=[],this.events=n,this.eventsEventReferences=[],this.tasksMutex=new hs,this.state="Cold",this.tasks=[],this.loadedAfterFirstResolve=!1,this.subscribeToCache(),this.subscribeToVault(),this.subscribeToEvents(),this.loadVault()}unload(){for(let e of this.metadataCacheEventReferences)this.metadataCache.offref(e);for(let e of this.vaultEventReferences)this.vault.offref(e);for(let e of this.eventsEventReferences)this.events.off(e)}getTasks(){return this.tasks}getState(){return this.state}notifySubscribers(){this.events.triggerCacheUpdate({tasks:this.tasks,state:this.state})}subscribeToCache(){let e=this.metadataCache.on("resolved",()=>ne(this,null,function*(){this.loadedAfterFirstResolve||(this.loadedAfterFirstResolve=!0,this.loadVault())}));this.metadataCacheEventReferences.push(e);let t=this.metadataCache.on("changed",n=>{this.tasksMutex.runExclusive(()=>{this.indexFile(n)})});this.metadataCacheEventReferences.push(t)}subscribeToVault(){let e=this.vault.on("create",i=>{i instanceof Rs.TFile&&this.tasksMutex.runExclusive(()=>{this.indexFile(i)})});this.vaultEventReferences.push(e);let t=this.vault.on("delete",i=>{i instanceof Rs.TFile&&this.tasksMutex.runExclusive(()=>{this.tasks=this.tasks.filter(s=>s.path!==i.path),this.notifySubscribers()})});this.vaultEventReferences.push(t);let n=this.vault.on("rename",(i,s)=>{i instanceof Rs.TFile&&this.tasksMutex.runExclusive(()=>{this.tasks=this.tasks.map(a=>a.path===s?new oe(Wt(Ye({},a),{path:i.path})):a),this.notifySubscribers()})});this.vaultEventReferences.push(n)}subscribeToEvents(){let e=this.events.onRequestCacheUpdate(t=>{t({tasks:this.tasks,state:this.state})});this.eventsEventReferences.push(e)}loadVault(){return this.tasksMutex.runExclusive(()=>ne(this,null,function*(){this.state="Initializing",yield Promise.all(this.vault.getMarkdownFiles().map(e=>this.indexFile(e))),this.state="Warm",this.notifySubscribers()}))}indexFile(e){return ne(this,null,function*(){let t=this.metadataCache.getFileCache(e);if(t==null)return;let n=this.tasks.filter(a=>a.path===e.path),i=t.listItems,s=[];if(i!==void 0){let a=yield this.vault.cachedRead(e);s=yr.getTasksFromFileContent(a,i,t,e)}oe.tasksListsIdentical(n,s)||(this.getState()=="Warm"&&console.debug(`At least one task, its line number or its heading has changed in ${e.path}: triggering a refresh of all active Tasks blocks in Live Preview and Reading mode views.`),this.tasks=this.tasks.filter(a=>a.path!==e.path),this.tasks.push(...s),this.notifySubscribers())})}static getTasksFromFileContent(e,t,n,i){let s=[],a=e.split(` +`),o=null,u=0;for(let l of t)if(l.task!==void 0){if((o===null||o.position.end.line=e)return n;return null}static getPrecedingHeader(e,t){if(t===void 0)return null;let n=null;for(let i of t){if(i.position.start.line>e)return n;n=i.heading}return n}};var fd=require("obsidian");var c_=require("obsidian");function nn(){}function yo(r){return r()}function vp(){return Object.create(null)}function Sr(r){r.forEach(yo)}function Rp(r){return typeof r=="function"}function wp(r,e){return r!=r?e==e:r!==e||r&&typeof r=="object"||typeof r=="function"}function Dp(r){return Object.keys(r).length===0}var Mp=!1;function bT(){Mp=!0}function vT(){Mp=!1}function g(r,e){r.appendChild(e)}function go(r,e,t){r.insertBefore(e,t||null)}function Ps(r){r.parentNode.removeChild(r)}function k(r){return document.createElement(r)}function ET(r){return document.createElementNS("http://www.w3.org/2000/svg",r)}function gr(r){return document.createTextNode(r)}function B(){return gr(" ")}function Gt(r,e,t,n){return r.addEventListener(e,t,n),()=>r.removeEventListener(e,t,n)}function Op(r){return function(e){return e.preventDefault(),r.call(this,e)}}function S(r,e,t){t==null?r.removeAttribute(e):r.getAttribute(e)!==t&&r.setAttribute(e,t)}function RT(r){return Array.from(r.childNodes)}function Pp(r,e){e=""+e,r.wholeText!==e&&(r.data=e)}function yt(r,e){r.value=e==null?"":e}function _o(r,e){for(let t=0;t{let u=s.map(yo).filter(Rp);a?a.push(...u):Sr(u),r.$$.on_mount=[]}),o.forEach(Gn)}function Np(r,e){let t=r.$$;t.fragment!==null&&(Sr(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function NT(r,e){r.$$.dirty[0]===-1&&($n.push(r),MT(),r.$$.dirty.fill(0)),r.$$.dirty[e/31|0]|=1<{let y=p.length?p[0]:f;return l.ctx&&i(l.ctx[d],l.ctx[d]=y)&&(!l.skip_bound&&l.bound[d]&&l.bound[d](y),c&&NT(r,d)),f}):[],l.update(),c=!0,Sr(l.before_update),l.fragment=n?n(l.ctx):!1,e.target){if(e.hydrate){bT();let d=RT(e.target);l.fragment&&l.fragment.l(d),d.forEach(Ps)}else l.fragment&&l.fragment.c();e.intro&&AT(r.$$.fragment),kT(r,e.target,e.anchor,e.customElement),vT(),kp()}jn(u)}var CT;typeof HTMLElement=="function"&&(CT=class extends HTMLElement{constructor(){super(),this.attachShadow({mode:"open"})}connectedCallback(){let{on_mount:r}=this.$$;this.$$.on_disconnect=r.map(yo).filter(Rp);for(let e in this.$$.slotted)this.appendChild(this.$$.slotted[e])}attributeChangedCallback(r,e,t){this[r]=t}disconnectedCallback(){Sr(this.$$.on_disconnect)}$destroy(){Np(this,1),this.$destroy=nn}$on(r,e){let t=this.$$.callbacks[r]||(this.$$.callbacks[r]=[]);return t.push(e),()=>{let n=t.indexOf(e);n!==-1&&t.splice(n,1)}}$set(r){this.$$set&&!Dp(r)&&(this.$$.skip_bound=!0,this.$$set(r),this.$$.skip_bound=!1)}});var Os=class{$destroy(){Np(this,1),this.$destroy=nn}$on(e,t){let n=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return n.push(t),()=>{let i=n.indexOf(t);i!==-1&&n.splice(i,1)}}$set(e){this.$$set&&!Dp(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}};var Hi=ps(Ee());var ZP={td:"today",tm:"tomorrow",yd:"yesterday",tw:"this week",nw:"next week",weekend:"sat",we:"sat"};function vn(r){for(let[e,t]of Object.entries(ZP))r=r.replace(RegExp(`\\b${e}\\s`,"i"),t);return r}function XP(r){let e,t,n,i,s,a,o,u,l,c,d,f,p,y,m,_,A,I,C,z,re,fe,ee,x,le,pe,w,v,T,P,E,U,M,F,X,ue,se,ft,Le,ur,lr,pt,Ne,ht,Zr,Ke,ts,xd,Ft,Sd,Nn,Id,Ud,rs,Fd,qd,Wd,cr,ns,Ld,qt,Yd,Cn,$d,jd,is,Bd,Gd,Hd,ss,xn,as,zd,dr,Kd,Vd,Zd,Xr,Ar,os,Xd,fr,us,Qd,Qa,ls=r[0].status+"",Ja,Jd,cs,ef,ds,tf,rf,nf,eo,sf,fs,to,af;return{c(){e=k("div"),t=k("form"),n=k("div"),i=k("label"),i.textContent="Description",s=B(),a=k("input"),o=B(),u=k("hr"),l=B(),c=k("div"),d=k("label"),d.textContent="Priority",f=B(),p=k("select"),y=k("option"),y.textContent="None",m=k("option"),m.textContent=`${Re.High} High`,_=k("option"),_.textContent=`${Re.Medium} Medium`,A=k("option"),A.textContent=`${Re.Low} Low`,I=B(),C=k("hr"),z=B(),re=k("div"),fe=k("label"),fe.textContent="Recurrence",ee=B(),x=k("input"),le=B(),pe=k("code"),w=gr(Mt),v=B(),T=new xr(!1),P=B(),E=k("hr"),U=B(),M=k("div"),F=k("div"),X=k("label"),X.textContent="Due",ue=B(),se=k("input"),ft=B(),Le=k("code"),ur=gr(At),lr=B(),pt=new xr(!1),Ne=B(),ht=k("hr"),Zr=B(),Ke=k("div"),ts=k("label"),ts.textContent="Scheduled",xd=B(),Ft=k("input"),Sd=B(),Nn=k("code"),Id=gr(Pt),Ud=B(),rs=new xr(!1),Fd=B(),qd=k("hr"),Wd=B(),cr=k("div"),ns=k("label"),ns.textContent="Start",Ld=B(),qt=k("input"),Yd=B(),Cn=k("code"),$d=gr(Ot),jd=B(),is=new xr(!1),Bd=B(),Gd=k("hr"),Hd=B(),ss=k("div"),xn=k("div"),as=k("label"),as.textContent="Only future dates:",zd=B(),dr=k("input"),Kd=B(),Vd=k("hr"),Zd=B(),Xr=k("div"),Ar=k("div"),os=k("label"),os.textContent="Status:",Xd=B(),fr=k("input"),Qd=B(),Qa=k("code"),Ja=gr(ls),Jd=B(),cs=k("div"),ef=gr(`Done on: + `),ds=k("code"),tf=B(),rf=k("hr"),nf=B(),eo=k("div"),sf=B(),fs=k("div"),fs.innerHTML='',S(i,"for","description"),S(a,"id","description"),S(a,"type","text"),S(a,"class","tasks-modal-description"),S(a,"placeholder","Take out the trash"),S(n,"class","tasks-modal-section"),S(d,"for","priority"),y.__value="none",y.value=y.__value,m.__value="high",m.value=m.__value,_.__value="medium",_.value=_.__value,A.__value="low",A.value=A.__value,S(p,"id","priority"),S(p,"class","dropdown"),r[0].priority===void 0&&Gn(()=>r[14].call(p)),S(c,"class","tasks-modal-section"),S(fe,"for","recurrence"),S(x,"id","description"),S(x,"type","text"),S(x,"placeholder","Try 'every 2 weeks on Thursday'."),T.a=null,S(re,"class","tasks-modal-section"),S(X,"for","due"),S(se,"id","due"),S(se,"type","text"),S(se,"placeholder",ld),pt.a=null,S(F,"class","tasks-modal-date"),S(ts,"for","scheduled"),S(Ft,"id","scheduled"),S(Ft,"type","text"),S(Ft,"placeholder",ld),rs.a=null,S(Ke,"class","tasks-modal-date"),S(ns,"for","start"),S(qt,"id","start"),S(qt,"type","text"),S(qt,"placeholder",ld),is.a=null,S(cr,"class","tasks-modal-date"),S(as,"for","forwardOnly"),S(dr,"id","forwardOnly"),S(dr,"type","checkbox"),S(dr,"class","task-list-item-checkbox tasks-modal-checkbox"),S(ss,"class","tasks-modal-date"),S(M,"class","tasks-modal-section"),S(os,"for","status"),S(fr,"id","status"),S(fr,"type","checkbox"),S(fr,"class","task-list-item-checkbox tasks-modal-checkbox"),fr.checked=us=r[0].status==="Done",fr.disabled=!0,S(Xr,"class","tasks-modal-section"),S(eo,"class","tasks-modal-section"),S(fs,"class","tasks-modal-section"),S(e,"class","tasks-modal")},m(de,Ue){go(de,e,Ue),g(e,t),g(t,n),g(n,i),g(n,s),g(n,a),yt(a,r[0].description),r[13](a),g(t,o),g(t,u),g(t,l),g(t,c),g(c,d),g(c,f),g(c,p),g(p,y),g(p,m),g(p,_),g(p,A),_o(p,r[0].priority),g(t,I),g(t,C),g(t,z),g(t,re),g(re,fe),g(re,ee),g(re,x),yt(x,r[0].recurrenceRule),g(re,le),g(re,pe),g(pe,w),g(pe,v),T.m(r[5],pe),g(t,P),g(t,E),g(t,U),g(t,M),g(M,F),g(F,X),g(F,ue),g(F,se),yt(se,r[0].dueDate),g(F,ft),g(F,Le),g(Le,ur),g(Le,lr),pt.m(r[4],Le),g(M,Ne),g(M,ht),g(M,Zr),g(M,Ke),g(Ke,ts),g(Ke,xd),g(Ke,Ft),yt(Ft,r[0].scheduledDate),g(Ke,Sd),g(Ke,Nn),g(Nn,Id),g(Nn,Ud),rs.m(r[3],Nn),g(M,Fd),g(M,qd),g(M,Wd),g(M,cr),g(cr,ns),g(cr,Ld),g(cr,qt),yt(qt,r[0].startDate),g(cr,Yd),g(cr,Cn),g(Cn,$d),g(Cn,jd),is.m(r[2],Cn),g(M,Bd),g(M,Gd),g(M,Hd),g(M,ss),g(ss,xn),g(xn,as),g(xn,zd),g(xn,dr),dr.checked=r[0].forwardOnly,g(t,Kd),g(t,Vd),g(t,Zd),g(t,Xr),g(Xr,Ar),g(Ar,os),g(Ar,Xd),g(Ar,fr),g(Ar,Qd),g(Ar,Qa),g(Qa,Ja),g(Xr,Jd),g(Xr,cs),g(cs,ef),g(cs,ds),ds.innerHTML=r[6],g(t,tf),g(t,rf),g(t,nf),g(t,eo),g(t,sf),g(t,fs),to||(af=[Gt(a,"input",r[12]),Gt(p,"change",r[14]),Gt(x,"input",r[15]),Gt(se,"input",r[16]),Gt(Ft,"input",r[17]),Gt(qt,"input",r[18]),Gt(dr,"change",r[19]),Gt(t,"submit",Op(r[7]))],to=!0)},p(de,[Ue]){Ue&1&&a.value!==de[0].description&&yt(a,de[0].description),Ue&1&&_o(p,de[0].priority),Ue&1&&x.value!==de[0].recurrenceRule&&yt(x,de[0].recurrenceRule),Ue&32&&T.p(de[5]),Ue&1&&se.value!==de[0].dueDate&&yt(se,de[0].dueDate),Ue&16&&pt.p(de[4]),Ue&1&&Ft.value!==de[0].scheduledDate&&yt(Ft,de[0].scheduledDate),Ue&8&&rs.p(de[3]),Ue&1&&qt.value!==de[0].startDate&&yt(qt,de[0].startDate),Ue&4&&is.p(de[2]),Ue&1&&(dr.checked=de[0].forwardOnly),Ue&1&&us!==(us=de[0].status==="Done")&&(fr.checked=us),Ue&1&&ls!==(ls=de[0].status+"")&&Pp(Ja,ls),Ue&64&&(ds.innerHTML=de[6])},i:nn,o:nn,d(de){de&&Ps(e),r[13](null),to=!1,Sr(af)}}}var ld="Try 'Monday' or 'tomorrow', or [td|tm|yd|tw|nw|we] then space.";function QP(r,e,t){var n,i;let{task:s}=e,{onSubmit:a}=e,o,u={description:"",status:"Todo",priority:"none",recurrenceRule:"",startDate:"",scheduledDate:"",dueDate:"",doneDate:"",forwardOnly:!0},l="",c="",d="",f="",p="",y=!1;function m(le,pe,w=void 0){if(!pe)return`no ${le} date`;let v=Hi.parseDate(pe,w,{forwardDate:w!=null});return v!==null?window.moment(v).format("YYYY-MM-DD"):`invalid ${le} date`}To(()=>{let{globalFilter:le}=ie(),pe=s.getDescriptionWithoutGlobalFilter();(pe!=s.description||pe.indexOf(le)==-1)&&(y=!0);let w="none";s.priority==="4"?w="low":s.priority==="2"?w="medium":s.priority==="1"&&(w="high"),t(0,u={description:pe,status:s.status,priority:w,recurrenceRule:s.recurrence?s.recurrence.toText():"",startDate:s.startDate?s.startDate.format("YYYY-MM-DD"):"",scheduledDate:s.scheduledDate?s.scheduledDate.format("YYYY-MM-DD"):"",dueDate:s.dueDate?s.dueDate.format("YYYY-MM-DD"):"",doneDate:s.doneDate?s.doneDate.format("YYYY-MM-DD"):"",forwardOnly:!0}),setTimeout(()=>{o.focus()},10)});let _=()=>{let{globalFilter:le}=ie(),pe=u.description.trim();y&&(pe=le+" "+pe);let w=null,v=Hi.parseDate(u.startDate,new Date,{forwardDate:u.forwardOnly});v!==null&&(w=window.moment(v));let T=null,P=Hi.parseDate(u.scheduledDate,new Date,{forwardDate:u.forwardOnly});P!==null&&(T=window.moment(P));let E=null,U=Hi.parseDate(u.dueDate,new Date,{forwardDate:u.forwardOnly});U!==null&&(E=window.moment(U));let M=null;u.recurrenceRule&&(M=mt.fromText({recurrenceRuleText:u.recurrenceRule,startDate:w,scheduledDate:T,dueDate:E}));let F;switch(u.priority){case"low":F="4";break;case"medium":F="2";break;case"high":F="1";break;default:F="3"}let X=new oe(Object.assign(Object.assign({},s),{description:pe,status:u.status,priority:F,recurrence:M,startDate:w,scheduledDate:T,dueDate:E,doneDate:window.moment(u.doneDate,"YYYY-MM-DD").isValid()?window.moment(u.doneDate,"YYYY-MM-DD"):null}));a([X])};function A(){u.description=this.value,t(0,u)}function I(le){Ms[le?"unshift":"push"](()=>{o=le,t(1,o)})}function C(){u.priority=Ap(this),t(0,u)}function z(){u.recurrenceRule=this.value,t(0,u)}function re(){u.dueDate=this.value,t(0,u)}function fe(){u.scheduledDate=this.value,t(0,u)}function ee(){u.startDate=this.value,t(0,u)}function x(){u.forwardOnly=this.checked,t(0,u)}return r.$$set=le=>{"task"in le&&t(8,s=le.task),"onSubmit"in le&&t(9,a=le.onSubmit)},r.$$.update=()=>{if(r.$$.dirty&1){e:t(0,u.startDate=vn(u.startDate),u),t(2,l=m("start",u.startDate,u.forwardOnly?new Date:void 0))}if(r.$$.dirty&1){e:t(0,u.scheduledDate=vn(u.scheduledDate),u),t(3,c=m("scheduled",u.scheduledDate,u.forwardOnly?new Date:void 0))}if(r.$$.dirty&1){e:t(0,u.dueDate=vn(u.dueDate),u),t(4,d=m("due",u.dueDate,u.forwardOnly?new Date:void 0))}if(r.$$.dirty&3073){e:u.recurrenceRule?t(5,f=t(11,i=t(10,n=mt.fromText({recurrenceRuleText:u.recurrenceRule,startDate:null,scheduledDate:null,dueDate:null}))===null||n===void 0?void 0:n.toText())!==null&&i!==void 0?i:"invalid recurrence rule"):t(5,f="not recurring")}if(r.$$.dirty&1){e:t(6,p=m("done",u.doneDate))}},[u,o,l,c,d,f,p,_,s,a,n,i,A,I,C,z,re,fe,ee,x]}var cd=class extends Os{constructor(e){super(),Cp(this,e,QP,XP,wp,{task:8,onSubmit:9})}},l_=cd;var En=class extends c_.Modal{constructor({app:t,task:n,onSubmit:i}){super(t);this.task=n,this.onSubmit=s=>{i(s),this.close()}}onOpen(){this.titleEl.setText("Create or edit Task");let{contentEl:t}=this;new l_({target:t,props:{task:this.task,onSubmit:this.onSubmit}})}onClose(){let{contentEl:t}=this;t.empty()}};var d_=(r,e,t,n)=>{var d;if(r)return t instanceof fd.MarkdownView;if(!(t instanceof fd.MarkdownView))return;let i=(d=t.file)==null?void 0:d.path;if(i===void 0)return;let a=e.getCursor().line,o=e.getLine(a),u=JP({line:o,path:i}),l=f=>{let p=f.map(y=>y.toFileLineString()).join(` +`);e.setLine(a,p)};new En({app:n,task:u,onSubmit:l}).open()},JP=({line:r,path:e})=>{var c;let t=oe.fromLine({line:r,path:e,sectionStart:0,sectionIndex:0,precedingHeader:null});if(t!==null)return t;let n=r.match(D.nonTaskRegex);if(n===null)return console.error("Tasks: Cannot create task on line:",r),new oe({status:"Todo",description:"",path:e,indentation:"",originalStatusCharacter:" ",priority:"3",startDate:null,scheduledDate:null,dueDate:null,doneDate:null,recurrence:null,sectionStart:0,sectionIndex:0,precedingHeader:null,blockLink:"",tags:[]});let i=n[1],s=(c=n[3])!=null?c:" ",a=s===" "?"Todo":"Done",o=n[4],u=r.match(D.blockLinkRegex),l=u!==null?u[0]:"";return l!==""&&(o=o.replace(D.blockLinkRegex,"")),new oe({status:a,description:o,path:e,indentation:i,originalStatusCharacter:s,blockLink:l,priority:"3",startDate:null,scheduledDate:null,dueDate:null,doneDate:null,recurrence:null,sectionStart:0,sectionIndex:0,precedingHeader:null,tags:[]})};var pd=require("obsidian");var f_=(r,e,t)=>{var u;if(r)return t instanceof pd.MarkdownView;if(!(t instanceof pd.MarkdownView))return;let n=(u=t.file)==null?void 0:u.path;if(n===void 0)return;let i=e.getCursor(),s=i.line,a=e.getLine(s),o=eA(a,n);e.setLine(s,o),e.setCursor({line:i.line,ch:rA(i.ch,a,o)})},eA=(r,e)=>{let t=r,n=oe.fromLine({line:r,path:e,sectionStart:0,sectionIndex:0,precedingHeader:null});if(n!==null)t=tA(n);else{let i=r.match(D.taskRegex);if(i!==null){let a=i[2].toLowerCase()===" "?"x":" ";t=r.replace(D.taskRegex,`$1- [${a}] $3`)}else D.listItemRegex.test(r)?t=r.replace(D.listItemRegex,"$1$2 [ ]"):t=r.replace(D.indentationRegex,"$1- ")}return t},tA=r=>r.toggle().map(n=>n.toFileLineString()).join(` +`),rA=(r,e,t)=>{let n=t.length;if(n<=e.length)return r>=t.length?n:r;let i=13;if(t.match(D.doneDateRegex)&&n-e.length>=i&&(n-=i),n>=2*e.length&&t.search(`.+ +.+`)!==-1)return r+n-e.length;let s=t.search(/[-*]/);return rd_(t,n,i,this.app)}),e.addCommand({id:"toggle-done",name:"Toggle task done",icon:"check-in-circle",editorCheckCallback:f_})}};var va=class{constructor({obsidianEvents:e}){this.obsidianEvents=e}onCacheUpdate(e){return this.obsidianEvents.on("obsidian-tasks-plugin:cache-update",e)}triggerCacheUpdate(e){this.obsidianEvents.trigger("obsidian-tasks-plugin:cache-update",e)}onRequestCacheUpdate(e){return this.obsidianEvents.on("obsidian-tasks-plugin:request-cache-update",e)}triggerRequestCacheUpdate(e){this.obsidianEvents.trigger("obsidian-tasks-plugin:request-cache-update",e)}off(e){this.obsidianEvents.offref(e)}};var Ea=class{constructor({plugin:e}){this.markdownPostProcessor=this._markdownPostProcessor.bind(this);e.registerMarkdownPostProcessor(this._markdownPostProcessor.bind(this))}_markdownPostProcessor(e,t){return ne(this,null,function*(){var c;let{globalFilter:n}=ie(),i=e.findAll(".task-list-item").filter(d=>{var y;let f=(y=d.textContent)==null?void 0:y.split(` `);if(f===void 0)return!1;let p=null;for(let m=0;me_.ViewPlugin.fromClass(ud),ud=class{constructor(e){this.view=e,this.handleClickEvent=this.handleClickEvent.bind(this),this.view.dom.addEventListener("click",this.handleClickEvent)}destroy(){this.view.dom.removeEventListener("click",this.handleClickEvent)}handleClickEvent(e){let{target:t}=e;if(!t||!(t instanceof HTMLInputElement)||t.type!=="checkbox")return!1;let n=t.closest("ul.plugin-tasks-query-result, div.callout-content");if(n){if(n.matches("div.callout-content")){let f=`obsidian-tasks-plugin warning: Tasks cannot add or remove completion dates or make the next copy of a recurring task for tasks written inside a callout when you click their checkboxes in Live Preview. -If you wanted Tasks to do these things, please undo your change, then either click the line of the task and use the "Toggle Task Done" command, or switch to Reading View to click the checkbox.`;console.warn(f),new t_.Notice(f,45e3)}return!1}let{state:i}=this.view,s=this.view.posAtDOM(t),a=i.doc.lineAt(s),o=oe.fromLine({line:a.text,path:"",sectionStart:0,sectionIndex:0,precedingHeader:null});if(console.debug(`Live Preview Extension: toggle called. Position: ${s} Line: ${a.text}`),o===null)return!1;e.preventDefault();let l=o.toggle().map(f=>f.toFileLineString()).join(i.lineBreak),c=i.update({changes:{from:a.from,to:a.to,insert:l}});this.view.dispatch(c);let d=t.checked;return setTimeout(()=>{t.checked=d},1),!0}};var $a=require("obsidian");var En=class{matchesAnyOf(e){return e.some(t=>this.matches(t))}};var Gr=class extends En{constructor(t){super();this.stringToFind=t}matches(t){return Gr.stringIncludesCaseInsensitive(t,this.stringToFind)}static stringIncludesCaseInsensitive(t,n){return t.toLocaleLowerCase().includes(n.toLocaleLowerCase())}};var Rn=class extends En{constructor(t){super();this.regex=t}static validateAndConstruct(t){let n=/\/((?![*+?])(?:[^\r\n[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*])+)\/((?:g(?:im?|mi?)?|i(?:gm?|mg?)?|m(?:gi?|ig?)?)?)/,i=t.match(n);if(i!==null){let s=new RegExp(i[1],i[2]);return new Rn(s)}else return null}matches(t){return t.match(this.regex)!==null}};var ve=class{canCreateFilterForLine(e){return ve.lineMatchesFilter(this.filterRegExp(),e)}static lineMatchesFilter(e,t){return e?e.test(t):!1}static getMatch(e,t){return e?t.match(e):null}};var le=class{static fromFilter(e){let t=new le;return t.filter=e,t}static fromError(e){let t=new le;return t.error=e,t}};var dt=class extends ve{createFilterOrErrorMessage(e){let t=ve.getMatch(this.filterRegExp(),e);if(t===null)return le.fromError(`do not understand query filter (${this.fieldName()})`);let[n,i,s]=t,a=null;if(i.includes("include"))a=new Gr(s);else if(i.includes("regex")&&(a=Rn.validateAndConstruct(s),a===null))return le.fromError(`cannot parse regex (${this.fieldName()}); check your leading and trailing slashes for your query`);if(a===null)return le.fromError(`do not understand query filter (${this.fieldName()})`);let o=i.match(/not/)!==null;return le.fromFilter(this.getFilter(a,o))}static stringIncludesCaseInsensitive(e,t){return Gr.stringIncludesCaseInsensitive(e,t)}fieldPattern(){return this.fieldName()}filterOperatorPattern(){return"includes|does not include|regex matches|regex does not match"}filterRegExp(){return new RegExp(`^(?:${this.fieldPattern()}) (${this.filterOperatorPattern()}) (.*)`)}getFilter(e,t){return n=>{let i=e.matches(this.value(n));return t?!i:i}}};var ga=class extends dt{fieldName(){return"description"}value(e){let t=ie().globalFilter;return e.description.replace(t,"").trim()}};var n_=os(Ee()),er=class{static parseDate(e,t=!1){return window.moment(n_.parseDate(e,void 0,{forwardDate:t})).startOf("day")}};var St=class extends ve{constructor(){super(...arguments);this.instructionForFieldPresence=`has ${this.fieldName()} date`;this.instructionForFieldAbsence=`no ${this.fieldName()} date`}canCreateFilterForLine(t){return t===this.instructionForFieldPresence||t===this.instructionForFieldAbsence?!0:super.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){let n=new le;if(t===this.instructionForFieldPresence)return n.filter=s=>this.date(s)!==null,n;if(t===this.instructionForFieldAbsence)return n.filter=s=>this.date(s)===null,n;let i=ve.getMatch(this.filterRegExp(),t);if(i!==null){let s=er.parseDate(i[2]);s.isValid()?i[1]==="before"?n.filter=a=>{let o=this.date(a);return o?o.isBefore(s):this.filterResultIfFieldMissing()}:i[1]==="after"?n.filter=a=>{let o=this.date(a);return o?o.isAfter(s):this.filterResultIfFieldMissing()}:n.filter=a=>{let o=this.date(a);return o?o.isSame(s):this.filterResultIfFieldMissing()}:n.error="do not understand "+this.fieldName()+" date"}else n.error="do not understand query filter ("+this.fieldName()+" date)";return n}};var ld=class extends St{filterRegExp(){return ld.doneRegexp}fieldName(){return"done"}date(e){return e.doneDate}filterResultIfFieldMissing(){return!1}},Gi=ld;Gi.doneRegexp=/^done (before|after|on)? ?(.*)/;var cd=class extends St{filterRegExp(){return cd.dueRegexp}fieldName(){return"due"}date(e){return e.dueDate}filterResultIfFieldMissing(){return!1}},Hi=cd;Hi.dueRegexp=/^due (before|after|on)? ?(.*)/;var _a=class{constructor(e,t){this._instruction=e,this._filter=t}canCreateFilterForLine(e){return e==this._instruction}createFilterOrErrorMessage(e){let t=new le;return e===this._instruction?(t.filter=this._filter,t):(t.error=`do not understand filter: ${e}`,t)}};var Ta=class{constructor(){this._filters=[]}add(e,t){this._filters.push(new _a(e,t))}canCreateFilterForLine(e){for(let t of this._filters)if(t.canCreateFilterForLine(e))return!0;return!1}createFilterOrErrorMessage(e){for(let n of this._filters){let i=n.createFilterOrErrorMessage(e);if(i.error===void 0)return i}let t=new le;return t.error=`do not understand filter: ${e}`,t}};var Rr=class extends ve{constructor(){super(...arguments);this._filters=new Ta}canCreateFilterForLine(t){return this._filters.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){return this._filters.createFilterOrErrorMessage(t)}filterRegExp(){return null}};var ba=class extends Rr{constructor(){super(),this._filters.add("exclude sub-items",e=>{if(e.indentation==="")return!0;let t=e.indentation.lastIndexOf(">");return t===-1?!1:/^ ?$/.test(e.indentation.slice(t+1))})}fieldName(){return"exclude"}};var va=class extends dt{fieldName(){return"heading"}value(e){return e.precedingHeader?e.precedingHeader:""}};var Ea=class extends dt{fieldName(){return"path"}value(e){return e.path}};var dd=class extends ve{createFilterOrErrorMessage(e){let t=new le,n=ve.getMatch(this.filterRegExp(),e);if(n!==null){let i=n[3],s=null;switch(i){case"low":s="4";break;case"none":s="3";break;case"medium":s="2";break;case"high":s="1";break}if(s===null)return t.error="do not understand priority",t;let a;n[2]==="above"?a=o=>o.priority?o.priority.localeCompare(s)<0:!1:n[2]==="below"?a=o=>o.priority?o.priority.localeCompare(s)>0:!1:a=o=>o.priority?o.priority===s:!1,t.filter=a}else t.error="do not understand query filter (priority)";return t}fieldName(){return"priority"}filterRegExp(){return dd.priorityRegexp}},zi=dd;zi.priorityRegexp=/^priority (is )?(above|below)? ?(low|none|medium|high)/;var fd=class extends St{filterRegExp(){return fd.scheduledRegexp}fieldName(){return"scheduled"}date(e){return e.scheduledDate}filterResultIfFieldMissing(){return!1}},Ki=fd;Ki.scheduledRegexp=/^scheduled (before|after|on)? ?(.*)/;var pd=class extends St{filterRegExp(){return pd.startRegexp}fieldName(){return"start"}date(e){return e.startDate}filterResultIfFieldMissing(){return!0}},Vi=pd;Vi.startRegexp=/^starts (before|after|on)? ?(.*)/;var wr=class extends ve{canCreateFilterForLine(e){return e===wr.instructionForFieldPresence||e===wr.instructionForFieldAbsence?!0:super.canCreateFilterForLine(e)}createFilterOrErrorMessage(e){let t=new le;if(e===wr.instructionForFieldPresence){let i=new le;return i.filter=s=>this.dates(s).some(a=>a!==null),i}if(e===wr.instructionForFieldAbsence){let i=new le;return i.filter=s=>!this.dates(s).some(a=>a!==null),i}let n=ve.getMatch(this.filterRegExp(),e);if(n!==null){let i=er.parseDate(n[2]);i.isValid()?n[1]==="before"?t.filter=s=>this.dates(s).some(a=>a&&a.isBefore(i)):n[1]==="after"?t.filter=s=>this.dates(s).some(a=>a&&a.isAfter(i)):t.filter=s=>this.dates(s).some(a=>a&&a.isSame(i)):t.error="do not understand happens date"}else t.error="do not understand query filter (happens date)";return t}earliestDate(e){return new wr().dates(e).sort(Ge.compareByDate)[0]}filterRegExp(){return wr.happensRegexp}dates(e){return Array.of(e.startDate,e.scheduledDate,e.dueDate)}fieldName(){return"happens"}},tr=wr;tr.happensRegexp=/^happens (before|after|on)? ?(.*)/,tr.instructionForFieldPresence="has happens date",tr.instructionForFieldAbsence="no happens date";var Ra=class extends Rr{constructor(){super(),this._filters.add("is recurring",e=>e.recurrence!==null),this._filters.add("is not recurring",e=>e.recurrence===null)}fieldName(){return"recurring"}};var wa=class extends Rr{constructor(){super(),this._filters.add("done",e=>e.status==="Done"),this._filters.add("not done",e=>e.status!=="Done")}fieldName(){return"status"}};var Da=class extends dt{fieldNamePlural(){return this.fieldNameSingular()+"s"}fieldName(){return`${this.fieldNameSingular()}/${this.fieldNamePlural()}`}fieldPattern(){return`${this.fieldNameSingular()}|${this.fieldNamePlural()}`}filterOperatorPattern(){return`${super.filterOperatorPattern()}|include|do not include`}value(e){return this.values(e).join(", ")}getFilter(e,t){return n=>{let i=e.matchesAnyOf(this.values(n));return t?!i:i}}};var Ma=class extends Da{fieldNameSingular(){return"tag"}values(e){return e.tags}};var y_=os(m_());var ka=class extends ve{constructor(){super(...arguments);this.basicBooleanRegexp=/(.*(AND|OR|XOR|NOT)\s*[("].*|\(.+\))/g;this.supportedOperators=["AND","OR","XOR","NOT"];this.subFields={}}filterRegExp(){return this.basicBooleanRegexp}createFilterOrErrorMessage(t){return this.parseLine(t)}fieldName(){return"boolean query"}parseLine(t){let n=new le;if(t.length===0)return n.error="empty line",n;let i=this.preprocessExpression(t);try{let s=(0,y_.parse)(i);for(let a of s)if(a.name==="IDENTIFIER"&&a.value){let o=a.value.trim();if(!(o in this.subFields)){let u=Na(o);if(u===null)return n.error=`couldn't parse sub-expression '${o}'`,n;if(u.error)return n.error=`couldn't parse sub-expression '${o}': ${u.error}`,n;u.filter&&(this.subFields[o]=u.filter)}}else if(a.name==="OPERATOR"){if(a.value==null)return n.error="empty operator in boolean query",n;if(!this.supportedOperators.includes(a.value))return n.error=`unknown boolean operator '${a.value}'`,n}return n.filter=a=>this.filterTaskWithParsedQuery(a,s),n}catch(s){let a=s instanceof Error?s.message:"unknown error type";return n.error=`malformed boolean query -- ${a} (check the documentation for guidelines)`,n}return n}preprocessExpression(t){return t.replace(/\(([^()]+)\)/g,'("$1")')}filterTaskWithParsedQuery(t,n){let i=o=>o==="true",s=o=>o?"true":"false",a=[];for(let o of n)if(o.name==="IDENTIFIER"){if(o.value==null)throw Error("null token value");let u=this.subFields[o.value.trim()],l=u(t);a.push(s(l))}else if(o.name==="OPERATOR")if(o.value==="NOT"){let u=i(a.pop());a.push(s(!u))}else if(o.value==="OR"){let u=i(a.pop()),l=i(a.pop());a.push(s(u||l))}else if(o.value==="AND"){let u=i(a.pop()),l=i(a.pop());a.push(s(u&&l))}else if(o.value==="XOR"){let u=i(a.pop()),l=i(a.pop());a.push(s(u&&!l||!u&&l))}else throw Error("Unsupported operator: "+o.value);else throw Error("Unsupported token type: "+o);return i(a[0])}};var Ca=class extends dt{fieldName(){return"filename"}value(e){let t=e.filename;return t===null?"":t+".md"}};var QO=[()=>new wa,()=>new Ra,()=>new zi,()=>new tr,()=>new Vi,()=>new Ki,()=>new Hi,()=>new Gi,()=>new Ea,()=>new ga,()=>new Ma,()=>new va,()=>new ba,()=>new ka,()=>new Ca];function Na(r){for(let e of QO){let t=e();if(t.canCreateFilterForLine(r))return t.createFilterOrErrorMessage(r)}return null}var xa=class{constructor(e,t){this.nestingLevel=e,this.name=t}};var Sa=class{constructor(e){this.lastHeadingAtLevel=new Array;let n=e.keys().next().value.length;for(let i=0;it.set(o,a)),e.pop();return t}};var Ua=class extends Map{},Fa=class extends Ia{},qa=class{constructor(e,t){this.groups=new Ua;let n=this.buildGroupingTree(e,t);this.groups=n.generateAllPaths(),this.groups=this.getSortedGroups()}buildGroupingTree(e,t){let n=new Fa(t),i=[n];for(let s of e){let a=[];for(let o of i)for(let u of o.values){let l=Mr.getGroupNamesForTask(s.property,u);for(let c of l){let d=o.children.get(c);d===void 0&&(d=new Fa([]),o.children.set(c,d),a.push(d)),d.values.push(u)}}i=a}return n}getSortedGroups(){return new Ua([...this.groups.entries()].sort())}};var Wa=class{constructor(e,t,n){this.groups=e,this.groupHeadings=t,this.tasks=n}tasksAsStringOfLines(){let e="";for(let t of this.tasks)e+=t.toFileLineString()+` +`),u=0,l=[];for(let d=a.lineStart;d<=a.lineEnd;d++){let f=o[d];if(f===void 0)continue;let p=oe.fromLine({line:f,path:s,sectionStart:a.lineStart,sectionIndex:u,precedingHeader:null});p!==null&&(l.push(p),u++)}for(let d=0;dp_.ViewPlugin.fromClass(hd),hd=class{constructor(e){this.view=e,this.handleClickEvent=this.handleClickEvent.bind(this),this.view.dom.addEventListener("click",this.handleClickEvent)}destroy(){this.view.dom.removeEventListener("click",this.handleClickEvent)}handleClickEvent(e){let{target:t}=e;if(!t||!(t instanceof HTMLInputElement)||t.type!=="checkbox")return!1;let n=t.closest("ul.plugin-tasks-query-result, div.callout-content");if(n){if(n.matches("div.callout-content")){let f=`obsidian-tasks-plugin warning: Tasks cannot add or remove completion dates or make the next copy of a recurring task for tasks written inside a callout when you click their checkboxes in Live Preview. +If you wanted Tasks to do these things, please undo your change, then either click the line of the task and use the "Toggle Task Done" command, or switch to Reading View to click the checkbox.`;console.warn(f),new h_.Notice(f,45e3)}return!1}let{state:i}=this.view,s=this.view.posAtDOM(t),a=i.doc.lineAt(s),o=oe.fromLine({line:a.text,path:"",sectionStart:0,sectionIndex:0,precedingHeader:null});if(console.debug(`Live Preview Extension: toggle called. Position: ${s} Line: ${a.text}`),o===null)return!1;e.preventDefault();let l=o.toggle().map(f=>f.toFileLineString()).join(i.lineBreak),c=i.update({changes:{from:a.from,to:a.to,insert:l}});this.view.dispatch(c);let d=t.checked;return setTimeout(()=>{t.checked=d},1),!0}};var Ka=require("obsidian");var Rn=class{matchesAnyOf(e){return e.some(t=>this.matches(t))}};var Hr=class extends Rn{constructor(t){super();this.stringToFind=t}matches(t){return Hr.stringIncludesCaseInsensitive(t,this.stringToFind)}static stringIncludesCaseInsensitive(t,n){return t.toLocaleLowerCase().includes(n.toLocaleLowerCase())}};var wn=class extends Rn{constructor(t){super();this.regex=t}static validateAndConstruct(t){let n=/\/((?![*+?])(?:[^\r\n[/\\]|\\.|\[(?:[^\r\n\]\\]|\\.)*])+)\/((?:g(?:im?|mi?)?|i(?:gm?|mg?)?|m(?:gi?|ig?)?)?)/,i=t.match(n);if(i!==null){let s=new RegExp(i[1],i[2]);return new wn(s)}else return null}matches(t){return t.match(this.regex)!==null}};var ve=class{canCreateFilterForLine(e){return ve.lineMatchesFilter(this.filterRegExp(),e)}static lineMatchesFilter(e,t){return e?e.test(t):!1}static getMatch(e,t){return e?t.match(e):null}};var ce=class{static fromFilter(e){let t=new ce;return t.filter=e,t}static fromError(e){let t=new ce;return t.error=e,t}};var dt=class extends ve{createFilterOrErrorMessage(e){let t=ve.getMatch(this.filterRegExp(),e);if(t===null)return ce.fromError(`do not understand query filter (${this.fieldName()})`);let[n,i,s]=t,a=null;if(i.includes("include"))a=new Hr(s);else if(i.includes("regex")&&(a=wn.validateAndConstruct(s),a===null))return ce.fromError(`cannot parse regex (${this.fieldName()}); check your leading and trailing slashes for your query`);if(a===null)return ce.fromError(`do not understand query filter (${this.fieldName()})`);let o=i.match(/not/)!==null;return ce.fromFilter(this.getFilter(a,o))}static stringIncludesCaseInsensitive(e,t){return Hr.stringIncludesCaseInsensitive(e,t)}fieldPattern(){return this.fieldName()}filterOperatorPattern(){return"includes|does not include|regex matches|regex does not match"}filterRegExp(){return new RegExp(`^(?:${this.fieldPattern()}) (${this.filterOperatorPattern()}) (.*)`)}getFilter(e,t){return n=>{let i=e.matches(this.value(n));return t?!i:i}}};var Ra=class extends dt{fieldName(){return"description"}value(e){let t=ie().globalFilter;return e.description.replace(t,"").trim()}};var y_=ps(Ee()),tr=class{static parseDate(e,t=!1){return window.moment(y_.parseDate(e,void 0,{forwardDate:t})).startOf("day")}};var It=class extends ve{constructor(){super(...arguments);this.instructionForFieldPresence=`has ${this.fieldName()} date`;this.instructionForFieldAbsence=`no ${this.fieldName()} date`}canCreateFilterForLine(t){return t===this.instructionForFieldPresence||t===this.instructionForFieldAbsence?!0:super.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){let n=new ce;if(t===this.instructionForFieldPresence)return n.filter=s=>this.date(s)!==null,n;if(t===this.instructionForFieldAbsence)return n.filter=s=>this.date(s)===null,n;let i=ve.getMatch(this.filterRegExp(),t);if(i!==null){let s=tr.parseDate(i[2]);s.isValid()?i[1]==="before"?n.filter=a=>{let o=this.date(a);return o?o.isBefore(s):this.filterResultIfFieldMissing()}:i[1]==="after"?n.filter=a=>{let o=this.date(a);return o?o.isAfter(s):this.filterResultIfFieldMissing()}:n.filter=a=>{let o=this.date(a);return o?o.isSame(s):this.filterResultIfFieldMissing()}:n.error="do not understand "+this.fieldName()+" date"}else n.error="do not understand query filter ("+this.fieldName()+" date)";return n}};var md=class extends It{filterRegExp(){return md.doneRegexp}fieldName(){return"done"}date(e){return e.doneDate}filterResultIfFieldMissing(){return!1}},zi=md;zi.doneRegexp=/^done (before|after|on)? ?(.*)/;var yd=class extends It{filterRegExp(){return yd.dueRegexp}fieldName(){return"due"}date(e){return e.dueDate}filterResultIfFieldMissing(){return!1}},Ki=yd;Ki.dueRegexp=/^due (before|after|on)? ?(.*)/;var wa=class{constructor(e,t){this._instruction=e,this._filter=t}canCreateFilterForLine(e){return e==this._instruction}createFilterOrErrorMessage(e){let t=new ce;return e===this._instruction?(t.filter=this._filter,t):(t.error=`do not understand filter: ${e}`,t)}};var Da=class{constructor(){this._filters=[]}add(e,t){this._filters.push(new wa(e,t))}canCreateFilterForLine(e){for(let t of this._filters)if(t.canCreateFilterForLine(e))return!0;return!1}createFilterOrErrorMessage(e){for(let n of this._filters){let i=n.createFilterOrErrorMessage(e);if(i.error===void 0)return i}let t=new ce;return t.error=`do not understand filter: ${e}`,t}};var Dr=class extends ve{constructor(){super(...arguments);this._filters=new Da}canCreateFilterForLine(t){return this._filters.canCreateFilterForLine(t)}createFilterOrErrorMessage(t){return this._filters.createFilterOrErrorMessage(t)}filterRegExp(){return null}};var Ma=class extends Dr{constructor(){super(),this._filters.add("exclude sub-items",e=>{if(e.indentation==="")return!0;let t=e.indentation.lastIndexOf(">");return t===-1?!1:/^ ?$/.test(e.indentation.slice(t+1))})}fieldName(){return"exclude"}};var Oa=class extends dt{fieldName(){return"heading"}value(e){return e.precedingHeader?e.precedingHeader:""}};var Pa=class extends dt{fieldName(){return"path"}value(e){return e.path}};var gd=class extends ve{createFilterOrErrorMessage(e){let t=new ce,n=ve.getMatch(this.filterRegExp(),e);if(n!==null){let i=n[3],s=null;switch(i){case"low":s="4";break;case"none":s="3";break;case"medium":s="2";break;case"high":s="1";break}if(s===null)return t.error="do not understand priority",t;let a;n[2]==="above"?a=o=>o.priority?o.priority.localeCompare(s)<0:!1:n[2]==="below"?a=o=>o.priority?o.priority.localeCompare(s)>0:!1:a=o=>o.priority?o.priority===s:!1,t.filter=a}else t.error="do not understand query filter (priority)";return t}fieldName(){return"priority"}filterRegExp(){return gd.priorityRegexp}},Vi=gd;Vi.priorityRegexp=/^priority (is )?(above|below)? ?(low|none|medium|high)/;var _d=class extends It{filterRegExp(){return _d.scheduledRegexp}fieldName(){return"scheduled"}date(e){return e.scheduledDate}filterResultIfFieldMissing(){return!1}},Zi=_d;Zi.scheduledRegexp=/^scheduled (before|after|on)? ?(.*)/;var Td=class extends It{filterRegExp(){return Td.startRegexp}fieldName(){return"start"}date(e){return e.startDate}filterResultIfFieldMissing(){return!0}},Xi=Td;Xi.startRegexp=/^starts (before|after|on)? ?(.*)/;var Mr=class extends ve{canCreateFilterForLine(e){return e===Mr.instructionForFieldPresence||e===Mr.instructionForFieldAbsence?!0:super.canCreateFilterForLine(e)}createFilterOrErrorMessage(e){let t=new ce;if(e===Mr.instructionForFieldPresence){let i=new ce;return i.filter=s=>this.dates(s).some(a=>a!==null),i}if(e===Mr.instructionForFieldAbsence){let i=new ce;return i.filter=s=>!this.dates(s).some(a=>a!==null),i}let n=ve.getMatch(this.filterRegExp(),e);if(n!==null){let i=tr.parseDate(n[2]);i.isValid()?n[1]==="before"?t.filter=s=>this.dates(s).some(a=>a&&a.isBefore(i)):n[1]==="after"?t.filter=s=>this.dates(s).some(a=>a&&a.isAfter(i)):t.filter=s=>this.dates(s).some(a=>a&&a.isSame(i)):t.error="do not understand happens date"}else t.error="do not understand query filter (happens date)";return t}earliestDate(e){return new Mr().dates(e).sort(Be.compareByDate)[0]}filterRegExp(){return Mr.happensRegexp}dates(e){return Array.of(e.startDate,e.scheduledDate,e.dueDate)}fieldName(){return"happens"}},rr=Mr;rr.happensRegexp=/^happens (before|after|on)? ?(.*)/,rr.instructionForFieldPresence="has happens date",rr.instructionForFieldAbsence="no happens date";var Aa=class extends Dr{constructor(){super(),this._filters.add("is recurring",e=>e.recurrence!==null),this._filters.add("is not recurring",e=>e.recurrence===null)}fieldName(){return"recurring"}};var ka=class extends Dr{constructor(){super(),this._filters.add("done",e=>e.status==="Done"),this._filters.add("not done",e=>e.status!=="Done")}fieldName(){return"status"}};var Na=class extends dt{fieldNamePlural(){return this.fieldNameSingular()+"s"}fieldName(){return`${this.fieldNameSingular()}/${this.fieldNamePlural()}`}fieldPattern(){return`${this.fieldNameSingular()}|${this.fieldNamePlural()}`}filterOperatorPattern(){return`${super.filterOperatorPattern()}|include|do not include`}value(e){return this.values(e).join(", ")}getFilter(e,t){return n=>{let i=e.matchesAnyOf(this.values(n));return t?!i:i}}};var Ca=class extends Na{fieldNameSingular(){return"tag"}values(e){return e.tags}};var A_=ps(P_());var Ua=class extends ve{constructor(){super(...arguments);this.basicBooleanRegexp=/(.*(AND|OR|XOR|NOT)\s*[("].*|\(.+\))/g;this.supportedOperators=["AND","OR","XOR","NOT"];this.subFields={}}filterRegExp(){return this.basicBooleanRegexp}createFilterOrErrorMessage(t){return this.parseLine(t)}fieldName(){return"boolean query"}parseLine(t){let n=new ce;if(t.length===0)return n.error="empty line",n;let i=this.preprocessExpression(t);try{let s=(0,A_.parse)(i);for(let a of s)if(a.name==="IDENTIFIER"&&a.value){let o=a.value.trim();if(!(o in this.subFields)){let u=Fa(o);if(u===null)return n.error=`couldn't parse sub-expression '${o}'`,n;if(u.error)return n.error=`couldn't parse sub-expression '${o}': ${u.error}`,n;u.filter&&(this.subFields[o]=u.filter)}}else if(a.name==="OPERATOR"){if(a.value==null)return n.error="empty operator in boolean query",n;if(!this.supportedOperators.includes(a.value))return n.error=`unknown boolean operator '${a.value}'`,n}return n.filter=a=>this.filterTaskWithParsedQuery(a,s),n}catch(s){let a=s instanceof Error?s.message:"unknown error type";return n.error=`malformed boolean query -- ${a} (check the documentation for guidelines)`,n}return n}preprocessExpression(t){return t.replace(/\(([^()]+)\)/g,'("$1")')}filterTaskWithParsedQuery(t,n){let i=o=>o==="true",s=o=>o?"true":"false",a=[];for(let o of n)if(o.name==="IDENTIFIER"){if(o.value==null)throw Error("null token value");let u=this.subFields[o.value.trim()],l=u(t);a.push(s(l))}else if(o.name==="OPERATOR")if(o.value==="NOT"){let u=i(a.pop());a.push(s(!u))}else if(o.value==="OR"){let u=i(a.pop()),l=i(a.pop());a.push(s(u||l))}else if(o.value==="AND"){let u=i(a.pop()),l=i(a.pop());a.push(s(u&&l))}else if(o.value==="XOR"){let u=i(a.pop()),l=i(a.pop());a.push(s(u&&!l||!u&&l))}else throw Error("Unsupported operator: "+o.value);else throw Error("Unsupported token type: "+o);return i(a[0])}};var qa=class extends dt{fieldName(){return"filename"}value(e){let t=e.filename;return t===null?"":t+".md"}};var dA=[()=>new ka,()=>new Aa,()=>new Vi,()=>new rr,()=>new Xi,()=>new Zi,()=>new Ki,()=>new zi,()=>new Pa,()=>new Ra,()=>new Ca,()=>new Oa,()=>new Ma,()=>new Ua,()=>new qa];function Fa(r){for(let e of dA){let t=e();if(t.canCreateFilterForLine(r))return t.createFilterOrErrorMessage(r)}return null}var Wa=class{constructor(e,t){this.nestingLevel=e,this.name=t}};var La=class{constructor(e){this.lastHeadingAtLevel=new Array;let n=e.keys().next().value.length;for(let i=0;it.set(o,a)),e.pop();return t}};var $a=class extends Map{},ja=class extends Ya{},Ba=class{constructor(e,t){this.groups=new $a;let n=this.buildGroupingTree(e,t);this.groups=n.generateAllPaths(),this.groups=this.getSortedGroups()}buildGroupingTree(e,t){let n=new ja(t),i=[n];for(let s of e){let a=[];for(let o of i)for(let u of o.values){let l=Pr.getGroupNamesForTask(s.property,u);for(let c of l){let d=o.children.get(c);d===void 0&&(d=new ja([]),o.children.set(c,d),a.push(d)),d.values.push(u)}}i=a}return n}getSortedGroups(){return new $a([...this.groups.entries()].sort())}};var Ga=class{constructor(e,t,n){this.groups=e,this.groupHeadings=t,this.tasks=n}tasksAsStringOfLines(){let e="";for(let t of this.tasks)e+=t.toFileLineString()+` `;return e}toString(){let e=` `;e+=`Group names: [${this.groups}] `;for(let t of this.groupHeadings)e+=`${"#".repeat(4+t.nestingLevel)} ${t.name} -`;return e+=this.tasksAsStringOfLines(),e}};var La=class{constructor(e,t){this._groups=new Array;this._totalTaskCount=0;this._totalTaskCount=t.length;let n=new qa(e,t);this.addTasks(n)}get groups(){return this._groups}totalTasksCount(){return this._totalTaskCount}toString(){let e="";for(let n of this.groups)e+=n.toString(),e+=` +`;return e+=this.tasksAsStringOfLines(),e}};var Ha=class{constructor(e,t){this._groups=new Array;this._totalTaskCount=0;this._totalTaskCount=t.length;let n=new Ba(e,t);this.addTasks(n)}get groups(){return this._groups}totalTasksCount(){return this._totalTaskCount}toString(){let e="";for(let n of this.groups)e+=n.toString(),e+=` --- `;return e+=` ${this.totalTasksCount()} tasks -`,e}addTasks(e){let t=new Sa(e.groups);for(let[n,i]of e.groups){let s=t.getHeadingsForTaskGroup(n),a=new Wa(n,s,i);this.add(a)}}add(e){this._groups.push(e)}};var V=class{static by(e,t){return new La(e,t)}static getGroupNamesForTask(e,t){let n=V.groupers[e];return n(t)}static escapeMarkdownCharacters(e){return e.replace(/\\/g,"\\\\").replace(/_/g,"\\_")}static groupByPriority(e){let t="ERROR";switch(e.priority){case"1":t="High";break;case"2":t="Medium";break;case"3":t="None";break;case"4":t="Low";break}return[`Priority ${e.priority}: ${t}`]}static groupByRecurrence(e){return e.recurrence!==null?[e.recurrence.toText()]:["None"]}static groupByRecurring(e){return e.recurrence!==null?["Recurring"]:["Not Recurring"]}static groupByStartDate(e){return[V.stringFromDate(e.startDate,"start")]}static groupByScheduledDate(e){return[V.stringFromDate(e.scheduledDate,"scheduled")]}static groupByDueDate(e){return[V.stringFromDate(e.dueDate,"due")]}static groupByDoneDate(e){return[V.stringFromDate(e.doneDate,"done")]}static groupByHappensDate(e){let t=new tr().earliestDate(e);return[V.stringFromDate(t,"happens")]}static stringFromDate(e,t){return e===null?"No "+t+" date":e.format(V.groupDateFormat)}static groupByPath(e){return[V.escapeMarkdownCharacters(e.path.replace(".md",""))]}static groupByFolder(e){let t=e.path,n=e.filename+".md",i=t.substring(0,t.lastIndexOf(n));return i===""?["/"]:[V.escapeMarkdownCharacters(i)]}static groupByFileName(e){let t=e.filename;return t===null?["Unknown Location"]:[V.escapeMarkdownCharacters(t)]}static groupByRoot(e){let t=e.path.replace(/\\/g,"/"),n=t.indexOf("/");return n==-1?["/"]:[V.escapeMarkdownCharacters(t.substring(0,n+1))]}static groupByBacklink(e){if(e.getLinkText({isFilenameUnique:!0})===null)return["Unknown Location"];let n=V.groupByFileName(e)[0];if(e.precedingHeader===null||e.precedingHeader.length===0)return[n];let i=V.groupByHeading(e)[0];return n===i?[n]:[`${n} > ${i}`]}static groupByStatus(e){return[e.status]}static groupByHeading(e){return e.precedingHeader===null||e.precedingHeader.length===0?["(No heading)"]:[e.precedingHeader]}static groupByTags(e){return e.tags.length==0?["(No tags)"]:e.tags}},Mr=V;Mr.groupDateFormat="YYYY-MM-DD dddd",Mr.groupers={backlink:V.groupByBacklink,done:V.groupByDoneDate,due:V.groupByDueDate,filename:V.groupByFileName,folder:V.groupByFolder,happens:V.groupByHappensDate,heading:V.groupByHeading,path:V.groupByPath,priority:V.groupByPriority,recurrence:V.groupByRecurrence,recurring:V.groupByRecurring,root:V.groupByRoot,scheduled:V.groupByScheduledDate,start:V.groupByStartDate,status:V.groupByStatus,tags:V.groupByTags};var An=class{constructor({source:e}){this._limit=void 0;this._layoutOptions=new Xr;this._filters=[];this._error=void 0;this._sorting=[];this._grouping=[];this.sortByRegexp=/^sort by (urgency|status|priority|start|scheduled|due|done|path|description|tag)( reverse)?[\s]*(\d+)?/;this.groupByRegexp=/^group by (backlink|done|due|filename|folder|happens|heading|path|priority|recurrence|recurring|root|scheduled|start|status|tags)/;this.hideOptionsRegexp=/^(hide|show) (task count|backlink|priority|start date|scheduled date|done date|due date|recurrence rule|edit button|urgency)/;this.shortModeRegexp=/^short/;this.limitRegexp=/^limit (to )?(\d+)( tasks?)?/;this.commentRegexp=/^#.*/;this.source=e,e.split(` -`).map(t=>t.trim()).forEach(t=>{switch(!0){case t==="":break;case this.shortModeRegexp.test(t):this._layoutOptions.shortMode=!0;break;case this.limitRegexp.test(t):this.parseLimit({line:t});break;case this.sortByRegexp.test(t):this.parseSortBy({line:t});break;case this.groupByRegexp.test(t):this.parseGroupBy({line:t});break;case this.hideOptionsRegexp.test(t):this.parseHideOptions({line:t});break;case this.commentRegexp.test(t):break;case this.parseFilter(t):break;default:this._error=`do not understand query: ${t}`}})}get limit(){return this._limit}get layoutOptions(){return this._layoutOptions}get filters(){return this._filters}get sorting(){return this._sorting}get grouping(){return this._grouping}get error(){return this._error}applyQueryToTasks(e){this.filters.forEach(n=>{e=e.filter(n)});let t=Ge.by(this,e).slice(0,this.limit);return Mr.by(this.grouping,t)}parseHideOptions({line:e}){let t=e.match(this.hideOptionsRegexp);if(t!==null){let n=t[1]==="hide";switch(t[2]){case"task count":this._layoutOptions.hideTaskCount=n;break;case"backlink":this._layoutOptions.hideBacklinks=n;break;case"priority":this._layoutOptions.hidePriority=n;break;case"start date":this._layoutOptions.hideStartDate=n;break;case"scheduled date":this._layoutOptions.hideScheduledDate=n;break;case"due date":this._layoutOptions.hideDueDate=n;break;case"done date":this._layoutOptions.hideDoneDate=n;break;case"recurrence rule":this._layoutOptions.hideRecurrenceRule=n;break;case"edit button":this._layoutOptions.hideEditButton=n;break;case"urgency":this._layoutOptions.hideUrgency=n;break;default:this._error="do not understand hide/show option"}}}parseFilter(e){let t=Na(e);return t!=null?(t.filter?this._filters.push(t.filter):this._error=t.error,!0):!1}parseLimit({line:e}){let t=e.match(this.limitRegexp);t!==null?this._limit=Number.parseInt(t[2],10):this._error="do not understand query limit"}parseSortBy({line:e}){let t=e.match(this.sortByRegexp);t!==null?this._sorting.push({property:t[1],reverse:!!t[2],propertyInstance:isNaN(+t[3])?1:+t[3]}):this._error="do not understand query sorting"}parseGroupBy({line:e}){let t=e.match(this.groupByRegexp);t!==null?this._grouping.push({property:t[1]}):this._error="do not understand query grouping"}};var Ya=class{constructor({plugin:e,events:t}){this.addQueryRenderChild=this._addQueryRenderChild.bind(this);this.app=e.app,this.events=t,e.registerMarkdownCodeBlockProcessor("tasks",this._addQueryRenderChild.bind(this))}_addQueryRenderChild(e,t,n){return ne(this,null,function*(){n.addChild(new Dd({app:this.app,events:this.events,container:t,source:e,filePath:n.sourcePath}))})}},Dd=class extends $a.MarkdownRenderChild{constructor({app:t,events:n,container:i,source:s,filePath:a}){super(i);switch(this.app=t,this.events=n,this.source=s,this.filePath=a,this.containerEl.className){case"block-language-tasks":this.query=new An({source:s}),this.queryType="tasks";break;default:this.query=new An({source:s}),this.queryType="tasks";break}}onload(){this.events.triggerRequestCacheUpdate(this.render.bind(this)),this.renderEventRef=this.events.onCacheUpdate(this.render.bind(this)),this.reloadQueryAtMidnight()}onunload(){this.renderEventRef!==void 0&&this.events.off(this.renderEventRef),this.queryReloadTimeout!==void 0&&clearTimeout(this.queryReloadTimeout)}reloadQueryAtMidnight(){let t=new Date;t.setHours(24,0,0,0);let n=new Date,i=t.getTime()-n.getTime();this.queryReloadTimeout=setTimeout(()=>{this.query=new An({source:this.source}),this.events.triggerRequestCacheUpdate(this.render.bind(this)),this.reloadQueryAtMidnight()},i+1e3)}render(i){return ne(this,arguments,function*({tasks:t,state:n}){var a;let s=this.containerEl.createEl("div");if(n==="Warm"&&this.query.error===void 0){console.debug(`Render ${this.queryType} called for a block in active file "${this.filePath}", to select from ${t.length} tasks: plugin state: ${n}`);let o=this.query.applyQueryToTasks(t);for(let l of o.groups){this.addGroupHeadings(s,l.groupHeadings);let{taskList:c}=yield this.createTasksList({tasks:l.tasks,content:s});s.appendChild(c)}let u=o.totalTasksCount();console.debug(`${u} of ${t.length} tasks displayed in a block in "${this.filePath}"`),this.addTaskCount(s,u)}else this.query.error!==void 0?s.setText(`Tasks query: ${this.query.error}`):s.setText("Loading Tasks ...");(a=this.containerEl.firstChild)==null||a.replaceWith(s)})}createTasksList(i){return ne(this,arguments,function*({tasks:t,content:n}){let s=t.length,a=n.createEl("ul");a.addClasses(["contains-task-list","plugin-tasks-query-result"]);for(let o=0;op.remove());let f=this.query.layoutOptions.shortMode;this.query.layoutOptions.hideUrgency||this.addUrgency(c,u),this.query.layoutOptions.hideBacklinks||this.addBacklinks(c,u,f,l),this.query.layoutOptions.hideEditButton||this.addEditButton(c,u),a.appendChild(c)}return{taskList:a,tasksCount:s}})}addEditButton(t,n){t.createEl("a",{cls:"tasks-edit"}).onClickEvent(s=>{s.preventDefault();let a=u=>{ls({originalTask:n,newTasks:u})};new vn({app:this.app,task:n,onSubmit:a}).open()})}addUrgency(t,n){let i=new Intl.NumberFormat().format(n.urgency);t.createSpan({text:i,cls:"tasks-urgency"})}addGroupHeadings(t,n){for(let i of n)this.addGroupHeading(t,i)}addGroupHeading(t,n){return ne(this,null,function*(){let i;n.nestingLevel===0?i=t.createEl("h4",{cls:"tasks-group-heading"}):n.nestingLevel===1?i=t.createEl("h5",{cls:"tasks-group-heading"}):i=t.createEl("h6",{cls:"tasks-group-heading"}),yield $a.MarkdownRenderer.renderMarkdown(n.name,i,this.filePath,this)})}addBacklinks(t,n,i,s){var l;let a=t.createSpan({cls:"tasks-backlink"});i||a.append(" (");let o=a.createEl("a");if(o.href=n.path,o.setAttribute("data-href",n.path),o.rel="noopener",o.target="_blank",o.addClass("internal-link"),i&&o.addClass("internal-link-short-mode"),n.precedingHeader!==null){let c=n.precedingHeader.replace(/#/g,"");o.href=o.href+"#"+c,o.setAttribute("data-href",o.getAttribute("data-href")+"#"+c)}let u;i?u=" \u{1F517}":u=(l=n.getLinkText({isFilenameUnique:s}))!=null?l:"",o.setText(u),i||a.append(")")}addTaskCount(t,n){this.query.layoutOptions.hideTaskCount||t.createDiv({text:`${n} task${n!==1?"s":""}`,cls:"tasks-count"})}isFilenameUnique({task:t}){let n=t.path.match(/([^/]*)\..+$/i);if(n===null)return;let i=n[1];return this.app.vault.getMarkdownFiles().filter(a=>{if(a.basename===i)return!0}).length<2}};var ar=require("obsidian");var ja=class extends ar.PluginSettingTab{constructor({plugin:t}){super(t.app,t);this.plugin=t}display(){let{containerEl:t}=this;t.empty(),t.createEl("h2",{text:"Tasks Settings"}),t.createEl("p",{cls:"tasks-setting-important",text:"Changing any settings requires a restart of obsidian."}),new ar.Setting(t).setName("Global task filter").setDesc("The global filter will be applied to all checklist items.").addText(n=>{let i=ie();n.setPlaceholder("#task").setValue(i.globalFilter).onChange(s=>ne(this,null,function*(){Wt({globalFilter:s}),yield this.plugin.saveSettings()}))}),t.createEl("div",{cls:"setting-item-description",text:'The global filter will be applied to all checklist items to filter out "non-task" checklist items.\nA checklist item must include the specified string in its description in order to be considered a task.\nFor example, if you set the global filter to `#task`, the Tasks plugin will only handle checklist items tagged with `#task`.\nOther checklist items will remain normal checklist items and not appear in queries or get a done date set.\nLeave empty if you want all checklist items from your vault to be tasks managed by this plugin.'}),new ar.Setting(t).setName("Remove global filter from description").setDesc("Enabling this removes the string that you set as global filter from the task description when displaying a task.").addToggle(n=>{let i=ie();n.setValue(i.removeGlobalFilter).onChange(s=>ne(this,null,function*(){Wt({removeGlobalFilter:s}),yield this.plugin.saveSettings()}))}),new ar.Setting(t).setName("Set done date on every completed task").setDesc("Enabling this will add a timestamp \u2705 YYYY-MM-DD at the end when a task is toggled to done").addToggle(n=>{let i=ie();n.setValue(i.setDoneDate).onChange(s=>ne(this,null,function*(){Wt({setDoneDate:s}),yield this.plugin.saveSettings()}))}),new ar.Setting(t).setName("Auto-suggest task content").setDesc("Enabling this will open an intelligent suggest menu while typing inside a recognized task line.").addToggle(n=>{let i=ie();n.setValue(i.autoSuggestInEditor).onChange(s=>ne(this,null,function*(){Wt({autoSuggestInEditor:s}),yield this.plugin.saveSettings()}))}),new ar.Setting(t).setName("Minimum match length for auto-suggest").setDesc("If higher than 0, auto-suggest will be triggered only when the beginning of any supported keywords is recognized.").addSlider(n=>{let i=ie();n.setLimits(0,3,1).setValue(i.autoSuggestMinMatch).setDynamicTooltip().onChange(s=>ne(this,null,function*(){Wt({autoSuggestMinMatch:s}),yield this.plugin.saveSettings()}))}),new ar.Setting(t).setName("Maximum number of auto-suggestions to show").setDesc('How many suggestions should be shown when an auto-suggest menu pops up (including the "\u23CE" option).').addSlider(n=>{let i=ie();n.setLimits(3,12,1).setValue(i.autoSuggestMaxItems).setDynamicTooltip().onChange(s=>ne(this,null,function*(){Wt({autoSuggestMaxItems:s}),yield this.plugin.saveSettings()}))})}};var __=require("obsidian");var JO=`${Mt}${Pt}${Ot}`;function g_(r,e,t){let n=[];n=n.concat(rA(r,e,t)),n=n.concat(nA(r,e,t));let i=tA(r,t),s=Md(r,/([a-zA-Z'_-]*)/g,e),a=!1;if(s&&s.length>0){let o=s[0];if(o.length>=Math.max(1,t.autoSuggestMinMatch)){let u=i.filter(l=>l.displayText.toLowerCase().includes(o.toLowerCase()));for(let l of u)n.push({suggestionType:"match",displayText:l.displayText,appendText:l.appendText,insertAt:s.index,insertSkip:o.length}),a=!0}}return!a&&t.autoSuggestMinMatch===0&&(n=n.concat(i)),n.length>0&&!n.some(o=>o.suggestionType==="match")&&n.unshift({suggestionType:"empty",displayText:"\u23CE",appendText:` -`}),n=n.slice(0,t.autoSuggestMaxItems),n}function eA(r){if(Object.values(Re).some(e=>e.length>0&&r.includes(e)))return!0}function tA(r,e){let t=[];return r.includes(Ot)||t.push({displayText:`${Ot} due date`,appendText:`${Ot} `}),r.includes(Mt)||t.push({displayText:`${Mt} start date`,appendText:`${Mt} `}),r.includes(Pt)||t.push({displayText:`${Pt} scheduled date`,appendText:`${Pt} `}),eA(r)||(t.push({displayText:`${Re.High} high priority`,appendText:`${Re.High} `}),t.push({displayText:`${Re.Medium} medium priority`,appendText:`${Re.Medium} `}),t.push({displayText:`${Re.Low} low priority`,appendText:`${Re.Low} `})),r.includes(Dt)||t.push({displayText:`${Dt} recurring (repeat)`,appendText:`${Dt} `}),t}function rA(r,e,t){let n=["today","tomorrow","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","next week","next month","next year"],i=[],s=new RegExp(`([${JO}])\\s*([0-9a-zA-Z ]*)`,"ug"),a=Md(r,s,e);if(a&&a.length>=2){let o=a[1],u=a[2];if(u.length1?er.parseDate(bn(u),!0):null;l&&l.isValid()&&i.push({displayText:`${l.format(w.dateFormat)}`,appendText:`${o} ${l.format(w.dateFormat)} `,insertAt:a.index,insertSkip:a[0].length});let c=1,d=5,f=n.filter(p=>u&&u.length>=c&&p.toLowerCase().includes(u.toLowerCase())).slice(0,d);f.length===0&&(f=n.slice(0,d));for(let p of f){let m=`${er.parseDate(p,!0).format(w.dateFormat)}`;i.push({suggestionType:"match",displayText:`${p} (${m})`,appendText:`${o} ${m} `,insertAt:a.index,insertSkip:a[0].length})}}return i}function nA(r,e,t){var o;let n=["every","every day","every week","every month","every month on the","every year","every week on Sunday","every week on Monday","every week on Tuesday","every week on Wednesday","every week on Thursday","every week on Friday","every week on Saturday"],i=[],s=new RegExp(`(${Dt})\\s*([0-9a-zA-Z ]*)`,"ug"),a=Md(r,s,e);if(a&&a.length>=2){let u=a[1],l=a[2];if(l.length0){let p=(o=ht.fromText({recurrenceRuleText:l,startDate:null,scheduledDate:null,dueDate:null}))==null?void 0:o.toText();if(p){let y=`${u} ${p} `;if(i.push({suggestionType:"match",displayText:`\u2705 ${p}`,appendText:y,insertAt:a.index,insertSkip:a[0].length}),a[0]==y)return[]}}let c=1,d=t.autoSuggestMaxItems/2,f=n.filter(p=>l&&l.length>=c&&p.toLowerCase().includes(l.toLowerCase())).slice(0,d);f.length===0&&l.trim().length===0&&(f=n.slice(0,d));for(let p of f)i.push({suggestionType:"match",displayText:`${p}`,appendText:`${u} ${p} `,insertAt:a.index,insertSkip:a[0].length})}return i}function Md(r,e,t){let n=r.matchAll(e);for(let i of n)if((i==null?void 0:i.index)&&i.index<=t&&t<=i.index+i[0].length)return i;return[]}var Ba=class extends __.EditorSuggest{constructor(t,n){super(t);this.settings=n}onTrigger(t,n,i){if(!this.settings.autoSuggestInEditor)return null;let s=n.getLine(t.line);return s.contains(this.settings.globalFilter)&&s.match(w.taskRegex)?{start:{line:t.line,ch:0},end:{line:t.line,ch:s.length},query:s}:null}getSuggestions(t){let n=t.query,i=t.editor.getCursor(),s=g_(n,i.ch,this.settings),a=[];for(let o of s)a.push(qt($e({},o),{context:t}));return a}renderSuggestion(t,n){n.setText(t.displayText)}selectSuggestion(t,n){var u,l,c;let i=t.context.editor;if(t.suggestionType==="empty"){this.close();let d=new KeyboardEvent("keydown",{code:"Enter",key:"Enter"});(l=(u=i==null?void 0:i.cm)==null?void 0:u.contentDOM)==null||l.dispatchEvent(d);return}let s=t.context.editor.getCursor(),a={line:s.line,ch:(c=t.insertAt)!=null?c:s.ch},o=t.insertSkip?{line:s.line,ch:a.ch+t.insertSkip}:void 0;t.context.editor.replaceRange(t.appendText,a,o),t.context.editor.setCursor({line:s.line,ch:a.ch+t.appendText.length})}};var Ga=class extends T_.Plugin{onload(){return ne(this,null,function*(){console.log('loading plugin "tasks"'),yield this.loadSettings(),this.addSettingTab(new ja({plugin:this})),ef({metadataCache:this.app.metadataCache,vault:this.app.vault});let t=new ma({obsidianEvents:this.app.workspace});this.cache=new hr({metadataCache:this.app.metadataCache,vault:this.app.vault,events:t}),this.inlineRenderer=new ya({plugin:this}),this.queryRenderer=new Ya({plugin:this,events:t}),this.registerEditorExtension(r_()),this.registerEditorSuggest(new Ba(this.app,ie())),new ha({plugin:this})})}onunload(){var t;console.log('unloading plugin "tasks"'),(t=this.cache)==null||t.unload()}loadSettings(){return ne(this,null,function*(){let t=yield this.loadData();Wt(t)})}saveSettings(){return ne(this,null,function*(){yield this.saveData(ie())})}}; +`,e}addTasks(e){let t=new La(e.groups);for(let[n,i]of e.groups){let s=t.getHeadingsForTaskGroup(n),a=new Ga(n,s,i);this.add(a)}}add(e){this._groups.push(e)}};var Z=class{static by(e,t){return new Ha(e,t)}static getGroupNamesForTask(e,t){let n=Z.groupers[e];return n(t)}static escapeMarkdownCharacters(e){return e.replace(/\\/g,"\\\\").replace(/_/g,"\\_")}static groupByPriority(e){let t="ERROR";switch(e.priority){case"1":t="High";break;case"2":t="Medium";break;case"3":t="None";break;case"4":t="Low";break}return[`Priority ${e.priority}: ${t}`]}static groupByRecurrence(e){return e.recurrence!==null?[e.recurrence.toText()]:["None"]}static groupByRecurring(e){return e.recurrence!==null?["Recurring"]:["Not Recurring"]}static groupByStartDate(e){return[Z.stringFromDate(e.startDate,"start")]}static groupByScheduledDate(e){return[Z.stringFromDate(e.scheduledDate,"scheduled")]}static groupByDueDate(e){return[Z.stringFromDate(e.dueDate,"due")]}static groupByDoneDate(e){return[Z.stringFromDate(e.doneDate,"done")]}static groupByHappensDate(e){let t=new rr().earliestDate(e);return[Z.stringFromDate(t,"happens")]}static stringFromDate(e,t){return e===null?"No "+t+" date":e.format(Z.groupDateFormat)}static groupByPath(e){return[Z.escapeMarkdownCharacters(e.path.replace(".md",""))]}static groupByFolder(e){let t=e.path,n=e.filename+".md",i=t.substring(0,t.lastIndexOf(n));return i===""?["/"]:[Z.escapeMarkdownCharacters(i)]}static groupByFileName(e){let t=e.filename;return t===null?["Unknown Location"]:[Z.escapeMarkdownCharacters(t)]}static groupByRoot(e){let t=e.path.replace(/\\/g,"/"),n=t.indexOf("/");return n==-1?["/"]:[Z.escapeMarkdownCharacters(t.substring(0,n+1))]}static groupByBacklink(e){if(e.getLinkText({isFilenameUnique:!0})===null)return["Unknown Location"];let n=Z.groupByFileName(e)[0];if(e.precedingHeader===null||e.precedingHeader.length===0)return[n];let i=Z.groupByHeading(e)[0];return n===i?[n]:[`${n} > ${i}`]}static groupByStatus(e){return[e.status]}static groupByHeading(e){return e.precedingHeader===null||e.precedingHeader.length===0?["(No heading)"]:[e.precedingHeader]}static groupByTags(e){return e.tags.length==0?["(No tags)"]:e.tags}},Pr=Z;Pr.groupDateFormat="YYYY-MM-DD dddd",Pr.groupers={backlink:Z.groupByBacklink,done:Z.groupByDoneDate,due:Z.groupByDueDate,filename:Z.groupByFileName,folder:Z.groupByFolder,happens:Z.groupByHappensDate,heading:Z.groupByHeading,path:Z.groupByPath,priority:Z.groupByPriority,recurrence:Z.groupByRecurrence,recurring:Z.groupByRecurring,root:Z.groupByRoot,scheduled:Z.groupByScheduledDate,start:Z.groupByStartDate,status:Z.groupByStatus,tags:Z.groupByTags};var kn=class{constructor({source:e}){this._limit=void 0;this._layoutOptions=new Qr;this._filters=[];this._error=void 0;this._sorting=[];this._grouping=[];this.sortByRegexp=/^sort by (urgency|status|priority|start|scheduled|due|done|path|description|tag)( reverse)?[\s]*(\d+)?/;this.groupByRegexp=/^group by (backlink|done|due|filename|folder|happens|heading|path|priority|recurrence|recurring|root|scheduled|start|status|tags)/;this.hideOptionsRegexp=/^(hide|show) (task count|backlink|priority|start date|scheduled date|done date|due date|recurrence rule|edit button|urgency)/;this.shortModeRegexp=/^short/;this.limitRegexp=/^limit (to )?(\d+)( tasks?)?/;this.commentRegexp=/^#.*/;this.source=e,e.split(` +`).map(t=>t.trim()).forEach(t=>{switch(!0){case t==="":break;case this.shortModeRegexp.test(t):this._layoutOptions.shortMode=!0;break;case this.limitRegexp.test(t):this.parseLimit({line:t});break;case this.sortByRegexp.test(t):this.parseSortBy({line:t});break;case this.groupByRegexp.test(t):this.parseGroupBy({line:t});break;case this.hideOptionsRegexp.test(t):this.parseHideOptions({line:t});break;case this.commentRegexp.test(t):break;case this.parseFilter(t):break;default:this._error=`do not understand query: ${t}`}})}get limit(){return this._limit}get layoutOptions(){return this._layoutOptions}get filters(){return this._filters}get sorting(){return this._sorting}get grouping(){return this._grouping}get error(){return this._error}applyQueryToTasks(e){this.filters.forEach(n=>{e=e.filter(n)});let t=Be.by(this,e).slice(0,this.limit);return Pr.by(this.grouping,t)}parseHideOptions({line:e}){let t=e.match(this.hideOptionsRegexp);if(t!==null){let n=t[1]==="hide";switch(t[2]){case"task count":this._layoutOptions.hideTaskCount=n;break;case"backlink":this._layoutOptions.hideBacklinks=n;break;case"priority":this._layoutOptions.hidePriority=n;break;case"start date":this._layoutOptions.hideStartDate=n;break;case"scheduled date":this._layoutOptions.hideScheduledDate=n;break;case"due date":this._layoutOptions.hideDueDate=n;break;case"done date":this._layoutOptions.hideDoneDate=n;break;case"recurrence rule":this._layoutOptions.hideRecurrenceRule=n;break;case"edit button":this._layoutOptions.hideEditButton=n;break;case"urgency":this._layoutOptions.hideUrgency=n;break;default:this._error="do not understand hide/show option"}}}parseFilter(e){let t=Fa(e);return t!=null?(t.filter?this._filters.push(t.filter):this._error=t.error,!0):!1}parseLimit({line:e}){let t=e.match(this.limitRegexp);t!==null?this._limit=Number.parseInt(t[2],10):this._error="do not understand query limit"}parseSortBy({line:e}){let t=e.match(this.sortByRegexp);t!==null?this._sorting.push({property:t[1],reverse:!!t[2],propertyInstance:isNaN(+t[3])?1:+t[3]}):this._error="do not understand query sorting"}parseGroupBy({line:e}){let t=e.match(this.groupByRegexp);t!==null?this._grouping.push({property:t[1]}):this._error="do not understand query grouping"}};var za=class{constructor({plugin:e,events:t}){this.addQueryRenderChild=this._addQueryRenderChild.bind(this);this.app=e.app,this.events=t,e.registerMarkdownCodeBlockProcessor("tasks",this._addQueryRenderChild.bind(this))}_addQueryRenderChild(e,t,n){return ne(this,null,function*(){n.addChild(new Nd({app:this.app,events:this.events,container:t,source:e,filePath:n.sourcePath}))})}},Nd=class extends Ka.MarkdownRenderChild{constructor({app:t,events:n,container:i,source:s,filePath:a}){super(i);switch(this.app=t,this.events=n,this.source=s,this.filePath=a,this.containerEl.className){case"block-language-tasks":this.query=new kn({source:s}),this.queryType="tasks";break;default:this.query=new kn({source:s}),this.queryType="tasks";break}}onload(){this.events.triggerRequestCacheUpdate(this.render.bind(this)),this.renderEventRef=this.events.onCacheUpdate(this.render.bind(this)),this.reloadQueryAtMidnight()}onunload(){this.renderEventRef!==void 0&&this.events.off(this.renderEventRef),this.queryReloadTimeout!==void 0&&clearTimeout(this.queryReloadTimeout)}reloadQueryAtMidnight(){let t=new Date;t.setHours(24,0,0,0);let n=new Date,i=t.getTime()-n.getTime();this.queryReloadTimeout=setTimeout(()=>{this.query=new kn({source:this.source}),this.events.triggerRequestCacheUpdate(this.render.bind(this)),this.reloadQueryAtMidnight()},i+1e3)}render(i){return ne(this,arguments,function*({tasks:t,state:n}){var a;let s=this.containerEl.createEl("div");if(n==="Warm"&&this.query.error===void 0){console.debug(`Render ${this.queryType} called for a block in active file "${this.filePath}", to select from ${t.length} tasks: plugin state: ${n}`);let o=this.query.applyQueryToTasks(t);for(let l of o.groups){this.addGroupHeadings(s,l.groupHeadings);let{taskList:c}=yield this.createTasksList({tasks:l.tasks,content:s});s.appendChild(c)}let u=o.totalTasksCount();console.debug(`${u} of ${t.length} tasks displayed in a block in "${this.filePath}"`),this.addTaskCount(s,u)}else this.query.error!==void 0?s.setText(`Tasks query: ${this.query.error}`):s.setText("Loading Tasks ...");(a=this.containerEl.firstChild)==null||a.replaceWith(s)})}createTasksList(i){return ne(this,arguments,function*({tasks:t,content:n}){let s=t.length,a=n.createEl("ul");a.addClasses(["contains-task-list","plugin-tasks-query-result"]);for(let o=0;op.remove());let f=this.query.layoutOptions.shortMode;this.query.layoutOptions.hideUrgency||this.addUrgency(c,u),this.query.layoutOptions.hideBacklinks||this.addBacklinks(c,u,f,l),this.query.layoutOptions.hideEditButton||this.addEditButton(c,u),a.appendChild(c)}return{taskList:a,tasksCount:s}})}addEditButton(t,n){t.createEl("a",{cls:"tasks-edit"}).onClickEvent(s=>{s.preventDefault();let a=u=>{ms({originalTask:n,newTasks:u})};new En({app:this.app,task:n,onSubmit:a}).open()})}addUrgency(t,n){let i=new Intl.NumberFormat().format(n.urgency);t.createSpan({text:i,cls:"tasks-urgency"})}addGroupHeadings(t,n){for(let i of n)this.addGroupHeading(t,i)}addGroupHeading(t,n){return ne(this,null,function*(){let i;n.nestingLevel===0?i=t.createEl("h4",{cls:"tasks-group-heading"}):n.nestingLevel===1?i=t.createEl("h5",{cls:"tasks-group-heading"}):i=t.createEl("h6",{cls:"tasks-group-heading"}),yield Ka.MarkdownRenderer.renderMarkdown(n.name,i,this.filePath,this)})}addBacklinks(t,n,i,s){var l;let a=t.createSpan({cls:"tasks-backlink"});i||a.append(" (");let o=a.createEl("a");if(o.href=n.path,o.setAttribute("data-href",n.path),o.rel="noopener",o.target="_blank",o.addClass("internal-link"),i&&o.addClass("internal-link-short-mode"),n.precedingHeader!==null){let c=n.precedingHeader.replace(/#/g,"");o.href=o.href+"#"+c,o.setAttribute("data-href",o.getAttribute("data-href")+"#"+c)}let u;i?u=" \u{1F517}":u=(l=n.getLinkText({isFilenameUnique:s}))!=null?l:"",o.setText(u),i||a.append(")")}addTaskCount(t,n){this.query.layoutOptions.hideTaskCount||t.createDiv({text:`${n} task${n!==1?"s":""}`,cls:"tasks-count"})}isFilenameUnique({task:t}){let n=t.path.match(/([^/]*)\..+$/i);if(n===null)return;let i=n[1];return this.app.vault.getMarkdownFiles().filter(a=>{if(a.basename===i)return!0}).length<2}};var or=require("obsidian");var Va=class extends or.PluginSettingTab{constructor({plugin:t}){super(t.app,t);this.plugin=t}display(){let{containerEl:t}=this;t.empty(),t.createEl("h2",{text:"Tasks Settings"}),t.createEl("p",{cls:"tasks-setting-important",text:"Changing any settings requires a restart of obsidian."}),new or.Setting(t).setName("Global task filter").setDesc("The global filter will be applied to all checklist items.").addText(n=>{let i=ie();n.setPlaceholder("#task").setValue(i.globalFilter).onChange(s=>ne(this,null,function*(){Lt({globalFilter:s}),yield this.plugin.saveSettings()}))}),t.createEl("div",{cls:"setting-item-description",text:'The global filter will be applied to all checklist items to filter out "non-task" checklist items.\nA checklist item must include the specified string in its description in order to be considered a task.\nFor example, if you set the global filter to `#task`, the Tasks plugin will only handle checklist items tagged with `#task`.\nOther checklist items will remain normal checklist items and not appear in queries or get a done date set.\nLeave empty if you want all checklist items from your vault to be tasks managed by this plugin.'}),new or.Setting(t).setName("Remove global filter from description").setDesc("Enabling this removes the string that you set as global filter from the task description when displaying a task.").addToggle(n=>{let i=ie();n.setValue(i.removeGlobalFilter).onChange(s=>ne(this,null,function*(){Lt({removeGlobalFilter:s}),yield this.plugin.saveSettings()}))}),new or.Setting(t).setName("Set done date on every completed task").setDesc("Enabling this will add a timestamp \u2705 YYYY-MM-DD at the end when a task is toggled to done").addToggle(n=>{let i=ie();n.setValue(i.setDoneDate).onChange(s=>ne(this,null,function*(){Lt({setDoneDate:s}),yield this.plugin.saveSettings()}))}),new or.Setting(t).setName("Auto-suggest task content").setDesc("Enabling this will open an intelligent suggest menu while typing inside a recognized task line.").addToggle(n=>{let i=ie();n.setValue(i.autoSuggestInEditor).onChange(s=>ne(this,null,function*(){Lt({autoSuggestInEditor:s}),yield this.plugin.saveSettings()}))}),new or.Setting(t).setName("Minimum match length for auto-suggest").setDesc("If higher than 0, auto-suggest will be triggered only when the beginning of any supported keywords is recognized.").addSlider(n=>{let i=ie();n.setLimits(0,3,1).setValue(i.autoSuggestMinMatch).setDynamicTooltip().onChange(s=>ne(this,null,function*(){Lt({autoSuggestMinMatch:s}),yield this.plugin.saveSettings()}))}),new or.Setting(t).setName("Maximum number of auto-suggestions to show").setDesc('How many suggestions should be shown when an auto-suggest menu pops up (including the "\u23CE" option).').addSlider(n=>{let i=ie();n.setLimits(3,12,1).setValue(i.autoSuggestMaxItems).setDynamicTooltip().onChange(s=>ne(this,null,function*(){Lt({autoSuggestMaxItems:s}),yield this.plugin.saveSettings()}))})}};var N_=require("obsidian");var fA=`${Ot}${Pt}${At}`;function k_(r,e,t){let n=[];n=n.concat(mA(r,e,t)),n=n.concat(yA(r,e,t));let i=hA(r,t),s=Cd(r,/([a-zA-Z'_-]*)/g,e),a=!1;if(s&&s.length>0){let o=s[0];if(o.length>=Math.max(1,t.autoSuggestMinMatch)){let u=i.filter(l=>l.displayText.toLowerCase().includes(o.toLowerCase()));for(let l of u)n.push({suggestionType:"match",displayText:l.displayText,appendText:l.appendText,insertAt:s.index,insertSkip:o.length}),a=!0}}return!a&&t.autoSuggestMinMatch===0&&(n=n.concat(i)),n.length>0&&!n.some(o=>o.suggestionType==="match")&&n.unshift({suggestionType:"empty",displayText:"\u23CE",appendText:` +`}),n=n.slice(0,t.autoSuggestMaxItems),n}function pA(r){if(Object.values(Re).some(e=>e.length>0&&r.includes(e)))return!0}function hA(r,e){let t=[];return r.includes(At)||t.push({displayText:`${At} due date`,appendText:`${At} `}),r.includes(Ot)||t.push({displayText:`${Ot} start date`,appendText:`${Ot} `}),r.includes(Pt)||t.push({displayText:`${Pt} scheduled date`,appendText:`${Pt} `}),pA(r)||(t.push({displayText:`${Re.High} high priority`,appendText:`${Re.High} `}),t.push({displayText:`${Re.Medium} medium priority`,appendText:`${Re.Medium} `}),t.push({displayText:`${Re.Low} low priority`,appendText:`${Re.Low} `})),r.includes(Mt)||t.push({displayText:`${Mt} recurring (repeat)`,appendText:`${Mt} `}),t}function mA(r,e,t){let n=["today","tomorrow","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","next week","next month","next year"],i=[],s=new RegExp(`([${fA}])\\s*([0-9a-zA-Z ]*)`,"ug"),a=Cd(r,s,e);if(a&&a.length>=2){let o=a[1],u=a[2];if(u.length1?tr.parseDate(vn(u),!0):null;l&&l.isValid()&&i.push({displayText:`${l.format(D.dateFormat)}`,appendText:`${o} ${l.format(D.dateFormat)} `,insertAt:a.index,insertSkip:a[0].length});let c=1,d=5,f=n.filter(p=>u&&u.length>=c&&p.toLowerCase().includes(u.toLowerCase())).slice(0,d);f.length===0&&(f=n.slice(0,d));for(let p of f){let m=`${tr.parseDate(p,!0).format(D.dateFormat)}`;i.push({suggestionType:"match",displayText:`${p} (${m})`,appendText:`${o} ${m} `,insertAt:a.index,insertSkip:a[0].length})}}return i}function yA(r,e,t){var o;let n=["every","every day","every week","every month","every month on the","every year","every week on Sunday","every week on Monday","every week on Tuesday","every week on Wednesday","every week on Thursday","every week on Friday","every week on Saturday"],i=[],s=new RegExp(`(${Mt})\\s*([0-9a-zA-Z ]*)`,"ug"),a=Cd(r,s,e);if(a&&a.length>=2){let u=a[1],l=a[2];if(l.length0){let p=(o=mt.fromText({recurrenceRuleText:l,startDate:null,scheduledDate:null,dueDate:null}))==null?void 0:o.toText();if(p){let y=`${u} ${p} `;if(i.push({suggestionType:"match",displayText:`\u2705 ${p}`,appendText:y,insertAt:a.index,insertSkip:a[0].length}),a[0]==y)return[]}}let c=1,d=t.autoSuggestMaxItems/2,f=n.filter(p=>l&&l.length>=c&&p.toLowerCase().includes(l.toLowerCase())).slice(0,d);f.length===0&&l.trim().length===0&&(f=n.slice(0,d));for(let p of f)i.push({suggestionType:"match",displayText:`${p}`,appendText:`${u} ${p} `,insertAt:a.index,insertSkip:a[0].length})}return i}function Cd(r,e,t){let n=r.matchAll(e);for(let i of n)if((i==null?void 0:i.index)&&i.index<=t&&t<=i.index+i[0].length)return i;return[]}var Za=class extends N_.EditorSuggest{constructor(t,n){super(t);this.settings=n}onTrigger(t,n,i){if(!this.settings.autoSuggestInEditor)return null;let s=n.getLine(t.line);return s.contains(this.settings.globalFilter)&&s.match(D.taskRegex)?{start:{line:t.line,ch:0},end:{line:t.line,ch:s.length},query:s}:null}getSuggestions(t){let n=t.query,i=t.editor.getCursor(),s=k_(n,i.ch,this.settings),a=[];for(let o of s)a.push(Wt(Ye({},o),{context:t}));return a}renderSuggestion(t,n){n.setText(t.displayText)}selectSuggestion(t,n){var u,l,c;let i=t.context.editor;if(t.suggestionType==="empty"){this.close();let d=new KeyboardEvent("keydown",{code:"Enter",key:"Enter"});(l=(u=i==null?void 0:i.cm)==null?void 0:u.contentDOM)==null||l.dispatchEvent(d);return}let s=t.context.editor.getCursor(),a={line:s.line,ch:(c=t.insertAt)!=null?c:s.ch},o=t.insertSkip?{line:s.line,ch:a.ch+t.insertSkip}:void 0;t.context.editor.replaceRange(t.appendText,a,o),t.context.editor.setCursor({line:s.line,ch:a.ch+t.appendText.length})}};var Xa=class extends C_.Plugin{onload(){return ne(this,null,function*(){console.log('loading plugin "tasks"'),yield this.loadSettings(),this.addSettingTab(new Va({plugin:this})),hf({metadataCache:this.app.metadataCache,vault:this.app.vault});let t=new va({obsidianEvents:this.app.workspace});this.cache=new yr({metadataCache:this.app.metadataCache,vault:this.app.vault,events:t}),this.inlineRenderer=new Ea({plugin:this}),this.queryRenderer=new za({plugin:this,events:t}),this.registerEditorExtension(m_()),this.registerEditorSuggest(new Za(this.app,ie())),new ba({plugin:this})})}onunload(){var t;console.log('unloading plugin "tasks"'),(t=this.cache)==null||t.unload()}loadSettings(){return ne(this,null,function*(){let t=yield this.loadData();Lt(t)})}saveSettings(){return ne(this,null,function*(){yield this.saveData(ie())})}}; diff --git a/.obsidian/plugins/obsidian-tasks-plugin/manifest.json b/.obsidian/plugins/obsidian-tasks-plugin/manifest.json index 0ba26ede..3b99182c 100644 --- a/.obsidian/plugins/obsidian-tasks-plugin/manifest.json +++ b/.obsidian/plugins/obsidian-tasks-plugin/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-tasks-plugin", "name": "Tasks", - "version": "1.14.0", + "version": "1.15.0", "minAppVersion": "0.14.6", "description": "Task management for Obsidian", "author": "Martin Schenck and Clare Macrae", diff --git a/.obsidian/plugins/obsidian-tasks-plugin/styles.css b/.obsidian/plugins/obsidian-tasks-plugin/styles.css index 95157cf5..e44aa0ad 100644 --- a/.obsidian/plugins/obsidian-tasks-plugin/styles.css +++ b/.obsidian/plugins/obsidian-tasks-plugin/styles.css @@ -64,3 +64,8 @@ .tasks-modal-date { margin-bottom: 10px; } + +.tasks-modal label + input[type=checkbox] { + margin-left: 0.67em; +} + diff --git a/.obsidian/plugins/podnotes/data.json b/.obsidian/plugins/podnotes/data.json index 3d464043..06aa6971 100644 --- a/.obsidian/plugins/podnotes/data.json +++ b/.obsidian/plugins/podnotes/data.json @@ -221,6 +221,13 @@ "time": 1958.832, "duration": 1958.832, "finished": true + }, + "Florida After Hurricane Ian": { + "title": "Florida After Hurricane Ian", + "podcastName": "The Daily", + "time": 0, + "duration": 0, + "finished": true } }, "favorites": { @@ -236,6 +243,16 @@ "shouldEpisodeRemoveAfterPlay": true, "shouldRepeat": false, "episodes": [ + { + "title": "Putin’s Escalation of the War in Ukraine", + "streamUrl": "https://dts.podtrac.com/redirect.mp3/chrt.fm/track/8DB4DB/pdst.fm/e/nyt.simplecastaudio.com/03d8b493-87fc-4bd1-931f-8a8e9b945d8a/episodes/e41c37a7-2dfb-4939-84bf-5fdca1604720/audio/128/default.mp3?aid=rss_feed&awCollectionId=03d8b493-87fc-4bd1-931f-8a8e9b945d8a&awEpisodeId=e41c37a7-2dfb-4939-84bf-5fdca1604720&feed=54nAGcIl", + "url": "https://www.nytimes.com/the-daily", + "description": "

In a speech on Wednesday, President Vladimir V. Putin said that he would require hundreds of thousands more Russians to fight in Ukraine — and alarmed the West by once again raising the specter of nuclear force.

The mobilization signals that Mr. Putin is turning the war from one of aggression to one of defense, offering clues about what the next phase of the fighting will involve.

Guest: Anton Troianovski, the Moscow bureau chief for The New York Times.

Background reading: 

For more information on today’s episode, visit nytimes.com/thedaily. Transcripts of each episode will be made available by the next workday. 

\n", + "podcastName": "The Daily", + "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Podcasts115/v4/1c/ac/04/1cac0421-4483-ff09-4f80-19710d9feda4/mza_12421371692158516891.jpeg/100x100bb.jpg", + "episodeDate": "2022-09-22T09:45:00.000Z", + "feedUrl": "https://feeds.simplecast.com/54nAGcIl" + }, { "title": "Can the U.K. Remain United Without the Queen?", "streamUrl": "https://dts.podtrac.com/redirect.mp3/chrt.fm/track/8DB4DB/pdst.fm/e/nyt.simplecastaudio.com/03d8b493-87fc-4bd1-931f-8a8e9b945d8a/episodes/cbe25511-3623-4092-b274-c9bf5cd0c36b/audio/128/default.mp3?aid=rss_feed&awCollectionId=03d8b493-87fc-4bd1-931f-8a8e9b945d8a&awEpisodeId=cbe25511-3623-4092-b274-c9bf5cd0c36b&feed=54nAGcIl", @@ -340,13 +357,13 @@ "skipBackwardLength": 15, "skipForwardLength": 15, "currentEpisode": { - "title": "Putin’s Escalation of the War in Ukraine", - "streamUrl": "https://dts.podtrac.com/redirect.mp3/chrt.fm/track/8DB4DB/pdst.fm/e/nyt.simplecastaudio.com/03d8b493-87fc-4bd1-931f-8a8e9b945d8a/episodes/e41c37a7-2dfb-4939-84bf-5fdca1604720/audio/128/default.mp3?aid=rss_feed&awCollectionId=03d8b493-87fc-4bd1-931f-8a8e9b945d8a&awEpisodeId=e41c37a7-2dfb-4939-84bf-5fdca1604720&feed=54nAGcIl", + "title": "Florida After Hurricane Ian", + "streamUrl": "https://dts.podtrac.com/redirect.mp3/chrt.fm/track/8DB4DB/pdst.fm/e/nyt.simplecastaudio.com/03d8b493-87fc-4bd1-931f-8a8e9b945d8a/episodes/2f1eb124-5655-40cc-a59a-c5e22a568e04/audio/128/default.mp3?aid=rss_feed&awCollectionId=03d8b493-87fc-4bd1-931f-8a8e9b945d8a&awEpisodeId=2f1eb124-5655-40cc-a59a-c5e22a568e04&feed=54nAGcIl", "url": "https://www.nytimes.com/the-daily", - "description": "

In a speech on Wednesday, President Vladimir V. Putin said that he would require hundreds of thousands more Russians to fight in Ukraine — and alarmed the West by once again raising the specter of nuclear force.

The mobilization signals that Mr. Putin is turning the war from one of aggression to one of defense, offering clues about what the next phase of the fighting will involve.

Guest: Anton Troianovski, the Moscow bureau chief for The New York Times.

Background reading: 

For more information on today’s episode, visit nytimes.com/thedaily. Transcripts of each episode will be made available by the next workday. 

\n", + "description": "

As the sun came up over Florida yesterday, a fuller picture began to emerge of the destruction that Hurricane Ian had inflicted on the state and its residents.

The Category 4 storm washed away roads, bridges, cars, boats and homes. The damage is so extensive that, according to the state’s governor, Ron DeSantis, it may take years to rebuild.

Guests: Patricia Mazzei, the Miami bureau chief for The New York Times; Richard Fausset, a Times correspondent based in Atlanta; Nicholas Bogel-Burroughs, a national news reporter for The Times; and Hilary Swift, a photojournalist.

Background reading: 

For more information on today’s episode, visit nytimes.com/thedaily. Transcripts of each episode will be made available by the next workday. 

\n", "podcastName": "The Daily", "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Podcasts115/v4/1c/ac/04/1cac0421-4483-ff09-4f80-19710d9feda4/mza_12421371692158516891.jpeg/100x100bb.jpg", - "episodeDate": "2022-09-22T09:45:00.000Z", + "episodeDate": "2022-09-30T09:50:00.000Z", "feedUrl": "https://feeds.simplecast.com/54nAGcIl" }, "timestamp": { diff --git a/.obsidian/plugins/simple-time-tracker/main.js b/.obsidian/plugins/simple-time-tracker/main.js new file mode 100644 index 00000000..62e0a372 --- /dev/null +++ b/.obsidian/plugins/simple-time-tracker/main.js @@ -0,0 +1,274 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); +var __export = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __reExport = (target, module2, desc) => { + if (module2 && typeof module2 === "object" || typeof module2 === "function") { + for (let key of __getOwnPropNames(module2)) + if (!__hasOwnProp.call(target, key) && key !== "default") + __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable }); + } + return target; +}; +var __toModule = (module2) => { + return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2); +}; +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// src/main.ts +__export(exports, { + default: () => SimpleTimeTrackerPlugin +}); +var import_obsidian3 = __toModule(require("obsidian")); + +// src/settings.ts +var defaultSettings = { + timestampFormat: "YY-MM-DD hh:mm:ss", + csvDelimiter: "," +}; + +// src/settings-tab.ts +var import_obsidian = __toModule(require("obsidian")); +var SimpleTimeTrackerSettingsTab = class extends import_obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + this.containerEl.empty(); + this.containerEl.createEl("h2", { text: "Super Simple Time Tracker Settings" }); + new import_obsidian.Setting(this.containerEl).setName("Timestamp Display Format").setDesc(createFragment((f) => { + f.createSpan({ text: "The way that timestamps in time tracker tables should be displayed. Uses " }); + f.createEl("a", { text: "moment.js", href: "https://momentjs.com/docs/#/parsing/string-format/" }); + f.createSpan({ text: " syntax." }); + })).addText((t) => { + t.setValue(String(this.plugin.settings.timestampFormat)); + t.onChange((v) => __async(this, null, function* () { + this.plugin.settings.timestampFormat = v.length ? v : defaultSettings.timestampFormat; + yield this.plugin.saveSettings(); + })); + }); + new import_obsidian.Setting(this.containerEl).setName("CSV Delimiter").setDesc("The delimiter character that should be used when copying a tracker table as CSV. For example, some languages use a semicolon instead of a comma.").addText((t) => { + t.setValue(String(this.plugin.settings.csvDelimiter)); + t.onChange((v) => __async(this, null, function* () { + this.plugin.settings.csvDelimiter = v.length ? v : defaultSettings.csvDelimiter; + yield this.plugin.saveSettings(); + })); + }); + this.containerEl.createEl("hr"); + this.containerEl.createEl("p", { text: "If you like this plugin and want to support its development, you can do so through my website by clicking this fancy image!" }); + this.containerEl.createEl("a", { href: "https://ellpeck.de/support" }).createEl("img", { attr: { src: "https://ellpeck.de/res/generalsupport.png" }, cls: "simple-time-tracker-support" }); + } +}; + +// src/tracker.ts +var import_obsidian2 = __toModule(require("obsidian")); +function startEntry(tracker, name) { + if (!name) + name = `Segment ${tracker.entries.length + 1}`; + let entry = { name, startTime: (0, import_obsidian2.moment)().unix(), endTime: null }; + tracker.entries.push(entry); +} +function endEntry(tracker) { + let last = tracker.entries.last(); + last.endTime = (0, import_obsidian2.moment)().unix(); +} +function isRunning(tracker) { + let last = tracker.entries.last(); + return last != null && !last.endTime; +} +function saveTracker(tracker, app, section) { + return __async(this, null, function* () { + let file = app.workspace.getActiveFile(); + let content = yield app.vault.cachedRead(file); + let lines = content.split("\n"); + let prev = lines.filter((_, i) => i <= section.lineStart).join("\n"); + let next = lines.filter((_, i) => i >= section.lineEnd).join("\n"); + content = `${prev} +${JSON.stringify(tracker)} +${next}`; + yield app.vault.modify(file, content); + }); +} +function loadTracker(json) { + if (json) { + try { + return JSON.parse(json); + } catch (e) { + console.log(`Failed to parse Tracker from ${json}`); + } + } + return { entries: [] }; +} +function displayTracker(tracker, element, getSectionInfo, settings) { + let running = isRunning(tracker); + let btn = new import_obsidian2.ButtonComponent(element).setButtonText(running ? "End" : "Start").onClick(() => __async(this, null, function* () { + if (running) { + endEntry(tracker); + } else { + startEntry(tracker, name.getValue()); + } + yield saveTracker(tracker, this.app, getSectionInfo()); + })); + btn.buttonEl.addClass("simple-time-tracker-btn"); + let name = new import_obsidian2.TextComponent(element).setPlaceholder("Segment name").setDisabled(running); + name.inputEl.addClass("simple-time-tracker-txt"); + let timer = element.createDiv({ cls: "simple-time-tracker-timers" }); + let currentDiv = timer.createEl("div", { cls: "simple-time-tracker-timer" }); + let current = currentDiv.createEl("span", { cls: "simple-time-tracker-timer-time" }); + currentDiv.createEl("span", { text: "Current" }); + let totalDiv = timer.createEl("div", { cls: "simple-time-tracker-timer" }); + let total = totalDiv.createEl("span", { cls: "simple-time-tracker-timer-time", text: "0s" }); + totalDiv.createEl("span", { text: "Total" }); + if (tracker.entries.length > 0) { + let table = element.createEl("table", { cls: "simple-time-tracker-table" }); + table.createEl("tr").append(createEl("th", { text: "Segment" }), createEl("th", { text: "Start time" }), createEl("th", { text: "End time" }), createEl("th", { text: "Duration" })); + for (let entry of tracker.entries) { + let row = table.createEl("tr"); + row.createEl("td", { text: entry.name }); + row.createEl("td", { text: formatTimestamp(entry.startTime, settings) }); + if (entry.endTime) { + row.createEl("td", { text: formatTimestamp(entry.endTime, settings) }); + row.createEl("td", { text: formatDurationBetween(entry.startTime, entry.endTime) }); + } + } + let buttons = element.createEl("div", { cls: "simple-time-tracker-bottom" }); + new import_obsidian2.ButtonComponent(buttons).setButtonText("Copy as table").onClick(() => navigator.clipboard.writeText(createMarkdownTable(tracker, settings))); + new import_obsidian2.ButtonComponent(buttons).setButtonText("Copy as CSV").onClick(() => navigator.clipboard.writeText(createCsv(tracker, settings))); + } + setCountdownValues(tracker, current, total, currentDiv); + let intervalId = window.setInterval(() => { + if (!element.isConnected) { + window.clearInterval(intervalId); + return; + } + setCountdownValues(tracker, current, total, currentDiv); + }, 1e3); +} +function setCountdownValues(tracker, current, total, currentDiv) { + let currEntry = tracker.entries.last(); + if (currEntry) { + if (!currEntry.endTime) + current.setText(formatDurationBetween(currEntry.startTime, (0, import_obsidian2.moment)().unix())); + total.setText(formatDuration(getTotalDuration(tracker))); + } + currentDiv.hidden = !currEntry || !!currEntry.endTime; +} +function getTotalDuration(tracker) { + let totalDuration = 0; + for (let entry of tracker.entries) { + let endTime = entry.endTime ? import_obsidian2.moment.unix(entry.endTime) : (0, import_obsidian2.moment)(); + totalDuration += endTime.diff(import_obsidian2.moment.unix(entry.startTime)); + } + return totalDuration; +} +function formatTimestamp(timestamp, settings) { + return import_obsidian2.moment.unix(timestamp).format(settings.timestampFormat); +} +function formatDurationBetween(startTime, endTime) { + return formatDuration(import_obsidian2.moment.unix(endTime).diff(import_obsidian2.moment.unix(startTime))); +} +function formatDuration(totalTime) { + let duration = import_obsidian2.moment.duration(totalTime); + let ret = ""; + if (duration.hours() > 0) + ret += duration.hours() + "h "; + if (duration.minutes() > 0) + ret += duration.minutes() + "m "; + ret += duration.seconds() + "s"; + return ret; +} +function createMarkdownTable(tracker, settings) { + let table = [["Segment", "Start time", "End time", "Duration"]]; + for (let entry of tracker.entries) + table.push(createTableRow(entry, settings)); + table.push(["**Total**", "", "", `**${formatDuration(getTotalDuration(tracker))}**`]); + let ret = ""; + let widths = Array.from(Array(4).keys()).map((i) => Math.max(...table.map((a) => a[i].length))); + for (let r = 0; r < table.length; r++) { + if (r == 1) + ret += Array.from(Array(4).keys()).map((i) => "-".repeat(widths[i])).join(" | ") + "\n"; + let row = []; + for (let i = 0; i < 4; i++) + row.push(table[r][i].padEnd(widths[i], " ")); + ret += row.join(" | ") + "\n"; + } + return ret; +} +function createCsv(tracker, settings) { + let ret = ""; + for (let entry of tracker.entries) + ret += createTableRow(entry, settings).join(settings.csvDelimiter) + "\n"; + return ret; +} +function createTableRow(entry, settings) { + return [ + entry.name, + formatTimestamp(entry.startTime, settings), + entry.endTime ? formatTimestamp(entry.endTime, settings) : "", + entry.endTime ? formatDurationBetween(entry.startTime, entry.endTime) : "" + ]; +} + +// src/main.ts +var SimpleTimeTrackerPlugin = class extends import_obsidian3.Plugin { + onload() { + return __async(this, null, function* () { + yield this.loadSettings(); + this.addSettingTab(new SimpleTimeTrackerSettingsTab(this.app, this)); + this.registerMarkdownCodeBlockProcessor("simple-time-tracker", (s, e, i) => { + let tracker = loadTracker(s); + e.empty(); + displayTracker(tracker, e, () => i.getSectionInfo(e), this.settings); + }); + this.addCommand({ + id: `insert`, + name: `Insert Time Tracker`, + editorCallback: (e, _) => { + e.replaceSelection("```simple-time-tracker\n```\n"); + } + }); + }); + } + loadSettings() { + return __async(this, null, function* () { + this.settings = Object.assign({}, defaultSettings, yield this.loadData()); + }); + } + saveSettings() { + return __async(this, null, function* () { + yield this.saveData(this.settings); + }); + } +}; diff --git a/.obsidian/plugins/simple-time-tracker/manifest.json b/.obsidian/plugins/simple-time-tracker/manifest.json new file mode 100644 index 00000000..736b019b --- /dev/null +++ b/.obsidian/plugins/simple-time-tracker/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "simple-time-tracker", + "name": "Super Simple Time Tracker", + "version": "0.1.2", + "minAppVersion": "0.15.0", + "description": "Multi-purpose time trackers for your notes!", + "author": "Ellpeck", + "authorUrl": "https://ellpeck.de", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/simple-time-tracker/styles.css b/.obsidian/plugins/simple-time-tracker/styles.css new file mode 100644 index 00000000..920a9aba --- /dev/null +++ b/.obsidian/plugins/simple-time-tracker/styles.css @@ -0,0 +1,55 @@ +.simple-time-tracker-support { + max-width: 50%; + width: 400px; + height: auto; +} + +.simple-time-tracker-btn, +.simple-time-tracker-txt { + display: block; + margin-left: auto; + margin-right: auto; +} + +.simple-time-tracker-txt { + text-align: center; +} + +.simple-time-tracker-btn { + margin-top: 10px; + margin-bottom: 10px; +} + +.simple-time-tracker-bottom button { + margin: 10px 5px 10px 5px; +} + +.simple-time-tracker-timers, +.simple-time-tracker-bottom { + display: flex; + justify-content: center; + text-align: center; +} + +.simple-time-tracker-timers span { + display: block; +} + +.simple-time-tracker-timer { + margin: 20px; +} + +.simple-time-tracker-timer-time { + font-size: xx-large; + font-weight: bolder; +} + +.simple-time-tracker-table { + width: 100%; + margin-top: 20px; +} + +.simple-time-tracker-table td, +.simple-time-tracker-table th { + border: none; +} diff --git a/.obsidian/workspace b/.obsidian/workspace index b0ff0895..c925fdd6 100644 --- a/.obsidian/workspace +++ b/.obsidian/workspace @@ -4,7 +4,7 @@ "type": "split", "children": [ { - "id": "bfcef3842de27bb1", + "id": "6392409787fe0b33", "type": "leaf", "state": { "type": "markdown", @@ -133,7 +133,7 @@ } }, { - "id": "d8072da19bedfcc3", + "id": "149e0f0ee73cda20", "type": "leaf", "state": { "type": "DICE_ROLLER_VIEW", @@ -143,17 +143,17 @@ ], "currentTab": 2 }, - "active": "bfcef3842de27bb1", + "active": "6392409787fe0b33", "lastOpenFiles": [ - "00.01 Admin/Calendars/2022-09-30.md", - "01.02 Home/@Main Dashboard.md", - "00.03 News/Reading Simone de Beauvoir’s ‘Ethics of Ambiguity’ in prison Aeon Essays.md", - "00.03 News/Iran’s Women Are (Once Again) the Vanguards of a Revolution.md", - "00.03 News/‘Putin Is a Fool’ Intercepted Calls Reveal Russian Army in Disarray.md", - "00.01 Admin/Calendars/2022-09-29.md", - "00.01 Admin/Obsidian plugins.md", - "00.08 Bookmarks/Bookmarks - Obsidian.md", - "00.01 Admin/archive.md", - "00.01 Admin/URL characters.md" + "00.03 News/You Don’t Know Much About Jay Penske. And He’s Fine With That..md", + "00.03 News/@News.md", + "00.03 News/Migrants faced the worst of the gig economy, so they made their own delivery app.md", + "00.03 News/North Korea Hacked Him. So He Took Down Its Internet.md", + "00.03 News/Google Search Is Dying.md", + "00.01 Admin/Calendars/2022-02-22.md", + "00.03 News/Elon Musk Got Twitter Because He Gets Twitter.md", + "00.03 News/Amateur open-source researchers went viral unpacking the war in Ukraine.md", + "00.03 News/Solomun, the D.J. Who Keeps Ibiza Dancing.md", + "00.03 News/On the pleasures of hand-writing letters you’ll never send.md" ] } \ No newline at end of file diff --git a/00.01 Admin/Calendars/2022-08-31 Toulouse - Paris SG (0-3).md b/00.01 Admin/Calendars/2022-08-31 Toulouse - PSG (0-3).md similarity index 68% rename from 00.01 Admin/Calendars/2022-08-31 Toulouse - Paris SG (0-3).md rename to 00.01 Admin/Calendars/2022-08-31 Toulouse - PSG (0-3).md index 4941025f..cf3c70ec 100644 --- a/00.01 Admin/Calendars/2022-08-31 Toulouse - Paris SG (0-3).md +++ b/00.01 Admin/Calendars/2022-08-31 Toulouse - PSG (0-3).md @@ -1,9 +1,12 @@ --- + title: ⚽ FC Toulouse - Paris SG (0-3) allDay: false startTime: 21:00 endTime: 23:00 date: 2022-08-31 +CollapseMetaTable: true + --- [[2022-08-31|Ce jour]], FC Toulouse - [[Paris SG]]: 0-3 diff --git a/00.01 Admin/Calendars/2022-09-06 PSG - Juventus (2-1).md b/00.01 Admin/Calendars/2022-09-06 PSG - Juventus (2-1).md index 6179dbc9..9e178bf3 100644 --- a/00.01 Admin/Calendars/2022-09-06 PSG - Juventus (2-1).md +++ b/00.01 Admin/Calendars/2022-09-06 PSG - Juventus (2-1).md @@ -1,9 +1,12 @@ --- + title: ⚽ PSG - Juventus (2-1) allDay: false startTime: 21:00 endTime: 23:00 date: 2022-09-06 +CollapseMetaTable: true + --- [[2022-09-06|Ce jour]], [[Paris SG|PSG]] - Juventus: 2-1 diff --git a/00.01 Admin/Calendars/2022-09-14 Maccabi Haifa - Paris SG (1-3).md b/00.01 Admin/Calendars/2022-09-14 Maccabi Haifa - PSG (1-3).md similarity index 88% rename from 00.01 Admin/Calendars/2022-09-14 Maccabi Haifa - Paris SG (1-3).md rename to 00.01 Admin/Calendars/2022-09-14 Maccabi Haifa - PSG (1-3).md index 9564ca62..2331f493 100644 --- a/00.01 Admin/Calendars/2022-09-14 Maccabi Haifa - Paris SG (1-3).md +++ b/00.01 Admin/Calendars/2022-09-14 Maccabi Haifa - PSG (1-3).md @@ -4,6 +4,8 @@ allDay: false startTime: 21:00 endTime: 23:00 date: 2022-09-14 +CollapseMetaTable: true + --- [[2022-09-14|Ce jour]], Maccabi Haifa - [[Paris SG]]: 1-3 diff --git a/00.01 Admin/Calendars/2022-09-30.md b/00.01 Admin/Calendars/2022-09-30.md index 408ce96c..cb4984cb 100644 --- a/00.01 Admin/Calendars/2022-09-30.md +++ b/00.01 Admin/Calendars/2022-09-30.md @@ -16,9 +16,9 @@ Stress: 25 FrontHeadBar: 5 EarHeadBar: 30 BackHeadBar: 20 -Water: 0.5 -Coffee: 3 -Steps: +Water: 3 +Coffee: 5 +Steps: 10103 Ski: Riding: Racket: diff --git a/00.01 Admin/Calendars/2022-10-01 PSG - 0GC Nice (2-1).md b/00.01 Admin/Calendars/2022-10-01 PSG - 0GC Nice (2-1).md new file mode 100644 index 00000000..de222967 --- /dev/null +++ b/00.01 Admin/Calendars/2022-10-01 PSG - 0GC Nice (2-1).md @@ -0,0 +1,13 @@ +--- + +title: ⚽ Paris SG - 0GC Nice +allDay: false +startTime: 21:00 +endTime: 23:00 +date: 2022-10-01 +CollapseMetaTable: true + +--- + +[[2022-10-01|Aujourd’hui]], [[Paris SG]] - OGC Nice: 2-1 +Buteurs:: ⚽ Messi
⚽ M’Bappé
⚽ Laborde (OGCN) \ No newline at end of file diff --git a/00.01 Admin/Calendars/2022-10-01.md b/00.01 Admin/Calendars/2022-10-01.md new file mode 100644 index 00000000..aea062cc --- /dev/null +++ b/00.01 Admin/Calendars/2022-10-01.md @@ -0,0 +1,116 @@ +--- + +title: "🗒 Daily Note" +allDay: true +date: 2022-10-01 +Date: 2022-10-01 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: true +Sleep: 8 +Happiness: 90 +Gratefulness: 90 +Stress: 25 +FrontHeadBar: 5 +EarHeadBar: 30 +BackHeadBar: 20 +Water: 3.4 +Coffee: 3 +Steps: 11114 +Ski: +Riding: +Racket: +Football: +Swim: + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2022-09-30|<< 🗓 Previous ]]       [[@Main Dashboard|Back]]       [[2022-10-02|🗓 Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2022-10-01Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2022-10-01NSave + +  + +# 2022-10-01 + +  + +> [!summary]+ +> Daily note for 2022-10-01 + +  + +```toc +style: number +``` + +  + +--- + +  + +### 📝 Memos + +  + +This section does serve for quick memos. + +  +- 14:00 [[Big Shells With Spicy Lamb Sausage and Pistachios]] without the pasta & with chicken [[2022-10-01|today]] ^1qys14 +- 19:12 [[Game of Thrones (2011–2019)]] with [[MRCK]] [[2022-10-01|this day]] + + +%% --- %% +  + +--- + +  + +### 🗒 Notes + +  + +Loret ipsum + +  + +--- + +  + +### :link: Linked activity + +  + +```dataview +Table from [[2022-10-01]] +``` + +  +  \ No newline at end of file diff --git a/00.01 Admin/Calendars/2022-10-02.md b/00.01 Admin/Calendars/2022-10-02.md new file mode 100644 index 00000000..105bdbba --- /dev/null +++ b/00.01 Admin/Calendars/2022-10-02.md @@ -0,0 +1,115 @@ +--- + +title: "🗒 Daily Note" +allDay: true +date: 2022-10-02 +Date: 2022-10-02 +DocType: Note +Hierarchy: +TimeStamp: +location: +CollapseMetaTable: true +Sleep: 9 +Happiness: 90 +Gratefulness: 90 +Stress: 25 +FrontHeadBar: 5 +EarHeadBar: 30 +BackHeadBar: 20 +Water: 0.7 +Coffee: 4 +Steps: +Ski: +Riding: +Racket: +Football: +Swim: + +--- + +%% Parent:: [[@Life Admin]] %% + +--- + +[[2022-10-01|<< 🗓 Previous ]]       [[@Main Dashboard|Back]]       [[2022-10-03|🗓 Next >>]] + +--- + +  + +```button +name Record today's health +type command +action MetaEdit: Run MetaEdit +id EditMetaData +``` +^button-2022-10-02Edit + +```button +name Save +type command +action Save current file +id Save +``` +^button-2022-10-02NSave + +  + +# 2022-10-02 + +  + +> [!summary]+ +> Daily note for 2022-10-02 + +  + +```toc +style: number +``` + +  + +--- + +  + +### 📝 Memos + +  + +This section does serve for quick memos. + +  +- 11:52 [[Dar]] with [[MRCK]], Leo & Nathalie [[2022-10-02|this day]] + + +%% --- %% +  + +--- + +  + +### 🗒 Notes + +  + +- 19:12 [[Game of Thrones (2011–2019)]] with [[MRCK]] [[2022-10-02|this day]] + +  + +--- + +  + +### :link: Linked activity + +  + +```dataview +Table from [[2022-10-02]] +``` + +  +  \ No newline at end of file diff --git a/00.01 Admin/Calendars/2022-10-16 Paris SG - Marseille.md b/00.01 Admin/Calendars/2022-10-16 Paris SG - Marseille.md new file mode 100644 index 00000000..a5e9b868 --- /dev/null +++ b/00.01 Admin/Calendars/2022-10-16 Paris SG - Marseille.md @@ -0,0 +1,13 @@ +--- + +title: ⚽ Paris SG - Marseille +allDay: false +startTime: 21:00 +endTime: 23:00 +date: 2022-10-16 +CollapseMetaTable: true + +--- + +[[2022-10-16|Ce jour]], [[Paris SG]] - Olympique Marseille: +Buteurs:: diff --git a/00.01 Admin/Test Sheet 2.md b/00.01 Admin/Test Sheet 2.md index 339418be..961d4b7c 100644 --- a/00.01 Admin/Test Sheet 2.md +++ b/00.01 Admin/Test Sheet 2.md @@ -1,9 +1,16 @@ --- location: [47.3639129,8.55627491017841] +CollapseMetaTable: true +key1: + name: "test key" + link: "[[Test Sheet 2]]" + desc: + --- # 2nd Test sheet for snippets +(key2:: "test", "[[Test sheet]]", "this is the key desc") ### Auto card link @@ -13,6 +20,20 @@ title: "Obsidian" description: "Obsidian: A knowledge base that works on local Markdown files." ``` +  + +Key name: `= this.key1.name` + +Key link: `= this.key1.link` + +Key desc: `=this.key1.desc` + +  + +Key name: `= this.key2[0]` + +  + --- ```dataviewjs diff --git a/00.01 Admin/URL table.md b/00.01 Admin/URL table.md new file mode 100644 index 00000000..8be1bb2b --- /dev/null +++ b/00.01 Admin/URL table.md @@ -0,0 +1,187 @@ +| Characters | +| ---------- | +| A | +| a | +| B | +| b | +| C | +| c | +| D | +| d | +| E | +| e | +| F | +| f | +| G | +| g | +| H | +| h | +| I | +| i | +| J | +| j | +| K | +| k | +| L | +| l | +| M | +| m | +| N | +| n | +| O | +| o | +| P | +| p | +| Q | +| q | +| R | +| r | +| S | +| s | +| T | +| t | +| U | +| u | +| V | +| v | +| W | +| w | +| X | +| x | +| Y | +| y | +| Z | +| z | +| 1 | +| 2 | +| 3 | +| 4 | +| 5 | +| 6 | +| 7 | +| 8 | +| 9 | +| 0 | +^chartable + +a + +B + +b + +C + +c + +D + +d + +E + +e + +F + +f + +G + +g + +H + +h + +I + +i + +J + +j + +K + +k + +L + +l + +M + +m + +N + +n + +O + +o + +P + +p + +Q + +q + +R + +r + +S + +s + +T + +t + +U + +u + +V + +v + +W + +w + +X + +x + +Y + +y + +Z + +z + +0 + +1 + +2 + +3 + +4 + +5 + +6 + +7 + +8 + +9 \ No newline at end of file diff --git a/00.03 News/8 Endangered Places We Can Still Save From Climate Change.md b/00.03 News/8 Endangered Places We Can Still Save From Climate Change.md index ef1e0fda..1d167be4 100644 --- a/00.03 News/8 Endangered Places We Can Still Save From Climate Change.md +++ b/00.03 News/8 Endangered Places We Can Still Save From Climate Change.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Society", "ClimateChange"] +Tag: ["Society", "🌡️"] Date: 2022-04-03 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/A Crime Beyond Belief.md b/00.03 News/A Crime Beyond Belief.md index 0682b8d2..3e44a3f6 100644 --- a/00.03 News/A Crime Beyond Belief.md +++ b/00.03 News/A Crime Beyond Belief.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Crime", "US", "Harvard"] +Tag: ["Crime", "🇺🇸", "Harvard"] Date: 2022-05-01 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/A Dad Took Photos of His Naked Toddler for the Doctor. Google Flagged Him as a Criminal..md b/00.03 News/A Dad Took Photos of His Naked Toddler for the Doctor. Google Flagged Him as a Criminal..md index 1759e35a..bb98d660 100644 --- a/00.03 News/A Dad Took Photos of His Naked Toddler for the Doctor. Google Flagged Him as a Criminal..md +++ b/00.03 News/A Dad Took Photos of His Naked Toddler for the Doctor. Google Flagged Him as a Criminal..md @@ -1,7 +1,5 @@ --- -dg-publish: true -Alias: [""] Tag: ["Tech", "CSSA", "FANGAbuse"] Date: 2022-08-21 DocType: "WebClipping" diff --git a/00.03 News/A Search for Family, a Love for Horses and How It All Led to Kentucky Derby Glory.md b/00.03 News/A Search for Family, a Love for Horses and How It All Led to Kentucky Derby Glory.md index 465064ff..e0baeb8a 100644 --- a/00.03 News/A Search for Family, a Love for Horses and How It All Led to Kentucky Derby Glory.md +++ b/00.03 News/A Search for Family, a Love for Horses and How It All Led to Kentucky Derby Glory.md @@ -1,6 +1,6 @@ --- -Tag: ["Sport", "Horse", "Racing", "US"] +Tag: ["Sport", "🏇", "🇺🇸"] Date: 2022-05-22 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/A new generation of white supremacist killer - Los Angeles Times.md b/00.03 News/A new generation of white supremacist killer - Los Angeles Times.md index 4d83634d..0f6a88c1 100644 --- a/00.03 News/A new generation of white supremacist killer - Los Angeles Times.md +++ b/00.03 News/A new generation of white supremacist killer - Los Angeles Times.md @@ -1,6 +1,6 @@ --- -Tag: ["Crime", "Society", "Racism", "US"] +Tag: ["Crime", "Society", "Racism", "🇺🇸"] Date: 2022-05-22 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/A view from across the river.md b/00.03 News/A view from across the river.md index afaa7500..e686bad2 100644 --- a/00.03 News/A view from across the river.md +++ b/00.03 News/A view from across the river.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Travel", "EastDehli", "Suburb"] +Tag: ["Travel", "🇮🇳", "EastDehli", "Suburb"] Date: 2022-02-26 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/After Christendom.md b/00.03 News/After Christendom.md index 05b49749..d5511e5c 100644 --- a/00.03 News/After Christendom.md +++ b/00.03 News/After Christendom.md @@ -1,7 +1,5 @@ --- -dg-publish: true -Alias: [""] Tag: ["Religion", "Society"] Date: 2022-05-26 DocType: "WebClipping" diff --git a/00.03 News/After the Zodiac Killer's '340' Cipher Stumped the FBI, Three Amateurs Made a Breakthrough.md b/00.03 News/After the Zodiac Killer's '340' Cipher Stumped the FBI, Three Amateurs Made a Breakthrough.md index 30edb99e..61812b1d 100644 --- a/00.03 News/After the Zodiac Killer's '340' Cipher Stumped the FBI, Three Amateurs Made a Breakthrough.md +++ b/00.03 News/After the Zodiac Killer's '340' Cipher Stumped the FBI, Three Amateurs Made a Breakthrough.md @@ -1,6 +1,6 @@ --- -Tag: ["Crime", "ColdCase", "US", "SecretCode"] +Tag: ["Crime", "ColdCase", "🇺🇸", "SecretCode"] Date: 2022-08-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Albert Camus The philosopher who resisted despair.md b/00.03 News/Albert Camus The philosopher who resisted despair.md index 9424af3a..3316048c 100644 --- a/00.03 News/Albert Camus The philosopher who resisted despair.md +++ b/00.03 News/Albert Camus The philosopher who resisted despair.md @@ -1,6 +1,6 @@ --- -Tag: ["Art", "Literature", "France"] +Tag: ["Art", "📖", "🇫🇷"] Date: 2022-06-06 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Amateur open-source researchers went viral unpacking the war in Ukraine.md b/00.03 News/Amateur open-source researchers went viral unpacking the war in Ukraine.md index 131f03e5..ed37d7d4 100644 --- a/00.03 News/Amateur open-source researchers went viral unpacking the war in Ukraine.md +++ b/00.03 News/Amateur open-source researchers went viral unpacking the war in Ukraine.md @@ -1,7 +1,6 @@ --- -Alias: [""] -Tag: ["Tech", "OpenSource", "War"] +Tag: ["Tech", "OpenSource", "War", "🌐", "🇺🇦/🇷🇺"] Date: 2022-03-13 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/American Graffiti New Beverly Cinema.md b/00.03 News/American Graffiti New Beverly Cinema.md index 6c2595c8..882d5d8b 100644 --- a/00.03 News/American Graffiti New Beverly Cinema.md +++ b/00.03 News/American Graffiti New Beverly Cinema.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Art", "Cinema", "Classic"] +Tag: ["Art", "🎥", "Classic"] Date: 2022-07-10 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/American Racism and the Buffalo Shooting.md b/00.03 News/American Racism and the Buffalo Shooting.md index e618c0d9..68c06034 100644 --- a/00.03 News/American Racism and the Buffalo Shooting.md +++ b/00.03 News/American Racism and the Buffalo Shooting.md @@ -1,6 +1,6 @@ --- -Tag: ["Crime", "Society", "Racism", "US"] +Tag: ["Crime", "Society", "Racism", "🇺🇸"] Date: 2022-05-22 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Ancient Indian texts reveal the liberating power of metaphysics.md b/00.03 News/Ancient Indian texts reveal the liberating power of metaphysics.md index 6f33b8cd..9de190d3 100644 --- a/00.03 News/Ancient Indian texts reveal the liberating power of metaphysics.md +++ b/00.03 News/Ancient Indian texts reveal the liberating power of metaphysics.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["History", "Philosophy"] +Tag: ["History", "Philosophy", "🇮🇳"] Date: 2022-02-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Are Today's Portraitists Better Than the Old Masters — Evolve Artist.md b/00.03 News/Are Today's Portraitists Better Than the Old Masters — Evolve Artist.md index 7b1f1906..00c29fd4 100644 --- a/00.03 News/Are Today's Portraitists Better Than the Old Masters — Evolve Artist.md +++ b/00.03 News/Are Today's Portraitists Better Than the Old Masters — Evolve Artist.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Art", "Portrait", "Contemporary"] +Tag: ["Art", "🎨", "Portrait", "Contemporary"] Date: 2022-02-13 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Are the Next Global Tennis Stars Among These Tweens.md b/00.03 News/Are the Next Global Tennis Stars Among These Tweens.md index 54b88261..fe913862 100644 --- a/00.03 News/Are the Next Global Tennis Stars Among These Tweens.md +++ b/00.03 News/Are the Next Global Tennis Stars Among These Tweens.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Sport", "Tennis"] +Tag: ["Sport", "🎾"] Date: 2022-05-08 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/As El Salvador’s president tries to silence free press, journalist brothers expose his ties to street gangs - Los Angeles Times.md b/00.03 News/As El Salvador’s president tries to silence free press, journalist brothers expose his ties to street gangs - Los Angeles Times.md index 4e52c265..9f7319ea 100644 --- a/00.03 News/As El Salvador’s president tries to silence free press, journalist brothers expose his ties to street gangs - Los Angeles Times.md +++ b/00.03 News/As El Salvador’s president tries to silence free press, journalist brothers expose his ties to street gangs - Los Angeles Times.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "Crime", "CentralAmerica", "ElSalvador"] +Tag: ["Society", "Crime", "CentralAmerica", "🇸🇻"] Date: 2022-06-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/As rents rise, Americans are stuck in homes even when they want to move.md b/00.03 News/As rents rise, Americans are stuck in homes even when they want to move.md index be33b926..435edf6f 100644 --- a/00.03 News/As rents rise, Americans are stuck in homes even when they want to move.md +++ b/00.03 News/As rents rise, Americans are stuck in homes even when they want to move.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Economy", "Mobility", "US"] +Tag: ["Economy", "Mobility", "🇺🇸"] Date: 2022-02-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/As the West takes aim with Russian sanctions, here’s what we know about oligarchs’ secret finances - ICIJ.md b/00.03 News/As the West takes aim with Russian sanctions, here’s what we know about oligarchs’ secret finances - ICIJ.md index 282deae9..232597db 100644 --- a/00.03 News/As the West takes aim with Russian sanctions, here’s what we know about oligarchs’ secret finances - ICIJ.md +++ b/00.03 News/As the West takes aim with Russian sanctions, here’s what we know about oligarchs’ secret finances - ICIJ.md @@ -2,7 +2,7 @@ dg-publish: true Alias: [""] -Tag: ["Economy", "War", "Russia"] +Tag: ["Economy", "War", "🇺🇦/🇷🇺"] Date: 2022-03-16 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/At 88, Poker Legend Doyle Brunson Is Still Bluffing. Or Is He.md b/00.03 News/At 88, Poker Legend Doyle Brunson Is Still Bluffing. Or Is He.md index 729fd6c7..e7db9ccc 100644 --- a/00.03 News/At 88, Poker Legend Doyle Brunson Is Still Bluffing. Or Is He.md +++ b/00.03 News/At 88, Poker Legend Doyle Brunson Is Still Bluffing. Or Is He.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "Gambling", "Poker"] +Tag: ["Society", "Gambling", "♣️"] Date: 2022-06-26 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community.md b/00.03 News/Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community.md index 32e69bf8..1e7969d3 100644 --- a/00.03 News/Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community.md +++ b/00.03 News/Brett Parson, gay D.C. cop arrested in Florida, divides LGBTQ community.md @@ -1,6 +1,6 @@ --- -Tag: ["Crime", "Society", "US"] +Tag: ["Crime", "Society", "🇺🇸", "🏳️‍🌈"] Date: 2022-07-10 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Coffeezilla, the YouTuber Exposing Crypto Scams.md b/00.03 News/Coffeezilla, the YouTuber Exposing Crypto Scams.md index 6d4ccea0..17e0e802 100644 --- a/00.03 News/Coffeezilla, the YouTuber Exposing Crypto Scams.md +++ b/00.03 News/Coffeezilla, the YouTuber Exposing Crypto Scams.md @@ -1,6 +1,6 @@ --- -Tag: ["Tech", "Crypto", "Scam"] +Tag: ["Tech", "🪙", "Scam"] Date: 2022-05-22 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Confessions of a Bitcoin Widow How a Dream Life Turned into a Nightmare The Walrus.md b/00.03 News/Confessions of a Bitcoin Widow How a Dream Life Turned into a Nightmare The Walrus.md index 8a15d597..eb6b6d26 100644 --- a/00.03 News/Confessions of a Bitcoin Widow How a Dream Life Turned into a Nightmare The Walrus.md +++ b/00.03 News/Confessions of a Bitcoin Widow How a Dream Life Turned into a Nightmare The Walrus.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Tech", "Cryptocurrency"] +Tag: ["Tech", "🪙"] Date: 2022-02-20 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Could COVID-19 And Alzheimer's Overlaps Point Towards A Solution For Both Diseases.md b/00.03 News/Could COVID-19 And Alzheimer's Overlaps Point Towards A Solution For Both Diseases.md index 501f73eb..27f33513 100644 --- a/00.03 News/Could COVID-19 And Alzheimer's Overlaps Point Towards A Solution For Both Diseases.md +++ b/00.03 News/Could COVID-19 And Alzheimer's Overlaps Point Towards A Solution For Both Diseases.md @@ -1,7 +1,7 @@ --- Alias: [] -Tag: ["Human", "Health", "COVID", "Alzheimer"] +Tag: ["Human", "🦠", "COVID", "Alzheimer"] Date: 2022-02-13 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Cowboys paid $2.4M over cheerleader allegations.md b/00.03 News/Cowboys paid $2.4M over cheerleader allegations.md index 8edc246b..10518166 100644 --- a/00.03 News/Cowboys paid $2.4M over cheerleader allegations.md +++ b/00.03 News/Cowboys paid $2.4M over cheerleader allegations.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Sport", "Crime", "Paedophilia"] +Tag: ["🏈", "Crime", "🚺", "🇺🇸"] Date: 2022-02-20 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Derinkuyu Mysterious underground city in Turkey found in man’s basement.md b/00.03 News/Derinkuyu Mysterious underground city in Turkey found in man’s basement.md index 8d661fef..a7e3a077 100644 --- a/00.03 News/Derinkuyu Mysterious underground city in Turkey found in man’s basement.md +++ b/00.03 News/Derinkuyu Mysterious underground city in Turkey found in man’s basement.md @@ -1,6 +1,6 @@ --- -Tag: ["History", "Turkey", "Antiquity"] +Tag: ["History", "🇹🇷", "Antiquity"] Date: 2022-08-28 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Deshaun Watson’s Massages Were Enabled by the Texans and a Spa Owner.md b/00.03 News/Deshaun Watson’s Massages Were Enabled by the Texans and a Spa Owner.md index 2dc52387..9e9713d2 100644 --- a/00.03 News/Deshaun Watson’s Massages Were Enabled by the Texans and a Spa Owner.md +++ b/00.03 News/Deshaun Watson’s Massages Were Enabled by the Texans and a Spa Owner.md @@ -1,6 +1,6 @@ --- -Tag: ["Sport", "NFL", "Abuse"] +Tag: ["Sport", "🏈", "Abuse", "🇺🇸"] Date: 2022-06-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Dianne Feinstein, the Institutionalist.md b/00.03 News/Dianne Feinstein, the Institutionalist.md index 97dda0bf..faca781b 100644 --- a/00.03 News/Dianne Feinstein, the Institutionalist.md +++ b/00.03 News/Dianne Feinstein, the Institutionalist.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "Feminism", "US"] +Tag: ["Society", "🚺", "🇺🇸"] Date: 2022-06-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Did Jesse James Bury Confederate Gold These Treasure Hunters Think So..md b/00.03 News/Did Jesse James Bury Confederate Gold These Treasure Hunters Think So..md index 1e274747..f3d14d78 100644 --- a/00.03 News/Did Jesse James Bury Confederate Gold These Treasure Hunters Think So..md +++ b/00.03 News/Did Jesse James Bury Confederate Gold These Treasure Hunters Think So..md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Crime", "Western", "Myth"] +Tag: ["Crime", "Western", "Myth", "🇺🇸"] Date: 2022-05-08 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Disaster at 18,200 feet.md b/00.03 News/Disaster at 18,200 feet.md index 20486a6f..2b0fe3aa 100644 --- a/00.03 News/Disaster at 18,200 feet.md +++ b/00.03 News/Disaster at 18,200 feet.md @@ -1,6 +1,6 @@ --- -Tag: ["Alpinism", "Sport", "Accident"] +Tag: ["🧗", "Sport", "Accident"] Date: 2022-08-07 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Donald Trump and American Intelligence’s Years of Conflict.md b/00.03 News/Donald Trump and American Intelligence’s Years of Conflict.md index 8b0180bd..7be4130c 100644 --- a/00.03 News/Donald Trump and American Intelligence’s Years of Conflict.md +++ b/00.03 News/Donald Trump and American Intelligence’s Years of Conflict.md @@ -1,6 +1,6 @@ --- -Tag: ["Politics", "US", "Trump"] +Tag: ["Politics", "🇺🇸", "Trump"] Date: 2022-08-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Donald Trump and the Sweepstakes Scammers.md b/00.03 News/Donald Trump and the Sweepstakes Scammers.md index ba5c4543..e0912a87 100644 --- a/00.03 News/Donald Trump and the Sweepstakes Scammers.md +++ b/00.03 News/Donald Trump and the Sweepstakes Scammers.md @@ -1,6 +1,6 @@ --- -Tag: ["Crime", "US", "Trump"] +Tag: ["Crime", "🇺🇸", "Trump"] Date: 2022-08-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Down the Hatch.md b/00.03 News/Down the Hatch.md index 5c4d7947..d3b9bb79 100644 --- a/00.03 News/Down the Hatch.md +++ b/00.03 News/Down the Hatch.md @@ -2,7 +2,7 @@ dg-publish: true Alias: [""] -Tag: ["Society", "US", "Circus"] +Tag: ["Society", "🇺🇸", "🎪"] Date: 2022-04-25 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/E-commerce giants couldn’t deliver. So these islanders built their own online shopping ecosystem.md b/00.03 News/E-commerce giants couldn’t deliver. So these islanders built their own online shopping ecosystem.md index 31aa7bd0..929e5a2e 100644 --- a/00.03 News/E-commerce giants couldn’t deliver. So these islanders built their own online shopping ecosystem.md +++ b/00.03 News/E-commerce giants couldn’t deliver. So these islanders built their own online shopping ecosystem.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Society", "PolynesieFrancaise", "OnlineShopping"] +Tag: ["Economy", "🌐", "🇫🇷/🇵🇫", "OnlineShopping"] Date: 2022-04-03 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Ego is the Enemy The Legend of Genghis Khan - Farnam Street.md b/00.03 News/Ego is the Enemy The Legend of Genghis Khan - Farnam Street.md index 4ced2f89..cfd6959e 100644 --- a/00.03 News/Ego is the Enemy The Legend of Genghis Khan - Farnam Street.md +++ b/00.03 News/Ego is the Enemy The Legend of Genghis Khan - Farnam Street.md @@ -1,7 +1,5 @@ --- -dg-publish: true -Alias: [""] Tag: ["History", "Leadership", "Legacy"] Date: 2022-03-19 DocType: "WebClipping" diff --git a/00.03 News/Elon Musk Got Twitter Because He Gets Twitter.md b/00.03 News/Elon Musk Got Twitter Because He Gets Twitter.md index 6eabb346..5ca3389f 100644 --- a/00.03 News/Elon Musk Got Twitter Because He Gets Twitter.md +++ b/00.03 News/Elon Musk Got Twitter Because He Gets Twitter.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Tech", "Twitter", "Musk"] +Tag: ["Tech", "🌐", "Twitter", "Musk"] Date: 2022-05-01 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/For the West, the Worst Is Yet to Come.md b/00.03 News/For the West, the Worst Is Yet to Come.md index 078210a5..84bd083b 100644 --- a/00.03 News/For the West, the Worst Is Yet to Come.md +++ b/00.03 News/For the West, the Worst Is Yet to Come.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "War", "Russia"] +Tag: ["Society", "War", "🇺🇦/🇷🇺"] Date: 2022-03-13 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/France and PSG star Jean-Pierre Adams was in a coma for 39 years. His wife never left his side.md b/00.03 News/France and PSG star Jean-Pierre Adams was in a coma for 39 years. His wife never left his side.md index 775403a8..e7c4ed72 100644 --- a/00.03 News/France and PSG star Jean-Pierre Adams was in a coma for 39 years. His wife never left his side.md +++ b/00.03 News/France and PSG star Jean-Pierre Adams was in a coma for 39 years. His wife never left his side.md @@ -2,7 +2,7 @@ dg-publish: true Alias: [""] -Tag: ["Human", "Football", "Desease"] +Tag: ["Human", "⚽️", "🦠"] Date: 2022-03-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Google Search Is Dying.md b/00.03 News/Google Search Is Dying.md index c2e1072a..b7016846 100644 --- a/00.03 News/Google Search Is Dying.md +++ b/00.03 News/Google Search Is Dying.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Tech"] +Tag: ["Tech", "🌐"] Date: 2022-02-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/H-Town United An Unlikely Soccer Power Rises in Texas.md b/00.03 News/H-Town United An Unlikely Soccer Power Rises in Texas.md index b77d5051..408a1f3f 100644 --- a/00.03 News/H-Town United An Unlikely Soccer Power Rises in Texas.md +++ b/00.03 News/H-Town United An Unlikely Soccer Power Rises in Texas.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Sport", "Football", US] +Tag: ["Sport", "🏈", "🇺🇸"] Date: 2022-04-10 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Hazing, fighting, sexual assaults How Valley Forge Military Academy devolved into “Lord of the Flies”.md b/00.03 News/Hazing, fighting, sexual assaults How Valley Forge Military Academy devolved into “Lord of the Flies”.md index a0e1a81f..ac6fa49d 100644 --- a/00.03 News/Hazing, fighting, sexual assaults How Valley Forge Military Academy devolved into “Lord of the Flies”.md +++ b/00.03 News/Hazing, fighting, sexual assaults How Valley Forge Military Academy devolved into “Lord of the Flies”.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "Military", "Abuse"] +Tag: ["Society", "Military", "Abuse", "🇺🇸"] Date: 2022-06-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/He Had a Dark Secret. It Changed His Best Friend’s Life..md b/00.03 News/He Had a Dark Secret. It Changed His Best Friend’s Life..md index 55861683..44f768fe 100644 --- a/00.03 News/He Had a Dark Secret. It Changed His Best Friend’s Life..md +++ b/00.03 News/He Had a Dark Secret. It Changed His Best Friend’s Life..md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "Homeless"] +Tag: ["Society", "Homeless", "🇺🇸"] Date: 2022-07-10 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/He spent 25 years infiltrating the Klan.md b/00.03 News/He spent 25 years infiltrating the Klan.md index 4947fedc..cb3251e4 100644 --- a/00.03 News/He spent 25 years infiltrating the Klan.md +++ b/00.03 News/He spent 25 years infiltrating the Klan.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Crime", "OrganisedCrime"] +Tag: ["Crime", "OrganisedCrime", "🇺🇸"] Date: 2022-02-06 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How Bolivia’s ruthless tin baron saved thousands of Jewish refugees.md b/00.03 News/How Bolivia’s ruthless tin baron saved thousands of Jewish refugees.md index 8eaf6850..0688fdf0 100644 --- a/00.03 News/How Bolivia’s ruthless tin baron saved thousands of Jewish refugees.md +++ b/00.03 News/How Bolivia’s ruthless tin baron saved thousands of Jewish refugees.md @@ -1,6 +1,6 @@ --- -Tag: ["History", "WWII", "Bolivia", "Rescue"] +Tag: ["History", "WWII", "🇧🇴", "Rescue"] Date: 2022-08-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How Hollywood’s Blockbuster Golden Boys Went Weird Los Angeles Magazine.md b/00.03 News/How Hollywood’s Blockbuster Golden Boys Went Weird Los Angeles Magazine.md index 2a392b20..487f88f3 100644 --- a/00.03 News/How Hollywood’s Blockbuster Golden Boys Went Weird Los Angeles Magazine.md +++ b/00.03 News/How Hollywood’s Blockbuster Golden Boys Went Weird Los Angeles Magazine.md @@ -1,6 +1,6 @@ --- -Tag: ["Art", "Cinema", "Hollywood"] +Tag: ["Art", "🎥", "Hollywood"] Date: 2022-05-22 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How Owamni Became the Best New Restaurant in the United States.md b/00.03 News/How Owamni Became the Best New Restaurant in the United States.md index 06845944..2c3bf9be 100644 --- a/00.03 News/How Owamni Became the Best New Restaurant in the United States.md +++ b/00.03 News/How Owamni Became the Best New Restaurant in the United States.md @@ -1,6 +1,6 @@ --- -Tag: ["Art", "Food", "US"] +Tag: ["Art", "🍽️", "🇺🇸"] Date: 2022-09-25 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How PM’s former aide had to ‘nanny him’ through lockdown.md b/00.03 News/How PM’s former aide had to ‘nanny him’ through lockdown.md index d495c696..b3438af9 100644 --- a/00.03 News/How PM’s former aide had to ‘nanny him’ through lockdown.md +++ b/00.03 News/How PM’s former aide had to ‘nanny him’ through lockdown.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "Politics", "UK", "BoJo"] +Tag: ["Society", "Politics", "🇬🇧", "BoJo"] Date: 2022-07-31 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How Putin’s Oligarchs Bought London.md b/00.03 News/How Putin’s Oligarchs Bought London.md index 582e0800..68d41800 100644 --- a/00.03 News/How Putin’s Oligarchs Bought London.md +++ b/00.03 News/How Putin’s Oligarchs Bought London.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Economy", "Russia", "London"] +Tag: ["Economy", "🇷🇺", "🇬🇧", "London"] Date: 2022-03-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How The Inca Used Knots To Tell Stories.md b/00.03 News/How The Inca Used Knots To Tell Stories.md index 713cc1c6..9dc05c96 100644 --- a/00.03 News/How The Inca Used Knots To Tell Stories.md +++ b/00.03 News/How The Inca Used Knots To Tell Stories.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["History", "SouthAmerica", "Inca"] +Tag: ["History", "🇵🇪", "Inca"] Date: 2022-03-19 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How a billionaires boys’ club came to dominate the public square.md b/00.03 News/How a billionaires boys’ club came to dominate the public square.md index f88f5a0f..aa77215d 100644 --- a/00.03 News/How a billionaires boys’ club came to dominate the public square.md +++ b/00.03 News/How a billionaires boys’ club came to dominate the public square.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Society", "Economy"] +Tag: ["Society", "Economy", "🇺🇸"] Date: 2022-05-08 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How an Ivy League School Turned Against a Student.md b/00.03 News/How an Ivy League School Turned Against a Student.md index 17e82852..e52bde1e 100644 --- a/00.03 News/How an Ivy League School Turned Against a Student.md +++ b/00.03 News/How an Ivy League School Turned Against a Student.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Society", "Education", "US"] +Tag: ["Society", "Education", "🇺🇸"] Date: 2022-04-16 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How did people sleep in the Middle Ages - Medievalists.net.md b/00.03 News/How did people sleep in the Middle Ages - Medievalists.net.md index b054d1b7..869356dd 100644 --- a/00.03 News/How did people sleep in the Middle Ages - Medievalists.net.md +++ b/00.03 News/How did people sleep in the Middle Ages - Medievalists.net.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["History", "MiddleAge", "Sleep"] +Tag: ["History", "MiddleAge", "😴"] Date: 2022-04-03 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How the NYPD Cracked the Michael K. Williams Overdose Case.md b/00.03 News/How the NYPD Cracked the Michael K. Williams Overdose Case.md index 5d82a851..41765337 100644 --- a/00.03 News/How the NYPD Cracked the Michael K. Williams Overdose Case.md +++ b/00.03 News/How the NYPD Cracked the Michael K. Williams Overdose Case.md @@ -1,6 +1,6 @@ --- -Tag: ["Crime", "Drugs", "Actor", "TheWire"] +Tag: ["Crime", "📺", "Drugs", "Actor", "TheWire"] Date: 2022-02-06 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How the enigmatic Nefertiti came to be locked away in Germany Aeon Essays.md b/00.03 News/How the enigmatic Nefertiti came to be locked away in Germany Aeon Essays.md index fc9c2a02..1e4cbfd9 100644 --- a/00.03 News/How the enigmatic Nefertiti came to be locked away in Germany Aeon Essays.md +++ b/00.03 News/How the enigmatic Nefertiti came to be locked away in Germany Aeon Essays.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["History", "Egypt", "Pharaoh"] +Tag: ["History", "🇪🇬", "Pharaoh"] Date: 2022-02-12 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How to get the excitement back Psyche Guides.md b/00.03 News/How to get the excitement back Psyche Guides.md index f6010e8c..a4f23cc0 100644 --- a/00.03 News/How to get the excitement back Psyche Guides.md +++ b/00.03 News/How to get the excitement back Psyche Guides.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Human", "Sex", "Desire"] +Tag: ["Human", "🍆", "Desire"] Date: 2022-03-16 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/How ‘The Bear’ Captures the Panic of Modern Work.md b/00.03 News/How ‘The Bear’ Captures the Panic of Modern Work.md index e6517235..710b6326 100644 --- a/00.03 News/How ‘The Bear’ Captures the Panic of Modern Work.md +++ b/00.03 News/How ‘The Bear’ Captures the Panic of Modern Work.md @@ -1,6 +1,6 @@ --- -Tag: ["Art", "TVShow"] +Tag: ["Art", "📺"] Date: 2022-08-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Imagine Scythia’s fierce warrior women, the real Amazons Aeon Essays.md b/00.03 News/Imagine Scythia’s fierce warrior women, the real Amazons Aeon Essays.md index 50fd7f9c..069f91c1 100644 --- a/00.03 News/Imagine Scythia’s fierce warrior women, the real Amazons Aeon Essays.md +++ b/00.03 News/Imagine Scythia’s fierce warrior women, the real Amazons Aeon Essays.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["History", "Antiquity", "Amazon"] +Tag: ["History", "Antiquity", "Amazon", "🚺"] Date: 2022-02-12 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/In Hasidic Enclaves, Failing Yeshivas Flush With Public Money.md b/00.03 News/In Hasidic Enclaves, Failing Yeshivas Flush With Public Money.md index f61d5218..e1d62a24 100644 --- a/00.03 News/In Hasidic Enclaves, Failing Yeshivas Flush With Public Money.md +++ b/00.03 News/In Hasidic Enclaves, Failing Yeshivas Flush With Public Money.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "Yeshiva", "School"] +Tag: ["Society", "✡️", "School", "🇺🇸"] Date: 2022-09-25 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/In Kashmir, indigenous Muslim healers cure broken bones with spirituality — and science.md b/00.03 News/In Kashmir, indigenous Muslim healers cure broken bones with spirituality — and science.md index 4023363a..940d6439 100644 --- a/00.03 News/In Kashmir, indigenous Muslim healers cure broken bones with spirituality — and science.md +++ b/00.03 News/In Kashmir, indigenous Muslim healers cure broken bones with spirituality — and science.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Human", "Medicine", "Spirituality"] +Tag: ["Human", "Medicine", "Spirituality", "🇮🇳"] Date: 2022-02-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Inside a $4-billion family feud.md b/00.03 News/Inside a $4-billion family feud.md index 9a6fc629..ccec3bf0 100644 --- a/00.03 News/Inside a $4-billion family feud.md +++ b/00.03 News/Inside a $4-billion family feud.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "Inheritance"] +Tag: ["Society", "Inheritance", "🇺🇸"] Date: 2022-02-20 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Inside the Silent ADHD Epidemic Among Women.md b/00.03 News/Inside the Silent ADHD Epidemic Among Women.md index db807f0b..0a3ec354 100644 --- a/00.03 News/Inside the Silent ADHD Epidemic Among Women.md +++ b/00.03 News/Inside the Silent ADHD Epidemic Among Women.md @@ -1,6 +1,6 @@ --- -Tag: ["Human", "ADHD", "Woman"] +Tag: ["Human", "ADHD", "🚺"] Date: 2022-09-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Iran’s Women Are (Once Again) the Vanguards of a Revolution.md b/00.03 News/Iran’s Women Are (Once Again) the Vanguards of a Revolution.md index bcf2ff7b..7ad600e2 100644 --- a/00.03 News/Iran’s Women Are (Once Again) the Vanguards of a Revolution.md +++ b/00.03 News/Iran’s Women Are (Once Again) the Vanguards of a Revolution.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "Woman", "Iran"] +Tag: ["Society", "🚺", "🇮🇷"] Date: 2022-09-30 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/It was a secret road map for breaking the law to get an abortion. Now, ‘The List’ and its tactics are resurfacing.md b/00.03 News/It was a secret road map for breaking the law to get an abortion. Now, ‘The List’ and its tactics are resurfacing.md index ce758e48..13ce8e5b 100644 --- a/00.03 News/It was a secret road map for breaking the law to get an abortion. Now, ‘The List’ and its tactics are resurfacing.md +++ b/00.03 News/It was a secret road map for breaking the law to get an abortion. Now, ‘The List’ and its tactics are resurfacing.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "US", "Abortion"] +Tag: ["Society", "🇺🇸", "🚺", "Abortion"] Date: 2022-07-17 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/It’s 10 PM. Do You Know Where Your Cat Is Hakai Magazine.md b/00.03 News/It’s 10 PM. Do You Know Where Your Cat Is Hakai Magazine.md index db48e658..c113fa77 100644 --- a/00.03 News/It’s 10 PM. Do You Know Where Your Cat Is Hakai Magazine.md +++ b/00.03 News/It’s 10 PM. Do You Know Where Your Cat Is Hakai Magazine.md @@ -1,6 +1,6 @@ --- -Tag: ["Animal", "Cat"] +Tag: ["Animal", "🐈"] Date: 2022-06-05 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Jackass Oral Hostory.md b/00.03 News/Jackass Oral Hostory.md index 9f298507..c51ec3be 100644 --- a/00.03 News/Jackass Oral Hostory.md +++ b/00.03 News/Jackass Oral Hostory.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Media", "Jackass"] +Tag: ["Media", "📺", "Jackass"] Date: 2022-02-13 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Javanka in Exile.md b/00.03 News/Javanka in Exile.md index 97b0d66d..bf2fdaa6 100644 --- a/00.03 News/Javanka in Exile.md +++ b/00.03 News/Javanka in Exile.md @@ -1,6 +1,6 @@ --- -Tag: ["Politics", "US", "People"] +Tag: ["Politics", "🇺🇸", "People"] Date: 2022-02-06 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Jeff Bezos’s Next Monopoly The Press.md b/00.03 News/Jeff Bezos’s Next Monopoly The Press.md index 45728786..7f154792 100644 --- a/00.03 News/Jeff Bezos’s Next Monopoly The Press.md +++ b/00.03 News/Jeff Bezos’s Next Monopoly The Press.md @@ -1,6 +1,6 @@ --- -Tag: ["Tech", "Bezos", "Press"] +Tag: ["Tech", "Bezos", "🗞️"] Date: 2022-06-26 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Jeff Zucker Scandal Inside the CNN President's Downfall.md b/00.03 News/Jeff Zucker Scandal Inside the CNN President's Downfall.md index 2007b130..1fd7cdf1 100644 --- a/00.03 News/Jeff Zucker Scandal Inside the CNN President's Downfall.md +++ b/00.03 News/Jeff Zucker Scandal Inside the CNN President's Downfall.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "Media", "Disinformation"] +Tag: ["Society", "🗞️", "Disinformation"] Date: 2022-03-13 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Jeffrey Epstein, a Rare Cello and an Enduring Mystery.md b/00.03 News/Jeffrey Epstein, a Rare Cello and an Enduring Mystery.md index 77b467fe..a5dd4646 100644 --- a/00.03 News/Jeffrey Epstein, a Rare Cello and an Enduring Mystery.md +++ b/00.03 News/Jeffrey Epstein, a Rare Cello and an Enduring Mystery.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "Crime", "Epstein"] +Tag: ["Society", "Crime", "Epstein", "🇺🇸"] Date: 2022-04-23 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Kerouac at 100 - The American Scholar.md b/00.03 News/Kerouac at 100 - The American Scholar.md index 1c4f7546..7575f1e2 100644 --- a/00.03 News/Kerouac at 100 - The American Scholar.md +++ b/00.03 News/Kerouac at 100 - The American Scholar.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Art", "Literature", "US"] +Tag: ["Art", "📖", "🇺🇸"] Date: 2022-04-06 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Librarian finds love notes, doodles in books and shares them with a grateful public.md b/00.03 News/Librarian finds love notes, doodles in books and shares them with a grateful public.md index 993666cf..676cab89 100644 --- a/00.03 News/Librarian finds love notes, doodles in books and shares them with a grateful public.md +++ b/00.03 News/Librarian finds love notes, doodles in books and shares them with a grateful public.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "US", "Library"] +Tag: ["Society", "🇺🇸", "📚"] Date: 2022-08-07 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Liz Truss learns the hard way that Britain is not the US.md b/00.03 News/Liz Truss learns the hard way that Britain is not the US.md new file mode 100644 index 00000000..ad216bfa --- /dev/null +++ b/00.03 News/Liz Truss learns the hard way that Britain is not the US.md @@ -0,0 +1,57 @@ +--- + +Tag: ["Politics", "🇬🇧", "Tories", "Truss"] +Date: 2022-10-02 +DocType: "WebClipping" +Hierarchy: +TimeStamp: 2022-10-02 +Link: https://www.irishtimes.com/world/uk/2022/09/27/truss-learns-the-hard-way-that-britain-isnt-the-us/ +location: +CollapseMetaTable: true + +--- + +Parent:: [[@News|News]] +Read:: No + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-LizTrusslearnsthehardwaythatBritainisnottheUSNSave + +  + +# Liz Truss learns the hard way that Britain is not the US + +Into Brideshead Revisited, near the middle, Evelyn Waugh crowbars a scene on a cruise ship for the express purpose of mocking Americans. There is a character named “Senator Stuyvesant-Oglander”. Each and every drink has ice in it. No one is able to tell friendship from desperate bonhomie. The crustiest of England’s great novelists wrote better stuff, no doubt, but the passage is an illuminating fragment of a time when anti-Americanism was a Tory thing. + +And one that had its uses. If nothing else, Britain’s establishment was clear back then that America was a different country. A midsized archipelago couldn’t look to a resource-rich market of continental magnitude for governmental ideas. + +If anti-Americanism was bad, look what its opposite has done. Britain is in trouble because its elite is so engrossed with the US as to confuse it for their own nation. The UK does not issue the world’s reserve currency. It does not have near-limitless demand for its sovereign debt. It can’t, as US Republicans sometimes do, cut taxes on the hunch that lawmakers of the future will trim public spending. Reaganism was a good idea. Reaganism without the dollar isn’t. If UK premier Liz Truss has a programme, though, that is its four-word expression. + +So much of what Britain has done and thought in recent years makes sense if you assume it is a country of 330 million people with $20 trillion annual output. The idea that it could ever look the EU in the eye as an adversarial negotiator, for instance. Or the decision to grow picky about Chinese inward investment at the same time as forfeiting the European market. Or the bet that Washington was going to entertain a meaningful bilateral trade deal. Superpowers get to behave with such presumption. + +Why does Britain think that it can, too? Don’t blame imperial nostalgia. (If it were that, France, Spain, the Netherlands, Belgium and Portugal would show the same hubris.) Blame the distorting effect of language. Because the UK’s governing class can follow US politics as easily as their own, they get lost in it. They elide the two countries. What doesn’t help is the freakish fact that Britain’s capital, where its elites live, is as big as any US city, despite the national population being a fifth of America’s. You can see why, from a London angle, the two nations seem comparable. + +Reaganism without the dollar: this isn’t one woman’s arbitrary whim. It is the culmination of decades of (unreciprocated) US focus in a Robert Caro-hooked Westminster. You would think from British public discourse that Earth has two sovereign nations. If the NHS is fairer than the US healthcare model, it is the world’s best. If Elizabeth II was better than Donald Trump, monarchy beats republicanism tout court. People who can’t name a cabinet member in Paris or Berlin (where so much that affects Britain, from migrant flows to energy, is settled) will follow the US midterms in November. The EU is a, perhaps the, regulatory superpower in the world. UK politicos find Iowa more diverting. + +The left is as culpable as Truss. From 2010 to 2015, critics of “austerity” urged the Tories to take the softer US approach. The cross-Atlantic comparison implied that then prime minister David Cameron had King Dollar behind him. Soon after came the importation of identity politics from a republic with a wholly different racial history. + +The anti-Americanism of the Waugh generation was petulant. It was sourness at the imperial usurper dressed up as high taste. But at least it had no illusions. The snobs understood that America was alien, and inimitable. Tories who patronised the US – Harold Macmillan, Ted Heath – were quicker than much of the Labour Party to see that Britain belonged with Europe. + +Truss and her cohort of Tories have none of that snide but ultimately healthy distance from the US. Take her vaunted supply-side revolution. Like all armchair free-marketeers (she has never set up a business) she believes her nation is a blast of deregulation away from American levels of entrepreneurial vim. It isn’t. The creator of a successful product in Dallas can expand to LA and Boston with little friction. The UK doesn’t have a market of hundreds of millions of people. (It did, once, but the present chancellor of the exchequer voted to leave it.) Someone who glides over that point is also liable to miss the contrasting appeal to investors of gilts and Treasuries. + +Some readers balked last month when I wrote that Truss might not last until the next election. Even I didn’t think she would trip so soon. It is a kind of patriotism, I suppose, to mistake your nation for a superpower. – Copyright The Financial Times Limited 2022 + +  +  + +--- +`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))` \ No newline at end of file diff --git a/00.03 News/Louisiana Girls.md b/00.03 News/Louisiana Girls.md index 2af4a8c0..07029c5e 100644 --- a/00.03 News/Louisiana Girls.md +++ b/00.03 News/Louisiana Girls.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Society", "Starlet", "Louisiana"] +Tag: ["Society", "Starlet", "Louisiana", "🇺🇸"] Date: 2022-03-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Lovemaking for longevity a recipe from Tokyo’s imperial archives Aeon Essays.md b/00.03 News/Lovemaking for longevity a recipe from Tokyo’s imperial archives Aeon Essays.md index 996609d3..2d03f3cd 100644 --- a/00.03 News/Lovemaking for longevity a recipe from Tokyo’s imperial archives Aeon Essays.md +++ b/00.03 News/Lovemaking for longevity a recipe from Tokyo’s imperial archives Aeon Essays.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Human", "Kinky"] +Tag: ["Human", "🍆"] Date: 2022-02-12 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/L’enquête « Suisse Secrets » relance le débat sur la liberté de la presse face au secret bancaire.md b/00.03 News/L’enquête « Suisse Secrets » relance le débat sur la liberté de la presse face au secret bancaire.md index 8a507e87..d2d6a6f1 100644 --- a/00.03 News/L’enquête « Suisse Secrets » relance le débat sur la liberté de la presse face au secret bancaire.md +++ b/00.03 News/L’enquête « Suisse Secrets » relance le débat sur la liberté de la presse face au secret bancaire.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Economy", "Banking", "Switerland"] +Tag: ["Economy", "Banking", "🇨🇭"] Date: 2022-02-22 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Massacre in Tadamon how two academics hunted down a Syrian war criminal.md b/00.03 News/Massacre in Tadamon how two academics hunted down a Syrian war criminal.md index 6935b0e3..c97fb5f1 100644 --- a/00.03 News/Massacre in Tadamon how two academics hunted down a Syrian war criminal.md +++ b/00.03 News/Massacre in Tadamon how two academics hunted down a Syrian war criminal.md @@ -2,7 +2,7 @@ dg-publish: true Alias: [""] -Tag: ["Society", "Syria", "War"] +Tag: ["Society", "🇸🇾", "War"] Date: 2022-05-01 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Meet Richard Fritz, America’s Most Unelectable Elected Official Defector.md b/00.03 News/Meet Richard Fritz, America’s Most Unelectable Elected Official Defector.md index 7b25fe9a..6cc01297 100644 --- a/00.03 News/Meet Richard Fritz, America’s Most Unelectable Elected Official Defector.md +++ b/00.03 News/Meet Richard Fritz, America’s Most Unelectable Elected Official Defector.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "Politician", "Scandal"] +Tag: ["Society", "Politician", "Scandal", "🇺🇸"] Date: 2022-07-10 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Meet the DIY Duo Behind the Amazon Labor Union’s Guerrilla Bid to Make History.md b/00.03 News/Meet the DIY Duo Behind the Amazon Labor Union’s Guerrilla Bid to Make History.md index 0739ae1e..b77013d6 100644 --- a/00.03 News/Meet the DIY Duo Behind the Amazon Labor Union’s Guerrilla Bid to Make History.md +++ b/00.03 News/Meet the DIY Duo Behind the Amazon Labor Union’s Guerrilla Bid to Make History.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Economy", "Union", "Amazon"] +Tag: ["Economy", "Union", "Amazon", "🇺🇸"] Date: 2022-04-10 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Meghan of Montecito.md b/00.03 News/Meghan of Montecito.md index 059cccf0..8ac4e015 100644 --- a/00.03 News/Meghan of Montecito.md +++ b/00.03 News/Meghan of Montecito.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "UK", "Royal"] +Tag: ["Society", "🇺🇸", "🇬🇧", "👑"] Date: 2022-09-11 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Migrants faced the worst of the gig economy, so they made their own delivery app.md b/00.03 News/Migrants faced the worst of the gig economy, so they made their own delivery app.md index d28b6624..d7e6052f 100644 --- a/00.03 News/Migrants faced the worst of the gig economy, so they made their own delivery app.md +++ b/00.03 News/Migrants faced the worst of the gig economy, so they made their own delivery app.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Economy", "Migration", "Entrepreneurship"] +Tag: ["Economy", "Migration", "Entrepreneurship", "🌐"] Date: 2022-02-16 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/My transformative first trip to Japan · Part 4.md b/00.03 News/My transformative first trip to Japan · Part 4.md index ad0428c2..c19e4f96 100644 --- a/00.03 News/My transformative first trip to Japan · Part 4.md +++ b/00.03 News/My transformative first trip to Japan · Part 4.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Travel"] +Tag: ["Travel", "🇯🇵"] Date: 2022-02-10 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/North Korea Hacked Him. So He Took Down Its Internet.md b/00.03 News/North Korea Hacked Him. So He Took Down Its Internet.md index 89bc5cab..9cb83706 100644 --- a/00.03 News/North Korea Hacked Him. So He Took Down Its Internet.md +++ b/00.03 News/North Korea Hacked Him. So He Took Down Its Internet.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Tech", "Hacking", "NorthKorea"] +Tag: ["Tech", "Hacking", "🌐", "🇰🇵"] Date: 2022-05-15 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Nurses Have Finally Learned What They’re Worth.md b/00.03 News/Nurses Have Finally Learned What They’re Worth.md index c1e4dbac..69578924 100644 --- a/00.03 News/Nurses Have Finally Learned What They’re Worth.md +++ b/00.03 News/Nurses Have Finally Learned What They’re Worth.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "Hospital"] +Tag: ["Society", "Hospital", "🇺🇸"] Date: 2022-02-20 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/On the pleasures of hand-writing letters you’ll never send.md b/00.03 News/On the pleasures of hand-writing letters you’ll never send.md index 0df9b088..cc2ae1bd 100644 --- a/00.03 News/On the pleasures of hand-writing letters you’ll never send.md +++ b/00.03 News/On the pleasures of hand-writing letters you’ll never send.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Human", "Psychology"] +Tag: ["Human", "Psychology", "✍️"] Date: 2022-02-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Opinion Maternal Instinct Is a Myth That Men Created.md b/00.03 News/Opinion Maternal Instinct Is a Myth That Men Created.md index 339898a3..abf421c6 100644 --- a/00.03 News/Opinion Maternal Instinct Is a Myth That Men Created.md +++ b/00.03 News/Opinion Maternal Instinct Is a Myth That Men Created.md @@ -1,6 +1,6 @@ --- -Tag: ["Human", "Maternity"] +Tag: ["Human", "🚺", "Maternity"] Date: 2022-08-28 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Opinion The Russia Sanctions That Could Actually Stop Putin.md b/00.03 News/Opinion The Russia Sanctions That Could Actually Stop Putin.md index 02cf8e21..9b575157 100644 --- a/00.03 News/Opinion The Russia Sanctions That Could Actually Stop Putin.md +++ b/00.03 News/Opinion The Russia Sanctions That Could Actually Stop Putin.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Politics", "War", "Russia"] +Tag: ["Politics", "War", "🇺🇦/🇷🇺"] Date: 2022-02-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/PM to fill out party questionnaire.md b/00.03 News/PM to fill out party questionnaire.md index 0eb42f28..5ef337c3 100644 --- a/00.03 News/PM to fill out party questionnaire.md +++ b/00.03 News/PM to fill out party questionnaire.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Politics", "UK", "Partygate"] +Tag: ["Politics", "🇬🇧", "Partygate"] Date: 2022-02-10 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Putin’s New Iron Curtain.md b/00.03 News/Putin’s New Iron Curtain.md index d6907900..5607b010 100644 --- a/00.03 News/Putin’s New Iron Curtain.md +++ b/00.03 News/Putin’s New Iron Curtain.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Politics", "War", "Russia"] +Tag: ["Politics", "War", "🇺🇦/🇷🇺"] Date: 2022-02-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Reading Simone de Beauvoir’s ‘Ethics of Ambiguity’ in prison Aeon Essays.md b/00.03 News/Reading Simone de Beauvoir’s ‘Ethics of Ambiguity’ in prison Aeon Essays.md index 55bcfc95..b7488fa5 100644 --- a/00.03 News/Reading Simone de Beauvoir’s ‘Ethics of Ambiguity’ in prison Aeon Essays.md +++ b/00.03 News/Reading Simone de Beauvoir’s ‘Ethics of Ambiguity’ in prison Aeon Essays.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Human", "Philosophy"] +Tag: ["Human", "Philosophy", "🚺"] Date: 2022-02-28 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Remembering Bill Russell The Greatest Winner in Sports.md b/00.03 News/Remembering Bill Russell The Greatest Winner in Sports.md index f5f882e4..f60e253f 100644 --- a/00.03 News/Remembering Bill Russell The Greatest Winner in Sports.md +++ b/00.03 News/Remembering Bill Russell The Greatest Winner in Sports.md @@ -1,6 +1,6 @@ --- -Tag: ["Sport", "NBA", "Orbituary"] +Tag: ["Sport", "🏀", "🇺🇸", "Orbituary"] Date: 2022-08-07 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Riding London’s Unexpectedly Fantastic Elizabeth Line.md b/00.03 News/Riding London’s Unexpectedly Fantastic Elizabeth Line.md index fc0d80c4..cfa05b0d 100644 --- a/00.03 News/Riding London’s Unexpectedly Fantastic Elizabeth Line.md +++ b/00.03 News/Riding London’s Unexpectedly Fantastic Elizabeth Line.md @@ -1,6 +1,6 @@ --- -Tag: ["Travel", "London", "Public", "Tube"] +Tag: ["Travel", "London", "Public", "🚇", "🇬🇧"] Date: 2022-06-05 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/S.F. spent millions to shelter homeless in hotels. These are the disastrous results.md b/00.03 News/S.F. spent millions to shelter homeless in hotels. These are the disastrous results.md index 09f6d25d..c7be467c 100644 --- a/00.03 News/S.F. spent millions to shelter homeless in hotels. These are the disastrous results.md +++ b/00.03 News/S.F. spent millions to shelter homeless in hotels. These are the disastrous results.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Society", "Housing", "SF"] +Tag: ["Society", "🇺🇸", "Housing", "SF"] Date: 2022-05-01 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Saint Peter’s Is a Miracle.md b/00.03 News/Saint Peter’s Is a Miracle.md index fa5ada1c..fb78975a 100644 --- a/00.03 News/Saint Peter’s Is a Miracle.md +++ b/00.03 News/Saint Peter’s Is a Miracle.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Sport", "Basketball", "NCAA"] +Tag: ["Sport", "🏀", "🇺🇸", "NCAA"] Date: 2022-03-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Saudi Crown Prince’s $500 Billion ’Smart City’ Faces Major Setbacks.md b/00.03 News/Saudi Crown Prince’s $500 Billion ’Smart City’ Faces Major Setbacks.md index 4d3aa9c0..63c7ca8c 100644 --- a/00.03 News/Saudi Crown Prince’s $500 Billion ’Smart City’ Faces Major Setbacks.md +++ b/00.03 News/Saudi Crown Prince’s $500 Billion ’Smart City’ Faces Major Setbacks.md @@ -1,6 +1,6 @@ --- -Tag: ["Economy", "Saudi", "Project", "Future", "City"] +Tag: ["Economy", "🇸🇦", "Project", "Future", "City"] Date: 2022-07-17 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Scenes from an Open Marriage - The Paris Review.md b/00.03 News/Scenes from an Open Marriage - The Paris Review.md index 1432567b..5cbe9672 100644 --- a/00.03 News/Scenes from an Open Marriage - The Paris Review.md +++ b/00.03 News/Scenes from an Open Marriage - The Paris Review.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "Libertinage"] +Tag: ["Society", "🍆", "Libertinage"] Date: 2022-07-17 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Seven years of sex abuse How Mormon officials let it happen.md b/00.03 News/Seven years of sex abuse How Mormon officials let it happen.md index fe87d5be..c35f14ca 100644 --- a/00.03 News/Seven years of sex abuse How Mormon officials let it happen.md +++ b/00.03 News/Seven years of sex abuse How Mormon officials let it happen.md @@ -1,6 +1,6 @@ --- -Tag: ["Crime", "Society", "SexualAbuse"] +Tag: ["Crime", "Society", "SexualAbuse", "🇺🇸"] Date: 2022-08-07 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Sex Pistols Rolling Stone Cover Story on Notorious Punk Band.md b/00.03 News/Sex Pistols Rolling Stone Cover Story on Notorious Punk Band.md index c4ee0641..e6ee20b7 100644 --- a/00.03 News/Sex Pistols Rolling Stone Cover Story on Notorious Punk Band.md +++ b/00.03 News/Sex Pistols Rolling Stone Cover Story on Notorious Punk Band.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Art", "Music", "RocknRoll"] +Tag: ["Art", "🎶", "🎸"] Date: 2022-03-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Slow sex, long life.md b/00.03 News/Slow sex, long life.md index 3835cdeb..733fd1f4 100644 --- a/00.03 News/Slow sex, long life.md +++ b/00.03 News/Slow sex, long life.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Human", "Wellbeing"] +Tag: ["Human", "🍆", "Wellbeing"] Date: 2022-03-06 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Smelling Farts Is Healthy Research, Potential Benefits, and More.md b/00.03 News/Smelling Farts Is Healthy Research, Potential Benefits, and More.md index d1ae95ee..cb547bb2 100644 --- a/00.03 News/Smelling Farts Is Healthy Research, Potential Benefits, and More.md +++ b/00.03 News/Smelling Farts Is Healthy Research, Potential Benefits, and More.md @@ -1,6 +1,6 @@ --- -Tag: ["Human", "Health", "Prout"] +Tag: ["Human", "Health", "💨"] Date: 2022-09-29 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Solomun, the D.J. Who Keeps Ibiza Dancing.md b/00.03 News/Solomun, the D.J. Who Keeps Ibiza Dancing.md new file mode 100644 index 00000000..82807dad --- /dev/null +++ b/00.03 News/Solomun, the D.J. Who Keeps Ibiza Dancing.md @@ -0,0 +1,241 @@ +--- + +Tag: ["Art", "🎶", "🎛️"] +Date: 2022-10-02 +DocType: "WebClipping" +Hierarchy: +TimeStamp: 2022-10-02 +Link: https://www.newyorker.com/magazine/2022/10/03/solomun-the-dj-who-keeps-ibiza-dancing +location: +CollapseMetaTable: true + +--- + +Parent:: [[@News|News]] +Read:: No + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-SolomuntheDJWhoKeepsIbizaDancingNSave + +  + +# Solomun, the D.J. Who Keeps Ibiza Dancing + +Midsummer in Ibiza, ten minutes to midnight. At a long table in the dimly lit garden of Can Domingo, a restaurant in the southern hills, two dozen people picked over the remains of a generous dinner: ravioli, veal Milanese, caponata. Gerd Janson, a forty-five-year-old German d.j. with courtly manners, asked me if I wanted a little more fish. He was dressed like one of the Royal Tenenbaums, in a neck scarf and a white camp-collar shirt tucked into chinos. I was full, but he insisted. “The fish is so delicious—and it’s a *long* night,” he reminded me. + +At the center of the table was another d.j., Mladen Solomun—the reason for this long night and many others. Solomun is a forty-six-year-old German-Bosnian-Croat from Hamburg who looks like a Visigoth chief or a retired linebacker: six feet three and meaty, with a graying beard and long dark hair that he often wears pulled back. He is known to millions of ravers by only his last name, and to a circle of intimates by only his first. At Can Domingo, he was Mladen, soft-spoken and attentive with the Chablis. After dinner, he would become Solomun, master key to the pleasure of thousands. + +This summer, several people described Solomun to me as the “king of Ibiza.” He professes to hate this appellation, but it has some merit. Since 2013, except for the *[covid](https://www.newyorker.com/tag/coronavirus)* pause, he has played at Pacha, the island’s oldest night club, at least twenty Sundays a year. (The parties begin at midnight and run until dawn on Monday.) His residency, called Solomun+1, so dominates the scene that other clubs plan their schedules around it. *Ibiza Spotlight*, a night-life guide, recently [called Solomun+1](https://www.ibiza-spotlight.com/magazine/2022/05/season-preview-solomun-centre-universe) the “centre of the universe.” + +At Can Domingo, Solomun turned to Janson, smiled, and said, in thickly accented English, “Hey, it’s nearly twelve—why aren’t you in Pacha?” Other clubs on the island hire several d.j.s for a single evening, and at larger venues d.j.s play simultaneously in different rooms. With more names on the bill, there is a better chance that clubbers will spot someone they like. Pacha has one main room, and Solomun prefers a simple formula. He believes that dancers yearn to be taken on a musical journey, and that the way to lead them is to create a long, involving set. When Solomun plays, he invites only one other d.j., his “+1”—tonight it would be Janson. The guest plays from midnight until 2:30 *a.m.*, Solomun plays from 2:30 *a.m.* until 5 *a.m.*, and then the pair perform together, or “back-to-back,” for the final two hours, finishing at 7 *a.m*. + +Janson had been aware that midnight was approaching, but he wasn’t one to make a fuss. Indeed, he had been chatting pleasantly with Solomun about the insanity of their schedules. The next day, Janson would take three roundabout flights to get to Corsica, for a gig that evening. “I’m a working-class kid,” he said. “I have to work.” + +At midnight, a Pacha employee drove Janson away in a van. The other diners were in no rush: Paul Bor, Solomun’s tour manager, who is almost always by his side; a famous German actor; a currency trader from London, who met Solomun on a health retreat; a Croat tech guy who lives in L.A. Typically, Solomun doesn’t arrive at Pacha until nearly 2 *a.m*. When the check arrived, Solomun paid, and everyone returned to their villas to shower and change before the night—or the morning—began in earnest. + +Ninety minutes after leaving Can Domingo, Solomun arrived at Pacha in a fresh black T-shirt, black pants with a white stripe down the side, Air Jordans, and a Yankees cap. He was carrying USB sticks, containing tens of thousands of tracks, in a pink Aristocats purse that he’d spotted in an Ibiza supermarket earlier in the summer. Solomun started mixing in the vinyl era, when d.j.s lugged boxes of records to their events. He told me that he remained, at heart, an “analog guy”—he hated that clubbers recorded videos on cell phones rather than immersing themselves in the experience. But he conceded that the digital age had been good for his lower back. + +Solomun, a practicing Catholic, has a fervent fan base. One of his devotees says, “The function of the d.j. is to preside over the ceremony. He is the priest, or the shaman.” + +Pacha is in a *casa payesa*—a traditional farmhouse—and its layout is eccentric. Reaching the d.j. booth from the street feels like a psychedelic re-creation of the Steadicam shot in “GoodFellas”: after walking past a security guard, you enter a garden filled with sculptures of unicorns, giraffes, and naked women, then follow a winding corridor, lined with red lights, that leads you past a bustling kitchen and mixed-sex bathrooms into the main room of the club, where you pass through the V.I.P. area and, finally, down a small flight of stairs. The loudness is engulfing. Mesmeric hexagonal light panels rise and fall over the dance floor in response to the music, making the club feel like a living organism. The British designers who created the display, Helen Swan and Chris Carr, were inspired by Émile Durkheim’s 1912 book, “[Elementary Forms of Religious Life](https://www.amazon.com/Elementary-Forms-Religious-Life/dp/0199540128),” which describes “collective effervescence”—in which individuals become a group by communicating through action alone. + +The booth is about thirty feet wide and has its own small bar for the d.j. and his friends. Two club employees guard entry, and no amount of money or celebrity guarantees admission. You can’t press music on the d.j., or get too close or too drunk. Bor, the tour manager, oversees what he calls “booth politics,” and any infraction of the unwritten code can lead to ejection. The truly elect are invited to take an occasional shot of tequila with Solomun. The brand on his rider is Clase Azul Reposado, which the club brings in specifically for him. Solomun sometimes drinks more than thirty shots of tequila during a night at the decks, with no visible change in his sobriety. + +By the time Solomun arrived, Janson was at the apex of his set. He fussed at the four decks in front of him: they were equipped with circular jog wheels, for navigating a particular track; sliders, for adjusting tempo and volume; and an array of dials and buttons that perform various functions, from eight-bar loops to drumrolls. Pacha, which can hold more than three thousand people, was at the edge of its capacity. In front of the booth, general-admission clubbers, most of whom had paid seventy euros a ticket, bounced around. Behind Janson was the V.I.P. area, where securing the best table—close to the d.j. but with space to dance—can cost twenty thousand euros. + +Solomun and Janson hugged, and Janson quickly turned back to his controls. D.j.’ing requires concentration. One is not only selecting tracks but also splicing them together in tempo, and in a sympathetic key. Moreover, modern decks essentially allow a d.j. to remix tracks while playing them, and clubbers now expect some improvised wizardry within a set. During the next hour, several other prominent d.j.s joined Solomun and Janson in the booth, among them three Germans—Adam Port, &ME, and Rampa—known collectively as Keinemusik. They produce and play silky, melodic house, and this summer they were the hottest thing in dance music. (&ME and Rampa produced two tracks on Drake’s latest album, “[Honestly, Nevermind](https://www.newyorker.com/goings-on-about-town/night-life/drake-honestly-nevermind).”) They also frequently collaborate with Solomun on remixes. The trio had just flown in from New York, and they were headlining the next night at DC10—an influential club near the airport. They all looked exhausted, but, like aspirants in a medieval court, they’d come to Pacha to pay their respects. + +At 2:30 *a.m*., Janson was playing his final track, a buzzy remix of the 1984 Belgian disco number “Love Games.” Solomun cued up his first track—“[Dos Blokes](https://soundcloud.com/ritmoastral/orion-agassi-dos-blokes),” by the Spanish producer Orion Agassi—then listened to it on his headphones to insure that its beat matched the outgoing rhythm. Many ravers near the decks had pupils like bath plugs, and they greeted Solomun’s approaching set ecstatically. The roiling hook of “Dos Blokes” poured into the club. Like almost everybody present, I raised a hand in the air. While doing so, I dropped my notebook, then spent an uncomfortable minute crawling amid dancing feet to retrieve it. Solomun flashed a thin smile but hardly acknowledged the clamor. He was at work. + +Ibiza, a gorgeous Spanish island in the Mediterranean, is forested with pines and fringed with dramatic coves. When Phoenician merchants first arrived, in the seventh century B.C., they named the island ’*ybsm*, after Bes, the Egyptian god associated with music, dance, and sex. ’*Ybsm* became Ibiza. In recent decades, it has been a destination for transgressive interlopers: beatniks, jazz fiends, artists, refugees, hippies, celebrities, yogis, ravers. [Walter Benjamin](https://www.newyorker.com/magazine/2014/09/15/naysayers), who spent time in Ibiza in the nineteen-thirties, made note of the inscription on the cathedral’s sundial: “*Ultima multis*,” or “The last day for many.” The sundial has since disintegrated, but its message could serve as a hedonist’s credo: Seize the night. + +Clubs began attracting people to the island, which is about twice the size of Martha’s Vineyard, in the mid-twentieth century. According to “[Dope in the Age of Innocence](https://www.amazon.co.uk/Dope-Age-Innocence-Damien-Enright/dp/1907593012),” the Irish émigré Damien Enright’s vivid memoir about the counterculture era in Ibiza, jazz was then the hot sound. In 1961, Enright wrote, the island’s night life was fuelled by Benzedrine and alcohol, and centered on a bar named Domino, from which poured “the wildest, freest, most innovative music most of us had ever heard.” + +In 1966, two brothers, Ricardo and Piti Urgell, established a night club called Pacha outside Barcelona. The name was suggested by Ricardo’s wife, who predicted that the club’s profits would allow him to “live like a pasha.” (Not long ago, the Urgells sold the Pacha Group to private-equity interests for three hundred and fifty million euros.) In 1973, the brothers opened an Ibiza outpost, and it became a melting pot where hippies hung out with film directors and pop stars danced with fishermen. + +At the time, the prevailing music was disco, which was played largely using conventional instruments. Tracing the genesis of modern dance music, with its electronic beats and sounds, is like trying to find the center of a cloud, but most enthusiasts agree on certain milestones: Roland drum machines, David Mancuso’s Manhattan loft parties, [Kraftwerk](https://www.newyorker.com/magazine/2012/04/30/sound-machine). In the early eighties, a group of Black Chicago d.j.s steeped in disco, R. & B., and synth-pop began playing locally produced dance music at parties. The Chicago sound had a strong 4/4 beat, a little bounce, and often soulful vocals, and it usually pulsed at about a hundred and twenty beats per minute. That was house music. An electronic-music scene also grew in Detroit, with harder, sparser tracks that often lacked vocals. That was techno. + +House spread faster. “[Last Night a DJ Saved My Life](https://www.amazon.com/Last-Night-DJ-Saved-Life/dp/0802146104),” an authoritative history of the disk jockey, by Bill Brewster and Frank Broughton, tells of a single record purchase that transformed Ibiza. In 1985, DJ Alfredo, an Argentinean who played at a giant Ibiza night club called Amnesia, bought from an American dealer his first house record: “[Donnie](https://www.youtube.com/watch?v=WUlRx5IU1dM),” a single by the It. The track was spare but passionate, and Alfredo fell in love. At Amnesia, he began mixing the new house sounds with disco, flamenco, and other genres. Many dancers augmented the music with Ecstasy—a synthetic drug that had recently arrived on the island, and which promoted powerful fellow-feeling. + +In 1987, several British d.j.s on vacation—Danny Rampling, Paul Oakenfold, Johnny Walker, and Nicky Holloway—took pills and listened to Alfredo at Amnesia. They became evangelists for house music, and have been widely credited with bringing it to Britain. (The “Ibiza Four” were important, but the story discounts many other bridges built between disco and electronic music in Europe; for instance, d.j.s at the Hamburg gay club Front were [playing house records](https://soundcloud.com/borisfromhamburg/front-klaus-12-03-1986) at least two years before the Brits heard Alfredo.) The new genre both offered escape and demanded commitment. You spent hours dancing with sweaty strangers, in thrall to a series of records that flowed seamlessly into one another. + +By the mid-nineties, many new night clubs had opened in Ibiza. Low-cost airlines made the island an affordable destination. If you loved electronic music, an Ibiza vacation soon became a non-negotiable part of the summer. For top d.j.s, it offered serious money—and a path to international notoriety. By the turn of the millennium, Oakenfold was playing concerts at Wembley Stadium. + +In 2019, more than four million tourists visited Ibiza, which has a population of a hundred and fifty thousand. Juan Miguel Costa, the head of Ibiza’s tourist board, told me that, though he hoped many visitors would discover the island’s beaches and restaurants, “Ibiza is very known *because* of electronic music—it’s something unique.” + +[](https://www.newyorker.com/cartoon/a26951) + +“Please remove your shoes, realize you forgot to wear socks, accept your fate, and make peace with your god.” + +Cartoon by Asher Perlman + +Mladen Solomun knew nothing of Ibiza until he was in his thirties. Born in Yugoslavia, he grew up in the Altona district of Hamburg, Germany. He described himself to me as a “street kid” who was crazy about soccer. At an early age, he learned to fight. His father worked in construction; his mother was a seamstress. Both were Bosnian Croats, and most of their neighbors were immigrants, too. In the family’s first Hamburg apartment, there was no shower—Solomun’s father had to build one—and their only German neighbor was a heroin addict. Another neighbor, an alcoholic, beat his wife; Solomun remembers listening for noise, in case his family needed to intercede. Fotios Karamanidis, Solomun’s business partner, and his closest friend since childhood, recalls Altona as “a jungle.” + +In the mid-eighties, when Solomun was around ten, the family moved to another rough area. Soon afterward, Solomun’s older cousin, who was twenty-two, dropped by with a gift: a cassette tape recorded at a local club where the cousin was friendly with the d.j. “I didn’t know anything about the music,” Solomun said. “I mean, it was disco shit. I didn’t understand it. But what I did understand was: this music is not on the radio. It made me curious.” + +A local youth center held a disco night every Wednesday. When Solomun was fourteen, an adult at the center noticed that he was interested in learning how the turntables worked, and entrusted him with a small budget to buy records: R. & B., funk, hip-hop, soul. At these events, the boys were focussed mainly on chasing girls, and vice versa, but occasionally someone moved to the rhythm. Solomun saw each dancer as a victory: “I was, like, ‘I don’t know what I’m doing here, but *something* is happening.’ ” + +Solomun eventually stopped playing disco night, but he continued collecting records. He had no thoughts of a career in music. He was good enough at soccer that the coach of Germany’s national youth team expressed interest, but Solomun said that he would play only for Yugoslavia. His family returned home every summer. In 1992, when Solomun was seventeen, war broke out in Bosnia, and his family’s tiny Hamburg apartment filled with relatives who were fleeing the conflict. Solomun wanted to go fight; his father told him not to be stupid. + +Solomun describes the period that followed as lost years. (He won’t elaborate, except to say that he abandoned sports, music, and school.) When he was in his early twenties, his father dragged him “off the streets” to work on a construction crew. Solomun remembers sitting in a portable toilet on a building site, wondering if the rest of his life would involve mindless labor. He told himself, “I have to at least *try* to do something else.” + +Fatih Akin, a film director who is two years older than Solomun, and who also grew up in Altona, had just released “Short Sharp Shock,” a gangland noir that drew comparisons to [Martin Scorsese](https://www.newyorker.com/tag/martin-scorsese). Solomun was inspired—the movie proved that someone from his background could “follow their creativity.” He took entry-level jobs in the film industry, and within four years he’d learned enough to produce his own short—a chaotic crime caper. Meanwhile, he was falling deeper in love with electronic music. A friend had taken him to a warehouse party in Hamburg where the d.j. played techno, and the sound instantly hooked him. + +At twenty-six, Solomun d.j.’d at another friend’s birthday party, in a fifth-floor apartment in Hamburg’s red-light district. He played funk, pop, hip-hop, house, techno. The music spilled out the open windows, initiating an impromptu street party. Everyone from tourists to sex workers started dancing. The experience was too much fun not to repeat. Solomun organized a ticketed party in an art gallery. A hundred and fifty people bought tickets; five hundred showed up. He eventually resolved to commit to music. With his paltry savings, he bought a cheap computer and asked a local hip-hop producer to help him learn digital-composition software. “I started from zero, no money,” he told me. “Sometimes I had five euros and had to decide—do I buy a pack of cigarettes or a kebab?” + +Solomun began to play at small Hamburg venues, which paid a few hundred euros a gig. During this period, he met several people who remain his closest friends and advisers, including Daniel Schoeps, his manager. Within a few years, Solomun and these friends were running their own club in Hamburg, called *ego*, and had founded a record label, DIYnamic. Solomun’s first releases as a producer—including his sultry 2009 album, “[Dance Baby](https://www.amazon.com/Dance-Baby-Solomun/dp/B002ROO7V0)”—made few waves outside Germany. The final track of “Dance Baby,” “[Story of My Life](https://www.youtube.com/watch?v=1foxlM5oCeY),” is nine minutes long, and combines gritty sounds with a plaintive chord progression. It’s beautiful. Solomun says that he wrote the track in a state of “hypnosis” as his father was dying, of lung cancer, at the age of fifty-nine. Even now, when the strings enter on “Story of My Life,” Solomun finds himself in tears. + +When he was in his mid-thirties, his music went international: a stately remix of Noir & Haze’s “[Around](https://www.youtube.com/watch?v=7bMYhJ_UqnE)” was one of the most successful dance tracks of 2011. That summer, he was offered a gig at El Corso, an Ibiza hotel. A “party island” seemed to him like a vision of Hell, but his partners in DIYnamic persuaded him to go. Solomun played at the club for a few hours, then spent the rest of the weekend exploring. He was overwhelmed by the pristine beaches and by the openness of the music scene. The following year, Solomun was playing sold-out parties at an Ibiza club named Sankey’s. Back then, he was still enamored of R. & B., and his specialty was what he called “slow house”: bass lines were funky and sensual; dancers swayed their hips rather than pumping their fists. + +Around this time, Pacha was in turmoil. The Urgell brothers were making more than twenty million euros every summer, but they were outraged by the fees being demanded by the top d.j.s on their roster, including David Guetta and Swedish House Mafia. They also hated the music. In 2011, Ricardo Urgell lamented the “monotonous sound and volume” of the club scene, adding, “It’s bodies squeezed together, it’s a little masochistic. . . . The great defect of this music is that it has to be accompanied by drugs.” + +The Urgells’ views appalled Pacha’s booker, a Brit named Danny Whittle, who revered house music and believed that the rise in d.j. fees was justified. There were now dozens of subgenres of house and techno, each with a devoted following. To outsiders, and sometimes even to fans, the differences among subgenres can seem infinitesimal. (Explaining the gap between, say, deep-house and tech-house can make one feel like Polonius offering Hamlet actors for “pastoral-comical,” “historical-pastoral,” “tragical-historical,” and “tragical-comical-historical-pastoral” plays.) But Whittle understood that clubbers were fiercely loyal to d.j.s whose tastes matched their own. As he saw it, a headliner was worth a fifth of an evening’s gross: if a night regularly made half a million euros, as some at Pacha did, the d.j. should be paid a hundred thousand euros. In 2012, the Urgells ordered Whittle to reduce d.j. salaries. Whittle quit, as did four of the club’s top d.j.s. + +Pacha was suddenly desperate. Steve Hulme, who took over booking after Whittle resigned, began chasing Solomun for the 2013 season. Hulme felt that Solomun would thrive in Pacha’s Sunday slot. “It was the kind of music girls liked,” Hulme remembers. “There was just a vibe about him—there was a vibe about the label, the name Solomun was really cool.” + +Hulme made Solomun’s team a “massive offer.” Solomun’s manager asked for “a little bit more.” A deal was struck. Solomun loathes talking about money, and he forbids associates to disclose his earnings. But a knowledgeable person who worked in Ibiza’s clubs told me that Pacha paid Solomun two million euros for twenty shows in the 2013 season. (The source noted that Solomun had to pay his +1 d.j.’s fee, and his own expenses.) + +[](https://www.newyorker.com/cartoon/a26989) + +“Maybe you should start thinking bigger.” + +Cartoon by P. C. Vey + +Solomun’s fame has grown dramatically since then, and he now commands much higher sums. He plays about a hundred shows a year. In the course of his career, he has surely earned tens of millions of dollars. Schoeps said that, although Solomun is rich, money has never been a significant motivation. When pandemic lockdowns ended, Solomun supported venues by playing shows for free. Unlike other d.j.s, Solomun has also declined all paid branding opportunities, which could have multiplied his wealth, because he preferred to be known only for music. Solomun told me, “I’m blessed that I don’t have to think about money now.” But, he emphasized, “I was happy *before*.” + +Solomun’s +1 concept was risky, because it depended so heavily on his allure. He also insisted on redesigning Pacha’s main room, because, as he told me, “the feng shui wasn’t right.” The d.j. booth was near a balcony and faced both the dance floor and the V.I.P. area. Solomun wanted to play directly to people who had bought general-admission tickets, and with his back to the V.I.P.s. He asked for the booth to be moved to the center of the club. His contract additionally stipulated that he be the only d.j. allowed to make use of this arrangement, and so his bespoke booth was wheeled in on Sundays and wheeled out on Monday afternoons. “He wasn’t into the V.I.P.—it was a little bit of a slap on the wrist for them,” Hulme said. “But it turned out the V.I.P.s absolutely loved it, because they felt like they were in the booth *with* him.” + +Solomun’s first season at Pacha made a small profit. By the second season, every Solomun+1 night was full. Plutocrats fought for space behind the d.j. booth. Hulme remembers selling a section of the V.I.P. area for fifty thousand euros to a group that left the club after two hours. The section was then resold. Hulme also recalls that celebrities, including the Brazilian soccer star Ronaldo, had to wait to enter the booth. “It became the toast of the town,” Hulme said. “Half the plus-ones, we’d never heard of. . . . It became very apparent that it was all about him.” + +Why would anybody go to a club especially to listen to a d.j. playing other people’s records? Until my mid-thirties, this question confounded me. I enjoyed a wide variety of genres, but—apart from a mercifully brief jungle phase in high school—I hardly ever listened to dance music, which I experienced mostly through singles on the radio. It seemed facile to me—a manipulative sugar rush. Then, in 2017, my wife and I left our kids with their grandmother and visited Ibiza with friends. It was my first trip there. That Sunday, we went to Pacha for Solomun+1. + +When Solomun began his set, I was transfixed. This was no sugar rush. I didn’t know any of the music, I didn’t even understand some of it, and there were stretches when I didn’t take much pleasure in what I was hearing. The music was presented as one long phrase, continually promising a resolution that never materialized—it was like being trapped inside a five-hour Bach fugue. But along the way there were moments of melodic grace, beguiling transitions, and a constant, bone-shaking beat. *Oontz, oontz, oontz, oontz.* The rest of my group went home at some point, but I stayed, befriending a contingent of sweaty Argentineans. We remained on the dance floor until 7 *a.m*. I emerged onto the sidewalk, astonished by the morning sunshine and tottering like a newborn foal—a convert. + +After that, I dived into dance music, and my wife soon caught the bug, too. We raved in forests, in warehouses. We learned to mix and played at parties. These experiences were both therapeutic and regenerative. The memory of a single night out could sustain us through dark winter months of school commutes, work deadlines, even personal crises. I loved all the commingling stories in a night club—stories that seemed vivid in the moment but dissolved when the lights came on. Solomun also loved this drama, I later discovered. He said, of [Berghain](https://www.newyorker.com/magazine/2014/03/24/berlin-nights), the Berlin club, “There is no filmmaker, not even Tarantino, who could capture all the craziness in there. The eroticness!” + +I’m forty-two. My kids are ten and seven. It’s a strange kind of midlife awakening, but I am clearly not alone. In the crowd at Pacha, there seem to be as many thirty- and fortysomethings as twentysomethings. I often spot people in their sixties. In 2013, when Edward Frenkel, a Berkeley professor of mathematics, was about the age that I am now, he became a fan of Solomun’s, and spent some nights in the d.j. booth at Pacha. “He never played the same way,” Frenkel recalled. “It took me some time to realize that he actually had a much stronger bond with his audience than most d.j.s did.” It wasn’t that Solomun gave listeners exactly what they wanted, Frenkel said—he simply knew “what channel of communication was open with this particular audience, and would operate along that channel.” A Solomun set, he told me, returns us “to that space we had as children, mesmerized by music, mesmerized by looking at the starry night sky.” He went on, “The function of the d.j. is to preside over the ceremony. He is the priest, or the shaman.” + +The afternoon following his night with Gerd Janson at Pacha, Solomun texted me, “Morning :)” It was nearly five. He invited me to join him at a spa. Half an hour later, we were changing into swimsuits in the locker room of a five-star hotel, heading for a Finnish sauna and an ice bath. Solomun explained that his Monday visits to the spa were the most important part of his week: he sweated out the night before. He put on a robe and flip-flops, and walked upstairs at a regal pace, occasionally stopping to say hello to someone who’d recognized him. In the sauna, he put ice on the heater and drizzled the cubes with essential oils that he’d brought. Solomun swirled a towel above his head, to move the air, and we sat there, perspiring, as he reflected on the previous evening at Pacha. “Such a good party,” he said. “The vibe was so nice.” Endearingly, he pronounced “vibe” with a “w.” + +Solomun isn’t a natural performer in the d.j. booth. “I don’t like attention,” he told me. “To be a d.j. is against who I am.” But, over the years, he has learned a few moves. Sometimes he solemnly rocks from foot to foot as he builds a set; when a beat drops, he greets it like a conductor bringing in the string section, or a gardener attacking a stubborn branch with hedge trimmers. At moments, he skips around the booth doing a semi-ironic, elbows-out dad dance. The previous night, he had been mostly in this playful mode. + +In past years, a good night at Pacha would have been followed by an after-party. Schoeps claims that, in the summer of 2013, Solomun played thirty-six after-parties, including one after every Solomun+1 show. A Pacha set would blend into a Monday after-party, which might—after a few hours of sleep—flow into another ticketed party on Tuesday, at Sankey’s, lasting until Wednesday morning. Solomun was motivated to play for so long, he explained, because the end of a night felt a little like death. On his decks, the timer was always counting down to the end of a track. If he didn’t cue up another, the sound would simply stop—an unthinkable prospect when people were still dancing. “It’s never the last track,” he said. “It’s never over.” + +Karamanidis, who has attended many of the after-parties, offered a public-service rationale: Solomun often felt guilty that regular clubbers had not only paid high prices for their tickets but had also been gouged on drinks. (A small carton of water costs nine euros at Pacha.) At the after-parties, which were often held in private villas, drinks and entry were free. + +In Ibiza, such bacchanals are tolerated. Elsewhere, they can lead to problems. Several years ago, after a show in L.A., Solomun’s friend Filip Crvenkovic hosted him and another d.j. at his house in the Hollywood Hills for an after-party. It blazed for twenty hours. When police came for a fourth time, they warned Crvenkovic that if there were more complaints he risked going to jail. This message was communicated to Solomun, who said, “O.K.—two more tracks.” + +Sometimes Solomun conducts a marathon set at a night club. In December, 2017, at Space Miami, he played for twenty-seven hours, despite having been booked for just four. How was this physically possible? He explained that he took bathroom breaks during longer tracks. People brought food. He drank water, tequila, ginger shots, and occasionally took small amounts of Ecstasy. He was in a “perfect flow.” Ravers came for the first night, left the club, slept, showered, ate, and then returned for the second night, to find Solomun still playing. + +[](https://www.newyorker.com/cartoon/a24975) + +“Before there was the Internet, Grandpa didn’t know that he was right about everything.” + +Cartoon by David Sipress + +Such feats of endurance are rarer now. At forty-six, Solomun needs to be more mindful of his health. He receives frequent massages—what he calls “lazy yoga”—and he often plays tennis. (Solomun has a powerful game; when we played doubles this summer, he hit a forehand that left a welt on my wrist.) At the spa, we moved on to the ice bath. Solomun immersed himself immediately, but I was wary of a heart attack. “Don’t think about it—just do it,” he gently commanded. + +Afterward, we lounged on daybeds. Solomun noted that in a few hours the German d.j. Koze was playing at DC10, the club by the airport, and suggested that we go there together. When Solomun was a fledgling d.j., he idolized Koze, an older man who had emerged from the same Hamburg scene. Although I love Koze’s music, I was so tired that I could barely keep my eyes open. But it’s hard saying no to Solomun. Several other exhausted friends, who’d also been at Pacha, were dragooned into attending as well. “It’s all for one and one for all,” Bor, the tour manager, told me. “If Mladen is going out, the whole crew is going out.” + +At 10 *p.m.,* Bor dropped us off at DC10. Koze was playing in an outdoor space called the Garden, and it took Solomun half an hour to reach the d.j. booth, because so many people wanted to talk to him, or shake his hand, or take a selfie with him. Taylor Swift couldn’t have created more of a stir. + +Solomun listened to Koze from the crowded booth, alongside Rampa and &ME, who were d.j.’ing later that night. Solomun admired Koze’s set, particularly for how it met its audience: a crowd of people, many of whom had just arrived at the club, in the open air, before midnight. After a while, Solomun turned to me and said, “So good! It’s light, it’s bouncy.” This indicated that the d.j. cared more about the dancers than about his ego, Solomun explained. Koze finished with one of his own tracks, “Drone Me Up, Flashy,” recently remixed by &ME—nine minutes of floaty, transcendent house. + +Solomun wanted to go home, but it took him nearly an hour to reach the car. “It’s absurd,” he said. “People say beautiful things to me . . . but I want to forget it the second they finish the sentence.” It made him uncomfortable that a d.j. “who didn’t even play an instrument” should be so venerated—he was just one node in a galaxy of music. Solomun also recognized that, though some people were attuned to his gifts as a d.j. or a producer, others were reacting only to his celebrity. Getting into the car, he seemed upset. “Coming here is ten times more stressful than playing my own night,” he said. “In Pacha, I’m *protected*.” + +Solomun has rented the same elegant, enormous villa in Ibiza for the past six years. Until last summer, he shared the house with members of his management team. He now lives there alone, except for the twelve feral cats he feeds. Solomun has had serious relationships with women, but he is currently single. The morning after our night at DC10, I walked into his kitchen. There were several pans that needed washing. A well-used German copy of Jamie Oliver’s “[15-Minute Meals](https://www.amazon.com/Jamies-Minute-Delicious-Nutritious-Super-Fast/dp/071815780X)” sat on the counter. + +Solomun doesn’t own a house, though he has bought two apartments for his mother, in Croatia and in Hamburg. He recently searched for a place in Lisbon, but he didn’t find anything that he wanted to buy. With his schedule, it’s difficult to settle somewhere. Between May and October, he lives in Ibiza but performs around Europe. In the fall, he travels to Central and South America, where he has many fans. By the end of winter, he’s back in Europe, spending two months making music and refining his taste for the summer season. Then it’s May, and Ibiza, again. + +“Ibiza feels like my home now,” Solomun told me. “But, when I meet the right person, *then* I will know where my home is.” + +He was on a call when I arrived at the villa, so Bor took me into the living room. The interior was whitewashed in the *ibicenco* style. Takeout containers for Solomun—bought and delivered by Bor—were waiting on the coffee table. The windows were open to a terrace, and the chirp of cicadas flooded in. A giant pair of Air Jordans had been kicked off haphazardly. + +Solomun entered the room. After greeting me, he walked to a corner, where he lit a candle on what resembled an altar. Icons of Jesus, Mary, and two angels had been arranged above a fireplace. After lighting the candle, Solomun addressed the altar, crossed himself, and walked away. I hadn’t known that he was religious. He showed me a photograph from when he had met the Pope, in 2019, and said that he liked to keep a candle burning day and night on the altar. “It protects me,” he said. + +Solomun then recounted a story about his faith. Bosnian Croats are Catholics in a majority-Muslim country. In Hamburg, he received his First Communion at the age of ten, but he rarely attended Mass. When he was twenty-three, despondent, and working construction, he spent a day off wandering the streets. A “force, a power,” guided him into a church. + +Inside, he recognized the priest who had given him his First Communion. Solomun said that he was lost. The priest gave him a three-month series of activities to reawaken him. For example, he was to visit a local Spanish couple twice a week and let them talk about their life; he should not ask questions but simply absorb their stories. (It’s easy to imagine him doing this—unusually for a celebrity, he is an excellent listener.) After three months, Solomun took Communion again, and committed to being a “good person.” + +It’s odd to think of someone who parties as hard as Solomun as a man of God. But faith, he says, “fills me up.” Many of Solomun’s closest associates are also religious. Karamanidis spent four months in a monastery in Greece, and came back, in Solomun’s words, a “shining person.” Schoeps, Solomun’s manager, is also a Christian, and sings sacred music in a choir; on a recent weekend, he was in Hamburg, singing bass in Mendelssohn’s oratorio “Elijah.” (The concert, Schoeps said, was full of “big fun.”) + +Night clubs cater to base urges. At *ego,* in Hamburg—which Schoeps described to me as a “dark, sweaty, stinky rave club”—Solomun was troubled by the addled faces of the people dancing to his sets, particularly as the sun rose. (Ecstasy causes mouths to dry out and jaws to set.) Regardless of how Solomun himself got through the night, he questioned whether it violated his faith to lure people into such a profane environment. One day, he and Karamanidis went on a walk to discuss this unease. Karamanidis argued that music was itself a kind of miracle, and that there was no shame in uniting people through dancing. Schoeps explained to me that, from that point onward, Solomun saw d.j.’ing as having a “divine power.” + +“Even if I’m not trying to make myself so important, I can’t ignore what I do,” Solomun said. “I touch people.” + +In the living room, Solomun recalled numinous moments from recent performances. In January, he was in Mar del Plata, Argentina, playing an open-air set for a huge crowd. As dawn arrived, he said, he began speaking to clouds that threatened to block the sunrise. (“Move, clouds! Now!”) He cued up “[I Am Free](https://www.diynamic.com/release/diy085-johannes-brecht-i-am-free-feat-fetsum/),” a euphoric track by his frequent collaborator Johannes Brecht, who is a classically trained multi-instrumentalist. As the first chords began, the clouds did move, and the sun appeared. Solomun felt goosebumps. He sat on a speaker, pointing his fingers at his temples. “God is my master,” the male voice on the track exclaimed. “Love is my master. . . . I am free!” + +In mid-August, Solomun drove from his villa to Ibiza’s airport, where a seven-seater Cessna Citation VI jet was on the tarmac. Boarding with him were Bor, two pilots, and me. In the next three days, he would play in Sarajevo, in Istanbul, and back at Pacha. During the summer, Solomun flies only on private planes. He said that he had “planted so many trees . . . a forest” to assuage his carbon guilt, but it seemed unlikely that the planting could keep pace with the miles. On this flight, he carried with him a wheely suitcase and a bag filled with pillows, blankets, and clothespins. Solomun requires total darkness to sleep, and the ten minutes before he goes to bed are often spent pinning together curtains in his hotel room. + +The plane took off right after we arrived at the airport. Solomun seems to barely notice the ease with which he now moves through the world. (On a trip to Ibiza this summer, I waited more than ninety minutes to clear security. After a flight with Solomun in August, the pilots apologized for making him a few minutes late because they’d had to fly around a storm.) He told me that he’d hardly slept the previous night, such were his nerves. Many of his relatives, including his mother, were attending the Sarajevo show. City authorities had invited Solomun to play on the balcony of the Ministry of Finance, above the Eternal Flame, a memorial built after the Second World War. Tito Street, the thoroughfare by the memorial, would be closed off to cars for several hours. There was no +1 on the bill. The pressure weighed on Solomun. He wasn’t sure how to start the set. + +In the summer, Solomun spends at least two days a week in his villa, listening to new music sent to him by artists both established and unknown, and deciding which tracks to play—and which acts to sign to his label. He tries to follow only his taste. Idris Elba started d.j.’ing in Ibiza a few years ago, and sent DIYnamic one of his mixes, in the hope of garnering a +1 spot at Pacha. Solomun admires Elba’s acting, particularly in “The Wire” and “Luther,” but he did not enjoy Elba’s mix. He passed, politely. + +Solomun often uses a plane trip to consider options for an upcoming performance, or to edit tracks. Over the Mediterranean, he opened his laptop, put in AirPods, and assembled perhaps twenty options for opening the Sarajevo gig. Occasionally, he pounded the air with his fist as he listened. I couldn’t hear the music, and these spasmodic outbursts sometimes made me flinch. + +Solomun spent most of the flight fiddling with one track, which he will release in October on DIYnamic: “Yumi,” by the young French producer Notre Dame. The progression on “Yumi” walks a line between euphoria and melancholy. Solomun was enraptured by the track, and had finished many [recent sets](https://www.youtube.com/watch?v=YhvbmJIVeMQ) with it, but on the plane he wondered if he could better exploit the tension that Notre Dame builds in the first ninety seconds by extending one section. Solomun told me that he wanted to “find the right dose” of beauty. He made the edit, though he wouldn’t really know if the change worked until he played it live. Solomun saved the file, and put the USB stick in the Aristocats bag. + +Solomun’s [most famous set](https://www.youtube.com/watch?v=bk6Xst6euQk) is one that he recorded for the video service Boiler Room, from Tulum, Mexico, in 2015. It’s been watched nearly sixty million times on YouTube. A Solomun set in 2022 bears little resemblance to the one in the video—it’s hard to believe it’s the same d.j. The seductive, languid Tulum sound has given way to a harder, faster experience. There are fewer opportunities to sway your hips when Solomun plays now. + +During the pandemic, he began to favor grittier and more energetic music. When he resumed d.j.’ing, his sets reflected this change. Indeed, at some recent shows, Solomun has played as many as six tracks by Matt Guy—a producer from Nottingham who creates sledgehammer rave tracks like “Krupa” and “Party Starter.” Solomun’s support has transformed Guy’s career. In Europe, he is now played on mainstream radio. “I’ve always been a massive fan of Solomun,” Guy told me. “But never in a million years would I have expected him to play something like ‘Party Starter.’ ” + +Solomun told me that he was simply broadening his outlook. “This year, I really dig and love this kind of nineties sound . . . breakbeat, a little bit trance-y, almost Robin S.-style, but in a fresh way,” he said. “But these days I love more and more styles, and it’s getting harder and harder to build bridges during the sets. For me, *that’s* the big challenge.” + +The changes haven’t delighted everyone. On a message board, one clubber who attended Solomun+1 in 2022 complained of the “weird shit” he played; another declared that he was at “the end of the road” with Solomun. After Solomun played a rowdy set in London, a fan wrote on Instagram, “I love your music you really need to go back to your old stuff though!” + +Solomun doesn’t read online comments and has social-media accounts only because they are necessary for work. He says he knows that, when you change your sound, “sometimes you’re losing people”—but this can be hard to gauge. Whenever he looks out from his booth, he sees a sea of happy ravers. + +[](https://www.newyorker.com/cartoon/a26815) + +“Hey, I got you a beautiful orchid to cheer you up until it turns into just a stick protruding from dirt.” + +Cartoon by Teresa Burns Parkhurst + +D.j. sets are often recorded, and the best retain a transporting quality. I have listened to Solomun’s [Essential Mix](https://www.bbc.co.uk/programmes/m000kwtv), recorded at Pacha in 2016, dozens of times; it continues to surprise me. The moment when a cello enters on a Johannes Brecht track called “[Voix Grave](https://www.diynamic.com/release/diy089-johannes-brecht-christian-prommer-voix-grave/)” is chilling and propulsive. (In an e-mail, Brecht described that passage, in which the cellist Nayon Han interacts with a constantly modulating digital arpeggio, as a human and a machine in dialogue with each other.) But a set cannot be designed as a future relic. It is a work of improvisation that succeeds or fails as it flows onto the dance floor. Solomun says that his job is to “create moments.” The evanescence is the thing. + +Sam Houser, a co-creator of [Grand Theft Auto](https://www.newyorker.com/culture/culture-desk/idling-in-los-santos) and a founder of Rockstar Games, first listened to Solomun as a general-admission clubber in Pacha, several years ago. They are now friends, and—among other collaborations—Solomun is a character in the G.T.A. universe, whose sets you can listen to in a virtual club. (Solomun wasn’t paid for this; Schoeps described the arrangement as “a friendship thing.”) Houser told me that hearing Solomun live was “breathtaking,” adding, “Mladen has a unique way of taking control and leading the crowd into his vibe as he slowly and methodically builds the energy.” + +Though Solomun concedes that some of his tastes have changed, he doesn’t think that his sound has become too hard-edged to enjoy. Wherever he plays, he considers the needs of the crowd. Pacha, for instance, is “a sexy club—you can’t play a techno set in Pacha.” In June, I went to an open-air venue in Ibiza called Destino, where Solomun played mostly light, melodic house at sundown. He wasn’t above playing something so surprising that it made people laugh. Midway through the set, he dropped the whiny nineties hip-hop track “Insane in the Brain,” by Cypress Hill. It was like pumping helium onto the dance floor. + +Solomun told me that he craved variety when producing music, too. Last year, he released “[Nobody Is Not Loved](https://www.amazon.com/Nobody-Not-Loved-Solomun/dp/B08PX7K25Y),” a smooth dance album whose influences—synth-pop, indie, R. & B.—belied the ferocity of most of his recent live output. This summer, Solomun played me a bossa-nova remix that he’d made of José González’s “[Swing](https://www.youtube.com/watch?v=ggg51mqcRAc),” noting that it had made him as cheerful as any other work he’d done lately. “I like changes,” he explained. “I want to have fun. If I’m not having fun, I can’t transmit the happiness.” + +In Sarajevo, more than twenty thousand people waited in the streets for Solomun’s show. Elections loom in Bosnia, and the country is politically fragile, as old hatreds are rekindled. The European Union Ambassador to Bosnia, Johann Sattler, who is encouraging talks among factions, had secured funds from the E.U. for Solomun to play. “Culture is a great unifier,” he told me. He knew nothing of Solomun’s music but did know that many people in Bosnia loved him. + +Solomun was driven, with his mother and cousins, to the Ministry of Finance. Dressed in a black T-shirt with an image of the “Mona Lisa” on the back, he stepped onto the balcony. Noisy good will poured toward him. He raised his arms in acknowledgment and began manning his controls. It was just possible to see the back of the crowd on Tito Street. People waited to dance in their apartments, near open windows. Halfway up the street, where pedestrians were pressed tight, the traffic lights changed, pointlessly. + +As Solomun stood at his decks, it seemed suddenly obvious how to begin: “Swing.” Soon afterward, he played the remix of “Drone Me Up, Flashy” that had beguiled him at DC10. It was as if Solomun were curating a musical experience entirely to delight me. Perhaps I had spent so much time in his company that my preferences had converged with his. And maybe this was a skill of good d.j.s—to wrestle your taste toward theirs. + +Some tunes have recurred in almost every Solomun set this summer—tunes that he can’t get out of his head. Being in Solomun’s head is a valuable place to be. One track that he played in Sarajevo was “Como,” a dark banger that has not yet been released. It was produced by Disfreq—two Irish brothers, Joe and Cahir Kelly, who make unusual, acid-tinged techno using analog synthesizers, and who work out of a studio above a chip shop in their home town of Moville, County Donegal. Solomun started playing Disfreq’s music last year, during his South America tour. “You instantly get loads of respect as soon as he starts playing you,” Joe told me. + +Many Disfreq tracks have now been signed to influential labels, including to DIYnamic. This summer, Joe went to Pacha on a Sunday. He was d.j.’ing at Amnesia the following night, but he wanted to witness Solomun+1—and, maybe, hear one of his own tracks. He stood near the front of the crowd and used Snapchat to display a message to Solomun, in text large enough that the d.j. could read it: “Hi Mladen, it’s Disfreq :)” Solomun saw the note, and had Bor bring Kelly to the booth. An hour later, Solomun played “Como.” He danced next to Kelly as the track [shook the club](https://twitter.com/disfreq/status/1562847279102324736). “One of the best nights of my life,” Kelly told me. “The hairs on the back of my neck were standing up.” + +In Sarajevo, the intensity of the music increased as the hours dissolved. I joined the crowd. At the front, near metal barricades, young men and women were stomping the pavement. Solomun was due to finish playing at 2:30 *a.m*. At about two, when there seemed no prospect of his winding down, he asked Bor to request an extra hour from the city authorities, which they granted. Light rain began falling and a cheer went up. A canopy was erected over the decks. One man, a third of the way back in the crowd, lit a red flare. Suddenly, the gig had the intensity of a protest march. + +Solomun pounded his fist in the air. He finished his set with the edit of “Yumi” he’d done on the plane. As it played, he realized that the extended opening was not as moving as the original version. “When you double it, the moment is *gone*,” he declared. At 4 *a.m.,* sharing burgers and fries with his mother and cousins in the Presidential suite of a Sarajevo hotel, Solomun said that he would remember the night of the red flare for the rest of his life. + +Several hours later, Solomun flew to Istanbul and was driven straight to the venue for his show, on the Black Sea. He changed in a trailer. Starting at sunset, he played a four-and-a-half hour set for seven thousand ravers; at 1 *a.m.*, he began a five-hour after-party for six hundred people. The after-party room was so hot that dancers wrung sweat out of their shirts. Solomun continued playing until the crowd had dwindled to a hard-core contingent of fewer than a hundred people. Eventually, even he was forced to concede that the night was over. When he turned off the music, dozens of acolytes surrounded him, some to press on him a USB stick containing a demo. Finally, at around 6:30 *a.m*., he left with a woman he knew from a previous visit to Istanbul. Their time together would necessarily be brief. The car to the airport arrived in ten hours. + +Flying back to Ibiza, Solomun said that his mind was blank. The two consecutive parties had drained him of ideas and energy, yet he still had to play at Pacha in a few hours. High summer was always like this, he said. On New Year’s Day, 2020, a film-director friend had asked him about his wishes for the year ahead. Solomun replied, “A one-year break would be fantastic.” Two months later, the first *COVID* lockdowns arrived. He recognized that other people were suffering, but he was quietly grateful for the peace. He spent two summers in Ibiza, where he attended Mass in the cathedral on Sundays, and worked on his tennis game with a local coach. Unlike other d.j.s, he wasn’t streaming sets during lockdowns. He understood that d.j.s wanted to play such shows to support the dance community, or to connect with fans, but in Solomun’s view d.j. work was either live or meaningless. Last fall, as some clubs and festivals reopened, he decided to quit d.j.’ing altogether, then reconsidered. + +“I can always close the door,” Solomun said. “I get joy from other stuff.” Financially, he was set. He wanted to write film scores, and had ideas for movie and television scripts. His role as a record-label boss was consuming. He had also invested heavily in two startup businesses, including a health app. Some days, he thought that it might be time for other d.j.s to have their turn in the limelight. But he had been excited by the hunger of audiences after the pandemic. “People party much harder—it’s much more intense, it’s crazy,” Solomun said. “The power of music, the happiness of the music. Sometimes what I get back is very hard to handle, but . . . it’s worth something.” + +On the flight, Solomun closed his eyes for two hours, bundled up in blankets and cushions. When he awoke, the sky was darkening and the plane was descending. Solomun said that, whatever the excesses of the days and nights before, the feeling of getting closer to home always lifted his spirits. He was excited about his +1 for the evening, a relatively obscure d.j. from Northern Ireland called Cromby. Out the pilot’s window, dead ahead, I spotted Ibiza. In the dying light, it glowed amber and pink, like the last ember in a fire. + +“Oh,” I said. “It’s the island!” + +“*My* island,” Solomun said. ♦ + +  +  + +--- +`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))` \ No newline at end of file diff --git a/00.03 News/Tech and War.md b/00.03 News/Tech and War.md index 0a457149..c9e4ff59 100644 --- a/00.03 News/Tech and War.md +++ b/00.03 News/Tech and War.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Tech", "War", "Russia"] +Tag: ["Tech", "War", "🇺🇦/🇷🇺"] Date: 2022-03-30 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The 1918 flu didn’t end in 1918. Here’s what its third year can teach us..md b/00.03 News/The 1918 flu didn’t end in 1918. Here’s what its third year can teach us..md index f7034ca6..dd9472dc 100644 --- a/00.03 News/The 1918 flu didn’t end in 1918. Here’s what its third year can teach us..md +++ b/00.03 News/The 1918 flu didn’t end in 1918. Here’s what its third year can teach us..md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Human", "Health", "COVID"] +Tag: ["Human", "Health", "🦠", "COVID"] Date: 2022-02-13 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Biggest Change in Media Since Cable Is Happening Right Now.md b/00.03 News/The Biggest Change in Media Since Cable Is Happening Right Now.md index d988e687..7eb1429c 100644 --- a/00.03 News/The Biggest Change in Media Since Cable Is Happening Right Now.md +++ b/00.03 News/The Biggest Change in Media Since Cable Is Happening Right Now.md @@ -1,6 +1,6 @@ --- -Tag: ["Tech", "Bezos", "Media"] +Tag: ["Tech", "Bezos", "🗞️"] Date: 2022-06-26 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Bullet and the Ballplayer.md b/00.03 News/The Bullet and the Ballplayer.md index d0e8e915..d1ae834a 100644 --- a/00.03 News/The Bullet and the Ballplayer.md +++ b/00.03 News/The Bullet and the Ballplayer.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Society", "Sport", "Crime"] +Tag: ["Society", "Sport", "Crime", "⚾️", "🇺🇸", "🇩🇴"] Date: 2022-03-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Clockwork Orgasm - Common Reader.md b/00.03 News/The Clockwork Orgasm - Common Reader.md index 19d1bd3b..cdc68f51 100644 --- a/00.03 News/The Clockwork Orgasm - Common Reader.md +++ b/00.03 News/The Clockwork Orgasm - Common Reader.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Human", "Sex", "Orgasm"] +Tag: ["Human", "🍆", "Orgasm"] Date: 2022-05-15 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Cowboy and Queen Elizabeth.md b/00.03 News/The Cowboy and Queen Elizabeth.md index d0a92ebb..d8a388e2 100644 --- a/00.03 News/The Cowboy and Queen Elizabeth.md +++ b/00.03 News/The Cowboy and Queen Elizabeth.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "UK", "Royal"] +Tag: ["Society", "🇬🇧", "👑"] Date: 2022-09-12 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Deacon and the Dog City Journal.md b/00.03 News/The Deacon and the Dog City Journal.md index 2d1365b7..b70b1909 100644 --- a/00.03 News/The Deacon and the Dog City Journal.md +++ b/00.03 News/The Deacon and the Dog City Journal.md @@ -1,6 +1,6 @@ --- -Tag: ["History", "Robbery", "US"] +Tag: ["History", "Robbery", "🇺🇸"] Date: 2022-08-28 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Follower.md b/00.03 News/The Follower.md index 8e270203..aa4507ff 100644 --- a/00.03 News/The Follower.md +++ b/00.03 News/The Follower.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "Cult", "NYC"] +Tag: ["Society", "Cult", "NYC", "🇺🇸"] Date: 2022-06-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Great Bluff How the Ukrainians Outwitted Putin's Army.md b/00.03 News/The Great Bluff How the Ukrainians Outwitted Putin's Army.md index 3493f4ec..873744aa 100644 --- a/00.03 News/The Great Bluff How the Ukrainians Outwitted Putin's Army.md +++ b/00.03 News/The Great Bluff How the Ukrainians Outwitted Putin's Army.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "War", "Ukraine"] +Tag: ["Society", "War", "🇺🇦/🇷🇺"] Date: 2022-09-25 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Incredible True Story of Jody Harris, Con Artist Extraordinaire..md b/00.03 News/The Incredible True Story of Jody Harris, Con Artist Extraordinaire..md index 504929d5..1fde6114 100644 --- a/00.03 News/The Incredible True Story of Jody Harris, Con Artist Extraordinaire..md +++ b/00.03 News/The Incredible True Story of Jody Harris, Con Artist Extraordinaire..md @@ -1,6 +1,6 @@ --- -Tag: ["Crime", "Con", "US"] +Tag: ["Crime", "Con", "🇺🇸"] Date: 2022-06-02 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Making of Vladimir Putin.md b/00.03 News/The Making of Vladimir Putin.md index 226b487e..03785a1e 100644 --- a/00.03 News/The Making of Vladimir Putin.md +++ b/00.03 News/The Making of Vladimir Putin.md @@ -2,7 +2,7 @@ dg-publish: true Alias: [""] -Tag: ["Politics", "Russia", "Putin", "Portrait"] +Tag: ["Politics", "🇷🇺", "Putin", "Portrait"] Date: 2022-04-10 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Man Behind Ethereum Is Worried About Crypto's Future.md b/00.03 News/The Man Behind Ethereum Is Worried About Crypto's Future.md index f6269412..5157fda0 100644 --- a/00.03 News/The Man Behind Ethereum Is Worried About Crypto's Future.md +++ b/00.03 News/The Man Behind Ethereum Is Worried About Crypto's Future.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Tech", "Blockchain", "Ethereum"] +Tag: ["Tech", "🪙", "Ethereum"] Date: 2022-03-19 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Miseducation of Maria Montessori.md b/00.03 News/The Miseducation of Maria Montessori.md index 5ef45ef4..b8d33030 100644 --- a/00.03 News/The Miseducation of Maria Montessori.md +++ b/00.03 News/The Miseducation of Maria Montessori.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Human", "Education", "Montessori"] +Tag: ["Human", "Education", "Montessori", "🇮🇹"] Date: 2022-03-15 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Most Surveilled Place in America.md b/00.03 News/The Most Surveilled Place in America.md index 8aba72a0..1442fb9b 100644 --- a/00.03 News/The Most Surveilled Place in America.md +++ b/00.03 News/The Most Surveilled Place in America.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "US", "Immigration"] +Tag: ["Society", "🇺🇸", "Immigration"] Date: 2022-08-07 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Richest Black Girl in America.md b/00.03 News/The Richest Black Girl in America.md index fa9ad16f..e5a56614 100644 --- a/00.03 News/The Richest Black Girl in America.md +++ b/00.03 News/The Richest Black Girl in America.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Society", "US", "Segregation"] +Tag: ["Society", "🇺🇸", "Segregation"] Date: 2022-05-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Second Elizabethan Age Has Ended.md b/00.03 News/The Second Elizabethan Age Has Ended.md index 1b6a2d35..68a16467 100644 --- a/00.03 News/The Second Elizabethan Age Has Ended.md +++ b/00.03 News/The Second Elizabethan Age Has Ended.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "UK", "Royal"] +Tag: ["Society", "🇬🇧", "👑"] Date: 2022-09-11 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Shaming-Industrial Complex.md b/00.03 News/The Shaming-Industrial Complex.md index 779aa7cc..06092eaf 100644 --- a/00.03 News/The Shaming-Industrial Complex.md +++ b/00.03 News/The Shaming-Industrial Complex.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Society", "Shaming"] +Tag: ["Society", "🌐", "Shaming"] Date: 2022-03-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Sordid Saga of Hunter Biden’s Laptop.md b/00.03 News/The Sordid Saga of Hunter Biden’s Laptop.md index f5de79b7..020ab8d0 100644 --- a/00.03 News/The Sordid Saga of Hunter Biden’s Laptop.md +++ b/00.03 News/The Sordid Saga of Hunter Biden’s Laptop.md @@ -1,6 +1,6 @@ --- -Tag: ["Politics", "US", "Biden"] +Tag: ["Politics", "🇺🇸", "Biden"] Date: 2022-09-25 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Taliban Confront the Realities of Power.md b/00.03 News/The Taliban Confront the Realities of Power.md index 9c0faec3..ccbb8857 100644 --- a/00.03 News/The Taliban Confront the Realities of Power.md +++ b/00.03 News/The Taliban Confront the Realities of Power.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Politics", "Afghanistan", "Taliban"] +Tag: ["Politics", "🇦🇫", "Taliban"] Date: 2022-02-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Terrible Truth So Many Experts Missed About Russia.md b/00.03 News/The Terrible Truth So Many Experts Missed About Russia.md index d2a9e23b..b54e117b 100644 --- a/00.03 News/The Terrible Truth So Many Experts Missed About Russia.md +++ b/00.03 News/The Terrible Truth So Many Experts Missed About Russia.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Politics", "War", "Russia"] +Tag: ["Politics", "War", "🇺🇦/🇷🇺"] Date: 2022-03-16 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Unlikely Rise of Slim Pickins, the First Black-Owned Outdoors Retailer in the Country.md b/00.03 News/The Unlikely Rise of Slim Pickins, the First Black-Owned Outdoors Retailer in the Country.md index d97cd841..a5f02fef 100644 --- a/00.03 News/The Unlikely Rise of Slim Pickins, the First Black-Owned Outdoors Retailer in the Country.md +++ b/00.03 News/The Unlikely Rise of Slim Pickins, the First Black-Owned Outdoors Retailer in the Country.md @@ -1,6 +1,6 @@ --- -Tag: ["Economy", "US", "Retail", "AfroAmerican"] +Tag: ["Economy", "🇺🇸", "Retail", "AfroAmerican"] Date: 2022-08-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Unravelling of an Expert on Serial Killers.md b/00.03 News/The Unravelling of an Expert on Serial Killers.md index a2e9fe56..f28d8308 100644 --- a/00.03 News/The Unravelling of an Expert on Serial Killers.md +++ b/00.03 News/The Unravelling of an Expert on Serial Killers.md @@ -1,7 +1,5 @@ --- -dg-publish: true -Alias: [""] Tag: ["Society", "Scam", "Toronto"] Date: 2022-04-10 DocType: "WebClipping" diff --git a/00.03 News/The Unseen Scars of Those Who Kill Via Remote Control.md b/00.03 News/The Unseen Scars of Those Who Kill Via Remote Control.md index 8ead6437..41061f96 100644 --- a/00.03 News/The Unseen Scars of Those Who Kill Via Remote Control.md +++ b/00.03 News/The Unseen Scars of Those Who Kill Via Remote Control.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Crime", "War", "Drone"] +Tag: ["Crime", "War", "Drone", "🇺🇸"] Date: 2022-04-25 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Untold Story of the White House’s Record Collection.md b/00.03 News/The Untold Story of the White House’s Record Collection.md index 9be1e66e..2eb242a1 100644 --- a/00.03 News/The Untold Story of the White House’s Record Collection.md +++ b/00.03 News/The Untold Story of the White House’s Record Collection.md @@ -2,7 +2,7 @@ dg-publish: true Alias: [""] -Tag: ["Society", "US", "WhiteHouse", "Vinyl"] +Tag: ["Society", "🇺🇸", "WhiteHouse", "Vinyl"] Date: 2022-05-15 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Victim Who Became the Accused.md b/00.03 News/The Victim Who Became the Accused.md index ddd2ce5e..c5556681 100644 --- a/00.03 News/The Victim Who Became the Accused.md +++ b/00.03 News/The Victim Who Became the Accused.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "Criminalisation", "Sex"] +Tag: ["Society", "Criminalisation", "🍆", "🇺🇸"] Date: 2022-09-11 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Women Who Ran Genghis Khan’s Empire.md b/00.03 News/The Women Who Ran Genghis Khan’s Empire.md index 50a2f6fe..737dbc06 100644 --- a/00.03 News/The Women Who Ran Genghis Khan’s Empire.md +++ b/00.03 News/The Women Who Ran Genghis Khan’s Empire.md @@ -1,6 +1,6 @@ --- -Tag: ["History", "13th", "Mongols"] +Tag: ["History", "🚺", "Mongols"] Date: 2022-05-31 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The Worst Boyfriend on the Upper East Side.md b/00.03 News/The Worst Boyfriend on the Upper East Side.md index 53103610..adfb3a62 100644 --- a/00.03 News/The Worst Boyfriend on the Upper East Side.md +++ b/00.03 News/The Worst Boyfriend on the Upper East Side.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Society", "Scam"] +Tag: ["Society", "Scam", "🇺🇸"] Date: 2022-05-01 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The architect who became the king of bank robberies.md b/00.03 News/The architect who became the king of bank robberies.md index ec452e83..5a6ffa6e 100644 --- a/00.03 News/The architect who became the king of bank robberies.md +++ b/00.03 News/The architect who became the king of bank robberies.md @@ -1,6 +1,6 @@ --- -Tag: ["Crime", "US", "Western"] +Tag: ["Crime", "🇺🇸", "Western"] Date: 2022-08-20 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The cells that can give you super-immunity.md b/00.03 News/The cells that can give you super-immunity.md index c18dcc9d..2bd9ca30 100644 --- a/00.03 News/The cells that can give you super-immunity.md +++ b/00.03 News/The cells that can give you super-immunity.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Human", "Medicine", "Immunity"] +Tag: ["Human", "Medicine", "🦠", "Immunity"] Date: 2022-03-12 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The century of climate migration why we need to plan for the great upheaval.md b/00.03 News/The century of climate migration why we need to plan for the great upheaval.md index 412a2c28..7ec90932 100644 --- a/00.03 News/The century of climate migration why we need to plan for the great upheaval.md +++ b/00.03 News/The century of climate migration why we need to plan for the great upheaval.md @@ -1,6 +1,6 @@ --- -Tag: ["Economy", "Climate", "Migration"] +Tag: ["Economy", "🌡️", "Migration"] Date: 2022-08-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The dark side of Discord for teens.md b/00.03 News/The dark side of Discord for teens.md index a6f30414..88738789 100644 --- a/00.03 News/The dark side of Discord for teens.md +++ b/00.03 News/The dark side of Discord for teens.md @@ -2,7 +2,7 @@ dg-publish: true Alias: [""] -Tag: ["Society", "Tech", "Teen", "Online"] +Tag: ["Society", "Tech", "Teen", "🌐"] Date: 2022-03-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The death spiral of an American family.md b/00.03 News/The death spiral of an American family.md index 337057d3..a7cafe48 100644 --- a/00.03 News/The death spiral of an American family.md +++ b/00.03 News/The death spiral of an American family.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Economy", "MiddleClass"] +Tag: ["Economy", "MiddleClass", "🇺🇸"] Date: 2022-03-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The family that built a ballpark nachos monopoly.md b/00.03 News/The family that built a ballpark nachos monopoly.md new file mode 100644 index 00000000..081e6a06 --- /dev/null +++ b/00.03 News/The family that built a ballpark nachos monopoly.md @@ -0,0 +1,210 @@ +--- + +Tag: ["Economy", "🇺🇸", "Entertainment"] +Date: 2022-10-02 +DocType: "WebClipping" +Hierarchy: +TimeStamp: 2022-10-02 +Link: https://thehustle.co/the-family-that-built-a-ballpark-nachos-monopoly/amp/ +location: +CollapseMetaTable: true + +--- + +Parent:: [[@News|News]] +Read:: No + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-ThefamilythatbuiltballparknachosmonopolyNSave + +  + +# The family that built a ballpark nachos monopoly + +At a Texas Rangers baseball game, the voice of a concession stand employee cuts through the din of the upper deck concourse.  + +“Another ballpark nacho,” she yells.  + +A co-worker grabs a plastic receptacle, opens a metal vat containing a molten substance, and hands the container to the cashier. The treat arrives in all its gooey glory: crunchy tortilla chips, drizzled in golden-orange cheese sauce — jalapeño slices to top it off.  + +*The Texas Rangers sell nachos for $8.50 at Globe Life Field. (Mark Dent/The Hustle)* + +Ballpark nachos are a concession stand staple. At Rangers games alone, 600k orders were sold last year, or **1 for every 3.5 fans**. For all of Major League Baseball, that statistic would translate to **~13m orders**. + +And for every order, there’s one key figure to thank: San Antonio businessman **Frank Liberto**. + +Decades ago, he added a twist to a popular Mexican appetizer and originated the concept of the ballpark nacho. If you’ve purchased nachos at a sporting event or a movie theater, odds are you’ve bought chips, cheese sauce, or jalapeños from the Liberto family’s longtime business.   + +#### **The invention of the original nacho** + +On a late afternoon around 1940, women from a military base in Eagle Pass, Texas, walked into a restaurant in the Mexican border city of Piedras Negras and proceeded to down four rounds of tequila-based cocktails.  + +Needless to say, they started to feel hungry.  + +The restaurant’s cook was gone, but the maître’d sprung into action. **Ignacio Anaya** scoured the kitchen, finding some shredded yellow cheese to sprinkle on a tortilla, adding jalapeños for an extra kick. Anaya popped the concoction into the oven, sliced it into pieces, and served it.  + +## Enjoying this article? + +Get the Hustle’s 5-minute weekday roundup that keeps you hip to happenings in tech, business, and internet… things. + +Delivered weekdays plus a bonus Sunday feature. Unsubscribe whenever. + +Anaya’s nickname, like many people named Ignacio, was “Nacho.” + +Anaya went on to open a restaurant, where he served the dish, aptly named Nacho’s Especial. At one point, a lawyer friend recommended Anaya patent his invention, [a difficult proposition](https://www.ipwatchdog.com/2012/02/10/the-law-of-recipes-are-recipes-patentable/id=22223/).  + +“I thought it would be too much trouble,” Anaya [told the *San Antonio Express and News*](https://www.newspapers.com/image/legacy/29693904/?terms=%22ignacio%20anaya%22%20and%20%22nacho%22&match=1) in 1969, “but, of course, then I didn’t know how popular they were going to become.”   + +*Ignacio Anaya has long been credited as the inventor of nachos. (Photo: Nachos Mexican Grille; News headline: San Antonio Express and News via Newspapers.com)* + +Nachos became a mainstay dish at Tex-Mex restaurants and even the governor’s mansion, where Texas first lady Nellie Connally whipped up nachos for her sons’ parties in the late 1960s.  + +Simple as the dish was, it carried near-mystical qualities. A 1949 Texas cookbook [told](https://public.oed.com/blog/word-stories-nachos-anyone/) the story of a man carrying a dish of Nacho’s Especial, noting he would soon “forget his troubles, for nachos make one romantic.”  + +And soon, nachos hooked Frank Liberto.   + +#### **Peanuts, punch, and the idea of a lifetime** + +Liberto was [a self-described](https://www.newspapers.com/image/legacy/805200731/?terms=%22liberto%22%20and%20%22nacho%22&match=1) “bald peanut-peddler” who ran a family food business, the **Liberto Specialty Company**. (Today it’s called **Ricos**.) His grandfather, Rosario, immigrated from Sicily in the early 1900s, settling in San Antonio and opening a downtown food store in 1909. + +The store imported Italian coffee and olives, but the company’s most successful venture was peanuts, sold at circuses and local festivals. At the Battle of Flowers Parade in 1921, Rosario hung a sign outside his cart that read “400,000 pounds sold.”  + +The company passed on to Rosario’s son Enrico and then to Enrico’s son, Frank Liberto. Liberto made popcorn and snow-cone syrups and turned the company into a one-stop shop operation at stadiums and movie theaters by adding janitorial services, seeking any edge for the business.  + +*Before nachos, one of the top-selling items sold by Ricos was snow-cone syrup. (Courtesy Ricos)* + +While eating at a Mexican restaurant one night in the mid-1970s, he pondered whether nachos, transformed into a concession-stand snack, could be his next big advantage.  + +The idea posed a challenge for two major reasons: + +1. Nachos weren’t quite a delicacy, but they cost more than a hot dog.  +2. Although they were simple to assemble, nachos took ~15 minutes to cook in the oven, an impossibly long time for people waiting at a concession stand. + +Undeterred, Liberto notified a top client, the Major League Baseball team the Texas Rangers, based at the city-owned Arlington Stadium. He and city employees Tony Ayala and Jerry Jones started melting cheese as an experiment. It became clear that nachos would work if pre-melted cheese could be heated on the spot.  + +Liberto decided to push forward. He told the family to get in the car. They were going on a “vacation.” + +#### **Finding the right cheese** + +The Liberto family drove southwest from San Antonio into Mexico. Hours later, after a paved highway turned into a dirt road, they arrived somewhere outside Monterrey. + +There was no hotel, no resort, recalled his son **Tony Liberto** in an interview with *The Hustle*, just fields of neatly ordered crops belonging to the company La Costeña.  + +*Frank Liberto revolutionized his family business with the introduction of ballpark nachos. (Courtesy of Ricos)* + +Frank Liberto had come straight to the **jalapeño** source. + +La Costeña, which had just started building a US client base, agreed to a deal, and Liberto found his fresh peppers. + +Back in San Antonio, securing tortilla **chips** was easier. Liberto asked a connection at Jimenez Food Products to make a chip “with backbone.” Jimenez perfected a design that Liberto believed would withstand a drenching of cheese sauce.  + +The **cheese** was the most important component.  + +Liberto knew restaurants were using cheese sauce in recipes, but he needed it to be served alone — and on a large scale. He contacted the Midwest dairy company Dean Foods.  + +Liberto and Dean Foods tested recipes for a year, coming up with an exclusive condensed product that required added water and jalapeño juice for the ideal viscosity. (It was not real cheese; [nacho cheese sauce never is](https://www.bloomberg.com/news/articles/2015-01-29/there-s-no-such-thing-as-nacho-cheese#xj4y7vzkg).)  + +*Condensed Ricos cheese sauce available for wholesale in San Antonio. (Mark Dent/The Hustle)* + +Liberto now had everything he needed for nachos, except for the support of the Texas Rangers. + +The team was interested but feared the new item would cut into popcorn sales. Fans were paying ~12x the wholesale cost per box, making it the highest-margin food at the ballpark.  + +So Liberto cut a deal: He would sell the nachos at a cart in the concourse separate from the concession stand. And he would make jalapeños mandatory. That way customers would crave soda and beer. + +Ballpark nachos were on.  + +#### **An immediate sensation** + +For the first season in 1976, Tony Liberto helped build several red-and-white striped carts and shipped them up to Arlington Stadium.  + +Workers heated the cheese with electric roasters and ladled it onto the tortilla chips, sprinkling jalapeños on top. A dish of nachos sold at the stadium for $1.25, or ~$6.60 today, with a profit margin of **~80%**.  + +*Frank Liberto’s wife, Patricia Liberto, and daughter, Denise Pfeiffer, pose behind one of the family’s homemade carts used during the first season at Arlington Stadium. (Courtesy of Ricos)* + +Lines formed instantly. Liberto captured the images with an old video camera to show the team’s brass they had a new sensation on their hands. + +- In 1979, according to a 1980 story in *Box Office*, the Rangers sold **531k** orders of nachos, compared to 92k orders of popcorn.  +- The team’s total attendance was 1.3m that year, meaning **one of every 2.4 fans** ate nachos. One of every 14 fans ordered popcorn.    + +The ballpark nachos lacked the romantic quality of Nacho’s Especiales, but Liberto was right about their profit-making ability. + +As he once described to a reporter for *Amusement Business*, nachos didn’t cut into other food sales but generated “found money, money that otherwise would have left the stadium.”  + +Skeptics were converted quickly. At Mile High Stadium, home of the Denver Broncos, sales increased from one order per 40 fans for the first game nachos were available to one every 14 fans by the third game.  + +The hype from sporting events, including an on-air shout-out from iconic broadcaster Howard Cosell, led to another deal: a contract with the United Artists global movie-theater chain. In the 1980s, **~80%** of US movie theaters were selling Ricos nachos, according to Tony Liberto. + +The decade brought immense success for Ricos, as it branched into Sam’s Club, attracted Coca-Cola for a co-advertising campaign, and distributed enough products to supply **~200k** orders of nachos per day, available in roller rinks, bowling alleys, and just about everywhere.  + +*Coca-Cola paired with Ricos for an advertising campaign in the 1980s. (Courtesy of Ricos)* + +The secret to the success of Ricos was as much about Frank Liberto’s wheeling and dealing and thirst for seeking an edge as it was the taste of the cheese:  + +- Liberto researched the ideal efficiency for a nacho stand, settling on a model staffed by five people: a chip scooper in the middle flanked by two employees ladling cheese and peppers and two cashiers on the end. The stand could serve **1.6k orders** per hour.  +- He maintained strong ties to his clients from the perk of condensed cheese. By adding the water and the jalapeño juice — readily available if the client had purchased Ricos jalapeños — the client could make a couple dozen free servings of the sauce.  + +Plus, nachos were a niche industry.  + +“Very niche,” Tony Liberto told *The Hustle*. “Not a lot of people were thinking about how \[to\] build a business around selling movie-theater concessions. But Dad did. And he did it well.”   + +*Tony Liberto, president and CEO of Ricos, has been working for the company since he was a kid, around the time his father introduced ballpark nachos. (Mark Dent/The Hustle)* + +One of Frank Liberto’s biggest would-be competitors came from the inside. In 1983, he heard that an employee of one of his suppliers was plotting to steal a 250-page client list.  + +Liberto did some of his own detective work and then looped in the police, who set up a sting operation. On a San Antonio street corner, they arrested a 29-year-old man on the charge of attempting to steal nacho-related trade secrets. + +Nobody was going to mess with the Ricos nacho empire.  + +#### **How Ricos survives today** + +Nachos have come a long way since Frank Liberto cornered the industry in the 1980s. + +The global market size for the snack, including the fancier versions that evolved from Anaya’s creation as well as humble ballpark nachos, is now estimated at [~$2B](https://www.industryarc.com/Research/Global-Nachos-Market-Research-513466). + +Massive conglomerates that charge bargain-basement prices, like Frito-Lay, have cut into the Ricos share.  + +And just to get into a US stadium, concession vendors typically must pay for an expensive sponsorship. (The Ricos motto displayed on a video board at Rangers games is: “How to Nacho.”)  + +At many stadiums and theaters, Ricos has negotiated a partial relationship. Teams like the Rangers, for instance, use Tostitos for chips and Ricos for the jalapeños and cheese sauce. Others use Gehl Food & Beverage for the cheese sauce and Ricos for the jalapeños. + +But Ricos is still thriving: + +- **~100 US stadiums**, including the Green Bay Packers’ Lambeau Field and the University of Alabama’s Bryant-Denny Stadium, sell products from Ricos +- Ricos products can be found in ~60% of US movie theaters, according to the company.  +- Sales for the company, which employs ~100 people, totaled [~$128m in 2019](https://sanantonioreport.org/cheesy-business-ricos-takes-nachos-beyond-concession-stands/), up from [~$80m in 2012](https://www.mysanantonio.com/news/local_news/article/Ricos-It-s-the-big-cheese-of-the-nacho-industry-3378286.php). + +The company now makes its own tortilla chips at a factory in Arlington, Texas. The cheese sauce recipe, sold both in the original condensed version or ready-to-eat through an [aseptic manufacturing process](https://en.wikipedia.org/wiki/Aseptic_processing), comes from a partnership with Treehouse, which absorbed Dean Foods.  + +*Ricos uses masa harina to make tortilla chips sturdy enough to handle the cheese sauce. (Mark Dent/The Hustle)* + +Ricos has recently tried to increase sales in grocery stores. Tony Liberto wants everyone to recognize the brand that’s been serving them nachos at baseball games and movie theaters for decades. + +At their headquarters in San Antonio, a low-slung brick building near a popular breakfast taco joint in the city’s Southtown neighborhood, he shows a visitor family artifacts collected over the last 100 years.  + +There’s an old cart from the first season in Arlington. A photograph of the original Liberto store in downtown San Antonio. A statue of a stuffed nacho mascot.   + +Next door, Ricos showcases its lively present-day business: a wholesale shop filled with economy-sized bags of chips and canisters of jalapeños and cheese sauce.  + +On a Friday morning, several concessionaires milled about, stocking up on supplies for many more orders of ballpark nachos.  + +## Get the 5-minute roundup you’ll actually read in your inbox​ + +Business and tech news in 5 minutes or less​ + +100% free. We don’t spam. Unsubscribe whenever. + +  +  + +--- +`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))` \ No newline at end of file diff --git a/00.03 News/The improbable endless heroism of Volodymyr Zelensky.md b/00.03 News/The improbable endless heroism of Volodymyr Zelensky.md index a173b10f..69ea9aa8 100644 --- a/00.03 News/The improbable endless heroism of Volodymyr Zelensky.md +++ b/00.03 News/The improbable endless heroism of Volodymyr Zelensky.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Politics", "War", "Russia"] +Tag: ["Politics", "War", "🇺🇦/🇷🇺"] Date: 2022-03-06 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The making of Prince William.md b/00.03 News/The making of Prince William.md index 9f48c6f1..ac16168b 100644 --- a/00.03 News/The making of Prince William.md +++ b/00.03 News/The making of Prince William.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "UK", "Royal"] +Tag: ["Society", "🇬🇧", "👑"] Date: 2022-06-05 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The man who paid for America's fear.md b/00.03 News/The man who paid for America's fear.md index db09177d..3f0c355a 100644 --- a/00.03 News/The man who paid for America's fear.md +++ b/00.03 News/The man who paid for America's fear.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "9/11", "Terrorism"] +Tag: ["Society", "9/11", "Terrorism", "🇺🇸"] Date: 2022-03-06 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The markets are in meltdown – but at least Kwasi Kwarteng’s doomsday cult isn’t to blame Marina Hyde.md b/00.03 News/The markets are in meltdown – but at least Kwasi Kwarteng’s doomsday cult isn’t to blame Marina Hyde.md index eeedfa1b..f140aae1 100644 --- a/00.03 News/The markets are in meltdown – but at least Kwasi Kwarteng’s doomsday cult isn’t to blame Marina Hyde.md +++ b/00.03 News/The markets are in meltdown – but at least Kwasi Kwarteng’s doomsday cult isn’t to blame Marina Hyde.md @@ -1,6 +1,6 @@ --- -Tag: ["Politics", "UK", "Kwasi"] +Tag: ["Politics", "🇬🇧", "Kwasi"] Date: 2022-09-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The messages that survived civilisation's collapse.md b/00.03 News/The messages that survived civilisation's collapse.md index bc5972c7..a85caa41 100644 --- a/00.03 News/The messages that survived civilisation's collapse.md +++ b/00.03 News/The messages that survived civilisation's collapse.md @@ -1,6 +1,6 @@ --- -Tag: ["History", "Simerian", "Writing"] +Tag: ["History", "Sumerian", "✍️"] Date: 2022-08-22 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The metamorphosis of J.K. Rowling.md b/00.03 News/The metamorphosis of J.K. Rowling.md index 9d64905c..3962c010 100644 --- a/00.03 News/The metamorphosis of J.K. Rowling.md +++ b/00.03 News/The metamorphosis of J.K. Rowling.md @@ -1,6 +1,6 @@ --- -Tag: ["Art", "Literature", "RoleModel"] +Tag: ["Art", "📖", "🇬🇧", "RoleModel"] Date: 2022-07-17 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The real Mission Impossible.md b/00.03 News/The real Mission Impossible.md index a97a753c..3dbe85af 100644 --- a/00.03 News/The real Mission Impossible.md +++ b/00.03 News/The real Mission Impossible.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Art", "Cinema", "TomCruise"] +Tag: ["Art", "🎥", "TomCruise", "🇺🇸"] Date: 2022-03-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The rise of the Strangler.md b/00.03 News/The rise of the Strangler.md index 800712d7..6343041f 100644 --- a/00.03 News/The rise of the Strangler.md +++ b/00.03 News/The rise of the Strangler.md @@ -1,6 +1,6 @@ --- -Tag: ["Crime", "US"] +Tag: ["Crime", "🇺🇸"] Date: 2022-05-22 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/The twisted mind of a serial romance scammer.md b/00.03 News/The twisted mind of a serial romance scammer.md index a7a2c8ab..12a1a91e 100644 --- a/00.03 News/The twisted mind of a serial romance scammer.md +++ b/00.03 News/The twisted mind of a serial romance scammer.md @@ -1,7 +1,5 @@ --- -dg-publish: true -Alias: [""] Tag: ["Society", "Scam"] Date: 2022-04-10 DocType: "WebClipping" diff --git a/00.03 News/The twitching generation.md b/00.03 News/The twitching generation.md index cf091249..cc7b46c7 100644 --- a/00.03 News/The twitching generation.md +++ b/00.03 News/The twitching generation.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "SocialMedia"] +Tag: ["Society", "🌐", "SocialMedia"] Date: 2022-02-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Then Again Dying man’s note nearly turned history upside down - VTDigger.md b/00.03 News/Then Again Dying man’s note nearly turned history upside down - VTDigger.md index 0900b9a6..e9dbab30 100644 --- a/00.03 News/Then Again Dying man’s note nearly turned history upside down - VTDigger.md +++ b/00.03 News/Then Again Dying man’s note nearly turned history upside down - VTDigger.md @@ -1,6 +1,6 @@ --- -Tag: ["History", "US", "NewWorld"] +Tag: ["History", "🇺🇸", "NewWorld"] Date: 2022-08-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/There was an enormous amount of drugs being taken Graham Nash on groupies, feuds, divorce and ego.md b/00.03 News/There was an enormous amount of drugs being taken Graham Nash on groupies, feuds, divorce and ego.md index 6616d78e..7a6e99e3 100644 --- a/00.03 News/There was an enormous amount of drugs being taken Graham Nash on groupies, feuds, divorce and ego.md +++ b/00.03 News/There was an enormous amount of drugs being taken Graham Nash on groupies, feuds, divorce and ego.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Art", "Music"] +Tag: ["Art", "🎶"] Date: 2022-05-08 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/This Whole Thing Has F---ed Me Up’.md b/00.03 News/This Whole Thing Has F---ed Me Up’.md index a69a608b..c0435c1a 100644 --- a/00.03 News/This Whole Thing Has F---ed Me Up’.md +++ b/00.03 News/This Whole Thing Has F---ed Me Up’.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Crime", "Sport", "US"] +Tag: ["Crime", "Sport", "🇺🇸", "🏈"] Date: 2022-04-03 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/This developer sold pre-construction townhouses for $400,000. Three years later, they told their buyers to pay another $100K or lose their homes.md b/00.03 News/This developer sold pre-construction townhouses for $400,000. Three years later, they told their buyers to pay another $100K or lose their homes.md new file mode 100644 index 00000000..3ecb1bec --- /dev/null +++ b/00.03 News/This developer sold pre-construction townhouses for $400,000. Three years later, they told their buyers to pay another $100K or lose their homes.md @@ -0,0 +1,141 @@ +--- + +Tag: ["Economy", "🇺🇸", "RealEstate"] +Date: 2022-10-02 +DocType: "WebClipping" +Hierarchy: +TimeStamp: 2022-10-02 +Link: https://torontolife.com/real-estate/the-inside-story-of-a-real-estate-nightmare/ +location: +CollapseMetaTable: true + +--- + +Parent:: [[@News|News]] +Read:: No + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-Thisdevelopersoldpreconstructiontownhousesfor400000NSave + +  + +# This developer sold pre-construction townhouses for $400,000. Three years later, they told their buyers to pay another $100K or lose their homes + +It was the autumn of 2018, and Todd Arkell had a lot on his mind. There were the usual concerns about his four kids, helping them get through school, launch careers and find their places in the world. But lately his worries had taken on a more specific shape: Would they be priced out of Ontario’s skyrocketing property market? + +His two oldest children, both in their late 20s at the time, had managed to buy homes just before prices shot up. But his eldest son’s family already felt cramped, and they couldn’t afford to buy a bigger place. His youngest two were still in high school. By the time they started looking for property, surely home ownership would be even further out of reach. + +Then Arkell found what seemed like a solution: Urban North, a proposed community of 850 townhome units in Barrie, to be built by a family-run company called Pace Developments. On the project’s website, he saw renderings of upscale open-concept homes with waterfall kitchen islands, pendant lighting and wide-plank flooring. The price tag was enticing: a 1,200-square-foot pre-construction unit was listed for just over $400,000, less than comparable properties he’d seen on the market. He could secure it with a deposit of $25,000, broken into an initial payment of $1,000 followed by 12 consecutive monthly instalments of $2,000. It all seemed doable on his salary as a sales director. + +Arkell, his wife and their two teens lived in Mississauga. He wasn’t sure whether the kids would want to move to Barrie. But he’d grown up there, and he knew the area was growing quickly, almost an extension of the GTA. Owning a home in Barrie seemed like a good investment; it could be his kids’ first step on the ladder to their dream homes. Arkell called a Pace sales rep, who was friendly and helpful. The builder appeared to have experience, and units were selling fast. He decided to go for it. + +![](https://torontolife.com/wp-content/uploads/2022/09/PRESALE_CONDO_FINAL_02-368x0-c-default.jpg) + +The Urban North ­construction site in August 2022, one year after the advertised ­occupancy date. Photograph by Ian Brown + +Arkell’s unit, which was in the first phase of Urban North, was supposed to be ready by August 2021. Pace had a 24-hour camera trained on the construction site so buyers could watch their homes go up, but every time Arkell checked in, it was just a barren patch of dirt. He wasn’t overly fussed. The kids who might one day live in the townhouse still had a curfew. + +After Covid hit, there were more holdups. The builder couldn’t get necessary materials; labour disruptions wreaked havoc with the timeline. Then, three months after his original move-in date, Arkell received a form email from Pace. “Dear Sir/Madam,” it began. The letter explained that, largely due to the pandemic, the builder had run into an “unavoidable delay”: it was unable to secure necessary permits and financing, and the prices of lumber and steel had spiked. Continuing down the page, Arkell realized that Pace wasn’t just pushing back the move-in date again. This was much worse. His contract was being cancelled. + +Arkell was stunned. It was a particularly cold, detached way to be informed that he wouldn’t receive the home he had been waiting on for three years. In the final paragraph of the email, one sentence stuck out: “If you wish to inquire about a buy back option please contact Julian Pucci, VP of Sales.” When Arkell emailed, Pucci told him that, if he wanted to keep his unit, he could—but, to account for Pace’s ballooning expenses, he would have to pay $100,000 more than the original purchase price. + +*This seems illegal,* Arkell thought. At the very least, it was supremely unfair. He reached out to his real estate lawyer, who suggested that Pace might be “trying this on,” hoping that home buyers, worn out from Covid and terrified of re-entering a red-hot real estate market, would pay up without causing too much of a fuss. But Arkell didn’t want to spend another $100,000. He wasn’t interested in changing the terms of what he believed to be a binding contract. Nor did he want to take his deposit and walk away, which felt like capitulating to a bully. There was only one option left: fight back. + +Most of the time, purchases of new homes go smoothly. In the GTA, tens of thousands of condo units are sold without issue every year. Most developers aim to avoid the bad publicity that comes with trying to squeeze additional cash out of buyers. + +[![This couple bought their dream home. A year later, the builder demanded $95,000 more](https://torontolife.com/wp-content/uploads/2022/09/lucas_erin_lg-803x603-1663852062.jpg)](https://torontolife.com/real-estate/this-couple-bought-their-dream-home-a-year-later-the-builder-demanded-95000-more/) + +[![He bought a vacation home—then the developer took it back](https://torontolife.com/wp-content/uploads/2022/09/Sajid_lg-803x603-1663852336.jpg)](https://torontolife.com/real-estate/he-bought-a-vacation-home-then-the-developer-took-it-back/) + +[![This family bought a house for $534,990. Now the developer says they have to pay another $175,000 to keep it](https://torontolife.com/wp-content/uploads/2022/09/jennifer_lg-803x603.jpg)](https://torontolife.com/real-estate/this-family-bought-a-house-for-534990-now-the-developer-says-they-have-to-pay-another-175000-to-keep-it/) + +But, recently, citing increased material costs, Covid-related delays and financing problems, developers across Ontario have cancelled thousands of pre-construction contracts and returned to purchasers for more money. In Collingwood, developer DiCenzo Homes reneged on purchase agreements because the town was concerned that new development would push local water treatment facilities beyond capacity—only to offer buyers their old units for $100,000 more when the town allowed development to resume weeks later. In Tillsonburg, a community southeast of London, a builder called Green Urban People asked buyers to pay another 25 per cent, which translated to nearly $95,000. And, in March, a Burlington-based company called Adi Developments threatened to cancel sales contracts at a 25-storey condo project unless buyers produced another $200,000. (Adi later issued a public apology but stuck with its decision.) + +Developers have defended these cancellations by pointing to rules set by Tarion, the Ontario government’s consumer protection organization. Whenever someone purchases a new home in this province, they receive a stack of Tarion paperwork outlining the protections afforded to them. If a buyer moves into a new build and the roof caves in a week later, Tarion—which is funded by new-home registration costs and licensing fees from the province’s more than 5,000 builders—is supposed to protect that buyer and help them negotiate with the builder. + +But Tarion has clauses that protect builders too. Deep in documents that no one really reads at the time of purchase are the “early termination conditions.” This section outlines circumstances under which a buyer or builder can cancel a purchase agreement and effect the return of a buyer’s deposit. These clauses kick in if a builder can’t find financing, secure permits or sell enough units to fund construction by a particular deadline, among other reasons. They were ostensibly designed to give both parties an out: if a developer is unable to secure permits within a reasonable timeframe, for example, a buyer can exit the agreement instead of having their money tied up in a project that may never get finished. But, in practice, early termination conditions almost always favour the builder. Using these conditions, some developers have nixed pre-construction contracts and resold units at prices that reflect the rise in material costs and the potential for increased profit margins. During the pandemic, that potential was at an all-time high: home prices in Ontario increased as much as 60 per cent between early 2020 and early 2022. + +When developers ask for more, buyers have three options. They can eat the extra cost and hang on to their units. They can walk away and get their deposits back—with some interest—but it won’t buy them nearly as much house as it did when they first forked it over. Or, like Arkell, they can dig in. + +In the first few days after Pace cancelled the contract, Arkell hired an additional lawyer, who sent a note to the developer laying out Arkell’s case and advising them to honour the terms of the original agreement. Six days later, Pace told Arkell’s lawyer that they would review the file and get back to her. + +Arkell wondered whether he was fighting this battle alone. But he soon found a Facebook group called “Pace Developments Bust.” It was populated with Urban North buyers who had received the same notice and were just as outraged as he was. I connected with three of those buyers, all of whom were reluctant to speak with me on the record, citing fear of retribution from Pace. One had been threatened with a lawsuit for speaking out about their experiences with the developer. Another person I spoke to said she was housing two elderly family members while they waited to move into their unit. The family hired a lawyer who helped them get out of paying the extra $100,000, but the woman said the stress of their situation had exacerbated the couple’s health issues. On the morning we spoke, the family received an email with more bad news: the closing had been pushed to 2023. Every Pace buyer I spoke to was exhausted—by the pandemic, the construction delays, the panic over the letter. What they wanted, most of all, was to move into their new homes. + +--- + +![](https://torontolife.com/wp-content/uploads/2022/09/EMAIL-368x0-c-default.jpg) + +The email from Pace offering Arkell the chance to buy back his unit for $100,000 more than the original price + +--- + +Pace Developments is a 12-year-old company, but its roots date back generations. More than half a century ago, Orazio Sciavilla left Italy for Canada. He settled north of Toronto and helped build the city we know today, working as a heavy machinery and dump truck operator on projects such as the Finch subway station. Decades later, Sciavilla’s son Dino took an interest in the construction business. In 2010, Dino and his family founded Pace. Dino was the CEO while his wife, Yvonne, became the managing director. Their daughter, Pamela Ventresca, would be chief operations officer, and their son, Peter, served as vice-president of construction. Pace was just one of several development companies the family founded to build single-family detached homes, townhouses and at least one condo tower. Soon, they were wading into other aspects of the real estate market too. Ventresca founded a brokerage called P2 Realty and serves as a senior vice-president for Ntry GTA, a digital platform that allows buyers to virtually tour pre-construction units. + +As the Sciavillas grew their business, they also brushed up against controversy. In 2014, Pace began selling units in Eden, a subdivision of 28 upscale detached homes in King City. To finance the project, the family partnered with a mortgage investment firm called Fortress Real Developments. Fortress advertised Eden as a low-risk, high-reward investment: if investors lent money to help Pace build the project, Fortress claimed, they’d enjoy healthy returns upon its completion. Nearly 130 investors signed on to finance the project through a syndicated mortgage, pouring in a combined $7 million. But, in July 2018, after the units had sold for a total of $26 million, Pace told the Fortress investors that the project had run over budget and there was no money left to repay them. Eden was just one of many Fortress projects that went awry. The firm worked with dozens of developers, some of which went bankrupt, and thousands of syndicated investors lost their investments. This past June, after a years-long RCMP investigation into Fortress’s dealings, the firm’s two co-founders were charged with fraud. (Both deny any wrongdoing.) The Sciavillas were never charged with criminal activity, and they claimed that Pace was merely Eden’s “construction manager.” But the incident left syndicated investors wondering how a mid-size developer had failed to turn a profit off luxury homes in the country’s hottest housing market. + +Investment turmoil aside, Eden did get built, and by 2018, the Sciavillas were ready to launch an even bigger, more ambitious project: Urban North. In December 2020, flanked by heavy machinery and a small team of designers and financiers, Dino, Yvonne, Pamela and Peter donned hardhats and smiled for the cameras as they stuck new shovels into a large snow-covered lot. The development, Yvonne enthused, was sold out, and construction would start soon. + +Her excitement masked a challenging reality. Consider the plight of the developer. (No, really.) Empty lots don’t just transform into condo towers and subdivisions. Before construction begins, builders must finance land purchases and conduct environmental assessments, structural engineering assessments, and noise and shade studies. Then there’s permitting, financing and development charges, which can cost as much as $200,000 per unit on a project like Urban North. Lenders typically won’t agree to fund a project until at least 75 per cent of it is sold. If a builder can pull it all off, the profit margin on these projects tends to fall between 10 and 20 per cent. + +During the pandemic, things went from challenging to nearly impossible. Factoring in supply chain issues, labour shortages and inflation, the Canadian Home Builders’ Association estimates that, on average, it now costs about $42,000 more to build a 2,500-square-foot home than it did at the beginning of 2020. And that figure doesn’t account for increases in the price of lumber, which might add another $20,000 to $30,000. Then there’s the fact that thousands of carpenters walked off the job and many sawmills closed. In 2020, according to the Building Industry and Land Development Association, 65 per cent of projects in Toronto were three to six months behind schedule; another 32 per cent were more than six months late. + +Still, there’s something about tacking on an even $100,000 that doesn’t exactly scream “We’ve done our due diligence on cost increases and have the receipts.” Pace asked its buyers to pay more in part because it couldn’t secure what it described as “satisfactory financing” for Urban North, a common experience among developers during the pandemic. Even in normal times, there are few lenders willing to provide the kinds of sum required for subdivisions. + +Sign up for our newsletter Thanks for signing up! + +For all the latest on Toronto, subscribe to This City Now, check your inbox to complete your subscription + +Pace also blamed the City of Barrie, claiming that the pandemic had prevented the developer from obtaining permits and sticking to schedule. But Michelle Banfield, Barrie’s director of development services, says there were no exceptional delays and that the permitting timelines followed pre-pandemic industry norms. Pace says it has owned the site for roughly five years, but it didn’t register the project—the step that breaks the land into individual lots and allows a developer to apply for building permits—until February 2021, mere months before the expected move-in date. + +I sought clarity on this timeline by asking the Sciavillas for an interview, but they declined to participate. Ventresca initially agreed to respond to written questions, but after I submitted them, she stopped answering my emails. + +In November of 2021, shortly after Arkell received the letter from Pace, word got out about the developer’s surprise six-figure ask. At a press conference in Orillia, a reporter asked Premier Doug Ford about the situation. The premier transformed into his folksy version of the Hulk, emphasizing that a deal is a deal, that builders shouldn’t take advantage of people who sign contracts in good faith. On Twitter, he wrote, “Nothing burns me up more than some developer trying to make extra money off the backs of hardworking people. We’re going to address this because it’s totally unacceptable.” + +On Facebook, Pace said it was offended that anyone would suggest it might exploit a global disaster to pad its bottom line. “Over the last several days misleading and inaccurate information in the media has grossly misrepresented the Pace brand, team and values,” the post said. “As a proud family-run business that would never take advantage of the hardworking families that have supported and entrusted us for years, we are beyond disappointed on the vicious attack on our integrity and values by those who don’t know us for personal gain.” + +Arkell saw an opportunity in the bedlam. He dug up Ventresca’s cell number and sent her a message asking whether something would give now that Ford had spoken up. He didn’t hear back, but later that day, his lawyer received another letter from Pace. To his surprise, it said that Arkell was off the hook for the increased purchase price. The unit would remain his at no extra charge. He was relieved but confused. What had changed? The letter explained that the lawyers who originally represented Pace had neglected to include all of the Tarion paperwork with Arkell’s contract, voiding the clause they were leveraging to renegotiate the deal. Pace didn’t have a legal leg to stand on. + +When Arkell reported his success to the Facebook group, he learned that other buyers were also off the hook for the extra $100,000. But some had already paid or collected their deposits. “People were angry, disappointed and frustrated,” he says. “Some people were talking about checking with their lawyer, and others couldn’t afford to hire a lawyer. They have all their savings tied up in this property.” + +Many of the buyers I spoke to assumed that there would be a mechanism in place to help them, and in theory, Tarion is supposed to be that mechanism. But home buyers have been grumbling about Tarion’s shortcomings for years. In 2019, Ontario’s auditor general, Bonnie Lysyk, found that, due to scant oversight from successive provincial governments, Tarion effectively writes its own rules and regulations, and developers are overly involved in the organization’s decision making. As a result, Tarion’s dispute-resolution process is often confusing, expensive and time-consuming for buyers. Barbara Captijn, an independent consumer advocate who started a blog called Consumers’ Reform Tarion after a bad pre-construction condo experience of her own, showed me a Tarion contract that would allow a builder to cancel a sales agreement if “a dispute” arose between the developer and the buyer; the wording was so vague that, according to the buyer’s lawyers, the builder could back out if the buyer so much as criticized the developer. “This so-called consumer protection legislation is deeply flawed,” says Captijn. + +--- + +###### “Imagine being a young buyer. You scrape by and think, *This is great. We can afford this.* And then, ‘Sorry, you no longer have a home.’ And now you’re priced out of the market” + +--- + +Tarion is falling short at precisely the time it’s needed most. Ontario desperately needs more housing to combat the affordability crisis, and the building and selling of that housing has become so lucrative that the industry is attracting new developers with little to no experience building homes. None of the developers that have cancelled pre-construction contracts responded to my interview requests; it was often challenging to figure out how to contact them. Green Urban People, the builder of the project in Tillsonburg, doesn’t have a website or a publicly listed phone number. The business is registered to a brick residential building on a side street in downtown Woodbridge. Prior to becoming its president in 2017, Amer Cengic was, according to his LinkedIn profile, a senior manager at Vuteq Canada, which mostly manufactures automotive trim. Osman Dogan, the executive director, was a schoolteacher. + +Of course, inexperience doesn’t suggest malfeasance. But the glut of new developers does raise questions about what corners are being cut in the race to build more housing. The 2019 auditor general’s report found that, of the 177 building site inspections Tarion conducted in 2021, 71 were related to new builders with limited experience. By and large, these developers were able to renew their licences with ease. “Why would you be licensing someone with limited construction experience?” says Captijn. “Our government is not doing its job.” + +Tarion has heard the criticism, and the organization has recently made positive changes, including implementing more straightforward language in its contracts. And, as of January 1, 2020, purchase agreements must include an information sheet that outlines the key risks of buying a pre-construction condo. But, rather than overhauling Tarion, the Ford government created a new watchdog that effectively protects consumers from its consumer protection agency. The Home Construction Regulatory Authority, formed in February 2021 and largely funded by Tarion, has a $9-million annual budget. Three developers sit on its board of directors. In theory, the HCRA has the power to levy fines of $100,000 against developers who breach contracts. But, because the early termination conditions remain unchanged, the HCRA has no grounds to discipline developers like Pace. Neither it nor Tarion has the power to order builders to pay damages to buyers. + +The HCRA says that developers are obligated by law to provide requested information in a timely manner, but the watchdog regularly struggles to obtain even basic information. I spoke to a home buyer in Ottawa who put down a deposit on a pre-construction unit in May of 2019. Delays, all blamed on Covid, started piling up, and by the summer of 2021, he learned that the developer, Greatwise Communities, had failed to obtain permits from the city. He contacted the HCRA and was connected with an investigator, then another and another, and then communication slowed. After he sent a strongly worded email to the watchdog’s CEO, an HCRA manager apologized and indicated that they were having staffing issues. When the buyer followed up again, he was told that the HCRA was having trouble getting Greatwise to respond to its inquiries. “It became clear to me that the regulatory authority doesn’t have the power to compel the developer to provide answers,” he says. The HCRA later closed his complaint because the developer claimed it had provided him with notice of unavoidable delay—something he disputes. “I kind of lost it,” he says. “What are people like me to do? Where do we go?” + +Arkell considers himself lucky. He got to keep his unit without forking over more money, and it wasn’t his primary residence. Other buyers, by contrast, are unemployed, battling chronic illness or out $100,000. “Can you imagine being a young person, you scrape by, and you’re like, ‘This is great, we don’t mind commuting, we can afford the deposit, and the timeframe should work out,’ ” he says. “And then, ‘Oh, sorry, you no longer have a home.’ And, after four years, you’re now priced out of the market.” + +He doesn’t blame Pace for trying to maximize profits. “Business is business,” he says. And, in the case of buyers who received the correct paperwork, Pace appears to be operating within its legal rights. “But I don’t think those rights are correct,” he says. “If there’s an out for the builder, there should be an out for the client.” + +There’s no way to know how many Urban North buyers took their deposits back or agreed to pay the additional $100,000. Pace would not provide that information, and there’s no public record of such transactions until a buyer takes occupancy. But there were at least six Urban North units for sale on Realtor.ca in August 2022. One of them, a stacked townhouse similar to the unit Arkell purchased for a little more than $400,000, was listed for $700,000. + +After all the hassle and delays, Arkell considered selling his unit. He decided against it: any gains would be steeply taxed, and he’d return to a much tougher market if he wanted another home for his kids. He plans to rent the place out until they’re ready to move in. When I last spoke to him, in late August, he told me with a hint of cynicism that, according to Pace’s latest update, he would close on the unit in December. + +--- + +*This story appears in the October 2022 issue of* Toronto Life *magazine*. *To subscribe for just $24.99 a year, click [here](https://secure.torontolife.com/W21ASHPT). To purchase single issues, click [here](https://canadianmags.ca/collections/toronto-life-single-issues).* + +  +  + +--- +`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))` \ No newline at end of file diff --git a/00.03 News/Three Bodies in Texas.md b/00.03 News/Three Bodies in Texas.md index c9a53fc2..002b7caf 100644 --- a/00.03 News/Three Bodies in Texas.md +++ b/00.03 News/Three Bodies in Texas.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Crime", "Culture"] +Tag: ["Crime", "Culture", "🇺🇸"] Date: 2022-03-13 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/TikTok Star Ava Majury Discovers the Dark Side of Fame.md b/00.03 News/TikTok Star Ava Majury Discovers the Dark Side of Fame.md index df530e39..591cf31f 100644 --- a/00.03 News/TikTok Star Ava Majury Discovers the Dark Side of Fame.md +++ b/00.03 News/TikTok Star Ava Majury Discovers the Dark Side of Fame.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "SocialMedia"] +Tag: ["Society", "🌐", "SocialMedia"] Date: 2022-02-20 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Tim Cook’s Oscar Moment Didn’t Come Cheap.md b/00.03 News/Tim Cook’s Oscar Moment Didn’t Come Cheap.md index b4aa82ae..07f1f55b 100644 --- a/00.03 News/Tim Cook’s Oscar Moment Didn’t Come Cheap.md +++ b/00.03 News/Tim Cook’s Oscar Moment Didn’t Come Cheap.md @@ -1,7 +1,5 @@ --- -dg-publish: true -Alias: [""] Tag: ["Tech", "Apple", "Oscars"] Date: 2022-03-27 DocType: "WebClipping" diff --git a/00.03 News/To Live and Love with a Dying World.md b/00.03 News/To Live and Love with a Dying World.md index 4ac56d68..6a9f1510 100644 --- a/00.03 News/To Live and Love with a Dying World.md +++ b/00.03 News/To Live and Love with a Dying World.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "Human", "Philosophy"] +Tag: ["Society", "Human", "Philosophy", "💕"] Date: 2022-02-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Tortilla de Harina A Moon of Mystery.md b/00.03 News/Tortilla de Harina A Moon of Mystery.md index 1a5d9bd3..487da588 100644 --- a/00.03 News/Tortilla de Harina A Moon of Mystery.md +++ b/00.03 News/Tortilla de Harina A Moon of Mystery.md @@ -2,7 +2,7 @@ dg-publish: true Alias: [""] -Tag: ["Society", "Cuisine", "Mexico"] +Tag: ["Society", "🍽️", "Mexico"] Date: 2022-04-03 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Twitter is becoming a lost city.md b/00.03 News/Twitter is becoming a lost city.md index a7cf3b21..1bbaae4f 100644 --- a/00.03 News/Twitter is becoming a lost city.md +++ b/00.03 News/Twitter is becoming a lost city.md @@ -1,6 +1,6 @@ --- -Tag: ["Tech", "Twitter", "Demise"] +Tag: ["Tech", "🌐", "Twitter", "Demise"] Date: 2022-08-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Two Professors Found What Creates a Mass Shooter. Will Politicians Pay Attention.md b/00.03 News/Two Professors Found What Creates a Mass Shooter. Will Politicians Pay Attention.md index 487bda25..3e17b09e 100644 --- a/00.03 News/Two Professors Found What Creates a Mass Shooter. Will Politicians Pay Attention.md +++ b/00.03 News/Two Professors Found What Creates a Mass Shooter. Will Politicians Pay Attention.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "US", "MassShooting"] +Tag: ["Crime", "🇺🇸", "MassShooting"] Date: 2022-06-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/U.K. braced for death of Queen Elizabeth II. It still came as a shock..md b/00.03 News/U.K. braced for death of Queen Elizabeth II. It still came as a shock..md index db2dcea6..b8a13210 100644 --- a/00.03 News/U.K. braced for death of Queen Elizabeth II. It still came as a shock..md +++ b/00.03 News/U.K. braced for death of Queen Elizabeth II. It still came as a shock..md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "UK", "Royal"] +Tag: ["Society", "🇬🇧", "👑"] Date: 2022-09-11 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Ukrainian military long on morale but short on weaponry.md b/00.03 News/Ukrainian military long on morale but short on weaponry.md index a7ee7f17..23d9379b 100644 --- a/00.03 News/Ukrainian military long on morale but short on weaponry.md +++ b/00.03 News/Ukrainian military long on morale but short on weaponry.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Politics", "War", "Russia"] +Tag: ["Politics", "War", "🇺🇦/🇷🇺"] Date: 2022-03-16 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Ukrainians Flood Village of Demydiv to Keep Russians at Bay.md b/00.03 News/Ukrainians Flood Village of Demydiv to Keep Russians at Bay.md index 101ea3e4..6ab7fdd4 100644 --- a/00.03 News/Ukrainians Flood Village of Demydiv to Keep Russians at Bay.md +++ b/00.03 News/Ukrainians Flood Village of Demydiv to Keep Russians at Bay.md @@ -2,7 +2,7 @@ dg-publish: true Alias: [""] -Tag: ["Society", "War", "Ukraine"] +Tag: ["Society", "War", "🇺🇦/🇷🇺"] Date: 2022-05-01 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Understanding Argument Styles Is The Secret To A Happy Relationship.md b/00.03 News/Understanding Argument Styles Is The Secret To A Happy Relationship.md index d0843087..a8b8de62 100644 --- a/00.03 News/Understanding Argument Styles Is The Secret To A Happy Relationship.md +++ b/00.03 News/Understanding Argument Styles Is The Secret To A Happy Relationship.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Human", "Relationship", "Arguing"] +Tag: ["Human", "💕", "Arguing"] Date: 2022-02-17 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Vladimir Putin’s Revisionist History of Russia and Ukraine.md b/00.03 News/Vladimir Putin’s Revisionist History of Russia and Ukraine.md index 863e9b58..69ff8c6d 100644 --- a/00.03 News/Vladimir Putin’s Revisionist History of Russia and Ukraine.md +++ b/00.03 News/Vladimir Putin’s Revisionist History of Russia and Ukraine.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Politics", "War", "Russia"] +Tag: ["Politics", "War", "🇺🇦/🇷🇺"] Date: 2022-02-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Waiting for keys, unable to break down doors Uvalde schools police chief defends delay in confronting gunman.md b/00.03 News/Waiting for keys, unable to break down doors Uvalde schools police chief defends delay in confronting gunman.md index 535022f4..cfc583ec 100644 --- a/00.03 News/Waiting for keys, unable to break down doors Uvalde schools police chief defends delay in confronting gunman.md +++ b/00.03 News/Waiting for keys, unable to break down doors Uvalde schools police chief defends delay in confronting gunman.md @@ -1,6 +1,6 @@ --- -Tag: ["Crime", "MassShooting", "Uvalde"] +Tag: ["Crime", "MassShooting", "Uvalde", "🇺🇸"] Date: 2022-06-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Was King Arthur a Real Person.md b/00.03 News/Was King Arthur a Real Person.md index fd9b761c..dbc820bf 100644 --- a/00.03 News/Was King Arthur a Real Person.md +++ b/00.03 News/Was King Arthur a Real Person.md @@ -1,6 +1,6 @@ --- -Tag: ["History", "MiddleAges", "Arthur"] +Tag: ["History", "MiddleAges", "Arthur", "🇬🇧"] Date: 2022-08-28 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Was Vincent van Gogh Color Blind It Sure Looks Like It.md b/00.03 News/Was Vincent van Gogh Color Blind It Sure Looks Like It.md index 55785714..f12754f2 100644 --- a/00.03 News/Was Vincent van Gogh Color Blind It Sure Looks Like It.md +++ b/00.03 News/Was Vincent van Gogh Color Blind It Sure Looks Like It.md @@ -1,6 +1,6 @@ --- -Tag: ["Art", "Painter", "VanGogh"] +Tag: ["Art", "🎨", "VanGogh"] Date: 2022-09-04 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Welcome To The Vice Age How Sex, Drugs And Gambling Help Americans Cope With Covid.md b/00.03 News/Welcome To The Vice Age How Sex, Drugs And Gambling Help Americans Cope With Covid.md index 5d7c5eb1..53c8c443 100644 --- a/00.03 News/Welcome To The Vice Age How Sex, Drugs And Gambling Help Americans Cope With Covid.md +++ b/00.03 News/Welcome To The Vice Age How Sex, Drugs And Gambling Help Americans Cope With Covid.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Society", "COVID", "Coping"] +Tag: ["Society", "🦠", "COVID", "Coping"] Date: 2022-03-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Welcome to Philip K. Dick’s dystopia.md b/00.03 News/Welcome to Philip K. Dick’s dystopia.md index a55cbed6..4f10d5c1 100644 --- a/00.03 News/Welcome to Philip K. Dick’s dystopia.md +++ b/00.03 News/Welcome to Philip K. Dick’s dystopia.md @@ -1,6 +1,6 @@ --- -Tag: ["Art", "Literature", "SciFi"] +Tag: ["Art", "📖", "SciFi"] Date: 2022-08-20 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/What Is the Metaverse A Beginner's Guide to Tech's Latest Obsession.md b/00.03 News/What Is the Metaverse A Beginner's Guide to Tech's Latest Obsession.md index 6869680c..5254296b 100644 --- a/00.03 News/What Is the Metaverse A Beginner's Guide to Tech's Latest Obsession.md +++ b/00.03 News/What Is the Metaverse A Beginner's Guide to Tech's Latest Obsession.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Tech", "Metaverse"] +Tag: ["Tech", "Metaverse", "🌐"] Date: 2022-02-17 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/What Makes Brain Fog So Unforgiving.md b/00.03 News/What Makes Brain Fog So Unforgiving.md index ecd14d2e..3451e1d3 100644 --- a/00.03 News/What Makes Brain Fog So Unforgiving.md +++ b/00.03 News/What Makes Brain Fog So Unforgiving.md @@ -1,6 +1,6 @@ --- -Tag: ["Human", "COVID"] +Tag: ["Human", "🦠", "COVID"] Date: 2022-09-25 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/What did the ancient Maya see in the stars Their descendants team up with scientists to find out.md b/00.03 News/What did the ancient Maya see in the stars Their descendants team up with scientists to find out.md index 363278bd..ed35ecab 100644 --- a/00.03 News/What did the ancient Maya see in the stars Their descendants team up with scientists to find out.md +++ b/00.03 News/What did the ancient Maya see in the stars Their descendants team up with scientists to find out.md @@ -1,6 +1,6 @@ --- -Tag: ["History", "Maya", "Stars"] +Tag: ["History", "Maya", "💫"] Date: 2022-06-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/What happened to Starbucks How a progressive company lost its way.md b/00.03 News/What happened to Starbucks How a progressive company lost its way.md index 584c55ee..3ed9a1f6 100644 --- a/00.03 News/What happened to Starbucks How a progressive company lost its way.md +++ b/00.03 News/What happened to Starbucks How a progressive company lost its way.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Economy", "CompanyGrowth", "Maturing"] +Tag: ["Economy", "CompanyGrowth", "Maturing", "☕️"] Date: 2022-03-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/What i learnt during my 3 days offline.md b/00.03 News/What i learnt during my 3 days offline.md index b8c31038..9182679e 100644 --- a/00.03 News/What i learnt during my 3 days offline.md +++ b/00.03 News/What i learnt during my 3 days offline.md @@ -10,7 +10,7 @@ Hierarchy: TimeStamp: link: "https://www.raptitude.com/2022/02/what-i-learned-during-my-three-days-offline" location: ~ -CollapseMetaTable: "Yes" +CollapseMetaTable: true --- diff --git a/00.03 News/What’s in a Black name 400 years of context..md b/00.03 News/What’s in a Black name 400 years of context..md index 23f04942..d25e7c7d 100644 --- a/00.03 News/What’s in a Black name 400 years of context..md +++ b/00.03 News/What’s in a Black name 400 years of context..md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["History", "BlackAmerican", "Naming"] +Tag: ["History", "BlackAmerican", "Naming", "🇺🇸"] Date: 2022-03-16 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/What’s the Matter with American Cities.md b/00.03 News/What’s the Matter with American Cities.md index 7d610583..8d209a17 100644 --- a/00.03 News/What’s the Matter with American Cities.md +++ b/00.03 News/What’s the Matter with American Cities.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "City", "Living"] +Tag: ["Society", "City", "Living", "🇺🇸"] Date: 2022-02-18 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/While Britain burns, the Tories are … fiddling with themselves again Marina Hyde.md b/00.03 News/While Britain burns, the Tories are … fiddling with themselves again Marina Hyde.md index 8cd79c02..8c2f2fe5 100644 --- a/00.03 News/While Britain burns, the Tories are … fiddling with themselves again Marina Hyde.md +++ b/00.03 News/While Britain burns, the Tories are … fiddling with themselves again Marina Hyde.md @@ -1,6 +1,6 @@ --- -Tag: ["Politics", "UK", "Tories"] +Tag: ["Politics", "🇬🇧", "Tories"] Date: 2022-08-07 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Why Are Black Families Leaving Cities.md b/00.03 News/Why Are Black Families Leaving Cities.md index 69598dd8..5beb36a4 100644 --- a/00.03 News/Why Are Black Families Leaving Cities.md +++ b/00.03 News/Why Are Black Families Leaving Cities.md @@ -1,6 +1,6 @@ --- -Tag: ["Society", "US", "Urbanisation", "Minority"] +Tag: ["Society", "🇺🇸", "Urbanisation", "Minority"] Date: 2022-09-11 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Why Are Letters Shaped the Way They Are.md b/00.03 News/Why Are Letters Shaped the Way They Are.md index c2c8bc05..d4a8f0f6 100644 --- a/00.03 News/Why Are Letters Shaped the Way They Are.md +++ b/00.03 News/Why Are Letters Shaped the Way They Are.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Human", "History", "Writing"] +Tag: ["Human", "History", "✍️"] Date: 2022-02-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Why Black Women Are Divesting From Excellence & Embracing Mediocrity.md b/00.03 News/Why Black Women Are Divesting From Excellence & Embracing Mediocrity.md index 8fc2e371..7289bf29 100644 --- a/00.03 News/Why Black Women Are Divesting From Excellence & Embracing Mediocrity.md +++ b/00.03 News/Why Black Women Are Divesting From Excellence & Embracing Mediocrity.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "Human", "Emancipation"] +Tag: ["Society", "Human", "Emancipation", "🚺"] Date: 2022-02-16 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Why Indian universities are ditching English-only education.md b/00.03 News/Why Indian universities are ditching English-only education.md index 6db8c963..fb8314d3 100644 --- a/00.03 News/Why Indian universities are ditching English-only education.md +++ b/00.03 News/Why Indian universities are ditching English-only education.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "Language"] +Tag: ["Society", "Language", "🇮🇳"] Date: 2022-02-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Why Putting Solar Canopies on Parking Lots Is a Smart Green Move.md b/00.03 News/Why Putting Solar Canopies on Parking Lots Is a Smart Green Move.md index cb7e2e4f..a83b5d91 100644 --- a/00.03 News/Why Putting Solar Canopies on Parking Lots Is a Smart Green Move.md +++ b/00.03 News/Why Putting Solar Canopies on Parking Lots Is a Smart Green Move.md @@ -1,6 +1,6 @@ --- -Tag: ["Economics", "Ecology", "Energy", "Solar"] +Tag: ["Economics", "🌡️", "Energy", "Solar"] Date: 2022-08-07 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Why We Listen to Music With Lyrics We Don’t Understand.md b/00.03 News/Why We Listen to Music With Lyrics We Don’t Understand.md index ce643dc4..7275467e 100644 --- a/00.03 News/Why We Listen to Music With Lyrics We Don’t Understand.md +++ b/00.03 News/Why We Listen to Music With Lyrics We Don’t Understand.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Human", "Behaviour", "Music"] +Tag: ["Human", "Behaviour", "🎶"] Date: 2022-03-19 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Why it can be sublime to love someone who doesn’t love you back.md b/00.03 News/Why it can be sublime to love someone who doesn’t love you back.md index d8ddd14d..ddc8600d 100644 --- a/00.03 News/Why it can be sublime to love someone who doesn’t love you back.md +++ b/00.03 News/Why it can be sublime to love someone who doesn’t love you back.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Human", "Love"] +Tag: ["Human", "💕"] Date: 2022-02-15 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/Will the Bush Dynasty Die With George P. Bush.md b/00.03 News/Will the Bush Dynasty Die With George P. Bush.md index d99e32ec..0db51bbf 100644 --- a/00.03 News/Will the Bush Dynasty Die With George P. Bush.md +++ b/00.03 News/Will the Bush Dynasty Die With George P. Bush.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Politics", "US", "Dynasty", "Bush"] +Tag: ["Politics", "🇺🇸", "Dynasty", "Bush"] Date: 2022-02-20 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/XXX-Files Who Torched the Pornhub Palace.md b/00.03 News/XXX-Files Who Torched the Pornhub Palace.md index 5185ebea..51bf45cc 100644 --- a/00.03 News/XXX-Files Who Torched the Pornhub Palace.md +++ b/00.03 News/XXX-Files Who Torched the Pornhub Palace.md @@ -1,7 +1,7 @@ --- Alias: [""] -Tag: ["Society", "Pornhub"] +Tag: ["Society", "Pornhub", "🌐", "🍆"] Date: 2022-02-13 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/You Don’t Know Much About Jay Penske. And He’s Fine With That..md b/00.03 News/You Don’t Know Much About Jay Penske. And He’s Fine With That..md index 72e7651f..a958bdf4 100644 --- a/00.03 News/You Don’t Know Much About Jay Penske. And He’s Fine With That..md +++ b/00.03 News/You Don’t Know Much About Jay Penske. And He’s Fine With That..md @@ -2,7 +2,7 @@ dg-publish: true Alias: [""] -Tag: ["Economy", "Sport", "Motorsport"] +Tag: ["Economy", "Sport", "🏎️"] Date: 2022-03-27 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/YouTube Fraud Led to $23 Million in Royalties for 2 Men, IRS Says.md b/00.03 News/YouTube Fraud Led to $23 Million in Royalties for 2 Men, IRS Says.md index 288bd6fe..676d900d 100644 --- a/00.03 News/YouTube Fraud Led to $23 Million in Royalties for 2 Men, IRS Says.md +++ b/00.03 News/YouTube Fraud Led to $23 Million in Royalties for 2 Men, IRS Says.md @@ -1,6 +1,6 @@ --- -Tag: ["Economy", "Crime", "Fraud", "Youtube"] +Tag: ["Economy", "Fraud", "Youtube", "🌐", "🇺🇸"] Date: 2022-08-14 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/‘Putin Is a Fool’ Intercepted Calls Reveal Russian Army in Disarray.md b/00.03 News/‘Putin Is a Fool’ Intercepted Calls Reveal Russian Army in Disarray.md index 47017af1..4f19c10a 100644 --- a/00.03 News/‘Putin Is a Fool’ Intercepted Calls Reveal Russian Army in Disarray.md +++ b/00.03 News/‘Putin Is a Fool’ Intercepted Calls Reveal Russian Army in Disarray.md @@ -1,6 +1,6 @@ --- -Tag: ["Politics", "War", "Ukraine"] +Tag: ["Politics", "War", "🇺🇦/🇷🇺"] Date: 2022-09-29 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/‘She Captured All Before Her’ Darryl Pinckney.md b/00.03 News/‘She Captured All Before Her’ Darryl Pinckney.md new file mode 100644 index 00000000..c3c126c2 --- /dev/null +++ b/00.03 News/‘She Captured All Before Her’ Darryl Pinckney.md @@ -0,0 +1,117 @@ +--- + +Tag: ["Society", "🇬🇧", "👑"] +Date: 2022-10-02 +DocType: "WebClipping" +Hierarchy: +TimeStamp: 2022-10-02 +Link: https://www.nybooks.com/articles/2022/10/20/the-palace-papers-tina-brown-pinckney/ +location: +CollapseMetaTable: true + +--- + +Parent:: [[@News|News]] +Read:: No + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-SheCapturedAllBeforeHerNSave + +  + +# ‘She Captured All Before Her’ + +Queen Elizabeth II was seated in St. Edward’s Chair so long ago that her character defined the monarchy, not the other way around. Her reign began when the British Empire was dissolving and departing, and the young were too worshipful of the welfare state, Philip Gibbs lamented in *The New Elizabethans* (1953), his assessment of where “English” society could be headed. He prayed that the sovereign would be a queen of peace. She had succeeded George VI only seven years after the fall of Berlin. Her realm still bore the scars of bomb sites. Gibbs also prayed that the young queen + +> not be so overburdened as her father by the ceaseless toil of her office, always signing documents, signing, signing, piles of paper placed on her desk and needing study before she signs; few days free from parades and ceremonies and Royal openings of this and that; always surrounded by cheering crowds struggling to get close; always being under fire from Press photographers with their flash-lamps; denied much respite or privacy or quiet home life. May something be done to ease that strain. + +Fortunately, Gibbs said, Queen Elizabeth was not alone. She had by her side the Duke of Edinburgh, “helpful and protecting.” + +And then, splendid, small, inscrutable, she didn’t. + +Toward the end of World War I, the House of Saxe-Coburg-Gotha renamed itself the House of Windsor. The bargain Elizabeth II’s grandfather George V had made with his captive lands and free dominions was that his relationship to them was familial. He was the empire’s head, a father figure conventional in his beliefs, ever vigilant to do the right, i.e., British, thing. People were supposed to have been reassured by how normal George V seemed. All those dead birds on the Scottish moors in August. He and his queen consort, a second cousin, were a purpose-filled change of atmosphere from the disreputable Continental life of his father, Edward VII. Let us attend the field day of the Yorkshire Volunteer Aid Detachment. George V’s fun four sons and daughter became stars of Pathé newsreels in the 1920s and 1930s. He gave up shooting in Windsor Park during the Panic of 1931 and his ministers credited him as the steady hand that kept the door open for a National Government. Enormous crowds called the sovereign onto the Buckingham Palace balcony three times on the day of the Silver Jubilee celebrations in 1935. The Abdication Crisis had been invited with her then husband by her secret boyfriend to attend a celebratory ball. She felt as she danced the glittering tip of an iceberg in George V’s menacing look at her. + +As the bachelor Edward VIII walked behind his father’s coffin in January 1936, the Maltese cross of sapphire and diamonds on top of the imperial crown jolted loose and fell. George VI, who died in 1952, was a second son and had not expected to inherit; his father had been a second-born son as well, untrained for the throne. It is hard to imagine a time when Elizabeth II was not prepared to be lifted above by the bishops: third in line when she was born in 1926, heir presumptive when Edward VIII renounced in December 1936 the crown he said he had always dreaded. + +Elizabeth II’s eldest child, now King Charles III, told one of her maids of honor that before the coronation in 1953 he went into his mother’s study, and she was at her desk with the crown on her head. He asked what she was doing, and she said the crown was very heavy and she wanted to get used to wearing it. + +> And when the people saw her +> On that torrential morn +> She captured all before her +> Took everyone by storm. +> +> O the queen of Tonga +> Crossed the ocean from far away +> The queen of Tonga +> Came to Britain for Coronation Day + +Parliaments talk, crowns shine, Winston Churchill said. Millions of people around the globe watched television for the first time on Coronation Day. + +However, by 1965, when Anthony Sampson published his comprehensive social survey *The Anatomy of Britain Today*, the feeling among the public seemed to be that the palace and its culture of detachment belonged to the past, not to the living present. So much tradition throughout society had become a burden, an obstacle to the modernization that the British economy and commercial way of thinking had to embrace in order to survive the obsolescence and obscenities of empire. How real was the Commonwealth compared to the Common Market? *Her Majesty’s a pretty nice girl*/*But she doesn’t have a lot to say*…. How relevant was the monarchy, how justifiable the cost of it? + +The 1969 airing of the BBC documentary *The Royal Family* has often been cited as that critical moment when the mystery thought essential to the British monarchy was sacrificed to the modern social value of institutional openness. Walter Bagehot had famously cautioned in Victoria’s time: “We must not let in daylight upon magic.” The documentary sought to present the royal family in casual settings. Here they are in tartan dress, barbecuing, being domestic, human, while in front of cameras and strangers. It was the year of the heir apparent’s investiture as Prince of Wales, the first one since 1911, the twenty-first since 1301. + +*The Royal Family* was an innocent attempt to reassure, to relate. It was never lost on anyone that Her Majesty’s private pleasures presumed aristocratic and county circles, being focused on horses and bloodstock, but that would have been the first time many in the film’s audience heard the conversational voices of the British royal family. The documentary was blamed for creating a new expectation in journalistic coverage of them*.* The film was put away, not seen for decades. But what was once regarded as a public-relations misstep came to be viewed in retrospect as an example of how well Elizabeth II understood what was wanted of the sovereign: a visible presence. + +The collapse of coal mining meant the end of a particular working-class culture in places once visited by Edward VIII, when he was Prince of Wales, and Elizabeth II: Durham, Cymmer, Cadeby, Aberfan, Rotherham. Yet spectators in their thousands lined the coal-country streets of the North of England for the Silver Jubilee in 1977. Elizabeth II visited thirty-six countries in that anniversary year of IRA bombings and UVF convictions and transgressive punk rock lyrics: *God save the queen*/*She’s not a human being*…*.* She was titular head of state for more than thirty countries that accounted for only 13 percent of Britain’s trade and whose populations totaled one billion. Her politically useful rapport with Commonwealth leaders was said to have bored Margaret Thatcher, a little taller than the sovereign, the woman she could upstage but not outrank. Under Thatcher, the new right and the old left met in their scorn for a monarchy that was to them symptomatic of a decadent society in need of sweeping reform. + +Fifty years ago, British newspapers had the highest circulation of any in the world. In 1981 Rupert Murdoch, reputedly republican in his sentiments, purchased, with Thatcher’s connivance, *The London Times* and *The Sunday Times*, his first British broadsheets. That same year, the ninth English Princess of Wales, an ivory cloud of silk, taffeta, and tulle, rode toward her destiny, fifth columnist of the royal house. She flattered the press in her attacks on her husband, but the weapon of faux full disclosure had damaging side effects. She made herself and almost everyone in the royal family, including the former husband, desperate about his side of the story, vulnerable in a tabloid culture of surveillance. Once crossed, the line between what is private and what is public couldn’t be redrawn along the same coordinates. Murdoch and his competitors had neither patriotic nor commercial reason to protect anyone in royal scandals, especially not royal personages. + +The balance of power between the monarchy and the Fourth Estate had shifted, the swagger of access reversed, Tina Brown writes in *The Palace Papers*. The British monarchy’s problem was not just that the age of deference in the media was over, but that the tonal change was justified by the defection of the mother of a future king. Buckingham Palace did not forget, Brown says, the lesson of people turning against the monarchy en masse in the summer of 1997. The correct thing to do under the circumstances—the sudden death of a former wife of the heir to the throne—was perceived as insulting to how the people felt about the tragedy. The mast atop Buckingham Palace was bare because the royal standard is hoisted wherever the sovereign is in residence. Then she should return to the capital and lead us in mourning, said people into the television cameras recording the laying of thousands of floral tributes in plastic at the gates of Kensington Palace. *I solemnly promise so to do.* + +The Church of England never relented about the sacrament of matrimony, but to compel couples to stay together was perhaps cruel. A first cousin of the sovereign divorced in 1967 and had to remarry abroad because of the Royal Marriages Act of 1772. (George III’s response to his brothers’ marrying the wrong people was to require members of the royal family to seek the monarch’s permission to wed. No divorced persons. Roman Catholic spouses had taken one out of the succession since the fall of the Stuarts in 1688 and the Act of Settlement in 1701.) The sovereign is the head of the Church of England and her sister was divorced; her nephew is divorced. There is a divorced first cousin once removed and a divorced grandchild. Three of the sovereign’s four children divorced; two remarried—her daughter in the Church of Scotland and the then heir apparent in a registry office near Windsor Castle. His divorced mistress become his wife kept her head and refrained from using her principal title, Princess of Wales. + +Brown says that coverage of the royal family got so rapacious that news organizations were willing to break laws to get scoops, but there was also an element of collusion on the part of certain figures, a scramble to get the validation that comes from approval, good press. That kind of attention was not predictable, which had an effect on what Brown says was the larger concern: that for the monarchy to matter it must be in the news. + +The cliché was that the monarchy was good for tourism. It is big business. *The Pentagon Papers. The Palace Papers.* The title implies secrecy, information withheld. “Candor is a rare commodity for members of the Royal Family,” Brown writes. They have something to hide. Let’s find it out, shall we. The market for stories about the British royal family is worth many pounds, dollars, euros, riyals*.* The appetite is for the theater of royalty as much as for behind-the-scenes scandal. Brown notes that the BBC newscaster may not have worn a black tie when he announced the death of the Queen Mother in 2002, and perhaps Parliament need not have been recalled because she died, but 3,521 members of the media were accredited to cover the Golden Jubilee Weekend from London later that year. + +It used to be that press intrusion was excused by the public’s right to know; the public paid for the royal family through the Civil List—parliamentary grants going back to 1760, when the Crown surrendered lucrative property revenues in exchange for an annual sum determined at the start of each reign. The Crown was letting itself be cheated, Brown says. In 2012 the system was reformed as the Sovereign Grant and put under the scrutiny of the Treasury. The sovereign allocates money to those family members with diaries, charities, regiments, detectives, staff. Some family members are provided for from the monarch’s private fortune. + +In the year of her Diamond Jubilee, by which time private secretaries had changed from courtiers to professionals, Elizabeth II had been “cool” for a while, Brown says. She was the one figure in the world who had never let people down. Always dressed in a color that probably meant something for the occasion, a color that made the head of state easily spotted in a throng as well as never imitated by any other woman anywhere. “Their duties cling to them as their shadows,” James Anthony Froude said of kings. Translated into hours on the job, the number of miles traversed and people met, duty can make for banal statistics: “The royal train covered 3,500 miles across England, Scotland, and Wales.” The aggregate misses the point that George VI taught his daughter: for each person received or spoken to by the sovereign, a memory has been made. The pressure is to be always on when onstage. + +The Succession to the Crown Act of 2013 replaced male primogeniture with absolute primogeniture, abolished the disqualification from the succession of anyone who was a Roman Catholic, and repealed the Royal Marriages Act of 1772. However, the first six in line still need the sovereign’s consent to marry. In 2018 the sixth in line married a divorced American actor who in her six years on a US television series was always sixth on the production call sheet that revealed by various entitlements who were the most popular cast members. The dignity of the mother of the bride, a divorced black American woman, was deeply moving. + +In *The Palace Papers*, Brown is persuasive in her case that the socially ravenous bride was unsuited for royal life. She wanted a celebrity life worthy of her high ratings. Great-grandchildren of the sovereign not in the direct line of succession are not given royal titles, but she took that and everything having to do with precedent as a slur. You may not turn your back to the Mall when on the balcony. After twenty months, the celebrity royals announced their decision to step back from their duties, to “get out of Dodge,” as Brown puts it. As has been pointed out by some commentators, the problem with some royal rebels is that they have nothing to offer apart from their connection to the institution and the roles they’ve renounced. She’s an American celebrity for the asking, while he is reminiscent of his great-great-uncle and the honor, as was said, with which he so rashly invested the love he came to have for his twice-divorced, politically unsavory American bridge partner. + +[![photo of Queen Elizabeth meeting members of the Royal Regiment of Canadian Artillery, 2021](https://www.nybooks.com/wp-content/uploads/2022/09/pinkney_2-102022.jpg)](https://www.nybooks.com/wp-content/uploads/2022/09/pinkney_2-102022.jpg) + +Steve Parsons/Reuters + +Queen Elizabeth meeting members of the Royal Regiment of Canadian Artillery, Windsor Castle, England, 2021 + +Palace worry wasn’t about the echoes of the distant past, it was about the recent past as a trigger, for the nation, for the royal family, for the exile during an interview with Oprah Winfrey in 2021. He’d been asked: What color will your baby be? What? Brown observes that in private the royal family across generations has had the Hooray Henry casual racism of the upper classes, the aristocratic indifference to giving offense, and plenty of residual colonial bigotry. The first black equerry wasn’t appointed until 2017. There is only one black private secretary. There had been a black woman from Jamaica as personal chaplain to the sovereign. Brown says that multicultural, diverse Britannia really wanted the mixed-race presence in the royal family to work out. + +Elizabeth I wrote beautiful poetry and knighted slave traders and in 1596 took note of the “divers blackamoores” in London and let it be known that there were too many of them. It was her older half-sister, Mary I, the burner of Protestants, who had forbidden English ships from entering what was called “the Guinea Trade.” (For Spain’s sake?) There are the injustices, atrocities, that were committed between rising suns in every sovereign’s name, and then there is, surprise, George III, anti–slave trade, abolitionist. Virginia Woolf: + +> Human nature when set upon a throne seems unable to sustain the enormous enlargement…. And yet, partly because it is extraordinary, the spectacle of Royalty never fails to surprise us. To see the pageant is strange enough, but it is far stranger to look into the mind of one of the great actors themselves and to watch the normal human being struggling, an ant laden with a pebble, beneath the superhuman burden laid upon it by its fellows. + +It used to be that people complained how little they knew of her. Toward the end, her remoteness was treasured. She knew how to be Queen. Her conservative temperament was vindicated. The calm of her longevity seemed to invite documentaries about her, feature films about her, plays about her. Roll camera: another family decision must be made according to what is best for the monarchy. Or another offspring must make an appointment to see her. Or another ministerial exchange must be concocted from declassified cabinet papers. In one merry romp, it is VE Day, and she and her sister are incognito in the jubilant London streets. She was not just impersonated; her interiority was researched, guessed at. + +The puppets that portrayed the royal family on *Spitting Image*, the satirical television show of the 1980s, were merciless, but sympathy can be just as brutal in its liberty-taking. In one episode of the hit TV series *The Crown*, President and Mrs. Kennedy have been at Buckingham Palace for a state dinner, and at another London dinner shortly thereafter Mrs. Kennedy laughs about royal dowdiness. The next day a Hanover relation of Elizabeth II’s drops by the palace to inform her of what was said, and a contrite First Lady in need of understanding appears to make her apologies to Her Majesty: she had postnatal issues, the doctor had also given her an injection that she implies contained amphetamines to help her cope with stress, and what could be tackier as a script. Former ministers and privy counselors have recalled for the House of Commons glimpses of the late head of state’s capacity for humor. Stoicism had to serve as rebuke as well as philosophy. + +Bells, cannon, bagpipes, uniforms, vestments, proclamations, the deep curtsy of the Princess Royal to the coffin. Some remarked on Edinburgh’s quiet, scented with lilies. The coffin traveled from one royal salute to another. They say the FlightRadar site crashed, so many were trying to track the RAF plane bringing her coffin to London. The line to pay respects at the Palace of Westminster was five miles long. The first state funeral in Great Britain since Churchill’s in 1965, the first royal state funeral since George VI’s in 1952. Probably every local police force, fire service, and parish council in the four nations of the UK had to make plans. + +Eleven days after the late sovereign’s death, 142 naval ratings drew the standard-draped coffin and emblems of state to Westminster Abbey. “Bearer party, stand still.” Veterans who shared her war; young voices raised in song; mobile phones aloft like candles. The audience from slow march to applause to the piper fading away was global. There had been nothing like it for most everyone: royal vigils, the beat of drums, the processions, the black horses of the household cavalry. The kingdom and Commonwealth countries bonded in tribute. Maybe people had sincerity hangovers the next day. + +G.K. Chesterton said you don’t choose the king, you get what you get. The feeling in the politically roiled, drought-tormented, end-stunned UK today seems to be that to have a monarch means that its parliamentary democracy may hit new lows, but most likely they will not get a Trump, an Erdoğan, an Orbán, or a Bolsonaro. The new king, helicopter pilot and environmentalist, has been acting on behalf of Elizabeth II for some time. He has enormous emotional capital to draw on, maybe even with the new prime minister. The theater curtains must be changed, “ER II” unstitched and “CR III” sewn on. The Royal Mint will get a new warrant. Stamps will be changed. And the royal household may be in for the rough ride of a modern monarch’s list of reforms. + +After the pandemic and a cringe-making sex scandal in the royal family, after the royal ceremonial funeral to mark the taking out of this transitory life the late Most High, Mighty, and Illustrious Prince Philip, Elizabeth II was on the balcony for the closing wave of the Platinum Jubilee. (The Commonwealth of Nations, including republics, comprises fifty-six countries, and they were all represented.) She wore psychedelic green and was flanked by the Mountbatten-Windsors to come. Duty succession duty succession intake compression power exhaust: the engine fired. The image of stability in times of upheaval. A ship on its business in great waters. + +The writer Susanna Johnston once said that of the royal family only the sovereign was interesting and that was maybe because she was anointed. Her harrowing, as Solomon was anointed by Zadok. The television cameras were made to look away and a golden canopy shielded the young woman from the Westminster Abbey congregation at that sanctifying moment of her coronation. Johnston said the holy spirit is supposed to fly into you and make you shut up. + +Some commentators wondered about the religious character of Elizabeth II’s sense of stewardship as she, eight days widowed, masked, and in vivid black, sat by herself, framed by the stalls of the fifteenth-century quire in St. George’s Chapel. *Grief is the price we pay for love.* The last Windsor. + +  +  + +--- +`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))` \ No newline at end of file diff --git a/00.03 News/“Game of Thrones” v “Lord of the Rings” a tale of old v new Hollywood.md b/00.03 News/“Game of Thrones” v “Lord of the Rings” a tale of old v new Hollywood.md index 8e368ddc..14e3892a 100644 --- a/00.03 News/“Game of Thrones” v “Lord of the Rings” a tale of old v new Hollywood.md +++ b/00.03 News/“Game of Thrones” v “Lord of the Rings” a tale of old v new Hollywood.md @@ -1,6 +1,6 @@ --- -Tag: ["Art", "Cinema", "Blockbuster"] +Tag: ["Art", "🎥", "Blockbuster"] Date: 2022-08-21 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/“Republicans Buy Sneakers Too”.md b/00.03 News/“Republicans Buy Sneakers Too”.md index 3ec7e8c3..e773729a 100644 --- a/00.03 News/“Republicans Buy Sneakers Too”.md +++ b/00.03 News/“Republicans Buy Sneakers Too”.md @@ -1,6 +1,6 @@ --- -Tag: ["Economics", "Nike", "MJ"] +Tag: ["Economy", "🇺🇸", "Nike", "MJ"] Date: 2022-08-20 DocType: "WebClipping" Hierarchy: diff --git a/00.03 News/“The Eye in the Sea” camera observes elusive deep sea animals.md b/00.03 News/“The Eye in the Sea” camera observes elusive deep sea animals.md index de2b1c6e..1fa49524 100644 --- a/00.03 News/“The Eye in the Sea” camera observes elusive deep sea animals.md +++ b/00.03 News/“The Eye in the Sea” camera observes elusive deep sea animals.md @@ -1,8 +1,6 @@ --- -dg-publish: true -Alias: [""] -Tag: ["Nature", "Science", "Animal", "Sea"] +Tag: ["Nature", "Science", "Animal", "🌊"] Date: 2022-04-23 DocType: "WebClipping" Hierarchy: diff --git a/00.08 Bookmarks/Bookmarks - Obsidian.md b/00.08 Bookmarks/Bookmarks - Obsidian.md index cef42d00..1d78c239 100644 --- a/00.08 Bookmarks/Bookmarks - Obsidian.md +++ b/00.08 Bookmarks/Bookmarks - Obsidian.md @@ -176,6 +176,17 @@ image: https://opengraph.githubassets.com/a6c3b09261b61ef78bf44fb525edd0973f7526   +```cardlink +url: https://github.com/Lisandra-dev/Obsidian-Snippet-collection +title: "GitHub - Lisandra-dev/Obsidian-Snippet-collection: A collection of snippet to customize obsidian" +description: "A collection of snippet to customize obsidian. Contribute to Lisandra-dev/Obsidian-Snippet-collection development by creating an account on GitHub." +host: github.com +favicon: https://github.githubassets.com/favicons/favicon.svg +image: https://opengraph.githubassets.com/f337bf52be8f6735156e3ac192c1a5268c83551e2766d539313acd30121cb2bd/Lisandra-dev/Obsidian-Snippet-collection +``` + +  + ---   diff --git a/00.08 Bookmarks/Bookmarks - Work.md b/00.08 Bookmarks/Bookmarks - Work.md new file mode 100644 index 00000000..f94d6168 --- /dev/null +++ b/00.08 Bookmarks/Bookmarks - Work.md @@ -0,0 +1,75 @@ +--- + +Alias: ["Work bookmarks"] +Tag: ["Bookmark"] +Date: 2022-09-29 +DocType: Bookmark +Hierarchy: Root2 +TimeStamp: +location: +CollapseMetaTable: true + +--- + +Parent:: [[@Bookmarks]], [[@@Professional|Professional]], [[@Life Admin|Life Admin]] + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-WorkNSave + +  + +# Work + +  + +> [!summary]+ +> Note Description + +  + +```toc +style: number +``` + +  + +--- + +  + +### Bookmarks + +  + +```cardlink +url: https://www.wallpaper.com/gallery/architecture/finest-design-led-co-working-offices-in-the-world +title: "Design-conscious co-working spaces around the world" +description: "Modern workspaces must be adaptable and ergonomically sound. Cast iron, plywood and hanging plants are also requisite. Dispatching from creative companies and desirable desk spaces, we track down the designers responding to our evolving working behavio..." +host: www.wallpaper.com +favicon: /fav/favicon-16x16.png?4c79b57 +image: https://cdn.wallpaper.com/main/styles/fp_1540x944/s3/07_no_6_babmaes_street_fathom_c_james_balston_for_fathom_architects_screen.jpg +``` + +  + +--- + +  + +### Review cycle + +  + +- [ ] :label: [[Bookmarks - Work]]: review bookmarks 🔁 every 3 months 📅 2022-12-16 + +  +  \ No newline at end of file diff --git a/01.02 Home/Household.md b/01.02 Home/Household.md index 86312152..f9ddb794 100644 --- a/01.02 Home/Household.md +++ b/01.02 Home/Household.md @@ -59,7 +59,7 @@ style: number - [ ] :coffee: [[Household]]: Buy a Cappuccino machine 📅 2022-11-30 - [ ] :couch_and_lamp: [[Household]]: Replace the sofa 📅 2022-12-31 - [ ] :bed: [[Household]]: Buy bed-side tables 📅 2022-10-31 -- [ ] 🛌 [[Household]]: Buy new bed clothes 📅 2022-09-30 +- [ ] 🛌 [[Household]]: Buy new bed clothes 📅 2022-10-08   @@ -88,7 +88,8 @@ style: number - [ ] 🛎 🛍 REMINDER [[Household]]: Monthly shop in France %%done_del%% 🔁 every month on the last Saturday 🛫 2022-10-03 📅 2022-10-29 - [x] 🛎 🛍 REMINDER [[Household]]: Monthly shop in France %%done_del%% 🔁 every month on the last Saturday 🛫 2022-08-29 📅 2022-09-24 ✅ 2022-09-23 - [x] 🛎 🛍 REMINDER [[Household]]: Monthly shop in France %%done_del%% 🔁 every month on the last Saturday 🛫 2022-08-01 📅 2022-08-27 ✅ 2022-08-27 -- [ ] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2022-10-03 +- [ ] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2022-10-10 +- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2022-10-03 ✅ 2022-10-02 - [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2022-09-26 ✅ 2022-09-24 - [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2022-09-19 ✅ 2022-09-16 - [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper %%done_del%% 🔁 every week 📅 2022-09-12 ✅ 2022-09-09 diff --git a/01.02 Home/MRCK.md b/01.02 Home/MRCK.md index cade78da..b71bf0bd 100644 --- a/01.02 Home/MRCK.md +++ b/01.02 Home/MRCK.md @@ -16,11 +16,6 @@ Person: Phone: Email: Relation: Girlfriend -fc-calendar: "D2D Calendar" -fc-category: "Birthday" -fc-date: - day: 28 - month: 2 --- @@ -194,19 +189,6 @@ Paris, Zürich, London   -#### ⛷ Ski holiday - -[The best ski resorts in Switzerland | Telegraph Travel](https://www.telegraph.co.uk/travel/ski/articles/Switzerlands-best-ski-resorts/) - -[Murren Switzerland Vacation - Switzerland Beautiful Places](https://www.magicswitzerland.com/destinations/murren/) -[Mürren - Wikipedia](https://en.m.wikipedia.org/wiki/M%C3%BCrren) - -[10 Ski Areas Near Zurich | Winter in Zurich](https://www.zuerich.com/en/visit/the-seasons-in-zurich/winter/ski-areas-near-zurich) - -[The 10 best hotels & places to stay in Saas-Fee, Switzerland - Saas-Fee hotels](https://www.booking.com/searchresults.en-gb.html?do_not_redirect_to_sr=1&dest_type=city&dest_id=-2553924&highlighted_hotels=65344&highlighted_hotels=65344&m_pinned=1&origin=hp&hp_avform=1&rows=20&error_url=https%3A%2F%2Fwww.booking.com%2Fhotel%2Fch%2Fhoteleuropa.en-gb.html%3Faid%3D839822%3Blabel%3Dski%3Bsid%3D132cd9845d3bca6798ff5c43a706510f%3Bdist%3D0%3Broom1%3DA%252CA%3Bsb_price_type%3Dtotal%3Btype%3Dtotal%26%3B&is_ski_area=1&aid=839822&label=ski&sid=132cd9845d3bca6798ff5c43a706510f&sb=1&search_form_id=6eda43eff24b01b4&checkin_monthday=4&checkin_year_month=2022-3&checkout_monthday=6&checkout_year_month=2022-3&checkin=2022-03-04&checkout=2022-03-06&group_adults=2&group_children=0&no_rooms=1&sb_travel_purpose=leisure) - -  - #### 💝 Other - [ ] 🎁 🥘 Foods & pottering diff --git a/02.02 Paris/Early June.md b/02.02 Paris/Early June.md new file mode 100644 index 00000000..ea414053 --- /dev/null +++ b/02.02 Paris/Early June.md @@ -0,0 +1,108 @@ +--- + +Tag: ["Restaurant", "TravellingChef"] +Date: 2022-10-01 +DocType: "Place" +Hierarchy: "NonRoot" +TimeStamp: +location: [48.8729415,2.3633006] +Place: + Type: Restaurant + SubType: "Pop Up" + Style: Modern + Location: République + Country: France + Status: Recommended +CollapseMetaTable: true +Phone: 01 42 85 40 74 +Email: "[hey@early-june.fr](readdle-spark://compose?recipient=hey@early-june.fr&subject=Reservation)" +Website: "[Early June, buvette & shop à Paris 10 - Canal Saint Martin](https://early-june.fr/)" + +--- + +Parent:: [[@@Paris|Paris]], [[@Restaurants Paris|Restaurants in Paris]] + +  + +`= elink("https://waze.com/ul?ll=" + this.location[0] + "%2C" + this.location[1] + "&navigate=yes", "Launch Waze")` + +--- + +  + +```button +name Save +type command +action Save current file +id Save +``` +^button-EarlyJuneSave + +  + +# Early June + +  + +> [!summary]+ +> Note Description + +  + +```toc +style: number +``` + +  + +--- + +  + +### 📇 Contact + +  + +> [!address] 🗺 +> 19 rue Jean Poulmarch +> 75010 Paris +> France + +  + +☎️ `= this.Phone` + +📧 `= this.Email` + +🌐 `= this.Website` + +  + +--- + +  + +### 🗒 Notes + +  + +Found by my [[MRCK|Boubinou]]. + +  + +--- + +  + +### 🔗 Other activity + +  + +```dataview +Table DocType as "Doc type" from [[Early June]] +where !contains(file.name, "@@Travel") +sort DocType asc +``` + +  +  \ No newline at end of file diff --git a/02.02 Paris/Paris SG.md b/02.02 Paris/Paris SG.md index 62b7d119..75827153 100644 --- a/02.02 Paris/Paris SG.md +++ b/02.02 Paris/Paris SG.md @@ -153,16 +153,32 @@ players: Donnaruma,Kimpembe,Marquinhos,Sergio Ramos,Nuno Mendes,Verratti,Vitinha   -### 🔗 Other activity +### 📺 Games watched   ```dataview table Buteurs as "Buteurs" from [[Paris SG]] -where !contains(file.name, "@@Travel") +where !contains(file.name, "@@Travel") and !(date > date(now)) sort file.name desc limit 10 ``` +  + +--- + +  + +### 📆 Upcoming fixtures + +  + +```dataview +table date as "Date" from [[Paris SG]] +where !contains(file.name, "@@Travel") and (date > date(now)) +sort file.name asc +limit 10 +```     \ No newline at end of file diff --git a/02.03 Zürich/Dar.md b/02.03 Zürich/Dar.md index ef1bc1a8..35375d9c 100644 --- a/02.03 Zürich/Dar.md +++ b/02.03 Zürich/Dar.md @@ -12,7 +12,7 @@ Place: Style: "Morroccan" Location: Industriequartier Country: CH - Status: Recommended + Status: Tested CollapseMetaTable: true Phone: Email: "[booking@restaurantdar.com](readdle-spark://compose?recipient=booking@restaurantdar.com&subject=Reservierung)" diff --git a/03.02 Travels/Skiing in Switzerland.md b/03.02 Travels/Skiing in Switzerland.md index c9c705bf..8c09a1d5 100644 --- a/03.02 Travels/Skiing in Switzerland.md +++ b/03.02 Travels/Skiing in Switzerland.md @@ -92,6 +92,66 @@ style: number   +### Ideas + + +  + +```cardlink +url: https://www.telegraph.co.uk/travel/ski/articles/Switzerlands-best-ski-resorts/ +title: "The 10 best ski resorts in Switzerland" +description: "Top places for a winter skiing holiday in the the Swiss Alps from luxury boltholes to family-friendly slopes" +host: www.telegraph.co.uk +favicon: /etc/designs/telegraph/core/clientlibs/core/icons/favicon.svg +image: https://www.telegraph.co.uk/content/dam/Travel/ski/Resorts/zermatt-piste-lead.jpg?impolicy=logo-overlay +``` + +  + +```cardlink +url: https://www.magicswitzerland.com/destinations/murren/ +title: "Murren Switzerland - Switzerland Beautiful Places - Magic Switzerland" +description: "Be sure to visit Switzerland's beautiful places this year. Plan a Murren, Switzerland vacation to this small, beautiful village. Get more information." +host: www.magicswitzerland.com +favicon: //www.magicswitzerland.com/wp-content/uploads/2018/03/logo-magic-switzerland-icon.png +image: https://www.magicswitzerland.com/wp-content/uploads/2017/06/murren-switzerland-mountains.jpg +``` + + +```cardlink +url: https://en.m.wikipedia.org/wiki/M%C3%BCrren +title: "Mürren - Wikipedia" +host: en.m.wikipedia.org +favicon: /static/favicon/wikipedia.ico +image: https://upload.wikimedia.org/wikipedia/commons/thumb/b/b3/M%C3%BCrren_view.jpg/1200px-M%C3%BCrren_view.jpg +``` + +  + +```cardlink +url: https://www.zuerich.com/en/visit/the-seasons-in-zurich/winter/ski-areas-near-zurich +title: "10 Ski Areas Near Zurich" +description: "From the city onto the piste: these ski areas can be reached from Zurich in less than 90 minutes." +host: www.zuerich.com +favicon: /favicon/zt/favicon_32.png +image: https://www.zuerich.com/sites/default/files/image/2021/web_zuerich_winter_skifahren_atzmaennig_1600x900_25115.jpg +``` + +  + +```cardlink +url: https://www.booking.com/searchresults.en-gb.html?do_not_redirect_to_sr=1&dest_type=city&dest_id=-2553924&highlighted_hotels=65344&highlighted_hotels=65344&m_pinned=1&origin=hp&hp_avform=1&rows=20&error_url=https%3A%2F%2Fwww.booking.com%2Fhotel%2Fch%2Fhoteleuropa.en-gb.html%3Faid%3D839822%3Blabel%3Dski%3Bsid%3D132cd9845d3bca6798ff5c43a706510f%3Bdist%3D0%3Broom1%3DA%252CA%3Bsb_price_type%3Dtotal%3Btype%3Dtotal%26%3B&is_ski_area=1&aid=839822&label=ski&sid=132cd9845d3bca6798ff5c43a706510f&sb=1&search_form_id=6eda43eff24b01b4&checkin_monthday=4&checkin_year_month=2022-3&checkout_monthday=6&checkout_year_month=2022-3&checkin=2022-03-04&checkout=2022-03-06&group_adults=2&group_children=0&no_rooms=1&sb_travel_purpose=leisure +title: "Hotel Europa, Saas-Fee – Updated 2022 Prices" +description: "Hotel Europa is situated in a slightly elevated position in the centre of Saas Fee, with a beautiful view of the Saas Mountains and glaciers." +host: www.booking.com +``` + +  + +--- + +  + ### Other activity   diff --git a/03.04 Cinematheque/@Cinematheque.md b/03.04 Cinematheque/@Cinematheque.md index 481951e9..c8eaa3cf 100644 --- a/03.04 Cinematheque/@Cinematheque.md +++ b/03.04 Cinematheque/@Cinematheque.md @@ -12,7 +12,7 @@ CollapseMetaTable: true TVShow: Name: "Game of Thrones" Season: 6 - Episode: 4 + Episode: 9 Source: Internal banner: "![[img_1924.jpg]]" banner_icon: 🍿 diff --git a/05.01 Computer setup/Email & Communication.md b/05.01 Computer setup/Email & Communication.md index 0bb76a73..d2ecbb37 100644 --- a/05.01 Computer setup/Email & Communication.md +++ b/05.01 Computer setup/Email & Communication.md @@ -96,6 +96,12 @@ Below is an oerview of existing aliases:   +#### Alias maker + +`dice: 5d[[URL table^chartable]]` + +  + ---   diff --git a/05.02 Networks/Configuring UFW.md b/05.02 Networks/Configuring UFW.md index b237dc04..1bedfddf 100644 --- a/05.02 Networks/Configuring UFW.md +++ b/05.02 Networks/Configuring UFW.md @@ -237,7 +237,9 @@ sudo bash /etc/addip4ban/addip4ban.sh #### Ban List Tasks -- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2022-10-01 +- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2022-10-08 +- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2022-10-02 ✅ 2022-10-01 +- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2022-10-01 ✅ 2022-10-01 - [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2022-09-24 ✅ 2022-09-23 - [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2022-09-17 ✅ 2022-09-16 - [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix %%done_del%% 🔁 every week on Saturday 📅 2022-09-10 ✅ 2022-09-10 @@ -265,8 +267,11 @@ sudo bash /etc/addip4ban/addip4ban.sh - [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-04-10 ✅ 2022-04-10 - [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-04-02 ✅ 2022-04-02 - [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-03-26 ✅ 2022-03-26 -- [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-03-19 ✅ 2022-03-18 -- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-10-01 +- [ ] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-10-08 ✅ 2022-03-18 +- [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-10-02 ✅ 2022-10-01 +- [x] [[Selfhosting]], [[Configuring UFW|Firewall]] Get IP addresses caught by Postfix 🔁 every week on Saturday 📅 2022-10-01 ✅ 2022-10-01 +- [ ] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-10-08 +- [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-10-01 ✅ 2022-10-01 - [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-09-24 ✅ 2022-09-23 - [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-09-17 ✅ 2022-09-16 - [x] 🖥 [[Selfhosting]], [[Configuring UFW|Firewall]]: Update the Blocked IP list 🔁 every month on Saturday 📅 2022-09-10 ✅ 2022-09-10