@commercetools-frontend/application-shell 22.41.0 → 22.42.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/dist/{application-entry-point-654951a6.cjs.prod.js → application-entry-point-25a893ee.cjs.prod.js} +1 -1
  2. package/dist/{application-entry-point-83140459.cjs.dev.js → application-entry-point-66e4e42e.cjs.dev.js} +1 -1
  3. package/dist/{application-entry-point-bf13611d.esm.js → application-entry-point-87fc1d21.esm.js} +1 -1
  4. package/dist/commercetools-frontend-application-shell.cjs.dev.js +2 -2
  5. package/dist/commercetools-frontend-application-shell.cjs.prod.js +2 -2
  6. package/dist/commercetools-frontend-application-shell.esm.js +2 -2
  7. package/dist/{custom-view-dev-host-25fa9b32.cjs.dev.js → custom-view-dev-host-8cba1b4f.cjs.dev.js} +2 -2
  8. package/dist/{custom-view-dev-host-8b6d255d.cjs.prod.js → custom-view-dev-host-a3cabc4c.cjs.prod.js} +2 -2
  9. package/dist/{custom-view-dev-host-1a076246.esm.js → custom-view-dev-host-cbb8ba3b.esm.js} +2 -2
  10. package/dist/declarations/src/components/app-bar/app-bar.d.ts +1 -1
  11. package/dist/declarations/src/components/application-entry-point/application-entry-point.d.ts +1 -1
  12. package/dist/declarations/src/components/application-loader/application-loader.d.ts +1 -1
  13. package/dist/declarations/src/components/application-shell/application-shell.d.ts +1 -1
  14. package/dist/declarations/src/components/application-shell/global-styles.d.ts +1 -1
  15. package/dist/declarations/src/components/application-shell-authenticated/application-shell-authenticated.d.ts +1 -1
  16. package/dist/declarations/src/components/application-shell-provider/application-shell-provider.d.ts +1 -1
  17. package/dist/declarations/src/components/authenticated/am-i-logged-in.d.ts +1 -1
  18. package/dist/declarations/src/components/authenticated/authenticated.d.ts +1 -1
  19. package/dist/declarations/src/components/authenticated/oidc-callback-error-page.d.ts +1 -1
  20. package/dist/declarations/src/components/authenticated/oidc-callback.async.d.ts +1 -1
  21. package/dist/declarations/src/components/authenticated/oidc-callback.d.ts +1 -1
  22. package/dist/declarations/src/components/back-to-project/back-to-project.d.ts +1 -1
  23. package/dist/declarations/src/components/configure-intl-provider/configure-intl-provider.d.ts +1 -1
  24. package/dist/declarations/src/components/custom-view-dev-host/custom-view-dev-host.d.ts +1 -1
  25. package/dist/declarations/src/components/custom-view-dev-host/index.d.ts +1 -1
  26. package/dist/declarations/src/components/custom-view-flop-flip-provider/custom-view-flop-flip-provider.d.ts +1 -1
  27. package/dist/declarations/src/components/custom-view-shell/custom-view-shell.d.ts +1 -1
  28. package/dist/declarations/src/components/custom-view-shell-authenticated/custom-view-shell-authenticated.d.ts +1 -1
  29. package/dist/declarations/src/components/error-apologizer/error-apologizer.d.ts +1 -1
  30. package/dist/declarations/src/components/error-apologizer/index.d.ts +1 -1
  31. package/dist/declarations/src/components/error-boundary/error-boundary.d.ts +1 -1
  32. package/dist/declarations/src/components/fetch-project/fetch-project.d.ts +1 -1
  33. package/dist/declarations/src/components/fetch-user/fetch-user.d.ts +1 -1
  34. package/dist/declarations/src/components/inject-reducers/inject-reducers.d.ts +1 -1
  35. package/dist/declarations/src/components/locale-switcher/locale-switcher.d.ts +2 -2
  36. package/dist/declarations/src/components/navbar/index.d.ts +1 -1
  37. package/dist/declarations/src/components/navbar/legacy-icons/box.d.ts +1 -1
  38. package/dist/declarations/src/components/navbar/legacy-icons/cart.d.ts +1 -1
  39. package/dist/declarations/src/components/navbar/legacy-icons/connected-square.d.ts +1 -1
  40. package/dist/declarations/src/components/navbar/legacy-icons/gear.d.ts +1 -1
  41. package/dist/declarations/src/components/navbar/legacy-icons/heart.d.ts +1 -1
  42. package/dist/declarations/src/components/navbar/legacy-icons/list-with-search.d.ts +1 -1
  43. package/dist/declarations/src/components/navbar/legacy-icons/paperclip.d.ts +1 -1
  44. package/dist/declarations/src/components/navbar/legacy-icons/plugin.d.ts +1 -1
  45. package/dist/declarations/src/components/navbar/legacy-icons/rocket.d.ts +1 -1
  46. package/dist/declarations/src/components/navbar/legacy-icons/speedometer.d.ts +1 -1
  47. package/dist/declarations/src/components/navbar/legacy-icons/star.d.ts +1 -1
  48. package/dist/declarations/src/components/navbar/legacy-icons/tag-multi.d.ts +1 -1
  49. package/dist/declarations/src/components/navbar/legacy-icons/tree-structure.d.ts +1 -1
  50. package/dist/declarations/src/components/navbar/legacy-icons/user-filled.d.ts +1 -1
  51. package/dist/declarations/src/components/navbar/legacy-icons/world.d.ts +1 -1
  52. package/dist/declarations/src/components/navbar/menu-items.d.ts +7 -7
  53. package/dist/declarations/src/components/navbar/navbar-skeleton.d.ts +1 -1
  54. package/dist/declarations/src/components/navbar/navbar-skeleton.styles.d.ts +1 -1
  55. package/dist/declarations/src/components/navbar/navbar.d.ts +2 -2
  56. package/dist/declarations/src/components/project-container/index.d.ts +1 -1
  57. package/dist/declarations/src/components/project-container/project-container.d.ts +1 -1
  58. package/dist/declarations/src/components/project-data-locale/project-data-locale.d.ts +1 -1
  59. package/dist/declarations/src/components/project-expired/index.d.ts +1 -1
  60. package/dist/declarations/src/components/project-expired/project-expired.d.ts +1 -1
  61. package/dist/declarations/src/components/project-not-found/index.d.ts +1 -1
  62. package/dist/declarations/src/components/project-not-found/project-not-found.d.ts +1 -1
  63. package/dist/declarations/src/components/project-not-initialized/index.d.ts +1 -1
  64. package/dist/declarations/src/components/project-not-initialized/project-not-initialized.d.ts +1 -1
  65. package/dist/declarations/src/components/project-suspended/index.d.ts +1 -1
  66. package/dist/declarations/src/components/project-suspended/project-suspended.d.ts +1 -1
  67. package/dist/declarations/src/components/project-switcher/project-switcher.d.ts +3 -3
  68. package/dist/declarations/src/components/quick-access/butler/butler.d.ts +1 -1
  69. package/dist/declarations/src/components/quick-access/butler-command/butler-command.d.ts +1 -1
  70. package/dist/declarations/src/components/quick-access/index.d.ts +1 -1
  71. package/dist/declarations/src/components/quick-access/quick-access.d.ts +1 -1
  72. package/dist/declarations/src/components/redirect-to-logout/index.d.ts +1 -1
  73. package/dist/declarations/src/components/redirect-to-logout/redirect-to-logout.d.ts +1 -1
  74. package/dist/declarations/src/components/redirect-to-project-create/index.d.ts +1 -1
  75. package/dist/declarations/src/components/redirect-to-project-create/redirect-to-project-create.d.ts +1 -1
  76. package/dist/declarations/src/components/route-catch-all/index.d.ts +1 -1
  77. package/dist/declarations/src/components/route-catch-all/route-catch-all.d.ts +1 -1
  78. package/dist/declarations/src/components/service-page-project-switcher/service-page-project-switcher.d.ts +1 -1
  79. package/dist/declarations/src/components/setup-flop-flip-provider/setup-flop-flip-provider.d.ts +1 -1
  80. package/dist/declarations/src/components/suspended-route/suspended-route.d.ts +1 -1
  81. package/dist/declarations/src/components/theme-switcher/theme-switcher.d.ts +1 -1
  82. package/dist/declarations/src/components/user-settings-menu/index.d.ts +1 -1
  83. package/dist/declarations/src/components/user-settings-menu/user-settings-menu.d.ts +3 -3
  84. package/dist/{index-b1476d46.cjs.dev.js → index-0459c0f4.cjs.dev.js} +2 -2
  85. package/dist/{index-b6081c20.esm.js → index-a5d2d010.esm.js} +2 -2
  86. package/dist/{index-91985d64.cjs.prod.js → index-b76590b3.cjs.prod.js} +2 -2
  87. package/dist/{index-514ff122.cjs.dev.js → index-c1ab39be.cjs.dev.js} +22 -33
  88. package/dist/{index-6172ab5f.esm.js → index-c87bac8c.esm.js} +22 -33
  89. package/dist/{index-c64b43a5.cjs.prod.js → index-c915c7df.cjs.prod.js} +9 -9
  90. package/dist/{navbar-89151faf.cjs.dev.js → navbar-362b1d3e.cjs.dev.js} +10 -20
  91. package/dist/{navbar-2ed5f379.esm.js → navbar-8df97694.esm.js} +10 -20
  92. package/dist/{oidc-callback-9f6d9ebc.cjs.dev.js → oidc-callback-706a8916.cjs.dev.js} +2 -2
  93. package/dist/{oidc-callback-84111585.cjs.prod.js → oidc-callback-b2997a6c.cjs.prod.js} +2 -2
  94. package/dist/{oidc-callback-d2853632.esm.js → oidc-callback-d3422d3f.esm.js} +2 -2
  95. package/dist/{project-container-553d0fc4.esm.js → project-container-0e5e9982.esm.js} +7 -7
  96. package/dist/{project-container-de39b8cc.cjs.prod.js → project-container-3e4a692a.cjs.prod.js} +7 -7
  97. package/dist/{project-container-9f9b6c9b.cjs.dev.js → project-container-57f4cdea.cjs.dev.js} +7 -7
  98. package/dist/{project-expired-5968daae.cjs.prod.js → project-expired-0a2fb86f.cjs.prod.js} +3 -3
  99. package/dist/{project-expired-2779847b.esm.js → project-expired-8169c1d4.esm.js} +3 -3
  100. package/dist/{project-expired-6e265773.cjs.dev.js → project-expired-d466ee47.cjs.dev.js} +3 -3
  101. package/dist/{project-not-found-4a089503.cjs.prod.js → project-not-found-781ca562.cjs.prod.js} +3 -3
  102. package/dist/{project-not-found-6065128e.esm.js → project-not-found-9e56654c.esm.js} +3 -3
  103. package/dist/{project-not-found-f1335266.cjs.dev.js → project-not-found-ea5eb61b.cjs.dev.js} +3 -3
  104. package/dist/{project-not-initialized-ba0a2f8f.cjs.prod.js → project-not-initialized-5170b8e8.cjs.prod.js} +3 -3
  105. package/dist/{project-not-initialized-67bfaea7.cjs.dev.js → project-not-initialized-5773b30e.cjs.dev.js} +3 -3
  106. package/dist/{project-not-initialized-62af0df0.esm.js → project-not-initialized-c5058944.esm.js} +3 -3
  107. package/dist/{project-suspended-8bc7b733.esm.js → project-suspended-3d9f7f29.esm.js} +3 -3
  108. package/dist/{project-suspended-f357e4aa.cjs.prod.js → project-suspended-7576d979.cjs.prod.js} +3 -3
  109. package/dist/{project-suspended-d829c27b.cjs.dev.js → project-suspended-e2099aad.cjs.dev.js} +3 -3
  110. package/dist/{quick-access-2be07c72.cjs.prod.js → quick-access-cd1d0689.cjs.prod.js} +2 -2
  111. package/dist/{quick-access-e3d6b1b3.esm.js → quick-access-e1423a23.esm.js} +5 -8
  112. package/dist/{quick-access-e971c562.cjs.dev.js → quick-access-f8ed8f7b.cjs.dev.js} +5 -8
  113. package/dist/{redirect-to-logout-f7314e8b.cjs.dev.js → redirect-to-logout-3483b4b5.cjs.dev.js} +2 -2
  114. package/dist/{redirect-to-logout-076de118.esm.js → redirect-to-logout-9be028f6.esm.js} +2 -2
  115. package/dist/{redirect-to-logout-40570b13.cjs.prod.js → redirect-to-logout-feb12a30.cjs.prod.js} +2 -2
  116. package/dist/{requests-in-flight-loader-2b426c07.cjs.dev.js → requests-in-flight-loader-9cf0c072.cjs.dev.js} +2 -2
  117. package/dist/{requests-in-flight-loader-094596d8.esm.js → requests-in-flight-loader-d1157c0b.esm.js} +2 -2
  118. package/dist/{requests-in-flight-loader-ef1092fd.cjs.prod.js → requests-in-flight-loader-f35d0c2c.cjs.prod.js} +2 -2
  119. package/dist/{service-page-project-switcher-bcaa888c.cjs.prod.js → service-page-project-switcher-3c39c207.cjs.prod.js} +1 -1
  120. package/dist/{service-page-project-switcher-4ff31118.cjs.dev.js → service-page-project-switcher-799ba921.cjs.dev.js} +2 -3
  121. package/dist/service-page-project-switcher-b9c86228.esm.js +39 -0
  122. package/dist/{user-settings-menu-dc94ceb2.esm.js → user-settings-menu-1977193f.esm.js} +2 -4
  123. package/dist/{user-settings-menu-a0813186.cjs.dev.js → user-settings-menu-d5bab46b.cjs.dev.js} +2 -4
  124. package/package.json +33 -33
  125. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.dev.js +2 -2
  126. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.cjs.prod.js +2 -2
  127. package/test-utils/dist/commercetools-frontend-application-shell-test-utils.esm.js +2 -2
  128. package/dist/service-page-project-switcher-48e97042.esm.js +0 -40
@@ -36,11 +36,11 @@ import { customProperties, designTokens } from '@commercetools-uikit/design-syst
36
36
  import { AngleThinRightIcon, SearchIcon } from '@commercetools-uikit/icons';
37
37
  import LoadingSpinner from '@commercetools-uikit/loading-spinner';
38
38
  import { jsxs, jsx } from '@emotion/react/jsx-runtime';
39
- import { B as ButlerContainer, p as pimIndexerStates } from './index-6172ab5f.esm.js';
39
+ import { B as ButlerContainer, p as pimIndexerStates } from './index-c87bac8c.esm.js';
40
40
  import _Promise from '@babel/runtime-corejs3/core-js-stable/promise';
41
41
  import _reduceInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/reduce';
42
42
  import _findInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/find';
43
- import './index-b6081c20.esm.js';
43
+ import './index-a5d2d010.esm.js';
44
44
  import '@babel/runtime-corejs3/core-js-stable/object/entries';
45
45
  import '@babel/runtime-corejs3/core-js-stable/reflect/has';
46
46
  import '@reduxjs/toolkit';
@@ -93,8 +93,7 @@ var _ref$1 = process.env.NODE_ENV === "production" ? {
93
93
  styles: "align-self:center;>*{display:block;}"
94
94
  } : {
95
95
  name: "1qkkrpz-ButlerCommand",
96
- styles: "align-self:center;>*{display:block;};label:ButlerCommand;",
97
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRGdCIiwiZmlsZSI6ImJ1dGxlci1jb21tYW5kLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vdXNlRXZlbnRIYW5kbGVyIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgY3VzdG9tUHJvcGVydGllcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHsgQW5nbGVUaGluUmlnaHRJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IHR5cGUgeyBDb21tYW5kIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG50eXBlIFByb3BzID0ge1xuICBjb21tYW5kOiBDb21tYW5kO1xuICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbiAgb25DbGljazogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICBvbk1vdXNlRW50ZXI6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50Pjtcbn07XG5cbmNvbnN0IEJ1dGxlckNvbW1hbmQgPSAocHJvcHM6IFByb3BzKSA9PiAoXG4gIDxkaXZcbiAgICBrZXk9e3Byb3BzLmNvbW1hbmQuaWR9XG4gICAgZGF0YS10ZXN0aWQ9e2BxdWljay1hY2Nlc3MtcmVzdWx0KCR7cHJvcHMuY29tbWFuZC5pZH0pYH1cbiAgICBhcmlhLWN1cnJlbnQ9e3Byb3BzLmlzU2VsZWN0ZWQgPT09IHRydWUgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgIGNzcz17Y3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBhZGRpbmc6IDAgJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdNfTtcbiAgICAgIGhlaWdodDogMzZweDtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiAyMDA7XG4gICAgICBsaW5lLWhlaWdodDogMzZweDtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICR7cHJvcHMuaXNTZWxlY3RlZCA9PT0gdHJ1ZVxuICAgICAgICA/IGBcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvckFjY2VudH07XG4gICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU3VyZmFjZX07XG4gICAgICAgICAgYFxuICAgICAgICA6ICcnfVxuICAgIGB9XG4gICAgb25Nb3VzZUVudGVyPXtwcm9wcy5vbk1vdXNlRW50ZXJ9XG4gICAgb25DbGljaz17cHJvcHMub25DbGlja31cbiAgPlxuICAgIDxkaXZcbiAgICAgIGNzcz17Y3NzYFxuICAgICAgICBmbGV4OiAxIGF1dG87XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgYH1cbiAgICA+XG4gICAgICB7cHJvcHMuY29tbWFuZC50ZXh0fVxuICAgIDwvZGl2PlxuICAgIHsoKEFycmF5LmlzQXJyYXkocHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcykgJiZcbiAgICAgIHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMubGVuZ3RoID4gMCkgfHxcbiAgICAgIHR5cGVvZiBwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzID09PSAnZnVuY3Rpb24nKSAmJiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICA+ICoge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8QW5nbGVUaGluUmlnaHRJY29uXG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgY29sb3I9e3Byb3BzLmlzU2VsZWN0ZWQgPyAnc3VyZmFjZScgOiAnbmV1dHJhbDYwJ31cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvZGl2PlxuKTtcblxuQnV0bGVyQ29tbWFuZC5kaXNwbGF5TmFtZSA9ICdCdXRsZXJDb21tYW5kJztcblxuZXhwb3J0IGRlZmF1bHQgQnV0bGVyQ29tbWFuZDtcbiJdfQ== */",
96
+ styles: "align-self:center;>*{display:block;};label:ButlerCommand;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRGdCIiwiZmlsZSI6ImJ1dGxlci1jb21tYW5kLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vdXNlRXZlbnRIYW5kbGVyIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgY3VzdG9tUHJvcGVydGllcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHsgQW5nbGVUaGluUmlnaHRJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IHR5cGUgeyBDb21tYW5kIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG50eXBlIFByb3BzID0ge1xuICBjb21tYW5kOiBDb21tYW5kO1xuICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbiAgb25DbGljazogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICBvbk1vdXNlRW50ZXI6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50Pjtcbn07XG5cbmNvbnN0IEJ1dGxlckNvbW1hbmQgPSAocHJvcHM6IFByb3BzKSA9PiAoXG4gIDxkaXZcbiAgICBrZXk9e3Byb3BzLmNvbW1hbmQuaWR9XG4gICAgZGF0YS10ZXN0aWQ9e2BxdWljay1hY2Nlc3MtcmVzdWx0KCR7cHJvcHMuY29tbWFuZC5pZH0pYH1cbiAgICBhcmlhLWN1cnJlbnQ9e3Byb3BzLmlzU2VsZWN0ZWQgPT09IHRydWUgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgIGNzcz17Y3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBhZGRpbmc6IDAgJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdNfTtcbiAgICAgIGhlaWdodDogMzZweDtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiAyMDA7XG4gICAgICBsaW5lLWhlaWdodDogMzZweDtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICR7cHJvcHMuaXNTZWxlY3RlZCA9PT0gdHJ1ZVxuICAgICAgICA/IGBcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvckFjY2VudH07XG4gICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU3VyZmFjZX07XG4gICAgICAgICAgYFxuICAgICAgICA6ICcnfVxuICAgIGB9XG4gICAgb25Nb3VzZUVudGVyPXtwcm9wcy5vbk1vdXNlRW50ZXJ9XG4gICAgb25DbGljaz17cHJvcHMub25DbGlja31cbiAgPlxuICAgIDxkaXZcbiAgICAgIGNzcz17Y3NzYFxuICAgICAgICBmbGV4OiAxIGF1dG87XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgYH1cbiAgICA+XG4gICAgICB7cHJvcHMuY29tbWFuZC50ZXh0fVxuICAgIDwvZGl2PlxuICAgIHsoKEFycmF5LmlzQXJyYXkocHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcykgJiZcbiAgICAgIHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMubGVuZ3RoID4gMCkgfHxcbiAgICAgIHR5cGVvZiBwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzID09PSAnZnVuY3Rpb24nKSAmJiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICA+ICoge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8QW5nbGVUaGluUmlnaHRJY29uXG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgY29sb3I9e3Byb3BzLmlzU2VsZWN0ZWQgPyAnc3VyZmFjZScgOiAnbmV1dHJhbDYwJ31cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvZGl2PlxuKTtcblxuQnV0bGVyQ29tbWFuZC5kaXNwbGF5TmFtZSA9ICdCdXRsZXJDb21tYW5kJztcblxuZXhwb3J0IGRlZmF1bHQgQnV0bGVyQ29tbWFuZDtcbiJdfQ== */",
98
97
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
99
98
  };
100
99
  var _ref2 = process.env.NODE_ENV === "production" ? {
@@ -102,8 +101,7 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
102
101
  styles: "flex:1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis"
103
102
  } : {
104
103
  name: "zq3ooq-ButlerCommand",
105
- styles: "flex:1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;label:ButlerCommand;",
106
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQ2MiLCJmaWxlIjoiYnV0bGVyLWNvbW1hbmQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW91c2VFdmVudEhhbmRsZXIgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyBBbmdsZVRoaW5SaWdodEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmQgfSBmcm9tICcuLi90eXBlcyc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGNvbW1hbmQ6IENvbW1hbmQ7XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG4gIG9uTW91c2VFbnRlcjogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xufTtcblxuY29uc3QgQnV0bGVyQ29tbWFuZCA9IChwcm9wczogUHJvcHMpID0+IChcbiAgPGRpdlxuICAgIGtleT17cHJvcHMuY29tbWFuZC5pZH1cbiAgICBkYXRhLXRlc3RpZD17YHF1aWNrLWFjY2Vzcy1yZXN1bHQoJHtwcm9wcy5jb21tYW5kLmlkfSlgfVxuICAgIGFyaWEtY3VycmVudD17cHJvcHMuaXNTZWxlY3RlZCA9PT0gdHJ1ZSA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgY3NzPXtjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgcGFkZGluZzogMCAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019O1xuICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgJHtwcm9wcy5pc1NlbGVjdGVkID09PSB0cnVlXG4gICAgICAgID8gYFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yQWNjZW50fTtcbiAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbiAgICAgICAgICBgXG4gICAgICAgIDogJyd9XG4gICAgYH1cbiAgICBvbk1vdXNlRW50ZXI9e3Byb3BzLm9uTW91c2VFbnRlcn1cbiAgICBvbkNsaWNrPXtwcm9wcy5vbkNsaWNrfVxuICA+XG4gICAgPGRpdlxuICAgICAgY3NzPXtjc3NgXG4gICAgICAgIGZsZXg6IDEgYXV0bztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBgfVxuICAgID5cbiAgICAgIHtwcm9wcy5jb21tYW5kLnRleHR9XG4gICAgPC9kaXY+XG4gICAgeygoQXJyYXkuaXNBcnJheShwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzKSAmJlxuICAgICAgcHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcy5sZW5ndGggPiAwKSB8fFxuICAgICAgdHlwZW9mIHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMgPT09ICdmdW5jdGlvbicpICYmIChcbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgID4gKiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxBbmdsZVRoaW5SaWdodEljb25cbiAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICBjb2xvcj17cHJvcHMuaXNTZWxlY3RlZCA/ICdzdXJmYWNlJyA6ICduZXV0cmFsNjAnfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKX1cbiAgPC9kaXY+XG4pO1xuXG5CdXRsZXJDb21tYW5kLmRpc3BsYXlOYW1lID0gJ0J1dGxlckNvbW1hbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJDb21tYW5kO1xuIl19 */",
104
+ styles: "flex:1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;label:ButlerCommand;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQ2MiLCJmaWxlIjoiYnV0bGVyLWNvbW1hbmQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW91c2VFdmVudEhhbmRsZXIgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyBBbmdsZVRoaW5SaWdodEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmQgfSBmcm9tICcuLi90eXBlcyc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGNvbW1hbmQ6IENvbW1hbmQ7XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG4gIG9uTW91c2VFbnRlcjogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xufTtcblxuY29uc3QgQnV0bGVyQ29tbWFuZCA9IChwcm9wczogUHJvcHMpID0+IChcbiAgPGRpdlxuICAgIGtleT17cHJvcHMuY29tbWFuZC5pZH1cbiAgICBkYXRhLXRlc3RpZD17YHF1aWNrLWFjY2Vzcy1yZXN1bHQoJHtwcm9wcy5jb21tYW5kLmlkfSlgfVxuICAgIGFyaWEtY3VycmVudD17cHJvcHMuaXNTZWxlY3RlZCA9PT0gdHJ1ZSA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgY3NzPXtjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgcGFkZGluZzogMCAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019O1xuICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgJHtwcm9wcy5pc1NlbGVjdGVkID09PSB0cnVlXG4gICAgICAgID8gYFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yQWNjZW50fTtcbiAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbiAgICAgICAgICBgXG4gICAgICAgIDogJyd9XG4gICAgYH1cbiAgICBvbk1vdXNlRW50ZXI9e3Byb3BzLm9uTW91c2VFbnRlcn1cbiAgICBvbkNsaWNrPXtwcm9wcy5vbkNsaWNrfVxuICA+XG4gICAgPGRpdlxuICAgICAgY3NzPXtjc3NgXG4gICAgICAgIGZsZXg6IDEgYXV0bztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBgfVxuICAgID5cbiAgICAgIHtwcm9wcy5jb21tYW5kLnRleHR9XG4gICAgPC9kaXY+XG4gICAgeygoQXJyYXkuaXNBcnJheShwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzKSAmJlxuICAgICAgcHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcy5sZW5ndGggPiAwKSB8fFxuICAgICAgdHlwZW9mIHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMgPT09ICdmdW5jdGlvbicpICYmIChcbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgID4gKiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxBbmdsZVRoaW5SaWdodEljb25cbiAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICBjb2xvcj17cHJvcHMuaXNTZWxlY3RlZCA/ICdzdXJmYWNlJyA6ICduZXV0cmFsNjAnfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKX1cbiAgPC9kaXY+XG4pO1xuXG5CdXRsZXJDb21tYW5kLmRpc3BsYXlOYW1lID0gJ0J1dGxlckNvbW1hbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJDb21tYW5kO1xuIl19 */",
107
105
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
108
106
  };
109
107
  const ButlerCommand = props => jsxs("div", {
@@ -525,8 +523,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
525
523
  styles: "display:flex"
526
524
  } : {
527
525
  name: "vnvgom-Butler",
528
- styles: "display:flex;label:Butler;",
529
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ25Ca0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleWJvYXJkRXZlbnRIYW5kbGVyLFxuICBDaGFuZ2VFdmVudEhhbmRsZXIsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBNb3VzZUV2ZW50LFxuICB1c2VSZWR1Y2VyLFxuICB1c2VSZWYsXG4gIHVzZUNhbGxiYWNrLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MsIGtleWZyYW1lcywgQ2xhc3NOYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIGFzIHVpS2l0RGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyBTZWFyY2hJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IExvYWRpbmdTcGlubmVyIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2xvYWRpbmctc3Bpbm5lcic7XG5pbXBvcnQgQnV0bGVyQ29tbWFuZCBmcm9tICcuLi9idXRsZXItY29tbWFuZCc7XG5pbXBvcnQgQnV0bGVyQ29udGFpbmVyIGZyb20gJy4uL2J1dGxlci1jb250YWluZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgU2VhcmNoVGV4dCxcbiAgU2VsZWN0ZWRSZXN1bHQsXG4gIFN0YWNrLFxuICBIaXN0b3J5RW50cnksXG59IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgaXNTZWxlY3RBbGxDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnYScgJiZcbiAgZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgaXNDbG9zZUNvbWJvID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICBldmVudC5rZXkgPT09ICdFc2NhcGUnICYmXG4gICFldmVudC5tZXRhS2V5ICYmXG4gICFldmVudC5jdHJsS2V5ICYmXG4gICFldmVudC5hbHRLZXkgJiZcbiAgIWV2ZW50LnNoaWZ0S2V5O1xuXG5jb25zdCBnZXRQbGF0Zm9ybSA9ICgpID0+IHtcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdXaW4nKSkgcmV0dXJuICd3aW5kb3dzJztcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdNYWMnKSkgcmV0dXJuICdtYWNvcyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnWDExJykpIHJldHVybiAndW5peCc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTGludXgnKSkgcmV0dXJuICdsaW51eCc7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBoYXNOZXdXaW5kb3dNb2RpZmllciA9IChcbiAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgTW91c2VFdmVudDxIVE1MRWxlbWVudD5cbikgPT4ge1xuICBjb25zdCBwbGF0Zm9ybSA9IGdldFBsYXRmb3JtKCk7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdtYWNvcyc6XG4gICAgICByZXR1cm4gZXZlbnQubWV0YUtleTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV2ZW50LmN0cmxLZXk7XG4gIH1cbn07XG5cbmNvbnN0IHNoYWtlQW5pbWF0aW9uID0ga2V5ZnJhbWVzYFxuICBmcm9tLFxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIDE0JSxcbiAgNDIlLFxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTNweCwgMCwgMCk7XG4gIH1cblxuICAyOCUsXG4gIDU2JSxcbiAgODQlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDNweCwgMCwgMCk7XG4gIH1cbmA7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogYm9vbGVhbjtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0O1xuICBzZWxlY3RlZFJlc3VsdDogU2VsZWN0ZWRSZXN1bHQ7XG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IGJvb2xlYW47XG4gIHJlc3VsdHM6IENvbW1hbmRbXTtcbiAgc3RhY2s6IFN0YWNrW107XG59O1xudHlwZSBBY3Rpb24gPVxuICB8IHsgdHlwZTogJ25ldHdvcmtFcnJvcic7IHBheWxvYWQ6IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2xvYWRpbmcnOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCc7IHBheWxvYWQ6IG51bWJlciB9XG4gIHwgeyB0eXBlOiAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NldE5leHRDb21tYW5kcyc7IHBheWxvYWQ6IHsgcmVzdWx0czogQ29tbWFuZFtdIH0gfVxuICB8IHtcbiAgICAgIHR5cGU6ICdzZXRQcmV2Q29tbWFuZHMnO1xuICAgICAgcGF5bG9hZDogeyBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0OyByZXN1bHRzOiBDb21tYW5kW10gfTtcbiAgICB9XG4gIHwgeyB0eXBlOiAnc2VhcmNoVGV4dCc7IHBheWxvYWQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOyBwYXlsb2FkOiBDb21tYW5kW10gfVxuICB8IHsgdHlwZTogJ3Jlc2V0U2VhcmNoVGV4dCcgfVxuICB8IHsgdHlwZTogJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJyB9XG4gIHwgeyB0eXBlOiAncmVzZXQnIH07XG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIHNlYXJjaFRleHQ6ICcnLFxuICBzZWxlY3RlZFJlc3VsdDogLTEsXG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gIHJlc3VsdHM6IFtdLFxuICBzdGFjazogW10sXG59O1xuY29uc3QgcmVkdWNlciA9IChzdGF0ZTogU3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnbmV0d29ya0Vycm9yJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBoYXNOZXR3b3JrRXJyb3I6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnbG9hZGluZyc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaXNMb2FkaW5nOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ3NlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0ICsgMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RlY3JlbWVudFNlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDpcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDFcbiAgICAgICAgICAgID8gc3RhdGUucmVzdWx0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0IC0gMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ3BpY2tDb21tYW5kRnJvbUhpc3RvcnknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZC5zZWFyY2hUZXh0LFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICBzdGFjazogW10sXG4gICAgICAgIC8vIFRoZSBoaXN0b3J5IGRvZXMgbm90IGdldCBjaGFuZ2VkIGhlcmUsIGl0IHdpbGwgYmUgY2hhbmdlZCBhbG9uZ1xuICAgICAgICAvLyB3aXRoIHRoZSByZWd1bGFyIGZsb3cuXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldE5leHRDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc3RhY2s6IFtcbiAgICAgICAgICAuLi5zdGF0ZS5zdGFjayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiBzdGF0ZS5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgcmVzdWx0czogc3RhdGUucmVzdWx0cyxcbiAgICAgICAgICAgIHNlbGVjdGVkUmVzdWx0OiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFByZXZDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICAvLyBvbWl0IGxhc3QgaXRlbVxuICAgICAgICBzdGFjazogc3RhdGUuc3RhY2suc2xpY2UoMCwgLTEpLFxuICAgICAgfTtcbiAgICBjYXNlICdzZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgLy8gY2xlYXIgbmV0d29yayBlcnJvciB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICAgLy8gYXJlIHRlbXB0ZWQgdG8gcmV0cnlcbiAgICAgICAgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZC5sZW5ndGggPiAwICYmIHN0YXRlLmhhc05ldHdvcmtFcnJvcixcbiAgICAgIH07XG4gICAgY2FzZSAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCA/IDAgOiAtMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogdHJ1ZSxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgfTtcbiAgICBjYXNlICdyZXNldFNlYXJjaFRleHQnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlYXJjaFRleHQ6ICcnLCByZXN1bHRzOiBbXSwgc2VsZWN0ZWRSZXN1bHQ6IC0xIH07XG4gICAgY2FzZSAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlbGVjdGVkUmVzdWx0OiAtMSwgZW5hYmxlSGlzdG9yeTogdHJ1ZSB9O1xuICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxudHlwZSBQcm9wcyA9IHtcbiAgaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdO1xuICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiAoaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdKSA9PiB2b2lkO1xuICBzZWFyY2g6IChzZWFyY2hUZXh0OiBTZWFyY2hUZXh0KSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGdldE5leHRDb21tYW5kczogKGNvbW1hbmQ6IENvbW1hbmQpID0+IFByb21pc2U8Q29tbWFuZFtdPjtcbiAgZXhlY3V0ZUNvbW1hbmQ6IChjb21tYW5kOiBDb21tYW5kLCBtZXRhOiB7IG9wZW5Jbk5ld1RhYjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBjbGFzc05hbWVTaGFrZUFuaW1hdGlvbjogc3RyaW5nO1xufTtcbmNvbnN0IEJ1dGxlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyPFxuICAgIChwcmV2U3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbikgPT4gU3RhdGVcbiAgPihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IHNob3VsZFNlbGVjdEZpZWxkVGV4dCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTmV3V2luZG93Q29tYm8gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBza2lwTmV4dFNlbGVjdGlvbiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlYXJjaENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiB0cnVlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVuc2V0SGFzTmV0d29ya0Vycm9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogJ25ldHdvcmtFcnJvcicsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogZmFsc2UgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBEZXN0cnVjdHVyZSBmdW5jdGlvbnMgZnJvbSBwcm9wcyB0byByZWZlcmVuY2UgdGhlbSBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RcbiAgY29uc3Qge1xuICAgIHNlYXJjaDogc2VhcmNoRnJvbVBhcmVudCxcbiAgICBvbkNsb3NlOiBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICBleGVjdXRlQ29tbWFuZDogZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2U6IG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgIGdldE5leHRDb21tYW5kczogZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNoYWtlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZWFyY2hDb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25cbiAgICAgICk7XG4gICAgICAvLyAtPiB0cmlnZ2VyaW5nIHJlZmxvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgIHZvaWQgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGg7XG4gICAgICBzZWFyY2hDb250YWluZXJSZWYuY3VycmVudC5jbGFzc0xpc3QuYWRkKHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uKTtcbiAgICB9XG4gIH0sIFtwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbl0pO1xuXG4gIGNvbnN0IGV4ZWN1dGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29tbWFuZCwgbWV0YSkgPT4ge1xuICAgICAgLy8gT25seSBtYWluIGVudHJpZXMgZ2V0IGFkZGVkIHRvIGhpc3RvcnksIHNvIHdoZW4gYSBzdWJjb21tYW5kIGlzIGV4ZWN1dGVkLFxuICAgICAgLy8gd2UgYWRkIHRoZSBtYWluIGNvbW1hbmQgb2YgaXQgdG8gdGhlIGhpc3RvcnkgKHRoZSB0b3AtbGV2ZWwgY29tbWFuZCkuXG4gICAgICAvL1xuICAgICAgLy8gVGhlIGtleSB0byBpZGVudGlmeSBoaXN0b3J5IGVudHJpZXMgYnkgaXMgYWx3YXlzIHRoZSBzZWFyY2hUZXh0XG4gICAgICAvLyBUaGVyZSB3aWxsIG5ldmVyIGJlIHR3byBoaXN0b3J5IGVudHJpZXMgd2l0aCB0aGUgc2FtZSBzZWFyY2hUZXh0XG4gICAgICBjb25zdCBlbnRyeSA9XG4gICAgICAgIHN0YXRlLnN0YWNrLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gLy8gVGhlIHN0YWNrIGlzIGVtcHR5LCBzbyB3ZSBhcmUgZXhlY3V0aW5nIGEgdG9wLWxldmVsIGNvbW1hbmRcbiAgICAgICAgICAgIHsgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCwgcmVzdWx0czogc3RhdGUucmVzdWx0cyB9XG4gICAgICAgICAgOiAvLyBXZSBhcmUgZXhlY3V0aW5nIGEgc3ViY29tbWFuZCwgc28gd2UgZ2V0IHRoZSB0b3AtbGV2ZWwgY29tbWFuZCBmb3IgaXQsXG4gICAgICAgICAgICAvLyB3aGljaCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjay5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc3RhY2tbMF0uc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogc3RhdGUuc3RhY2tbMF0ucmVzdWx0cyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgIC8vIEFkZCB0aGUgZW50cnkgdG8gdGhlIGhpc3RvcnksIHdoaWxlIGV4Y2x1ZGluZyBhbnkgZWFybGllciBoaXN0b3J5IGVudHJ5XG4gICAgICAvLyB3aXRoIHRoZSBzYW1lIHNlYXJjaCB0ZXh0LiBUaGlzIGVmZmVjdGl2ZWx5IFwibW92ZXNcIiB0aGF0IGVudHJ5IHRvIHRoZVxuICAgICAgLy8gdG9wIG9mIHRoZSBoaXN0b3J5ICh3aXRoIHRoZSBtb3N0IHJlY2VudCByZXN1bHRzKSwgb3IgYXBwZW5kcyBhIG5ldyBlbnRyeVxuICAgICAgLy8gd2hlbiBpdCBkaWRuJ3QgZXhpc3QgYmVmb3JlLlxuICAgICAgb25IaXN0b3J5RW50cmllc0NoYW5nZUZyb21QYXJlbnQoW1xuICAgICAgICAuLi5wcm9wcy5oaXN0b3J5RW50cmllcy5maWx0ZXIoXG4gICAgICAgICAgKGNvbW1hbmQpID0+IGNvbW1hbmQuc2VhcmNoVGV4dCAhPT0gZW50cnkuc2VhcmNoVGV4dFxuICAgICAgICApLFxuICAgICAgICBlbnRyeSxcbiAgICAgIF0pO1xuXG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH0pO1xuXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCgpO1xuXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQoY29tbWFuZCwgbWV0YSk7XG4gICAgfSxcbiAgICBbXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQsXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzdGF0ZS5yZXN1bHRzLFxuICAgICAgc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIHN0YXRlLnN0YWNrLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnRpbmcgY3Vyc29yIGp1bXBzIGNhbiBvbmx5IGhhcHBlbiBpbiBvbktleURvd24sIGJ1dCBub3QgaW4gb25LZXlVcFxuICAgICAgZXZlbnQucGVyc2lzdCgpO1xuXG4gICAgICAvLyBXZSB3YW50IHRvIGtub3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGNtZCtlbnRlciAoY21kIGJlaW5nIGEgbWV0YSBrZXkpLlxuICAgICAgLy8gV2UgYXJlIG9ubHkgdG9sZCBhYm91dCB0aGlzIGluIGtleURvd24sIGJ1dCBub3QgaW4ga2V5VXAsIHNvIHdlIG5lZWRcbiAgICAgIC8vIHRvIGhhbmRsZSBpdCBoZXJlXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmIGhhc05ld1dpbmRvd01vZGlmaWVyKGV2ZW50KSkge1xuICAgICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEF2b2lkIHNlbGVjdGluZyB0aGUgd2hvbGUgcGFnZSB3aGVuIHVzZXIgc2VsZWN0ZXMgZXZlcnl0aGluZyB3aXRoXG4gICAgICAvLyBhIGtleWJvYXJkIHNob3J0Y3V0LiBUaGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyB0aG91Z2guXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSB3aG9sZSBwYWdlIGZyb20gYmVpbmcgc2VsZWN0ZWQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gMSkgb3BlbnMgdGhlIHNlYXJjaCBib3hcbiAgICAgIC8vIDIpIHR5cGVzIGludG8gaXRcbiAgICAgIC8vIDMpIHNlbGVjdHMgYWxsIHRleHQgdXNpbmcgY21kK2FcbiAgICAgIC8vIDQpIGNsb3NlcyB0aGUgc2VhcmNoIGJveCB3aXRoIGVzY1xuICAgICAgLy8gV2l0aG91dCB0aGlzIGhhbmRsaW5nLCB0aGUgd2hvbGUgcGFnZSB3b3VsZCBub3cgYmUgc2VsZWN0ZWRcbiAgICAgIGlmIChpc1NlbGVjdEFsbENvbWJvKGV2ZW50KSkge1xuICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBicm93c2VyIGZyb20gc2VsZWN0aW5nIGFueXRoaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzZWFyY2hJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gVGhpcyBzZWxlY3RzIHRoZSB0ZXh0IGluIHRoZSBzZWFyY2ggaW5wdXRcbiAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGggb3RoZXIga2V5IGNvbWJpbmF0aW9ucyB1c2luZyBtb2RpZmllciBrZXlzXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzQ2xvc2VDb21ibyhldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2tpcCBuZXh0IG1vdXNlRW50ZXIgdG8gYXZvaWQgc2V0dGluZyBzZWxlY3RlZFJlc3VsdCB3aGVuIGN1cnNvciBqdXN0XG4gICAgICAvLyBoYXBwZW5zIHRvIGJlIHdoZXJlIHRoZSByZXN1bHRzIHdpbGwgcG9wIHVwXG4gICAgICBza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgLy8gcHJldmVudCBjdXJzb3IgZnJvbSBqdW1waW5nIHRvIGVuZCBvZiB0ZXh0IGlucHV0XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIC8vIGJyb3dzZSB0aHJvdWdoIGhpc3RvcnlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgKHN0YXRlLnNlbGVjdGVkUmVzdWx0IDwgMSAmJiBzdGF0ZS5lbmFibGVIaXN0b3J5KVxuICAgICAgICApIHtcbiAgICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICA/IC8vIFdoZW4gZ29pbmcgYmFjayB0aGUgZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIDogLy8gV2hlbiBnb2luZyBiYWNrIG1vcmUgdGhhbiBvbmUgc3RlcFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgPT09IHN0YXRlLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIC8vIFBpY2sgdGhlIHByZXZpb3VzIGNvbW1hbmQgZnJvbSB0aGUgaGlzdG9yeVxuICAgICAgICAgIGNvbnN0IHByZXZDb21tYW5kID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgID8gLy8gcHJldmlvdXMgY29tbWFuZCBvbiB0b3Agb2YgdGhlIGhpc3Rvcnkgd2hlbiBnb2luZyBiYWNrIG9uXG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGxhc3QocHJvcHMuaGlzdG9yeUVudHJpZXMpXG4gICAgICAgICAgICAgIDogLy8gcHJldmlvdXMgY29tbWFuZCBpcyBkZWVwZXIgZG93blxuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGhpc3RvcnkgZG9lcyBub3QgZXhpc3QgKG5lZ2F0aXZlIGluZGV4KSwgdGhlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaW1wbGljaXRseSByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzW3NlbGVjdGVkSW5kZXggLSAxXTtcbiAgICAgICAgICAvLyBTa2lwIHdoZW4gbm8gcHJldmlvdXMgZW50cnkgZXhpc3RzIGluIHRoZSBoaXN0b3J5XG4gICAgICAgICAgaWYgKCFwcmV2Q29tbWFuZCkgcmV0dXJuO1xuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBiZWdpbm5pbmcgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XTtcbiAgICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc3RhdGUuc2VhcmNoVGV4dDtcbiAgICAgICAgICBjb25zdCBpc0N1cnNvckF0RW5kID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgICAgY29uc3QgaXNFdmVyeXRoaW5nU2VsZWN0ZWQgPVxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kO1xuXG4gICAgICAgICAgLy8gb25seSBhbGxvdyBkaXZpbmcgaW4gd2hlbiBjdXJzb3IgaXMgYXQgZW5kIG9mIGlucHV0IG9yIHdoZW5cbiAgICAgICAgICAvLyB0aGUgY29tcGxldGUgdGV4dCBpcyBzZWxlY3RlZCAod2hlbiBicm93c2luZyB0aHJvdWdoIGhpc3RvcnkpXG4gICAgICAgICAgaWYgKCFpc0N1cnNvckF0RW5kICYmICFpc0V2ZXJ5dGhpbmdTZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IoKTtcblxuICAgICAgICAgIC8vIE5PVEU6IHNpbmNlIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIFwibmV4dCBjb21tYW5kXCIsIHdoaWNoIGlzIGFuIGFzeW5jIG9wZXJhdGlvbixcbiAgICAgICAgICAvLyB3ZSB1c2UgYSBJSUZFIHRvIHByb2Nlc3MgdGhhdCBhbmQgZXZlbnR1YWxseSB1cGRhdGUgdGhlIHN0YXRlLlxuICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tbWFuZHMgPSBhd2FpdCBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50KGNvbW1hbmQpO1xuICAgICAgICAgICAgICAvLyBhdm9pZCBtb3ZpbmcgY3Vyc29yIHdoZW4gdGhlcmUgYXJlIHN1Yi1vcHRpb25zXG4gICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2VhcmNoIHRleHQgaGFzIG5vdCBjaGFuZ2VkIHdoaWxlIHdlIHdlcmUgbG9hZGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHJlc3VsdHMsIG90aGVyd2lzZSB3ZSdkIGludGVycnVwdCB0aGUgdXNlci5cbiAgICAgICAgICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSByZXN1bHRzIGluIGNhc2UgdGhlIHNlYXJjaCB0ZXh0IGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zZWFyY2hUZXh0ID09PSBzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnLFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IHJlc3VsdHM6IG5leHRDb21tYW5kcyB9LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hha2UoKTtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgIC8vIGdvIGxlZnQgaW4gc3RhY2tcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9IGxhc3Qoc3RhdGUuc3RhY2spO1xuXG4gICAgICAgICAgLy8gZG8gbm90aGluZyB3aGVuIHdlIGNhbid0IGdvIGxlZnQgYW55bW9yZVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcblxuICAgICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyBhIGNoYXIgdG8gdGhlIGxlZnQgaW4gdGV4dCBpbnB1dFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzaGFrZSxcbiAgICAgIHN0YXRlLFxuICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIHNldHRpbmcgdGhlIHNlbGVjdGlvbiBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlVcFxuICAgICAgaWYgKHNob3VsZFNlbGVjdEZpZWxkVGV4dC5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmICFpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGp1c3QgdHJpZ2dlcmVkIHRoZSBzZWFyY2hcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gLTEpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGhhZCBzb21ldGhpbmcgc2VsZWN0ZWQgYW5kIHdhbnRzIHRvIGdvIHRoZXJlXG4gICAgICBleGVjdXRlKHN0YXRlLnJlc3VsdHNbc3RhdGUuc2VsZWN0ZWRSZXN1bHRdLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaXNOZXdXaW5kb3dDb21iby5jdXJyZW50LFxuICAgICAgfSk7XG5cbiAgICAgIGlzTmV3V2luZG93Q29tYm8uY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBbZXhlY3V0ZSwgc3RhdGUucmVzdWx0cywgc3RhdGUuc2VsZWN0ZWRSZXN1bHRdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrPENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKHNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VhcmNoVGV4dCcsIHBheWxvYWQ6IHNlYXJjaFRleHQgfSk7XG5cbiAgICAgIC8vIEEgc2VhcmNoIHZpYSBuZXR3b3JrIGlzIG9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlcmVcbiAgICAgIC8vIGFyZSBtb3JlIHRoYW4gdGhyZWUgY2hhcmFjdGVycy4gU28gbm8gZmFsc2UgbG9hZGluZ1xuICAgICAgLy8gaW5kaWNhdGlvbiBpcyBnaXZlbi5cbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAzKSB7XG4gICAgICAgIHNldElzTG9hZGluZygpO1xuICAgICAgfVxuXG4gICAgICBzZWFyY2hGcm9tUGFyZW50KHNlYXJjaFRleHQpLnRoZW4oXG4gICAgICAgIChhc3luY1Jlc3VsdHM6IENvbW1hbmRbXSkgPT4ge1xuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcblxuICAgICAgICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZShhc3luY1Jlc3VsdHMsIHtcbiAgICAgICAgICAgIGtleXM6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAndGV4dCcsIHdlaWdodDogMC42IH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ2tleXdvcmRzJywgd2VpZ2h0OiAwLjQgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDIsXG4gICAgICAgICAgICBpbmNsdWRlU2NvcmU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZnVzZVxuICAgICAgICAgICAgLnNlYXJjaChzZWFyY2hUZXh0KVxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCByZXN1bHRzIHdpdGggYSBtYXRjaGluZyBzY29yZSBvdmVyIDAuNzVcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlc3VsdCkgPT4gKHJlc3VsdC5zY29yZSA/IHJlc3VsdC5zY29yZSA8IDAuNzUgOiBmYWxzZSkpXG4gICAgICAgICAgICAvLyBLZWVwIGEgbWF4aW1hbCBvZiA5IHJlc3VsdHNcbiAgICAgICAgICAgIC5zbGljZSgwLCA5KTtcblxuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdzZXRTZWFyY2hUZXh0UmVzdWx0cycsXG4gICAgICAgICAgICBwYXlsb2FkOiBzZWFyY2hSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB1bnNldElzTG9hZGluZygpO1xuICAgICAgICAgIHNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgc2VhcmNoRnJvbVBhcmVudCxcbiAgICAgIHNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHNldElzTG9hZGluZyxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgICAgdW5zZXRJc0xvYWRpbmcsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfSk7XG4gICAgb25DbG9zZUZyb21QYXJlbnQoKTtcbiAgfSwgW29uQ2xvc2VGcm9tUGFyZW50XSk7XG5cbiAgY29uc3QgY3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyID0gdXNlQ2FsbGJhY2s8XG4gICAgKGluZGV4OiBudW1iZXIpID0+IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PlxuICA+KFxuICAgIChpbmRleCkgPT4gKCkgPT4ge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgY3Vyc29yIGhhcHBlbmVkIHRvIGJlIGluIGEgbG9jYXRpb24gd2hlcmUgYVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGFwcGVhciwgaXQgd291bGQgdHJpZ2dlciBvbk1vdXNlRW50ZXIgYW5kIHRoZVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGJlIHNlbGVjdGVkIGltbWVkaWF0ZWx5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmdcbiAgICAgIC8vIGEgdXNlciB3b3VsZCBleHBlY3QsIGhlbmNlIHdlIHByZXZlbnQgaXQgZnJvbSBoYXBwZW5pbmcuXG4gICAgICAvLyBUaGUgdXNlciBoYXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIGFuIG9wdGlvbiBleHBsaWNpdGx5IGZvclxuICAgICAgLy8gaXQgdG8gYmVjb21lIGFjdGl2ZS4gSG93ZXZlciwgdGhlIHVzZXIgY2FuIGFsd2F5cyBjbGljayBhbmRcbiAgICAgIC8vIHRoYXQgYWN0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuICAgICAgaWYgKHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIHNldHMgdGhlIHNlbGVjdGVkIHJlc3VsdCwgbWFpbmx5IGZvciB0aGUgaG92ZXIgZWZmZWN0XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCcsIHBheWxvYWQ6IGluZGV4IH0pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcbiAgY29uc3QgY3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChjb21tYW5kOiBDb21tYW5kKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoY29tbWFuZCkgPT4gKGV2ZW50KSA9PiB7XG4gICAgICBleGVjdXRlKGNvbW1hbmQsIHtcbiAgICAgICAgb3BlbkluTmV3VGFiOiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtleGVjdXRlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dGxlckNvbnRhaW5lclxuICAgICAgb25DbGljaz17aGFuZGxlQ29udGFpbmVyQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzc1wiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3NlYXJjaENvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aUtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAke3VpS2l0RGVzaWduVG9rZW5zLmJvcmRlclJhZGl1czR9O1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG5cbiAgICAgICAgICAvKiBvbmUgbW9yZSB0aGFuIGFwcC1iYXIgKDIwMDAwKSBhbmQgb25lIG1vcmUgdGhhbiB0aGUgb3ZlcmxheSAoMjAwMDEpICovXG4gICAgICAgICAgei1pbmRleDogMjAwMDI7XG4gICAgICAgICAgd2lkdGg6IDQwMHB4O1xuICAgICAgICAgIG1hcmdpbjogNDBweCBhdXRvO1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDEwcHggMzBweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC43NSk7XG4gICAgICAgICAgLW1vei1ib3gtc2hhZG93OiAwIDEwcHggMzBweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC43NSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAke3N0YXRlLmhhc05ldHdvcmtFcnJvclxuICAgICAgICAgICAgPyAnMCdcbiAgICAgICAgICAgIDogdWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ1N9O1xuICAgICAgICBgfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBBdm9pZCBjbG9zaW5nIHdoZW4gdGhlIHNlYXJjaENvbnRhaW5lciBpdHNlbGYgaXMgY2xpY2tlZFxuICAgICAgICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlIG92ZXJsYXkgd2lsbCBjbG9zZSB3aGVuIGUuZy5cbiAgICAgICAgICAvLyB0aGUgc2VhcmNoIGlucHV0IGlzIGNsaWNrZWQuXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ019O1xuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAke3VpS2l0RGVzaWduVG9rZW5zLnNwYWNpbmdTfTtcbiAgICAgICAgICAgIGB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNlYXJjaEljb24gY29sb3I9XCJuZXV0cmFsNjBcIiAvPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cInF1aWNrLWFjY2Vzcy1zZWFyY2gtaW5wdXRcIlxuICAgICAgICAgICAgcmVmPXtzZWFyY2hJbnB1dFJlZn1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuaW5wdXRQbGFjZWhvZGVyKX1cbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICAgICAgICBmb250LXNpemU6IDIycHg7XG4gICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ019XG4gICAgICAgICAgICAgICAgJHt1aUtpdERlc2lnblRva2Vucy5zcGFjaW5nTX0gJHt1aUtpdERlc2lnblRva2Vucy5zcGFjaW5nU31cbiAgICAgICAgICAgICAgICAke3VpS2l0RGVzaWduVG9rZW5zLnNwYWNpbmdTfTtcbiAgICAgICAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAke3VpS2l0RGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDYwfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIHZhbHVlPXtzdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIG9uS2V5VXA9e2hhbmRsZUtleVVwfVxuICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c3RhdGUuaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHt1aUtpdERlc2lnblRva2Vucy5zcGFjaW5nU307XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0ZS5oYXNOZXR3b3JrRXJyb3IpXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dWlLaXREZXNpZ25Ub2tlbnMuY29sb3JFcnJvcn07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICR7dWlLaXREZXNpZ25Ub2tlbnMuY29sb3JTdXJmYWNlfTtcbiAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHt1aUtpdERlc2lnblRva2Vucy5mb250U2l6ZTIwfTtcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9mZmxpbmV9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXN1bHRzLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5zZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3VpS2l0RGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbH07XG4gICAgICAgICAgICAgICAgICBjb2xvcjogJHt1aUtpdERlc2lnblRva2Vucy5jb2xvclNvbGlkfTtcbiAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICBmb250LXNpemU6ICR7dWlLaXREZXNpZ25Ub2tlbnMuZm9udFNpemUyMH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke3VpS2l0RGVzaWduVG9rZW5zLnNwYWNpbmdYc307XG4gICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5ub1Jlc3VsdHN9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBzdGF0ZS5yZXN1bHRzLm1hcCgoY29tbWFuZCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxCdXRsZXJDb21tYW5kXG4gICAgICAgICAgICAgIGtleT17Y29tbWFuZC5pZH1cbiAgICAgICAgICAgICAgY29tbWFuZD17Y29tbWFuZH1cbiAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IGluZGV4fVxuICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9e2NyZWF0ZUNvbW1hbmRNb3VzZUVudGVySGFuZGxlcihpbmRleCl9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2NyZWF0ZUNvbW1hbmRDbGlja0hhbmRsZXIoY29tbWFuZCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpO1xuICAgICAgICB9KSgpfVxuICAgICAgPC9kaXY+XG4gICAgPC9CdXRsZXJDb250YWluZXI+XG4gICk7XG59O1xuQnV0bGVyLmRpc3BsYXlOYW1lID0gJ0J1dGxlcic7XG5cbmNvbnN0IEJ1dGxlcldpdGhBbmltYXRpb24gPSAocHJvcHM6IE9taXQ8UHJvcHMsICdjbGFzc05hbWVTaGFrZUFuaW1hdGlvbic+KSA9PiAoXG4gIDxDbGFzc05hbWVzPlxuICAgIHsoeyBjc3MgfSkgPT4gKFxuICAgICAgPEJ1dGxlclxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uPXtjc3NgXG4gICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjQ1cztcbiAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiAke3NoYWtlQW5pbWF0aW9ufTtcbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgKX1cbiAgPC9DbGFzc05hbWVzPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQnV0bGVyV2l0aEFuaW1hdGlvbjtcbiJdfQ== */",
526
+ styles: "display:flex;label:Butler;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ25Ca0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleWJvYXJkRXZlbnRIYW5kbGVyLFxuICBDaGFuZ2VFdmVudEhhbmRsZXIsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBNb3VzZUV2ZW50LFxuICB1c2VSZWR1Y2VyLFxuICB1c2VSZWYsXG4gIHVzZUNhbGxiYWNrLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MsIGtleWZyYW1lcywgQ2xhc3NOYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIGFzIHVpS2l0RGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyBTZWFyY2hJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IExvYWRpbmdTcGlubmVyIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2xvYWRpbmctc3Bpbm5lcic7XG5pbXBvcnQgQnV0bGVyQ29tbWFuZCBmcm9tICcuLi9idXRsZXItY29tbWFuZCc7XG5pbXBvcnQgQnV0bGVyQ29udGFpbmVyIGZyb20gJy4uL2J1dGxlci1jb250YWluZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgU2VhcmNoVGV4dCxcbiAgU2VsZWN0ZWRSZXN1bHQsXG4gIFN0YWNrLFxuICBIaXN0b3J5RW50cnksXG59IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgaXNTZWxlY3RBbGxDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnYScgJiZcbiAgZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgaXNDbG9zZUNvbWJvID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICBldmVudC5rZXkgPT09ICdFc2NhcGUnICYmXG4gICFldmVudC5tZXRhS2V5ICYmXG4gICFldmVudC5jdHJsS2V5ICYmXG4gICFldmVudC5hbHRLZXkgJiZcbiAgIWV2ZW50LnNoaWZ0S2V5O1xuXG5jb25zdCBnZXRQbGF0Zm9ybSA9ICgpID0+IHtcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdXaW4nKSkgcmV0dXJuICd3aW5kb3dzJztcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdNYWMnKSkgcmV0dXJuICdtYWNvcyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnWDExJykpIHJldHVybiAndW5peCc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTGludXgnKSkgcmV0dXJuICdsaW51eCc7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBoYXNOZXdXaW5kb3dNb2RpZmllciA9IChcbiAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgTW91c2VFdmVudDxIVE1MRWxlbWVudD5cbikgPT4ge1xuICBjb25zdCBwbGF0Zm9ybSA9IGdldFBsYXRmb3JtKCk7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdtYWNvcyc6XG4gICAgICByZXR1cm4gZXZlbnQubWV0YUtleTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV2ZW50LmN0cmxLZXk7XG4gIH1cbn07XG5cbmNvbnN0IHNoYWtlQW5pbWF0aW9uID0ga2V5ZnJhbWVzYFxuICBmcm9tLFxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIDE0JSxcbiAgNDIlLFxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTNweCwgMCwgMCk7XG4gIH1cblxuICAyOCUsXG4gIDU2JSxcbiAgODQlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDNweCwgMCwgMCk7XG4gIH1cbmA7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogYm9vbGVhbjtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0O1xuICBzZWxlY3RlZFJlc3VsdDogU2VsZWN0ZWRSZXN1bHQ7XG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IGJvb2xlYW47XG4gIHJlc3VsdHM6IENvbW1hbmRbXTtcbiAgc3RhY2s6IFN0YWNrW107XG59O1xudHlwZSBBY3Rpb24gPVxuICB8IHsgdHlwZTogJ25ldHdvcmtFcnJvcic7IHBheWxvYWQ6IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2xvYWRpbmcnOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCc7IHBheWxvYWQ6IG51bWJlciB9XG4gIHwgeyB0eXBlOiAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NldE5leHRDb21tYW5kcyc7IHBheWxvYWQ6IHsgcmVzdWx0czogQ29tbWFuZFtdIH0gfVxuICB8IHtcbiAgICAgIHR5cGU6ICdzZXRQcmV2Q29tbWFuZHMnO1xuICAgICAgcGF5bG9hZDogeyBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0OyByZXN1bHRzOiBDb21tYW5kW10gfTtcbiAgICB9XG4gIHwgeyB0eXBlOiAnc2VhcmNoVGV4dCc7IHBheWxvYWQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOyBwYXlsb2FkOiBDb21tYW5kW10gfVxuICB8IHsgdHlwZTogJ3Jlc2V0U2VhcmNoVGV4dCcgfVxuICB8IHsgdHlwZTogJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJyB9XG4gIHwgeyB0eXBlOiAncmVzZXQnIH07XG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIHNlYXJjaFRleHQ6ICcnLFxuICBzZWxlY3RlZFJlc3VsdDogLTEsXG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gIHJlc3VsdHM6IFtdLFxuICBzdGFjazogW10sXG59O1xuY29uc3QgcmVkdWNlciA9IChzdGF0ZTogU3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnbmV0d29ya0Vycm9yJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBoYXNOZXR3b3JrRXJyb3I6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnbG9hZGluZyc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaXNMb2FkaW5nOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ3NlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0ICsgMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RlY3JlbWVudFNlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDpcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDFcbiAgICAgICAgICAgID8gc3RhdGUucmVzdWx0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0IC0gMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ3BpY2tDb21tYW5kRnJvbUhpc3RvcnknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZC5zZWFyY2hUZXh0LFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICBzdGFjazogW10sXG4gICAgICAgIC8vIFRoZSBoaXN0b3J5IGRvZXMgbm90IGdldCBjaGFuZ2VkIGhlcmUsIGl0IHdpbGwgYmUgY2hhbmdlZCBhbG9uZ1xuICAgICAgICAvLyB3aXRoIHRoZSByZWd1bGFyIGZsb3cuXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldE5leHRDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc3RhY2s6IFtcbiAgICAgICAgICAuLi5zdGF0ZS5zdGFjayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiBzdGF0ZS5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgcmVzdWx0czogc3RhdGUucmVzdWx0cyxcbiAgICAgICAgICAgIHNlbGVjdGVkUmVzdWx0OiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFByZXZDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICAvLyBvbWl0IGxhc3QgaXRlbVxuICAgICAgICBzdGFjazogc3RhdGUuc3RhY2suc2xpY2UoMCwgLTEpLFxuICAgICAgfTtcbiAgICBjYXNlICdzZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgLy8gY2xlYXIgbmV0d29yayBlcnJvciB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICAgLy8gYXJlIHRlbXB0ZWQgdG8gcmV0cnlcbiAgICAgICAgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZC5sZW5ndGggPiAwICYmIHN0YXRlLmhhc05ldHdvcmtFcnJvcixcbiAgICAgIH07XG4gICAgY2FzZSAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCA/IDAgOiAtMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogdHJ1ZSxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgfTtcbiAgICBjYXNlICdyZXNldFNlYXJjaFRleHQnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlYXJjaFRleHQ6ICcnLCByZXN1bHRzOiBbXSwgc2VsZWN0ZWRSZXN1bHQ6IC0xIH07XG4gICAgY2FzZSAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlbGVjdGVkUmVzdWx0OiAtMSwgZW5hYmxlSGlzdG9yeTogdHJ1ZSB9O1xuICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxudHlwZSBQcm9wcyA9IHtcbiAgaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdO1xuICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiAoaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdKSA9PiB2b2lkO1xuICBzZWFyY2g6IChzZWFyY2hUZXh0OiBTZWFyY2hUZXh0KSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGdldE5leHRDb21tYW5kczogKGNvbW1hbmQ6IENvbW1hbmQpID0+IFByb21pc2U8Q29tbWFuZFtdPjtcbiAgZXhlY3V0ZUNvbW1hbmQ6IChjb21tYW5kOiBDb21tYW5kLCBtZXRhOiB7IG9wZW5Jbk5ld1RhYjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBjbGFzc05hbWVTaGFrZUFuaW1hdGlvbjogc3RyaW5nO1xufTtcbmNvbnN0IEJ1dGxlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyPFxuICAgIChwcmV2U3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbikgPT4gU3RhdGVcbiAgPihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IHNob3VsZFNlbGVjdEZpZWxkVGV4dCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTmV3V2luZG93Q29tYm8gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBza2lwTmV4dFNlbGVjdGlvbiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlYXJjaENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiB0cnVlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVuc2V0SGFzTmV0d29ya0Vycm9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogJ25ldHdvcmtFcnJvcicsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogZmFsc2UgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBEZXN0cnVjdHVyZSBmdW5jdGlvbnMgZnJvbSBwcm9wcyB0byByZWZlcmVuY2UgdGhlbSBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RcbiAgY29uc3Qge1xuICAgIHNlYXJjaDogc2VhcmNoRnJvbVBhcmVudCxcbiAgICBvbkNsb3NlOiBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICBleGVjdXRlQ29tbWFuZDogZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2U6IG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgIGdldE5leHRDb21tYW5kczogZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNoYWtlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZWFyY2hDb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25cbiAgICAgICk7XG4gICAgICAvLyAtPiB0cmlnZ2VyaW5nIHJlZmxvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgIHZvaWQgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGg7XG4gICAgICBzZWFyY2hDb250YWluZXJSZWYuY3VycmVudC5jbGFzc0xpc3QuYWRkKHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uKTtcbiAgICB9XG4gIH0sIFtwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbl0pO1xuXG4gIGNvbnN0IGV4ZWN1dGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29tbWFuZCwgbWV0YSkgPT4ge1xuICAgICAgLy8gT25seSBtYWluIGVudHJpZXMgZ2V0IGFkZGVkIHRvIGhpc3RvcnksIHNvIHdoZW4gYSBzdWJjb21tYW5kIGlzIGV4ZWN1dGVkLFxuICAgICAgLy8gd2UgYWRkIHRoZSBtYWluIGNvbW1hbmQgb2YgaXQgdG8gdGhlIGhpc3RvcnkgKHRoZSB0b3AtbGV2ZWwgY29tbWFuZCkuXG4gICAgICAvL1xuICAgICAgLy8gVGhlIGtleSB0byBpZGVudGlmeSBoaXN0b3J5IGVudHJpZXMgYnkgaXMgYWx3YXlzIHRoZSBzZWFyY2hUZXh0XG4gICAgICAvLyBUaGVyZSB3aWxsIG5ldmVyIGJlIHR3byBoaXN0b3J5IGVudHJpZXMgd2l0aCB0aGUgc2FtZSBzZWFyY2hUZXh0XG4gICAgICBjb25zdCBlbnRyeSA9XG4gICAgICAgIHN0YXRlLnN0YWNrLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gLy8gVGhlIHN0YWNrIGlzIGVtcHR5LCBzbyB3ZSBhcmUgZXhlY3V0aW5nIGEgdG9wLWxldmVsIGNvbW1hbmRcbiAgICAgICAgICAgIHsgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCwgcmVzdWx0czogc3RhdGUucmVzdWx0cyB9XG4gICAgICAgICAgOiAvLyBXZSBhcmUgZXhlY3V0aW5nIGEgc3ViY29tbWFuZCwgc28gd2UgZ2V0IHRoZSB0b3AtbGV2ZWwgY29tbWFuZCBmb3IgaXQsXG4gICAgICAgICAgICAvLyB3aGljaCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjay5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc3RhY2tbMF0uc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogc3RhdGUuc3RhY2tbMF0ucmVzdWx0cyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgIC8vIEFkZCB0aGUgZW50cnkgdG8gdGhlIGhpc3RvcnksIHdoaWxlIGV4Y2x1ZGluZyBhbnkgZWFybGllciBoaXN0b3J5IGVudHJ5XG4gICAgICAvLyB3aXRoIHRoZSBzYW1lIHNlYXJjaCB0ZXh0LiBUaGlzIGVmZmVjdGl2ZWx5IFwibW92ZXNcIiB0aGF0IGVudHJ5IHRvIHRoZVxuICAgICAgLy8gdG9wIG9mIHRoZSBoaXN0b3J5ICh3aXRoIHRoZSBtb3N0IHJlY2VudCByZXN1bHRzKSwgb3IgYXBwZW5kcyBhIG5ldyBlbnRyeVxuICAgICAgLy8gd2hlbiBpdCBkaWRuJ3QgZXhpc3QgYmVmb3JlLlxuICAgICAgb25IaXN0b3J5RW50cmllc0NoYW5nZUZyb21QYXJlbnQoW1xuICAgICAgICAuLi5wcm9wcy5oaXN0b3J5RW50cmllcy5maWx0ZXIoXG4gICAgICAgICAgKGNvbW1hbmQpID0+IGNvbW1hbmQuc2VhcmNoVGV4dCAhPT0gZW50cnkuc2VhcmNoVGV4dFxuICAgICAgICApLFxuICAgICAgICBlbnRyeSxcbiAgICAgIF0pO1xuXG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH0pO1xuXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCgpO1xuXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQoY29tbWFuZCwgbWV0YSk7XG4gICAgfSxcbiAgICBbXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQsXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzdGF0ZS5yZXN1bHRzLFxuICAgICAgc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIHN0YXRlLnN0YWNrLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnRpbmcgY3Vyc29yIGp1bXBzIGNhbiBvbmx5IGhhcHBlbiBpbiBvbktleURvd24sIGJ1dCBub3QgaW4gb25LZXlVcFxuICAgICAgZXZlbnQucGVyc2lzdCgpO1xuXG4gICAgICAvLyBXZSB3YW50IHRvIGtub3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGNtZCtlbnRlciAoY21kIGJlaW5nIGEgbWV0YSBrZXkpLlxuICAgICAgLy8gV2UgYXJlIG9ubHkgdG9sZCBhYm91dCB0aGlzIGluIGtleURvd24sIGJ1dCBub3QgaW4ga2V5VXAsIHNvIHdlIG5lZWRcbiAgICAgIC8vIHRvIGhhbmRsZSBpdCBoZXJlXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmIGhhc05ld1dpbmRvd01vZGlmaWVyKGV2ZW50KSkge1xuICAgICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEF2b2lkIHNlbGVjdGluZyB0aGUgd2hvbGUgcGFnZSB3aGVuIHVzZXIgc2VsZWN0ZXMgZXZlcnl0aGluZyB3aXRoXG4gICAgICAvLyBhIGtleWJvYXJkIHNob3J0Y3V0LiBUaGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyB0aG91Z2guXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSB3aG9sZSBwYWdlIGZyb20gYmVpbmcgc2VsZWN0ZWQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gMSkgb3BlbnMgdGhlIHNlYXJjaCBib3hcbiAgICAgIC8vIDIpIHR5cGVzIGludG8gaXRcbiAgICAgIC8vIDMpIHNlbGVjdHMgYWxsIHRleHQgdXNpbmcgY21kK2FcbiAgICAgIC8vIDQpIGNsb3NlcyB0aGUgc2VhcmNoIGJveCB3aXRoIGVzY1xuICAgICAgLy8gV2l0aG91dCB0aGlzIGhhbmRsaW5nLCB0aGUgd2hvbGUgcGFnZSB3b3VsZCBub3cgYmUgc2VsZWN0ZWRcbiAgICAgIGlmIChpc1NlbGVjdEFsbENvbWJvKGV2ZW50KSkge1xuICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBicm93c2VyIGZyb20gc2VsZWN0aW5nIGFueXRoaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzZWFyY2hJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gVGhpcyBzZWxlY3RzIHRoZSB0ZXh0IGluIHRoZSBzZWFyY2ggaW5wdXRcbiAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGggb3RoZXIga2V5IGNvbWJpbmF0aW9ucyB1c2luZyBtb2RpZmllciBrZXlzXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzQ2xvc2VDb21ibyhldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2tpcCBuZXh0IG1vdXNlRW50ZXIgdG8gYXZvaWQgc2V0dGluZyBzZWxlY3RlZFJlc3VsdCB3aGVuIGN1cnNvciBqdXN0XG4gICAgICAvLyBoYXBwZW5zIHRvIGJlIHdoZXJlIHRoZSByZXN1bHRzIHdpbGwgcG9wIHVwXG4gICAgICBza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgLy8gcHJldmVudCBjdXJzb3IgZnJvbSBqdW1waW5nIHRvIGVuZCBvZiB0ZXh0IGlucHV0XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIC8vIGJyb3dzZSB0aHJvdWdoIGhpc3RvcnlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgKHN0YXRlLnNlbGVjdGVkUmVzdWx0IDwgMSAmJiBzdGF0ZS5lbmFibGVIaXN0b3J5KVxuICAgICAgICApIHtcbiAgICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICA/IC8vIFdoZW4gZ29pbmcgYmFjayB0aGUgZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIDogLy8gV2hlbiBnb2luZyBiYWNrIG1vcmUgdGhhbiBvbmUgc3RlcFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgPT09IHN0YXRlLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIC8vIFBpY2sgdGhlIHByZXZpb3VzIGNvbW1hbmQgZnJvbSB0aGUgaGlzdG9yeVxuICAgICAgICAgIGNvbnN0IHByZXZDb21tYW5kID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgID8gLy8gcHJldmlvdXMgY29tbWFuZCBvbiB0b3Agb2YgdGhlIGhpc3Rvcnkgd2hlbiBnb2luZyBiYWNrIG9uXG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGxhc3QocHJvcHMuaGlzdG9yeUVudHJpZXMpXG4gICAgICAgICAgICAgIDogLy8gcHJldmlvdXMgY29tbWFuZCBpcyBkZWVwZXIgZG93blxuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGhpc3RvcnkgZG9lcyBub3QgZXhpc3QgKG5lZ2F0aXZlIGluZGV4KSwgdGhlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaW1wbGljaXRseSByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzW3NlbGVjdGVkSW5kZXggLSAxXTtcbiAgICAgICAgICAvLyBTa2lwIHdoZW4gbm8gcHJldmlvdXMgZW50cnkgZXhpc3RzIGluIHRoZSBoaXN0b3J5XG4gICAgICAgICAgaWYgKCFwcmV2Q29tbWFuZCkgcmV0dXJuO1xuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBiZWdpbm5pbmcgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XTtcbiAgICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc3RhdGUuc2VhcmNoVGV4dDtcbiAgICAgICAgICBjb25zdCBpc0N1cnNvckF0RW5kID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgICAgY29uc3QgaXNFdmVyeXRoaW5nU2VsZWN0ZWQgPVxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kO1xuXG4gICAgICAgICAgLy8gb25seSBhbGxvdyBkaXZpbmcgaW4gd2hlbiBjdXJzb3IgaXMgYXQgZW5kIG9mIGlucHV0IG9yIHdoZW5cbiAgICAgICAgICAvLyB0aGUgY29tcGxldGUgdGV4dCBpcyBzZWxlY3RlZCAod2hlbiBicm93c2luZyB0aHJvdWdoIGhpc3RvcnkpXG4gICAgICAgICAgaWYgKCFpc0N1cnNvckF0RW5kICYmICFpc0V2ZXJ5dGhpbmdTZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IoKTtcblxuICAgICAgICAgIC8vIE5PVEU6IHNpbmNlIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIFwibmV4dCBjb21tYW5kXCIsIHdoaWNoIGlzIGFuIGFzeW5jIG9wZXJhdGlvbixcbiAgICAgICAgICAvLyB3ZSB1c2UgYSBJSUZFIHRvIHByb2Nlc3MgdGhhdCBhbmQgZXZlbnR1YWxseSB1cGRhdGUgdGhlIHN0YXRlLlxuICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tbWFuZHMgPSBhd2FpdCBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50KGNvbW1hbmQpO1xuICAgICAgICAgICAgICAvLyBhdm9pZCBtb3ZpbmcgY3Vyc29yIHdoZW4gdGhlcmUgYXJlIHN1Yi1vcHRpb25zXG4gICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2VhcmNoIHRleHQgaGFzIG5vdCBjaGFuZ2VkIHdoaWxlIHdlIHdlcmUgbG9hZGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHJlc3VsdHMsIG90aGVyd2lzZSB3ZSdkIGludGVycnVwdCB0aGUgdXNlci5cbiAgICAgICAgICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSByZXN1bHRzIGluIGNhc2UgdGhlIHNlYXJjaCB0ZXh0IGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zZWFyY2hUZXh0ID09PSBzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnLFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IHJlc3VsdHM6IG5leHRDb21tYW5kcyB9LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hha2UoKTtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgIC8vIGdvIGxlZnQgaW4gc3RhY2tcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9IGxhc3Qoc3RhdGUuc3RhY2spO1xuXG4gICAgICAgICAgLy8gZG8gbm90aGluZyB3aGVuIHdlIGNhbid0IGdvIGxlZnQgYW55bW9yZVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcblxuICAgICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyBhIGNoYXIgdG8gdGhlIGxlZnQgaW4gdGV4dCBpbnB1dFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzaGFrZSxcbiAgICAgIHN0YXRlLFxuICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIHNldHRpbmcgdGhlIHNlbGVjdGlvbiBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlVcFxuICAgICAgaWYgKHNob3VsZFNlbGVjdEZpZWxkVGV4dC5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmICFpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGp1c3QgdHJpZ2dlcmVkIHRoZSBzZWFyY2hcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gLTEpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGhhZCBzb21ldGhpbmcgc2VsZWN0ZWQgYW5kIHdhbnRzIHRvIGdvIHRoZXJlXG4gICAgICBleGVjdXRlKHN0YXRlLnJlc3VsdHNbc3RhdGUuc2VsZWN0ZWRSZXN1bHRdLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaXNOZXdXaW5kb3dDb21iby5jdXJyZW50LFxuICAgICAgfSk7XG5cbiAgICAgIGlzTmV3V2luZG93Q29tYm8uY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBbZXhlY3V0ZSwgc3RhdGUucmVzdWx0cywgc3RhdGUuc2VsZWN0ZWRSZXN1bHRdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrPENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKHNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VhcmNoVGV4dCcsIHBheWxvYWQ6IHNlYXJjaFRleHQgfSk7XG5cbiAgICAgIC8vIEEgc2VhcmNoIHZpYSBuZXR3b3JrIGlzIG9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlcmVcbiAgICAgIC8vIGFyZSBtb3JlIHRoYW4gdGhyZWUgY2hhcmFjdGVycy4gU28gbm8gZmFsc2UgbG9hZGluZ1xuICAgICAgLy8gaW5kaWNhdGlvbiBpcyBnaXZlbi5cbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAzKSB7XG4gICAgICAgIHNldElzTG9hZGluZygpO1xuICAgICAgfVxuXG4gICAgICBzZWFyY2hGcm9tUGFyZW50KHNlYXJjaFRleHQpLnRoZW4oXG4gICAgICAgIChhc3luY1Jlc3VsdHM6IENvbW1hbmRbXSkgPT4ge1xuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcblxuICAgICAgICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZShhc3luY1Jlc3VsdHMsIHtcbiAgICAgICAgICAgIGtleXM6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAndGV4dCcsIHdlaWdodDogMC42IH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ2tleXdvcmRzJywgd2VpZ2h0OiAwLjQgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDIsXG4gICAgICAgICAgICBpbmNsdWRlU2NvcmU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZnVzZVxuICAgICAgICAgICAgLnNlYXJjaChzZWFyY2hUZXh0KVxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCByZXN1bHRzIHdpdGggYSBtYXRjaGluZyBzY29yZSBvdmVyIDAuNzVcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlc3VsdCkgPT4gKHJlc3VsdC5zY29yZSA/IHJlc3VsdC5zY29yZSA8IDAuNzUgOiBmYWxzZSkpXG4gICAgICAgICAgICAvLyBLZWVwIGEgbWF4aW1hbCBvZiA5IHJlc3VsdHNcbiAgICAgICAgICAgIC5zbGljZSgwLCA5KTtcblxuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdzZXRTZWFyY2hUZXh0UmVzdWx0cycsXG4gICAgICAgICAgICBwYXlsb2FkOiBzZWFyY2hSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB1bnNldElzTG9hZGluZygpO1xuICAgICAgICAgIHNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgc2VhcmNoRnJvbVBhcmVudCxcbiAgICAgIHNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHNldElzTG9hZGluZyxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgICAgdW5zZXRJc0xvYWRpbmcsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfSk7XG4gICAgb25DbG9zZUZyb21QYXJlbnQoKTtcbiAgfSwgW29uQ2xvc2VGcm9tUGFyZW50XSk7XG5cbiAgY29uc3QgY3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyID0gdXNlQ2FsbGJhY2s8XG4gICAgKGluZGV4OiBudW1iZXIpID0+IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PlxuICA+KFxuICAgIChpbmRleCkgPT4gKCkgPT4ge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgY3Vyc29yIGhhcHBlbmVkIHRvIGJlIGluIGEgbG9jYXRpb24gd2hlcmUgYVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGFwcGVhciwgaXQgd291bGQgdHJpZ2dlciBvbk1vdXNlRW50ZXIgYW5kIHRoZVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGJlIHNlbGVjdGVkIGltbWVkaWF0ZWx5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmdcbiAgICAgIC8vIGEgdXNlciB3b3VsZCBleHBlY3QsIGhlbmNlIHdlIHByZXZlbnQgaXQgZnJvbSBoYXBwZW5pbmcuXG4gICAgICAvLyBUaGUgdXNlciBoYXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIGFuIG9wdGlvbiBleHBsaWNpdGx5IGZvclxuICAgICAgLy8gaXQgdG8gYmVjb21lIGFjdGl2ZS4gSG93ZXZlciwgdGhlIHVzZXIgY2FuIGFsd2F5cyBjbGljayBhbmRcbiAgICAgIC8vIHRoYXQgYWN0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuICAgICAgaWYgKHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIHNldHMgdGhlIHNlbGVjdGVkIHJlc3VsdCwgbWFpbmx5IGZvciB0aGUgaG92ZXIgZWZmZWN0XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCcsIHBheWxvYWQ6IGluZGV4IH0pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcbiAgY29uc3QgY3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChjb21tYW5kOiBDb21tYW5kKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoY29tbWFuZCkgPT4gKGV2ZW50KSA9PiB7XG4gICAgICBleGVjdXRlKGNvbW1hbmQsIHtcbiAgICAgICAgb3BlbkluTmV3VGFiOiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtleGVjdXRlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dGxlckNvbnRhaW5lclxuICAgICAgb25DbGljaz17aGFuZGxlQ29udGFpbmVyQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzc1wiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3NlYXJjaENvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aUtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAke3VpS2l0RGVzaWduVG9rZW5zLmJvcmRlclJhZGl1czR9O1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG5cbiAgICAgICAgICAvKiBvbmUgbW9yZSB0aGFuIGFwcC1iYXIgKDIwMDAwKSBhbmQgb25lIG1vcmUgdGhhbiB0aGUgb3ZlcmxheSAoMjAwMDEpICovXG4gICAgICAgICAgei1pbmRleDogMjAwMDI7XG4gICAgICAgICAgd2lkdGg6IDQwMHB4O1xuICAgICAgICAgIG1hcmdpbjogNDBweCBhdXRvO1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDEwcHggMzBweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC43NSk7XG4gICAgICAgICAgLW1vei1ib3gtc2hhZG93OiAwIDEwcHggMzBweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC43NSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAke3N0YXRlLmhhc05ldHdvcmtFcnJvclxuICAgICAgICAgICAgPyAnMCdcbiAgICAgICAgICAgIDogdWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ1N9O1xuICAgICAgICBgfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBBdm9pZCBjbG9zaW5nIHdoZW4gdGhlIHNlYXJjaENvbnRhaW5lciBpdHNlbGYgaXMgY2xpY2tlZFxuICAgICAgICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlIG92ZXJsYXkgd2lsbCBjbG9zZSB3aGVuIGUuZy5cbiAgICAgICAgICAvLyB0aGUgc2VhcmNoIGlucHV0IGlzIGNsaWNrZWQuXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ019O1xuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAke3VpS2l0RGVzaWduVG9rZW5zLnNwYWNpbmdTfTtcbiAgICAgICAgICAgIGB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNlYXJjaEljb24gY29sb3I9XCJuZXV0cmFsNjBcIiAvPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cInF1aWNrLWFjY2Vzcy1zZWFyY2gtaW5wdXRcIlxuICAgICAgICAgICAgcmVmPXtzZWFyY2hJbnB1dFJlZn1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuaW5wdXRQbGFjZWhvZGVyKX1cbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICAgICAgICBmb250LXNpemU6IDIycHg7XG4gICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ019XG4gICAgICAgICAgICAgICAgJHt1aUtpdERlc2lnblRva2Vucy5zcGFjaW5nTX0gJHt1aUtpdERlc2lnblRva2Vucy5zcGFjaW5nU31cbiAgICAgICAgICAgICAgICAke3VpS2l0RGVzaWduVG9rZW5zLnNwYWNpbmdTfTtcbiAgICAgICAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAke3VpS2l0RGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDYwfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIHZhbHVlPXtzdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIG9uS2V5VXA9e2hhbmRsZUtleVVwfVxuICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c3RhdGUuaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHt1aUtpdERlc2lnblRva2Vucy5zcGFjaW5nU307XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0ZS5oYXNOZXR3b3JrRXJyb3IpXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dWlLaXREZXNpZ25Ub2tlbnMuY29sb3JFcnJvcn07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICR7dWlLaXREZXNpZ25Ub2tlbnMuY29sb3JTdXJmYWNlfTtcbiAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHt1aUtpdERlc2lnblRva2Vucy5mb250U2l6ZTIwfTtcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9mZmxpbmV9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXN1bHRzLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5zZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3VpS2l0RGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbH07XG4gICAgICAgICAgICAgICAgICBjb2xvcjogJHt1aUtpdERlc2lnblRva2Vucy5jb2xvclNvbGlkfTtcbiAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICBmb250LXNpemU6ICR7dWlLaXREZXNpZ25Ub2tlbnMuZm9udFNpemUyMH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke3VpS2l0RGVzaWduVG9rZW5zLnNwYWNpbmdYc307XG4gICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5ub1Jlc3VsdHN9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBzdGF0ZS5yZXN1bHRzLm1hcCgoY29tbWFuZCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxCdXRsZXJDb21tYW5kXG4gICAgICAgICAgICAgIGtleT17Y29tbWFuZC5pZH1cbiAgICAgICAgICAgICAgY29tbWFuZD17Y29tbWFuZH1cbiAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IGluZGV4fVxuICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9e2NyZWF0ZUNvbW1hbmRNb3VzZUVudGVySGFuZGxlcihpbmRleCl9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2NyZWF0ZUNvbW1hbmRDbGlja0hhbmRsZXIoY29tbWFuZCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpO1xuICAgICAgICB9KSgpfVxuICAgICAgPC9kaXY+XG4gICAgPC9CdXRsZXJDb250YWluZXI+XG4gICk7XG59O1xuQnV0bGVyLmRpc3BsYXlOYW1lID0gJ0J1dGxlcic7XG5cbmNvbnN0IEJ1dGxlcldpdGhBbmltYXRpb24gPSAocHJvcHM6IE9taXQ8UHJvcHMsICdjbGFzc05hbWVTaGFrZUFuaW1hdGlvbic+KSA9PiAoXG4gIDxDbGFzc05hbWVzPlxuICAgIHsoeyBjc3MgfSkgPT4gKFxuICAgICAgPEJ1dGxlclxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uPXtjc3NgXG4gICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjQ1cztcbiAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiAke3NoYWtlQW5pbWF0aW9ufTtcbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgKX1cbiAgPC9DbGFzc05hbWVzPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQnV0bGVyV2l0aEFuaW1hdGlvbjtcbiJdfQ== */",
530
527
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
531
528
  };
532
529
  const Butler = props => {
@@ -38,11 +38,11 @@ var designSystem = require('@commercetools-uikit/design-system');
38
38
  var icons = require('@commercetools-uikit/icons');
39
39
  var LoadingSpinner = require('@commercetools-uikit/loading-spinner');
40
40
  var jsxRuntime = require('@emotion/react/jsx-runtime');
41
- var dist_commercetoolsFrontendApplicationShell = require('./index-514ff122.cjs.dev.js');
41
+ var dist_commercetoolsFrontendApplicationShell = require('./index-c1ab39be.cjs.dev.js');
42
42
  var _Promise = require('@babel/runtime-corejs3/core-js-stable/promise');
43
43
  var _reduceInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
44
44
  var _findInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/find');
45
- require('./index-b1476d46.cjs.dev.js');
45
+ require('./index-0459c0f4.cjs.dev.js');
46
46
  require('@babel/runtime-corejs3/core-js-stable/object/entries');
47
47
  require('@babel/runtime-corejs3/core-js-stable/reflect/has');
48
48
  require('@reduxjs/toolkit');
@@ -122,8 +122,7 @@ var _ref$1 = process.env.NODE_ENV === "production" ? {
122
122
  styles: "align-self:center;>*{display:block;}"
123
123
  } : {
124
124
  name: "1qkkrpz-ButlerCommand",
125
- styles: "align-self:center;>*{display:block;};label:ButlerCommand;",
126
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRGdCIiwiZmlsZSI6ImJ1dGxlci1jb21tYW5kLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vdXNlRXZlbnRIYW5kbGVyIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgY3VzdG9tUHJvcGVydGllcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHsgQW5nbGVUaGluUmlnaHRJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IHR5cGUgeyBDb21tYW5kIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG50eXBlIFByb3BzID0ge1xuICBjb21tYW5kOiBDb21tYW5kO1xuICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbiAgb25DbGljazogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICBvbk1vdXNlRW50ZXI6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50Pjtcbn07XG5cbmNvbnN0IEJ1dGxlckNvbW1hbmQgPSAocHJvcHM6IFByb3BzKSA9PiAoXG4gIDxkaXZcbiAgICBrZXk9e3Byb3BzLmNvbW1hbmQuaWR9XG4gICAgZGF0YS10ZXN0aWQ9e2BxdWljay1hY2Nlc3MtcmVzdWx0KCR7cHJvcHMuY29tbWFuZC5pZH0pYH1cbiAgICBhcmlhLWN1cnJlbnQ9e3Byb3BzLmlzU2VsZWN0ZWQgPT09IHRydWUgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgIGNzcz17Y3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBhZGRpbmc6IDAgJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdNfTtcbiAgICAgIGhlaWdodDogMzZweDtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiAyMDA7XG4gICAgICBsaW5lLWhlaWdodDogMzZweDtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICR7cHJvcHMuaXNTZWxlY3RlZCA9PT0gdHJ1ZVxuICAgICAgICA/IGBcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvckFjY2VudH07XG4gICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU3VyZmFjZX07XG4gICAgICAgICAgYFxuICAgICAgICA6ICcnfVxuICAgIGB9XG4gICAgb25Nb3VzZUVudGVyPXtwcm9wcy5vbk1vdXNlRW50ZXJ9XG4gICAgb25DbGljaz17cHJvcHMub25DbGlja31cbiAgPlxuICAgIDxkaXZcbiAgICAgIGNzcz17Y3NzYFxuICAgICAgICBmbGV4OiAxIGF1dG87XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgYH1cbiAgICA+XG4gICAgICB7cHJvcHMuY29tbWFuZC50ZXh0fVxuICAgIDwvZGl2PlxuICAgIHsoKEFycmF5LmlzQXJyYXkocHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcykgJiZcbiAgICAgIHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMubGVuZ3RoID4gMCkgfHxcbiAgICAgIHR5cGVvZiBwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzID09PSAnZnVuY3Rpb24nKSAmJiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICA+ICoge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8QW5nbGVUaGluUmlnaHRJY29uXG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgY29sb3I9e3Byb3BzLmlzU2VsZWN0ZWQgPyAnc3VyZmFjZScgOiAnbmV1dHJhbDYwJ31cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvZGl2PlxuKTtcblxuQnV0bGVyQ29tbWFuZC5kaXNwbGF5TmFtZSA9ICdCdXRsZXJDb21tYW5kJztcblxuZXhwb3J0IGRlZmF1bHQgQnV0bGVyQ29tbWFuZDtcbiJdfQ== */",
125
+ styles: "align-self:center;>*{display:block;};label:ButlerCommand;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFrRGdCIiwiZmlsZSI6ImJ1dGxlci1jb21tYW5kLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vdXNlRXZlbnRIYW5kbGVyIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IHsgY3VzdG9tUHJvcGVydGllcyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IHsgQW5nbGVUaGluUmlnaHRJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IHR5cGUgeyBDb21tYW5kIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG50eXBlIFByb3BzID0ge1xuICBjb21tYW5kOiBDb21tYW5kO1xuICBpc1NlbGVjdGVkPzogYm9vbGVhbjtcbiAgb25DbGljazogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xuICBvbk1vdXNlRW50ZXI6IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50Pjtcbn07XG5cbmNvbnN0IEJ1dGxlckNvbW1hbmQgPSAocHJvcHM6IFByb3BzKSA9PiAoXG4gIDxkaXZcbiAgICBrZXk9e3Byb3BzLmNvbW1hbmQuaWR9XG4gICAgZGF0YS10ZXN0aWQ9e2BxdWljay1hY2Nlc3MtcmVzdWx0KCR7cHJvcHMuY29tbWFuZC5pZH0pYH1cbiAgICBhcmlhLWN1cnJlbnQ9e3Byb3BzLmlzU2VsZWN0ZWQgPT09IHRydWUgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgIGNzcz17Y3NzYFxuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBhZGRpbmc6IDAgJHtjdXN0b21Qcm9wZXJ0aWVzLnNwYWNpbmdNfTtcbiAgICAgIGhlaWdodDogMzZweDtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiAyMDA7XG4gICAgICBsaW5lLWhlaWdodDogMzZweDtcbiAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICR7cHJvcHMuaXNTZWxlY3RlZCA9PT0gdHJ1ZVxuICAgICAgICA/IGBcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7Y3VzdG9tUHJvcGVydGllcy5jb2xvckFjY2VudH07XG4gICAgICAgICAgICBjb2xvcjogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yU3VyZmFjZX07XG4gICAgICAgICAgYFxuICAgICAgICA6ICcnfVxuICAgIGB9XG4gICAgb25Nb3VzZUVudGVyPXtwcm9wcy5vbk1vdXNlRW50ZXJ9XG4gICAgb25DbGljaz17cHJvcHMub25DbGlja31cbiAgPlxuICAgIDxkaXZcbiAgICAgIGNzcz17Y3NzYFxuICAgICAgICBmbGV4OiAxIGF1dG87XG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgYH1cbiAgICA+XG4gICAgICB7cHJvcHMuY29tbWFuZC50ZXh0fVxuICAgIDwvZGl2PlxuICAgIHsoKEFycmF5LmlzQXJyYXkocHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcykgJiZcbiAgICAgIHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMubGVuZ3RoID4gMCkgfHxcbiAgICAgIHR5cGVvZiBwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzID09PSAnZnVuY3Rpb24nKSAmJiAoXG4gICAgICA8ZGl2XG4gICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgIGFsaWduLXNlbGY6IGNlbnRlcjtcbiAgICAgICAgICA+ICoge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPlxuICAgICAgICA8QW5nbGVUaGluUmlnaHRJY29uXG4gICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgY29sb3I9e3Byb3BzLmlzU2VsZWN0ZWQgPyAnc3VyZmFjZScgOiAnbmV1dHJhbDYwJ31cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICl9XG4gIDwvZGl2PlxuKTtcblxuQnV0bGVyQ29tbWFuZC5kaXNwbGF5TmFtZSA9ICdCdXRsZXJDb21tYW5kJztcblxuZXhwb3J0IGRlZmF1bHQgQnV0bGVyQ29tbWFuZDtcbiJdfQ== */",
127
126
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
128
127
  };
129
128
  var _ref2 = process.env.NODE_ENV === "production" ? {
@@ -131,8 +130,7 @@ var _ref2 = process.env.NODE_ENV === "production" ? {
131
130
  styles: "flex:1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis"
132
131
  } : {
133
132
  name: "zq3ooq-ButlerCommand",
134
- styles: "flex:1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;label:ButlerCommand;",
135
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQ2MiLCJmaWxlIjoiYnV0bGVyLWNvbW1hbmQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW91c2VFdmVudEhhbmRsZXIgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyBBbmdsZVRoaW5SaWdodEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmQgfSBmcm9tICcuLi90eXBlcyc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGNvbW1hbmQ6IENvbW1hbmQ7XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG4gIG9uTW91c2VFbnRlcjogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xufTtcblxuY29uc3QgQnV0bGVyQ29tbWFuZCA9IChwcm9wczogUHJvcHMpID0+IChcbiAgPGRpdlxuICAgIGtleT17cHJvcHMuY29tbWFuZC5pZH1cbiAgICBkYXRhLXRlc3RpZD17YHF1aWNrLWFjY2Vzcy1yZXN1bHQoJHtwcm9wcy5jb21tYW5kLmlkfSlgfVxuICAgIGFyaWEtY3VycmVudD17cHJvcHMuaXNTZWxlY3RlZCA9PT0gdHJ1ZSA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgY3NzPXtjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgcGFkZGluZzogMCAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019O1xuICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgJHtwcm9wcy5pc1NlbGVjdGVkID09PSB0cnVlXG4gICAgICAgID8gYFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yQWNjZW50fTtcbiAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbiAgICAgICAgICBgXG4gICAgICAgIDogJyd9XG4gICAgYH1cbiAgICBvbk1vdXNlRW50ZXI9e3Byb3BzLm9uTW91c2VFbnRlcn1cbiAgICBvbkNsaWNrPXtwcm9wcy5vbkNsaWNrfVxuICA+XG4gICAgPGRpdlxuICAgICAgY3NzPXtjc3NgXG4gICAgICAgIGZsZXg6IDEgYXV0bztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBgfVxuICAgID5cbiAgICAgIHtwcm9wcy5jb21tYW5kLnRleHR9XG4gICAgPC9kaXY+XG4gICAgeygoQXJyYXkuaXNBcnJheShwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzKSAmJlxuICAgICAgcHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcy5sZW5ndGggPiAwKSB8fFxuICAgICAgdHlwZW9mIHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMgPT09ICdmdW5jdGlvbicpICYmIChcbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgID4gKiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxBbmdsZVRoaW5SaWdodEljb25cbiAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICBjb2xvcj17cHJvcHMuaXNTZWxlY3RlZCA/ICdzdXJmYWNlJyA6ICduZXV0cmFsNjAnfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKX1cbiAgPC9kaXY+XG4pO1xuXG5CdXRsZXJDb21tYW5kLmRpc3BsYXlOYW1lID0gJ0J1dGxlckNvbW1hbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJDb21tYW5kO1xuIl19 */",
133
+ styles: "flex:1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;label:ButlerCommand;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci1jb21tYW5kLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFxQ2MiLCJmaWxlIjoiYnV0bGVyLWNvbW1hbmQudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW91c2VFdmVudEhhbmRsZXIgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgeyBjdXN0b21Qcm9wZXJ0aWVzIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyBBbmdsZVRoaW5SaWdodEljb24gfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9pY29ucyc7XG5pbXBvcnQgdHlwZSB7IENvbW1hbmQgfSBmcm9tICcuLi90eXBlcyc7XG5cbnR5cGUgUHJvcHMgPSB7XG4gIGNvbW1hbmQ6IENvbW1hbmQ7XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBvbkNsaWNrOiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD47XG4gIG9uTW91c2VFbnRlcjogTW91c2VFdmVudEhhbmRsZXI8SFRNTERpdkVsZW1lbnQ+O1xufTtcblxuY29uc3QgQnV0bGVyQ29tbWFuZCA9IChwcm9wczogUHJvcHMpID0+IChcbiAgPGRpdlxuICAgIGtleT17cHJvcHMuY29tbWFuZC5pZH1cbiAgICBkYXRhLXRlc3RpZD17YHF1aWNrLWFjY2Vzcy1yZXN1bHQoJHtwcm9wcy5jb21tYW5kLmlkfSlgfVxuICAgIGFyaWEtY3VycmVudD17cHJvcHMuaXNTZWxlY3RlZCA9PT0gdHJ1ZSA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgY3NzPXtjc3NgXG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgcGFkZGluZzogMCAke2N1c3RvbVByb3BlcnRpZXMuc3BhY2luZ019O1xuICAgICAgaGVpZ2h0OiAzNnB4O1xuICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgZm9udC13ZWlnaHQ6IDIwMDtcbiAgICAgIGxpbmUtaGVpZ2h0OiAzNnB4O1xuICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgJHtwcm9wcy5pc1NlbGVjdGVkID09PSB0cnVlXG4gICAgICAgID8gYFxuICAgICAgICAgICAgYmFja2dyb3VuZDogJHtjdXN0b21Qcm9wZXJ0aWVzLmNvbG9yQWNjZW50fTtcbiAgICAgICAgICAgIGNvbG9yOiAke2N1c3RvbVByb3BlcnRpZXMuY29sb3JTdXJmYWNlfTtcbiAgICAgICAgICBgXG4gICAgICAgIDogJyd9XG4gICAgYH1cbiAgICBvbk1vdXNlRW50ZXI9e3Byb3BzLm9uTW91c2VFbnRlcn1cbiAgICBvbkNsaWNrPXtwcm9wcy5vbkNsaWNrfVxuICA+XG4gICAgPGRpdlxuICAgICAgY3NzPXtjc3NgXG4gICAgICAgIGZsZXg6IDEgYXV0bztcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICBgfVxuICAgID5cbiAgICAgIHtwcm9wcy5jb21tYW5kLnRleHR9XG4gICAgPC9kaXY+XG4gICAgeygoQXJyYXkuaXNBcnJheShwcm9wcy5jb21tYW5kLnN1YkNvbW1hbmRzKSAmJlxuICAgICAgcHJvcHMuY29tbWFuZC5zdWJDb21tYW5kcy5sZW5ndGggPiAwKSB8fFxuICAgICAgdHlwZW9mIHByb3BzLmNvbW1hbmQuc3ViQ29tbWFuZHMgPT09ICdmdW5jdGlvbicpICYmIChcbiAgICAgIDxkaXZcbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgID4gKiB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICB9XG4gICAgICAgIGB9XG4gICAgICA+XG4gICAgICAgIDxBbmdsZVRoaW5SaWdodEljb25cbiAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICBjb2xvcj17cHJvcHMuaXNTZWxlY3RlZCA/ICdzdXJmYWNlJyA6ICduZXV0cmFsNjAnfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgKX1cbiAgPC9kaXY+XG4pO1xuXG5CdXRsZXJDb21tYW5kLmRpc3BsYXlOYW1lID0gJ0J1dGxlckNvbW1hbmQnO1xuXG5leHBvcnQgZGVmYXVsdCBCdXRsZXJDb21tYW5kO1xuIl19 */",
136
134
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__$1
137
135
  };
138
136
  const ButlerCommand = props => jsxRuntime.jsxs("div", {
@@ -554,8 +552,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
554
552
  styles: "display:flex"
555
553
  } : {
556
554
  name: "vnvgom-Butler",
557
- styles: "display:flex;label:Butler;",
558
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ25Ca0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleWJvYXJkRXZlbnRIYW5kbGVyLFxuICBDaGFuZ2VFdmVudEhhbmRsZXIsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBNb3VzZUV2ZW50LFxuICB1c2VSZWR1Y2VyLFxuICB1c2VSZWYsXG4gIHVzZUNhbGxiYWNrLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MsIGtleWZyYW1lcywgQ2xhc3NOYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIGFzIHVpS2l0RGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyBTZWFyY2hJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IExvYWRpbmdTcGlubmVyIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2xvYWRpbmctc3Bpbm5lcic7XG5pbXBvcnQgQnV0bGVyQ29tbWFuZCBmcm9tICcuLi9idXRsZXItY29tbWFuZCc7XG5pbXBvcnQgQnV0bGVyQ29udGFpbmVyIGZyb20gJy4uL2J1dGxlci1jb250YWluZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgU2VhcmNoVGV4dCxcbiAgU2VsZWN0ZWRSZXN1bHQsXG4gIFN0YWNrLFxuICBIaXN0b3J5RW50cnksXG59IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgaXNTZWxlY3RBbGxDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnYScgJiZcbiAgZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgaXNDbG9zZUNvbWJvID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICBldmVudC5rZXkgPT09ICdFc2NhcGUnICYmXG4gICFldmVudC5tZXRhS2V5ICYmXG4gICFldmVudC5jdHJsS2V5ICYmXG4gICFldmVudC5hbHRLZXkgJiZcbiAgIWV2ZW50LnNoaWZ0S2V5O1xuXG5jb25zdCBnZXRQbGF0Zm9ybSA9ICgpID0+IHtcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdXaW4nKSkgcmV0dXJuICd3aW5kb3dzJztcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdNYWMnKSkgcmV0dXJuICdtYWNvcyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnWDExJykpIHJldHVybiAndW5peCc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTGludXgnKSkgcmV0dXJuICdsaW51eCc7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBoYXNOZXdXaW5kb3dNb2RpZmllciA9IChcbiAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgTW91c2VFdmVudDxIVE1MRWxlbWVudD5cbikgPT4ge1xuICBjb25zdCBwbGF0Zm9ybSA9IGdldFBsYXRmb3JtKCk7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdtYWNvcyc6XG4gICAgICByZXR1cm4gZXZlbnQubWV0YUtleTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV2ZW50LmN0cmxLZXk7XG4gIH1cbn07XG5cbmNvbnN0IHNoYWtlQW5pbWF0aW9uID0ga2V5ZnJhbWVzYFxuICBmcm9tLFxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIDE0JSxcbiAgNDIlLFxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTNweCwgMCwgMCk7XG4gIH1cblxuICAyOCUsXG4gIDU2JSxcbiAgODQlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDNweCwgMCwgMCk7XG4gIH1cbmA7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogYm9vbGVhbjtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0O1xuICBzZWxlY3RlZFJlc3VsdDogU2VsZWN0ZWRSZXN1bHQ7XG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IGJvb2xlYW47XG4gIHJlc3VsdHM6IENvbW1hbmRbXTtcbiAgc3RhY2s6IFN0YWNrW107XG59O1xudHlwZSBBY3Rpb24gPVxuICB8IHsgdHlwZTogJ25ldHdvcmtFcnJvcic7IHBheWxvYWQ6IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2xvYWRpbmcnOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCc7IHBheWxvYWQ6IG51bWJlciB9XG4gIHwgeyB0eXBlOiAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NldE5leHRDb21tYW5kcyc7IHBheWxvYWQ6IHsgcmVzdWx0czogQ29tbWFuZFtdIH0gfVxuICB8IHtcbiAgICAgIHR5cGU6ICdzZXRQcmV2Q29tbWFuZHMnO1xuICAgICAgcGF5bG9hZDogeyBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0OyByZXN1bHRzOiBDb21tYW5kW10gfTtcbiAgICB9XG4gIHwgeyB0eXBlOiAnc2VhcmNoVGV4dCc7IHBheWxvYWQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOyBwYXlsb2FkOiBDb21tYW5kW10gfVxuICB8IHsgdHlwZTogJ3Jlc2V0U2VhcmNoVGV4dCcgfVxuICB8IHsgdHlwZTogJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJyB9XG4gIHwgeyB0eXBlOiAncmVzZXQnIH07XG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIHNlYXJjaFRleHQ6ICcnLFxuICBzZWxlY3RlZFJlc3VsdDogLTEsXG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gIHJlc3VsdHM6IFtdLFxuICBzdGFjazogW10sXG59O1xuY29uc3QgcmVkdWNlciA9IChzdGF0ZTogU3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnbmV0d29ya0Vycm9yJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBoYXNOZXR3b3JrRXJyb3I6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnbG9hZGluZyc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaXNMb2FkaW5nOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ3NlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0ICsgMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RlY3JlbWVudFNlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDpcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDFcbiAgICAgICAgICAgID8gc3RhdGUucmVzdWx0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0IC0gMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ3BpY2tDb21tYW5kRnJvbUhpc3RvcnknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZC5zZWFyY2hUZXh0LFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICBzdGFjazogW10sXG4gICAgICAgIC8vIFRoZSBoaXN0b3J5IGRvZXMgbm90IGdldCBjaGFuZ2VkIGhlcmUsIGl0IHdpbGwgYmUgY2hhbmdlZCBhbG9uZ1xuICAgICAgICAvLyB3aXRoIHRoZSByZWd1bGFyIGZsb3cuXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldE5leHRDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc3RhY2s6IFtcbiAgICAgICAgICAuLi5zdGF0ZS5zdGFjayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiBzdGF0ZS5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgcmVzdWx0czogc3RhdGUucmVzdWx0cyxcbiAgICAgICAgICAgIHNlbGVjdGVkUmVzdWx0OiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFByZXZDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICAvLyBvbWl0IGxhc3QgaXRlbVxuICAgICAgICBzdGFjazogc3RhdGUuc3RhY2suc2xpY2UoMCwgLTEpLFxuICAgICAgfTtcbiAgICBjYXNlICdzZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgLy8gY2xlYXIgbmV0d29yayBlcnJvciB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICAgLy8gYXJlIHRlbXB0ZWQgdG8gcmV0cnlcbiAgICAgICAgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZC5sZW5ndGggPiAwICYmIHN0YXRlLmhhc05ldHdvcmtFcnJvcixcbiAgICAgIH07XG4gICAgY2FzZSAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCA/IDAgOiAtMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogdHJ1ZSxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgfTtcbiAgICBjYXNlICdyZXNldFNlYXJjaFRleHQnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlYXJjaFRleHQ6ICcnLCByZXN1bHRzOiBbXSwgc2VsZWN0ZWRSZXN1bHQ6IC0xIH07XG4gICAgY2FzZSAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlbGVjdGVkUmVzdWx0OiAtMSwgZW5hYmxlSGlzdG9yeTogdHJ1ZSB9O1xuICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxudHlwZSBQcm9wcyA9IHtcbiAgaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdO1xuICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiAoaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdKSA9PiB2b2lkO1xuICBzZWFyY2g6IChzZWFyY2hUZXh0OiBTZWFyY2hUZXh0KSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGdldE5leHRDb21tYW5kczogKGNvbW1hbmQ6IENvbW1hbmQpID0+IFByb21pc2U8Q29tbWFuZFtdPjtcbiAgZXhlY3V0ZUNvbW1hbmQ6IChjb21tYW5kOiBDb21tYW5kLCBtZXRhOiB7IG9wZW5Jbk5ld1RhYjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBjbGFzc05hbWVTaGFrZUFuaW1hdGlvbjogc3RyaW5nO1xufTtcbmNvbnN0IEJ1dGxlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyPFxuICAgIChwcmV2U3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbikgPT4gU3RhdGVcbiAgPihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IHNob3VsZFNlbGVjdEZpZWxkVGV4dCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTmV3V2luZG93Q29tYm8gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBza2lwTmV4dFNlbGVjdGlvbiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlYXJjaENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiB0cnVlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVuc2V0SGFzTmV0d29ya0Vycm9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogJ25ldHdvcmtFcnJvcicsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogZmFsc2UgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBEZXN0cnVjdHVyZSBmdW5jdGlvbnMgZnJvbSBwcm9wcyB0byByZWZlcmVuY2UgdGhlbSBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RcbiAgY29uc3Qge1xuICAgIHNlYXJjaDogc2VhcmNoRnJvbVBhcmVudCxcbiAgICBvbkNsb3NlOiBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICBleGVjdXRlQ29tbWFuZDogZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2U6IG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgIGdldE5leHRDb21tYW5kczogZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNoYWtlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZWFyY2hDb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25cbiAgICAgICk7XG4gICAgICAvLyAtPiB0cmlnZ2VyaW5nIHJlZmxvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgIHZvaWQgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGg7XG4gICAgICBzZWFyY2hDb250YWluZXJSZWYuY3VycmVudC5jbGFzc0xpc3QuYWRkKHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uKTtcbiAgICB9XG4gIH0sIFtwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbl0pO1xuXG4gIGNvbnN0IGV4ZWN1dGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29tbWFuZCwgbWV0YSkgPT4ge1xuICAgICAgLy8gT25seSBtYWluIGVudHJpZXMgZ2V0IGFkZGVkIHRvIGhpc3RvcnksIHNvIHdoZW4gYSBzdWJjb21tYW5kIGlzIGV4ZWN1dGVkLFxuICAgICAgLy8gd2UgYWRkIHRoZSBtYWluIGNvbW1hbmQgb2YgaXQgdG8gdGhlIGhpc3RvcnkgKHRoZSB0b3AtbGV2ZWwgY29tbWFuZCkuXG4gICAgICAvL1xuICAgICAgLy8gVGhlIGtleSB0byBpZGVudGlmeSBoaXN0b3J5IGVudHJpZXMgYnkgaXMgYWx3YXlzIHRoZSBzZWFyY2hUZXh0XG4gICAgICAvLyBUaGVyZSB3aWxsIG5ldmVyIGJlIHR3byBoaXN0b3J5IGVudHJpZXMgd2l0aCB0aGUgc2FtZSBzZWFyY2hUZXh0XG4gICAgICBjb25zdCBlbnRyeSA9XG4gICAgICAgIHN0YXRlLnN0YWNrLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gLy8gVGhlIHN0YWNrIGlzIGVtcHR5LCBzbyB3ZSBhcmUgZXhlY3V0aW5nIGEgdG9wLWxldmVsIGNvbW1hbmRcbiAgICAgICAgICAgIHsgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCwgcmVzdWx0czogc3RhdGUucmVzdWx0cyB9XG4gICAgICAgICAgOiAvLyBXZSBhcmUgZXhlY3V0aW5nIGEgc3ViY29tbWFuZCwgc28gd2UgZ2V0IHRoZSB0b3AtbGV2ZWwgY29tbWFuZCBmb3IgaXQsXG4gICAgICAgICAgICAvLyB3aGljaCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjay5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc3RhY2tbMF0uc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogc3RhdGUuc3RhY2tbMF0ucmVzdWx0cyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgIC8vIEFkZCB0aGUgZW50cnkgdG8gdGhlIGhpc3RvcnksIHdoaWxlIGV4Y2x1ZGluZyBhbnkgZWFybGllciBoaXN0b3J5IGVudHJ5XG4gICAgICAvLyB3aXRoIHRoZSBzYW1lIHNlYXJjaCB0ZXh0LiBUaGlzIGVmZmVjdGl2ZWx5IFwibW92ZXNcIiB0aGF0IGVudHJ5IHRvIHRoZVxuICAgICAgLy8gdG9wIG9mIHRoZSBoaXN0b3J5ICh3aXRoIHRoZSBtb3N0IHJlY2VudCByZXN1bHRzKSwgb3IgYXBwZW5kcyBhIG5ldyBlbnRyeVxuICAgICAgLy8gd2hlbiBpdCBkaWRuJ3QgZXhpc3QgYmVmb3JlLlxuICAgICAgb25IaXN0b3J5RW50cmllc0NoYW5nZUZyb21QYXJlbnQoW1xuICAgICAgICAuLi5wcm9wcy5oaXN0b3J5RW50cmllcy5maWx0ZXIoXG4gICAgICAgICAgKGNvbW1hbmQpID0+IGNvbW1hbmQuc2VhcmNoVGV4dCAhPT0gZW50cnkuc2VhcmNoVGV4dFxuICAgICAgICApLFxuICAgICAgICBlbnRyeSxcbiAgICAgIF0pO1xuXG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH0pO1xuXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCgpO1xuXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQoY29tbWFuZCwgbWV0YSk7XG4gICAgfSxcbiAgICBbXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQsXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzdGF0ZS5yZXN1bHRzLFxuICAgICAgc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIHN0YXRlLnN0YWNrLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnRpbmcgY3Vyc29yIGp1bXBzIGNhbiBvbmx5IGhhcHBlbiBpbiBvbktleURvd24sIGJ1dCBub3QgaW4gb25LZXlVcFxuICAgICAgZXZlbnQucGVyc2lzdCgpO1xuXG4gICAgICAvLyBXZSB3YW50IHRvIGtub3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGNtZCtlbnRlciAoY21kIGJlaW5nIGEgbWV0YSBrZXkpLlxuICAgICAgLy8gV2UgYXJlIG9ubHkgdG9sZCBhYm91dCB0aGlzIGluIGtleURvd24sIGJ1dCBub3QgaW4ga2V5VXAsIHNvIHdlIG5lZWRcbiAgICAgIC8vIHRvIGhhbmRsZSBpdCBoZXJlXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmIGhhc05ld1dpbmRvd01vZGlmaWVyKGV2ZW50KSkge1xuICAgICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEF2b2lkIHNlbGVjdGluZyB0aGUgd2hvbGUgcGFnZSB3aGVuIHVzZXIgc2VsZWN0ZXMgZXZlcnl0aGluZyB3aXRoXG4gICAgICAvLyBhIGtleWJvYXJkIHNob3J0Y3V0LiBUaGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyB0aG91Z2guXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSB3aG9sZSBwYWdlIGZyb20gYmVpbmcgc2VsZWN0ZWQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gMSkgb3BlbnMgdGhlIHNlYXJjaCBib3hcbiAgICAgIC8vIDIpIHR5cGVzIGludG8gaXRcbiAgICAgIC8vIDMpIHNlbGVjdHMgYWxsIHRleHQgdXNpbmcgY21kK2FcbiAgICAgIC8vIDQpIGNsb3NlcyB0aGUgc2VhcmNoIGJveCB3aXRoIGVzY1xuICAgICAgLy8gV2l0aG91dCB0aGlzIGhhbmRsaW5nLCB0aGUgd2hvbGUgcGFnZSB3b3VsZCBub3cgYmUgc2VsZWN0ZWRcbiAgICAgIGlmIChpc1NlbGVjdEFsbENvbWJvKGV2ZW50KSkge1xuICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBicm93c2VyIGZyb20gc2VsZWN0aW5nIGFueXRoaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzZWFyY2hJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gVGhpcyBzZWxlY3RzIHRoZSB0ZXh0IGluIHRoZSBzZWFyY2ggaW5wdXRcbiAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGggb3RoZXIga2V5IGNvbWJpbmF0aW9ucyB1c2luZyBtb2RpZmllciBrZXlzXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzQ2xvc2VDb21ibyhldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2tpcCBuZXh0IG1vdXNlRW50ZXIgdG8gYXZvaWQgc2V0dGluZyBzZWxlY3RlZFJlc3VsdCB3aGVuIGN1cnNvciBqdXN0XG4gICAgICAvLyBoYXBwZW5zIHRvIGJlIHdoZXJlIHRoZSByZXN1bHRzIHdpbGwgcG9wIHVwXG4gICAgICBza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgLy8gcHJldmVudCBjdXJzb3IgZnJvbSBqdW1waW5nIHRvIGVuZCBvZiB0ZXh0IGlucHV0XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIC8vIGJyb3dzZSB0aHJvdWdoIGhpc3RvcnlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgKHN0YXRlLnNlbGVjdGVkUmVzdWx0IDwgMSAmJiBzdGF0ZS5lbmFibGVIaXN0b3J5KVxuICAgICAgICApIHtcbiAgICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICA/IC8vIFdoZW4gZ29pbmcgYmFjayB0aGUgZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIDogLy8gV2hlbiBnb2luZyBiYWNrIG1vcmUgdGhhbiBvbmUgc3RlcFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgPT09IHN0YXRlLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIC8vIFBpY2sgdGhlIHByZXZpb3VzIGNvbW1hbmQgZnJvbSB0aGUgaGlzdG9yeVxuICAgICAgICAgIGNvbnN0IHByZXZDb21tYW5kID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgID8gLy8gcHJldmlvdXMgY29tbWFuZCBvbiB0b3Agb2YgdGhlIGhpc3Rvcnkgd2hlbiBnb2luZyBiYWNrIG9uXG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGxhc3QocHJvcHMuaGlzdG9yeUVudHJpZXMpXG4gICAgICAgICAgICAgIDogLy8gcHJldmlvdXMgY29tbWFuZCBpcyBkZWVwZXIgZG93blxuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGhpc3RvcnkgZG9lcyBub3QgZXhpc3QgKG5lZ2F0aXZlIGluZGV4KSwgdGhlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaW1wbGljaXRseSByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzW3NlbGVjdGVkSW5kZXggLSAxXTtcbiAgICAgICAgICAvLyBTa2lwIHdoZW4gbm8gcHJldmlvdXMgZW50cnkgZXhpc3RzIGluIHRoZSBoaXN0b3J5XG4gICAgICAgICAgaWYgKCFwcmV2Q29tbWFuZCkgcmV0dXJuO1xuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBiZWdpbm5pbmcgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XTtcbiAgICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc3RhdGUuc2VhcmNoVGV4dDtcbiAgICAgICAgICBjb25zdCBpc0N1cnNvckF0RW5kID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgICAgY29uc3QgaXNFdmVyeXRoaW5nU2VsZWN0ZWQgPVxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kO1xuXG4gICAgICAgICAgLy8gb25seSBhbGxvdyBkaXZpbmcgaW4gd2hlbiBjdXJzb3IgaXMgYXQgZW5kIG9mIGlucHV0IG9yIHdoZW5cbiAgICAgICAgICAvLyB0aGUgY29tcGxldGUgdGV4dCBpcyBzZWxlY3RlZCAod2hlbiBicm93c2luZyB0aHJvdWdoIGhpc3RvcnkpXG4gICAgICAgICAgaWYgKCFpc0N1cnNvckF0RW5kICYmICFpc0V2ZXJ5dGhpbmdTZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IoKTtcblxuICAgICAgICAgIC8vIE5PVEU6IHNpbmNlIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIFwibmV4dCBjb21tYW5kXCIsIHdoaWNoIGlzIGFuIGFzeW5jIG9wZXJhdGlvbixcbiAgICAgICAgICAvLyB3ZSB1c2UgYSBJSUZFIHRvIHByb2Nlc3MgdGhhdCBhbmQgZXZlbnR1YWxseSB1cGRhdGUgdGhlIHN0YXRlLlxuICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tbWFuZHMgPSBhd2FpdCBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50KGNvbW1hbmQpO1xuICAgICAgICAgICAgICAvLyBhdm9pZCBtb3ZpbmcgY3Vyc29yIHdoZW4gdGhlcmUgYXJlIHN1Yi1vcHRpb25zXG4gICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2VhcmNoIHRleHQgaGFzIG5vdCBjaGFuZ2VkIHdoaWxlIHdlIHdlcmUgbG9hZGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHJlc3VsdHMsIG90aGVyd2lzZSB3ZSdkIGludGVycnVwdCB0aGUgdXNlci5cbiAgICAgICAgICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSByZXN1bHRzIGluIGNhc2UgdGhlIHNlYXJjaCB0ZXh0IGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zZWFyY2hUZXh0ID09PSBzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnLFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IHJlc3VsdHM6IG5leHRDb21tYW5kcyB9LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hha2UoKTtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgIC8vIGdvIGxlZnQgaW4gc3RhY2tcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9IGxhc3Qoc3RhdGUuc3RhY2spO1xuXG4gICAgICAgICAgLy8gZG8gbm90aGluZyB3aGVuIHdlIGNhbid0IGdvIGxlZnQgYW55bW9yZVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcblxuICAgICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyBhIGNoYXIgdG8gdGhlIGxlZnQgaW4gdGV4dCBpbnB1dFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzaGFrZSxcbiAgICAgIHN0YXRlLFxuICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIHNldHRpbmcgdGhlIHNlbGVjdGlvbiBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlVcFxuICAgICAgaWYgKHNob3VsZFNlbGVjdEZpZWxkVGV4dC5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmICFpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGp1c3QgdHJpZ2dlcmVkIHRoZSBzZWFyY2hcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gLTEpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGhhZCBzb21ldGhpbmcgc2VsZWN0ZWQgYW5kIHdhbnRzIHRvIGdvIHRoZXJlXG4gICAgICBleGVjdXRlKHN0YXRlLnJlc3VsdHNbc3RhdGUuc2VsZWN0ZWRSZXN1bHRdLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaXNOZXdXaW5kb3dDb21iby5jdXJyZW50LFxuICAgICAgfSk7XG5cbiAgICAgIGlzTmV3V2luZG93Q29tYm8uY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBbZXhlY3V0ZSwgc3RhdGUucmVzdWx0cywgc3RhdGUuc2VsZWN0ZWRSZXN1bHRdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrPENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKHNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VhcmNoVGV4dCcsIHBheWxvYWQ6IHNlYXJjaFRleHQgfSk7XG5cbiAgICAgIC8vIEEgc2VhcmNoIHZpYSBuZXR3b3JrIGlzIG9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlcmVcbiAgICAgIC8vIGFyZSBtb3JlIHRoYW4gdGhyZWUgY2hhcmFjdGVycy4gU28gbm8gZmFsc2UgbG9hZGluZ1xuICAgICAgLy8gaW5kaWNhdGlvbiBpcyBnaXZlbi5cbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAzKSB7XG4gICAgICAgIHNldElzTG9hZGluZygpO1xuICAgICAgfVxuXG4gICAgICBzZWFyY2hGcm9tUGFyZW50KHNlYXJjaFRleHQpLnRoZW4oXG4gICAgICAgIChhc3luY1Jlc3VsdHM6IENvbW1hbmRbXSkgPT4ge1xuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcblxuICAgICAgICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZShhc3luY1Jlc3VsdHMsIHtcbiAgICAgICAgICAgIGtleXM6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAndGV4dCcsIHdlaWdodDogMC42IH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ2tleXdvcmRzJywgd2VpZ2h0OiAwLjQgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDIsXG4gICAgICAgICAgICBpbmNsdWRlU2NvcmU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZnVzZVxuICAgICAgICAgICAgLnNlYXJjaChzZWFyY2hUZXh0KVxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCByZXN1bHRzIHdpdGggYSBtYXRjaGluZyBzY29yZSBvdmVyIDAuNzVcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlc3VsdCkgPT4gKHJlc3VsdC5zY29yZSA/IHJlc3VsdC5zY29yZSA8IDAuNzUgOiBmYWxzZSkpXG4gICAgICAgICAgICAvLyBLZWVwIGEgbWF4aW1hbCBvZiA5IHJlc3VsdHNcbiAgICAgICAgICAgIC5zbGljZSgwLCA5KTtcblxuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdzZXRTZWFyY2hUZXh0UmVzdWx0cycsXG4gICAgICAgICAgICBwYXlsb2FkOiBzZWFyY2hSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB1bnNldElzTG9hZGluZygpO1xuICAgICAgICAgIHNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgc2VhcmNoRnJvbVBhcmVudCxcbiAgICAgIHNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHNldElzTG9hZGluZyxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgICAgdW5zZXRJc0xvYWRpbmcsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfSk7XG4gICAgb25DbG9zZUZyb21QYXJlbnQoKTtcbiAgfSwgW29uQ2xvc2VGcm9tUGFyZW50XSk7XG5cbiAgY29uc3QgY3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyID0gdXNlQ2FsbGJhY2s8XG4gICAgKGluZGV4OiBudW1iZXIpID0+IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PlxuICA+KFxuICAgIChpbmRleCkgPT4gKCkgPT4ge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgY3Vyc29yIGhhcHBlbmVkIHRvIGJlIGluIGEgbG9jYXRpb24gd2hlcmUgYVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGFwcGVhciwgaXQgd291bGQgdHJpZ2dlciBvbk1vdXNlRW50ZXIgYW5kIHRoZVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGJlIHNlbGVjdGVkIGltbWVkaWF0ZWx5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmdcbiAgICAgIC8vIGEgdXNlciB3b3VsZCBleHBlY3QsIGhlbmNlIHdlIHByZXZlbnQgaXQgZnJvbSBoYXBwZW5pbmcuXG4gICAgICAvLyBUaGUgdXNlciBoYXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIGFuIG9wdGlvbiBleHBsaWNpdGx5IGZvclxuICAgICAgLy8gaXQgdG8gYmVjb21lIGFjdGl2ZS4gSG93ZXZlciwgdGhlIHVzZXIgY2FuIGFsd2F5cyBjbGljayBhbmRcbiAgICAgIC8vIHRoYXQgYWN0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuICAgICAgaWYgKHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIHNldHMgdGhlIHNlbGVjdGVkIHJlc3VsdCwgbWFpbmx5IGZvciB0aGUgaG92ZXIgZWZmZWN0XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCcsIHBheWxvYWQ6IGluZGV4IH0pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcbiAgY29uc3QgY3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChjb21tYW5kOiBDb21tYW5kKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoY29tbWFuZCkgPT4gKGV2ZW50KSA9PiB7XG4gICAgICBleGVjdXRlKGNvbW1hbmQsIHtcbiAgICAgICAgb3BlbkluTmV3VGFiOiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtleGVjdXRlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dGxlckNvbnRhaW5lclxuICAgICAgb25DbGljaz17aGFuZGxlQ29udGFpbmVyQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzc1wiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3NlYXJjaENvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aUtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAke3VpS2l0RGVzaWduVG9rZW5zLmJvcmRlclJhZGl1czR9O1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG5cbiAgICAgICAgICAvKiBvbmUgbW9yZSB0aGFuIGFwcC1iYXIgKDIwMDAwKSBhbmQgb25lIG1vcmUgdGhhbiB0aGUgb3ZlcmxheSAoMjAwMDEpICovXG4gICAgICAgICAgei1pbmRleDogMjAwMDI7XG4gICAgICAgICAgd2lkdGg6IDQwMHB4O1xuICAgICAgICAgIG1hcmdpbjogNDBweCBhdXRvO1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDEwcHggMzBweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC43NSk7XG4gICAgICAgICAgLW1vei1ib3gtc2hhZG93OiAwIDEwcHggMzBweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC43NSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAke3N0YXRlLmhhc05ldHdvcmtFcnJvclxuICAgICAgICAgICAgPyAnMCdcbiAgICAgICAgICAgIDogdWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ1N9O1xuICAgICAgICBgfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBBdm9pZCBjbG9zaW5nIHdoZW4gdGhlIHNlYXJjaENvbnRhaW5lciBpdHNlbGYgaXMgY2xpY2tlZFxuICAgICAgICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlIG92ZXJsYXkgd2lsbCBjbG9zZSB3aGVuIGUuZy5cbiAgICAgICAgICAvLyB0aGUgc2VhcmNoIGlucHV0IGlzIGNsaWNrZWQuXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ019O1xuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAke3VpS2l0RGVzaWduVG9rZW5zLnNwYWNpbmdTfTtcbiAgICAgICAgICAgIGB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNlYXJjaEljb24gY29sb3I9XCJuZXV0cmFsNjBcIiAvPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cInF1aWNrLWFjY2Vzcy1zZWFyY2gtaW5wdXRcIlxuICAgICAgICAgICAgcmVmPXtzZWFyY2hJbnB1dFJlZn1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuaW5wdXRQbGFjZWhvZGVyKX1cbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICAgICAgICBmb250LXNpemU6IDIycHg7XG4gICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ019XG4gICAgICAgICAgICAgICAgJHt1aUtpdERlc2lnblRva2Vucy5zcGFjaW5nTX0gJHt1aUtpdERlc2lnblRva2Vucy5zcGFjaW5nU31cbiAgICAgICAgICAgICAgICAke3VpS2l0RGVzaWduVG9rZW5zLnNwYWNpbmdTfTtcbiAgICAgICAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAke3VpS2l0RGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDYwfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIHZhbHVlPXtzdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIG9uS2V5VXA9e2hhbmRsZUtleVVwfVxuICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c3RhdGUuaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHt1aUtpdERlc2lnblRva2Vucy5zcGFjaW5nU307XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0ZS5oYXNOZXR3b3JrRXJyb3IpXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dWlLaXREZXNpZ25Ub2tlbnMuY29sb3JFcnJvcn07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICR7dWlLaXREZXNpZ25Ub2tlbnMuY29sb3JTdXJmYWNlfTtcbiAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHt1aUtpdERlc2lnblRva2Vucy5mb250U2l6ZTIwfTtcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9mZmxpbmV9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXN1bHRzLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5zZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3VpS2l0RGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbH07XG4gICAgICAgICAgICAgICAgICBjb2xvcjogJHt1aUtpdERlc2lnblRva2Vucy5jb2xvclNvbGlkfTtcbiAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICBmb250LXNpemU6ICR7dWlLaXREZXNpZ25Ub2tlbnMuZm9udFNpemUyMH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke3VpS2l0RGVzaWduVG9rZW5zLnNwYWNpbmdYc307XG4gICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5ub1Jlc3VsdHN9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBzdGF0ZS5yZXN1bHRzLm1hcCgoY29tbWFuZCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxCdXRsZXJDb21tYW5kXG4gICAgICAgICAgICAgIGtleT17Y29tbWFuZC5pZH1cbiAgICAgICAgICAgICAgY29tbWFuZD17Y29tbWFuZH1cbiAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IGluZGV4fVxuICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9e2NyZWF0ZUNvbW1hbmRNb3VzZUVudGVySGFuZGxlcihpbmRleCl9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2NyZWF0ZUNvbW1hbmRDbGlja0hhbmRsZXIoY29tbWFuZCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpO1xuICAgICAgICB9KSgpfVxuICAgICAgPC9kaXY+XG4gICAgPC9CdXRsZXJDb250YWluZXI+XG4gICk7XG59O1xuQnV0bGVyLmRpc3BsYXlOYW1lID0gJ0J1dGxlcic7XG5cbmNvbnN0IEJ1dGxlcldpdGhBbmltYXRpb24gPSAocHJvcHM6IE9taXQ8UHJvcHMsICdjbGFzc05hbWVTaGFrZUFuaW1hdGlvbic+KSA9PiAoXG4gIDxDbGFzc05hbWVzPlxuICAgIHsoeyBjc3MgfSkgPT4gKFxuICAgICAgPEJ1dGxlclxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uPXtjc3NgXG4gICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjQ1cztcbiAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiAke3NoYWtlQW5pbWF0aW9ufTtcbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgKX1cbiAgPC9DbGFzc05hbWVzPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQnV0bGVyV2l0aEFuaW1hdGlvbjtcbiJdfQ== */",
555
+ styles: "display:flex;label:Butler;/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImJ1dGxlci50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ25Ca0IiLCJmaWxlIjoiYnV0bGVyLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEtleWJvYXJkRXZlbnRIYW5kbGVyLFxuICBDaGFuZ2VFdmVudEhhbmRsZXIsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnRIYW5kbGVyLFxuICBNb3VzZUV2ZW50LFxuICB1c2VSZWR1Y2VyLFxuICB1c2VSZWYsXG4gIHVzZUNhbGxiYWNrLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjc3MsIGtleWZyYW1lcywgQ2xhc3NOYW1lcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCBGdXNlIGZyb20gJ2Z1c2UuanMnO1xuaW1wb3J0IGxhc3QgZnJvbSAnbG9kYXNoL2xhc3QnO1xuaW1wb3J0IHsgRm9ybWF0dGVkTWVzc2FnZSwgdXNlSW50bCB9IGZyb20gJ3JlYWN0LWludGwnO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIGFzIHVpS2l0RGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyBTZWFyY2hJY29uIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaWNvbnMnO1xuaW1wb3J0IExvYWRpbmdTcGlubmVyIGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2xvYWRpbmctc3Bpbm5lcic7XG5pbXBvcnQgQnV0bGVyQ29tbWFuZCBmcm9tICcuLi9idXRsZXItY29tbWFuZCc7XG5pbXBvcnQgQnV0bGVyQ29udGFpbmVyIGZyb20gJy4uL2J1dGxlci1jb250YWluZXInO1xuaW1wb3J0IG1lc3NhZ2VzIGZyb20gJy4uL21lc3NhZ2VzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tbWFuZCxcbiAgU2VhcmNoVGV4dCxcbiAgU2VsZWN0ZWRSZXN1bHQsXG4gIFN0YWNrLFxuICBIaXN0b3J5RW50cnksXG59IGZyb20gJy4uL3R5cGVzJztcblxuY29uc3QgaXNTZWxlY3RBbGxDb21ibyA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT5cbiAgZXZlbnQua2V5ID09PSAnYScgJiZcbiAgZXZlbnQubWV0YUtleSAmJlxuICAhZXZlbnQuY3RybEtleSAmJlxuICAhZXZlbnQuYWx0S2V5ICYmXG4gICFldmVudC5zaGlmdEtleTtcblxuY29uc3QgaXNDbG9zZUNvbWJvID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PlxuICBldmVudC5rZXkgPT09ICdFc2NhcGUnICYmXG4gICFldmVudC5tZXRhS2V5ICYmXG4gICFldmVudC5jdHJsS2V5ICYmXG4gICFldmVudC5hbHRLZXkgJiZcbiAgIWV2ZW50LnNoaWZ0S2V5O1xuXG5jb25zdCBnZXRQbGF0Zm9ybSA9ICgpID0+IHtcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdXaW4nKSkgcmV0dXJuICd3aW5kb3dzJztcbiAgaWYgKG5hdmlnYXRvci5hcHBWZXJzaW9uLmluY2x1ZGVzKCdNYWMnKSkgcmV0dXJuICdtYWNvcyc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnWDExJykpIHJldHVybiAndW5peCc7XG4gIGlmIChuYXZpZ2F0b3IuYXBwVmVyc2lvbi5pbmNsdWRlcygnTGludXgnKSkgcmV0dXJuICdsaW51eCc7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBoYXNOZXdXaW5kb3dNb2RpZmllciA9IChcbiAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgTW91c2VFdmVudDxIVE1MRWxlbWVudD5cbikgPT4ge1xuICBjb25zdCBwbGF0Zm9ybSA9IGdldFBsYXRmb3JtKCk7XG4gIHN3aXRjaCAocGxhdGZvcm0pIHtcbiAgICBjYXNlICdtYWNvcyc6XG4gICAgICByZXR1cm4gZXZlbnQubWV0YUtleTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGV2ZW50LmN0cmxLZXk7XG4gIH1cbn07XG5cbmNvbnN0IHNoYWtlQW5pbWF0aW9uID0ga2V5ZnJhbWVzYFxuICBmcm9tLFxuICB0byB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcbiAgfVxuXG4gIDE0JSxcbiAgNDIlLFxuICA3MCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTNweCwgMCwgMCk7XG4gIH1cblxuICAyOCUsXG4gIDU2JSxcbiAgODQlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDNweCwgMCwgMCk7XG4gIH1cbmA7XG5cbnR5cGUgU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogYm9vbGVhbjtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0O1xuICBzZWxlY3RlZFJlc3VsdDogU2VsZWN0ZWRSZXN1bHQ7XG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IGJvb2xlYW47XG4gIHJlc3VsdHM6IENvbW1hbmRbXTtcbiAgc3RhY2s6IFN0YWNrW107XG59O1xudHlwZSBBY3Rpb24gPVxuICB8IHsgdHlwZTogJ25ldHdvcmtFcnJvcic7IHBheWxvYWQ6IGJvb2xlYW4gfVxuICB8IHsgdHlwZTogJ2xvYWRpbmcnOyBwYXlsb2FkOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCc7IHBheWxvYWQ6IG51bWJlciB9XG4gIHwgeyB0eXBlOiAnaW5jcmVtZW50U2VsZWN0ZWRSZXN1bHQnIH1cbiAgfCB7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfVxuICB8IHtcbiAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JztcbiAgICAgIHBheWxvYWQ6IHsgc2VhcmNoVGV4dDogU2VhcmNoVGV4dDsgcmVzdWx0czogQ29tbWFuZFtdIH07XG4gICAgfVxuICB8IHsgdHlwZTogJ3NldE5leHRDb21tYW5kcyc7IHBheWxvYWQ6IHsgcmVzdWx0czogQ29tbWFuZFtdIH0gfVxuICB8IHtcbiAgICAgIHR5cGU6ICdzZXRQcmV2Q29tbWFuZHMnO1xuICAgICAgcGF5bG9hZDogeyBzZWFyY2hUZXh0OiBTZWFyY2hUZXh0OyByZXN1bHRzOiBDb21tYW5kW10gfTtcbiAgICB9XG4gIHwgeyB0eXBlOiAnc2VhcmNoVGV4dCc7IHBheWxvYWQ6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOyBwYXlsb2FkOiBDb21tYW5kW10gfVxuICB8IHsgdHlwZTogJ3Jlc2V0U2VhcmNoVGV4dCcgfVxuICB8IHsgdHlwZTogJ3Jlc2V0UmVzdWx0c1doZW5DbG9zaW5nJyB9XG4gIHwgeyB0eXBlOiAncmVzZXQnIH07XG5jb25zdCBpbml0aWFsU3RhdGUgPSB7XG4gIGhhc05ldHdvcmtFcnJvcjogZmFsc2UsXG4gIGlzTG9hZGluZzogZmFsc2UsXG4gIHNlYXJjaFRleHQ6ICcnLFxuICBzZWxlY3RlZFJlc3VsdDogLTEsXG4gIC8vIFVzZWQgZm9yIFVYIHdoZW4gYnJvd3NpbmcgdGhyb3VnaCBoaXN0b3J5XG4gIGVuYWJsZUhpc3Rvcnk6IHRydWUsXG4gIHJlc3VsdHM6IFtdLFxuICBzdGFjazogW10sXG59O1xuY29uc3QgcmVkdWNlciA9IChzdGF0ZTogU3RhdGUgPSBpbml0aWFsU3RhdGUsIGFjdGlvbjogQWN0aW9uKTogU3RhdGUgPT4ge1xuICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG4gICAgY2FzZSAnbmV0d29ya0Vycm9yJzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBoYXNOZXR3b3JrRXJyb3I6IGFjdGlvbi5wYXlsb2FkIH07XG4gICAgY2FzZSAnbG9hZGluZyc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgaXNMb2FkaW5nOiBhY3Rpb24ucGF5bG9hZCB9O1xuICAgIGNhc2UgJ3NlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQgfTtcbiAgICBjYXNlICdpbmNyZW1lbnRTZWxlY3RlZFJlc3VsdCc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IHN0YXRlLnJlc3VsdHMubGVuZ3RoIC0gMVxuICAgICAgICAgICAgPyAwXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0ICsgMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ2RlY3JlbWVudFNlbGVjdGVkUmVzdWx0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDpcbiAgICAgICAgICBzdGF0ZS5zZWxlY3RlZFJlc3VsdCA8IDFcbiAgICAgICAgICAgID8gc3RhdGUucmVzdWx0cy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IHN0YXRlLnNlbGVjdGVkUmVzdWx0IC0gMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICB9O1xuICAgIGNhc2UgJ3BpY2tDb21tYW5kRnJvbUhpc3RvcnknOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNlbGVjdGVkUmVzdWx0OiAwLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZC5zZWFyY2hUZXh0LFxuICAgICAgICByZXN1bHRzOiBhY3Rpb24ucGF5bG9hZC5yZXN1bHRzLFxuICAgICAgICBzdGFjazogW10sXG4gICAgICAgIC8vIFRoZSBoaXN0b3J5IGRvZXMgbm90IGdldCBjaGFuZ2VkIGhlcmUsIGl0IHdpbGwgYmUgY2hhbmdlZCBhbG9uZ1xuICAgICAgICAvLyB3aXRoIHRoZSByZWd1bGFyIGZsb3cuXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldE5leHRDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc3RhY2s6IFtcbiAgICAgICAgICAuLi5zdGF0ZS5zdGFjayxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzZWFyY2hUZXh0OiBzdGF0ZS5zZWFyY2hUZXh0LFxuICAgICAgICAgICAgcmVzdWx0czogc3RhdGUucmVzdWx0cyxcbiAgICAgICAgICAgIHNlbGVjdGVkUmVzdWx0OiBzdGF0ZS5zZWxlY3RlZFJlc3VsdCxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogMCxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogZmFsc2UsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLnJlc3VsdHMsXG4gICAgICB9O1xuICAgIGNhc2UgJ3NldFByZXZDb21tYW5kcyc6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgc2VhcmNoVGV4dDogYWN0aW9uLnBheWxvYWQuc2VhcmNoVGV4dCxcbiAgICAgICAgcmVzdWx0czogYWN0aW9uLnBheWxvYWQucmVzdWx0cyxcbiAgICAgICAgc2VsZWN0ZWRSZXN1bHQ6IDAsXG4gICAgICAgIGVuYWJsZUhpc3Rvcnk6IGZhbHNlLFxuICAgICAgICAvLyBvbWl0IGxhc3QgaXRlbVxuICAgICAgICBzdGFjazogc3RhdGUuc3RhY2suc2xpY2UoMCwgLTEpLFxuICAgICAgfTtcbiAgICBjYXNlICdzZWFyY2hUZXh0JzpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzZWFyY2hUZXh0OiBhY3Rpb24ucGF5bG9hZCxcbiAgICAgICAgLy8gY2xlYXIgbmV0d29yayBlcnJvciB3aGVuIHNlYXJjaCB0ZXh0IGlzIGNsZWFyZWQsIHNvIHRoYXQgdXNlcnNcbiAgICAgICAgLy8gYXJlIHRlbXB0ZWQgdG8gcmV0cnlcbiAgICAgICAgaGFzTmV0d29ya0Vycm9yOiBhY3Rpb24ucGF5bG9hZC5sZW5ndGggPiAwICYmIHN0YXRlLmhhc05ldHdvcmtFcnJvcixcbiAgICAgIH07XG4gICAgY2FzZSAnc2V0U2VhcmNoVGV4dFJlc3VsdHMnOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHJlc3VsdHM6IGFjdGlvbi5wYXlsb2FkLFxuICAgICAgICBzZWxlY3RlZFJlc3VsdDogYWN0aW9uLnBheWxvYWQubGVuZ3RoID4gMCA/IDAgOiAtMSxcbiAgICAgICAgZW5hYmxlSGlzdG9yeTogdHJ1ZSxcbiAgICAgICAgc3RhY2s6IFtdLFxuICAgICAgfTtcbiAgICBjYXNlICdyZXNldFNlYXJjaFRleHQnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlYXJjaFRleHQ6ICcnLCByZXN1bHRzOiBbXSwgc2VsZWN0ZWRSZXN1bHQ6IC0xIH07XG4gICAgY2FzZSAncmVzZXRSZXN1bHRzV2hlbkNsb3NpbmcnOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNlbGVjdGVkUmVzdWx0OiAtMSwgZW5hYmxlSGlzdG9yeTogdHJ1ZSB9O1xuICAgIGNhc2UgJ3Jlc2V0JzpcbiAgICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxudHlwZSBQcm9wcyA9IHtcbiAgaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdO1xuICBvbkhpc3RvcnlFbnRyaWVzQ2hhbmdlOiAoaGlzdG9yeUVudHJpZXM6IEhpc3RvcnlFbnRyeVtdKSA9PiB2b2lkO1xuICBzZWFyY2g6IChzZWFyY2hUZXh0OiBTZWFyY2hUZXh0KSA9PiBQcm9taXNlPENvbW1hbmRbXT47XG4gIGdldE5leHRDb21tYW5kczogKGNvbW1hbmQ6IENvbW1hbmQpID0+IFByb21pc2U8Q29tbWFuZFtdPjtcbiAgZXhlY3V0ZUNvbW1hbmQ6IChjb21tYW5kOiBDb21tYW5kLCBtZXRhOiB7IG9wZW5Jbk5ld1RhYjogYm9vbGVhbiB9KSA9PiB2b2lkO1xuICBvbkNsb3NlOiAoKSA9PiB2b2lkO1xuICBjbGFzc05hbWVTaGFrZUFuaW1hdGlvbjogc3RyaW5nO1xufTtcbmNvbnN0IEJ1dGxlciA9IChwcm9wczogUHJvcHMpID0+IHtcbiAgY29uc3QgaW50bCA9IHVzZUludGwoKTtcbiAgY29uc3QgW3N0YXRlLCBkaXNwYXRjaF0gPSB1c2VSZWR1Y2VyPFxuICAgIChwcmV2U3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbikgPT4gU3RhdGVcbiAgPihyZWR1Y2VyLCBpbml0aWFsU3RhdGUpO1xuXG4gIGNvbnN0IHNob3VsZFNlbGVjdEZpZWxkVGV4dCA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGlzTmV3V2luZG93Q29tYm8gPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBza2lwTmV4dFNlbGVjdGlvbiA9IHVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IHNlYXJjaENvbnRhaW5lclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IHNlYXJjaElucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpO1xuXG4gIGNvbnN0IHNldEhhc05ldHdvcmtFcnJvciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICduZXR3b3JrRXJyb3InLCBwYXlsb2FkOiB0cnVlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHVuc2V0SGFzTmV0d29ya0Vycm9yID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRpc3BhdGNoKHsgdHlwZTogJ25ldHdvcmtFcnJvcicsIHBheWxvYWQ6IGZhbHNlIH0pO1xuICB9LCBbXSk7XG4gIGNvbnN0IHNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogdHJ1ZSB9KTtcbiAgfSwgW10pO1xuICBjb25zdCB1bnNldElzTG9hZGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdsb2FkaW5nJywgcGF5bG9hZDogZmFsc2UgfSk7XG4gIH0sIFtdKTtcblxuICAvLyBEZXN0cnVjdHVyZSBmdW5jdGlvbnMgZnJvbSBwcm9wcyB0byByZWZlcmVuY2UgdGhlbSBpbiB0aGUgaG9vayBkZXBlbmRlbmN5IGxpc3RcbiAgY29uc3Qge1xuICAgIHNlYXJjaDogc2VhcmNoRnJvbVBhcmVudCxcbiAgICBvbkNsb3NlOiBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICBleGVjdXRlQ29tbWFuZDogZXhlY3V0ZUNvbW1hbmRGcm9tUGFyZW50LFxuICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2U6IG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgIGdldE5leHRDb21tYW5kczogZ2V0TmV4dENvbW1hbmRzRnJvbVBhcmVudCxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHNoYWtlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChzZWFyY2hDb250YWluZXJSZWYuY3VycmVudCkge1xuICAgICAgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lU2hha2VBbmltYXRpb25cbiAgICAgICk7XG4gICAgICAvLyAtPiB0cmlnZ2VyaW5nIHJlZmxvd1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXZvaWRcbiAgICAgIHZvaWQgc2VhcmNoQ29udGFpbmVyUmVmLmN1cnJlbnQub2Zmc2V0V2lkdGg7XG4gICAgICBzZWFyY2hDb250YWluZXJSZWYuY3VycmVudC5jbGFzc0xpc3QuYWRkKHByb3BzLmNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uKTtcbiAgICB9XG4gIH0sIFtwcm9wcy5jbGFzc05hbWVTaGFrZUFuaW1hdGlvbl0pO1xuXG4gIGNvbnN0IGV4ZWN1dGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29tbWFuZCwgbWV0YSkgPT4ge1xuICAgICAgLy8gT25seSBtYWluIGVudHJpZXMgZ2V0IGFkZGVkIHRvIGhpc3RvcnksIHNvIHdoZW4gYSBzdWJjb21tYW5kIGlzIGV4ZWN1dGVkLFxuICAgICAgLy8gd2UgYWRkIHRoZSBtYWluIGNvbW1hbmQgb2YgaXQgdG8gdGhlIGhpc3RvcnkgKHRoZSB0b3AtbGV2ZWwgY29tbWFuZCkuXG4gICAgICAvL1xuICAgICAgLy8gVGhlIGtleSB0byBpZGVudGlmeSBoaXN0b3J5IGVudHJpZXMgYnkgaXMgYWx3YXlzIHRoZSBzZWFyY2hUZXh0XG4gICAgICAvLyBUaGVyZSB3aWxsIG5ldmVyIGJlIHR3byBoaXN0b3J5IGVudHJpZXMgd2l0aCB0aGUgc2FtZSBzZWFyY2hUZXh0XG4gICAgICBjb25zdCBlbnRyeSA9XG4gICAgICAgIHN0YXRlLnN0YWNrLmxlbmd0aCA9PT0gMFxuICAgICAgICAgID8gLy8gVGhlIHN0YWNrIGlzIGVtcHR5LCBzbyB3ZSBhcmUgZXhlY3V0aW5nIGEgdG9wLWxldmVsIGNvbW1hbmRcbiAgICAgICAgICAgIHsgc2VhcmNoVGV4dDogc3RhdGUuc2VhcmNoVGV4dCwgcmVzdWx0czogc3RhdGUucmVzdWx0cyB9XG4gICAgICAgICAgOiAvLyBXZSBhcmUgZXhlY3V0aW5nIGEgc3ViY29tbWFuZCwgc28gd2UgZ2V0IHRoZSB0b3AtbGV2ZWwgY29tbWFuZCBmb3IgaXQsXG4gICAgICAgICAgICAvLyB3aGljaCBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSBzdGFjay5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogc3RhdGUuc3RhY2tbMF0uc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogc3RhdGUuc3RhY2tbMF0ucmVzdWx0cyxcbiAgICAgICAgICAgIH07XG5cbiAgICAgIC8vIEFkZCB0aGUgZW50cnkgdG8gdGhlIGhpc3RvcnksIHdoaWxlIGV4Y2x1ZGluZyBhbnkgZWFybGllciBoaXN0b3J5IGVudHJ5XG4gICAgICAvLyB3aXRoIHRoZSBzYW1lIHNlYXJjaCB0ZXh0LiBUaGlzIGVmZmVjdGl2ZWx5IFwibW92ZXNcIiB0aGF0IGVudHJ5IHRvIHRoZVxuICAgICAgLy8gdG9wIG9mIHRoZSBoaXN0b3J5ICh3aXRoIHRoZSBtb3N0IHJlY2VudCByZXN1bHRzKSwgb3IgYXBwZW5kcyBhIG5ldyBlbnRyeVxuICAgICAgLy8gd2hlbiBpdCBkaWRuJ3QgZXhpc3QgYmVmb3JlLlxuICAgICAgb25IaXN0b3J5RW50cmllc0NoYW5nZUZyb21QYXJlbnQoW1xuICAgICAgICAuLi5wcm9wcy5oaXN0b3J5RW50cmllcy5maWx0ZXIoXG4gICAgICAgICAgKGNvbW1hbmQpID0+IGNvbW1hbmQuc2VhcmNoVGV4dCAhPT0gZW50cnkuc2VhcmNoVGV4dFxuICAgICAgICApLFxuICAgICAgICBlbnRyeSxcbiAgICAgIF0pO1xuXG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFNlYXJjaFRleHQnIH0pO1xuXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCgpO1xuXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQoY29tbWFuZCwgbWV0YSk7XG4gICAgfSxcbiAgICBbXG4gICAgICBleGVjdXRlQ29tbWFuZEZyb21QYXJlbnQsXG4gICAgICBvbkNsb3NlRnJvbVBhcmVudCxcbiAgICAgIG9uSGlzdG9yeUVudHJpZXNDaGFuZ2VGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzdGF0ZS5yZXN1bHRzLFxuICAgICAgc3RhdGUuc2VhcmNoVGV4dCxcbiAgICAgIHN0YXRlLnN0YWNrLFxuICAgIF1cbiAgKTtcbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIFByZXZlbnRpbmcgY3Vyc29yIGp1bXBzIGNhbiBvbmx5IGhhcHBlbiBpbiBvbktleURvd24sIGJ1dCBub3QgaW4gb25LZXlVcFxuICAgICAgZXZlbnQucGVyc2lzdCgpO1xuXG4gICAgICAvLyBXZSB3YW50IHRvIGtub3cgd2hlbiB0aGUgdXNlciBwcmVzc2VzIGNtZCtlbnRlciAoY21kIGJlaW5nIGEgbWV0YSBrZXkpLlxuICAgICAgLy8gV2UgYXJlIG9ubHkgdG9sZCBhYm91dCB0aGlzIGluIGtleURvd24sIGJ1dCBub3QgaW4ga2V5VXAsIHNvIHdlIG5lZWRcbiAgICAgIC8vIHRvIGhhbmRsZSBpdCBoZXJlXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInICYmIGhhc05ld1dpbmRvd01vZGlmaWVyKGV2ZW50KSkge1xuICAgICAgICBpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIEF2b2lkIHNlbGVjdGluZyB0aGUgd2hvbGUgcGFnZSB3aGVuIHVzZXIgc2VsZWN0ZXMgZXZlcnl0aGluZyB3aXRoXG4gICAgICAvLyBhIGtleWJvYXJkIHNob3J0Y3V0LiBUaGVyZSBpcyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gdGhpcyB0aG91Z2guXG4gICAgICAvLyBUaGlzIHByZXZlbnRzIHRoZSB3aG9sZSBwYWdlIGZyb20gYmVpbmcgc2VsZWN0ZWQgaW4gY2FzZSB0aGUgdXNlclxuICAgICAgLy8gMSkgb3BlbnMgdGhlIHNlYXJjaCBib3hcbiAgICAgIC8vIDIpIHR5cGVzIGludG8gaXRcbiAgICAgIC8vIDMpIHNlbGVjdHMgYWxsIHRleHQgdXNpbmcgY21kK2FcbiAgICAgIC8vIDQpIGNsb3NlcyB0aGUgc2VhcmNoIGJveCB3aXRoIGVzY1xuICAgICAgLy8gV2l0aG91dCB0aGlzIGhhbmRsaW5nLCB0aGUgd2hvbGUgcGFnZSB3b3VsZCBub3cgYmUgc2VsZWN0ZWRcbiAgICAgIGlmIChpc1NlbGVjdEFsbENvbWJvKGV2ZW50KSkge1xuICAgICAgICAvLyBUaGlzIHN0b3BzIHRoZSBicm93c2VyIGZyb20gc2VsZWN0aW5nIGFueXRoaW5nXG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmIChzZWFyY2hJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgLy8gVGhpcyBzZWxlY3RzIHRoZSB0ZXh0IGluIHRoZSBzZWFyY2ggaW5wdXRcbiAgICAgICAgICBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNldFNlbGVjdGlvblJhbmdlKDAsIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF2b2lkIGludGVyZmVyaW5nIHdpdGggb3RoZXIga2V5IGNvbWJpbmF0aW9ucyB1c2luZyBtb2RpZmllciBrZXlzXG4gICAgICBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQubWV0YUtleSlcbiAgICAgICAgcmV0dXJuO1xuICAgICAgaWYgKGlzQ2xvc2VDb21ibyhldmVudCkpIHJldHVybjtcblxuICAgICAgLy8gc2tpcCBuZXh0IG1vdXNlRW50ZXIgdG8gYXZvaWQgc2V0dGluZyBzZWxlY3RlZFJlc3VsdCB3aGVuIGN1cnNvciBqdXN0XG4gICAgICAvLyBoYXBwZW5zIHRvIGJlIHdoZXJlIHRoZSByZXN1bHRzIHdpbGwgcG9wIHVwXG4gICAgICBza2lwTmV4dFNlbGVjdGlvbi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICAgICAgLy8gcHJldmVudCBjdXJzb3IgZnJvbSBqdW1waW5nIHRvIGVuZCBvZiB0ZXh0IGlucHV0XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGRpc3BhdGNoKHsgdHlwZTogJ2luY3JlbWVudFNlbGVjdGVkUmVzdWx0JyB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgIC8vIGJyb3dzZSB0aHJvdWdoIGhpc3RvcnlcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSAwIHx8XG4gICAgICAgICAgKHN0YXRlLnNlbGVjdGVkUmVzdWx0IDwgMSAmJiBzdGF0ZS5lbmFibGVIaXN0b3J5KVxuICAgICAgICApIHtcbiAgICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRJbmRleCA9XG4gICAgICAgICAgICBzdGF0ZS5zZWFyY2hUZXh0Lmxlbmd0aCA9PT0gMFxuICAgICAgICAgICAgICA/IC8vIFdoZW4gZ29pbmcgYmFjayB0aGUgZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIDogLy8gV2hlbiBnb2luZyBiYWNrIG1vcmUgdGhhbiBvbmUgc3RlcFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzLmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAgIChjb21tYW5kKSA9PiBjb21tYW5kLnNlYXJjaFRleHQgPT09IHN0YXRlLnNlYXJjaFRleHRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIC8vIFBpY2sgdGhlIHByZXZpb3VzIGNvbW1hbmQgZnJvbSB0aGUgaGlzdG9yeVxuICAgICAgICAgIGNvbnN0IHByZXZDb21tYW5kID1cbiAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPT09IC0xXG4gICAgICAgICAgICAgID8gLy8gcHJldmlvdXMgY29tbWFuZCBvbiB0b3Agb2YgdGhlIGhpc3Rvcnkgd2hlbiBnb2luZyBiYWNrIG9uXG4gICAgICAgICAgICAgICAgLy8gZmlyc3Qgc3RlcFxuICAgICAgICAgICAgICAgIGxhc3QocHJvcHMuaGlzdG9yeUVudHJpZXMpXG4gICAgICAgICAgICAgIDogLy8gcHJldmlvdXMgY29tbWFuZCBpcyBkZWVwZXIgZG93blxuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGhpc3RvcnkgZG9lcyBub3QgZXhpc3QgKG5lZ2F0aXZlIGluZGV4KSwgdGhlblxuICAgICAgICAgICAgICAgIC8vIHRoaXMgaW1wbGljaXRseSByZXR1cm5zIHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIHByb3BzLmhpc3RvcnlFbnRyaWVzW3NlbGVjdGVkSW5kZXggLSAxXTtcbiAgICAgICAgICAvLyBTa2lwIHdoZW4gbm8gcHJldmlvdXMgZW50cnkgZXhpc3RzIGluIHRoZSBoaXN0b3J5XG4gICAgICAgICAgaWYgKCFwcmV2Q29tbWFuZCkgcmV0dXJuO1xuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdwaWNrQ29tbWFuZEZyb21IaXN0b3J5JyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyB0byBiZWdpbm5pbmcgb2YgdGV4dCBpbnB1dFxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdkZWNyZW1lbnRTZWxlY3RlZFJlc3VsdCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA+IC0xKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1JpZ2h0Jykge1xuICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBzdGF0ZS5yZXN1bHRzW3N0YXRlLnNlbGVjdGVkUmVzdWx0XTtcbiAgICAgICAgICBjb25zdCBzZWFyY2hUZXh0ID0gc3RhdGUuc2VhcmNoVGV4dDtcbiAgICAgICAgICBjb25zdCBpc0N1cnNvckF0RW5kID1cbiAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLmN1cnJlbnQgJiZcbiAgICAgICAgICAgIHN0YXRlLnNlYXJjaFRleHQubGVuZ3RoID09PSBzZWFyY2hJbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0O1xuXG4gICAgICAgICAgY29uc3QgaXNFdmVyeXRoaW5nU2VsZWN0ZWQgPVxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudCAmJlxuICAgICAgICAgICAgc2VhcmNoSW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCA9PT0gMCAmJlxuICAgICAgICAgICAgc3RhdGUuc2VhcmNoVGV4dC5sZW5ndGggPT09IHNlYXJjaElucHV0UmVmLmN1cnJlbnQuc2VsZWN0aW9uRW5kO1xuXG4gICAgICAgICAgLy8gb25seSBhbGxvdyBkaXZpbmcgaW4gd2hlbiBjdXJzb3IgaXMgYXQgZW5kIG9mIGlucHV0IG9yIHdoZW5cbiAgICAgICAgICAvLyB0aGUgY29tcGxldGUgdGV4dCBpcyBzZWxlY3RlZCAod2hlbiBicm93c2luZyB0aHJvdWdoIGhpc3RvcnkpXG4gICAgICAgICAgaWYgKCFpc0N1cnNvckF0RW5kICYmICFpc0V2ZXJ5dGhpbmdTZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IoKTtcblxuICAgICAgICAgIC8vIE5PVEU6IHNpbmNlIHdlIG5lZWQgdG8gZmV0Y2ggdGhlIFwibmV4dCBjb21tYW5kXCIsIHdoaWNoIGlzIGFuIGFzeW5jIG9wZXJhdGlvbixcbiAgICAgICAgICAvLyB3ZSB1c2UgYSBJSUZFIHRvIHByb2Nlc3MgdGhhdCBhbmQgZXZlbnR1YWxseSB1cGRhdGUgdGhlIHN0YXRlLlxuICAgICAgICAgIChhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoY29tbWFuZCkge1xuICAgICAgICAgICAgICBjb25zdCBuZXh0Q29tbWFuZHMgPSBhd2FpdCBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50KGNvbW1hbmQpO1xuICAgICAgICAgICAgICAvLyBhdm9pZCBtb3ZpbmcgY3Vyc29yIHdoZW4gdGhlcmUgYXJlIHN1Yi1vcHRpb25zXG4gICAgICAgICAgICAgIGlmIChuZXh0Q29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgc2VhcmNoIHRleHQgaGFzIG5vdCBjaGFuZ2VkIHdoaWxlIHdlIHdlcmUgbG9hZGluZ1xuICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHJlc3VsdHMsIG90aGVyd2lzZSB3ZSdkIGludGVycnVwdCB0aGUgdXNlci5cbiAgICAgICAgICAgICAgICAvLyBUaHJvdyBhd2F5IHRoZSByZXN1bHRzIGluIGNhc2UgdGhlIHNlYXJjaCB0ZXh0IGhhcyBjaGFuZ2VkLlxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5zZWFyY2hUZXh0ID09PSBzZWFyY2hUZXh0KSB7XG4gICAgICAgICAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6ICdzZXROZXh0Q29tbWFuZHMnLFxuICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiB7IHJlc3VsdHM6IG5leHRDb21tYW5kcyB9LFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2hha2UoKTtcbiAgICAgICAgICB9KSgpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0Jykge1xuICAgICAgICAgIC8vIGdvIGxlZnQgaW4gc3RhY2tcbiAgICAgICAgICBjb25zdCBwcmV2Q29tbWFuZCA9IGxhc3Qoc3RhdGUuc3RhY2spO1xuXG4gICAgICAgICAgLy8gZG8gbm90aGluZyB3aGVuIHdlIGNhbid0IGdvIGxlZnQgYW55bW9yZVxuICAgICAgICAgIGlmICghcHJldkNvbW1hbmQpIHJldHVybjtcblxuICAgICAgICAgIC8vIHByZXZlbnQgY3Vyc29yIGZyb20ganVtcGluZyBhIGNoYXIgdG8gdGhlIGxlZnQgaW4gdGV4dCBpbnB1dFxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICBkaXNwYXRjaCh7XG4gICAgICAgICAgICB0eXBlOiAnc2V0UHJldkNvbW1hbmRzJyxcbiAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgc2VhcmNoVGV4dDogcHJldkNvbW1hbmQuc2VhcmNoVGV4dCxcbiAgICAgICAgICAgICAgcmVzdWx0czogcHJldkNvbW1hbmQucmVzdWx0cyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICBnZXROZXh0Q29tbWFuZHNGcm9tUGFyZW50LFxuICAgICAgcHJvcHMuaGlzdG9yeUVudHJpZXMsXG4gICAgICBzaGFrZSxcbiAgICAgIHN0YXRlLFxuICAgICAgdW5zZXRIYXNOZXR3b3JrRXJyb3IsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVLZXlVcCA9IHVzZUNhbGxiYWNrPEtleWJvYXJkRXZlbnRIYW5kbGVyPEhUTUxJbnB1dEVsZW1lbnQ+PihcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIC8vIHNldHRpbmcgdGhlIHNlbGVjdGlvbiBjYW4gb25seSBoYXBwZW4gaW4gb25LZXlVcFxuICAgICAgaWYgKHNob3VsZFNlbGVjdEZpZWxkVGV4dC5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgICAgIGlucHV0LnNlbGVjdCgpO1xuICAgICAgICBzaG91bGRTZWxlY3RGaWVsZFRleHQuY3VycmVudCA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAoZXZlbnQua2V5ICE9PSAnRW50ZXInICYmICFpc05ld1dpbmRvd0NvbWJvLmN1cnJlbnQpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGp1c3QgdHJpZ2dlcmVkIHRoZSBzZWFyY2hcbiAgICAgIGlmIChzdGF0ZS5zZWxlY3RlZFJlc3VsdCA9PT0gLTEpIHJldHVybiB0cnVlO1xuXG4gICAgICAvLyBVc2VyIGhhZCBzb21ldGhpbmcgc2VsZWN0ZWQgYW5kIHdhbnRzIHRvIGdvIHRoZXJlXG4gICAgICBleGVjdXRlKHN0YXRlLnJlc3VsdHNbc3RhdGUuc2VsZWN0ZWRSZXN1bHRdLCB7XG4gICAgICAgIG9wZW5Jbk5ld1RhYjogaXNOZXdXaW5kb3dDb21iby5jdXJyZW50LFxuICAgICAgfSk7XG5cbiAgICAgIGlzTmV3V2luZG93Q29tYm8uY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSxcbiAgICBbZXhlY3V0ZSwgc3RhdGUucmVzdWx0cywgc3RhdGUuc2VsZWN0ZWRSZXN1bHRdXG4gICk7XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrPENoYW5nZUV2ZW50SGFuZGxlcjxIVE1MSW5wdXRFbGVtZW50Pj4oXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzZWFyY2hUZXh0ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgICAgaWYgKHNlYXJjaFRleHQudHJpbSgpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldCcgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZGlzcGF0Y2goeyB0eXBlOiAnc2VhcmNoVGV4dCcsIHBheWxvYWQ6IHNlYXJjaFRleHQgfSk7XG5cbiAgICAgIC8vIEEgc2VhcmNoIHZpYSBuZXR3b3JrIGlzIG9ubHkgdHJpZ2dlcmVkIHdoZW4gdGhlcmVcbiAgICAgIC8vIGFyZSBtb3JlIHRoYW4gdGhyZWUgY2hhcmFjdGVycy4gU28gbm8gZmFsc2UgbG9hZGluZ1xuICAgICAgLy8gaW5kaWNhdGlvbiBpcyBnaXZlbi5cbiAgICAgIGlmIChzZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAzKSB7XG4gICAgICAgIHNldElzTG9hZGluZygpO1xuICAgICAgfVxuXG4gICAgICBzZWFyY2hGcm9tUGFyZW50KHNlYXJjaFRleHQpLnRoZW4oXG4gICAgICAgIChhc3luY1Jlc3VsdHM6IENvbW1hbmRbXSkgPT4ge1xuICAgICAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yKCk7XG4gICAgICAgICAgdW5zZXRJc0xvYWRpbmcoKTtcblxuICAgICAgICAgIGNvbnN0IGZ1c2UgPSBuZXcgRnVzZShhc3luY1Jlc3VsdHMsIHtcbiAgICAgICAgICAgIGtleXM6IFtcbiAgICAgICAgICAgICAgeyBuYW1lOiAndGV4dCcsIHdlaWdodDogMC42IH0sXG4gICAgICAgICAgICAgIHsgbmFtZTogJ2tleXdvcmRzJywgd2VpZ2h0OiAwLjQgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBtaW5NYXRjaENoYXJMZW5ndGg6IDIsXG4gICAgICAgICAgICBpbmNsdWRlU2NvcmU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBzZWFyY2hSZXN1bHRzID0gZnVzZVxuICAgICAgICAgICAgLnNlYXJjaChzZWFyY2hUZXh0KVxuICAgICAgICAgICAgLy8gRmlsdGVyIG91dCByZXN1bHRzIHdpdGggYSBtYXRjaGluZyBzY29yZSBvdmVyIDAuNzVcbiAgICAgICAgICAgIC5maWx0ZXIoKHJlc3VsdCkgPT4gKHJlc3VsdC5zY29yZSA/IHJlc3VsdC5zY29yZSA8IDAuNzUgOiBmYWxzZSkpXG4gICAgICAgICAgICAvLyBLZWVwIGEgbWF4aW1hbCBvZiA5IHJlc3VsdHNcbiAgICAgICAgICAgIC5zbGljZSgwLCA5KTtcblxuICAgICAgICAgIGRpc3BhdGNoKHtcbiAgICAgICAgICAgIHR5cGU6ICdzZXRTZWFyY2hUZXh0UmVzdWx0cycsXG4gICAgICAgICAgICBwYXlsb2FkOiBzZWFyY2hSZXN1bHRzLm1hcCgocmVzdWx0KSA9PiByZXN1bHQuaXRlbSksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB1bnNldElzTG9hZGluZygpO1xuICAgICAgICAgIHNldEhhc05ldHdvcmtFcnJvcigpO1xuICAgICAgICB9XG4gICAgICApO1xuICAgIH0sXG4gICAgW1xuICAgICAgc2VhcmNoRnJvbVBhcmVudCxcbiAgICAgIHNldEhhc05ldHdvcmtFcnJvcixcbiAgICAgIHNldElzTG9hZGluZyxcbiAgICAgIHVuc2V0SGFzTmV0d29ya0Vycm9yLFxuICAgICAgdW5zZXRJc0xvYWRpbmcsXG4gICAgXVxuICApO1xuICBjb25zdCBoYW5kbGVDb250YWluZXJDbGljayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBkaXNwYXRjaCh7IHR5cGU6ICdyZXNldFJlc3VsdHNXaGVuQ2xvc2luZycgfSk7XG4gICAgb25DbG9zZUZyb21QYXJlbnQoKTtcbiAgfSwgW29uQ2xvc2VGcm9tUGFyZW50XSk7XG5cbiAgY29uc3QgY3JlYXRlQ29tbWFuZE1vdXNlRW50ZXJIYW5kbGVyID0gdXNlQ2FsbGJhY2s8XG4gICAgKGluZGV4OiBudW1iZXIpID0+IE1vdXNlRXZlbnRIYW5kbGVyPEhUTUxEaXZFbGVtZW50PlxuICA+KFxuICAgIChpbmRleCkgPT4gKCkgPT4ge1xuICAgICAgLy8gSW4gY2FzZSB0aGUgY3Vyc29yIGhhcHBlbmVkIHRvIGJlIGluIGEgbG9jYXRpb24gd2hlcmUgYVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGFwcGVhciwgaXQgd291bGQgdHJpZ2dlciBvbk1vdXNlRW50ZXIgYW5kIHRoZVxuICAgICAgLy8gcmVzdWx0IHdvdWxkIGJlIHNlbGVjdGVkIGltbWVkaWF0ZWx5LiBUaGlzIGlzIG5vdCBzb21ldGhpbmdcbiAgICAgIC8vIGEgdXNlciB3b3VsZCBleHBlY3QsIGhlbmNlIHdlIHByZXZlbnQgaXQgZnJvbSBoYXBwZW5pbmcuXG4gICAgICAvLyBUaGUgdXNlciBoYXMgdG8gbW92ZSB0aGUgY3Vyc29yIHRvIGFuIG9wdGlvbiBleHBsaWNpdGx5IGZvclxuICAgICAgLy8gaXQgdG8gYmVjb21lIGFjdGl2ZS4gSG93ZXZlciwgdGhlIHVzZXIgY2FuIGFsd2F5cyBjbGljayBhbmRcbiAgICAgIC8vIHRoYXQgYWN0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuICAgICAgaWYgKHNraXBOZXh0U2VsZWN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcE5leHRTZWxlY3Rpb24uY3VycmVudCA9IGZhbHNlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIHNldHMgdGhlIHNlbGVjdGVkIHJlc3VsdCwgbWFpbmx5IGZvciB0aGUgaG92ZXIgZWZmZWN0XG4gICAgICBkaXNwYXRjaCh7IHR5cGU6ICdzZWxlY3RlZFJlc3VsdCcsIHBheWxvYWQ6IGluZGV4IH0pO1xuICAgIH0sXG4gICAgW11cbiAgKTtcbiAgY29uc3QgY3JlYXRlQ29tbWFuZENsaWNrSGFuZGxlciA9IHVzZUNhbGxiYWNrPFxuICAgIChjb21tYW5kOiBDb21tYW5kKSA9PiBNb3VzZUV2ZW50SGFuZGxlcjxIVE1MRGl2RWxlbWVudD5cbiAgPihcbiAgICAoY29tbWFuZCkgPT4gKGV2ZW50KSA9PiB7XG4gICAgICBleGVjdXRlKGNvbW1hbmQsIHtcbiAgICAgICAgb3BlbkluTmV3VGFiOiBoYXNOZXdXaW5kb3dNb2RpZmllcihldmVudCksXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtleGVjdXRlXVxuICApO1xuXG4gIHJldHVybiAoXG4gICAgPEJ1dGxlckNvbnRhaW5lclxuICAgICAgb25DbGljaz17aGFuZGxlQ29udGFpbmVyQ2xpY2t9XG4gICAgICBkYXRhLXRlc3RpZD1cInF1aWNrLWFjY2Vzc1wiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICByZWY9e3NlYXJjaENvbnRhaW5lclJlZn1cbiAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHt1aUtpdERlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiAke3VpS2l0RGVzaWduVG9rZW5zLmJvcmRlclJhZGl1czR9O1xuICAgICAgICAgIG1pbi1oZWlnaHQ6IDQwcHg7XG5cbiAgICAgICAgICAvKiBvbmUgbW9yZSB0aGFuIGFwcC1iYXIgKDIwMDAwKSBhbmQgb25lIG1vcmUgdGhhbiB0aGUgb3ZlcmxheSAoMjAwMDEpICovXG4gICAgICAgICAgei1pbmRleDogMjAwMDI7XG4gICAgICAgICAgd2lkdGg6IDQwMHB4O1xuICAgICAgICAgIG1hcmdpbjogNDBweCBhdXRvO1xuICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDEwcHggMzBweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC43NSk7XG4gICAgICAgICAgLW1vei1ib3gtc2hhZG93OiAwIDEwcHggMzBweCAtOHB4IHJnYmEoMCwgMCwgMCwgMC43NSk7XG4gICAgICAgICAgYm94LXNoYWRvdzogMCAxMHB4IDMwcHggLThweCByZ2JhKDAsIDAsIDAsIDAuNzUpO1xuICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAke3N0YXRlLmhhc05ldHdvcmtFcnJvclxuICAgICAgICAgICAgPyAnMCdcbiAgICAgICAgICAgIDogdWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ1N9O1xuICAgICAgICBgfVxuICAgICAgICBvbkNsaWNrPXsoZXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBBdm9pZCBjbG9zaW5nIHdoZW4gdGhlIHNlYXJjaENvbnRhaW5lciBpdHNlbGYgaXMgY2xpY2tlZFxuICAgICAgICAgIC8vIElmIHdlIGRvbid0IGRvIHRoaXMsIHRoZW4gdGhlIG92ZXJsYXkgd2lsbCBjbG9zZSB3aGVuIGUuZy5cbiAgICAgICAgICAvLyB0aGUgc2VhcmNoIGlucHV0IGlzIGNsaWNrZWQuXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgICBgfVxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICBodG1sRm9yPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgICBjc3M9e2Nzc2BcbiAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ019O1xuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAke3VpS2l0RGVzaWduVG9rZW5zLnNwYWNpbmdTfTtcbiAgICAgICAgICAgIGB9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFNlYXJjaEljb24gY29sb3I9XCJuZXV0cmFsNjBcIiAvPlxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBpZD1cInF1aWNrLWFjY2Vzcy1zZWFyY2gtaW5wdXRcIlxuICAgICAgICAgICAgcmVmPXtzZWFyY2hJbnB1dFJlZn1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpbnRsLmZvcm1hdE1lc3NhZ2UobWVzc2FnZXMuaW5wdXRQbGFjZWhvZGVyKX1cbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICAgICAgICBvdXRsaW5lOiAwO1xuICAgICAgICAgICAgICBmb250LXNpemU6IDIycHg7XG4gICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgICAgICAgICAgIHBhZGRpbmc6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ019XG4gICAgICAgICAgICAgICAgJHt1aUtpdERlc2lnblRva2Vucy5zcGFjaW5nTX0gJHt1aUtpdERlc2lnblRva2Vucy5zcGFjaW5nU31cbiAgICAgICAgICAgICAgICAke3VpS2l0RGVzaWduVG9rZW5zLnNwYWNpbmdTfTtcbiAgICAgICAgICAgICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAke3VpS2l0RGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbDYwfTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgYH1cbiAgICAgICAgICAgIHZhbHVlPXtzdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgIG9uS2V5VXA9e2hhbmRsZUtleVVwfVxuICAgICAgICAgICAgYXV0b0ZvY3VzPXt0cnVlfVxuICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwicXVpY2stYWNjZXNzLXNlYXJjaC1pbnB1dFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICB7c3RhdGUuaXNMb2FkaW5nICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ1N9O1xuICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogJHt1aUtpdERlc2lnblRva2Vucy5zcGFjaW5nU307XG4gICAgICAgICAgICAgIGB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxMb2FkaW5nU3Bpbm5lciAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgIGlmIChzdGF0ZS5oYXNOZXR3b3JrRXJyb3IpXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY3NzPXtjc3NgXG4gICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICR7dWlLaXREZXNpZ25Ub2tlbnMuY29sb3JFcnJvcn07XG4gICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgICAgY29sb3I6ICR7dWlLaXREZXNpZ25Ub2tlbnMuY29sb3JTdXJmYWNlfTtcbiAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogJHt1aUtpdERlc2lnblRva2Vucy5mb250U2l6ZTIwfTtcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICR7dWlLaXREZXNpZ25Ub2tlbnMuc3BhY2luZ1hzfTtcbiAgICAgICAgICAgICAgICBgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1hdHRlZE1lc3NhZ2Ugey4uLm1lc3NhZ2VzLm9mZmxpbmV9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5yZXN1bHRzLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5zZWFyY2hUZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNzcz17Y3NzYFxuICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAke3VpS2l0RGVzaWduVG9rZW5zLmNvbG9yTmV1dHJhbH07XG4gICAgICAgICAgICAgICAgICBjb2xvcjogJHt1aUtpdERlc2lnblRva2Vucy5jb2xvclNvbGlkfTtcbiAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICAgICAgICBmb250LXNpemU6ICR7dWlLaXREZXNpZ25Ub2tlbnMuZm9udFNpemUyMH07XG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAke3VpS2l0RGVzaWduVG9rZW5zLnNwYWNpbmdYc307XG4gICAgICAgICAgICAgICAgYH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtYXR0ZWRNZXNzYWdlIHsuLi5tZXNzYWdlcy5ub1Jlc3VsdHN9IC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIHJldHVybiBzdGF0ZS5yZXN1bHRzLm1hcCgoY29tbWFuZCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxCdXRsZXJDb21tYW5kXG4gICAgICAgICAgICAgIGtleT17Y29tbWFuZC5pZH1cbiAgICAgICAgICAgICAgY29tbWFuZD17Y29tbWFuZH1cbiAgICAgICAgICAgICAgaXNTZWxlY3RlZD17c3RhdGUuc2VsZWN0ZWRSZXN1bHQgPT09IGluZGV4fVxuICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9e2NyZWF0ZUNvbW1hbmRNb3VzZUVudGVySGFuZGxlcihpbmRleCl9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2NyZWF0ZUNvbW1hbmRDbGlja0hhbmRsZXIoY29tbWFuZCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpO1xuICAgICAgICB9KSgpfVxuICAgICAgPC9kaXY+XG4gICAgPC9CdXRsZXJDb250YWluZXI+XG4gICk7XG59O1xuQnV0bGVyLmRpc3BsYXlOYW1lID0gJ0J1dGxlcic7XG5cbmNvbnN0IEJ1dGxlcldpdGhBbmltYXRpb24gPSAocHJvcHM6IE9taXQ8UHJvcHMsICdjbGFzc05hbWVTaGFrZUFuaW1hdGlvbic+KSA9PiAoXG4gIDxDbGFzc05hbWVzPlxuICAgIHsoeyBjc3MgfSkgPT4gKFxuICAgICAgPEJ1dGxlclxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGNsYXNzTmFtZVNoYWtlQW5pbWF0aW9uPXtjc3NgXG4gICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjQ1cztcbiAgICAgICAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xuICAgICAgICAgIGFuaW1hdGlvbi1uYW1lOiAke3NoYWtlQW5pbWF0aW9ufTtcbiAgICAgICAgYH1cbiAgICAgIC8+XG4gICAgKX1cbiAgPC9DbGFzc05hbWVzPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgQnV0bGVyV2l0aEFuaW1hdGlvbjtcbiJdfQ== */",
559
556
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
560
557
  };
561
558
  const Butler = props => {
@@ -13,7 +13,7 @@ var reactRouterDom = require('react-router-dom');
13
13
  var constants = require('@commercetools-frontend/constants');
14
14
  var useIsServedByProxy = require('./use-is-served-by-proxy-28f19a6f.cjs.dev.js');
15
15
  var getMcOrigin = require('./get-mc-origin-a86dff20.cjs.dev.js');
16
- var dist_commercetoolsFrontendApplicationShell = require('./index-514ff122.cjs.dev.js');
16
+ var dist_commercetoolsFrontendApplicationShell = require('./index-c1ab39be.cjs.dev.js');
17
17
  var redirector = require('./redirector-98dfc5f0.cjs.dev.js');
18
18
  var jsxRuntime = require('@emotion/react/jsx-runtime');
19
19
  require('@commercetools-frontend/application-shell-connectors');
@@ -22,7 +22,7 @@ require('@babel/runtime-corejs3/core-js-stable/url');
22
22
  require('@babel/runtime-corejs3/core-js-stable/instance/reverse');
23
23
  require('prop-types');
24
24
  require('react');
25
- require('./index-b1476d46.cjs.dev.js');
25
+ require('./index-0459c0f4.cjs.dev.js');
26
26
  require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
27
27
  require('@babel/runtime-corejs3/core-js-stable/object/entries');
28
28
  require('@babel/runtime-corejs3/core-js-stable/reflect/has');
@@ -11,7 +11,7 @@ import { useLocation } from 'react-router-dom';
11
11
  import { LOGOUT_REASONS } from '@commercetools-frontend/constants';
12
12
  import { u as useIsServedByProxy } from './use-is-served-by-proxy-a383da4b.esm.js';
13
13
  import { g as getMcOrigin } from './get-mc-origin-fecfee07.esm.js';
14
- import { R as RedirectToLogin } from './index-6172ab5f.esm.js';
14
+ import { R as RedirectToLogin } from './index-c87bac8c.esm.js';
15
15
  import { R as Redirector } from './redirector-76670a54.esm.js';
16
16
  import { jsx } from '@emotion/react/jsx-runtime';
17
17
  import '@commercetools-frontend/application-shell-connectors';
@@ -20,7 +20,7 @@ import '@babel/runtime-corejs3/core-js-stable/url';
20
20
  import '@babel/runtime-corejs3/core-js-stable/instance/reverse';
21
21
  import 'prop-types';
22
22
  import 'react';
23
- import './index-b6081c20.esm.js';
23
+ import './index-a5d2d010.esm.js';
24
24
  import '@babel/runtime-corejs3/core-js-stable/instance/reduce';
25
25
  import '@babel/runtime-corejs3/core-js-stable/object/entries';
26
26
  import '@babel/runtime-corejs3/core-js-stable/reflect/has';
@@ -13,7 +13,7 @@ var reactRouterDom = require('react-router-dom');
13
13
  var constants = require('@commercetools-frontend/constants');
14
14
  var useIsServedByProxy = require('./use-is-served-by-proxy-480e8de8.cjs.prod.js');
15
15
  var getMcOrigin = require('./get-mc-origin-8f7a578c.cjs.prod.js');
16
- var dist_commercetoolsFrontendApplicationShell = require('./index-c64b43a5.cjs.prod.js');
16
+ var dist_commercetoolsFrontendApplicationShell = require('./index-c915c7df.cjs.prod.js');
17
17
  var redirector = require('./redirector-01f35da8.cjs.prod.js');
18
18
  var jsxRuntime = require('@emotion/react/jsx-runtime');
19
19
  require('@commercetools-frontend/application-shell-connectors');
@@ -22,7 +22,7 @@ require('@babel/runtime-corejs3/core-js-stable/url');
22
22
  require('@babel/runtime-corejs3/core-js-stable/instance/reverse');
23
23
  require('prop-types');
24
24
  require('react');
25
- require('./index-91985d64.cjs.prod.js');
25
+ require('./index-b76590b3.cjs.prod.js');
26
26
  require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
27
27
  require('@babel/runtime-corejs3/core-js-stable/object/entries');
28
28
  require('@babel/runtime-corejs3/core-js-stable/reflect/has');
@@ -13,12 +13,12 @@ var ReactDOM = require('react-dom');
13
13
  var reactIntl = require('react-intl');
14
14
  var reactRedux = require('react-redux');
15
15
  var LoadingSpinner = require('@commercetools-uikit/loading-spinner');
16
- var dist_commercetoolsFrontendApplicationShell = require('./index-514ff122.cjs.dev.js');
16
+ var dist_commercetoolsFrontendApplicationShell = require('./index-c1ab39be.cjs.dev.js');
17
17
  var jsxRuntime = require('@emotion/react/jsx-runtime');
18
18
  require('prop-types');
19
19
  require('react');
20
20
  require('react-router-dom');
21
- require('./index-b1476d46.cjs.dev.js');
21
+ require('./index-0459c0f4.cjs.dev.js');
22
22
  require('@babel/runtime-corejs3/helpers/slicedToArray');
23
23
  require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
24
24
  require('@babel/runtime-corejs3/core-js-stable/object/entries');
@@ -11,12 +11,12 @@ import ReactDOM from 'react-dom';
11
11
  import { defineMessages, FormattedMessage } from 'react-intl';
12
12
  import { useSelector } from 'react-redux';
13
13
  import LoadingSpinner from '@commercetools-uikit/loading-spinner';
14
- import { c as REQUESTS_IN_FLIGHT_LOADER_DOM_ID } from './index-6172ab5f.esm.js';
14
+ import { c as REQUESTS_IN_FLIGHT_LOADER_DOM_ID } from './index-c87bac8c.esm.js';
15
15
  import { jsx } from '@emotion/react/jsx-runtime';
16
16
  import 'prop-types';
17
17
  import 'react';
18
18
  import 'react-router-dom';
19
- import './index-b6081c20.esm.js';
19
+ import './index-a5d2d010.esm.js';
20
20
  import '@babel/runtime-corejs3/helpers/slicedToArray';
21
21
  import '@babel/runtime-corejs3/core-js-stable/instance/reduce';
22
22
  import '@babel/runtime-corejs3/core-js-stable/object/entries';
@@ -13,12 +13,12 @@ var ReactDOM = require('react-dom');
13
13
  var reactIntl = require('react-intl');
14
14
  var reactRedux = require('react-redux');
15
15
  var LoadingSpinner = require('@commercetools-uikit/loading-spinner');
16
- var dist_commercetoolsFrontendApplicationShell = require('./index-c64b43a5.cjs.prod.js');
16
+ var dist_commercetoolsFrontendApplicationShell = require('./index-c915c7df.cjs.prod.js');
17
17
  var jsxRuntime = require('@emotion/react/jsx-runtime');
18
18
  require('prop-types');
19
19
  require('react');
20
20
  require('react-router-dom');
21
- require('./index-91985d64.cjs.prod.js');
21
+ require('./index-b76590b3.cjs.prod.js');
22
22
  require('@babel/runtime-corejs3/helpers/slicedToArray');
23
23
  require('@babel/runtime-corejs3/core-js-stable/instance/reduce');
24
24
  require('@babel/runtime-corejs3/core-js-stable/object/entries');
@@ -3,7 +3,7 @@
3
3
  var _styled = require('@emotion/styled/base');
4
4
  var reactRouterDom = require('react-router-dom');
5
5
  var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
6
- var dist_commercetoolsFrontendApplicationShell = require('./index-c64b43a5.cjs.prod.js');
6
+ var dist_commercetoolsFrontendApplicationShell = require('./index-c915c7df.cjs.prod.js');
7
7
  var jsxRuntime = require('@emotion/react/jsx-runtime');
8
8
 
9
9
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
@@ -3,7 +3,7 @@
3
3
  var _styled = require('@emotion/styled/base');
4
4
  var reactRouterDom = require('react-router-dom');
5
5
  var applicationShellConnectors = require('@commercetools-frontend/application-shell-connectors');
6
- var dist_commercetoolsFrontendApplicationShell = require('./index-514ff122.cjs.dev.js');
6
+ var dist_commercetoolsFrontendApplicationShell = require('./index-c1ab39be.cjs.dev.js');
7
7
  var jsxRuntime = require('@emotion/react/jsx-runtime');
8
8
 
9
9
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
@@ -21,8 +21,7 @@ const Container = /*#__PURE__*/_styled__default["default"]("div", process.env.NO
21
21
  styles: "width:200px;text-align:left;margin:0 auto"
22
22
  } : {
23
23
  name: "no8ssc",
24
- styles: "width:200px;text-align:left;margin:0 auto",
25
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNlcnZpY2UtcGFnZS1wcm9qZWN0LXN3aXRjaGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTNEIiLCJmaWxlIjoic2VydmljZS1wYWdlLXByb2plY3Qtc3dpdGNoZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgdXNlUGFyYW1zIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgeyB1c2VBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1zaGVsbC1jb25uZWN0b3JzJztcbmltcG9ydCBQcm9qZWN0U3dpdGNoZXIgZnJvbSAnLi4vcHJvamVjdC1zd2l0Y2hlcic7XG5cbnR5cGUgUGFyYW1zID0ge1xuICBwcm9qZWN0S2V5OiBzdHJpbmc7XG59O1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMjAwcHg7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIG1hcmdpbjogMCBhdXRvO1xuYDtcblxuZXhwb3J0IGNvbnN0IFNlcnZpY2VQYWdlUHJvamVjdFN3aXRjaGVyID0gKCkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSB1c2VQYXJhbXM8UGFyYW1zPigpO1xuICBjb25zdCBudW1iZXJPZlByb2plY3RzID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiAoY29udGV4dC51c2VyICYmIGNvbnRleHQudXNlci5wcm9qZWN0cy50b3RhbCkgfHwgMFxuICApO1xuICBpZiAobnVtYmVyT2ZQcm9qZWN0cyA9PT0gMCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lcj5cbiAgICAgIDxQcm9qZWN0U3dpdGNoZXJcbiAgICAgICAgLy8gSW4gdGhpcyBjYXNlIGl0J3Mgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBpZiB0aGUgYHByb2plY3RLZXlgIHBhcmFtXG4gICAgICAgIC8vIGlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHByb2plY3RzLiBJbiBzdWNoIGNhc2VcbiAgICAgICAgLy8gdGhlIGRyb3Bkb3duIHdpbGwgc3RpbGwgYmUgcmVuZGVyZWQgYnV0IG5vIHByb2plY3Qgd2lsbCBiZSBzZWxlY3RlZC5cbiAgICAgICAgLy8gVGhpcyBpcyBmaW5lIGJlY2FzZSB0aGUgdXNlciBoYXMgc3RpbGwgdGhlIHBvc3NpYmlsaXR5IHRvIFwic3dpdGNoXCJcbiAgICAgICAgLy8gdG8gYSBwcm9qZWN0LlxuICAgICAgICBwcm9qZWN0S2V5PXtwYXJhbXMucHJvamVjdEtleX1cbiAgICAgIC8+XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuU2VydmljZVBhZ2VQcm9qZWN0U3dpdGNoZXIuZGlzcGxheU5hbWUgPSAnU2VydmljZVBhZ2VQcm9qZWN0U3dpdGNoZXInO1xuXG5leHBvcnQgZGVmYXVsdCBTZXJ2aWNlUGFnZVByb2plY3RTd2l0Y2hlcjtcbiJdfQ== */",
24
+ styles: "width:200px;text-align:left;margin:0 auto/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNlcnZpY2UtcGFnZS1wcm9qZWN0LXN3aXRjaGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFTNEIiLCJmaWxlIjoic2VydmljZS1wYWdlLXByb2plY3Qtc3dpdGNoZXIudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgdXNlUGFyYW1zIH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQgeyB1c2VBcHBsaWNhdGlvbkNvbnRleHQgfSBmcm9tICdAY29tbWVyY2V0b29scy1mcm9udGVuZC9hcHBsaWNhdGlvbi1zaGVsbC1jb25uZWN0b3JzJztcbmltcG9ydCBQcm9qZWN0U3dpdGNoZXIgZnJvbSAnLi4vcHJvamVjdC1zd2l0Y2hlcic7XG5cbnR5cGUgUGFyYW1zID0ge1xuICBwcm9qZWN0S2V5OiBzdHJpbmc7XG59O1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICB3aWR0aDogMjAwcHg7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIG1hcmdpbjogMCBhdXRvO1xuYDtcblxuZXhwb3J0IGNvbnN0IFNlcnZpY2VQYWdlUHJvamVjdFN3aXRjaGVyID0gKCkgPT4ge1xuICBjb25zdCBwYXJhbXMgPSB1c2VQYXJhbXM8UGFyYW1zPigpO1xuICBjb25zdCBudW1iZXJPZlByb2plY3RzID0gdXNlQXBwbGljYXRpb25Db250ZXh0KFxuICAgIChjb250ZXh0KSA9PiAoY29udGV4dC51c2VyICYmIGNvbnRleHQudXNlci5wcm9qZWN0cy50b3RhbCkgfHwgMFxuICApO1xuICBpZiAobnVtYmVyT2ZQcm9qZWN0cyA9PT0gMCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lcj5cbiAgICAgIDxQcm9qZWN0U3dpdGNoZXJcbiAgICAgICAgLy8gSW4gdGhpcyBjYXNlIGl0J3Mgbm90IG5lY2Vzc2FyeSB0byBjaGVjayBpZiB0aGUgYHByb2plY3RLZXlgIHBhcmFtXG4gICAgICAgIC8vIGlzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIHByb2plY3RzLiBJbiBzdWNoIGNhc2VcbiAgICAgICAgLy8gdGhlIGRyb3Bkb3duIHdpbGwgc3RpbGwgYmUgcmVuZGVyZWQgYnV0IG5vIHByb2plY3Qgd2lsbCBiZSBzZWxlY3RlZC5cbiAgICAgICAgLy8gVGhpcyBpcyBmaW5lIGJlY2FzZSB0aGUgdXNlciBoYXMgc3RpbGwgdGhlIHBvc3NpYmlsaXR5IHRvIFwic3dpdGNoXCJcbiAgICAgICAgLy8gdG8gYSBwcm9qZWN0LlxuICAgICAgICBwcm9qZWN0S2V5PXtwYXJhbXMucHJvamVjdEtleX1cbiAgICAgIC8+XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuU2VydmljZVBhZ2VQcm9qZWN0U3dpdGNoZXIuZGlzcGxheU5hbWUgPSAnU2VydmljZVBhZ2VQcm9qZWN0U3dpdGNoZXInO1xuXG5leHBvcnQgZGVmYXVsdCBTZXJ2aWNlUGFnZVByb2plY3RTd2l0Y2hlcjtcbiJdfQ== */",
26
25
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
27
26
  });
28
27
  const ServicePageProjectSwitcher = () => {