nuxeo-development-framework 0.0.2 → 0.0.6

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 (433) hide show
  1. package/README.md +24 -24
  2. package/bundles/nuxeo-development-framework.umd.js +18534 -50
  3. package/bundles/nuxeo-development-framework.umd.js.map +1 -1
  4. package/esm2015/lib/Core/adapters/adapter.service.js +50 -0
  5. package/esm2015/lib/Core/core.module.js +104 -0
  6. package/esm2015/lib/Core/enums/language.enum.js +6 -0
  7. package/esm2015/lib/Core/models/component.model.js +8 -0
  8. package/esm2015/lib/Core/services/callApi/call-api.service.js +33 -0
  9. package/esm2015/lib/Core/services/initialization/initialization.service.js +57 -0
  10. package/esm2015/lib/Core/services/localStorag/local-storag.service.js +123 -0
  11. package/esm2015/lib/Core/services/nuxeo/nuxeo-override.js +82 -0
  12. package/esm2015/lib/Core/services/nuxeo/nuxeo.service.js +120 -0
  13. package/esm2015/lib/Core/services/roles/roles.service.js +103 -0
  14. package/esm2015/lib/Core/services/translation/translate-loader.service.js +150 -0
  15. package/esm2015/lib/Core/services/translation/translation.service.js +171 -0
  16. package/esm2015/lib/Core/services/user/user-preferences.service.js +153 -0
  17. package/esm2015/lib/Core/utilities/moment-date-adapter.js +178 -0
  18. package/esm2015/lib/Core/utilities/utility.service.js +81 -0
  19. package/esm2015/lib/components/activity/activity/activity.component.js +28 -0
  20. package/esm2015/lib/components/activity/activity.module.js +37 -0
  21. package/esm2015/lib/components/avatar/avatar/avatar.component.js +55 -0
  22. package/esm2015/lib/components/avatar/avatar.module.js +32 -0
  23. package/esm2015/lib/components/card/card.component.js +48 -0
  24. package/esm2015/lib/components/card/card.module.js +23 -0
  25. package/esm2015/lib/components/comments/comments.module.js +76 -0
  26. package/esm2015/lib/components/comments/components/comment-item/comment-item.component.js +33 -0
  27. package/esm2015/lib/components/comments/components/comments-dashlet/comments-dashlet.component.js +78 -0
  28. package/esm2015/lib/components/comments/components/comments-list/comments-list.component.js +68 -0
  29. package/esm2015/lib/components/comments/constants/comment.js +25 -0
  30. package/esm2015/lib/components/comments/services/comment-api.service.js +49 -0
  31. package/esm2015/lib/components/confirm-caller/confirm-caller.dialog.js +73 -0
  32. package/esm2015/lib/components/confirm-caller/confirm-caller.module.js +27 -0
  33. package/esm2015/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.js +29 -0
  34. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.js +134 -0
  35. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.js +133 -0
  36. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.js +110 -0
  37. package/esm2015/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.js +49 -0
  38. package/esm2015/lib/components/correspondence-relation/components/versions/versions.component.js +61 -0
  39. package/esm2015/lib/components/correspondence-relation/correspondence-relation.module.js +111 -0
  40. package/esm2015/lib/components/correspondence-relation/services/correspondence-realation.service.js +115 -0
  41. package/esm2015/lib/components/correspondence-relation/services/viewer-files.service.js +50 -0
  42. package/esm2015/lib/components/create-entity/create-entity/create-entity.component.js +62 -0
  43. package/esm2015/lib/components/create-entity/create-entity.module.js +36 -0
  44. package/esm2015/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.js +73 -0
  45. package/esm2015/lib/components/cts-tags/cts-tags.module.js +65 -0
  46. package/esm2015/lib/components/cts-tags/services/tags-api.service.js +61 -0
  47. package/esm2015/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.js +82 -0
  48. package/esm2015/lib/components/custom-toastr/custom-toastr.module.js +36 -0
  49. package/esm2015/lib/components/custom-toastr/interfaces/toast-type.interface.js +2 -0
  50. package/esm2015/lib/components/custom-toastr/services/custom-toastr.service.js +41 -0
  51. package/esm2015/lib/components/documents/components/attachments-list/attachments-list.component.js +156 -0
  52. package/esm2015/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.js +72 -0
  53. package/esm2015/lib/components/documents/components/document-list/documents-list.component.js +255 -0
  54. package/esm2015/lib/components/documents/components/document-scan/document-scan.component.js +929 -0
  55. package/esm2015/lib/components/documents/components/document-upload/document-upload.component.js +159 -0
  56. package/esm2015/lib/components/documents/components/documents/documents.component.js +61 -0
  57. package/esm2015/lib/components/documents/constants/document-templates.js +32 -0
  58. package/esm2015/lib/components/documents/constants/documents.js +86 -0
  59. package/esm2015/lib/components/documents/documents.module.js +123 -0
  60. package/esm2015/lib/components/documents/services/document-templates.service.js +115 -0
  61. package/esm2015/lib/components/documents/services/documents.service.js +217 -0
  62. package/esm2015/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.js +342 -0
  63. package/esm2015/lib/components/dynamic-chart/dynamic-chart.module.js +34 -0
  64. package/esm2015/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.js +164 -0
  65. package/esm2015/lib/components/dynamic-chart/services/chart-data.service.js +542 -0
  66. package/esm2015/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.js +106 -0
  67. package/esm2015/lib/components/dynamic-filter/dynamic-filter.module.js +26 -0
  68. package/esm2015/lib/components/dynamic-form/components/department-form/department-form.component.js +124 -0
  69. package/esm2015/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.js +94 -0
  70. package/esm2015/lib/components/dynamic-form/components/dynamic-form/fields.adapter.js +127 -0
  71. package/esm2015/lib/components/dynamic-form/components/dynamic-form/form-builder.service.js +102 -0
  72. package/esm2015/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.js +35 -0
  73. package/esm2015/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.js +165 -0
  74. package/esm2015/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.js +71 -0
  75. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.js +202 -0
  76. package/esm2015/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.js +78 -0
  77. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/constants/department.js +13 -0
  78. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.js +185 -0
  79. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.js +207 -0
  80. package/esm2015/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.js +94 -0
  81. package/esm2015/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.js +85 -0
  82. package/esm2015/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.js +128 -0
  83. package/esm2015/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.js +81 -0
  84. package/esm2015/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.js +36 -0
  85. package/esm2015/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.js +106 -0
  86. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.js +93 -0
  87. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.js +207 -0
  88. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.js +302 -0
  89. package/esm2015/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.js +44 -0
  90. package/esm2015/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.js +176 -0
  91. package/esm2015/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.js +76 -0
  92. package/esm2015/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.js +180 -0
  93. package/esm2015/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.js +250 -0
  94. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.js +63 -0
  95. package/esm2015/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.js +269 -0
  96. package/esm2015/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.js +47 -0
  97. package/esm2015/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.js +172 -0
  98. package/esm2015/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.js +768 -0
  99. package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.js +35 -0
  100. package/esm2015/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.js +17 -0
  101. package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.js +34 -0
  102. package/esm2015/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.js +17 -0
  103. package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.js +38 -0
  104. package/esm2015/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.js +30 -0
  105. package/esm2015/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.js +17 -0
  106. package/esm2015/lib/components/dynamic-form/dynamic-form.module.js +289 -0
  107. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.js +2 -0
  108. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.js +2 -0
  109. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.js +2 -0
  110. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.js +2 -0
  111. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.js +2 -0
  112. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.js +2 -0
  113. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.js +2 -0
  114. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.js +2 -0
  115. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.js +2 -0
  116. package/esm2015/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.js +10 -0
  117. package/esm2015/lib/components/dynamic-form/models/dynamic-form-baseitem.model.js +63 -0
  118. package/esm2015/lib/components/dynamic-form/models/dynamic-form-boolitem.model.js +20 -0
  119. package/esm2015/lib/components/dynamic-form/models/dynamic-form-dateitem.model.js +24 -0
  120. package/esm2015/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.js +12 -0
  121. package/esm2015/lib/components/dynamic-form/models/dynamic-form-mapitem.model.js +16 -0
  122. package/esm2015/lib/components/dynamic-form/models/dynamic-form-selectitem.model.js +17 -0
  123. package/esm2015/lib/components/dynamic-form/models/dynamic-form-textitem.model.js +32 -0
  124. package/esm2015/lib/components/dynamic-form/models/dynamic-form.models.js +8 -0
  125. package/esm2015/lib/components/dynamic-form/services/card-item-types.service.js +46 -0
  126. package/esm2015/lib/components/dynamic-form/services/dynamic-component-mapper.service.js +60 -0
  127. package/esm2015/lib/components/dynamic-form/services/dynamic-form-update.service.js +74 -0
  128. package/esm2015/lib/components/dynamic-form/validators/length-validator.js +15 -0
  129. package/esm2015/lib/components/dynamic-form/validators/regex-validator.js +15 -0
  130. package/esm2015/lib/components/dynamic-form/validators/required-validator.js +9 -0
  131. package/esm2015/lib/components/dynamic-form/validators/value-validator.js +15 -0
  132. package/esm2015/lib/components/dynamic-search/dynamic-search/dynamic-search.component.js +148 -0
  133. package/esm2015/lib/components/dynamic-search/dynamic-search.module.js +57 -0
  134. package/esm2015/lib/components/dynamic-table/dynamic-table/dynamic-table.component.js +204 -0
  135. package/esm2015/lib/components/dynamic-table/dynamic-table.module.js +44 -0
  136. package/esm2015/lib/components/dynamic-table/services/dynamic-table.service.js +16 -0
  137. package/esm2015/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.js +36 -0
  138. package/esm2015/lib/components/dynamic-view/data-viewer/data-viewer.component.js +32 -0
  139. package/esm2015/lib/components/dynamic-view/date-viewer/date-viewer.component.js +49 -0
  140. package/esm2015/lib/components/dynamic-view/department-viewer/department-viewer.component.js +71 -0
  141. package/esm2015/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.js +60 -0
  142. package/esm2015/lib/components/dynamic-view/dynamic-view.module.js +54 -0
  143. package/esm2015/lib/components/dynamic-view/list-viewer/list-viewer.component.js +40 -0
  144. package/esm2015/lib/components/filter/filter/filter.component.js +94 -0
  145. package/esm2015/lib/components/filter/filter.module.js +45 -0
  146. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.js +114 -0
  147. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.js +111 -0
  148. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.js +165 -0
  149. package/esm2015/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.js +32 -0
  150. package/esm2015/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.js +54 -0
  151. package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.js +71 -0
  152. package/esm2015/lib/components/hijri-gregorian-datepicker/services/date-helper.service.js +25 -0
  153. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.js +43 -0
  154. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.js +26 -0
  155. package/esm2015/lib/components/hijri-gregorian-datepicker/utils/consts.js +5 -0
  156. package/esm2015/lib/components/latest-activity/components/activity-line/activity-line.component.js +75 -0
  157. package/esm2015/lib/components/latest-activity/components/latest-activity/latest-activity.component.js +70 -0
  158. package/esm2015/lib/components/latest-activity/components/single-activity/single-activity.component.js +27 -0
  159. package/esm2015/lib/components/latest-activity/constants/activitylog.js +80 -0
  160. package/esm2015/lib/components/latest-activity/latest-activity.module.js +53 -0
  161. package/esm2015/lib/components/latest-activity/services/activity-log.service.js +33 -0
  162. package/esm2015/lib/components/notifications/components/notification-item/notification-item.component.js +69 -0
  163. package/esm2015/lib/components/notifications/components/notification-options/notification-options.component.js +22 -0
  164. package/esm2015/lib/components/notifications/components/notification-toast/notification-toast.component.js +57 -0
  165. package/esm2015/lib/components/notifications/components/notifications-button/notifications-button.component.js +129 -0
  166. package/esm2015/lib/components/notifications/components/notifications-list/notifications-list.component.js +149 -0
  167. package/esm2015/lib/components/notifications/notifications.module.js +109 -0
  168. package/esm2015/lib/components/notifications/notifications.service.js +277 -0
  169. package/esm2015/lib/components/pagination/pagination/pagination.component.js +123 -0
  170. package/esm2015/lib/components/pagination/pagination.module.js +32 -0
  171. package/esm2015/lib/components/pdf-tron/pdf-tron.module.js +24 -0
  172. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.component.js +228 -0
  173. package/esm2015/lib/components/pdf-tron/pdftron/pdftron.service.js +181 -0
  174. package/esm2015/lib/components/select/select/select.component.js +130 -0
  175. package/esm2015/lib/components/select/select.module.js +37 -0
  176. package/esm2015/lib/components/table/table/table.component.js +174 -0
  177. package/esm2015/lib/components/table/table.module.js +57 -0
  178. package/esm2015/lib/components/users-card/users-card.component.js +43 -0
  179. package/esm2015/lib/components/users-card/users-card.module.js +28 -0
  180. package/esm2015/lib/components/viewer-log/components/viewer-log/viewer-log.component.js +33 -0
  181. package/esm2015/lib/components/viewer-log/viewer-log.module.js +20 -0
  182. package/esm2015/lib/components/vocabulary/interfaces/op-type.interface.js +2 -0
  183. package/esm2015/lib/components/vocabulary/services/vocabulary-api.service.js +49 -0
  184. package/esm2015/lib/components/vocabulary/vocabulary/vocabulary.component.js +106 -0
  185. package/esm2015/lib/components/vocabulary/vocabulary.module.js +34 -0
  186. package/esm2015/lib/configuration/app-config.service.js +26 -0
  187. package/esm2015/lib/configuration/helpers/app-initializer.js +4 -0
  188. package/esm2015/lib/directive/app-has-role/app-has-role.directive.js +61 -0
  189. package/esm2015/lib/directive/clickOutSide/click-outside.directive.js +29 -0
  190. package/esm2015/lib/directive/directive.module.js +48 -0
  191. package/esm2015/lib/directive/permissions/evaluators.service.js +118 -0
  192. package/esm2015/lib/directive/permissions/permissions.directive.js +106 -0
  193. package/esm2015/lib/directive/rtl/set-dir-rtl.directive.js +28 -0
  194. package/esm2015/lib/directive/rtl/set-rtl.directive.js +29 -0
  195. package/esm2015/lib/nuxeo-development-framework.component.js +26 -18
  196. package/esm2015/lib/nuxeo-development-framework.module.js +45 -16
  197. package/esm2015/lib/nuxeo-development-framework.service.js +14 -13
  198. package/esm2015/lib/pipes/file-size.pipe.js +57 -0
  199. package/esm2015/lib/pipes/hijri-date.pipe.js +46 -0
  200. package/esm2015/lib/pipes/localized-date.pipe.js +81 -0
  201. package/esm2015/lib/pipes/multi-value.pipe.js +42 -0
  202. package/esm2015/lib/pipes/pipes.module.js +29 -0
  203. package/esm2015/lib/pipes/secure-html.pipe.js +34 -0
  204. package/esm2015/lib/pipes/secure.pipe.js +40 -0
  205. package/esm2015/lib/pipes/time-ago.pipe.js +68 -0
  206. package/esm2015/lib/shared/components/button/button.component.js +87 -0
  207. package/esm2015/lib/shared/components/item-list/item-list.component.js +76 -0
  208. package/esm2015/lib/shared/components/no-data/no-data.component.js +37 -0
  209. package/esm2015/lib/shared/components/read-more/read-more.component.js +107 -0
  210. package/esm2015/lib/shared/components/search-autocomplete/search-autocomplete.component.js +144 -0
  211. package/esm2015/lib/shared/components/spinner/spinner.component.js +29 -0
  212. package/esm2015/lib/shared/components/user-card/user-card.component.js +49 -0
  213. package/esm2015/lib/shared/libraryShared.module.js +80 -0
  214. package/esm2015/nuxeo-development-framework.js +4 -4
  215. package/esm2015/public-api.js +156 -7
  216. package/fesm2015/nuxeo-development-framework.js +17027 -49
  217. package/fesm2015/nuxeo-development-framework.js.map +1 -1
  218. package/lib/Core/adapters/adapter.service.d.ts +11 -0
  219. package/lib/Core/core.module.d.ts +14 -0
  220. package/lib/Core/enums/language.enum.d.ts +4 -0
  221. package/lib/Core/models/component.model.d.ts +6 -0
  222. package/lib/Core/services/callApi/call-api.service.d.ts +11 -0
  223. package/lib/Core/services/initialization/initialization.service.d.ts +14 -0
  224. package/lib/Core/services/localStorag/local-storag.service.d.ts +41 -0
  225. package/lib/Core/services/nuxeo/nuxeo-override.d.ts +8 -0
  226. package/lib/Core/services/nuxeo/nuxeo.service.d.ts +33 -0
  227. package/lib/Core/services/roles/roles.service.d.ts +11 -0
  228. package/lib/Core/services/translation/translate-loader.service.d.ts +26 -0
  229. package/lib/Core/services/translation/translation.service.d.ts +71 -0
  230. package/lib/Core/services/user/user-preferences.service.d.ts +80 -0
  231. package/lib/Core/utilities/moment-date-adapter.d.ts +37 -0
  232. package/lib/Core/utilities/utility.service.d.ts +11 -0
  233. package/lib/components/activity/activity/activity.component.d.ts +13 -0
  234. package/lib/components/activity/activity.module.d.ts +13 -0
  235. package/lib/components/avatar/avatar/avatar.component.d.ts +23 -0
  236. package/lib/components/avatar/avatar.module.d.ts +13 -0
  237. package/lib/components/card/card.component.d.ts +32 -0
  238. package/lib/components/card/card.module.d.ts +12 -0
  239. package/lib/components/comments/comments.module.d.ts +25 -0
  240. package/lib/components/comments/components/comment-item/comment-item.component.d.ts +13 -0
  241. package/lib/components/comments/components/comments-dashlet/comments-dashlet.component.d.ts +45 -0
  242. package/lib/components/comments/components/comments-list/comments-list.component.d.ts +26 -0
  243. package/lib/components/comments/constants/comment.d.ts +25 -0
  244. package/lib/components/comments/services/comment-api.service.d.ts +14 -0
  245. package/lib/components/confirm-caller/confirm-caller.dialog.d.ts +46 -0
  246. package/lib/components/confirm-caller/confirm-caller.module.d.ts +16 -0
  247. package/lib/components/confirm-caller/confirm-dialog/confirm-dialog.component.d.ts +12 -0
  248. package/lib/components/correspondence-relation/components/correspondence-relation/correspondence-relation.component.d.ts +34 -0
  249. package/lib/components/correspondence-relation/components/correspondence-relation-create-form/correspondence-relation-create-form.component.d.ts +42 -0
  250. package/lib/components/correspondence-relation/components/correspondence-relation-list/correspondence-relation-list.component.d.ts +31 -0
  251. package/lib/components/correspondence-relation/components/correspondence-relation-reply/correspondence-relation-reply.component.d.ts +18 -0
  252. package/lib/components/correspondence-relation/components/versions/versions.component.d.ts +31 -0
  253. package/lib/components/correspondence-relation/correspondence-relation.module.d.ts +30 -0
  254. package/lib/components/correspondence-relation/services/correspondence-realation.service.d.ts +24 -0
  255. package/lib/components/correspondence-relation/services/viewer-files.service.d.ts +18 -0
  256. package/lib/components/create-entity/create-entity/create-entity.component.d.ts +17 -0
  257. package/lib/components/create-entity/create-entity.module.d.ts +11 -0
  258. package/lib/components/cts-tags/components/correspondence-tags/correspondence-tags.component.d.ts +28 -0
  259. package/lib/components/cts-tags/cts-tags.module.d.ts +21 -0
  260. package/lib/components/cts-tags/services/tags-api.service.d.ts +15 -0
  261. package/lib/components/custom-toastr/components/custom-toastr/custom-toastr.component.d.ts +30 -0
  262. package/lib/components/custom-toastr/custom-toastr.module.d.ts +12 -0
  263. package/lib/components/custom-toastr/interfaces/toast-type.interface.d.ts +1 -0
  264. package/lib/components/custom-toastr/services/custom-toastr.service.d.ts +18 -0
  265. package/lib/components/documents/components/attachments-list/attachments-list.component.d.ts +54 -0
  266. package/lib/components/documents/components/attachments-page-provider/attachments-page-provider.component.d.ts +37 -0
  267. package/lib/components/documents/components/document-list/documents-list.component.d.ts +81 -0
  268. package/lib/components/documents/components/document-scan/document-scan.component.d.ts +103 -0
  269. package/lib/components/documents/components/document-upload/document-upload.component.d.ts +58 -0
  270. package/lib/components/documents/components/documents/documents.component.d.ts +27 -0
  271. package/lib/components/documents/constants/document-templates.d.ts +33 -0
  272. package/lib/components/documents/constants/documents.d.ts +95 -0
  273. package/lib/components/documents/documents.module.d.ts +33 -0
  274. package/lib/components/documents/services/document-templates.service.d.ts +24 -0
  275. package/lib/components/documents/services/documents.service.d.ts +36 -0
  276. package/lib/components/dynamic-chart/dynamic-chart/dynamic-chart.component.d.ts +63 -0
  277. package/lib/components/dynamic-chart/dynamic-chart.module.d.ts +16 -0
  278. package/lib/components/dynamic-chart/dynamic-single-chart/dynamic-single-chart.component.d.ts +33 -0
  279. package/lib/components/dynamic-chart/services/chart-data.service.d.ts +37 -0
  280. package/lib/components/dynamic-filter/dynamic-filter/dynamic-filter.component.d.ts +45 -0
  281. package/lib/components/dynamic-filter/dynamic-filter.module.d.ts +16 -0
  282. package/lib/components/dynamic-form/components/department-form/department-form.component.d.ts +28 -0
  283. package/lib/components/dynamic-form/components/dynamic-form/dynamic-form.component.d.ts +26 -0
  284. package/lib/components/dynamic-form/components/dynamic-form/fields.adapter.d.ts +6 -0
  285. package/lib/components/dynamic-form/components/dynamic-form/form-builder.service.d.ts +21 -0
  286. package/lib/components/dynamic-form/components/dynamic-form-boolitem/dynamic-form-boolitem.component.d.ts +17 -0
  287. package/lib/components/dynamic-form/components/dynamic-form-builder/dynamic-form-builder.component.d.ts +57 -0
  288. package/lib/components/dynamic-form/components/dynamic-form-checkbox-item/dynamic-form-checkbox-item.component.d.ts +35 -0
  289. package/lib/components/dynamic-form/components/dynamic-form-dateitem/dynamic-form-dateitem.component.d.ts +70 -0
  290. package/lib/components/dynamic-form/components/dynamic-form-dateitem/owlDateTimeIntl.d.ts +52 -0
  291. package/lib/components/dynamic-form/components/dynamic-form-department/constants/department.d.ts +12 -0
  292. package/lib/components/dynamic-form/components/dynamic-form-department/dynamic-form-department.component.d.ts +65 -0
  293. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-api.service.d.ts +29 -0
  294. package/lib/components/dynamic-form/components/dynamic-form-department/services/department-management.service.d.ts +21 -0
  295. package/lib/components/dynamic-form/components/dynamic-form-field/dynamic-form-field.component.d.ts +30 -0
  296. package/lib/components/dynamic-form/components/dynamic-form-hijri-dateitem/dynamic-form-hijri-dateitem.component.d.ts +61 -0
  297. package/lib/components/dynamic-form/components/dynamic-form-item-dispatcher/dynamic-form-item-dispatcher.component.d.ts +25 -0
  298. package/lib/components/dynamic-form/components/dynamic-form-mapitem/dynamic-form-mapitem.component.d.ts +15 -0
  299. package/lib/components/dynamic-form/components/dynamic-form-options/dynamic-form-options.component.d.ts +45 -0
  300. package/lib/components/dynamic-form/components/dynamic-form-select-tag/dynamic-form-select-tag.component.d.ts +41 -0
  301. package/lib/components/dynamic-form/components/dynamic-form-select-user-filter/dynamic-form-select-user-filter.component.d.ts +65 -0
  302. package/lib/components/dynamic-form/components/dynamic-form-select-users/dynamic-form-select-users.component.d.ts +83 -0
  303. package/lib/components/dynamic-form/components/dynamic-form-select-users/services/user-api.service.d.ts +13 -0
  304. package/lib/components/dynamic-form/components/dynamic-form-selectitem/dynamic-form-selectitem.component.d.ts +79 -0
  305. package/lib/components/dynamic-form/components/dynamic-form-slide-toggleitem/dynamic-form-slide-toggleitem.component.d.ts +37 -0
  306. package/lib/components/dynamic-form/components/dynamic-form-textarea/dynamic-form-textarea.component.d.ts +71 -0
  307. package/lib/components/dynamic-form/components/dynamic-form-textitem/dynamic-form-textitem.component.d.ts +86 -0
  308. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select-i18n.d.ts +19 -0
  309. package/lib/components/dynamic-form/components/dynamic-form-treeview-select/dropdown-treeview-select.component.d.ts +88 -0
  310. package/lib/components/dynamic-form/components/dynamic-form-viewer/dynamic-form-viewer.component.d.ts +16 -0
  311. package/lib/components/dynamic-form/components/dynamic-form-vocabulary-item/dynamic-form-vocabulary-item.component.d.ts +76 -0
  312. package/lib/components/dynamic-form/components/form-wrappers/base-edit-form/base-edit-form.d.ts +599 -0
  313. package/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.component.d.ts +13 -0
  314. package/lib/components/dynamic-form/components/form-wrappers/date-wrapper/date-wrapper.formio.d.ts +2 -0
  315. package/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.component.d.ts +13 -0
  316. package/lib/components/dynamic-form/components/form-wrappers/toggle-wrapper/toggle-wrapper.formio.d.ts +2 -0
  317. package/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.component.d.ts +16 -0
  318. package/lib/components/dynamic-form/components/form-wrappers/vocabulary-wrapper/vocabulary-wrapper.formio.d.ts +2 -0
  319. package/lib/components/dynamic-form/directives/dynamic-form-content-proxy.directive.d.ts +9 -0
  320. package/lib/components/dynamic-form/dynamic-form.module.d.ts +64 -0
  321. package/lib/components/dynamic-form/interfaces/dynamic-form-boolitem-properties.interface.d.ts +5 -0
  322. package/lib/components/dynamic-form/interfaces/dynamic-form-dateitem-properties.interface.d.ts +5 -0
  323. package/lib/components/dynamic-form/interfaces/dynamic-form-item-properties.interface.d.ts +15 -0
  324. package/lib/components/dynamic-form/interfaces/dynamic-form-item-validator.interface.d.ts +4 -0
  325. package/lib/components/dynamic-form/interfaces/dynamic-form-item.interface.d.ts +12 -0
  326. package/lib/components/dynamic-form/interfaces/dynamic-form-keyvaluepairsitem-properties.interface.d.ts +8 -0
  327. package/lib/components/dynamic-form/interfaces/dynamic-form-selectitem-properties.interface.d.ts +10 -0
  328. package/lib/components/dynamic-form/interfaces/dynamic-form-textitem-pipe-property.interface.d.ts +5 -0
  329. package/lib/components/dynamic-form/interfaces/dynamic-form-textitem-properties.interface.d.ts +8 -0
  330. package/lib/components/dynamic-form/interfaces/dynamic-form.interfaces.d.ts +9 -0
  331. package/lib/components/dynamic-form/models/dynamic-form-baseitem.model.d.ts +21 -0
  332. package/lib/components/dynamic-form/models/dynamic-form-boolitem.model.d.ts +11 -0
  333. package/lib/components/dynamic-form/models/dynamic-form-dateitem.model.d.ts +13 -0
  334. package/lib/components/dynamic-form/models/dynamic-form-datetimeitem.model.d.ts +9 -0
  335. package/lib/components/dynamic-form/models/dynamic-form-mapitem.model.d.ts +8 -0
  336. package/lib/components/dynamic-form/models/dynamic-form-selectitem.model.d.ts +11 -0
  337. package/lib/components/dynamic-form/models/dynamic-form-textitem.model.d.ts +15 -0
  338. package/lib/components/dynamic-form/models/dynamic-form.models.d.ts +7 -0
  339. package/lib/components/dynamic-form/services/card-item-types.service.d.ts +13 -0
  340. package/lib/components/dynamic-form/services/dynamic-component-mapper.service.d.ts +36 -0
  341. package/lib/components/dynamic-form/services/dynamic-form-update.service.d.ts +30 -0
  342. package/lib/components/dynamic-form/validators/length-validator.d.ts +7 -0
  343. package/lib/components/dynamic-form/validators/regex-validator.d.ts +7 -0
  344. package/lib/components/dynamic-form/validators/required-validator.d.ts +5 -0
  345. package/lib/components/dynamic-form/validators/value-validator.d.ts +7 -0
  346. package/lib/components/dynamic-search/dynamic-search/dynamic-search.component.d.ts +71 -0
  347. package/lib/components/dynamic-search/dynamic-search.module.d.ts +19 -0
  348. package/lib/components/dynamic-table/dynamic-table/dynamic-table.component.d.ts +96 -0
  349. package/lib/components/dynamic-table/dynamic-table.module.d.ts +16 -0
  350. package/lib/components/dynamic-table/services/dynamic-table.service.d.ts +8 -0
  351. package/lib/components/dynamic-view/boolean-viewer/boolean-viewer.component.d.ts +13 -0
  352. package/lib/components/dynamic-view/data-viewer/data-viewer.component.d.ts +12 -0
  353. package/lib/components/dynamic-view/date-viewer/date-viewer.component.d.ts +17 -0
  354. package/lib/components/dynamic-view/department-viewer/department-viewer.component.d.ts +29 -0
  355. package/lib/components/dynamic-view/dropdown-viewer/dropdown-viewer.component.d.ts +37 -0
  356. package/lib/components/dynamic-view/dynamic-view.module.d.ts +20 -0
  357. package/lib/components/dynamic-view/list-viewer/list-viewer.component.d.ts +20 -0
  358. package/lib/components/filter/filter/filter.component.d.ts +31 -0
  359. package/lib/components/filter/filter.module.d.ts +15 -0
  360. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/gregorian-datepicker/gregorian-datepicker.component.d.ts +34 -0
  361. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-datepicker/hijri-datepicker.component.d.ts +32 -0
  362. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/hijri-gregorian-datepicker.component.d.ts +39 -0
  363. package/lib/components/hijri-gregorian-datepicker/hijri-gregorian-datepicker/provide-parent-form.directive.d.ts +9 -0
  364. package/lib/components/hijri-gregorian-datepicker/ngx-hijri-gregorian-datepicker.module.d.ts +14 -0
  365. package/lib/components/hijri-gregorian-datepicker/services/date-formatter.service.d.ts +15 -0
  366. package/lib/components/hijri-gregorian-datepicker/services/date-helper.service.d.ts +8 -0
  367. package/lib/components/hijri-gregorian-datepicker/utils/CustomNgbDateParserFormatter.d.ts +11 -0
  368. package/lib/components/hijri-gregorian-datepicker/utils/IslamicI18n.d.ts +10 -0
  369. package/lib/components/hijri-gregorian-datepicker/utils/consts.d.ts +4 -0
  370. package/lib/components/latest-activity/components/activity-line/activity-line.component.d.ts +19 -0
  371. package/lib/components/latest-activity/components/latest-activity/latest-activity.component.d.ts +22 -0
  372. package/lib/components/latest-activity/components/single-activity/single-activity.component.d.ts +10 -0
  373. package/lib/components/latest-activity/constants/activitylog.d.ts +82 -0
  374. package/lib/components/latest-activity/latest-activity.module.d.ts +19 -0
  375. package/lib/components/latest-activity/services/activity-log.service.d.ts +12 -0
  376. package/lib/components/notifications/components/notification-item/notification-item.component.d.ts +15 -0
  377. package/lib/components/notifications/components/notification-options/notification-options.component.d.ts +10 -0
  378. package/lib/components/notifications/components/notification-toast/notification-toast.component.d.ts +19 -0
  379. package/lib/components/notifications/components/notifications-button/notifications-button.component.d.ts +25 -0
  380. package/lib/components/notifications/components/notifications-list/notifications-list.component.d.ts +45 -0
  381. package/lib/components/notifications/notifications.module.d.ts +24 -0
  382. package/lib/components/notifications/notifications.service.d.ts +61 -0
  383. package/lib/components/pagination/pagination/pagination.component.d.ts +46 -0
  384. package/lib/components/pagination/pagination.module.d.ts +13 -0
  385. package/lib/components/pdf-tron/pdf-tron.module.d.ts +8 -0
  386. package/lib/components/pdf-tron/pdftron/pdftron.component.d.ts +54 -0
  387. package/lib/components/pdf-tron/pdftron/pdftron.service.d.ts +30 -0
  388. package/lib/components/select/select/select.component.d.ts +43 -0
  389. package/lib/components/select/select.module.d.ts +12 -0
  390. package/lib/components/table/table/table.component.d.ts +89 -0
  391. package/lib/components/table/table.module.d.ts +18 -0
  392. package/lib/components/users-card/users-card.component.d.ts +22 -0
  393. package/lib/components/users-card/users-card.module.d.ts +17 -0
  394. package/lib/components/viewer-log/components/viewer-log/viewer-log.component.d.ts +12 -0
  395. package/lib/components/viewer-log/viewer-log.module.d.ts +10 -0
  396. package/lib/components/vocabulary/interfaces/op-type.interface.d.ts +1 -0
  397. package/lib/components/vocabulary/services/vocabulary-api.service.d.ts +16 -0
  398. package/lib/components/vocabulary/vocabulary/vocabulary.component.d.ts +37 -0
  399. package/lib/components/vocabulary/vocabulary.module.d.ts +11 -0
  400. package/lib/configuration/app-config.service.d.ts +11 -0
  401. package/lib/configuration/helpers/app-initializer.d.ts +2 -0
  402. package/lib/directive/app-has-role/app-has-role.directive.d.ts +18 -0
  403. package/lib/directive/clickOutSide/click-outside.directive.d.ts +11 -0
  404. package/lib/directive/directive.module.d.ts +16 -0
  405. package/lib/directive/permissions/evaluators.service.d.ts +26 -0
  406. package/lib/directive/permissions/permissions.directive.d.ts +46 -0
  407. package/lib/directive/rtl/set-dir-rtl.directive.d.ts +13 -0
  408. package/lib/directive/rtl/set-rtl.directive.d.ts +13 -0
  409. package/lib/nuxeo-development-framework.component.d.ts +8 -5
  410. package/lib/nuxeo-development-framework.module.d.ts +12 -2
  411. package/lib/nuxeo-development-framework.service.d.ts +6 -3
  412. package/lib/pipes/file-size.pipe.d.ts +34 -0
  413. package/lib/pipes/hijri-date.pipe.d.ts +32 -0
  414. package/lib/pipes/localized-date.pipe.d.ts +44 -0
  415. package/lib/pipes/multi-value.pipe.d.ts +32 -0
  416. package/lib/pipes/pipes.module.d.ts +18 -0
  417. package/lib/pipes/secure-html.pipe.d.ts +26 -0
  418. package/lib/pipes/secure.pipe.d.ts +29 -0
  419. package/lib/pipes/time-ago.pipe.d.ts +34 -0
  420. package/lib/shared/components/button/button.component.d.ts +38 -0
  421. package/lib/shared/components/item-list/item-list.component.d.ts +45 -0
  422. package/lib/shared/components/no-data/no-data.component.d.ts +21 -0
  423. package/lib/shared/components/read-more/read-more.component.d.ts +37 -0
  424. package/lib/shared/components/search-autocomplete/search-autocomplete.component.d.ts +49 -0
  425. package/lib/shared/components/spinner/spinner.component.d.ts +18 -0
  426. package/lib/shared/components/user-card/user-card.component.d.ts +30 -0
  427. package/lib/shared/libraryShared.module.d.ts +25 -0
  428. package/nuxeo-development-framework.d.ts +5 -4
  429. package/package.json +57 -16
  430. package/public-api.d.ts +145 -3
  431. package/bundles/nuxeo-development-framework.umd.min.js +0 -2
  432. package/bundles/nuxeo-development-framework.umd.min.js.map +0 -1
  433. package/nuxeo-development-framework.metadata.json +0 -1
@@ -0,0 +1,768 @@
1
+ import { cloneDeep, unionWith, each, filter, sortBy, isEqual } from 'lodash';
2
+ export const baseDisplay = [
3
+ {
4
+ weight: 0,
5
+ type: 'textfield',
6
+ input: true,
7
+ hidden: true,
8
+ key: 'key',
9
+ label: 'Property Name',
10
+ tooltip: 'The name of this field in the API endpoint.',
11
+ validate: {
12
+ pattern: '(\\w|\\w[\\w-.]*\\w)',
13
+ patternMessage: 'The property name must only contain alphanumeric characters, underscores, dots and dashes and should not be ended by dash or dot.',
14
+ required: true
15
+ }
16
+ },
17
+ {
18
+ weight: 0,
19
+ type: 'textfield',
20
+ input: true,
21
+ key: 'label',
22
+ label: 'Label - English',
23
+ placeholder: 'Field Label',
24
+ tooltip: 'The label for this field that will appear next to it.',
25
+ validate: {
26
+ required: true
27
+ }
28
+ },
29
+ {
30
+ weight: 10,
31
+ type: 'textfield',
32
+ input: true,
33
+ key: 'labelAr',
34
+ label: 'Label - Arabic',
35
+ placeholder: 'Field Label',
36
+ tooltip: 'The label for this field that will appear next to it.',
37
+ validate: {
38
+ required: true
39
+ }
40
+ },
41
+ {
42
+ type: 'select',
43
+ input: true,
44
+ key: 'labelPosition',
45
+ label: 'Label Position',
46
+ tooltip: 'Position for the label for this field.',
47
+ weight: 20,
48
+ defaultValue: 'top',
49
+ dataSrc: 'values',
50
+ data: {
51
+ values: [
52
+ {
53
+ label: 'Top',
54
+ value: 'top'
55
+ },
56
+ {
57
+ label: 'Left (Left-aligned)',
58
+ value: 'left-left'
59
+ },
60
+ {
61
+ label: 'Left (Right-aligned)',
62
+ value: 'left-right'
63
+ },
64
+ {
65
+ label: 'Right (Left-aligned)',
66
+ value: 'right-left'
67
+ },
68
+ {
69
+ label: 'Right (Right-aligned)',
70
+ value: 'right-right'
71
+ },
72
+ {
73
+ label: 'Bottom',
74
+ value: 'bottom'
75
+ }
76
+ ]
77
+ }
78
+ },
79
+ {
80
+ type: 'number',
81
+ input: true,
82
+ key: 'labelWidth',
83
+ label: 'Label Width',
84
+ tooltip: 'The width of label on line in percentages.',
85
+ clearOnHide: false,
86
+ weight: 30,
87
+ placeholder: '30',
88
+ suffix: '%',
89
+ validate: {
90
+ min: 0,
91
+ max: 100
92
+ },
93
+ conditional: {
94
+ json: {
95
+ and: [
96
+ {
97
+ '!==': [
98
+ {
99
+ var: 'data.labelPosition'
100
+ },
101
+ 'top'
102
+ ]
103
+ },
104
+ {
105
+ '!==': [
106
+ {
107
+ var: 'data.labelPosition'
108
+ },
109
+ 'bottom'
110
+ ]
111
+ }
112
+ ]
113
+ }
114
+ }
115
+ },
116
+ {
117
+ type: 'number',
118
+ input: true,
119
+ key: 'labelMargin',
120
+ label: 'Label Margin',
121
+ tooltip: 'The width of label margin on line in percentages.',
122
+ clearOnHide: false,
123
+ weight: 30,
124
+ placeholder: '3',
125
+ suffix: '%',
126
+ validate: {
127
+ min: 0,
128
+ max: 100
129
+ },
130
+ conditional: {
131
+ json: {
132
+ and: [
133
+ {
134
+ '!==': [
135
+ {
136
+ var: 'data.labelPosition'
137
+ },
138
+ 'top'
139
+ ]
140
+ },
141
+ {
142
+ '!==': [
143
+ {
144
+ var: 'data.labelPosition'
145
+ },
146
+ 'bottom'
147
+ ]
148
+ }
149
+ ]
150
+ }
151
+ }
152
+ },
153
+ {
154
+ weight: 200,
155
+ type: 'textarea',
156
+ input: true,
157
+ key: 'description',
158
+ label: 'Description - English',
159
+ placeholder: 'Description for this field.',
160
+ tooltip: 'The description is text that will appear below the input field.',
161
+ editor: 'ace',
162
+ as: 'html',
163
+ wysiwyg: {
164
+ minLines: 3,
165
+ isUseWorkerDisabled: true
166
+ }
167
+ },
168
+ {
169
+ weight: 200,
170
+ type: 'textarea',
171
+ input: true,
172
+ key: 'descriptionAr',
173
+ label: 'Description - Arabic',
174
+ placeholder: 'Description for this field.',
175
+ tooltip: 'The description is text that will appear below the input field.',
176
+ editor: 'ace',
177
+ as: 'html',
178
+ wysiwyg: {
179
+ minLines: 3,
180
+ isUseWorkerDisabled: true
181
+ }
182
+ },
183
+ {
184
+ weight: 300,
185
+ type: 'textarea',
186
+ input: true,
187
+ key: 'tooltip',
188
+ label: 'Tooltip - English',
189
+ placeholder: 'To add a tooltip to this field, enter text here.',
190
+ tooltip: 'Adds a tooltip to the side of this field.',
191
+ editor: 'ace',
192
+ as: 'html',
193
+ wysiwyg: {
194
+ minLines: 3,
195
+ isUseWorkerDisabled: true
196
+ }
197
+ },
198
+ {
199
+ weight: 300,
200
+ type: 'textarea',
201
+ input: true,
202
+ key: 'tooltipAr',
203
+ label: 'Tooltip - Arabic',
204
+ placeholder: 'To add a tooltip to this field, enter text here.',
205
+ tooltip: 'Adds a tooltip to the side of this field.',
206
+ editor: 'ace',
207
+ as: 'html',
208
+ wysiwyg: {
209
+ minLines: 3,
210
+ isUseWorkerDisabled: true
211
+ }
212
+ },
213
+ {
214
+ weight: 410,
215
+ type: 'textfield',
216
+ input: true,
217
+ key: 'inputMask',
218
+ label: 'Input Mask',
219
+ tooltip: 'An input mask helps the user with input by ensuring a predefined format.<br><br>9: numeric<br>a: alphabetical<br>*: alphanumeric<br><br>Example telephone mask: (999) 999-9999<br><br>See the <a target=\'_blank\' href=\'https://github.com/RobinHerbots/jquery.inputmask\'>jquery.inputmask documentation</a> for more information.</a>'
220
+ },
221
+ {
222
+ weight: 411,
223
+ type: 'textfield',
224
+ input: true,
225
+ key: 'inputMaskPlaceholderChar',
226
+ label: 'Input Mask Placeholder Char',
227
+ tooltip: 'You can specify a char which will be used as a placeholder in the field. <br>E.g., ˍ<br>Make note that placeholder char will be replaced by a space if it is used inside the mask',
228
+ validation: {
229
+ maxLength: 1
230
+ }
231
+ },
232
+ {
233
+ weight: 1100,
234
+ type: 'checkbox',
235
+ label: 'Hidden',
236
+ tooltip: 'A hidden field is still a part of the form, but is hidden from view.',
237
+ key: 'hidden',
238
+ input: true
239
+ },
240
+ {
241
+ weight: 1200,
242
+ type: 'checkbox',
243
+ label: 'Hide Label',
244
+ tooltip: 'Hide the label (title, if no label) of this component. This allows you to show the label in the form builder, but not when it is rendered.',
245
+ key: 'hideLabel',
246
+ input: true
247
+ },
248
+ {
249
+ weight: 1400,
250
+ type: 'checkbox',
251
+ label: 'Disabled',
252
+ tooltip: 'Disable the form input.',
253
+ key: 'disabled',
254
+ input: true
255
+ }
256
+ ];
257
+ export const baseData = [
258
+ {
259
+ weight: 0,
260
+ type: 'checkbox',
261
+ label: 'Multiple Values',
262
+ tooltip: 'Allows multiple values to be entered for this field.',
263
+ key: 'multiple',
264
+ input: true
265
+ },
266
+ {
267
+ type: 'textfield',
268
+ label: 'Default Value',
269
+ key: 'defaultValue',
270
+ weight: 5,
271
+ placeholder: 'Default Value',
272
+ tooltip: 'The will be the value for this field, before user interaction. Having a default value will override the placeholder text.',
273
+ input: true
274
+ },
275
+ {
276
+ type: 'select',
277
+ input: true,
278
+ key: 'redrawOn',
279
+ label: 'Redraw On',
280
+ weight: 600,
281
+ tooltip: 'Redraw this component if another component changes. This is useful if interpolating parts of the component like the label.',
282
+ dataSrc: 'custom',
283
+ valueProperty: 'value',
284
+ data: {},
285
+ conditional: {
286
+ json: {
287
+ '!': [
288
+ {
289
+ var: 'data.dataSrc'
290
+ }
291
+ ]
292
+ }
293
+ }
294
+ },
295
+ {
296
+ weight: 700,
297
+ type: 'checkbox',
298
+ label: 'Clear Value When Hidden',
299
+ key: 'clearOnHide',
300
+ defaultValue: true,
301
+ tooltip: 'When a field is hidden, clear the value.',
302
+ input: true
303
+ },
304
+ {
305
+ type: 'panel',
306
+ title: 'Custom Default Value',
307
+ theme: 'default',
308
+ collapsible: true,
309
+ collapsed: true,
310
+ key: 'customDefaultValuePanel',
311
+ weight: 1000,
312
+ components: [
313
+ {
314
+ type: 'htmlelement',
315
+ tag: 'div',
316
+ content: '<p>The following variables are available in all scripts.</p><table class="table table-bordered table-condensed table-striped"><tr><th>form</th><td>The complete form JSON object</td></tr><tr><th>submission</th><td>The complete submission object.</td></tr><tr><th>data</th><td>The complete submission data object.</td></tr><tr><th>row</th><td>Contextual "row" data, used within DataGrid, EditGrid, and Container components</td></tr><tr><th>component</th><td>The current component JSON</td></tr><tr><th>instance</th><td>The current component instance.</td></tr><tr><th>value</th><td>The current value of the component.</td></tr><tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr><tr><th>_</th><td>An instance of <a href="https://lodash.com/docs/" target="_blank">Lodash</a>.</td></tr><tr><th>utils</th><td>An instance of the <a href="http://formio.github.io/formio.js/docs/identifiers.html#utils" target="_blank">FormioUtils</a> object.</td></tr><tr><th>util</th><td>An alias for "utils".</td></tr></table><br/>'
317
+ },
318
+ {
319
+ type: 'panel',
320
+ title: 'JavaScript',
321
+ collapsible: true,
322
+ collapsed: false,
323
+ style: {
324
+ 'margin-bottom': '10px'
325
+ },
326
+ key: 'customDefaultValue-js',
327
+ components: [
328
+ {
329
+ type: 'textarea',
330
+ key: 'customDefaultValue',
331
+ rows: 5,
332
+ editor: 'ace',
333
+ hideLabel: true,
334
+ as: 'javascript',
335
+ input: true
336
+ },
337
+ {
338
+ type: 'htmlelement',
339
+ tag: 'div',
340
+ content: '<p>Enter custom javascript code.</p><p><h4>Example:</h4><pre>value = data.firstName + " " + data.lastName;</pre></p>'
341
+ }
342
+ ]
343
+ },
344
+ {
345
+ type: 'panel',
346
+ title: 'JSONLogic',
347
+ collapsible: true,
348
+ collapsed: true,
349
+ key: 'customDefaultValue-json',
350
+ components: [
351
+ {
352
+ type: 'htmlelement',
353
+ tag: 'div',
354
+ content: '<p>Execute custom logic using <a href="http://jsonlogic.com/" target="_blank">JSONLogic</a>.</p><p>Full <a href="https://lodash.com/docs" target="_blank">Lodash</a> support is provided using an "_" before each operation, such as <code>{"_sum": {var: "data.a"}}</code></p><p><h4>Example:</h4><pre>{"cat": [{"var": "data.firstName"}, " ", {"var": "data.lastName"}]}</pre>'
355
+ },
356
+ {
357
+ type: 'textarea',
358
+ key: 'customDefaultValue',
359
+ rows: 5,
360
+ editor: 'ace',
361
+ hideLabel: true,
362
+ as: 'json',
363
+ input: true
364
+ }
365
+ ]
366
+ }
367
+ ]
368
+ },
369
+ {
370
+ type: 'panel',
371
+ title: 'Calculated Value',
372
+ theme: 'default',
373
+ collapsible: true,
374
+ collapsed: true,
375
+ key: 'calculateValuePanel',
376
+ weight: 1100,
377
+ components: [
378
+ {
379
+ type: 'htmlelement',
380
+ tag: 'div',
381
+ content: '<p>The following variables are available in all scripts.</p><table class="table table-bordered table-condensed table-striped"><tr><th>token</th><td>The decoded JWT token for the authenticated user.</td></tr><tr><th>form</th><td>The complete form JSON object</td></tr><tr><th>submission</th><td>The complete submission object.</td></tr><tr><th>data</th><td>The complete submission data object.</td></tr><tr><th>row</th><td>Contextual "row" data, used within DataGrid, EditGrid, and Container components</td></tr><tr><th>component</th><td>The current component JSON</td></tr><tr><th>instance</th><td>The current component instance.</td></tr><tr><th>value</th><td>The current value of the component.</td></tr><tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr><tr><th>_</th><td>An instance of <a href="https://lodash.com/docs/" target="_blank">Lodash</a>.</td></tr><tr><th>utils</th><td>An instance of the <a href="http://formio.github.io/formio.js/docs/identifiers.html#utils" target="_blank">FormioUtils</a> object.</td></tr><tr><th>util</th><td>An alias for "utils".</td></tr></table><br/>'
382
+ },
383
+ {
384
+ type: 'panel',
385
+ title: 'JavaScript',
386
+ collapsible: true,
387
+ collapsed: false,
388
+ style: {
389
+ 'margin-bottom': '10px'
390
+ },
391
+ key: 'calculateValue-js',
392
+ components: [
393
+ {
394
+ type: 'textarea',
395
+ key: 'calculateValue',
396
+ rows: 5,
397
+ editor: 'ace',
398
+ hideLabel: true,
399
+ as: 'javascript',
400
+ input: true
401
+ },
402
+ {
403
+ type: 'htmlelement',
404
+ tag: 'div',
405
+ content: '<p>Enter custom javascript code.</p><p><h4>Example:</h4><pre>value = data.a + data.b + data.c;</pre></p>'
406
+ }
407
+ ]
408
+ },
409
+ {
410
+ type: 'panel',
411
+ title: 'JSONLogic',
412
+ collapsible: true,
413
+ collapsed: true,
414
+ key: 'calculateValue-json',
415
+ components: [
416
+ {
417
+ type: 'htmlelement',
418
+ tag: 'div',
419
+ content: '<p>Execute custom logic using <a href="http://jsonlogic.com/" target="_blank">JSONLogic</a>.</p><p>Full <a href="https://lodash.com/docs" target="_blank">Lodash</a> support is provided using an "_" before each operation, such as <code>{"_sum": {var: "data.a"}}</code></p><p><h4>Example:</h4><pre>{"+": [{"var": "data.a"}, {"var": "data.b"}, {"var": "data.c"}]}</pre><p><a target="_blank" href="http://formio.github.io/formio.js/app/examples/calculated.html">Click here for an example</a></p>'
420
+ },
421
+ {
422
+ type: 'textarea',
423
+ key: 'calculateValue',
424
+ rows: 5,
425
+ editor: 'ace',
426
+ hideLabel: true,
427
+ as: 'json',
428
+ input: true
429
+ }
430
+ ]
431
+ }
432
+ ]
433
+ },
434
+ {
435
+ type: 'checkbox',
436
+ input: true,
437
+ weight: 1200,
438
+ key: 'allowCalculateOverride',
439
+ label: 'Allow Manual Override of Calculated Value',
440
+ tooltip: 'When checked, this will allow the user to manually override the calculated value.'
441
+ }
442
+ ];
443
+ export const baseValidation = [
444
+ {
445
+ weight: 0,
446
+ type: 'select',
447
+ key: 'validateOn',
448
+ defaultValue: 'change',
449
+ input: true,
450
+ label: 'Validate On',
451
+ tooltip: 'Determines when this component should trigger front-end validation.',
452
+ dataSrc: 'values',
453
+ data: {
454
+ values: [
455
+ {
456
+ label: 'Change',
457
+ value: 'change'
458
+ },
459
+ {
460
+ label: 'Blur',
461
+ value: 'blur'
462
+ }
463
+ ]
464
+ }
465
+ },
466
+ {
467
+ weight: 10,
468
+ type: 'checkbox',
469
+ label: 'Required',
470
+ tooltip: 'A required field must be filled in before the form can be submitted.',
471
+ key: 'validate.required',
472
+ input: true
473
+ },
474
+ {
475
+ weight: 110,
476
+ key: 'validate.minLength',
477
+ label: 'Minimum Length',
478
+ placeholder: 'Minimum Length',
479
+ type: 'number',
480
+ tooltip: 'The minimum length requirement this field must meet.',
481
+ input: true
482
+ },
483
+ {
484
+ weight: 120,
485
+ key: 'validate.maxLength',
486
+ label: 'Maximum Length',
487
+ placeholder: 'Maximum Length',
488
+ type: 'number',
489
+ tooltip: 'The maximum length requirement this field must meet.',
490
+ input: true
491
+ },
492
+ {
493
+ weight: 125,
494
+ key: 'validate.minWords',
495
+ label: 'Minimum Word Length',
496
+ placeholder: 'Minimum Word Length',
497
+ type: 'number',
498
+ tooltip: 'The minimum amount of words that can be added to this field.',
499
+ input: true
500
+ },
501
+ {
502
+ weight: 126,
503
+ key: 'validate.maxWords',
504
+ label: 'Maximum Word Length',
505
+ placeholder: 'Maximum Word Length',
506
+ type: 'number',
507
+ tooltip: 'The maximum amount of words that can be added to this field.',
508
+ input: true
509
+ },
510
+ {
511
+ weight: 130,
512
+ key: 'validate.pattern',
513
+ label: 'Regular Expression Pattern',
514
+ placeholder: 'Regular Expression Pattern',
515
+ type: 'textfield',
516
+ tooltip: 'The regular expression pattern test that the field value must pass before the form can be submitted.',
517
+ input: true
518
+ },
519
+ {
520
+ weight: 200,
521
+ key: 'validate.customMessage',
522
+ label: 'Custom Error Message',
523
+ placeholder: 'Custom Error Message',
524
+ type: 'textfield',
525
+ tooltip: 'Error message displayed if any error occurred.',
526
+ input: true
527
+ },
528
+ {
529
+ type: 'panel',
530
+ title: 'Custom Validation',
531
+ collapsible: true,
532
+ collapsed: true,
533
+ style: {
534
+ 'margin-bottom': '10px'
535
+ },
536
+ key: 'custom-validation-js',
537
+ weight: 300,
538
+ components: [
539
+ {
540
+ type: 'htmlelement',
541
+ tag: 'div',
542
+ content: '<p>The following variables are available in all scripts.</p><table class="table table-bordered table-condensed table-striped"><tr><th>input</th><td>The value that was input into this component</td></tr><tr><th>form</th><td>The complete form JSON object</td></tr><tr><th>submission</th><td>The complete submission object.</td></tr><tr><th>data</th><td>The complete submission data object.</td></tr><tr><th>row</th><td>Contextual "row" data, used within DataGrid, EditGrid, and Container components</td></tr><tr><th>component</th><td>The current component JSON</td></tr><tr><th>instance</th><td>The current component instance.</td></tr><tr><th>value</th><td>The current value of the component.</td></tr><tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr><tr><th>_</th><td>An instance of <a href="https://lodash.com/docs/" target="_blank">Lodash</a>.</td></tr><tr><th>utils</th><td>An instance of the <a href="http://formio.github.io/formio.js/docs/identifiers.html#utils" target="_blank">FormioUtils</a> object.</td></tr><tr><th>util</th><td>An alias for "utils".</td></tr></table><br/>'
543
+ },
544
+ {
545
+ type: 'textarea',
546
+ key: 'validate.custom',
547
+ rows: 5,
548
+ editor: 'ace',
549
+ hideLabel: true,
550
+ as: 'javascript',
551
+ input: true
552
+ },
553
+ {
554
+ type: 'htmlelement',
555
+ tag: 'div',
556
+ content: '\n <small>\n <p>Enter custom validation code.</p>\n <p>You must assign the <strong>valid</strong> variable as either <strong>true</strong> or an error message if validation fails.</p>\n <h5>Example:</h5>\n <pre>valid = (input === \'Joe\') ? true : \'Your name must be "Joe"\';</pre>\n </small>'
557
+ }
558
+ ]
559
+ },
560
+ {
561
+ type: 'panel',
562
+ title: 'JSONLogic Validation',
563
+ collapsible: true,
564
+ collapsed: true,
565
+ key: 'json-validation-json',
566
+ weight: 400,
567
+ components: [
568
+ {
569
+ type: 'htmlelement',
570
+ tag: 'div',
571
+ content: '<p>Execute custom logic using <a href="http://jsonlogic.com/" target="_blank">JSONLogic</a>.</p><h5>Example:</h5><pre>{\n "if": [\n {\n "===": [\n {\n "var": "input"\n },\n "Bob"\n ]\n },\n true,\n "Your name must be \'Bob\'!"\n ]\n}</pre>'
572
+ },
573
+ {
574
+ type: 'textarea',
575
+ key: 'validate.json',
576
+ hideLabel: true,
577
+ rows: 5,
578
+ editor: 'ace',
579
+ as: 'json',
580
+ input: true
581
+ }
582
+ ]
583
+ }
584
+ ];
585
+ export const baseConditional = [
586
+ {
587
+ type: 'panel',
588
+ title: 'Simple',
589
+ key: 'simple-conditional',
590
+ theme: 'default',
591
+ components: [
592
+ {
593
+ type: 'select',
594
+ input: true,
595
+ label: 'This component should Display:',
596
+ key: 'conditional.show',
597
+ dataSrc: 'values',
598
+ data: {
599
+ values: [
600
+ {
601
+ label: 'True',
602
+ value: 'true'
603
+ },
604
+ {
605
+ label: 'False',
606
+ value: 'false'
607
+ }
608
+ ]
609
+ }
610
+ },
611
+ {
612
+ type: 'select',
613
+ input: true,
614
+ label: 'When the form component:',
615
+ key: 'conditional.when',
616
+ dataSrc: 'custom',
617
+ valueProperty: 'value',
618
+ data: {}
619
+ },
620
+ {
621
+ type: 'textfield',
622
+ input: true,
623
+ label: 'Has the value:',
624
+ key: 'conditional.eq'
625
+ }
626
+ ]
627
+ },
628
+ {
629
+ type: 'panel',
630
+ title: 'Advanced Conditions',
631
+ theme: 'default',
632
+ collapsible: true,
633
+ collapsed: true,
634
+ key: 'customConditionalPanel',
635
+ weight: 110,
636
+ components: [
637
+ {
638
+ type: 'htmlelement',
639
+ tag: 'div',
640
+ content: '<p>The following variables are available in all scripts.</p><table class="table table-bordered table-condensed table-striped"><tr><th>form</th><td>The complete form JSON object</td></tr><tr><th>submission</th><td>The complete submission object.</td></tr><tr><th>data</th><td>The complete submission data object.</td></tr><tr><th>row</th><td>Contextual "row" data, used within DataGrid, EditGrid, and Container components</td></tr><tr><th>component</th><td>The current component JSON</td></tr><tr><th>instance</th><td>The current component instance.</td></tr><tr><th>value</th><td>The current value of the component.</td></tr><tr><th>moment</th><td>The moment.js library for date manipulation.</td></tr><tr><th>_</th><td>An instance of <a href="https://lodash.com/docs/" target="_blank">Lodash</a>.</td></tr><tr><th>utils</th><td>An instance of the <a href="http://formio.github.io/formio.js/docs/identifiers.html#utils" target="_blank">FormioUtils</a> object.</td></tr><tr><th>util</th><td>An alias for "utils".</td></tr></table><br/>'
641
+ },
642
+ {
643
+ type: 'panel',
644
+ title: 'JavaScript',
645
+ collapsible: true,
646
+ collapsed: false,
647
+ style: {
648
+ 'margin-bottom': '10px'
649
+ },
650
+ key: 'customConditional-js',
651
+ components: [
652
+ {
653
+ type: 'textarea',
654
+ key: 'customConditional',
655
+ rows: 5,
656
+ editor: 'ace',
657
+ hideLabel: true,
658
+ as: 'javascript',
659
+ input: true
660
+ },
661
+ {
662
+ type: 'htmlelement',
663
+ tag: 'div',
664
+ content: '<p>Enter custom javascript code.</p><p>You must assign the <strong>show</strong> variable a boolean result.</p><p><strong>Note: Advanced Conditional logic will override the results of the Simple Conditional logic.</strong></p><h5>Example</h5><pre>show = !!data.showMe;</pre>'
665
+ }
666
+ ]
667
+ },
668
+ {
669
+ type: 'panel',
670
+ title: 'JSONLogic',
671
+ collapsible: true,
672
+ collapsed: true,
673
+ key: 'customConditional-json',
674
+ components: [
675
+ {
676
+ type: 'htmlelement',
677
+ tag: 'div',
678
+ content: '<p>Execute custom logic using <a href="http://jsonlogic.com/" target="_blank">JSONLogic</a>.</p><p>Full <a href="https://lodash.com/docs" target="_blank">Lodash</a> support is provided using an "_" before each operation, such as <code>{"_sum": {var: "data.a"}}</code></p><p><a href="http://formio.github.io/formio.js/app/examples/conditions.html" target="_blank">Click here for an example</a></p>'
679
+ },
680
+ {
681
+ type: 'textarea',
682
+ key: 'conditional.json',
683
+ rows: 5,
684
+ editor: 'ace',
685
+ hideLabel: true,
686
+ as: 'json',
687
+ input: true
688
+ }
689
+ ]
690
+ }
691
+ ]
692
+ }
693
+ ];
694
+ const sortAndFilterComponents = (components) => {
695
+ return filter(sortBy(components, 'weight'), (item) => !item.ignore);
696
+ };
697
+ const unifyComponents = (objValue, srcValue) => {
698
+ if (objValue.key && srcValue.key) {
699
+ if (objValue.skipMerge || srcValue.skipMerge) {
700
+ return false;
701
+ }
702
+ if (objValue.key === srcValue.key) {
703
+ // Create complete objects by including missing keys.
704
+ each(objValue, (value, prop) => {
705
+ if (objValue.overrideEditForm || !srcValue.hasOwnProperty(prop)) {
706
+ srcValue[prop] = value;
707
+ }
708
+ });
709
+ each(srcValue, (value, prop) => {
710
+ if (srcValue.overrideEditForm || !objValue.hasOwnProperty(prop)) {
711
+ objValue[prop] = value;
712
+ }
713
+ });
714
+ if (objValue.components) {
715
+ srcValue.components = sortAndFilterComponents(unionWith(objValue.components, srcValue.components, unifyComponents));
716
+ }
717
+ return true;
718
+ }
719
+ else {
720
+ return false;
721
+ }
722
+ }
723
+ return isEqual(objValue, srcValue);
724
+ };
725
+ export const baseEditForm = (...extend) => {
726
+ const components = cloneDeep([
727
+ {
728
+ type: 'tabs',
729
+ key: 'tabs',
730
+ components: [{
731
+ key: 'display',
732
+ components: baseDisplay,
733
+ label: 'Display',
734
+ weight: 0
735
+ },
736
+ {
737
+ key: 'data',
738
+ components: baseData,
739
+ label: 'Data',
740
+ weight: 10
741
+ },
742
+ {
743
+ key: 'validation',
744
+ components: baseValidation,
745
+ label: 'Validation',
746
+ weight: 20
747
+ },
748
+ {
749
+ label: 'Conditional',
750
+ key: 'conditional',
751
+ weight: 40,
752
+ components: baseConditional
753
+ }
754
+ ]
755
+ }
756
+ ]).concat(extend.map((items) => ({
757
+ type: 'tabs',
758
+ key: 'tabs',
759
+ components: cloneDeep(items),
760
+ })));
761
+ return {
762
+ components: unionWith(components, unifyComponents).concat({
763
+ type: 'hidden',
764
+ key: 'type'
765
+ })
766
+ };
767
+ };
768
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1lZGl0LWZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9udXhlby1kZXZlbG9wbWVudC1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9jb21wb25lbnRzL2Zvcm0td3JhcHBlcnMvYmFzZS1lZGl0LWZvcm0vYmFzZS1lZGl0LWZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRTdFLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QjtRQUNFLE1BQU0sRUFBRSxDQUFDO1FBQ1QsSUFBSSxFQUFFLFdBQVc7UUFDakIsS0FBSyxFQUFFLElBQUk7UUFDWCxNQUFNLEVBQUUsSUFBSTtRQUNaLEdBQUcsRUFBRSxLQUFLO1FBQ1YsS0FBSyxFQUFFLGVBQWU7UUFDdEIsT0FBTyxFQUFFLDZDQUE2QztRQUN0RCxRQUFRLEVBQUU7WUFDUixPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLGNBQWMsRUFBRSxtSUFBbUk7WUFDbkosUUFBUSxFQUFFLElBQUk7U0FDZjtLQUNGO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsQ0FBQztRQUNULElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxJQUFJO1FBQ1gsR0FBRyxFQUFFLE9BQU87UUFDWixLQUFLLEVBQUUsaUJBQWlCO1FBQ3hCLFdBQVcsRUFBRSxhQUFhO1FBQzFCLE9BQU8sRUFBRSx1REFBdUQ7UUFDaEUsUUFBUSxFQUFFO1lBQ1IsUUFBUSxFQUFFLElBQUk7U0FDZjtLQUNGO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsRUFBRTtRQUNWLElBQUksRUFBRSxXQUFXO1FBQ2pCLEtBQUssRUFBRSxJQUFJO1FBQ1gsR0FBRyxFQUFFLFNBQVM7UUFDZCxL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bnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50cyB9IGZyb20gJ2Zvcm1pb2pzJztcclxuaW1wb3J0IHsgY2xvbmVEZWVwLCB1bmlvbldpdGgsIGVhY2gsIGZpbHRlciwgc29ydEJ5LCBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoJztcclxuXHJcbmV4cG9ydCBjb25zdCBiYXNlRGlzcGxheSA9IFtcclxuICB7XHJcbiAgICB3ZWlnaHQ6IDAsXHJcbiAgICB0eXBlOiAndGV4dGZpZWxkJyxcclxuICAgIGlucHV0OiB0cnVlLFxyXG4gICAgaGlkZGVuOiB0cnVlLFxyXG4gICAga2V5OiAna2V5JyxcclxuICAgIGxhYmVsOiAnUHJvcGVydHkgTmFtZScsXHJcbiAgICB0b29sdGlwOiAnVGhlIG5hbWUgb2YgdGhpcyBmaWVsZCBpbiB0aGUgQVBJIGVuZHBvaW50LicsXHJcbiAgICB2YWxpZGF0ZToge1xyXG4gICAgICBwYXR0ZXJuOiAnKFxcXFx3fFxcXFx3W1xcXFx3LS5dKlxcXFx3KScsXHJcbiAgICAgIHBhdHRlcm5NZXNzYWdlOiAnVGhlIHByb3BlcnR5IG5hbWUgbXVzdCBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIHVuZGVyc2NvcmVzLCBkb3RzIGFuZCBkYXNoZXMgYW5kIHNob3VsZCBub3QgYmUgZW5kZWQgYnkgZGFzaCBvciBkb3QuJyxcclxuICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxuICB9LFxyXG4gIHtcclxuICAgIHdlaWdodDogMCxcclxuICAgIHR5cGU6ICd0ZXh0ZmllbGQnLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICdsYWJlbCcsXHJcbiAgICBsYWJlbDogJ0xhYmVsIC0gRW5nbGlzaCcsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0ZpZWxkIExhYmVsJyxcclxuICAgIHRvb2x0aXA6ICdUaGUgbGFiZWwgZm9yIHRoaXMgZmllbGQgdGhhdCB3aWxsIGFwcGVhciBuZXh0IHRvIGl0LicsXHJcbiAgICB2YWxpZGF0ZToge1xyXG4gICAgICByZXF1aXJlZDogdHJ1ZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAxMCxcclxuICAgIHR5cGU6ICd0ZXh0ZmllbGQnLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICdsYWJlbEFyJyxcclxuICAgIGxhYmVsOiAnTGFiZWwgLSBBcmFiaWMnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdGaWVsZCBMYWJlbCcsXHJcbiAgICB0b29sdGlwOiAnVGhlIGxhYmVsIGZvciB0aGlzIGZpZWxkIHRoYXQgd2lsbCBhcHBlYXIgbmV4dCB0byBpdC4nLFxyXG4gICAgdmFsaWRhdGU6IHtcclxuICAgICAgcmVxdWlyZWQ6IHRydWVcclxuICAgIH1cclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICdsYWJlbFBvc2l0aW9uJyxcclxuICAgIGxhYmVsOiAnTGFiZWwgUG9zaXRpb24nLFxyXG4gICAgdG9vbHRpcDogJ1Bvc2l0aW9uIGZvciB0aGUgbGFiZWwgZm9yIHRoaXMgZmllbGQuJyxcclxuICAgIHdlaWdodDogMjAsXHJcbiAgICBkZWZhdWx0VmFsdWU6ICd0b3AnLFxyXG4gICAgZGF0YVNyYzogJ3ZhbHVlcycsXHJcbiAgICBkYXRhOiB7XHJcbiAgICAgIHZhbHVlczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiAnVG9wJyxcclxuICAgICAgICAgIHZhbHVlOiAndG9wJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdMZWZ0IChMZWZ0LWFsaWduZWQpJyxcclxuICAgICAgICAgIHZhbHVlOiAnbGVmdC1sZWZ0J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdMZWZ0IChSaWdodC1hbGlnbmVkKScsXHJcbiAgICAgICAgICB2YWx1ZTogJ2xlZnQtcmlnaHQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogJ1JpZ2h0IChMZWZ0LWFsaWduZWQpJyxcclxuICAgICAgICAgIHZhbHVlOiAncmlnaHQtbGVmdCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiAnUmlnaHQgKFJpZ2h0LWFsaWduZWQpJyxcclxuICAgICAgICAgIHZhbHVlOiAncmlnaHQtcmlnaHQnXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogJ0JvdHRvbScsXHJcbiAgICAgICAgICB2YWx1ZTogJ2JvdHRvbSdcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICdsYWJlbFdpZHRoJyxcclxuICAgIGxhYmVsOiAnTGFiZWwgV2lkdGgnLFxyXG4gICAgdG9vbHRpcDogJ1RoZSB3aWR0aCBvZiBsYWJlbCBvbiBsaW5lIGluIHBlcmNlbnRhZ2VzLicsXHJcbiAgICBjbGVhck9uSGlkZTogZmFsc2UsXHJcbiAgICB3ZWlnaHQ6IDMwLFxyXG4gICAgcGxhY2Vob2xkZXI6ICczMCcsXHJcbiAgICBzdWZmaXg6ICclJyxcclxuICAgIHZhbGlkYXRlOiB7XHJcbiAgICAgIG1pbjogMCxcclxuICAgICAgbWF4OiAxMDBcclxuICAgIH0sXHJcbiAgICBjb25kaXRpb25hbDoge1xyXG4gICAgICBqc29uOiB7XHJcbiAgICAgICAgYW5kOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICchPT0nOiBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFyOiAnZGF0YS5sYWJlbFBvc2l0aW9uJ1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgJ3RvcCdcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJyE9PSc6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YXI6ICdkYXRhLmxhYmVsUG9zaXRpb24nXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAnYm90dG9tJ1xyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgIGlucHV0OiB0cnVlLFxyXG4gICAga2V5OiAnbGFiZWxNYXJnaW4nLFxyXG4gICAgbGFiZWw6ICdMYWJlbCBNYXJnaW4nLFxyXG4gICAgdG9vbHRpcDogJ1RoZSB3aWR0aCBvZiBsYWJlbCBtYXJnaW4gb24gbGluZSBpbiBwZXJjZW50YWdlcy4nLFxyXG4gICAgY2xlYXJPbkhpZGU6IGZhbHNlLFxyXG4gICAgd2VpZ2h0OiAzMCxcclxuICAgIHBsYWNlaG9sZGVyOiAnMycsXHJcbiAgICBzdWZmaXg6ICclJyxcclxuICAgIHZhbGlkYXRlOiB7XHJcbiAgICAgIG1pbjogMCxcclxuICAgICAgbWF4OiAxMDBcclxuICAgIH0sXHJcbiAgICBjb25kaXRpb25hbDoge1xyXG4gICAgICBqc29uOiB7XHJcbiAgICAgICAgYW5kOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgICchPT0nOiBbXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdmFyOiAnZGF0YS5sYWJlbFBvc2l0aW9uJ1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgJ3RvcCdcclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgJyE9PSc6IFtcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB2YXI6ICdkYXRhLmxhYmVsUG9zaXRpb24nXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAnYm90dG9tJ1xyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICB7XHJcbiAgICB3ZWlnaHQ6IDIwMCxcclxuICAgIHR5cGU6ICd0ZXh0YXJlYScsXHJcbiAgICBpbnB1dDogdHJ1ZSxcclxuICAgIGtleTogJ2Rlc2NyaXB0aW9uJyxcclxuICAgIGxhYmVsOiAnRGVzY3JpcHRpb24gLSBFbmdsaXNoJyxcclxuICAgIHBsYWNlaG9sZGVyOiAnRGVzY3JpcHRpb24gZm9yIHRoaXMgZmllbGQuJyxcclxuICAgIHRvb2x0aXA6ICdUaGUgZGVzY3JpcHRpb24gaXMgdGV4dCB0aGF0IHdpbGwgYXBwZWFyIGJlbG93IHRoZSBpbnB1dCBmaWVsZC4nLFxyXG4gICAgZWRpdG9yOiAnYWNlJyxcclxuICAgIGFzOiAnaHRtbCcsXHJcbiAgICB3eXNpd3lnOiB7XHJcbiAgICAgIG1pbkxpbmVzOiAzLFxyXG4gICAgICBpc1VzZVdvcmtlckRpc2FibGVkOiB0cnVlXHJcbiAgICB9XHJcbiAgfSxcclxuICB7XHJcbiAgICB3ZWlnaHQ6IDIwMCxcclxuICAgIHR5cGU6ICd0ZXh0YXJlYScsXHJcbiAgICBpbnB1dDogdHJ1ZSxcclxuICAgIGtleTogJ2Rlc2NyaXB0aW9uQXInLFxyXG4gICAgbGFiZWw6ICdEZXNjcmlwdGlvbiAtIEFyYWJpYycsXHJcbiAgICBwbGFjZWhvbGRlcjogJ0Rlc2NyaXB0aW9uIGZvciB0aGlzIGZpZWxkLicsXHJcbiAgICB0b29sdGlwOiAnVGhlIGRlc2NyaXB0aW9uIGlzIHRleHQgdGhhdCB3aWxsIGFwcGVhciBiZWxvdyB0aGUgaW5wdXQgZmllbGQuJyxcclxuICAgIGVkaXRvcjogJ2FjZScsXHJcbiAgICBhczogJ2h0bWwnLFxyXG4gICAgd3lzaXd5Zzoge1xyXG4gICAgICBtaW5MaW5lczogMyxcclxuICAgICAgaXNVc2VXb3JrZXJEaXNhYmxlZDogdHJ1ZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAzMDAsXHJcbiAgICB0eXBlOiAndGV4dGFyZWEnLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICd0b29sdGlwJyxcclxuICAgIGxhYmVsOiAnVG9vbHRpcCAtIEVuZ2xpc2gnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdUbyBhZGQgYSB0b29sdGlwIHRvIHRoaXMgZmllbGQsIGVudGVyIHRleHQgaGVyZS4nLFxyXG4gICAgdG9vbHRpcDogJ0FkZHMgYSB0b29sdGlwIHRvIHRoZSBzaWRlIG9mIHRoaXMgZmllbGQuJyxcclxuICAgIGVkaXRvcjogJ2FjZScsXHJcbiAgICBhczogJ2h0bWwnLFxyXG4gICAgd3lzaXd5Zzoge1xyXG4gICAgICBtaW5MaW5lczogMyxcclxuICAgICAgaXNVc2VXb3JrZXJEaXNhYmxlZDogdHJ1ZVxyXG4gICAgfVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAzMDAsXHJcbiAgICB0eXBlOiAndGV4dGFyZWEnLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICd0b29sdGlwQXInLFxyXG4gICAgbGFiZWw6ICdUb29sdGlwIC0gQXJhYmljJyxcclxuICAgIHBsYWNlaG9sZGVyOiAnVG8gYWRkIGEgdG9vbHRpcCB0byB0aGlzIGZpZWxkLCBlbnRlciB0ZXh0IGhlcmUuJyxcclxuICAgIHRvb2x0aXA6ICdBZGRzIGEgdG9vbHRpcCB0byB0aGUgc2lkZSBvZiB0aGlzIGZpZWxkLicsXHJcbiAgICBlZGl0b3I6ICdhY2UnLFxyXG4gICAgYXM6ICdodG1sJyxcclxuICAgIHd5c2l3eWc6IHtcclxuICAgICAgbWluTGluZXM6IDMsXHJcbiAgICAgIGlzVXNlV29ya2VyRGlzYWJsZWQ6IHRydWVcclxuICAgIH1cclxuICB9LFxyXG4gIHtcclxuICAgIHdlaWdodDogNDEwLFxyXG4gICAgdHlwZTogJ3RleHRmaWVsZCcsXHJcbiAgICBpbnB1dDogdHJ1ZSxcclxuICAgIGtleTogJ2lucHV0TWFzaycsXHJcbiAgICBsYWJlbDogJ0lucHV0IE1hc2snLFxyXG4gICAgdG9vbHRpcDogJ0FuIGlucHV0IG1hc2sgaGVscHMgdGhlIHVzZXIgd2l0aCBpbnB1dCBieSBlbnN1cmluZyBhIHByZWRlZmluZWQgZm9ybWF0Ljxicj48YnI+OTogbnVtZXJpYzxicj5hOiBhbHBoYWJldGljYWw8YnI+KjogYWxwaGFudW1lcmljPGJyPjxicj5FeGFtcGxlIHRlbGVwaG9uZSBtYXNrOiAoOTk5KSA5OTktOTk5OTxicj48YnI+U2VlIHRoZSA8YSB0YXJnZXQ9XFwnX2JsYW5rXFwnIGhyZWY9XFwnaHR0cHM6Ly9naXRodWIuY29tL1JvYmluSGVyYm90cy9qcXVlcnkuaW5wdXRtYXNrXFwnPmpxdWVyeS5pbnB1dG1hc2sgZG9jdW1lbnRhdGlvbjwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uPC9hPidcclxuICB9LFxyXG4gIHtcclxuICAgIHdlaWdodDogNDExLFxyXG4gICAgdHlwZTogJ3RleHRmaWVsZCcsXHJcbiAgICBpbnB1dDogdHJ1ZSxcclxuICAgIGtleTogJ2lucHV0TWFza1BsYWNlaG9sZGVyQ2hhcicsXHJcbiAgICBsYWJlbDogJ0lucHV0IE1hc2sgUGxhY2Vob2xkZXIgQ2hhcicsXHJcbiAgICB0b29sdGlwOiAnWW91IGNhbiBzcGVjaWZ5IGEgY2hhciB3aGljaCB3aWxsIGJlIHVzZWQgYXMgYSBwbGFjZWhvbGRlciBpbiB0aGUgZmllbGQuIDxicj5FLmcuLCDLjTxicj5NYWtlIG5vdGUgdGhhdCBwbGFjZWhvbGRlciBjaGFyIHdpbGwgYmUgcmVwbGFjZWQgYnkgYSBzcGFjZSBpZiBpdCBpcyB1c2VkIGluc2lkZSB0aGUgbWFzaycsXHJcbiAgICB2YWxpZGF0aW9uOiB7XHJcbiAgICAgIG1heExlbmd0aDogMVxyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIHtcclxuICAgIHdlaWdodDogMTEwMCxcclxuICAgIHR5cGU6ICdjaGVja2JveCcsXHJcbiAgICBsYWJlbDogJ0hpZGRlbicsXHJcbiAgICB0b29sdGlwOiAnQSBoaWRkZW4gZmllbGQgaXMgc3RpbGwgYSBwYXJ0IG9mIHRoZSBmb3JtLCBidXQgaXMgaGlkZGVuIGZyb20gdmlldy4nLFxyXG4gICAga2V5OiAnaGlkZGVuJyxcclxuICAgIGlucHV0OiB0cnVlXHJcbiAgfSxcclxuICB7XHJcbiAgICB3ZWlnaHQ6IDEyMDAsXHJcbiAgICB0eXBlOiAnY2hlY2tib3gnLFxyXG4gICAgbGFiZWw6ICdIaWRlIExhYmVsJyxcclxuICAgIHRvb2x0aXA6ICdIaWRlIHRoZSBsYWJlbCAodGl0bGUsIGlmIG5vIGxhYmVsKSBvZiB0aGlzIGNvbXBvbmVudC4gVGhpcyBhbGxvd3MgeW91IHRvIHNob3cgdGhlIGxhYmVsIGluIHRoZSBmb3JtIGJ1aWxkZXIsIGJ1dCBub3Qgd2hlbiBpdCBpcyByZW5kZXJlZC4nLFxyXG4gICAga2V5OiAnaGlkZUxhYmVsJyxcclxuICAgIGlucHV0OiB0cnVlXHJcbiAgfSxcclxuXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAxNDAwLFxyXG4gICAgdHlwZTogJ2NoZWNrYm94JyxcclxuICAgIGxhYmVsOiAnRGlzYWJsZWQnLFxyXG4gICAgdG9vbHRpcDogJ0Rpc2FibGUgdGhlIGZvcm0gaW5wdXQuJyxcclxuICAgIGtleTogJ2Rpc2FibGVkJyxcclxuICAgIGlucHV0OiB0cnVlXHJcbiAgfVxyXG5cclxuXTtcclxuZXhwb3J0IGNvbnN0IGJhc2VEYXRhID0gW1xyXG4gIHtcclxuICAgIHdlaWdodDogMCxcclxuICAgIHR5cGU6ICdjaGVja2JveCcsXHJcbiAgICBsYWJlbDogJ011bHRpcGxlIFZhbHVlcycsXHJcbiAgICB0b29sdGlwOiAnQWxsb3dzIG11bHRpcGxlIHZhbHVlcyB0byBiZSBlbnRlcmVkIGZvciB0aGlzIGZpZWxkLicsXHJcbiAgICBrZXk6ICdtdWx0aXBsZScsXHJcbiAgICBpbnB1dDogdHJ1ZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogJ3RleHRmaWVsZCcsXHJcbiAgICBsYWJlbDogJ0RlZmF1bHQgVmFsdWUnLFxyXG4gICAga2V5OiAnZGVmYXVsdFZhbHVlJyxcclxuICAgIHdlaWdodDogNSxcclxuICAgIHBsYWNlaG9sZGVyOiAnRGVmYXVsdCBWYWx1ZScsXHJcbiAgICB0b29sdGlwOiAnVGhlIHdpbGwgYmUgdGhlIHZhbHVlIGZvciB0aGlzIGZpZWxkLCBiZWZvcmUgdXNlciBpbnRlcmFjdGlvbi4gSGF2aW5nIGEgZGVmYXVsdCB2YWx1ZSB3aWxsIG92ZXJyaWRlIHRoZSBwbGFjZWhvbGRlciB0ZXh0LicsXHJcbiAgICBpbnB1dDogdHJ1ZVxyXG4gIH0sXHJcblxyXG4gIHtcclxuICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgaW5wdXQ6IHRydWUsXHJcbiAgICBrZXk6ICdyZWRyYXdPbicsXHJcbiAgICBsYWJlbDogJ1JlZHJhdyBPbicsXHJcbiAgICB3ZWlnaHQ6IDYwMCxcclxuICAgIHRvb2x0aXA6ICdSZWRyYXcgdGhpcyBjb21wb25lbnQgaWYgYW5vdGhlciBjb21wb25lbnQgY2hhbmdlcy4gVGhpcyBpcyB1c2VmdWwgaWYgaW50ZXJwb2xhdGluZyBwYXJ0cyBvZiB0aGUgY29tcG9uZW50IGxpa2UgdGhlIGxhYmVsLicsXHJcbiAgICBkYXRhU3JjOiAnY3VzdG9tJyxcclxuICAgIHZhbHVlUHJvcGVydHk6ICd2YWx1ZScsXHJcbiAgICBkYXRhOiB7fSxcclxuICAgIGNvbmRpdGlvbmFsOiB7XHJcbiAgICAgIGpzb246IHtcclxuICAgICAgICAnISc6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdmFyOiAnZGF0YS5kYXRhU3JjJ1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiA3MDAsXHJcbiAgICB0eXBlOiAnY2hlY2tib3gnLFxyXG4gICAgbGFiZWw6ICdDbGVhciBWYWx1ZSBXaGVuIEhpZGRlbicsXHJcbiAgICBrZXk6ICdjbGVhck9uSGlkZScsXHJcbiAgICBkZWZhdWx0VmFsdWU6IHRydWUsXHJcbiAgICB0b29sdGlwOiAnV2hlbiBhIGZpZWxkIGlzIGhpZGRlbiwgY2xlYXIgdGhlIHZhbHVlLicsXHJcbiAgICBpbnB1dDogdHJ1ZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogJ3BhbmVsJyxcclxuICAgIHRpdGxlOiAnQ3VzdG9tIERlZmF1bHQgVmFsdWUnLFxyXG4gICAgdGhlbWU6ICdkZWZhdWx0JyxcclxuICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgY29sbGFwc2VkOiB0cnVlLFxyXG4gICAga2V5OiAnY3VzdG9tRGVmYXVsdFZhbHVlUGFuZWwnLFxyXG4gICAgd2VpZ2h0OiAxMDAwLFxyXG4gICAgY29tcG9uZW50czogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ2h0bWxlbGVtZW50JyxcclxuICAgICAgICB0YWc6ICdkaXYnLFxyXG4gICAgICAgIGNvbnRlbnQ6ICc8cD5UaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlIGluIGFsbCBzY3JpcHRzLjwvcD48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0YWJsZS1jb25kZW5zZWQgdGFibGUtc3RyaXBlZFwiPjx0cj48dGg+Zm9ybTwvdGg+PHRkPlRoZSBjb21wbGV0ZSBmb3JtIEpTT04gb2JqZWN0PC90ZD48L3RyPjx0cj48dGg+c3VibWlzc2lvbjwvdGg+PHRkPlRoZSBjb21wbGV0ZSBzdWJtaXNzaW9uIG9iamVjdC48L3RkPjwvdHI+PHRyPjx0aD5kYXRhPC90aD48dGQ+VGhlIGNvbXBsZXRlIHN1Ym1pc3Npb24gZGF0YSBvYmplY3QuPC90ZD48L3RyPjx0cj48dGg+cm93PC90aD48dGQ+Q29udGV4dHVhbCBcInJvd1wiIGRhdGEsIHVzZWQgd2l0aGluIERhdGFHcmlkLCBFZGl0R3JpZCwgYW5kIENvbnRhaW5lciBjb21wb25lbnRzPC90ZD48L3RyPjx0cj48dGg+Y29tcG9uZW50PC90aD48dGQ+VGhlIGN1cnJlbnQgY29tcG9uZW50IEpTT048L3RkPjwvdHI+PHRyPjx0aD5pbnN0YW5jZTwvdGg+PHRkPlRoZSBjdXJyZW50IGNvbXBvbmVudCBpbnN0YW5jZS48L3RkPjwvdHI+PHRyPjx0aD52YWx1ZTwvdGg+PHRkPlRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb21wb25lbnQuPC90ZD48L3RyPjx0cj48dGg+bW9tZW50PC90aD48dGQ+VGhlIG1vbWVudC5qcyBsaWJyYXJ5IGZvciBkYXRlIG1hbmlwdWxhdGlvbi48L3RkPjwvdHI+PHRyPjx0aD5fPC90aD48dGQ+QW4gaW5zdGFuY2Ugb2YgPGEgaHJlZj1cImh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzL1wiIHRhcmdldD1cIl9ibGFua1wiPkxvZGFzaDwvYT4uPC90ZD48L3RyPjx0cj48dGg+dXRpbHM8L3RoPjx0ZD5BbiBpbnN0YW5jZSBvZiB0aGUgPGEgaHJlZj1cImh0dHA6Ly9mb3JtaW8uZ2l0aHViLmlvL2Zvcm1pby5qcy9kb2NzL2lkZW50aWZpZXJzLmh0bWwjdXRpbHNcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Gb3JtaW9VdGlsczwvYT4gb2JqZWN0LjwvdGQ+PC90cj48dHI+PHRoPnV0aWw8L3RoPjx0ZD5BbiBhbGlhcyBmb3IgXCJ1dGlsc1wiLjwvdGQ+PC90cj48L3RhYmxlPjxici8+J1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ3BhbmVsJyxcclxuICAgICAgICB0aXRsZTogJ0phdmFTY3JpcHQnLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIGNvbGxhcHNlZDogZmFsc2UsXHJcbiAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICdtYXJnaW4tYm90dG9tJzogJzEwcHgnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBrZXk6ICdjdXN0b21EZWZhdWx0VmFsdWUtanMnLFxyXG4gICAgICAgIGNvbXBvbmVudHM6IFtcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcclxuICAgICAgICAgICAga2V5OiAnY3VzdG9tRGVmYXVsdFZhbHVlJyxcclxuICAgICAgICAgICAgcm93czogNSxcclxuICAgICAgICAgICAgZWRpdG9yOiAnYWNlJyxcclxuICAgICAgICAgICAgaGlkZUxhYmVsOiB0cnVlLFxyXG4gICAgICAgICAgICBhczogJ2phdmFzY3JpcHQnLFxyXG4gICAgICAgICAgICBpbnB1dDogdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2h0bWxlbGVtZW50JyxcclxuICAgICAgICAgICAgdGFnOiAnZGl2JyxcclxuICAgICAgICAgICAgY29udGVudDogJzxwPkVudGVyIGN1c3RvbSBqYXZhc2NyaXB0IGNvZGUuPC9wPjxwPjxoND5FeGFtcGxlOjwvaDQ+PHByZT52YWx1ZSA9IGRhdGEuZmlyc3ROYW1lICsgXCIgXCIgKyBkYXRhLmxhc3ROYW1lOzwvcHJlPjwvcD4nXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ3BhbmVsJyxcclxuICAgICAgICB0aXRsZTogJ0pTT05Mb2dpYycsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgY29sbGFwc2VkOiB0cnVlLFxyXG4gICAgICAgIGtleTogJ2N1c3RvbURlZmF1bHRWYWx1ZS1qc29uJyxcclxuICAgICAgICBjb21wb25lbnRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdodG1sZWxlbWVudCcsXHJcbiAgICAgICAgICAgIHRhZzogJ2RpdicsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc8cD5FeGVjdXRlIGN1c3RvbSBsb2dpYyB1c2luZyA8YSBocmVmPVwiaHR0cDovL2pzb25sb2dpYy5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+SlNPTkxvZ2ljPC9hPi48L3A+PHA+RnVsbCA8YSBocmVmPVwiaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3NcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Mb2Rhc2g8L2E+IHN1cHBvcnQgaXMgcHJvdmlkZWQgdXNpbmcgYW4gXCJfXCIgYmVmb3JlIGVhY2ggb3BlcmF0aW9uLCBzdWNoIGFzIDxjb2RlPntcIl9zdW1cIjoge3ZhcjogXCJkYXRhLmFcIn19PC9jb2RlPjwvcD48cD48aDQ+RXhhbXBsZTo8L2g0PjxwcmU+e1wiY2F0XCI6IFt7XCJ2YXJcIjogXCJkYXRhLmZpcnN0TmFtZVwifSwgXCIgXCIsIHtcInZhclwiOiBcImRhdGEubGFzdE5hbWVcIn1dfTwvcHJlPidcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXHJcbiAgICAgICAgICAgIGtleTogJ2N1c3RvbURlZmF1bHRWYWx1ZScsXHJcbiAgICAgICAgICAgIHJvd3M6IDUsXHJcbiAgICAgICAgICAgIGVkaXRvcjogJ2FjZScsXHJcbiAgICAgICAgICAgIGhpZGVMYWJlbDogdHJ1ZSxcclxuICAgICAgICAgICAgYXM6ICdqc29uJyxcclxuICAgICAgICAgICAgaW5wdXQ6IHRydWVcclxuICAgICAgICAgIH1cclxuICAgICAgICBdXHJcbiAgICAgIH1cclxuICAgIF1cclxuICB9LFxyXG4gIHtcclxuICAgIHR5cGU6ICdwYW5lbCcsXHJcbiAgICB0aXRsZTogJ0NhbGN1bGF0ZWQgVmFsdWUnLFxyXG4gICAgdGhlbWU6ICdkZWZhdWx0JyxcclxuICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgY29sbGFwc2VkOiB0cnVlLFxyXG4gICAga2V5OiAnY2FsY3VsYXRlVmFsdWVQYW5lbCcsXHJcbiAgICB3ZWlnaHQ6IDExMDAsXHJcbiAgICBjb21wb25lbnRzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAnaHRtbGVsZW1lbnQnLFxyXG4gICAgICAgIHRhZzogJ2RpdicsXHJcbiAgICAgICAgY29udGVudDogJzxwPlRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgaW4gYWxsIHNjcmlwdHMuPC9wPjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1zdHJpcGVkXCI+PHRyPjx0aD50b2tlbjwvdGg+PHRkPlRoZSBkZWNvZGVkIEpXVCB0b2tlbiBmb3IgdGhlIGF1dGhlbnRpY2F0ZWQgdXNlci48L3RkPjwvdHI+PHRyPjx0aD5mb3JtPC90aD48dGQ+VGhlIGNvbXBsZXRlIGZvcm0gSlNPTiBvYmplY3Q8L3RkPjwvdHI+PHRyPjx0aD5zdWJtaXNzaW9uPC90aD48dGQ+VGhlIGNvbXBsZXRlIHN1Ym1pc3Npb24gb2JqZWN0LjwvdGQ+PC90cj48dHI+PHRoPmRhdGE8L3RoPjx0ZD5UaGUgY29tcGxldGUgc3VibWlzc2lvbiBkYXRhIG9iamVjdC48L3RkPjwvdHI+PHRyPjx0aD5yb3c8L3RoPjx0ZD5Db250ZXh0dWFsIFwicm93XCIgZGF0YSwgdXNlZCB3aXRoaW4gRGF0YUdyaWQsIEVkaXRHcmlkLCBhbmQgQ29udGFpbmVyIGNvbXBvbmVudHM8L3RkPjwvdHI+PHRyPjx0aD5jb21wb25lbnQ8L3RoPjx0ZD5UaGUgY3VycmVudCBjb21wb25lbnQgSlNPTjwvdGQ+PC90cj48dHI+PHRoPmluc3RhbmNlPC90aD48dGQ+VGhlIGN1cnJlbnQgY29tcG9uZW50IGluc3RhbmNlLjwvdGQ+PC90cj48dHI+PHRoPnZhbHVlPC90aD48dGQ+VGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGNvbXBvbmVudC48L3RkPjwvdHI+PHRyPjx0aD5tb21lbnQ8L3RoPjx0ZD5UaGUgbW9tZW50LmpzIGxpYnJhcnkgZm9yIGRhdGUgbWFuaXB1bGF0aW9uLjwvdGQ+PC90cj48dHI+PHRoPl88L3RoPjx0ZD5BbiBpbnN0YW5jZSBvZiA8YSBocmVmPVwiaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3MvXCIgdGFyZ2V0PVwiX2JsYW5rXCI+TG9kYXNoPC9hPi48L3RkPjwvdHI+PHRyPjx0aD51dGlsczwvdGg+PHRkPkFuIGluc3RhbmNlIG9mIHRoZSA8YSBocmVmPVwiaHR0cDovL2Zvcm1pby5naXRodWIuaW8vZm9ybWlvLmpzL2RvY3MvaWRlbnRpZmllcnMuaHRtbCN1dGlsc1wiIHRhcmdldD1cIl9ibGFua1wiPkZvcm1pb1V0aWxzPC9hPiBvYmplY3QuPC90ZD48L3RyPjx0cj48dGg+dXRpbDwvdGg+PHRkPkFuIGFsaWFzIGZvciBcInV0aWxzXCIuPC90ZD48L3RyPjwvdGFibGU+PGJyLz4nXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAncGFuZWwnLFxyXG4gICAgICAgIHRpdGxlOiAnSmF2YVNjcmlwdCcsXHJcbiAgICAgICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICAgICAgY29sbGFwc2VkOiBmYWxzZSxcclxuICAgICAgICBzdHlsZToge1xyXG4gICAgICAgICAgJ21hcmdpbi1ib3R0b20nOiAnMTBweCdcclxuICAgICAgICB9LFxyXG4gICAgICAgIGtleTogJ2NhbGN1bGF0ZVZhbHVlLWpzJyxcclxuICAgICAgICBjb21wb25lbnRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXHJcbiAgICAgICAgICAgIGtleTogJ2NhbGN1bGF0ZVZhbHVlJyxcclxuICAgICAgICAgICAgcm93czogNSxcclxuICAgICAgICAgICAgZWRpdG9yOiAnYWNlJyxcclxuICAgICAgICAgICAgaGlkZUxhYmVsOiB0cnVlLFxyXG4gICAgICAgICAgICBhczogJ2phdmFzY3JpcHQnLFxyXG4gICAgICAgICAgICBpbnB1dDogdHJ1ZVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2h0bWxlbGVtZW50JyxcclxuICAgICAgICAgICAgdGFnOiAnZGl2JyxcclxuICAgICAgICAgICAgY29udGVudDogJzxwPkVudGVyIGN1c3RvbSBqYXZhc2NyaXB0IGNvZGUuPC9wPjxwPjxoND5FeGFtcGxlOjwvaDQ+PHByZT52YWx1ZSA9IGRhdGEuYSArIGRhdGEuYiArIGRhdGEuYzs8L3ByZT48L3A+J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6ICdwYW5lbCcsXHJcbiAgICAgICAgdGl0bGU6ICdKU09OTG9naWMnLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIGNvbGxhcHNlZDogdHJ1ZSxcclxuICAgICAgICBrZXk6ICdjYWxjdWxhdGVWYWx1ZS1qc29uJyxcclxuICAgICAgICBjb21wb25lbnRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdodG1sZWxlbWVudCcsXHJcbiAgICAgICAgICAgIHRhZzogJ2RpdicsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc8cD5FeGVjdXRlIGN1c3RvbSBsb2dpYyB1c2luZyA8YSBocmVmPVwiaHR0cDovL2pzb25sb2dpYy5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+SlNPTkxvZ2ljPC9hPi48L3A+PHA+RnVsbCA8YSBocmVmPVwiaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3NcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Mb2Rhc2g8L2E+IHN1cHBvcnQgaXMgcHJvdmlkZWQgdXNpbmcgYW4gXCJfXCIgYmVmb3JlIGVhY2ggb3BlcmF0aW9uLCBzdWNoIGFzIDxjb2RlPntcIl9zdW1cIjoge3ZhcjogXCJkYXRhLmFcIn19PC9jb2RlPjwvcD48cD48aDQ+RXhhbXBsZTo8L2g0PjxwcmU+e1wiK1wiOiBbe1widmFyXCI6IFwiZGF0YS5hXCJ9LCB7XCJ2YXJcIjogXCJkYXRhLmJcIn0sIHtcInZhclwiOiBcImRhdGEuY1wifV19PC9wcmU+PHA+PGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9mb3JtaW8uZ2l0aHViLmlvL2Zvcm1pby5qcy9hcHAvZXhhbXBsZXMvY2FsY3VsYXRlZC5odG1sXCI+Q2xpY2sgaGVyZSBmb3IgYW4gZXhhbXBsZTwvYT48L3A+J1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcclxuICAgICAgICAgICAga2V5OiAnY2FsY3VsYXRlVmFsdWUnLFxyXG4gICAgICAgICAgICByb3dzOiA1LFxyXG4gICAgICAgICAgICBlZGl0b3I6ICdhY2UnLFxyXG4gICAgICAgICAgICBoaWRlTGFiZWw6IHRydWUsXHJcbiAgICAgICAgICAgIGFzOiAnanNvbicsXHJcbiAgICAgICAgICAgIGlucHV0OiB0cnVlXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfSxcclxuXHJcbiAge1xyXG4gICAgdHlwZTogJ2NoZWNrYm94JyxcclxuICAgIGlucHV0OiB0cnVlLFxyXG4gICAgd2VpZ2h0OiAxMjAwLFxyXG4gICAga2V5OiAnYWxsb3dDYWxjdWxhdGVPdmVycmlkZScsXHJcbiAgICBsYWJlbDogJ0FsbG93IE1hbnVhbCBPdmVycmlkZSBvZiBDYWxjdWxhdGVkIFZhbHVlJyxcclxuICAgIHRvb2x0aXA6ICdXaGVuIGNoZWNrZWQsIHRoaXMgd2lsbCBhbGxvdyB0aGUgdXNlciB0byBtYW51YWxseSBvdmVycmlkZSB0aGUgY2FsY3VsYXRlZCB2YWx1ZS4nXHJcbiAgfVxyXG5dO1xyXG5leHBvcnQgY29uc3QgYmFzZVZhbGlkYXRpb24gPSBbXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAwLFxyXG4gICAgdHlwZTogJ3NlbGVjdCcsXHJcbiAgICBrZXk6ICd2YWxpZGF0ZU9uJyxcclxuICAgIGRlZmF1bHRWYWx1ZTogJ2NoYW5nZScsXHJcbiAgICBpbnB1dDogdHJ1ZSxcclxuICAgIGxhYmVsOiAnVmFsaWRhdGUgT24nLFxyXG4gICAgdG9vbHRpcDogJ0RldGVybWluZXMgd2hlbiB0aGlzIGNvbXBvbmVudCBzaG91bGQgdHJpZ2dlciBmcm9udC1lbmQgdmFsaWRhdGlvbi4nLFxyXG4gICAgZGF0YVNyYzogJ3ZhbHVlcycsXHJcbiAgICBkYXRhOiB7XHJcbiAgICAgIHZhbHVlczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiAnQ2hhbmdlJyxcclxuICAgICAgICAgIHZhbHVlOiAnY2hhbmdlJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6ICdCbHVyJyxcclxuICAgICAgICAgIHZhbHVlOiAnYmx1cidcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICAgIH1cclxuICB9LFxyXG4gIHtcclxuICAgIHdlaWdodDogMTAsXHJcbiAgICB0eXBlOiAnY2hlY2tib3gnLFxyXG4gICAgbGFiZWw6ICdSZXF1aXJlZCcsXHJcbiAgICB0b29sdGlwOiAnQSByZXF1aXJlZCBmaWVsZCBtdXN0IGJlIGZpbGxlZCBpbiBiZWZvcmUgdGhlIGZvcm0gY2FuIGJlIHN1Ym1pdHRlZC4nLFxyXG4gICAga2V5OiAndmFsaWRhdGUucmVxdWlyZWQnLFxyXG4gICAgaW5wdXQ6IHRydWVcclxuICB9LFxyXG4gIHtcclxuICAgIHdlaWdodDogMTEwLFxyXG4gICAga2V5OiAndmFsaWRhdGUubWluTGVuZ3RoJyxcclxuICAgIGxhYmVsOiAnTWluaW11bSBMZW5ndGgnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdNaW5pbXVtIExlbmd0aCcsXHJcbiAgICB0eXBlOiAnbnVtYmVyJyxcclxuICAgIHRvb2x0aXA6ICdUaGUgbWluaW11bSBsZW5ndGggcmVxdWlyZW1lbnQgdGhpcyBmaWVsZCBtdXN0IG1lZXQuJyxcclxuICAgIGlucHV0OiB0cnVlXHJcbiAgfSxcclxuICB7XHJcbiAgICB3ZWlnaHQ6IDEyMCxcclxuICAgIGtleTogJ3ZhbGlkYXRlLm1heExlbmd0aCcsXHJcbiAgICBsYWJlbDogJ01heGltdW0gTGVuZ3RoJyxcclxuICAgIHBsYWNlaG9sZGVyOiAnTWF4aW11bSBMZW5ndGgnLFxyXG4gICAgdHlwZTogJ251bWJlcicsXHJcbiAgICB0b29sdGlwOiAnVGhlIG1heGltdW0gbGVuZ3RoIHJlcXVpcmVtZW50IHRoaXMgZmllbGQgbXVzdCBtZWV0LicsXHJcbiAgICBpbnB1dDogdHJ1ZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAxMjUsXHJcbiAgICBrZXk6ICd2YWxpZGF0ZS5taW5Xb3JkcycsXHJcbiAgICBsYWJlbDogJ01pbmltdW0gV29yZCBMZW5ndGgnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdNaW5pbXVtIFdvcmQgTGVuZ3RoJyxcclxuICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgdG9vbHRpcDogJ1RoZSBtaW5pbXVtIGFtb3VudCBvZiB3b3JkcyB0aGF0IGNhbiBiZSBhZGRlZCB0byB0aGlzIGZpZWxkLicsXHJcbiAgICBpbnB1dDogdHJ1ZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAxMjYsXHJcbiAgICBrZXk6ICd2YWxpZGF0ZS5tYXhXb3JkcycsXHJcbiAgICBsYWJlbDogJ01heGltdW0gV29yZCBMZW5ndGgnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdNYXhpbXVtIFdvcmQgTGVuZ3RoJyxcclxuICAgIHR5cGU6ICdudW1iZXInLFxyXG4gICAgdG9vbHRpcDogJ1RoZSBtYXhpbXVtIGFtb3VudCBvZiB3b3JkcyB0aGF0IGNhbiBiZSBhZGRlZCB0byB0aGlzIGZpZWxkLicsXHJcbiAgICBpbnB1dDogdHJ1ZVxyXG4gIH0sXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAxMzAsXHJcbiAgICBrZXk6ICd2YWxpZGF0ZS5wYXR0ZXJuJyxcclxuICAgIGxhYmVsOiAnUmVndWxhciBFeHByZXNzaW9uIFBhdHRlcm4nLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdSZWd1bGFyIEV4cHJlc3Npb24gUGF0dGVybicsXHJcbiAgICB0eXBlOiAndGV4dGZpZWxkJyxcclxuICAgIHRvb2x0aXA6ICdUaGUgcmVndWxhciBleHByZXNzaW9uIHBhdHRlcm4gdGVzdCB0aGF0IHRoZSBmaWVsZCB2YWx1ZSBtdXN0IHBhc3MgYmVmb3JlIHRoZSBmb3JtIGNhbiBiZSBzdWJtaXR0ZWQuJyxcclxuICAgIGlucHV0OiB0cnVlXHJcbiAgfSxcclxuXHJcbiAge1xyXG4gICAgd2VpZ2h0OiAyMDAsXHJcbiAgICBrZXk6ICd2YWxpZGF0ZS5jdXN0b21NZXNzYWdlJyxcclxuICAgIGxhYmVsOiAnQ3VzdG9tIEVycm9yIE1lc3NhZ2UnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdDdXN0b20gRXJyb3IgTWVzc2FnZScsXHJcbiAgICB0eXBlOiAndGV4dGZpZWxkJyxcclxuICAgIHRvb2x0aXA6ICdFcnJvciBtZXNzYWdlIGRpc3BsYXllZCBpZiBhbnkgZXJyb3Igb2NjdXJyZWQuJyxcclxuICAgIGlucHV0OiB0cnVlXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiAncGFuZWwnLFxyXG4gICAgdGl0bGU6ICdDdXN0b20gVmFsaWRhdGlvbicsXHJcbiAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgIGNvbGxhcHNlZDogdHJ1ZSxcclxuICAgIHN0eWxlOiB7XHJcbiAgICAgICdtYXJnaW4tYm90dG9tJzogJzEwcHgnXHJcbiAgICB9LFxyXG4gICAga2V5OiAnY3VzdG9tLXZhbGlkYXRpb24tanMnLFxyXG4gICAgd2VpZ2h0OiAzMDAsXHJcbiAgICBjb21wb25lbnRzOiBbXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAnaHRtbGVsZW1lbnQnLFxyXG4gICAgICAgIHRhZzogJ2RpdicsXHJcbiAgICAgICAgY29udGVudDogJzxwPlRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgaW4gYWxsIHNjcmlwdHMuPC9wPjx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIHRhYmxlLWNvbmRlbnNlZCB0YWJsZS1zdHJpcGVkXCI+PHRyPjx0aD5pbnB1dDwvdGg+PHRkPlRoZSB2YWx1ZSB0aGF0IHdhcyBpbnB1dCBpbnRvIHRoaXMgY29tcG9uZW50PC90ZD48L3RyPjx0cj48dGg+Zm9ybTwvdGg+PHRkPlRoZSBjb21wbGV0ZSBmb3JtIEpTT04gb2JqZWN0PC90ZD48L3RyPjx0cj48dGg+c3VibWlzc2lvbjwvdGg+PHRkPlRoZSBjb21wbGV0ZSBzdWJtaXNzaW9uIG9iamVjdC48L3RkPjwvdHI+PHRyPjx0aD5kYXRhPC90aD48dGQ+VGhlIGNvbXBsZXRlIHN1Ym1pc3Npb24gZGF0YSBvYmplY3QuPC90ZD48L3RyPjx0cj48dGg+cm93PC90aD48dGQ+Q29udGV4dHVhbCBcInJvd1wiIGRhdGEsIHVzZWQgd2l0aGluIERhdGFHcmlkLCBFZGl0R3JpZCwgYW5kIENvbnRhaW5lciBjb21wb25lbnRzPC90ZD48L3RyPjx0cj48dGg+Y29tcG9uZW50PC90aD48dGQ+VGhlIGN1cnJlbnQgY29tcG9uZW50IEpTT048L3RkPjwvdHI+PHRyPjx0aD5pbnN0YW5jZTwvdGg+PHRkPlRoZSBjdXJyZW50IGNvbXBvbmVudCBpbnN0YW5jZS48L3RkPjwvdHI+PHRyPjx0aD52YWx1ZTwvdGg+PHRkPlRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb21wb25lbnQuPC90ZD48L3RyPjx0cj48dGg+bW9tZW50PC90aD48dGQ+VGhlIG1vbWVudC5qcyBsaWJyYXJ5IGZvciBkYXRlIG1hbmlwdWxhdGlvbi48L3RkPjwvdHI+PHRyPjx0aD5fPC90aD48dGQ+QW4gaW5zdGFuY2Ugb2YgPGEgaHJlZj1cImh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzL1wiIHRhcmdldD1cIl9ibGFua1wiPkxvZGFzaDwvYT4uPC90ZD48L3RyPjx0cj48dGg+dXRpbHM8L3RoPjx0ZD5BbiBpbnN0YW5jZSBvZiB0aGUgPGEgaHJlZj1cImh0dHA6Ly9mb3JtaW8uZ2l0aHViLmlvL2Zvcm1pby5qcy9kb2NzL2lkZW50aWZpZXJzLmh0bWwjdXRpbHNcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Gb3JtaW9VdGlsczwvYT4gb2JqZWN0LjwvdGQ+PC90cj48dHI+PHRoPnV0aWw8L3RoPjx0ZD5BbiBhbGlhcyBmb3IgXCJ1dGlsc1wiLjwvdGQ+PC90cj48L3RhYmxlPjxici8+J1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcclxuICAgICAgICBrZXk6ICd2YWxpZGF0ZS5jdXN0b20nLFxyXG4gICAgICAgIHJvd3M6IDUsXHJcbiAgICAgICAgZWRpdG9yOiAnYWNlJyxcclxuICAgICAgICBoaWRlTGFiZWw6IHRydWUsXHJcbiAgICAgICAgYXM6ICdqYXZhc2NyaXB0JyxcclxuICAgICAgICBpbnB1dDogdHJ1ZVxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ2h0bWxlbGVtZW50JyxcclxuICAgICAgICB0YWc6ICdkaXYnLFxyXG4gICAgICAgIGNvbnRlbnQ6ICdcXG4gICAgICAgICAgPHNtYWxsPlxcbiAgICAgICAgICAgIDxwPkVudGVyIGN1c3RvbSB2YWxpZGF0aW9uIGNvZGUuPC9wPlxcbiAgICAgICAgICAgIDxwPllvdSBtdXN0IGFzc2lnbiB0aGUgPHN0cm9uZz52YWxpZDwvc3Ryb25nPiB2YXJpYWJsZSBhcyBlaXRoZXIgPHN0cm9uZz50cnVlPC9zdHJvbmc+IG9yIGFuIGVycm9yIG1lc3NhZ2UgaWYgdmFsaWRhdGlvbiBmYWlscy48L3A+XFxuICAgICAgICAgICAgPGg1PkV4YW1wbGU6PC9oNT5cXG4gICAgICAgICAgICA8cHJlPnZhbGlkID0gKGlucHV0ID09PSBcXCdKb2VcXCcpID8gdHJ1ZSA6IFxcJ1lvdXIgbmFtZSBtdXN0IGJlIFwiSm9lXCJcXCc7PC9wcmU+XFxuICAgICAgICAgIDwvc21hbGw+J1xyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfSxcclxuICB7XHJcbiAgICB0eXBlOiAncGFuZWwnLFxyXG4gICAgdGl0bGU6ICdKU09OTG9naWMgVmFsaWRhdGlvbicsXHJcbiAgICBjb2xsYXBzaWJsZTogdHJ1ZSxcclxuICAgIGNvbGxhcHNlZDogdHJ1ZSxcclxuICAgIGtleTogJ2pzb24tdmFsaWRhdGlvbi1qc29uJyxcclxuICAgIHdlaWdodDogNDAwLFxyXG4gICAgY29tcG9uZW50czogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ2h0bWxlbGVtZW50JyxcclxuICAgICAgICB0YWc6ICdkaXYnLFxyXG4gICAgICAgIGNvbnRlbnQ6ICc8cD5FeGVjdXRlIGN1c3RvbSBsb2dpYyB1c2luZyA8YSBocmVmPVwiaHR0cDovL2pzb25sb2dpYy5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+SlNPTkxvZ2ljPC9hPi48L3A+PGg1PkV4YW1wbGU6PC9oNT48cHJlPntcXG4gIFwiaWZcIjogW1xcbiAgICB7XFxuICAgICAgXCI9PT1cIjogW1xcbiAgICAgICAge1xcbiAgICAgICAgICBcInZhclwiOiBcImlucHV0XCJcXG4gICAgICAgIH0sXFxuICAgICAgICBcIkJvYlwiXFxuICAgICAgXVxcbiAgICB9LFxcbiAgICB0cnVlLFxcbiAgICBcIllvdXIgbmFtZSBtdXN0IGJlIFxcJ0JvYlxcJyFcIlxcbiAgXVxcbn08L3ByZT4nXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxyXG4gICAgICAgIGtleTogJ3ZhbGlkYXRlLmpzb24nLFxyXG4gICAgICAgIGhpZGVMYWJlbDogdHJ1ZSxcclxuICAgICAgICByb3dzOiA1LFxyXG4gICAgICAgIGVkaXRvcjogJ2FjZScsXHJcbiAgICAgICAgYXM6ICdqc29uJyxcclxuICAgICAgICBpbnB1dDogdHJ1ZVxyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgfVxyXG5dO1xyXG5leHBvcnQgY29uc3QgYmFzZUNvbmRpdGlvbmFsID0gW1xyXG4gIHtcclxuICAgIHR5cGU6ICdwYW5lbCcsXHJcbiAgICB0aXRsZTogJ1NpbXBsZScsXHJcbiAgICBrZXk6ICdzaW1wbGUtY29uZGl0aW9uYWwnLFxyXG4gICAgdGhlbWU6ICdkZWZhdWx0JyxcclxuICAgIGNvbXBvbmVudHM6IFtcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgICAgIGlucHV0OiB0cnVlLFxyXG4gICAgICAgIGxhYmVsOiAnVGhpcyBjb21wb25lbnQgc2hvdWxkIERpc3BsYXk6JyxcclxuICAgICAgICBrZXk6ICdjb25kaXRpb25hbC5zaG93JyxcclxuICAgICAgICBkYXRhU3JjOiAndmFsdWVzJyxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICB2YWx1ZXM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGxhYmVsOiAnVHJ1ZScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICd0cnVlJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgbGFiZWw6ICdGYWxzZScsXHJcbiAgICAgICAgICAgICAgdmFsdWU6ICdmYWxzZSdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6ICdzZWxlY3QnLFxyXG4gICAgICAgIGlucHV0OiB0cnVlLFxyXG4gICAgICAgIGxhYmVsOiAnV2hlbiB0aGUgZm9ybSBjb21wb25lbnQ6JyxcclxuICAgICAgICBrZXk6ICdjb25kaXRpb25hbC53aGVuJyxcclxuICAgICAgICBkYXRhU3JjOiAnY3VzdG9tJyxcclxuICAgICAgICB2YWx1ZVByb3BlcnR5OiAndmFsdWUnLFxyXG4gICAgICAgIGRhdGE6IHt9XHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0eXBlOiAndGV4dGZpZWxkJyxcclxuICAgICAgICBpbnB1dDogdHJ1ZSxcclxuICAgICAgICBsYWJlbDogJ0hhcyB0aGUgdmFsdWU6JyxcclxuICAgICAgICBrZXk6ICdjb25kaXRpb25hbC5lcSdcclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH0sXHJcbiAge1xyXG4gICAgdHlwZTogJ3BhbmVsJyxcclxuICAgIHRpdGxlOiAnQWR2YW5jZWQgQ29uZGl0aW9ucycsXHJcbiAgICB0aGVtZTogJ2RlZmF1bHQnLFxyXG4gICAgY29sbGFwc2libGU6IHRydWUsXHJcbiAgICBjb2xsYXBzZWQ6IHRydWUsXHJcbiAgICBrZXk6ICdjdXN0b21Db25kaXRpb25hbFBhbmVsJyxcclxuICAgIHdlaWdodDogMTEwLFxyXG4gICAgY29tcG9uZW50czogW1xyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ2h0bWxlbGVtZW50JyxcclxuICAgICAgICB0YWc6ICdkaXYnLFxyXG4gICAgICAgIGNvbnRlbnQ6ICc8cD5UaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgYXZhaWxhYmxlIGluIGFsbCBzY3JpcHRzLjwvcD48dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0YWJsZS1jb25kZW5zZWQgdGFibGUtc3RyaXBlZFwiPjx0cj48dGg+Zm9ybTwvdGg+PHRkPlRoZSBjb21wbGV0ZSBmb3JtIEpTT04gb2JqZWN0PC90ZD48L3RyPjx0cj48dGg+c3VibWlzc2lvbjwvdGg+PHRkPlRoZSBjb21wbGV0ZSBzdWJtaXNzaW9uIG9iamVjdC48L3RkPjwvdHI+PHRyPjx0aD5kYXRhPC90aD48dGQ+VGhlIGNvbXBsZXRlIHN1Ym1pc3Npb24gZGF0YSBvYmplY3QuPC90ZD48L3RyPjx0cj48dGg+cm93PC90aD48dGQ+Q29udGV4dHVhbCBcInJvd1wiIGRhdGEsIHVzZWQgd2l0aGluIERhdGFHcmlkLCBFZGl0R3JpZCwgYW5kIENvbnRhaW5lciBjb21wb25lbnRzPC90ZD48L3RyPjx0cj48dGg+Y29tcG9uZW50PC90aD48dGQ+VGhlIGN1cnJlbnQgY29tcG9uZW50IEpTT048L3RkPjwvdHI+PHRyPjx0aD5pbnN0YW5jZTwvdGg+PHRkPlRoZSBjdXJyZW50IGNvbXBvbmVudCBpbnN0YW5jZS48L3RkPjwvdHI+PHRyPjx0aD52YWx1ZTwvdGg+PHRkPlRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBjb21wb25lbnQuPC90ZD48L3RyPjx0cj48dGg+bW9tZW50PC90aD48dGQ+VGhlIG1vbWVudC5qcyBsaWJyYXJ5IGZvciBkYXRlIG1hbmlwdWxhdGlvbi48L3RkPjwvdHI+PHRyPjx0aD5fPC90aD48dGQ+QW4gaW5zdGFuY2Ugb2YgPGEgaHJlZj1cImh0dHBzOi8vbG9kYXNoLmNvbS9kb2NzL1wiIHRhcmdldD1cIl9ibGFua1wiPkxvZGFzaDwvYT4uPC90ZD48L3RyPjx0cj48dGg+dXRpbHM8L3RoPjx0ZD5BbiBpbnN0YW5jZSBvZiB0aGUgPGEgaHJlZj1cImh0dHA6Ly9mb3JtaW8uZ2l0aHViLmlvL2Zvcm1pby5qcy9kb2NzL2lkZW50aWZpZXJzLmh0bWwjdXRpbHNcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Gb3JtaW9VdGlsczwvYT4gb2JqZWN0LjwvdGQ+PC90cj48dHI+PHRoPnV0aWw8L3RoPjx0ZD5BbiBhbGlhcyBmb3IgXCJ1dGlsc1wiLjwvdGQ+PC90cj48L3RhYmxlPjxici8+J1xyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdHlwZTogJ3BhbmVsJyxcclxuICAgICAgICB0aXRsZTogJ0phdmFTY3JpcHQnLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIGNvbGxhcHNlZDogZmFsc2UsXHJcbiAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICdtYXJnaW4tYm90dG9tJzogJzEwcHgnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBrZXk6ICdjdXN0b21Db25kaXRpb25hbC1qcycsXHJcbiAgICAgICAgY29tcG9uZW50czogW1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxyXG4gICAgICAgICAgICBrZXk6ICdjdXN0b21Db25kaXRpb25hbCcsXHJcbiAgICAgICAgICAgIHJvd3M6IDUsXHJcbiAgICAgICAgICAgIGVkaXRvcjogJ2FjZScsXHJcbiAgICAgICAgICAgIGhpZGVMYWJlbDogdHJ1ZSxcclxuICAgICAgICAgICAgYXM6ICdqYXZhc2NyaXB0JyxcclxuICAgICAgICAgICAgaW5wdXQ6IHRydWVcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdodG1sZWxlbWVudCcsXHJcbiAgICAgICAgICAgIHRhZzogJ2RpdicsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc8cD5FbnRlciBjdXN0b20gamF2YXNjcmlwdCBjb2RlLjwvcD48cD5Zb3UgbXVzdCBhc3NpZ24gdGhlIDxzdHJvbmc+c2hvdzwvc3Ryb25nPiB2YXJpYWJsZSBhIGJvb2xlYW4gcmVzdWx0LjwvcD48cD48c3Ryb25nPk5vdGU6IEFkdmFuY2VkIENvbmRpdGlvbmFsIGxvZ2ljIHdpbGwgb3ZlcnJpZGUgdGhlIHJlc3VsdHMgb2YgdGhlIFNpbXBsZSBDb25kaXRpb25hbCBsb2dpYy48L3N0cm9uZz48L3A+PGg1PkV4YW1wbGU8L2g1PjxwcmU+c2hvdyA9ICEhZGF0YS5zaG93TWU7PC9wcmU+J1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHR5cGU6ICdwYW5lbCcsXHJcbiAgICAgICAgdGl0bGU6ICdKU09OTG9naWMnLFxyXG4gICAgICAgIGNvbGxhcHNpYmxlOiB0cnVlLFxyXG4gICAgICAgIGNvbGxhcHNlZDogdHJ1ZSxcclxuICAgICAgICBrZXk6ICdjdXN0b21Db25kaXRpb25hbC1qc29uJyxcclxuICAgICAgICBjb21wb25lbnRzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdodG1sZWxlbWVudCcsXHJcbiAgICAgICAgICAgIHRhZzogJ2RpdicsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICc8cD5FeGVjdXRlIGN1c3RvbSBsb2dpYyB1c2luZyA8YSBocmVmPVwiaHR0cDovL2pzb25sb2dpYy5jb20vXCIgdGFyZ2V0PVwiX2JsYW5rXCI+SlNPTkxvZ2ljPC9hPi48L3A+PHA+RnVsbCA8YSBocmVmPVwiaHR0cHM6Ly9sb2Rhc2guY29tL2RvY3NcIiB0YXJnZXQ9XCJfYmxhbmtcIj5Mb2Rhc2g8L2E+IHN1cHBvcnQgaXMgcHJvdmlkZWQgdXNpbmcgYW4gXCJfXCIgYmVmb3JlIGVhY2ggb3BlcmF0aW9uLCBzdWNoIGFzIDxjb2RlPntcIl9zdW1cIjoge3ZhcjogXCJkYXRhLmFcIn19PC9jb2RlPjwvcD48cD48YSBocmVmPVwiaHR0cDovL2Zvcm1pby5naXRodWIuaW8vZm9ybWlvLmpzL2FwcC9leGFtcGxlcy9jb25kaXRpb25zLmh0bWxcIiB0YXJnZXQ9XCJfYmxhbmtcIj5DbGljayBoZXJlIGZvciBhbiBleGFtcGxlPC9hPjwvcD4nXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxyXG4gICAgICAgICAgICBrZXk6ICdjb25kaXRpb25hbC5qc29uJyxcclxuICAgICAgICAgICAgcm93czogNSxcclxuICAgICAgICAgICAgZWRpdG9yOiAnYWNlJyxcclxuICAgICAgICAgICAgaGlkZUxhYmVsOiB0cnVlLFxyXG4gICAgICAgICAgICBhczogJ2pzb24nLFxyXG4gICAgICAgICAgICBpbnB1dDogdHJ1ZVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH1cclxuXTtcclxuY29uc3Qgc29ydEFuZEZpbHRlckNvbXBvbmVudHMgPSAoY29tcG9uZW50cykgPT4ge1xyXG4gIHJldHVybiBmaWx0ZXIoc29ydEJ5KGNvbXBvbmVudHMsICd3ZWlnaHQnKSwgKGl0ZW0pID0+ICFpdGVtLmlnbm9yZSk7XHJcbn07XHJcbmNvbnN0IHVuaWZ5Q29tcG9uZW50cyA9IChvYmpWYWx1ZSwgc3JjVmFsdWUpID0+IHtcclxuICBpZiAob2JqVmFsdWUua2V5ICYmIHNyY1ZhbHVlLmtleSkge1xyXG4gICAgaWYgKG9ialZhbHVlLnNraXBNZXJnZSB8fCBzcmNWYWx1ZS5za2lwTWVyZ2UpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKG9ialZhbHVlLmtleSA9PT0gc3JjVmFsdWUua2V5KSB7XHJcbiAgICAgIC8vIENyZWF0ZSBjb21wbGV0ZSBvYmplY3RzIGJ5IGluY2x1ZGluZyBtaXNzaW5nIGtleXMuXHJcbiAgICAgIGVhY2gob2JqVmFsdWUsICh2YWx1ZSwgcHJvcCkgPT4ge1xyXG4gICAgICAgIGlmIChvYmpWYWx1ZS5vdmVycmlkZUVkaXRGb3JtIHx8ICFzcmNWYWx1ZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xyXG4gICAgICAgICAgc3JjVmFsdWVbcHJvcF0gPSB2YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBlYWNoKHNyY1ZhbHVlLCAodmFsdWUsIHByb3ApID0+IHtcclxuICAgICAgICBpZiAoc3JjVmFsdWUub3ZlcnJpZGVFZGl0Rm9ybSB8fCAhb2JqVmFsdWUuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcclxuICAgICAgICAgIG9ialZhbHVlW3Byb3BdID0gdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChvYmpWYWx1ZS5jb21wb25lbnRzKSB7XHJcbiAgICAgICAgc3JjVmFsdWUuY29tcG9uZW50cyA9IHNvcnRBbmRGaWx0ZXJDb21wb25lbnRzKFxyXG4gICAgICAgICAgdW5pb25XaXRoKG9ialZhbHVlLmNvbXBvbmVudHMsIHNyY1ZhbHVlLmNvbXBvbmVudHMsIHVuaWZ5Q29tcG9uZW50cylcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGlzRXF1YWwob2JqVmFsdWUsIHNyY1ZhbHVlKTtcclxufTtcclxuZXhwb3J0IGNvbnN0IGJhc2VFZGl0Rm9ybSA9ICguLi5leHRlbmQpID0+IHtcclxuXHJcbiAgY29uc3QgY29tcG9uZW50cyA9IGNsb25lRGVlcChbXHJcbiAgICB7XHJcbiAgICAgIHR5cGU6ICd0YWJzJyxcclxuICAgICAga2V5OiAndGFicycsXHJcbiAgICAgIGNvbXBvbmVudHM6IFt7XHJcbiAgICAgICAga2V5OiAnZGlzcGxheScsXHJcbiAgICAgICAgY29tcG9uZW50czogYmFzZURpc3BsYXksXHJcbiAgICAgICAgbGFiZWw6ICdEaXNwbGF5JyxcclxuICAgICAgICB3ZWlnaHQ6IDBcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtleTogJ2RhdGEnLFxyXG4gICAgICAgIGNvbXBvbmVudHM6IGJhc2VEYXRhLFxyXG4gICAgICAgIGxhYmVsOiAnRGF0YScsXHJcbiAgICAgICAgd2VpZ2h0OiAxMFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2V5OiAndmFsaWRhdGlvbicsXHJcbiAgICAgICAgY29tcG9uZW50czogYmFzZVZhbGlkYXRpb24sXHJcbiAgICAgICAgbGFiZWw6ICdWYWxpZGF0aW9uJyxcclxuICAgICAgICB3ZWlnaHQ6IDIwXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBsYWJlbDogJ0NvbmRpdGlvbmFsJyxcclxuICAgICAgICBrZXk6ICdjb25kaXRpb25hbCcsXHJcbiAgICAgICAgd2VpZ2h0OiA0MCxcclxuICAgICAgICBjb21wb25lbnRzOiBiYXNlQ29uZGl0aW9uYWxcclxuICAgICAgfVxyXG4gICAgICBdXHJcbiAgICB9XHJcbiAgXSkuY29uY2F0KGV4dGVuZC5tYXAoKGl0ZW1zKSA9PiAoe1xyXG4gICAgdHlwZTogJ3RhYnMnLFxyXG4gICAga2V5OiAndGFicycsXHJcbiAgICBjb21wb25lbnRzOiBjbG9uZURlZXAoaXRlbXMpLFxyXG4gIH0pKSk7XHJcbiAgcmV0dXJuIHtcclxuICAgIGNvbXBvbmVudHM6IHVuaW9uV2l0aChjb21wb25lbnRzLCB1bmlmeUNvbXBvbmVudHMpLmNvbmNhdCh7XHJcbiAgICAgIHR5cGU6ICdoaWRkZW4nLFxyXG4gICAgICBrZXk6ICd0eXBlJ1xyXG4gICAgfSlcclxuICB9O1xyXG59O1xyXG4iXX0=