From 85ec9edcac1280975da0d23528fc9fd2d8fbe845 Mon Sep 17 00:00:00 2001 From: Malay Kumar Parida <mparida@redhat.com> Date: Thu, 19 Oct 2023 16:05:47 +0530 Subject: [PATCH] Use latest rook image for csv generation also add the make gen-latest-csv changes Signed-off-by: Malay Kumar Parida <mparida@redhat.com> --- .../ocs.openshift.io_storageclusters.yaml | 60 +- .../ocs/ocs.openshift.io_storageclusters.yaml | 60 +- .../crds/rook/ceph.rook.io_cephclusters.yaml | 256 +- .../rook/ceph.rook.io_cephobjectstores.yaml | 4 + .../ceph.rook.io_cephobjectstoreusers.yaml | 2 + deploy/csv-templates/rook-csv.yaml.in | 2882 ++++++++-------- .../manifests/cephcluster.crd.yaml | 256 +- .../manifests/cephobjectstore.crd.yaml | 4 + .../manifests/cephobjectstoreuser.crd.yaml | 2 + .../ocs-operator.clusterserviceversion.yaml | 2884 +++++++++-------- .../manifests/storagecluster.crd.yaml | 60 +- hack/common.sh | 2 +- 12 files changed, 3596 insertions(+), 2876 deletions(-) diff --git a/config/crd/bases/ocs.openshift.io_storageclusters.yaml b/config/crd/bases/ocs.openshift.io_storageclusters.yaml index ff6cb3c312..46e68c14e9 100644 --- a/config/crd/bases/ocs.openshift.io_storageclusters.yaml +++ b/config/crd/bases/ocs.openshift.io_storageclusters.yaml @@ -1266,6 +1266,38 @@ spec: network: description: Network represents cluster network settings properties: + addressRanges: + description: AddressRanges specify a list of CIDRs that Rook will + apply to Ceph's 'public_network' and/or 'cluster_network' configurations. + This config section may be used for the "host" or "multus" network + providers. + nullable: true + properties: + cluster: + description: Cluster defines a list of CIDRs to use for Ceph + cluster network communication. + items: + description: "An IPv4 or IPv6 network CIDR. \n This naive + kubebuilder regex provides immediate feedback for some + typos and for a common problem case where the range spec + is forgotten (e.g., /24). Rook does in-depth validation + in code." + pattern: ^[0-9a-fA-F:.]{2,}\/[0-9]{1,3}$ + type: string + type: array + public: + description: Public defines a list of CIDRs to use for Ceph + public network communication. + items: + description: "An IPv4 or IPv6 network CIDR. \n This naive + kubebuilder regex provides immediate feedback for some + typos and for a common problem case where the range spec + is forgotten (e.g., /24). Rook does in-depth validation + in code." + pattern: ^[0-9a-fA-F:.]{2,}\/[0-9]{1,3}$ + type: string + type: array + type: object connections: description: Settings for network connections such as compression and encryption across the wire. @@ -1336,15 +1368,35 @@ spec: provider: description: Provider is what provides network connectivity to the cluster e.g. "host" or "multus" + enum: + - "" + - host + - multus nullable: true type: string selectors: additionalProperties: type: string - description: Selectors string values describe what networks will - be used to connect the cluster. Meanwhile the keys describe - each network respective responsibilities or any metadata storage - provider decide. + description: "Selectors define NetworkAttachmentDefinitions to + be used for Ceph public and/or cluster networks when the \"multus\" + network provider is used. This config section is not used for + other network providers. \n Valid keys are \"public\" and \"cluster\". + Refer to Ceph networking documentation for more: https://docs.ceph.com/en/reef/rados/configuration/network-config-ref/ + \n Refer to Multus network annotation documentation for help + selecting values: https://github.com/k8snetworkplumbingwg/multus-cni/blob/master/docs/how-to-use.md#run-pod-with-network-annotation + \n Rook will make a best-effort attempt to automatically detect + CIDR address ranges for given network attachment definitions. + Rook's methods are robust but may be imprecise for sufficiently + complicated networks. Rook's auto-detection process obtains + a new IP address lease for each CephCluster reconcile. If Rook + fails to detect, incorrectly detects, only partially detects, + or if underlying networks do not support reusing old IP addresses, + it is best to use the 'addressRanges' config section to specify + CIDR ranges for the Ceph cluster. \n As a contrived example, + one can use a theoretical Kubernetes-wide network for Ceph client + traffic and a theoretical Rook-only network for Ceph replication + traffic as shown: selectors: public: \"default/cluster-fast-net\" + cluster: \"rook-ceph/ceph-backend-net\"" nullable: true type: object type: object diff --git a/deploy/csv-templates/crds/ocs/ocs.openshift.io_storageclusters.yaml b/deploy/csv-templates/crds/ocs/ocs.openshift.io_storageclusters.yaml index ff6cb3c312..46e68c14e9 100644 --- a/deploy/csv-templates/crds/ocs/ocs.openshift.io_storageclusters.yaml +++ b/deploy/csv-templates/crds/ocs/ocs.openshift.io_storageclusters.yaml @@ -1266,6 +1266,38 @@ spec: network: description: Network represents cluster network settings properties: + addressRanges: + description: AddressRanges specify a list of CIDRs that Rook will + apply to Ceph's 'public_network' and/or 'cluster_network' configurations. + This config section may be used for the "host" or "multus" network + providers. + nullable: true + properties: + cluster: + description: Cluster defines a list of CIDRs to use for Ceph + cluster network communication. + items: + description: "An IPv4 or IPv6 network CIDR. \n This naive + kubebuilder regex provides immediate feedback for some + typos and for a common problem case where the range spec + is forgotten (e.g., /24). Rook does in-depth validation + in code." + pattern: ^[0-9a-fA-F:.]{2,}\/[0-9]{1,3}$ + type: string + type: array + public: + description: Public defines a list of CIDRs to use for Ceph + public network communication. + items: + description: "An IPv4 or IPv6 network CIDR. \n This naive + kubebuilder regex provides immediate feedback for some + typos and for a common problem case where the range spec + is forgotten (e.g., /24). Rook does in-depth validation + in code." + pattern: ^[0-9a-fA-F:.]{2,}\/[0-9]{1,3}$ + type: string + type: array + type: object connections: description: Settings for network connections such as compression and encryption across the wire. @@ -1336,15 +1368,35 @@ spec: provider: description: Provider is what provides network connectivity to the cluster e.g. "host" or "multus" + enum: + - "" + - host + - multus nullable: true type: string selectors: additionalProperties: type: string - description: Selectors string values describe what networks will - be used to connect the cluster. Meanwhile the keys describe - each network respective responsibilities or any metadata storage - provider decide. + description: "Selectors define NetworkAttachmentDefinitions to + be used for Ceph public and/or cluster networks when the \"multus\" + network provider is used. This config section is not used for + other network providers. \n Valid keys are \"public\" and \"cluster\". + Refer to Ceph networking documentation for more: https://docs.ceph.com/en/reef/rados/configuration/network-config-ref/ + \n Refer to Multus network annotation documentation for help + selecting values: https://github.com/k8snetworkplumbingwg/multus-cni/blob/master/docs/how-to-use.md#run-pod-with-network-annotation + \n Rook will make a best-effort attempt to automatically detect + CIDR address ranges for given network attachment definitions. + Rook's methods are robust but may be imprecise for sufficiently + complicated networks. Rook's auto-detection process obtains + a new IP address lease for each CephCluster reconcile. If Rook + fails to detect, incorrectly detects, only partially detects, + or if underlying networks do not support reusing old IP addresses, + it is best to use the 'addressRanges' config section to specify + CIDR ranges for the Ceph cluster. \n As a contrived example, + one can use a theoretical Kubernetes-wide network for Ceph client + traffic and a theoretical Rook-only network for Ceph replication + traffic as shown: selectors: public: \"default/cluster-fast-net\" + cluster: \"rook-ceph/ceph-backend-net\"" nullable: true type: object type: object diff --git a/deploy/csv-templates/crds/rook/ceph.rook.io_cephclusters.yaml b/deploy/csv-templates/crds/rook/ceph.rook.io_cephclusters.yaml index 2b1c77ecab..c2a3b68bb4 100644 --- a/deploy/csv-templates/crds/rook/ceph.rook.io_cephclusters.yaml +++ b/deploy/csv-templates/crds/rook/ceph.rook.io_cephclusters.yaml @@ -125,6 +125,10 @@ spec: maximum: 65535 minimum: 0 type: integer + prometheusEndpoint: + type: string + prometheusEndpointSSLVerify: + type: boolean ssl: type: boolean urlPrefix: @@ -393,7 +397,7 @@ spec: allowMultiplePerNode: type: boolean count: - maximum: 2 + maximum: 5 minimum: 0 type: integer modules: @@ -416,6 +420,8 @@ spec: maximum: 9 minimum: 0 type: integer + failureDomainLabel: + type: string stretchCluster: properties: failureDomainLabel: @@ -555,6 +561,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -595,8 +606,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object x-kubernetes-preserve-unknown-fields: true @@ -730,6 +739,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -770,11 +784,192 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object x-kubernetes-preserve-unknown-fields: true + zones: + items: + properties: + arbiter: + type: boolean + name: + type: string + volumeClaimTemplate: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + phase: + type: string + type: object + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: array type: object monitoring: nullable: true @@ -830,6 +1025,20 @@ spec: network: nullable: true properties: + addressRanges: + nullable: true + properties: + cluster: + items: + pattern: ^[0-9a-fA-F:.]{2,}\/[0-9]{1,3}$ + type: string + type: array + public: + items: + pattern: ^[0-9a-fA-F:.]{2,}\/[0-9]{1,3}$ + type: string + type: array + type: object connections: nullable: true properties: @@ -866,6 +1075,10 @@ spec: type: boolean type: object provider: + enum: + - "" + - host + - multus nullable: true type: string selectors: @@ -1412,6 +1625,8 @@ spec: nullable: true type: array x-kubernetes-preserve-unknown-fields: true + flappingRestartIntervalHours: + type: integer nodes: items: properties: @@ -1606,6 +1821,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -1646,8 +1866,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object type: array @@ -2711,6 +2929,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -2751,8 +2974,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object type: array @@ -2770,6 +2991,9 @@ spec: - bluestore - bluestore-rdr type: string + updateStore: + pattern: ^$|^yes-really-update-store$ + type: string type: object useAllDevices: type: boolean @@ -2902,6 +3126,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -2942,8 +3171,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object type: array @@ -3066,6 +3293,13 @@ spec: type: string type: object type: array + osd: + properties: + storeType: + additionalProperties: + type: integer + type: object + type: object type: object version: properties: diff --git a/deploy/csv-templates/crds/rook/ceph.rook.io_cephobjectstores.yaml b/deploy/csv-templates/crds/rook/ceph.rook.io_cephobjectstores.yaml index 0b941a4eee..7d70873d91 100644 --- a/deploy/csv-templates/crds/rook/ceph.rook.io_cephobjectstores.yaml +++ b/deploy/csv-templates/crds/rook/ceph.rook.io_cephobjectstores.yaml @@ -30,6 +30,10 @@ spec: type: object spec: properties: + allowUsersInNamespaces: + items: + type: string + type: array dataPool: nullable: true properties: diff --git a/deploy/csv-templates/crds/rook/ceph.rook.io_cephobjectstoreusers.yaml b/deploy/csv-templates/crds/rook/ceph.rook.io_cephobjectstoreusers.yaml index ec9e3300c9..10b7398c66 100644 --- a/deploy/csv-templates/crds/rook/ceph.rook.io_cephobjectstoreusers.yaml +++ b/deploy/csv-templates/crds/rook/ceph.rook.io_cephobjectstoreusers.yaml @@ -149,6 +149,8 @@ spec: - read, write type: string type: object + clusterNamespace: + type: string displayName: type: string quotas: diff --git a/deploy/csv-templates/rook-csv.yaml.in b/deploy/csv-templates/rook-csv.yaml.in index fa1efe1ed4..2c7af60e7e 100644 --- a/deploy/csv-templates/rook-csv.yaml.in +++ b/deploy/csv-templates/rook-csv.yaml.in @@ -228,127 +228,145 @@ metadata: dGhlIHNjcmlwdC4uLiIpCiAgICBzeXMuZXhpdCgxKQoKdHJ5OgogICAgIyBmb3IgMi43LngKICAg IGZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCmV4Y2VwdCBNb2R1bGVOb3RGb3VuZEVycm9y OgogICAgIyBmb3IgMy54CiAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwoKdHJ5OgogICAgIyBm - b3IgMi43LngKICAgIGZyb20gdXJscGFyc2UgaW1wb3J0IHVybHBhcnNlCmV4Y2VwdCBNb2R1bGVO - b3RGb3VuZEVycm9yOgogICAgIyBmb3IgMy54CiAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQg - dXJscGFyc2UKCnRyeToKICAgIGZyb20gYmFzZTY0IGltcG9ydCBlbmNvZGVzdHJpbmcKZXhjZXB0 - OgogICAgZnJvbSBiYXNlNjQgaW1wb3J0IGVuY29kZWJ5dGVzIGFzIGVuY29kZXN0cmluZwoKCmNs - YXNzIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oRXhjZXB0aW9uKToKICAgIHBhc3MKCgojIyMj - IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMj - IyMjIyMjIER1bW15UmFkb3MgIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMj - IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHRoaXMgaXMgbWFpbmx5IGZvciB0ZXN0aW5n - IGFuZCBjb3VsZCBiZSB1c2VkIHdoZXJlICdyYWRvcycgaXMgbm90IGF2YWlsYWJsZQoKCmNsYXNz - IER1bW15UmFkb3Mob2JqZWN0KToKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxm - LnJldHVybl92YWwgPSAwCiAgICAgICAgc2VsZi5lcnJfbWVzc2FnZSA9ICIiCiAgICAgICAgc2Vs - Zi5zdGF0ZSA9ICJjb25uZWN0ZWQiCiAgICAgICAgc2VsZi5jbWRfb3V0cHV0X21hcCA9IHt9CiAg - ICAgICAgc2VsZi5jbWRfbmFtZXMgPSB7fQogICAgICAgIHNlbGYuX2luaXRfY21kX291dHB1dF9t - YXAoKQogICAgICAgIHNlbGYuZHVtbXlfaG9zdF9pcF9tYXAgPSB7fQoKICAgIGRlZiBfaW5pdF9j - bWRfb3V0cHV0X21hcChzZWxmKToKICAgICAgICBqc29uX2ZpbGVfbmFtZSA9ICJ0ZXN0LWRhdGEv - Y2VwaC1zdGF0dXMtb3V0IgogICAgICAgIHNjcmlwdF9kaXIgPSBwYXRoLmFic3BhdGgocGF0aC5k - aXJuYW1lKF9fZmlsZV9fKSkKICAgICAgICBjZXBoX3N0YXR1c19zdHIgPSAiIgogICAgICAgIHdp - dGggb3BlbigKICAgICAgICAgICAgcGF0aC5qb2luKHNjcmlwdF9kaXIsIGpzb25fZmlsZV9uYW1l - KSwgbW9kZT0iciIsIGVuY29kaW5nPSJVVEYtOCIKICAgICAgICApIGFzIGpzb25fZmlsZToKICAg - ICAgICAgICAgY2VwaF9zdGF0dXNfc3RyID0ganNvbl9maWxlLnJlYWQoKQogICAgICAgIHNlbGYu - Y21kX25hbWVzWyJmcyBscyJdID0gIiIieyJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiZnMg - bHMifSIiIgogICAgICAgIHNlbGYuY21kX25hbWVzWwogICAgICAgICAgICAicXVvcnVtX3N0YXR1 - cyIKICAgICAgICBdID0gIiIieyJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAicXVvcnVtX3N0 - YXR1cyJ9IiIiCiAgICAgICAgc2VsZi5jbWRfbmFtZXNbCiAgICAgICAgICAgICJtZ3Igc2Vydmlj - ZXMiCiAgICAgICAgXSA9ICIiInsiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogIm1nciBzZXJ2 - aWNlcyJ9IiIiCiAgICAgICAgIyBhbGwgdGhlIGNvbW1hbmRzIGFuZCB0aGVpciBvdXRwdXQKICAg - ICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICBzZWxmLmNtZF9uYW1lc1siZnMg - bHMiXQogICAgICAgIF0gPSAiIiJbeyJuYW1lIjoibXlmcyIsIm1ldGFkYXRhX3Bvb2wiOiJteWZz - LW1ldGFkYXRhIiwibWV0YWRhdGFfcG9vbF9pZCI6MiwiZGF0YV9wb29sX2lkcyI6WzNdLCJkYXRh - X3Bvb2xzIjpbIm15ZnMtcmVwbGljYXRlZCJdfV0iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRf - bWFwWwogICAgICAgICAgICBzZWxmLmNtZF9uYW1lc1sicXVvcnVtX3N0YXR1cyJdCiAgICAgICAg - XSA9ICIiInsiZWxlY3Rpb25fZXBvY2giOjMsInF1b3J1bSI6WzBdLCJxdW9ydW1fbmFtZXMiOlsi - YSJdLCJxdW9ydW1fbGVhZGVyX25hbWUiOiJhIiwicXVvcnVtX2FnZSI6MTQzODUsImZlYXR1cmVz - Ijp7InF1b3J1bV9jb24iOiI0NTQwMTM4MjkyODM2Njk2MDYzIiwicXVvcnVtX21vbiI6WyJrcmFr - ZW4iLCJsdW1pbm91cyIsIm1pbWljIiwib3NkbWFwLXBydW5lIiwibmF1dGlsdXMiLCJvY3RvcHVz - Il19LCJtb25tYXAiOnsiZXBvY2giOjEsImZzaWQiOiJhZjRlMTY3My0wYjcyLTQwMmQtOTkwYS0y - MmQyOTE5ZDBmMWMiLCJtb2RpZmllZCI6IjIwMjAtMDUtMDdUMDM6MzY6MzkuOTE4MDM1WiIsImNy - ZWF0ZWQiOiIyMDIwLTA1LTA3VDAzOjM2OjM5LjkxODAzNVoiLCJtaW5fbW9uX3JlbGVhc2UiOjE1 - LCJtaW5fbW9uX3JlbGVhc2VfbmFtZSI6Im9jdG9wdXMiLCJmZWF0dXJlcyI6eyJwZXJzaXN0ZW50 - IjpbImtyYWtlbiIsImx1bWlub3VzIiwibWltaWMiLCJvc2RtYXAtcHJ1bmUiLCJuYXV0aWx1cyIs - Im9jdG9wdXMiXSwib3B0aW9uYWwiOltdfSwibW9ucyI6W3sicmFuayI6MCwibmFtZSI6ImEiLCJw - dWJsaWNfYWRkcnMiOnsiYWRkcnZlYyI6W3sidHlwZSI6InYyIiwiYWRkciI6IjEwLjExMC4yMDUu - MTc0OjMzMDAiLCJub25jZSI6MH0seyJ0eXBlIjoidjEiLCJhZGRyIjoiMTAuMTEwLjIwNS4xNzQ6 - Njc4OSIsIm5vbmNlIjowfV19LCJhZGRyIjoiMTAuMTEwLjIwNS4xNzQ6Njc4OS8wIiwicHVibGlj - X2FkZHIiOiIxMC4xMTAuMjA1LjE3NDo2Nzg5LzAiLCJwcmlvcml0eSI6MCwid2VpZ2h0IjowfV19 - fSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgIHNlbGYuY21kX25h - bWVzWyJtZ3Igc2VydmljZXMiXQogICAgICAgIF0gPSAiIiJ7ImRhc2hib2FyZCI6Imh0dHBzOi8v - Y2VwaC1kYXNoYm9hcmQ6ODQ0My8iLCJwcm9tZXRoZXVzIjoiaHR0cDovL2NlcGgtZGFzaGJvYXJk - LWRiOjkyODMvIn0iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAi - IiJ7ImNhcHMiOiBbIm1vbiIsICJhbGxvdyByLCBhbGxvdyBjb21tYW5kIHF1b3J1bV9zdGF0dXMi - LCAib3NkIiwgImFsbG93IHJ3eCBwb29sPWRlZmF1bHQucmd3Lm1ldGEsIGFsbG93IHIgcG9vbD0u - cmd3LnJvb3QsIGFsbG93IHJ3IHBvb2w9ZGVmYXVsdC5yZ3cuY29udHJvbCwgYWxsb3cgeCBwb29s - PWRlZmF1bHQucmd3LmJ1Y2tldHMuaW5kZXgiXSwgImVudGl0eSI6ICJjbGllbnQuaGVhbHRoY2hl - Y2tlciIsICJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQtb3ItY3JlYXRlIn0i - IiIKICAgICAgICBdID0gIiIiW3siZW50aXR5IjoiY2xpZW50LmhlYWx0aGNoZWNrZXIiLCJrZXki - OiJBUURGa2JOZWZ0NWJGUkFBVG5kTE5VU0VLcnVvenhpWmkzbHJkQT09IiwiY2FwcyI6eyJtb24i - OiJhbGxvdyByLCBhbGxvdyBjb21tYW5kIHF1b3J1bV9zdGF0dXMiLCJvc2QiOiJhbGxvdyByd3gg - cG9vbD1kZWZhdWx0LnJndy5tZXRhLCBhbGxvdyByIHBvb2w9LnJndy5yb290LCBhbGxvdyBydyBw - b29sPWRlZmF1bHQucmd3LmNvbnRyb2wsIGFsbG93IHggcG9vbD1kZWZhdWx0LnJndy5idWNrZXRz - LmluZGV4In19XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIi - InsiY2FwcyI6IFsibW9uIiwgInByb2ZpbGUgcmJkLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2ts - aXN0JyIsICJvc2QiLCAicHJvZmlsZSByYmQiXSwgImVudGl0eSI6ICJjbGllbnQuY3NpLXJiZC1u - b2RlIiwgImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGdldC1vci1jcmVhdGUifSIi - IgogICAgICAgIF0gPSAiIiJbeyJlbnRpdHkiOiJjbGllbnQuY3NpLXJiZC1ub2RlIiwia2V5Ijoi - QVFCT2dyTmVIYksxQXhBQXViWUJlVjhTMVUvR1B6cTVTVmVxNmc9PSIsImNhcHMiOnsibW9uIjoi - cHJvZmlsZSByYmQsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwib3NkIjoicHJvZmls - ZSByYmQifX1dIiIiCiAgICAgICAgc2VsZi5jbWRfb3V0cHV0X21hcFsKICAgICAgICAgICAgIiIi - eyJjYXBzIjogWyJtb24iLCAicHJvZmlsZSByYmQsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xp - c3QnIiwgIm1nciIsICJhbGxvdyBydyIsICJvc2QiLCAicHJvZmlsZSByYmQiXSwgImVudGl0eSI6 - ICJjbGllbnQuY3NpLXJiZC1wcm92aXNpb25lciIsICJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgi - OiAiYXV0aCBnZXQtb3ItY3JlYXRlIn0iIiIKICAgICAgICBdID0gIiIiW3siZW50aXR5IjoiY2xp - ZW50LmNzaS1yYmQtcHJvdmlzaW9uZXIiLCJrZXkiOiJBUUJOZ3JOZTFnZXlLeEFBOGVrVmlSZEUr - aHNzNU93ZVlCa3dOZz09IiwiY2FwcyI6eyJtZ3IiOiJhbGxvdyBydyIsIm1vbiI6InByb2ZpbGUg - cmJkLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsIm9zZCI6InByb2ZpbGUgcmJkIn19 - XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6 - IFsibW9uIiwgImFsbG93IHIsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwgIm1nciIs - ICJhbGxvdyBydyIsICJvc2QiLCAiYWxsb3cgcncgdGFnIGNlcGhmcyAqPSoiLCAibWRzIiwgImFs - bG93IHJ3Il0sICJlbnRpdHkiOiAiY2xpZW50LmNzaS1jZXBoZnMtbm9kZSIsICJmb3JtYXQiOiAi - anNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQtb3ItY3JlYXRlIn0iIiIKICAgICAgICBdID0gIiIi - W3siZW50aXR5IjoiY2xpZW50LmNzaS1jZXBoZnMtbm9kZSIsImtleSI6IkFRQk9nck5lRU51bkt4 - QUFQQ21nRTdSNkc4RGNYbmFKMUYzMnFnPT0iLCJjYXBzIjp7Im1kcyI6ImFsbG93IHJ3IiwibWdy - IjoiYWxsb3cgcnciLCJtb24iOiJhbGxvdyByLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0 - JyIsIm9zZCI6ImFsbG93IHJ3IHRhZyBjZXBoZnMgKj0qIn19XSIiIgogICAgICAgIHNlbGYuY21k - X291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6IFsibW9uIiwgImFsbG93IHIsIGFs - bG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwgIm1nciIsICJhbGxvdyBydyIsICJvc2QiLCAi - YWxsb3cgcncgdGFnIGNlcGhmcyBtZXRhZGF0YT0qIl0sICJlbnRpdHkiOiAiY2xpZW50LmNzaS1j - ZXBoZnMtcHJvdmlzaW9uZXIiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0 - LW9yLWNyZWF0ZSJ9IiIiCiAgICAgICAgXSA9ICIiIlt7ImVudGl0eSI6ImNsaWVudC5jc2ktY2Vw - aGZzLXByb3Zpc2lvbmVyIiwia2V5IjoiQVFCT2dyTmVBRmdjR0JBQXZHcUtPQUQwRDN4eG1WWTBS + b3IgMi43LngKICAgIGZyb20gdXJscGFyc2UgaW1wb3J0IHVybHBhcnNlCiAgICBmcm9tIHVybGxp + YiBpbXBvcnQgdXJsZW5jb2RlIGFzIHVybGVuY29kZQpleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJv + cjoKICAgICMgZm9yIDMueAogICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCiAg + ICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJsZW5jb2RlIGFzIHVybGVuY29kZQoKdHJ5Ogog + ICAgZnJvbSBiYXNlNjQgaW1wb3J0IGVuY29kZXN0cmluZwpleGNlcHQ6CiAgICBmcm9tIGJhc2U2 + NCBpbXBvcnQgZW5jb2RlYnl0ZXMgYXMgZW5jb2Rlc3RyaW5nCgoKY2xhc3MgRXhlY3V0aW9uRmFp + bHVyZUV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgcGFzcwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMj + IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMgRHVtbXlSYWRv + cyAjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj + IyMjIyMjIyMjIyMjCiMgdGhpcyBpcyBtYWlubHkgZm9yIHRlc3RpbmcgYW5kIGNvdWxkIGJlIHVz + ZWQgd2hlcmUgJ3JhZG9zJyBpcyBub3QgYXZhaWxhYmxlCgoKY2xhc3MgRHVtbXlSYWRvcyhvYmpl + Y3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYucmV0dXJuX3ZhbCA9IDAK + ICAgICAgICBzZWxmLmVycl9tZXNzYWdlID0gIiIKICAgICAgICBzZWxmLnN0YXRlID0gImNvbm5l + Y3RlZCIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwID0ge30KICAgICAgICBzZWxmLmNtZF9u + YW1lcyA9IHt9CiAgICAgICAgc2VsZi5faW5pdF9jbWRfb3V0cHV0X21hcCgpCiAgICAgICAgc2Vs + Zi5kdW1teV9ob3N0X2lwX21hcCA9IHt9CgogICAgZGVmIF9pbml0X2NtZF9vdXRwdXRfbWFwKHNl + bGYpOgogICAgICAgIGpzb25fZmlsZV9uYW1lID0gInRlc3QtZGF0YS9jZXBoLXN0YXR1cy1vdXQi + CiAgICAgICAgc2NyaXB0X2RpciA9IHBhdGguYWJzcGF0aChwYXRoLmRpcm5hbWUoX19maWxlX18p + KQogICAgICAgIGNlcGhfc3RhdHVzX3N0ciA9ICIiCiAgICAgICAgd2l0aCBvcGVuKAogICAgICAg + ICAgICBwYXRoLmpvaW4oc2NyaXB0X2RpciwganNvbl9maWxlX25hbWUpLCBtb2RlPSJyIiwgZW5j + b2Rpbmc9IlVURi04IgogICAgICAgICkgYXMganNvbl9maWxlOgogICAgICAgICAgICBjZXBoX3N0 + YXR1c19zdHIgPSBqc29uX2ZpbGUucmVhZCgpCiAgICAgICAgc2VsZi5jbWRfbmFtZXNbImZzIGxz + Il0gPSAiIiJ7ImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJmcyBscyJ9IiIiCiAgICAgICAg + c2VsZi5jbWRfbmFtZXNbCiAgICAgICAgICAgICJxdW9ydW1fc3RhdHVzIgogICAgICAgIF0gPSAi + IiJ7ImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJxdW9ydW1fc3RhdHVzIn0iIiIKICAgICAg + ICBzZWxmLmNtZF9uYW1lc1sKICAgICAgICAgICAgIm1nciBzZXJ2aWNlcyIKICAgICAgICBdID0g + IiIieyJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAibWdyIHNlcnZpY2VzIn0iIiIKICAgICAg + ICAjIGFsbCB0aGUgY29tbWFuZHMgYW5kIHRoZWlyIG91dHB1dAogICAgICAgIHNlbGYuY21kX291 + dHB1dF9tYXBbCiAgICAgICAgICAgIHNlbGYuY21kX25hbWVzWyJmcyBscyJdCiAgICAgICAgXSA9 + ICIiIlt7Im5hbWUiOiJteWZzIiwibWV0YWRhdGFfcG9vbCI6Im15ZnMtbWV0YWRhdGEiLCJtZXRh + ZGF0YV9wb29sX2lkIjoyLCJkYXRhX3Bvb2xfaWRzIjpbM10sImRhdGFfcG9vbHMiOlsibXlmcy1y + ZXBsaWNhdGVkIl19XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAg + IHNlbGYuY21kX25hbWVzWyJxdW9ydW1fc3RhdHVzIl0KICAgICAgICBdID0gIiIieyJlbGVjdGlv + bl9lcG9jaCI6MywicXVvcnVtIjpbMF0sInF1b3J1bV9uYW1lcyI6WyJhIl0sInF1b3J1bV9sZWFk + ZXJfbmFtZSI6ImEiLCJxdW9ydW1fYWdlIjoxNDM4NSwiZmVhdHVyZXMiOnsicXVvcnVtX2NvbiI6 + IjQ1NDAxMzgyOTI4MzY2OTYwNjMiLCJxdW9ydW1fbW9uIjpbImtyYWtlbiIsImx1bWlub3VzIiwi + bWltaWMiLCJvc2RtYXAtcHJ1bmUiLCJuYXV0aWx1cyIsIm9jdG9wdXMiXX0sIm1vbm1hcCI6eyJl + cG9jaCI6MSwiZnNpZCI6ImFmNGUxNjczLTBiNzItNDAyZC05OTBhLTIyZDI5MTlkMGYxYyIsIm1v + ZGlmaWVkIjoiMjAyMC0wNS0wN1QwMzozNjozOS45MTgwMzVaIiwiY3JlYXRlZCI6IjIwMjAtMDUt + MDdUMDM6MzY6MzkuOTE4MDM1WiIsIm1pbl9tb25fcmVsZWFzZSI6MTUsIm1pbl9tb25fcmVsZWFz + ZV9uYW1lIjoib2N0b3B1cyIsImZlYXR1cmVzIjp7InBlcnNpc3RlbnQiOlsia3Jha2VuIiwibHVt + aW5vdXMiLCJtaW1pYyIsIm9zZG1hcC1wcnVuZSIsIm5hdXRpbHVzIiwib2N0b3B1cyJdLCJvcHRp + b25hbCI6W119LCJtb25zIjpbeyJyYW5rIjowLCJuYW1lIjoiYSIsInB1YmxpY19hZGRycyI6eyJh + ZGRydmVjIjpbeyJ0eXBlIjoidjIiLCJhZGRyIjoiMTAuMTEwLjIwNS4xNzQ6MzMwMCIsIm5vbmNl + IjowfSx7InR5cGUiOiJ2MSIsImFkZHIiOiIxMC4xMTAuMjA1LjE3NDo2Nzg5Iiwibm9uY2UiOjB9 + XX0sImFkZHIiOiIxMC4xMTAuMjA1LjE3NDo2Nzg5LzAiLCJwdWJsaWNfYWRkciI6IjEwLjExMC4y + MDUuMTc0OjY3ODkvMCIsInByaW9yaXR5IjowLCJ3ZWlnaHQiOjB9XX19IiIiCiAgICAgICAgc2Vs + Zi5jbWRfb3V0cHV0X21hcFsKICAgICAgICAgICAgc2VsZi5jbWRfbmFtZXNbIm1nciBzZXJ2aWNl + cyJdCiAgICAgICAgXSA9ICIiInsiZGFzaGJvYXJkIjoiaHR0cHM6Ly9jZXBoLWRhc2hib2FyZDo4 + NDQzLyIsInByb21ldGhldXMiOiJodHRwOi8vY2VwaC1kYXNoYm9hcmQtZGI6OTI4My8ifSIiIgog + ICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6IFsibW9u + IiwgImFsbG93IHIsIGFsbG93IGNvbW1hbmQgcXVvcnVtX3N0YXR1cyIsICJvc2QiLCAicHJvZmls + ZSByYmQtcmVhZC1vbmx5LCBhbGxvdyByd3ggcG9vbD1kZWZhdWx0LnJndy5tZXRhLCBhbGxvdyBy + IHBvb2w9LnJndy5yb290LCBhbGxvdyBydyBwb29sPWRlZmF1bHQucmd3LmNvbnRyb2wsIGFsbG93 + IHggcG9vbD1kZWZhdWx0LnJndy5idWNrZXRzLmluZGV4Il0sICJlbnRpdHkiOiAiY2xpZW50Lmhl + YWx0aGNoZWNrZXIiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0LW9yLWNy + ZWF0ZSJ9IiIiCiAgICAgICAgXSA9ICIiIlt7ImVudGl0eSI6ImNsaWVudC5oZWFsdGhjaGVja2Vy + Iiwia2V5IjoiQVFERmtiTmVmdDViRlJBQVRuZExOVVNFS3J1b3p4aVppM2xyZEE9PSIsImNhcHMi + OnsibW9uIjoiYWxsb3cgciwgYWxsb3cgY29tbWFuZCBxdW9ydW1fc3RhdHVzIiwib3NkIjoicHJv + ZmlsZSByYmQtcmVhZC1vbmx5LCBhbGxvdyByd3ggcG9vbD1kZWZhdWx0LnJndy5tZXRhLCBhbGxv + dyByIHBvb2w9LnJndy5yb290LCBhbGxvdyBydyBwb29sPWRlZmF1bHQucmd3LmNvbnRyb2wsIGFs + bG93IHggcG9vbD1kZWZhdWx0LnJndy5idWNrZXRzLmluZGV4In19XSIiIgogICAgICAgIHNlbGYu + Y21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6IFsibW9uIiwgInByb2ZpbGUg + cmJkLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsICJvc2QiLCAicHJvZmlsZSByYmQi + XSwgImVudGl0eSI6ICJjbGllbnQuY3NpLXJiZC1ub2RlIiwgImZvcm1hdCI6ICJqc29uIiwgInBy + ZWZpeCI6ICJhdXRoIGdldC1vci1jcmVhdGUifSIiIgogICAgICAgIF0gPSAiIiJbeyJlbnRpdHki + OiJjbGllbnQuY3NpLXJiZC1ub2RlIiwia2V5IjoiQVFCT2dyTmVIYksxQXhBQXViWUJlVjhTMVUv + R1B6cTVTVmVxNmc9PSIsImNhcHMiOnsibW9uIjoicHJvZmlsZSByYmQsIGFsbG93IGNvbW1hbmQg + J29zZCBibG9ja2xpc3QnIiwib3NkIjoicHJvZmlsZSByYmQifX1dIiIiCiAgICAgICAgc2VsZi5j + bWRfb3V0cHV0X21hcFsKICAgICAgICAgICAgIiIieyJjYXBzIjogWyJtb24iLCAicHJvZmlsZSBy + YmQsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwgIm1nciIsICJhbGxvdyBydyIsICJv + c2QiLCAicHJvZmlsZSByYmQiXSwgImVudGl0eSI6ICJjbGllbnQuY3NpLXJiZC1wcm92aXNpb25l + ciIsICJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQtb3ItY3JlYXRlIn0iIiIK + ICAgICAgICBdID0gIiIiW3siZW50aXR5IjoiY2xpZW50LmNzaS1yYmQtcHJvdmlzaW9uZXIiLCJr + ZXkiOiJBUUJOZ3JOZTFnZXlLeEFBOGVrVmlSZEUraHNzNU93ZVlCa3dOZz09IiwiY2FwcyI6eyJt + Z3IiOiJhbGxvdyBydyIsIm1vbiI6InByb2ZpbGUgcmJkLCBhbGxvdyBjb21tYW5kICdvc2QgYmxv + Y2tsaXN0JyIsIm9zZCI6InByb2ZpbGUgcmJkIn19XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1 + dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6IFsibW9uIiwgImFsbG93IHIsIGFsbG93IGNv + bW1hbmQgJ29zZCBibG9ja2xpc3QnIiwgIm1nciIsICJhbGxvdyBydyIsICJvc2QiLCAiYWxsb3cg + cncgdGFnIGNlcGhmcyAqPSoiLCAibWRzIiwgImFsbG93IHJ3Il0sICJlbnRpdHkiOiAiY2xpZW50 + LmNzaS1jZXBoZnMtbm9kZSIsICJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQt + b3ItY3JlYXRlIn0iIiIKICAgICAgICBdID0gIiIiW3siZW50aXR5IjoiY2xpZW50LmNzaS1jZXBo + ZnMtbm9kZSIsImtleSI6IkFRQk9nck5lRU51bkt4QUFQQ21nRTdSNkc4RGNYbmFKMUYzMnFnPT0i + LCJjYXBzIjp7Im1kcyI6ImFsbG93IHJ3IiwibWdyIjoiYWxsb3cgcnciLCJtb24iOiJhbGxvdyBy + LCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsIm9zZCI6ImFsbG93IHJ3IHRhZyBjZXBo + ZnMgKj0qIn19XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIi + InsiY2FwcyI6IFsibW9uIiwgImFsbG93IHIsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3Qn + IiwgIm1nciIsICJhbGxvdyBydyIsICJvc2QiLCAiYWxsb3cgcncgdGFnIGNlcGhmcyBtZXRhZGF0 + YT0qIl0sICJlbnRpdHkiOiAiY2xpZW50LmNzaS1jZXBoZnMtcHJvdmlzaW9uZXIiLCAiZm9ybWF0 + IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0LW9yLWNyZWF0ZSJ9IiIiCiAgICAgICAgXSA9 + ICIiIlt7ImVudGl0eSI6ImNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyIiwia2V5IjoiQVFC + T2dyTmVBRmdjR0JBQXZHcUtPQUQwRDN4eG1WWTBSOTEyZGc9PSIsImNhcHMiOnsibWdyIjoiYWxs + b3cgcnciLCJtb24iOiJhbGxvdyByLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsIm9z + ZCI6ImFsbG93IHJ3IHRhZyBjZXBoZnMgbWV0YWRhdGE9KiJ9fV0iIiIKICAgICAgICBzZWxmLmNt + ZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7ImNhcHMiOiBbIm1vbiIsICJhbGxvdyByLCBh + bGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsICJtZ3IiLCAiYWxsb3cgcnciLCAib3NkIiwg + ImFsbG93IHJ3IHRhZyBjZXBoZnMgbWV0YWRhdGE9KiJdLCAiZW50aXR5IjogImNsaWVudC5jc2kt + Y2VwaGZzLXByb3Zpc2lvbmVyLW9wZW5zaGlmdC1zdG9yYWdlIiwgImZvcm1hdCI6ICJqc29uIiwg + InByZWZpeCI6ICJhdXRoIGdldC1vci1jcmVhdGUifSIiIgogICAgICAgIF0gPSAiIiJbeyJlbnRp + dHkiOiJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lci1vcGVuc2hpZnQtc3RvcmFnZSIsImtl + eSI6IkJRQk9nck5lQUZnY0dCQUF2R3FLT0FEMEQzeHhtVlkwUjkxMmRnPT0iLCJjYXBzIjp7Im1n + ciI6ImFsbG93IHJ3IiwibW9uIjoiYWxsb3cgciwgYWxsb3cgY29tbWFuZCAnb3NkIGJsb2NrbGlz + dCciLCJvc2QiOiJhbGxvdyBydyB0YWcgY2VwaGZzIG1ldGFkYXRhPSoifX1dIiIiCiAgICAgICAg + c2VsZi5jbWRfb3V0cHV0X21hcFsKICAgICAgICAgICAgIiIieyJjYXBzIjogWyJtb24iLCAiYWxs + b3cgciwgYWxsb3cgY29tbWFuZCAnb3NkIGJsb2NrbGlzdCciLCAibWdyIiwgImFsbG93IHJ3Iiwg + Im9zZCIsICJhbGxvdyBydyB0YWcgY2VwaGZzIG1ldGFkYXRhPW15ZnMiXSwgImVudGl0eSI6ICJj + bGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lci1vcGVuc2hpZnQtc3RvcmFnZS1teWZzIiwgImZv + cm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGdldC1vci1jcmVhdGUifSIiIgogICAgICAg + IF0gPSAiIiJbeyJlbnRpdHkiOiJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lci1vcGVuc2hp + ZnQtc3RvcmFnZS1teWZzIiwia2V5IjoiQ1FCT2dyTmVBRmdjR0JBQXZHcUtPQUQwRDN4eG1WWTBS OTEyZGc9PSIsImNhcHMiOnsibWdyIjoiYWxsb3cgcnciLCJtb24iOiJhbGxvdyByLCBhbGxvdyBj b21tYW5kICdvc2QgYmxvY2tsaXN0JyIsIm9zZCI6ImFsbG93IHJ3IHRhZyBjZXBoZnMgbWV0YWRh - dGE9KiJ9fV0iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7 - ImNhcHMiOiBbIm1vbiIsICJhbGxvdyByLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIs - ICJtZ3IiLCAiYWxsb3cgcnciLCAib3NkIiwgImFsbG93IHJ3IHRhZyBjZXBoZnMgbWV0YWRhdGE9 - KiJdLCAiZW50aXR5IjogImNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyLW9wZW5zaGlmdC1z - dG9yYWdlIiwgImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGdldC1vci1jcmVhdGUi - fSIiIgogICAgICAgIF0gPSAiIiJbeyJlbnRpdHkiOiJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNp - b25lci1vcGVuc2hpZnQtc3RvcmFnZSIsImtleSI6IkJRQk9nck5lQUZnY0dCQUF2R3FLT0FEMEQz - eHhtVlkwUjkxMmRnPT0iLCJjYXBzIjp7Im1nciI6ImFsbG93IHJ3IiwibW9uIjoiYWxsb3cgciwg - YWxsb3cgY29tbWFuZCAnb3NkIGJsb2NrbGlzdCciLCJvc2QiOiJhbGxvdyBydyB0YWcgY2VwaGZz - IG1ldGFkYXRhPSoifX1dIiIiCiAgICAgICAgc2VsZi5jbWRfb3V0cHV0X21hcFsKICAgICAgICAg - ICAgIiIieyJjYXBzIjogWyJtb24iLCAiYWxsb3cgciwgYWxsb3cgY29tbWFuZCAnb3NkIGJsb2Nr - bGlzdCciLCAibWdyIiwgImFsbG93IHJ3IiwgIm9zZCIsICJhbGxvdyBydyB0YWcgY2VwaGZzIG1l - dGFkYXRhPW15ZnMiXSwgImVudGl0eSI6ICJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lci1v - cGVuc2hpZnQtc3RvcmFnZS1teWZzIiwgImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRo - IGdldC1vci1jcmVhdGUifSIiIgogICAgICAgIF0gPSAiIiJbeyJlbnRpdHkiOiJjbGllbnQuY3Np - LWNlcGhmcy1wcm92aXNpb25lci1vcGVuc2hpZnQtc3RvcmFnZS1teWZzIiwia2V5IjoiQ1FCT2dy - TmVBRmdjR0JBQXZHcUtPQUQwRDN4eG1WWTBSOTEyZGc9PSIsImNhcHMiOnsibWdyIjoiYWxsb3cg - cnciLCJtb24iOiJhbGxvdyByLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsIm9zZCI6 - ImFsbG93IHJ3IHRhZyBjZXBoZnMgbWV0YWRhdGE9bXlmcyJ9fV0iIiIKICAgICAgICBzZWxmLmNt - ZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7ImNhcHMiOiBbIm1vbiIsICJhbGxvdyByLCBh - bGxvdyBjb21tYW5kIHF1b3J1bV9zdGF0dXMsIGFsbG93IGNvbW1hbmQgdmVyc2lvbiIsICJtZ3Ii - LCAiYWxsb3cgY29tbWFuZCBjb25maWciLCAib3NkIiwgImFsbG93IHJ3eCBwb29sPWRlZmF1bHQu - cmd3Lm1ldGEsIGFsbG93IHIgcG9vbD0ucmd3LnJvb3QsIGFsbG93IHJ3IHBvb2w9ZGVmYXVsdC5y - Z3cuY29udHJvbCwgYWxsb3cgcnggcG9vbD1kZWZhdWx0LnJndy5sb2csIGFsbG93IHggcG9vbD1k - ZWZhdWx0LnJndy5idWNrZXRzLmluZGV4Il0sICJlbnRpdHkiOiAiY2xpZW50LmhlYWx0aGNoZWNr - ZXIiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0LW9yLWNyZWF0ZSJ9IiIi - CiAgICAgICAgXSA9ICIiIlt7ImVudGl0eSI6ImNsaWVudC5oZWFsdGhjaGVja2VyIiwia2V5Ijoi - QVFERmtiTmVmdDViRlJBQVRuZExOVVNFS3J1b3p4aVppM2xyZEE9PSIsImNhcHMiOnsibW9uIjog - ImFsbG93IHIsIGFsbG93IGNvbW1hbmQgcXVvcnVtX3N0YXR1cywgYWxsb3cgY29tbWFuZCB2ZXJz - aW9uIiwgIm1nciI6ICJhbGxvdyBjb21tYW5kIGNvbmZpZyIsICJvc2QiOiAiYWxsb3cgcnd4IHBv + dGE9bXlmcyJ9fV0iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAi + IiJ7ImNhcHMiOiBbIm1vbiIsICJhbGxvdyByLCBhbGxvdyBjb21tYW5kIHF1b3J1bV9zdGF0dXMs + IGFsbG93IGNvbW1hbmQgdmVyc2lvbiIsICJtZ3IiLCAiYWxsb3cgY29tbWFuZCBjb25maWciLCAi + b3NkIiwgInByb2ZpbGUgcmJkLXJlYWQtb25seSwgYWxsb3cgcnd4IHBvb2w9ZGVmYXVsdC5yZ3cu + bWV0YSwgYWxsb3cgciBwb29sPS5yZ3cucm9vdCwgYWxsb3cgcncgcG9vbD1kZWZhdWx0LnJndy5j + b250cm9sLCBhbGxvdyByeCBwb29sPWRlZmF1bHQucmd3LmxvZywgYWxsb3cgeCBwb29sPWRlZmF1 + bHQucmd3LmJ1Y2tldHMuaW5kZXgiXSwgImVudGl0eSI6ICJjbGllbnQuaGVhbHRoY2hlY2tlciIs + ICJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQtb3ItY3JlYXRlIn0iIiIKICAg + ICAgICBdID0gIiIiW3siZW50aXR5IjoiY2xpZW50LmhlYWx0aGNoZWNrZXIiLCJrZXkiOiJBUURG + a2JOZWZ0NWJGUkFBVG5kTE5VU0VLcnVvenhpWmkzbHJkQT09IiwiY2FwcyI6eyJtb24iOiAiYWxs + b3cgciwgYWxsb3cgY29tbWFuZCBxdW9ydW1fc3RhdHVzLCBhbGxvdyBjb21tYW5kIHZlcnNpb24i + LCAibWdyIjogImFsbG93IGNvbW1hbmQgY29uZmlnIiwgIm9zZCI6ICJwcm9maWxlIHJiZC1yZWFk + LW9ubHksIGFsbG93IHJ3eCBwb29sPWRlZmF1bHQucmd3Lm1ldGEsIGFsbG93IHIgcG9vbD0ucmd3 + LnJvb3QsIGFsbG93IHJ3IHBvb2w9ZGVmYXVsdC5yZ3cuY29udHJvbCwgYWxsb3cgcnggcG9vbD1k + ZWZhdWx0LnJndy5sb2csIGFsbG93IHggcG9vbD1kZWZhdWx0LnJndy5idWNrZXRzLmluZGV4In19 + XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6 + IFsibW9uIiwgImFsbG93IHIsIGFsbG93IGNvbW1hbmQgcXVvcnVtX3N0YXR1cywgYWxsb3cgY29t + bWFuZCB2ZXJzaW9uIiwgIm1nciIsICJhbGxvdyBjb21tYW5kIGNvbmZpZyIsICJvc2QiLCAicHJv + ZmlsZSByYmQtcmVhZC1vbmx5LCBhbGxvdyByd3ggcG9vbD1kZWZhdWx0LnJndy5tZXRhLCBhbGxv + dyByIHBvb2w9LnJndy5yb290LCBhbGxvdyBydyBwb29sPWRlZmF1bHQucmd3LmNvbnRyb2wsIGFs + bG93IHJ4IHBvb2w9ZGVmYXVsdC5yZ3cubG9nLCBhbGxvdyB4IHBvb2w9ZGVmYXVsdC5yZ3cuYnVj + a2V0cy5pbmRleCJdLCAiZW50aXR5IjogImNsaWVudC5oZWFsdGhjaGVja2VyIiwgImZvcm1hdCI6 + ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGNhcHMifSIiIgogICAgICAgIF0gPSAiIiJbeyJlbnRp + dHkiOiJjbGllbnQuaGVhbHRoY2hlY2tlciIsImtleSI6IkFRREZrYk5lZnQ1YkZSQUFUbmRMTlVT + UktydW96eGlaaTNscmRBPT0iLCJjYXBzIjp7Im1vbiI6ICJhbGxvdyByLCBhbGxvdyBjb21tYW5k + IHF1b3J1bV9zdGF0dXMsIGFsbG93IGNvbW1hbmQgdmVyc2lvbiIsICJtZ3IiOiAiYWxsb3cgY29t + bWFuZCBjb25maWciLCAib3NkIjogInByb2ZpbGUgcmJkLXJlYWQtb25seSwgYWxsb3cgcnd4IHBv b2w9ZGVmYXVsdC5yZ3cubWV0YSwgYWxsb3cgciBwb29sPS5yZ3cucm9vdCwgYWxsb3cgcncgcG9v bD1kZWZhdWx0LnJndy5jb250cm9sLCBhbGxvdyByeCBwb29sPWRlZmF1bHQucmd3LmxvZywgYWxs b3cgeCBwb29sPWRlZmF1bHQucmd3LmJ1Y2tldHMuaW5kZXgifX1dIiIiCiAgICAgICAgc2VsZi5j @@ -366,1311 +384,1337 @@ metadata: ImVudGl0eSI6ImNsaWVudC5oZWFsdGhjaGVja2VyIiwia2V5IjoiQVFERmtiTmVmdDViRlJBQVRu ZExOVVNFS3J1b3p4aVppM2xyZEE9PSIsImNhcHMiOnsibW9uIjogImFsbG93IHIsIGFsbG93IGNv bW1hbmQgcXVvcnVtX3N0YXR1cywgYWxsb3cgY29tbWFuZCB2ZXJzaW9uIiwgIm1nciI6ICJhbGxv - dyBjb21tYW5kIGNvbmZpZyIsICJvc2QiOiAiYWxsb3cgcnd4IHBvb2w9ZGVmYXVsdC5yZ3cubWV0 - YSwgYWxsb3cgciBwb29sPS5yZ3cucm9vdCwgYWxsb3cgcncgcG9vbD1kZWZhdWx0LnJndy5jb250 - cm9sLCBhbGxvdyByeCBwb29sPWRlZmF1bHQucmd3LmxvZywgYWxsb3cgeCBwb29sPWRlZmF1bHQu - cmd3LmJ1Y2tldHMuaW5kZXgifX1dIiIiCiAgICAgICAgc2VsZi5jbWRfb3V0cHV0X21hcFsKICAg - ICAgICAgICAgIiIieyJlbnRpdHkiOiAiY2xpZW50LmNzaS1jZXBoZnMtbm9kZSIsICJmb3JtYXQi - OiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQifSIiIgogICAgICAgIF0gPSAiIiJbXSIiIgog - ICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiZW50aXR5IjogImNs - aWVudC5jc2ktcmJkLW5vZGUiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0 - In0iIiIKICAgICAgICBdID0gIiIiW10iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwog - ICAgICAgICAgICAiIiJ7ImVudGl0eSI6ICJjbGllbnQuY3NpLXJiZC1wcm92aXNpb25lciIsICJm - b3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQifSIiIgogICAgICAgIF0gPSAiIiJb - XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiZW50aXR5 - IjogImNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyIiwgImZvcm1hdCI6ICJqc29uIiwgInBy - ZWZpeCI6ICJhdXRoIGdldCJ9IiIiCiAgICAgICAgXSA9ICIiIltdIiIiCiAgICAgICAgc2VsZi5j - bWRfb3V0cHV0X21hcFsKICAgICAgICAgICAgIiIieyJlbnRpdHkiOiAiY2xpZW50LmNzaS1jZXBo - ZnMtcHJvdmlzaW9uZXItb3BlbnNoaWZ0LXN0b3JhZ2UiLCAiZm9ybWF0IjogImpzb24iLCAicHJl - Zml4IjogImF1dGggZ2V0In0iIiIKICAgICAgICBdID0gIiIiW10iIiIKICAgICAgICBzZWxmLmNt - ZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7ImVudGl0eSI6ICJjbGllbnQuY3NpLWNlcGhm - cy1wcm92aXNpb25lci1vcGVuc2hpZnQtc3RvcmFnZS1teWZzIiwgImZvcm1hdCI6ICJqc29uIiwg - InByZWZpeCI6ICJhdXRoIGdldCJ9IiIiCiAgICAgICAgXSA9ICIiIltdIiIiCiAgICAgICAgc2Vs - Zi5jbWRfb3V0cHV0X21hcFsKICAgICAgICAgICAgIiIieyJlbnRpdHkiOiAiY2xpZW50LmNzaS1j - ZXBoZnMtcHJvdmlzaW9uZXIiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0 - In0iIiIKICAgICAgICBdID0gIiIiW3siZW50aXR5IjoiY2xpZW50LmNzaS1jZXBoZnMtcHJvdmlz - aW9uZXIiLCJrZXkiOiJBUURGa2JOZWZ0NWJGUkFBVG5kTE5VU0VLcnVvenhpWmkzbHJkQT09Iiwi - Y2FwcyI6eyJtb24iOiJhbGxvdyByIiwgIm1nciI6ImFsbG93IHJ3IiwgIm9zZCI6ImFsbG93IHJ3 - IHRhZyBjZXBoZnMgbWV0YWRhdGE9KiJ9fV0iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFw - WwogICAgICAgICAgICAiIiJ7ImNhcHMiOiBbIm1vbiIsICJhbGxvdyByLCBhbGxvdyBjb21tYW5k - ICdvc2QgYmxvY2tsaXN0JyIsICJtZ3IiLCAiYWxsb3cgcnciLCAib3NkIiwgImFsbG93IHJ3IHRh - ZyBjZXBoZnMgbWV0YWRhdGE9KiJdLCAiZW50aXR5IjogImNsaWVudC5jc2ktY2VwaGZzLXByb3Zp - c2lvbmVyIiwgImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGNhcHMifSIiIgogICAg - ICAgIF0gPSAiIiJbeyJlbnRpdHkiOiJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lciIsImtl - eSI6IkFRREZrYk5lZnQ1YkZSQUFUbmRMTlVTRUtydW96eGlaaTNscmRBPT0iLCJjYXBzIjp7Im1v - biI6ImFsbG93IHIsICBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsICJtZ3IiOiJhbGxv - dyBydyIsICJvc2QiOiJhbGxvdyBydyB0YWcgY2VwaGZzIG1ldGFkYXRhPSoifX1dIiIiCiAgICAg - ICAgc2VsZi5jbWRfb3V0cHV0X21hcFsneyJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAic3Rh - dHVzIn0nXSA9IGNlcGhfc3RhdHVzX3N0cgoKICAgIGRlZiBzaHV0ZG93bihzZWxmKToKICAgICAg - ICBwYXNzCgogICAgZGVmIGdldF9mc2lkKHNlbGYpOgogICAgICAgIHJldHVybiAiYWY0ZTE2NzMt - MGI3Mi00MDJkLTk5MGEtMjJkMjkxOWQwZjFjIgoKICAgIGRlZiBjb25mX3JlYWRfZmlsZShzZWxm - KToKICAgICAgICBwYXNzCgogICAgZGVmIGNvbm5lY3Qoc2VsZik6CiAgICAgICAgcGFzcwoKICAg - IGRlZiBwb29sX2V4aXN0cyhzZWxmLCBwb29sX25hbWUpOgogICAgICAgIHJldHVybiBUcnVlCgog - ICAgZGVmIG1vbl9jb21tYW5kKHNlbGYsIGNtZCwgb3V0KToKICAgICAgICBqc29uX2NtZCA9IGpz - b24ubG9hZHMoY21kKQogICAgICAgIGpzb25fY21kX3N0ciA9IGpzb24uZHVtcHMoanNvbl9jbWQs - IHNvcnRfa2V5cz1UcnVlKQogICAgICAgIGNtZF9vdXRwdXQgPSBzZWxmLmNtZF9vdXRwdXRfbWFw - W2pzb25fY21kX3N0cl0KICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsLCBjbWRfb3V0cHV0 - LCBzdHIoc2VsZi5lcnJfbWVzc2FnZS5lbmNvZGUoInV0Zi04IikpCgogICAgZGVmIF9jb252ZXJ0 - X2hvc3RuYW1lX3RvX2lwKHNlbGYsIGhvc3RfbmFtZSk6CiAgICAgICAgaXBfcmVnX3ggPSByZS5j - b21waWxlKHIiXGR7MSwzfS5cZHsxLDN9LlxkezEsM30uXGR7MSwzfSIpCiAgICAgICAgIyBpZiBw - cm92aWRlZCBob3N0IGlzIGRpcmVjdGx5IGFuIElQIGFkZHJlc3MsIHJldHVybiB0aGUgc2FtZQog - ICAgICAgIGlmIGlwX3JlZ194Lm1hdGNoKGhvc3RfbmFtZSk6CiAgICAgICAgICAgIHJldHVybiBo - b3N0X25hbWUKICAgICAgICBpbXBvcnQgcmFuZG9tCgogICAgICAgIGhvc3RfaXAgPSBzZWxmLmR1 - bW15X2hvc3RfaXBfbWFwLmdldChob3N0X25hbWUsICIiKQogICAgICAgIGlmIG5vdCBob3N0X2lw - OgogICAgICAgICAgICBob3N0X2lwID0gZiIxNzIuOS57cmFuZG9tLnJhbmRpbnQoMCwgMjU0KX0u - e3JhbmRvbS5yYW5kaW50KDAsIDI1NCl9IgogICAgICAgICAgICBzZWxmLmR1bW15X2hvc3RfaXBf - bWFwW2hvc3RfbmFtZV0gPSBob3N0X2lwCiAgICAgICAgZGVsIHJhbmRvbQogICAgICAgIHJldHVy - biBob3N0X2lwCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgUmFkb3MoY29uZmZpbGU9Tm9uZSk6 - CiAgICAgICAgcmV0dXJuIER1bW15UmFkb3MoKQoKCmNsYXNzIFMzQXV0aChBdXRoQmFzZSk6Cgog - ICAgIiIiQXR0YWNoZXMgQVdTIEF1dGhlbnRpY2F0aW9uIHRvIHRoZSBnaXZlbiBSZXF1ZXN0IG9i - amVjdC4iIiIKCiAgICBzZXJ2aWNlX2Jhc2VfdXJsID0gInMzLmFtYXpvbmF3cy5jb20iCgogICAg - ZGVmIF9faW5pdF9fKHNlbGYsIGFjY2Vzc19rZXksIHNlY3JldF9rZXksIHNlcnZpY2VfdXJsPU5v - bmUpOgogICAgICAgIGlmIHNlcnZpY2VfdXJsOgogICAgICAgICAgICBzZWxmLnNlcnZpY2VfYmFz - ZV91cmwgPSBzZXJ2aWNlX3VybAogICAgICAgIHNlbGYuYWNjZXNzX2tleSA9IHN0cihhY2Nlc3Nf - a2V5KQogICAgICAgIHNlbGYuc2VjcmV0X2tleSA9IHN0cihzZWNyZXRfa2V5KQoKICAgIGRlZiBf - X2NhbGxfXyhzZWxmLCByKToKICAgICAgICAjIENyZWF0ZSBkYXRlIGhlYWRlciBpZiBpdCBpcyBu - b3QgY3JlYXRlZCB5ZXQuCiAgICAgICAgaWYgImRhdGUiIG5vdCBpbiByLmhlYWRlcnMgYW5kICJ4 - LWFtei1kYXRlIiBub3QgaW4gci5oZWFkZXJzOgogICAgICAgICAgICByLmhlYWRlcnNbImRhdGUi - XSA9IGZvcm1hdGRhdGUodGltZXZhbD1Ob25lLCBsb2NhbHRpbWU9RmFsc2UsIHVzZWdtdD1UcnVl - KQogICAgICAgIHNpZ25hdHVyZSA9IHNlbGYuZ2V0X3NpZ25hdHVyZShyKQogICAgICAgIGlmIHB5 - M2s6CiAgICAgICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZS5kZWNvZGUoInV0Zi04IikKICAg - ICAgICByLmhlYWRlcnNbIkF1dGhvcml6YXRpb24iXSA9IGYiQVdTIHtzZWxmLmFjY2Vzc19rZXl9 - OntzaWduYXR1cmV9IgogICAgICAgIHJldHVybiByCgogICAgZGVmIGdldF9zaWduYXR1cmUoc2Vs - Ziwgcik6CiAgICAgICAgY2Fub25pY2FsX3N0cmluZyA9IHNlbGYuZ2V0X2Nhbm9uaWNhbF9zdHJp - bmcoci51cmwsIHIuaGVhZGVycywgci5tZXRob2QpCiAgICAgICAgaWYgcHkzazoKICAgICAgICAg - ICAga2V5ID0gc2VsZi5zZWNyZXRfa2V5LmVuY29kZSgidXRmLTgiKQogICAgICAgICAgICBtc2cg - PSBjYW5vbmljYWxfc3RyaW5nLmVuY29kZSgidXRmLTgiKQogICAgICAgIGVsc2U6CiAgICAgICAg - ICAgIGtleSA9IHNlbGYuc2VjcmV0X2tleQogICAgICAgICAgICBtc2cgPSBjYW5vbmljYWxfc3Ry - aW5nCiAgICAgICAgaCA9IGhtYWMubmV3KGtleSwgbXNnLCBkaWdlc3Rtb2Q9c2hhKQogICAgICAg - IHJldHVybiBlbmNvZGVzdHJpbmcoaC5kaWdlc3QoKSkuc3RyaXAoKQoKICAgIGRlZiBnZXRfY2Fu - b25pY2FsX3N0cmluZyhzZWxmLCB1cmwsIGhlYWRlcnMsIG1ldGhvZCk6CiAgICAgICAgcGFyc2Vk - dXJsID0gdXJscGFyc2UodXJsKQogICAgICAgIG9iamVjdGtleSA9IHBhcnNlZHVybC5wYXRoWzE6 - XQoKICAgICAgICBidWNrZXQgPSBwYXJzZWR1cmwubmV0bG9jWzogLWxlbihzZWxmLnNlcnZpY2Vf - YmFzZV91cmwpXQogICAgICAgIGlmIGxlbihidWNrZXQpID4gMToKICAgICAgICAgICAgIyByZW1v - dmUgbGFzdCBkb3QKICAgICAgICAgICAgYnVja2V0ID0gYnVja2V0WzotMV0KCiAgICAgICAgaW50 - ZXJlc3RpbmdfaGVhZGVycyA9IHsiY29udGVudC1tZDUiOiAiIiwgImNvbnRlbnQtdHlwZSI6ICIi - LCAiZGF0ZSI6ICIifQogICAgICAgIGZvciBrZXkgaW4gaGVhZGVyczoKICAgICAgICAgICAgbGsg - PSBrZXkubG93ZXIoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBsayA9IGxrLmRl - Y29kZSgidXRmLTgiKQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBwYXNzCiAg - ICAgICAgICAgIGlmIGhlYWRlcnNba2V5XSBhbmQgKAogICAgICAgICAgICAgICAgbGsgaW4gaW50 - ZXJlc3RpbmdfaGVhZGVycy5rZXlzKCkgb3IgbGsuc3RhcnRzd2l0aCgieC1hbXotIikKICAgICAg - ICAgICAgKToKICAgICAgICAgICAgICAgIGludGVyZXN0aW5nX2hlYWRlcnNbbGtdID0gaGVhZGVy - c1trZXldLnN0cmlwKCkKCiAgICAgICAgIyBJZiB4LWFtei1kYXRlIGlzIHVzZWQgaXQgc3VwZXJz - ZWRlcyB0aGUgZGF0ZSBoZWFkZXIuCiAgICAgICAgaWYgbm90IHB5M2s6CiAgICAgICAgICAgIGlm - ICJ4LWFtei1kYXRlIiBpbiBpbnRlcmVzdGluZ19oZWFkZXJzOgogICAgICAgICAgICAgICAgaW50 - ZXJlc3RpbmdfaGVhZGVyc1siZGF0ZSJdID0gIiIKICAgICAgICBlbHNlOgogICAgICAgICAgICBp - ZiAieC1hbXotZGF0ZSIgaW4gaW50ZXJlc3RpbmdfaGVhZGVyczoKICAgICAgICAgICAgICAgIGlu - dGVyZXN0aW5nX2hlYWRlcnNbImRhdGUiXSA9ICIiCgogICAgICAgIGJ1ZiA9IGYie21ldGhvZH1c - biIKICAgICAgICBmb3Iga2V5IGluIHNvcnRlZChpbnRlcmVzdGluZ19oZWFkZXJzLmtleXMoKSk6 - CiAgICAgICAgICAgIHZhbCA9IGludGVyZXN0aW5nX2hlYWRlcnNba2V5XQogICAgICAgICAgICBp - ZiBrZXkuc3RhcnRzd2l0aCgieC1hbXotIik6CiAgICAgICAgICAgICAgICBidWYgKz0gZiJ7a2V5 - fTp7dmFsfVxuIgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYnVmICs9IGYie3Zh - bH1cbiIKCiAgICAgICAgIyBhcHBlbmQgdGhlIGJ1Y2tldCBpZiBpdCBleGlzdHMKICAgICAgICBp - ZiBidWNrZXQgIT0gIiI6CiAgICAgICAgICAgIGJ1ZiArPSBmIi97YnVja2V0fSIKCiAgICAgICAg - IyBhZGQgdGhlIG9iamVjdGtleS4gZXZlbiBpZiBpdCBkb2Vzbid0IGV4aXN0LCBhZGQgdGhlIHNs - YXNoCiAgICAgICAgYnVmICs9IGYiL3tvYmplY3RrZXl9IgoKICAgICAgICByZXR1cm4gYnVmCgoK - Y2xhc3MgUmFkb3NKU09OOgogICAgRVhURVJOQUxfVVNFUl9OQU1FID0gImNsaWVudC5oZWFsdGhj - aGVja2VyIgogICAgRVhURVJOQUxfUkdXX0FETUlOX09QU19VU0VSX05BTUUgPSAicmd3LWFkbWlu - LW9wcy11c2VyIgogICAgRU1QVFlfT1VUUFVUX0xJU1QgPSAiRW1wdHkgb3V0cHV0IGxpc3QiCiAg - ICBERUZBVUxUX1JHV19QT09MX1BSRUZJWCA9ICJkZWZhdWx0IgogICAgREVGQVVMVF9NT05JVE9S - SU5HX0VORFBPSU5UX1BPUlQgPSAiOTI4MyIKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBnZW5f - YXJnX3BhcnNlcihjbHMsIGFyZ3NfdG9fcGFyc2U9Tm9uZSk6CiAgICAgICAgYXJnUCA9IGFyZ3Bh - cnNlLkFyZ3VtZW50UGFyc2VyKCkKCiAgICAgICAgY29tbW9uX2dyb3VwID0gYXJnUC5hZGRfYXJn - dW1lbnRfZ3JvdXAoImNvbW1vbiIpCiAgICAgICAgY29tbW9uX2dyb3VwLmFkZF9hcmd1bWVudCgi - LS12ZXJib3NlIiwgIi12IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSkKICAg - ICAgICBjb21tb25fZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1jZXBoLWNvbmYi - LCAiLWMiLCBoZWxwPSJQcm92aWRlIGEgY2VwaCBjb25mIGZpbGUuIiwgdHlwZT1zdHIKICAgICAg - ICApCiAgICAgICAgY29tbW9uX2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0ta2V5 - cmluZyIsICItayIsIGhlbHA9IlBhdGggdG8gY2VwaCBrZXlyaW5nIGZpbGUuIiwgdHlwZT1zdHIK - ICAgICAgICApCiAgICAgICAgY29tbW9uX2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAg - Ii0tcnVuLWFzLXVzZXIiLAogICAgICAgICAgICAiLXUiLAogICAgICAgICAgICBkZWZhdWx0PSIi - LAogICAgICAgICAgICB0eXBlPXN0ciwKICAgICAgICAgICAgaGVscD0iUHJvdmlkZXMgYSB1c2Vy - IG5hbWUgdG8gY2hlY2sgdGhlIGNsdXN0ZXIncyBoZWFsdGggc3RhdHVzLCBtdXN0IGJlIHByZWZp - eGVkIGJ5ICdjbGllbnQuJyIsCiAgICAgICAgKQogICAgICAgIGNvbW1vbl9ncm91cC5hZGRfYXJn - dW1lbnQoCiAgICAgICAgICAgICItLWNsdXN0ZXItbmFtZSIsIGRlZmF1bHQ9IiIsIGhlbHA9IkNl - cGggY2x1c3RlciBuYW1lIgogICAgICAgICkKICAgICAgICBjb21tb25fZ3JvdXAuYWRkX2FyZ3Vt - ZW50KAogICAgICAgICAgICAiLS1uYW1lc3BhY2UiLAogICAgICAgICAgICBkZWZhdWx0PSIiLAog - ICAgICAgICAgICBoZWxwPSJOYW1lc3BhY2Ugd2hlcmUgQ2VwaENsdXN0ZXIgaXMgcnVubmluZyIs - CiAgICAgICAgKQogICAgICAgIGNvbW1vbl9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAg - ICItLXJndy1wb29sLXByZWZpeCIsIGRlZmF1bHQ9IiIsIGhlbHA9IlJHVyBQb29sIHByZWZpeCIK - ICAgICAgICApCiAgICAgICAgY29tbW9uX2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAg - Ii0tcmVzdHJpY3RlZC1hdXRoLXBlcm1pc3Npb24iLAogICAgICAgICAgICBkZWZhdWx0PUZhbHNl - LAogICAgICAgICAgICBoZWxwPSJSZXN0cmljdCBjZXBoQ1NJS2V5cmluZ3MgYXV0aCBwZXJtaXNz - aW9ucyB0byBzcGVjaWZpYyBwb29scywgY2x1c3Rlci4iCiAgICAgICAgICAgICsgIk1hbmRhdG9y - eSBmbGFncyB0aGF0IG5lZWQgdG8gYmUgc2V0IGFyZSAtLXJiZC1kYXRhLXBvb2wtbmFtZSwgYW5k - IC0tY2x1c3Rlci1uYW1lLiIKICAgICAgICAgICAgKyAiLS1jZXBoZnMtZmlsZXN5c3RlbS1uYW1l - IGZsYWcgY2FuIGFsc28gYmUgcGFzc2VkIGluIGNhc2Ugb2YgY2VwaGZzIHVzZXIgcmVzdHJpY3Rp - b24sIHNvIGl0IGNhbiByZXN0cmljdCB1c2VyIHRvIHBhcnRpY3VsYXIgY2VwaGZzIGZpbGVzeXN0 - ZW0iCiAgICAgICAgICAgICsgInNhbXBsZSBydW46IGBweXRob24zIC9ldGMvY2VwaC9jcmVhdGUt - ZXh0ZXJuYWwtY2x1c3Rlci1yZXNvdXJjZXMucHkgLS1jZXBoZnMtZmlsZXN5c3RlbS1uYW1lIG15 - ZnMgLS1yYmQtZGF0YS1wb29sLW5hbWUgcmVwbGljYXBvb2wgLS1jbHVzdGVyLW5hbWUgcm9va3N0 - b3JhZ2UgLS1yZXN0cmljdGVkLWF1dGgtcGVybWlzc2lvbiB0cnVlYCIKICAgICAgICAgICAgKyAi - Tm90ZTogUmVzdHJpY3RpbmcgdGhlIGNzaS11c2VycyBwZXIgcG9vbCwgYW5kIHBlciBjbHVzdGVy - IHdpbGwgcmVxdWlyZSBjcmVhdGluZyBuZXcgY3NpLXVzZXJzIGFuZCBuZXcgc2VjcmV0cyBmb3Ig - dGhhdCBjc2ktdXNlcnMuIgogICAgICAgICAgICArICJTbyBhcHBseSB0aGVzZSBzZWNyZXRzIG9u - bHkgdG8gbmV3IGBDb25zdW1lciBjbHVzdGVyYCBkZXBsb3ltZW50IHdoaWxlIHVzaW5nIHRoZSBz - YW1lIGBTb3VyY2UgY2x1c3RlcmAuIiwKICAgICAgICApCiAgICAgICAgY29tbW9uX2dyb3VwLmFk - ZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tdjItcG9ydC1lbmFibGUiLAogICAgICAgICAgICBh - Y3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAg - ICBoZWxwPSJFbmFibGUgdjIgbW9uIHBvcnQoMzMwMCkgZm9yIG1vbnMiLAogICAgICAgICkKCiAg - ICAgICAgb3V0cHV0X2dyb3VwID0gYXJnUC5hZGRfYXJndW1lbnRfZ3JvdXAoIm91dHB1dCIpCiAg - ICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tZm9ybWF0IiwK - ICAgICAgICAgICAgIi10IiwKICAgICAgICAgICAgY2hvaWNlcz1bImpzb24iLCAiYmFzaCJdLAog - ICAgICAgICAgICBkZWZhdWx0PSJqc29uIiwKICAgICAgICAgICAgaGVscD0iUHJvdmlkZXMgdGhl - IG91dHB1dCBmb3JtYXQgKGpzb24gfCBiYXNoKSIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9n - cm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLW91dHB1dCIsCiAgICAgICAgICAgICIt - byIsCiAgICAgICAgICAgIGRlZmF1bHQ9IiIsCiAgICAgICAgICAgIGhlbHA9Ik91dHB1dCB3aWxs - IGJlIHN0b3JlZCBpbnRvIHRoZSBwcm92aWRlZCBmaWxlIiwKICAgICAgICApCiAgICAgICAgb3V0 - cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tY2VwaGZzLWZpbGVzeXN0ZW0t - bmFtZSIsCiAgICAgICAgICAgIGRlZmF1bHQ9IiIsCiAgICAgICAgICAgIGhlbHA9IlByb3ZpZGVz - IHRoZSBuYW1lIG9mIHRoZSBDZXBoIGZpbGVzeXN0ZW0iLAogICAgICAgICkKICAgICAgICBvdXRw - dXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1jZXBoZnMtbWV0YWRhdGEtcG9v - bC1uYW1lIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAgaGVscD0iUHJvdmlk - ZXMgdGhlIG5hbWUgb2YgdGhlIGNlcGhmcyBtZXRhZGF0YSBwb29sIiwKICAgICAgICApCiAgICAg - ICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tY2VwaGZzLWRhdGEt - cG9vbC1uYW1lIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAgaGVscD0iUHJv - dmlkZXMgdGhlIG5hbWUgb2YgdGhlIGNlcGhmcyBkYXRhIHBvb2wiLAogICAgICAgICkKICAgICAg - ICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1yYmQtZGF0YS1wb29s + dyBjb21tYW5kIGNvbmZpZyIsICJvc2QiOiAicHJvZmlsZSByYmQtcmVhZC1vbmx5LCBhbGxvdyBy + d3ggcG9vbD1kZWZhdWx0LnJndy5tZXRhLCBhbGxvdyByIHBvb2w9LnJndy5yb290LCBhbGxvdyBy + dyBwb29sPWRlZmF1bHQucmd3LmNvbnRyb2wsIGFsbG93IHJ4IHBvb2w9ZGVmYXVsdC5yZ3cubG9n + LCBhbGxvdyB4IHBvb2w9ZGVmYXVsdC5yZ3cuYnVja2V0cy5pbmRleCJ9fV0iIiIKICAgICAgICBz + ZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7ImVudGl0eSI6ICJjbGllbnQuY3Np + LWNlcGhmcy1ub2RlIiwgImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGdldCJ9IiIi + CiAgICAgICAgXSA9ICIiIltdIiIiCiAgICAgICAgc2VsZi5jbWRfb3V0cHV0X21hcFsKICAgICAg + ICAgICAgIiIieyJlbnRpdHkiOiAiY2xpZW50LmNzaS1yYmQtbm9kZSIsICJmb3JtYXQiOiAianNv + biIsICJwcmVmaXgiOiAiYXV0aCBnZXQifSIiIgogICAgICAgIF0gPSAiIiJbXSIiIgogICAgICAg + IHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiZW50aXR5IjogImNsaWVudC5j + c2ktcmJkLXByb3Zpc2lvbmVyIiwgImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGdl + dCJ9IiIiCiAgICAgICAgXSA9ICIiIltdIiIiCiAgICAgICAgc2VsZi5jbWRfb3V0cHV0X21hcFsK + ICAgICAgICAgICAgIiIieyJlbnRpdHkiOiAiY2xpZW50LmNzaS1jZXBoZnMtcHJvdmlzaW9uZXIi + LCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0In0iIiIKICAgICAgICBdID0g + IiIiW10iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7ImVu + dGl0eSI6ICJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lci1vcGVuc2hpZnQtc3RvcmFnZSIs + ICJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQifSIiIgogICAgICAgIF0gPSAi + IiJbXSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiZW50 + aXR5IjogImNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyLW9wZW5zaGlmdC1zdG9yYWdlLW15 + ZnMiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0In0iIiIKICAgICAgICBd + ID0gIiIiW10iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7 + ImVudGl0eSI6ICJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lciIsICJmb3JtYXQiOiAianNv + biIsICJwcmVmaXgiOiAiYXV0aCBnZXQifSIiIgogICAgICAgIF0gPSAiIiJbeyJlbnRpdHkiOiJj + bGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lciIsImtleSI6IkFRREZrYk5lZnQ1YkZSQUFUbmRM + TlVTRUtydW96eGlaaTNscmRBPT0iLCJjYXBzIjp7Im1vbiI6ImFsbG93IHIiLCAibWdyIjoiYWxs + b3cgcnciLCAib3NkIjoiYWxsb3cgcncgdGFnIGNlcGhmcyBtZXRhZGF0YT0qIn19XSIiIgogICAg + ICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6IFsibW9uIiwg + ImFsbG93IHIsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwgIm1nciIsICJhbGxvdyBy + dyIsICJvc2QiLCAiYWxsb3cgcncgdGFnIGNlcGhmcyBtZXRhZGF0YT0qIl0sICJlbnRpdHkiOiAi + Y2xpZW50LmNzaS1jZXBoZnMtcHJvdmlzaW9uZXIiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4 + IjogImF1dGggY2FwcyJ9IiIiCiAgICAgICAgXSA9ICIiIlt7ImVudGl0eSI6ImNsaWVudC5jc2kt + Y2VwaGZzLXByb3Zpc2lvbmVyIiwia2V5IjoiQVFERmtiTmVmdDViRlJBQVRuZExOVVNFS3J1b3p4 + aVppM2xyZEE9PSIsImNhcHMiOnsibW9uIjoiYWxsb3cgciwgIGFsbG93IGNvbW1hbmQgJ29zZCBi + bG9ja2xpc3QnIiwgIm1nciI6ImFsbG93IHJ3IiwgIm9zZCI6ImFsbG93IHJ3IHRhZyBjZXBoZnMg + bWV0YWRhdGE9KiJ9fV0iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWyd7ImZvcm1hdCI6 + ICJqc29uIiwgInByZWZpeCI6ICJzdGF0dXMifSddID0gY2VwaF9zdGF0dXNfc3RyCgogICAgZGVm + IHNodXRkb3duKHNlbGYpOgogICAgICAgIHBhc3MKCiAgICBkZWYgZ2V0X2ZzaWQoc2VsZik6CiAg + ICAgICAgcmV0dXJuICJhZjRlMTY3My0wYjcyLTQwMmQtOTkwYS0yMmQyOTE5ZDBmMWMiCgogICAg + ZGVmIGNvbmZfcmVhZF9maWxlKHNlbGYpOgogICAgICAgIHBhc3MKCiAgICBkZWYgY29ubmVjdChz + ZWxmKToKICAgICAgICBwYXNzCgogICAgZGVmIHBvb2xfZXhpc3RzKHNlbGYsIHBvb2xfbmFtZSk6 + CiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgbW9uX2NvbW1hbmQoc2VsZiwgY21kLCBvdXQp + OgogICAgICAgIGpzb25fY21kID0ganNvbi5sb2FkcyhjbWQpCiAgICAgICAganNvbl9jbWRfc3Ry + ID0ganNvbi5kdW1wcyhqc29uX2NtZCwgc29ydF9rZXlzPVRydWUpCiAgICAgICAgY21kX291dHB1 + dCA9IHNlbGYuY21kX291dHB1dF9tYXBbanNvbl9jbWRfc3RyXQogICAgICAgIHJldHVybiBzZWxm + LnJldHVybl92YWwsIGNtZF9vdXRwdXQsIHN0cihzZWxmLmVycl9tZXNzYWdlLmVuY29kZSgidXRm + LTgiKSkKCiAgICBkZWYgX2NvbnZlcnRfaG9zdG5hbWVfdG9faXAoc2VsZiwgaG9zdF9uYW1lKToK + ICAgICAgICBpcF9yZWdfeCA9IHJlLmNvbXBpbGUociJcZHsxLDN9LlxkezEsM30uXGR7MSwzfS5c + ZHsxLDN9IikKICAgICAgICAjIGlmIHByb3ZpZGVkIGhvc3QgaXMgZGlyZWN0bHkgYW4gSVAgYWRk + cmVzcywgcmV0dXJuIHRoZSBzYW1lCiAgICAgICAgaWYgaXBfcmVnX3gubWF0Y2goaG9zdF9uYW1l + KToKICAgICAgICAgICAgcmV0dXJuIGhvc3RfbmFtZQogICAgICAgIGltcG9ydCByYW5kb20KCiAg + ICAgICAgaG9zdF9pcCA9IHNlbGYuZHVtbXlfaG9zdF9pcF9tYXAuZ2V0KGhvc3RfbmFtZSwgIiIp + CiAgICAgICAgaWYgbm90IGhvc3RfaXA6CiAgICAgICAgICAgIGhvc3RfaXAgPSBmIjE3Mi45Lnty + YW5kb20ucmFuZGludCgwLCAyNTQpfS57cmFuZG9tLnJhbmRpbnQoMCwgMjU0KX0iCiAgICAgICAg + ICAgIHNlbGYuZHVtbXlfaG9zdF9pcF9tYXBbaG9zdF9uYW1lXSA9IGhvc3RfaXAKICAgICAgICBk + ZWwgcmFuZG9tCiAgICAgICAgcmV0dXJuIGhvc3RfaXAKCiAgICBAY2xhc3NtZXRob2QKICAgIGRl + ZiBSYWRvcyhjb25mZmlsZT1Ob25lKToKICAgICAgICByZXR1cm4gRHVtbXlSYWRvcygpCgoKY2xh + c3MgUzNBdXRoKEF1dGhCYXNlKToKCiAgICAiIiJBdHRhY2hlcyBBV1MgQXV0aGVudGljYXRpb24g + dG8gdGhlIGdpdmVuIFJlcXVlc3Qgb2JqZWN0LiIiIgoKICAgIHNlcnZpY2VfYmFzZV91cmwgPSAi + czMuYW1hem9uYXdzLmNvbSIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYWNjZXNzX2tleSwgc2Vj + cmV0X2tleSwgc2VydmljZV91cmw9Tm9uZSk6CiAgICAgICAgaWYgc2VydmljZV91cmw6CiAgICAg + ICAgICAgIHNlbGYuc2VydmljZV9iYXNlX3VybCA9IHNlcnZpY2VfdXJsCiAgICAgICAgc2VsZi5h + Y2Nlc3Nfa2V5ID0gc3RyKGFjY2Vzc19rZXkpCiAgICAgICAgc2VsZi5zZWNyZXRfa2V5ID0gc3Ry + KHNlY3JldF9rZXkpCgogICAgZGVmIF9fY2FsbF9fKHNlbGYsIHIpOgogICAgICAgICMgQ3JlYXRl + IGRhdGUgaGVhZGVyIGlmIGl0IGlzIG5vdCBjcmVhdGVkIHlldC4KICAgICAgICBpZiAiZGF0ZSIg + bm90IGluIHIuaGVhZGVycyBhbmQgIngtYW16LWRhdGUiIG5vdCBpbiByLmhlYWRlcnM6CiAgICAg + ICAgICAgIHIuaGVhZGVyc1siZGF0ZSJdID0gZm9ybWF0ZGF0ZSh0aW1ldmFsPU5vbmUsIGxvY2Fs + dGltZT1GYWxzZSwgdXNlZ210PVRydWUpCiAgICAgICAgc2lnbmF0dXJlID0gc2VsZi5nZXRfc2ln + bmF0dXJlKHIpCiAgICAgICAgaWYgcHkzazoKICAgICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0 + dXJlLmRlY29kZSgidXRmLTgiKQogICAgICAgIHIuaGVhZGVyc1siQXV0aG9yaXphdGlvbiJdID0g + ZiJBV1Mge3NlbGYuYWNjZXNzX2tleX06e3NpZ25hdHVyZX0iCiAgICAgICAgcmV0dXJuIHIKCiAg + ICBkZWYgZ2V0X3NpZ25hdHVyZShzZWxmLCByKToKICAgICAgICBjYW5vbmljYWxfc3RyaW5nID0g + c2VsZi5nZXRfY2Fub25pY2FsX3N0cmluZyhyLnVybCwgci5oZWFkZXJzLCByLm1ldGhvZCkKICAg + ICAgICBpZiBweTNrOgogICAgICAgICAgICBrZXkgPSBzZWxmLnNlY3JldF9rZXkuZW5jb2RlKCJ1 + dGYtOCIpCiAgICAgICAgICAgIG1zZyA9IGNhbm9uaWNhbF9zdHJpbmcuZW5jb2RlKCJ1dGYtOCIp + CiAgICAgICAgZWxzZToKICAgICAgICAgICAga2V5ID0gc2VsZi5zZWNyZXRfa2V5CiAgICAgICAg + ICAgIG1zZyA9IGNhbm9uaWNhbF9zdHJpbmcKICAgICAgICBoID0gaG1hYy5uZXcoa2V5LCBtc2cs + IGRpZ2VzdG1vZD1zaGEpCiAgICAgICAgcmV0dXJuIGVuY29kZXN0cmluZyhoLmRpZ2VzdCgpKS5z + dHJpcCgpCgogICAgZGVmIGdldF9jYW5vbmljYWxfc3RyaW5nKHNlbGYsIHVybCwgaGVhZGVycywg + bWV0aG9kKToKICAgICAgICBwYXJzZWR1cmwgPSB1cmxwYXJzZSh1cmwpCiAgICAgICAgb2JqZWN0 + a2V5ID0gcGFyc2VkdXJsLnBhdGhbMTpdCgogICAgICAgIGJ1Y2tldCA9IHBhcnNlZHVybC5uZXRs + b2NbOiAtbGVuKHNlbGYuc2VydmljZV9iYXNlX3VybCldCiAgICAgICAgaWYgbGVuKGJ1Y2tldCkg + PiAxOgogICAgICAgICAgICAjIHJlbW92ZSBsYXN0IGRvdAogICAgICAgICAgICBidWNrZXQgPSBi + dWNrZXRbOi0xXQoKICAgICAgICBpbnRlcmVzdGluZ19oZWFkZXJzID0geyJjb250ZW50LW1kNSI6 + ICIiLCAiY29udGVudC10eXBlIjogIiIsICJkYXRlIjogIiJ9CiAgICAgICAgZm9yIGtleSBpbiBo + ZWFkZXJzOgogICAgICAgICAgICBsayA9IGtleS5sb3dlcigpCiAgICAgICAgICAgIHRyeToKICAg + ICAgICAgICAgICAgIGxrID0gbGsuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgIGV4Y2VwdDoK + ICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgaWYgaGVhZGVyc1trZXldIGFuZCAoCiAg + ICAgICAgICAgICAgICBsayBpbiBpbnRlcmVzdGluZ19oZWFkZXJzLmtleXMoKSBvciBsay5zdGFy + dHN3aXRoKCJ4LWFtei0iKQogICAgICAgICAgICApOgogICAgICAgICAgICAgICAgaW50ZXJlc3Rp + bmdfaGVhZGVyc1tsa10gPSBoZWFkZXJzW2tleV0uc3RyaXAoKQoKICAgICAgICAjIElmIHgtYW16 + LWRhdGUgaXMgdXNlZCBpdCBzdXBlcnNlZGVzIHRoZSBkYXRlIGhlYWRlci4KICAgICAgICBpZiBu + b3QgcHkzazoKICAgICAgICAgICAgaWYgIngtYW16LWRhdGUiIGluIGludGVyZXN0aW5nX2hlYWRl + cnM6CiAgICAgICAgICAgICAgICBpbnRlcmVzdGluZ19oZWFkZXJzWyJkYXRlIl0gPSAiIgogICAg + ICAgIGVsc2U6CiAgICAgICAgICAgIGlmICJ4LWFtei1kYXRlIiBpbiBpbnRlcmVzdGluZ19oZWFk + ZXJzOgogICAgICAgICAgICAgICAgaW50ZXJlc3RpbmdfaGVhZGVyc1siZGF0ZSJdID0gIiIKCiAg + ICAgICAgYnVmID0gZiJ7bWV0aG9kfVxuIgogICAgICAgIGZvciBrZXkgaW4gc29ydGVkKGludGVy + ZXN0aW5nX2hlYWRlcnMua2V5cygpKToKICAgICAgICAgICAgdmFsID0gaW50ZXJlc3RpbmdfaGVh + ZGVyc1trZXldCiAgICAgICAgICAgIGlmIGtleS5zdGFydHN3aXRoKCJ4LWFtei0iKToKICAgICAg + ICAgICAgICAgIGJ1ZiArPSBmIntrZXl9Ont2YWx9XG4iCiAgICAgICAgICAgIGVsc2U6CiAgICAg + ICAgICAgICAgICBidWYgKz0gZiJ7dmFsfVxuIgoKICAgICAgICAjIGFwcGVuZCB0aGUgYnVja2V0 + IGlmIGl0IGV4aXN0cwogICAgICAgIGlmIGJ1Y2tldCAhPSAiIjoKICAgICAgICAgICAgYnVmICs9 + IGYiL3tidWNrZXR9IgoKICAgICAgICAjIGFkZCB0aGUgb2JqZWN0a2V5LiBldmVuIGlmIGl0IGRv + ZXNuJ3QgZXhpc3QsIGFkZCB0aGUgc2xhc2gKICAgICAgICBidWYgKz0gZiIve29iamVjdGtleX0i + CgogICAgICAgIHJldHVybiBidWYKCgpjbGFzcyBSYWRvc0pTT046CiAgICBFWFRFUk5BTF9VU0VS + X05BTUUgPSAiY2xpZW50LmhlYWx0aGNoZWNrZXIiCiAgICBFWFRFUk5BTF9SR1dfQURNSU5fT1BT + X1VTRVJfTkFNRSA9ICJyZ3ctYWRtaW4tb3BzLXVzZXIiCiAgICBFTVBUWV9PVVRQVVRfTElTVCA9 + ICJFbXB0eSBvdXRwdXQgbGlzdCIKICAgIERFRkFVTFRfUkdXX1BPT0xfUFJFRklYID0gImRlZmF1 + bHQiCiAgICBERUZBVUxUX01PTklUT1JJTkdfRU5EUE9JTlRfUE9SVCA9ICI5MjgzIgoKICAgIEBj + bGFzc21ldGhvZAogICAgZGVmIGdlbl9hcmdfcGFyc2VyKGNscywgYXJnc190b19wYXJzZT1Ob25l + KToKICAgICAgICBhcmdQID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQoKICAgICAgICBjb21t + b25fZ3JvdXAgPSBhcmdQLmFkZF9hcmd1bWVudF9ncm91cCgiY29tbW9uIikKICAgICAgICBjb21t + b25fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCAiLXYiLCBhY3Rpb249InN0b3JlX3Ry + dWUiLCBkZWZhdWx0PUZhbHNlKQogICAgICAgIGNvbW1vbl9ncm91cC5hZGRfYXJndW1lbnQoCiAg + ICAgICAgICAgICItLWNlcGgtY29uZiIsICItYyIsIGhlbHA9IlByb3ZpZGUgYSBjZXBoIGNvbmYg + ZmlsZS4iLCB0eXBlPXN0cgogICAgICAgICkKICAgICAgICBjb21tb25fZ3JvdXAuYWRkX2FyZ3Vt + ZW50KAogICAgICAgICAgICAiLS1rZXlyaW5nIiwgIi1rIiwgaGVscD0iUGF0aCB0byBjZXBoIGtl + eXJpbmcgZmlsZS4iLCB0eXBlPXN0cgogICAgICAgICkKICAgICAgICBjb21tb25fZ3JvdXAuYWRk + X2FyZ3VtZW50KAogICAgICAgICAgICAiLS1ydW4tYXMtdXNlciIsCiAgICAgICAgICAgICItdSIs + CiAgICAgICAgICAgIGRlZmF1bHQ9IiIsCiAgICAgICAgICAgIHR5cGU9c3RyLAogICAgICAgICAg + ICBoZWxwPSJQcm92aWRlcyBhIHVzZXIgbmFtZSB0byBjaGVjayB0aGUgY2x1c3RlcidzIGhlYWx0 + aCBzdGF0dXMsIG11c3QgYmUgcHJlZml4ZWQgYnkgJ2NsaWVudC4nIiwKICAgICAgICApCiAgICAg + ICAgY29tbW9uX2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tazhzLWNsdXN0ZXIt + bmFtZSIsIGRlZmF1bHQ9IiIsIGhlbHA9Ikt1YmVybmV0ZXMgY2x1c3RlciBuYW1lIgogICAgICAg + ICkKICAgICAgICBjb21tb25fZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1uYW1l + c3BhY2UiLAogICAgICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICBoZWxwPSJOYW1lc3Bh + Y2Ugd2hlcmUgQ2VwaENsdXN0ZXIgaXMgcnVubmluZyIsCiAgICAgICAgKQogICAgICAgIGNvbW1v + bl9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLXJndy1wb29sLXByZWZpeCIsIGRl + ZmF1bHQ9IiIsIGhlbHA9IlJHVyBQb29sIHByZWZpeCIKICAgICAgICApCiAgICAgICAgY29tbW9u + X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tcmVzdHJpY3RlZC1hdXRoLXBlcm1p + c3Npb24iLAogICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICBoZWxwPSJSZXN0 + cmljdCBjZXBoQ1NJS2V5cmluZ3MgYXV0aCBwZXJtaXNzaW9ucyB0byBzcGVjaWZpYyBwb29scywg + Y2x1c3Rlci4iCiAgICAgICAgICAgICsgIk1hbmRhdG9yeSBmbGFncyB0aGF0IG5lZWQgdG8gYmUg + c2V0IGFyZSAtLXJiZC1kYXRhLXBvb2wtbmFtZSwgYW5kIC0tazhzLWNsdXN0ZXItbmFtZS4iCiAg + ICAgICAgICAgICsgIi0tY2VwaGZzLWZpbGVzeXN0ZW0tbmFtZSBmbGFnIGNhbiBhbHNvIGJlIHBh + c3NlZCBpbiBjYXNlIG9mIGNlcGhmcyB1c2VyIHJlc3RyaWN0aW9uLCBzbyBpdCBjYW4gcmVzdHJp + Y3QgdXNlciB0byBwYXJ0aWN1bGFyIGNlcGhmcyBmaWxlc3lzdGVtIgogICAgICAgICAgICArICJz + YW1wbGUgcnVuOiBgcHl0aG9uMyAvZXRjL2NlcGgvY3JlYXRlLWV4dGVybmFsLWNsdXN0ZXItcmVz + b3VyY2VzLnB5IC0tY2VwaGZzLWZpbGVzeXN0ZW0tbmFtZSBteWZzIC0tcmJkLWRhdGEtcG9vbC1u + YW1lIHJlcGxpY2Fwb29sIC0tazhzLWNsdXN0ZXItbmFtZSByb29rc3RvcmFnZSAtLXJlc3RyaWN0 + ZWQtYXV0aC1wZXJtaXNzaW9uIHRydWVgIgogICAgICAgICAgICArICJOb3RlOiBSZXN0cmljdGlu + ZyB0aGUgY3NpLXVzZXJzIHBlciBwb29sLCBhbmQgcGVyIGNsdXN0ZXIgd2lsbCByZXF1aXJlIGNy + ZWF0aW5nIG5ldyBjc2ktdXNlcnMgYW5kIG5ldyBzZWNyZXRzIGZvciB0aGF0IGNzaS11c2Vycy4i + CiAgICAgICAgICAgICsgIlNvIGFwcGx5IHRoZXNlIHNlY3JldHMgb25seSB0byBuZXcgYENvbnN1 + bWVyIGNsdXN0ZXJgIGRlcGxveW1lbnQgd2hpbGUgdXNpbmcgdGhlIHNhbWUgYFNvdXJjZSBjbHVz + dGVyYC4iLAogICAgICAgICkKICAgICAgICBjb21tb25fZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAg + ICAgICAgICAiLS12Mi1wb3J0LWVuYWJsZSIsCiAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1 + ZSIsCiAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9IkVuYWJsZSB2 + MiBtb24gcG9ydCgzMzAwKSBmb3IgbW9ucyIsCiAgICAgICAgKQoKICAgICAgICBvdXRwdXRfZ3Jv + dXAgPSBhcmdQLmFkZF9hcmd1bWVudF9ncm91cCgib3V0cHV0IikKICAgICAgICBvdXRwdXRfZ3Jv + dXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1mb3JtYXQiLAogICAgICAgICAgICAiLXQi + LAogICAgICAgICAgICBjaG9pY2VzPVsianNvbiIsICJiYXNoIl0sCiAgICAgICAgICAgIGRlZmF1 + bHQ9Impzb24iLAogICAgICAgICAgICBoZWxwPSJQcm92aWRlcyB0aGUgb3V0cHV0IGZvcm1hdCAo + anNvbiB8IGJhc2gpIiwKICAgICAgICApCiAgICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVu + dCgKICAgICAgICAgICAgIi0tb3V0cHV0IiwKICAgICAgICAgICAgIi1vIiwKICAgICAgICAgICAg + ZGVmYXVsdD0iIiwKICAgICAgICAgICAgaGVscD0iT3V0cHV0IHdpbGwgYmUgc3RvcmVkIGludG8g + dGhlIHByb3ZpZGVkIGZpbGUiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2Fy + Z3VtZW50KAogICAgICAgICAgICAiLS1jZXBoZnMtZmlsZXN5c3RlbS1uYW1lIiwKICAgICAgICAg + ICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAgaGVscD0iUHJvdmlkZXMgdGhlIG5hbWUgb2YgdGhl + IENlcGggZmlsZXN5c3RlbSIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJn + dW1lbnQoCiAgICAgICAgICAgICItLWNlcGhmcy1tZXRhZGF0YS1wb29sLW5hbWUiLAogICAgICAg + ICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICBoZWxwPSJQcm92aWRlcyB0aGUgbmFtZSBvZiB0 + aGUgY2VwaGZzIG1ldGFkYXRhIHBvb2wiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAu + YWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1jZXBoZnMtZGF0YS1wb29sLW5hbWUiLAogICAg + ICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICBoZWxwPSJQcm92aWRlcyB0aGUgbmFtZSBv + ZiB0aGUgY2VwaGZzIGRhdGEgcG9vbCIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5h + ZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLXJiZC1kYXRhLXBvb2wtbmFtZSIsCiAgICAgICAg + ICAgIGRlZmF1bHQ9IiIsCiAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICBo + ZWxwPSJQcm92aWRlcyB0aGUgbmFtZSBvZiB0aGUgUkJEIGRhdGFwb29sIiwKICAgICAgICApCiAg + ICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tYWxpYXMtcmJk + LWRhdGEtcG9vbC1uYW1lIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAgcmVx + dWlyZWQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9IlByb3ZpZGVzIGFuIGFsaWFzIGZvciB0aGUg + IFJCRCBkYXRhIHBvb2wgbmFtZSwgbmVjZXNzYXJ5IGlmIGEgc3BlY2lhbCBjaGFyYWN0ZXIgaXMg + cHJlc2VudCBpbiB0aGUgcG9vbCBuYW1lIHN1Y2ggYXMgYSBwZXJpb2Qgb3IgdW5kZXJzY29yZSIs + CiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAg + ICItLXJndy1lbmRwb2ludCIsCiAgICAgICAgICAgIGRlZmF1bHQ9IiIsCiAgICAgICAgICAgIHJl + cXVpcmVkPUZhbHNlLAogICAgICAgICAgICBoZWxwPSJSQURPUyBHYXRld2F5IGVuZHBvaW50IChp + biBgPElQdjQ+OjxQT1JUPmAgb3IgYDxbSVB2Nl0+OjxQT1JUPmAgb3IgYDxGUUROPjo8UE9SVD5g + IGZvcm1hdCkiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAog + ICAgICAgICAgICAiLS1yZ3ctdGxzLWNlcnQtcGF0aCIsCiAgICAgICAgICAgIGRlZmF1bHQ9IiIs + CiAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICBoZWxwPSJSQURPUyBHYXRl + d2F5IGVuZHBvaW50IFRMUyBjZXJ0aWZpY2F0ZSIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9n + cm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLXJndy1za2lwLXRscyIsCiAgICAgICAg + ICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAg + ICBoZWxwPSJJZ25vcmUgVExTIGNlcnRpZmljYXRpb24gdmFsaWRhdGlvbiB3aGVuIGEgc2VsZi1z + aWduZWQgY2VydGlmaWNhdGUgaXMgcHJvdmlkZWQgKE5PVCBSRUNPTU1FTkRFRCIsCiAgICAgICAg + KQogICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLW1vbml0 + b3JpbmctZW5kcG9pbnQiLAogICAgICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICByZXF1 + aXJlZD1GYWxzZSwKICAgICAgICAgICAgaGVscD0iQ2VwaCBNYW5hZ2VyIHByb21ldGhldXMgZXhw + b3J0ZXIgZW5kcG9pbnRzIChjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiAoZm9ybWF0IGA8SVB2ND5g + IG9yIGA8W0lQdjZdPmAgb3IgYDxGUUROPmApIGVudHJpZXMgb2YgYWN0aXZlIGFuZCBzdGFuZGJ5 + IG1ncnMpIiwKICAgICAgICApCiAgICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAg + ICAgICAgICAgIi0tbW9uaXRvcmluZy1lbmRwb2ludC1wb3J0IiwKICAgICAgICAgICAgZGVmYXVs + dD0iIiwKICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9IkNlcGgg + TWFuYWdlciBwcm9tZXRoZXVzIGV4cG9ydGVyIHBvcnQiLAogICAgICAgICkKICAgICAgICBvdXRw + dXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1za2lwLW1vbml0b3JpbmctZW5k + cG9pbnQiLAogICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICBhY3Rpb249InN0 + b3JlX3RydWUiLAogICAgICAgICAgICBoZWxwPSJEbyBub3QgY2hlY2sgZm9yIGEgbW9uaXRvcmlu + ZyBlbmRwb2ludCBmb3IgdGhlIENlcGggY2x1c3RlciIsCiAgICAgICAgKQogICAgICAgIG91dHB1 + dF9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLXJiZC1tZXRhZGF0YS1lYy1wb29s LW5hbWUiLAogICAgICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICByZXF1aXJlZD1GYWxz - ZSwKICAgICAgICAgICAgaGVscD0iUHJvdmlkZXMgdGhlIG5hbWUgb2YgdGhlIFJCRCBkYXRhcG9v - bCIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAg - ICAgICItLWFsaWFzLXJiZC1kYXRhLXBvb2wtbmFtZSIsCiAgICAgICAgICAgIGRlZmF1bHQ9IiIs - CiAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICBoZWxwPSJQcm92aWRlcyBh - biBhbGlhcyBmb3IgdGhlICBSQkQgZGF0YSBwb29sIG5hbWUsIG5lY2Vzc2FyeSBpZiBhIHNwZWNp - YWwgY2hhcmFjdGVyIGlzIHByZXNlbnQgaW4gdGhlIHBvb2wgbmFtZSBzdWNoIGFzIGEgcGVyaW9k - IG9yIHVuZGVyc2NvcmUiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3Vt - ZW50KAogICAgICAgICAgICAiLS1yZ3ctZW5kcG9pbnQiLAogICAgICAgICAgICBkZWZhdWx0PSIi - LAogICAgICAgICAgICByZXF1aXJlZD1GYWxzZSwKICAgICAgICAgICAgaGVscD0iUkFET1MgR2F0 - ZXdheSBlbmRwb2ludCAoaW4gYDxJUHY0Pjo8UE9SVD5gIG9yIGA8W0lQdjZdPjo8UE9SVD5gIG9y - IGA8RlFETj46PFBPUlQ+YCBmb3JtYXQpIiwKICAgICAgICApCiAgICAgICAgb3V0cHV0X2dyb3Vw - LmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tcmd3LXRscy1jZXJ0LXBhdGgiLAogICAgICAg - ICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICByZXF1aXJlZD1GYWxzZSwKICAgICAgICAgICAg - aGVscD0iUkFET1MgR2F0ZXdheSBlbmRwb2ludCBUTFMgY2VydGlmaWNhdGUiLAogICAgICAgICkK - ICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1yZ3ctc2tp - cC10bHMiLAogICAgICAgICAgICByZXF1aXJlZD1GYWxzZSwKICAgICAgICAgICAgZGVmYXVsdD1G - YWxzZSwKICAgICAgICAgICAgaGVscD0iSWdub3JlIFRMUyBjZXJ0aWZpY2F0aW9uIHZhbGlkYXRp - b24gd2hlbiBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIGlzIHByb3ZpZGVkIChOT1QgUkVDT01N - RU5ERUQiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAg - ICAgICAgICAiLS1tb25pdG9yaW5nLWVuZHBvaW50IiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwK - ICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9IkNlcGggTWFuYWdl - ciBwcm9tZXRoZXVzIGV4cG9ydGVyIGVuZHBvaW50cyAoY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2Yg - KGZvcm1hdCBgPElQdjQ+YCBvciBgPFtJUHY2XT5gIG9yIGA8RlFETj5gKSBlbnRyaWVzIG9mIGFj - dGl2ZSBhbmQgc3RhbmRieSBtZ3JzKSIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5h - ZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLW1vbml0b3JpbmctZW5kcG9pbnQtcG9ydCIsCiAg - ICAgICAgICAgIGRlZmF1bHQ9IiIsCiAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAg - ICAgICBoZWxwPSJDZXBoIE1hbmFnZXIgcHJvbWV0aGV1cyBleHBvcnRlciBwb3J0IiwKICAgICAg - ICApCiAgICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tc2tp - cC1tb25pdG9yaW5nLWVuZHBvaW50IiwKICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKICAgICAg - ICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgaGVscD0iRG8gbm90IGNoZWNr - IGZvciBhIG1vbml0b3JpbmcgZW5kcG9pbnQgZm9yIHRoZSBDZXBoIGNsdXN0ZXIiLAogICAgICAg - ICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1yYmQt - bWV0YWRhdGEtZWMtcG9vbC1uYW1lIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAg - ICAgcmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9IlByb3ZpZGVzIHRoZSBuYW1lIG9m - IGVyYXN1cmUgY29kZWQgUkJEIG1ldGFkYXRhIHBvb2wiLAogICAgICAgICkKICAgICAgICBvdXRw - dXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1kcnktcnVuIiwKICAgICAgICAg - ICAgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAg - ICAgICAgaGVscD0iRHJ5IHJ1biBwcmludHMgdGhlIGV4ZWN1dGVkIGNvbW1hbmRzIHdpdGhvdXQg - cnVubmluZyB0aGVtIiwKICAgICAgICApCiAgICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVu - dCgKICAgICAgICAgICAgIi0tcmFkb3MtbmFtZXNwYWNlIiwKICAgICAgICAgICAgZGVmYXVsdD0i - IiwKICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9ImRpdmlkZXMg - YSBwb29sIGludG8gc2VwYXJhdGUgbG9naWNhbCBuYW1lc3BhY2VzIiwKICAgICAgICApCiAgICAg - ICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tc3Vidm9sdW1lLWdy - b3VwIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2Us - CiAgICAgICAgICAgIGhlbHA9InByb3ZpZGVzIHRoZSBuYW1lIG9mIHRoZSBzdWJ2b2x1bWUgZ3Jv - dXAiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAg - ICAgICAiLS1yZ3ctcmVhbG0tbmFtZSIsCiAgICAgICAgICAgIGRlZmF1bHQ9IiIsCiAgICAgICAg - ICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICBoZWxwPSJwcm92aWRlcyB0aGUgbmFtZSBv - ZiB0aGUgcmd3LXJlYWxtIiwKICAgICAgICApCiAgICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1 - bWVudCgKICAgICAgICAgICAgIi0tcmd3LXpvbmUtbmFtZSIsCiAgICAgICAgICAgIGRlZmF1bHQ9 + ZSwKICAgICAgICAgICAgaGVscD0iUHJvdmlkZXMgdGhlIG5hbWUgb2YgZXJhc3VyZSBjb2RlZCBS + QkQgbWV0YWRhdGEgcG9vbCIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJn + dW1lbnQoCiAgICAgICAgICAgICItLWRyeS1ydW4iLAogICAgICAgICAgICBkZWZhdWx0PUZhbHNl + LAogICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICBoZWxwPSJEcnkg + cnVuIHByaW50cyB0aGUgZXhlY3V0ZWQgY29tbWFuZHMgd2l0aG91dCBydW5uaW5nIHRoZW0iLAog + ICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAi + LS1yYWRvcy1uYW1lc3BhY2UiLAogICAgICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICBy + ZXF1aXJlZD1GYWxzZSwKICAgICAgICAgICAgaGVscD0iZGl2aWRlcyBhIHBvb2wgaW50byBzZXBh + cmF0ZSBsb2dpY2FsIG5hbWVzcGFjZXMiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAu + YWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1zdWJ2b2x1bWUtZ3JvdXAiLAogICAgICAgICAg + ICBkZWZhdWx0PSIiLAogICAgICAgICAgICByZXF1aXJlZD1GYWxzZSwKICAgICAgICAgICAgaGVs + cD0icHJvdmlkZXMgdGhlIG5hbWUgb2YgdGhlIHN1YnZvbHVtZSBncm91cCIsCiAgICAgICAgKQog + ICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLXJndy1yZWFs + bS1uYW1lIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAgcmVxdWlyZWQ9RmFs + c2UsCiAgICAgICAgICAgIGhlbHA9InByb3ZpZGVzIHRoZSBuYW1lIG9mIHRoZSByZ3ctcmVhbG0i + LAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAg + ICAiLS1yZ3ctem9uZS1uYW1lIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAg + cmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9InByb3ZpZGVzIHRoZSBuYW1lIG9mIHRo + ZSByZ3ctem9uZSIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJndW1lbnQo + CiAgICAgICAgICAgICItLXJndy16b25lZ3JvdXAtbmFtZSIsCiAgICAgICAgICAgIGRlZmF1bHQ9 IiIsCiAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICBoZWxwPSJwcm92aWRl - cyB0aGUgbmFtZSBvZiB0aGUgcmd3LXpvbmUiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3Jv - dXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1yZ3ctem9uZWdyb3VwLW5hbWUiLAogICAg - ICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICByZXF1aXJlZD1GYWxzZSwKICAgICAgICAg - ICAgaGVscD0icHJvdmlkZXMgdGhlIG5hbWUgb2YgdGhlIHJndy16b25lZ3JvdXAiLAogICAgICAg - ICkKCiAgICAgICAgdXBncmFkZV9ncm91cCA9IGFyZ1AuYWRkX2FyZ3VtZW50X2dyb3VwKCJ1cGdy - YWRlIikKICAgICAgICB1cGdyYWRlX2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0t - dXBncmFkZSIsCiAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgIGRl - ZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9IlVwZ3JhZGVzIHRoZSBjZXBoQ1NJS2V5cmlu - Z3MoRm9yIGV4YW1wbGU6IGNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyKSB3aXRoIG5ldyBw - ZXJtaXNzaW9ucyBuZWVkZWQgZm9yIHRoZSBuZXcgY2x1c3RlciB2ZXJzaW9uIGFuZCBvbGRlciBw - ZXJtaXNzaW9uIHdpbGwgc3RpbGwgYmUgYXBwbGllZC4iCiAgICAgICAgICAgICsgIlNhbXBsZSBy - dW46IGBweXRob24zIC9ldGMvY2VwaC9jcmVhdGUtZXh0ZXJuYWwtY2x1c3Rlci1yZXNvdXJjZXMu - cHkgLS11cGdyYWRlYCwgdGhpcyB3aWxsIHVwZ3JhZGUgYWxsIHRoZSBkZWZhdWx0IGNzaSB1c2Vy - cyhub24tcmVzdHJpY3RlZCkiCiAgICAgICAgICAgICsgIkZvciByZXN0cmljdGVkIHVzZXJzKEZv - ciBleGFtcGxlOiBjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lci1vcGVuc2hpZnQtc3RvcmFn - ZS1teWZzKSwgdXNlcnMgY3JlYXRlZCB1c2luZyAtLXJlc3RyaWN0ZWQtYXV0aC1wZXJtaXNzaW9u - IGZsYWcgbmVlZCB0byBwYXNzIG1hbmRhdG9yeSBmbGFncyIKICAgICAgICAgICAgKyAibWFuZGF0 - b3J5IGZsYWdzOiAnLS1yYmQtZGF0YS1wb29sLW5hbWUsIC0tY2x1c3Rlci1uYW1lIGFuZCAtLXJ1 - bi1hcy11c2VyJyBmbGFncyB3aGlsZSB1cGdyYWRpbmciCiAgICAgICAgICAgICsgImluIGNhc2Ug - b2YgY2VwaGZzIHVzZXJzIGlmIHlvdSBoYXZlIHBhc3NlZCAtLWNlcGhmcy1maWxlc3lzdGVtLW5h - bWUgZmxhZyB3aGlsZSBjcmVhdGluZyB1c2VyIHRoZW4gd2hpbGUgdXBncmFkaW5nIGl0IHdpbGwg - YmUgbWFuZGF0b3J5IHRvbyIKICAgICAgICAgICAgKyAiU2FtcGxlIHJ1bjogYHB5dGhvbjMgL2V0 - Yy9jZXBoL2NyZWF0ZS1leHRlcm5hbC1jbHVzdGVyLXJlc291cmNlcy5weSAtLXVwZ3JhZGUgLS1y - YmQtZGF0YS1wb29sLW5hbWUgcmVwbGljYXBvb2wgLS1jbHVzdGVyLW5hbWUgcm9va3N0b3JhZ2Ug - IC0tcnVuLWFzLXVzZXIgY2xpZW50LmNzaS1yYmQtbm9kZS1yb29rc3RvcmFnZS1yZXBsaWNhcG9v - bGAiCiAgICAgICAgICAgICsgIlBTOiBBbiBleGlzdGluZyBub24tcmVzdHJpY3RlZCB1c2VyIGNh - bm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSByZXN0cmljdGVkIHVzZXIgYnkgdXBncmFkaW5nLiIKICAg - ICAgICAgICAgKyAiVXBncmFkZSBmbGFnIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gYXBwZW5kIG5l - dyBwZXJtaXNzaW9ucyB0byB1c2VycywgaXQgc2hvdWxkbid0IGJlIHVzZWQgZm9yIGNoYW5naW5n - IHVzZXIgYWxyZWFkeSBhcHBsaWVkIHBlcm1pc3Npb24sIGZvciBleGFtcGxlIHlvdSBzaG91bGRu - J3QgY2hhbmdlIGluIHdoaWNoIHBvb2wgdXNlciBoYXMgYWNjZXNzIiwKICAgICAgICApCgogICAg - ICAgIGlmIGFyZ3NfdG9fcGFyc2U6CiAgICAgICAgICAgIGFzc2VydCAoCiAgICAgICAgICAgICAg - ICB0eXBlKGFyZ3NfdG9fcGFyc2UpID09IGxpc3QKICAgICAgICAgICAgKSwgIkFyZ3VtZW50IHRv - ICdnZW5fYXJnX3BhcnNlcicgc2hvdWxkIGJlIGEgbGlzdCIKICAgICAgICBlbHNlOgogICAgICAg - ICAgICBhcmdzX3RvX3BhcnNlID0gc3lzLmFyZ3ZbMTpdCiAgICAgICAgcmV0dXJuIGFyZ1AucGFy - c2VfYXJncyhhcmdzX3RvX3BhcnNlKQoKICAgIGRlZiB2YWxpZGF0ZV9yYmRfbWV0YWRhdGFfZWNf - cG9vbF9uYW1lKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIucmJkX21ldGFkYXRh - X2VjX3Bvb2xfbmFtZToKICAgICAgICAgICAgcmJkX21ldGFkYXRhX2VjX3Bvb2xfbmFtZSA9IHNl - bGYuX2FyZ19wYXJzZXIucmJkX21ldGFkYXRhX2VjX3Bvb2xfbmFtZQogICAgICAgICAgICByYmRf - cG9vbF9uYW1lID0gc2VsZi5fYXJnX3BhcnNlci5yYmRfZGF0YV9wb29sX25hbWUKCiAgICAgICAg - ICAgIGlmIHJiZF9wb29sX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRp - b25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJGbGFnICctLXJiZC1kYXRh - LXBvb2wtbmFtZScgc2hvdWxkIG5vdCBiZSBlbXB0eSIKICAgICAgICAgICAgICAgICkKCiAgICAg - ICAgICAgIGlmIHJiZF9tZXRhZGF0YV9lY19wb29sX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAg - ICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJG - bGFnICctLXJiZC1tZXRhZGF0YS1lYy1wb29sLW5hbWUnIHNob3VsZCBub3QgYmUgZW1wdHkiCiAg - ICAgICAgICAgICAgICApCgogICAgICAgICAgICBjbWRfanNvbiA9IHsicHJlZml4IjogIm9zZCBk - dW1wIiwgImZvcm1hdCI6ICJqc29uIn0KICAgICAgICAgICAgcmV0X3ZhbCwganNvbl9vdXQsIGVy - cl9tc2cgPSBzZWxmLl9jb21tb25fY21kX2pzb25fZ2VuKGNtZF9qc29uKQogICAgICAgICAgICBp - ZiByZXRfdmFsICE9IDAgb3IgbGVuKGpzb25fb3V0KSA9PSAwOgogICAgICAgICAgICAgICAgcmFp - c2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICBmIntjbWRf - anNvblsncHJlZml4J119IGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAgICAgIGYi - RXJyb3I6IHtlcnJfbXNnIGlmIHJldF92YWwgIT0gMCBlbHNlIHNlbGYuRU1QVFlfT1VUUFVUX0xJ - U1R9IgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBtZXRhZGF0YV9wb29sX2V4aXN0LCBw - b29sX2V4aXN0ID0gRmFsc2UsIEZhbHNlCgogICAgICAgICAgICBmb3Iga2V5IGluIGpzb25fb3V0 - WyJwb29scyJdOgogICAgICAgICAgICAgICAgIyBpZiBlcmFzdXJlX2NvZGVfcHJvZmlsZSBpcyBl - bXB0eSBhbmQgcG9vbCBuYW1lIGV4aXN0cyB0aGVuIGl0IHJlcGxpY2EgcG9vbAogICAgICAgICAg - ICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIGtleVsiZXJhc3VyZV9jb2RlX3Byb2ZpbGUi - XSA9PSAiIgogICAgICAgICAgICAgICAgICAgIGFuZCBrZXlbInBvb2xfbmFtZSJdID09IHJiZF9t - ZXRhZGF0YV9lY19wb29sX25hbWUKICAgICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAg - ICAgbWV0YWRhdGFfcG9vbF9leGlzdCA9IFRydWUKICAgICAgICAgICAgICAgICMgaWYgZXJhc3Vy - ZV9jb2RlX3Byb2ZpbGUgaXMgbm90IGVtcHR5IGFuZCBwb29sIG5hbWUgZXhpc3RzIHRoZW4gaXQg - aXMgZWMgcG9vbAogICAgICAgICAgICAgICAgaWYga2V5WyJlcmFzdXJlX2NvZGVfcHJvZmlsZSJd - IGFuZCBrZXlbInBvb2xfbmFtZSJdID09IHJiZF9wb29sX25hbWU6CiAgICAgICAgICAgICAgICAg - ICAgcG9vbF9leGlzdCA9IFRydWUKCiAgICAgICAgICAgIGlmIG5vdCBtZXRhZGF0YV9wb29sX2V4 - aXN0OgogICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAg - ICAgICAgICAgICAgICAgICAiUHJvdmlkZWQgcmJkX2VjX21ldGFkYXRhX3Bvb2wgbmFtZSwiCiAg - ICAgICAgICAgICAgICAgICAgZiIge3JiZF9tZXRhZGF0YV9lY19wb29sX25hbWV9LCBkb2VzIG5v - dCBleGlzdCIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgaWYgbm90IHBvb2xfZXhpc3Q6 - CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAg - ICAgICAgICAgICAgIGYiUHJvdmlkZWQgcmJkX2RhdGFfcG9vbCBuYW1lLCB7cmJkX3Bvb2xfbmFt - ZX0sIGRvZXMgbm90IGV4aXN0IgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICByZXR1cm4g - cmJkX21ldGFkYXRhX2VjX3Bvb2xfbmFtZQoKICAgIGRlZiBkcnlfcnVuKHNlbGYsIG1zZyk6CiAg - ICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5kcnlfcnVuOgogICAgICAgICAgICBwcmludCgiRXhl - Y3V0ZTogIiArICInIiArIG1zZyArICInIikKCiAgICBkZWYgdmFsaWRhdGVfcmd3X2VuZHBvaW50 - X3Rsc19jZXJ0KHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIucmd3X3Rsc19jZXJ0 - X3BhdGg6CiAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLl9hcmdfcGFyc2VyLnJnd190bHNfY2Vy - dF9wYXRoLCBlbmNvZGluZz0idXRmOCIpIGFzIGY6CiAgICAgICAgICAgICAgICBjb250ZW50cyA9 - IGYucmVhZCgpCiAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudHMucnN0cmlwKCkKCiAgICBk - ZWYgX2NoZWNrX2NvbmZsaWN0aW5nX29wdGlvbnMoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYu - X2FyZ19wYXJzZXIudXBncmFkZSBhbmQgbm90IHNlbGYuX2FyZ19wYXJzZXIucmJkX2RhdGFfcG9v - bF9uYW1lOgogICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAg - ICAgICAgICAgICAgIkVpdGhlciAnLS11cGdyYWRlJyBvciAnLS1yYmQtZGF0YS1wb29sLW5hbWUg - PHBvb2xfbmFtZT4nIHNob3VsZCBiZSBzcGVjaWZpZWQiCiAgICAgICAgICAgICkKCiAgICBkZWYg - X2ludmFsaWRfZW5kcG9pbnQoc2VsZiwgZW5kcG9pbnRfc3RyKToKICAgICAgICAjIHNlcHJhdGlu - ZyBwb3J0LCBieSBnZXR0aW5nIGxhc3Qgc3BsaXQgb2YgYDpgIGRlbGltaXRlcgogICAgICAgIHRy - eToKICAgICAgICAgICAgZW5kcG9pbnRfc3RyX2lwLCBwb3J0ID0gZW5kcG9pbnRfc3RyLnJzcGxp - dCgiOiIsIDEpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIEV4 - ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oZiJOb3QgYSBwcm9wZXIgZW5kcG9pbnQ6IHtlbmRwb2lu - dF9zdHJ9IikKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBlbmRwb2ludF9zdHJfaXBbMF0g - PT0gIlsiOgogICAgICAgICAgICAgICAgZW5kcG9pbnRfc3RyX2lwID0gZW5kcG9pbnRfc3RyX2lw - WzEgOiBsZW4oZW5kcG9pbnRfc3RyX2lwKSAtIDFdCiAgICAgICAgICAgIGlwX3R5cGUgPSAoCiAg - ICAgICAgICAgICAgICAiSVB2NCIgaWYgdHlwZShpcF9hZGRyZXNzKGVuZHBvaW50X3N0cl9pcCkp - IGlzIElQdjRBZGRyZXNzIGVsc2UgIklQdjYiCiAgICAgICAgICAgICkKICAgICAgICBleGNlcHQg - VmFsdWVFcnJvcjoKICAgICAgICAgICAgaXBfdHlwZSA9ICJGUUROIgogICAgICAgIGlmIG5vdCBw - b3J0LmlzZGlnaXQoKToKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlv - bihmIlBvcnQgbm90IHZhbGlkOiB7cG9ydH0iKQogICAgICAgIGludFBvcnQgPSBpbnQocG9ydCkK - ICAgICAgICBpZiBpbnRQb3J0IDwgMSBvciBpbnRQb3J0ID4gMioqMTYgLSAxOgogICAgICAgICAg - ICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKGYiT3V0IG9mIHJhbmdlIHBvcnQgbnVt - YmVyOiB7cG9ydH0iKQoKICAgICAgICByZXR1cm4gaXBfdHlwZQoKICAgIGRlZiBlbmRwb2ludF9k - aWFsKHNlbGYsIGVuZHBvaW50X3N0ciwgaXBfdHlwZSwgdGltZW91dD0zLCBjZXJ0PU5vbmUpOgog - ICAgICAgICMgaWYgdGhlICdjbHVzdGVyJyBpbnN0YW5jZSBpcyBhIGR1bW15IG9uZSwKICAgICAg - ICAjIGRvbid0IHRyeSB0byByZWFjaCBvdXQgdG8gdGhlIGVuZHBvaW50CiAgICAgICAgaWYgaXNp - bnN0YW5jZShzZWxmLmNsdXN0ZXIsIER1bW15UmFkb3MpOgogICAgICAgICAgICByZXR1cm4gIiIs - ICIiLCAiIgogICAgICAgIGlmIGlwX3R5cGUgPT0gIklQdjYiOgogICAgICAgICAgICB0cnk6CiAg - ICAgICAgICAgICAgICBlbmRwb2ludF9zdHJfaXAsIGVuZHBvaW50X3N0cl9wb3J0ID0gZW5kcG9p - bnRfc3RyLnJzcGxpdCgiOiIsIDEpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAg - ICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAg - ICAgICAgICBmIk5vdCBhIHByb3BlciBlbmRwb2ludDoge2VuZHBvaW50X3N0cn0iCiAgICAgICAg - ICAgICAgICApCiAgICAgICAgICAgIGlmIGVuZHBvaW50X3N0cl9pcFswXSAhPSAiWyI6CiAgICAg - ICAgICAgICAgICBlbmRwb2ludF9zdHJfaXAgPSAiWyIgKyBlbmRwb2ludF9zdHJfaXAgKyAiXSIK - ICAgICAgICAgICAgZW5kcG9pbnRfc3RyID0gIjoiLmpvaW4oW2VuZHBvaW50X3N0cl9pcCwgZW5k - cG9pbnRfc3RyX3BvcnRdKQoKICAgICAgICBwcm90b2NvbHMgPSBbImh0dHAiLCAiaHR0cHMiXQog - ICAgICAgIHJlc3BvbnNlX2Vycm9yID0gTm9uZQogICAgICAgIGZvciBwcmVmaXggaW4gcHJvdG9j - b2xzOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBlcCA9IGYie3ByZWZpeH06Ly97 - ZW5kcG9pbnRfc3RyfSIKICAgICAgICAgICAgICAgIHZlcmlmeSA9IE5vbmUKICAgICAgICAgICAg - ICAgICMgSWYgdmVyaWZ5IGlzIHNldCB0byBhIHBhdGggdG8gYSBkaXJlY3RvcnksCiAgICAgICAg - ICAgICAgICAjIHRoZSBkaXJlY3RvcnkgbXVzdCBoYXZlIGJlZW4gcHJvY2Vzc2VkIHVzaW5nIHRo - ZSBjX3JlaGFzaCB1dGlsaXR5IHN1cHBsaWVkIHdpdGggT3BlblNTTC4KICAgICAgICAgICAgICAg - IGlmIHByZWZpeCA9PSAiaHR0cHMiIGFuZCBzZWxmLl9hcmdfcGFyc2VyLnJnd19za2lwX3RsczoK - ICAgICAgICAgICAgICAgICAgICB2ZXJpZnkgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgIHIg - PSByZXF1ZXN0cy5oZWFkKGVwLCB0aW1lb3V0PXRpbWVvdXQsIHZlcmlmeT1GYWxzZSkKICAgICAg - ICAgICAgICAgIGVsaWYgcHJlZml4ID09ICJodHRwcyIgYW5kIGNlcnQ6CiAgICAgICAgICAgICAg - ICAgICAgdmVyaWZ5ID0gY2VydAogICAgICAgICAgICAgICAgICAgIHIgPSByZXF1ZXN0cy5oZWFk - KGVwLCB0aW1lb3V0PXRpbWVvdXQsIHZlcmlmeT1jZXJ0KQogICAgICAgICAgICAgICAgZWxzZToK - ICAgICAgICAgICAgICAgICAgICByID0gcmVxdWVzdHMuaGVhZChlcCwgdGltZW91dD10aW1lb3V0 - KQogICAgICAgICAgICAgICAgaWYgci5zdGF0dXNfY29kZSA9PSAyMDA6CiAgICAgICAgICAgICAg - ICAgICAgcmV0dXJuIHByZWZpeCwgdmVyaWZ5LCAiIgogICAgICAgICAgICBleGNlcHQgRXhjZXB0 - aW9uIGFzIGVycjoKICAgICAgICAgICAgICAgIHJlc3BvbnNlX2Vycm9yID0gZXJyCiAgICAgICAg - ICAgICAgICBjb250aW51ZQogICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCiAgICAgICAgICAgIGYi - dW5hYmxlIHRvIGNvbm5lY3QgdG8gZW5kcG9pbnQ6IHtlbmRwb2ludF9zdHJ9LCBmYWlsZWQgZXJy - b3I6IHtyZXNwb25zZV9lcnJvcn0iCiAgICAgICAgKQogICAgICAgIHJldHVybiAoCiAgICAgICAg - ICAgICIiLAogICAgICAgICAgICAiIiwKICAgICAgICAgICAgKCItMSIpLAogICAgICAgICkKCiAg - ICBkZWYgX19pbml0X18oc2VsZiwgYXJnX2xpc3Q9Tm9uZSk6CiAgICAgICAgc2VsZi5vdXRfbWFw - ID0ge30KICAgICAgICBzZWxmLl9leGNsdWRlZF9rZXlzID0gc2V0KCkKICAgICAgICBzZWxmLl9h - cmdfcGFyc2VyID0gc2VsZi5nZW5fYXJnX3BhcnNlcihhcmdzX3RvX3BhcnNlPWFyZ19saXN0KQog - ICAgICAgIHNlbGYuX2NoZWNrX2NvbmZsaWN0aW5nX29wdGlvbnMoKQogICAgICAgIHNlbGYucnVu - X2FzX3VzZXIgPSBzZWxmLl9hcmdfcGFyc2VyLnJ1bl9hc191c2VyCiAgICAgICAgc2VsZi5vdXRw - dXRfZmlsZSA9IHNlbGYuX2FyZ19wYXJzZXIub3V0cHV0CiAgICAgICAgc2VsZi5jZXBoX2NvbmYg - PSBzZWxmLl9hcmdfcGFyc2VyLmNlcGhfY29uZgogICAgICAgIHNlbGYuY2VwaF9rZXlyaW5nID0g - c2VsZi5fYXJnX3BhcnNlci5rZXlyaW5nCiAgICAgICAgc2VsZi5NSU5fVVNFUl9DQVBfUEVSTUlT - U0lPTlMgPSB7CiAgICAgICAgICAgICJtZ3IiOiAiYWxsb3cgY29tbWFuZCBjb25maWciLAogICAg - ICAgICAgICAibW9uIjogImFsbG93IHIsIGFsbG93IGNvbW1hbmQgcXVvcnVtX3N0YXR1cywgYWxs - b3cgY29tbWFuZCB2ZXJzaW9uIiwKICAgICAgICAgICAgIm9zZCI6ICJhbGxvdyByd3ggcG9vbD17 - MH0ucmd3Lm1ldGEsICIKICAgICAgICAgICAgKyAiYWxsb3cgciBwb29sPS5yZ3cucm9vdCwgIgog - ICAgICAgICAgICArICJhbGxvdyBydyBwb29sPXswfS5yZ3cuY29udHJvbCwgIgogICAgICAgICAg - ICArICJhbGxvdyByeCBwb29sPXswfS5yZ3cubG9nLCAiCiAgICAgICAgICAgICsgImFsbG93IHgg - cG9vbD17MH0ucmd3LmJ1Y2tldHMuaW5kZXgiLAogICAgICAgIH0KICAgICAgICAjIGlmIHVzZXIg - bm90IHByb3ZpZGVkLCBnaXZlIGEgZGVmYXVsdCB1c2VyCiAgICAgICAgaWYgbm90IHNlbGYucnVu - X2FzX3VzZXIgYW5kIG5vdCBzZWxmLl9hcmdfcGFyc2VyLnVwZ3JhZGU6CiAgICAgICAgICAgIHNl - bGYucnVuX2FzX3VzZXIgPSBzZWxmLkVYVEVSTkFMX1VTRVJfTkFNRQogICAgICAgIGlmIG5vdCBz - ZWxmLl9hcmdfcGFyc2VyLnJnd19wb29sX3ByZWZpeCBhbmQgbm90IHNlbGYuX2FyZ19wYXJzZXIu - dXBncmFkZToKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcG9vbF9wcmVmaXggPSBz - ZWxmLkRFRkFVTFRfUkdXX1BPT0xfUFJFRklYCiAgICAgICAgaWYgc2VsZi5jZXBoX2NvbmY6CiAg - ICAgICAgICAgIGt3YXJncyA9IHt9CiAgICAgICAgICAgIGlmIHNlbGYuY2VwaF9rZXlyaW5nOgog - ICAgICAgICAgICAgICAga3dhcmdzWyJjb25mIl0gPSB7ImtleXJpbmciOiBzZWxmLmNlcGhfa2V5 - cmluZ30KICAgICAgICAgICAgc2VsZi5jbHVzdGVyID0gcmFkb3MuUmFkb3MoY29uZmZpbGU9c2Vs - Zi5jZXBoX2NvbmYsICoqa3dhcmdzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuY2x1 - c3RlciA9IHJhZG9zLlJhZG9zKCkKICAgICAgICAgICAgc2VsZi5jbHVzdGVyLmNvbmZfcmVhZF9m - aWxlKCkKICAgICAgICBzZWxmLmNsdXN0ZXIuY29ubmVjdCgpCgogICAgZGVmIHNodXRkb3duKHNl - bGYpOgogICAgICAgIGlmIHNlbGYuY2x1c3Rlci5zdGF0ZSA9PSAiY29ubmVjdGVkIjoKICAgICAg - ICAgICAgc2VsZi5jbHVzdGVyLnNodXRkb3duKCkKCiAgICBkZWYgZ2V0X2ZzaWQoc2VsZik6CiAg - ICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5kcnlfcnVuOgogICAgICAgICAgICByZXR1cm4gc2Vs - Zi5kcnlfcnVuKCJjZXBoIGZzaWQiKQogICAgICAgIHJldHVybiBzdHIoc2VsZi5jbHVzdGVyLmdl - dF9mc2lkKCkpCgogICAgZGVmIF9jb21tb25fY21kX2pzb25fZ2VuKHNlbGYsIGNtZF9qc29uKToK - ICAgICAgICBjbWQgPSBqc29uLmR1bXBzKGNtZF9qc29uLCBzb3J0X2tleXM9VHJ1ZSkKICAgICAg - ICByZXRfdmFsLCBjbWRfb3V0LCBlcnJfbXNnID0gc2VsZi5jbHVzdGVyLm1vbl9jb21tYW5kKGNt - ZCwgYiIiKQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIudmVyYm9zZToKICAgICAgICAgICAg - cHJpbnQoZiJDb21tYW5kIElucHV0OiB7Y21kfSIpCiAgICAgICAgICAgIHByaW50KAogICAgICAg - ICAgICAgICAgZiJSZXR1cm4gVmFsOiB7cmV0X3ZhbH1cbkNvbW1hbmQgT3V0cHV0OiB7Y21kX291 - dH1cbiIKICAgICAgICAgICAgICAgIGYiRXJyb3IgTWVzc2FnZToge2Vycl9tc2d9XG4tLS0tLS0t - LS0tXG4iCiAgICAgICAgICAgICkKICAgICAgICBqc29uX291dCA9IHt9CiAgICAgICAgIyBpZiB0 - aGVyZSBpcyBubyBlcnJvciAoaS5lOyByZXRfdmFsIGlzIFpFUk8pIGFuZCAnY21kX291dCcgaXMg - bm90IGVtcHR5CiAgICAgICAgIyB0aGVuIGNvbnZlcnQgJ2NtZF9vdXQnIHRvIGEganNvbiBvdXRw - dXQKICAgICAgICBpZiByZXRfdmFsID09IDAgYW5kIGNtZF9vdXQ6CiAgICAgICAgICAgIGpzb25f - b3V0ID0ganNvbi5sb2FkcyhjbWRfb3V0KQogICAgICAgIHJldHVybiByZXRfdmFsLCBqc29uX291 - dCwgZXJyX21zZwoKICAgIGRlZiBnZXRfY2VwaF9leHRlcm5hbF9tb25fZGF0YShzZWxmKToKICAg - ICAgICBjbWRfanNvbiA9IHsicHJlZml4IjogInF1b3J1bV9zdGF0dXMiLCAiZm9ybWF0IjogImpz - b24ifQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5X3J1bjoKICAgICAgICAgICAgcmV0 - dXJuIHNlbGYuZHJ5X3J1bigiY2VwaCAiICsgY21kX2pzb25bInByZWZpeCJdKQogICAgICAgIHJl - dF92YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2VsZi5fY29tbW9uX2NtZF9qc29uX2dlbihjbWRf - anNvbikKICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIHVuc3VjY2Vzc2Z1bCBhdHRlbXB0LAogICAg - ICAgIGlmIHJldF92YWwgIT0gMCBvciBsZW4oanNvbl9vdXQpID09IDA6CiAgICAgICAgICAgIHJh - aXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAiJ3F1b3J1bV9z - dGF0dXMnIGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAgZiJFcnJvcjoge2Vycl9t - c2cgaWYgcmV0X3ZhbCAhPSAwIGVsc2Ugc2VsZi5FTVBUWV9PVVRQVVRfTElTVH0iCiAgICAgICAg - ICAgICkKICAgICAgICBxX2xlYWRlcl9uYW1lID0ganNvbl9vdXRbInF1b3J1bV9sZWFkZXJfbmFt - ZSJdCiAgICAgICAgcV9sZWFkZXJfZGV0YWlscyA9IHt9CiAgICAgICAgcV9sZWFkZXJfbWF0Y2hp - bmdfbGlzdCA9IFsKICAgICAgICAgICAgbCBmb3IgbCBpbiBqc29uX291dFsibW9ubWFwIl1bIm1v - bnMiXSBpZiBsWyJuYW1lIl0gPT0gcV9sZWFkZXJfbmFtZQogICAgICAgIF0KICAgICAgICBpZiBs - ZW4ocV9sZWFkZXJfbWF0Y2hpbmdfbGlzdCkgPT0gMDoKICAgICAgICAgICAgcmFpc2UgRXhlY3V0 - aW9uRmFpbHVyZUV4Y2VwdGlvbigiTm8gbWF0Y2hpbmcgJ21vbicgZGV0YWlscyBmb3VuZCIpCiAg - ICAgICAgcV9sZWFkZXJfZGV0YWlscyA9IHFfbGVhZGVyX21hdGNoaW5nX2xpc3RbMF0KICAgICAg - ICAjIGdldCB0aGUgYWRkcmVzcyB2ZWN0b3Igb2YgdGhlIHF1b3J1bS1sZWFkZXIKICAgICAgICBx - X2xlYWRlcl9hZGRydmVjID0gcV9sZWFkZXJfZGV0YWlscy5nZXQoInB1YmxpY19hZGRycyIsIHt9 - KS5nZXQoImFkZHJ2ZWMiLCBbXSkKICAgICAgICAjIGlmIHRoZSBxdW9ydW0tbGVhZGVyIGhhcyBv - bmx5IG9uZSBhZGRyZXNzIGluIHRoZSBhZGRyZXNzLXZlY3RvcgogICAgICAgICMgYW5kIGl0IGlz - IG9mIHR5cGUgJ3YyJyAoaWU7IHdpdGggPElQPjozMzAwKSwKICAgICAgICAjIHJhaXNlIGFuIGV4 - Y2VwdGlvbiB0byBtYWtlIHVzZXIgYXdhcmUgdGhhdAogICAgICAgICMgdGhleSBoYXZlIHRvIGVu - YWJsZSAndjEnIChpZTsgd2l0aCA8SVA+OjY3ODkpIHR5cGUgYXMgd2VsbAogICAgICAgIGlmIGxl - bihxX2xlYWRlcl9hZGRydmVjKSA9PSAxIGFuZCBxX2xlYWRlcl9hZGRydmVjWzBdWyJ0eXBlIl0g - PT0gInYyIjoKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAg - ICAgICAgICAgICAgICJPbmx5ICd2MicgYWRkcmVzcyB0eXBlIGlzIGVuYWJsZWQsIHVzZXIgc2hv - dWxkIGFsc28gZW5hYmxlICd2MScgdHlwZSBhcyB3ZWxsIgogICAgICAgICAgICApCiAgICAgICAg - aXBfYWRkciA9IHN0cihxX2xlYWRlcl9kZXRhaWxzWyJwdWJsaWNfYWRkciJdLnNwbGl0KCIvIilb - MF0pCgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIudjJfcG9ydF9lbmFibGU6CiAgICAgICAg - ICAgIGlmIGxlbihxX2xlYWRlcl9hZGRydmVjKSA+IDE6CiAgICAgICAgICAgICAgICBpZiBxX2xl - YWRlcl9hZGRydmVjWzBdWyJ0eXBlIl0gPT0gInYyIjoKICAgICAgICAgICAgICAgICAgICBpcF9h - ZGRyID0gcV9sZWFkZXJfYWRkcnZlY1swXVsiYWRkciJdCiAgICAgICAgICAgICAgICBlbGlmIHFf - bGVhZGVyX2FkZHJ2ZWNbMV1bInR5cGUiXSA9PSAidjIiOgogICAgICAgICAgICAgICAgICAgIGlw - X2FkZHIgPSBxX2xlYWRlcl9hZGRydmVjWzFdWyJhZGRyIl0KICAgICAgICAgICAgZWxzZToKICAg - ICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCiAgICAgICAgICAgICAgICAgICAgIid2Micg - YWRkcmVzcyB0eXBlIG5vdCBwcmVzZW50LCBhbmQgJ3YyLXBvcnQtZW5hYmxlJyBmbGFnIGlzIHBy - b3ZpZGVkIgogICAgICAgICAgICAgICAgKQoKICAgICAgICByZXR1cm4gZiJ7c3RyKHFfbGVhZGVy - X25hbWUpfT17aXBfYWRkcn0iCgogICAgZGVmIF9jb252ZXJ0X2hvc3RuYW1lX3RvX2lwKHNlbGYs - IGhvc3RfbmFtZSwgcG9ydCwgaXBfdHlwZSk6CiAgICAgICAgIyBpZiAnY2x1c3RlcicgaW5zdGFu - Y2UgaXMgYSBkdW1teSB0eXBlLAogICAgICAgICMgY2FsbCB0aGUgZHVtbXkgaW5zdGFuY2UncyAi - Y29udmVydCIgbWV0aG9kCiAgICAgICAgaWYgbm90IGhvc3RfbmFtZToKICAgICAgICAgICAgcmFp - c2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigiRW1wdHkgaG9zdG5hbWUgcHJvdmlkZWQiKQog - ICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5jbHVzdGVyLCBEdW1teVJhZG9zKToKICAgICAgICAg - ICAgcmV0dXJuIHNlbGYuY2x1c3Rlci5fY29udmVydF9ob3N0bmFtZV90b19pcChob3N0X25hbWUp - CgogICAgICAgIGlmIGlwX3R5cGUgPT0gIkZRRE4iOgogICAgICAgICAgICAjIGNoZWNrIHdoaWNo - IGlwIEZRRE4gc2hvdWxkIGJlIGNvbnZlcnRlZCB0bywgSVB2NCBvciBJUHY2CiAgICAgICAgICAg - ICMgY2hlY2sgdGhlIGhvc3QgaXAsIHRoZSBlbmRwb2ludCBpcCB0eXBlIHdvdWxkIGJlIHNpbWls - YXIgdG8gaG9zdCBpcAogICAgICAgICAgICBjbWRfanNvbiA9IHsicHJlZml4IjogIm9yY2ggaG9z - dCBscyIsICJmb3JtYXQiOiAianNvbiJ9CiAgICAgICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBl - cnJfbXNnID0gc2VsZi5fY29tbW9uX2NtZF9qc29uX2dlbihjbWRfanNvbikKICAgICAgICAgICAg - IyBpZiB0aGVyZSBpcyBhbiB1bnN1Y2Nlc3NmdWwgYXR0ZW1wdCwKICAgICAgICAgICAgaWYgcmV0 - X3ZhbCAhPSAwIG9yIGxlbihqc29uX291dCkgPT0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIEV4 - ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgIidvcmNoIGhvc3Qg - bHMnIGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAgICAgIGYiRXJyb3I6IHtlcnJf - bXNnIGlmIHJldF92YWwgIT0gMCBlbHNlIHNlbGYuRU1QVFlfT1VUUFVUX0xJU1R9IgogICAgICAg - ICAgICAgICAgKQogICAgICAgICAgICBob3N0X2FkZHIgPSBqc29uX291dFswXVsiYWRkciJdCiAg - ICAgICAgICAgICMgYWRkIDo4MCBzYW1wbGUgcG9ydCBpbiBpcF90eXBlLCBhcyBfaW52YWxpZF9l - bmRwb2ludCBhbHNvIHZlcmlmeSBwb3J0CiAgICAgICAgICAgIGhvc3RfaXBfdHlwZSA9IHNlbGYu - X2ludmFsaWRfZW5kcG9pbnQoaG9zdF9hZGRyICsgIjo4MCIpCiAgICAgICAgICAgIGltcG9ydCBz - b2NrZXQKCiAgICAgICAgICAgICMgZXhhbXBsZSBvdXRwdXQgWyg8QWRkcmVzc0ZhbWlseS5BRl9J - TkVUOiAyPiwgPFNvY2tldEtpbmQuU09DS19TVFJFQU06IDE+LCA2LCAnJywgKCc5My4xODQuMjE2 - LjM0JywgODApKSwgLi4uXQogICAgICAgICAgICAjIHdlIG5lZWQgdG8gZ2V0IDkzLjE4NC4yMTYu - MzQgc28gaXQgd291bGQgYmUgaXBbMF1bNF1bMF0KICAgICAgICAgICAgaWYgaG9zdF9pcF90eXBl - ID09ICJJUHY2IjoKICAgICAgICAgICAgICAgIGlwID0gc29ja2V0LmdldGFkZHJpbmZvKAogICAg - ICAgICAgICAgICAgICAgIGhvc3RfbmFtZSwgcG9ydCwgZmFtaWx5PXNvY2tldC5BRl9JTkVUNiwg - cHJvdG89c29ja2V0LklQUFJPVE9fVENQCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGVs - aWYgaG9zdF9pcF90eXBlID09ICJJUHY0IjoKICAgICAgICAgICAgICAgIGlwID0gc29ja2V0Lmdl - dGFkZHJpbmZvKAogICAgICAgICAgICAgICAgICAgIGhvc3RfbmFtZSwgcG9ydCwgZmFtaWx5PXNv - Y2tldC5BRl9JTkVULCBwcm90bz1zb2NrZXQuSVBQUk9UT19UQ1AKICAgICAgICAgICAgICAgICkK - ICAgICAgICAgICAgZGVsIHNvY2tldAogICAgICAgICAgICByZXR1cm4gaXBbMF1bNF1bMF0KICAg - ICAgICByZXR1cm4gaG9zdF9uYW1lCgogICAgZGVmIGdldF9hY3RpdmVfYW5kX3N0YW5kYnlfbWdy - cyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLmRyeV9ydW46CiAgICAgICAgICAg - IHJldHVybiAiIiwgc2VsZi5kcnlfcnVuKCJjZXBoIHN0YXR1cyIpCiAgICAgICAgbW9uaXRvcmlu - Z19lbmRwb2ludF9wb3J0ID0gc2VsZi5fYXJnX3BhcnNlci5tb25pdG9yaW5nX2VuZHBvaW50X3Bv - cnQKICAgICAgICBtb25pdG9yaW5nX2VuZHBvaW50X2lwX2xpc3QgPSBzZWxmLl9hcmdfcGFyc2Vy - Lm1vbml0b3JpbmdfZW5kcG9pbnQKICAgICAgICBzdGFuZGJ5X21ncnMgPSBbXQogICAgICAgIGlm - IG5vdCBtb25pdG9yaW5nX2VuZHBvaW50X2lwX2xpc3Q6CiAgICAgICAgICAgIGNtZF9qc29uID0g - eyJwcmVmaXgiOiAic3RhdHVzIiwgImZvcm1hdCI6ICJqc29uIn0KICAgICAgICAgICAgcmV0X3Zh - bCwganNvbl9vdXQsIGVycl9tc2cgPSBzZWxmLl9jb21tb25fY21kX2pzb25fZ2VuKGNtZF9qc29u - KQogICAgICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIHVuc3VjY2Vzc2Z1bCBhdHRlbXB0LAogICAg - ICAgICAgICBpZiByZXRfdmFsICE9IDAgb3IgbGVuKGpzb25fb3V0KSA9PSAwOgogICAgICAgICAg - ICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAg - ICAiJ21nciBzZXJ2aWNlcycgY29tbWFuZCBmYWlsZWQuXG4iCiAgICAgICAgICAgICAgICAgICAg + cyB0aGUgbmFtZSBvZiB0aGUgcmd3LXpvbmVncm91cCIsCiAgICAgICAgKQoKICAgICAgICB1cGdy + YWRlX2dyb3VwID0gYXJnUC5hZGRfYXJndW1lbnRfZ3JvdXAoInVwZ3JhZGUiKQogICAgICAgIHVw + Z3JhZGVfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS11cGdyYWRlIiwKICAgICAg + ICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKICAg + ICAgICAgICAgaGVscD0iVXBncmFkZXMgdGhlIGNlcGhDU0lLZXlyaW5ncyhGb3IgZXhhbXBsZTog + Y2xpZW50LmNzaS1jZXBoZnMtcHJvdmlzaW9uZXIpIGFuZCBjbGllbnQuaGVhbHRoY2hlY2tlciBj + ZXBoIHVzZXJzIHdpdGggbmV3IHBlcm1pc3Npb25zIG5lZWRlZCBmb3IgdGhlIG5ldyBjbHVzdGVy + IHZlcnNpb24gYW5kIG9sZGVyIHBlcm1pc3Npb24gd2lsbCBzdGlsbCBiZSBhcHBsaWVkLiIKICAg + ICAgICAgICAgKyAiU2FtcGxlIHJ1bjogYHB5dGhvbjMgL2V0Yy9jZXBoL2NyZWF0ZS1leHRlcm5h + bC1jbHVzdGVyLXJlc291cmNlcy5weSAtLXVwZ3JhZGVgLCB0aGlzIHdpbGwgdXBncmFkZSBhbGwg + dGhlIGRlZmF1bHQgY3NpIHVzZXJzKG5vbi1yZXN0cmljdGVkKSIKICAgICAgICAgICAgKyAiRm9y + IHJlc3RyaWN0ZWQgdXNlcnMoRm9yIGV4YW1wbGU6IGNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lv + bmVyLW9wZW5zaGlmdC1zdG9yYWdlLW15ZnMpLCB1c2VycyBjcmVhdGVkIHVzaW5nIC0tcmVzdHJp + Y3RlZC1hdXRoLXBlcm1pc3Npb24gZmxhZyBuZWVkIHRvIHBhc3MgbWFuZGF0b3J5IGZsYWdzIgog + ICAgICAgICAgICArICJtYW5kYXRvcnkgZmxhZ3M6ICctLXJiZC1kYXRhLXBvb2wtbmFtZSwgLS1r + OHMtY2x1c3Rlci1uYW1lIGFuZCAtLXJ1bi1hcy11c2VyJyBmbGFncyB3aGlsZSB1cGdyYWRpbmci + CiAgICAgICAgICAgICsgImluIGNhc2Ugb2YgY2VwaGZzIHVzZXJzIGlmIHlvdSBoYXZlIHBhc3Nl + ZCAtLWNlcGhmcy1maWxlc3lzdGVtLW5hbWUgZmxhZyB3aGlsZSBjcmVhdGluZyB1c2VyIHRoZW4g + d2hpbGUgdXBncmFkaW5nIGl0IHdpbGwgYmUgbWFuZGF0b3J5IHRvbyIKICAgICAgICAgICAgKyAi + U2FtcGxlIHJ1bjogYHB5dGhvbjMgL2V0Yy9jZXBoL2NyZWF0ZS1leHRlcm5hbC1jbHVzdGVyLXJl + c291cmNlcy5weSAtLXVwZ3JhZGUgLS1yYmQtZGF0YS1wb29sLW5hbWUgcmVwbGljYXBvb2wgLS1r + OHMtY2x1c3Rlci1uYW1lIHJvb2tzdG9yYWdlICAtLXJ1bi1hcy11c2VyIGNsaWVudC5jc2ktcmJk + LW5vZGUtcm9va3N0b3JhZ2UtcmVwbGljYXBvb2xgIgogICAgICAgICAgICArICJQUzogQW4gZXhp + c3Rpbmcgbm9uLXJlc3RyaWN0ZWQgdXNlciBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgcmVzdHJp + Y3RlZCB1c2VyIGJ5IHVwZ3JhZGluZy4iCiAgICAgICAgICAgICsgIlVwZ3JhZGUgZmxhZyBzaG91 + bGQgb25seSBiZSB1c2VkIHRvIGFwcGVuZCBuZXcgcGVybWlzc2lvbnMgdG8gdXNlcnMsIGl0IHNo + b3VsZG4ndCBiZSB1c2VkIGZvciBjaGFuZ2luZyB1c2VyIGFscmVhZHkgYXBwbGllZCBwZXJtaXNz + aW9uLCBmb3IgZXhhbXBsZSB5b3Ugc2hvdWxkbid0IGNoYW5nZSBpbiB3aGljaCBwb29sIHVzZXIg + aGFzIGFjY2VzcyIsCiAgICAgICAgKQoKICAgICAgICBpZiBhcmdzX3RvX3BhcnNlOgogICAgICAg + ICAgICBhc3NlcnQgKAogICAgICAgICAgICAgICAgdHlwZShhcmdzX3RvX3BhcnNlKSA9PSBsaXN0 + CiAgICAgICAgICAgICksICJBcmd1bWVudCB0byAnZ2VuX2FyZ19wYXJzZXInIHNob3VsZCBiZSBh + IGxpc3QiCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYXJnc190b19wYXJzZSA9IHN5cy5hcmd2 + WzE6XQogICAgICAgIHJldHVybiBhcmdQLnBhcnNlX2FyZ3MoYXJnc190b19wYXJzZSkKCiAgICBk + ZWYgdmFsaWRhdGVfcmJkX21ldGFkYXRhX2VjX3Bvb2xfbmFtZShzZWxmKToKICAgICAgICBpZiBz + ZWxmLl9hcmdfcGFyc2VyLnJiZF9tZXRhZGF0YV9lY19wb29sX25hbWU6CiAgICAgICAgICAgIHJi + ZF9tZXRhZGF0YV9lY19wb29sX25hbWUgPSBzZWxmLl9hcmdfcGFyc2VyLnJiZF9tZXRhZGF0YV9l + Y19wb29sX25hbWUKICAgICAgICAgICAgcmJkX3Bvb2xfbmFtZSA9IHNlbGYuX2FyZ19wYXJzZXIu + cmJkX2RhdGFfcG9vbF9uYW1lCgogICAgICAgICAgICBpZiByYmRfcG9vbF9uYW1lID09ICIiOgog + ICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAg + ICAgICAgICAgICAiRmxhZyAnLS1yYmQtZGF0YS1wb29sLW5hbWUnIHNob3VsZCBub3QgYmUgZW1w + dHkiCiAgICAgICAgICAgICAgICApCgogICAgICAgICAgICBpZiByYmRfbWV0YWRhdGFfZWNfcG9v + bF9uYW1lID09ICIiOgogICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2Vw + dGlvbigKICAgICAgICAgICAgICAgICAgICAiRmxhZyAnLS1yYmQtbWV0YWRhdGEtZWMtcG9vbC1u + YW1lJyBzaG91bGQgbm90IGJlIGVtcHR5IgogICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAg + Y21kX2pzb24gPSB7InByZWZpeCI6ICJvc2QgZHVtcCIsICJmb3JtYXQiOiAianNvbiJ9CiAgICAg + ICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2VsZi5fY29tbW9uX2NtZF9qc29u + X2dlbihjbWRfanNvbikKICAgICAgICAgICAgaWYgcmV0X3ZhbCAhPSAwIG9yIGxlbihqc29uX291 + dCkgPT0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24o + CiAgICAgICAgICAgICAgICAgICAgZiJ7Y21kX2pzb25bJ3ByZWZpeCddfSBjb21tYW5kIGZhaWxl + ZC5cbiIKICAgICAgICAgICAgICAgICAgICBmIkVycm9yOiB7ZXJyX21zZyBpZiByZXRfdmFsICE9 + IDAgZWxzZSBzZWxmLkVNUFRZX09VVFBVVF9MSVNUfSIKICAgICAgICAgICAgICAgICkKICAgICAg + ICAgICAgbWV0YWRhdGFfcG9vbF9leGlzdCwgcG9vbF9leGlzdCA9IEZhbHNlLCBGYWxzZQoKICAg + ICAgICAgICAgZm9yIGtleSBpbiBqc29uX291dFsicG9vbHMiXToKICAgICAgICAgICAgICAgICMg + aWYgZXJhc3VyZV9jb2RlX3Byb2ZpbGUgaXMgZW1wdHkgYW5kIHBvb2wgbmFtZSBleGlzdHMgdGhl + biBpdCByZXBsaWNhIHBvb2wKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAg + ICBrZXlbImVyYXN1cmVfY29kZV9wcm9maWxlIl0gPT0gIiIKICAgICAgICAgICAgICAgICAgICBh + bmQga2V5WyJwb29sX25hbWUiXSA9PSByYmRfbWV0YWRhdGFfZWNfcG9vbF9uYW1lCiAgICAgICAg + ICAgICAgICApOgogICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhX3Bvb2xfZXhpc3QgPSBUcnVl + CiAgICAgICAgICAgICAgICAjIGlmIGVyYXN1cmVfY29kZV9wcm9maWxlIGlzIG5vdCBlbXB0eSBh + bmQgcG9vbCBuYW1lIGV4aXN0cyB0aGVuIGl0IGlzIGVjIHBvb2wKICAgICAgICAgICAgICAgIGlm + IGtleVsiZXJhc3VyZV9jb2RlX3Byb2ZpbGUiXSBhbmQga2V5WyJwb29sX25hbWUiXSA9PSByYmRf + cG9vbF9uYW1lOgogICAgICAgICAgICAgICAgICAgIHBvb2xfZXhpc3QgPSBUcnVlCgogICAgICAg + ICAgICBpZiBub3QgbWV0YWRhdGFfcG9vbF9leGlzdDoKICAgICAgICAgICAgICAgIHJhaXNlIEV4 + ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgIlByb3ZpZGVkIHJi + ZF9lY19tZXRhZGF0YV9wb29sIG5hbWUsIgogICAgICAgICAgICAgICAgICAgIGYiIHtyYmRfbWV0 + YWRhdGFfZWNfcG9vbF9uYW1lfSwgZG9lcyBub3QgZXhpc3QiCiAgICAgICAgICAgICAgICApCiAg + ICAgICAgICAgIGlmIG5vdCBwb29sX2V4aXN0OgogICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0 + aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICBmIlByb3ZpZGVkIHJiZF9k + YXRhX3Bvb2wgbmFtZSwge3JiZF9wb29sX25hbWV9LCBkb2VzIG5vdCBleGlzdCIKICAgICAgICAg + ICAgICAgICkKICAgICAgICAgICAgcmV0dXJuIHJiZF9tZXRhZGF0YV9lY19wb29sX25hbWUKCiAg + ICBkZWYgZHJ5X3J1bihzZWxmLCBtc2cpOgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5 + X3J1bjoKICAgICAgICAgICAgcHJpbnQoIkV4ZWN1dGU6ICIgKyAiJyIgKyBtc2cgKyAiJyIpCgog + ICAgZGVmIHZhbGlkYXRlX3Jnd19lbmRwb2ludF90bHNfY2VydChzZWxmKToKICAgICAgICBpZiBz + ZWxmLl9hcmdfcGFyc2VyLnJnd190bHNfY2VydF9wYXRoOgogICAgICAgICAgICB3aXRoIG9wZW4o + c2VsZi5fYXJnX3BhcnNlci5yZ3dfdGxzX2NlcnRfcGF0aCwgZW5jb2Rpbmc9InV0ZjgiKSBhcyBm + OgogICAgICAgICAgICAgICAgY29udGVudHMgPSBmLnJlYWQoKQogICAgICAgICAgICAgICAgcmV0 + dXJuIGNvbnRlbnRzLnJzdHJpcCgpCgogICAgZGVmIF9jaGVja19jb25mbGljdGluZ19vcHRpb25z + KHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9hcmdfcGFyc2VyLnVwZ3JhZGUgYW5kIG5vdCBz + ZWxmLl9hcmdfcGFyc2VyLnJiZF9kYXRhX3Bvb2xfbmFtZToKICAgICAgICAgICAgcmFpc2UgRXhl + Y3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICJFaXRoZXIgJy0tdXBncmFk + ZScgb3IgJy0tcmJkLWRhdGEtcG9vbC1uYW1lIDxwb29sX25hbWU+JyBzaG91bGQgYmUgc3BlY2lm + aWVkIgogICAgICAgICAgICApCgogICAgZGVmIF9pbnZhbGlkX2VuZHBvaW50KHNlbGYsIGVuZHBv + aW50X3N0cik6CiAgICAgICAgIyBzZXBhcmF0aW5nIHBvcnQsIGJ5IGdldHRpbmcgbGFzdCBzcGxp + dCBvZiBgOmAgZGVsaW1pdGVyCiAgICAgICAgdHJ5OgogICAgICAgICAgICBlbmRwb2ludF9zdHJf + aXAsIHBvcnQgPSBlbmRwb2ludF9zdHIucnNwbGl0KCI6IiwgMSkKICAgICAgICBleGNlcHQgVmFs + dWVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbihmIk5v + dCBhIHByb3BlciBlbmRwb2ludDoge2VuZHBvaW50X3N0cn0iKQoKICAgICAgICB0cnk6CiAgICAg + ICAgICAgIGlmIGVuZHBvaW50X3N0cl9pcFswXSA9PSAiWyI6CiAgICAgICAgICAgICAgICBlbmRw + b2ludF9zdHJfaXAgPSBlbmRwb2ludF9zdHJfaXBbMSA6IGxlbihlbmRwb2ludF9zdHJfaXApIC0g + MV0KICAgICAgICAgICAgaXBfdHlwZSA9ICgKICAgICAgICAgICAgICAgICJJUHY0IiBpZiB0eXBl + KGlwX2FkZHJlc3MoZW5kcG9pbnRfc3RyX2lwKSkgaXMgSVB2NEFkZHJlc3MgZWxzZSAiSVB2NiIK + ICAgICAgICAgICAgKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICBpcF90 + eXBlID0gIkZRRE4iCiAgICAgICAgaWYgbm90IHBvcnQuaXNkaWdpdCgpOgogICAgICAgICAgICBy + YWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKGYiUG9ydCBub3QgdmFsaWQ6IHtwb3J0fSIp + CiAgICAgICAgaW50UG9ydCA9IGludChwb3J0KQogICAgICAgIGlmIGludFBvcnQgPCAxIG9yIGlu + dFBvcnQgPiAyKioxNiAtIDE6CiAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNl + cHRpb24oZiJPdXQgb2YgcmFuZ2UgcG9ydCBudW1iZXI6IHtwb3J0fSIpCgogICAgICAgIHJldHVy + biBpcF90eXBlCgogICAgZGVmIGVuZHBvaW50X2RpYWwoc2VsZiwgZW5kcG9pbnRfc3RyLCBpcF90 + eXBlLCB0aW1lb3V0PTMsIGNlcnQ9Tm9uZSk6CiAgICAgICAgIyBpZiB0aGUgJ2NsdXN0ZXInIGlu + c3RhbmNlIGlzIGEgZHVtbXkgb25lLAogICAgICAgICMgZG9uJ3QgdHJ5IHRvIHJlYWNoIG91dCB0 + byB0aGUgZW5kcG9pbnQKICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuY2x1c3RlciwgRHVtbXlS + YWRvcyk6CiAgICAgICAgICAgIHJldHVybiAiIiwgIiIsICIiCiAgICAgICAgaWYgaXBfdHlwZSA9 + PSAiSVB2NiI6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGVuZHBvaW50X3N0cl9p + cCwgZW5kcG9pbnRfc3RyX3BvcnQgPSBlbmRwb2ludF9zdHIucnNwbGl0KCI6IiwgMSkKICAgICAg + ICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25G + YWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgIGYiTm90IGEgcHJvcGVyIGVuZHBv + aW50OiB7ZW5kcG9pbnRfc3RyfSIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgaWYgZW5k + cG9pbnRfc3RyX2lwWzBdICE9ICJbIjoKICAgICAgICAgICAgICAgIGVuZHBvaW50X3N0cl9pcCA9 + ICJbIiArIGVuZHBvaW50X3N0cl9pcCArICJdIgogICAgICAgICAgICBlbmRwb2ludF9zdHIgPSAi + OiIuam9pbihbZW5kcG9pbnRfc3RyX2lwLCBlbmRwb2ludF9zdHJfcG9ydF0pCgogICAgICAgIHBy + b3RvY29scyA9IFsiaHR0cCIsICJodHRwcyJdCiAgICAgICAgcmVzcG9uc2VfZXJyb3IgPSBOb25l + CiAgICAgICAgZm9yIHByZWZpeCBpbiBwcm90b2NvbHM6CiAgICAgICAgICAgIHRyeToKICAgICAg + ICAgICAgICAgIGVwID0gZiJ7cHJlZml4fTovL3tlbmRwb2ludF9zdHJ9IgogICAgICAgICAgICAg + ICAgdmVyaWZ5ID0gTm9uZQogICAgICAgICAgICAgICAgIyBJZiB2ZXJpZnkgaXMgc2V0IHRvIGEg + cGF0aCB0byBhIGRpcmVjdG9yeSwKICAgICAgICAgICAgICAgICMgdGhlIGRpcmVjdG9yeSBtdXN0 + IGhhdmUgYmVlbiBwcm9jZXNzZWQgdXNpbmcgdGhlIGNfcmVoYXNoIHV0aWxpdHkgc3VwcGxpZWQg + d2l0aCBPcGVuU1NMLgogICAgICAgICAgICAgICAgaWYgcHJlZml4ID09ICJodHRwcyIgYW5kIHNl + bGYuX2FyZ19wYXJzZXIucmd3X3NraXBfdGxzOgogICAgICAgICAgICAgICAgICAgIHZlcmlmeSA9 + IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgciA9IHJlcXVlc3RzLmhlYWQoZXAsIHRpbWVvdXQ9 + dGltZW91dCwgdmVyaWZ5PUZhbHNlKQogICAgICAgICAgICAgICAgZWxpZiBwcmVmaXggPT0gImh0 + dHBzIiBhbmQgY2VydDoKICAgICAgICAgICAgICAgICAgICB2ZXJpZnkgPSBjZXJ0CiAgICAgICAg + ICAgICAgICAgICAgciA9IHJlcXVlc3RzLmhlYWQoZXAsIHRpbWVvdXQ9dGltZW91dCwgdmVyaWZ5 + PWNlcnQpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHIgPSByZXF1 + ZXN0cy5oZWFkKGVwLCB0aW1lb3V0PXRpbWVvdXQpCiAgICAgICAgICAgICAgICBpZiByLnN0YXR1 + c19jb2RlID09IDIwMDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4LCB2ZXJpZnks + ICIiCiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgogICAgICAgICAgICAgICAg + cmVzcG9uc2VfZXJyb3IgPSBlcnIKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgc3lz + LnN0ZGVyci53cml0ZSgKICAgICAgICAgICAgZiJ1bmFibGUgdG8gY29ubmVjdCB0byBlbmRwb2lu + dDoge2VuZHBvaW50X3N0cn0sIGZhaWxlZCBlcnJvcjoge3Jlc3BvbnNlX2Vycm9yfSIKICAgICAg + ICApCiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgIiIsCiAgICAgICAgICAgICIiLAogICAg + ICAgICAgICAoIi0xIiksCiAgICAgICAgKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdfbGlz + dD1Ob25lKToKICAgICAgICBzZWxmLm91dF9tYXAgPSB7fQogICAgICAgIHNlbGYuX2V4Y2x1ZGVk + X2tleXMgPSBzZXQoKQogICAgICAgIHNlbGYuX2FyZ19wYXJzZXIgPSBzZWxmLmdlbl9hcmdfcGFy + c2VyKGFyZ3NfdG9fcGFyc2U9YXJnX2xpc3QpCiAgICAgICAgc2VsZi5fY2hlY2tfY29uZmxpY3Rp + bmdfb3B0aW9ucygpCiAgICAgICAgc2VsZi5ydW5fYXNfdXNlciA9IHNlbGYuX2FyZ19wYXJzZXIu + cnVuX2FzX3VzZXIKICAgICAgICBzZWxmLm91dHB1dF9maWxlID0gc2VsZi5fYXJnX3BhcnNlci5v + dXRwdXQKICAgICAgICBzZWxmLmNlcGhfY29uZiA9IHNlbGYuX2FyZ19wYXJzZXIuY2VwaF9jb25m + CiAgICAgICAgc2VsZi5jZXBoX2tleXJpbmcgPSBzZWxmLl9hcmdfcGFyc2VyLmtleXJpbmcKICAg + ICAgICAjIGlmIHVzZXIgbm90IHByb3ZpZGVkLCBnaXZlIGEgZGVmYXVsdCB1c2VyCiAgICAgICAg + aWYgbm90IHNlbGYucnVuX2FzX3VzZXIgYW5kIG5vdCBzZWxmLl9hcmdfcGFyc2VyLnVwZ3JhZGU6 + CiAgICAgICAgICAgIHNlbGYucnVuX2FzX3VzZXIgPSBzZWxmLkVYVEVSTkFMX1VTRVJfTkFNRQog + ICAgICAgIGlmIG5vdCBzZWxmLl9hcmdfcGFyc2VyLnJnd19wb29sX3ByZWZpeCBhbmQgbm90IHNl + bGYuX2FyZ19wYXJzZXIudXBncmFkZToKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3df + cG9vbF9wcmVmaXggPSBzZWxmLkRFRkFVTFRfUkdXX1BPT0xfUFJFRklYCiAgICAgICAgaWYgc2Vs + Zi5jZXBoX2NvbmY6CiAgICAgICAgICAgIGt3YXJncyA9IHt9CiAgICAgICAgICAgIGlmIHNlbGYu + Y2VwaF9rZXlyaW5nOgogICAgICAgICAgICAgICAga3dhcmdzWyJjb25mIl0gPSB7ImtleXJpbmci + OiBzZWxmLmNlcGhfa2V5cmluZ30KICAgICAgICAgICAgc2VsZi5jbHVzdGVyID0gcmFkb3MuUmFk + b3MoY29uZmZpbGU9c2VsZi5jZXBoX2NvbmYsICoqa3dhcmdzKQogICAgICAgIGVsc2U6CiAgICAg + ICAgICAgIHNlbGYuY2x1c3RlciA9IHJhZG9zLlJhZG9zKCkKICAgICAgICAgICAgc2VsZi5jbHVz + dGVyLmNvbmZfcmVhZF9maWxlKCkKICAgICAgICBzZWxmLmNsdXN0ZXIuY29ubmVjdCgpCgogICAg + ZGVmIHNodXRkb3duKHNlbGYpOgogICAgICAgIGlmIHNlbGYuY2x1c3Rlci5zdGF0ZSA9PSAiY29u + bmVjdGVkIjoKICAgICAgICAgICAgc2VsZi5jbHVzdGVyLnNodXRkb3duKCkKCiAgICBkZWYgZ2V0 + X2ZzaWQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5kcnlfcnVuOgogICAgICAg + ICAgICByZXR1cm4gc2VsZi5kcnlfcnVuKCJjZXBoIGZzaWQiKQogICAgICAgIHJldHVybiBzdHIo + c2VsZi5jbHVzdGVyLmdldF9mc2lkKCkpCgogICAgZGVmIF9jb21tb25fY21kX2pzb25fZ2VuKHNl + bGYsIGNtZF9qc29uKToKICAgICAgICBjbWQgPSBqc29uLmR1bXBzKGNtZF9qc29uLCBzb3J0X2tl + eXM9VHJ1ZSkKICAgICAgICByZXRfdmFsLCBjbWRfb3V0LCBlcnJfbXNnID0gc2VsZi5jbHVzdGVy + Lm1vbl9jb21tYW5kKGNtZCwgYiIiKQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIudmVyYm9z + ZToKICAgICAgICAgICAgcHJpbnQoZiJDb21tYW5kIElucHV0OiB7Y21kfSIpCiAgICAgICAgICAg + IHByaW50KAogICAgICAgICAgICAgICAgZiJSZXR1cm4gVmFsOiB7cmV0X3ZhbH1cbkNvbW1hbmQg + T3V0cHV0OiB7Y21kX291dH1cbiIKICAgICAgICAgICAgICAgIGYiRXJyb3IgTWVzc2FnZToge2Vy + cl9tc2d9XG4tLS0tLS0tLS0tXG4iCiAgICAgICAgICAgICkKICAgICAgICBqc29uX291dCA9IHt9 + CiAgICAgICAgIyBpZiB0aGVyZSBpcyBubyBlcnJvciAoaS5lOyByZXRfdmFsIGlzIFpFUk8pIGFu + ZCAnY21kX291dCcgaXMgbm90IGVtcHR5CiAgICAgICAgIyB0aGVuIGNvbnZlcnQgJ2NtZF9vdXQn + IHRvIGEganNvbiBvdXRwdXQKICAgICAgICBpZiByZXRfdmFsID09IDAgYW5kIGNtZF9vdXQ6CiAg + ICAgICAgICAgIGpzb25fb3V0ID0ganNvbi5sb2FkcyhjbWRfb3V0KQogICAgICAgIHJldHVybiBy + ZXRfdmFsLCBqc29uX291dCwgZXJyX21zZwoKICAgIGRlZiBnZXRfY2VwaF9leHRlcm5hbF9tb25f + ZGF0YShzZWxmKToKICAgICAgICBjbWRfanNvbiA9IHsicHJlZml4IjogInF1b3J1bV9zdGF0dXMi + LCAiZm9ybWF0IjogImpzb24ifQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5X3J1bjoK + ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZHJ5X3J1bigiY2VwaCAiICsgY21kX2pzb25bInByZWZp + eCJdKQogICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2VsZi5fY29tbW9uX2Nt + ZF9qc29uX2dlbihjbWRfanNvbikKICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIHVuc3VjY2Vzc2Z1 + bCBhdHRlbXB0LAogICAgICAgIGlmIHJldF92YWwgIT0gMCBvciBsZW4oanNvbl9vdXQpID09IDA6 + CiAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAg + ICAgICAiJ3F1b3J1bV9zdGF0dXMnIGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAg ZiJFcnJvcjoge2Vycl9tc2cgaWYgcmV0X3ZhbCAhPSAwIGVsc2Ugc2VsZi5FTVBUWV9PVVRQVVRf - TElTVH0iCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIG1vbml0b3JpbmdfZW5kcG9pbnQg - PSAoCiAgICAgICAgICAgICAgICBqc29uX291dC5nZXQoIm1ncm1hcCIsIHt9KS5nZXQoInNlcnZp - Y2VzIiwge30pLmdldCgicHJvbWV0aGV1cyIsICIiKQogICAgICAgICAgICApCiAgICAgICAgICAg - IGlmIG5vdCBtb25pdG9yaW5nX2VuZHBvaW50OgogICAgICAgICAgICAgICAgcmV0dXJuICIiLCAi - IgogICAgICAgICAgICAjIG5vdyBjaGVjayB0aGUgc3RhbmQtYnkgbWdyLXMKICAgICAgICAgICAg - c3RhbmRieV9hcnIgPSBqc29uX291dC5nZXQoIm1ncm1hcCIsIHt9KS5nZXQoInN0YW5kYnlzIiwg - W10pCiAgICAgICAgICAgIGZvciBlYWNoX3N0YW5kYnkgaW4gc3RhbmRieV9hcnI6CiAgICAgICAg - ICAgICAgICBpZiAibmFtZSIgaW4gZWFjaF9zdGFuZGJ5LmtleXMoKToKICAgICAgICAgICAgICAg - ICAgICBzdGFuZGJ5X21ncnMuYXBwZW5kKGVhY2hfc3RhbmRieVsibmFtZSJdKQogICAgICAgICAg - ICB0cnk6CiAgICAgICAgICAgICAgICBwYXJzZWRfZW5kcG9pbnQgPSB1cmxwYXJzZShtb25pdG9y - aW5nX2VuZHBvaW50KQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAg - ICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAg - ZiJpbnZhbGlkIGVuZHBvaW50OiB7bW9uaXRvcmluZ19lbmRwb2ludH0iCiAgICAgICAgICAgICAg - ICApCiAgICAgICAgICAgIG1vbml0b3JpbmdfZW5kcG9pbnRfaXBfbGlzdCA9IHBhcnNlZF9lbmRw - b2ludC5ob3N0bmFtZQogICAgICAgICAgICBpZiBub3QgbW9uaXRvcmluZ19lbmRwb2ludF9wb3J0 - OgogICAgICAgICAgICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9wb3J0ID0gc3RyKHBhcnNlZF9l - bmRwb2ludC5wb3J0KQoKICAgICAgICAjIGlmIG1vbml0b3JpbmcgZW5kcG9pbnQgcG9ydCBpcyBu - b3Qgc2V0LCBwdXQgYSBkZWZhdWx0IG1vbiBwb3J0CiAgICAgICAgaWYgbm90IG1vbml0b3Jpbmdf - ZW5kcG9pbnRfcG9ydDoKICAgICAgICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9wb3J0ID0gc2Vs - Zi5ERUZBVUxUX01PTklUT1JJTkdfRU5EUE9JTlRfUE9SVAoKICAgICAgICAjIHVzZXIgY291bGQg - Z2l2ZSBjb21tYSBhbmQgc3BhY2Ugc2VwYXJhdGVkIGlucHV0cyAobGlrZSAtLW1vbml0b3Jpbmct - ZW5kcG9pbnQ9IjxpcDE+LCA8aXAyPiIpCiAgICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9pcF9s - aXN0ID0gbW9uaXRvcmluZ19lbmRwb2ludF9pcF9saXN0LnJlcGxhY2UoIiwiLCAiICIpCiAgICAg - ICAgbW9uaXRvcmluZ19lbmRwb2ludF9pcF9saXN0X3NwbGl0ID0gbW9uaXRvcmluZ19lbmRwb2lu - dF9pcF9saXN0LnNwbGl0KCkKICAgICAgICAjIGlmIG1vbml0b3JpbmctZW5kcG9pbnQgY291bGQg - bm90IGJlIGZvdW5kLCByYWlzZSBhbiBlcnJvcgogICAgICAgIGlmIGxlbihtb25pdG9yaW5nX2Vu - ZHBvaW50X2lwX2xpc3Rfc3BsaXQpID09IDA6CiAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZh - aWx1cmVFeGNlcHRpb24oIk5vICdtb25pdG9yaW5nLWVuZHBvaW50JyBmb3VuZCIpCiAgICAgICAg - IyBmaXJzdCBpcCBpcyB0cmVhdGVkIGFzIHRoZSBtYWluIG1vbml0b3JpbmctZW5kcG9pbnQKICAg - ICAgICBtb25pdG9yaW5nX2VuZHBvaW50X2lwID0gbW9uaXRvcmluZ19lbmRwb2ludF9pcF9saXN0 - X3NwbGl0WzBdCiAgICAgICAgIyByZXN0IG9mIHRoZSBpcC1zIGFyZSBhZGRlZCB0byB0aGUgJ3N0 - YW5kYnlfbWdycycgbGlzdAogICAgICAgIHN0YW5kYnlfbWdycy5leHRlbmQobW9uaXRvcmluZ19l - bmRwb2ludF9pcF9saXN0X3NwbGl0WzE6XSkKICAgICAgICBmYWlsZWRfaXAgPSBtb25pdG9yaW5n - X2VuZHBvaW50X2lwCgogICAgICAgIG1vbml0b3JpbmdfZW5kcG9pbnQgPSAiOiIuam9pbigKICAg - ICAgICAgICAgW21vbml0b3JpbmdfZW5kcG9pbnRfaXAsIG1vbml0b3JpbmdfZW5kcG9pbnRfcG9y - dF0KICAgICAgICApCiAgICAgICAgaXBfdHlwZSA9IHNlbGYuX2ludmFsaWRfZW5kcG9pbnQobW9u - aXRvcmluZ19lbmRwb2ludCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIG1vbml0b3JpbmdfZW5k - cG9pbnRfaXAgPSBzZWxmLl9jb252ZXJ0X2hvc3RuYW1lX3RvX2lwKAogICAgICAgICAgICAgICAg - bW9uaXRvcmluZ19lbmRwb2ludF9pcCwgbW9uaXRvcmluZ19lbmRwb2ludF9wb3J0LCBpcF90eXBl - CiAgICAgICAgICAgICkKICAgICAgICAgICAgIyBjb2xsZWN0IGFsbCB0aGUgJ3N0YW5kLWJ5JyBt - Z3IgaXBzCiAgICAgICAgICAgIG1ncl9pcHMgPSBbXQogICAgICAgICAgICBmb3IgZWFjaF9zdGFu - ZGJ5X21nciBpbiBzdGFuZGJ5X21ncnM6CiAgICAgICAgICAgICAgICBmYWlsZWRfaXAgPSBlYWNo - X3N0YW5kYnlfbWdyCiAgICAgICAgICAgICAgICBtZ3JfaXBzLmFwcGVuZCgKICAgICAgICAgICAg - ICAgICAgICBzZWxmLl9jb252ZXJ0X2hvc3RuYW1lX3RvX2lwKAogICAgICAgICAgICAgICAgICAg - ICAgICBlYWNoX3N0YW5kYnlfbWdyLCBtb25pdG9yaW5nX2VuZHBvaW50X3BvcnQsIGlwX3R5cGUK - ICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgZXhjZXB0Ogog - ICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAg - ICAgZiJDb252ZXJzaW9uIG9mIGhvc3Q6IHtmYWlsZWRfaXB9IHRvIElQIGZhaWxlZC4gIgogICAg - ICAgICAgICAgICAgIlBsZWFzZSBlbnRlciB0aGUgSVAgYWRkcmVzc2VzIG9mIGFsbCB0aGUgY2Vw - aC1tZ3JzIHdpdGggdGhlICctLW1vbml0b3JpbmctZW5kcG9pbnQnIGZsYWciCiAgICAgICAgICAg - ICkKCiAgICAgICAgXywgXywgZXJyID0gc2VsZi5lbmRwb2ludF9kaWFsKG1vbml0b3JpbmdfZW5k - cG9pbnQsIGlwX3R5cGUpCiAgICAgICAgaWYgZXJyID09ICItMSI6CiAgICAgICAgICAgIHJhaXNl - IEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oZXJyKQogICAgICAgICMgYWRkIHRoZSB2YWxpZGF0 - ZWQgYWN0aXZlIG1nciBJUCBpbnRvIHRoZSBmaXJzdCBpbmRleAogICAgICAgIG1ncl9pcHMuaW5z - ZXJ0KDAsIG1vbml0b3JpbmdfZW5kcG9pbnRfaXApCiAgICAgICAgYWxsX21ncl9pcHNfc3RyID0g - IiwiLmpvaW4obWdyX2lwcykKICAgICAgICByZXR1cm4gYWxsX21ncl9pcHNfc3RyLCBtb25pdG9y - aW5nX2VuZHBvaW50X3BvcnQKCiAgICBkZWYgY2hlY2tfdXNlcl9leGlzdChzZWxmLCB1c2VyKToK - ICAgICAgICBjbWRfanNvbiA9IHsicHJlZml4IjogImF1dGggZ2V0IiwgImVudGl0eSI6IGYie3Vz - ZXJ9IiwgImZvcm1hdCI6ICJqc29uIn0KICAgICAgICByZXRfdmFsLCBqc29uX291dCwgXyA9IHNl - bGYuX2NvbW1vbl9jbWRfanNvbl9nZW4oY21kX2pzb24pCiAgICAgICAgaWYgcmV0X3ZhbCAhPSAw - IG9yIGxlbihqc29uX291dCkgPT0gMDoKICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgcmV0 - dXJuIHN0cihqc29uX291dFswXVsia2V5Il0pCgogICAgZGVmIGdldF9jZXBoZnNfcHJvdmlzaW9u - ZXJfY2Fwc19hbmRfZW50aXR5KHNlbGYpOgogICAgICAgIGVudGl0eSA9ICJjbGllbnQuY3NpLWNl - cGhmcy1wcm92aXNpb25lciIKICAgICAgICBjYXBzID0gewogICAgICAgICAgICAibW9uIjogImFs - bG93IHIsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwKICAgICAgICAgICAgIm1nciI6 - ICJhbGxvdyBydyIsCiAgICAgICAgICAgICJvc2QiOiAiYWxsb3cgcncgdGFnIGNlcGhmcyBtZXRh - ZGF0YT0qIiwKICAgICAgICB9CiAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5yZXN0cmljdGVk - X2F1dGhfcGVybWlzc2lvbjoKICAgICAgICAgICAgY2x1c3Rlcl9uYW1lID0gc2VsZi5fYXJnX3Bh - cnNlci5jbHVzdGVyX25hbWUKICAgICAgICAgICAgaWYgY2x1c3Rlcl9uYW1lID09ICIiOgogICAg - ICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAg - ICAgICAgICAiY2x1c3Rlcl9uYW1lIG5vdCBmb3VuZCwgcGxlYXNlIHNldCB0aGUgJy0tY2x1c3Rl - ci1uYW1lJyBmbGFnIgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBjZXBoZnNfZmlsZXN5 - c3RlbSA9IHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2ZpbGVzeXN0ZW1fbmFtZQogICAgICAgICAg - ICBpZiBjZXBoZnNfZmlsZXN5c3RlbSA9PSAiIjoKICAgICAgICAgICAgICAgIGVudGl0eSA9IGYi - e2VudGl0eX0te2NsdXN0ZXJfbmFtZX0iCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAg - ICBlbnRpdHkgPSBmIntlbnRpdHl9LXtjbHVzdGVyX25hbWV9LXtjZXBoZnNfZmlsZXN5c3RlbX0i - CiAgICAgICAgICAgICAgICBjYXBzWyJvc2QiXSA9IGYiYWxsb3cgcncgdGFnIGNlcGhmcyBtZXRh - ZGF0YT17Y2VwaGZzX2ZpbGVzeXN0ZW19IgoKICAgICAgICByZXR1cm4gY2FwcywgZW50aXR5Cgog - ICAgZGVmIGdldF9jZXBoZnNfbm9kZV9jYXBzX2FuZF9lbnRpdHkoc2VsZik6CiAgICAgICAgZW50 - aXR5ID0gImNsaWVudC5jc2ktY2VwaGZzLW5vZGUiCiAgICAgICAgY2FwcyA9IHsKICAgICAgICAg - ICAgIm1vbiI6ICJhbGxvdyByLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsCiAgICAg - ICAgICAgICJtZ3IiOiAiYWxsb3cgcnciLAogICAgICAgICAgICAib3NkIjogImFsbG93IHJ3IHRh - ZyBjZXBoZnMgKj0qIiwKICAgICAgICAgICAgIm1kcyI6ICJhbGxvdyBydyIsCiAgICAgICAgfQog - ICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIucmVzdHJpY3RlZF9hdXRoX3Blcm1pc3Npb246CiAg - ICAgICAgICAgIGNsdXN0ZXJfbmFtZSA9IHNlbGYuX2FyZ19wYXJzZXIuY2x1c3Rlcl9uYW1lCiAg - ICAgICAgICAgIGlmIGNsdXN0ZXJfbmFtZSA9PSAiIjoKICAgICAgICAgICAgICAgIHJhaXNlIEV4 - ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgImNsdXN0ZXJfbmFt - ZSBub3QgZm91bmQsIHBsZWFzZSBzZXQgdGhlICctLWNsdXN0ZXItbmFtZScgZmxhZyIKICAgICAg - ICAgICAgICAgICkKICAgICAgICAgICAgY2VwaGZzX2ZpbGVzeXN0ZW0gPSBzZWxmLl9hcmdfcGFy - c2VyLmNlcGhmc19maWxlc3lzdGVtX25hbWUKICAgICAgICAgICAgaWYgY2VwaGZzX2ZpbGVzeXN0 - ZW0gPT0gIiI6CiAgICAgICAgICAgICAgICBlbnRpdHkgPSBmIntlbnRpdHl9LXtjbHVzdGVyX25h - bWV9IgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZW50aXR5ID0gZiJ7ZW50aXR5 - fS17Y2x1c3Rlcl9uYW1lfS17Y2VwaGZzX2ZpbGVzeXN0ZW19IgogICAgICAgICAgICAgICAgY2Fw - c1sib3NkIl0gPSBmImFsbG93IHJ3IHRhZyBjZXBoZnMgKj17Y2VwaGZzX2ZpbGVzeXN0ZW19IgoK - ICAgICAgICByZXR1cm4gY2FwcywgZW50aXR5CgogICAgZGVmIGdldF9lbnRpdHkoc2VsZiwgZW50 - aXR5LCByYmRfcG9vbF9uYW1lLCBhbGlhc19yYmRfcG9vbF9uYW1lLCBjbHVzdGVyX25hbWUpOgog - ICAgICAgIGlmICgKICAgICAgICAgICAgcmJkX3Bvb2xfbmFtZS5jb3VudCgiLiIpICE9IDAKICAg - ICAgICAgICAgb3IgcmJkX3Bvb2xfbmFtZS5jb3VudCgiXyIpICE9IDAKICAgICAgICAgICAgb3Ig - YWxpYXNfcmJkX3Bvb2xfbmFtZSAhPSAiIgogICAgICAgICAgICAjIGNoZWNraW5nIGFsaWFzX3Ji - ZF9wb29sX25hbWUgaXMgbm90IGVtcHR5IGFzIHRoZXJlIG1heWJlIGEgc3BlY2lhbCBjaGFyYWN0 - ZXIgdXNlZCBvdGhlciB0aGFuIC4gb3IgXwogICAgICAgICk6CiAgICAgICAgICAgIGlmIGFsaWFz - X3JiZF9wb29sX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWls - dXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJwbGVhc2Ugc2V0IHRoZSAnLS1hbGlh - cy1yYmQtZGF0YS1wb29sLW5hbWUnIGZsYWcgYXMgdGhlIHJiZCBkYXRhIHBvb2wgbmFtZSBjb250 - YWlucyAnLicgb3IgJ18nIgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBpZiAoCiAgICAg - ICAgICAgICAgICBhbGlhc19yYmRfcG9vbF9uYW1lLmNvdW50KCIuIikgIT0gMAogICAgICAgICAg - ICAgICAgb3IgYWxpYXNfcmJkX3Bvb2xfbmFtZS5jb3VudCgiXyIpICE9IDAKICAgICAgICAgICAg - KToKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAg - ICAgICAgICAgICAgICAgIictLWFsaWFzLXJiZC1kYXRhLXBvb2wtbmFtZScgZmxhZyB2YWx1ZSBz - aG91bGQgbm90IGNvbnRhaW4gJy4nIG9yICdfJyIKICAgICAgICAgICAgICAgICkKICAgICAgICAg - ICAgZW50aXR5ID0gZiJ7ZW50aXR5fS17Y2x1c3Rlcl9uYW1lfS17YWxpYXNfcmJkX3Bvb2xfbmFt - ZX0iCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW50aXR5ID0gZiJ7ZW50aXR5fS17Y2x1c3Rl - cl9uYW1lfS17cmJkX3Bvb2xfbmFtZX0iCgogICAgICAgIHJldHVybiBlbnRpdHkKCiAgICBkZWYg - Z2V0X3JiZF9wcm92aXNpb25lcl9jYXBzX2FuZF9lbnRpdHkoc2VsZik6CiAgICAgICAgZW50aXR5 - ID0gImNsaWVudC5jc2ktcmJkLXByb3Zpc2lvbmVyIgogICAgICAgIGNhcHMgPSB7CiAgICAgICAg - ICAgICJtb24iOiAicHJvZmlsZSByYmQsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwK - ICAgICAgICAgICAgIm1nciI6ICJhbGxvdyBydyIsCiAgICAgICAgICAgICJvc2QiOiAicHJvZmls - ZSByYmQiLAogICAgICAgIH0KICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLnJlc3RyaWN0ZWRf - YXV0aF9wZXJtaXNzaW9uOgogICAgICAgICAgICByYmRfcG9vbF9uYW1lID0gc2VsZi5fYXJnX3Bh - cnNlci5yYmRfZGF0YV9wb29sX25hbWUKICAgICAgICAgICAgYWxpYXNfcmJkX3Bvb2xfbmFtZSA9 - IHNlbGYuX2FyZ19wYXJzZXIuYWxpYXNfcmJkX2RhdGFfcG9vbF9uYW1lCiAgICAgICAgICAgIGNs - dXN0ZXJfbmFtZSA9IHNlbGYuX2FyZ19wYXJzZXIuY2x1c3Rlcl9uYW1lCiAgICAgICAgICAgIGlm - IHJiZF9wb29sX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWls - dXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJtYW5kYXRvcnkgZmxhZyBub3QgZm91 - bmQsIHBsZWFzZSBzZXQgdGhlICctLXJiZC1kYXRhLXBvb2wtbmFtZScgZmxhZyIKICAgICAgICAg - ICAgICAgICkKICAgICAgICAgICAgaWYgY2x1c3Rlcl9uYW1lID09ICIiOgogICAgICAgICAgICAg - ICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAi - bWFuZGF0b3J5IGZsYWcgbm90IGZvdW5kLCBwbGVhc2Ugc2V0IHRoZSAnLS1jbHVzdGVyLW5hbWUn - IGZsYWciCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGVudGl0eSA9IHNlbGYuZ2V0X2Vu - dGl0eSgKICAgICAgICAgICAgICAgIGVudGl0eSwgcmJkX3Bvb2xfbmFtZSwgYWxpYXNfcmJkX3Bv - b2xfbmFtZSwgY2x1c3Rlcl9uYW1lCiAgICAgICAgICAgICkKICAgICAgICAgICAgY2Fwc1sib3Nk - Il0gPSBmInByb2ZpbGUgcmJkIHBvb2w9e3JiZF9wb29sX25hbWV9IgoKICAgICAgICByZXR1cm4g - Y2FwcywgZW50aXR5CgogICAgZGVmIGdldF9yYmRfbm9kZV9jYXBzX2FuZF9lbnRpdHkoc2VsZik6 - CiAgICAgICAgZW50aXR5ID0gImNsaWVudC5jc2ktcmJkLW5vZGUiCiAgICAgICAgY2FwcyA9IHsK - ICAgICAgICAgICAgIm1vbiI6ICJwcm9maWxlIHJiZCwgYWxsb3cgY29tbWFuZCAnb3NkIGJsb2Nr - bGlzdCciLAogICAgICAgICAgICAib3NkIjogInByb2ZpbGUgcmJkIiwKICAgICAgICB9CiAgICAg - ICAgaWYgc2VsZi5fYXJnX3BhcnNlci5yZXN0cmljdGVkX2F1dGhfcGVybWlzc2lvbjoKICAgICAg - ICAgICAgcmJkX3Bvb2xfbmFtZSA9IHNlbGYuX2FyZ19wYXJzZXIucmJkX2RhdGFfcG9vbF9uYW1l - CiAgICAgICAgICAgIGFsaWFzX3JiZF9wb29sX25hbWUgPSBzZWxmLl9hcmdfcGFyc2VyLmFsaWFz - X3JiZF9kYXRhX3Bvb2xfbmFtZQogICAgICAgICAgICBjbHVzdGVyX25hbWUgPSBzZWxmLl9hcmdf - cGFyc2VyLmNsdXN0ZXJfbmFtZQogICAgICAgICAgICBpZiByYmRfcG9vbF9uYW1lID09ICIiOgog + TElTVH0iCiAgICAgICAgICAgICkKICAgICAgICBxX2xlYWRlcl9uYW1lID0ganNvbl9vdXRbInF1 + b3J1bV9sZWFkZXJfbmFtZSJdCiAgICAgICAgcV9sZWFkZXJfZGV0YWlscyA9IHt9CiAgICAgICAg + cV9sZWFkZXJfbWF0Y2hpbmdfbGlzdCA9IFsKICAgICAgICAgICAgbCBmb3IgbCBpbiBqc29uX291 + dFsibW9ubWFwIl1bIm1vbnMiXSBpZiBsWyJuYW1lIl0gPT0gcV9sZWFkZXJfbmFtZQogICAgICAg + IF0KICAgICAgICBpZiBsZW4ocV9sZWFkZXJfbWF0Y2hpbmdfbGlzdCkgPT0gMDoKICAgICAgICAg + ICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigiTm8gbWF0Y2hpbmcgJ21vbicgZGV0 + YWlscyBmb3VuZCIpCiAgICAgICAgcV9sZWFkZXJfZGV0YWlscyA9IHFfbGVhZGVyX21hdGNoaW5n + X2xpc3RbMF0KICAgICAgICAjIGdldCB0aGUgYWRkcmVzcyB2ZWN0b3Igb2YgdGhlIHF1b3J1bS1s + ZWFkZXIKICAgICAgICBxX2xlYWRlcl9hZGRydmVjID0gcV9sZWFkZXJfZGV0YWlscy5nZXQoInB1 + YmxpY19hZGRycyIsIHt9KS5nZXQoImFkZHJ2ZWMiLCBbXSkKICAgICAgICAjIGlmIHRoZSBxdW9y + dW0tbGVhZGVyIGhhcyBvbmx5IG9uZSBhZGRyZXNzIGluIHRoZSBhZGRyZXNzLXZlY3RvcgogICAg + ICAgICMgYW5kIGl0IGlzIG9mIHR5cGUgJ3YyJyAoaWU7IHdpdGggPElQPjozMzAwKSwKICAgICAg + ICAjIHJhaXNlIGFuIGV4Y2VwdGlvbiB0byBtYWtlIHVzZXIgYXdhcmUgdGhhdAogICAgICAgICMg + dGhleSBoYXZlIHRvIGVuYWJsZSAndjEnIChpZTsgd2l0aCA8SVA+OjY3ODkpIHR5cGUgYXMgd2Vs + bAogICAgICAgIGlmIGxlbihxX2xlYWRlcl9hZGRydmVjKSA9PSAxIGFuZCBxX2xlYWRlcl9hZGRy + dmVjWzBdWyJ0eXBlIl0gPT0gInYyIjoKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVy + ZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICJPbmx5ICd2MicgYWRkcmVzcyB0eXBlIGlzIGVu + YWJsZWQsIHVzZXIgc2hvdWxkIGFsc28gZW5hYmxlICd2MScgdHlwZSBhcyB3ZWxsIgogICAgICAg + ICAgICApCiAgICAgICAgaXBfYWRkciA9IHN0cihxX2xlYWRlcl9kZXRhaWxzWyJwdWJsaWNfYWRk + ciJdLnNwbGl0KCIvIilbMF0pCgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIudjJfcG9ydF9l + bmFibGU6CiAgICAgICAgICAgIGlmIGxlbihxX2xlYWRlcl9hZGRydmVjKSA+IDE6CiAgICAgICAg + ICAgICAgICBpZiBxX2xlYWRlcl9hZGRydmVjWzBdWyJ0eXBlIl0gPT0gInYyIjoKICAgICAgICAg + ICAgICAgICAgICBpcF9hZGRyID0gcV9sZWFkZXJfYWRkcnZlY1swXVsiYWRkciJdCiAgICAgICAg + ICAgICAgICBlbGlmIHFfbGVhZGVyX2FkZHJ2ZWNbMV1bInR5cGUiXSA9PSAidjIiOgogICAgICAg + ICAgICAgICAgICAgIGlwX2FkZHIgPSBxX2xlYWRlcl9hZGRydmVjWzFdWyJhZGRyIl0KICAgICAg + ICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCiAgICAgICAgICAg + ICAgICAgICAgIid2MicgYWRkcmVzcyB0eXBlIG5vdCBwcmVzZW50LCBhbmQgJ3YyLXBvcnQtZW5h + YmxlJyBmbGFnIGlzIHByb3ZpZGVkIgogICAgICAgICAgICAgICAgKQoKICAgICAgICByZXR1cm4g + ZiJ7c3RyKHFfbGVhZGVyX25hbWUpfT17aXBfYWRkcn0iCgogICAgZGVmIF9jb252ZXJ0X2hvc3Ru + YW1lX3RvX2lwKHNlbGYsIGhvc3RfbmFtZSwgcG9ydCwgaXBfdHlwZSk6CiAgICAgICAgIyBpZiAn + Y2x1c3RlcicgaW5zdGFuY2UgaXMgYSBkdW1teSB0eXBlLAogICAgICAgICMgY2FsbCB0aGUgZHVt + bXkgaW5zdGFuY2UncyAiY29udmVydCIgbWV0aG9kCiAgICAgICAgaWYgbm90IGhvc3RfbmFtZToK + ICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigiRW1wdHkgaG9zdG5h + bWUgcHJvdmlkZWQiKQogICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5jbHVzdGVyLCBEdW1teVJh + ZG9zKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2x1c3Rlci5fY29udmVydF9ob3N0bmFtZV90 + b19pcChob3N0X25hbWUpCgogICAgICAgIGlmIGlwX3R5cGUgPT0gIkZRRE4iOgogICAgICAgICAg + ICAjIGNoZWNrIHdoaWNoIGlwIEZRRE4gc2hvdWxkIGJlIGNvbnZlcnRlZCB0bywgSVB2NCBvciBJ + UHY2CiAgICAgICAgICAgICMgY2hlY2sgdGhlIGhvc3QgaXAsIHRoZSBlbmRwb2ludCBpcCB0eXBl + IHdvdWxkIGJlIHNpbWlsYXIgdG8gaG9zdCBpcAogICAgICAgICAgICBjbWRfanNvbiA9IHsicHJl + Zml4IjogIm9yY2ggaG9zdCBscyIsICJmb3JtYXQiOiAianNvbiJ9CiAgICAgICAgICAgIHJldF92 + YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2VsZi5fY29tbW9uX2NtZF9qc29uX2dlbihjbWRfanNv + bikKICAgICAgICAgICAgIyBpZiB0aGVyZSBpcyBhbiB1bnN1Y2Nlc3NmdWwgYXR0ZW1wdCwKICAg + ICAgICAgICAgaWYgcmV0X3ZhbCAhPSAwIG9yIGxlbihqc29uX291dCkgPT0gMDoKICAgICAgICAg + ICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAg + ICAgIidvcmNoIGhvc3QgbHMnIGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAgICAg + IGYiRXJyb3I6IHtlcnJfbXNnIGlmIHJldF92YWwgIT0gMCBlbHNlIHNlbGYuRU1QVFlfT1VUUFVU + X0xJU1R9IgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBob3N0X2FkZHIgPSBqc29uX291 + dFswXVsiYWRkciJdCiAgICAgICAgICAgICMgYWRkIDo4MCBzYW1wbGUgcG9ydCBpbiBpcF90eXBl + LCBhcyBfaW52YWxpZF9lbmRwb2ludCBhbHNvIHZlcmlmeSBwb3J0CiAgICAgICAgICAgIGhvc3Rf + aXBfdHlwZSA9IHNlbGYuX2ludmFsaWRfZW5kcG9pbnQoaG9zdF9hZGRyICsgIjo4MCIpCiAgICAg + ICAgICAgIGltcG9ydCBzb2NrZXQKCiAgICAgICAgICAgICMgZXhhbXBsZSBvdXRwdXQgWyg8QWRk + cmVzc0ZhbWlseS5BRl9JTkVUOiAyPiwgPFNvY2tldEtpbmQuU09DS19TVFJFQU06IDE+LCA2LCAn + JywgKCc5My4xODQuMjE2LjM0JywgODApKSwgLi4uXQogICAgICAgICAgICAjIHdlIG5lZWQgdG8g + Z2V0IDkzLjE4NC4yMTYuMzQgc28gaXQgd291bGQgYmUgaXBbMF1bNF1bMF0KICAgICAgICAgICAg + aWYgaG9zdF9pcF90eXBlID09ICJJUHY2IjoKICAgICAgICAgICAgICAgIGlwID0gc29ja2V0Lmdl + dGFkZHJpbmZvKAogICAgICAgICAgICAgICAgICAgIGhvc3RfbmFtZSwgcG9ydCwgZmFtaWx5PXNv + Y2tldC5BRl9JTkVUNiwgcHJvdG89c29ja2V0LklQUFJPVE9fVENQCiAgICAgICAgICAgICAgICAp + CiAgICAgICAgICAgIGVsaWYgaG9zdF9pcF90eXBlID09ICJJUHY0IjoKICAgICAgICAgICAgICAg + IGlwID0gc29ja2V0LmdldGFkZHJpbmZvKAogICAgICAgICAgICAgICAgICAgIGhvc3RfbmFtZSwg + cG9ydCwgZmFtaWx5PXNvY2tldC5BRl9JTkVULCBwcm90bz1zb2NrZXQuSVBQUk9UT19UQ1AKICAg + ICAgICAgICAgICAgICkKICAgICAgICAgICAgZGVsIHNvY2tldAogICAgICAgICAgICByZXR1cm4g + aXBbMF1bNF1bMF0KICAgICAgICByZXR1cm4gaG9zdF9uYW1lCgogICAgZGVmIGdldF9hY3RpdmVf + YW5kX3N0YW5kYnlfbWdycyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLmRyeV9y + dW46CiAgICAgICAgICAgIHJldHVybiAiIiwgc2VsZi5kcnlfcnVuKCJjZXBoIHN0YXR1cyIpCiAg + ICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9wb3J0ID0gc2VsZi5fYXJnX3BhcnNlci5tb25pdG9y + aW5nX2VuZHBvaW50X3BvcnQKICAgICAgICBtb25pdG9yaW5nX2VuZHBvaW50X2lwX2xpc3QgPSBz + ZWxmLl9hcmdfcGFyc2VyLm1vbml0b3JpbmdfZW5kcG9pbnQKICAgICAgICBzdGFuZGJ5X21ncnMg + PSBbXQogICAgICAgIGlmIG5vdCBtb25pdG9yaW5nX2VuZHBvaW50X2lwX2xpc3Q6CiAgICAgICAg + ICAgIGNtZF9qc29uID0geyJwcmVmaXgiOiAic3RhdHVzIiwgImZvcm1hdCI6ICJqc29uIn0KICAg + ICAgICAgICAgcmV0X3ZhbCwganNvbl9vdXQsIGVycl9tc2cgPSBzZWxmLl9jb21tb25fY21kX2pz + b25fZ2VuKGNtZF9qc29uKQogICAgICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIHVuc3VjY2Vzc2Z1 + bCBhdHRlbXB0LAogICAgICAgICAgICBpZiByZXRfdmFsICE9IDAgb3IgbGVuKGpzb25fb3V0KSA9 + PSAwOgogICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAg + ICAgICAgICAgICAgICAgICAiJ21nciBzZXJ2aWNlcycgY29tbWFuZCBmYWlsZWQuXG4iCiAgICAg + ICAgICAgICAgICAgICAgZiJFcnJvcjoge2Vycl9tc2cgaWYgcmV0X3ZhbCAhPSAwIGVsc2Ugc2Vs + Zi5FTVBUWV9PVVRQVVRfTElTVH0iCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIG1vbml0 + b3JpbmdfZW5kcG9pbnQgPSAoCiAgICAgICAgICAgICAgICBqc29uX291dC5nZXQoIm1ncm1hcCIs + IHt9KS5nZXQoInNlcnZpY2VzIiwge30pLmdldCgicHJvbWV0aGV1cyIsICIiKQogICAgICAgICAg + ICApCiAgICAgICAgICAgIGlmIG5vdCBtb25pdG9yaW5nX2VuZHBvaW50OgogICAgICAgICAgICAg + ICAgcmV0dXJuICIiLCAiIgogICAgICAgICAgICAjIG5vdyBjaGVjayB0aGUgc3RhbmQtYnkgbWdy + LXMKICAgICAgICAgICAgc3RhbmRieV9hcnIgPSBqc29uX291dC5nZXQoIm1ncm1hcCIsIHt9KS5n + ZXQoInN0YW5kYnlzIiwgW10pCiAgICAgICAgICAgIGZvciBlYWNoX3N0YW5kYnkgaW4gc3RhbmRi + eV9hcnI6CiAgICAgICAgICAgICAgICBpZiAibmFtZSIgaW4gZWFjaF9zdGFuZGJ5LmtleXMoKToK + ICAgICAgICAgICAgICAgICAgICBzdGFuZGJ5X21ncnMuYXBwZW5kKGVhY2hfc3RhbmRieVsibmFt + ZSJdKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwYXJzZWRfZW5kcG9pbnQgPSB1 + cmxwYXJzZShtb25pdG9yaW5nX2VuZHBvaW50KQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJv + cjoKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAg + ICAgICAgICAgICAgICAgZiJpbnZhbGlkIGVuZHBvaW50OiB7bW9uaXRvcmluZ19lbmRwb2ludH0i + CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIG1vbml0b3JpbmdfZW5kcG9pbnRfaXBfbGlz + dCA9IHBhcnNlZF9lbmRwb2ludC5ob3N0bmFtZQogICAgICAgICAgICBpZiBub3QgbW9uaXRvcmlu + Z19lbmRwb2ludF9wb3J0OgogICAgICAgICAgICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9wb3J0 + ID0gc3RyKHBhcnNlZF9lbmRwb2ludC5wb3J0KQoKICAgICAgICAjIGlmIG1vbml0b3JpbmcgZW5k + cG9pbnQgcG9ydCBpcyBub3Qgc2V0LCBwdXQgYSBkZWZhdWx0IG1vbiBwb3J0CiAgICAgICAgaWYg + bm90IG1vbml0b3JpbmdfZW5kcG9pbnRfcG9ydDoKICAgICAgICAgICAgbW9uaXRvcmluZ19lbmRw + b2ludF9wb3J0ID0gc2VsZi5ERUZBVUxUX01PTklUT1JJTkdfRU5EUE9JTlRfUE9SVAoKICAgICAg + ICAjIHVzZXIgY291bGQgZ2l2ZSBjb21tYSBhbmQgc3BhY2Ugc2VwYXJhdGVkIGlucHV0cyAobGlr + ZSAtLW1vbml0b3JpbmctZW5kcG9pbnQ9IjxpcDE+LCA8aXAyPiIpCiAgICAgICAgbW9uaXRvcmlu + Z19lbmRwb2ludF9pcF9saXN0ID0gbW9uaXRvcmluZ19lbmRwb2ludF9pcF9saXN0LnJlcGxhY2Uo + IiwiLCAiICIpCiAgICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9pcF9saXN0X3NwbGl0ID0gbW9u + aXRvcmluZ19lbmRwb2ludF9pcF9saXN0LnNwbGl0KCkKICAgICAgICAjIGlmIG1vbml0b3Jpbmct + ZW5kcG9pbnQgY291bGQgbm90IGJlIGZvdW5kLCByYWlzZSBhbiBlcnJvcgogICAgICAgIGlmIGxl + bihtb25pdG9yaW5nX2VuZHBvaW50X2lwX2xpc3Rfc3BsaXQpID09IDA6CiAgICAgICAgICAgIHJh + aXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oIk5vICdtb25pdG9yaW5nLWVuZHBvaW50JyBm + b3VuZCIpCiAgICAgICAgIyBmaXJzdCBpcCBpcyB0cmVhdGVkIGFzIHRoZSBtYWluIG1vbml0b3Jp + bmctZW5kcG9pbnQKICAgICAgICBtb25pdG9yaW5nX2VuZHBvaW50X2lwID0gbW9uaXRvcmluZ19l + bmRwb2ludF9pcF9saXN0X3NwbGl0WzBdCiAgICAgICAgIyByZXN0IG9mIHRoZSBpcC1zIGFyZSBh + ZGRlZCB0byB0aGUgJ3N0YW5kYnlfbWdycycgbGlzdAogICAgICAgIHN0YW5kYnlfbWdycy5leHRl + bmQobW9uaXRvcmluZ19lbmRwb2ludF9pcF9saXN0X3NwbGl0WzE6XSkKICAgICAgICBmYWlsZWRf + aXAgPSBtb25pdG9yaW5nX2VuZHBvaW50X2lwCgogICAgICAgIG1vbml0b3JpbmdfZW5kcG9pbnQg + PSAiOiIuam9pbigKICAgICAgICAgICAgW21vbml0b3JpbmdfZW5kcG9pbnRfaXAsIG1vbml0b3Jp + bmdfZW5kcG9pbnRfcG9ydF0KICAgICAgICApCiAgICAgICAgaXBfdHlwZSA9IHNlbGYuX2ludmFs + aWRfZW5kcG9pbnQobW9uaXRvcmluZ19lbmRwb2ludCkKICAgICAgICB0cnk6CiAgICAgICAgICAg + IG1vbml0b3JpbmdfZW5kcG9pbnRfaXAgPSBzZWxmLl9jb252ZXJ0X2hvc3RuYW1lX3RvX2lwKAog + ICAgICAgICAgICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9pcCwgbW9uaXRvcmluZ19lbmRwb2lu + dF9wb3J0LCBpcF90eXBlCiAgICAgICAgICAgICkKICAgICAgICAgICAgIyBjb2xsZWN0IGFsbCB0 + aGUgJ3N0YW5kLWJ5JyBtZ3IgaXBzCiAgICAgICAgICAgIG1ncl9pcHMgPSBbXQogICAgICAgICAg + ICBmb3IgZWFjaF9zdGFuZGJ5X21nciBpbiBzdGFuZGJ5X21ncnM6CiAgICAgICAgICAgICAgICBm + YWlsZWRfaXAgPSBlYWNoX3N0YW5kYnlfbWdyCiAgICAgICAgICAgICAgICBtZ3JfaXBzLmFwcGVu + ZCgKICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb252ZXJ0X2hvc3RuYW1lX3RvX2lwKAogICAg + ICAgICAgICAgICAgICAgICAgICBlYWNoX3N0YW5kYnlfbWdyLCBtb25pdG9yaW5nX2VuZHBvaW50 + X3BvcnQsIGlwX3R5cGUKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAg + ICAgICAgZXhjZXB0OgogICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9u + KAogICAgICAgICAgICAgICAgZiJDb252ZXJzaW9uIG9mIGhvc3Q6IHtmYWlsZWRfaXB9IHRvIElQ + IGZhaWxlZC4gIgogICAgICAgICAgICAgICAgIlBsZWFzZSBlbnRlciB0aGUgSVAgYWRkcmVzc2Vz + IG9mIGFsbCB0aGUgY2VwaC1tZ3JzIHdpdGggdGhlICctLW1vbml0b3JpbmctZW5kcG9pbnQnIGZs + YWciCiAgICAgICAgICAgICkKCiAgICAgICAgXywgXywgZXJyID0gc2VsZi5lbmRwb2ludF9kaWFs + KG1vbml0b3JpbmdfZW5kcG9pbnQsIGlwX3R5cGUpCiAgICAgICAgaWYgZXJyID09ICItMSI6CiAg + ICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oZXJyKQogICAgICAgICMg + YWRkIHRoZSB2YWxpZGF0ZWQgYWN0aXZlIG1nciBJUCBpbnRvIHRoZSBmaXJzdCBpbmRleAogICAg + ICAgIG1ncl9pcHMuaW5zZXJ0KDAsIG1vbml0b3JpbmdfZW5kcG9pbnRfaXApCiAgICAgICAgYWxs + X21ncl9pcHNfc3RyID0gIiwiLmpvaW4obWdyX2lwcykKICAgICAgICByZXR1cm4gYWxsX21ncl9p + cHNfc3RyLCBtb25pdG9yaW5nX2VuZHBvaW50X3BvcnQKCiAgICBkZWYgY2hlY2tfdXNlcl9leGlz + dChzZWxmLCB1c2VyKToKICAgICAgICBjbWRfanNvbiA9IHsicHJlZml4IjogImF1dGggZ2V0Iiwg + ImVudGl0eSI6IGYie3VzZXJ9IiwgImZvcm1hdCI6ICJqc29uIn0KICAgICAgICByZXRfdmFsLCBq + c29uX291dCwgXyA9IHNlbGYuX2NvbW1vbl9jbWRfanNvbl9nZW4oY21kX2pzb24pCiAgICAgICAg + aWYgcmV0X3ZhbCAhPSAwIG9yIGxlbihqc29uX291dCkgPT0gMDoKICAgICAgICAgICAgcmV0dXJu + ICIiCiAgICAgICAgcmV0dXJuIHN0cihqc29uX291dFswXVsia2V5Il0pCgogICAgZGVmIGdldF9j + ZXBoZnNfcHJvdmlzaW9uZXJfY2Fwc19hbmRfZW50aXR5KHNlbGYpOgogICAgICAgIGVudGl0eSA9 + ICJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lciIKICAgICAgICBjYXBzID0gewogICAgICAg + ICAgICAibW9uIjogImFsbG93IHIsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwKICAg + ICAgICAgICAgIm1nciI6ICJhbGxvdyBydyIsCiAgICAgICAgICAgICJvc2QiOiAiYWxsb3cgcncg + dGFnIGNlcGhmcyBtZXRhZGF0YT0qIiwKICAgICAgICB9CiAgICAgICAgaWYgc2VsZi5fYXJnX3Bh + cnNlci5yZXN0cmljdGVkX2F1dGhfcGVybWlzc2lvbjoKICAgICAgICAgICAgazhzX2NsdXN0ZXJf + bmFtZSA9IHNlbGYuX2FyZ19wYXJzZXIuazhzX2NsdXN0ZXJfbmFtZQogICAgICAgICAgICBpZiBr + OHNfY2x1c3Rlcl9uYW1lID09ICIiOgogICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFp + bHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAiazhzX2NsdXN0ZXJfbmFtZSBub3Qg + Zm91bmQsIHBsZWFzZSBzZXQgdGhlICctLWs4cy1jbHVzdGVyLW5hbWUnIGZsYWciCiAgICAgICAg + ICAgICAgICApCiAgICAgICAgICAgIGNlcGhmc19maWxlc3lzdGVtID0gc2VsZi5fYXJnX3BhcnNl + ci5jZXBoZnNfZmlsZXN5c3RlbV9uYW1lCiAgICAgICAgICAgIGlmIGNlcGhmc19maWxlc3lzdGVt + ID09ICIiOgogICAgICAgICAgICAgICAgZW50aXR5ID0gZiJ7ZW50aXR5fS17azhzX2NsdXN0ZXJf + bmFtZX0iCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBlbnRpdHkgPSBmIntlbnRp + dHl9LXtrOHNfY2x1c3Rlcl9uYW1lfS17Y2VwaGZzX2ZpbGVzeXN0ZW19IgogICAgICAgICAgICAg + ICAgY2Fwc1sib3NkIl0gPSBmImFsbG93IHJ3IHRhZyBjZXBoZnMgbWV0YWRhdGE9e2NlcGhmc19m + aWxlc3lzdGVtfSIKCiAgICAgICAgcmV0dXJuIGNhcHMsIGVudGl0eQoKICAgIGRlZiBnZXRfY2Vw + aGZzX25vZGVfY2Fwc19hbmRfZW50aXR5KHNlbGYpOgogICAgICAgIGVudGl0eSA9ICJjbGllbnQu + Y3NpLWNlcGhmcy1ub2RlIgogICAgICAgIGNhcHMgPSB7CiAgICAgICAgICAgICJtb24iOiAiYWxs + b3cgciwgYWxsb3cgY29tbWFuZCAnb3NkIGJsb2NrbGlzdCciLAogICAgICAgICAgICAibWdyIjog + ImFsbG93IHJ3IiwKICAgICAgICAgICAgIm9zZCI6ICJhbGxvdyBydyB0YWcgY2VwaGZzICo9KiIs + CiAgICAgICAgICAgICJtZHMiOiAiYWxsb3cgcnciLAogICAgICAgIH0KICAgICAgICBpZiBzZWxm + Ll9hcmdfcGFyc2VyLnJlc3RyaWN0ZWRfYXV0aF9wZXJtaXNzaW9uOgogICAgICAgICAgICBrOHNf + Y2x1c3Rlcl9uYW1lID0gc2VsZi5fYXJnX3BhcnNlci5rOHNfY2x1c3Rlcl9uYW1lCiAgICAgICAg + ICAgIGlmIGs4c19jbHVzdGVyX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVj + dXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJrOHNfY2x1c3Rlcl9u + YW1lIG5vdCBmb3VuZCwgcGxlYXNlIHNldCB0aGUgJy0tazhzLWNsdXN0ZXItbmFtZScgZmxhZyIK + ICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgY2VwaGZzX2ZpbGVzeXN0ZW0gPSBzZWxmLl9h + cmdfcGFyc2VyLmNlcGhmc19maWxlc3lzdGVtX25hbWUKICAgICAgICAgICAgaWYgY2VwaGZzX2Zp + bGVzeXN0ZW0gPT0gIiI6CiAgICAgICAgICAgICAgICBlbnRpdHkgPSBmIntlbnRpdHl9LXtrOHNf + Y2x1c3Rlcl9uYW1lfSIKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGVudGl0eSA9 + IGYie2VudGl0eX0te2s4c19jbHVzdGVyX25hbWV9LXtjZXBoZnNfZmlsZXN5c3RlbX0iCiAgICAg + ICAgICAgICAgICBjYXBzWyJvc2QiXSA9IGYiYWxsb3cgcncgdGFnIGNlcGhmcyAqPXtjZXBoZnNf + ZmlsZXN5c3RlbX0iCgogICAgICAgIHJldHVybiBjYXBzLCBlbnRpdHkKCiAgICBkZWYgZ2V0X2Vu + dGl0eShzZWxmLCBlbnRpdHksIHJiZF9wb29sX25hbWUsIGFsaWFzX3JiZF9wb29sX25hbWUsIGs4 + c19jbHVzdGVyX25hbWUpOgogICAgICAgIGlmICgKICAgICAgICAgICAgcmJkX3Bvb2xfbmFtZS5j + b3VudCgiLiIpICE9IDAKICAgICAgICAgICAgb3IgcmJkX3Bvb2xfbmFtZS5jb3VudCgiXyIpICE9 + IDAKICAgICAgICAgICAgb3IgYWxpYXNfcmJkX3Bvb2xfbmFtZSAhPSAiIgogICAgICAgICAgICAj + IGNoZWNraW5nIGFsaWFzX3JiZF9wb29sX25hbWUgaXMgbm90IGVtcHR5IGFzIHRoZXJlIG1heWJl + IGEgc3BlY2lhbCBjaGFyYWN0ZXIgdXNlZCBvdGhlciB0aGFuIC4gb3IgXwogICAgICAgICk6CiAg + ICAgICAgICAgIGlmIGFsaWFzX3JiZF9wb29sX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICBy + YWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJwbGVh + c2Ugc2V0IHRoZSAnLS1hbGlhcy1yYmQtZGF0YS1wb29sLW5hbWUnIGZsYWcgYXMgdGhlIHJiZCBk + YXRhIHBvb2wgbmFtZSBjb250YWlucyAnLicgb3IgJ18nIgogICAgICAgICAgICAgICAgKQogICAg + ICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBhbGlhc19yYmRfcG9vbF9uYW1lLmNvdW50KCIu + IikgIT0gMAogICAgICAgICAgICAgICAgb3IgYWxpYXNfcmJkX3Bvb2xfbmFtZS5jb3VudCgiXyIp + ICE9IDAKICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1 + cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgIictLWFsaWFzLXJiZC1kYXRhLXBvb2wt + bmFtZScgZmxhZyB2YWx1ZSBzaG91bGQgbm90IGNvbnRhaW4gJy4nIG9yICdfJyIKICAgICAgICAg + ICAgICAgICkKICAgICAgICAgICAgZW50aXR5ID0gZiJ7ZW50aXR5fS17azhzX2NsdXN0ZXJfbmFt + ZX0te2FsaWFzX3JiZF9wb29sX25hbWV9IgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGVudGl0 + eSA9IGYie2VudGl0eX0te2s4c19jbHVzdGVyX25hbWV9LXtyYmRfcG9vbF9uYW1lfSIKCiAgICAg + ICAgcmV0dXJuIGVudGl0eQoKICAgIGRlZiBnZXRfcmJkX3Byb3Zpc2lvbmVyX2NhcHNfYW5kX2Vu + dGl0eShzZWxmKToKICAgICAgICBlbnRpdHkgPSAiY2xpZW50LmNzaS1yYmQtcHJvdmlzaW9uZXIi + CiAgICAgICAgY2FwcyA9IHsKICAgICAgICAgICAgIm1vbiI6ICJwcm9maWxlIHJiZCwgYWxsb3cg + Y29tbWFuZCAnb3NkIGJsb2NrbGlzdCciLAogICAgICAgICAgICAibWdyIjogImFsbG93IHJ3IiwK + ICAgICAgICAgICAgIm9zZCI6ICJwcm9maWxlIHJiZCIsCiAgICAgICAgfQogICAgICAgIGlmIHNl + bGYuX2FyZ19wYXJzZXIucmVzdHJpY3RlZF9hdXRoX3Blcm1pc3Npb246CiAgICAgICAgICAgIHJi + ZF9wb29sX25hbWUgPSBzZWxmLl9hcmdfcGFyc2VyLnJiZF9kYXRhX3Bvb2xfbmFtZQogICAgICAg + ICAgICBhbGlhc19yYmRfcG9vbF9uYW1lID0gc2VsZi5fYXJnX3BhcnNlci5hbGlhc19yYmRfZGF0 + YV9wb29sX25hbWUKICAgICAgICAgICAgazhzX2NsdXN0ZXJfbmFtZSA9IHNlbGYuX2FyZ19wYXJz + ZXIuazhzX2NsdXN0ZXJfbmFtZQogICAgICAgICAgICBpZiByYmRfcG9vbF9uYW1lID09ICIiOgog ICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAg ICAgICAgICAgICAibWFuZGF0b3J5IGZsYWcgbm90IGZvdW5kLCBwbGVhc2Ugc2V0IHRoZSAnLS1y YmQtZGF0YS1wb29sLW5hbWUnIGZsYWciCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGlm - IGNsdXN0ZXJfbmFtZSA9PSAiIjoKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1 - cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgIm1hbmRhdG9yeSBmbGFnIG5vdCBmb3Vu - ZCwgcGxlYXNlIHNldCB0aGUgJy0tY2x1c3Rlci1uYW1lJyBmbGFnIgogICAgICAgICAgICAgICAg - KQogICAgICAgICAgICBlbnRpdHkgPSBzZWxmLmdldF9lbnRpdHkoCiAgICAgICAgICAgICAgICBl - bnRpdHksIHJiZF9wb29sX25hbWUsIGFsaWFzX3JiZF9wb29sX25hbWUsIGNsdXN0ZXJfbmFtZQog - ICAgICAgICAgICApCiAgICAgICAgICAgIGNhcHNbIm9zZCJdID0gZiJwcm9maWxlIHJiZCBwb29s - PXtyYmRfcG9vbF9uYW1lfSIKCiAgICAgICAgcmV0dXJuIGNhcHMsIGVudGl0eQoKICAgIGRlZiBn - ZXRfY2Fwc19hbmRfZW50aXR5KHNlbGYsIHVzZXJfbmFtZSk6CiAgICAgICAgaWYgImNsaWVudC5j - c2ktY2VwaGZzLXByb3Zpc2lvbmVyIiBpbiB1c2VyX25hbWU6CiAgICAgICAgICAgIGlmICJjbGll - bnQuY3NpLWNlcGhmcy1wcm92aXNpb25lciIgIT0gdXNlcl9uYW1lOgogICAgICAgICAgICAgICAg - c2VsZi5fYXJnX3BhcnNlci5yZXN0cmljdGVkX2F1dGhfcGVybWlzc2lvbiA9IFRydWUKICAgICAg - ICAgICAgcmV0dXJuIHNlbGYuZ2V0X2NlcGhmc19wcm92aXNpb25lcl9jYXBzX2FuZF9lbnRpdHko - KQogICAgICAgIGlmICJjbGllbnQuY3NpLWNlcGhmcy1ub2RlIiBpbiB1c2VyX25hbWU6CiAgICAg - ICAgICAgIGlmICJjbGllbnQuY3NpLWNlcGhmcy1ub2RlIiAhPSB1c2VyX25hbWU6CiAgICAgICAg - ICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJlc3RyaWN0ZWRfYXV0aF9wZXJtaXNzaW9uID0gVHJ1 - ZQogICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfY2VwaGZzX25vZGVfY2Fwc19hbmRfZW50aXR5 - KCkKICAgICAgICBpZiAiY2xpZW50LmNzaS1yYmQtcHJvdmlzaW9uZXIiIGluIHVzZXJfbmFtZToK - ICAgICAgICAgICAgaWYgImNsaWVudC5jc2ktcmJkLXByb3Zpc2lvbmVyIiAhPSB1c2VyX25hbWU6 - CiAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJlc3RyaWN0ZWRfYXV0aF9wZXJtaXNz - aW9uID0gVHJ1ZQogICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfcmJkX3Byb3Zpc2lvbmVyX2Nh - cHNfYW5kX2VudGl0eSgpCiAgICAgICAgaWYgImNsaWVudC5jc2ktcmJkLW5vZGUiIGluIHVzZXJf - bmFtZToKICAgICAgICAgICAgaWYgImNsaWVudC5jc2ktcmJkLW5vZGUiICE9IHVzZXJfbmFtZToK - ICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmVzdHJpY3RlZF9hdXRoX3Blcm1pc3Np - b24gPSBUcnVlCiAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9yYmRfbm9kZV9jYXBzX2FuZF9l - bnRpdHkoKQoKICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAg - ICAgICBmIm5vIHVzZXIgZm91bmQgd2l0aCB1c2VyX25hbWU6IHt1c2VyX25hbWV9LCAiCiAgICAg - ICAgICAgICJnZXRfY2Fwc19hbmRfZW50aXR5IGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICkK - CiAgICBkZWYgY3JlYXRlX2NlcGhDU0lLZXlyaW5nX3VzZXIoc2VsZiwgdXNlcik6CiAgICAgICAg - IiIiCiAgICAgICAgY29tbWFuZDogY2VwaCBhdXRoIGdldC1vci1jcmVhdGUgY2xpZW50LmNzaS1j - ZXBoZnMtcHJvdmlzaW9uZXIgbW9uICdhbGxvdyByJyBtZ3IgJ2FsbG93IHJ3JyBvc2QgJ2FsbG93 - IHJ3IHRhZyBjZXBoZnMgbWV0YWRhdGE9KicKICAgICAgICAiIiIKICAgICAgICBjYXBzLCBlbnRp - dHkgPSBzZWxmLmdldF9jYXBzX2FuZF9lbnRpdHkodXNlcikKICAgICAgICBjbWRfanNvbiA9IHsK - ICAgICAgICAgICAgInByZWZpeCI6ICJhdXRoIGdldC1vci1jcmVhdGUiLAogICAgICAgICAgICAi - ZW50aXR5IjogZW50aXR5LAogICAgICAgICAgICAiY2FwcyI6IFtjYXAgZm9yIGNhcF9saXN0IGlu - IGxpc3QoY2Fwcy5pdGVtcygpKSBmb3IgY2FwIGluIGNhcF9saXN0XSwKICAgICAgICAgICAgImZv - cm1hdCI6ICJqc29uIiwKICAgICAgICB9CgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5 - X3J1bjoKICAgICAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgICAgIHNlbGYuZHJ5X3J1bigK - ICAgICAgICAgICAgICAgICAgICAiY2VwaCAiCiAgICAgICAgICAgICAgICAgICAgKyBjbWRfanNv - blsicHJlZml4Il0KICAgICAgICAgICAgICAgICAgICArICIgIgogICAgICAgICAgICAgICAgICAg - ICsgY21kX2pzb25bImVudGl0eSJdCiAgICAgICAgICAgICAgICAgICAgKyAiICIKICAgICAgICAg - ICAgICAgICAgICArICIgIi5qb2luKGNtZF9qc29uWyJjYXBzIl0pCiAgICAgICAgICAgICAgICAp - LAogICAgICAgICAgICAgICAgIiIsCiAgICAgICAgICAgICkKICAgICAgICAjIGNoZWNrIGlmIHVz - ZXIgYWxyZWFkeSBleGlzdAogICAgICAgIHVzZXJfa2V5ID0gc2VsZi5jaGVja191c2VyX2V4aXN0 - KGVudGl0eSkKICAgICAgICBpZiB1c2VyX2tleSAhPSAiIjoKICAgICAgICAgICAgcmV0dXJuIHVz - ZXJfa2V5LCBmIntlbnRpdHkuc3BsaXQoJy4nLCAxKVsxXX0iCiAgICAgICAgICAgICMgZW50aXR5 - LnNwbGl0KCcuJywxKVsxXSB0byByZW5hbWUgZW50aXR5KGNsaWVudC5jc2ktcmJkLW5vZGUpIGFz - IGNzaS1yYmQtbm9kZQoKICAgICAgICByZXRfdmFsLCBqc29uX291dCwgZXJyX21zZyA9IHNlbGYu - X2NvbW1vbl9jbWRfanNvbl9nZW4oY21kX2pzb24pCiAgICAgICAgIyBpZiB0aGVyZSBpcyBhbiB1 - bnN1Y2Nlc3NmdWwgYXR0ZW1wdCwKICAgICAgICBpZiByZXRfdmFsICE9IDAgb3IgbGVuKGpzb25f - b3V0KSA9PSAwOgogICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAog - ICAgICAgICAgICAgICAgZiInYXV0aCBnZXQtb3ItY3JlYXRlIHt1c2VyfScgY29tbWFuZCBmYWls - ZWQuXG4iCiAgICAgICAgICAgICAgICBmIkVycm9yOiB7ZXJyX21zZyBpZiByZXRfdmFsICE9IDAg - ZWxzZSBzZWxmLkVNUFRZX09VVFBVVF9MSVNUfSIKICAgICAgICAgICAgKQogICAgICAgIHJldHVy - biBzdHIoanNvbl9vdXRbMF1bImtleSJdKSwgZiJ7ZW50aXR5LnNwbGl0KCcuJywgMSlbMV19Igog - ICAgICAgICMgZW50aXR5LnNwbGl0KCcuJywxKVsxXSB0byByZW5hbWUgZW50aXR5KGNsaWVudC5j - c2ktcmJkLW5vZGUpIGFzIGNzaS1yYmQtbm9kZQoKICAgIGRlZiBnZXRfY2VwaGZzX2RhdGFfcG9v - bF9kZXRhaWxzKHNlbGYpOgogICAgICAgIGNtZF9qc29uID0geyJwcmVmaXgiOiAiZnMgbHMiLCAi - Zm9ybWF0IjogImpzb24ifQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5X3J1bjoKICAg - ICAgICAgICAgcmV0dXJuIHNlbGYuZHJ5X3J1bigiY2VwaCAiICsgY21kX2pzb25bInByZWZpeCJd - KQogICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2VsZi5fY29tbW9uX2NtZF9q - c29uX2dlbihjbWRfanNvbikKICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIHVuc3VjY2Vzc2Z1bCBh - dHRlbXB0LCByZXBvcnQgYW4gZXJyb3IKICAgICAgICBpZiByZXRfdmFsICE9IDA6CiAgICAgICAg - ICAgICMgaWYgZnMgYW5kIGRhdGFfcG9vbCBhcmd1bWVudHMgYXJlIG5vdCBzZXQsIHNpbGVudGx5 - IHJldHVybgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2Vy - LmNlcGhmc19maWxlc3lzdGVtX25hbWUgPT0gIiIKICAgICAgICAgICAgICAgIGFuZCBzZWxmLl9h - cmdfcGFyc2VyLmNlcGhmc19kYXRhX3Bvb2xfbmFtZSA9PSAiIgogICAgICAgICAgICApOgogICAg - ICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICMgaWYgdXNlciBoYXMgcHJvdmlkZWQgYW55 - IG9mIHRoZQogICAgICAgICAgICAjICctLWNlcGhmcy1maWxlc3lzdGVtLW5hbWUnIG9yICctLWNl - cGhmcy1kYXRhLXBvb2wtbmFtZScgYXJndW1lbnRzLAogICAgICAgICAgICAjIHJhaXNlIGFuIGV4 - Y2VwdGlvbiBhcyB3ZSBhcmUgdW5hYmxlIHRvIHZlcmlmeSB0aGUgYXJncwogICAgICAgICAgICBy - YWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgZiInZnMgbHMn - IGNlcGggY2FsbCBmYWlsZWQgd2l0aCBlcnJvcjoge2Vycl9tc2d9IgogICAgICAgICAgICApCgog - ICAgICAgIG1hdGNoaW5nX2pzb25fb3V0ID0ge30KICAgICAgICAjIGlmICctLWNlcGhmcy1maWxl - c3lzdGVtLW5hbWUnIGFyZ3VtZW50IGlzIHByb3ZpZGVkLAogICAgICAgICMgY2hlY2sgd2hldGhl - ciB0aGUgcHJvdmlkZWQgZmlsZXN5c3RlbS1uYW1lIGV4aXN0cyBvciBub3QKICAgICAgICBpZiBz - ZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19maWxlc3lzdGVtX25hbWU6CiAgICAgICAgICAgICMgZ2V0 - IHRoZSBtYXRjaGluZyBsaXN0CiAgICAgICAgICAgIG1hdGNoaW5nX2pzb25fb3V0X2xpc3QgPSBb - CiAgICAgICAgICAgICAgICBtYXRjaGVkCiAgICAgICAgICAgICAgICBmb3IgbWF0Y2hlZCBpbiBq - c29uX291dAogICAgICAgICAgICAgICAgaWYgc3RyKG1hdGNoZWRbIm5hbWUiXSkgPT0gc2VsZi5f - YXJnX3BhcnNlci5jZXBoZnNfZmlsZXN5c3RlbV9uYW1lCiAgICAgICAgICAgIF0KICAgICAgICAg - ICAgIyB1bmFibGUgdG8gZmluZCBhIG1hdGNoaW5nIGZzLW5hbWUsIHJhaXNlIGFuIGVycm9yCiAg - ICAgICAgICAgIGlmIGxlbihtYXRjaGluZ19qc29uX291dF9saXN0KSA9PSAwOgogICAgICAgICAg - ICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAg - ICBmIkZpbGVzeXN0ZW0gcHJvdmlkZWQsICd7c2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZmlsZXN5 - c3RlbV9uYW1lfScsICIKICAgICAgICAgICAgICAgICAgICBmImlzIG5vdCBmb3VuZCBpbiB0aGUg - ZnMtbGlzdDoge1tzdHIoeFsnbmFtZSddKSBmb3IgeCBpbiBqc29uX291dF19IgogICAgICAgICAg - ICAgICAgKQogICAgICAgICAgICBtYXRjaGluZ19qc29uX291dCA9IG1hdGNoaW5nX2pzb25fb3V0 - X2xpc3RbMF0KICAgICAgICAjIGlmIGNlcGhmcyBmaWxlc3lzdGVtIG5hbWUgaXMgbm90IHByb3Zp - ZGVkLAogICAgICAgICMgdHJ5IHRvIGdldCBhIGRlZmF1bHQgZnMgbmFtZSBieSBkb2luZyB0aGUg - Zm9sbG93aW5nCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBhLiBjaGVjayBpZiB0aGVyZSBp - cyBvbmx5IG9uZSBmaWxlc3lzdGVtIGlzIHByZXNlbnQKICAgICAgICAgICAgaWYgbGVuKGpzb25f - b3V0KSA9PSAxOgogICAgICAgICAgICAgICAgbWF0Y2hpbmdfanNvbl9vdXQgPSBqc29uX291dFsw - XQogICAgICAgICAgICAjIGIuIG9yIGVsc2UsIGNoZWNrIGlmIGRhdGFfcG9vbCBuYW1lIGlzIHBy - b3ZpZGVkCiAgICAgICAgICAgIGVsaWYgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9wb29s - X25hbWU6CiAgICAgICAgICAgICAgICAjIGFuZCBpZiBwcmVzZW50LCBjaGVjayB3aGV0aGVyIHRo - ZXJlIGV4aXN0cyBhIGZzIHdoaWNoIGhhcyB0aGUgZGF0YV9wb29sCiAgICAgICAgICAgICAgICBm - b3IgZWFjaEogaW4ganNvbl9vdXQ6CiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fYXJnX3Bh - cnNlci5jZXBoZnNfZGF0YV9wb29sX25hbWUgaW4gZWFjaEpbImRhdGFfcG9vbHMiXToKICAgICAg - ICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdfanNvbl9vdXQgPSBlYWNoSgogICAgICAgICAgICAg - ICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIyBpZiB0aGVyZSBpcyBubyBtYXRjaGlu - ZyBmcyBleGlzdHMsIHRoYXQgbWVhbnMgcHJvdmlkZWQgZGF0YV9wb29sIG5hbWUgaXMgaW52YWxp - ZAogICAgICAgICAgICAgICAgaWYgbm90IG1hdGNoaW5nX2pzb25fb3V0OgogICAgICAgICAgICAg - ICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAg - ICAgICAgIGYiUHJvdmlkZWQgZGF0YV9wb29sIG5hbWUsIHtzZWxmLl9hcmdfcGFyc2VyLmNlcGhm - c19kYXRhX3Bvb2xfbmFtZX0sIgogICAgICAgICAgICAgICAgICAgICAgICAiIGRvZXMgbm90IGV4 - aXN0cyIKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICMgYy4gaWYgbm90aGluZyBp - cyBzZXQgYW5kIGNvdWxkbid0IGZpbmQgYSBkZWZhdWx0LAogICAgICAgICAgICBlbHNlOgogICAg - ICAgICAgICAgICAgIyBqdXN0IHJldHVybiBzaWxlbnRseQogICAgICAgICAgICAgICAgcmV0dXJu - CgogICAgICAgIGlmIG1hdGNoaW5nX2pzb25fb3V0OgogICAgICAgICAgICBzZWxmLl9hcmdfcGFy - c2VyLmNlcGhmc19maWxlc3lzdGVtX25hbWUgPSBzdHIobWF0Y2hpbmdfanNvbl9vdXRbIm5hbWUi - XSkKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfbWV0YWRhdGFfcG9vbF9uYW1l - ID0gc3RyKAogICAgICAgICAgICAgICAgbWF0Y2hpbmdfanNvbl9vdXRbIm1ldGFkYXRhX3Bvb2wi - XQogICAgICAgICAgICApCgogICAgICAgIGlmIGlzaW5zdGFuY2UobWF0Y2hpbmdfanNvbl9vdXRb - ImRhdGFfcG9vbHMiXSwgbGlzdCk6CiAgICAgICAgICAgICMgaWYgdGhlIHVzZXIgaGFzIGFscmVh - ZHkgcHJvdmlkZWQgZGF0YS1wb29sLW5hbWUsCiAgICAgICAgICAgICMgdGhyb3VnaCAtLWNlcGhm - cy1kYXRhLXBvb2wtbmFtZQogICAgICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19k - YXRhX3Bvb2xfbmFtZToKICAgICAgICAgICAgICAgICMgaWYgdGhlIHByb3ZpZGVkIG5hbWUgaXMg - bm90IG1hdGNoaW5nIHdpdGggdGhlIG9uZSBpbiB0aGUgbGlzdAogICAgICAgICAgICAgICAgaWYg - KAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2RhdGFfcG9vbF9u - YW1lCiAgICAgICAgICAgICAgICAgICAgbm90IGluIG1hdGNoaW5nX2pzb25fb3V0WyJkYXRhX3Bv - b2xzIl0KICAgICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0 - aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgZiJQcm92aWRlZCBk - YXRhLXBvb2wtbmFtZTogJ3tzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19kYXRhX3Bvb2xfbmFtZX0n - LCAiCiAgICAgICAgICAgICAgICAgICAgICAgICJkb2Vzbid0IG1hdGNoIGZyb20gdGhlIGRhdGEt - cG9vbHMgbGlzdDogIgogICAgICAgICAgICAgICAgICAgICAgICBmIntbc3RyKHgpIGZvciB4IGlu - IG1hdGNoaW5nX2pzb25fb3V0WydkYXRhX3Bvb2xzJ11dfSIKICAgICAgICAgICAgICAgICAgICAp - CiAgICAgICAgICAgICMgaWYgZGF0YV9wb29sIG5hbWUgaXMgbm90IHByb3ZpZGVkLAogICAgICAg - ICAgICAjIHRoZW4gdHJ5IHRvIGZpbmQgYSBkZWZhdWx0IGRhdGEgcG9vbCBuYW1lCiAgICAgICAg - ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIGlmIG5vIGRhdGFfcG9vbHMgZXhpc3QsIHNpbGVu - dGx5IHJldHVybgogICAgICAgICAgICAgICAgaWYgbGVuKG1hdGNoaW5nX2pzb25fb3V0WyJkYXRh - X3Bvb2xzIl0pID09IDA6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAg - ICBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19kYXRhX3Bvb2xfbmFtZSA9IHN0cigKICAgICAgICAg - ICAgICAgICAgICBtYXRjaGluZ19qc29uX291dFsiZGF0YV9wb29scyJdWzBdCiAgICAgICAgICAg - ICAgICApCiAgICAgICAgICAgICMgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgJ2RhdGFfcG9v - bHMnIGV4aXN0LAogICAgICAgICAgICAjIHRoZW4gd2FybiB0aGUgdXNlciB0aGF0IHdlIGFyZSB1 - c2luZyB0aGUgc2VsZWN0ZWQgbmFtZQogICAgICAgICAgICBpZiBsZW4obWF0Y2hpbmdfanNvbl9v - dXRbImRhdGFfcG9vbHMiXSkgPiAxOgogICAgICAgICAgICAgICAgcHJpbnQoCiAgICAgICAgICAg - ICAgICAgICAgIldBUk5JTkc6IE11bHRpcGxlIGRhdGEgcG9vbHMgZGV0ZWN0ZWQ6ICIKICAgICAg - ICAgICAgICAgICAgICBmIntbc3RyKHgpIGZvciB4IGluIG1hdGNoaW5nX2pzb25fb3V0WydkYXRh - X3Bvb2xzJ11dfVxuIgogICAgICAgICAgICAgICAgICAgIGYiVXNpbmcgdGhlIGRhdGEtcG9vbDog - J3tzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19kYXRhX3Bvb2xfbmFtZX0nXG4iCiAgICAgICAgICAg - ICAgICApCgogICAgZGVmIGNyZWF0ZV9jaGVja2VyS2V5KHNlbGYpOgogICAgICAgIGNtZF9qc29u - ID0gewogICAgICAgICAgICAicHJlZml4IjogImF1dGggZ2V0LW9yLWNyZWF0ZSIsCiAgICAgICAg - ICAgICJlbnRpdHkiOiBzZWxmLnJ1bl9hc191c2VyLAogICAgICAgICAgICAiY2FwcyI6IFsKICAg - ICAgICAgICAgICAgICJtb24iLAogICAgICAgICAgICAgICAgc2VsZi5NSU5fVVNFUl9DQVBfUEVS - TUlTU0lPTlNbIm1vbiJdLAogICAgICAgICAgICAgICAgIm1nciIsCiAgICAgICAgICAgICAgICBz - ZWxmLk1JTl9VU0VSX0NBUF9QRVJNSVNTSU9OU1sibWdyIl0sCiAgICAgICAgICAgICAgICAib3Nk - IiwKICAgICAgICAgICAgICAgIHNlbGYuTUlOX1VTRVJfQ0FQX1BFUk1JU1NJT05TWyJvc2QiXS5m - b3JtYXQoCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcG9vbF9wcmVm - aXgKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJmb3JtYXQi - OiAianNvbiIsCiAgICAgICAgfQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5X3J1bjoK - ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZHJ5X3J1bigKICAgICAgICAgICAgICAgICJjZXBoICIK - ICAgICAgICAgICAgICAgICsgY21kX2pzb25bInByZWZpeCJdCiAgICAgICAgICAgICAgICArICIg - IgogICAgICAgICAgICAgICAgKyBjbWRfanNvblsiZW50aXR5Il0KICAgICAgICAgICAgICAgICsg - IiAiCiAgICAgICAgICAgICAgICArICIgIi5qb2luKGNtZF9qc29uWyJjYXBzIl0pCiAgICAgICAg - ICAgICkKICAgICAgICByZXRfdmFsLCBqc29uX291dCwgZXJyX21zZyA9IHNlbGYuX2NvbW1vbl9j - bWRfanNvbl9nZW4oY21kX2pzb24pCiAgICAgICAgIyBpZiB0aGVyZSBpcyBhbiB1bnN1Y2Nlc3Nm - dWwgYXR0ZW1wdCwKICAgICAgICBpZiByZXRfdmFsICE9IDAgb3IgbGVuKGpzb25fb3V0KSA9PSAw - OgogICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAg - ICAgICAgZiInYXV0aCBnZXQtb3ItY3JlYXRlIHtzZWxmLnJ1bl9hc191c2VyfScgY29tbWFuZCBm - YWlsZWRcbiIKICAgICAgICAgICAgICAgIGYiRXJyb3I6IHtlcnJfbXNnIGlmIHJldF92YWwgIT0g - MCBlbHNlIHNlbGYuRU1QVFlfT1VUUFVUX0xJU1R9IgogICAgICAgICAgICApCiAgICAgICAgcmV0 - dXJuIHN0cihqc29uX291dFswXVsia2V5Il0pCgogICAgZGVmIGdldF9jZXBoX2Rhc2hib2FyZF9s - aW5rKHNlbGYpOgogICAgICAgIGNtZF9qc29uID0geyJwcmVmaXgiOiAibWdyIHNlcnZpY2VzIiwg - ImZvcm1hdCI6ICJqc29uIn0KICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLmRyeV9ydW46CiAg - ICAgICAgICAgIHJldHVybiBzZWxmLmRyeV9ydW4oImNlcGggIiArIGNtZF9qc29uWyJwcmVmaXgi - XSkKICAgICAgICByZXRfdmFsLCBqc29uX291dCwgXyA9IHNlbGYuX2NvbW1vbl9jbWRfanNvbl9n - ZW4oY21kX2pzb24pCiAgICAgICAgIyBpZiB0aGVyZSBpcyBhbiB1bnN1Y2Nlc3NmdWwgYXR0ZW1w - dCwKICAgICAgICBpZiByZXRfdmFsICE9IDAgb3IgbGVuKGpzb25fb3V0KSA9PSAwOgogICAgICAg - ICAgICByZXR1cm4gTm9uZQogICAgICAgIGlmICJkYXNoYm9hcmQiIG5vdCBpbiBqc29uX291dDoK - ICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4ganNvbl9vdXRbImRhc2hib2Fy - ZCJdCgogICAgZGVmIGNyZWF0ZV9yZ3dfYWRtaW5fb3BzX3VzZXIoc2VsZik6CiAgICAgICAgY21k - ID0gWwogICAgICAgICAgICAicmFkb3Nndy1hZG1pbiIsCiAgICAgICAgICAgICJ1c2VyIiwKICAg - ICAgICAgICAgImNyZWF0ZSIsCiAgICAgICAgICAgICItLXVpZCIsCiAgICAgICAgICAgIHNlbGYu - RVhURVJOQUxfUkdXX0FETUlOX09QU19VU0VSX05BTUUsCiAgICAgICAgICAgICItLWRpc3BsYXkt - bmFtZSIsCiAgICAgICAgICAgICJSb29rIFJHVyBBZG1pbiBPcHMgdXNlciIsCiAgICAgICAgICAg - ICItLWNhcHMiLAogICAgICAgICAgICAiYnVja2V0cz0qO3VzZXJzPSo7dXNhZ2U9cmVhZDttZXRh - ZGF0YT1yZWFkO3pvbmU9cmVhZCIsCiAgICAgICAgICAgICItLXJndy1yZWFsbSIsCiAgICAgICAg - ICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3JlYWxtX25hbWUsCiAgICAgICAgICAgICItLXJndy16 - b25lZ3JvdXAiLAogICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJnd196b25lZ3JvdXBfbmFt - ZSwKICAgICAgICAgICAgIi0tcmd3LXpvbmUiLAogICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2Vy - LnJnd196b25lX25hbWUsCiAgICAgICAgXQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5 - X3J1bjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZHJ5X3J1bigiY2VwaCAiICsgIiAiLmpvaW4o - Y21kKSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tf - b3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICBleGNlcHQgc3VicHJv - Y2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXhlY0VycjoKICAgICAgICAgICAgIyBpZiB0aGUg - dXNlciBhbHJlYWR5IGV4aXN0cywgd2UganVzdCBxdWVyeSBpdAogICAgICAgICAgICBpZiBleGVj - RXJyLnJldHVybmNvZGUgPT0gZXJybm8uRUVYSVNUOgogICAgICAgICAgICAgICAgY21kID0gWwog - ICAgICAgICAgICAgICAgICAgICJyYWRvc2d3LWFkbWluIiwKICAgICAgICAgICAgICAgICAgICAi - dXNlciIsCiAgICAgICAgICAgICAgICAgICAgImluZm8iLAogICAgICAgICAgICAgICAgICAgICIt - LXVpZCIsCiAgICAgICAgICAgICAgICAgICAgc2VsZi5FWFRFUk5BTF9SR1dfQURNSU5fT1BTX1VT - RVJfTkFNRSwKICAgICAgICAgICAgICAgICAgICAiLS1yZ3ctcmVhbG0iLAogICAgICAgICAgICAg - ICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3JlYWxtX25hbWUsCiAgICAgICAgICAgICAgICAg - ICAgIi0tcmd3LXpvbmVncm91cCIsCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNl - ci5yZ3dfem9uZWdyb3VwX25hbWUsCiAgICAgICAgICAgICAgICAgICAgIi0tcmd3LXpvbmUiLAog - ICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pvbmVfbmFtZSwKICAgICAg - ICAgICAgICAgIF0KICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBvdXRw - dXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUp - CiAgICAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMg - ZXhlY0VycjoKICAgICAgICAgICAgICAgICAgICBlcnJfbXNnID0gKAogICAgICAgICAgICAgICAg - ICAgICAgICBmImZhaWxlZCB0byBleGVjdXRlIGNvbW1hbmQge2NtZH0uIE91dHB1dDoge2V4ZWNF - cnIub3V0cHV0fS4gIgogICAgICAgICAgICAgICAgICAgICAgICBmIkNvZGU6IHtleGVjRXJyLnJl - dHVybmNvZGV9LiBFcnJvcjoge2V4ZWNFcnIuc3RkZXJyfSIKICAgICAgICAgICAgICAgICAgICAp - CiAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShlcnJfbXNnKQogICAgICAgICAg - ICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBGYWxzZSwgIi0xIgogICAgICAgICAgICBlbHNl - OgogICAgICAgICAgICAgICAgZXJyX21zZyA9ICgKICAgICAgICAgICAgICAgICAgICBmImZhaWxl - ZCB0byBleGVjdXRlIGNvbW1hbmQge2NtZH0uIE91dHB1dDoge2V4ZWNFcnIub3V0cHV0fS4gIgog - ICAgICAgICAgICAgICAgICAgIGYiQ29kZToge2V4ZWNFcnIucmV0dXJuY29kZX0uIEVycm9yOiB7 - ZXhlY0Vyci5zdGRlcnJ9IgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgc3lzLnN0 - ZGVyci53cml0ZShlcnJfbXNnKQogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIEZh - bHNlLCAiLTEiCgogICAgICAgICMgaWYgaXQgaXMgcHl0aG9uMiwgZG9uJ3QgY2hlY2sgZm9yIGNl - cGggdmVyc2lvbiBmb3IgYWRkaW5nIGBpbmZvPXJlYWRgIGNhcChyZ3dfdmFsaWRhdGlvbikKICAg - ICAgICBpZiBzeXMudmVyc2lvbl9pbmZvLm1ham9yIDwgMzoKICAgICAgICAgICAganNvbm91dHB1 - dCA9IGpzb24ubG9hZHMob3V0cHV0KQogICAgICAgICAgICByZXR1cm4gKAogICAgICAgICAgICAg - ICAganNvbm91dHB1dFsia2V5cyJdWzBdWyJhY2Nlc3Nfa2V5Il0sCiAgICAgICAgICAgICAgICBq - c29ub3V0cHV0WyJrZXlzIl1bMF1bInNlY3JldF9rZXkiXSwKICAgICAgICAgICAgICAgIEZhbHNl - LAogICAgICAgICAgICAgICAgIiIsCiAgICAgICAgICAgICkKCiAgICAgICAgIyBzZXBhcmF0ZWx5 - IGFkZCBpbmZvPXJlYWQgY2FwcyBmb3Igcmd3LWVuZHBvaW50IGlwIHZhbGlkYXRpb24KICAgICAg - ICBpbmZvX2NhcF9zdXBwb3J0ZWQgPSBUcnVlCiAgICAgICAgY21kID0gWwogICAgICAgICAgICAi - cmFkb3Nndy1hZG1pbiIsCiAgICAgICAgICAgICJjYXBzIiwKICAgICAgICAgICAgImFkZCIsCiAg - ICAgICAgICAgICItLXVpZCIsCiAgICAgICAgICAgIHNlbGYuRVhURVJOQUxfUkdXX0FETUlOX09Q - U19VU0VSX05BTUUsCiAgICAgICAgICAgICItLWNhcHMiLAogICAgICAgICAgICAiaW5mbz1yZWFk - IiwKICAgICAgICAgICAgIi0tcmd3LXJlYWxtIiwKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNl - ci5yZ3dfcmVhbG1fbmFtZSwKICAgICAgICAgICAgIi0tcmd3LXpvbmVncm91cCIsCiAgICAgICAg - ICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pvbmVncm91cF9uYW1lLAogICAgICAgICAgICAiLS1y - Z3ctem9uZSIsCiAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pvbmVfbmFtZSwKICAg - ICAgICBdCiAgICAgICAgdHJ5OgogICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNr - X291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgZXhjZXB0IHN1YnBy - b2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGV4ZWNFcnI6CiAgICAgICAgICAgICMgaWYgdGhl - IGNlcGggdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGZvciBhZGRpbmcgYGluZm89cmVhZGAgY2FwKHJn - d192YWxpZGF0aW9uKQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAiY291bGQgbm90 - IGFkZCBjYXBzOiB1bmFibGUgdG8gYWRkIGNhcHM6IGluZm89cmVhZFxuIgogICAgICAgICAgICAg - ICAgaW4gZXhlY0Vyci5zdGRlcnIuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICAgICBhbmQg - ZXhlY0Vyci5yZXR1cm5jb2RlID09IDI0NAogICAgICAgICAgICApOgogICAgICAgICAgICAgICAg - aW5mb19jYXBfc3VwcG9ydGVkID0gRmFsc2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAg - ICAgIGVycl9tc2cgPSAoCiAgICAgICAgICAgICAgICAgICAgZiJmYWlsZWQgdG8gZXhlY3V0ZSBj - b21tYW5kIHtjbWR9LiBPdXRwdXQ6IHtleGVjRXJyLm91dHB1dH0uICIKICAgICAgICAgICAgICAg - ICAgICBmIkNvZGU6IHtleGVjRXJyLnJldHVybmNvZGV9LiBFcnJvcjoge2V4ZWNFcnIuc3RkZXJy - fSIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZXJy - X21zZykKICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBGYWxzZSwgIi0xIgoKICAg - ICAgICBqc29ub3V0cHV0ID0ganNvbi5sb2FkcyhvdXRwdXQpCiAgICAgICAgcmV0dXJuICgKICAg - ICAgICAgICAganNvbm91dHB1dFsia2V5cyJdWzBdWyJhY2Nlc3Nfa2V5Il0sCiAgICAgICAgICAg - IGpzb25vdXRwdXRbImtleXMiXVswXVsic2VjcmV0X2tleSJdLAogICAgICAgICAgICBpbmZvX2Nh - cF9zdXBwb3J0ZWQsCiAgICAgICAgICAgICIiLAogICAgICAgICkKCiAgICBkZWYgdmFsaWRhdGVf - cmJkX3Bvb2woc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuY2x1c3Rlci5wb29sX2V4aXN0cyhz - ZWxmLl9hcmdfcGFyc2VyLnJiZF9kYXRhX3Bvb2xfbmFtZSk6CiAgICAgICAgICAgIHJhaXNlIEV4 - ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICBmIlRoZSBwcm92aWRlZCBw - b29sLCAne3NlbGYuX2FyZ19wYXJzZXIucmJkX2RhdGFfcG9vbF9uYW1lfScsIGRvZXMgbm90IGV4 - aXN0IgogICAgICAgICAgICApCgogICAgZGVmIHZhbGlkYXRlX3JhZG9zX25hbWVzcGFjZShzZWxm - KToKICAgICAgICByYmRfcG9vbF9uYW1lID0gc2VsZi5fYXJnX3BhcnNlci5yYmRfZGF0YV9wb29s - X25hbWUKICAgICAgICByYWRvc19uYW1lc3BhY2UgPSBzZWxmLl9hcmdfcGFyc2VyLnJhZG9zX25h - bWVzcGFjZQogICAgICAgIGlmIHJhZG9zX25hbWVzcGFjZSA9PSAiIjoKICAgICAgICAgICAgcmV0 - dXJuCiAgICAgICAgcmJkX2luc3QgPSByYmQuUkJEKCkKICAgICAgICBpb2N0eCA9IHNlbGYuY2x1 - c3Rlci5vcGVuX2lvY3R4KHJiZF9wb29sX25hbWUpCiAgICAgICAgaWYgcmJkX2luc3QubmFtZXNw - YWNlX2V4aXN0cyhpb2N0eCwgcmFkb3NfbmFtZXNwYWNlKSBpcyBGYWxzZToKICAgICAgICAgICAg - cmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgIGYiVGhlIHBy - b3ZpZGVkIHJhZG9zIE5hbWVzcGFjZSwgJ3tyYWRvc19uYW1lc3BhY2V9JywgIgogICAgICAgICAg - ICAgICAgZiJpcyBub3QgZm91bmQgaW4gdGhlIHBvb2wgJ3tyYmRfcG9vbF9uYW1lfSciCiAgICAg - ICAgICAgICkKCiAgICBkZWYgZ2V0X29yX2NyZWF0ZV9zdWJ2b2x1bWVfZ3JvdXAoc2VsZiwgc3Vi - dm9sdW1lX2dyb3VwLCBjZXBoZnNfZmlsZXN5c3RlbV9uYW1lKToKICAgICAgICBjbWQgPSBbCiAg - ICAgICAgICAgICJjZXBoIiwKICAgICAgICAgICAgImZzIiwKICAgICAgICAgICAgInN1YnZvbHVt - ZWdyb3VwIiwKICAgICAgICAgICAgImdldHBhdGgiLAogICAgICAgICAgICBjZXBoZnNfZmlsZXN5 - c3RlbV9uYW1lLAogICAgICAgICAgICBzdWJ2b2x1bWVfZ3JvdXAsCiAgICAgICAgXQogICAgICAg - IHRyeToKICAgICAgICAgICAgXyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJy - PXN1YnByb2Nlc3MuUElQRSkKICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNz - RXJyb3I6CiAgICAgICAgICAgIGNtZCA9IFsKICAgICAgICAgICAgICAgICJjZXBoIiwKICAgICAg - ICAgICAgICAgICJmcyIsCiAgICAgICAgICAgICAgICAic3Vidm9sdW1lZ3JvdXAiLAogICAgICAg - ICAgICAgICAgImNyZWF0ZSIsCiAgICAgICAgICAgICAgICBjZXBoZnNfZmlsZXN5c3RlbV9uYW1l - LAogICAgICAgICAgICAgICAgc3Vidm9sdW1lX2dyb3VwLAogICAgICAgICAgICBdCiAgICAgICAg - ICAgIHRyeToKICAgICAgICAgICAgICAgIF8gPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQs - IHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNh - bGxlZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVF - eGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgZiJzdWJ2b2x1bWUgZ3JvdXAge3N1YnZvbHVt - ZV9ncm91cH0gaXMgbm90IGFibGUgdG8gZ2V0IGNyZWF0ZWQiCiAgICAgICAgICAgICAgICApCgog - ICAgZGVmIHBpbl9zdWJ2b2x1bWUoCiAgICAgICAgc2VsZiwgc3Vidm9sdW1lX2dyb3VwLCBjZXBo - ZnNfZmlsZXN5c3RlbV9uYW1lLCBwaW5fdHlwZSwgcGluX3NldHRpbmcKICAgICk6CiAgICAgICAg - Y21kID0gWwogICAgICAgICAgICAiY2VwaCIsCiAgICAgICAgICAgICJmcyIsCiAgICAgICAgICAg - ICJzdWJ2b2x1bWVncm91cCIsCiAgICAgICAgICAgICJwaW4iLAogICAgICAgICAgICBjZXBoZnNf - ZmlsZXN5c3RlbV9uYW1lLAogICAgICAgICAgICBzdWJ2b2x1bWVfZ3JvdXAsCiAgICAgICAgICAg - IHBpbl90eXBlLAogICAgICAgICAgICBwaW5fc2V0dGluZywKICAgICAgICBdCiAgICAgICAgdHJ5 - OgogICAgICAgICAgICBfID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3Vi - cHJvY2Vzcy5QSVBFKQogICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJv - cjoKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAg - ICAgICAgIGYic3Vidm9sdW1lIGdyb3VwIHtzdWJ2b2x1bWVfZ3JvdXB9IGlzIG5vdCBhYmxlIHRv - IGdldCBwaW5uZWQiCiAgICAgICAgICAgICkKCiAgICBkZWYgZ2V0X3Jnd19mc2lkKHNlbGYsIGJh - c2VfdXJsLCB2ZXJpZnkpOgogICAgICAgIGFjY2Vzc19rZXkgPSBzZWxmLm91dF9tYXBbIlJHV19B - RE1JTl9PUFNfVVNFUl9BQ0NFU1NfS0VZIl0KICAgICAgICBzZWNyZXRfa2V5ID0gc2VsZi5vdXRf - bWFwWyJSR1dfQURNSU5fT1BTX1VTRVJfU0VDUkVUX0tFWSJdCiAgICAgICAgcmd3X2VuZHBvaW50 - ID0gc2VsZi5fYXJnX3BhcnNlci5yZ3dfZW5kcG9pbnQKICAgICAgICBiYXNlX3VybCA9IGJhc2Vf - dXJsICsgIjovLyIgKyByZ3dfZW5kcG9pbnQgKyAiL2FkbWluL2luZm8/IgogICAgICAgIHBhcmFt - cyA9IHsiZm9ybWF0IjogImpzb24ifQogICAgICAgIHJlcXVlc3RfdXJsID0gYmFzZV91cmwgKyB1 - cmxsaWIucGFyc2UudXJsZW5jb2RlKHBhcmFtcykKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBy - ID0gcmVxdWVzdHMuZ2V0KAogICAgICAgICAgICAgICAgcmVxdWVzdF91cmwsCiAgICAgICAgICAg - ICAgICBhdXRoPVMzQXV0aChhY2Nlc3Nfa2V5LCBzZWNyZXRfa2V5LCByZ3dfZW5kcG9pbnQpLAog - ICAgICAgICAgICAgICAgdmVyaWZ5PXZlcmlmeSwKICAgICAgICAgICAgKQogICAgICAgIGV4Y2Vw - dCByZXF1ZXN0cy5leGNlcHRpb25zLlRpbWVvdXQ6CiAgICAgICAgICAgIHN5cy5zdGRlcnIud3Jp - dGUoCiAgICAgICAgICAgICAgICBmImludmFsaWQgZW5kcG9pbnQ6LCBub3QgYWJsZSB0byBjYWxs - IGFkbWluLW9wcyBhcGl7cmd3X2VuZHBvaW50fSIKICAgICAgICAgICAgKQogICAgICAgICAgICBy - ZXR1cm4gIiIsICItMSIKICAgICAgICByMSA9IHIuanNvbigpCiAgICAgICAgaWYgcjEgaXMgTm9u - ZSBvciByMS5nZXQoImluZm8iKSBpcyBOb25lOgogICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl - KAogICAgICAgICAgICAgICAgZiJUaGUgcHJvdmlkZWQgcmd3IEVuZHBvaW50LCAne3NlbGYuX2Fy - Z19wYXJzZXIucmd3X2VuZHBvaW50fScsIGlzIGludmFsaWQuIgogICAgICAgICAgICApCiAgICAg - ICAgICAgIHJldHVybiAoCiAgICAgICAgICAgICAgICAiIiwKICAgICAgICAgICAgICAgICItMSIs - CiAgICAgICAgICAgICkKCiAgICAgICAgcmV0dXJuIHIxWyJpbmZvIl1bInN0b3JhZ2VfYmFja2Vu - ZHMiXVswXVsiY2x1c3Rlcl9pZCJdLCAiIgoKICAgIGRlZiB2YWxpZGF0ZV9yZ3dfZW5kcG9pbnQo - c2VsZiwgaW5mb19jYXBfc3VwcG9ydGVkKToKICAgICAgICAjIGlmIHRoZSAnY2x1c3RlcicgaW5z - dGFuY2UgaXMgYSBkdW1teSBvbmUsCiAgICAgICAgIyBkb24ndCB0cnkgdG8gcmVhY2ggb3V0IHRv - IHRoZSBlbmRwb2ludAogICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5jbHVzdGVyLCBEdW1teVJh - ZG9zKToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHJnd19lbmRwb2ludCA9IHNlbGYuX2Fy - Z19wYXJzZXIucmd3X2VuZHBvaW50CgogICAgICAgICMgdmFsaWRhdGUgcmd3IGVuZHBvaW50IG9u - bHkgaWYgaXAgYWRkcmVzcyBpcyBwYXNzZWQKICAgICAgICBpcF90eXBlID0gc2VsZi5faW52YWxp - ZF9lbmRwb2ludChyZ3dfZW5kcG9pbnQpCgogICAgICAgICMgY2hlY2sgaWYgdGhlIHJndyBlbmRw - b2ludCBpcyByZWFjaGFibGUKICAgICAgICBjZXJ0ID0gTm9uZQogICAgICAgIGlmIG5vdCBzZWxm - Ll9hcmdfcGFyc2VyLnJnd19za2lwX3RscyBhbmQgc2VsZi52YWxpZGF0ZV9yZ3dfZW5kcG9pbnRf - dGxzX2NlcnQoKToKICAgICAgICAgICAgY2VydCA9IHNlbGYuX2FyZ19wYXJzZXIucmd3X3Rsc19j - ZXJ0X3BhdGgKICAgICAgICBiYXNlX3VybCwgdmVyaWZ5LCBlcnIgPSBzZWxmLmVuZHBvaW50X2Rp - YWwocmd3X2VuZHBvaW50LCBpcF90eXBlLCBjZXJ0PWNlcnQpCiAgICAgICAgaWYgZXJyICE9ICIi - OgogICAgICAgICAgICByZXR1cm4gIi0xIgoKICAgICAgICAjIGNoZWNrIGlmIHRoZSByZ3cgZW5k - cG9pbnQgYmVsb25ncyB0byB0aGUgc2FtZSBjbHVzdGVyCiAgICAgICAgIyBvbmx5IGNoZWNrIGlm - IGBpbmZvYCBjYXAgaXMgc3VwcG9ydGVkCiAgICAgICAgaWYgaW5mb19jYXBfc3VwcG9ydGVkOgog - ICAgICAgICAgICBmc2lkID0gc2VsZi5nZXRfZnNpZCgpCiAgICAgICAgICAgIHJnd19mc2lkLCBl - cnIgPSBzZWxmLmdldF9yZ3dfZnNpZChiYXNlX3VybCwgdmVyaWZ5KQogICAgICAgICAgICBpZiBl - cnIgPT0gIi0xIjoKICAgICAgICAgICAgICAgIHJldHVybiAiLTEiCiAgICAgICAgICAgIGlmIGZz - aWQgIT0gcmd3X2ZzaWQ6CiAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAogICAgICAg - ICAgICAgICAgICAgIGYiVGhlIHByb3ZpZGVkIHJndyBFbmRwb2ludCwgJ3tzZWxmLl9hcmdfcGFy - c2VyLnJnd19lbmRwb2ludH0nLCBpcyBpbnZhbGlkLiBXZSBhcmUgdmFsaWRhdGluZyBieSBjYWxs - aW5nIHRoZSBhZG1pbm9wcyBhcGkgdGhyb3VnaCByZ3ctZW5kcG9pbnQgYW5kIHZhbGlkYXRpbmcg - dGhlIGNsdXN0ZXJfaWQgJ3tyZ3dfZnNpZH0nIGlzIGVxdWFsIHRvIHRoZSBjZXBoIGNsdXN0ZXIg - ZnNpZCAne2ZzaWR9JyIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHJldHVybiAi - LTEiCgogICAgICAgICMgY2hlY2sgaWYgdGhlIHJndyBlbmRwb2ludCBwb29sIGV4aXN0CiAgICAg - ICAgIyBvbmx5IHZhbGlkYXRlIGlmIHJnd19wb29sX3ByZWZpeCBpcyBwYXNzZWQgZWxzZSBpdCB3 - aWxsIHRha2UgZGVmYXVsdCB2YWx1ZSBhbmQgd2UgZG9uJ3QgY3JlYXRlIHRoZXNlIGRlZmF1bHQg - cG9vbHMKICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLnJnd19wb29sX3ByZWZpeCAhPSAiZGVm - YXVsdCI6CiAgICAgICAgICAgIHJnd19wb29sc190b192YWxpZGF0ZSA9IFsKICAgICAgICAgICAg - ICAgIGYie3NlbGYuX2FyZ19wYXJzZXIucmd3X3Bvb2xfcHJlZml4fS5yZ3cubWV0YSIsCiAgICAg - ICAgICAgICAgICAiLnJndy5yb290IiwKICAgICAgICAgICAgICAgIGYie3NlbGYuX2FyZ19wYXJz - ZXIucmd3X3Bvb2xfcHJlZml4fS5yZ3cuY29udHJvbCIsCiAgICAgICAgICAgICAgICBmIntzZWxm - Ll9hcmdfcGFyc2VyLnJnd19wb29sX3ByZWZpeH0ucmd3LmxvZyIsCiAgICAgICAgICAgIF0KICAg - ICAgICAgICAgZm9yIF9yZ3dfcG9vbF90b192YWxpZGF0ZSBpbiByZ3dfcG9vbHNfdG9fdmFsaWRh - dGU6CiAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5jbHVzdGVyLnBvb2xfZXhpc3RzKF9yZ3df - cG9vbF90b192YWxpZGF0ZSk6CiAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgK - ICAgICAgICAgICAgICAgICAgICAgICAgZiJUaGUgcHJvdmlkZWQgcG9vbCwgJ3tfcmd3X3Bvb2xf - dG9fdmFsaWRhdGV9JywgZG9lcyBub3QgZXhpc3QiCiAgICAgICAgICAgICAgICAgICAgKQogICAg - ICAgICAgICAgICAgICAgIHJldHVybiAiLTEiCgogICAgICAgIHJldHVybiAiIgoKICAgIGRlZiB2 - YWxpZGF0ZV9yZ3dfbXVsdGlzaXRlKHNlbGYsIHJnd19tdWx0aXNpdGVfY29uZmlnX25hbWUsIHJn - d19tdWx0aXNpdGVfY29uZmlnKToKICAgICAgICBpZiByZ3dfbXVsdGlzaXRlX2NvbmZpZyAhPSAi - IjoKICAgICAgICAgICAgY21kID0gWwogICAgICAgICAgICAgICAgInJhZG9zZ3ctYWRtaW4iLAog - ICAgICAgICAgICAgICAgcmd3X211bHRpc2l0ZV9jb25maWcsCiAgICAgICAgICAgICAgICAiZ2V0 - IiwKICAgICAgICAgICAgICAgICItLXJndy0iICsgcmd3X211bHRpc2l0ZV9jb25maWcsCiAgICAg - ICAgICAgICAgICByZ3dfbXVsdGlzaXRlX2NvbmZpZ19uYW1lLAogICAgICAgICAgICBdCiAgICAg - ICAgICAgIHRyeToKICAgICAgICAgICAgICAgIF8gPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChj - bWQsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNz - LkNhbGxlZFByb2Nlc3NFcnJvciBhcyBleGVjRXJyOgogICAgICAgICAgICAgICAgZXJyX21zZyA9 - ICgKICAgICAgICAgICAgICAgICAgICBmImZhaWxlZCB0byBleGVjdXRlIGNvbW1hbmQge2NtZH0u - IE91dHB1dDoge2V4ZWNFcnIub3V0cHV0fS4gIgogICAgICAgICAgICAgICAgICAgIGYiQ29kZTog - e2V4ZWNFcnIucmV0dXJuY29kZX0uIEVycm9yOiB7ZXhlY0Vyci5zdGRlcnJ9IgogICAgICAgICAg - ICAgICAgKQogICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShlcnJfbXNnKQogICAgICAg - ICAgICAgICAgcmV0dXJuICItMSIKICAgICAgICByZXR1cm4gIiIKCiAgICBkZWYgX2dlbl9vdXRw - dXRfbWFwKHNlbGYpOgogICAgICAgIGlmIHNlbGYub3V0X21hcDoKICAgICAgICAgICAgcmV0dXJu - CiAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5jbHVzdGVyX25hbWUgPSAoCiAgICAgICAgICAgIHNl - bGYuX2FyZ19wYXJzZXIuY2x1c3Rlcl9uYW1lLmxvd2VyKCkKICAgICAgICApICAjIGFsd2F5cyBj - b252ZXJ0IGNsdXN0ZXIgbmFtZSB0byBsb3dlcmNhc2UgY2hhcmFjdGVycwogICAgICAgIHNlbGYu - dmFsaWRhdGVfcmJkX3Bvb2woKQogICAgICAgIHNlbGYudmFsaWRhdGVfcmFkb3NfbmFtZXNwYWNl - KCkKICAgICAgICBzZWxmLl9leGNsdWRlZF9rZXlzLmFkZCgiQ0xVU1RFUl9OQU1FIikKICAgICAg - ICBzZWxmLmdldF9jZXBoZnNfZGF0YV9wb29sX2RldGFpbHMoKQogICAgICAgIHNlbGYub3V0X21h - cFsiTkFNRVNQQUNFIl0gPSBzZWxmLl9hcmdfcGFyc2VyLm5hbWVzcGFjZQogICAgICAgIHNlbGYu - b3V0X21hcFsiQ0xVU1RFUl9OQU1FIl0gPSBzZWxmLl9hcmdfcGFyc2VyLmNsdXN0ZXJfbmFtZQog - ICAgICAgIHNlbGYub3V0X21hcFsiUk9PS19FWFRFUk5BTF9GU0lEIl0gPSBzZWxmLmdldF9mc2lk - KCkKICAgICAgICBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxfVVNFUk5BTUUiXSA9IHNlbGYu - cnVuX2FzX3VzZXIKICAgICAgICBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxfQ0VQSF9NT05f - REFUQSJdID0gc2VsZi5nZXRfY2VwaF9leHRlcm5hbF9tb25fZGF0YSgpCiAgICAgICAgc2VsZi5v - dXRfbWFwWyJST09LX0VYVEVSTkFMX1VTRVJfU0VDUkVUIl0gPSBzZWxmLmNyZWF0ZV9jaGVja2Vy - S2V5KCkKICAgICAgICBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxfREFTSEJPQVJEX0xJTksi - XSA9IHNlbGYuZ2V0X2NlcGhfZGFzaGJvYXJkX2xpbmsoKQogICAgICAgICgKICAgICAgICAgICAg - c2VsZi5vdXRfbWFwWyJDU0lfUkJEX05PREVfU0VDUkVUIl0sCiAgICAgICAgICAgIHNlbGYub3V0 - X21hcFsiQ1NJX1JCRF9OT0RFX1NFQ1JFVF9OQU1FIl0sCiAgICAgICAgKSA9IHNlbGYuY3JlYXRl - X2NlcGhDU0lLZXlyaW5nX3VzZXIoImNsaWVudC5jc2ktcmJkLW5vZGUiKQogICAgICAgICgKICAg - ICAgICAgICAgc2VsZi5vdXRfbWFwWyJDU0lfUkJEX1BST1ZJU0lPTkVSX1NFQ1JFVCJdLAogICAg - ICAgICAgICBzZWxmLm91dF9tYXBbIkNTSV9SQkRfUFJPVklTSU9ORVJfU0VDUkVUX05BTUUiXSwK - ICAgICAgICApID0gc2VsZi5jcmVhdGVfY2VwaENTSUtleXJpbmdfdXNlcigiY2xpZW50LmNzaS1y - YmQtcHJvdmlzaW9uZXIiKQogICAgICAgIHNlbGYub3V0X21hcFsiQ0VQSEZTX1BPT0xfTkFNRSJd - ID0gc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9wb29sX25hbWUKICAgICAgICBzZWxmLm91 - dF9tYXBbCiAgICAgICAgICAgICJDRVBIRlNfTUVUQURBVEFfUE9PTF9OQU1FIgogICAgICAgIF0g - PSBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19tZXRhZGF0YV9wb29sX25hbWUKICAgICAgICBzZWxm - Lm91dF9tYXBbIkNFUEhGU19GU19OQU1FIl0gPSBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19maWxl - c3lzdGVtX25hbWUKICAgICAgICBzZWxmLm91dF9tYXBbCiAgICAgICAgICAgICJSRVNUUklDVEVE - X0FVVEhfUEVSTUlTU0lPTiIKICAgICAgICBdID0gc2VsZi5fYXJnX3BhcnNlci5yZXN0cmljdGVk - X2F1dGhfcGVybWlzc2lvbgogICAgICAgIHNlbGYub3V0X21hcFsiUkFET1NfTkFNRVNQQUNFIl0g - PSBzZWxmLl9hcmdfcGFyc2VyLnJhZG9zX25hbWVzcGFjZQogICAgICAgIHNlbGYub3V0X21hcFsi - U1VCVk9MVU1FX0dST1VQIl0gPSBzZWxmLl9hcmdfcGFyc2VyLnN1YnZvbHVtZV9ncm91cAogICAg - ICAgIHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19OT0RFX1NFQ1JFVCJdID0gIiIKICAgICAgICBz - ZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfUFJPVklTSU9ORVJfU0VDUkVUIl0gPSAiIgogICAgICAg - ICMgY3JlYXRlIENlcGhGUyBub2RlIGFuZCBwcm92aXNpb25lciBrZXlyaW5nIG9ubHkgd2hlbiBN - RFMgZXhpc3RzCiAgICAgICAgaWYgc2VsZi5vdXRfbWFwWyJDRVBIRlNfRlNfTkFNRSJdIGFuZCBz - ZWxmLm91dF9tYXBbIkNFUEhGU19QT09MX05BTUUiXToKICAgICAgICAgICAgKAogICAgICAgICAg - ICAgICAgc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZTX05PREVfU0VDUkVUIl0sCiAgICAgICAgICAg - ICAgICBzZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfTk9ERV9TRUNSRVRfTkFNRSJdLAogICAgICAg - ICAgICApID0gc2VsZi5jcmVhdGVfY2VwaENTSUtleXJpbmdfdXNlcigiY2xpZW50LmNzaS1jZXBo - ZnMtbm9kZSIpCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIHNlbGYub3V0X21hcFsiQ1NJ - X0NFUEhGU19QUk9WSVNJT05FUl9TRUNSRVQiXSwKICAgICAgICAgICAgICAgIHNlbGYub3V0X21h - cFsiQ1NJX0NFUEhGU19QUk9WSVNJT05FUl9TRUNSRVRfTkFNRSJdLAogICAgICAgICAgICApID0g - c2VsZi5jcmVhdGVfY2VwaENTSUtleXJpbmdfdXNlcigiY2xpZW50LmNzaS1jZXBoZnMtcHJvdmlz - aW9uZXIiKQogICAgICAgICAgICAjIGNyZWF0ZSB0aGUgZGVmYXVsdCAiY3NpIiBzdWJ2b2x1bWVn - cm91cAogICAgICAgICAgICBzZWxmLmdldF9vcl9jcmVhdGVfc3Vidm9sdW1lX2dyb3VwKAogICAg - ICAgICAgICAgICAgImNzaSIsIHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2ZpbGVzeXN0ZW1fbmFt - ZQogICAgICAgICAgICApCiAgICAgICAgICAgICMgcGluIHRoZSBkZWZhdWx0ICJjc2kiIHN1YnZv - bHVtZWdyb3VwCiAgICAgICAgICAgIHNlbGYucGluX3N1YnZvbHVtZSgKICAgICAgICAgICAgICAg - ICJjc2kiLCBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19maWxlc3lzdGVtX25hbWUsICJkaXN0cmli - dXRlZCIsICIxIgogICAgICAgICAgICApCiAgICAgICAgICAgIGlmIHNlbGYub3V0X21hcFsiU1VC - Vk9MVU1FX0dST1VQIl06CiAgICAgICAgICAgICAgICBzZWxmLmdldF9vcl9jcmVhdGVfc3Vidm9s - dW1lX2dyb3VwKAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIuc3Vidm9sdW1l - X2dyb3VwLAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2ZpbGVz - eXN0ZW1fbmFtZSwKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHNlbGYucGluX3N1 - YnZvbHVtZSgKICAgICAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnN1YnZvbHVtZV9n - cm91cCwKICAgICAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19maWxlc3lz - dGVtX25hbWUsCiAgICAgICAgICAgICAgICAgICAgImRpc3RyaWJ1dGVkIiwKICAgICAgICAgICAg - ICAgICAgICAiMSIsCiAgICAgICAgICAgICAgICApCiAgICAgICAgc2VsZi5vdXRfbWFwWyJSR1df - VExTX0NFUlQiXSA9ICIiCiAgICAgICAgc2VsZi5vdXRfbWFwWyJNT05JVE9SSU5HX0VORFBPSU5U - Il0gPSAiIgogICAgICAgIHNlbGYub3V0X21hcFsiTU9OSVRPUklOR19FTkRQT0lOVF9QT1JUIl0g - PSAiIgogICAgICAgIGlmIG5vdCBzZWxmLl9hcmdfcGFyc2VyLnNraXBfbW9uaXRvcmluZ19lbmRw - b2ludDoKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgc2VsZi5vdXRfbWFwWyJNT05JVE9S - SU5HX0VORFBPSU5UIl0sCiAgICAgICAgICAgICAgICBzZWxmLm91dF9tYXBbIk1PTklUT1JJTkdf - RU5EUE9JTlRfUE9SVCJdLAogICAgICAgICAgICApID0gc2VsZi5nZXRfYWN0aXZlX2FuZF9zdGFu - ZGJ5X21ncnMoKQogICAgICAgIHNlbGYub3V0X21hcFsiUkJEX1BPT0xfTkFNRSJdID0gc2VsZi5f - YXJnX3BhcnNlci5yYmRfZGF0YV9wb29sX25hbWUKICAgICAgICBzZWxmLm91dF9tYXBbCiAgICAg - ICAgICAgICJSQkRfTUVUQURBVEFfRUNfUE9PTF9OQU1FIgogICAgICAgIF0gPSBzZWxmLnZhbGlk - YXRlX3JiZF9tZXRhZGF0YV9lY19wb29sX25hbWUoKQogICAgICAgIHNlbGYub3V0X21hcFsiUkdX - X1BPT0xfUFJFRklYIl0gPSBzZWxmLl9hcmdfcGFyc2VyLnJnd19wb29sX3ByZWZpeAogICAgICAg - IHNlbGYub3V0X21hcFsiUkdXX0VORFBPSU5UIl0gPSAiIgogICAgICAgIGlmIHNlbGYuX2FyZ19w - YXJzZXIucmd3X2VuZHBvaW50OgogICAgICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLmRyeV9y - dW46CiAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9yZ3dfYWRtaW5fb3BzX3VzZXIoKQogICAg - ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIHNl - bGYuX2FyZ19wYXJzZXIucmd3X3JlYWxtX25hbWUgIT0gIiIKICAgICAgICAgICAgICAgICAgICBh - bmQgc2VsZi5fYXJnX3BhcnNlci5yZ3dfem9uZWdyb3VwX25hbWUgIT0gIiIKICAgICAgICAgICAg - ICAgICAgICBhbmQgc2VsZi5fYXJnX3BhcnNlci5yZ3dfem9uZV9uYW1lICE9ICIiCiAgICAgICAg - ICAgICAgICApOgogICAgICAgICAgICAgICAgICAgIGVyciA9IHNlbGYudmFsaWRhdGVfcmd3X211 - bHRpc2l0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcmVh - bG1fbmFtZSwgInJlYWxtIgogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAg - ICBlcnIgPSBzZWxmLnZhbGlkYXRlX3Jnd19tdWx0aXNpdGUoCiAgICAgICAgICAgICAgICAgICAg - ICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pvbmVncm91cF9uYW1lLCAiem9uZWdyb3VwIgogICAg - ICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICBlcnIgPSBzZWxmLnZhbGlkYXRl - X3Jnd19tdWx0aXNpdGUoCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIu - cmd3X3pvbmVfbmFtZSwgInpvbmUiCiAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAg - ICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJnd19yZWFsbV9u - YW1lID09ICIiCiAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pv - bmVncm91cF9uYW1lID09ICIiCiAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYuX2FyZ19wYXJz - ZXIucmd3X3pvbmVfbmFtZSA9PSAiIgogICAgICAgICAgICAgICAgKSBvciAoCiAgICAgICAgICAg - ICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcmVhbG1fbmFtZSAhPSAiIgogICAgICAgICAg - ICAgICAgICAgIGFuZCBzZWxmLl9hcmdfcGFyc2VyLnJnd196b25lZ3JvdXBfbmFtZSAhPSAiIgog - ICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLl9hcmdfcGFyc2VyLnJnd196b25lX25hbWUgIT0g - IiIKICAgICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAg - ICAgICAgICAgICBzZWxmLm91dF9tYXBbIlJHV19BRE1JTl9PUFNfVVNFUl9BQ0NFU1NfS0VZIl0s - CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3V0X21hcFsiUkdXX0FETUlOX09QU19VU0VS - X1NFQ1JFVF9LRVkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19jYXBfc3VwcG9ydGVk - LAogICAgICAgICAgICAgICAgICAgICAgICBlcnIsCiAgICAgICAgICAgICAgICAgICAgKSA9IHNl - bGYuY3JlYXRlX3Jnd19hZG1pbl9vcHNfdXNlcigpCiAgICAgICAgICAgICAgICAgICAgZXJyID0g - c2VsZi52YWxpZGF0ZV9yZ3dfZW5kcG9pbnQoaW5mb19jYXBfc3VwcG9ydGVkKQogICAgICAgICAg - ICAgICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIucmd3X3Rsc19jZXJ0X3BhdGg6CiAgICAgICAg - ICAgICAgICAgICAgICAgIHNlbGYub3V0X21hcFsKICAgICAgICAgICAgICAgICAgICAgICAgICAg - ICJSR1dfVExTX0NFUlQiCiAgICAgICAgICAgICAgICAgICAgICAgIF0gPSBzZWxmLnZhbGlkYXRl - X3Jnd19lbmRwb2ludF90bHNfY2VydCgpCiAgICAgICAgICAgICAgICAgICAgIyBpZiB0aGVyZSBp - cyBubyBlcnJvciwgc2V0IHRoZSBSR1dfRU5EUE9JTlQKICAgICAgICAgICAgICAgICAgICBpZiBl - cnIgIT0gIi0xIjoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vdXRfbWFwWyJSR1dfRU5E - UE9JTlQiXSA9IHNlbGYuX2FyZ19wYXJzZXIucmd3X2VuZHBvaW50CiAgICAgICAgICAgICAgICBl - bHNlOgogICAgICAgICAgICAgICAgICAgIGVyciA9ICJQbGVhc2UgcHJvdmlkZSBhbGwgdGhlIFJH - VyBtdWx0aXNpdGUgcGFyYW1ldGVycyBvciBub25lIG9mIHRoZW0iCiAgICAgICAgICAgICAgICAg - ICAgc3lzLnN0ZGVyci53cml0ZShlcnIpCgogICAgZGVmIGdlbl9zaGVsbF9vdXQoc2VsZik6CiAg - ICAgICAgc2VsZi5fZ2VuX291dHB1dF9tYXAoKQogICAgICAgIHNoT3V0SU8gPSBTdHJpbmdJTygp - CiAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5vdXRfbWFwLml0ZW1zKCk6CiAgICAgICAgICAgIGlm - IHYgYW5kIGsgbm90IGluIHNlbGYuX2V4Y2x1ZGVkX2tleXM6CiAgICAgICAgICAgICAgICBzaE91 - dElPLndyaXRlKGYiZXhwb3J0IHtrfT17dn17TElORVNFUH0iKQogICAgICAgIHNoT3V0ID0gc2hP - dXRJTy5nZXR2YWx1ZSgpCiAgICAgICAgc2hPdXRJTy5jbG9zZSgpCiAgICAgICAgcmV0dXJuIHNo - T3V0CgogICAgZGVmIGdlbl9qc29uX291dChzZWxmKToKICAgICAgICBzZWxmLl9nZW5fb3V0cHV0 - X21hcCgpCiAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5kcnlfcnVuOgogICAgICAgICAgICBy - ZXR1cm4gIiIKICAgICAgICBqc29uX291dCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAg - ICAgIm5hbWUiOiAicm9vay1jZXBoLW1vbi1lbmRwb2ludHMiLAogICAgICAgICAgICAgICAgImtp - bmQiOiAiQ29uZmlnTWFwIiwKICAgICAgICAgICAgICAgICJkYXRhIjogewogICAgICAgICAgICAg - ICAgICAgICJkYXRhIjogc2VsZi5vdXRfbWFwWyJST09LX0VYVEVSTkFMX0NFUEhfTU9OX0RBVEEi - XSwKICAgICAgICAgICAgICAgICAgICAibWF4TW9uSWQiOiAiMCIsCiAgICAgICAgICAgICAgICAg - ICAgIm1hcHBpbmciOiAie30iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAg - ICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAicm9vay1jZXBoLW1vbiIsCiAgICAg - ICAgICAgICAgICAia2luZCI6ICJTZWNyZXQiLAogICAgICAgICAgICAgICAgImRhdGEiOiB7CiAg - ICAgICAgICAgICAgICAgICAgImFkbWluLXNlY3JldCI6ICJhZG1pbi1zZWNyZXQiLAogICAgICAg - ICAgICAgICAgICAgICJmc2lkIjogc2VsZi5vdXRfbWFwWyJST09LX0VYVEVSTkFMX0ZTSUQiXSwK - ICAgICAgICAgICAgICAgICAgICAibW9uLXNlY3JldCI6ICJtb24tc2VjcmV0IiwKICAgICAgICAg - ICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJu - YW1lIjogInJvb2stY2VwaC1vcGVyYXRvci1jcmVkcyIsCiAgICAgICAgICAgICAgICAia2luZCI6 - ICJTZWNyZXQiLAogICAgICAgICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAg - InVzZXJJRCI6IHNlbGYub3V0X21hcFsiUk9PS19FWFRFUk5BTF9VU0VSTkFNRSJdLAogICAgICAg - ICAgICAgICAgICAgICJ1c2VyS2V5Ijogc2VsZi5vdXRfbWFwWyJST09LX0VYVEVSTkFMX1VTRVJf - U0VDUkVUIl0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIF0KCiAg - ICAgICAgIyBpZiAnTU9OSVRPUklOR19FTkRQT0lOVCcgZXhpc3RzLCB0aGVuIG9ubHkgYWRkICdt - b25pdG9yaW5nLWVuZHBvaW50JyB0byBDbHVzdGVyCiAgICAgICAgaWYgKAogICAgICAgICAgICBz - ZWxmLm91dF9tYXBbIk1PTklUT1JJTkdfRU5EUE9JTlQiXQogICAgICAgICAgICBhbmQgc2VsZi5v - dXRfbWFwWyJNT05JVE9SSU5HX0VORFBPSU5UX1BPUlQiXQogICAgICAgICk6CiAgICAgICAgICAg - IGpzb25fb3V0LmFwcGVuZCgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAi - bmFtZSI6ICJtb25pdG9yaW5nLWVuZHBvaW50IiwKICAgICAgICAgICAgICAgICAgICAia2luZCI6 - ICJDZXBoQ2x1c3RlciIsCiAgICAgICAgICAgICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAg - ICAgICAgICAgICAgICJNb25pdG9yaW5nRW5kcG9pbnQiOiBzZWxmLm91dF9tYXBbIk1PTklUT1JJ - TkdfRU5EUE9JTlQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgIk1vbml0b3JpbmdQb3J0Ijog - c2VsZi5vdXRfbWFwWyJNT05JVE9SSU5HX0VORFBPSU5UX1BPUlQiXSwKICAgICAgICAgICAgICAg - ICAgICB9LAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApCgogICAgICAgICMgaWYgJ0NT - SV9SQkRfTk9ERV9TRUNSRVQnIGV4aXN0cywgdGhlbiBvbmx5IGFkZCAncm9vay1jc2ktcmJkLXBy - b3Zpc2lvbmVyJyBTZWNyZXQKICAgICAgICBpZiAoCiAgICAgICAgICAgIHNlbGYub3V0X21hcFsi - Q1NJX1JCRF9OT0RFX1NFQ1JFVCJdCiAgICAgICAgICAgIGFuZCBzZWxmLm91dF9tYXBbIkNTSV9S - QkRfTk9ERV9TRUNSRVRfTkFNRSJdCiAgICAgICAgKToKICAgICAgICAgICAganNvbl9vdXQuYXBw - ZW5kKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogZiJyb29r - LXtzZWxmLm91dF9tYXBbJ0NTSV9SQkRfTk9ERV9TRUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAg - ICAgICAgICAgImtpbmQiOiAiU2VjcmV0IiwKICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsK - ICAgICAgICAgICAgICAgICAgICAgICAgInVzZXJJRCI6IHNlbGYub3V0X21hcFsiQ1NJX1JCRF9O - T0RFX1NFQ1JFVF9OQU1FIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2VyS2V5Ijogc2Vs - Zi5vdXRfbWFwWyJDU0lfUkJEX05PREVfU0VDUkVUIl0sCiAgICAgICAgICAgICAgICAgICAgfSwK - ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKQogICAgICAgICMgaWYgJ0NTSV9SQkRfUFJP - VklTSU9ORVJfU0VDUkVUJyBleGlzdHMsIHRoZW4gb25seSBhZGQgJ3Jvb2stY3NpLXJiZC1wcm92 - aXNpb25lcicgU2VjcmV0CiAgICAgICAgaWYgKAogICAgICAgICAgICBzZWxmLm91dF9tYXBbIkNT - SV9SQkRfUFJPVklTSU9ORVJfU0VDUkVUIl0KICAgICAgICAgICAgYW5kIHNlbGYub3V0X21hcFsi - Q1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVRfTkFNRSJdCiAgICAgICAgKToKICAgICAgICAgICAg - anNvbl9vdXQuYXBwZW5kKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJu - YW1lIjogZiJyb29rLXtzZWxmLm91dF9tYXBbJ0NTSV9SQkRfUFJPVklTSU9ORVJfU0VDUkVUX05B - TUUnXX0iLAogICAgICAgICAgICAgICAgICAgICJraW5kIjogIlNlY3JldCIsCiAgICAgICAgICAg - ICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2VySUQiOiBzZWxm - Lm91dF9tYXBbIkNTSV9SQkRfUFJPVklTSU9ORVJfU0VDUkVUX05BTUUiXSwKICAgICAgICAgICAg - ICAgICAgICAgICAgInVzZXJLZXkiOiBzZWxmLm91dF9tYXBbIkNTSV9SQkRfUFJPVklTSU9ORVJf - U0VDUkVUIl0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0KICAgICAg - ICAgICAgKQogICAgICAgICMgaWYgJ0NTSV9DRVBIRlNfUFJPVklTSU9ORVJfU0VDUkVUJyBleGlz - dHMsIHRoZW4gb25seSBhZGQgJ3Jvb2stY3NpLWNlcGhmcy1wcm92aXNpb25lcicgU2VjcmV0CiAg - ICAgICAgaWYgKAogICAgICAgICAgICBzZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfUFJPVklTSU9O - RVJfU0VDUkVUIl0KICAgICAgICAgICAgYW5kIHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19QUk9W - SVNJT05FUl9TRUNSRVRfTkFNRSJdCiAgICAgICAgKToKICAgICAgICAgICAganNvbl9vdXQuYXBw - ZW5kKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogZiJyb29r - LXtzZWxmLm91dF9tYXBbJ0NTSV9DRVBIRlNfUFJPVklTSU9ORVJfU0VDUkVUX05BTUUnXX0iLAog - ICAgICAgICAgICAgICAgICAgICJraW5kIjogIlNlY3JldCIsCiAgICAgICAgICAgICAgICAgICAg - ImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJhZG1pbklEIjogc2VsZi5vdXRfbWFw - WyJDU0lfQ0VQSEZTX1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FIl0sCiAgICAgICAgICAgICAgICAg - ICAgICAgICJhZG1pbktleSI6IHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19QUk9WSVNJT05FUl9T - RUNSRVQiXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfQogICAgICAg - ICAgICApCiAgICAgICAgIyBpZiAnQ1NJX0NFUEhGU19OT0RFX1NFQ1JFVCcgZXhpc3RzLCB0aGVu - IG9ubHkgYWRkICdyb29rLWNzaS1jZXBoZnMtbm9kZScgU2VjcmV0CiAgICAgICAgaWYgKAogICAg - ICAgICAgICBzZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfTk9ERV9TRUNSRVQiXQogICAgICAgICAg - ICBhbmQgc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZTX05PREVfU0VDUkVUX05BTUUiXQogICAgICAg - ICk6CiAgICAgICAgICAgIGpzb25fb3V0LmFwcGVuZCgKICAgICAgICAgICAgICAgIHsKICAgICAg - ICAgICAgICAgICAgICAibmFtZSI6IGYicm9vay17c2VsZi5vdXRfbWFwWydDU0lfQ0VQSEZTX05P - REVfU0VDUkVUX05BTUUnXX0iLAogICAgICAgICAgICAgICAgICAgICJraW5kIjogIlNlY3JldCIs - CiAgICAgICAgICAgICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJh - ZG1pbklEIjogc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZTX05PREVfU0VDUkVUX05BTUUiXSwKICAg - ICAgICAgICAgICAgICAgICAgICAgImFkbWluS2V5Ijogc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZT - X05PREVfU0VDUkVUIl0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0K - ICAgICAgICAgICAgKQogICAgICAgICMgaWYgJ1JPT0tfRVhURVJOQUxfREFTSEJPQVJEX0xJTksn - IGV4aXN0cywgdGhlbiBvbmx5IGFkZCAncm9vay1jZXBoLWRhc2hib2FyZC1saW5rJyBTZWNyZXQK - ICAgICAgICBpZiBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxfREFTSEJPQVJEX0xJTksiXToK - ICAgICAgICAgICAganNvbl9vdXQuYXBwZW5kKAogICAgICAgICAgICAgICAgewogICAgICAgICAg - ICAgICAgICAgICJuYW1lIjogInJvb2stY2VwaC1kYXNoYm9hcmQtbGluayIsCiAgICAgICAgICAg - ICAgICAgICAgImtpbmQiOiAiU2VjcmV0IiwKICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsK - ICAgICAgICAgICAgICAgICAgICAgICAgInVzZXJJRCI6ICJjZXBoLWRhc2hib2FyZC1saW5rIiwK - ICAgICAgICAgICAgICAgICAgICAgICAgInVzZXJLZXkiOiBzZWxmLm91dF9tYXBbIlJPT0tfRVhU - RVJOQUxfREFTSEJPQVJEX0xJTksiXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAg - ICAgICAgfQogICAgICAgICAgICApCiAgICAgICAgaWYgc2VsZi5vdXRfbWFwWyJSQkRfTUVUQURB - VEFfRUNfUE9PTF9OQU1FIl06CiAgICAgICAgICAgIGpzb25fb3V0LmFwcGVuZCgKICAgICAgICAg - ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjZXBoLXJiZCIsCiAgICAgICAg - ICAgICAgICAgICAgImtpbmQiOiAiU3RvcmFnZUNsYXNzIiwKICAgICAgICAgICAgICAgICAgICAi - ZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImRhdGFQb29sIjogc2VsZi5vdXRfbWFw - WyJSQkRfUE9PTF9OQU1FIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICJwb29sIjogc2VsZi5v - dXRfbWFwWyJSQkRfTUVUQURBVEFfRUNfUE9PTF9OQU1FIl0sCiAgICAgICAgICAgICAgICAgICAg - ICAgICJjc2kuc3RvcmFnZS5rOHMuaW8vcHJvdmlzaW9uZXItc2VjcmV0LW5hbWUiOiBmInJvb2st - e3NlbGYub3V0X21hcFsnQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVRfTkFNRSddfSIsCiAgICAg - ICAgICAgICAgICAgICAgICAgICJjc2kuc3RvcmFnZS5rOHMuaW8vY29udHJvbGxlci1leHBhbmQt - c2VjcmV0LW5hbWUiOiBmInJvb2ste3NlbGYub3V0X21hcFsnQ1NJX1JCRF9QUk9WSVNJT05FUl9T - RUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJjc2kuc3RvcmFnZS5rOHMu - aW8vbm9kZS1zdGFnZS1zZWNyZXQtbmFtZSI6IGYicm9vay17c2VsZi5vdXRfbWFwWydDU0lfUkJE - X05PREVfU0VDUkVUX05BTUUnXX0iLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg - ICAgICB9CiAgICAgICAgICAgICkKICAgICAgICBlbHNlOgogICAgICAgICAgICBqc29uX291dC5h - cHBlbmQoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2Vw - aC1yYmQiLAogICAgICAgICAgICAgICAgICAgICJraW5kIjogIlN0b3JhZ2VDbGFzcyIsCiAgICAg - ICAgICAgICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJwb29sIjog - c2VsZi5vdXRfbWFwWyJSQkRfUE9PTF9OQU1FIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICJj - c2kuc3RvcmFnZS5rOHMuaW8vcHJvdmlzaW9uZXItc2VjcmV0LW5hbWUiOiBmInJvb2ste3NlbGYu - b3V0X21hcFsnQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAg - ICAgICAgICAgICAgICJjc2kuc3RvcmFnZS5rOHMuaW8vY29udHJvbGxlci1leHBhbmQtc2VjcmV0 - LW5hbWUiOiBmInJvb2ste3NlbGYub3V0X21hcFsnQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVRf - TkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJjc2kuc3RvcmFnZS5rOHMuaW8vbm9k - ZS1zdGFnZS1zZWNyZXQtbmFtZSI6IGYicm9vay17c2VsZi5vdXRfbWFwWydDU0lfUkJEX05PREVf - U0VDUkVUX05BTUUnXX0iLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9 - CiAgICAgICAgICAgICkKICAgICAgICAjIGlmICdDRVBIRlNfRlNfTkFNRScgZXhpc3RzLCB0aGVu - IG9ubHkgYWRkICdjZXBoZnMnIFN0b3JhZ2VDbGFzcwogICAgICAgIGlmIHNlbGYub3V0X21hcFsi - Q0VQSEZTX0ZTX05BTUUiXToKICAgICAgICAgICAganNvbl9vdXQuYXBwZW5kKAogICAgICAgICAg - ICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImNlcGhmcyIsCiAgICAgICAgICAg - ICAgICAgICAgImtpbmQiOiAiU3RvcmFnZUNsYXNzIiwKICAgICAgICAgICAgICAgICAgICAiZGF0 - YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImZzTmFtZSI6IHNlbGYub3V0X21hcFsiQ0VQ - SEZTX0ZTX05BTUUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgInBvb2wiOiBzZWxmLm91dF9t - YXBbIkNFUEhGU19QT09MX05BTUUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgImNzaS5zdG9y - YWdlLms4cy5pby9wcm92aXNpb25lci1zZWNyZXQtbmFtZSI6IGYicm9vay17c2VsZi5vdXRfbWFw - WydDU0lfQ0VQSEZTX1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FJ119IiwKICAgICAgICAgICAgICAg - ICAgICAgICAgImNzaS5zdG9yYWdlLms4cy5pby9jb250cm9sbGVyLWV4cGFuZC1zZWNyZXQtbmFt - ZSI6IGYicm9vay17c2VsZi5vdXRfbWFwWydDU0lfQ0VQSEZTX1BST1ZJU0lPTkVSX1NFQ1JFVF9O - QU1FJ119IiwKICAgICAgICAgICAgICAgICAgICAgICAgImNzaS5zdG9yYWdlLms4cy5pby9ub2Rl - LXN0YWdlLXNlY3JldC1uYW1lIjogZiJyb29rLXtzZWxmLm91dF9tYXBbJ0NTSV9DRVBIRlNfTk9E - RV9TRUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg - IH0KICAgICAgICAgICAgKQogICAgICAgICMgaWYgJ1JHV19FTkRQT0lOVCcgZXhpc3RzLCB0aGVu - IG9ubHkgYWRkICdjZXBoLXJndycgU3RvcmFnZUNsYXNzCiAgICAgICAgaWYgc2VsZi5vdXRfbWFw - WyJSR1dfRU5EUE9JTlQiXToKICAgICAgICAgICAganNvbl9vdXQuYXBwZW5kKAogICAgICAgICAg - ICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImNlcGgtcmd3IiwKICAgICAgICAg - ICAgICAgICAgICAia2luZCI6ICJTdG9yYWdlQ2xhc3MiLAogICAgICAgICAgICAgICAgICAgICJk - YXRhIjogewogICAgICAgICAgICAgICAgICAgICAgICAiZW5kcG9pbnQiOiBzZWxmLm91dF9tYXBb - IlJHV19FTkRQT0lOVCJdLAogICAgICAgICAgICAgICAgICAgICAgICAicG9vbFByZWZpeCI6IHNl - bGYub3V0X21hcFsiUkdXX1BPT0xfUFJFRklYIl0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAg - ICAgICAgICAgICAgIH0KICAgICAgICAgICAgKQogICAgICAgICAgICBqc29uX291dC5hcHBlbmQo - CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmd3LWFkbWlu - LW9wcy11c2VyIiwKICAgICAgICAgICAgICAgICAgICAia2luZCI6ICJTZWNyZXQiLAogICAgICAg - ICAgICAgICAgICAgICJkYXRhIjogewogICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzS2V5 - Ijogc2VsZi5vdXRfbWFwWyJSR1dfQURNSU5fT1BTX1VTRVJfQUNDRVNTX0tFWSJdLAogICAgICAg - ICAgICAgICAgICAgICAgICAic2VjcmV0S2V5Ijogc2VsZi5vdXRfbWFwWyJSR1dfQURNSU5fT1BT - X1VTRVJfU0VDUkVUX0tFWSJdLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAg - ICB9CiAgICAgICAgICAgICkKICAgICAgICAjIGlmICdSR1dfVExTX0NFUlQnIGV4aXN0cywgdGhl - biBvbmx5IGFkZCB0aGUgImNlcGgtcmd3LXRscy1jZXJ0IiBzZWNyZXQKICAgICAgICBpZiBzZWxm - Lm91dF9tYXBbIlJHV19UTFNfQ0VSVCJdOgogICAgICAgICAgICBqc29uX291dC5hcHBlbmQoCiAg - ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2VwaC1yZ3ctdGxz - LWNlcnQiLAogICAgICAgICAgICAgICAgICAgICJraW5kIjogIlNlY3JldCIsCiAgICAgICAgICAg - ICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJjZXJ0Ijogc2VsZi5v - dXRfbWFwWyJSR1dfVExTX0NFUlQiXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAg - ICAgICAgfQogICAgICAgICAgICApCgogICAgICAgIHJldHVybiBqc29uLmR1bXBzKGpzb25fb3V0 - KSArIExJTkVTRVAKCiAgICBkZWYgdXBncmFkZV91c2Vyc19wZXJtaXNzaW9ucyhzZWxmKToKICAg - ICAgICB1c2VycyA9IFsKICAgICAgICAgICAgImNsaWVudC5jc2ktY2VwaGZzLW5vZGUiLAogICAg - ICAgICAgICAiY2xpZW50LmNzaS1jZXBoZnMtcHJvdmlzaW9uZXIiLAogICAgICAgICAgICAiY2xp - ZW50LmNzaS1yYmQtbm9kZSIsCiAgICAgICAgICAgICJjbGllbnQuY3NpLXJiZC1wcm92aXNpb25l - ciIsCiAgICAgICAgXQogICAgICAgIGlmIHNlbGYucnVuX2FzX3VzZXIgIT0gIiIgYW5kIHNlbGYu - cnVuX2FzX3VzZXIgbm90IGluIHVzZXJzOgogICAgICAgICAgICB1c2Vycy5hcHBlbmQoc2VsZi5y - dW5fYXNfdXNlcikKICAgICAgICBmb3IgdXNlciBpbiB1c2VyczoKICAgICAgICAgICAgc2VsZi51 - cGdyYWRlX3VzZXJfcGVybWlzc2lvbnModXNlcikKCiAgICBkZWYgdXBncmFkZV91c2VyX3Blcm1p - c3Npb25zKHNlbGYsIHVzZXIpOgogICAgICAgICMgY2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gdXNl - ciBleGlzdHMgb3Igbm90CiAgICAgICAgY21kX2pzb24gPSB7InByZWZpeCI6ICJhdXRoIGdldCIs - ICJlbnRpdHkiOiBmInt1c2VyfSIsICJmb3JtYXQiOiAianNvbiJ9CiAgICAgICAgcmV0X3ZhbCwg + IGs4c19jbHVzdGVyX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25G + YWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJtYW5kYXRvcnkgZmxhZyBub3Qg + Zm91bmQsIHBsZWFzZSBzZXQgdGhlICctLWs4cy1jbHVzdGVyLW5hbWUnIGZsYWciCiAgICAgICAg + ICAgICAgICApCiAgICAgICAgICAgIGVudGl0eSA9IHNlbGYuZ2V0X2VudGl0eSgKICAgICAgICAg + ICAgICAgIGVudGl0eSwgcmJkX3Bvb2xfbmFtZSwgYWxpYXNfcmJkX3Bvb2xfbmFtZSwgazhzX2Ns + dXN0ZXJfbmFtZQogICAgICAgICAgICApCiAgICAgICAgICAgIGNhcHNbIm9zZCJdID0gZiJwcm9m + aWxlIHJiZCBwb29sPXtyYmRfcG9vbF9uYW1lfSIKCiAgICAgICAgcmV0dXJuIGNhcHMsIGVudGl0 + eQoKICAgIGRlZiBnZXRfcmJkX25vZGVfY2Fwc19hbmRfZW50aXR5KHNlbGYpOgogICAgICAgIGVu + dGl0eSA9ICJjbGllbnQuY3NpLXJiZC1ub2RlIgogICAgICAgIGNhcHMgPSB7CiAgICAgICAgICAg + ICJtb24iOiAicHJvZmlsZSByYmQsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwKICAg + ICAgICAgICAgIm9zZCI6ICJwcm9maWxlIHJiZCIsCiAgICAgICAgfQogICAgICAgIGlmIHNlbGYu + X2FyZ19wYXJzZXIucmVzdHJpY3RlZF9hdXRoX3Blcm1pc3Npb246CiAgICAgICAgICAgIHJiZF9w + b29sX25hbWUgPSBzZWxmLl9hcmdfcGFyc2VyLnJiZF9kYXRhX3Bvb2xfbmFtZQogICAgICAgICAg + ICBhbGlhc19yYmRfcG9vbF9uYW1lID0gc2VsZi5fYXJnX3BhcnNlci5hbGlhc19yYmRfZGF0YV9w + b29sX25hbWUKICAgICAgICAgICAgazhzX2NsdXN0ZXJfbmFtZSA9IHNlbGYuX2FyZ19wYXJzZXIu + azhzX2NsdXN0ZXJfbmFtZQogICAgICAgICAgICBpZiByYmRfcG9vbF9uYW1lID09ICIiOgogICAg + ICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAg + ICAgICAgICAibWFuZGF0b3J5IGZsYWcgbm90IGZvdW5kLCBwbGVhc2Ugc2V0IHRoZSAnLS1yYmQt + ZGF0YS1wb29sLW5hbWUnIGZsYWciCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGlmIGs4 + c19jbHVzdGVyX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWls + dXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJtYW5kYXRvcnkgZmxhZyBub3QgZm91 + bmQsIHBsZWFzZSBzZXQgdGhlICctLWs4cy1jbHVzdGVyLW5hbWUnIGZsYWciCiAgICAgICAgICAg + ICAgICApCiAgICAgICAgICAgIGVudGl0eSA9IHNlbGYuZ2V0X2VudGl0eSgKICAgICAgICAgICAg + ICAgIGVudGl0eSwgcmJkX3Bvb2xfbmFtZSwgYWxpYXNfcmJkX3Bvb2xfbmFtZSwgazhzX2NsdXN0 + ZXJfbmFtZQogICAgICAgICAgICApCiAgICAgICAgICAgIGNhcHNbIm9zZCJdID0gZiJwcm9maWxl + IHJiZCBwb29sPXtyYmRfcG9vbF9uYW1lfSIKCiAgICAgICAgcmV0dXJuIGNhcHMsIGVudGl0eQoK + ICAgIGRlZiBnZXRfaGVhbHRoY2hlY2tlcl9jYXBzX2FuZF9lbnRpdHkoc2VsZik6CiAgICAgICAg + ZW50aXR5ID0gImNsaWVudC5oZWFsdGhjaGVja2VyIgogICAgICAgIGNhcHMgPSB7CiAgICAgICAg + ICAgICJtb24iOiAiYWxsb3cgciwgYWxsb3cgY29tbWFuZCBxdW9ydW1fc3RhdHVzLCBhbGxvdyBj + b21tYW5kIHZlcnNpb24iLAogICAgICAgICAgICAibWdyIjogImFsbG93IGNvbW1hbmQgY29uZmln + IiwKICAgICAgICAgICAgIm9zZCI6IGYicHJvZmlsZSByYmQtcmVhZC1vbmx5LCBhbGxvdyByd3gg + cG9vbD17c2VsZi5fYXJnX3BhcnNlci5yZ3dfcG9vbF9wcmVmaXh9LnJndy5tZXRhLCBhbGxvdyBy + IHBvb2w9LnJndy5yb290LCBhbGxvdyBydyBwb29sPXtzZWxmLl9hcmdfcGFyc2VyLnJnd19wb29s + X3ByZWZpeH0ucmd3LmNvbnRyb2wsIGFsbG93IHJ4IHBvb2w9e3NlbGYuX2FyZ19wYXJzZXIucmd3 + X3Bvb2xfcHJlZml4fS5yZ3cubG9nLCBhbGxvdyB4IHBvb2w9e3NlbGYuX2FyZ19wYXJzZXIucmd3 + X3Bvb2xfcHJlZml4fS5yZ3cuYnVja2V0cy5pbmRleCIsCiAgICAgICAgfQoKICAgICAgICByZXR1 + cm4gY2FwcywgZW50aXR5CgogICAgZGVmIGdldF9jYXBzX2FuZF9lbnRpdHkoc2VsZiwgdXNlcl9u + YW1lKToKICAgICAgICBpZiAiY2xpZW50LmNzaS1jZXBoZnMtcHJvdmlzaW9uZXIiIGluIHVzZXJf + bmFtZToKICAgICAgICAgICAgaWYgImNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyIiAhPSB1 + c2VyX25hbWU6CiAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJlc3RyaWN0ZWRfYXV0 + aF9wZXJtaXNzaW9uID0gVHJ1ZQogICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfY2VwaGZzX3By + b3Zpc2lvbmVyX2NhcHNfYW5kX2VudGl0eSgpCiAgICAgICAgaWYgImNsaWVudC5jc2ktY2VwaGZz + LW5vZGUiIGluIHVzZXJfbmFtZToKICAgICAgICAgICAgaWYgImNsaWVudC5jc2ktY2VwaGZzLW5v + ZGUiICE9IHVzZXJfbmFtZToKICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmVzdHJp + Y3RlZF9hdXRoX3Blcm1pc3Npb24gPSBUcnVlCiAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9j + ZXBoZnNfbm9kZV9jYXBzX2FuZF9lbnRpdHkoKQogICAgICAgIGlmICJjbGllbnQuY3NpLXJiZC1w + cm92aXNpb25lciIgaW4gdXNlcl9uYW1lOgogICAgICAgICAgICBpZiAiY2xpZW50LmNzaS1yYmQt + cHJvdmlzaW9uZXIiICE9IHVzZXJfbmFtZToKICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJz + ZXIucmVzdHJpY3RlZF9hdXRoX3Blcm1pc3Npb24gPSBUcnVlCiAgICAgICAgICAgIHJldHVybiBz + ZWxmLmdldF9yYmRfcHJvdmlzaW9uZXJfY2Fwc19hbmRfZW50aXR5KCkKICAgICAgICBpZiAiY2xp + ZW50LmNzaS1yYmQtbm9kZSIgaW4gdXNlcl9uYW1lOgogICAgICAgICAgICBpZiAiY2xpZW50LmNz + aS1yYmQtbm9kZSIgIT0gdXNlcl9uYW1lOgogICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNl + ci5yZXN0cmljdGVkX2F1dGhfcGVybWlzc2lvbiA9IFRydWUKICAgICAgICAgICAgcmV0dXJuIHNl + bGYuZ2V0X3JiZF9ub2RlX2NhcHNfYW5kX2VudGl0eSgpCiAgICAgICAgaWYgImNsaWVudC5oZWFs + dGhjaGVja2VyIiBpbiB1c2VyX25hbWU6CiAgICAgICAgICAgIGlmICJjbGllbnQuaGVhbHRoY2hl + Y2tlciIgIT0gdXNlcl9uYW1lOgogICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZXN0 + cmljdGVkX2F1dGhfcGVybWlzc2lvbiA9IFRydWUKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 + X2hlYWx0aGNoZWNrZXJfY2Fwc19hbmRfZW50aXR5KCkKCiAgICAgICAgcmFpc2UgRXhlY3V0aW9u + RmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgZiJubyB1c2VyIGZvdW5kIHdpdGggdXNlcl9u + YW1lOiB7dXNlcl9uYW1lfSwgIgogICAgICAgICAgICAiZ2V0X2NhcHNfYW5kX2VudGl0eSBjb21t + YW5kIGZhaWxlZC5cbiIKICAgICAgICApCgogICAgZGVmIGNyZWF0ZV9jZXBoQ1NJS2V5cmluZ191 + c2VyKHNlbGYsIHVzZXIpOgogICAgICAgICIiIgogICAgICAgIGNvbW1hbmQ6IGNlcGggYXV0aCBn + ZXQtb3ItY3JlYXRlIGNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyIG1vbiAnYWxsb3cgcicg + bWdyICdhbGxvdyBydycgb3NkICdhbGxvdyBydyB0YWcgY2VwaGZzIG1ldGFkYXRhPSonCiAgICAg + ICAgIiIiCiAgICAgICAgY2FwcywgZW50aXR5ID0gc2VsZi5nZXRfY2Fwc19hbmRfZW50aXR5KHVz + ZXIpCiAgICAgICAgY21kX2pzb24gPSB7CiAgICAgICAgICAgICJwcmVmaXgiOiAiYXV0aCBnZXQt + b3ItY3JlYXRlIiwKICAgICAgICAgICAgImVudGl0eSI6IGVudGl0eSwKICAgICAgICAgICAgImNh + cHMiOiBbY2FwIGZvciBjYXBfbGlzdCBpbiBsaXN0KGNhcHMuaXRlbXMoKSkgZm9yIGNhcCBpbiBj + YXBfbGlzdF0sCiAgICAgICAgICAgICJmb3JtYXQiOiAianNvbiIsCiAgICAgICAgfQoKICAgICAg + ICBpZiBzZWxmLl9hcmdfcGFyc2VyLmRyeV9ydW46CiAgICAgICAgICAgIHJldHVybiAoCiAgICAg + ICAgICAgICAgICBzZWxmLmRyeV9ydW4oCiAgICAgICAgICAgICAgICAgICAgImNlcGggIgogICAg + ICAgICAgICAgICAgICAgICsgY21kX2pzb25bInByZWZpeCJdCiAgICAgICAgICAgICAgICAgICAg + KyAiICIKICAgICAgICAgICAgICAgICAgICArIGNtZF9qc29uWyJlbnRpdHkiXQogICAgICAgICAg + ICAgICAgICAgICsgIiAiCiAgICAgICAgICAgICAgICAgICAgKyAiICIuam9pbihjbWRfanNvblsi + Y2FwcyJdKQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICIiLAogICAgICAgICAg + ICApCiAgICAgICAgIyBjaGVjayBpZiB1c2VyIGFscmVhZHkgZXhpc3QKICAgICAgICB1c2VyX2tl + eSA9IHNlbGYuY2hlY2tfdXNlcl9leGlzdChlbnRpdHkpCiAgICAgICAgaWYgdXNlcl9rZXkgIT0g + IiI6CiAgICAgICAgICAgIHJldHVybiB1c2VyX2tleSwgZiJ7ZW50aXR5LnNwbGl0KCcuJywgMSlb + MV19IgogICAgICAgICAgICAjIGVudGl0eS5zcGxpdCgnLicsMSlbMV0gdG8gcmVuYW1lIGVudGl0 + eShjbGllbnQuY3NpLXJiZC1ub2RlKSBhcyBjc2ktcmJkLW5vZGUKCiAgICAgICAgcmV0X3ZhbCwg anNvbl9vdXQsIGVycl9tc2cgPSBzZWxmLl9jb21tb25fY21kX2pzb25fZ2VuKGNtZF9qc29uKQog - ICAgICAgIGlmIHJldF92YWwgIT0gMCBvciBsZW4oanNvbl9vdXQpID09IDA6CiAgICAgICAgICAg - IHByaW50KGYidXNlciB7dXNlcn0gbm90IGZvdW5kIGZvciB1cGdyYWRpbmcuIikKICAgICAgICAg - ICAgcmV0dXJuCiAgICAgICAgZXhpc3RpbmdfY2FwcyA9IGpzb25fb3V0WzBdWyJjYXBzIl0KICAg - ICAgICBuZXdfY2FwLCBfID0gc2VsZi5nZXRfY2Fwc19hbmRfZW50aXR5KHVzZXIpCiAgICAgICAg - Y2FwX2tleXMgPSBbIm1vbiIsICJtZ3IiLCAib3NkIiwgIm1kcyJdCiAgICAgICAgY2FwcyA9IFtd - CiAgICAgICAgZm9yIGVhY2hDYXAgaW4gY2FwX2tleXM6CiAgICAgICAgICAgIGN1cl9jYXBfdmFs - dWVzID0gZXhpc3RpbmdfY2Fwcy5nZXQoZWFjaENhcCwgIiIpCiAgICAgICAgICAgIG5ld19jYXBf - dmFsdWVzID0gbmV3X2NhcC5nZXQoZWFjaENhcCwgIiIpCiAgICAgICAgICAgIGN1cl9jYXBfcGVy - bV9saXN0ID0gWwogICAgICAgICAgICAgICAgeC5zdHJpcCgpIGZvciB4IGluIGN1cl9jYXBfdmFs - dWVzLnNwbGl0KCIsIikgaWYgeC5zdHJpcCgpCiAgICAgICAgICAgIF0KICAgICAgICAgICAgbmV3 - X2NhcF9wZXJtX2xpc3QgPSBbCiAgICAgICAgICAgICAgICB4LnN0cmlwKCkgZm9yIHggaW4gbmV3 - X2NhcF92YWx1ZXMuc3BsaXQoIiwiKSBpZiB4LnN0cmlwKCkKICAgICAgICAgICAgXQogICAgICAg - ICAgICAjIGFwcGVuZCBuZXdfY2FwX2xpc3QgdG8gY3VyX2NhcF9saXN0IHRvIG1haW50YWluIHRo - ZSBvcmRlciBvZiBjYXBzCiAgICAgICAgICAgIGN1cl9jYXBfcGVybV9saXN0LmV4dGVuZChuZXdf - Y2FwX3Blcm1fbGlzdCkKICAgICAgICAgICAgIyBlbGltaW5hdGUgZHVwbGljYXRlcyB3aXRob3V0 - IHVzaW5nICdzZXQnCiAgICAgICAgICAgICMgc2V0IHJlLW9yZGVycyBpdGVtcyBpbiB0aGUgbGlz - dCBhbmQgd2UgaGF2ZSB0byBrZWVwIHRoZSBvcmRlcgogICAgICAgICAgICBuZXdfY2FwX2xpc3Qg - PSBbXQogICAgICAgICAgICBbbmV3X2NhcF9saXN0LmFwcGVuZCh4KSBmb3IgeCBpbiBjdXJfY2Fw - X3Blcm1fbGlzdCBpZiB4IG5vdCBpbiBuZXdfY2FwX2xpc3RdCiAgICAgICAgICAgIGV4aXN0aW5n - X2NhcHNbZWFjaENhcF0gPSAiLCAiLmpvaW4obmV3X2NhcF9saXN0KQogICAgICAgICAgICBpZiBl - eGlzdGluZ19jYXBzW2VhY2hDYXBdOgogICAgICAgICAgICAgICAgY2Fwcy5hcHBlbmQoZWFjaENh - cCkKICAgICAgICAgICAgICAgIGNhcHMuYXBwZW5kKGV4aXN0aW5nX2NhcHNbZWFjaENhcF0pCiAg - ICAgICAgY21kX2pzb24gPSB7CiAgICAgICAgICAgICJwcmVmaXgiOiAiYXV0aCBjYXBzIiwKICAg - ICAgICAgICAgImVudGl0eSI6IHVzZXIsCiAgICAgICAgICAgICJjYXBzIjogY2FwcywKICAgICAg - ICAgICAgImZvcm1hdCI6ICJqc29uIiwKICAgICAgICB9CiAgICAgICAgcmV0X3ZhbCwganNvbl9v - dXQsIGVycl9tc2cgPSBzZWxmLl9jb21tb25fY21kX2pzb25fZ2VuKGNtZF9qc29uKQogICAgICAg - IGlmIHJldF92YWwgIT0gMDoKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2Vw - dGlvbigKICAgICAgICAgICAgICAgIGYiJ2F1dGggY2FwcyB7dXNlcn0nIGNvbW1hbmQgZmFpbGVk - LlxuIEVycm9yOiB7ZXJyX21zZ30iCiAgICAgICAgICAgICkKICAgICAgICBwcmludChmIlVwZGF0 - ZWQgdXNlciB7dXNlcn0gc3VjY2Vzc2Z1bGx5LiIpCgogICAgZGVmIG1haW4oc2VsZik6CiAgICAg - ICAgZ2VuZXJhdGVkX291dHB1dCA9ICIiCiAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci51cGdy - YWRlOgogICAgICAgICAgICBzZWxmLnVwZ3JhZGVfdXNlcnNfcGVybWlzc2lvbnMoKQogICAgICAg - IGVsaWYgc2VsZi5fYXJnX3BhcnNlci5mb3JtYXQgPT0gImpzb24iOgogICAgICAgICAgICBnZW5l - cmF0ZWRfb3V0cHV0ID0gc2VsZi5nZW5fanNvbl9vdXQoKQogICAgICAgIGVsaWYgc2VsZi5fYXJn - X3BhcnNlci5mb3JtYXQgPT0gImJhc2giOgogICAgICAgICAgICBnZW5lcmF0ZWRfb3V0cHV0ID0g - c2VsZi5nZW5fc2hlbGxfb3V0KCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBFeGVj - dXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgZiJVbnN1cHBvcnRlZCBmb3Jt - YXQ6IHtzZWxmLl9hcmdfcGFyc2VyLmZvcm1hdH0iCiAgICAgICAgICAgICkKICAgICAgICBwcmlu - dChnZW5lcmF0ZWRfb3V0cHV0KQogICAgICAgIGlmIHNlbGYub3V0cHV0X2ZpbGUgYW5kIGdlbmVy - YXRlZF9vdXRwdXQ6CiAgICAgICAgICAgIGZPdXQgPSBvcGVuKHNlbGYub3V0cHV0X2ZpbGUsIG1v - ZGU9InciLCBlbmNvZGluZz0iVVRGLTgiKQogICAgICAgICAgICBmT3V0LndyaXRlKGdlbmVyYXRl - ZF9vdXRwdXQpCiAgICAgICAgICAgIGZPdXQuY2xvc2UoKQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMj - IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMgTUFJTiAj - IyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj - IyMjIyMjIyMjIyMjCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICByak9iaiA9IFJhZG9z - SlNPTigpCiAgICB0cnk6CiAgICAgICAgcmpPYmoubWFpbigpCiAgICBleGNlcHQgRXhlY3V0aW9u - RmFpbHVyZUV4Y2VwdGlvbiBhcyBlcnI6CiAgICAgICAgcHJpbnQoZiJFeGVjdXRpb24gRmFpbGVk - OiB7ZXJyfSIpCiAgICAgICAgcmFpc2UgZXJyCiAgICBleGNlcHQgS2V5RXJyb3IgYXMga0VycjoK - ICAgICAgICBwcmludChmIktleUVycm9yOiB7a0Vycn0iKQogICAgZXhjZXB0IE9TRXJyb3IgYXMg - b3NFcnI6CiAgICAgICAgcHJpbnQoZiJFcnJvciB3aGlsZSB0cnlpbmcgdG8gb3V0cHV0IHRoZSBk - YXRhOiB7b3NFcnJ9IikKICAgIGZpbmFsbHk6CiAgICAgICAgcmpPYmouc2h1dGRvd24oKQo= + ICAgICAgICMgaWYgdGhlcmUgaXMgYW4gdW5zdWNjZXNzZnVsIGF0dGVtcHQsCiAgICAgICAgaWYg + cmV0X3ZhbCAhPSAwIG9yIGxlbihqc29uX291dCkgPT0gMDoKICAgICAgICAgICAgcmFpc2UgRXhl + Y3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgIGYiJ2F1dGggZ2V0LW9yLWNy + ZWF0ZSB7dXNlcn0nIGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAgZiJFcnJvcjog + e2Vycl9tc2cgaWYgcmV0X3ZhbCAhPSAwIGVsc2Ugc2VsZi5FTVBUWV9PVVRQVVRfTElTVH0iCiAg + ICAgICAgICAgICkKICAgICAgICByZXR1cm4gc3RyKGpzb25fb3V0WzBdWyJrZXkiXSksIGYie2Vu + dGl0eS5zcGxpdCgnLicsIDEpWzFdfSIKICAgICAgICAjIGVudGl0eS5zcGxpdCgnLicsMSlbMV0g + dG8gcmVuYW1lIGVudGl0eShjbGllbnQuY3NpLXJiZC1ub2RlKSBhcyBjc2ktcmJkLW5vZGUKCiAg + ICBkZWYgZ2V0X2NlcGhmc19kYXRhX3Bvb2xfZGV0YWlscyhzZWxmKToKICAgICAgICBjbWRfanNv + biA9IHsicHJlZml4IjogImZzIGxzIiwgImZvcm1hdCI6ICJqc29uIn0KICAgICAgICBpZiBzZWxm + Ll9hcmdfcGFyc2VyLmRyeV9ydW46CiAgICAgICAgICAgIHJldHVybiBzZWxmLmRyeV9ydW4oImNl + cGggIiArIGNtZF9qc29uWyJwcmVmaXgiXSkKICAgICAgICByZXRfdmFsLCBqc29uX291dCwgZXJy + X21zZyA9IHNlbGYuX2NvbW1vbl9jbWRfanNvbl9nZW4oY21kX2pzb24pCiAgICAgICAgIyBpZiB0 + aGVyZSBpcyBhbiB1bnN1Y2Nlc3NmdWwgYXR0ZW1wdCwgcmVwb3J0IGFuIGVycm9yCiAgICAgICAg + aWYgcmV0X3ZhbCAhPSAwOgogICAgICAgICAgICAjIGlmIGZzIGFuZCBkYXRhX3Bvb2wgYXJndW1l + bnRzIGFyZSBub3Qgc2V0LCBzaWxlbnRseSByZXR1cm4KICAgICAgICAgICAgaWYgKAogICAgICAg + ICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZmlsZXN5c3RlbV9uYW1lID09ICIiCiAg + ICAgICAgICAgICAgICBhbmQgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9wb29sX25hbWUg + PT0gIiIKICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAj + IGlmIHVzZXIgaGFzIHByb3ZpZGVkIGFueSBvZiB0aGUKICAgICAgICAgICAgIyAnLS1jZXBoZnMt + ZmlsZXN5c3RlbS1uYW1lJyBvciAnLS1jZXBoZnMtZGF0YS1wb29sLW5hbWUnIGFyZ3VtZW50cywK + ICAgICAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24gYXMgd2UgYXJlIHVuYWJsZSB0byB2ZXJp + ZnkgdGhlIGFyZ3MKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigK + ICAgICAgICAgICAgICAgIGYiJ2ZzIGxzJyBjZXBoIGNhbGwgZmFpbGVkIHdpdGggZXJyb3I6IHtl + cnJfbXNnfSIKICAgICAgICAgICAgKQoKICAgICAgICBtYXRjaGluZ19qc29uX291dCA9IHt9CiAg + ICAgICAgIyBpZiAnLS1jZXBoZnMtZmlsZXN5c3RlbS1uYW1lJyBhcmd1bWVudCBpcyBwcm92aWRl + ZCwKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGZpbGVzeXN0ZW0tbmFtZSBl + eGlzdHMgb3Igbm90CiAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZmlsZXN5c3Rl + bV9uYW1lOgogICAgICAgICAgICAjIGdldCB0aGUgbWF0Y2hpbmcgbGlzdAogICAgICAgICAgICBt + YXRjaGluZ19qc29uX291dF9saXN0ID0gWwogICAgICAgICAgICAgICAgbWF0Y2hlZAogICAgICAg + ICAgICAgICAgZm9yIG1hdGNoZWQgaW4ganNvbl9vdXQKICAgICAgICAgICAgICAgIGlmIHN0ciht + YXRjaGVkWyJuYW1lIl0pID09IHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2ZpbGVzeXN0ZW1fbmFt + ZQogICAgICAgICAgICBdCiAgICAgICAgICAgICMgdW5hYmxlIHRvIGZpbmQgYSBtYXRjaGluZyBm + cy1uYW1lLCByYWlzZSBhbiBlcnJvcgogICAgICAgICAgICBpZiBsZW4obWF0Y2hpbmdfanNvbl9v + dXRfbGlzdCkgPT0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNl + cHRpb24oCiAgICAgICAgICAgICAgICAgICAgZiJGaWxlc3lzdGVtIHByb3ZpZGVkLCAne3NlbGYu + X2FyZ19wYXJzZXIuY2VwaGZzX2ZpbGVzeXN0ZW1fbmFtZX0nLCAiCiAgICAgICAgICAgICAgICAg + ICAgZiJpcyBub3QgZm91bmQgaW4gdGhlIGZzLWxpc3Q6IHtbc3RyKHhbJ25hbWUnXSkgZm9yIHgg + aW4ganNvbl9vdXRdfSIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgbWF0Y2hpbmdfanNv + bl9vdXQgPSBtYXRjaGluZ19qc29uX291dF9saXN0WzBdCiAgICAgICAgIyBpZiBjZXBoZnMgZmls + ZXN5c3RlbSBuYW1lIGlzIG5vdCBwcm92aWRlZCwKICAgICAgICAjIHRyeSB0byBnZXQgYSBkZWZh + dWx0IGZzIG5hbWUgYnkgZG9pbmcgdGhlIGZvbGxvd2luZwogICAgICAgIGVsc2U6CiAgICAgICAg + ICAgICMgYS4gY2hlY2sgaWYgdGhlcmUgaXMgb25seSBvbmUgZmlsZXN5c3RlbSBpcyBwcmVzZW50 + CiAgICAgICAgICAgIGlmIGxlbihqc29uX291dCkgPT0gMToKICAgICAgICAgICAgICAgIG1hdGNo + aW5nX2pzb25fb3V0ID0ganNvbl9vdXRbMF0KICAgICAgICAgICAgIyBiLiBvciBlbHNlLCBjaGVj + ayBpZiBkYXRhX3Bvb2wgbmFtZSBpcyBwcm92aWRlZAogICAgICAgICAgICBlbGlmIHNlbGYuX2Fy + Z19wYXJzZXIuY2VwaGZzX2RhdGFfcG9vbF9uYW1lOgogICAgICAgICAgICAgICAgIyBhbmQgaWYg + cHJlc2VudCwgY2hlY2sgd2hldGhlciB0aGVyZSBleGlzdHMgYSBmcyB3aGljaCBoYXMgdGhlIGRh + dGFfcG9vbAogICAgICAgICAgICAgICAgZm9yIGVhY2hKIGluIGpzb25fb3V0OgogICAgICAgICAg + ICAgICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2RhdGFfcG9vbF9uYW1lIGluIGVh + Y2hKWyJkYXRhX3Bvb2xzIl06CiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nX2pzb25f + b3V0ID0gZWFjaEoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAg + ICMgaWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgZnMgZXhpc3RzLCB0aGF0IG1lYW5zIHByb3ZpZGVk + IGRhdGFfcG9vbCBuYW1lIGlzIGludmFsaWQKICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaGlu + Z19qc29uX291dDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhj + ZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICBmIlByb3ZpZGVkIGRhdGFfcG9vbCBuYW1l + LCB7c2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9wb29sX25hbWV9LCIKICAgICAgICAgICAg + ICAgICAgICAgICAgIiBkb2VzIG5vdCBleGlzdHMiCiAgICAgICAgICAgICAgICAgICAgKQogICAg + ICAgICAgICAjIGMuIGlmIG5vdGhpbmcgaXMgc2V0IGFuZCBjb3VsZG4ndCBmaW5kIGEgZGVmYXVs + dCwKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMganVzdCByZXR1cm4gc2lsZW50 + bHkKICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICBpZiBtYXRjaGluZ19qc29uX291dDoK + ICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZmlsZXN5c3RlbV9uYW1lID0gc3Ry + KG1hdGNoaW5nX2pzb25fb3V0WyJuYW1lIl0pCiAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIu + Y2VwaGZzX21ldGFkYXRhX3Bvb2xfbmFtZSA9IHN0cigKICAgICAgICAgICAgICAgIG1hdGNoaW5n + X2pzb25fb3V0WyJtZXRhZGF0YV9wb29sIl0KICAgICAgICAgICAgKQoKICAgICAgICBpZiBpc2lu + c3RhbmNlKG1hdGNoaW5nX2pzb25fb3V0WyJkYXRhX3Bvb2xzIl0sIGxpc3QpOgogICAgICAgICAg + ICAjIGlmIHRoZSB1c2VyIGhhcyBhbHJlYWR5IHByb3ZpZGVkIGRhdGEtcG9vbC1uYW1lLAogICAg + ICAgICAgICAjIHRocm91Z2ggLS1jZXBoZnMtZGF0YS1wb29sLW5hbWUKICAgICAgICAgICAgaWYg + c2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9wb29sX25hbWU6CiAgICAgICAgICAgICAgICAj + IGlmIHRoZSBwcm92aWRlZCBuYW1lIGlzIG5vdCBtYXRjaGluZyB3aXRoIHRoZSBvbmUgaW4gdGhl + IGxpc3QKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBzZWxmLl9hcmdf + cGFyc2VyLmNlcGhmc19kYXRhX3Bvb2xfbmFtZQogICAgICAgICAgICAgICAgICAgIG5vdCBpbiBt + YXRjaGluZ19qc29uX291dFsiZGF0YV9wb29scyJdCiAgICAgICAgICAgICAgICApOgogICAgICAg + ICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAg + ICAgICAgICAgICAgIGYiUHJvdmlkZWQgZGF0YS1wb29sLW5hbWU6ICd7c2VsZi5fYXJnX3BhcnNl + ci5jZXBoZnNfZGF0YV9wb29sX25hbWV9JywgIgogICAgICAgICAgICAgICAgICAgICAgICAiZG9l + c24ndCBtYXRjaCBmcm9tIHRoZSBkYXRhLXBvb2xzIGxpc3Q6ICIKICAgICAgICAgICAgICAgICAg + ICAgICAgZiJ7W3N0cih4KSBmb3IgeCBpbiBtYXRjaGluZ19qc29uX291dFsnZGF0YV9wb29scydd + XX0iCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAjIGlmIGRhdGFfcG9vbCBuYW1l + IGlzIG5vdCBwcm92aWRlZCwKICAgICAgICAgICAgIyB0aGVuIHRyeSB0byBmaW5kIGEgZGVmYXVs + dCBkYXRhIHBvb2wgbmFtZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBpZiBu + byBkYXRhX3Bvb2xzIGV4aXN0LCBzaWxlbnRseSByZXR1cm4KICAgICAgICAgICAgICAgIGlmIGxl + bihtYXRjaGluZ19qc29uX291dFsiZGF0YV9wb29scyJdKSA9PSAwOgogICAgICAgICAgICAgICAg + ICAgIHJldHVybgogICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9w + b29sX25hbWUgPSBzdHIoCiAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdfanNvbl9vdXRbImRh + dGFfcG9vbHMiXVswXQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAjIGlmIHRoZXJlIGFy + ZSBtb3JlIHRoYW4gb25lICdkYXRhX3Bvb2xzJyBleGlzdCwKICAgICAgICAgICAgIyB0aGVuIHdh + cm4gdGhlIHVzZXIgdGhhdCB3ZSBhcmUgdXNpbmcgdGhlIHNlbGVjdGVkIG5hbWUKICAgICAgICAg + ICAgaWYgbGVuKG1hdGNoaW5nX2pzb25fb3V0WyJkYXRhX3Bvb2xzIl0pID4gMToKICAgICAgICAg + ICAgICAgIHByaW50KAogICAgICAgICAgICAgICAgICAgICJXQVJOSU5HOiBNdWx0aXBsZSBkYXRh + IHBvb2xzIGRldGVjdGVkOiAiCiAgICAgICAgICAgICAgICAgICAgZiJ7W3N0cih4KSBmb3IgeCBp + biBtYXRjaGluZ19qc29uX291dFsnZGF0YV9wb29scyddXX1cbiIKICAgICAgICAgICAgICAgICAg + ICBmIlVzaW5nIHRoZSBkYXRhLXBvb2w6ICd7c2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9w + b29sX25hbWV9J1xuIgogICAgICAgICAgICAgICAgKQoKICAgIGRlZiBjcmVhdGVfY2hlY2tlcktl + eShzZWxmLCB1c2VyKToKICAgICAgICBjYXBzLCBlbnRpdHkgPSBzZWxmLmdldF9jYXBzX2FuZF9l + bnRpdHkodXNlcikKICAgICAgICBjbWRfanNvbiA9IHsKICAgICAgICAgICAgInByZWZpeCI6ICJh + dXRoIGdldC1vci1jcmVhdGUiLAogICAgICAgICAgICAiZW50aXR5IjogZW50aXR5LAogICAgICAg + ICAgICAiY2FwcyI6IFtjYXAgZm9yIGNhcF9saXN0IGluIGxpc3QoY2Fwcy5pdGVtcygpKSBmb3Ig + Y2FwIGluIGNhcF9saXN0XSwKICAgICAgICAgICAgImZvcm1hdCI6ICJqc29uIiwKICAgICAgICB9 + CgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5X3J1bjoKICAgICAgICAgICAgcmV0dXJu + IHNlbGYuZHJ5X3J1bigKICAgICAgICAgICAgICAgICJjZXBoICIKICAgICAgICAgICAgICAgICsg + Y21kX2pzb25bInByZWZpeCJdCiAgICAgICAgICAgICAgICArICIgIgogICAgICAgICAgICAgICAg + KyBjbWRfanNvblsiZW50aXR5Il0KICAgICAgICAgICAgICAgICsgIiAiCiAgICAgICAgICAgICAg + ICArICIgIi5qb2luKGNtZF9qc29uWyJjYXBzIl0pCiAgICAgICAgICAgICkKICAgICAgICAjIGNo + ZWNrIGlmIHVzZXIgYWxyZWFkeSBleGlzdAogICAgICAgIHVzZXJfa2V5ID0gc2VsZi5jaGVja191 + c2VyX2V4aXN0KGVudGl0eSkKICAgICAgICBpZiB1c2VyX2tleSAhPSAiIjoKICAgICAgICAgICAg + cmV0dXJuIHVzZXJfa2V5CgogICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2Vs + Zi5fY29tbW9uX2NtZF9qc29uX2dlbihjbWRfanNvbikKICAgICAgICAjIGlmIHRoZXJlIGlzIGFu + IHVuc3VjY2Vzc2Z1bCBhdHRlbXB0LAogICAgICAgIGlmIHJldF92YWwgIT0gMCBvciBsZW4oanNv + bl9vdXQpID09IDA6CiAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24o + CiAgICAgICAgICAgICAgICBmIidhdXRoIGdldC1vci1jcmVhdGUge3NlbGYucnVuX2FzX3VzZXJ9 + JyBjb21tYW5kIGZhaWxlZFxuIgogICAgICAgICAgICAgICAgZiJFcnJvcjoge2Vycl9tc2cgaWYg + cmV0X3ZhbCAhPSAwIGVsc2Ugc2VsZi5FTVBUWV9PVVRQVVRfTElTVH0iCiAgICAgICAgICAgICkK + ICAgICAgICByZXR1cm4gc3RyKGpzb25fb3V0WzBdWyJrZXkiXSkKCiAgICBkZWYgZ2V0X2NlcGhf + ZGFzaGJvYXJkX2xpbmsoc2VsZik6CiAgICAgICAgY21kX2pzb24gPSB7InByZWZpeCI6ICJtZ3Ig + c2VydmljZXMiLCAiZm9ybWF0IjogImpzb24ifQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIu + ZHJ5X3J1bjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZHJ5X3J1bigiY2VwaCAiICsgY21kX2pz + b25bInByZWZpeCJdKQogICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBfID0gc2VsZi5fY29tbW9u + X2NtZF9qc29uX2dlbihjbWRfanNvbikKICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIHVuc3VjY2Vz + c2Z1bCBhdHRlbXB0LAogICAgICAgIGlmIHJldF92YWwgIT0gMCBvciBsZW4oanNvbl9vdXQpID09 + IDA6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgaWYgImRhc2hib2FyZCIgbm90IGlu + IGpzb25fb3V0OgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHJldHVybiBqc29uX291 + dFsiZGFzaGJvYXJkIl0KCiAgICBkZWYgY3JlYXRlX3Jnd19hZG1pbl9vcHNfdXNlcihzZWxmKToK + ICAgICAgICBjbWQgPSBbCiAgICAgICAgICAgICJyYWRvc2d3LWFkbWluIiwKICAgICAgICAgICAg + InVzZXIiLAogICAgICAgICAgICAiY3JlYXRlIiwKICAgICAgICAgICAgIi0tdWlkIiwKICAgICAg + ICAgICAgc2VsZi5FWFRFUk5BTF9SR1dfQURNSU5fT1BTX1VTRVJfTkFNRSwKICAgICAgICAgICAg + Ii0tZGlzcGxheS1uYW1lIiwKICAgICAgICAgICAgIlJvb2sgUkdXIEFkbWluIE9wcyB1c2VyIiwK + ICAgICAgICAgICAgIi0tY2FwcyIsCiAgICAgICAgICAgICJidWNrZXRzPSo7dXNlcnM9Kjt1c2Fn + ZT1yZWFkO21ldGFkYXRhPXJlYWQ7em9uZT1yZWFkIiwKICAgICAgICAgICAgIi0tcmd3LXJlYWxt + IiwKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcmVhbG1fbmFtZSwKICAgICAgICAg + ICAgIi0tcmd3LXpvbmVncm91cCIsCiAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pv + bmVncm91cF9uYW1lLAogICAgICAgICAgICAiLS1yZ3ctem9uZSIsCiAgICAgICAgICAgIHNlbGYu + X2FyZ19wYXJzZXIucmd3X3pvbmVfbmFtZSwKICAgICAgICBdCiAgICAgICAgaWYgc2VsZi5fYXJn + X3BhcnNlci5kcnlfcnVuOgogICAgICAgICAgICByZXR1cm4gc2VsZi5kcnlfcnVuKCJjZXBoICIg + KyAiICIuam9pbihjbWQpKQogICAgICAgIHRyeToKICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJv + Y2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgIGV4 + Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBleGVjRXJyOgogICAgICAgICAg + ICAjIGlmIHRoZSB1c2VyIGFscmVhZHkgZXhpc3RzLCB3ZSBqdXN0IHF1ZXJ5IGl0CiAgICAgICAg + ICAgIGlmIGV4ZWNFcnIucmV0dXJuY29kZSA9PSBlcnJuby5FRVhJU1Q6CiAgICAgICAgICAgICAg + ICBjbWQgPSBbCiAgICAgICAgICAgICAgICAgICAgInJhZG9zZ3ctYWRtaW4iLAogICAgICAgICAg + ICAgICAgICAgICJ1c2VyIiwKICAgICAgICAgICAgICAgICAgICAiaW5mbyIsCiAgICAgICAgICAg + ICAgICAgICAgIi0tdWlkIiwKICAgICAgICAgICAgICAgICAgICBzZWxmLkVYVEVSTkFMX1JHV19B + RE1JTl9PUFNfVVNFUl9OQU1FLAogICAgICAgICAgICAgICAgICAgICItLXJndy1yZWFsbSIsCiAg + ICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcmVhbG1fbmFtZSwKICAgICAg + ICAgICAgICAgICAgICAiLS1yZ3ctem9uZWdyb3VwIiwKICAgICAgICAgICAgICAgICAgICBzZWxm + Ll9hcmdfcGFyc2VyLnJnd196b25lZ3JvdXBfbmFtZSwKICAgICAgICAgICAgICAgICAgICAiLS1y + Z3ctem9uZSIsCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfem9uZV9u + YW1lLAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAg + ICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnBy + b2Nlc3MuUElQRSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nl + c3NFcnJvciBhcyBleGVjRXJyOgogICAgICAgICAgICAgICAgICAgIGVycl9tc2cgPSAoCiAgICAg + ICAgICAgICAgICAgICAgICAgIGYiZmFpbGVkIHRvIGV4ZWN1dGUgY29tbWFuZCB7Y21kfS4gT3V0 + cHV0OiB7ZXhlY0Vyci5vdXRwdXR9LiAiCiAgICAgICAgICAgICAgICAgICAgICAgIGYiQ29kZTog + e2V4ZWNFcnIucmV0dXJuY29kZX0uIEVycm9yOiB7ZXhlY0Vyci5zdGRlcnJ9IgogICAgICAgICAg + ICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGVycl9tc2cp + CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIEZhbHNlLCAiLTEiCiAgICAg + ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBlcnJfbXNnID0gKAogICAgICAgICAgICAgICAg + ICAgIGYiZmFpbGVkIHRvIGV4ZWN1dGUgY29tbWFuZCB7Y21kfS4gT3V0cHV0OiB7ZXhlY0Vyci5v + dXRwdXR9LiAiCiAgICAgICAgICAgICAgICAgICAgZiJDb2RlOiB7ZXhlY0Vyci5yZXR1cm5jb2Rl + fS4gRXJyb3I6IHtleGVjRXJyLnN0ZGVycn0iCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAg + ICAgICBzeXMuc3RkZXJyLndyaXRlKGVycl9tc2cpCiAgICAgICAgICAgICAgICByZXR1cm4gTm9u + ZSwgTm9uZSwgRmFsc2UsICItMSIKCiAgICAgICAgIyBpZiBpdCBpcyBweXRob24yLCBkb24ndCBj + aGVjayBmb3IgY2VwaCB2ZXJzaW9uIGZvciBhZGRpbmcgYGluZm89cmVhZGAgY2FwKHJnd192YWxp + ZGF0aW9uKQogICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPCAzOgogICAgICAgICAg + ICBqc29ub3V0cHV0ID0ganNvbi5sb2FkcyhvdXRwdXQpCiAgICAgICAgICAgIHJldHVybiAoCiAg + ICAgICAgICAgICAgICBqc29ub3V0cHV0WyJrZXlzIl1bMF1bImFjY2Vzc19rZXkiXSwKICAgICAg + ICAgICAgICAgIGpzb25vdXRwdXRbImtleXMiXVswXVsic2VjcmV0X2tleSJdLAogICAgICAgICAg + ICAgICAgRmFsc2UsCiAgICAgICAgICAgICAgICAiIiwKICAgICAgICAgICAgKQoKICAgICAgICAj + IHNlcGFyYXRlbHkgYWRkIGluZm89cmVhZCBjYXBzIGZvciByZ3ctZW5kcG9pbnQgaXAgdmFsaWRh + dGlvbgogICAgICAgIGluZm9fY2FwX3N1cHBvcnRlZCA9IFRydWUKICAgICAgICBjbWQgPSBbCiAg + ICAgICAgICAgICJyYWRvc2d3LWFkbWluIiwKICAgICAgICAgICAgImNhcHMiLAogICAgICAgICAg + ICAiYWRkIiwKICAgICAgICAgICAgIi0tdWlkIiwKICAgICAgICAgICAgc2VsZi5FWFRFUk5BTF9S + R1dfQURNSU5fT1BTX1VTRVJfTkFNRSwKICAgICAgICAgICAgIi0tY2FwcyIsCiAgICAgICAgICAg + ICJpbmZvPXJlYWQiLAogICAgICAgICAgICAiLS1yZ3ctcmVhbG0iLAogICAgICAgICAgICBzZWxm + Ll9hcmdfcGFyc2VyLnJnd19yZWFsbV9uYW1lLAogICAgICAgICAgICAiLS1yZ3ctem9uZWdyb3Vw + IiwKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfem9uZWdyb3VwX25hbWUsCiAgICAg + ICAgICAgICItLXJndy16b25lIiwKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfem9u + ZV9uYW1lLAogICAgICAgIF0KICAgICAgICB0cnk6CiAgICAgICAgICAgIG91dHB1dCA9IHN1YnBy + b2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICBl + eGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXhlY0VycjoKICAgICAgICAg + ICAgIyBpZiB0aGUgY2VwaCB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgZm9yIGFkZGluZyBgaW5mbz1y + ZWFkYCBjYXAocmd3X3ZhbGlkYXRpb24pCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAg + ICJjb3VsZCBub3QgYWRkIGNhcHM6IHVuYWJsZSB0byBhZGQgY2FwczogaW5mbz1yZWFkXG4iCiAg + ICAgICAgICAgICAgICBpbiBleGVjRXJyLnN0ZGVyci5kZWNvZGUoInV0Zi04IikKICAgICAgICAg + ICAgICAgIGFuZCBleGVjRXJyLnJldHVybmNvZGUgPT0gMjQ0CiAgICAgICAgICAgICk6CiAgICAg + ICAgICAgICAgICBpbmZvX2NhcF9zdXBwb3J0ZWQgPSBGYWxzZQogICAgICAgICAgICBlbHNlOgog + ICAgICAgICAgICAgICAgZXJyX21zZyA9ICgKICAgICAgICAgICAgICAgICAgICBmImZhaWxlZCB0 + byBleGVjdXRlIGNvbW1hbmQge2NtZH0uIE91dHB1dDoge2V4ZWNFcnIub3V0cHV0fS4gIgogICAg + ICAgICAgICAgICAgICAgIGYiQ29kZToge2V4ZWNFcnIucmV0dXJuY29kZX0uIEVycm9yOiB7ZXhl + Y0Vyci5zdGRlcnJ9IgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgc3lzLnN0ZGVy + ci53cml0ZShlcnJfbXNnKQogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIEZhbHNl + LCAiLTEiCgogICAgICAgIGpzb25vdXRwdXQgPSBqc29uLmxvYWRzKG91dHB1dCkKICAgICAgICBy + ZXR1cm4gKAogICAgICAgICAgICBqc29ub3V0cHV0WyJrZXlzIl1bMF1bImFjY2Vzc19rZXkiXSwK + ICAgICAgICAgICAganNvbm91dHB1dFsia2V5cyJdWzBdWyJzZWNyZXRfa2V5Il0sCiAgICAgICAg + ICAgIGluZm9fY2FwX3N1cHBvcnRlZCwKICAgICAgICAgICAgIiIsCiAgICAgICAgKQoKICAgIGRl + ZiB2YWxpZGF0ZV9yYmRfcG9vbChzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5jbHVzdGVyLnBv + b2xfZXhpc3RzKHNlbGYuX2FyZ19wYXJzZXIucmJkX2RhdGFfcG9vbF9uYW1lKToKICAgICAgICAg + ICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgIGYiVGhl + IHByb3ZpZGVkIHBvb2wsICd7c2VsZi5fYXJnX3BhcnNlci5yYmRfZGF0YV9wb29sX25hbWV9Jywg + ZG9lcyBub3QgZXhpc3QiCiAgICAgICAgICAgICkKCiAgICBkZWYgdmFsaWRhdGVfcmFkb3NfbmFt + ZXNwYWNlKHNlbGYpOgogICAgICAgIHJiZF9wb29sX25hbWUgPSBzZWxmLl9hcmdfcGFyc2VyLnJi + ZF9kYXRhX3Bvb2xfbmFtZQogICAgICAgIHJhZG9zX25hbWVzcGFjZSA9IHNlbGYuX2FyZ19wYXJz + ZXIucmFkb3NfbmFtZXNwYWNlCiAgICAgICAgaWYgcmFkb3NfbmFtZXNwYWNlID09ICIiOgogICAg + ICAgICAgICByZXR1cm4KICAgICAgICByYmRfaW5zdCA9IHJiZC5SQkQoKQogICAgICAgIGlvY3R4 + ID0gc2VsZi5jbHVzdGVyLm9wZW5faW9jdHgocmJkX3Bvb2xfbmFtZSkKICAgICAgICBpZiByYmRf + aW5zdC5uYW1lc3BhY2VfZXhpc3RzKGlvY3R4LCByYWRvc19uYW1lc3BhY2UpIGlzIEZhbHNlOgog + ICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAg + ICAgZiJUaGUgcHJvdmlkZWQgcmFkb3MgTmFtZXNwYWNlLCAne3JhZG9zX25hbWVzcGFjZX0nLCAi + CiAgICAgICAgICAgICAgICBmImlzIG5vdCBmb3VuZCBpbiB0aGUgcG9vbCAne3JiZF9wb29sX25h + bWV9JyIKICAgICAgICAgICAgKQoKICAgIGRlZiBnZXRfb3JfY3JlYXRlX3N1YnZvbHVtZV9ncm91 + cChzZWxmLCBzdWJ2b2x1bWVfZ3JvdXAsIGNlcGhmc19maWxlc3lzdGVtX25hbWUpOgogICAgICAg + IGNtZCA9IFsKICAgICAgICAgICAgImNlcGgiLAogICAgICAgICAgICAiZnMiLAogICAgICAgICAg + ICAic3Vidm9sdW1lZ3JvdXAiLAogICAgICAgICAgICAiZ2V0cGF0aCIsCiAgICAgICAgICAgIGNl + cGhmc19maWxlc3lzdGVtX25hbWUsCiAgICAgICAgICAgIHN1YnZvbHVtZV9ncm91cCwKICAgICAg + ICBdCiAgICAgICAgdHJ5OgogICAgICAgICAgICBfID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQo + Y21kLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNh + bGxlZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgY21kID0gWwogICAgICAgICAgICAgICAgImNl + cGgiLAogICAgICAgICAgICAgICAgImZzIiwKICAgICAgICAgICAgICAgICJzdWJ2b2x1bWVncm91 + cCIsCiAgICAgICAgICAgICAgICAiY3JlYXRlIiwKICAgICAgICAgICAgICAgIGNlcGhmc19maWxl + c3lzdGVtX25hbWUsCiAgICAgICAgICAgICAgICBzdWJ2b2x1bWVfZ3JvdXAsCiAgICAgICAgICAg + IF0KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgXyA9IHN1YnByb2Nlc3MuY2hlY2tf + b3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICAgICAgZXhjZXB0IHN1 + YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0 + aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICBmInN1YnZvbHVtZSBncm91 + cCB7c3Vidm9sdW1lX2dyb3VwfSBpcyBub3QgYWJsZSB0byBnZXQgY3JlYXRlZCIKICAgICAgICAg + ICAgICAgICkKCiAgICBkZWYgcGluX3N1YnZvbHVtZSgKICAgICAgICBzZWxmLCBzdWJ2b2x1bWVf + Z3JvdXAsIGNlcGhmc19maWxlc3lzdGVtX25hbWUsIHBpbl90eXBlLCBwaW5fc2V0dGluZwogICAg + KToKICAgICAgICBjbWQgPSBbCiAgICAgICAgICAgICJjZXBoIiwKICAgICAgICAgICAgImZzIiwK + ICAgICAgICAgICAgInN1YnZvbHVtZWdyb3VwIiwKICAgICAgICAgICAgInBpbiIsCiAgICAgICAg + ICAgIGNlcGhmc19maWxlc3lzdGVtX25hbWUsCiAgICAgICAgICAgIHN1YnZvbHVtZV9ncm91cCwK + ICAgICAgICAgICAgcGluX3R5cGUsCiAgICAgICAgICAgIHBpbl9zZXR0aW5nLAogICAgICAgIF0K + ICAgICAgICB0cnk6CiAgICAgICAgICAgIF8gPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQs + IHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVk + UHJvY2Vzc0Vycm9yOgogICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9u + KAogICAgICAgICAgICAgICAgZiJzdWJ2b2x1bWUgZ3JvdXAge3N1YnZvbHVtZV9ncm91cH0gaXMg + bm90IGFibGUgdG8gZ2V0IHBpbm5lZCIKICAgICAgICAgICAgKQoKICAgIGRlZiBnZXRfcmd3X2Zz + aWQoc2VsZiwgYmFzZV91cmwsIHZlcmlmeSk6CiAgICAgICAgYWNjZXNzX2tleSA9IHNlbGYub3V0 + X21hcFsiUkdXX0FETUlOX09QU19VU0VSX0FDQ0VTU19LRVkiXQogICAgICAgIHNlY3JldF9rZXkg + PSBzZWxmLm91dF9tYXBbIlJHV19BRE1JTl9PUFNfVVNFUl9TRUNSRVRfS0VZIl0KICAgICAgICBy + Z3dfZW5kcG9pbnQgPSBzZWxmLl9hcmdfcGFyc2VyLnJnd19lbmRwb2ludAogICAgICAgIGJhc2Vf + dXJsID0gYmFzZV91cmwgKyAiOi8vIiArIHJnd19lbmRwb2ludCArICIvYWRtaW4vaW5mbz8iCiAg + ICAgICAgcGFyYW1zID0geyJmb3JtYXQiOiAianNvbiJ9CiAgICAgICAgcmVxdWVzdF91cmwgPSBi + YXNlX3VybCArIHVybGVuY29kZShwYXJhbXMpCgogICAgICAgIHRyeToKICAgICAgICAgICAgciA9 + IHJlcXVlc3RzLmdldCgKICAgICAgICAgICAgICAgIHJlcXVlc3RfdXJsLAogICAgICAgICAgICAg + ICAgYXV0aD1TM0F1dGgoYWNjZXNzX2tleSwgc2VjcmV0X2tleSwgcmd3X2VuZHBvaW50KSwKICAg + ICAgICAgICAgICAgIHZlcmlmeT12ZXJpZnksCiAgICAgICAgICAgICkKICAgICAgICBleGNlcHQg + cmVxdWVzdHMuZXhjZXB0aW9ucy5UaW1lb3V0OgogICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl + KAogICAgICAgICAgICAgICAgZiJpbnZhbGlkIGVuZHBvaW50Oiwgbm90IGFibGUgdG8gY2FsbCBh + ZG1pbi1vcHMgYXBpe3Jnd19lbmRwb2ludH0iCiAgICAgICAgICAgICkKICAgICAgICAgICAgcmV0 + dXJuICIiLCAiLTEiCiAgICAgICAgcjEgPSByLmpzb24oKQogICAgICAgIGlmIHIxIGlzIE5vbmUg + b3IgcjEuZ2V0KCJpbmZvIikgaXMgTm9uZToKICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgK + ICAgICAgICAgICAgICAgIGYiVGhlIHByb3ZpZGVkIHJndyBFbmRwb2ludCwgJ3tzZWxmLl9hcmdf + cGFyc2VyLnJnd19lbmRwb2ludH0nLCBpcyBpbnZhbGlkLiIKICAgICAgICAgICAgKQogICAgICAg + ICAgICByZXR1cm4gKAogICAgICAgICAgICAgICAgIiIsCiAgICAgICAgICAgICAgICAiLTEiLAog + ICAgICAgICAgICApCgogICAgICAgIHJldHVybiByMVsiaW5mbyJdWyJzdG9yYWdlX2JhY2tlbmRz + Il1bMF1bImNsdXN0ZXJfaWQiXSwgIiIKCiAgICBkZWYgdmFsaWRhdGVfcmd3X2VuZHBvaW50KHNl + bGYsIGluZm9fY2FwX3N1cHBvcnRlZCk6CiAgICAgICAgIyBpZiB0aGUgJ2NsdXN0ZXInIGluc3Rh + bmNlIGlzIGEgZHVtbXkgb25lLAogICAgICAgICMgZG9uJ3QgdHJ5IHRvIHJlYWNoIG91dCB0byB0 + aGUgZW5kcG9pbnQKICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuY2x1c3RlciwgRHVtbXlSYWRv + cyk6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICByZ3dfZW5kcG9pbnQgPSBzZWxmLl9hcmdf + cGFyc2VyLnJnd19lbmRwb2ludAoKICAgICAgICAjIHZhbGlkYXRlIHJndyBlbmRwb2ludCBvbmx5 + IGlmIGlwIGFkZHJlc3MgaXMgcGFzc2VkCiAgICAgICAgaXBfdHlwZSA9IHNlbGYuX2ludmFsaWRf + ZW5kcG9pbnQocmd3X2VuZHBvaW50KQoKICAgICAgICAjIGNoZWNrIGlmIHRoZSByZ3cgZW5kcG9p + bnQgaXMgcmVhY2hhYmxlCiAgICAgICAgY2VydCA9IE5vbmUKICAgICAgICBpZiBub3Qgc2VsZi5f + YXJnX3BhcnNlci5yZ3dfc2tpcF90bHMgYW5kIHNlbGYudmFsaWRhdGVfcmd3X2VuZHBvaW50X3Rs + c19jZXJ0KCk6CiAgICAgICAgICAgIGNlcnQgPSBzZWxmLl9hcmdfcGFyc2VyLnJnd190bHNfY2Vy + dF9wYXRoCiAgICAgICAgYmFzZV91cmwsIHZlcmlmeSwgZXJyID0gc2VsZi5lbmRwb2ludF9kaWFs + KHJnd19lbmRwb2ludCwgaXBfdHlwZSwgY2VydD1jZXJ0KQogICAgICAgIGlmIGVyciAhPSAiIjoK + ICAgICAgICAgICAgcmV0dXJuICItMSIKCiAgICAgICAgIyBjaGVjayBpZiB0aGUgcmd3IGVuZHBv + aW50IGJlbG9uZ3MgdG8gdGhlIHNhbWUgY2x1c3RlcgogICAgICAgICMgb25seSBjaGVjayBpZiBg + aW5mb2AgY2FwIGlzIHN1cHBvcnRlZAogICAgICAgIGlmIGluZm9fY2FwX3N1cHBvcnRlZDoKICAg + ICAgICAgICAgZnNpZCA9IHNlbGYuZ2V0X2ZzaWQoKQogICAgICAgICAgICByZ3dfZnNpZCwgZXJy + ID0gc2VsZi5nZXRfcmd3X2ZzaWQoYmFzZV91cmwsIHZlcmlmeSkKICAgICAgICAgICAgaWYgZXJy + ID09ICItMSI6CiAgICAgICAgICAgICAgICByZXR1cm4gIi0xIgogICAgICAgICAgICBpZiBmc2lk + ICE9IHJnd19mc2lkOgogICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKICAgICAgICAg + ICAgICAgICAgICBmIlRoZSBwcm92aWRlZCByZ3cgRW5kcG9pbnQsICd7c2VsZi5fYXJnX3BhcnNl + ci5yZ3dfZW5kcG9pbnR9JywgaXMgaW52YWxpZC4gV2UgYXJlIHZhbGlkYXRpbmcgYnkgY2FsbGlu + ZyB0aGUgYWRtaW5vcHMgYXBpIHRocm91Z2ggcmd3LWVuZHBvaW50IGFuZCB2YWxpZGF0aW5nIHRo + ZSBjbHVzdGVyX2lkICd7cmd3X2ZzaWR9JyBpcyBlcXVhbCB0byB0aGUgY2VwaCBjbHVzdGVyIGZz + aWQgJ3tmc2lkfSciCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICByZXR1cm4gIi0x + IgoKICAgICAgICAjIGNoZWNrIGlmIHRoZSByZ3cgZW5kcG9pbnQgcG9vbCBleGlzdAogICAgICAg + ICMgb25seSB2YWxpZGF0ZSBpZiByZ3dfcG9vbF9wcmVmaXggaXMgcGFzc2VkIGVsc2UgaXQgd2ls + bCB0YWtlIGRlZmF1bHQgdmFsdWUgYW5kIHdlIGRvbid0IGNyZWF0ZSB0aGVzZSBkZWZhdWx0IHBv + b2xzCiAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcG9vbF9wcmVmaXggIT0gImRlZmF1 + bHQiOgogICAgICAgICAgICByZ3dfcG9vbHNfdG9fdmFsaWRhdGUgPSBbCiAgICAgICAgICAgICAg + ICBmIntzZWxmLl9hcmdfcGFyc2VyLnJnd19wb29sX3ByZWZpeH0ucmd3Lm1ldGEiLAogICAgICAg + ICAgICAgICAgIi5yZ3cucm9vdCIsCiAgICAgICAgICAgICAgICBmIntzZWxmLl9hcmdfcGFyc2Vy + LnJnd19wb29sX3ByZWZpeH0ucmd3LmNvbnRyb2wiLAogICAgICAgICAgICAgICAgZiJ7c2VsZi5f + YXJnX3BhcnNlci5yZ3dfcG9vbF9wcmVmaXh9LnJndy5sb2ciLAogICAgICAgICAgICBdCiAgICAg + ICAgICAgIGZvciBfcmd3X3Bvb2xfdG9fdmFsaWRhdGUgaW4gcmd3X3Bvb2xzX3RvX3ZhbGlkYXRl + OgogICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuY2x1c3Rlci5wb29sX2V4aXN0cyhfcmd3X3Bv + b2xfdG9fdmFsaWRhdGUpOgogICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCiAg + ICAgICAgICAgICAgICAgICAgICAgIGYiVGhlIHByb3ZpZGVkIHBvb2wsICd7X3Jnd19wb29sX3Rv + X3ZhbGlkYXRlfScsIGRvZXMgbm90IGV4aXN0IgogICAgICAgICAgICAgICAgICAgICkKICAgICAg + ICAgICAgICAgICAgICByZXR1cm4gIi0xIgoKICAgICAgICByZXR1cm4gIiIKCiAgICBkZWYgdmFs + aWRhdGVfcmd3X211bHRpc2l0ZShzZWxmLCByZ3dfbXVsdGlzaXRlX2NvbmZpZ19uYW1lLCByZ3df + bXVsdGlzaXRlX2NvbmZpZyk6CiAgICAgICAgaWYgcmd3X211bHRpc2l0ZV9jb25maWcgIT0gIiI6 + CiAgICAgICAgICAgIGNtZCA9IFsKICAgICAgICAgICAgICAgICJyYWRvc2d3LWFkbWluIiwKICAg + ICAgICAgICAgICAgIHJnd19tdWx0aXNpdGVfY29uZmlnLAogICAgICAgICAgICAgICAgImdldCIs + CiAgICAgICAgICAgICAgICAiLS1yZ3ctIiArIHJnd19tdWx0aXNpdGVfY29uZmlnLAogICAgICAg + ICAgICAgICAgcmd3X211bHRpc2l0ZV9jb25maWdfbmFtZSwKICAgICAgICAgICAgXQogICAgICAg + ICAgICB0cnk6CiAgICAgICAgICAgICAgICBfID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21k + LCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5D + YWxsZWRQcm9jZXNzRXJyb3IgYXMgZXhlY0VycjoKICAgICAgICAgICAgICAgIGVycl9tc2cgPSAo + CiAgICAgICAgICAgICAgICAgICAgZiJmYWlsZWQgdG8gZXhlY3V0ZSBjb21tYW5kIHtjbWR9LiBP + dXRwdXQ6IHtleGVjRXJyLm91dHB1dH0uICIKICAgICAgICAgICAgICAgICAgICBmIkNvZGU6IHtl + eGVjRXJyLnJldHVybmNvZGV9LiBFcnJvcjoge2V4ZWNFcnIuc3RkZXJyfSIKICAgICAgICAgICAg + ICAgICkKICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZXJyX21zZykKICAgICAgICAg + ICAgICAgIHJldHVybiAiLTEiCiAgICAgICAgcmV0dXJuICIiCgogICAgZGVmIF9nZW5fb3V0cHV0 + X21hcChzZWxmKToKICAgICAgICBpZiBzZWxmLm91dF9tYXA6CiAgICAgICAgICAgIHJldHVybgog + ICAgICAgIHNlbGYuX2FyZ19wYXJzZXIuazhzX2NsdXN0ZXJfbmFtZSA9ICgKICAgICAgICAgICAg + c2VsZi5fYXJnX3BhcnNlci5rOHNfY2x1c3Rlcl9uYW1lLmxvd2VyKCkKICAgICAgICApICAjIGFs + d2F5cyBjb252ZXJ0IGNsdXN0ZXIgbmFtZSB0byBsb3dlcmNhc2UgY2hhcmFjdGVycwogICAgICAg + IHNlbGYudmFsaWRhdGVfcmJkX3Bvb2woKQogICAgICAgIHNlbGYudmFsaWRhdGVfcmFkb3NfbmFt + ZXNwYWNlKCkKICAgICAgICBzZWxmLl9leGNsdWRlZF9rZXlzLmFkZCgiSzhTX0NMVVNURVJfTkFN + RSIpCiAgICAgICAgc2VsZi5nZXRfY2VwaGZzX2RhdGFfcG9vbF9kZXRhaWxzKCkKICAgICAgICBz + ZWxmLm91dF9tYXBbIk5BTUVTUEFDRSJdID0gc2VsZi5fYXJnX3BhcnNlci5uYW1lc3BhY2UKICAg + ICAgICBzZWxmLm91dF9tYXBbIks4U19DTFVTVEVSX05BTUUiXSA9IHNlbGYuX2FyZ19wYXJzZXIu + azhzX2NsdXN0ZXJfbmFtZQogICAgICAgIHNlbGYub3V0X21hcFsiUk9PS19FWFRFUk5BTF9GU0lE + Il0gPSBzZWxmLmdldF9mc2lkKCkKICAgICAgICBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxf + VVNFUk5BTUUiXSA9IHNlbGYucnVuX2FzX3VzZXIKICAgICAgICBzZWxmLm91dF9tYXBbIlJPT0tf + RVhURVJOQUxfQ0VQSF9NT05fREFUQSJdID0gc2VsZi5nZXRfY2VwaF9leHRlcm5hbF9tb25fZGF0 + YSgpCiAgICAgICAgc2VsZi5vdXRfbWFwWyJST09LX0VYVEVSTkFMX1VTRVJfU0VDUkVUIl0gPSBz + ZWxmLmNyZWF0ZV9jaGVja2VyS2V5KAogICAgICAgICAgICAiY2xpZW50LmhlYWx0aGNoZWNrZXIi + CiAgICAgICAgKQogICAgICAgIHNlbGYub3V0X21hcFsiUk9PS19FWFRFUk5BTF9EQVNIQk9BUkRf + TElOSyJdID0gc2VsZi5nZXRfY2VwaF9kYXNoYm9hcmRfbGluaygpCiAgICAgICAgKAogICAgICAg + ICAgICBzZWxmLm91dF9tYXBbIkNTSV9SQkRfTk9ERV9TRUNSRVQiXSwKICAgICAgICAgICAgc2Vs + Zi5vdXRfbWFwWyJDU0lfUkJEX05PREVfU0VDUkVUX05BTUUiXSwKICAgICAgICApID0gc2VsZi5j + cmVhdGVfY2VwaENTSUtleXJpbmdfdXNlcigiY2xpZW50LmNzaS1yYmQtbm9kZSIpCiAgICAgICAg + KAogICAgICAgICAgICBzZWxmLm91dF9tYXBbIkNTSV9SQkRfUFJPVklTSU9ORVJfU0VDUkVUIl0s + CiAgICAgICAgICAgIHNlbGYub3V0X21hcFsiQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVRfTkFN + RSJdLAogICAgICAgICkgPSBzZWxmLmNyZWF0ZV9jZXBoQ1NJS2V5cmluZ191c2VyKCJjbGllbnQu + Y3NpLXJiZC1wcm92aXNpb25lciIpCiAgICAgICAgc2VsZi5vdXRfbWFwWyJDRVBIRlNfUE9PTF9O + QU1FIl0gPSBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19kYXRhX3Bvb2xfbmFtZQogICAgICAgIHNl + bGYub3V0X21hcFsKICAgICAgICAgICAgIkNFUEhGU19NRVRBREFUQV9QT09MX05BTUUiCiAgICAg + ICAgXSA9IHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX21ldGFkYXRhX3Bvb2xfbmFtZQogICAgICAg + IHNlbGYub3V0X21hcFsiQ0VQSEZTX0ZTX05BTUUiXSA9IHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZz + X2ZpbGVzeXN0ZW1fbmFtZQogICAgICAgIHNlbGYub3V0X21hcFsKICAgICAgICAgICAgIlJFU1RS + SUNURURfQVVUSF9QRVJNSVNTSU9OIgogICAgICAgIF0gPSBzZWxmLl9hcmdfcGFyc2VyLnJlc3Ry + aWN0ZWRfYXV0aF9wZXJtaXNzaW9uCiAgICAgICAgc2VsZi5vdXRfbWFwWyJSQURPU19OQU1FU1BB + Q0UiXSA9IHNlbGYuX2FyZ19wYXJzZXIucmFkb3NfbmFtZXNwYWNlCiAgICAgICAgc2VsZi5vdXRf + bWFwWyJTVUJWT0xVTUVfR1JPVVAiXSA9IHNlbGYuX2FyZ19wYXJzZXIuc3Vidm9sdW1lX2dyb3Vw + CiAgICAgICAgc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZTX05PREVfU0VDUkVUIl0gPSAiIgogICAg + ICAgIHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19QUk9WSVNJT05FUl9TRUNSRVQiXSA9ICIiCiAg + ICAgICAgIyBjcmVhdGUgQ2VwaEZTIG5vZGUgYW5kIHByb3Zpc2lvbmVyIGtleXJpbmcgb25seSB3 + aGVuIE1EUyBleGlzdHMKICAgICAgICBpZiBzZWxmLm91dF9tYXBbIkNFUEhGU19GU19OQU1FIl0g + YW5kIHNlbGYub3V0X21hcFsiQ0VQSEZTX1BPT0xfTkFNRSJdOgogICAgICAgICAgICAoCiAgICAg + ICAgICAgICAgICBzZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfTk9ERV9TRUNSRVQiXSwKICAgICAg + ICAgICAgICAgIHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19OT0RFX1NFQ1JFVF9OQU1FIl0sCiAg + ICAgICAgICAgICkgPSBzZWxmLmNyZWF0ZV9jZXBoQ1NJS2V5cmluZ191c2VyKCJjbGllbnQuY3Np + LWNlcGhmcy1ub2RlIikKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgc2VsZi5vdXRfbWFw + WyJDU0lfQ0VQSEZTX1BST1ZJU0lPTkVSX1NFQ1JFVCJdLAogICAgICAgICAgICAgICAgc2VsZi5v + dXRfbWFwWyJDU0lfQ0VQSEZTX1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FIl0sCiAgICAgICAgICAg + ICkgPSBzZWxmLmNyZWF0ZV9jZXBoQ1NJS2V5cmluZ191c2VyKCJjbGllbnQuY3NpLWNlcGhmcy1w + cm92aXNpb25lciIpCiAgICAgICAgICAgICMgY3JlYXRlIHRoZSBkZWZhdWx0ICJjc2kiIHN1YnZv + bHVtZWdyb3VwCiAgICAgICAgICAgIHNlbGYuZ2V0X29yX2NyZWF0ZV9zdWJ2b2x1bWVfZ3JvdXAo + CiAgICAgICAgICAgICAgICAiY3NpIiwgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZmlsZXN5c3Rl + bV9uYW1lCiAgICAgICAgICAgICkKICAgICAgICAgICAgIyBwaW4gdGhlIGRlZmF1bHQgImNzaSIg + c3Vidm9sdW1lZ3JvdXAKICAgICAgICAgICAgc2VsZi5waW5fc3Vidm9sdW1lKAogICAgICAgICAg + ICAgICAgImNzaSIsIHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2ZpbGVzeXN0ZW1fbmFtZSwgImRp + c3RyaWJ1dGVkIiwgIjEiCiAgICAgICAgICAgICkKICAgICAgICAgICAgaWYgc2VsZi5vdXRfbWFw + WyJTVUJWT0xVTUVfR1JPVVAiXToKICAgICAgICAgICAgICAgIHNlbGYuZ2V0X29yX2NyZWF0ZV9z + dWJ2b2x1bWVfZ3JvdXAoCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5zdWJ2 + b2x1bWVfZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNf + ZmlsZXN5c3RlbV9uYW1lLAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgc2VsZi5w + aW5fc3Vidm9sdW1lKAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIuc3Vidm9s + dW1lX2dyb3VwLAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2Zp + bGVzeXN0ZW1fbmFtZSwKICAgICAgICAgICAgICAgICAgICAiZGlzdHJpYnV0ZWQiLAogICAgICAg + ICAgICAgICAgICAgICIxIiwKICAgICAgICAgICAgICAgICkKICAgICAgICBzZWxmLm91dF9tYXBb + IlJHV19UTFNfQ0VSVCJdID0gIiIKICAgICAgICBzZWxmLm91dF9tYXBbIk1PTklUT1JJTkdfRU5E + UE9JTlQiXSA9ICIiCiAgICAgICAgc2VsZi5vdXRfbWFwWyJNT05JVE9SSU5HX0VORFBPSU5UX1BP + UlQiXSA9ICIiCiAgICAgICAgaWYgbm90IHNlbGYuX2FyZ19wYXJzZXIuc2tpcF9tb25pdG9yaW5n + X2VuZHBvaW50OgogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICBzZWxmLm91dF9tYXBbIk1P + TklUT1JJTkdfRU5EUE9JTlQiXSwKICAgICAgICAgICAgICAgIHNlbGYub3V0X21hcFsiTU9OSVRP + UklOR19FTkRQT0lOVF9QT1JUIl0sCiAgICAgICAgICAgICkgPSBzZWxmLmdldF9hY3RpdmVfYW5k + X3N0YW5kYnlfbWdycygpCiAgICAgICAgc2VsZi5vdXRfbWFwWyJSQkRfUE9PTF9OQU1FIl0gPSBz + ZWxmLl9hcmdfcGFyc2VyLnJiZF9kYXRhX3Bvb2xfbmFtZQogICAgICAgIHNlbGYub3V0X21hcFsK + ICAgICAgICAgICAgIlJCRF9NRVRBREFUQV9FQ19QT09MX05BTUUiCiAgICAgICAgXSA9IHNlbGYu + dmFsaWRhdGVfcmJkX21ldGFkYXRhX2VjX3Bvb2xfbmFtZSgpCiAgICAgICAgc2VsZi5vdXRfbWFw + WyJSR1dfUE9PTF9QUkVGSVgiXSA9IHNlbGYuX2FyZ19wYXJzZXIucmd3X3Bvb2xfcHJlZml4CiAg + ICAgICAgc2VsZi5vdXRfbWFwWyJSR1dfRU5EUE9JTlQiXSA9ICIiCiAgICAgICAgaWYgc2VsZi5f + YXJnX3BhcnNlci5yZ3dfZW5kcG9pbnQ6CiAgICAgICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIu + ZHJ5X3J1bjoKICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3Jnd19hZG1pbl9vcHNfdXNlcigp + CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAg + ICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcmVhbG1fbmFtZSAhPSAiIgogICAgICAgICAgICAgICAg + ICAgIGFuZCBzZWxmLl9hcmdfcGFyc2VyLnJnd196b25lZ3JvdXBfbmFtZSAhPSAiIgogICAgICAg + ICAgICAgICAgICAgIGFuZCBzZWxmLl9hcmdfcGFyc2VyLnJnd196b25lX25hbWUgIT0gIiIKICAg + ICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAgICAgZXJyID0gc2VsZi52YWxpZGF0ZV9y + Z3dfbXVsdGlzaXRlKAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJn + d19yZWFsbV9uYW1lLCAicmVhbG0iCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAg + ICAgICAgIGVyciA9IHNlbGYudmFsaWRhdGVfcmd3X211bHRpc2l0ZSgKICAgICAgICAgICAgICAg + ICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfem9uZWdyb3VwX25hbWUsICJ6b25lZ3JvdXAi + CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIGVyciA9IHNlbGYudmFs + aWRhdGVfcmd3X211bHRpc2l0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3Bh + cnNlci5yZ3dfem9uZV9uYW1lLCAiem9uZSIKICAgICAgICAgICAgICAgICAgICApCgogICAgICAg + ICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3Jl + YWxtX25hbWUgPT0gIiIKICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZi5fYXJnX3BhcnNlci5y + Z3dfem9uZWdyb3VwX25hbWUgPT0gIiIKICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZi5fYXJn + X3BhcnNlci5yZ3dfem9uZV9uYW1lID09ICIiCiAgICAgICAgICAgICAgICApIG9yICgKICAgICAg + ICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJnd19yZWFsbV9uYW1lICE9ICIiCiAgICAg + ICAgICAgICAgICAgICAgYW5kIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pvbmVncm91cF9uYW1lICE9 + ICIiCiAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pvbmVfbmFt + ZSAhPSAiIgogICAgICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAg + ICAgICAgICAgICAgICAgIHNlbGYub3V0X21hcFsiUkdXX0FETUlOX09QU19VU0VSX0FDQ0VTU19L + RVkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vdXRfbWFwWyJSR1dfQURNSU5fT1BT + X1VTRVJfU0VDUkVUX0tFWSJdLAogICAgICAgICAgICAgICAgICAgICAgICBpbmZvX2NhcF9zdXBw + b3J0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGVyciwKICAgICAgICAgICAgICAgICAgICAp + ID0gc2VsZi5jcmVhdGVfcmd3X2FkbWluX29wc191c2VyKCkKICAgICAgICAgICAgICAgICAgICBl + cnIgPSBzZWxmLnZhbGlkYXRlX3Jnd19lbmRwb2ludChpbmZvX2NhcF9zdXBwb3J0ZWQpCiAgICAg + ICAgICAgICAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5yZ3dfdGxzX2NlcnRfcGF0aDoKICAg + ICAgICAgICAgICAgICAgICAgICAgc2VsZi5vdXRfbWFwWwogICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIlJHV19UTFNfQ0VSVCIKICAgICAgICAgICAgICAgICAgICAgICAgXSA9IHNlbGYudmFs + aWRhdGVfcmd3X2VuZHBvaW50X3Rsc19jZXJ0KCkKICAgICAgICAgICAgICAgICAgICAjIGlmIHRo + ZXJlIGlzIG5vIGVycm9yLCBzZXQgdGhlIFJHV19FTkRQT0lOVAogICAgICAgICAgICAgICAgICAg + IGlmIGVyciAhPSAiLTEiOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm91dF9tYXBbIlJH + V19FTkRQT0lOVCJdID0gc2VsZi5fYXJnX3BhcnNlci5yZ3dfZW5kcG9pbnQKICAgICAgICAgICAg + ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZXJyID0gIlBsZWFzZSBwcm92aWRlIGFsbCB0 + aGUgUkdXIG11bHRpc2l0ZSBwYXJhbWV0ZXJzIG9yIG5vbmUgb2YgdGhlbSIKICAgICAgICAgICAg + ICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGVycikKCiAgICBkZWYgZ2VuX3NoZWxsX291dChzZWxm + KToKICAgICAgICBzZWxmLl9nZW5fb3V0cHV0X21hcCgpCiAgICAgICAgc2hPdXRJTyA9IFN0cmlu + Z0lPKCkKICAgICAgICBmb3IgaywgdiBpbiBzZWxmLm91dF9tYXAuaXRlbXMoKToKICAgICAgICAg + ICAgaWYgdiBhbmQgayBub3QgaW4gc2VsZi5fZXhjbHVkZWRfa2V5czoKICAgICAgICAgICAgICAg + IHNoT3V0SU8ud3JpdGUoZiJleHBvcnQge2t9PXt2fXtMSU5FU0VQfSIpCiAgICAgICAgc2hPdXQg + PSBzaE91dElPLmdldHZhbHVlKCkKICAgICAgICBzaE91dElPLmNsb3NlKCkKICAgICAgICByZXR1 + cm4gc2hPdXQKCiAgICBkZWYgZ2VuX2pzb25fb3V0KHNlbGYpOgogICAgICAgIHNlbGYuX2dlbl9v + dXRwdXRfbWFwKCkKICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLmRyeV9ydW46CiAgICAgICAg + ICAgIHJldHVybiAiIgogICAgICAgIGpzb25fb3V0ID0gWwogICAgICAgICAgICB7CiAgICAgICAg + ICAgICAgICAibmFtZSI6ICJyb29rLWNlcGgtbW9uLWVuZHBvaW50cyIsCiAgICAgICAgICAgICAg + ICAia2luZCI6ICJDb25maWdNYXAiLAogICAgICAgICAgICAgICAgImRhdGEiOiB7CiAgICAgICAg + ICAgICAgICAgICAgImRhdGEiOiBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxfQ0VQSF9NT05f + REFUQSJdLAogICAgICAgICAgICAgICAgICAgICJtYXhNb25JZCI6ICIwIiwKICAgICAgICAgICAg + ICAgICAgICAibWFwcGluZyI6ICJ7fSIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9 + LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJyb29rLWNlcGgtbW9uIiwK + ICAgICAgICAgICAgICAgICJraW5kIjogIlNlY3JldCIsCiAgICAgICAgICAgICAgICAiZGF0YSI6 + IHsKICAgICAgICAgICAgICAgICAgICAiYWRtaW4tc2VjcmV0IjogImFkbWluLXNlY3JldCIsCiAg + ICAgICAgICAgICAgICAgICAgImZzaWQiOiBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxfRlNJ + RCJdLAogICAgICAgICAgICAgICAgICAgICJtb24tc2VjcmV0IjogIm1vbi1zZWNyZXQiLAogICAg + ICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAg + ICAgIm5hbWUiOiAicm9vay1jZXBoLW9wZXJhdG9yLWNyZWRzIiwKICAgICAgICAgICAgICAgICJr + aW5kIjogIlNlY3JldCIsCiAgICAgICAgICAgICAgICAiZGF0YSI6IHsKICAgICAgICAgICAgICAg + ICAgICAidXNlcklEIjogc2VsZi5vdXRfbWFwWyJST09LX0VYVEVSTkFMX1VTRVJOQU1FIl0sCiAg + ICAgICAgICAgICAgICAgICAgInVzZXJLZXkiOiBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxf + VVNFUl9TRUNSRVQiXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAg + XQoKICAgICAgICAjIGlmICdNT05JVE9SSU5HX0VORFBPSU5UJyBleGlzdHMsIHRoZW4gb25seSBh + ZGQgJ21vbml0b3JpbmctZW5kcG9pbnQnIHRvIENsdXN0ZXIKICAgICAgICBpZiAoCiAgICAgICAg + ICAgIHNlbGYub3V0X21hcFsiTU9OSVRPUklOR19FTkRQT0lOVCJdCiAgICAgICAgICAgIGFuZCBz + ZWxmLm91dF9tYXBbIk1PTklUT1JJTkdfRU5EUE9JTlRfUE9SVCJdCiAgICAgICAgKToKICAgICAg + ICAgICAganNvbl9vdXQuYXBwZW5kKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg + ICAgICJuYW1lIjogIm1vbml0b3JpbmctZW5kcG9pbnQiLAogICAgICAgICAgICAgICAgICAgICJr + aW5kIjogIkNlcGhDbHVzdGVyIiwKICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsKICAgICAg + ICAgICAgICAgICAgICAgICAgIk1vbml0b3JpbmdFbmRwb2ludCI6IHNlbGYub3V0X21hcFsiTU9O + SVRPUklOR19FTkRQT0lOVCJdLAogICAgICAgICAgICAgICAgICAgICAgICAiTW9uaXRvcmluZ1Bv + cnQiOiBzZWxmLm91dF9tYXBbIk1PTklUT1JJTkdfRU5EUE9JTlRfUE9SVCJdLAogICAgICAgICAg + ICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkKCiAgICAgICAgIyBp + ZiAnQ1NJX1JCRF9OT0RFX1NFQ1JFVCcgZXhpc3RzLCB0aGVuIG9ubHkgYWRkICdyb29rLWNzaS1y + YmQtcHJvdmlzaW9uZXInIFNlY3JldAogICAgICAgIGlmICgKICAgICAgICAgICAgc2VsZi5vdXRf + bWFwWyJDU0lfUkJEX05PREVfU0VDUkVUIl0KICAgICAgICAgICAgYW5kIHNlbGYub3V0X21hcFsi + Q1NJX1JCRF9OT0RFX1NFQ1JFVF9OQU1FIl0KICAgICAgICApOgogICAgICAgICAgICBqc29uX291 + dC5hcHBlbmQoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiBm + InJvb2ste3NlbGYub3V0X21hcFsnQ1NJX1JCRF9OT0RFX1NFQ1JFVF9OQU1FJ119IiwKICAgICAg + ICAgICAgICAgICAgICAia2luZCI6ICJTZWNyZXQiLAogICAgICAgICAgICAgICAgICAgICJkYXRh + IjogewogICAgICAgICAgICAgICAgICAgICAgICAidXNlcklEIjogc2VsZi5vdXRfbWFwWyJDU0lf + UkJEX05PREVfU0VDUkVUX05BTUUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgInVzZXJLZXki + OiBzZWxmLm91dF9tYXBbIkNTSV9SQkRfTk9ERV9TRUNSRVQiXSwKICAgICAgICAgICAgICAgICAg + ICB9LAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApCiAgICAgICAgIyBpZiAnQ1NJX1JC + RF9QUk9WSVNJT05FUl9TRUNSRVQnIGV4aXN0cywgdGhlbiBvbmx5IGFkZCAncm9vay1jc2ktcmJk + LXByb3Zpc2lvbmVyJyBTZWNyZXQKICAgICAgICBpZiAoCiAgICAgICAgICAgIHNlbGYub3V0X21h + cFsiQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVQiXQogICAgICAgICAgICBhbmQgc2VsZi5vdXRf + bWFwWyJDU0lfUkJEX1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FIl0KICAgICAgICApOgogICAgICAg + ICAgICBqc29uX291dC5hcHBlbmQoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg + ICAgIm5hbWUiOiBmInJvb2ste3NlbGYub3V0X21hcFsnQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNS + RVRfTkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgImtpbmQiOiAiU2VjcmV0IiwKICAgICAg + ICAgICAgICAgICAgICAiZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZXJJRCI6 + IHNlbGYub3V0X21hcFsiQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVRfTkFNRSJdLAogICAgICAg + ICAgICAgICAgICAgICAgICAidXNlcktleSI6IHNlbGYub3V0X21hcFsiQ1NJX1JCRF9QUk9WSVNJ + T05FUl9TRUNSRVQiXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfQog + ICAgICAgICAgICApCiAgICAgICAgIyBpZiAnQ1NJX0NFUEhGU19QUk9WSVNJT05FUl9TRUNSRVQn + IGV4aXN0cywgdGhlbiBvbmx5IGFkZCAncm9vay1jc2ktY2VwaGZzLXByb3Zpc2lvbmVyJyBTZWNy + ZXQKICAgICAgICBpZiAoCiAgICAgICAgICAgIHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19QUk9W + SVNJT05FUl9TRUNSRVQiXQogICAgICAgICAgICBhbmQgc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZT + X1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FIl0KICAgICAgICApOgogICAgICAgICAgICBqc29uX291 + dC5hcHBlbmQoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiBm + InJvb2ste3NlbGYub3V0X21hcFsnQ1NJX0NFUEhGU19QUk9WSVNJT05FUl9TRUNSRVRfTkFNRSdd + fSIsCiAgICAgICAgICAgICAgICAgICAgImtpbmQiOiAiU2VjcmV0IiwKICAgICAgICAgICAgICAg + ICAgICAiZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImFkbWluSUQiOiBzZWxmLm91 + dF9tYXBbIkNTSV9DRVBIRlNfUFJPVklTSU9ORVJfU0VDUkVUX05BTUUiXSwKICAgICAgICAgICAg + ICAgICAgICAgICAgImFkbWluS2V5Ijogc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZTX1BST1ZJU0lP + TkVSX1NFQ1JFVCJdLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9CiAg + ICAgICAgICAgICkKICAgICAgICAjIGlmICdDU0lfQ0VQSEZTX05PREVfU0VDUkVUJyBleGlzdHMs + IHRoZW4gb25seSBhZGQgJ3Jvb2stY3NpLWNlcGhmcy1ub2RlJyBTZWNyZXQKICAgICAgICBpZiAo + CiAgICAgICAgICAgIHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19OT0RFX1NFQ1JFVCJdCiAgICAg + ICAgICAgIGFuZCBzZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfTk9ERV9TRUNSRVRfTkFNRSJdCiAg + ICAgICAgKToKICAgICAgICAgICAganNvbl9vdXQuYXBwZW5kKAogICAgICAgICAgICAgICAgewog + ICAgICAgICAgICAgICAgICAgICJuYW1lIjogZiJyb29rLXtzZWxmLm91dF9tYXBbJ0NTSV9DRVBI + RlNfTk9ERV9TRUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgImtpbmQiOiAiU2Vj + cmV0IiwKICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAg + ICAgImFkbWluSUQiOiBzZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfTk9ERV9TRUNSRVRfTkFNRSJd + LAogICAgICAgICAgICAgICAgICAgICAgICAiYWRtaW5LZXkiOiBzZWxmLm91dF9tYXBbIkNTSV9D + RVBIRlNfTk9ERV9TRUNSRVQiXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAg + ICAgfQogICAgICAgICAgICApCiAgICAgICAgIyBpZiAnUk9PS19FWFRFUk5BTF9EQVNIQk9BUkRf + TElOSycgZXhpc3RzLCB0aGVuIG9ubHkgYWRkICdyb29rLWNlcGgtZGFzaGJvYXJkLWxpbmsnIFNl + Y3JldAogICAgICAgIGlmIHNlbGYub3V0X21hcFsiUk9PS19FWFRFUk5BTF9EQVNIQk9BUkRfTElO + SyJdOgogICAgICAgICAgICBqc29uX291dC5hcHBlbmQoCiAgICAgICAgICAgICAgICB7CiAgICAg + ICAgICAgICAgICAgICAgIm5hbWUiOiAicm9vay1jZXBoLWRhc2hib2FyZC1saW5rIiwKICAgICAg + ICAgICAgICAgICAgICAia2luZCI6ICJTZWNyZXQiLAogICAgICAgICAgICAgICAgICAgICJkYXRh + IjogewogICAgICAgICAgICAgICAgICAgICAgICAidXNlcklEIjogImNlcGgtZGFzaGJvYXJkLWxp + bmsiLAogICAgICAgICAgICAgICAgICAgICAgICAidXNlcktleSI6IHNlbGYub3V0X21hcFsiUk9P + S19FWFRFUk5BTF9EQVNIQk9BUkRfTElOSyJdLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAg + ICAgICAgICAgICB9CiAgICAgICAgICAgICkKICAgICAgICBpZiBzZWxmLm91dF9tYXBbIlJCRF9N + RVRBREFUQV9FQ19QT09MX05BTUUiXToKICAgICAgICAgICAganNvbl9vdXQuYXBwZW5kKAogICAg + ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImNlcGgtcmJkIiwKICAg + ICAgICAgICAgICAgICAgICAia2luZCI6ICJTdG9yYWdlQ2xhc3MiLAogICAgICAgICAgICAgICAg + ICAgICJkYXRhIjogewogICAgICAgICAgICAgICAgICAgICAgICAiZGF0YVBvb2wiOiBzZWxmLm91 + dF9tYXBbIlJCRF9QT09MX05BTUUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgInBvb2wiOiBz + ZWxmLm91dF9tYXBbIlJCRF9NRVRBREFUQV9FQ19QT09MX05BTUUiXSwKICAgICAgICAgICAgICAg + ICAgICAgICAgImNzaS5zdG9yYWdlLms4cy5pby9wcm92aXNpb25lci1zZWNyZXQtbmFtZSI6IGYi + cm9vay17c2VsZi5vdXRfbWFwWydDU0lfUkJEX1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FJ119IiwK + ICAgICAgICAgICAgICAgICAgICAgICAgImNzaS5zdG9yYWdlLms4cy5pby9jb250cm9sbGVyLWV4 + cGFuZC1zZWNyZXQtbmFtZSI6IGYicm9vay17c2VsZi5vdXRfbWFwWydDU0lfUkJEX1BST1ZJU0lP + TkVSX1NFQ1JFVF9OQU1FJ119IiwKICAgICAgICAgICAgICAgICAgICAgICAgImNzaS5zdG9yYWdl + Lms4cy5pby9ub2RlLXN0YWdlLXNlY3JldC1uYW1lIjogZiJyb29rLXtzZWxmLm91dF9tYXBbJ0NT + SV9SQkRfTk9ERV9TRUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAg + ICAgICAgICAgIH0KICAgICAgICAgICAgKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGpzb25f + b3V0LmFwcGVuZCgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6 + ICJjZXBoLXJiZCIsCiAgICAgICAgICAgICAgICAgICAgImtpbmQiOiAiU3RvcmFnZUNsYXNzIiwK + ICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInBv + b2wiOiBzZWxmLm91dF9tYXBbIlJCRF9QT09MX05BTUUiXSwKICAgICAgICAgICAgICAgICAgICAg + ICAgImNzaS5zdG9yYWdlLms4cy5pby9wcm92aXNpb25lci1zZWNyZXQtbmFtZSI6IGYicm9vay17 + c2VsZi5vdXRfbWFwWydDU0lfUkJEX1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FJ119IiwKICAgICAg + ICAgICAgICAgICAgICAgICAgImNzaS5zdG9yYWdlLms4cy5pby9jb250cm9sbGVyLWV4cGFuZC1z + ZWNyZXQtbmFtZSI6IGYicm9vay17c2VsZi5vdXRfbWFwWydDU0lfUkJEX1BST1ZJU0lPTkVSX1NF + Q1JFVF9OQU1FJ119IiwKICAgICAgICAgICAgICAgICAgICAgICAgImNzaS5zdG9yYWdlLms4cy5p + by9ub2RlLXN0YWdlLXNlY3JldC1uYW1lIjogZiJyb29rLXtzZWxmLm91dF9tYXBbJ0NTSV9SQkRf + Tk9ERV9TRUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAg + ICAgIH0KICAgICAgICAgICAgKQogICAgICAgICMgaWYgJ0NFUEhGU19GU19OQU1FJyBleGlzdHMs + IHRoZW4gb25seSBhZGQgJ2NlcGhmcycgU3RvcmFnZUNsYXNzCiAgICAgICAgaWYgc2VsZi5vdXRf + bWFwWyJDRVBIRlNfRlNfTkFNRSJdOgogICAgICAgICAgICBqc29uX291dC5hcHBlbmQoCiAgICAg + ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2VwaGZzIiwKICAgICAg + ICAgICAgICAgICAgICAia2luZCI6ICJTdG9yYWdlQ2xhc3MiLAogICAgICAgICAgICAgICAgICAg + ICJkYXRhIjogewogICAgICAgICAgICAgICAgICAgICAgICAiZnNOYW1lIjogc2VsZi5vdXRfbWFw + WyJDRVBIRlNfRlNfTkFNRSJdLAogICAgICAgICAgICAgICAgICAgICAgICAicG9vbCI6IHNlbGYu + b3V0X21hcFsiQ0VQSEZTX1BPT0xfTkFNRSJdLAogICAgICAgICAgICAgICAgICAgICAgICAiY3Np + LnN0b3JhZ2UuazhzLmlvL3Byb3Zpc2lvbmVyLXNlY3JldC1uYW1lIjogZiJyb29rLXtzZWxmLm91 + dF9tYXBbJ0NTSV9DRVBIRlNfUFJPVklTSU9ORVJfU0VDUkVUX05BTUUnXX0iLAogICAgICAgICAg + ICAgICAgICAgICAgICAiY3NpLnN0b3JhZ2UuazhzLmlvL2NvbnRyb2xsZXItZXhwYW5kLXNlY3Jl + dC1uYW1lIjogZiJyb29rLXtzZWxmLm91dF9tYXBbJ0NTSV9DRVBIRlNfUFJPVklTSU9ORVJfU0VD + UkVUX05BTUUnXX0iLAogICAgICAgICAgICAgICAgICAgICAgICAiY3NpLnN0b3JhZ2UuazhzLmlv + L25vZGUtc3RhZ2Utc2VjcmV0LW5hbWUiOiBmInJvb2ste3NlbGYub3V0X21hcFsnQ1NJX0NFUEhG + U19OT0RFX1NFQ1JFVF9OQU1FJ119IiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAg + ICAgICAgfQogICAgICAgICAgICApCiAgICAgICAgIyBpZiAnUkdXX0VORFBPSU5UJyBleGlzdHMs + IHRoZW4gb25seSBhZGQgJ2NlcGgtcmd3JyBTdG9yYWdlQ2xhc3MKICAgICAgICBpZiBzZWxmLm91 + dF9tYXBbIlJHV19FTkRQT0lOVCJdOgogICAgICAgICAgICBqc29uX291dC5hcHBlbmQoCiAgICAg + ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2VwaC1yZ3ciLAogICAg + ICAgICAgICAgICAgICAgICJraW5kIjogIlN0b3JhZ2VDbGFzcyIsCiAgICAgICAgICAgICAgICAg + ICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJlbmRwb2ludCI6IHNlbGYub3V0 + X21hcFsiUkdXX0VORFBPSU5UIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICJwb29sUHJlZml4 + Ijogc2VsZi5vdXRfbWFwWyJSR1dfUE9PTF9QUkVGSVgiXSwKICAgICAgICAgICAgICAgICAgICB9 + LAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApCiAgICAgICAgICAgIGpzb25fb3V0LmFw + cGVuZCgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZ3ct + YWRtaW4tb3BzLXVzZXIiLAogICAgICAgICAgICAgICAgICAgICJraW5kIjogIlNlY3JldCIsCiAg + ICAgICAgICAgICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nl + c3NLZXkiOiBzZWxmLm91dF9tYXBbIlJHV19BRE1JTl9PUFNfVVNFUl9BQ0NFU1NfS0VZIl0sCiAg + ICAgICAgICAgICAgICAgICAgICAgICJzZWNyZXRLZXkiOiBzZWxmLm91dF9tYXBbIlJHV19BRE1J + Tl9PUFNfVVNFUl9TRUNSRVRfS0VZIl0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAg + ICAgICAgIH0KICAgICAgICAgICAgKQogICAgICAgICMgaWYgJ1JHV19UTFNfQ0VSVCcgZXhpc3Rz + LCB0aGVuIG9ubHkgYWRkIHRoZSAiY2VwaC1yZ3ctdGxzLWNlcnQiIHNlY3JldAogICAgICAgIGlm + IHNlbGYub3V0X21hcFsiUkdXX1RMU19DRVJUIl06CiAgICAgICAgICAgIGpzb25fb3V0LmFwcGVu + ZCgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjZXBoLXJn + dy10bHMtY2VydCIsCiAgICAgICAgICAgICAgICAgICAgImtpbmQiOiAiU2VjcmV0IiwKICAgICAg + ICAgICAgICAgICAgICAiZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImNlcnQiOiBz + ZWxmLm91dF9tYXBbIlJHV19UTFNfQ0VSVCJdLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAg + ICAgICAgICAgICB9CiAgICAgICAgICAgICkKCiAgICAgICAgcmV0dXJuIGpzb24uZHVtcHMoanNv + bl9vdXQpICsgTElORVNFUAoKICAgIGRlZiB1cGdyYWRlX3VzZXJzX3Blcm1pc3Npb25zKHNlbGYp + OgogICAgICAgIHVzZXJzID0gWwogICAgICAgICAgICAiY2xpZW50LmNzaS1jZXBoZnMtbm9kZSIs + CiAgICAgICAgICAgICJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lciIsCiAgICAgICAgICAg + ICJjbGllbnQuY3NpLXJiZC1ub2RlIiwKICAgICAgICAgICAgImNsaWVudC5jc2ktcmJkLXByb3Zp + c2lvbmVyIiwKICAgICAgICAgICAgImNsaWVudC5oZWFsdGhjaGVja2VyIiwKICAgICAgICBdCiAg + ICAgICAgaWYgc2VsZi5ydW5fYXNfdXNlciAhPSAiIiBhbmQgc2VsZi5ydW5fYXNfdXNlciBub3Qg + aW4gdXNlcnM6CiAgICAgICAgICAgIHVzZXJzLmFwcGVuZChzZWxmLnJ1bl9hc191c2VyKQogICAg + ICAgIGZvciB1c2VyIGluIHVzZXJzOgogICAgICAgICAgICBzZWxmLnVwZ3JhZGVfdXNlcl9wZXJt + aXNzaW9ucyh1c2VyKQoKICAgIGRlZiBnZXRfcmd3X3Bvb2xfbmFtZV9kdXJpbmdfdXBncmFkZShz + ZWxmLCB1c2VyLCBjYXBzKToKICAgICAgICBpZiB1c2VyID09ICJjbGllbnQuaGVhbHRoY2hlY2tl + ciI6CiAgICAgICAgICAgICMgd2hlbiBhZG1pbiBoYXMgbm90IHByb3ZpZGVkIHJndyBwb29sIG5h + bWUgZHVyaW5nIHVwZ3JhZGUsCiAgICAgICAgICAgICMgZ2V0IHRoZSByZ3cgcG9vbCBuYW1lIGZy + b20gY2xpZW50LmhlYWx0aGNoZWNrZXIgdXNlciB3aGljaCB3YXMgdXNlZCBkdXJpbmcgY29ubmVj + dGlvbgogICAgICAgICAgICBpZiBub3Qgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcG9vbF9wcmVmaXg6 + CiAgICAgICAgICAgICAgICAjIFRvIGdldCB2YWx1ZSAnZGVmYXVsdCcgd2hpY2ggaXMgcmd3IHBv + b2wgbmFtZSBmcm9tICdhbGxvdyByd3ggcG9vbD1kZWZhdWx0LnJndy5tZXRhJwogICAgICAgICAg + ICAgICAgcGF0dGVybiA9IHIicG9vbD0oLio/KVwucmd3XC5tZXRhIgogICAgICAgICAgICAgICAg + bWF0Y2ggPSByZS5zZWFyY2gocGF0dGVybiwgY2FwcykKICAgICAgICAgICAgICAgIGlmIG1hdGNo + OgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3Bvb2xfcHJlZml4ID0g + bWF0Y2guZ3JvdXAoMSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAg + cmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAg + ImZhaWxlZCB0byBnZXQgcmd3IHBvb2wgbmFtZSBmb3IgdXBncmFkZSIKICAgICAgICAgICAgICAg + ICAgICApCgogICAgZGVmIHVwZ3JhZGVfdXNlcl9wZXJtaXNzaW9ucyhzZWxmLCB1c2VyKToKICAg + ICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIHVzZXIgZXhpc3RzIG9yIG5vdAogICAgICAg + IGNtZF9qc29uID0geyJwcmVmaXgiOiAiYXV0aCBnZXQiLCAiZW50aXR5IjogZiJ7dXNlcn0iLCAi + Zm9ybWF0IjogImpzb24ifQogICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2Vs + Zi5fY29tbW9uX2NtZF9qc29uX2dlbihjbWRfanNvbikKICAgICAgICBpZiByZXRfdmFsICE9IDAg + b3IgbGVuKGpzb25fb3V0KSA9PSAwOgogICAgICAgICAgICBwcmludChmInVzZXIge3VzZXJ9IG5v + dCBmb3VuZCBmb3IgdXBncmFkaW5nLiIpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGV4aXN0 + aW5nX2NhcHMgPSBqc29uX291dFswXVsiY2FwcyJdCiAgICAgICAgc2VsZi5nZXRfcmd3X3Bvb2xf + bmFtZV9kdXJpbmdfdXBncmFkZSh1c2VyLCBzdHIoZXhpc3RpbmdfY2FwcykpCiAgICAgICAgbmV3 + X2NhcCwgXyA9IHNlbGYuZ2V0X2NhcHNfYW5kX2VudGl0eSh1c2VyKQogICAgICAgIGNhcF9rZXlz + ID0gWyJtb24iLCAibWdyIiwgIm9zZCIsICJtZHMiXQogICAgICAgIGNhcHMgPSBbXQogICAgICAg + IGZvciBlYWNoQ2FwIGluIGNhcF9rZXlzOgogICAgICAgICAgICBjdXJfY2FwX3ZhbHVlcyA9IGV4 + aXN0aW5nX2NhcHMuZ2V0KGVhY2hDYXAsICIiKQogICAgICAgICAgICBuZXdfY2FwX3ZhbHVlcyA9 + IG5ld19jYXAuZ2V0KGVhY2hDYXAsICIiKQogICAgICAgICAgICBjdXJfY2FwX3Blcm1fbGlzdCA9 + IFsKICAgICAgICAgICAgICAgIHguc3RyaXAoKSBmb3IgeCBpbiBjdXJfY2FwX3ZhbHVlcy5zcGxp + dCgiLCIpIGlmIHguc3RyaXAoKQogICAgICAgICAgICBdCiAgICAgICAgICAgIG5ld19jYXBfcGVy + bV9saXN0ID0gWwogICAgICAgICAgICAgICAgeC5zdHJpcCgpIGZvciB4IGluIG5ld19jYXBfdmFs + dWVzLnNwbGl0KCIsIikgaWYgeC5zdHJpcCgpCiAgICAgICAgICAgIF0KICAgICAgICAgICAgIyBh + cHBlbmQgbmV3X2NhcF9saXN0IHRvIGN1cl9jYXBfbGlzdCB0byBtYWludGFpbiB0aGUgb3JkZXIg + b2YgY2FwcwogICAgICAgICAgICBjdXJfY2FwX3Blcm1fbGlzdC5leHRlbmQobmV3X2NhcF9wZXJt + X2xpc3QpCiAgICAgICAgICAgICMgZWxpbWluYXRlIGR1cGxpY2F0ZXMgd2l0aG91dCB1c2luZyAn + c2V0JwogICAgICAgICAgICAjIHNldCByZS1vcmRlcnMgaXRlbXMgaW4gdGhlIGxpc3QgYW5kIHdl + IGhhdmUgdG8ga2VlcCB0aGUgb3JkZXIKICAgICAgICAgICAgbmV3X2NhcF9saXN0ID0gW10KICAg + ICAgICAgICAgW25ld19jYXBfbGlzdC5hcHBlbmQoeCkgZm9yIHggaW4gY3VyX2NhcF9wZXJtX2xp + c3QgaWYgeCBub3QgaW4gbmV3X2NhcF9saXN0XQogICAgICAgICAgICBleGlzdGluZ19jYXBzW2Vh + Y2hDYXBdID0gIiwgIi5qb2luKG5ld19jYXBfbGlzdCkKICAgICAgICAgICAgaWYgZXhpc3Rpbmdf + Y2Fwc1tlYWNoQ2FwXToKICAgICAgICAgICAgICAgIGNhcHMuYXBwZW5kKGVhY2hDYXApCiAgICAg + ICAgICAgICAgICBjYXBzLmFwcGVuZChleGlzdGluZ19jYXBzW2VhY2hDYXBdKQogICAgICAgIGNt + ZF9qc29uID0gewogICAgICAgICAgICAicHJlZml4IjogImF1dGggY2FwcyIsCiAgICAgICAgICAg + ICJlbnRpdHkiOiB1c2VyLAogICAgICAgICAgICAiY2FwcyI6IGNhcHMsCiAgICAgICAgICAgICJm + b3JtYXQiOiAianNvbiIsCiAgICAgICAgfQogICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBlcnJf + bXNnID0gc2VsZi5fY29tbW9uX2NtZF9qc29uX2dlbihjbWRfanNvbikKICAgICAgICBpZiByZXRf + dmFsICE9IDA6CiAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAg + ICAgICAgICAgICAgICBmIidhdXRoIGNhcHMge3VzZXJ9JyBjb21tYW5kIGZhaWxlZC5cbiBFcnJv + cjoge2Vycl9tc2d9IgogICAgICAgICAgICApCiAgICAgICAgcHJpbnQoZiJVcGRhdGVkIHVzZXIg + e3VzZXJ9IHN1Y2Nlc3NmdWxseS4iKQoKICAgIGRlZiBtYWluKHNlbGYpOgogICAgICAgIGdlbmVy + YXRlZF9vdXRwdXQgPSAiIgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIudXBncmFkZToKICAg + ICAgICAgICAgc2VsZi51cGdyYWRlX3VzZXJzX3Blcm1pc3Npb25zKCkKICAgICAgICBlbGlmIHNl + bGYuX2FyZ19wYXJzZXIuZm9ybWF0ID09ICJqc29uIjoKICAgICAgICAgICAgZ2VuZXJhdGVkX291 + dHB1dCA9IHNlbGYuZ2VuX2pzb25fb3V0KCkKICAgICAgICBlbGlmIHNlbGYuX2FyZ19wYXJzZXIu + Zm9ybWF0ID09ICJiYXNoIjoKICAgICAgICAgICAgZ2VuZXJhdGVkX291dHB1dCA9IHNlbGYuZ2Vu + X3NoZWxsX291dCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFp + bHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgIGYiVW5zdXBwb3J0ZWQgZm9ybWF0OiB7c2Vs + Zi5fYXJnX3BhcnNlci5mb3JtYXR9IgogICAgICAgICAgICApCiAgICAgICAgcHJpbnQoZ2VuZXJh + dGVkX291dHB1dCkKICAgICAgICBpZiBzZWxmLm91dHB1dF9maWxlIGFuZCBnZW5lcmF0ZWRfb3V0 + cHV0OgogICAgICAgICAgICBmT3V0ID0gb3BlbihzZWxmLm91dHB1dF9maWxlLCBtb2RlPSJ3Iiwg + ZW5jb2Rpbmc9IlVURi04IikKICAgICAgICAgICAgZk91dC53cml0ZShnZW5lcmF0ZWRfb3V0cHV0 + KQogICAgICAgICAgICBmT3V0LmNsb3NlKCkKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj + IyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE1BSU4gIyMjIyMjIyMj + IyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj + IyMjIwppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgcmpPYmogPSBSYWRvc0pTT04oKQog + ICAgdHJ5OgogICAgICAgIHJqT2JqLm1haW4oKQogICAgZXhjZXB0IEV4ZWN1dGlvbkZhaWx1cmVF + eGNlcHRpb24gYXMgZXJyOgogICAgICAgIHByaW50KGYiRXhlY3V0aW9uIEZhaWxlZDoge2Vycn0i + KQogICAgICAgIHJhaXNlIGVycgogICAgZXhjZXB0IEtleUVycm9yIGFzIGtFcnI6CiAgICAgICAg + cHJpbnQoZiJLZXlFcnJvcjoge2tFcnJ9IikKICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG9zRXJyOgog + ICAgICAgIHByaW50KGYiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIG91dHB1dCB0aGUgZGF0YToge29z + RXJyfSIpCiAgICBmaW5hbGx5OgogICAgICAgIHJqT2JqLnNodXRkb3duKCkK name: rook-ceph.v{{.RookOperatorCsvVersion}} namespace: placeholder spec: @@ -2680,12 +2724,8 @@ spec: env: - name: ROOK_CURRENT_NAMESPACE_ONLY value: "false" - - name: ROOK_DISCOVER_DEVICES_INTERVAL - value: 60m - name: ROOK_HOSTPATH_REQUIRES_PRIVILEGED value: "true" - - name: ROOK_DISABLE_DEVICE_HOTPLUG - value: "false" - name: DISCOVER_DAEMON_UDEV_BLACKLIST value: (?i)dm-[0-9]+,(?i)rbd[0-9]+,(?i)nbd[0-9]+ - name: ROOK_ENABLE_MACHINE_DISRUPTION_BUDGET diff --git a/deploy/ocs-operator/manifests/cephcluster.crd.yaml b/deploy/ocs-operator/manifests/cephcluster.crd.yaml index 66d057935b..b597a7d229 100644 --- a/deploy/ocs-operator/manifests/cephcluster.crd.yaml +++ b/deploy/ocs-operator/manifests/cephcluster.crd.yaml @@ -125,6 +125,10 @@ spec: maximum: 65535 minimum: 0 type: integer + prometheusEndpoint: + type: string + prometheusEndpointSSLVerify: + type: boolean ssl: type: boolean urlPrefix: @@ -393,7 +397,7 @@ spec: allowMultiplePerNode: type: boolean count: - maximum: 2 + maximum: 5 minimum: 0 type: integer modules: @@ -416,6 +420,8 @@ spec: maximum: 9 minimum: 0 type: integer + failureDomainLabel: + type: string stretchCluster: properties: failureDomainLabel: @@ -555,6 +561,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -595,8 +606,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object x-kubernetes-preserve-unknown-fields: true @@ -730,6 +739,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -770,11 +784,192 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object x-kubernetes-preserve-unknown-fields: true + zones: + items: + properties: + arbiter: + type: boolean + name: + type: string + volumeClaimTemplate: + properties: + apiVersion: + type: string + kind: + type: string + metadata: + properties: + annotations: + additionalProperties: + type: string + type: object + finalizers: + items: + type: string + type: array + labels: + additionalProperties: + type: string + type: object + name: + type: string + namespace: + type: string + type: object + spec: + properties: + accessModes: + items: + type: string + type: array + dataSource: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + required: + - kind + - name + type: object + x-kubernetes-map-type: atomic + dataSourceRef: + properties: + apiGroup: + type: string + kind: + type: string + name: + type: string + namespace: + type: string + required: + - kind + - name + type: object + resources: + properties: + claims: + items: + properties: + name: + type: string + required: + - name + type: object + type: array + x-kubernetes-list-map-keys: + - name + x-kubernetes-list-type: map + limits: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + requests: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + type: object + selector: + properties: + matchExpressions: + items: + properties: + key: + type: string + operator: + type: string + values: + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + matchLabels: + additionalProperties: + type: string + type: object + type: object + x-kubernetes-map-type: atomic + storageClassName: + type: string + volumeMode: + type: string + volumeName: + type: string + type: object + status: + properties: + accessModes: + items: + type: string + type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular + allocatedResources: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + capacity: + additionalProperties: + anyOf: + - type: integer + - type: string + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + type: object + conditions: + items: + properties: + lastProbeTime: + format: date-time + type: string + lastTransitionTime: + format: date-time + type: string + message: + type: string + reason: + type: string + status: + type: string + type: + type: string + required: + - status + - type + type: object + type: array + phase: + type: string + type: object + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + type: array type: object monitoring: nullable: true @@ -830,6 +1025,20 @@ spec: network: nullable: true properties: + addressRanges: + nullable: true + properties: + cluster: + items: + pattern: ^[0-9a-fA-F:.]{2,}\/[0-9]{1,3}$ + type: string + type: array + public: + items: + pattern: ^[0-9a-fA-F:.]{2,}\/[0-9]{1,3}$ + type: string + type: array + type: object connections: nullable: true properties: @@ -866,6 +1075,10 @@ spec: type: boolean type: object provider: + enum: + - "" + - host + - multus nullable: true type: string selectors: @@ -1412,6 +1625,8 @@ spec: nullable: true type: array x-kubernetes-preserve-unknown-fields: true + flappingRestartIntervalHours: + type: integer nodes: items: properties: @@ -1606,6 +1821,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -1646,8 +1866,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object type: array @@ -2711,6 +2929,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -2751,8 +2974,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object type: array @@ -2770,6 +2991,9 @@ spec: - bluestore - bluestore-rdr type: string + updateStore: + pattern: ^$|^yes-really-update-store$ + type: string type: object useAllDevices: type: boolean @@ -2902,6 +3126,11 @@ spec: items: type: string type: array + allocatedResourceStatuses: + additionalProperties: + type: string + type: object + x-kubernetes-map-type: granular allocatedResources: additionalProperties: anyOf: @@ -2942,8 +3171,6 @@ spec: type: array phase: type: string - resizeStatus: - type: string type: object type: object type: array @@ -3066,6 +3293,13 @@ spec: type: string type: object type: array + osd: + properties: + storeType: + additionalProperties: + type: integer + type: object + type: object type: object version: properties: diff --git a/deploy/ocs-operator/manifests/cephobjectstore.crd.yaml b/deploy/ocs-operator/manifests/cephobjectstore.crd.yaml index 07f46290c5..19d42169a7 100644 --- a/deploy/ocs-operator/manifests/cephobjectstore.crd.yaml +++ b/deploy/ocs-operator/manifests/cephobjectstore.crd.yaml @@ -30,6 +30,10 @@ spec: type: object spec: properties: + allowUsersInNamespaces: + items: + type: string + type: array dataPool: nullable: true properties: diff --git a/deploy/ocs-operator/manifests/cephobjectstoreuser.crd.yaml b/deploy/ocs-operator/manifests/cephobjectstoreuser.crd.yaml index 1f17f1f640..5d07cef13c 100644 --- a/deploy/ocs-operator/manifests/cephobjectstoreuser.crd.yaml +++ b/deploy/ocs-operator/manifests/cephobjectstoreuser.crd.yaml @@ -149,6 +149,8 @@ spec: - read, write type: string type: object + clusterNamespace: + type: string displayName: type: string quotas: diff --git a/deploy/ocs-operator/manifests/ocs-operator.clusterserviceversion.yaml b/deploy/ocs-operator/manifests/ocs-operator.clusterserviceversion.yaml index 82ca672b76..8fe5308b5d 100644 --- a/deploy/ocs-operator/manifests/ocs-operator.clusterserviceversion.yaml +++ b/deploy/ocs-operator/manifests/ocs-operator.clusterserviceversion.yaml @@ -85,127 +85,145 @@ metadata: dGhlIHNjcmlwdC4uLiIpCiAgICBzeXMuZXhpdCgxKQoKdHJ5OgogICAgIyBmb3IgMi43LngKICAg IGZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCmV4Y2VwdCBNb2R1bGVOb3RGb3VuZEVycm9y OgogICAgIyBmb3IgMy54CiAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwoKdHJ5OgogICAgIyBm - b3IgMi43LngKICAgIGZyb20gdXJscGFyc2UgaW1wb3J0IHVybHBhcnNlCmV4Y2VwdCBNb2R1bGVO - b3RGb3VuZEVycm9yOgogICAgIyBmb3IgMy54CiAgICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQg - dXJscGFyc2UKCnRyeToKICAgIGZyb20gYmFzZTY0IGltcG9ydCBlbmNvZGVzdHJpbmcKZXhjZXB0 - OgogICAgZnJvbSBiYXNlNjQgaW1wb3J0IGVuY29kZWJ5dGVzIGFzIGVuY29kZXN0cmluZwoKCmNs - YXNzIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oRXhjZXB0aW9uKToKICAgIHBhc3MKCgojIyMj - IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMj - IyMjIyMjIER1bW15UmFkb3MgIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMj - IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIHRoaXMgaXMgbWFpbmx5IGZvciB0ZXN0aW5n - IGFuZCBjb3VsZCBiZSB1c2VkIHdoZXJlICdyYWRvcycgaXMgbm90IGF2YWlsYWJsZQoKCmNsYXNz - IER1bW15UmFkb3Mob2JqZWN0KToKICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICBzZWxm - LnJldHVybl92YWwgPSAwCiAgICAgICAgc2VsZi5lcnJfbWVzc2FnZSA9ICIiCiAgICAgICAgc2Vs - Zi5zdGF0ZSA9ICJjb25uZWN0ZWQiCiAgICAgICAgc2VsZi5jbWRfb3V0cHV0X21hcCA9IHt9CiAg - ICAgICAgc2VsZi5jbWRfbmFtZXMgPSB7fQogICAgICAgIHNlbGYuX2luaXRfY21kX291dHB1dF9t - YXAoKQogICAgICAgIHNlbGYuZHVtbXlfaG9zdF9pcF9tYXAgPSB7fQoKICAgIGRlZiBfaW5pdF9j - bWRfb3V0cHV0X21hcChzZWxmKToKICAgICAgICBqc29uX2ZpbGVfbmFtZSA9ICJ0ZXN0LWRhdGEv - Y2VwaC1zdGF0dXMtb3V0IgogICAgICAgIHNjcmlwdF9kaXIgPSBwYXRoLmFic3BhdGgocGF0aC5k - aXJuYW1lKF9fZmlsZV9fKSkKICAgICAgICBjZXBoX3N0YXR1c19zdHIgPSAiIgogICAgICAgIHdp - dGggb3BlbigKICAgICAgICAgICAgcGF0aC5qb2luKHNjcmlwdF9kaXIsIGpzb25fZmlsZV9uYW1l - KSwgbW9kZT0iciIsIGVuY29kaW5nPSJVVEYtOCIKICAgICAgICApIGFzIGpzb25fZmlsZToKICAg - ICAgICAgICAgY2VwaF9zdGF0dXNfc3RyID0ganNvbl9maWxlLnJlYWQoKQogICAgICAgIHNlbGYu - Y21kX25hbWVzWyJmcyBscyJdID0gIiIieyJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiZnMg - bHMifSIiIgogICAgICAgIHNlbGYuY21kX25hbWVzWwogICAgICAgICAgICAicXVvcnVtX3N0YXR1 - cyIKICAgICAgICBdID0gIiIieyJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAicXVvcnVtX3N0 - YXR1cyJ9IiIiCiAgICAgICAgc2VsZi5jbWRfbmFtZXNbCiAgICAgICAgICAgICJtZ3Igc2Vydmlj - ZXMiCiAgICAgICAgXSA9ICIiInsiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogIm1nciBzZXJ2 - aWNlcyJ9IiIiCiAgICAgICAgIyBhbGwgdGhlIGNvbW1hbmRzIGFuZCB0aGVpciBvdXRwdXQKICAg - ICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICBzZWxmLmNtZF9uYW1lc1siZnMg - bHMiXQogICAgICAgIF0gPSAiIiJbeyJuYW1lIjoibXlmcyIsIm1ldGFkYXRhX3Bvb2wiOiJteWZz - LW1ldGFkYXRhIiwibWV0YWRhdGFfcG9vbF9pZCI6MiwiZGF0YV9wb29sX2lkcyI6WzNdLCJkYXRh - X3Bvb2xzIjpbIm15ZnMtcmVwbGljYXRlZCJdfV0iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRf - bWFwWwogICAgICAgICAgICBzZWxmLmNtZF9uYW1lc1sicXVvcnVtX3N0YXR1cyJdCiAgICAgICAg - XSA9ICIiInsiZWxlY3Rpb25fZXBvY2giOjMsInF1b3J1bSI6WzBdLCJxdW9ydW1fbmFtZXMiOlsi - YSJdLCJxdW9ydW1fbGVhZGVyX25hbWUiOiJhIiwicXVvcnVtX2FnZSI6MTQzODUsImZlYXR1cmVz - Ijp7InF1b3J1bV9jb24iOiI0NTQwMTM4MjkyODM2Njk2MDYzIiwicXVvcnVtX21vbiI6WyJrcmFr - ZW4iLCJsdW1pbm91cyIsIm1pbWljIiwib3NkbWFwLXBydW5lIiwibmF1dGlsdXMiLCJvY3RvcHVz - Il19LCJtb25tYXAiOnsiZXBvY2giOjEsImZzaWQiOiJhZjRlMTY3My0wYjcyLTQwMmQtOTkwYS0y - MmQyOTE5ZDBmMWMiLCJtb2RpZmllZCI6IjIwMjAtMDUtMDdUMDM6MzY6MzkuOTE4MDM1WiIsImNy - ZWF0ZWQiOiIyMDIwLTA1LTA3VDAzOjM2OjM5LjkxODAzNVoiLCJtaW5fbW9uX3JlbGVhc2UiOjE1 - LCJtaW5fbW9uX3JlbGVhc2VfbmFtZSI6Im9jdG9wdXMiLCJmZWF0dXJlcyI6eyJwZXJzaXN0ZW50 - IjpbImtyYWtlbiIsImx1bWlub3VzIiwibWltaWMiLCJvc2RtYXAtcHJ1bmUiLCJuYXV0aWx1cyIs - Im9jdG9wdXMiXSwib3B0aW9uYWwiOltdfSwibW9ucyI6W3sicmFuayI6MCwibmFtZSI6ImEiLCJw - dWJsaWNfYWRkcnMiOnsiYWRkcnZlYyI6W3sidHlwZSI6InYyIiwiYWRkciI6IjEwLjExMC4yMDUu - MTc0OjMzMDAiLCJub25jZSI6MH0seyJ0eXBlIjoidjEiLCJhZGRyIjoiMTAuMTEwLjIwNS4xNzQ6 - Njc4OSIsIm5vbmNlIjowfV19LCJhZGRyIjoiMTAuMTEwLjIwNS4xNzQ6Njc4OS8wIiwicHVibGlj - X2FkZHIiOiIxMC4xMTAuMjA1LjE3NDo2Nzg5LzAiLCJwcmlvcml0eSI6MCwid2VpZ2h0IjowfV19 - fSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgIHNlbGYuY21kX25h - bWVzWyJtZ3Igc2VydmljZXMiXQogICAgICAgIF0gPSAiIiJ7ImRhc2hib2FyZCI6Imh0dHBzOi8v - Y2VwaC1kYXNoYm9hcmQ6ODQ0My8iLCJwcm9tZXRoZXVzIjoiaHR0cDovL2NlcGgtZGFzaGJvYXJk - LWRiOjkyODMvIn0iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAi - IiJ7ImNhcHMiOiBbIm1vbiIsICJhbGxvdyByLCBhbGxvdyBjb21tYW5kIHF1b3J1bV9zdGF0dXMi - LCAib3NkIiwgImFsbG93IHJ3eCBwb29sPWRlZmF1bHQucmd3Lm1ldGEsIGFsbG93IHIgcG9vbD0u - cmd3LnJvb3QsIGFsbG93IHJ3IHBvb2w9ZGVmYXVsdC5yZ3cuY29udHJvbCwgYWxsb3cgeCBwb29s - PWRlZmF1bHQucmd3LmJ1Y2tldHMuaW5kZXgiXSwgImVudGl0eSI6ICJjbGllbnQuaGVhbHRoY2hl - Y2tlciIsICJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQtb3ItY3JlYXRlIn0i - IiIKICAgICAgICBdID0gIiIiW3siZW50aXR5IjoiY2xpZW50LmhlYWx0aGNoZWNrZXIiLCJrZXki - OiJBUURGa2JOZWZ0NWJGUkFBVG5kTE5VU0VLcnVvenhpWmkzbHJkQT09IiwiY2FwcyI6eyJtb24i - OiJhbGxvdyByLCBhbGxvdyBjb21tYW5kIHF1b3J1bV9zdGF0dXMiLCJvc2QiOiJhbGxvdyByd3gg - cG9vbD1kZWZhdWx0LnJndy5tZXRhLCBhbGxvdyByIHBvb2w9LnJndy5yb290LCBhbGxvdyBydyBw - b29sPWRlZmF1bHQucmd3LmNvbnRyb2wsIGFsbG93IHggcG9vbD1kZWZhdWx0LnJndy5idWNrZXRz - LmluZGV4In19XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIi - InsiY2FwcyI6IFsibW9uIiwgInByb2ZpbGUgcmJkLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2ts - aXN0JyIsICJvc2QiLCAicHJvZmlsZSByYmQiXSwgImVudGl0eSI6ICJjbGllbnQuY3NpLXJiZC1u - b2RlIiwgImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGdldC1vci1jcmVhdGUifSIi - IgogICAgICAgIF0gPSAiIiJbeyJlbnRpdHkiOiJjbGllbnQuY3NpLXJiZC1ub2RlIiwia2V5Ijoi - QVFCT2dyTmVIYksxQXhBQXViWUJlVjhTMVUvR1B6cTVTVmVxNmc9PSIsImNhcHMiOnsibW9uIjoi - cHJvZmlsZSByYmQsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwib3NkIjoicHJvZmls - ZSByYmQifX1dIiIiCiAgICAgICAgc2VsZi5jbWRfb3V0cHV0X21hcFsKICAgICAgICAgICAgIiIi - eyJjYXBzIjogWyJtb24iLCAicHJvZmlsZSByYmQsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xp - c3QnIiwgIm1nciIsICJhbGxvdyBydyIsICJvc2QiLCAicHJvZmlsZSByYmQiXSwgImVudGl0eSI6 - ICJjbGllbnQuY3NpLXJiZC1wcm92aXNpb25lciIsICJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgi - OiAiYXV0aCBnZXQtb3ItY3JlYXRlIn0iIiIKICAgICAgICBdID0gIiIiW3siZW50aXR5IjoiY2xp - ZW50LmNzaS1yYmQtcHJvdmlzaW9uZXIiLCJrZXkiOiJBUUJOZ3JOZTFnZXlLeEFBOGVrVmlSZEUr - aHNzNU93ZVlCa3dOZz09IiwiY2FwcyI6eyJtZ3IiOiJhbGxvdyBydyIsIm1vbiI6InByb2ZpbGUg - cmJkLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsIm9zZCI6InByb2ZpbGUgcmJkIn19 - XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6 - IFsibW9uIiwgImFsbG93IHIsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwgIm1nciIs - ICJhbGxvdyBydyIsICJvc2QiLCAiYWxsb3cgcncgdGFnIGNlcGhmcyAqPSoiLCAibWRzIiwgImFs - bG93IHJ3Il0sICJlbnRpdHkiOiAiY2xpZW50LmNzaS1jZXBoZnMtbm9kZSIsICJmb3JtYXQiOiAi - anNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQtb3ItY3JlYXRlIn0iIiIKICAgICAgICBdID0gIiIi - W3siZW50aXR5IjoiY2xpZW50LmNzaS1jZXBoZnMtbm9kZSIsImtleSI6IkFRQk9nck5lRU51bkt4 - QUFQQ21nRTdSNkc4RGNYbmFKMUYzMnFnPT0iLCJjYXBzIjp7Im1kcyI6ImFsbG93IHJ3IiwibWdy - IjoiYWxsb3cgcnciLCJtb24iOiJhbGxvdyByLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0 - JyIsIm9zZCI6ImFsbG93IHJ3IHRhZyBjZXBoZnMgKj0qIn19XSIiIgogICAgICAgIHNlbGYuY21k - X291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6IFsibW9uIiwgImFsbG93IHIsIGFs - bG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwgIm1nciIsICJhbGxvdyBydyIsICJvc2QiLCAi - YWxsb3cgcncgdGFnIGNlcGhmcyBtZXRhZGF0YT0qIl0sICJlbnRpdHkiOiAiY2xpZW50LmNzaS1j - ZXBoZnMtcHJvdmlzaW9uZXIiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0 - LW9yLWNyZWF0ZSJ9IiIiCiAgICAgICAgXSA9ICIiIlt7ImVudGl0eSI6ImNsaWVudC5jc2ktY2Vw - aGZzLXByb3Zpc2lvbmVyIiwia2V5IjoiQVFCT2dyTmVBRmdjR0JBQXZHcUtPQUQwRDN4eG1WWTBS + b3IgMi43LngKICAgIGZyb20gdXJscGFyc2UgaW1wb3J0IHVybHBhcnNlCiAgICBmcm9tIHVybGxp + YiBpbXBvcnQgdXJsZW5jb2RlIGFzIHVybGVuY29kZQpleGNlcHQgTW9kdWxlTm90Rm91bmRFcnJv + cjoKICAgICMgZm9yIDMueAogICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCiAg + ICBmcm9tIHVybGxpYi5wYXJzZSBpbXBvcnQgdXJsZW5jb2RlIGFzIHVybGVuY29kZQoKdHJ5Ogog + ICAgZnJvbSBiYXNlNjQgaW1wb3J0IGVuY29kZXN0cmluZwpleGNlcHQ6CiAgICBmcm9tIGJhc2U2 + NCBpbXBvcnQgZW5jb2RlYnl0ZXMgYXMgZW5jb2Rlc3RyaW5nCgoKY2xhc3MgRXhlY3V0aW9uRmFp + bHVyZUV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgcGFzcwoKCiMjIyMjIyMjIyMjIyMjIyMjIyMj + IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMgRHVtbXlSYWRv + cyAjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj + IyMjIyMjIyMjIyMjCiMgdGhpcyBpcyBtYWlubHkgZm9yIHRlc3RpbmcgYW5kIGNvdWxkIGJlIHVz + ZWQgd2hlcmUgJ3JhZG9zJyBpcyBub3QgYXZhaWxhYmxlCgoKY2xhc3MgRHVtbXlSYWRvcyhvYmpl + Y3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgIHNlbGYucmV0dXJuX3ZhbCA9IDAK + ICAgICAgICBzZWxmLmVycl9tZXNzYWdlID0gIiIKICAgICAgICBzZWxmLnN0YXRlID0gImNvbm5l + Y3RlZCIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwID0ge30KICAgICAgICBzZWxmLmNtZF9u + YW1lcyA9IHt9CiAgICAgICAgc2VsZi5faW5pdF9jbWRfb3V0cHV0X21hcCgpCiAgICAgICAgc2Vs + Zi5kdW1teV9ob3N0X2lwX21hcCA9IHt9CgogICAgZGVmIF9pbml0X2NtZF9vdXRwdXRfbWFwKHNl + bGYpOgogICAgICAgIGpzb25fZmlsZV9uYW1lID0gInRlc3QtZGF0YS9jZXBoLXN0YXR1cy1vdXQi + CiAgICAgICAgc2NyaXB0X2RpciA9IHBhdGguYWJzcGF0aChwYXRoLmRpcm5hbWUoX19maWxlX18p + KQogICAgICAgIGNlcGhfc3RhdHVzX3N0ciA9ICIiCiAgICAgICAgd2l0aCBvcGVuKAogICAgICAg + ICAgICBwYXRoLmpvaW4oc2NyaXB0X2RpciwganNvbl9maWxlX25hbWUpLCBtb2RlPSJyIiwgZW5j + b2Rpbmc9IlVURi04IgogICAgICAgICkgYXMganNvbl9maWxlOgogICAgICAgICAgICBjZXBoX3N0 + YXR1c19zdHIgPSBqc29uX2ZpbGUucmVhZCgpCiAgICAgICAgc2VsZi5jbWRfbmFtZXNbImZzIGxz + Il0gPSAiIiJ7ImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJmcyBscyJ9IiIiCiAgICAgICAg + c2VsZi5jbWRfbmFtZXNbCiAgICAgICAgICAgICJxdW9ydW1fc3RhdHVzIgogICAgICAgIF0gPSAi + IiJ7ImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJxdW9ydW1fc3RhdHVzIn0iIiIKICAgICAg + ICBzZWxmLmNtZF9uYW1lc1sKICAgICAgICAgICAgIm1nciBzZXJ2aWNlcyIKICAgICAgICBdID0g + IiIieyJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAibWdyIHNlcnZpY2VzIn0iIiIKICAgICAg + ICAjIGFsbCB0aGUgY29tbWFuZHMgYW5kIHRoZWlyIG91dHB1dAogICAgICAgIHNlbGYuY21kX291 + dHB1dF9tYXBbCiAgICAgICAgICAgIHNlbGYuY21kX25hbWVzWyJmcyBscyJdCiAgICAgICAgXSA9 + ICIiIlt7Im5hbWUiOiJteWZzIiwibWV0YWRhdGFfcG9vbCI6Im15ZnMtbWV0YWRhdGEiLCJtZXRh + ZGF0YV9wb29sX2lkIjoyLCJkYXRhX3Bvb2xfaWRzIjpbM10sImRhdGFfcG9vbHMiOlsibXlmcy1y + ZXBsaWNhdGVkIl19XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAg + IHNlbGYuY21kX25hbWVzWyJxdW9ydW1fc3RhdHVzIl0KICAgICAgICBdID0gIiIieyJlbGVjdGlv + bl9lcG9jaCI6MywicXVvcnVtIjpbMF0sInF1b3J1bV9uYW1lcyI6WyJhIl0sInF1b3J1bV9sZWFk + ZXJfbmFtZSI6ImEiLCJxdW9ydW1fYWdlIjoxNDM4NSwiZmVhdHVyZXMiOnsicXVvcnVtX2NvbiI6 + IjQ1NDAxMzgyOTI4MzY2OTYwNjMiLCJxdW9ydW1fbW9uIjpbImtyYWtlbiIsImx1bWlub3VzIiwi + bWltaWMiLCJvc2RtYXAtcHJ1bmUiLCJuYXV0aWx1cyIsIm9jdG9wdXMiXX0sIm1vbm1hcCI6eyJl + cG9jaCI6MSwiZnNpZCI6ImFmNGUxNjczLTBiNzItNDAyZC05OTBhLTIyZDI5MTlkMGYxYyIsIm1v + ZGlmaWVkIjoiMjAyMC0wNS0wN1QwMzozNjozOS45MTgwMzVaIiwiY3JlYXRlZCI6IjIwMjAtMDUt + MDdUMDM6MzY6MzkuOTE4MDM1WiIsIm1pbl9tb25fcmVsZWFzZSI6MTUsIm1pbl9tb25fcmVsZWFz + ZV9uYW1lIjoib2N0b3B1cyIsImZlYXR1cmVzIjp7InBlcnNpc3RlbnQiOlsia3Jha2VuIiwibHVt + aW5vdXMiLCJtaW1pYyIsIm9zZG1hcC1wcnVuZSIsIm5hdXRpbHVzIiwib2N0b3B1cyJdLCJvcHRp + b25hbCI6W119LCJtb25zIjpbeyJyYW5rIjowLCJuYW1lIjoiYSIsInB1YmxpY19hZGRycyI6eyJh + ZGRydmVjIjpbeyJ0eXBlIjoidjIiLCJhZGRyIjoiMTAuMTEwLjIwNS4xNzQ6MzMwMCIsIm5vbmNl + IjowfSx7InR5cGUiOiJ2MSIsImFkZHIiOiIxMC4xMTAuMjA1LjE3NDo2Nzg5Iiwibm9uY2UiOjB9 + XX0sImFkZHIiOiIxMC4xMTAuMjA1LjE3NDo2Nzg5LzAiLCJwdWJsaWNfYWRkciI6IjEwLjExMC4y + MDUuMTc0OjY3ODkvMCIsInByaW9yaXR5IjowLCJ3ZWlnaHQiOjB9XX19IiIiCiAgICAgICAgc2Vs + Zi5jbWRfb3V0cHV0X21hcFsKICAgICAgICAgICAgc2VsZi5jbWRfbmFtZXNbIm1nciBzZXJ2aWNl + cyJdCiAgICAgICAgXSA9ICIiInsiZGFzaGJvYXJkIjoiaHR0cHM6Ly9jZXBoLWRhc2hib2FyZDo4 + NDQzLyIsInByb21ldGhldXMiOiJodHRwOi8vY2VwaC1kYXNoYm9hcmQtZGI6OTI4My8ifSIiIgog + ICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6IFsibW9u + IiwgImFsbG93IHIsIGFsbG93IGNvbW1hbmQgcXVvcnVtX3N0YXR1cyIsICJvc2QiLCAicHJvZmls + ZSByYmQtcmVhZC1vbmx5LCBhbGxvdyByd3ggcG9vbD1kZWZhdWx0LnJndy5tZXRhLCBhbGxvdyBy + IHBvb2w9LnJndy5yb290LCBhbGxvdyBydyBwb29sPWRlZmF1bHQucmd3LmNvbnRyb2wsIGFsbG93 + IHggcG9vbD1kZWZhdWx0LnJndy5idWNrZXRzLmluZGV4Il0sICJlbnRpdHkiOiAiY2xpZW50Lmhl + YWx0aGNoZWNrZXIiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0LW9yLWNy + ZWF0ZSJ9IiIiCiAgICAgICAgXSA9ICIiIlt7ImVudGl0eSI6ImNsaWVudC5oZWFsdGhjaGVja2Vy + Iiwia2V5IjoiQVFERmtiTmVmdDViRlJBQVRuZExOVVNFS3J1b3p4aVppM2xyZEE9PSIsImNhcHMi + OnsibW9uIjoiYWxsb3cgciwgYWxsb3cgY29tbWFuZCBxdW9ydW1fc3RhdHVzIiwib3NkIjoicHJv + ZmlsZSByYmQtcmVhZC1vbmx5LCBhbGxvdyByd3ggcG9vbD1kZWZhdWx0LnJndy5tZXRhLCBhbGxv + dyByIHBvb2w9LnJndy5yb290LCBhbGxvdyBydyBwb29sPWRlZmF1bHQucmd3LmNvbnRyb2wsIGFs + bG93IHggcG9vbD1kZWZhdWx0LnJndy5idWNrZXRzLmluZGV4In19XSIiIgogICAgICAgIHNlbGYu + Y21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6IFsibW9uIiwgInByb2ZpbGUg + cmJkLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsICJvc2QiLCAicHJvZmlsZSByYmQi + XSwgImVudGl0eSI6ICJjbGllbnQuY3NpLXJiZC1ub2RlIiwgImZvcm1hdCI6ICJqc29uIiwgInBy + ZWZpeCI6ICJhdXRoIGdldC1vci1jcmVhdGUifSIiIgogICAgICAgIF0gPSAiIiJbeyJlbnRpdHki + OiJjbGllbnQuY3NpLXJiZC1ub2RlIiwia2V5IjoiQVFCT2dyTmVIYksxQXhBQXViWUJlVjhTMVUv + R1B6cTVTVmVxNmc9PSIsImNhcHMiOnsibW9uIjoicHJvZmlsZSByYmQsIGFsbG93IGNvbW1hbmQg + J29zZCBibG9ja2xpc3QnIiwib3NkIjoicHJvZmlsZSByYmQifX1dIiIiCiAgICAgICAgc2VsZi5j + bWRfb3V0cHV0X21hcFsKICAgICAgICAgICAgIiIieyJjYXBzIjogWyJtb24iLCAicHJvZmlsZSBy + YmQsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwgIm1nciIsICJhbGxvdyBydyIsICJv + c2QiLCAicHJvZmlsZSByYmQiXSwgImVudGl0eSI6ICJjbGllbnQuY3NpLXJiZC1wcm92aXNpb25l + ciIsICJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQtb3ItY3JlYXRlIn0iIiIK + ICAgICAgICBdID0gIiIiW3siZW50aXR5IjoiY2xpZW50LmNzaS1yYmQtcHJvdmlzaW9uZXIiLCJr + ZXkiOiJBUUJOZ3JOZTFnZXlLeEFBOGVrVmlSZEUraHNzNU93ZVlCa3dOZz09IiwiY2FwcyI6eyJt + Z3IiOiJhbGxvdyBydyIsIm1vbiI6InByb2ZpbGUgcmJkLCBhbGxvdyBjb21tYW5kICdvc2QgYmxv + Y2tsaXN0JyIsIm9zZCI6InByb2ZpbGUgcmJkIn19XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1 + dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6IFsibW9uIiwgImFsbG93IHIsIGFsbG93IGNv + bW1hbmQgJ29zZCBibG9ja2xpc3QnIiwgIm1nciIsICJhbGxvdyBydyIsICJvc2QiLCAiYWxsb3cg + cncgdGFnIGNlcGhmcyAqPSoiLCAibWRzIiwgImFsbG93IHJ3Il0sICJlbnRpdHkiOiAiY2xpZW50 + LmNzaS1jZXBoZnMtbm9kZSIsICJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQt + b3ItY3JlYXRlIn0iIiIKICAgICAgICBdID0gIiIiW3siZW50aXR5IjoiY2xpZW50LmNzaS1jZXBo + ZnMtbm9kZSIsImtleSI6IkFRQk9nck5lRU51bkt4QUFQQ21nRTdSNkc4RGNYbmFKMUYzMnFnPT0i + LCJjYXBzIjp7Im1kcyI6ImFsbG93IHJ3IiwibWdyIjoiYWxsb3cgcnciLCJtb24iOiJhbGxvdyBy + LCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsIm9zZCI6ImFsbG93IHJ3IHRhZyBjZXBo + ZnMgKj0qIn19XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIi + InsiY2FwcyI6IFsibW9uIiwgImFsbG93IHIsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3Qn + IiwgIm1nciIsICJhbGxvdyBydyIsICJvc2QiLCAiYWxsb3cgcncgdGFnIGNlcGhmcyBtZXRhZGF0 + YT0qIl0sICJlbnRpdHkiOiAiY2xpZW50LmNzaS1jZXBoZnMtcHJvdmlzaW9uZXIiLCAiZm9ybWF0 + IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0LW9yLWNyZWF0ZSJ9IiIiCiAgICAgICAgXSA9 + ICIiIlt7ImVudGl0eSI6ImNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyIiwia2V5IjoiQVFC + T2dyTmVBRmdjR0JBQXZHcUtPQUQwRDN4eG1WWTBSOTEyZGc9PSIsImNhcHMiOnsibWdyIjoiYWxs + b3cgcnciLCJtb24iOiJhbGxvdyByLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsIm9z + ZCI6ImFsbG93IHJ3IHRhZyBjZXBoZnMgbWV0YWRhdGE9KiJ9fV0iIiIKICAgICAgICBzZWxmLmNt + ZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7ImNhcHMiOiBbIm1vbiIsICJhbGxvdyByLCBh + bGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsICJtZ3IiLCAiYWxsb3cgcnciLCAib3NkIiwg + ImFsbG93IHJ3IHRhZyBjZXBoZnMgbWV0YWRhdGE9KiJdLCAiZW50aXR5IjogImNsaWVudC5jc2kt + Y2VwaGZzLXByb3Zpc2lvbmVyLW9wZW5zaGlmdC1zdG9yYWdlIiwgImZvcm1hdCI6ICJqc29uIiwg + InByZWZpeCI6ICJhdXRoIGdldC1vci1jcmVhdGUifSIiIgogICAgICAgIF0gPSAiIiJbeyJlbnRp + dHkiOiJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lci1vcGVuc2hpZnQtc3RvcmFnZSIsImtl + eSI6IkJRQk9nck5lQUZnY0dCQUF2R3FLT0FEMEQzeHhtVlkwUjkxMmRnPT0iLCJjYXBzIjp7Im1n + ciI6ImFsbG93IHJ3IiwibW9uIjoiYWxsb3cgciwgYWxsb3cgY29tbWFuZCAnb3NkIGJsb2NrbGlz + dCciLCJvc2QiOiJhbGxvdyBydyB0YWcgY2VwaGZzIG1ldGFkYXRhPSoifX1dIiIiCiAgICAgICAg + c2VsZi5jbWRfb3V0cHV0X21hcFsKICAgICAgICAgICAgIiIieyJjYXBzIjogWyJtb24iLCAiYWxs + b3cgciwgYWxsb3cgY29tbWFuZCAnb3NkIGJsb2NrbGlzdCciLCAibWdyIiwgImFsbG93IHJ3Iiwg + Im9zZCIsICJhbGxvdyBydyB0YWcgY2VwaGZzIG1ldGFkYXRhPW15ZnMiXSwgImVudGl0eSI6ICJj + bGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lci1vcGVuc2hpZnQtc3RvcmFnZS1teWZzIiwgImZv + cm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGdldC1vci1jcmVhdGUifSIiIgogICAgICAg + IF0gPSAiIiJbeyJlbnRpdHkiOiJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lci1vcGVuc2hp + ZnQtc3RvcmFnZS1teWZzIiwia2V5IjoiQ1FCT2dyTmVBRmdjR0JBQXZHcUtPQUQwRDN4eG1WWTBS OTEyZGc9PSIsImNhcHMiOnsibWdyIjoiYWxsb3cgcnciLCJtb24iOiJhbGxvdyByLCBhbGxvdyBj b21tYW5kICdvc2QgYmxvY2tsaXN0JyIsIm9zZCI6ImFsbG93IHJ3IHRhZyBjZXBoZnMgbWV0YWRh - dGE9KiJ9fV0iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7 - ImNhcHMiOiBbIm1vbiIsICJhbGxvdyByLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIs - ICJtZ3IiLCAiYWxsb3cgcnciLCAib3NkIiwgImFsbG93IHJ3IHRhZyBjZXBoZnMgbWV0YWRhdGE9 - KiJdLCAiZW50aXR5IjogImNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyLW9wZW5zaGlmdC1z - dG9yYWdlIiwgImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGdldC1vci1jcmVhdGUi - fSIiIgogICAgICAgIF0gPSAiIiJbeyJlbnRpdHkiOiJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNp - b25lci1vcGVuc2hpZnQtc3RvcmFnZSIsImtleSI6IkJRQk9nck5lQUZnY0dCQUF2R3FLT0FEMEQz - eHhtVlkwUjkxMmRnPT0iLCJjYXBzIjp7Im1nciI6ImFsbG93IHJ3IiwibW9uIjoiYWxsb3cgciwg - YWxsb3cgY29tbWFuZCAnb3NkIGJsb2NrbGlzdCciLCJvc2QiOiJhbGxvdyBydyB0YWcgY2VwaGZz - IG1ldGFkYXRhPSoifX1dIiIiCiAgICAgICAgc2VsZi5jbWRfb3V0cHV0X21hcFsKICAgICAgICAg - ICAgIiIieyJjYXBzIjogWyJtb24iLCAiYWxsb3cgciwgYWxsb3cgY29tbWFuZCAnb3NkIGJsb2Nr - bGlzdCciLCAibWdyIiwgImFsbG93IHJ3IiwgIm9zZCIsICJhbGxvdyBydyB0YWcgY2VwaGZzIG1l - dGFkYXRhPW15ZnMiXSwgImVudGl0eSI6ICJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lci1v - cGVuc2hpZnQtc3RvcmFnZS1teWZzIiwgImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRo - IGdldC1vci1jcmVhdGUifSIiIgogICAgICAgIF0gPSAiIiJbeyJlbnRpdHkiOiJjbGllbnQuY3Np - LWNlcGhmcy1wcm92aXNpb25lci1vcGVuc2hpZnQtc3RvcmFnZS1teWZzIiwia2V5IjoiQ1FCT2dy - TmVBRmdjR0JBQXZHcUtPQUQwRDN4eG1WWTBSOTEyZGc9PSIsImNhcHMiOnsibWdyIjoiYWxsb3cg - cnciLCJtb24iOiJhbGxvdyByLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsIm9zZCI6 - ImFsbG93IHJ3IHRhZyBjZXBoZnMgbWV0YWRhdGE9bXlmcyJ9fV0iIiIKICAgICAgICBzZWxmLmNt - ZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7ImNhcHMiOiBbIm1vbiIsICJhbGxvdyByLCBh - bGxvdyBjb21tYW5kIHF1b3J1bV9zdGF0dXMsIGFsbG93IGNvbW1hbmQgdmVyc2lvbiIsICJtZ3Ii - LCAiYWxsb3cgY29tbWFuZCBjb25maWciLCAib3NkIiwgImFsbG93IHJ3eCBwb29sPWRlZmF1bHQu - cmd3Lm1ldGEsIGFsbG93IHIgcG9vbD0ucmd3LnJvb3QsIGFsbG93IHJ3IHBvb2w9ZGVmYXVsdC5y - Z3cuY29udHJvbCwgYWxsb3cgcnggcG9vbD1kZWZhdWx0LnJndy5sb2csIGFsbG93IHggcG9vbD1k - ZWZhdWx0LnJndy5idWNrZXRzLmluZGV4Il0sICJlbnRpdHkiOiAiY2xpZW50LmhlYWx0aGNoZWNr - ZXIiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0LW9yLWNyZWF0ZSJ9IiIi - CiAgICAgICAgXSA9ICIiIlt7ImVudGl0eSI6ImNsaWVudC5oZWFsdGhjaGVja2VyIiwia2V5Ijoi - QVFERmtiTmVmdDViRlJBQVRuZExOVVNFS3J1b3p4aVppM2xyZEE9PSIsImNhcHMiOnsibW9uIjog - ImFsbG93IHIsIGFsbG93IGNvbW1hbmQgcXVvcnVtX3N0YXR1cywgYWxsb3cgY29tbWFuZCB2ZXJz - aW9uIiwgIm1nciI6ICJhbGxvdyBjb21tYW5kIGNvbmZpZyIsICJvc2QiOiAiYWxsb3cgcnd4IHBv + dGE9bXlmcyJ9fV0iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAi + IiJ7ImNhcHMiOiBbIm1vbiIsICJhbGxvdyByLCBhbGxvdyBjb21tYW5kIHF1b3J1bV9zdGF0dXMs + IGFsbG93IGNvbW1hbmQgdmVyc2lvbiIsICJtZ3IiLCAiYWxsb3cgY29tbWFuZCBjb25maWciLCAi + b3NkIiwgInByb2ZpbGUgcmJkLXJlYWQtb25seSwgYWxsb3cgcnd4IHBvb2w9ZGVmYXVsdC5yZ3cu + bWV0YSwgYWxsb3cgciBwb29sPS5yZ3cucm9vdCwgYWxsb3cgcncgcG9vbD1kZWZhdWx0LnJndy5j + b250cm9sLCBhbGxvdyByeCBwb29sPWRlZmF1bHQucmd3LmxvZywgYWxsb3cgeCBwb29sPWRlZmF1 + bHQucmd3LmJ1Y2tldHMuaW5kZXgiXSwgImVudGl0eSI6ICJjbGllbnQuaGVhbHRoY2hlY2tlciIs + ICJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQtb3ItY3JlYXRlIn0iIiIKICAg + ICAgICBdID0gIiIiW3siZW50aXR5IjoiY2xpZW50LmhlYWx0aGNoZWNrZXIiLCJrZXkiOiJBUURG + a2JOZWZ0NWJGUkFBVG5kTE5VU0VLcnVvenhpWmkzbHJkQT09IiwiY2FwcyI6eyJtb24iOiAiYWxs + b3cgciwgYWxsb3cgY29tbWFuZCBxdW9ydW1fc3RhdHVzLCBhbGxvdyBjb21tYW5kIHZlcnNpb24i + LCAibWdyIjogImFsbG93IGNvbW1hbmQgY29uZmlnIiwgIm9zZCI6ICJwcm9maWxlIHJiZC1yZWFk + LW9ubHksIGFsbG93IHJ3eCBwb29sPWRlZmF1bHQucmd3Lm1ldGEsIGFsbG93IHIgcG9vbD0ucmd3 + LnJvb3QsIGFsbG93IHJ3IHBvb2w9ZGVmYXVsdC5yZ3cuY29udHJvbCwgYWxsb3cgcnggcG9vbD1k + ZWZhdWx0LnJndy5sb2csIGFsbG93IHggcG9vbD1kZWZhdWx0LnJndy5idWNrZXRzLmluZGV4In19 + XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6 + IFsibW9uIiwgImFsbG93IHIsIGFsbG93IGNvbW1hbmQgcXVvcnVtX3N0YXR1cywgYWxsb3cgY29t + bWFuZCB2ZXJzaW9uIiwgIm1nciIsICJhbGxvdyBjb21tYW5kIGNvbmZpZyIsICJvc2QiLCAicHJv + ZmlsZSByYmQtcmVhZC1vbmx5LCBhbGxvdyByd3ggcG9vbD1kZWZhdWx0LnJndy5tZXRhLCBhbGxv + dyByIHBvb2w9LnJndy5yb290LCBhbGxvdyBydyBwb29sPWRlZmF1bHQucmd3LmNvbnRyb2wsIGFs + bG93IHJ4IHBvb2w9ZGVmYXVsdC5yZ3cubG9nLCBhbGxvdyB4IHBvb2w9ZGVmYXVsdC5yZ3cuYnVj + a2V0cy5pbmRleCJdLCAiZW50aXR5IjogImNsaWVudC5oZWFsdGhjaGVja2VyIiwgImZvcm1hdCI6 + ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGNhcHMifSIiIgogICAgICAgIF0gPSAiIiJbeyJlbnRp + dHkiOiJjbGllbnQuaGVhbHRoY2hlY2tlciIsImtleSI6IkFRREZrYk5lZnQ1YkZSQUFUbmRMTlVT + UktydW96eGlaaTNscmRBPT0iLCJjYXBzIjp7Im1vbiI6ICJhbGxvdyByLCBhbGxvdyBjb21tYW5k + IHF1b3J1bV9zdGF0dXMsIGFsbG93IGNvbW1hbmQgdmVyc2lvbiIsICJtZ3IiOiAiYWxsb3cgY29t + bWFuZCBjb25maWciLCAib3NkIjogInByb2ZpbGUgcmJkLXJlYWQtb25seSwgYWxsb3cgcnd4IHBv b2w9ZGVmYXVsdC5yZ3cubWV0YSwgYWxsb3cgciBwb29sPS5yZ3cucm9vdCwgYWxsb3cgcncgcG9v bD1kZWZhdWx0LnJndy5jb250cm9sLCBhbGxvdyByeCBwb29sPWRlZmF1bHQucmd3LmxvZywgYWxs b3cgeCBwb29sPWRlZmF1bHQucmd3LmJ1Y2tldHMuaW5kZXgifX1dIiIiCiAgICAgICAgc2VsZi5j @@ -223,1311 +241,1337 @@ metadata: ImVudGl0eSI6ImNsaWVudC5oZWFsdGhjaGVja2VyIiwia2V5IjoiQVFERmtiTmVmdDViRlJBQVRu ZExOVVNFS3J1b3p4aVppM2xyZEE9PSIsImNhcHMiOnsibW9uIjogImFsbG93IHIsIGFsbG93IGNv bW1hbmQgcXVvcnVtX3N0YXR1cywgYWxsb3cgY29tbWFuZCB2ZXJzaW9uIiwgIm1nciI6ICJhbGxv - dyBjb21tYW5kIGNvbmZpZyIsICJvc2QiOiAiYWxsb3cgcnd4IHBvb2w9ZGVmYXVsdC5yZ3cubWV0 - YSwgYWxsb3cgciBwb29sPS5yZ3cucm9vdCwgYWxsb3cgcncgcG9vbD1kZWZhdWx0LnJndy5jb250 - cm9sLCBhbGxvdyByeCBwb29sPWRlZmF1bHQucmd3LmxvZywgYWxsb3cgeCBwb29sPWRlZmF1bHQu - cmd3LmJ1Y2tldHMuaW5kZXgifX1dIiIiCiAgICAgICAgc2VsZi5jbWRfb3V0cHV0X21hcFsKICAg - ICAgICAgICAgIiIieyJlbnRpdHkiOiAiY2xpZW50LmNzaS1jZXBoZnMtbm9kZSIsICJmb3JtYXQi - OiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQifSIiIgogICAgICAgIF0gPSAiIiJbXSIiIgog - ICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiZW50aXR5IjogImNs - aWVudC5jc2ktcmJkLW5vZGUiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0 - In0iIiIKICAgICAgICBdID0gIiIiW10iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwog - ICAgICAgICAgICAiIiJ7ImVudGl0eSI6ICJjbGllbnQuY3NpLXJiZC1wcm92aXNpb25lciIsICJm - b3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQifSIiIgogICAgICAgIF0gPSAiIiJb - XSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiZW50aXR5 - IjogImNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyIiwgImZvcm1hdCI6ICJqc29uIiwgInBy - ZWZpeCI6ICJhdXRoIGdldCJ9IiIiCiAgICAgICAgXSA9ICIiIltdIiIiCiAgICAgICAgc2VsZi5j - bWRfb3V0cHV0X21hcFsKICAgICAgICAgICAgIiIieyJlbnRpdHkiOiAiY2xpZW50LmNzaS1jZXBo - ZnMtcHJvdmlzaW9uZXItb3BlbnNoaWZ0LXN0b3JhZ2UiLCAiZm9ybWF0IjogImpzb24iLCAicHJl - Zml4IjogImF1dGggZ2V0In0iIiIKICAgICAgICBdID0gIiIiW10iIiIKICAgICAgICBzZWxmLmNt - ZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7ImVudGl0eSI6ICJjbGllbnQuY3NpLWNlcGhm - cy1wcm92aXNpb25lci1vcGVuc2hpZnQtc3RvcmFnZS1teWZzIiwgImZvcm1hdCI6ICJqc29uIiwg - InByZWZpeCI6ICJhdXRoIGdldCJ9IiIiCiAgICAgICAgXSA9ICIiIltdIiIiCiAgICAgICAgc2Vs - Zi5jbWRfb3V0cHV0X21hcFsKICAgICAgICAgICAgIiIieyJlbnRpdHkiOiAiY2xpZW50LmNzaS1j - ZXBoZnMtcHJvdmlzaW9uZXIiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0 - In0iIiIKICAgICAgICBdID0gIiIiW3siZW50aXR5IjoiY2xpZW50LmNzaS1jZXBoZnMtcHJvdmlz - aW9uZXIiLCJrZXkiOiJBUURGa2JOZWZ0NWJGUkFBVG5kTE5VU0VLcnVvenhpWmkzbHJkQT09Iiwi - Y2FwcyI6eyJtb24iOiJhbGxvdyByIiwgIm1nciI6ImFsbG93IHJ3IiwgIm9zZCI6ImFsbG93IHJ3 - IHRhZyBjZXBoZnMgbWV0YWRhdGE9KiJ9fV0iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFw - WwogICAgICAgICAgICAiIiJ7ImNhcHMiOiBbIm1vbiIsICJhbGxvdyByLCBhbGxvdyBjb21tYW5k - ICdvc2QgYmxvY2tsaXN0JyIsICJtZ3IiLCAiYWxsb3cgcnciLCAib3NkIiwgImFsbG93IHJ3IHRh - ZyBjZXBoZnMgbWV0YWRhdGE9KiJdLCAiZW50aXR5IjogImNsaWVudC5jc2ktY2VwaGZzLXByb3Zp - c2lvbmVyIiwgImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGNhcHMifSIiIgogICAg - ICAgIF0gPSAiIiJbeyJlbnRpdHkiOiJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lciIsImtl - eSI6IkFRREZrYk5lZnQ1YkZSQUFUbmRMTlVTRUtydW96eGlaaTNscmRBPT0iLCJjYXBzIjp7Im1v - biI6ImFsbG93IHIsICBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsICJtZ3IiOiJhbGxv - dyBydyIsICJvc2QiOiJhbGxvdyBydyB0YWcgY2VwaGZzIG1ldGFkYXRhPSoifX1dIiIiCiAgICAg - ICAgc2VsZi5jbWRfb3V0cHV0X21hcFsneyJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAic3Rh - dHVzIn0nXSA9IGNlcGhfc3RhdHVzX3N0cgoKICAgIGRlZiBzaHV0ZG93bihzZWxmKToKICAgICAg - ICBwYXNzCgogICAgZGVmIGdldF9mc2lkKHNlbGYpOgogICAgICAgIHJldHVybiAiYWY0ZTE2NzMt - MGI3Mi00MDJkLTk5MGEtMjJkMjkxOWQwZjFjIgoKICAgIGRlZiBjb25mX3JlYWRfZmlsZShzZWxm - KToKICAgICAgICBwYXNzCgogICAgZGVmIGNvbm5lY3Qoc2VsZik6CiAgICAgICAgcGFzcwoKICAg - IGRlZiBwb29sX2V4aXN0cyhzZWxmLCBwb29sX25hbWUpOgogICAgICAgIHJldHVybiBUcnVlCgog - ICAgZGVmIG1vbl9jb21tYW5kKHNlbGYsIGNtZCwgb3V0KToKICAgICAgICBqc29uX2NtZCA9IGpz - b24ubG9hZHMoY21kKQogICAgICAgIGpzb25fY21kX3N0ciA9IGpzb24uZHVtcHMoanNvbl9jbWQs - IHNvcnRfa2V5cz1UcnVlKQogICAgICAgIGNtZF9vdXRwdXQgPSBzZWxmLmNtZF9vdXRwdXRfbWFw - W2pzb25fY21kX3N0cl0KICAgICAgICByZXR1cm4gc2VsZi5yZXR1cm5fdmFsLCBjbWRfb3V0cHV0 - LCBzdHIoc2VsZi5lcnJfbWVzc2FnZS5lbmNvZGUoInV0Zi04IikpCgogICAgZGVmIF9jb252ZXJ0 - X2hvc3RuYW1lX3RvX2lwKHNlbGYsIGhvc3RfbmFtZSk6CiAgICAgICAgaXBfcmVnX3ggPSByZS5j - b21waWxlKHIiXGR7MSwzfS5cZHsxLDN9LlxkezEsM30uXGR7MSwzfSIpCiAgICAgICAgIyBpZiBw - cm92aWRlZCBob3N0IGlzIGRpcmVjdGx5IGFuIElQIGFkZHJlc3MsIHJldHVybiB0aGUgc2FtZQog - ICAgICAgIGlmIGlwX3JlZ194Lm1hdGNoKGhvc3RfbmFtZSk6CiAgICAgICAgICAgIHJldHVybiBo - b3N0X25hbWUKICAgICAgICBpbXBvcnQgcmFuZG9tCgogICAgICAgIGhvc3RfaXAgPSBzZWxmLmR1 - bW15X2hvc3RfaXBfbWFwLmdldChob3N0X25hbWUsICIiKQogICAgICAgIGlmIG5vdCBob3N0X2lw - OgogICAgICAgICAgICBob3N0X2lwID0gZiIxNzIuOS57cmFuZG9tLnJhbmRpbnQoMCwgMjU0KX0u - e3JhbmRvbS5yYW5kaW50KDAsIDI1NCl9IgogICAgICAgICAgICBzZWxmLmR1bW15X2hvc3RfaXBf - bWFwW2hvc3RfbmFtZV0gPSBob3N0X2lwCiAgICAgICAgZGVsIHJhbmRvbQogICAgICAgIHJldHVy - biBob3N0X2lwCgogICAgQGNsYXNzbWV0aG9kCiAgICBkZWYgUmFkb3MoY29uZmZpbGU9Tm9uZSk6 - CiAgICAgICAgcmV0dXJuIER1bW15UmFkb3MoKQoKCmNsYXNzIFMzQXV0aChBdXRoQmFzZSk6Cgog - ICAgIiIiQXR0YWNoZXMgQVdTIEF1dGhlbnRpY2F0aW9uIHRvIHRoZSBnaXZlbiBSZXF1ZXN0IG9i - amVjdC4iIiIKCiAgICBzZXJ2aWNlX2Jhc2VfdXJsID0gInMzLmFtYXpvbmF3cy5jb20iCgogICAg - ZGVmIF9faW5pdF9fKHNlbGYsIGFjY2Vzc19rZXksIHNlY3JldF9rZXksIHNlcnZpY2VfdXJsPU5v - bmUpOgogICAgICAgIGlmIHNlcnZpY2VfdXJsOgogICAgICAgICAgICBzZWxmLnNlcnZpY2VfYmFz - ZV91cmwgPSBzZXJ2aWNlX3VybAogICAgICAgIHNlbGYuYWNjZXNzX2tleSA9IHN0cihhY2Nlc3Nf - a2V5KQogICAgICAgIHNlbGYuc2VjcmV0X2tleSA9IHN0cihzZWNyZXRfa2V5KQoKICAgIGRlZiBf - X2NhbGxfXyhzZWxmLCByKToKICAgICAgICAjIENyZWF0ZSBkYXRlIGhlYWRlciBpZiBpdCBpcyBu - b3QgY3JlYXRlZCB5ZXQuCiAgICAgICAgaWYgImRhdGUiIG5vdCBpbiByLmhlYWRlcnMgYW5kICJ4 - LWFtei1kYXRlIiBub3QgaW4gci5oZWFkZXJzOgogICAgICAgICAgICByLmhlYWRlcnNbImRhdGUi - XSA9IGZvcm1hdGRhdGUodGltZXZhbD1Ob25lLCBsb2NhbHRpbWU9RmFsc2UsIHVzZWdtdD1UcnVl - KQogICAgICAgIHNpZ25hdHVyZSA9IHNlbGYuZ2V0X3NpZ25hdHVyZShyKQogICAgICAgIGlmIHB5 - M2s6CiAgICAgICAgICAgIHNpZ25hdHVyZSA9IHNpZ25hdHVyZS5kZWNvZGUoInV0Zi04IikKICAg - ICAgICByLmhlYWRlcnNbIkF1dGhvcml6YXRpb24iXSA9IGYiQVdTIHtzZWxmLmFjY2Vzc19rZXl9 - OntzaWduYXR1cmV9IgogICAgICAgIHJldHVybiByCgogICAgZGVmIGdldF9zaWduYXR1cmUoc2Vs - Ziwgcik6CiAgICAgICAgY2Fub25pY2FsX3N0cmluZyA9IHNlbGYuZ2V0X2Nhbm9uaWNhbF9zdHJp - bmcoci51cmwsIHIuaGVhZGVycywgci5tZXRob2QpCiAgICAgICAgaWYgcHkzazoKICAgICAgICAg - ICAga2V5ID0gc2VsZi5zZWNyZXRfa2V5LmVuY29kZSgidXRmLTgiKQogICAgICAgICAgICBtc2cg - PSBjYW5vbmljYWxfc3RyaW5nLmVuY29kZSgidXRmLTgiKQogICAgICAgIGVsc2U6CiAgICAgICAg - ICAgIGtleSA9IHNlbGYuc2VjcmV0X2tleQogICAgICAgICAgICBtc2cgPSBjYW5vbmljYWxfc3Ry - aW5nCiAgICAgICAgaCA9IGhtYWMubmV3KGtleSwgbXNnLCBkaWdlc3Rtb2Q9c2hhKQogICAgICAg - IHJldHVybiBlbmNvZGVzdHJpbmcoaC5kaWdlc3QoKSkuc3RyaXAoKQoKICAgIGRlZiBnZXRfY2Fu - b25pY2FsX3N0cmluZyhzZWxmLCB1cmwsIGhlYWRlcnMsIG1ldGhvZCk6CiAgICAgICAgcGFyc2Vk - dXJsID0gdXJscGFyc2UodXJsKQogICAgICAgIG9iamVjdGtleSA9IHBhcnNlZHVybC5wYXRoWzE6 - XQoKICAgICAgICBidWNrZXQgPSBwYXJzZWR1cmwubmV0bG9jWzogLWxlbihzZWxmLnNlcnZpY2Vf - YmFzZV91cmwpXQogICAgICAgIGlmIGxlbihidWNrZXQpID4gMToKICAgICAgICAgICAgIyByZW1v - dmUgbGFzdCBkb3QKICAgICAgICAgICAgYnVja2V0ID0gYnVja2V0WzotMV0KCiAgICAgICAgaW50 - ZXJlc3RpbmdfaGVhZGVycyA9IHsiY29udGVudC1tZDUiOiAiIiwgImNvbnRlbnQtdHlwZSI6ICIi - LCAiZGF0ZSI6ICIifQogICAgICAgIGZvciBrZXkgaW4gaGVhZGVyczoKICAgICAgICAgICAgbGsg - PSBrZXkubG93ZXIoKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBsayA9IGxrLmRl - Y29kZSgidXRmLTgiKQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBwYXNzCiAg - ICAgICAgICAgIGlmIGhlYWRlcnNba2V5XSBhbmQgKAogICAgICAgICAgICAgICAgbGsgaW4gaW50 - ZXJlc3RpbmdfaGVhZGVycy5rZXlzKCkgb3IgbGsuc3RhcnRzd2l0aCgieC1hbXotIikKICAgICAg - ICAgICAgKToKICAgICAgICAgICAgICAgIGludGVyZXN0aW5nX2hlYWRlcnNbbGtdID0gaGVhZGVy - c1trZXldLnN0cmlwKCkKCiAgICAgICAgIyBJZiB4LWFtei1kYXRlIGlzIHVzZWQgaXQgc3VwZXJz - ZWRlcyB0aGUgZGF0ZSBoZWFkZXIuCiAgICAgICAgaWYgbm90IHB5M2s6CiAgICAgICAgICAgIGlm - ICJ4LWFtei1kYXRlIiBpbiBpbnRlcmVzdGluZ19oZWFkZXJzOgogICAgICAgICAgICAgICAgaW50 - ZXJlc3RpbmdfaGVhZGVyc1siZGF0ZSJdID0gIiIKICAgICAgICBlbHNlOgogICAgICAgICAgICBp - ZiAieC1hbXotZGF0ZSIgaW4gaW50ZXJlc3RpbmdfaGVhZGVyczoKICAgICAgICAgICAgICAgIGlu - dGVyZXN0aW5nX2hlYWRlcnNbImRhdGUiXSA9ICIiCgogICAgICAgIGJ1ZiA9IGYie21ldGhvZH1c - biIKICAgICAgICBmb3Iga2V5IGluIHNvcnRlZChpbnRlcmVzdGluZ19oZWFkZXJzLmtleXMoKSk6 - CiAgICAgICAgICAgIHZhbCA9IGludGVyZXN0aW5nX2hlYWRlcnNba2V5XQogICAgICAgICAgICBp - ZiBrZXkuc3RhcnRzd2l0aCgieC1hbXotIik6CiAgICAgICAgICAgICAgICBidWYgKz0gZiJ7a2V5 - fTp7dmFsfVxuIgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgYnVmICs9IGYie3Zh - bH1cbiIKCiAgICAgICAgIyBhcHBlbmQgdGhlIGJ1Y2tldCBpZiBpdCBleGlzdHMKICAgICAgICBp - ZiBidWNrZXQgIT0gIiI6CiAgICAgICAgICAgIGJ1ZiArPSBmIi97YnVja2V0fSIKCiAgICAgICAg - IyBhZGQgdGhlIG9iamVjdGtleS4gZXZlbiBpZiBpdCBkb2Vzbid0IGV4aXN0LCBhZGQgdGhlIHNs - YXNoCiAgICAgICAgYnVmICs9IGYiL3tvYmplY3RrZXl9IgoKICAgICAgICByZXR1cm4gYnVmCgoK - Y2xhc3MgUmFkb3NKU09OOgogICAgRVhURVJOQUxfVVNFUl9OQU1FID0gImNsaWVudC5oZWFsdGhj - aGVja2VyIgogICAgRVhURVJOQUxfUkdXX0FETUlOX09QU19VU0VSX05BTUUgPSAicmd3LWFkbWlu - LW9wcy11c2VyIgogICAgRU1QVFlfT1VUUFVUX0xJU1QgPSAiRW1wdHkgb3V0cHV0IGxpc3QiCiAg - ICBERUZBVUxUX1JHV19QT09MX1BSRUZJWCA9ICJkZWZhdWx0IgogICAgREVGQVVMVF9NT05JVE9S - SU5HX0VORFBPSU5UX1BPUlQgPSAiOTI4MyIKCiAgICBAY2xhc3NtZXRob2QKICAgIGRlZiBnZW5f - YXJnX3BhcnNlcihjbHMsIGFyZ3NfdG9fcGFyc2U9Tm9uZSk6CiAgICAgICAgYXJnUCA9IGFyZ3Bh - cnNlLkFyZ3VtZW50UGFyc2VyKCkKCiAgICAgICAgY29tbW9uX2dyb3VwID0gYXJnUC5hZGRfYXJn - dW1lbnRfZ3JvdXAoImNvbW1vbiIpCiAgICAgICAgY29tbW9uX2dyb3VwLmFkZF9hcmd1bWVudCgi - LS12ZXJib3NlIiwgIi12IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSkKICAg - ICAgICBjb21tb25fZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1jZXBoLWNvbmYi - LCAiLWMiLCBoZWxwPSJQcm92aWRlIGEgY2VwaCBjb25mIGZpbGUuIiwgdHlwZT1zdHIKICAgICAg - ICApCiAgICAgICAgY29tbW9uX2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0ta2V5 - cmluZyIsICItayIsIGhlbHA9IlBhdGggdG8gY2VwaCBrZXlyaW5nIGZpbGUuIiwgdHlwZT1zdHIK - ICAgICAgICApCiAgICAgICAgY29tbW9uX2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAg - Ii0tcnVuLWFzLXVzZXIiLAogICAgICAgICAgICAiLXUiLAogICAgICAgICAgICBkZWZhdWx0PSIi - LAogICAgICAgICAgICB0eXBlPXN0ciwKICAgICAgICAgICAgaGVscD0iUHJvdmlkZXMgYSB1c2Vy - IG5hbWUgdG8gY2hlY2sgdGhlIGNsdXN0ZXIncyBoZWFsdGggc3RhdHVzLCBtdXN0IGJlIHByZWZp - eGVkIGJ5ICdjbGllbnQuJyIsCiAgICAgICAgKQogICAgICAgIGNvbW1vbl9ncm91cC5hZGRfYXJn - dW1lbnQoCiAgICAgICAgICAgICItLWNsdXN0ZXItbmFtZSIsIGRlZmF1bHQ9IiIsIGhlbHA9IkNl - cGggY2x1c3RlciBuYW1lIgogICAgICAgICkKICAgICAgICBjb21tb25fZ3JvdXAuYWRkX2FyZ3Vt - ZW50KAogICAgICAgICAgICAiLS1uYW1lc3BhY2UiLAogICAgICAgICAgICBkZWZhdWx0PSIiLAog - ICAgICAgICAgICBoZWxwPSJOYW1lc3BhY2Ugd2hlcmUgQ2VwaENsdXN0ZXIgaXMgcnVubmluZyIs - CiAgICAgICAgKQogICAgICAgIGNvbW1vbl9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAg - ICItLXJndy1wb29sLXByZWZpeCIsIGRlZmF1bHQ9IiIsIGhlbHA9IlJHVyBQb29sIHByZWZpeCIK - ICAgICAgICApCiAgICAgICAgY29tbW9uX2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAg - Ii0tcmVzdHJpY3RlZC1hdXRoLXBlcm1pc3Npb24iLAogICAgICAgICAgICBkZWZhdWx0PUZhbHNl - LAogICAgICAgICAgICBoZWxwPSJSZXN0cmljdCBjZXBoQ1NJS2V5cmluZ3MgYXV0aCBwZXJtaXNz - aW9ucyB0byBzcGVjaWZpYyBwb29scywgY2x1c3Rlci4iCiAgICAgICAgICAgICsgIk1hbmRhdG9y - eSBmbGFncyB0aGF0IG5lZWQgdG8gYmUgc2V0IGFyZSAtLXJiZC1kYXRhLXBvb2wtbmFtZSwgYW5k - IC0tY2x1c3Rlci1uYW1lLiIKICAgICAgICAgICAgKyAiLS1jZXBoZnMtZmlsZXN5c3RlbS1uYW1l - IGZsYWcgY2FuIGFsc28gYmUgcGFzc2VkIGluIGNhc2Ugb2YgY2VwaGZzIHVzZXIgcmVzdHJpY3Rp - b24sIHNvIGl0IGNhbiByZXN0cmljdCB1c2VyIHRvIHBhcnRpY3VsYXIgY2VwaGZzIGZpbGVzeXN0 - ZW0iCiAgICAgICAgICAgICsgInNhbXBsZSBydW46IGBweXRob24zIC9ldGMvY2VwaC9jcmVhdGUt - ZXh0ZXJuYWwtY2x1c3Rlci1yZXNvdXJjZXMucHkgLS1jZXBoZnMtZmlsZXN5c3RlbS1uYW1lIG15 - ZnMgLS1yYmQtZGF0YS1wb29sLW5hbWUgcmVwbGljYXBvb2wgLS1jbHVzdGVyLW5hbWUgcm9va3N0 - b3JhZ2UgLS1yZXN0cmljdGVkLWF1dGgtcGVybWlzc2lvbiB0cnVlYCIKICAgICAgICAgICAgKyAi - Tm90ZTogUmVzdHJpY3RpbmcgdGhlIGNzaS11c2VycyBwZXIgcG9vbCwgYW5kIHBlciBjbHVzdGVy - IHdpbGwgcmVxdWlyZSBjcmVhdGluZyBuZXcgY3NpLXVzZXJzIGFuZCBuZXcgc2VjcmV0cyBmb3Ig - dGhhdCBjc2ktdXNlcnMuIgogICAgICAgICAgICArICJTbyBhcHBseSB0aGVzZSBzZWNyZXRzIG9u - bHkgdG8gbmV3IGBDb25zdW1lciBjbHVzdGVyYCBkZXBsb3ltZW50IHdoaWxlIHVzaW5nIHRoZSBz - YW1lIGBTb3VyY2UgY2x1c3RlcmAuIiwKICAgICAgICApCiAgICAgICAgY29tbW9uX2dyb3VwLmFk - ZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tdjItcG9ydC1lbmFibGUiLAogICAgICAgICAgICBh - Y3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAg - ICBoZWxwPSJFbmFibGUgdjIgbW9uIHBvcnQoMzMwMCkgZm9yIG1vbnMiLAogICAgICAgICkKCiAg - ICAgICAgb3V0cHV0X2dyb3VwID0gYXJnUC5hZGRfYXJndW1lbnRfZ3JvdXAoIm91dHB1dCIpCiAg - ICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tZm9ybWF0IiwK - ICAgICAgICAgICAgIi10IiwKICAgICAgICAgICAgY2hvaWNlcz1bImpzb24iLCAiYmFzaCJdLAog - ICAgICAgICAgICBkZWZhdWx0PSJqc29uIiwKICAgICAgICAgICAgaGVscD0iUHJvdmlkZXMgdGhl - IG91dHB1dCBmb3JtYXQgKGpzb24gfCBiYXNoKSIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9n - cm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLW91dHB1dCIsCiAgICAgICAgICAgICIt - byIsCiAgICAgICAgICAgIGRlZmF1bHQ9IiIsCiAgICAgICAgICAgIGhlbHA9Ik91dHB1dCB3aWxs - IGJlIHN0b3JlZCBpbnRvIHRoZSBwcm92aWRlZCBmaWxlIiwKICAgICAgICApCiAgICAgICAgb3V0 - cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tY2VwaGZzLWZpbGVzeXN0ZW0t - bmFtZSIsCiAgICAgICAgICAgIGRlZmF1bHQ9IiIsCiAgICAgICAgICAgIGhlbHA9IlByb3ZpZGVz - IHRoZSBuYW1lIG9mIHRoZSBDZXBoIGZpbGVzeXN0ZW0iLAogICAgICAgICkKICAgICAgICBvdXRw - dXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1jZXBoZnMtbWV0YWRhdGEtcG9v - bC1uYW1lIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAgaGVscD0iUHJvdmlk - ZXMgdGhlIG5hbWUgb2YgdGhlIGNlcGhmcyBtZXRhZGF0YSBwb29sIiwKICAgICAgICApCiAgICAg - ICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tY2VwaGZzLWRhdGEt - cG9vbC1uYW1lIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAgaGVscD0iUHJv - dmlkZXMgdGhlIG5hbWUgb2YgdGhlIGNlcGhmcyBkYXRhIHBvb2wiLAogICAgICAgICkKICAgICAg - ICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1yYmQtZGF0YS1wb29s + dyBjb21tYW5kIGNvbmZpZyIsICJvc2QiOiAicHJvZmlsZSByYmQtcmVhZC1vbmx5LCBhbGxvdyBy + d3ggcG9vbD1kZWZhdWx0LnJndy5tZXRhLCBhbGxvdyByIHBvb2w9LnJndy5yb290LCBhbGxvdyBy + dyBwb29sPWRlZmF1bHQucmd3LmNvbnRyb2wsIGFsbG93IHJ4IHBvb2w9ZGVmYXVsdC5yZ3cubG9n + LCBhbGxvdyB4IHBvb2w9ZGVmYXVsdC5yZ3cuYnVja2V0cy5pbmRleCJ9fV0iIiIKICAgICAgICBz + ZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7ImVudGl0eSI6ICJjbGllbnQuY3Np + LWNlcGhmcy1ub2RlIiwgImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGdldCJ9IiIi + CiAgICAgICAgXSA9ICIiIltdIiIiCiAgICAgICAgc2VsZi5jbWRfb3V0cHV0X21hcFsKICAgICAg + ICAgICAgIiIieyJlbnRpdHkiOiAiY2xpZW50LmNzaS1yYmQtbm9kZSIsICJmb3JtYXQiOiAianNv + biIsICJwcmVmaXgiOiAiYXV0aCBnZXQifSIiIgogICAgICAgIF0gPSAiIiJbXSIiIgogICAgICAg + IHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiZW50aXR5IjogImNsaWVudC5j + c2ktcmJkLXByb3Zpc2lvbmVyIiwgImZvcm1hdCI6ICJqc29uIiwgInByZWZpeCI6ICJhdXRoIGdl + dCJ9IiIiCiAgICAgICAgXSA9ICIiIltdIiIiCiAgICAgICAgc2VsZi5jbWRfb3V0cHV0X21hcFsK + ICAgICAgICAgICAgIiIieyJlbnRpdHkiOiAiY2xpZW50LmNzaS1jZXBoZnMtcHJvdmlzaW9uZXIi + LCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0In0iIiIKICAgICAgICBdID0g + IiIiW10iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7ImVu + dGl0eSI6ICJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lci1vcGVuc2hpZnQtc3RvcmFnZSIs + ICJmb3JtYXQiOiAianNvbiIsICJwcmVmaXgiOiAiYXV0aCBnZXQifSIiIgogICAgICAgIF0gPSAi + IiJbXSIiIgogICAgICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiZW50 + aXR5IjogImNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyLW9wZW5zaGlmdC1zdG9yYWdlLW15 + ZnMiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4IjogImF1dGggZ2V0In0iIiIKICAgICAgICBd + ID0gIiIiW10iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWwogICAgICAgICAgICAiIiJ7 + ImVudGl0eSI6ICJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lciIsICJmb3JtYXQiOiAianNv + biIsICJwcmVmaXgiOiAiYXV0aCBnZXQifSIiIgogICAgICAgIF0gPSAiIiJbeyJlbnRpdHkiOiJj + bGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lciIsImtleSI6IkFRREZrYk5lZnQ1YkZSQUFUbmRM + TlVTRUtydW96eGlaaTNscmRBPT0iLCJjYXBzIjp7Im1vbiI6ImFsbG93IHIiLCAibWdyIjoiYWxs + b3cgcnciLCAib3NkIjoiYWxsb3cgcncgdGFnIGNlcGhmcyBtZXRhZGF0YT0qIn19XSIiIgogICAg + ICAgIHNlbGYuY21kX291dHB1dF9tYXBbCiAgICAgICAgICAgICIiInsiY2FwcyI6IFsibW9uIiwg + ImFsbG93IHIsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwgIm1nciIsICJhbGxvdyBy + dyIsICJvc2QiLCAiYWxsb3cgcncgdGFnIGNlcGhmcyBtZXRhZGF0YT0qIl0sICJlbnRpdHkiOiAi + Y2xpZW50LmNzaS1jZXBoZnMtcHJvdmlzaW9uZXIiLCAiZm9ybWF0IjogImpzb24iLCAicHJlZml4 + IjogImF1dGggY2FwcyJ9IiIiCiAgICAgICAgXSA9ICIiIlt7ImVudGl0eSI6ImNsaWVudC5jc2kt + Y2VwaGZzLXByb3Zpc2lvbmVyIiwia2V5IjoiQVFERmtiTmVmdDViRlJBQVRuZExOVVNFS3J1b3p4 + aVppM2xyZEE9PSIsImNhcHMiOnsibW9uIjoiYWxsb3cgciwgIGFsbG93IGNvbW1hbmQgJ29zZCBi + bG9ja2xpc3QnIiwgIm1nciI6ImFsbG93IHJ3IiwgIm9zZCI6ImFsbG93IHJ3IHRhZyBjZXBoZnMg + bWV0YWRhdGE9KiJ9fV0iIiIKICAgICAgICBzZWxmLmNtZF9vdXRwdXRfbWFwWyd7ImZvcm1hdCI6 + ICJqc29uIiwgInByZWZpeCI6ICJzdGF0dXMifSddID0gY2VwaF9zdGF0dXNfc3RyCgogICAgZGVm + IHNodXRkb3duKHNlbGYpOgogICAgICAgIHBhc3MKCiAgICBkZWYgZ2V0X2ZzaWQoc2VsZik6CiAg + ICAgICAgcmV0dXJuICJhZjRlMTY3My0wYjcyLTQwMmQtOTkwYS0yMmQyOTE5ZDBmMWMiCgogICAg + ZGVmIGNvbmZfcmVhZF9maWxlKHNlbGYpOgogICAgICAgIHBhc3MKCiAgICBkZWYgY29ubmVjdChz + ZWxmKToKICAgICAgICBwYXNzCgogICAgZGVmIHBvb2xfZXhpc3RzKHNlbGYsIHBvb2xfbmFtZSk6 + CiAgICAgICAgcmV0dXJuIFRydWUKCiAgICBkZWYgbW9uX2NvbW1hbmQoc2VsZiwgY21kLCBvdXQp + OgogICAgICAgIGpzb25fY21kID0ganNvbi5sb2FkcyhjbWQpCiAgICAgICAganNvbl9jbWRfc3Ry + ID0ganNvbi5kdW1wcyhqc29uX2NtZCwgc29ydF9rZXlzPVRydWUpCiAgICAgICAgY21kX291dHB1 + dCA9IHNlbGYuY21kX291dHB1dF9tYXBbanNvbl9jbWRfc3RyXQogICAgICAgIHJldHVybiBzZWxm + LnJldHVybl92YWwsIGNtZF9vdXRwdXQsIHN0cihzZWxmLmVycl9tZXNzYWdlLmVuY29kZSgidXRm + LTgiKSkKCiAgICBkZWYgX2NvbnZlcnRfaG9zdG5hbWVfdG9faXAoc2VsZiwgaG9zdF9uYW1lKToK + ICAgICAgICBpcF9yZWdfeCA9IHJlLmNvbXBpbGUociJcZHsxLDN9LlxkezEsM30uXGR7MSwzfS5c + ZHsxLDN9IikKICAgICAgICAjIGlmIHByb3ZpZGVkIGhvc3QgaXMgZGlyZWN0bHkgYW4gSVAgYWRk + cmVzcywgcmV0dXJuIHRoZSBzYW1lCiAgICAgICAgaWYgaXBfcmVnX3gubWF0Y2goaG9zdF9uYW1l + KToKICAgICAgICAgICAgcmV0dXJuIGhvc3RfbmFtZQogICAgICAgIGltcG9ydCByYW5kb20KCiAg + ICAgICAgaG9zdF9pcCA9IHNlbGYuZHVtbXlfaG9zdF9pcF9tYXAuZ2V0KGhvc3RfbmFtZSwgIiIp + CiAgICAgICAgaWYgbm90IGhvc3RfaXA6CiAgICAgICAgICAgIGhvc3RfaXAgPSBmIjE3Mi45Lnty + YW5kb20ucmFuZGludCgwLCAyNTQpfS57cmFuZG9tLnJhbmRpbnQoMCwgMjU0KX0iCiAgICAgICAg + ICAgIHNlbGYuZHVtbXlfaG9zdF9pcF9tYXBbaG9zdF9uYW1lXSA9IGhvc3RfaXAKICAgICAgICBk + ZWwgcmFuZG9tCiAgICAgICAgcmV0dXJuIGhvc3RfaXAKCiAgICBAY2xhc3NtZXRob2QKICAgIGRl + ZiBSYWRvcyhjb25mZmlsZT1Ob25lKToKICAgICAgICByZXR1cm4gRHVtbXlSYWRvcygpCgoKY2xh + c3MgUzNBdXRoKEF1dGhCYXNlKToKCiAgICAiIiJBdHRhY2hlcyBBV1MgQXV0aGVudGljYXRpb24g + dG8gdGhlIGdpdmVuIFJlcXVlc3Qgb2JqZWN0LiIiIgoKICAgIHNlcnZpY2VfYmFzZV91cmwgPSAi + czMuYW1hem9uYXdzLmNvbSIKCiAgICBkZWYgX19pbml0X18oc2VsZiwgYWNjZXNzX2tleSwgc2Vj + cmV0X2tleSwgc2VydmljZV91cmw9Tm9uZSk6CiAgICAgICAgaWYgc2VydmljZV91cmw6CiAgICAg + ICAgICAgIHNlbGYuc2VydmljZV9iYXNlX3VybCA9IHNlcnZpY2VfdXJsCiAgICAgICAgc2VsZi5h + Y2Nlc3Nfa2V5ID0gc3RyKGFjY2Vzc19rZXkpCiAgICAgICAgc2VsZi5zZWNyZXRfa2V5ID0gc3Ry + KHNlY3JldF9rZXkpCgogICAgZGVmIF9fY2FsbF9fKHNlbGYsIHIpOgogICAgICAgICMgQ3JlYXRl + IGRhdGUgaGVhZGVyIGlmIGl0IGlzIG5vdCBjcmVhdGVkIHlldC4KICAgICAgICBpZiAiZGF0ZSIg + bm90IGluIHIuaGVhZGVycyBhbmQgIngtYW16LWRhdGUiIG5vdCBpbiByLmhlYWRlcnM6CiAgICAg + ICAgICAgIHIuaGVhZGVyc1siZGF0ZSJdID0gZm9ybWF0ZGF0ZSh0aW1ldmFsPU5vbmUsIGxvY2Fs + dGltZT1GYWxzZSwgdXNlZ210PVRydWUpCiAgICAgICAgc2lnbmF0dXJlID0gc2VsZi5nZXRfc2ln + bmF0dXJlKHIpCiAgICAgICAgaWYgcHkzazoKICAgICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0 + dXJlLmRlY29kZSgidXRmLTgiKQogICAgICAgIHIuaGVhZGVyc1siQXV0aG9yaXphdGlvbiJdID0g + ZiJBV1Mge3NlbGYuYWNjZXNzX2tleX06e3NpZ25hdHVyZX0iCiAgICAgICAgcmV0dXJuIHIKCiAg + ICBkZWYgZ2V0X3NpZ25hdHVyZShzZWxmLCByKToKICAgICAgICBjYW5vbmljYWxfc3RyaW5nID0g + c2VsZi5nZXRfY2Fub25pY2FsX3N0cmluZyhyLnVybCwgci5oZWFkZXJzLCByLm1ldGhvZCkKICAg + ICAgICBpZiBweTNrOgogICAgICAgICAgICBrZXkgPSBzZWxmLnNlY3JldF9rZXkuZW5jb2RlKCJ1 + dGYtOCIpCiAgICAgICAgICAgIG1zZyA9IGNhbm9uaWNhbF9zdHJpbmcuZW5jb2RlKCJ1dGYtOCIp + CiAgICAgICAgZWxzZToKICAgICAgICAgICAga2V5ID0gc2VsZi5zZWNyZXRfa2V5CiAgICAgICAg + ICAgIG1zZyA9IGNhbm9uaWNhbF9zdHJpbmcKICAgICAgICBoID0gaG1hYy5uZXcoa2V5LCBtc2cs + IGRpZ2VzdG1vZD1zaGEpCiAgICAgICAgcmV0dXJuIGVuY29kZXN0cmluZyhoLmRpZ2VzdCgpKS5z + dHJpcCgpCgogICAgZGVmIGdldF9jYW5vbmljYWxfc3RyaW5nKHNlbGYsIHVybCwgaGVhZGVycywg + bWV0aG9kKToKICAgICAgICBwYXJzZWR1cmwgPSB1cmxwYXJzZSh1cmwpCiAgICAgICAgb2JqZWN0 + a2V5ID0gcGFyc2VkdXJsLnBhdGhbMTpdCgogICAgICAgIGJ1Y2tldCA9IHBhcnNlZHVybC5uZXRs + b2NbOiAtbGVuKHNlbGYuc2VydmljZV9iYXNlX3VybCldCiAgICAgICAgaWYgbGVuKGJ1Y2tldCkg + PiAxOgogICAgICAgICAgICAjIHJlbW92ZSBsYXN0IGRvdAogICAgICAgICAgICBidWNrZXQgPSBi + dWNrZXRbOi0xXQoKICAgICAgICBpbnRlcmVzdGluZ19oZWFkZXJzID0geyJjb250ZW50LW1kNSI6 + ICIiLCAiY29udGVudC10eXBlIjogIiIsICJkYXRlIjogIiJ9CiAgICAgICAgZm9yIGtleSBpbiBo + ZWFkZXJzOgogICAgICAgICAgICBsayA9IGtleS5sb3dlcigpCiAgICAgICAgICAgIHRyeToKICAg + ICAgICAgICAgICAgIGxrID0gbGsuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgIGV4Y2VwdDoK + ICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgaWYgaGVhZGVyc1trZXldIGFuZCAoCiAg + ICAgICAgICAgICAgICBsayBpbiBpbnRlcmVzdGluZ19oZWFkZXJzLmtleXMoKSBvciBsay5zdGFy + dHN3aXRoKCJ4LWFtei0iKQogICAgICAgICAgICApOgogICAgICAgICAgICAgICAgaW50ZXJlc3Rp + bmdfaGVhZGVyc1tsa10gPSBoZWFkZXJzW2tleV0uc3RyaXAoKQoKICAgICAgICAjIElmIHgtYW16 + LWRhdGUgaXMgdXNlZCBpdCBzdXBlcnNlZGVzIHRoZSBkYXRlIGhlYWRlci4KICAgICAgICBpZiBu + b3QgcHkzazoKICAgICAgICAgICAgaWYgIngtYW16LWRhdGUiIGluIGludGVyZXN0aW5nX2hlYWRl + cnM6CiAgICAgICAgICAgICAgICBpbnRlcmVzdGluZ19oZWFkZXJzWyJkYXRlIl0gPSAiIgogICAg + ICAgIGVsc2U6CiAgICAgICAgICAgIGlmICJ4LWFtei1kYXRlIiBpbiBpbnRlcmVzdGluZ19oZWFk + ZXJzOgogICAgICAgICAgICAgICAgaW50ZXJlc3RpbmdfaGVhZGVyc1siZGF0ZSJdID0gIiIKCiAg + ICAgICAgYnVmID0gZiJ7bWV0aG9kfVxuIgogICAgICAgIGZvciBrZXkgaW4gc29ydGVkKGludGVy + ZXN0aW5nX2hlYWRlcnMua2V5cygpKToKICAgICAgICAgICAgdmFsID0gaW50ZXJlc3RpbmdfaGVh + ZGVyc1trZXldCiAgICAgICAgICAgIGlmIGtleS5zdGFydHN3aXRoKCJ4LWFtei0iKToKICAgICAg + ICAgICAgICAgIGJ1ZiArPSBmIntrZXl9Ont2YWx9XG4iCiAgICAgICAgICAgIGVsc2U6CiAgICAg + ICAgICAgICAgICBidWYgKz0gZiJ7dmFsfVxuIgoKICAgICAgICAjIGFwcGVuZCB0aGUgYnVja2V0 + IGlmIGl0IGV4aXN0cwogICAgICAgIGlmIGJ1Y2tldCAhPSAiIjoKICAgICAgICAgICAgYnVmICs9 + IGYiL3tidWNrZXR9IgoKICAgICAgICAjIGFkZCB0aGUgb2JqZWN0a2V5LiBldmVuIGlmIGl0IGRv + ZXNuJ3QgZXhpc3QsIGFkZCB0aGUgc2xhc2gKICAgICAgICBidWYgKz0gZiIve29iamVjdGtleX0i + CgogICAgICAgIHJldHVybiBidWYKCgpjbGFzcyBSYWRvc0pTT046CiAgICBFWFRFUk5BTF9VU0VS + X05BTUUgPSAiY2xpZW50LmhlYWx0aGNoZWNrZXIiCiAgICBFWFRFUk5BTF9SR1dfQURNSU5fT1BT + X1VTRVJfTkFNRSA9ICJyZ3ctYWRtaW4tb3BzLXVzZXIiCiAgICBFTVBUWV9PVVRQVVRfTElTVCA9 + ICJFbXB0eSBvdXRwdXQgbGlzdCIKICAgIERFRkFVTFRfUkdXX1BPT0xfUFJFRklYID0gImRlZmF1 + bHQiCiAgICBERUZBVUxUX01PTklUT1JJTkdfRU5EUE9JTlRfUE9SVCA9ICI5MjgzIgoKICAgIEBj + bGFzc21ldGhvZAogICAgZGVmIGdlbl9hcmdfcGFyc2VyKGNscywgYXJnc190b19wYXJzZT1Ob25l + KToKICAgICAgICBhcmdQID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQoKICAgICAgICBjb21t + b25fZ3JvdXAgPSBhcmdQLmFkZF9hcmd1bWVudF9ncm91cCgiY29tbW9uIikKICAgICAgICBjb21t + b25fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXZlcmJvc2UiLCAiLXYiLCBhY3Rpb249InN0b3JlX3Ry + dWUiLCBkZWZhdWx0PUZhbHNlKQogICAgICAgIGNvbW1vbl9ncm91cC5hZGRfYXJndW1lbnQoCiAg + ICAgICAgICAgICItLWNlcGgtY29uZiIsICItYyIsIGhlbHA9IlByb3ZpZGUgYSBjZXBoIGNvbmYg + ZmlsZS4iLCB0eXBlPXN0cgogICAgICAgICkKICAgICAgICBjb21tb25fZ3JvdXAuYWRkX2FyZ3Vt + ZW50KAogICAgICAgICAgICAiLS1rZXlyaW5nIiwgIi1rIiwgaGVscD0iUGF0aCB0byBjZXBoIGtl + eXJpbmcgZmlsZS4iLCB0eXBlPXN0cgogICAgICAgICkKICAgICAgICBjb21tb25fZ3JvdXAuYWRk + X2FyZ3VtZW50KAogICAgICAgICAgICAiLS1ydW4tYXMtdXNlciIsCiAgICAgICAgICAgICItdSIs + CiAgICAgICAgICAgIGRlZmF1bHQ9IiIsCiAgICAgICAgICAgIHR5cGU9c3RyLAogICAgICAgICAg + ICBoZWxwPSJQcm92aWRlcyBhIHVzZXIgbmFtZSB0byBjaGVjayB0aGUgY2x1c3RlcidzIGhlYWx0 + aCBzdGF0dXMsIG11c3QgYmUgcHJlZml4ZWQgYnkgJ2NsaWVudC4nIiwKICAgICAgICApCiAgICAg + ICAgY29tbW9uX2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tazhzLWNsdXN0ZXIt + bmFtZSIsIGRlZmF1bHQ9IiIsIGhlbHA9Ikt1YmVybmV0ZXMgY2x1c3RlciBuYW1lIgogICAgICAg + ICkKICAgICAgICBjb21tb25fZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1uYW1l + c3BhY2UiLAogICAgICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICBoZWxwPSJOYW1lc3Bh + Y2Ugd2hlcmUgQ2VwaENsdXN0ZXIgaXMgcnVubmluZyIsCiAgICAgICAgKQogICAgICAgIGNvbW1v + bl9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLXJndy1wb29sLXByZWZpeCIsIGRl + ZmF1bHQ9IiIsIGhlbHA9IlJHVyBQb29sIHByZWZpeCIKICAgICAgICApCiAgICAgICAgY29tbW9u + X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tcmVzdHJpY3RlZC1hdXRoLXBlcm1p + c3Npb24iLAogICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICBoZWxwPSJSZXN0 + cmljdCBjZXBoQ1NJS2V5cmluZ3MgYXV0aCBwZXJtaXNzaW9ucyB0byBzcGVjaWZpYyBwb29scywg + Y2x1c3Rlci4iCiAgICAgICAgICAgICsgIk1hbmRhdG9yeSBmbGFncyB0aGF0IG5lZWQgdG8gYmUg + c2V0IGFyZSAtLXJiZC1kYXRhLXBvb2wtbmFtZSwgYW5kIC0tazhzLWNsdXN0ZXItbmFtZS4iCiAg + ICAgICAgICAgICsgIi0tY2VwaGZzLWZpbGVzeXN0ZW0tbmFtZSBmbGFnIGNhbiBhbHNvIGJlIHBh + c3NlZCBpbiBjYXNlIG9mIGNlcGhmcyB1c2VyIHJlc3RyaWN0aW9uLCBzbyBpdCBjYW4gcmVzdHJp + Y3QgdXNlciB0byBwYXJ0aWN1bGFyIGNlcGhmcyBmaWxlc3lzdGVtIgogICAgICAgICAgICArICJz + YW1wbGUgcnVuOiBgcHl0aG9uMyAvZXRjL2NlcGgvY3JlYXRlLWV4dGVybmFsLWNsdXN0ZXItcmVz + b3VyY2VzLnB5IC0tY2VwaGZzLWZpbGVzeXN0ZW0tbmFtZSBteWZzIC0tcmJkLWRhdGEtcG9vbC1u + YW1lIHJlcGxpY2Fwb29sIC0tazhzLWNsdXN0ZXItbmFtZSByb29rc3RvcmFnZSAtLXJlc3RyaWN0 + ZWQtYXV0aC1wZXJtaXNzaW9uIHRydWVgIgogICAgICAgICAgICArICJOb3RlOiBSZXN0cmljdGlu + ZyB0aGUgY3NpLXVzZXJzIHBlciBwb29sLCBhbmQgcGVyIGNsdXN0ZXIgd2lsbCByZXF1aXJlIGNy + ZWF0aW5nIG5ldyBjc2ktdXNlcnMgYW5kIG5ldyBzZWNyZXRzIGZvciB0aGF0IGNzaS11c2Vycy4i + CiAgICAgICAgICAgICsgIlNvIGFwcGx5IHRoZXNlIHNlY3JldHMgb25seSB0byBuZXcgYENvbnN1 + bWVyIGNsdXN0ZXJgIGRlcGxveW1lbnQgd2hpbGUgdXNpbmcgdGhlIHNhbWUgYFNvdXJjZSBjbHVz + dGVyYC4iLAogICAgICAgICkKICAgICAgICBjb21tb25fZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAg + ICAgICAgICAiLS12Mi1wb3J0LWVuYWJsZSIsCiAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1 + ZSIsCiAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9IkVuYWJsZSB2 + MiBtb24gcG9ydCgzMzAwKSBmb3IgbW9ucyIsCiAgICAgICAgKQoKICAgICAgICBvdXRwdXRfZ3Jv + dXAgPSBhcmdQLmFkZF9hcmd1bWVudF9ncm91cCgib3V0cHV0IikKICAgICAgICBvdXRwdXRfZ3Jv + dXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1mb3JtYXQiLAogICAgICAgICAgICAiLXQi + LAogICAgICAgICAgICBjaG9pY2VzPVsianNvbiIsICJiYXNoIl0sCiAgICAgICAgICAgIGRlZmF1 + bHQ9Impzb24iLAogICAgICAgICAgICBoZWxwPSJQcm92aWRlcyB0aGUgb3V0cHV0IGZvcm1hdCAo + anNvbiB8IGJhc2gpIiwKICAgICAgICApCiAgICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVu + dCgKICAgICAgICAgICAgIi0tb3V0cHV0IiwKICAgICAgICAgICAgIi1vIiwKICAgICAgICAgICAg + ZGVmYXVsdD0iIiwKICAgICAgICAgICAgaGVscD0iT3V0cHV0IHdpbGwgYmUgc3RvcmVkIGludG8g + dGhlIHByb3ZpZGVkIGZpbGUiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2Fy + Z3VtZW50KAogICAgICAgICAgICAiLS1jZXBoZnMtZmlsZXN5c3RlbS1uYW1lIiwKICAgICAgICAg + ICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAgaGVscD0iUHJvdmlkZXMgdGhlIG5hbWUgb2YgdGhl + IENlcGggZmlsZXN5c3RlbSIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJn + dW1lbnQoCiAgICAgICAgICAgICItLWNlcGhmcy1tZXRhZGF0YS1wb29sLW5hbWUiLAogICAgICAg + ICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICBoZWxwPSJQcm92aWRlcyB0aGUgbmFtZSBvZiB0 + aGUgY2VwaGZzIG1ldGFkYXRhIHBvb2wiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAu + YWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1jZXBoZnMtZGF0YS1wb29sLW5hbWUiLAogICAg + ICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICBoZWxwPSJQcm92aWRlcyB0aGUgbmFtZSBv + ZiB0aGUgY2VwaGZzIGRhdGEgcG9vbCIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5h + ZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLXJiZC1kYXRhLXBvb2wtbmFtZSIsCiAgICAgICAg + ICAgIGRlZmF1bHQ9IiIsCiAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICBo + ZWxwPSJQcm92aWRlcyB0aGUgbmFtZSBvZiB0aGUgUkJEIGRhdGFwb29sIiwKICAgICAgICApCiAg + ICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tYWxpYXMtcmJk + LWRhdGEtcG9vbC1uYW1lIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAgcmVx + dWlyZWQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9IlByb3ZpZGVzIGFuIGFsaWFzIGZvciB0aGUg + IFJCRCBkYXRhIHBvb2wgbmFtZSwgbmVjZXNzYXJ5IGlmIGEgc3BlY2lhbCBjaGFyYWN0ZXIgaXMg + cHJlc2VudCBpbiB0aGUgcG9vbCBuYW1lIHN1Y2ggYXMgYSBwZXJpb2Qgb3IgdW5kZXJzY29yZSIs + CiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAg + ICItLXJndy1lbmRwb2ludCIsCiAgICAgICAgICAgIGRlZmF1bHQ9IiIsCiAgICAgICAgICAgIHJl + cXVpcmVkPUZhbHNlLAogICAgICAgICAgICBoZWxwPSJSQURPUyBHYXRld2F5IGVuZHBvaW50IChp + biBgPElQdjQ+OjxQT1JUPmAgb3IgYDxbSVB2Nl0+OjxQT1JUPmAgb3IgYDxGUUROPjo8UE9SVD5g + IGZvcm1hdCkiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAog + ICAgICAgICAgICAiLS1yZ3ctdGxzLWNlcnQtcGF0aCIsCiAgICAgICAgICAgIGRlZmF1bHQ9IiIs + CiAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICBoZWxwPSJSQURPUyBHYXRl + d2F5IGVuZHBvaW50IFRMUyBjZXJ0aWZpY2F0ZSIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9n + cm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLXJndy1za2lwLXRscyIsCiAgICAgICAg + ICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAg + ICBoZWxwPSJJZ25vcmUgVExTIGNlcnRpZmljYXRpb24gdmFsaWRhdGlvbiB3aGVuIGEgc2VsZi1z + aWduZWQgY2VydGlmaWNhdGUgaXMgcHJvdmlkZWQgKE5PVCBSRUNPTU1FTkRFRCIsCiAgICAgICAg + KQogICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLW1vbml0 + b3JpbmctZW5kcG9pbnQiLAogICAgICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICByZXF1 + aXJlZD1GYWxzZSwKICAgICAgICAgICAgaGVscD0iQ2VwaCBNYW5hZ2VyIHByb21ldGhldXMgZXhw + b3J0ZXIgZW5kcG9pbnRzIChjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiAoZm9ybWF0IGA8SVB2ND5g + IG9yIGA8W0lQdjZdPmAgb3IgYDxGUUROPmApIGVudHJpZXMgb2YgYWN0aXZlIGFuZCBzdGFuZGJ5 + IG1ncnMpIiwKICAgICAgICApCiAgICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAg + ICAgICAgICAgIi0tbW9uaXRvcmluZy1lbmRwb2ludC1wb3J0IiwKICAgICAgICAgICAgZGVmYXVs + dD0iIiwKICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9IkNlcGgg + TWFuYWdlciBwcm9tZXRoZXVzIGV4cG9ydGVyIHBvcnQiLAogICAgICAgICkKICAgICAgICBvdXRw + dXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1za2lwLW1vbml0b3JpbmctZW5k + cG9pbnQiLAogICAgICAgICAgICBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICBhY3Rpb249InN0 + b3JlX3RydWUiLAogICAgICAgICAgICBoZWxwPSJEbyBub3QgY2hlY2sgZm9yIGEgbW9uaXRvcmlu + ZyBlbmRwb2ludCBmb3IgdGhlIENlcGggY2x1c3RlciIsCiAgICAgICAgKQogICAgICAgIG91dHB1 + dF9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLXJiZC1tZXRhZGF0YS1lYy1wb29s LW5hbWUiLAogICAgICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICByZXF1aXJlZD1GYWxz - ZSwKICAgICAgICAgICAgaGVscD0iUHJvdmlkZXMgdGhlIG5hbWUgb2YgdGhlIFJCRCBkYXRhcG9v - bCIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAg - ICAgICItLWFsaWFzLXJiZC1kYXRhLXBvb2wtbmFtZSIsCiAgICAgICAgICAgIGRlZmF1bHQ9IiIs - CiAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICBoZWxwPSJQcm92aWRlcyBh - biBhbGlhcyBmb3IgdGhlICBSQkQgZGF0YSBwb29sIG5hbWUsIG5lY2Vzc2FyeSBpZiBhIHNwZWNp - YWwgY2hhcmFjdGVyIGlzIHByZXNlbnQgaW4gdGhlIHBvb2wgbmFtZSBzdWNoIGFzIGEgcGVyaW9k - IG9yIHVuZGVyc2NvcmUiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3Vt - ZW50KAogICAgICAgICAgICAiLS1yZ3ctZW5kcG9pbnQiLAogICAgICAgICAgICBkZWZhdWx0PSIi - LAogICAgICAgICAgICByZXF1aXJlZD1GYWxzZSwKICAgICAgICAgICAgaGVscD0iUkFET1MgR2F0 - ZXdheSBlbmRwb2ludCAoaW4gYDxJUHY0Pjo8UE9SVD5gIG9yIGA8W0lQdjZdPjo8UE9SVD5gIG9y - IGA8RlFETj46PFBPUlQ+YCBmb3JtYXQpIiwKICAgICAgICApCiAgICAgICAgb3V0cHV0X2dyb3Vw - LmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tcmd3LXRscy1jZXJ0LXBhdGgiLAogICAgICAg - ICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICByZXF1aXJlZD1GYWxzZSwKICAgICAgICAgICAg - aGVscD0iUkFET1MgR2F0ZXdheSBlbmRwb2ludCBUTFMgY2VydGlmaWNhdGUiLAogICAgICAgICkK - ICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1yZ3ctc2tp - cC10bHMiLAogICAgICAgICAgICByZXF1aXJlZD1GYWxzZSwKICAgICAgICAgICAgZGVmYXVsdD1G - YWxzZSwKICAgICAgICAgICAgaGVscD0iSWdub3JlIFRMUyBjZXJ0aWZpY2F0aW9uIHZhbGlkYXRp - b24gd2hlbiBhIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIGlzIHByb3ZpZGVkIChOT1QgUkVDT01N - RU5ERUQiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAg - ICAgICAgICAiLS1tb25pdG9yaW5nLWVuZHBvaW50IiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwK - ICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9IkNlcGggTWFuYWdl - ciBwcm9tZXRoZXVzIGV4cG9ydGVyIGVuZHBvaW50cyAoY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2Yg - KGZvcm1hdCBgPElQdjQ+YCBvciBgPFtJUHY2XT5gIG9yIGA8RlFETj5gKSBlbnRyaWVzIG9mIGFj - dGl2ZSBhbmQgc3RhbmRieSBtZ3JzKSIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5h - ZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLW1vbml0b3JpbmctZW5kcG9pbnQtcG9ydCIsCiAg - ICAgICAgICAgIGRlZmF1bHQ9IiIsCiAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAg - ICAgICBoZWxwPSJDZXBoIE1hbmFnZXIgcHJvbWV0aGV1cyBleHBvcnRlciBwb3J0IiwKICAgICAg - ICApCiAgICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tc2tp - cC1tb25pdG9yaW5nLWVuZHBvaW50IiwKICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKICAgICAg - ICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgaGVscD0iRG8gbm90IGNoZWNr - IGZvciBhIG1vbml0b3JpbmcgZW5kcG9pbnQgZm9yIHRoZSBDZXBoIGNsdXN0ZXIiLAogICAgICAg - ICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1yYmQt - bWV0YWRhdGEtZWMtcG9vbC1uYW1lIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAg - ICAgcmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9IlByb3ZpZGVzIHRoZSBuYW1lIG9m - IGVyYXN1cmUgY29kZWQgUkJEIG1ldGFkYXRhIHBvb2wiLAogICAgICAgICkKICAgICAgICBvdXRw - dXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1kcnktcnVuIiwKICAgICAgICAg - ICAgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAg - ICAgICAgaGVscD0iRHJ5IHJ1biBwcmludHMgdGhlIGV4ZWN1dGVkIGNvbW1hbmRzIHdpdGhvdXQg - cnVubmluZyB0aGVtIiwKICAgICAgICApCiAgICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVu - dCgKICAgICAgICAgICAgIi0tcmFkb3MtbmFtZXNwYWNlIiwKICAgICAgICAgICAgZGVmYXVsdD0i - IiwKICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9ImRpdmlkZXMg - YSBwb29sIGludG8gc2VwYXJhdGUgbG9naWNhbCBuYW1lc3BhY2VzIiwKICAgICAgICApCiAgICAg - ICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0tc3Vidm9sdW1lLWdy - b3VwIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAgcmVxdWlyZWQ9RmFsc2Us - CiAgICAgICAgICAgIGhlbHA9InByb3ZpZGVzIHRoZSBuYW1lIG9mIHRoZSBzdWJ2b2x1bWUgZ3Jv - dXAiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAg - ICAgICAiLS1yZ3ctcmVhbG0tbmFtZSIsCiAgICAgICAgICAgIGRlZmF1bHQ9IiIsCiAgICAgICAg - ICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICBoZWxwPSJwcm92aWRlcyB0aGUgbmFtZSBv - ZiB0aGUgcmd3LXJlYWxtIiwKICAgICAgICApCiAgICAgICAgb3V0cHV0X2dyb3VwLmFkZF9hcmd1 - bWVudCgKICAgICAgICAgICAgIi0tcmd3LXpvbmUtbmFtZSIsCiAgICAgICAgICAgIGRlZmF1bHQ9 + ZSwKICAgICAgICAgICAgaGVscD0iUHJvdmlkZXMgdGhlIG5hbWUgb2YgZXJhc3VyZSBjb2RlZCBS + QkQgbWV0YWRhdGEgcG9vbCIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJn + dW1lbnQoCiAgICAgICAgICAgICItLWRyeS1ydW4iLAogICAgICAgICAgICBkZWZhdWx0PUZhbHNl + LAogICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICBoZWxwPSJEcnkg + cnVuIHByaW50cyB0aGUgZXhlY3V0ZWQgY29tbWFuZHMgd2l0aG91dCBydW5uaW5nIHRoZW0iLAog + ICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAi + LS1yYWRvcy1uYW1lc3BhY2UiLAogICAgICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICBy + ZXF1aXJlZD1GYWxzZSwKICAgICAgICAgICAgaGVscD0iZGl2aWRlcyBhIHBvb2wgaW50byBzZXBh + cmF0ZSBsb2dpY2FsIG5hbWVzcGFjZXMiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAu + YWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1zdWJ2b2x1bWUtZ3JvdXAiLAogICAgICAgICAg + ICBkZWZhdWx0PSIiLAogICAgICAgICAgICByZXF1aXJlZD1GYWxzZSwKICAgICAgICAgICAgaGVs + cD0icHJvdmlkZXMgdGhlIG5hbWUgb2YgdGhlIHN1YnZvbHVtZSBncm91cCIsCiAgICAgICAgKQog + ICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICAgICItLXJndy1yZWFs + bS1uYW1lIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAgcmVxdWlyZWQ9RmFs + c2UsCiAgICAgICAgICAgIGhlbHA9InByb3ZpZGVzIHRoZSBuYW1lIG9mIHRoZSByZ3ctcmVhbG0i + LAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAg + ICAiLS1yZ3ctem9uZS1uYW1lIiwKICAgICAgICAgICAgZGVmYXVsdD0iIiwKICAgICAgICAgICAg + cmVxdWlyZWQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9InByb3ZpZGVzIHRoZSBuYW1lIG9mIHRo + ZSByZ3ctem9uZSIsCiAgICAgICAgKQogICAgICAgIG91dHB1dF9ncm91cC5hZGRfYXJndW1lbnQo + CiAgICAgICAgICAgICItLXJndy16b25lZ3JvdXAtbmFtZSIsCiAgICAgICAgICAgIGRlZmF1bHQ9 IiIsCiAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAogICAgICAgICAgICBoZWxwPSJwcm92aWRl - cyB0aGUgbmFtZSBvZiB0aGUgcmd3LXpvbmUiLAogICAgICAgICkKICAgICAgICBvdXRwdXRfZ3Jv - dXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS1yZ3ctem9uZWdyb3VwLW5hbWUiLAogICAg - ICAgICAgICBkZWZhdWx0PSIiLAogICAgICAgICAgICByZXF1aXJlZD1GYWxzZSwKICAgICAgICAg - ICAgaGVscD0icHJvdmlkZXMgdGhlIG5hbWUgb2YgdGhlIHJndy16b25lZ3JvdXAiLAogICAgICAg - ICkKCiAgICAgICAgdXBncmFkZV9ncm91cCA9IGFyZ1AuYWRkX2FyZ3VtZW50X2dyb3VwKCJ1cGdy - YWRlIikKICAgICAgICB1cGdyYWRlX2dyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgICAgIi0t - dXBncmFkZSIsCiAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgIGRl - ZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgIGhlbHA9IlVwZ3JhZGVzIHRoZSBjZXBoQ1NJS2V5cmlu - Z3MoRm9yIGV4YW1wbGU6IGNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyKSB3aXRoIG5ldyBw - ZXJtaXNzaW9ucyBuZWVkZWQgZm9yIHRoZSBuZXcgY2x1c3RlciB2ZXJzaW9uIGFuZCBvbGRlciBw - ZXJtaXNzaW9uIHdpbGwgc3RpbGwgYmUgYXBwbGllZC4iCiAgICAgICAgICAgICsgIlNhbXBsZSBy - dW46IGBweXRob24zIC9ldGMvY2VwaC9jcmVhdGUtZXh0ZXJuYWwtY2x1c3Rlci1yZXNvdXJjZXMu - cHkgLS11cGdyYWRlYCwgdGhpcyB3aWxsIHVwZ3JhZGUgYWxsIHRoZSBkZWZhdWx0IGNzaSB1c2Vy - cyhub24tcmVzdHJpY3RlZCkiCiAgICAgICAgICAgICsgIkZvciByZXN0cmljdGVkIHVzZXJzKEZv - ciBleGFtcGxlOiBjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lci1vcGVuc2hpZnQtc3RvcmFn - ZS1teWZzKSwgdXNlcnMgY3JlYXRlZCB1c2luZyAtLXJlc3RyaWN0ZWQtYXV0aC1wZXJtaXNzaW9u - IGZsYWcgbmVlZCB0byBwYXNzIG1hbmRhdG9yeSBmbGFncyIKICAgICAgICAgICAgKyAibWFuZGF0 - b3J5IGZsYWdzOiAnLS1yYmQtZGF0YS1wb29sLW5hbWUsIC0tY2x1c3Rlci1uYW1lIGFuZCAtLXJ1 - bi1hcy11c2VyJyBmbGFncyB3aGlsZSB1cGdyYWRpbmciCiAgICAgICAgICAgICsgImluIGNhc2Ug - b2YgY2VwaGZzIHVzZXJzIGlmIHlvdSBoYXZlIHBhc3NlZCAtLWNlcGhmcy1maWxlc3lzdGVtLW5h - bWUgZmxhZyB3aGlsZSBjcmVhdGluZyB1c2VyIHRoZW4gd2hpbGUgdXBncmFkaW5nIGl0IHdpbGwg - YmUgbWFuZGF0b3J5IHRvbyIKICAgICAgICAgICAgKyAiU2FtcGxlIHJ1bjogYHB5dGhvbjMgL2V0 - Yy9jZXBoL2NyZWF0ZS1leHRlcm5hbC1jbHVzdGVyLXJlc291cmNlcy5weSAtLXVwZ3JhZGUgLS1y - YmQtZGF0YS1wb29sLW5hbWUgcmVwbGljYXBvb2wgLS1jbHVzdGVyLW5hbWUgcm9va3N0b3JhZ2Ug - IC0tcnVuLWFzLXVzZXIgY2xpZW50LmNzaS1yYmQtbm9kZS1yb29rc3RvcmFnZS1yZXBsaWNhcG9v - bGAiCiAgICAgICAgICAgICsgIlBTOiBBbiBleGlzdGluZyBub24tcmVzdHJpY3RlZCB1c2VyIGNh - bm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSByZXN0cmljdGVkIHVzZXIgYnkgdXBncmFkaW5nLiIKICAg - ICAgICAgICAgKyAiVXBncmFkZSBmbGFnIHNob3VsZCBvbmx5IGJlIHVzZWQgdG8gYXBwZW5kIG5l - dyBwZXJtaXNzaW9ucyB0byB1c2VycywgaXQgc2hvdWxkbid0IGJlIHVzZWQgZm9yIGNoYW5naW5n - IHVzZXIgYWxyZWFkeSBhcHBsaWVkIHBlcm1pc3Npb24sIGZvciBleGFtcGxlIHlvdSBzaG91bGRu - J3QgY2hhbmdlIGluIHdoaWNoIHBvb2wgdXNlciBoYXMgYWNjZXNzIiwKICAgICAgICApCgogICAg - ICAgIGlmIGFyZ3NfdG9fcGFyc2U6CiAgICAgICAgICAgIGFzc2VydCAoCiAgICAgICAgICAgICAg - ICB0eXBlKGFyZ3NfdG9fcGFyc2UpID09IGxpc3QKICAgICAgICAgICAgKSwgIkFyZ3VtZW50IHRv - ICdnZW5fYXJnX3BhcnNlcicgc2hvdWxkIGJlIGEgbGlzdCIKICAgICAgICBlbHNlOgogICAgICAg - ICAgICBhcmdzX3RvX3BhcnNlID0gc3lzLmFyZ3ZbMTpdCiAgICAgICAgcmV0dXJuIGFyZ1AucGFy - c2VfYXJncyhhcmdzX3RvX3BhcnNlKQoKICAgIGRlZiB2YWxpZGF0ZV9yYmRfbWV0YWRhdGFfZWNf - cG9vbF9uYW1lKHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIucmJkX21ldGFkYXRh - X2VjX3Bvb2xfbmFtZToKICAgICAgICAgICAgcmJkX21ldGFkYXRhX2VjX3Bvb2xfbmFtZSA9IHNl - bGYuX2FyZ19wYXJzZXIucmJkX21ldGFkYXRhX2VjX3Bvb2xfbmFtZQogICAgICAgICAgICByYmRf - cG9vbF9uYW1lID0gc2VsZi5fYXJnX3BhcnNlci5yYmRfZGF0YV9wb29sX25hbWUKCiAgICAgICAg - ICAgIGlmIHJiZF9wb29sX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRp - b25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJGbGFnICctLXJiZC1kYXRh - LXBvb2wtbmFtZScgc2hvdWxkIG5vdCBiZSBlbXB0eSIKICAgICAgICAgICAgICAgICkKCiAgICAg - ICAgICAgIGlmIHJiZF9tZXRhZGF0YV9lY19wb29sX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAg - ICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJG - bGFnICctLXJiZC1tZXRhZGF0YS1lYy1wb29sLW5hbWUnIHNob3VsZCBub3QgYmUgZW1wdHkiCiAg - ICAgICAgICAgICAgICApCgogICAgICAgICAgICBjbWRfanNvbiA9IHsicHJlZml4IjogIm9zZCBk - dW1wIiwgImZvcm1hdCI6ICJqc29uIn0KICAgICAgICAgICAgcmV0X3ZhbCwganNvbl9vdXQsIGVy - cl9tc2cgPSBzZWxmLl9jb21tb25fY21kX2pzb25fZ2VuKGNtZF9qc29uKQogICAgICAgICAgICBp - ZiByZXRfdmFsICE9IDAgb3IgbGVuKGpzb25fb3V0KSA9PSAwOgogICAgICAgICAgICAgICAgcmFp - c2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICBmIntjbWRf - anNvblsncHJlZml4J119IGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAgICAgIGYi - RXJyb3I6IHtlcnJfbXNnIGlmIHJldF92YWwgIT0gMCBlbHNlIHNlbGYuRU1QVFlfT1VUUFVUX0xJ - U1R9IgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBtZXRhZGF0YV9wb29sX2V4aXN0LCBw - b29sX2V4aXN0ID0gRmFsc2UsIEZhbHNlCgogICAgICAgICAgICBmb3Iga2V5IGluIGpzb25fb3V0 - WyJwb29scyJdOgogICAgICAgICAgICAgICAgIyBpZiBlcmFzdXJlX2NvZGVfcHJvZmlsZSBpcyBl - bXB0eSBhbmQgcG9vbCBuYW1lIGV4aXN0cyB0aGVuIGl0IHJlcGxpY2EgcG9vbAogICAgICAgICAg - ICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIGtleVsiZXJhc3VyZV9jb2RlX3Byb2ZpbGUi - XSA9PSAiIgogICAgICAgICAgICAgICAgICAgIGFuZCBrZXlbInBvb2xfbmFtZSJdID09IHJiZF9t - ZXRhZGF0YV9lY19wb29sX25hbWUKICAgICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAg - ICAgbWV0YWRhdGFfcG9vbF9leGlzdCA9IFRydWUKICAgICAgICAgICAgICAgICMgaWYgZXJhc3Vy - ZV9jb2RlX3Byb2ZpbGUgaXMgbm90IGVtcHR5IGFuZCBwb29sIG5hbWUgZXhpc3RzIHRoZW4gaXQg - aXMgZWMgcG9vbAogICAgICAgICAgICAgICAgaWYga2V5WyJlcmFzdXJlX2NvZGVfcHJvZmlsZSJd - IGFuZCBrZXlbInBvb2xfbmFtZSJdID09IHJiZF9wb29sX25hbWU6CiAgICAgICAgICAgICAgICAg - ICAgcG9vbF9leGlzdCA9IFRydWUKCiAgICAgICAgICAgIGlmIG5vdCBtZXRhZGF0YV9wb29sX2V4 - aXN0OgogICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAg - ICAgICAgICAgICAgICAgICAiUHJvdmlkZWQgcmJkX2VjX21ldGFkYXRhX3Bvb2wgbmFtZSwiCiAg - ICAgICAgICAgICAgICAgICAgZiIge3JiZF9tZXRhZGF0YV9lY19wb29sX25hbWV9LCBkb2VzIG5v - dCBleGlzdCIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgaWYgbm90IHBvb2xfZXhpc3Q6 - CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAg - ICAgICAgICAgICAgIGYiUHJvdmlkZWQgcmJkX2RhdGFfcG9vbCBuYW1lLCB7cmJkX3Bvb2xfbmFt - ZX0sIGRvZXMgbm90IGV4aXN0IgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICByZXR1cm4g - cmJkX21ldGFkYXRhX2VjX3Bvb2xfbmFtZQoKICAgIGRlZiBkcnlfcnVuKHNlbGYsIG1zZyk6CiAg - ICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5kcnlfcnVuOgogICAgICAgICAgICBwcmludCgiRXhl - Y3V0ZTogIiArICInIiArIG1zZyArICInIikKCiAgICBkZWYgdmFsaWRhdGVfcmd3X2VuZHBvaW50 - X3Rsc19jZXJ0KHNlbGYpOgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIucmd3X3Rsc19jZXJ0 - X3BhdGg6CiAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLl9hcmdfcGFyc2VyLnJnd190bHNfY2Vy - dF9wYXRoLCBlbmNvZGluZz0idXRmOCIpIGFzIGY6CiAgICAgICAgICAgICAgICBjb250ZW50cyA9 - IGYucmVhZCgpCiAgICAgICAgICAgICAgICByZXR1cm4gY29udGVudHMucnN0cmlwKCkKCiAgICBk - ZWYgX2NoZWNrX2NvbmZsaWN0aW5nX29wdGlvbnMoc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYu - X2FyZ19wYXJzZXIudXBncmFkZSBhbmQgbm90IHNlbGYuX2FyZ19wYXJzZXIucmJkX2RhdGFfcG9v - bF9uYW1lOgogICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAg - ICAgICAgICAgICAgIkVpdGhlciAnLS11cGdyYWRlJyBvciAnLS1yYmQtZGF0YS1wb29sLW5hbWUg - PHBvb2xfbmFtZT4nIHNob3VsZCBiZSBzcGVjaWZpZWQiCiAgICAgICAgICAgICkKCiAgICBkZWYg - X2ludmFsaWRfZW5kcG9pbnQoc2VsZiwgZW5kcG9pbnRfc3RyKToKICAgICAgICAjIHNlcHJhdGlu - ZyBwb3J0LCBieSBnZXR0aW5nIGxhc3Qgc3BsaXQgb2YgYDpgIGRlbGltaXRlcgogICAgICAgIHRy - eToKICAgICAgICAgICAgZW5kcG9pbnRfc3RyX2lwLCBwb3J0ID0gZW5kcG9pbnRfc3RyLnJzcGxp - dCgiOiIsIDEpCiAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgIHJhaXNlIEV4 - ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oZiJOb3QgYSBwcm9wZXIgZW5kcG9pbnQ6IHtlbmRwb2lu - dF9zdHJ9IikKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBpZiBlbmRwb2ludF9zdHJfaXBbMF0g - PT0gIlsiOgogICAgICAgICAgICAgICAgZW5kcG9pbnRfc3RyX2lwID0gZW5kcG9pbnRfc3RyX2lw - WzEgOiBsZW4oZW5kcG9pbnRfc3RyX2lwKSAtIDFdCiAgICAgICAgICAgIGlwX3R5cGUgPSAoCiAg - ICAgICAgICAgICAgICAiSVB2NCIgaWYgdHlwZShpcF9hZGRyZXNzKGVuZHBvaW50X3N0cl9pcCkp - IGlzIElQdjRBZGRyZXNzIGVsc2UgIklQdjYiCiAgICAgICAgICAgICkKICAgICAgICBleGNlcHQg - VmFsdWVFcnJvcjoKICAgICAgICAgICAgaXBfdHlwZSA9ICJGUUROIgogICAgICAgIGlmIG5vdCBw - b3J0LmlzZGlnaXQoKToKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlv - bihmIlBvcnQgbm90IHZhbGlkOiB7cG9ydH0iKQogICAgICAgIGludFBvcnQgPSBpbnQocG9ydCkK - ICAgICAgICBpZiBpbnRQb3J0IDwgMSBvciBpbnRQb3J0ID4gMioqMTYgLSAxOgogICAgICAgICAg - ICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKGYiT3V0IG9mIHJhbmdlIHBvcnQgbnVt - YmVyOiB7cG9ydH0iKQoKICAgICAgICByZXR1cm4gaXBfdHlwZQoKICAgIGRlZiBlbmRwb2ludF9k - aWFsKHNlbGYsIGVuZHBvaW50X3N0ciwgaXBfdHlwZSwgdGltZW91dD0zLCBjZXJ0PU5vbmUpOgog - ICAgICAgICMgaWYgdGhlICdjbHVzdGVyJyBpbnN0YW5jZSBpcyBhIGR1bW15IG9uZSwKICAgICAg - ICAjIGRvbid0IHRyeSB0byByZWFjaCBvdXQgdG8gdGhlIGVuZHBvaW50CiAgICAgICAgaWYgaXNp - bnN0YW5jZShzZWxmLmNsdXN0ZXIsIER1bW15UmFkb3MpOgogICAgICAgICAgICByZXR1cm4gIiIs - ICIiLCAiIgogICAgICAgIGlmIGlwX3R5cGUgPT0gIklQdjYiOgogICAgICAgICAgICB0cnk6CiAg - ICAgICAgICAgICAgICBlbmRwb2ludF9zdHJfaXAsIGVuZHBvaW50X3N0cl9wb3J0ID0gZW5kcG9p - bnRfc3RyLnJzcGxpdCgiOiIsIDEpCiAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAg - ICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAg - ICAgICAgICBmIk5vdCBhIHByb3BlciBlbmRwb2ludDoge2VuZHBvaW50X3N0cn0iCiAgICAgICAg - ICAgICAgICApCiAgICAgICAgICAgIGlmIGVuZHBvaW50X3N0cl9pcFswXSAhPSAiWyI6CiAgICAg - ICAgICAgICAgICBlbmRwb2ludF9zdHJfaXAgPSAiWyIgKyBlbmRwb2ludF9zdHJfaXAgKyAiXSIK - ICAgICAgICAgICAgZW5kcG9pbnRfc3RyID0gIjoiLmpvaW4oW2VuZHBvaW50X3N0cl9pcCwgZW5k - cG9pbnRfc3RyX3BvcnRdKQoKICAgICAgICBwcm90b2NvbHMgPSBbImh0dHAiLCAiaHR0cHMiXQog - ICAgICAgIHJlc3BvbnNlX2Vycm9yID0gTm9uZQogICAgICAgIGZvciBwcmVmaXggaW4gcHJvdG9j - b2xzOgogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBlcCA9IGYie3ByZWZpeH06Ly97 - ZW5kcG9pbnRfc3RyfSIKICAgICAgICAgICAgICAgIHZlcmlmeSA9IE5vbmUKICAgICAgICAgICAg - ICAgICMgSWYgdmVyaWZ5IGlzIHNldCB0byBhIHBhdGggdG8gYSBkaXJlY3RvcnksCiAgICAgICAg - ICAgICAgICAjIHRoZSBkaXJlY3RvcnkgbXVzdCBoYXZlIGJlZW4gcHJvY2Vzc2VkIHVzaW5nIHRo - ZSBjX3JlaGFzaCB1dGlsaXR5IHN1cHBsaWVkIHdpdGggT3BlblNTTC4KICAgICAgICAgICAgICAg - IGlmIHByZWZpeCA9PSAiaHR0cHMiIGFuZCBzZWxmLl9hcmdfcGFyc2VyLnJnd19za2lwX3RsczoK - ICAgICAgICAgICAgICAgICAgICB2ZXJpZnkgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgIHIg - PSByZXF1ZXN0cy5oZWFkKGVwLCB0aW1lb3V0PXRpbWVvdXQsIHZlcmlmeT1GYWxzZSkKICAgICAg - ICAgICAgICAgIGVsaWYgcHJlZml4ID09ICJodHRwcyIgYW5kIGNlcnQ6CiAgICAgICAgICAgICAg - ICAgICAgdmVyaWZ5ID0gY2VydAogICAgICAgICAgICAgICAgICAgIHIgPSByZXF1ZXN0cy5oZWFk - KGVwLCB0aW1lb3V0PXRpbWVvdXQsIHZlcmlmeT1jZXJ0KQogICAgICAgICAgICAgICAgZWxzZToK - ICAgICAgICAgICAgICAgICAgICByID0gcmVxdWVzdHMuaGVhZChlcCwgdGltZW91dD10aW1lb3V0 - KQogICAgICAgICAgICAgICAgaWYgci5zdGF0dXNfY29kZSA9PSAyMDA6CiAgICAgICAgICAgICAg - ICAgICAgcmV0dXJuIHByZWZpeCwgdmVyaWZ5LCAiIgogICAgICAgICAgICBleGNlcHQgRXhjZXB0 - aW9uIGFzIGVycjoKICAgICAgICAgICAgICAgIHJlc3BvbnNlX2Vycm9yID0gZXJyCiAgICAgICAg - ICAgICAgICBjb250aW51ZQogICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCiAgICAgICAgICAgIGYi - dW5hYmxlIHRvIGNvbm5lY3QgdG8gZW5kcG9pbnQ6IHtlbmRwb2ludF9zdHJ9LCBmYWlsZWQgZXJy - b3I6IHtyZXNwb25zZV9lcnJvcn0iCiAgICAgICAgKQogICAgICAgIHJldHVybiAoCiAgICAgICAg - ICAgICIiLAogICAgICAgICAgICAiIiwKICAgICAgICAgICAgKCItMSIpLAogICAgICAgICkKCiAg - ICBkZWYgX19pbml0X18oc2VsZiwgYXJnX2xpc3Q9Tm9uZSk6CiAgICAgICAgc2VsZi5vdXRfbWFw - ID0ge30KICAgICAgICBzZWxmLl9leGNsdWRlZF9rZXlzID0gc2V0KCkKICAgICAgICBzZWxmLl9h - cmdfcGFyc2VyID0gc2VsZi5nZW5fYXJnX3BhcnNlcihhcmdzX3RvX3BhcnNlPWFyZ19saXN0KQog - ICAgICAgIHNlbGYuX2NoZWNrX2NvbmZsaWN0aW5nX29wdGlvbnMoKQogICAgICAgIHNlbGYucnVu - X2FzX3VzZXIgPSBzZWxmLl9hcmdfcGFyc2VyLnJ1bl9hc191c2VyCiAgICAgICAgc2VsZi5vdXRw - dXRfZmlsZSA9IHNlbGYuX2FyZ19wYXJzZXIub3V0cHV0CiAgICAgICAgc2VsZi5jZXBoX2NvbmYg - PSBzZWxmLl9hcmdfcGFyc2VyLmNlcGhfY29uZgogICAgICAgIHNlbGYuY2VwaF9rZXlyaW5nID0g - c2VsZi5fYXJnX3BhcnNlci5rZXlyaW5nCiAgICAgICAgc2VsZi5NSU5fVVNFUl9DQVBfUEVSTUlT - U0lPTlMgPSB7CiAgICAgICAgICAgICJtZ3IiOiAiYWxsb3cgY29tbWFuZCBjb25maWciLAogICAg - ICAgICAgICAibW9uIjogImFsbG93IHIsIGFsbG93IGNvbW1hbmQgcXVvcnVtX3N0YXR1cywgYWxs - b3cgY29tbWFuZCB2ZXJzaW9uIiwKICAgICAgICAgICAgIm9zZCI6ICJhbGxvdyByd3ggcG9vbD17 - MH0ucmd3Lm1ldGEsICIKICAgICAgICAgICAgKyAiYWxsb3cgciBwb29sPS5yZ3cucm9vdCwgIgog - ICAgICAgICAgICArICJhbGxvdyBydyBwb29sPXswfS5yZ3cuY29udHJvbCwgIgogICAgICAgICAg - ICArICJhbGxvdyByeCBwb29sPXswfS5yZ3cubG9nLCAiCiAgICAgICAgICAgICsgImFsbG93IHgg - cG9vbD17MH0ucmd3LmJ1Y2tldHMuaW5kZXgiLAogICAgICAgIH0KICAgICAgICAjIGlmIHVzZXIg - bm90IHByb3ZpZGVkLCBnaXZlIGEgZGVmYXVsdCB1c2VyCiAgICAgICAgaWYgbm90IHNlbGYucnVu - X2FzX3VzZXIgYW5kIG5vdCBzZWxmLl9hcmdfcGFyc2VyLnVwZ3JhZGU6CiAgICAgICAgICAgIHNl - bGYucnVuX2FzX3VzZXIgPSBzZWxmLkVYVEVSTkFMX1VTRVJfTkFNRQogICAgICAgIGlmIG5vdCBz - ZWxmLl9hcmdfcGFyc2VyLnJnd19wb29sX3ByZWZpeCBhbmQgbm90IHNlbGYuX2FyZ19wYXJzZXIu - dXBncmFkZToKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcG9vbF9wcmVmaXggPSBz - ZWxmLkRFRkFVTFRfUkdXX1BPT0xfUFJFRklYCiAgICAgICAgaWYgc2VsZi5jZXBoX2NvbmY6CiAg - ICAgICAgICAgIGt3YXJncyA9IHt9CiAgICAgICAgICAgIGlmIHNlbGYuY2VwaF9rZXlyaW5nOgog - ICAgICAgICAgICAgICAga3dhcmdzWyJjb25mIl0gPSB7ImtleXJpbmciOiBzZWxmLmNlcGhfa2V5 - cmluZ30KICAgICAgICAgICAgc2VsZi5jbHVzdGVyID0gcmFkb3MuUmFkb3MoY29uZmZpbGU9c2Vs - Zi5jZXBoX2NvbmYsICoqa3dhcmdzKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIHNlbGYuY2x1 - c3RlciA9IHJhZG9zLlJhZG9zKCkKICAgICAgICAgICAgc2VsZi5jbHVzdGVyLmNvbmZfcmVhZF9m - aWxlKCkKICAgICAgICBzZWxmLmNsdXN0ZXIuY29ubmVjdCgpCgogICAgZGVmIHNodXRkb3duKHNl - bGYpOgogICAgICAgIGlmIHNlbGYuY2x1c3Rlci5zdGF0ZSA9PSAiY29ubmVjdGVkIjoKICAgICAg - ICAgICAgc2VsZi5jbHVzdGVyLnNodXRkb3duKCkKCiAgICBkZWYgZ2V0X2ZzaWQoc2VsZik6CiAg - ICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5kcnlfcnVuOgogICAgICAgICAgICByZXR1cm4gc2Vs - Zi5kcnlfcnVuKCJjZXBoIGZzaWQiKQogICAgICAgIHJldHVybiBzdHIoc2VsZi5jbHVzdGVyLmdl - dF9mc2lkKCkpCgogICAgZGVmIF9jb21tb25fY21kX2pzb25fZ2VuKHNlbGYsIGNtZF9qc29uKToK - ICAgICAgICBjbWQgPSBqc29uLmR1bXBzKGNtZF9qc29uLCBzb3J0X2tleXM9VHJ1ZSkKICAgICAg - ICByZXRfdmFsLCBjbWRfb3V0LCBlcnJfbXNnID0gc2VsZi5jbHVzdGVyLm1vbl9jb21tYW5kKGNt - ZCwgYiIiKQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIudmVyYm9zZToKICAgICAgICAgICAg - cHJpbnQoZiJDb21tYW5kIElucHV0OiB7Y21kfSIpCiAgICAgICAgICAgIHByaW50KAogICAgICAg - ICAgICAgICAgZiJSZXR1cm4gVmFsOiB7cmV0X3ZhbH1cbkNvbW1hbmQgT3V0cHV0OiB7Y21kX291 - dH1cbiIKICAgICAgICAgICAgICAgIGYiRXJyb3IgTWVzc2FnZToge2Vycl9tc2d9XG4tLS0tLS0t - LS0tXG4iCiAgICAgICAgICAgICkKICAgICAgICBqc29uX291dCA9IHt9CiAgICAgICAgIyBpZiB0 - aGVyZSBpcyBubyBlcnJvciAoaS5lOyByZXRfdmFsIGlzIFpFUk8pIGFuZCAnY21kX291dCcgaXMg - bm90IGVtcHR5CiAgICAgICAgIyB0aGVuIGNvbnZlcnQgJ2NtZF9vdXQnIHRvIGEganNvbiBvdXRw - dXQKICAgICAgICBpZiByZXRfdmFsID09IDAgYW5kIGNtZF9vdXQ6CiAgICAgICAgICAgIGpzb25f - b3V0ID0ganNvbi5sb2FkcyhjbWRfb3V0KQogICAgICAgIHJldHVybiByZXRfdmFsLCBqc29uX291 - dCwgZXJyX21zZwoKICAgIGRlZiBnZXRfY2VwaF9leHRlcm5hbF9tb25fZGF0YShzZWxmKToKICAg - ICAgICBjbWRfanNvbiA9IHsicHJlZml4IjogInF1b3J1bV9zdGF0dXMiLCAiZm9ybWF0IjogImpz - b24ifQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5X3J1bjoKICAgICAgICAgICAgcmV0 - dXJuIHNlbGYuZHJ5X3J1bigiY2VwaCAiICsgY21kX2pzb25bInByZWZpeCJdKQogICAgICAgIHJl - dF92YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2VsZi5fY29tbW9uX2NtZF9qc29uX2dlbihjbWRf - anNvbikKICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIHVuc3VjY2Vzc2Z1bCBhdHRlbXB0LAogICAg - ICAgIGlmIHJldF92YWwgIT0gMCBvciBsZW4oanNvbl9vdXQpID09IDA6CiAgICAgICAgICAgIHJh - aXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAiJ3F1b3J1bV9z - dGF0dXMnIGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAgZiJFcnJvcjoge2Vycl9t - c2cgaWYgcmV0X3ZhbCAhPSAwIGVsc2Ugc2VsZi5FTVBUWV9PVVRQVVRfTElTVH0iCiAgICAgICAg - ICAgICkKICAgICAgICBxX2xlYWRlcl9uYW1lID0ganNvbl9vdXRbInF1b3J1bV9sZWFkZXJfbmFt - ZSJdCiAgICAgICAgcV9sZWFkZXJfZGV0YWlscyA9IHt9CiAgICAgICAgcV9sZWFkZXJfbWF0Y2hp - bmdfbGlzdCA9IFsKICAgICAgICAgICAgbCBmb3IgbCBpbiBqc29uX291dFsibW9ubWFwIl1bIm1v - bnMiXSBpZiBsWyJuYW1lIl0gPT0gcV9sZWFkZXJfbmFtZQogICAgICAgIF0KICAgICAgICBpZiBs - ZW4ocV9sZWFkZXJfbWF0Y2hpbmdfbGlzdCkgPT0gMDoKICAgICAgICAgICAgcmFpc2UgRXhlY3V0 - aW9uRmFpbHVyZUV4Y2VwdGlvbigiTm8gbWF0Y2hpbmcgJ21vbicgZGV0YWlscyBmb3VuZCIpCiAg - ICAgICAgcV9sZWFkZXJfZGV0YWlscyA9IHFfbGVhZGVyX21hdGNoaW5nX2xpc3RbMF0KICAgICAg - ICAjIGdldCB0aGUgYWRkcmVzcyB2ZWN0b3Igb2YgdGhlIHF1b3J1bS1sZWFkZXIKICAgICAgICBx - X2xlYWRlcl9hZGRydmVjID0gcV9sZWFkZXJfZGV0YWlscy5nZXQoInB1YmxpY19hZGRycyIsIHt9 - KS5nZXQoImFkZHJ2ZWMiLCBbXSkKICAgICAgICAjIGlmIHRoZSBxdW9ydW0tbGVhZGVyIGhhcyBv - bmx5IG9uZSBhZGRyZXNzIGluIHRoZSBhZGRyZXNzLXZlY3RvcgogICAgICAgICMgYW5kIGl0IGlz - IG9mIHR5cGUgJ3YyJyAoaWU7IHdpdGggPElQPjozMzAwKSwKICAgICAgICAjIHJhaXNlIGFuIGV4 - Y2VwdGlvbiB0byBtYWtlIHVzZXIgYXdhcmUgdGhhdAogICAgICAgICMgdGhleSBoYXZlIHRvIGVu - YWJsZSAndjEnIChpZTsgd2l0aCA8SVA+OjY3ODkpIHR5cGUgYXMgd2VsbAogICAgICAgIGlmIGxl - bihxX2xlYWRlcl9hZGRydmVjKSA9PSAxIGFuZCBxX2xlYWRlcl9hZGRydmVjWzBdWyJ0eXBlIl0g - PT0gInYyIjoKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAg - ICAgICAgICAgICAgICJPbmx5ICd2MicgYWRkcmVzcyB0eXBlIGlzIGVuYWJsZWQsIHVzZXIgc2hv - dWxkIGFsc28gZW5hYmxlICd2MScgdHlwZSBhcyB3ZWxsIgogICAgICAgICAgICApCiAgICAgICAg - aXBfYWRkciA9IHN0cihxX2xlYWRlcl9kZXRhaWxzWyJwdWJsaWNfYWRkciJdLnNwbGl0KCIvIilb - MF0pCgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIudjJfcG9ydF9lbmFibGU6CiAgICAgICAg - ICAgIGlmIGxlbihxX2xlYWRlcl9hZGRydmVjKSA+IDE6CiAgICAgICAgICAgICAgICBpZiBxX2xl - YWRlcl9hZGRydmVjWzBdWyJ0eXBlIl0gPT0gInYyIjoKICAgICAgICAgICAgICAgICAgICBpcF9h - ZGRyID0gcV9sZWFkZXJfYWRkcnZlY1swXVsiYWRkciJdCiAgICAgICAgICAgICAgICBlbGlmIHFf - bGVhZGVyX2FkZHJ2ZWNbMV1bInR5cGUiXSA9PSAidjIiOgogICAgICAgICAgICAgICAgICAgIGlw - X2FkZHIgPSBxX2xlYWRlcl9hZGRydmVjWzFdWyJhZGRyIl0KICAgICAgICAgICAgZWxzZToKICAg - ICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCiAgICAgICAgICAgICAgICAgICAgIid2Micg - YWRkcmVzcyB0eXBlIG5vdCBwcmVzZW50LCBhbmQgJ3YyLXBvcnQtZW5hYmxlJyBmbGFnIGlzIHBy - b3ZpZGVkIgogICAgICAgICAgICAgICAgKQoKICAgICAgICByZXR1cm4gZiJ7c3RyKHFfbGVhZGVy - X25hbWUpfT17aXBfYWRkcn0iCgogICAgZGVmIF9jb252ZXJ0X2hvc3RuYW1lX3RvX2lwKHNlbGYs - IGhvc3RfbmFtZSwgcG9ydCwgaXBfdHlwZSk6CiAgICAgICAgIyBpZiAnY2x1c3RlcicgaW5zdGFu - Y2UgaXMgYSBkdW1teSB0eXBlLAogICAgICAgICMgY2FsbCB0aGUgZHVtbXkgaW5zdGFuY2UncyAi - Y29udmVydCIgbWV0aG9kCiAgICAgICAgaWYgbm90IGhvc3RfbmFtZToKICAgICAgICAgICAgcmFp - c2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigiRW1wdHkgaG9zdG5hbWUgcHJvdmlkZWQiKQog - ICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5jbHVzdGVyLCBEdW1teVJhZG9zKToKICAgICAgICAg - ICAgcmV0dXJuIHNlbGYuY2x1c3Rlci5fY29udmVydF9ob3N0bmFtZV90b19pcChob3N0X25hbWUp - CgogICAgICAgIGlmIGlwX3R5cGUgPT0gIkZRRE4iOgogICAgICAgICAgICAjIGNoZWNrIHdoaWNo - IGlwIEZRRE4gc2hvdWxkIGJlIGNvbnZlcnRlZCB0bywgSVB2NCBvciBJUHY2CiAgICAgICAgICAg - ICMgY2hlY2sgdGhlIGhvc3QgaXAsIHRoZSBlbmRwb2ludCBpcCB0eXBlIHdvdWxkIGJlIHNpbWls - YXIgdG8gaG9zdCBpcAogICAgICAgICAgICBjbWRfanNvbiA9IHsicHJlZml4IjogIm9yY2ggaG9z - dCBscyIsICJmb3JtYXQiOiAianNvbiJ9CiAgICAgICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBl - cnJfbXNnID0gc2VsZi5fY29tbW9uX2NtZF9qc29uX2dlbihjbWRfanNvbikKICAgICAgICAgICAg - IyBpZiB0aGVyZSBpcyBhbiB1bnN1Y2Nlc3NmdWwgYXR0ZW1wdCwKICAgICAgICAgICAgaWYgcmV0 - X3ZhbCAhPSAwIG9yIGxlbihqc29uX291dCkgPT0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIEV4 - ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgIidvcmNoIGhvc3Qg - bHMnIGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAgICAgIGYiRXJyb3I6IHtlcnJf - bXNnIGlmIHJldF92YWwgIT0gMCBlbHNlIHNlbGYuRU1QVFlfT1VUUFVUX0xJU1R9IgogICAgICAg - ICAgICAgICAgKQogICAgICAgICAgICBob3N0X2FkZHIgPSBqc29uX291dFswXVsiYWRkciJdCiAg - ICAgICAgICAgICMgYWRkIDo4MCBzYW1wbGUgcG9ydCBpbiBpcF90eXBlLCBhcyBfaW52YWxpZF9l - bmRwb2ludCBhbHNvIHZlcmlmeSBwb3J0CiAgICAgICAgICAgIGhvc3RfaXBfdHlwZSA9IHNlbGYu - X2ludmFsaWRfZW5kcG9pbnQoaG9zdF9hZGRyICsgIjo4MCIpCiAgICAgICAgICAgIGltcG9ydCBz - b2NrZXQKCiAgICAgICAgICAgICMgZXhhbXBsZSBvdXRwdXQgWyg8QWRkcmVzc0ZhbWlseS5BRl9J - TkVUOiAyPiwgPFNvY2tldEtpbmQuU09DS19TVFJFQU06IDE+LCA2LCAnJywgKCc5My4xODQuMjE2 - LjM0JywgODApKSwgLi4uXQogICAgICAgICAgICAjIHdlIG5lZWQgdG8gZ2V0IDkzLjE4NC4yMTYu - MzQgc28gaXQgd291bGQgYmUgaXBbMF1bNF1bMF0KICAgICAgICAgICAgaWYgaG9zdF9pcF90eXBl - ID09ICJJUHY2IjoKICAgICAgICAgICAgICAgIGlwID0gc29ja2V0LmdldGFkZHJpbmZvKAogICAg - ICAgICAgICAgICAgICAgIGhvc3RfbmFtZSwgcG9ydCwgZmFtaWx5PXNvY2tldC5BRl9JTkVUNiwg - cHJvdG89c29ja2V0LklQUFJPVE9fVENQCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGVs - aWYgaG9zdF9pcF90eXBlID09ICJJUHY0IjoKICAgICAgICAgICAgICAgIGlwID0gc29ja2V0Lmdl - dGFkZHJpbmZvKAogICAgICAgICAgICAgICAgICAgIGhvc3RfbmFtZSwgcG9ydCwgZmFtaWx5PXNv - Y2tldC5BRl9JTkVULCBwcm90bz1zb2NrZXQuSVBQUk9UT19UQ1AKICAgICAgICAgICAgICAgICkK - ICAgICAgICAgICAgZGVsIHNvY2tldAogICAgICAgICAgICByZXR1cm4gaXBbMF1bNF1bMF0KICAg - ICAgICByZXR1cm4gaG9zdF9uYW1lCgogICAgZGVmIGdldF9hY3RpdmVfYW5kX3N0YW5kYnlfbWdy - cyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLmRyeV9ydW46CiAgICAgICAgICAg - IHJldHVybiAiIiwgc2VsZi5kcnlfcnVuKCJjZXBoIHN0YXR1cyIpCiAgICAgICAgbW9uaXRvcmlu - Z19lbmRwb2ludF9wb3J0ID0gc2VsZi5fYXJnX3BhcnNlci5tb25pdG9yaW5nX2VuZHBvaW50X3Bv - cnQKICAgICAgICBtb25pdG9yaW5nX2VuZHBvaW50X2lwX2xpc3QgPSBzZWxmLl9hcmdfcGFyc2Vy - Lm1vbml0b3JpbmdfZW5kcG9pbnQKICAgICAgICBzdGFuZGJ5X21ncnMgPSBbXQogICAgICAgIGlm - IG5vdCBtb25pdG9yaW5nX2VuZHBvaW50X2lwX2xpc3Q6CiAgICAgICAgICAgIGNtZF9qc29uID0g - eyJwcmVmaXgiOiAic3RhdHVzIiwgImZvcm1hdCI6ICJqc29uIn0KICAgICAgICAgICAgcmV0X3Zh - bCwganNvbl9vdXQsIGVycl9tc2cgPSBzZWxmLl9jb21tb25fY21kX2pzb25fZ2VuKGNtZF9qc29u - KQogICAgICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIHVuc3VjY2Vzc2Z1bCBhdHRlbXB0LAogICAg - ICAgICAgICBpZiByZXRfdmFsICE9IDAgb3IgbGVuKGpzb25fb3V0KSA9PSAwOgogICAgICAgICAg - ICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAg - ICAiJ21nciBzZXJ2aWNlcycgY29tbWFuZCBmYWlsZWQuXG4iCiAgICAgICAgICAgICAgICAgICAg + cyB0aGUgbmFtZSBvZiB0aGUgcmd3LXpvbmVncm91cCIsCiAgICAgICAgKQoKICAgICAgICB1cGdy + YWRlX2dyb3VwID0gYXJnUC5hZGRfYXJndW1lbnRfZ3JvdXAoInVwZ3JhZGUiKQogICAgICAgIHVw + Z3JhZGVfZ3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAgICAiLS11cGdyYWRlIiwKICAgICAg + ICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwKICAg + ICAgICAgICAgaGVscD0iVXBncmFkZXMgdGhlIGNlcGhDU0lLZXlyaW5ncyhGb3IgZXhhbXBsZTog + Y2xpZW50LmNzaS1jZXBoZnMtcHJvdmlzaW9uZXIpIGFuZCBjbGllbnQuaGVhbHRoY2hlY2tlciBj + ZXBoIHVzZXJzIHdpdGggbmV3IHBlcm1pc3Npb25zIG5lZWRlZCBmb3IgdGhlIG5ldyBjbHVzdGVy + IHZlcnNpb24gYW5kIG9sZGVyIHBlcm1pc3Npb24gd2lsbCBzdGlsbCBiZSBhcHBsaWVkLiIKICAg + ICAgICAgICAgKyAiU2FtcGxlIHJ1bjogYHB5dGhvbjMgL2V0Yy9jZXBoL2NyZWF0ZS1leHRlcm5h + bC1jbHVzdGVyLXJlc291cmNlcy5weSAtLXVwZ3JhZGVgLCB0aGlzIHdpbGwgdXBncmFkZSBhbGwg + dGhlIGRlZmF1bHQgY3NpIHVzZXJzKG5vbi1yZXN0cmljdGVkKSIKICAgICAgICAgICAgKyAiRm9y + IHJlc3RyaWN0ZWQgdXNlcnMoRm9yIGV4YW1wbGU6IGNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lv + bmVyLW9wZW5zaGlmdC1zdG9yYWdlLW15ZnMpLCB1c2VycyBjcmVhdGVkIHVzaW5nIC0tcmVzdHJp + Y3RlZC1hdXRoLXBlcm1pc3Npb24gZmxhZyBuZWVkIHRvIHBhc3MgbWFuZGF0b3J5IGZsYWdzIgog + ICAgICAgICAgICArICJtYW5kYXRvcnkgZmxhZ3M6ICctLXJiZC1kYXRhLXBvb2wtbmFtZSwgLS1r + OHMtY2x1c3Rlci1uYW1lIGFuZCAtLXJ1bi1hcy11c2VyJyBmbGFncyB3aGlsZSB1cGdyYWRpbmci + CiAgICAgICAgICAgICsgImluIGNhc2Ugb2YgY2VwaGZzIHVzZXJzIGlmIHlvdSBoYXZlIHBhc3Nl + ZCAtLWNlcGhmcy1maWxlc3lzdGVtLW5hbWUgZmxhZyB3aGlsZSBjcmVhdGluZyB1c2VyIHRoZW4g + d2hpbGUgdXBncmFkaW5nIGl0IHdpbGwgYmUgbWFuZGF0b3J5IHRvbyIKICAgICAgICAgICAgKyAi + U2FtcGxlIHJ1bjogYHB5dGhvbjMgL2V0Yy9jZXBoL2NyZWF0ZS1leHRlcm5hbC1jbHVzdGVyLXJl + c291cmNlcy5weSAtLXVwZ3JhZGUgLS1yYmQtZGF0YS1wb29sLW5hbWUgcmVwbGljYXBvb2wgLS1r + OHMtY2x1c3Rlci1uYW1lIHJvb2tzdG9yYWdlICAtLXJ1bi1hcy11c2VyIGNsaWVudC5jc2ktcmJk + LW5vZGUtcm9va3N0b3JhZ2UtcmVwbGljYXBvb2xgIgogICAgICAgICAgICArICJQUzogQW4gZXhp + c3Rpbmcgbm9uLXJlc3RyaWN0ZWQgdXNlciBjYW5ub3QgYmUgY29udmVydGVkIHRvIGEgcmVzdHJp + Y3RlZCB1c2VyIGJ5IHVwZ3JhZGluZy4iCiAgICAgICAgICAgICsgIlVwZ3JhZGUgZmxhZyBzaG91 + bGQgb25seSBiZSB1c2VkIHRvIGFwcGVuZCBuZXcgcGVybWlzc2lvbnMgdG8gdXNlcnMsIGl0IHNo + b3VsZG4ndCBiZSB1c2VkIGZvciBjaGFuZ2luZyB1c2VyIGFscmVhZHkgYXBwbGllZCBwZXJtaXNz + aW9uLCBmb3IgZXhhbXBsZSB5b3Ugc2hvdWxkbid0IGNoYW5nZSBpbiB3aGljaCBwb29sIHVzZXIg + aGFzIGFjY2VzcyIsCiAgICAgICAgKQoKICAgICAgICBpZiBhcmdzX3RvX3BhcnNlOgogICAgICAg + ICAgICBhc3NlcnQgKAogICAgICAgICAgICAgICAgdHlwZShhcmdzX3RvX3BhcnNlKSA9PSBsaXN0 + CiAgICAgICAgICAgICksICJBcmd1bWVudCB0byAnZ2VuX2FyZ19wYXJzZXInIHNob3VsZCBiZSBh + IGxpc3QiCiAgICAgICAgZWxzZToKICAgICAgICAgICAgYXJnc190b19wYXJzZSA9IHN5cy5hcmd2 + WzE6XQogICAgICAgIHJldHVybiBhcmdQLnBhcnNlX2FyZ3MoYXJnc190b19wYXJzZSkKCiAgICBk + ZWYgdmFsaWRhdGVfcmJkX21ldGFkYXRhX2VjX3Bvb2xfbmFtZShzZWxmKToKICAgICAgICBpZiBz + ZWxmLl9hcmdfcGFyc2VyLnJiZF9tZXRhZGF0YV9lY19wb29sX25hbWU6CiAgICAgICAgICAgIHJi + ZF9tZXRhZGF0YV9lY19wb29sX25hbWUgPSBzZWxmLl9hcmdfcGFyc2VyLnJiZF9tZXRhZGF0YV9l + Y19wb29sX25hbWUKICAgICAgICAgICAgcmJkX3Bvb2xfbmFtZSA9IHNlbGYuX2FyZ19wYXJzZXIu + cmJkX2RhdGFfcG9vbF9uYW1lCgogICAgICAgICAgICBpZiByYmRfcG9vbF9uYW1lID09ICIiOgog + ICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAg + ICAgICAgICAgICAiRmxhZyAnLS1yYmQtZGF0YS1wb29sLW5hbWUnIHNob3VsZCBub3QgYmUgZW1w + dHkiCiAgICAgICAgICAgICAgICApCgogICAgICAgICAgICBpZiByYmRfbWV0YWRhdGFfZWNfcG9v + bF9uYW1lID09ICIiOgogICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2Vw + dGlvbigKICAgICAgICAgICAgICAgICAgICAiRmxhZyAnLS1yYmQtbWV0YWRhdGEtZWMtcG9vbC1u + YW1lJyBzaG91bGQgbm90IGJlIGVtcHR5IgogICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAg + Y21kX2pzb24gPSB7InByZWZpeCI6ICJvc2QgZHVtcCIsICJmb3JtYXQiOiAianNvbiJ9CiAgICAg + ICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2VsZi5fY29tbW9uX2NtZF9qc29u + X2dlbihjbWRfanNvbikKICAgICAgICAgICAgaWYgcmV0X3ZhbCAhPSAwIG9yIGxlbihqc29uX291 + dCkgPT0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24o + CiAgICAgICAgICAgICAgICAgICAgZiJ7Y21kX2pzb25bJ3ByZWZpeCddfSBjb21tYW5kIGZhaWxl + ZC5cbiIKICAgICAgICAgICAgICAgICAgICBmIkVycm9yOiB7ZXJyX21zZyBpZiByZXRfdmFsICE9 + IDAgZWxzZSBzZWxmLkVNUFRZX09VVFBVVF9MSVNUfSIKICAgICAgICAgICAgICAgICkKICAgICAg + ICAgICAgbWV0YWRhdGFfcG9vbF9leGlzdCwgcG9vbF9leGlzdCA9IEZhbHNlLCBGYWxzZQoKICAg + ICAgICAgICAgZm9yIGtleSBpbiBqc29uX291dFsicG9vbHMiXToKICAgICAgICAgICAgICAgICMg + aWYgZXJhc3VyZV9jb2RlX3Byb2ZpbGUgaXMgZW1wdHkgYW5kIHBvb2wgbmFtZSBleGlzdHMgdGhl + biBpdCByZXBsaWNhIHBvb2wKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAg + ICBrZXlbImVyYXN1cmVfY29kZV9wcm9maWxlIl0gPT0gIiIKICAgICAgICAgICAgICAgICAgICBh + bmQga2V5WyJwb29sX25hbWUiXSA9PSByYmRfbWV0YWRhdGFfZWNfcG9vbF9uYW1lCiAgICAgICAg + ICAgICAgICApOgogICAgICAgICAgICAgICAgICAgIG1ldGFkYXRhX3Bvb2xfZXhpc3QgPSBUcnVl + CiAgICAgICAgICAgICAgICAjIGlmIGVyYXN1cmVfY29kZV9wcm9maWxlIGlzIG5vdCBlbXB0eSBh + bmQgcG9vbCBuYW1lIGV4aXN0cyB0aGVuIGl0IGlzIGVjIHBvb2wKICAgICAgICAgICAgICAgIGlm + IGtleVsiZXJhc3VyZV9jb2RlX3Byb2ZpbGUiXSBhbmQga2V5WyJwb29sX25hbWUiXSA9PSByYmRf + cG9vbF9uYW1lOgogICAgICAgICAgICAgICAgICAgIHBvb2xfZXhpc3QgPSBUcnVlCgogICAgICAg + ICAgICBpZiBub3QgbWV0YWRhdGFfcG9vbF9leGlzdDoKICAgICAgICAgICAgICAgIHJhaXNlIEV4 + ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgIlByb3ZpZGVkIHJi + ZF9lY19tZXRhZGF0YV9wb29sIG5hbWUsIgogICAgICAgICAgICAgICAgICAgIGYiIHtyYmRfbWV0 + YWRhdGFfZWNfcG9vbF9uYW1lfSwgZG9lcyBub3QgZXhpc3QiCiAgICAgICAgICAgICAgICApCiAg + ICAgICAgICAgIGlmIG5vdCBwb29sX2V4aXN0OgogICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0 + aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICBmIlByb3ZpZGVkIHJiZF9k + YXRhX3Bvb2wgbmFtZSwge3JiZF9wb29sX25hbWV9LCBkb2VzIG5vdCBleGlzdCIKICAgICAgICAg + ICAgICAgICkKICAgICAgICAgICAgcmV0dXJuIHJiZF9tZXRhZGF0YV9lY19wb29sX25hbWUKCiAg + ICBkZWYgZHJ5X3J1bihzZWxmLCBtc2cpOgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5 + X3J1bjoKICAgICAgICAgICAgcHJpbnQoIkV4ZWN1dGU6ICIgKyAiJyIgKyBtc2cgKyAiJyIpCgog + ICAgZGVmIHZhbGlkYXRlX3Jnd19lbmRwb2ludF90bHNfY2VydChzZWxmKToKICAgICAgICBpZiBz + ZWxmLl9hcmdfcGFyc2VyLnJnd190bHNfY2VydF9wYXRoOgogICAgICAgICAgICB3aXRoIG9wZW4o + c2VsZi5fYXJnX3BhcnNlci5yZ3dfdGxzX2NlcnRfcGF0aCwgZW5jb2Rpbmc9InV0ZjgiKSBhcyBm + OgogICAgICAgICAgICAgICAgY29udGVudHMgPSBmLnJlYWQoKQogICAgICAgICAgICAgICAgcmV0 + dXJuIGNvbnRlbnRzLnJzdHJpcCgpCgogICAgZGVmIF9jaGVja19jb25mbGljdGluZ19vcHRpb25z + KHNlbGYpOgogICAgICAgIGlmIG5vdCBzZWxmLl9hcmdfcGFyc2VyLnVwZ3JhZGUgYW5kIG5vdCBz + ZWxmLl9hcmdfcGFyc2VyLnJiZF9kYXRhX3Bvb2xfbmFtZToKICAgICAgICAgICAgcmFpc2UgRXhl + Y3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICJFaXRoZXIgJy0tdXBncmFk + ZScgb3IgJy0tcmJkLWRhdGEtcG9vbC1uYW1lIDxwb29sX25hbWU+JyBzaG91bGQgYmUgc3BlY2lm + aWVkIgogICAgICAgICAgICApCgogICAgZGVmIF9pbnZhbGlkX2VuZHBvaW50KHNlbGYsIGVuZHBv + aW50X3N0cik6CiAgICAgICAgIyBzZXBhcmF0aW5nIHBvcnQsIGJ5IGdldHRpbmcgbGFzdCBzcGxp + dCBvZiBgOmAgZGVsaW1pdGVyCiAgICAgICAgdHJ5OgogICAgICAgICAgICBlbmRwb2ludF9zdHJf + aXAsIHBvcnQgPSBlbmRwb2ludF9zdHIucnNwbGl0KCI6IiwgMSkKICAgICAgICBleGNlcHQgVmFs + dWVFcnJvcjoKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbihmIk5v + dCBhIHByb3BlciBlbmRwb2ludDoge2VuZHBvaW50X3N0cn0iKQoKICAgICAgICB0cnk6CiAgICAg + ICAgICAgIGlmIGVuZHBvaW50X3N0cl9pcFswXSA9PSAiWyI6CiAgICAgICAgICAgICAgICBlbmRw + b2ludF9zdHJfaXAgPSBlbmRwb2ludF9zdHJfaXBbMSA6IGxlbihlbmRwb2ludF9zdHJfaXApIC0g + MV0KICAgICAgICAgICAgaXBfdHlwZSA9ICgKICAgICAgICAgICAgICAgICJJUHY0IiBpZiB0eXBl + KGlwX2FkZHJlc3MoZW5kcG9pbnRfc3RyX2lwKSkgaXMgSVB2NEFkZHJlc3MgZWxzZSAiSVB2NiIK + ICAgICAgICAgICAgKQogICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICAgICBpcF90 + eXBlID0gIkZRRE4iCiAgICAgICAgaWYgbm90IHBvcnQuaXNkaWdpdCgpOgogICAgICAgICAgICBy + YWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKGYiUG9ydCBub3QgdmFsaWQ6IHtwb3J0fSIp + CiAgICAgICAgaW50UG9ydCA9IGludChwb3J0KQogICAgICAgIGlmIGludFBvcnQgPCAxIG9yIGlu + dFBvcnQgPiAyKioxNiAtIDE6CiAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNl + cHRpb24oZiJPdXQgb2YgcmFuZ2UgcG9ydCBudW1iZXI6IHtwb3J0fSIpCgogICAgICAgIHJldHVy + biBpcF90eXBlCgogICAgZGVmIGVuZHBvaW50X2RpYWwoc2VsZiwgZW5kcG9pbnRfc3RyLCBpcF90 + eXBlLCB0aW1lb3V0PTMsIGNlcnQ9Tm9uZSk6CiAgICAgICAgIyBpZiB0aGUgJ2NsdXN0ZXInIGlu + c3RhbmNlIGlzIGEgZHVtbXkgb25lLAogICAgICAgICMgZG9uJ3QgdHJ5IHRvIHJlYWNoIG91dCB0 + byB0aGUgZW5kcG9pbnQKICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuY2x1c3RlciwgRHVtbXlS + YWRvcyk6CiAgICAgICAgICAgIHJldHVybiAiIiwgIiIsICIiCiAgICAgICAgaWYgaXBfdHlwZSA9 + PSAiSVB2NiI6CiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGVuZHBvaW50X3N0cl9p + cCwgZW5kcG9pbnRfc3RyX3BvcnQgPSBlbmRwb2ludF9zdHIucnNwbGl0KCI6IiwgMSkKICAgICAg + ICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25G + YWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgIGYiTm90IGEgcHJvcGVyIGVuZHBv + aW50OiB7ZW5kcG9pbnRfc3RyfSIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgaWYgZW5k + cG9pbnRfc3RyX2lwWzBdICE9ICJbIjoKICAgICAgICAgICAgICAgIGVuZHBvaW50X3N0cl9pcCA9 + ICJbIiArIGVuZHBvaW50X3N0cl9pcCArICJdIgogICAgICAgICAgICBlbmRwb2ludF9zdHIgPSAi + OiIuam9pbihbZW5kcG9pbnRfc3RyX2lwLCBlbmRwb2ludF9zdHJfcG9ydF0pCgogICAgICAgIHBy + b3RvY29scyA9IFsiaHR0cCIsICJodHRwcyJdCiAgICAgICAgcmVzcG9uc2VfZXJyb3IgPSBOb25l + CiAgICAgICAgZm9yIHByZWZpeCBpbiBwcm90b2NvbHM6CiAgICAgICAgICAgIHRyeToKICAgICAg + ICAgICAgICAgIGVwID0gZiJ7cHJlZml4fTovL3tlbmRwb2ludF9zdHJ9IgogICAgICAgICAgICAg + ICAgdmVyaWZ5ID0gTm9uZQogICAgICAgICAgICAgICAgIyBJZiB2ZXJpZnkgaXMgc2V0IHRvIGEg + cGF0aCB0byBhIGRpcmVjdG9yeSwKICAgICAgICAgICAgICAgICMgdGhlIGRpcmVjdG9yeSBtdXN0 + IGhhdmUgYmVlbiBwcm9jZXNzZWQgdXNpbmcgdGhlIGNfcmVoYXNoIHV0aWxpdHkgc3VwcGxpZWQg + d2l0aCBPcGVuU1NMLgogICAgICAgICAgICAgICAgaWYgcHJlZml4ID09ICJodHRwcyIgYW5kIHNl + bGYuX2FyZ19wYXJzZXIucmd3X3NraXBfdGxzOgogICAgICAgICAgICAgICAgICAgIHZlcmlmeSA9 + IEZhbHNlCiAgICAgICAgICAgICAgICAgICAgciA9IHJlcXVlc3RzLmhlYWQoZXAsIHRpbWVvdXQ9 + dGltZW91dCwgdmVyaWZ5PUZhbHNlKQogICAgICAgICAgICAgICAgZWxpZiBwcmVmaXggPT0gImh0 + dHBzIiBhbmQgY2VydDoKICAgICAgICAgICAgICAgICAgICB2ZXJpZnkgPSBjZXJ0CiAgICAgICAg + ICAgICAgICAgICAgciA9IHJlcXVlc3RzLmhlYWQoZXAsIHRpbWVvdXQ9dGltZW91dCwgdmVyaWZ5 + PWNlcnQpCiAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgIHIgPSByZXF1 + ZXN0cy5oZWFkKGVwLCB0aW1lb3V0PXRpbWVvdXQpCiAgICAgICAgICAgICAgICBpZiByLnN0YXR1 + c19jb2RlID09IDIwMDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJlZml4LCB2ZXJpZnks + ICIiCiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXJyOgogICAgICAgICAgICAgICAg + cmVzcG9uc2VfZXJyb3IgPSBlcnIKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgc3lz + LnN0ZGVyci53cml0ZSgKICAgICAgICAgICAgZiJ1bmFibGUgdG8gY29ubmVjdCB0byBlbmRwb2lu + dDoge2VuZHBvaW50X3N0cn0sIGZhaWxlZCBlcnJvcjoge3Jlc3BvbnNlX2Vycm9yfSIKICAgICAg + ICApCiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgIiIsCiAgICAgICAgICAgICIiLAogICAg + ICAgICAgICAoIi0xIiksCiAgICAgICAgKQoKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmdfbGlz + dD1Ob25lKToKICAgICAgICBzZWxmLm91dF9tYXAgPSB7fQogICAgICAgIHNlbGYuX2V4Y2x1ZGVk + X2tleXMgPSBzZXQoKQogICAgICAgIHNlbGYuX2FyZ19wYXJzZXIgPSBzZWxmLmdlbl9hcmdfcGFy + c2VyKGFyZ3NfdG9fcGFyc2U9YXJnX2xpc3QpCiAgICAgICAgc2VsZi5fY2hlY2tfY29uZmxpY3Rp + bmdfb3B0aW9ucygpCiAgICAgICAgc2VsZi5ydW5fYXNfdXNlciA9IHNlbGYuX2FyZ19wYXJzZXIu + cnVuX2FzX3VzZXIKICAgICAgICBzZWxmLm91dHB1dF9maWxlID0gc2VsZi5fYXJnX3BhcnNlci5v + dXRwdXQKICAgICAgICBzZWxmLmNlcGhfY29uZiA9IHNlbGYuX2FyZ19wYXJzZXIuY2VwaF9jb25m + CiAgICAgICAgc2VsZi5jZXBoX2tleXJpbmcgPSBzZWxmLl9hcmdfcGFyc2VyLmtleXJpbmcKICAg + ICAgICAjIGlmIHVzZXIgbm90IHByb3ZpZGVkLCBnaXZlIGEgZGVmYXVsdCB1c2VyCiAgICAgICAg + aWYgbm90IHNlbGYucnVuX2FzX3VzZXIgYW5kIG5vdCBzZWxmLl9hcmdfcGFyc2VyLnVwZ3JhZGU6 + CiAgICAgICAgICAgIHNlbGYucnVuX2FzX3VzZXIgPSBzZWxmLkVYVEVSTkFMX1VTRVJfTkFNRQog + ICAgICAgIGlmIG5vdCBzZWxmLl9hcmdfcGFyc2VyLnJnd19wb29sX3ByZWZpeCBhbmQgbm90IHNl + bGYuX2FyZ19wYXJzZXIudXBncmFkZToKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3df + cG9vbF9wcmVmaXggPSBzZWxmLkRFRkFVTFRfUkdXX1BPT0xfUFJFRklYCiAgICAgICAgaWYgc2Vs + Zi5jZXBoX2NvbmY6CiAgICAgICAgICAgIGt3YXJncyA9IHt9CiAgICAgICAgICAgIGlmIHNlbGYu + Y2VwaF9rZXlyaW5nOgogICAgICAgICAgICAgICAga3dhcmdzWyJjb25mIl0gPSB7ImtleXJpbmci + OiBzZWxmLmNlcGhfa2V5cmluZ30KICAgICAgICAgICAgc2VsZi5jbHVzdGVyID0gcmFkb3MuUmFk + b3MoY29uZmZpbGU9c2VsZi5jZXBoX2NvbmYsICoqa3dhcmdzKQogICAgICAgIGVsc2U6CiAgICAg + ICAgICAgIHNlbGYuY2x1c3RlciA9IHJhZG9zLlJhZG9zKCkKICAgICAgICAgICAgc2VsZi5jbHVz + dGVyLmNvbmZfcmVhZF9maWxlKCkKICAgICAgICBzZWxmLmNsdXN0ZXIuY29ubmVjdCgpCgogICAg + ZGVmIHNodXRkb3duKHNlbGYpOgogICAgICAgIGlmIHNlbGYuY2x1c3Rlci5zdGF0ZSA9PSAiY29u + bmVjdGVkIjoKICAgICAgICAgICAgc2VsZi5jbHVzdGVyLnNodXRkb3duKCkKCiAgICBkZWYgZ2V0 + X2ZzaWQoc2VsZik6CiAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5kcnlfcnVuOgogICAgICAg + ICAgICByZXR1cm4gc2VsZi5kcnlfcnVuKCJjZXBoIGZzaWQiKQogICAgICAgIHJldHVybiBzdHIo + c2VsZi5jbHVzdGVyLmdldF9mc2lkKCkpCgogICAgZGVmIF9jb21tb25fY21kX2pzb25fZ2VuKHNl + bGYsIGNtZF9qc29uKToKICAgICAgICBjbWQgPSBqc29uLmR1bXBzKGNtZF9qc29uLCBzb3J0X2tl + eXM9VHJ1ZSkKICAgICAgICByZXRfdmFsLCBjbWRfb3V0LCBlcnJfbXNnID0gc2VsZi5jbHVzdGVy + Lm1vbl9jb21tYW5kKGNtZCwgYiIiKQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIudmVyYm9z + ZToKICAgICAgICAgICAgcHJpbnQoZiJDb21tYW5kIElucHV0OiB7Y21kfSIpCiAgICAgICAgICAg + IHByaW50KAogICAgICAgICAgICAgICAgZiJSZXR1cm4gVmFsOiB7cmV0X3ZhbH1cbkNvbW1hbmQg + T3V0cHV0OiB7Y21kX291dH1cbiIKICAgICAgICAgICAgICAgIGYiRXJyb3IgTWVzc2FnZToge2Vy + cl9tc2d9XG4tLS0tLS0tLS0tXG4iCiAgICAgICAgICAgICkKICAgICAgICBqc29uX291dCA9IHt9 + CiAgICAgICAgIyBpZiB0aGVyZSBpcyBubyBlcnJvciAoaS5lOyByZXRfdmFsIGlzIFpFUk8pIGFu + ZCAnY21kX291dCcgaXMgbm90IGVtcHR5CiAgICAgICAgIyB0aGVuIGNvbnZlcnQgJ2NtZF9vdXQn + IHRvIGEganNvbiBvdXRwdXQKICAgICAgICBpZiByZXRfdmFsID09IDAgYW5kIGNtZF9vdXQ6CiAg + ICAgICAgICAgIGpzb25fb3V0ID0ganNvbi5sb2FkcyhjbWRfb3V0KQogICAgICAgIHJldHVybiBy + ZXRfdmFsLCBqc29uX291dCwgZXJyX21zZwoKICAgIGRlZiBnZXRfY2VwaF9leHRlcm5hbF9tb25f + ZGF0YShzZWxmKToKICAgICAgICBjbWRfanNvbiA9IHsicHJlZml4IjogInF1b3J1bV9zdGF0dXMi + LCAiZm9ybWF0IjogImpzb24ifQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5X3J1bjoK + ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZHJ5X3J1bigiY2VwaCAiICsgY21kX2pzb25bInByZWZp + eCJdKQogICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2VsZi5fY29tbW9uX2Nt + ZF9qc29uX2dlbihjbWRfanNvbikKICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIHVuc3VjY2Vzc2Z1 + bCBhdHRlbXB0LAogICAgICAgIGlmIHJldF92YWwgIT0gMCBvciBsZW4oanNvbl9vdXQpID09IDA6 + CiAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAg + ICAgICAiJ3F1b3J1bV9zdGF0dXMnIGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAg ZiJFcnJvcjoge2Vycl9tc2cgaWYgcmV0X3ZhbCAhPSAwIGVsc2Ugc2VsZi5FTVBUWV9PVVRQVVRf - TElTVH0iCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIG1vbml0b3JpbmdfZW5kcG9pbnQg - PSAoCiAgICAgICAgICAgICAgICBqc29uX291dC5nZXQoIm1ncm1hcCIsIHt9KS5nZXQoInNlcnZp - Y2VzIiwge30pLmdldCgicHJvbWV0aGV1cyIsICIiKQogICAgICAgICAgICApCiAgICAgICAgICAg - IGlmIG5vdCBtb25pdG9yaW5nX2VuZHBvaW50OgogICAgICAgICAgICAgICAgcmV0dXJuICIiLCAi - IgogICAgICAgICAgICAjIG5vdyBjaGVjayB0aGUgc3RhbmQtYnkgbWdyLXMKICAgICAgICAgICAg - c3RhbmRieV9hcnIgPSBqc29uX291dC5nZXQoIm1ncm1hcCIsIHt9KS5nZXQoInN0YW5kYnlzIiwg - W10pCiAgICAgICAgICAgIGZvciBlYWNoX3N0YW5kYnkgaW4gc3RhbmRieV9hcnI6CiAgICAgICAg - ICAgICAgICBpZiAibmFtZSIgaW4gZWFjaF9zdGFuZGJ5LmtleXMoKToKICAgICAgICAgICAgICAg - ICAgICBzdGFuZGJ5X21ncnMuYXBwZW5kKGVhY2hfc3RhbmRieVsibmFtZSJdKQogICAgICAgICAg - ICB0cnk6CiAgICAgICAgICAgICAgICBwYXJzZWRfZW5kcG9pbnQgPSB1cmxwYXJzZShtb25pdG9y - aW5nX2VuZHBvaW50KQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgICAg - ICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAg - ZiJpbnZhbGlkIGVuZHBvaW50OiB7bW9uaXRvcmluZ19lbmRwb2ludH0iCiAgICAgICAgICAgICAg - ICApCiAgICAgICAgICAgIG1vbml0b3JpbmdfZW5kcG9pbnRfaXBfbGlzdCA9IHBhcnNlZF9lbmRw - b2ludC5ob3N0bmFtZQogICAgICAgICAgICBpZiBub3QgbW9uaXRvcmluZ19lbmRwb2ludF9wb3J0 - OgogICAgICAgICAgICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9wb3J0ID0gc3RyKHBhcnNlZF9l - bmRwb2ludC5wb3J0KQoKICAgICAgICAjIGlmIG1vbml0b3JpbmcgZW5kcG9pbnQgcG9ydCBpcyBu - b3Qgc2V0LCBwdXQgYSBkZWZhdWx0IG1vbiBwb3J0CiAgICAgICAgaWYgbm90IG1vbml0b3Jpbmdf - ZW5kcG9pbnRfcG9ydDoKICAgICAgICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9wb3J0ID0gc2Vs - Zi5ERUZBVUxUX01PTklUT1JJTkdfRU5EUE9JTlRfUE9SVAoKICAgICAgICAjIHVzZXIgY291bGQg - Z2l2ZSBjb21tYSBhbmQgc3BhY2Ugc2VwYXJhdGVkIGlucHV0cyAobGlrZSAtLW1vbml0b3Jpbmct - ZW5kcG9pbnQ9IjxpcDE+LCA8aXAyPiIpCiAgICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9pcF9s - aXN0ID0gbW9uaXRvcmluZ19lbmRwb2ludF9pcF9saXN0LnJlcGxhY2UoIiwiLCAiICIpCiAgICAg - ICAgbW9uaXRvcmluZ19lbmRwb2ludF9pcF9saXN0X3NwbGl0ID0gbW9uaXRvcmluZ19lbmRwb2lu - dF9pcF9saXN0LnNwbGl0KCkKICAgICAgICAjIGlmIG1vbml0b3JpbmctZW5kcG9pbnQgY291bGQg - bm90IGJlIGZvdW5kLCByYWlzZSBhbiBlcnJvcgogICAgICAgIGlmIGxlbihtb25pdG9yaW5nX2Vu - ZHBvaW50X2lwX2xpc3Rfc3BsaXQpID09IDA6CiAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZh - aWx1cmVFeGNlcHRpb24oIk5vICdtb25pdG9yaW5nLWVuZHBvaW50JyBmb3VuZCIpCiAgICAgICAg - IyBmaXJzdCBpcCBpcyB0cmVhdGVkIGFzIHRoZSBtYWluIG1vbml0b3JpbmctZW5kcG9pbnQKICAg - ICAgICBtb25pdG9yaW5nX2VuZHBvaW50X2lwID0gbW9uaXRvcmluZ19lbmRwb2ludF9pcF9saXN0 - X3NwbGl0WzBdCiAgICAgICAgIyByZXN0IG9mIHRoZSBpcC1zIGFyZSBhZGRlZCB0byB0aGUgJ3N0 - YW5kYnlfbWdycycgbGlzdAogICAgICAgIHN0YW5kYnlfbWdycy5leHRlbmQobW9uaXRvcmluZ19l - bmRwb2ludF9pcF9saXN0X3NwbGl0WzE6XSkKICAgICAgICBmYWlsZWRfaXAgPSBtb25pdG9yaW5n - X2VuZHBvaW50X2lwCgogICAgICAgIG1vbml0b3JpbmdfZW5kcG9pbnQgPSAiOiIuam9pbigKICAg - ICAgICAgICAgW21vbml0b3JpbmdfZW5kcG9pbnRfaXAsIG1vbml0b3JpbmdfZW5kcG9pbnRfcG9y - dF0KICAgICAgICApCiAgICAgICAgaXBfdHlwZSA9IHNlbGYuX2ludmFsaWRfZW5kcG9pbnQobW9u - aXRvcmluZ19lbmRwb2ludCkKICAgICAgICB0cnk6CiAgICAgICAgICAgIG1vbml0b3JpbmdfZW5k - cG9pbnRfaXAgPSBzZWxmLl9jb252ZXJ0X2hvc3RuYW1lX3RvX2lwKAogICAgICAgICAgICAgICAg - bW9uaXRvcmluZ19lbmRwb2ludF9pcCwgbW9uaXRvcmluZ19lbmRwb2ludF9wb3J0LCBpcF90eXBl - CiAgICAgICAgICAgICkKICAgICAgICAgICAgIyBjb2xsZWN0IGFsbCB0aGUgJ3N0YW5kLWJ5JyBt - Z3IgaXBzCiAgICAgICAgICAgIG1ncl9pcHMgPSBbXQogICAgICAgICAgICBmb3IgZWFjaF9zdGFu - ZGJ5X21nciBpbiBzdGFuZGJ5X21ncnM6CiAgICAgICAgICAgICAgICBmYWlsZWRfaXAgPSBlYWNo - X3N0YW5kYnlfbWdyCiAgICAgICAgICAgICAgICBtZ3JfaXBzLmFwcGVuZCgKICAgICAgICAgICAg - ICAgICAgICBzZWxmLl9jb252ZXJ0X2hvc3RuYW1lX3RvX2lwKAogICAgICAgICAgICAgICAgICAg - ICAgICBlYWNoX3N0YW5kYnlfbWdyLCBtb25pdG9yaW5nX2VuZHBvaW50X3BvcnQsIGlwX3R5cGUK - ICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgZXhjZXB0Ogog - ICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAg - ICAgZiJDb252ZXJzaW9uIG9mIGhvc3Q6IHtmYWlsZWRfaXB9IHRvIElQIGZhaWxlZC4gIgogICAg - ICAgICAgICAgICAgIlBsZWFzZSBlbnRlciB0aGUgSVAgYWRkcmVzc2VzIG9mIGFsbCB0aGUgY2Vw - aC1tZ3JzIHdpdGggdGhlICctLW1vbml0b3JpbmctZW5kcG9pbnQnIGZsYWciCiAgICAgICAgICAg - ICkKCiAgICAgICAgXywgXywgZXJyID0gc2VsZi5lbmRwb2ludF9kaWFsKG1vbml0b3JpbmdfZW5k - cG9pbnQsIGlwX3R5cGUpCiAgICAgICAgaWYgZXJyID09ICItMSI6CiAgICAgICAgICAgIHJhaXNl - IEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oZXJyKQogICAgICAgICMgYWRkIHRoZSB2YWxpZGF0 - ZWQgYWN0aXZlIG1nciBJUCBpbnRvIHRoZSBmaXJzdCBpbmRleAogICAgICAgIG1ncl9pcHMuaW5z - ZXJ0KDAsIG1vbml0b3JpbmdfZW5kcG9pbnRfaXApCiAgICAgICAgYWxsX21ncl9pcHNfc3RyID0g - IiwiLmpvaW4obWdyX2lwcykKICAgICAgICByZXR1cm4gYWxsX21ncl9pcHNfc3RyLCBtb25pdG9y - aW5nX2VuZHBvaW50X3BvcnQKCiAgICBkZWYgY2hlY2tfdXNlcl9leGlzdChzZWxmLCB1c2VyKToK - ICAgICAgICBjbWRfanNvbiA9IHsicHJlZml4IjogImF1dGggZ2V0IiwgImVudGl0eSI6IGYie3Vz - ZXJ9IiwgImZvcm1hdCI6ICJqc29uIn0KICAgICAgICByZXRfdmFsLCBqc29uX291dCwgXyA9IHNl - bGYuX2NvbW1vbl9jbWRfanNvbl9nZW4oY21kX2pzb24pCiAgICAgICAgaWYgcmV0X3ZhbCAhPSAw - IG9yIGxlbihqc29uX291dCkgPT0gMDoKICAgICAgICAgICAgcmV0dXJuICIiCiAgICAgICAgcmV0 - dXJuIHN0cihqc29uX291dFswXVsia2V5Il0pCgogICAgZGVmIGdldF9jZXBoZnNfcHJvdmlzaW9u - ZXJfY2Fwc19hbmRfZW50aXR5KHNlbGYpOgogICAgICAgIGVudGl0eSA9ICJjbGllbnQuY3NpLWNl - cGhmcy1wcm92aXNpb25lciIKICAgICAgICBjYXBzID0gewogICAgICAgICAgICAibW9uIjogImFs - bG93IHIsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwKICAgICAgICAgICAgIm1nciI6 - ICJhbGxvdyBydyIsCiAgICAgICAgICAgICJvc2QiOiAiYWxsb3cgcncgdGFnIGNlcGhmcyBtZXRh - ZGF0YT0qIiwKICAgICAgICB9CiAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5yZXN0cmljdGVk - X2F1dGhfcGVybWlzc2lvbjoKICAgICAgICAgICAgY2x1c3Rlcl9uYW1lID0gc2VsZi5fYXJnX3Bh - cnNlci5jbHVzdGVyX25hbWUKICAgICAgICAgICAgaWYgY2x1c3Rlcl9uYW1lID09ICIiOgogICAg - ICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAg - ICAgICAgICAiY2x1c3Rlcl9uYW1lIG5vdCBmb3VuZCwgcGxlYXNlIHNldCB0aGUgJy0tY2x1c3Rl - ci1uYW1lJyBmbGFnIgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBjZXBoZnNfZmlsZXN5 - c3RlbSA9IHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2ZpbGVzeXN0ZW1fbmFtZQogICAgICAgICAg - ICBpZiBjZXBoZnNfZmlsZXN5c3RlbSA9PSAiIjoKICAgICAgICAgICAgICAgIGVudGl0eSA9IGYi - e2VudGl0eX0te2NsdXN0ZXJfbmFtZX0iCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAg - ICBlbnRpdHkgPSBmIntlbnRpdHl9LXtjbHVzdGVyX25hbWV9LXtjZXBoZnNfZmlsZXN5c3RlbX0i - CiAgICAgICAgICAgICAgICBjYXBzWyJvc2QiXSA9IGYiYWxsb3cgcncgdGFnIGNlcGhmcyBtZXRh - ZGF0YT17Y2VwaGZzX2ZpbGVzeXN0ZW19IgoKICAgICAgICByZXR1cm4gY2FwcywgZW50aXR5Cgog - ICAgZGVmIGdldF9jZXBoZnNfbm9kZV9jYXBzX2FuZF9lbnRpdHkoc2VsZik6CiAgICAgICAgZW50 - aXR5ID0gImNsaWVudC5jc2ktY2VwaGZzLW5vZGUiCiAgICAgICAgY2FwcyA9IHsKICAgICAgICAg - ICAgIm1vbiI6ICJhbGxvdyByLCBhbGxvdyBjb21tYW5kICdvc2QgYmxvY2tsaXN0JyIsCiAgICAg - ICAgICAgICJtZ3IiOiAiYWxsb3cgcnciLAogICAgICAgICAgICAib3NkIjogImFsbG93IHJ3IHRh - ZyBjZXBoZnMgKj0qIiwKICAgICAgICAgICAgIm1kcyI6ICJhbGxvdyBydyIsCiAgICAgICAgfQog - ICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIucmVzdHJpY3RlZF9hdXRoX3Blcm1pc3Npb246CiAg - ICAgICAgICAgIGNsdXN0ZXJfbmFtZSA9IHNlbGYuX2FyZ19wYXJzZXIuY2x1c3Rlcl9uYW1lCiAg - ICAgICAgICAgIGlmIGNsdXN0ZXJfbmFtZSA9PSAiIjoKICAgICAgICAgICAgICAgIHJhaXNlIEV4 - ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgImNsdXN0ZXJfbmFt - ZSBub3QgZm91bmQsIHBsZWFzZSBzZXQgdGhlICctLWNsdXN0ZXItbmFtZScgZmxhZyIKICAgICAg - ICAgICAgICAgICkKICAgICAgICAgICAgY2VwaGZzX2ZpbGVzeXN0ZW0gPSBzZWxmLl9hcmdfcGFy - c2VyLmNlcGhmc19maWxlc3lzdGVtX25hbWUKICAgICAgICAgICAgaWYgY2VwaGZzX2ZpbGVzeXN0 - ZW0gPT0gIiI6CiAgICAgICAgICAgICAgICBlbnRpdHkgPSBmIntlbnRpdHl9LXtjbHVzdGVyX25h - bWV9IgogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgZW50aXR5ID0gZiJ7ZW50aXR5 - fS17Y2x1c3Rlcl9uYW1lfS17Y2VwaGZzX2ZpbGVzeXN0ZW19IgogICAgICAgICAgICAgICAgY2Fw - c1sib3NkIl0gPSBmImFsbG93IHJ3IHRhZyBjZXBoZnMgKj17Y2VwaGZzX2ZpbGVzeXN0ZW19IgoK - ICAgICAgICByZXR1cm4gY2FwcywgZW50aXR5CgogICAgZGVmIGdldF9lbnRpdHkoc2VsZiwgZW50 - aXR5LCByYmRfcG9vbF9uYW1lLCBhbGlhc19yYmRfcG9vbF9uYW1lLCBjbHVzdGVyX25hbWUpOgog - ICAgICAgIGlmICgKICAgICAgICAgICAgcmJkX3Bvb2xfbmFtZS5jb3VudCgiLiIpICE9IDAKICAg - ICAgICAgICAgb3IgcmJkX3Bvb2xfbmFtZS5jb3VudCgiXyIpICE9IDAKICAgICAgICAgICAgb3Ig - YWxpYXNfcmJkX3Bvb2xfbmFtZSAhPSAiIgogICAgICAgICAgICAjIGNoZWNraW5nIGFsaWFzX3Ji - ZF9wb29sX25hbWUgaXMgbm90IGVtcHR5IGFzIHRoZXJlIG1heWJlIGEgc3BlY2lhbCBjaGFyYWN0 - ZXIgdXNlZCBvdGhlciB0aGFuIC4gb3IgXwogICAgICAgICk6CiAgICAgICAgICAgIGlmIGFsaWFz - X3JiZF9wb29sX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWls - dXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJwbGVhc2Ugc2V0IHRoZSAnLS1hbGlh - cy1yYmQtZGF0YS1wb29sLW5hbWUnIGZsYWcgYXMgdGhlIHJiZCBkYXRhIHBvb2wgbmFtZSBjb250 - YWlucyAnLicgb3IgJ18nIgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBpZiAoCiAgICAg - ICAgICAgICAgICBhbGlhc19yYmRfcG9vbF9uYW1lLmNvdW50KCIuIikgIT0gMAogICAgICAgICAg - ICAgICAgb3IgYWxpYXNfcmJkX3Bvb2xfbmFtZS5jb3VudCgiXyIpICE9IDAKICAgICAgICAgICAg - KToKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAg - ICAgICAgICAgICAgICAgIictLWFsaWFzLXJiZC1kYXRhLXBvb2wtbmFtZScgZmxhZyB2YWx1ZSBz - aG91bGQgbm90IGNvbnRhaW4gJy4nIG9yICdfJyIKICAgICAgICAgICAgICAgICkKICAgICAgICAg - ICAgZW50aXR5ID0gZiJ7ZW50aXR5fS17Y2x1c3Rlcl9uYW1lfS17YWxpYXNfcmJkX3Bvb2xfbmFt - ZX0iCiAgICAgICAgZWxzZToKICAgICAgICAgICAgZW50aXR5ID0gZiJ7ZW50aXR5fS17Y2x1c3Rl - cl9uYW1lfS17cmJkX3Bvb2xfbmFtZX0iCgogICAgICAgIHJldHVybiBlbnRpdHkKCiAgICBkZWYg - Z2V0X3JiZF9wcm92aXNpb25lcl9jYXBzX2FuZF9lbnRpdHkoc2VsZik6CiAgICAgICAgZW50aXR5 - ID0gImNsaWVudC5jc2ktcmJkLXByb3Zpc2lvbmVyIgogICAgICAgIGNhcHMgPSB7CiAgICAgICAg - ICAgICJtb24iOiAicHJvZmlsZSByYmQsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwK - ICAgICAgICAgICAgIm1nciI6ICJhbGxvdyBydyIsCiAgICAgICAgICAgICJvc2QiOiAicHJvZmls - ZSByYmQiLAogICAgICAgIH0KICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLnJlc3RyaWN0ZWRf - YXV0aF9wZXJtaXNzaW9uOgogICAgICAgICAgICByYmRfcG9vbF9uYW1lID0gc2VsZi5fYXJnX3Bh - cnNlci5yYmRfZGF0YV9wb29sX25hbWUKICAgICAgICAgICAgYWxpYXNfcmJkX3Bvb2xfbmFtZSA9 - IHNlbGYuX2FyZ19wYXJzZXIuYWxpYXNfcmJkX2RhdGFfcG9vbF9uYW1lCiAgICAgICAgICAgIGNs - dXN0ZXJfbmFtZSA9IHNlbGYuX2FyZ19wYXJzZXIuY2x1c3Rlcl9uYW1lCiAgICAgICAgICAgIGlm - IHJiZF9wb29sX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWls - dXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJtYW5kYXRvcnkgZmxhZyBub3QgZm91 - bmQsIHBsZWFzZSBzZXQgdGhlICctLXJiZC1kYXRhLXBvb2wtbmFtZScgZmxhZyIKICAgICAgICAg - ICAgICAgICkKICAgICAgICAgICAgaWYgY2x1c3Rlcl9uYW1lID09ICIiOgogICAgICAgICAgICAg - ICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAi - bWFuZGF0b3J5IGZsYWcgbm90IGZvdW5kLCBwbGVhc2Ugc2V0IHRoZSAnLS1jbHVzdGVyLW5hbWUn - IGZsYWciCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGVudGl0eSA9IHNlbGYuZ2V0X2Vu - dGl0eSgKICAgICAgICAgICAgICAgIGVudGl0eSwgcmJkX3Bvb2xfbmFtZSwgYWxpYXNfcmJkX3Bv - b2xfbmFtZSwgY2x1c3Rlcl9uYW1lCiAgICAgICAgICAgICkKICAgICAgICAgICAgY2Fwc1sib3Nk - Il0gPSBmInByb2ZpbGUgcmJkIHBvb2w9e3JiZF9wb29sX25hbWV9IgoKICAgICAgICByZXR1cm4g - Y2FwcywgZW50aXR5CgogICAgZGVmIGdldF9yYmRfbm9kZV9jYXBzX2FuZF9lbnRpdHkoc2VsZik6 - CiAgICAgICAgZW50aXR5ID0gImNsaWVudC5jc2ktcmJkLW5vZGUiCiAgICAgICAgY2FwcyA9IHsK - ICAgICAgICAgICAgIm1vbiI6ICJwcm9maWxlIHJiZCwgYWxsb3cgY29tbWFuZCAnb3NkIGJsb2Nr - bGlzdCciLAogICAgICAgICAgICAib3NkIjogInByb2ZpbGUgcmJkIiwKICAgICAgICB9CiAgICAg - ICAgaWYgc2VsZi5fYXJnX3BhcnNlci5yZXN0cmljdGVkX2F1dGhfcGVybWlzc2lvbjoKICAgICAg - ICAgICAgcmJkX3Bvb2xfbmFtZSA9IHNlbGYuX2FyZ19wYXJzZXIucmJkX2RhdGFfcG9vbF9uYW1l - CiAgICAgICAgICAgIGFsaWFzX3JiZF9wb29sX25hbWUgPSBzZWxmLl9hcmdfcGFyc2VyLmFsaWFz - X3JiZF9kYXRhX3Bvb2xfbmFtZQogICAgICAgICAgICBjbHVzdGVyX25hbWUgPSBzZWxmLl9hcmdf - cGFyc2VyLmNsdXN0ZXJfbmFtZQogICAgICAgICAgICBpZiByYmRfcG9vbF9uYW1lID09ICIiOgog + TElTVH0iCiAgICAgICAgICAgICkKICAgICAgICBxX2xlYWRlcl9uYW1lID0ganNvbl9vdXRbInF1 + b3J1bV9sZWFkZXJfbmFtZSJdCiAgICAgICAgcV9sZWFkZXJfZGV0YWlscyA9IHt9CiAgICAgICAg + cV9sZWFkZXJfbWF0Y2hpbmdfbGlzdCA9IFsKICAgICAgICAgICAgbCBmb3IgbCBpbiBqc29uX291 + dFsibW9ubWFwIl1bIm1vbnMiXSBpZiBsWyJuYW1lIl0gPT0gcV9sZWFkZXJfbmFtZQogICAgICAg + IF0KICAgICAgICBpZiBsZW4ocV9sZWFkZXJfbWF0Y2hpbmdfbGlzdCkgPT0gMDoKICAgICAgICAg + ICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigiTm8gbWF0Y2hpbmcgJ21vbicgZGV0 + YWlscyBmb3VuZCIpCiAgICAgICAgcV9sZWFkZXJfZGV0YWlscyA9IHFfbGVhZGVyX21hdGNoaW5n + X2xpc3RbMF0KICAgICAgICAjIGdldCB0aGUgYWRkcmVzcyB2ZWN0b3Igb2YgdGhlIHF1b3J1bS1s + ZWFkZXIKICAgICAgICBxX2xlYWRlcl9hZGRydmVjID0gcV9sZWFkZXJfZGV0YWlscy5nZXQoInB1 + YmxpY19hZGRycyIsIHt9KS5nZXQoImFkZHJ2ZWMiLCBbXSkKICAgICAgICAjIGlmIHRoZSBxdW9y + dW0tbGVhZGVyIGhhcyBvbmx5IG9uZSBhZGRyZXNzIGluIHRoZSBhZGRyZXNzLXZlY3RvcgogICAg + ICAgICMgYW5kIGl0IGlzIG9mIHR5cGUgJ3YyJyAoaWU7IHdpdGggPElQPjozMzAwKSwKICAgICAg + ICAjIHJhaXNlIGFuIGV4Y2VwdGlvbiB0byBtYWtlIHVzZXIgYXdhcmUgdGhhdAogICAgICAgICMg + dGhleSBoYXZlIHRvIGVuYWJsZSAndjEnIChpZTsgd2l0aCA8SVA+OjY3ODkpIHR5cGUgYXMgd2Vs + bAogICAgICAgIGlmIGxlbihxX2xlYWRlcl9hZGRydmVjKSA9PSAxIGFuZCBxX2xlYWRlcl9hZGRy + dmVjWzBdWyJ0eXBlIl0gPT0gInYyIjoKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVy + ZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICJPbmx5ICd2MicgYWRkcmVzcyB0eXBlIGlzIGVu + YWJsZWQsIHVzZXIgc2hvdWxkIGFsc28gZW5hYmxlICd2MScgdHlwZSBhcyB3ZWxsIgogICAgICAg + ICAgICApCiAgICAgICAgaXBfYWRkciA9IHN0cihxX2xlYWRlcl9kZXRhaWxzWyJwdWJsaWNfYWRk + ciJdLnNwbGl0KCIvIilbMF0pCgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIudjJfcG9ydF9l + bmFibGU6CiAgICAgICAgICAgIGlmIGxlbihxX2xlYWRlcl9hZGRydmVjKSA+IDE6CiAgICAgICAg + ICAgICAgICBpZiBxX2xlYWRlcl9hZGRydmVjWzBdWyJ0eXBlIl0gPT0gInYyIjoKICAgICAgICAg + ICAgICAgICAgICBpcF9hZGRyID0gcV9sZWFkZXJfYWRkcnZlY1swXVsiYWRkciJdCiAgICAgICAg + ICAgICAgICBlbGlmIHFfbGVhZGVyX2FkZHJ2ZWNbMV1bInR5cGUiXSA9PSAidjIiOgogICAgICAg + ICAgICAgICAgICAgIGlwX2FkZHIgPSBxX2xlYWRlcl9hZGRydmVjWzFdWyJhZGRyIl0KICAgICAg + ICAgICAgZWxzZToKICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCiAgICAgICAgICAg + ICAgICAgICAgIid2MicgYWRkcmVzcyB0eXBlIG5vdCBwcmVzZW50LCBhbmQgJ3YyLXBvcnQtZW5h + YmxlJyBmbGFnIGlzIHByb3ZpZGVkIgogICAgICAgICAgICAgICAgKQoKICAgICAgICByZXR1cm4g + ZiJ7c3RyKHFfbGVhZGVyX25hbWUpfT17aXBfYWRkcn0iCgogICAgZGVmIF9jb252ZXJ0X2hvc3Ru + YW1lX3RvX2lwKHNlbGYsIGhvc3RfbmFtZSwgcG9ydCwgaXBfdHlwZSk6CiAgICAgICAgIyBpZiAn + Y2x1c3RlcicgaW5zdGFuY2UgaXMgYSBkdW1teSB0eXBlLAogICAgICAgICMgY2FsbCB0aGUgZHVt + bXkgaW5zdGFuY2UncyAiY29udmVydCIgbWV0aG9kCiAgICAgICAgaWYgbm90IGhvc3RfbmFtZToK + ICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigiRW1wdHkgaG9zdG5h + bWUgcHJvdmlkZWQiKQogICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5jbHVzdGVyLCBEdW1teVJh + ZG9zKToKICAgICAgICAgICAgcmV0dXJuIHNlbGYuY2x1c3Rlci5fY29udmVydF9ob3N0bmFtZV90 + b19pcChob3N0X25hbWUpCgogICAgICAgIGlmIGlwX3R5cGUgPT0gIkZRRE4iOgogICAgICAgICAg + ICAjIGNoZWNrIHdoaWNoIGlwIEZRRE4gc2hvdWxkIGJlIGNvbnZlcnRlZCB0bywgSVB2NCBvciBJ + UHY2CiAgICAgICAgICAgICMgY2hlY2sgdGhlIGhvc3QgaXAsIHRoZSBlbmRwb2ludCBpcCB0eXBl + IHdvdWxkIGJlIHNpbWlsYXIgdG8gaG9zdCBpcAogICAgICAgICAgICBjbWRfanNvbiA9IHsicHJl + Zml4IjogIm9yY2ggaG9zdCBscyIsICJmb3JtYXQiOiAianNvbiJ9CiAgICAgICAgICAgIHJldF92 + YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2VsZi5fY29tbW9uX2NtZF9qc29uX2dlbihjbWRfanNv + bikKICAgICAgICAgICAgIyBpZiB0aGVyZSBpcyBhbiB1bnN1Y2Nlc3NmdWwgYXR0ZW1wdCwKICAg + ICAgICAgICAgaWYgcmV0X3ZhbCAhPSAwIG9yIGxlbihqc29uX291dCkgPT0gMDoKICAgICAgICAg + ICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAg + ICAgIidvcmNoIGhvc3QgbHMnIGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAgICAg + IGYiRXJyb3I6IHtlcnJfbXNnIGlmIHJldF92YWwgIT0gMCBlbHNlIHNlbGYuRU1QVFlfT1VUUFVU + X0xJU1R9IgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBob3N0X2FkZHIgPSBqc29uX291 + dFswXVsiYWRkciJdCiAgICAgICAgICAgICMgYWRkIDo4MCBzYW1wbGUgcG9ydCBpbiBpcF90eXBl + LCBhcyBfaW52YWxpZF9lbmRwb2ludCBhbHNvIHZlcmlmeSBwb3J0CiAgICAgICAgICAgIGhvc3Rf + aXBfdHlwZSA9IHNlbGYuX2ludmFsaWRfZW5kcG9pbnQoaG9zdF9hZGRyICsgIjo4MCIpCiAgICAg + ICAgICAgIGltcG9ydCBzb2NrZXQKCiAgICAgICAgICAgICMgZXhhbXBsZSBvdXRwdXQgWyg8QWRk + cmVzc0ZhbWlseS5BRl9JTkVUOiAyPiwgPFNvY2tldEtpbmQuU09DS19TVFJFQU06IDE+LCA2LCAn + JywgKCc5My4xODQuMjE2LjM0JywgODApKSwgLi4uXQogICAgICAgICAgICAjIHdlIG5lZWQgdG8g + Z2V0IDkzLjE4NC4yMTYuMzQgc28gaXQgd291bGQgYmUgaXBbMF1bNF1bMF0KICAgICAgICAgICAg + aWYgaG9zdF9pcF90eXBlID09ICJJUHY2IjoKICAgICAgICAgICAgICAgIGlwID0gc29ja2V0Lmdl + dGFkZHJpbmZvKAogICAgICAgICAgICAgICAgICAgIGhvc3RfbmFtZSwgcG9ydCwgZmFtaWx5PXNv + Y2tldC5BRl9JTkVUNiwgcHJvdG89c29ja2V0LklQUFJPVE9fVENQCiAgICAgICAgICAgICAgICAp + CiAgICAgICAgICAgIGVsaWYgaG9zdF9pcF90eXBlID09ICJJUHY0IjoKICAgICAgICAgICAgICAg + IGlwID0gc29ja2V0LmdldGFkZHJpbmZvKAogICAgICAgICAgICAgICAgICAgIGhvc3RfbmFtZSwg + cG9ydCwgZmFtaWx5PXNvY2tldC5BRl9JTkVULCBwcm90bz1zb2NrZXQuSVBQUk9UT19UQ1AKICAg + ICAgICAgICAgICAgICkKICAgICAgICAgICAgZGVsIHNvY2tldAogICAgICAgICAgICByZXR1cm4g + aXBbMF1bNF1bMF0KICAgICAgICByZXR1cm4gaG9zdF9uYW1lCgogICAgZGVmIGdldF9hY3RpdmVf + YW5kX3N0YW5kYnlfbWdycyhzZWxmKToKICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLmRyeV9y + dW46CiAgICAgICAgICAgIHJldHVybiAiIiwgc2VsZi5kcnlfcnVuKCJjZXBoIHN0YXR1cyIpCiAg + ICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9wb3J0ID0gc2VsZi5fYXJnX3BhcnNlci5tb25pdG9y + aW5nX2VuZHBvaW50X3BvcnQKICAgICAgICBtb25pdG9yaW5nX2VuZHBvaW50X2lwX2xpc3QgPSBz + ZWxmLl9hcmdfcGFyc2VyLm1vbml0b3JpbmdfZW5kcG9pbnQKICAgICAgICBzdGFuZGJ5X21ncnMg + PSBbXQogICAgICAgIGlmIG5vdCBtb25pdG9yaW5nX2VuZHBvaW50X2lwX2xpc3Q6CiAgICAgICAg + ICAgIGNtZF9qc29uID0geyJwcmVmaXgiOiAic3RhdHVzIiwgImZvcm1hdCI6ICJqc29uIn0KICAg + ICAgICAgICAgcmV0X3ZhbCwganNvbl9vdXQsIGVycl9tc2cgPSBzZWxmLl9jb21tb25fY21kX2pz + b25fZ2VuKGNtZF9qc29uKQogICAgICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIHVuc3VjY2Vzc2Z1 + bCBhdHRlbXB0LAogICAgICAgICAgICBpZiByZXRfdmFsICE9IDAgb3IgbGVuKGpzb25fb3V0KSA9 + PSAwOgogICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAg + ICAgICAgICAgICAgICAgICAiJ21nciBzZXJ2aWNlcycgY29tbWFuZCBmYWlsZWQuXG4iCiAgICAg + ICAgICAgICAgICAgICAgZiJFcnJvcjoge2Vycl9tc2cgaWYgcmV0X3ZhbCAhPSAwIGVsc2Ugc2Vs + Zi5FTVBUWV9PVVRQVVRfTElTVH0iCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIG1vbml0 + b3JpbmdfZW5kcG9pbnQgPSAoCiAgICAgICAgICAgICAgICBqc29uX291dC5nZXQoIm1ncm1hcCIs + IHt9KS5nZXQoInNlcnZpY2VzIiwge30pLmdldCgicHJvbWV0aGV1cyIsICIiKQogICAgICAgICAg + ICApCiAgICAgICAgICAgIGlmIG5vdCBtb25pdG9yaW5nX2VuZHBvaW50OgogICAgICAgICAgICAg + ICAgcmV0dXJuICIiLCAiIgogICAgICAgICAgICAjIG5vdyBjaGVjayB0aGUgc3RhbmQtYnkgbWdy + LXMKICAgICAgICAgICAgc3RhbmRieV9hcnIgPSBqc29uX291dC5nZXQoIm1ncm1hcCIsIHt9KS5n + ZXQoInN0YW5kYnlzIiwgW10pCiAgICAgICAgICAgIGZvciBlYWNoX3N0YW5kYnkgaW4gc3RhbmRi + eV9hcnI6CiAgICAgICAgICAgICAgICBpZiAibmFtZSIgaW4gZWFjaF9zdGFuZGJ5LmtleXMoKToK + ICAgICAgICAgICAgICAgICAgICBzdGFuZGJ5X21ncnMuYXBwZW5kKGVhY2hfc3RhbmRieVsibmFt + ZSJdKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBwYXJzZWRfZW5kcG9pbnQgPSB1 + cmxwYXJzZShtb25pdG9yaW5nX2VuZHBvaW50KQogICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJv + cjoKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAg + ICAgICAgICAgICAgICAgZiJpbnZhbGlkIGVuZHBvaW50OiB7bW9uaXRvcmluZ19lbmRwb2ludH0i + CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIG1vbml0b3JpbmdfZW5kcG9pbnRfaXBfbGlz + dCA9IHBhcnNlZF9lbmRwb2ludC5ob3N0bmFtZQogICAgICAgICAgICBpZiBub3QgbW9uaXRvcmlu + Z19lbmRwb2ludF9wb3J0OgogICAgICAgICAgICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9wb3J0 + ID0gc3RyKHBhcnNlZF9lbmRwb2ludC5wb3J0KQoKICAgICAgICAjIGlmIG1vbml0b3JpbmcgZW5k + cG9pbnQgcG9ydCBpcyBub3Qgc2V0LCBwdXQgYSBkZWZhdWx0IG1vbiBwb3J0CiAgICAgICAgaWYg + bm90IG1vbml0b3JpbmdfZW5kcG9pbnRfcG9ydDoKICAgICAgICAgICAgbW9uaXRvcmluZ19lbmRw + b2ludF9wb3J0ID0gc2VsZi5ERUZBVUxUX01PTklUT1JJTkdfRU5EUE9JTlRfUE9SVAoKICAgICAg + ICAjIHVzZXIgY291bGQgZ2l2ZSBjb21tYSBhbmQgc3BhY2Ugc2VwYXJhdGVkIGlucHV0cyAobGlr + ZSAtLW1vbml0b3JpbmctZW5kcG9pbnQ9IjxpcDE+LCA8aXAyPiIpCiAgICAgICAgbW9uaXRvcmlu + Z19lbmRwb2ludF9pcF9saXN0ID0gbW9uaXRvcmluZ19lbmRwb2ludF9pcF9saXN0LnJlcGxhY2Uo + IiwiLCAiICIpCiAgICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9pcF9saXN0X3NwbGl0ID0gbW9u + aXRvcmluZ19lbmRwb2ludF9pcF9saXN0LnNwbGl0KCkKICAgICAgICAjIGlmIG1vbml0b3Jpbmct + ZW5kcG9pbnQgY291bGQgbm90IGJlIGZvdW5kLCByYWlzZSBhbiBlcnJvcgogICAgICAgIGlmIGxl + bihtb25pdG9yaW5nX2VuZHBvaW50X2lwX2xpc3Rfc3BsaXQpID09IDA6CiAgICAgICAgICAgIHJh + aXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oIk5vICdtb25pdG9yaW5nLWVuZHBvaW50JyBm + b3VuZCIpCiAgICAgICAgIyBmaXJzdCBpcCBpcyB0cmVhdGVkIGFzIHRoZSBtYWluIG1vbml0b3Jp + bmctZW5kcG9pbnQKICAgICAgICBtb25pdG9yaW5nX2VuZHBvaW50X2lwID0gbW9uaXRvcmluZ19l + bmRwb2ludF9pcF9saXN0X3NwbGl0WzBdCiAgICAgICAgIyByZXN0IG9mIHRoZSBpcC1zIGFyZSBh + ZGRlZCB0byB0aGUgJ3N0YW5kYnlfbWdycycgbGlzdAogICAgICAgIHN0YW5kYnlfbWdycy5leHRl + bmQobW9uaXRvcmluZ19lbmRwb2ludF9pcF9saXN0X3NwbGl0WzE6XSkKICAgICAgICBmYWlsZWRf + aXAgPSBtb25pdG9yaW5nX2VuZHBvaW50X2lwCgogICAgICAgIG1vbml0b3JpbmdfZW5kcG9pbnQg + PSAiOiIuam9pbigKICAgICAgICAgICAgW21vbml0b3JpbmdfZW5kcG9pbnRfaXAsIG1vbml0b3Jp + bmdfZW5kcG9pbnRfcG9ydF0KICAgICAgICApCiAgICAgICAgaXBfdHlwZSA9IHNlbGYuX2ludmFs + aWRfZW5kcG9pbnQobW9uaXRvcmluZ19lbmRwb2ludCkKICAgICAgICB0cnk6CiAgICAgICAgICAg + IG1vbml0b3JpbmdfZW5kcG9pbnRfaXAgPSBzZWxmLl9jb252ZXJ0X2hvc3RuYW1lX3RvX2lwKAog + ICAgICAgICAgICAgICAgbW9uaXRvcmluZ19lbmRwb2ludF9pcCwgbW9uaXRvcmluZ19lbmRwb2lu + dF9wb3J0LCBpcF90eXBlCiAgICAgICAgICAgICkKICAgICAgICAgICAgIyBjb2xsZWN0IGFsbCB0 + aGUgJ3N0YW5kLWJ5JyBtZ3IgaXBzCiAgICAgICAgICAgIG1ncl9pcHMgPSBbXQogICAgICAgICAg + ICBmb3IgZWFjaF9zdGFuZGJ5X21nciBpbiBzdGFuZGJ5X21ncnM6CiAgICAgICAgICAgICAgICBm + YWlsZWRfaXAgPSBlYWNoX3N0YW5kYnlfbWdyCiAgICAgICAgICAgICAgICBtZ3JfaXBzLmFwcGVu + ZCgKICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb252ZXJ0X2hvc3RuYW1lX3RvX2lwKAogICAg + ICAgICAgICAgICAgICAgICAgICBlYWNoX3N0YW5kYnlfbWdyLCBtb25pdG9yaW5nX2VuZHBvaW50 + X3BvcnQsIGlwX3R5cGUKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAg + ICAgICAgZXhjZXB0OgogICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9u + KAogICAgICAgICAgICAgICAgZiJDb252ZXJzaW9uIG9mIGhvc3Q6IHtmYWlsZWRfaXB9IHRvIElQ + IGZhaWxlZC4gIgogICAgICAgICAgICAgICAgIlBsZWFzZSBlbnRlciB0aGUgSVAgYWRkcmVzc2Vz + IG9mIGFsbCB0aGUgY2VwaC1tZ3JzIHdpdGggdGhlICctLW1vbml0b3JpbmctZW5kcG9pbnQnIGZs + YWciCiAgICAgICAgICAgICkKCiAgICAgICAgXywgXywgZXJyID0gc2VsZi5lbmRwb2ludF9kaWFs + KG1vbml0b3JpbmdfZW5kcG9pbnQsIGlwX3R5cGUpCiAgICAgICAgaWYgZXJyID09ICItMSI6CiAg + ICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oZXJyKQogICAgICAgICMg + YWRkIHRoZSB2YWxpZGF0ZWQgYWN0aXZlIG1nciBJUCBpbnRvIHRoZSBmaXJzdCBpbmRleAogICAg + ICAgIG1ncl9pcHMuaW5zZXJ0KDAsIG1vbml0b3JpbmdfZW5kcG9pbnRfaXApCiAgICAgICAgYWxs + X21ncl9pcHNfc3RyID0gIiwiLmpvaW4obWdyX2lwcykKICAgICAgICByZXR1cm4gYWxsX21ncl9p + cHNfc3RyLCBtb25pdG9yaW5nX2VuZHBvaW50X3BvcnQKCiAgICBkZWYgY2hlY2tfdXNlcl9leGlz + dChzZWxmLCB1c2VyKToKICAgICAgICBjbWRfanNvbiA9IHsicHJlZml4IjogImF1dGggZ2V0Iiwg + ImVudGl0eSI6IGYie3VzZXJ9IiwgImZvcm1hdCI6ICJqc29uIn0KICAgICAgICByZXRfdmFsLCBq + c29uX291dCwgXyA9IHNlbGYuX2NvbW1vbl9jbWRfanNvbl9nZW4oY21kX2pzb24pCiAgICAgICAg + aWYgcmV0X3ZhbCAhPSAwIG9yIGxlbihqc29uX291dCkgPT0gMDoKICAgICAgICAgICAgcmV0dXJu + ICIiCiAgICAgICAgcmV0dXJuIHN0cihqc29uX291dFswXVsia2V5Il0pCgogICAgZGVmIGdldF9j + ZXBoZnNfcHJvdmlzaW9uZXJfY2Fwc19hbmRfZW50aXR5KHNlbGYpOgogICAgICAgIGVudGl0eSA9 + ICJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lciIKICAgICAgICBjYXBzID0gewogICAgICAg + ICAgICAibW9uIjogImFsbG93IHIsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwKICAg + ICAgICAgICAgIm1nciI6ICJhbGxvdyBydyIsCiAgICAgICAgICAgICJvc2QiOiAiYWxsb3cgcncg + dGFnIGNlcGhmcyBtZXRhZGF0YT0qIiwKICAgICAgICB9CiAgICAgICAgaWYgc2VsZi5fYXJnX3Bh + cnNlci5yZXN0cmljdGVkX2F1dGhfcGVybWlzc2lvbjoKICAgICAgICAgICAgazhzX2NsdXN0ZXJf + bmFtZSA9IHNlbGYuX2FyZ19wYXJzZXIuazhzX2NsdXN0ZXJfbmFtZQogICAgICAgICAgICBpZiBr + OHNfY2x1c3Rlcl9uYW1lID09ICIiOgogICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFp + bHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAiazhzX2NsdXN0ZXJfbmFtZSBub3Qg + Zm91bmQsIHBsZWFzZSBzZXQgdGhlICctLWs4cy1jbHVzdGVyLW5hbWUnIGZsYWciCiAgICAgICAg + ICAgICAgICApCiAgICAgICAgICAgIGNlcGhmc19maWxlc3lzdGVtID0gc2VsZi5fYXJnX3BhcnNl + ci5jZXBoZnNfZmlsZXN5c3RlbV9uYW1lCiAgICAgICAgICAgIGlmIGNlcGhmc19maWxlc3lzdGVt + ID09ICIiOgogICAgICAgICAgICAgICAgZW50aXR5ID0gZiJ7ZW50aXR5fS17azhzX2NsdXN0ZXJf + bmFtZX0iCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBlbnRpdHkgPSBmIntlbnRp + dHl9LXtrOHNfY2x1c3Rlcl9uYW1lfS17Y2VwaGZzX2ZpbGVzeXN0ZW19IgogICAgICAgICAgICAg + ICAgY2Fwc1sib3NkIl0gPSBmImFsbG93IHJ3IHRhZyBjZXBoZnMgbWV0YWRhdGE9e2NlcGhmc19m + aWxlc3lzdGVtfSIKCiAgICAgICAgcmV0dXJuIGNhcHMsIGVudGl0eQoKICAgIGRlZiBnZXRfY2Vw + aGZzX25vZGVfY2Fwc19hbmRfZW50aXR5KHNlbGYpOgogICAgICAgIGVudGl0eSA9ICJjbGllbnQu + Y3NpLWNlcGhmcy1ub2RlIgogICAgICAgIGNhcHMgPSB7CiAgICAgICAgICAgICJtb24iOiAiYWxs + b3cgciwgYWxsb3cgY29tbWFuZCAnb3NkIGJsb2NrbGlzdCciLAogICAgICAgICAgICAibWdyIjog + ImFsbG93IHJ3IiwKICAgICAgICAgICAgIm9zZCI6ICJhbGxvdyBydyB0YWcgY2VwaGZzICo9KiIs + CiAgICAgICAgICAgICJtZHMiOiAiYWxsb3cgcnciLAogICAgICAgIH0KICAgICAgICBpZiBzZWxm + Ll9hcmdfcGFyc2VyLnJlc3RyaWN0ZWRfYXV0aF9wZXJtaXNzaW9uOgogICAgICAgICAgICBrOHNf + Y2x1c3Rlcl9uYW1lID0gc2VsZi5fYXJnX3BhcnNlci5rOHNfY2x1c3Rlcl9uYW1lCiAgICAgICAg + ICAgIGlmIGs4c19jbHVzdGVyX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVj + dXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJrOHNfY2x1c3Rlcl9u + YW1lIG5vdCBmb3VuZCwgcGxlYXNlIHNldCB0aGUgJy0tazhzLWNsdXN0ZXItbmFtZScgZmxhZyIK + ICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgY2VwaGZzX2ZpbGVzeXN0ZW0gPSBzZWxmLl9h + cmdfcGFyc2VyLmNlcGhmc19maWxlc3lzdGVtX25hbWUKICAgICAgICAgICAgaWYgY2VwaGZzX2Zp + bGVzeXN0ZW0gPT0gIiI6CiAgICAgICAgICAgICAgICBlbnRpdHkgPSBmIntlbnRpdHl9LXtrOHNf + Y2x1c3Rlcl9uYW1lfSIKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGVudGl0eSA9 + IGYie2VudGl0eX0te2s4c19jbHVzdGVyX25hbWV9LXtjZXBoZnNfZmlsZXN5c3RlbX0iCiAgICAg + ICAgICAgICAgICBjYXBzWyJvc2QiXSA9IGYiYWxsb3cgcncgdGFnIGNlcGhmcyAqPXtjZXBoZnNf + ZmlsZXN5c3RlbX0iCgogICAgICAgIHJldHVybiBjYXBzLCBlbnRpdHkKCiAgICBkZWYgZ2V0X2Vu + dGl0eShzZWxmLCBlbnRpdHksIHJiZF9wb29sX25hbWUsIGFsaWFzX3JiZF9wb29sX25hbWUsIGs4 + c19jbHVzdGVyX25hbWUpOgogICAgICAgIGlmICgKICAgICAgICAgICAgcmJkX3Bvb2xfbmFtZS5j + b3VudCgiLiIpICE9IDAKICAgICAgICAgICAgb3IgcmJkX3Bvb2xfbmFtZS5jb3VudCgiXyIpICE9 + IDAKICAgICAgICAgICAgb3IgYWxpYXNfcmJkX3Bvb2xfbmFtZSAhPSAiIgogICAgICAgICAgICAj + IGNoZWNraW5nIGFsaWFzX3JiZF9wb29sX25hbWUgaXMgbm90IGVtcHR5IGFzIHRoZXJlIG1heWJl + IGEgc3BlY2lhbCBjaGFyYWN0ZXIgdXNlZCBvdGhlciB0aGFuIC4gb3IgXwogICAgICAgICk6CiAg + ICAgICAgICAgIGlmIGFsaWFzX3JiZF9wb29sX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICBy + YWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJwbGVh + c2Ugc2V0IHRoZSAnLS1hbGlhcy1yYmQtZGF0YS1wb29sLW5hbWUnIGZsYWcgYXMgdGhlIHJiZCBk + YXRhIHBvb2wgbmFtZSBjb250YWlucyAnLicgb3IgJ18nIgogICAgICAgICAgICAgICAgKQogICAg + ICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBhbGlhc19yYmRfcG9vbF9uYW1lLmNvdW50KCIu + IikgIT0gMAogICAgICAgICAgICAgICAgb3IgYWxpYXNfcmJkX3Bvb2xfbmFtZS5jb3VudCgiXyIp + ICE9IDAKICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1 + cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgIictLWFsaWFzLXJiZC1kYXRhLXBvb2wt + bmFtZScgZmxhZyB2YWx1ZSBzaG91bGQgbm90IGNvbnRhaW4gJy4nIG9yICdfJyIKICAgICAgICAg + ICAgICAgICkKICAgICAgICAgICAgZW50aXR5ID0gZiJ7ZW50aXR5fS17azhzX2NsdXN0ZXJfbmFt + ZX0te2FsaWFzX3JiZF9wb29sX25hbWV9IgogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGVudGl0 + eSA9IGYie2VudGl0eX0te2s4c19jbHVzdGVyX25hbWV9LXtyYmRfcG9vbF9uYW1lfSIKCiAgICAg + ICAgcmV0dXJuIGVudGl0eQoKICAgIGRlZiBnZXRfcmJkX3Byb3Zpc2lvbmVyX2NhcHNfYW5kX2Vu + dGl0eShzZWxmKToKICAgICAgICBlbnRpdHkgPSAiY2xpZW50LmNzaS1yYmQtcHJvdmlzaW9uZXIi + CiAgICAgICAgY2FwcyA9IHsKICAgICAgICAgICAgIm1vbiI6ICJwcm9maWxlIHJiZCwgYWxsb3cg + Y29tbWFuZCAnb3NkIGJsb2NrbGlzdCciLAogICAgICAgICAgICAibWdyIjogImFsbG93IHJ3IiwK + ICAgICAgICAgICAgIm9zZCI6ICJwcm9maWxlIHJiZCIsCiAgICAgICAgfQogICAgICAgIGlmIHNl + bGYuX2FyZ19wYXJzZXIucmVzdHJpY3RlZF9hdXRoX3Blcm1pc3Npb246CiAgICAgICAgICAgIHJi + ZF9wb29sX25hbWUgPSBzZWxmLl9hcmdfcGFyc2VyLnJiZF9kYXRhX3Bvb2xfbmFtZQogICAgICAg + ICAgICBhbGlhc19yYmRfcG9vbF9uYW1lID0gc2VsZi5fYXJnX3BhcnNlci5hbGlhc19yYmRfZGF0 + YV9wb29sX25hbWUKICAgICAgICAgICAgazhzX2NsdXN0ZXJfbmFtZSA9IHNlbGYuX2FyZ19wYXJz + ZXIuazhzX2NsdXN0ZXJfbmFtZQogICAgICAgICAgICBpZiByYmRfcG9vbF9uYW1lID09ICIiOgog ICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAg ICAgICAgICAgICAibWFuZGF0b3J5IGZsYWcgbm90IGZvdW5kLCBwbGVhc2Ugc2V0IHRoZSAnLS1y YmQtZGF0YS1wb29sLW5hbWUnIGZsYWciCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGlm - IGNsdXN0ZXJfbmFtZSA9PSAiIjoKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1 - cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgIm1hbmRhdG9yeSBmbGFnIG5vdCBmb3Vu - ZCwgcGxlYXNlIHNldCB0aGUgJy0tY2x1c3Rlci1uYW1lJyBmbGFnIgogICAgICAgICAgICAgICAg - KQogICAgICAgICAgICBlbnRpdHkgPSBzZWxmLmdldF9lbnRpdHkoCiAgICAgICAgICAgICAgICBl - bnRpdHksIHJiZF9wb29sX25hbWUsIGFsaWFzX3JiZF9wb29sX25hbWUsIGNsdXN0ZXJfbmFtZQog - ICAgICAgICAgICApCiAgICAgICAgICAgIGNhcHNbIm9zZCJdID0gZiJwcm9maWxlIHJiZCBwb29s - PXtyYmRfcG9vbF9uYW1lfSIKCiAgICAgICAgcmV0dXJuIGNhcHMsIGVudGl0eQoKICAgIGRlZiBn - ZXRfY2Fwc19hbmRfZW50aXR5KHNlbGYsIHVzZXJfbmFtZSk6CiAgICAgICAgaWYgImNsaWVudC5j - c2ktY2VwaGZzLXByb3Zpc2lvbmVyIiBpbiB1c2VyX25hbWU6CiAgICAgICAgICAgIGlmICJjbGll - bnQuY3NpLWNlcGhmcy1wcm92aXNpb25lciIgIT0gdXNlcl9uYW1lOgogICAgICAgICAgICAgICAg - c2VsZi5fYXJnX3BhcnNlci5yZXN0cmljdGVkX2F1dGhfcGVybWlzc2lvbiA9IFRydWUKICAgICAg - ICAgICAgcmV0dXJuIHNlbGYuZ2V0X2NlcGhmc19wcm92aXNpb25lcl9jYXBzX2FuZF9lbnRpdHko - KQogICAgICAgIGlmICJjbGllbnQuY3NpLWNlcGhmcy1ub2RlIiBpbiB1c2VyX25hbWU6CiAgICAg - ICAgICAgIGlmICJjbGllbnQuY3NpLWNlcGhmcy1ub2RlIiAhPSB1c2VyX25hbWU6CiAgICAgICAg - ICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJlc3RyaWN0ZWRfYXV0aF9wZXJtaXNzaW9uID0gVHJ1 - ZQogICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfY2VwaGZzX25vZGVfY2Fwc19hbmRfZW50aXR5 - KCkKICAgICAgICBpZiAiY2xpZW50LmNzaS1yYmQtcHJvdmlzaW9uZXIiIGluIHVzZXJfbmFtZToK - ICAgICAgICAgICAgaWYgImNsaWVudC5jc2ktcmJkLXByb3Zpc2lvbmVyIiAhPSB1c2VyX25hbWU6 - CiAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJlc3RyaWN0ZWRfYXV0aF9wZXJtaXNz - aW9uID0gVHJ1ZQogICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfcmJkX3Byb3Zpc2lvbmVyX2Nh - cHNfYW5kX2VudGl0eSgpCiAgICAgICAgaWYgImNsaWVudC5jc2ktcmJkLW5vZGUiIGluIHVzZXJf - bmFtZToKICAgICAgICAgICAgaWYgImNsaWVudC5jc2ktcmJkLW5vZGUiICE9IHVzZXJfbmFtZToK - ICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmVzdHJpY3RlZF9hdXRoX3Blcm1pc3Np - b24gPSBUcnVlCiAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9yYmRfbm9kZV9jYXBzX2FuZF9l - bnRpdHkoKQoKICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAg - ICAgICBmIm5vIHVzZXIgZm91bmQgd2l0aCB1c2VyX25hbWU6IHt1c2VyX25hbWV9LCAiCiAgICAg - ICAgICAgICJnZXRfY2Fwc19hbmRfZW50aXR5IGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICkK - CiAgICBkZWYgY3JlYXRlX2NlcGhDU0lLZXlyaW5nX3VzZXIoc2VsZiwgdXNlcik6CiAgICAgICAg - IiIiCiAgICAgICAgY29tbWFuZDogY2VwaCBhdXRoIGdldC1vci1jcmVhdGUgY2xpZW50LmNzaS1j - ZXBoZnMtcHJvdmlzaW9uZXIgbW9uICdhbGxvdyByJyBtZ3IgJ2FsbG93IHJ3JyBvc2QgJ2FsbG93 - IHJ3IHRhZyBjZXBoZnMgbWV0YWRhdGE9KicKICAgICAgICAiIiIKICAgICAgICBjYXBzLCBlbnRp - dHkgPSBzZWxmLmdldF9jYXBzX2FuZF9lbnRpdHkodXNlcikKICAgICAgICBjbWRfanNvbiA9IHsK - ICAgICAgICAgICAgInByZWZpeCI6ICJhdXRoIGdldC1vci1jcmVhdGUiLAogICAgICAgICAgICAi - ZW50aXR5IjogZW50aXR5LAogICAgICAgICAgICAiY2FwcyI6IFtjYXAgZm9yIGNhcF9saXN0IGlu - IGxpc3QoY2Fwcy5pdGVtcygpKSBmb3IgY2FwIGluIGNhcF9saXN0XSwKICAgICAgICAgICAgImZv - cm1hdCI6ICJqc29uIiwKICAgICAgICB9CgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5 - X3J1bjoKICAgICAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgICAgIHNlbGYuZHJ5X3J1bigK - ICAgICAgICAgICAgICAgICAgICAiY2VwaCAiCiAgICAgICAgICAgICAgICAgICAgKyBjbWRfanNv - blsicHJlZml4Il0KICAgICAgICAgICAgICAgICAgICArICIgIgogICAgICAgICAgICAgICAgICAg - ICsgY21kX2pzb25bImVudGl0eSJdCiAgICAgICAgICAgICAgICAgICAgKyAiICIKICAgICAgICAg - ICAgICAgICAgICArICIgIi5qb2luKGNtZF9qc29uWyJjYXBzIl0pCiAgICAgICAgICAgICAgICAp - LAogICAgICAgICAgICAgICAgIiIsCiAgICAgICAgICAgICkKICAgICAgICAjIGNoZWNrIGlmIHVz - ZXIgYWxyZWFkeSBleGlzdAogICAgICAgIHVzZXJfa2V5ID0gc2VsZi5jaGVja191c2VyX2V4aXN0 - KGVudGl0eSkKICAgICAgICBpZiB1c2VyX2tleSAhPSAiIjoKICAgICAgICAgICAgcmV0dXJuIHVz - ZXJfa2V5LCBmIntlbnRpdHkuc3BsaXQoJy4nLCAxKVsxXX0iCiAgICAgICAgICAgICMgZW50aXR5 - LnNwbGl0KCcuJywxKVsxXSB0byByZW5hbWUgZW50aXR5KGNsaWVudC5jc2ktcmJkLW5vZGUpIGFz - IGNzaS1yYmQtbm9kZQoKICAgICAgICByZXRfdmFsLCBqc29uX291dCwgZXJyX21zZyA9IHNlbGYu - X2NvbW1vbl9jbWRfanNvbl9nZW4oY21kX2pzb24pCiAgICAgICAgIyBpZiB0aGVyZSBpcyBhbiB1 - bnN1Y2Nlc3NmdWwgYXR0ZW1wdCwKICAgICAgICBpZiByZXRfdmFsICE9IDAgb3IgbGVuKGpzb25f - b3V0KSA9PSAwOgogICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAog - ICAgICAgICAgICAgICAgZiInYXV0aCBnZXQtb3ItY3JlYXRlIHt1c2VyfScgY29tbWFuZCBmYWls - ZWQuXG4iCiAgICAgICAgICAgICAgICBmIkVycm9yOiB7ZXJyX21zZyBpZiByZXRfdmFsICE9IDAg - ZWxzZSBzZWxmLkVNUFRZX09VVFBVVF9MSVNUfSIKICAgICAgICAgICAgKQogICAgICAgIHJldHVy - biBzdHIoanNvbl9vdXRbMF1bImtleSJdKSwgZiJ7ZW50aXR5LnNwbGl0KCcuJywgMSlbMV19Igog - ICAgICAgICMgZW50aXR5LnNwbGl0KCcuJywxKVsxXSB0byByZW5hbWUgZW50aXR5KGNsaWVudC5j - c2ktcmJkLW5vZGUpIGFzIGNzaS1yYmQtbm9kZQoKICAgIGRlZiBnZXRfY2VwaGZzX2RhdGFfcG9v - bF9kZXRhaWxzKHNlbGYpOgogICAgICAgIGNtZF9qc29uID0geyJwcmVmaXgiOiAiZnMgbHMiLCAi - Zm9ybWF0IjogImpzb24ifQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5X3J1bjoKICAg - ICAgICAgICAgcmV0dXJuIHNlbGYuZHJ5X3J1bigiY2VwaCAiICsgY21kX2pzb25bInByZWZpeCJd - KQogICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2VsZi5fY29tbW9uX2NtZF9q - c29uX2dlbihjbWRfanNvbikKICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIHVuc3VjY2Vzc2Z1bCBh - dHRlbXB0LCByZXBvcnQgYW4gZXJyb3IKICAgICAgICBpZiByZXRfdmFsICE9IDA6CiAgICAgICAg - ICAgICMgaWYgZnMgYW5kIGRhdGFfcG9vbCBhcmd1bWVudHMgYXJlIG5vdCBzZXQsIHNpbGVudGx5 - IHJldHVybgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2Vy - LmNlcGhmc19maWxlc3lzdGVtX25hbWUgPT0gIiIKICAgICAgICAgICAgICAgIGFuZCBzZWxmLl9h - cmdfcGFyc2VyLmNlcGhmc19kYXRhX3Bvb2xfbmFtZSA9PSAiIgogICAgICAgICAgICApOgogICAg - ICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICMgaWYgdXNlciBoYXMgcHJvdmlkZWQgYW55 - IG9mIHRoZQogICAgICAgICAgICAjICctLWNlcGhmcy1maWxlc3lzdGVtLW5hbWUnIG9yICctLWNl - cGhmcy1kYXRhLXBvb2wtbmFtZScgYXJndW1lbnRzLAogICAgICAgICAgICAjIHJhaXNlIGFuIGV4 - Y2VwdGlvbiBhcyB3ZSBhcmUgdW5hYmxlIHRvIHZlcmlmeSB0aGUgYXJncwogICAgICAgICAgICBy - YWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgZiInZnMgbHMn - IGNlcGggY2FsbCBmYWlsZWQgd2l0aCBlcnJvcjoge2Vycl9tc2d9IgogICAgICAgICAgICApCgog - ICAgICAgIG1hdGNoaW5nX2pzb25fb3V0ID0ge30KICAgICAgICAjIGlmICctLWNlcGhmcy1maWxl - c3lzdGVtLW5hbWUnIGFyZ3VtZW50IGlzIHByb3ZpZGVkLAogICAgICAgICMgY2hlY2sgd2hldGhl - ciB0aGUgcHJvdmlkZWQgZmlsZXN5c3RlbS1uYW1lIGV4aXN0cyBvciBub3QKICAgICAgICBpZiBz - ZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19maWxlc3lzdGVtX25hbWU6CiAgICAgICAgICAgICMgZ2V0 - IHRoZSBtYXRjaGluZyBsaXN0CiAgICAgICAgICAgIG1hdGNoaW5nX2pzb25fb3V0X2xpc3QgPSBb - CiAgICAgICAgICAgICAgICBtYXRjaGVkCiAgICAgICAgICAgICAgICBmb3IgbWF0Y2hlZCBpbiBq - c29uX291dAogICAgICAgICAgICAgICAgaWYgc3RyKG1hdGNoZWRbIm5hbWUiXSkgPT0gc2VsZi5f - YXJnX3BhcnNlci5jZXBoZnNfZmlsZXN5c3RlbV9uYW1lCiAgICAgICAgICAgIF0KICAgICAgICAg - ICAgIyB1bmFibGUgdG8gZmluZCBhIG1hdGNoaW5nIGZzLW5hbWUsIHJhaXNlIGFuIGVycm9yCiAg - ICAgICAgICAgIGlmIGxlbihtYXRjaGluZ19qc29uX291dF9saXN0KSA9PSAwOgogICAgICAgICAg - ICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAg - ICBmIkZpbGVzeXN0ZW0gcHJvdmlkZWQsICd7c2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZmlsZXN5 - c3RlbV9uYW1lfScsICIKICAgICAgICAgICAgICAgICAgICBmImlzIG5vdCBmb3VuZCBpbiB0aGUg - ZnMtbGlzdDoge1tzdHIoeFsnbmFtZSddKSBmb3IgeCBpbiBqc29uX291dF19IgogICAgICAgICAg - ICAgICAgKQogICAgICAgICAgICBtYXRjaGluZ19qc29uX291dCA9IG1hdGNoaW5nX2pzb25fb3V0 - X2xpc3RbMF0KICAgICAgICAjIGlmIGNlcGhmcyBmaWxlc3lzdGVtIG5hbWUgaXMgbm90IHByb3Zp - ZGVkLAogICAgICAgICMgdHJ5IHRvIGdldCBhIGRlZmF1bHQgZnMgbmFtZSBieSBkb2luZyB0aGUg - Zm9sbG93aW5nCiAgICAgICAgZWxzZToKICAgICAgICAgICAgIyBhLiBjaGVjayBpZiB0aGVyZSBp - cyBvbmx5IG9uZSBmaWxlc3lzdGVtIGlzIHByZXNlbnQKICAgICAgICAgICAgaWYgbGVuKGpzb25f - b3V0KSA9PSAxOgogICAgICAgICAgICAgICAgbWF0Y2hpbmdfanNvbl9vdXQgPSBqc29uX291dFsw - XQogICAgICAgICAgICAjIGIuIG9yIGVsc2UsIGNoZWNrIGlmIGRhdGFfcG9vbCBuYW1lIGlzIHBy - b3ZpZGVkCiAgICAgICAgICAgIGVsaWYgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9wb29s - X25hbWU6CiAgICAgICAgICAgICAgICAjIGFuZCBpZiBwcmVzZW50LCBjaGVjayB3aGV0aGVyIHRo - ZXJlIGV4aXN0cyBhIGZzIHdoaWNoIGhhcyB0aGUgZGF0YV9wb29sCiAgICAgICAgICAgICAgICBm - b3IgZWFjaEogaW4ganNvbl9vdXQ6CiAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fYXJnX3Bh - cnNlci5jZXBoZnNfZGF0YV9wb29sX25hbWUgaW4gZWFjaEpbImRhdGFfcG9vbHMiXToKICAgICAg - ICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdfanNvbl9vdXQgPSBlYWNoSgogICAgICAgICAgICAg - ICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIyBpZiB0aGVyZSBpcyBubyBtYXRjaGlu - ZyBmcyBleGlzdHMsIHRoYXQgbWVhbnMgcHJvdmlkZWQgZGF0YV9wb29sIG5hbWUgaXMgaW52YWxp - ZAogICAgICAgICAgICAgICAgaWYgbm90IG1hdGNoaW5nX2pzb25fb3V0OgogICAgICAgICAgICAg - ICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICAg - ICAgICAgIGYiUHJvdmlkZWQgZGF0YV9wb29sIG5hbWUsIHtzZWxmLl9hcmdfcGFyc2VyLmNlcGhm - c19kYXRhX3Bvb2xfbmFtZX0sIgogICAgICAgICAgICAgICAgICAgICAgICAiIGRvZXMgbm90IGV4 - aXN0cyIKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICMgYy4gaWYgbm90aGluZyBp - cyBzZXQgYW5kIGNvdWxkbid0IGZpbmQgYSBkZWZhdWx0LAogICAgICAgICAgICBlbHNlOgogICAg - ICAgICAgICAgICAgIyBqdXN0IHJldHVybiBzaWxlbnRseQogICAgICAgICAgICAgICAgcmV0dXJu - CgogICAgICAgIGlmIG1hdGNoaW5nX2pzb25fb3V0OgogICAgICAgICAgICBzZWxmLl9hcmdfcGFy - c2VyLmNlcGhmc19maWxlc3lzdGVtX25hbWUgPSBzdHIobWF0Y2hpbmdfanNvbl9vdXRbIm5hbWUi - XSkKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfbWV0YWRhdGFfcG9vbF9uYW1l - ID0gc3RyKAogICAgICAgICAgICAgICAgbWF0Y2hpbmdfanNvbl9vdXRbIm1ldGFkYXRhX3Bvb2wi - XQogICAgICAgICAgICApCgogICAgICAgIGlmIGlzaW5zdGFuY2UobWF0Y2hpbmdfanNvbl9vdXRb - ImRhdGFfcG9vbHMiXSwgbGlzdCk6CiAgICAgICAgICAgICMgaWYgdGhlIHVzZXIgaGFzIGFscmVh - ZHkgcHJvdmlkZWQgZGF0YS1wb29sLW5hbWUsCiAgICAgICAgICAgICMgdGhyb3VnaCAtLWNlcGhm - cy1kYXRhLXBvb2wtbmFtZQogICAgICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19k - YXRhX3Bvb2xfbmFtZToKICAgICAgICAgICAgICAgICMgaWYgdGhlIHByb3ZpZGVkIG5hbWUgaXMg - bm90IG1hdGNoaW5nIHdpdGggdGhlIG9uZSBpbiB0aGUgbGlzdAogICAgICAgICAgICAgICAgaWYg - KAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2RhdGFfcG9vbF9u - YW1lCiAgICAgICAgICAgICAgICAgICAgbm90IGluIG1hdGNoaW5nX2pzb25fb3V0WyJkYXRhX3Bv - b2xzIl0KICAgICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0 - aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgZiJQcm92aWRlZCBk - YXRhLXBvb2wtbmFtZTogJ3tzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19kYXRhX3Bvb2xfbmFtZX0n - LCAiCiAgICAgICAgICAgICAgICAgICAgICAgICJkb2Vzbid0IG1hdGNoIGZyb20gdGhlIGRhdGEt - cG9vbHMgbGlzdDogIgogICAgICAgICAgICAgICAgICAgICAgICBmIntbc3RyKHgpIGZvciB4IGlu - IG1hdGNoaW5nX2pzb25fb3V0WydkYXRhX3Bvb2xzJ11dfSIKICAgICAgICAgICAgICAgICAgICAp - CiAgICAgICAgICAgICMgaWYgZGF0YV9wb29sIG5hbWUgaXMgbm90IHByb3ZpZGVkLAogICAgICAg - ICAgICAjIHRoZW4gdHJ5IHRvIGZpbmQgYSBkZWZhdWx0IGRhdGEgcG9vbCBuYW1lCiAgICAgICAg - ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAjIGlmIG5vIGRhdGFfcG9vbHMgZXhpc3QsIHNpbGVu - dGx5IHJldHVybgogICAgICAgICAgICAgICAgaWYgbGVuKG1hdGNoaW5nX2pzb25fb3V0WyJkYXRh - X3Bvb2xzIl0pID09IDA6CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICAg - ICBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19kYXRhX3Bvb2xfbmFtZSA9IHN0cigKICAgICAgICAg - ICAgICAgICAgICBtYXRjaGluZ19qc29uX291dFsiZGF0YV9wb29scyJdWzBdCiAgICAgICAgICAg - ICAgICApCiAgICAgICAgICAgICMgaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUgJ2RhdGFfcG9v - bHMnIGV4aXN0LAogICAgICAgICAgICAjIHRoZW4gd2FybiB0aGUgdXNlciB0aGF0IHdlIGFyZSB1 - c2luZyB0aGUgc2VsZWN0ZWQgbmFtZQogICAgICAgICAgICBpZiBsZW4obWF0Y2hpbmdfanNvbl9v - dXRbImRhdGFfcG9vbHMiXSkgPiAxOgogICAgICAgICAgICAgICAgcHJpbnQoCiAgICAgICAgICAg - ICAgICAgICAgIldBUk5JTkc6IE11bHRpcGxlIGRhdGEgcG9vbHMgZGV0ZWN0ZWQ6ICIKICAgICAg - ICAgICAgICAgICAgICBmIntbc3RyKHgpIGZvciB4IGluIG1hdGNoaW5nX2pzb25fb3V0WydkYXRh - X3Bvb2xzJ11dfVxuIgogICAgICAgICAgICAgICAgICAgIGYiVXNpbmcgdGhlIGRhdGEtcG9vbDog - J3tzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19kYXRhX3Bvb2xfbmFtZX0nXG4iCiAgICAgICAgICAg - ICAgICApCgogICAgZGVmIGNyZWF0ZV9jaGVja2VyS2V5KHNlbGYpOgogICAgICAgIGNtZF9qc29u - ID0gewogICAgICAgICAgICAicHJlZml4IjogImF1dGggZ2V0LW9yLWNyZWF0ZSIsCiAgICAgICAg - ICAgICJlbnRpdHkiOiBzZWxmLnJ1bl9hc191c2VyLAogICAgICAgICAgICAiY2FwcyI6IFsKICAg - ICAgICAgICAgICAgICJtb24iLAogICAgICAgICAgICAgICAgc2VsZi5NSU5fVVNFUl9DQVBfUEVS - TUlTU0lPTlNbIm1vbiJdLAogICAgICAgICAgICAgICAgIm1nciIsCiAgICAgICAgICAgICAgICBz - ZWxmLk1JTl9VU0VSX0NBUF9QRVJNSVNTSU9OU1sibWdyIl0sCiAgICAgICAgICAgICAgICAib3Nk - IiwKICAgICAgICAgICAgICAgIHNlbGYuTUlOX1VTRVJfQ0FQX1BFUk1JU1NJT05TWyJvc2QiXS5m - b3JtYXQoCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcG9vbF9wcmVm - aXgKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgICJmb3JtYXQi - OiAianNvbiIsCiAgICAgICAgfQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5X3J1bjoK - ICAgICAgICAgICAgcmV0dXJuIHNlbGYuZHJ5X3J1bigKICAgICAgICAgICAgICAgICJjZXBoICIK - ICAgICAgICAgICAgICAgICsgY21kX2pzb25bInByZWZpeCJdCiAgICAgICAgICAgICAgICArICIg - IgogICAgICAgICAgICAgICAgKyBjbWRfanNvblsiZW50aXR5Il0KICAgICAgICAgICAgICAgICsg - IiAiCiAgICAgICAgICAgICAgICArICIgIi5qb2luKGNtZF9qc29uWyJjYXBzIl0pCiAgICAgICAg - ICAgICkKICAgICAgICByZXRfdmFsLCBqc29uX291dCwgZXJyX21zZyA9IHNlbGYuX2NvbW1vbl9j - bWRfanNvbl9nZW4oY21kX2pzb24pCiAgICAgICAgIyBpZiB0aGVyZSBpcyBhbiB1bnN1Y2Nlc3Nm - dWwgYXR0ZW1wdCwKICAgICAgICBpZiByZXRfdmFsICE9IDAgb3IgbGVuKGpzb25fb3V0KSA9PSAw - OgogICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAg - ICAgICAgZiInYXV0aCBnZXQtb3ItY3JlYXRlIHtzZWxmLnJ1bl9hc191c2VyfScgY29tbWFuZCBm - YWlsZWRcbiIKICAgICAgICAgICAgICAgIGYiRXJyb3I6IHtlcnJfbXNnIGlmIHJldF92YWwgIT0g - MCBlbHNlIHNlbGYuRU1QVFlfT1VUUFVUX0xJU1R9IgogICAgICAgICAgICApCiAgICAgICAgcmV0 - dXJuIHN0cihqc29uX291dFswXVsia2V5Il0pCgogICAgZGVmIGdldF9jZXBoX2Rhc2hib2FyZF9s - aW5rKHNlbGYpOgogICAgICAgIGNtZF9qc29uID0geyJwcmVmaXgiOiAibWdyIHNlcnZpY2VzIiwg - ImZvcm1hdCI6ICJqc29uIn0KICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLmRyeV9ydW46CiAg - ICAgICAgICAgIHJldHVybiBzZWxmLmRyeV9ydW4oImNlcGggIiArIGNtZF9qc29uWyJwcmVmaXgi - XSkKICAgICAgICByZXRfdmFsLCBqc29uX291dCwgXyA9IHNlbGYuX2NvbW1vbl9jbWRfanNvbl9n - ZW4oY21kX2pzb24pCiAgICAgICAgIyBpZiB0aGVyZSBpcyBhbiB1bnN1Y2Nlc3NmdWwgYXR0ZW1w - dCwKICAgICAgICBpZiByZXRfdmFsICE9IDAgb3IgbGVuKGpzb25fb3V0KSA9PSAwOgogICAgICAg - ICAgICByZXR1cm4gTm9uZQogICAgICAgIGlmICJkYXNoYm9hcmQiIG5vdCBpbiBqc29uX291dDoK - ICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICByZXR1cm4ganNvbl9vdXRbImRhc2hib2Fy - ZCJdCgogICAgZGVmIGNyZWF0ZV9yZ3dfYWRtaW5fb3BzX3VzZXIoc2VsZik6CiAgICAgICAgY21k - ID0gWwogICAgICAgICAgICAicmFkb3Nndy1hZG1pbiIsCiAgICAgICAgICAgICJ1c2VyIiwKICAg - ICAgICAgICAgImNyZWF0ZSIsCiAgICAgICAgICAgICItLXVpZCIsCiAgICAgICAgICAgIHNlbGYu - RVhURVJOQUxfUkdXX0FETUlOX09QU19VU0VSX05BTUUsCiAgICAgICAgICAgICItLWRpc3BsYXkt - bmFtZSIsCiAgICAgICAgICAgICJSb29rIFJHVyBBZG1pbiBPcHMgdXNlciIsCiAgICAgICAgICAg - ICItLWNhcHMiLAogICAgICAgICAgICAiYnVja2V0cz0qO3VzZXJzPSo7dXNhZ2U9cmVhZDttZXRh - ZGF0YT1yZWFkO3pvbmU9cmVhZCIsCiAgICAgICAgICAgICItLXJndy1yZWFsbSIsCiAgICAgICAg - ICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3JlYWxtX25hbWUsCiAgICAgICAgICAgICItLXJndy16 - b25lZ3JvdXAiLAogICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJnd196b25lZ3JvdXBfbmFt - ZSwKICAgICAgICAgICAgIi0tcmd3LXpvbmUiLAogICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2Vy - LnJnd196b25lX25hbWUsCiAgICAgICAgXQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5 - X3J1bjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZHJ5X3J1bigiY2VwaCAiICsgIiAiLmpvaW4o - Y21kKSkKICAgICAgICB0cnk6CiAgICAgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tf - b3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICBleGNlcHQgc3VicHJv - Y2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXhlY0VycjoKICAgICAgICAgICAgIyBpZiB0aGUg - dXNlciBhbHJlYWR5IGV4aXN0cywgd2UganVzdCBxdWVyeSBpdAogICAgICAgICAgICBpZiBleGVj - RXJyLnJldHVybmNvZGUgPT0gZXJybm8uRUVYSVNUOgogICAgICAgICAgICAgICAgY21kID0gWwog - ICAgICAgICAgICAgICAgICAgICJyYWRvc2d3LWFkbWluIiwKICAgICAgICAgICAgICAgICAgICAi - dXNlciIsCiAgICAgICAgICAgICAgICAgICAgImluZm8iLAogICAgICAgICAgICAgICAgICAgICIt - LXVpZCIsCiAgICAgICAgICAgICAgICAgICAgc2VsZi5FWFRFUk5BTF9SR1dfQURNSU5fT1BTX1VT - RVJfTkFNRSwKICAgICAgICAgICAgICAgICAgICAiLS1yZ3ctcmVhbG0iLAogICAgICAgICAgICAg - ICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3JlYWxtX25hbWUsCiAgICAgICAgICAgICAgICAg - ICAgIi0tcmd3LXpvbmVncm91cCIsCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNl - ci5yZ3dfem9uZWdyb3VwX25hbWUsCiAgICAgICAgICAgICAgICAgICAgIi0tcmd3LXpvbmUiLAog - ICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pvbmVfbmFtZSwKICAgICAg - ICAgICAgICAgIF0KICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICBvdXRw - dXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUp - CiAgICAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMg - ZXhlY0VycjoKICAgICAgICAgICAgICAgICAgICBlcnJfbXNnID0gKAogICAgICAgICAgICAgICAg - ICAgICAgICBmImZhaWxlZCB0byBleGVjdXRlIGNvbW1hbmQge2NtZH0uIE91dHB1dDoge2V4ZWNF - cnIub3V0cHV0fS4gIgogICAgICAgICAgICAgICAgICAgICAgICBmIkNvZGU6IHtleGVjRXJyLnJl - dHVybmNvZGV9LiBFcnJvcjoge2V4ZWNFcnIuc3RkZXJyfSIKICAgICAgICAgICAgICAgICAgICAp - CiAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShlcnJfbXNnKQogICAgICAgICAg - ICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBGYWxzZSwgIi0xIgogICAgICAgICAgICBlbHNl - OgogICAgICAgICAgICAgICAgZXJyX21zZyA9ICgKICAgICAgICAgICAgICAgICAgICBmImZhaWxl - ZCB0byBleGVjdXRlIGNvbW1hbmQge2NtZH0uIE91dHB1dDoge2V4ZWNFcnIub3V0cHV0fS4gIgog - ICAgICAgICAgICAgICAgICAgIGYiQ29kZToge2V4ZWNFcnIucmV0dXJuY29kZX0uIEVycm9yOiB7 - ZXhlY0Vyci5zdGRlcnJ9IgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgc3lzLnN0 - ZGVyci53cml0ZShlcnJfbXNnKQogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIEZh - bHNlLCAiLTEiCgogICAgICAgICMgaWYgaXQgaXMgcHl0aG9uMiwgZG9uJ3QgY2hlY2sgZm9yIGNl - cGggdmVyc2lvbiBmb3IgYWRkaW5nIGBpbmZvPXJlYWRgIGNhcChyZ3dfdmFsaWRhdGlvbikKICAg - ICAgICBpZiBzeXMudmVyc2lvbl9pbmZvLm1ham9yIDwgMzoKICAgICAgICAgICAganNvbm91dHB1 - dCA9IGpzb24ubG9hZHMob3V0cHV0KQogICAgICAgICAgICByZXR1cm4gKAogICAgICAgICAgICAg - ICAganNvbm91dHB1dFsia2V5cyJdWzBdWyJhY2Nlc3Nfa2V5Il0sCiAgICAgICAgICAgICAgICBq - c29ub3V0cHV0WyJrZXlzIl1bMF1bInNlY3JldF9rZXkiXSwKICAgICAgICAgICAgICAgIEZhbHNl - LAogICAgICAgICAgICAgICAgIiIsCiAgICAgICAgICAgICkKCiAgICAgICAgIyBzZXBhcmF0ZWx5 - IGFkZCBpbmZvPXJlYWQgY2FwcyBmb3Igcmd3LWVuZHBvaW50IGlwIHZhbGlkYXRpb24KICAgICAg - ICBpbmZvX2NhcF9zdXBwb3J0ZWQgPSBUcnVlCiAgICAgICAgY21kID0gWwogICAgICAgICAgICAi - cmFkb3Nndy1hZG1pbiIsCiAgICAgICAgICAgICJjYXBzIiwKICAgICAgICAgICAgImFkZCIsCiAg - ICAgICAgICAgICItLXVpZCIsCiAgICAgICAgICAgIHNlbGYuRVhURVJOQUxfUkdXX0FETUlOX09Q - U19VU0VSX05BTUUsCiAgICAgICAgICAgICItLWNhcHMiLAogICAgICAgICAgICAiaW5mbz1yZWFk - IiwKICAgICAgICAgICAgIi0tcmd3LXJlYWxtIiwKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNl - ci5yZ3dfcmVhbG1fbmFtZSwKICAgICAgICAgICAgIi0tcmd3LXpvbmVncm91cCIsCiAgICAgICAg - ICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pvbmVncm91cF9uYW1lLAogICAgICAgICAgICAiLS1y - Z3ctem9uZSIsCiAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pvbmVfbmFtZSwKICAg - ICAgICBdCiAgICAgICAgdHJ5OgogICAgICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNr - X291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgZXhjZXB0IHN1YnBy - b2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGV4ZWNFcnI6CiAgICAgICAgICAgICMgaWYgdGhl - IGNlcGggdmVyc2lvbiBub3Qgc3VwcG9ydGVkIGZvciBhZGRpbmcgYGluZm89cmVhZGAgY2FwKHJn - d192YWxpZGF0aW9uKQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAiY291bGQgbm90 - IGFkZCBjYXBzOiB1bmFibGUgdG8gYWRkIGNhcHM6IGluZm89cmVhZFxuIgogICAgICAgICAgICAg - ICAgaW4gZXhlY0Vyci5zdGRlcnIuZGVjb2RlKCJ1dGYtOCIpCiAgICAgICAgICAgICAgICBhbmQg - ZXhlY0Vyci5yZXR1cm5jb2RlID09IDI0NAogICAgICAgICAgICApOgogICAgICAgICAgICAgICAg - aW5mb19jYXBfc3VwcG9ydGVkID0gRmFsc2UKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAg - ICAgIGVycl9tc2cgPSAoCiAgICAgICAgICAgICAgICAgICAgZiJmYWlsZWQgdG8gZXhlY3V0ZSBj - b21tYW5kIHtjbWR9LiBPdXRwdXQ6IHtleGVjRXJyLm91dHB1dH0uICIKICAgICAgICAgICAgICAg - ICAgICBmIkNvZGU6IHtleGVjRXJyLnJldHVybmNvZGV9LiBFcnJvcjoge2V4ZWNFcnIuc3RkZXJy - fSIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZXJy - X21zZykKICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBOb25lLCBGYWxzZSwgIi0xIgoKICAg - ICAgICBqc29ub3V0cHV0ID0ganNvbi5sb2FkcyhvdXRwdXQpCiAgICAgICAgcmV0dXJuICgKICAg - ICAgICAgICAganNvbm91dHB1dFsia2V5cyJdWzBdWyJhY2Nlc3Nfa2V5Il0sCiAgICAgICAgICAg - IGpzb25vdXRwdXRbImtleXMiXVswXVsic2VjcmV0X2tleSJdLAogICAgICAgICAgICBpbmZvX2Nh - cF9zdXBwb3J0ZWQsCiAgICAgICAgICAgICIiLAogICAgICAgICkKCiAgICBkZWYgdmFsaWRhdGVf - cmJkX3Bvb2woc2VsZik6CiAgICAgICAgaWYgbm90IHNlbGYuY2x1c3Rlci5wb29sX2V4aXN0cyhz - ZWxmLl9hcmdfcGFyc2VyLnJiZF9kYXRhX3Bvb2xfbmFtZSk6CiAgICAgICAgICAgIHJhaXNlIEV4 - ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAgICAgICBmIlRoZSBwcm92aWRlZCBw - b29sLCAne3NlbGYuX2FyZ19wYXJzZXIucmJkX2RhdGFfcG9vbF9uYW1lfScsIGRvZXMgbm90IGV4 - aXN0IgogICAgICAgICAgICApCgogICAgZGVmIHZhbGlkYXRlX3JhZG9zX25hbWVzcGFjZShzZWxm - KToKICAgICAgICByYmRfcG9vbF9uYW1lID0gc2VsZi5fYXJnX3BhcnNlci5yYmRfZGF0YV9wb29s - X25hbWUKICAgICAgICByYWRvc19uYW1lc3BhY2UgPSBzZWxmLl9hcmdfcGFyc2VyLnJhZG9zX25h - bWVzcGFjZQogICAgICAgIGlmIHJhZG9zX25hbWVzcGFjZSA9PSAiIjoKICAgICAgICAgICAgcmV0 - dXJuCiAgICAgICAgcmJkX2luc3QgPSByYmQuUkJEKCkKICAgICAgICBpb2N0eCA9IHNlbGYuY2x1 - c3Rlci5vcGVuX2lvY3R4KHJiZF9wb29sX25hbWUpCiAgICAgICAgaWYgcmJkX2luc3QubmFtZXNw - YWNlX2V4aXN0cyhpb2N0eCwgcmFkb3NfbmFtZXNwYWNlKSBpcyBGYWxzZToKICAgICAgICAgICAg - cmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgIGYiVGhlIHBy - b3ZpZGVkIHJhZG9zIE5hbWVzcGFjZSwgJ3tyYWRvc19uYW1lc3BhY2V9JywgIgogICAgICAgICAg - ICAgICAgZiJpcyBub3QgZm91bmQgaW4gdGhlIHBvb2wgJ3tyYmRfcG9vbF9uYW1lfSciCiAgICAg - ICAgICAgICkKCiAgICBkZWYgZ2V0X29yX2NyZWF0ZV9zdWJ2b2x1bWVfZ3JvdXAoc2VsZiwgc3Vi - dm9sdW1lX2dyb3VwLCBjZXBoZnNfZmlsZXN5c3RlbV9uYW1lKToKICAgICAgICBjbWQgPSBbCiAg - ICAgICAgICAgICJjZXBoIiwKICAgICAgICAgICAgImZzIiwKICAgICAgICAgICAgInN1YnZvbHVt - ZWdyb3VwIiwKICAgICAgICAgICAgImdldHBhdGgiLAogICAgICAgICAgICBjZXBoZnNfZmlsZXN5 - c3RlbV9uYW1lLAogICAgICAgICAgICBzdWJ2b2x1bWVfZ3JvdXAsCiAgICAgICAgXQogICAgICAg - IHRyeToKICAgICAgICAgICAgXyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJy - PXN1YnByb2Nlc3MuUElQRSkKICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNz - RXJyb3I6CiAgICAgICAgICAgIGNtZCA9IFsKICAgICAgICAgICAgICAgICJjZXBoIiwKICAgICAg - ICAgICAgICAgICJmcyIsCiAgICAgICAgICAgICAgICAic3Vidm9sdW1lZ3JvdXAiLAogICAgICAg - ICAgICAgICAgImNyZWF0ZSIsCiAgICAgICAgICAgICAgICBjZXBoZnNfZmlsZXN5c3RlbV9uYW1l - LAogICAgICAgICAgICAgICAgc3Vidm9sdW1lX2dyb3VwLAogICAgICAgICAgICBdCiAgICAgICAg - ICAgIHRyeToKICAgICAgICAgICAgICAgIF8gPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQs - IHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNh - bGxlZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVF - eGNlcHRpb24oCiAgICAgICAgICAgICAgICAgICAgZiJzdWJ2b2x1bWUgZ3JvdXAge3N1YnZvbHVt - ZV9ncm91cH0gaXMgbm90IGFibGUgdG8gZ2V0IGNyZWF0ZWQiCiAgICAgICAgICAgICAgICApCgog - ICAgZGVmIHBpbl9zdWJ2b2x1bWUoCiAgICAgICAgc2VsZiwgc3Vidm9sdW1lX2dyb3VwLCBjZXBo - ZnNfZmlsZXN5c3RlbV9uYW1lLCBwaW5fdHlwZSwgcGluX3NldHRpbmcKICAgICk6CiAgICAgICAg - Y21kID0gWwogICAgICAgICAgICAiY2VwaCIsCiAgICAgICAgICAgICJmcyIsCiAgICAgICAgICAg - ICJzdWJ2b2x1bWVncm91cCIsCiAgICAgICAgICAgICJwaW4iLAogICAgICAgICAgICBjZXBoZnNf - ZmlsZXN5c3RlbV9uYW1lLAogICAgICAgICAgICBzdWJ2b2x1bWVfZ3JvdXAsCiAgICAgICAgICAg - IHBpbl90eXBlLAogICAgICAgICAgICBwaW5fc2V0dGluZywKICAgICAgICBdCiAgICAgICAgdHJ5 - OgogICAgICAgICAgICBfID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3Vi - cHJvY2Vzcy5QSVBFKQogICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJv - cjoKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAg - ICAgICAgIGYic3Vidm9sdW1lIGdyb3VwIHtzdWJ2b2x1bWVfZ3JvdXB9IGlzIG5vdCBhYmxlIHRv - IGdldCBwaW5uZWQiCiAgICAgICAgICAgICkKCiAgICBkZWYgZ2V0X3Jnd19mc2lkKHNlbGYsIGJh - c2VfdXJsLCB2ZXJpZnkpOgogICAgICAgIGFjY2Vzc19rZXkgPSBzZWxmLm91dF9tYXBbIlJHV19B - RE1JTl9PUFNfVVNFUl9BQ0NFU1NfS0VZIl0KICAgICAgICBzZWNyZXRfa2V5ID0gc2VsZi5vdXRf - bWFwWyJSR1dfQURNSU5fT1BTX1VTRVJfU0VDUkVUX0tFWSJdCiAgICAgICAgcmd3X2VuZHBvaW50 - ID0gc2VsZi5fYXJnX3BhcnNlci5yZ3dfZW5kcG9pbnQKICAgICAgICBiYXNlX3VybCA9IGJhc2Vf - dXJsICsgIjovLyIgKyByZ3dfZW5kcG9pbnQgKyAiL2FkbWluL2luZm8/IgogICAgICAgIHBhcmFt - cyA9IHsiZm9ybWF0IjogImpzb24ifQogICAgICAgIHJlcXVlc3RfdXJsID0gYmFzZV91cmwgKyB1 - cmxsaWIucGFyc2UudXJsZW5jb2RlKHBhcmFtcykKCiAgICAgICAgdHJ5OgogICAgICAgICAgICBy - ID0gcmVxdWVzdHMuZ2V0KAogICAgICAgICAgICAgICAgcmVxdWVzdF91cmwsCiAgICAgICAgICAg - ICAgICBhdXRoPVMzQXV0aChhY2Nlc3Nfa2V5LCBzZWNyZXRfa2V5LCByZ3dfZW5kcG9pbnQpLAog - ICAgICAgICAgICAgICAgdmVyaWZ5PXZlcmlmeSwKICAgICAgICAgICAgKQogICAgICAgIGV4Y2Vw - dCByZXF1ZXN0cy5leGNlcHRpb25zLlRpbWVvdXQ6CiAgICAgICAgICAgIHN5cy5zdGRlcnIud3Jp - dGUoCiAgICAgICAgICAgICAgICBmImludmFsaWQgZW5kcG9pbnQ6LCBub3QgYWJsZSB0byBjYWxs - IGFkbWluLW9wcyBhcGl7cmd3X2VuZHBvaW50fSIKICAgICAgICAgICAgKQogICAgICAgICAgICBy - ZXR1cm4gIiIsICItMSIKICAgICAgICByMSA9IHIuanNvbigpCiAgICAgICAgaWYgcjEgaXMgTm9u - ZSBvciByMS5nZXQoImluZm8iKSBpcyBOb25lOgogICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl - KAogICAgICAgICAgICAgICAgZiJUaGUgcHJvdmlkZWQgcmd3IEVuZHBvaW50LCAne3NlbGYuX2Fy - Z19wYXJzZXIucmd3X2VuZHBvaW50fScsIGlzIGludmFsaWQuIgogICAgICAgICAgICApCiAgICAg - ICAgICAgIHJldHVybiAoCiAgICAgICAgICAgICAgICAiIiwKICAgICAgICAgICAgICAgICItMSIs - CiAgICAgICAgICAgICkKCiAgICAgICAgcmV0dXJuIHIxWyJpbmZvIl1bInN0b3JhZ2VfYmFja2Vu - ZHMiXVswXVsiY2x1c3Rlcl9pZCJdLCAiIgoKICAgIGRlZiB2YWxpZGF0ZV9yZ3dfZW5kcG9pbnQo - c2VsZiwgaW5mb19jYXBfc3VwcG9ydGVkKToKICAgICAgICAjIGlmIHRoZSAnY2x1c3RlcicgaW5z - dGFuY2UgaXMgYSBkdW1teSBvbmUsCiAgICAgICAgIyBkb24ndCB0cnkgdG8gcmVhY2ggb3V0IHRv - IHRoZSBlbmRwb2ludAogICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5jbHVzdGVyLCBEdW1teVJh - ZG9zKToKICAgICAgICAgICAgcmV0dXJuCgogICAgICAgIHJnd19lbmRwb2ludCA9IHNlbGYuX2Fy - Z19wYXJzZXIucmd3X2VuZHBvaW50CgogICAgICAgICMgdmFsaWRhdGUgcmd3IGVuZHBvaW50IG9u - bHkgaWYgaXAgYWRkcmVzcyBpcyBwYXNzZWQKICAgICAgICBpcF90eXBlID0gc2VsZi5faW52YWxp - ZF9lbmRwb2ludChyZ3dfZW5kcG9pbnQpCgogICAgICAgICMgY2hlY2sgaWYgdGhlIHJndyBlbmRw - b2ludCBpcyByZWFjaGFibGUKICAgICAgICBjZXJ0ID0gTm9uZQogICAgICAgIGlmIG5vdCBzZWxm - Ll9hcmdfcGFyc2VyLnJnd19za2lwX3RscyBhbmQgc2VsZi52YWxpZGF0ZV9yZ3dfZW5kcG9pbnRf - dGxzX2NlcnQoKToKICAgICAgICAgICAgY2VydCA9IHNlbGYuX2FyZ19wYXJzZXIucmd3X3Rsc19j - ZXJ0X3BhdGgKICAgICAgICBiYXNlX3VybCwgdmVyaWZ5LCBlcnIgPSBzZWxmLmVuZHBvaW50X2Rp - YWwocmd3X2VuZHBvaW50LCBpcF90eXBlLCBjZXJ0PWNlcnQpCiAgICAgICAgaWYgZXJyICE9ICIi - OgogICAgICAgICAgICByZXR1cm4gIi0xIgoKICAgICAgICAjIGNoZWNrIGlmIHRoZSByZ3cgZW5k - cG9pbnQgYmVsb25ncyB0byB0aGUgc2FtZSBjbHVzdGVyCiAgICAgICAgIyBvbmx5IGNoZWNrIGlm - IGBpbmZvYCBjYXAgaXMgc3VwcG9ydGVkCiAgICAgICAgaWYgaW5mb19jYXBfc3VwcG9ydGVkOgog - ICAgICAgICAgICBmc2lkID0gc2VsZi5nZXRfZnNpZCgpCiAgICAgICAgICAgIHJnd19mc2lkLCBl - cnIgPSBzZWxmLmdldF9yZ3dfZnNpZChiYXNlX3VybCwgdmVyaWZ5KQogICAgICAgICAgICBpZiBl - cnIgPT0gIi0xIjoKICAgICAgICAgICAgICAgIHJldHVybiAiLTEiCiAgICAgICAgICAgIGlmIGZz - aWQgIT0gcmd3X2ZzaWQ6CiAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAogICAgICAg - ICAgICAgICAgICAgIGYiVGhlIHByb3ZpZGVkIHJndyBFbmRwb2ludCwgJ3tzZWxmLl9hcmdfcGFy - c2VyLnJnd19lbmRwb2ludH0nLCBpcyBpbnZhbGlkLiBXZSBhcmUgdmFsaWRhdGluZyBieSBjYWxs - aW5nIHRoZSBhZG1pbm9wcyBhcGkgdGhyb3VnaCByZ3ctZW5kcG9pbnQgYW5kIHZhbGlkYXRpbmcg - dGhlIGNsdXN0ZXJfaWQgJ3tyZ3dfZnNpZH0nIGlzIGVxdWFsIHRvIHRoZSBjZXBoIGNsdXN0ZXIg - ZnNpZCAne2ZzaWR9JyIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHJldHVybiAi - LTEiCgogICAgICAgICMgY2hlY2sgaWYgdGhlIHJndyBlbmRwb2ludCBwb29sIGV4aXN0CiAgICAg - ICAgIyBvbmx5IHZhbGlkYXRlIGlmIHJnd19wb29sX3ByZWZpeCBpcyBwYXNzZWQgZWxzZSBpdCB3 - aWxsIHRha2UgZGVmYXVsdCB2YWx1ZSBhbmQgd2UgZG9uJ3QgY3JlYXRlIHRoZXNlIGRlZmF1bHQg - cG9vbHMKICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLnJnd19wb29sX3ByZWZpeCAhPSAiZGVm - YXVsdCI6CiAgICAgICAgICAgIHJnd19wb29sc190b192YWxpZGF0ZSA9IFsKICAgICAgICAgICAg - ICAgIGYie3NlbGYuX2FyZ19wYXJzZXIucmd3X3Bvb2xfcHJlZml4fS5yZ3cubWV0YSIsCiAgICAg - ICAgICAgICAgICAiLnJndy5yb290IiwKICAgICAgICAgICAgICAgIGYie3NlbGYuX2FyZ19wYXJz - ZXIucmd3X3Bvb2xfcHJlZml4fS5yZ3cuY29udHJvbCIsCiAgICAgICAgICAgICAgICBmIntzZWxm - Ll9hcmdfcGFyc2VyLnJnd19wb29sX3ByZWZpeH0ucmd3LmxvZyIsCiAgICAgICAgICAgIF0KICAg - ICAgICAgICAgZm9yIF9yZ3dfcG9vbF90b192YWxpZGF0ZSBpbiByZ3dfcG9vbHNfdG9fdmFsaWRh - dGU6CiAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5jbHVzdGVyLnBvb2xfZXhpc3RzKF9yZ3df - cG9vbF90b192YWxpZGF0ZSk6CiAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgK - ICAgICAgICAgICAgICAgICAgICAgICAgZiJUaGUgcHJvdmlkZWQgcG9vbCwgJ3tfcmd3X3Bvb2xf - dG9fdmFsaWRhdGV9JywgZG9lcyBub3QgZXhpc3QiCiAgICAgICAgICAgICAgICAgICAgKQogICAg - ICAgICAgICAgICAgICAgIHJldHVybiAiLTEiCgogICAgICAgIHJldHVybiAiIgoKICAgIGRlZiB2 - YWxpZGF0ZV9yZ3dfbXVsdGlzaXRlKHNlbGYsIHJnd19tdWx0aXNpdGVfY29uZmlnX25hbWUsIHJn - d19tdWx0aXNpdGVfY29uZmlnKToKICAgICAgICBpZiByZ3dfbXVsdGlzaXRlX2NvbmZpZyAhPSAi - IjoKICAgICAgICAgICAgY21kID0gWwogICAgICAgICAgICAgICAgInJhZG9zZ3ctYWRtaW4iLAog - ICAgICAgICAgICAgICAgcmd3X211bHRpc2l0ZV9jb25maWcsCiAgICAgICAgICAgICAgICAiZ2V0 - IiwKICAgICAgICAgICAgICAgICItLXJndy0iICsgcmd3X211bHRpc2l0ZV9jb25maWcsCiAgICAg - ICAgICAgICAgICByZ3dfbXVsdGlzaXRlX2NvbmZpZ19uYW1lLAogICAgICAgICAgICBdCiAgICAg - ICAgICAgIHRyeToKICAgICAgICAgICAgICAgIF8gPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChj - bWQsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNz - LkNhbGxlZFByb2Nlc3NFcnJvciBhcyBleGVjRXJyOgogICAgICAgICAgICAgICAgZXJyX21zZyA9 - ICgKICAgICAgICAgICAgICAgICAgICBmImZhaWxlZCB0byBleGVjdXRlIGNvbW1hbmQge2NtZH0u - IE91dHB1dDoge2V4ZWNFcnIub3V0cHV0fS4gIgogICAgICAgICAgICAgICAgICAgIGYiQ29kZTog - e2V4ZWNFcnIucmV0dXJuY29kZX0uIEVycm9yOiB7ZXhlY0Vyci5zdGRlcnJ9IgogICAgICAgICAg - ICAgICAgKQogICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShlcnJfbXNnKQogICAgICAg - ICAgICAgICAgcmV0dXJuICItMSIKICAgICAgICByZXR1cm4gIiIKCiAgICBkZWYgX2dlbl9vdXRw - dXRfbWFwKHNlbGYpOgogICAgICAgIGlmIHNlbGYub3V0X21hcDoKICAgICAgICAgICAgcmV0dXJu - CiAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5jbHVzdGVyX25hbWUgPSAoCiAgICAgICAgICAgIHNl - bGYuX2FyZ19wYXJzZXIuY2x1c3Rlcl9uYW1lLmxvd2VyKCkKICAgICAgICApICAjIGFsd2F5cyBj - b252ZXJ0IGNsdXN0ZXIgbmFtZSB0byBsb3dlcmNhc2UgY2hhcmFjdGVycwogICAgICAgIHNlbGYu - dmFsaWRhdGVfcmJkX3Bvb2woKQogICAgICAgIHNlbGYudmFsaWRhdGVfcmFkb3NfbmFtZXNwYWNl - KCkKICAgICAgICBzZWxmLl9leGNsdWRlZF9rZXlzLmFkZCgiQ0xVU1RFUl9OQU1FIikKICAgICAg - ICBzZWxmLmdldF9jZXBoZnNfZGF0YV9wb29sX2RldGFpbHMoKQogICAgICAgIHNlbGYub3V0X21h - cFsiTkFNRVNQQUNFIl0gPSBzZWxmLl9hcmdfcGFyc2VyLm5hbWVzcGFjZQogICAgICAgIHNlbGYu - b3V0X21hcFsiQ0xVU1RFUl9OQU1FIl0gPSBzZWxmLl9hcmdfcGFyc2VyLmNsdXN0ZXJfbmFtZQog - ICAgICAgIHNlbGYub3V0X21hcFsiUk9PS19FWFRFUk5BTF9GU0lEIl0gPSBzZWxmLmdldF9mc2lk - KCkKICAgICAgICBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxfVVNFUk5BTUUiXSA9IHNlbGYu - cnVuX2FzX3VzZXIKICAgICAgICBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxfQ0VQSF9NT05f - REFUQSJdID0gc2VsZi5nZXRfY2VwaF9leHRlcm5hbF9tb25fZGF0YSgpCiAgICAgICAgc2VsZi5v - dXRfbWFwWyJST09LX0VYVEVSTkFMX1VTRVJfU0VDUkVUIl0gPSBzZWxmLmNyZWF0ZV9jaGVja2Vy - S2V5KCkKICAgICAgICBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxfREFTSEJPQVJEX0xJTksi - XSA9IHNlbGYuZ2V0X2NlcGhfZGFzaGJvYXJkX2xpbmsoKQogICAgICAgICgKICAgICAgICAgICAg - c2VsZi5vdXRfbWFwWyJDU0lfUkJEX05PREVfU0VDUkVUIl0sCiAgICAgICAgICAgIHNlbGYub3V0 - X21hcFsiQ1NJX1JCRF9OT0RFX1NFQ1JFVF9OQU1FIl0sCiAgICAgICAgKSA9IHNlbGYuY3JlYXRl - X2NlcGhDU0lLZXlyaW5nX3VzZXIoImNsaWVudC5jc2ktcmJkLW5vZGUiKQogICAgICAgICgKICAg - ICAgICAgICAgc2VsZi5vdXRfbWFwWyJDU0lfUkJEX1BST1ZJU0lPTkVSX1NFQ1JFVCJdLAogICAg - ICAgICAgICBzZWxmLm91dF9tYXBbIkNTSV9SQkRfUFJPVklTSU9ORVJfU0VDUkVUX05BTUUiXSwK - ICAgICAgICApID0gc2VsZi5jcmVhdGVfY2VwaENTSUtleXJpbmdfdXNlcigiY2xpZW50LmNzaS1y - YmQtcHJvdmlzaW9uZXIiKQogICAgICAgIHNlbGYub3V0X21hcFsiQ0VQSEZTX1BPT0xfTkFNRSJd - ID0gc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9wb29sX25hbWUKICAgICAgICBzZWxmLm91 - dF9tYXBbCiAgICAgICAgICAgICJDRVBIRlNfTUVUQURBVEFfUE9PTF9OQU1FIgogICAgICAgIF0g - PSBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19tZXRhZGF0YV9wb29sX25hbWUKICAgICAgICBzZWxm - Lm91dF9tYXBbIkNFUEhGU19GU19OQU1FIl0gPSBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19maWxl - c3lzdGVtX25hbWUKICAgICAgICBzZWxmLm91dF9tYXBbCiAgICAgICAgICAgICJSRVNUUklDVEVE - X0FVVEhfUEVSTUlTU0lPTiIKICAgICAgICBdID0gc2VsZi5fYXJnX3BhcnNlci5yZXN0cmljdGVk - X2F1dGhfcGVybWlzc2lvbgogICAgICAgIHNlbGYub3V0X21hcFsiUkFET1NfTkFNRVNQQUNFIl0g - PSBzZWxmLl9hcmdfcGFyc2VyLnJhZG9zX25hbWVzcGFjZQogICAgICAgIHNlbGYub3V0X21hcFsi - U1VCVk9MVU1FX0dST1VQIl0gPSBzZWxmLl9hcmdfcGFyc2VyLnN1YnZvbHVtZV9ncm91cAogICAg - ICAgIHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19OT0RFX1NFQ1JFVCJdID0gIiIKICAgICAgICBz - ZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfUFJPVklTSU9ORVJfU0VDUkVUIl0gPSAiIgogICAgICAg - ICMgY3JlYXRlIENlcGhGUyBub2RlIGFuZCBwcm92aXNpb25lciBrZXlyaW5nIG9ubHkgd2hlbiBN - RFMgZXhpc3RzCiAgICAgICAgaWYgc2VsZi5vdXRfbWFwWyJDRVBIRlNfRlNfTkFNRSJdIGFuZCBz - ZWxmLm91dF9tYXBbIkNFUEhGU19QT09MX05BTUUiXToKICAgICAgICAgICAgKAogICAgICAgICAg - ICAgICAgc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZTX05PREVfU0VDUkVUIl0sCiAgICAgICAgICAg - ICAgICBzZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfTk9ERV9TRUNSRVRfTkFNRSJdLAogICAgICAg - ICAgICApID0gc2VsZi5jcmVhdGVfY2VwaENTSUtleXJpbmdfdXNlcigiY2xpZW50LmNzaS1jZXBo - ZnMtbm9kZSIpCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIHNlbGYub3V0X21hcFsiQ1NJ - X0NFUEhGU19QUk9WSVNJT05FUl9TRUNSRVQiXSwKICAgICAgICAgICAgICAgIHNlbGYub3V0X21h - cFsiQ1NJX0NFUEhGU19QUk9WSVNJT05FUl9TRUNSRVRfTkFNRSJdLAogICAgICAgICAgICApID0g - c2VsZi5jcmVhdGVfY2VwaENTSUtleXJpbmdfdXNlcigiY2xpZW50LmNzaS1jZXBoZnMtcHJvdmlz - aW9uZXIiKQogICAgICAgICAgICAjIGNyZWF0ZSB0aGUgZGVmYXVsdCAiY3NpIiBzdWJ2b2x1bWVn - cm91cAogICAgICAgICAgICBzZWxmLmdldF9vcl9jcmVhdGVfc3Vidm9sdW1lX2dyb3VwKAogICAg - ICAgICAgICAgICAgImNzaSIsIHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2ZpbGVzeXN0ZW1fbmFt - ZQogICAgICAgICAgICApCiAgICAgICAgICAgICMgcGluIHRoZSBkZWZhdWx0ICJjc2kiIHN1YnZv - bHVtZWdyb3VwCiAgICAgICAgICAgIHNlbGYucGluX3N1YnZvbHVtZSgKICAgICAgICAgICAgICAg - ICJjc2kiLCBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19maWxlc3lzdGVtX25hbWUsICJkaXN0cmli - dXRlZCIsICIxIgogICAgICAgICAgICApCiAgICAgICAgICAgIGlmIHNlbGYub3V0X21hcFsiU1VC - Vk9MVU1FX0dST1VQIl06CiAgICAgICAgICAgICAgICBzZWxmLmdldF9vcl9jcmVhdGVfc3Vidm9s - dW1lX2dyb3VwKAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIuc3Vidm9sdW1l - X2dyb3VwLAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2ZpbGVz - eXN0ZW1fbmFtZSwKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHNlbGYucGluX3N1 - YnZvbHVtZSgKICAgICAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnN1YnZvbHVtZV9n - cm91cCwKICAgICAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19maWxlc3lz - dGVtX25hbWUsCiAgICAgICAgICAgICAgICAgICAgImRpc3RyaWJ1dGVkIiwKICAgICAgICAgICAg - ICAgICAgICAiMSIsCiAgICAgICAgICAgICAgICApCiAgICAgICAgc2VsZi5vdXRfbWFwWyJSR1df - VExTX0NFUlQiXSA9ICIiCiAgICAgICAgc2VsZi5vdXRfbWFwWyJNT05JVE9SSU5HX0VORFBPSU5U - Il0gPSAiIgogICAgICAgIHNlbGYub3V0X21hcFsiTU9OSVRPUklOR19FTkRQT0lOVF9QT1JUIl0g - PSAiIgogICAgICAgIGlmIG5vdCBzZWxmLl9hcmdfcGFyc2VyLnNraXBfbW9uaXRvcmluZ19lbmRw - b2ludDoKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgc2VsZi5vdXRfbWFwWyJNT05JVE9S - SU5HX0VORFBPSU5UIl0sCiAgICAgICAgICAgICAgICBzZWxmLm91dF9tYXBbIk1PTklUT1JJTkdf - RU5EUE9JTlRfUE9SVCJdLAogICAgICAgICAgICApID0gc2VsZi5nZXRfYWN0aXZlX2FuZF9zdGFu - ZGJ5X21ncnMoKQogICAgICAgIHNlbGYub3V0X21hcFsiUkJEX1BPT0xfTkFNRSJdID0gc2VsZi5f - YXJnX3BhcnNlci5yYmRfZGF0YV9wb29sX25hbWUKICAgICAgICBzZWxmLm91dF9tYXBbCiAgICAg - ICAgICAgICJSQkRfTUVUQURBVEFfRUNfUE9PTF9OQU1FIgogICAgICAgIF0gPSBzZWxmLnZhbGlk - YXRlX3JiZF9tZXRhZGF0YV9lY19wb29sX25hbWUoKQogICAgICAgIHNlbGYub3V0X21hcFsiUkdX - X1BPT0xfUFJFRklYIl0gPSBzZWxmLl9hcmdfcGFyc2VyLnJnd19wb29sX3ByZWZpeAogICAgICAg - IHNlbGYub3V0X21hcFsiUkdXX0VORFBPSU5UIl0gPSAiIgogICAgICAgIGlmIHNlbGYuX2FyZ19w - YXJzZXIucmd3X2VuZHBvaW50OgogICAgICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLmRyeV9y - dW46CiAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9yZ3dfYWRtaW5fb3BzX3VzZXIoKQogICAg - ICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIHNl - bGYuX2FyZ19wYXJzZXIucmd3X3JlYWxtX25hbWUgIT0gIiIKICAgICAgICAgICAgICAgICAgICBh - bmQgc2VsZi5fYXJnX3BhcnNlci5yZ3dfem9uZWdyb3VwX25hbWUgIT0gIiIKICAgICAgICAgICAg - ICAgICAgICBhbmQgc2VsZi5fYXJnX3BhcnNlci5yZ3dfem9uZV9uYW1lICE9ICIiCiAgICAgICAg - ICAgICAgICApOgogICAgICAgICAgICAgICAgICAgIGVyciA9IHNlbGYudmFsaWRhdGVfcmd3X211 - bHRpc2l0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcmVh - bG1fbmFtZSwgInJlYWxtIgogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAg - ICBlcnIgPSBzZWxmLnZhbGlkYXRlX3Jnd19tdWx0aXNpdGUoCiAgICAgICAgICAgICAgICAgICAg - ICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pvbmVncm91cF9uYW1lLCAiem9uZWdyb3VwIgogICAg - ICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICBlcnIgPSBzZWxmLnZhbGlkYXRl - X3Jnd19tdWx0aXNpdGUoCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIu - cmd3X3pvbmVfbmFtZSwgInpvbmUiCiAgICAgICAgICAgICAgICAgICAgKQoKICAgICAgICAgICAg - ICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJnd19yZWFsbV9u - YW1lID09ICIiCiAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pv - bmVncm91cF9uYW1lID09ICIiCiAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYuX2FyZ19wYXJz - ZXIucmd3X3pvbmVfbmFtZSA9PSAiIgogICAgICAgICAgICAgICAgKSBvciAoCiAgICAgICAgICAg - ICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcmVhbG1fbmFtZSAhPSAiIgogICAgICAgICAg - ICAgICAgICAgIGFuZCBzZWxmLl9hcmdfcGFyc2VyLnJnd196b25lZ3JvdXBfbmFtZSAhPSAiIgog - ICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLl9hcmdfcGFyc2VyLnJnd196b25lX25hbWUgIT0g - IiIKICAgICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAg - ICAgICAgICAgICBzZWxmLm91dF9tYXBbIlJHV19BRE1JTl9PUFNfVVNFUl9BQ0NFU1NfS0VZIl0s - CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYub3V0X21hcFsiUkdXX0FETUlOX09QU19VU0VS - X1NFQ1JFVF9LRVkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19jYXBfc3VwcG9ydGVk - LAogICAgICAgICAgICAgICAgICAgICAgICBlcnIsCiAgICAgICAgICAgICAgICAgICAgKSA9IHNl - bGYuY3JlYXRlX3Jnd19hZG1pbl9vcHNfdXNlcigpCiAgICAgICAgICAgICAgICAgICAgZXJyID0g - c2VsZi52YWxpZGF0ZV9yZ3dfZW5kcG9pbnQoaW5mb19jYXBfc3VwcG9ydGVkKQogICAgICAgICAg - ICAgICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIucmd3X3Rsc19jZXJ0X3BhdGg6CiAgICAgICAg - ICAgICAgICAgICAgICAgIHNlbGYub3V0X21hcFsKICAgICAgICAgICAgICAgICAgICAgICAgICAg - ICJSR1dfVExTX0NFUlQiCiAgICAgICAgICAgICAgICAgICAgICAgIF0gPSBzZWxmLnZhbGlkYXRl - X3Jnd19lbmRwb2ludF90bHNfY2VydCgpCiAgICAgICAgICAgICAgICAgICAgIyBpZiB0aGVyZSBp - cyBubyBlcnJvciwgc2V0IHRoZSBSR1dfRU5EUE9JTlQKICAgICAgICAgICAgICAgICAgICBpZiBl - cnIgIT0gIi0xIjoKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vdXRfbWFwWyJSR1dfRU5E - UE9JTlQiXSA9IHNlbGYuX2FyZ19wYXJzZXIucmd3X2VuZHBvaW50CiAgICAgICAgICAgICAgICBl - bHNlOgogICAgICAgICAgICAgICAgICAgIGVyciA9ICJQbGVhc2UgcHJvdmlkZSBhbGwgdGhlIFJH - VyBtdWx0aXNpdGUgcGFyYW1ldGVycyBvciBub25lIG9mIHRoZW0iCiAgICAgICAgICAgICAgICAg - ICAgc3lzLnN0ZGVyci53cml0ZShlcnIpCgogICAgZGVmIGdlbl9zaGVsbF9vdXQoc2VsZik6CiAg - ICAgICAgc2VsZi5fZ2VuX291dHB1dF9tYXAoKQogICAgICAgIHNoT3V0SU8gPSBTdHJpbmdJTygp - CiAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5vdXRfbWFwLml0ZW1zKCk6CiAgICAgICAgICAgIGlm - IHYgYW5kIGsgbm90IGluIHNlbGYuX2V4Y2x1ZGVkX2tleXM6CiAgICAgICAgICAgICAgICBzaE91 - dElPLndyaXRlKGYiZXhwb3J0IHtrfT17dn17TElORVNFUH0iKQogICAgICAgIHNoT3V0ID0gc2hP - dXRJTy5nZXR2YWx1ZSgpCiAgICAgICAgc2hPdXRJTy5jbG9zZSgpCiAgICAgICAgcmV0dXJuIHNo - T3V0CgogICAgZGVmIGdlbl9qc29uX291dChzZWxmKToKICAgICAgICBzZWxmLl9nZW5fb3V0cHV0 - X21hcCgpCiAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5kcnlfcnVuOgogICAgICAgICAgICBy - ZXR1cm4gIiIKICAgICAgICBqc29uX291dCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAg - ICAgIm5hbWUiOiAicm9vay1jZXBoLW1vbi1lbmRwb2ludHMiLAogICAgICAgICAgICAgICAgImtp - bmQiOiAiQ29uZmlnTWFwIiwKICAgICAgICAgICAgICAgICJkYXRhIjogewogICAgICAgICAgICAg - ICAgICAgICJkYXRhIjogc2VsZi5vdXRfbWFwWyJST09LX0VYVEVSTkFMX0NFUEhfTU9OX0RBVEEi - XSwKICAgICAgICAgICAgICAgICAgICAibWF4TW9uSWQiOiAiMCIsCiAgICAgICAgICAgICAgICAg - ICAgIm1hcHBpbmciOiAie30iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAg - ICAgICAgICAgewogICAgICAgICAgICAgICAgIm5hbWUiOiAicm9vay1jZXBoLW1vbiIsCiAgICAg - ICAgICAgICAgICAia2luZCI6ICJTZWNyZXQiLAogICAgICAgICAgICAgICAgImRhdGEiOiB7CiAg - ICAgICAgICAgICAgICAgICAgImFkbWluLXNlY3JldCI6ICJhZG1pbi1zZWNyZXQiLAogICAgICAg - ICAgICAgICAgICAgICJmc2lkIjogc2VsZi5vdXRfbWFwWyJST09LX0VYVEVSTkFMX0ZTSUQiXSwK - ICAgICAgICAgICAgICAgICAgICAibW9uLXNlY3JldCI6ICJtb24tc2VjcmV0IiwKICAgICAgICAg - ICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICJu - YW1lIjogInJvb2stY2VwaC1vcGVyYXRvci1jcmVkcyIsCiAgICAgICAgICAgICAgICAia2luZCI6 - ICJTZWNyZXQiLAogICAgICAgICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAg - InVzZXJJRCI6IHNlbGYub3V0X21hcFsiUk9PS19FWFRFUk5BTF9VU0VSTkFNRSJdLAogICAgICAg - ICAgICAgICAgICAgICJ1c2VyS2V5Ijogc2VsZi5vdXRfbWFwWyJST09LX0VYVEVSTkFMX1VTRVJf - U0VDUkVUIl0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIF0KCiAg - ICAgICAgIyBpZiAnTU9OSVRPUklOR19FTkRQT0lOVCcgZXhpc3RzLCB0aGVuIG9ubHkgYWRkICdt - b25pdG9yaW5nLWVuZHBvaW50JyB0byBDbHVzdGVyCiAgICAgICAgaWYgKAogICAgICAgICAgICBz - ZWxmLm91dF9tYXBbIk1PTklUT1JJTkdfRU5EUE9JTlQiXQogICAgICAgICAgICBhbmQgc2VsZi5v - dXRfbWFwWyJNT05JVE9SSU5HX0VORFBPSU5UX1BPUlQiXQogICAgICAgICk6CiAgICAgICAgICAg - IGpzb25fb3V0LmFwcGVuZCgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAi - bmFtZSI6ICJtb25pdG9yaW5nLWVuZHBvaW50IiwKICAgICAgICAgICAgICAgICAgICAia2luZCI6 - ICJDZXBoQ2x1c3RlciIsCiAgICAgICAgICAgICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAg - ICAgICAgICAgICAgICJNb25pdG9yaW5nRW5kcG9pbnQiOiBzZWxmLm91dF9tYXBbIk1PTklUT1JJ - TkdfRU5EUE9JTlQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgIk1vbml0b3JpbmdQb3J0Ijog - c2VsZi5vdXRfbWFwWyJNT05JVE9SSU5HX0VORFBPSU5UX1BPUlQiXSwKICAgICAgICAgICAgICAg - ICAgICB9LAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApCgogICAgICAgICMgaWYgJ0NT - SV9SQkRfTk9ERV9TRUNSRVQnIGV4aXN0cywgdGhlbiBvbmx5IGFkZCAncm9vay1jc2ktcmJkLXBy - b3Zpc2lvbmVyJyBTZWNyZXQKICAgICAgICBpZiAoCiAgICAgICAgICAgIHNlbGYub3V0X21hcFsi - Q1NJX1JCRF9OT0RFX1NFQ1JFVCJdCiAgICAgICAgICAgIGFuZCBzZWxmLm91dF9tYXBbIkNTSV9S - QkRfTk9ERV9TRUNSRVRfTkFNRSJdCiAgICAgICAgKToKICAgICAgICAgICAganNvbl9vdXQuYXBw - ZW5kKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogZiJyb29r - LXtzZWxmLm91dF9tYXBbJ0NTSV9SQkRfTk9ERV9TRUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAg - ICAgICAgICAgImtpbmQiOiAiU2VjcmV0IiwKICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsK - ICAgICAgICAgICAgICAgICAgICAgICAgInVzZXJJRCI6IHNlbGYub3V0X21hcFsiQ1NJX1JCRF9O - T0RFX1NFQ1JFVF9OQU1FIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2VyS2V5Ijogc2Vs - Zi5vdXRfbWFwWyJDU0lfUkJEX05PREVfU0VDUkVUIl0sCiAgICAgICAgICAgICAgICAgICAgfSwK - ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKQogICAgICAgICMgaWYgJ0NTSV9SQkRfUFJP - VklTSU9ORVJfU0VDUkVUJyBleGlzdHMsIHRoZW4gb25seSBhZGQgJ3Jvb2stY3NpLXJiZC1wcm92 - aXNpb25lcicgU2VjcmV0CiAgICAgICAgaWYgKAogICAgICAgICAgICBzZWxmLm91dF9tYXBbIkNT - SV9SQkRfUFJPVklTSU9ORVJfU0VDUkVUIl0KICAgICAgICAgICAgYW5kIHNlbGYub3V0X21hcFsi - Q1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVRfTkFNRSJdCiAgICAgICAgKToKICAgICAgICAgICAg - anNvbl9vdXQuYXBwZW5kKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJu - YW1lIjogZiJyb29rLXtzZWxmLm91dF9tYXBbJ0NTSV9SQkRfUFJPVklTSU9ORVJfU0VDUkVUX05B - TUUnXX0iLAogICAgICAgICAgICAgICAgICAgICJraW5kIjogIlNlY3JldCIsCiAgICAgICAgICAg - ICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJ1c2VySUQiOiBzZWxm - Lm91dF9tYXBbIkNTSV9SQkRfUFJPVklTSU9ORVJfU0VDUkVUX05BTUUiXSwKICAgICAgICAgICAg - ICAgICAgICAgICAgInVzZXJLZXkiOiBzZWxmLm91dF9tYXBbIkNTSV9SQkRfUFJPVklTSU9ORVJf - U0VDUkVUIl0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0KICAgICAg - ICAgICAgKQogICAgICAgICMgaWYgJ0NTSV9DRVBIRlNfUFJPVklTSU9ORVJfU0VDUkVUJyBleGlz - dHMsIHRoZW4gb25seSBhZGQgJ3Jvb2stY3NpLWNlcGhmcy1wcm92aXNpb25lcicgU2VjcmV0CiAg - ICAgICAgaWYgKAogICAgICAgICAgICBzZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfUFJPVklTSU9O - RVJfU0VDUkVUIl0KICAgICAgICAgICAgYW5kIHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19QUk9W - SVNJT05FUl9TRUNSRVRfTkFNRSJdCiAgICAgICAgKToKICAgICAgICAgICAganNvbl9vdXQuYXBw - ZW5kKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogZiJyb29r - LXtzZWxmLm91dF9tYXBbJ0NTSV9DRVBIRlNfUFJPVklTSU9ORVJfU0VDUkVUX05BTUUnXX0iLAog - ICAgICAgICAgICAgICAgICAgICJraW5kIjogIlNlY3JldCIsCiAgICAgICAgICAgICAgICAgICAg - ImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJhZG1pbklEIjogc2VsZi5vdXRfbWFw - WyJDU0lfQ0VQSEZTX1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FIl0sCiAgICAgICAgICAgICAgICAg - ICAgICAgICJhZG1pbktleSI6IHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19QUk9WSVNJT05FUl9T - RUNSRVQiXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfQogICAgICAg - ICAgICApCiAgICAgICAgIyBpZiAnQ1NJX0NFUEhGU19OT0RFX1NFQ1JFVCcgZXhpc3RzLCB0aGVu - IG9ubHkgYWRkICdyb29rLWNzaS1jZXBoZnMtbm9kZScgU2VjcmV0CiAgICAgICAgaWYgKAogICAg - ICAgICAgICBzZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfTk9ERV9TRUNSRVQiXQogICAgICAgICAg - ICBhbmQgc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZTX05PREVfU0VDUkVUX05BTUUiXQogICAgICAg - ICk6CiAgICAgICAgICAgIGpzb25fb3V0LmFwcGVuZCgKICAgICAgICAgICAgICAgIHsKICAgICAg - ICAgICAgICAgICAgICAibmFtZSI6IGYicm9vay17c2VsZi5vdXRfbWFwWydDU0lfQ0VQSEZTX05P - REVfU0VDUkVUX05BTUUnXX0iLAogICAgICAgICAgICAgICAgICAgICJraW5kIjogIlNlY3JldCIs - CiAgICAgICAgICAgICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJh - ZG1pbklEIjogc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZTX05PREVfU0VDUkVUX05BTUUiXSwKICAg - ICAgICAgICAgICAgICAgICAgICAgImFkbWluS2V5Ijogc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZT - X05PREVfU0VDUkVUIl0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0K - ICAgICAgICAgICAgKQogICAgICAgICMgaWYgJ1JPT0tfRVhURVJOQUxfREFTSEJPQVJEX0xJTksn - IGV4aXN0cywgdGhlbiBvbmx5IGFkZCAncm9vay1jZXBoLWRhc2hib2FyZC1saW5rJyBTZWNyZXQK - ICAgICAgICBpZiBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxfREFTSEJPQVJEX0xJTksiXToK - ICAgICAgICAgICAganNvbl9vdXQuYXBwZW5kKAogICAgICAgICAgICAgICAgewogICAgICAgICAg - ICAgICAgICAgICJuYW1lIjogInJvb2stY2VwaC1kYXNoYm9hcmQtbGluayIsCiAgICAgICAgICAg - ICAgICAgICAgImtpbmQiOiAiU2VjcmV0IiwKICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsK - ICAgICAgICAgICAgICAgICAgICAgICAgInVzZXJJRCI6ICJjZXBoLWRhc2hib2FyZC1saW5rIiwK - ICAgICAgICAgICAgICAgICAgICAgICAgInVzZXJLZXkiOiBzZWxmLm91dF9tYXBbIlJPT0tfRVhU - RVJOQUxfREFTSEJPQVJEX0xJTksiXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAg - ICAgICAgfQogICAgICAgICAgICApCiAgICAgICAgaWYgc2VsZi5vdXRfbWFwWyJSQkRfTUVUQURB - VEFfRUNfUE9PTF9OQU1FIl06CiAgICAgICAgICAgIGpzb25fb3V0LmFwcGVuZCgKICAgICAgICAg - ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjZXBoLXJiZCIsCiAgICAgICAg - ICAgICAgICAgICAgImtpbmQiOiAiU3RvcmFnZUNsYXNzIiwKICAgICAgICAgICAgICAgICAgICAi - ZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImRhdGFQb29sIjogc2VsZi5vdXRfbWFw - WyJSQkRfUE9PTF9OQU1FIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICJwb29sIjogc2VsZi5v - dXRfbWFwWyJSQkRfTUVUQURBVEFfRUNfUE9PTF9OQU1FIl0sCiAgICAgICAgICAgICAgICAgICAg - ICAgICJjc2kuc3RvcmFnZS5rOHMuaW8vcHJvdmlzaW9uZXItc2VjcmV0LW5hbWUiOiBmInJvb2st - e3NlbGYub3V0X21hcFsnQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVRfTkFNRSddfSIsCiAgICAg - ICAgICAgICAgICAgICAgICAgICJjc2kuc3RvcmFnZS5rOHMuaW8vY29udHJvbGxlci1leHBhbmQt - c2VjcmV0LW5hbWUiOiBmInJvb2ste3NlbGYub3V0X21hcFsnQ1NJX1JCRF9QUk9WSVNJT05FUl9T - RUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJjc2kuc3RvcmFnZS5rOHMu - aW8vbm9kZS1zdGFnZS1zZWNyZXQtbmFtZSI6IGYicm9vay17c2VsZi5vdXRfbWFwWydDU0lfUkJE - X05PREVfU0VDUkVUX05BTUUnXX0iLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAg - ICAgICB9CiAgICAgICAgICAgICkKICAgICAgICBlbHNlOgogICAgICAgICAgICBqc29uX291dC5h - cHBlbmQoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2Vw - aC1yYmQiLAogICAgICAgICAgICAgICAgICAgICJraW5kIjogIlN0b3JhZ2VDbGFzcyIsCiAgICAg - ICAgICAgICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJwb29sIjog - c2VsZi5vdXRfbWFwWyJSQkRfUE9PTF9OQU1FIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICJj - c2kuc3RvcmFnZS5rOHMuaW8vcHJvdmlzaW9uZXItc2VjcmV0LW5hbWUiOiBmInJvb2ste3NlbGYu - b3V0X21hcFsnQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAg - ICAgICAgICAgICAgICJjc2kuc3RvcmFnZS5rOHMuaW8vY29udHJvbGxlci1leHBhbmQtc2VjcmV0 - LW5hbWUiOiBmInJvb2ste3NlbGYub3V0X21hcFsnQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVRf - TkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgICAgICJjc2kuc3RvcmFnZS5rOHMuaW8vbm9k - ZS1zdGFnZS1zZWNyZXQtbmFtZSI6IGYicm9vay17c2VsZi5vdXRfbWFwWydDU0lfUkJEX05PREVf - U0VDUkVUX05BTUUnXX0iLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9 - CiAgICAgICAgICAgICkKICAgICAgICAjIGlmICdDRVBIRlNfRlNfTkFNRScgZXhpc3RzLCB0aGVu - IG9ubHkgYWRkICdjZXBoZnMnIFN0b3JhZ2VDbGFzcwogICAgICAgIGlmIHNlbGYub3V0X21hcFsi - Q0VQSEZTX0ZTX05BTUUiXToKICAgICAgICAgICAganNvbl9vdXQuYXBwZW5kKAogICAgICAgICAg - ICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImNlcGhmcyIsCiAgICAgICAgICAg - ICAgICAgICAgImtpbmQiOiAiU3RvcmFnZUNsYXNzIiwKICAgICAgICAgICAgICAgICAgICAiZGF0 - YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImZzTmFtZSI6IHNlbGYub3V0X21hcFsiQ0VQ - SEZTX0ZTX05BTUUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgInBvb2wiOiBzZWxmLm91dF9t - YXBbIkNFUEhGU19QT09MX05BTUUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgImNzaS5zdG9y - YWdlLms4cy5pby9wcm92aXNpb25lci1zZWNyZXQtbmFtZSI6IGYicm9vay17c2VsZi5vdXRfbWFw - WydDU0lfQ0VQSEZTX1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FJ119IiwKICAgICAgICAgICAgICAg - ICAgICAgICAgImNzaS5zdG9yYWdlLms4cy5pby9jb250cm9sbGVyLWV4cGFuZC1zZWNyZXQtbmFt - ZSI6IGYicm9vay17c2VsZi5vdXRfbWFwWydDU0lfQ0VQSEZTX1BST1ZJU0lPTkVSX1NFQ1JFVF9O - QU1FJ119IiwKICAgICAgICAgICAgICAgICAgICAgICAgImNzaS5zdG9yYWdlLms4cy5pby9ub2Rl - LXN0YWdlLXNlY3JldC1uYW1lIjogZiJyb29rLXtzZWxmLm91dF9tYXBbJ0NTSV9DRVBIRlNfTk9E - RV9TRUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAg - IH0KICAgICAgICAgICAgKQogICAgICAgICMgaWYgJ1JHV19FTkRQT0lOVCcgZXhpc3RzLCB0aGVu - IG9ubHkgYWRkICdjZXBoLXJndycgU3RvcmFnZUNsYXNzCiAgICAgICAgaWYgc2VsZi5vdXRfbWFw - WyJSR1dfRU5EUE9JTlQiXToKICAgICAgICAgICAganNvbl9vdXQuYXBwZW5kKAogICAgICAgICAg - ICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImNlcGgtcmd3IiwKICAgICAgICAg - ICAgICAgICAgICAia2luZCI6ICJTdG9yYWdlQ2xhc3MiLAogICAgICAgICAgICAgICAgICAgICJk - YXRhIjogewogICAgICAgICAgICAgICAgICAgICAgICAiZW5kcG9pbnQiOiBzZWxmLm91dF9tYXBb - IlJHV19FTkRQT0lOVCJdLAogICAgICAgICAgICAgICAgICAgICAgICAicG9vbFByZWZpeCI6IHNl - bGYub3V0X21hcFsiUkdXX1BPT0xfUFJFRklYIl0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAg - ICAgICAgICAgICAgIH0KICAgICAgICAgICAgKQogICAgICAgICAgICBqc29uX291dC5hcHBlbmQo - CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAicmd3LWFkbWlu - LW9wcy11c2VyIiwKICAgICAgICAgICAgICAgICAgICAia2luZCI6ICJTZWNyZXQiLAogICAgICAg - ICAgICAgICAgICAgICJkYXRhIjogewogICAgICAgICAgICAgICAgICAgICAgICAiYWNjZXNzS2V5 - Ijogc2VsZi5vdXRfbWFwWyJSR1dfQURNSU5fT1BTX1VTRVJfQUNDRVNTX0tFWSJdLAogICAgICAg - ICAgICAgICAgICAgICAgICAic2VjcmV0S2V5Ijogc2VsZi5vdXRfbWFwWyJSR1dfQURNSU5fT1BT - X1VTRVJfU0VDUkVUX0tFWSJdLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAg - ICB9CiAgICAgICAgICAgICkKICAgICAgICAjIGlmICdSR1dfVExTX0NFUlQnIGV4aXN0cywgdGhl - biBvbmx5IGFkZCB0aGUgImNlcGgtcmd3LXRscy1jZXJ0IiBzZWNyZXQKICAgICAgICBpZiBzZWxm - Lm91dF9tYXBbIlJHV19UTFNfQ0VSVCJdOgogICAgICAgICAgICBqc29uX291dC5hcHBlbmQoCiAg - ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2VwaC1yZ3ctdGxz - LWNlcnQiLAogICAgICAgICAgICAgICAgICAgICJraW5kIjogIlNlY3JldCIsCiAgICAgICAgICAg - ICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJjZXJ0Ijogc2VsZi5v - dXRfbWFwWyJSR1dfVExTX0NFUlQiXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAg - ICAgICAgfQogICAgICAgICAgICApCgogICAgICAgIHJldHVybiBqc29uLmR1bXBzKGpzb25fb3V0 - KSArIExJTkVTRVAKCiAgICBkZWYgdXBncmFkZV91c2Vyc19wZXJtaXNzaW9ucyhzZWxmKToKICAg - ICAgICB1c2VycyA9IFsKICAgICAgICAgICAgImNsaWVudC5jc2ktY2VwaGZzLW5vZGUiLAogICAg - ICAgICAgICAiY2xpZW50LmNzaS1jZXBoZnMtcHJvdmlzaW9uZXIiLAogICAgICAgICAgICAiY2xp - ZW50LmNzaS1yYmQtbm9kZSIsCiAgICAgICAgICAgICJjbGllbnQuY3NpLXJiZC1wcm92aXNpb25l - ciIsCiAgICAgICAgXQogICAgICAgIGlmIHNlbGYucnVuX2FzX3VzZXIgIT0gIiIgYW5kIHNlbGYu - cnVuX2FzX3VzZXIgbm90IGluIHVzZXJzOgogICAgICAgICAgICB1c2Vycy5hcHBlbmQoc2VsZi5y - dW5fYXNfdXNlcikKICAgICAgICBmb3IgdXNlciBpbiB1c2VyczoKICAgICAgICAgICAgc2VsZi51 - cGdyYWRlX3VzZXJfcGVybWlzc2lvbnModXNlcikKCiAgICBkZWYgdXBncmFkZV91c2VyX3Blcm1p - c3Npb25zKHNlbGYsIHVzZXIpOgogICAgICAgICMgY2hlY2sgd2hldGhlciB0aGUgZ2l2ZW4gdXNl - ciBleGlzdHMgb3Igbm90CiAgICAgICAgY21kX2pzb24gPSB7InByZWZpeCI6ICJhdXRoIGdldCIs - ICJlbnRpdHkiOiBmInt1c2VyfSIsICJmb3JtYXQiOiAianNvbiJ9CiAgICAgICAgcmV0X3ZhbCwg + IGs4c19jbHVzdGVyX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25G + YWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJtYW5kYXRvcnkgZmxhZyBub3Qg + Zm91bmQsIHBsZWFzZSBzZXQgdGhlICctLWs4cy1jbHVzdGVyLW5hbWUnIGZsYWciCiAgICAgICAg + ICAgICAgICApCiAgICAgICAgICAgIGVudGl0eSA9IHNlbGYuZ2V0X2VudGl0eSgKICAgICAgICAg + ICAgICAgIGVudGl0eSwgcmJkX3Bvb2xfbmFtZSwgYWxpYXNfcmJkX3Bvb2xfbmFtZSwgazhzX2Ns + dXN0ZXJfbmFtZQogICAgICAgICAgICApCiAgICAgICAgICAgIGNhcHNbIm9zZCJdID0gZiJwcm9m + aWxlIHJiZCBwb29sPXtyYmRfcG9vbF9uYW1lfSIKCiAgICAgICAgcmV0dXJuIGNhcHMsIGVudGl0 + eQoKICAgIGRlZiBnZXRfcmJkX25vZGVfY2Fwc19hbmRfZW50aXR5KHNlbGYpOgogICAgICAgIGVu + dGl0eSA9ICJjbGllbnQuY3NpLXJiZC1ub2RlIgogICAgICAgIGNhcHMgPSB7CiAgICAgICAgICAg + ICJtb24iOiAicHJvZmlsZSByYmQsIGFsbG93IGNvbW1hbmQgJ29zZCBibG9ja2xpc3QnIiwKICAg + ICAgICAgICAgIm9zZCI6ICJwcm9maWxlIHJiZCIsCiAgICAgICAgfQogICAgICAgIGlmIHNlbGYu + X2FyZ19wYXJzZXIucmVzdHJpY3RlZF9hdXRoX3Blcm1pc3Npb246CiAgICAgICAgICAgIHJiZF9w + b29sX25hbWUgPSBzZWxmLl9hcmdfcGFyc2VyLnJiZF9kYXRhX3Bvb2xfbmFtZQogICAgICAgICAg + ICBhbGlhc19yYmRfcG9vbF9uYW1lID0gc2VsZi5fYXJnX3BhcnNlci5hbGlhc19yYmRfZGF0YV9w + b29sX25hbWUKICAgICAgICAgICAgazhzX2NsdXN0ZXJfbmFtZSA9IHNlbGYuX2FyZ19wYXJzZXIu + azhzX2NsdXN0ZXJfbmFtZQogICAgICAgICAgICBpZiByYmRfcG9vbF9uYW1lID09ICIiOgogICAg + ICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAg + ICAgICAgICAibWFuZGF0b3J5IGZsYWcgbm90IGZvdW5kLCBwbGVhc2Ugc2V0IHRoZSAnLS1yYmQt + ZGF0YS1wb29sLW5hbWUnIGZsYWciCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGlmIGs4 + c19jbHVzdGVyX25hbWUgPT0gIiI6CiAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWls + dXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICJtYW5kYXRvcnkgZmxhZyBub3QgZm91 + bmQsIHBsZWFzZSBzZXQgdGhlICctLWs4cy1jbHVzdGVyLW5hbWUnIGZsYWciCiAgICAgICAgICAg + ICAgICApCiAgICAgICAgICAgIGVudGl0eSA9IHNlbGYuZ2V0X2VudGl0eSgKICAgICAgICAgICAg + ICAgIGVudGl0eSwgcmJkX3Bvb2xfbmFtZSwgYWxpYXNfcmJkX3Bvb2xfbmFtZSwgazhzX2NsdXN0 + ZXJfbmFtZQogICAgICAgICAgICApCiAgICAgICAgICAgIGNhcHNbIm9zZCJdID0gZiJwcm9maWxl + IHJiZCBwb29sPXtyYmRfcG9vbF9uYW1lfSIKCiAgICAgICAgcmV0dXJuIGNhcHMsIGVudGl0eQoK + ICAgIGRlZiBnZXRfaGVhbHRoY2hlY2tlcl9jYXBzX2FuZF9lbnRpdHkoc2VsZik6CiAgICAgICAg + ZW50aXR5ID0gImNsaWVudC5oZWFsdGhjaGVja2VyIgogICAgICAgIGNhcHMgPSB7CiAgICAgICAg + ICAgICJtb24iOiAiYWxsb3cgciwgYWxsb3cgY29tbWFuZCBxdW9ydW1fc3RhdHVzLCBhbGxvdyBj + b21tYW5kIHZlcnNpb24iLAogICAgICAgICAgICAibWdyIjogImFsbG93IGNvbW1hbmQgY29uZmln + IiwKICAgICAgICAgICAgIm9zZCI6IGYicHJvZmlsZSByYmQtcmVhZC1vbmx5LCBhbGxvdyByd3gg + cG9vbD17c2VsZi5fYXJnX3BhcnNlci5yZ3dfcG9vbF9wcmVmaXh9LnJndy5tZXRhLCBhbGxvdyBy + IHBvb2w9LnJndy5yb290LCBhbGxvdyBydyBwb29sPXtzZWxmLl9hcmdfcGFyc2VyLnJnd19wb29s + X3ByZWZpeH0ucmd3LmNvbnRyb2wsIGFsbG93IHJ4IHBvb2w9e3NlbGYuX2FyZ19wYXJzZXIucmd3 + X3Bvb2xfcHJlZml4fS5yZ3cubG9nLCBhbGxvdyB4IHBvb2w9e3NlbGYuX2FyZ19wYXJzZXIucmd3 + X3Bvb2xfcHJlZml4fS5yZ3cuYnVja2V0cy5pbmRleCIsCiAgICAgICAgfQoKICAgICAgICByZXR1 + cm4gY2FwcywgZW50aXR5CgogICAgZGVmIGdldF9jYXBzX2FuZF9lbnRpdHkoc2VsZiwgdXNlcl9u + YW1lKToKICAgICAgICBpZiAiY2xpZW50LmNzaS1jZXBoZnMtcHJvdmlzaW9uZXIiIGluIHVzZXJf + bmFtZToKICAgICAgICAgICAgaWYgImNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyIiAhPSB1 + c2VyX25hbWU6CiAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJlc3RyaWN0ZWRfYXV0 + aF9wZXJtaXNzaW9uID0gVHJ1ZQogICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfY2VwaGZzX3By + b3Zpc2lvbmVyX2NhcHNfYW5kX2VudGl0eSgpCiAgICAgICAgaWYgImNsaWVudC5jc2ktY2VwaGZz + LW5vZGUiIGluIHVzZXJfbmFtZToKICAgICAgICAgICAgaWYgImNsaWVudC5jc2ktY2VwaGZzLW5v + ZGUiICE9IHVzZXJfbmFtZToKICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmVzdHJp + Y3RlZF9hdXRoX3Blcm1pc3Npb24gPSBUcnVlCiAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9j + ZXBoZnNfbm9kZV9jYXBzX2FuZF9lbnRpdHkoKQogICAgICAgIGlmICJjbGllbnQuY3NpLXJiZC1w + cm92aXNpb25lciIgaW4gdXNlcl9uYW1lOgogICAgICAgICAgICBpZiAiY2xpZW50LmNzaS1yYmQt + cHJvdmlzaW9uZXIiICE9IHVzZXJfbmFtZToKICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJz + ZXIucmVzdHJpY3RlZF9hdXRoX3Blcm1pc3Npb24gPSBUcnVlCiAgICAgICAgICAgIHJldHVybiBz + ZWxmLmdldF9yYmRfcHJvdmlzaW9uZXJfY2Fwc19hbmRfZW50aXR5KCkKICAgICAgICBpZiAiY2xp + ZW50LmNzaS1yYmQtbm9kZSIgaW4gdXNlcl9uYW1lOgogICAgICAgICAgICBpZiAiY2xpZW50LmNz + aS1yYmQtbm9kZSIgIT0gdXNlcl9uYW1lOgogICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNl + ci5yZXN0cmljdGVkX2F1dGhfcGVybWlzc2lvbiA9IFRydWUKICAgICAgICAgICAgcmV0dXJuIHNl + bGYuZ2V0X3JiZF9ub2RlX2NhcHNfYW5kX2VudGl0eSgpCiAgICAgICAgaWYgImNsaWVudC5oZWFs + dGhjaGVja2VyIiBpbiB1c2VyX25hbWU6CiAgICAgICAgICAgIGlmICJjbGllbnQuaGVhbHRoY2hl + Y2tlciIgIT0gdXNlcl9uYW1lOgogICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZXN0 + cmljdGVkX2F1dGhfcGVybWlzc2lvbiA9IFRydWUKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0 + X2hlYWx0aGNoZWNrZXJfY2Fwc19hbmRfZW50aXR5KCkKCiAgICAgICAgcmFpc2UgRXhlY3V0aW9u + RmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgZiJubyB1c2VyIGZvdW5kIHdpdGggdXNlcl9u + YW1lOiB7dXNlcl9uYW1lfSwgIgogICAgICAgICAgICAiZ2V0X2NhcHNfYW5kX2VudGl0eSBjb21t + YW5kIGZhaWxlZC5cbiIKICAgICAgICApCgogICAgZGVmIGNyZWF0ZV9jZXBoQ1NJS2V5cmluZ191 + c2VyKHNlbGYsIHVzZXIpOgogICAgICAgICIiIgogICAgICAgIGNvbW1hbmQ6IGNlcGggYXV0aCBn + ZXQtb3ItY3JlYXRlIGNsaWVudC5jc2ktY2VwaGZzLXByb3Zpc2lvbmVyIG1vbiAnYWxsb3cgcicg + bWdyICdhbGxvdyBydycgb3NkICdhbGxvdyBydyB0YWcgY2VwaGZzIG1ldGFkYXRhPSonCiAgICAg + ICAgIiIiCiAgICAgICAgY2FwcywgZW50aXR5ID0gc2VsZi5nZXRfY2Fwc19hbmRfZW50aXR5KHVz + ZXIpCiAgICAgICAgY21kX2pzb24gPSB7CiAgICAgICAgICAgICJwcmVmaXgiOiAiYXV0aCBnZXQt + b3ItY3JlYXRlIiwKICAgICAgICAgICAgImVudGl0eSI6IGVudGl0eSwKICAgICAgICAgICAgImNh + cHMiOiBbY2FwIGZvciBjYXBfbGlzdCBpbiBsaXN0KGNhcHMuaXRlbXMoKSkgZm9yIGNhcCBpbiBj + YXBfbGlzdF0sCiAgICAgICAgICAgICJmb3JtYXQiOiAianNvbiIsCiAgICAgICAgfQoKICAgICAg + ICBpZiBzZWxmLl9hcmdfcGFyc2VyLmRyeV9ydW46CiAgICAgICAgICAgIHJldHVybiAoCiAgICAg + ICAgICAgICAgICBzZWxmLmRyeV9ydW4oCiAgICAgICAgICAgICAgICAgICAgImNlcGggIgogICAg + ICAgICAgICAgICAgICAgICsgY21kX2pzb25bInByZWZpeCJdCiAgICAgICAgICAgICAgICAgICAg + KyAiICIKICAgICAgICAgICAgICAgICAgICArIGNtZF9qc29uWyJlbnRpdHkiXQogICAgICAgICAg + ICAgICAgICAgICsgIiAiCiAgICAgICAgICAgICAgICAgICAgKyAiICIuam9pbihjbWRfanNvblsi + Y2FwcyJdKQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICIiLAogICAgICAgICAg + ICApCiAgICAgICAgIyBjaGVjayBpZiB1c2VyIGFscmVhZHkgZXhpc3QKICAgICAgICB1c2VyX2tl + eSA9IHNlbGYuY2hlY2tfdXNlcl9leGlzdChlbnRpdHkpCiAgICAgICAgaWYgdXNlcl9rZXkgIT0g + IiI6CiAgICAgICAgICAgIHJldHVybiB1c2VyX2tleSwgZiJ7ZW50aXR5LnNwbGl0KCcuJywgMSlb + MV19IgogICAgICAgICAgICAjIGVudGl0eS5zcGxpdCgnLicsMSlbMV0gdG8gcmVuYW1lIGVudGl0 + eShjbGllbnQuY3NpLXJiZC1ub2RlKSBhcyBjc2ktcmJkLW5vZGUKCiAgICAgICAgcmV0X3ZhbCwg anNvbl9vdXQsIGVycl9tc2cgPSBzZWxmLl9jb21tb25fY21kX2pzb25fZ2VuKGNtZF9qc29uKQog - ICAgICAgIGlmIHJldF92YWwgIT0gMCBvciBsZW4oanNvbl9vdXQpID09IDA6CiAgICAgICAgICAg - IHByaW50KGYidXNlciB7dXNlcn0gbm90IGZvdW5kIGZvciB1cGdyYWRpbmcuIikKICAgICAgICAg - ICAgcmV0dXJuCiAgICAgICAgZXhpc3RpbmdfY2FwcyA9IGpzb25fb3V0WzBdWyJjYXBzIl0KICAg - ICAgICBuZXdfY2FwLCBfID0gc2VsZi5nZXRfY2Fwc19hbmRfZW50aXR5KHVzZXIpCiAgICAgICAg - Y2FwX2tleXMgPSBbIm1vbiIsICJtZ3IiLCAib3NkIiwgIm1kcyJdCiAgICAgICAgY2FwcyA9IFtd - CiAgICAgICAgZm9yIGVhY2hDYXAgaW4gY2FwX2tleXM6CiAgICAgICAgICAgIGN1cl9jYXBfdmFs - dWVzID0gZXhpc3RpbmdfY2Fwcy5nZXQoZWFjaENhcCwgIiIpCiAgICAgICAgICAgIG5ld19jYXBf - dmFsdWVzID0gbmV3X2NhcC5nZXQoZWFjaENhcCwgIiIpCiAgICAgICAgICAgIGN1cl9jYXBfcGVy - bV9saXN0ID0gWwogICAgICAgICAgICAgICAgeC5zdHJpcCgpIGZvciB4IGluIGN1cl9jYXBfdmFs - dWVzLnNwbGl0KCIsIikgaWYgeC5zdHJpcCgpCiAgICAgICAgICAgIF0KICAgICAgICAgICAgbmV3 - X2NhcF9wZXJtX2xpc3QgPSBbCiAgICAgICAgICAgICAgICB4LnN0cmlwKCkgZm9yIHggaW4gbmV3 - X2NhcF92YWx1ZXMuc3BsaXQoIiwiKSBpZiB4LnN0cmlwKCkKICAgICAgICAgICAgXQogICAgICAg - ICAgICAjIGFwcGVuZCBuZXdfY2FwX2xpc3QgdG8gY3VyX2NhcF9saXN0IHRvIG1haW50YWluIHRo - ZSBvcmRlciBvZiBjYXBzCiAgICAgICAgICAgIGN1cl9jYXBfcGVybV9saXN0LmV4dGVuZChuZXdf - Y2FwX3Blcm1fbGlzdCkKICAgICAgICAgICAgIyBlbGltaW5hdGUgZHVwbGljYXRlcyB3aXRob3V0 - IHVzaW5nICdzZXQnCiAgICAgICAgICAgICMgc2V0IHJlLW9yZGVycyBpdGVtcyBpbiB0aGUgbGlz - dCBhbmQgd2UgaGF2ZSB0byBrZWVwIHRoZSBvcmRlcgogICAgICAgICAgICBuZXdfY2FwX2xpc3Qg - PSBbXQogICAgICAgICAgICBbbmV3X2NhcF9saXN0LmFwcGVuZCh4KSBmb3IgeCBpbiBjdXJfY2Fw - X3Blcm1fbGlzdCBpZiB4IG5vdCBpbiBuZXdfY2FwX2xpc3RdCiAgICAgICAgICAgIGV4aXN0aW5n - X2NhcHNbZWFjaENhcF0gPSAiLCAiLmpvaW4obmV3X2NhcF9saXN0KQogICAgICAgICAgICBpZiBl - eGlzdGluZ19jYXBzW2VhY2hDYXBdOgogICAgICAgICAgICAgICAgY2Fwcy5hcHBlbmQoZWFjaENh - cCkKICAgICAgICAgICAgICAgIGNhcHMuYXBwZW5kKGV4aXN0aW5nX2NhcHNbZWFjaENhcF0pCiAg - ICAgICAgY21kX2pzb24gPSB7CiAgICAgICAgICAgICJwcmVmaXgiOiAiYXV0aCBjYXBzIiwKICAg - ICAgICAgICAgImVudGl0eSI6IHVzZXIsCiAgICAgICAgICAgICJjYXBzIjogY2FwcywKICAgICAg - ICAgICAgImZvcm1hdCI6ICJqc29uIiwKICAgICAgICB9CiAgICAgICAgcmV0X3ZhbCwganNvbl9v - dXQsIGVycl9tc2cgPSBzZWxmLl9jb21tb25fY21kX2pzb25fZ2VuKGNtZF9qc29uKQogICAgICAg - IGlmIHJldF92YWwgIT0gMDoKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2Vw - dGlvbigKICAgICAgICAgICAgICAgIGYiJ2F1dGggY2FwcyB7dXNlcn0nIGNvbW1hbmQgZmFpbGVk - LlxuIEVycm9yOiB7ZXJyX21zZ30iCiAgICAgICAgICAgICkKICAgICAgICBwcmludChmIlVwZGF0 - ZWQgdXNlciB7dXNlcn0gc3VjY2Vzc2Z1bGx5LiIpCgogICAgZGVmIG1haW4oc2VsZik6CiAgICAg - ICAgZ2VuZXJhdGVkX291dHB1dCA9ICIiCiAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci51cGdy - YWRlOgogICAgICAgICAgICBzZWxmLnVwZ3JhZGVfdXNlcnNfcGVybWlzc2lvbnMoKQogICAgICAg - IGVsaWYgc2VsZi5fYXJnX3BhcnNlci5mb3JtYXQgPT0gImpzb24iOgogICAgICAgICAgICBnZW5l - cmF0ZWRfb3V0cHV0ID0gc2VsZi5nZW5fanNvbl9vdXQoKQogICAgICAgIGVsaWYgc2VsZi5fYXJn - X3BhcnNlci5mb3JtYXQgPT0gImJhc2giOgogICAgICAgICAgICBnZW5lcmF0ZWRfb3V0cHV0ID0g - c2VsZi5nZW5fc2hlbGxfb3V0KCkKICAgICAgICBlbHNlOgogICAgICAgICAgICByYWlzZSBFeGVj - dXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgZiJVbnN1cHBvcnRlZCBmb3Jt - YXQ6IHtzZWxmLl9hcmdfcGFyc2VyLmZvcm1hdH0iCiAgICAgICAgICAgICkKICAgICAgICBwcmlu - dChnZW5lcmF0ZWRfb3V0cHV0KQogICAgICAgIGlmIHNlbGYub3V0cHV0X2ZpbGUgYW5kIGdlbmVy - YXRlZF9vdXRwdXQ6CiAgICAgICAgICAgIGZPdXQgPSBvcGVuKHNlbGYub3V0cHV0X2ZpbGUsIG1v - ZGU9InciLCBlbmNvZGluZz0iVVRGLTgiKQogICAgICAgICAgICBmT3V0LndyaXRlKGdlbmVyYXRl - ZF9vdXRwdXQpCiAgICAgICAgICAgIGZPdXQuY2xvc2UoKQoKCiMjIyMjIyMjIyMjIyMjIyMjIyMj - IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMgTUFJTiAj - IyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj - IyMjIyMjIyMjIyMjCmlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICByak9iaiA9IFJhZG9z - SlNPTigpCiAgICB0cnk6CiAgICAgICAgcmpPYmoubWFpbigpCiAgICBleGNlcHQgRXhlY3V0aW9u - RmFpbHVyZUV4Y2VwdGlvbiBhcyBlcnI6CiAgICAgICAgcHJpbnQoZiJFeGVjdXRpb24gRmFpbGVk - OiB7ZXJyfSIpCiAgICAgICAgcmFpc2UgZXJyCiAgICBleGNlcHQgS2V5RXJyb3IgYXMga0VycjoK - ICAgICAgICBwcmludChmIktleUVycm9yOiB7a0Vycn0iKQogICAgZXhjZXB0IE9TRXJyb3IgYXMg - b3NFcnI6CiAgICAgICAgcHJpbnQoZiJFcnJvciB3aGlsZSB0cnlpbmcgdG8gb3V0cHV0IHRoZSBk - YXRhOiB7b3NFcnJ9IikKICAgIGZpbmFsbHk6CiAgICAgICAgcmpPYmouc2h1dGRvd24oKQo= + ICAgICAgICMgaWYgdGhlcmUgaXMgYW4gdW5zdWNjZXNzZnVsIGF0dGVtcHQsCiAgICAgICAgaWYg + cmV0X3ZhbCAhPSAwIG9yIGxlbihqc29uX291dCkgPT0gMDoKICAgICAgICAgICAgcmFpc2UgRXhl + Y3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgIGYiJ2F1dGggZ2V0LW9yLWNy + ZWF0ZSB7dXNlcn0nIGNvbW1hbmQgZmFpbGVkLlxuIgogICAgICAgICAgICAgICAgZiJFcnJvcjog + e2Vycl9tc2cgaWYgcmV0X3ZhbCAhPSAwIGVsc2Ugc2VsZi5FTVBUWV9PVVRQVVRfTElTVH0iCiAg + ICAgICAgICAgICkKICAgICAgICByZXR1cm4gc3RyKGpzb25fb3V0WzBdWyJrZXkiXSksIGYie2Vu + dGl0eS5zcGxpdCgnLicsIDEpWzFdfSIKICAgICAgICAjIGVudGl0eS5zcGxpdCgnLicsMSlbMV0g + dG8gcmVuYW1lIGVudGl0eShjbGllbnQuY3NpLXJiZC1ub2RlKSBhcyBjc2ktcmJkLW5vZGUKCiAg + ICBkZWYgZ2V0X2NlcGhmc19kYXRhX3Bvb2xfZGV0YWlscyhzZWxmKToKICAgICAgICBjbWRfanNv + biA9IHsicHJlZml4IjogImZzIGxzIiwgImZvcm1hdCI6ICJqc29uIn0KICAgICAgICBpZiBzZWxm + Ll9hcmdfcGFyc2VyLmRyeV9ydW46CiAgICAgICAgICAgIHJldHVybiBzZWxmLmRyeV9ydW4oImNl + cGggIiArIGNtZF9qc29uWyJwcmVmaXgiXSkKICAgICAgICByZXRfdmFsLCBqc29uX291dCwgZXJy + X21zZyA9IHNlbGYuX2NvbW1vbl9jbWRfanNvbl9nZW4oY21kX2pzb24pCiAgICAgICAgIyBpZiB0 + aGVyZSBpcyBhbiB1bnN1Y2Nlc3NmdWwgYXR0ZW1wdCwgcmVwb3J0IGFuIGVycm9yCiAgICAgICAg + aWYgcmV0X3ZhbCAhPSAwOgogICAgICAgICAgICAjIGlmIGZzIGFuZCBkYXRhX3Bvb2wgYXJndW1l + bnRzIGFyZSBub3Qgc2V0LCBzaWxlbnRseSByZXR1cm4KICAgICAgICAgICAgaWYgKAogICAgICAg + ICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZmlsZXN5c3RlbV9uYW1lID09ICIiCiAg + ICAgICAgICAgICAgICBhbmQgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9wb29sX25hbWUg + PT0gIiIKICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAj + IGlmIHVzZXIgaGFzIHByb3ZpZGVkIGFueSBvZiB0aGUKICAgICAgICAgICAgIyAnLS1jZXBoZnMt + ZmlsZXN5c3RlbS1uYW1lJyBvciAnLS1jZXBoZnMtZGF0YS1wb29sLW5hbWUnIGFyZ3VtZW50cywK + ICAgICAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24gYXMgd2UgYXJlIHVuYWJsZSB0byB2ZXJp + ZnkgdGhlIGFyZ3MKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigK + ICAgICAgICAgICAgICAgIGYiJ2ZzIGxzJyBjZXBoIGNhbGwgZmFpbGVkIHdpdGggZXJyb3I6IHtl + cnJfbXNnfSIKICAgICAgICAgICAgKQoKICAgICAgICBtYXRjaGluZ19qc29uX291dCA9IHt9CiAg + ICAgICAgIyBpZiAnLS1jZXBoZnMtZmlsZXN5c3RlbS1uYW1lJyBhcmd1bWVudCBpcyBwcm92aWRl + ZCwKICAgICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIHByb3ZpZGVkIGZpbGVzeXN0ZW0tbmFtZSBl + eGlzdHMgb3Igbm90CiAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZmlsZXN5c3Rl + bV9uYW1lOgogICAgICAgICAgICAjIGdldCB0aGUgbWF0Y2hpbmcgbGlzdAogICAgICAgICAgICBt + YXRjaGluZ19qc29uX291dF9saXN0ID0gWwogICAgICAgICAgICAgICAgbWF0Y2hlZAogICAgICAg + ICAgICAgICAgZm9yIG1hdGNoZWQgaW4ganNvbl9vdXQKICAgICAgICAgICAgICAgIGlmIHN0ciht + YXRjaGVkWyJuYW1lIl0pID09IHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2ZpbGVzeXN0ZW1fbmFt + ZQogICAgICAgICAgICBdCiAgICAgICAgICAgICMgdW5hYmxlIHRvIGZpbmQgYSBtYXRjaGluZyBm + cy1uYW1lLCByYWlzZSBhbiBlcnJvcgogICAgICAgICAgICBpZiBsZW4obWF0Y2hpbmdfanNvbl9v + dXRfbGlzdCkgPT0gMDoKICAgICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNl + cHRpb24oCiAgICAgICAgICAgICAgICAgICAgZiJGaWxlc3lzdGVtIHByb3ZpZGVkLCAne3NlbGYu + X2FyZ19wYXJzZXIuY2VwaGZzX2ZpbGVzeXN0ZW1fbmFtZX0nLCAiCiAgICAgICAgICAgICAgICAg + ICAgZiJpcyBub3QgZm91bmQgaW4gdGhlIGZzLWxpc3Q6IHtbc3RyKHhbJ25hbWUnXSkgZm9yIHgg + aW4ganNvbl9vdXRdfSIKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgbWF0Y2hpbmdfanNv + bl9vdXQgPSBtYXRjaGluZ19qc29uX291dF9saXN0WzBdCiAgICAgICAgIyBpZiBjZXBoZnMgZmls + ZXN5c3RlbSBuYW1lIGlzIG5vdCBwcm92aWRlZCwKICAgICAgICAjIHRyeSB0byBnZXQgYSBkZWZh + dWx0IGZzIG5hbWUgYnkgZG9pbmcgdGhlIGZvbGxvd2luZwogICAgICAgIGVsc2U6CiAgICAgICAg + ICAgICMgYS4gY2hlY2sgaWYgdGhlcmUgaXMgb25seSBvbmUgZmlsZXN5c3RlbSBpcyBwcmVzZW50 + CiAgICAgICAgICAgIGlmIGxlbihqc29uX291dCkgPT0gMToKICAgICAgICAgICAgICAgIG1hdGNo + aW5nX2pzb25fb3V0ID0ganNvbl9vdXRbMF0KICAgICAgICAgICAgIyBiLiBvciBlbHNlLCBjaGVj + ayBpZiBkYXRhX3Bvb2wgbmFtZSBpcyBwcm92aWRlZAogICAgICAgICAgICBlbGlmIHNlbGYuX2Fy + Z19wYXJzZXIuY2VwaGZzX2RhdGFfcG9vbF9uYW1lOgogICAgICAgICAgICAgICAgIyBhbmQgaWYg + cHJlc2VudCwgY2hlY2sgd2hldGhlciB0aGVyZSBleGlzdHMgYSBmcyB3aGljaCBoYXMgdGhlIGRh + dGFfcG9vbAogICAgICAgICAgICAgICAgZm9yIGVhY2hKIGluIGpzb25fb3V0OgogICAgICAgICAg + ICAgICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2RhdGFfcG9vbF9uYW1lIGluIGVh + Y2hKWyJkYXRhX3Bvb2xzIl06CiAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nX2pzb25f + b3V0ID0gZWFjaEoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAg + ICMgaWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgZnMgZXhpc3RzLCB0aGF0IG1lYW5zIHByb3ZpZGVk + IGRhdGFfcG9vbCBuYW1lIGlzIGludmFsaWQKICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRjaGlu + Z19qc29uX291dDoKICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhj + ZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICBmIlByb3ZpZGVkIGRhdGFfcG9vbCBuYW1l + LCB7c2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9wb29sX25hbWV9LCIKICAgICAgICAgICAg + ICAgICAgICAgICAgIiBkb2VzIG5vdCBleGlzdHMiCiAgICAgICAgICAgICAgICAgICAgKQogICAg + ICAgICAgICAjIGMuIGlmIG5vdGhpbmcgaXMgc2V0IGFuZCBjb3VsZG4ndCBmaW5kIGEgZGVmYXVs + dCwKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICMganVzdCByZXR1cm4gc2lsZW50 + bHkKICAgICAgICAgICAgICAgIHJldHVybgoKICAgICAgICBpZiBtYXRjaGluZ19qc29uX291dDoK + ICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZmlsZXN5c3RlbV9uYW1lID0gc3Ry + KG1hdGNoaW5nX2pzb25fb3V0WyJuYW1lIl0pCiAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIu + Y2VwaGZzX21ldGFkYXRhX3Bvb2xfbmFtZSA9IHN0cigKICAgICAgICAgICAgICAgIG1hdGNoaW5n + X2pzb25fb3V0WyJtZXRhZGF0YV9wb29sIl0KICAgICAgICAgICAgKQoKICAgICAgICBpZiBpc2lu + c3RhbmNlKG1hdGNoaW5nX2pzb25fb3V0WyJkYXRhX3Bvb2xzIl0sIGxpc3QpOgogICAgICAgICAg + ICAjIGlmIHRoZSB1c2VyIGhhcyBhbHJlYWR5IHByb3ZpZGVkIGRhdGEtcG9vbC1uYW1lLAogICAg + ICAgICAgICAjIHRocm91Z2ggLS1jZXBoZnMtZGF0YS1wb29sLW5hbWUKICAgICAgICAgICAgaWYg + c2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9wb29sX25hbWU6CiAgICAgICAgICAgICAgICAj + IGlmIHRoZSBwcm92aWRlZCBuYW1lIGlzIG5vdCBtYXRjaGluZyB3aXRoIHRoZSBvbmUgaW4gdGhl + IGxpc3QKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBzZWxmLl9hcmdf + cGFyc2VyLmNlcGhmc19kYXRhX3Bvb2xfbmFtZQogICAgICAgICAgICAgICAgICAgIG5vdCBpbiBt + YXRjaGluZ19qc29uX291dFsiZGF0YV9wb29scyJdCiAgICAgICAgICAgICAgICApOgogICAgICAg + ICAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAgICAgICAgICAg + ICAgICAgICAgICAgIGYiUHJvdmlkZWQgZGF0YS1wb29sLW5hbWU6ICd7c2VsZi5fYXJnX3BhcnNl + ci5jZXBoZnNfZGF0YV9wb29sX25hbWV9JywgIgogICAgICAgICAgICAgICAgICAgICAgICAiZG9l + c24ndCBtYXRjaCBmcm9tIHRoZSBkYXRhLXBvb2xzIGxpc3Q6ICIKICAgICAgICAgICAgICAgICAg + ICAgICAgZiJ7W3N0cih4KSBmb3IgeCBpbiBtYXRjaGluZ19qc29uX291dFsnZGF0YV9wb29scydd + XX0iCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAjIGlmIGRhdGFfcG9vbCBuYW1l + IGlzIG5vdCBwcm92aWRlZCwKICAgICAgICAgICAgIyB0aGVuIHRyeSB0byBmaW5kIGEgZGVmYXVs + dCBkYXRhIHBvb2wgbmFtZQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIyBpZiBu + byBkYXRhX3Bvb2xzIGV4aXN0LCBzaWxlbnRseSByZXR1cm4KICAgICAgICAgICAgICAgIGlmIGxl + bihtYXRjaGluZ19qc29uX291dFsiZGF0YV9wb29scyJdKSA9PSAwOgogICAgICAgICAgICAgICAg + ICAgIHJldHVybgogICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9w + b29sX25hbWUgPSBzdHIoCiAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdfanNvbl9vdXRbImRh + dGFfcG9vbHMiXVswXQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAjIGlmIHRoZXJlIGFy + ZSBtb3JlIHRoYW4gb25lICdkYXRhX3Bvb2xzJyBleGlzdCwKICAgICAgICAgICAgIyB0aGVuIHdh + cm4gdGhlIHVzZXIgdGhhdCB3ZSBhcmUgdXNpbmcgdGhlIHNlbGVjdGVkIG5hbWUKICAgICAgICAg + ICAgaWYgbGVuKG1hdGNoaW5nX2pzb25fb3V0WyJkYXRhX3Bvb2xzIl0pID4gMToKICAgICAgICAg + ICAgICAgIHByaW50KAogICAgICAgICAgICAgICAgICAgICJXQVJOSU5HOiBNdWx0aXBsZSBkYXRh + IHBvb2xzIGRldGVjdGVkOiAiCiAgICAgICAgICAgICAgICAgICAgZiJ7W3N0cih4KSBmb3IgeCBp + biBtYXRjaGluZ19qc29uX291dFsnZGF0YV9wb29scyddXX1cbiIKICAgICAgICAgICAgICAgICAg + ICBmIlVzaW5nIHRoZSBkYXRhLXBvb2w6ICd7c2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZGF0YV9w + b29sX25hbWV9J1xuIgogICAgICAgICAgICAgICAgKQoKICAgIGRlZiBjcmVhdGVfY2hlY2tlcktl + eShzZWxmLCB1c2VyKToKICAgICAgICBjYXBzLCBlbnRpdHkgPSBzZWxmLmdldF9jYXBzX2FuZF9l + bnRpdHkodXNlcikKICAgICAgICBjbWRfanNvbiA9IHsKICAgICAgICAgICAgInByZWZpeCI6ICJh + dXRoIGdldC1vci1jcmVhdGUiLAogICAgICAgICAgICAiZW50aXR5IjogZW50aXR5LAogICAgICAg + ICAgICAiY2FwcyI6IFtjYXAgZm9yIGNhcF9saXN0IGluIGxpc3QoY2Fwcy5pdGVtcygpKSBmb3Ig + Y2FwIGluIGNhcF9saXN0XSwKICAgICAgICAgICAgImZvcm1hdCI6ICJqc29uIiwKICAgICAgICB9 + CgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIuZHJ5X3J1bjoKICAgICAgICAgICAgcmV0dXJu + IHNlbGYuZHJ5X3J1bigKICAgICAgICAgICAgICAgICJjZXBoICIKICAgICAgICAgICAgICAgICsg + Y21kX2pzb25bInByZWZpeCJdCiAgICAgICAgICAgICAgICArICIgIgogICAgICAgICAgICAgICAg + KyBjbWRfanNvblsiZW50aXR5Il0KICAgICAgICAgICAgICAgICsgIiAiCiAgICAgICAgICAgICAg + ICArICIgIi5qb2luKGNtZF9qc29uWyJjYXBzIl0pCiAgICAgICAgICAgICkKICAgICAgICAjIGNo + ZWNrIGlmIHVzZXIgYWxyZWFkeSBleGlzdAogICAgICAgIHVzZXJfa2V5ID0gc2VsZi5jaGVja191 + c2VyX2V4aXN0KGVudGl0eSkKICAgICAgICBpZiB1c2VyX2tleSAhPSAiIjoKICAgICAgICAgICAg + cmV0dXJuIHVzZXJfa2V5CgogICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2Vs + Zi5fY29tbW9uX2NtZF9qc29uX2dlbihjbWRfanNvbikKICAgICAgICAjIGlmIHRoZXJlIGlzIGFu + IHVuc3VjY2Vzc2Z1bCBhdHRlbXB0LAogICAgICAgIGlmIHJldF92YWwgIT0gMCBvciBsZW4oanNv + bl9vdXQpID09IDA6CiAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24o + CiAgICAgICAgICAgICAgICBmIidhdXRoIGdldC1vci1jcmVhdGUge3NlbGYucnVuX2FzX3VzZXJ9 + JyBjb21tYW5kIGZhaWxlZFxuIgogICAgICAgICAgICAgICAgZiJFcnJvcjoge2Vycl9tc2cgaWYg + cmV0X3ZhbCAhPSAwIGVsc2Ugc2VsZi5FTVBUWV9PVVRQVVRfTElTVH0iCiAgICAgICAgICAgICkK + ICAgICAgICByZXR1cm4gc3RyKGpzb25fb3V0WzBdWyJrZXkiXSkKCiAgICBkZWYgZ2V0X2NlcGhf + ZGFzaGJvYXJkX2xpbmsoc2VsZik6CiAgICAgICAgY21kX2pzb24gPSB7InByZWZpeCI6ICJtZ3Ig + c2VydmljZXMiLCAiZm9ybWF0IjogImpzb24ifQogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIu + ZHJ5X3J1bjoKICAgICAgICAgICAgcmV0dXJuIHNlbGYuZHJ5X3J1bigiY2VwaCAiICsgY21kX2pz + b25bInByZWZpeCJdKQogICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBfID0gc2VsZi5fY29tbW9u + X2NtZF9qc29uX2dlbihjbWRfanNvbikKICAgICAgICAjIGlmIHRoZXJlIGlzIGFuIHVuc3VjY2Vz + c2Z1bCBhdHRlbXB0LAogICAgICAgIGlmIHJldF92YWwgIT0gMCBvciBsZW4oanNvbl9vdXQpID09 + IDA6CiAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgaWYgImRhc2hib2FyZCIgbm90IGlu + IGpzb25fb3V0OgogICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgIHJldHVybiBqc29uX291 + dFsiZGFzaGJvYXJkIl0KCiAgICBkZWYgY3JlYXRlX3Jnd19hZG1pbl9vcHNfdXNlcihzZWxmKToK + ICAgICAgICBjbWQgPSBbCiAgICAgICAgICAgICJyYWRvc2d3LWFkbWluIiwKICAgICAgICAgICAg + InVzZXIiLAogICAgICAgICAgICAiY3JlYXRlIiwKICAgICAgICAgICAgIi0tdWlkIiwKICAgICAg + ICAgICAgc2VsZi5FWFRFUk5BTF9SR1dfQURNSU5fT1BTX1VTRVJfTkFNRSwKICAgICAgICAgICAg + Ii0tZGlzcGxheS1uYW1lIiwKICAgICAgICAgICAgIlJvb2sgUkdXIEFkbWluIE9wcyB1c2VyIiwK + ICAgICAgICAgICAgIi0tY2FwcyIsCiAgICAgICAgICAgICJidWNrZXRzPSo7dXNlcnM9Kjt1c2Fn + ZT1yZWFkO21ldGFkYXRhPXJlYWQ7em9uZT1yZWFkIiwKICAgICAgICAgICAgIi0tcmd3LXJlYWxt + IiwKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcmVhbG1fbmFtZSwKICAgICAgICAg + ICAgIi0tcmd3LXpvbmVncm91cCIsCiAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pv + bmVncm91cF9uYW1lLAogICAgICAgICAgICAiLS1yZ3ctem9uZSIsCiAgICAgICAgICAgIHNlbGYu + X2FyZ19wYXJzZXIucmd3X3pvbmVfbmFtZSwKICAgICAgICBdCiAgICAgICAgaWYgc2VsZi5fYXJn + X3BhcnNlci5kcnlfcnVuOgogICAgICAgICAgICByZXR1cm4gc2VsZi5kcnlfcnVuKCJjZXBoICIg + KyAiICIuam9pbihjbWQpKQogICAgICAgIHRyeToKICAgICAgICAgICAgb3V0cHV0ID0gc3VicHJv + Y2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgIGV4 + Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBleGVjRXJyOgogICAgICAgICAg + ICAjIGlmIHRoZSB1c2VyIGFscmVhZHkgZXhpc3RzLCB3ZSBqdXN0IHF1ZXJ5IGl0CiAgICAgICAg + ICAgIGlmIGV4ZWNFcnIucmV0dXJuY29kZSA9PSBlcnJuby5FRVhJU1Q6CiAgICAgICAgICAgICAg + ICBjbWQgPSBbCiAgICAgICAgICAgICAgICAgICAgInJhZG9zZ3ctYWRtaW4iLAogICAgICAgICAg + ICAgICAgICAgICJ1c2VyIiwKICAgICAgICAgICAgICAgICAgICAiaW5mbyIsCiAgICAgICAgICAg + ICAgICAgICAgIi0tdWlkIiwKICAgICAgICAgICAgICAgICAgICBzZWxmLkVYVEVSTkFMX1JHV19B + RE1JTl9PUFNfVVNFUl9OQU1FLAogICAgICAgICAgICAgICAgICAgICItLXJndy1yZWFsbSIsCiAg + ICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcmVhbG1fbmFtZSwKICAgICAg + ICAgICAgICAgICAgICAiLS1yZ3ctem9uZWdyb3VwIiwKICAgICAgICAgICAgICAgICAgICBzZWxm + Ll9hcmdfcGFyc2VyLnJnd196b25lZ3JvdXBfbmFtZSwKICAgICAgICAgICAgICAgICAgICAiLS1y + Z3ctem9uZSIsCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfem9uZV9u + YW1lLAogICAgICAgICAgICAgICAgXQogICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAg + ICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnBy + b2Nlc3MuUElQRSkKICAgICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nl + c3NFcnJvciBhcyBleGVjRXJyOgogICAgICAgICAgICAgICAgICAgIGVycl9tc2cgPSAoCiAgICAg + ICAgICAgICAgICAgICAgICAgIGYiZmFpbGVkIHRvIGV4ZWN1dGUgY29tbWFuZCB7Y21kfS4gT3V0 + cHV0OiB7ZXhlY0Vyci5vdXRwdXR9LiAiCiAgICAgICAgICAgICAgICAgICAgICAgIGYiQ29kZTog + e2V4ZWNFcnIucmV0dXJuY29kZX0uIEVycm9yOiB7ZXhlY0Vyci5zdGRlcnJ9IgogICAgICAgICAg + ICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGVycl9tc2cp + CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIEZhbHNlLCAiLTEiCiAgICAg + ICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBlcnJfbXNnID0gKAogICAgICAgICAgICAgICAg + ICAgIGYiZmFpbGVkIHRvIGV4ZWN1dGUgY29tbWFuZCB7Y21kfS4gT3V0cHV0OiB7ZXhlY0Vyci5v + dXRwdXR9LiAiCiAgICAgICAgICAgICAgICAgICAgZiJDb2RlOiB7ZXhlY0Vyci5yZXR1cm5jb2Rl + fS4gRXJyb3I6IHtleGVjRXJyLnN0ZGVycn0iCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAg + ICAgICBzeXMuc3RkZXJyLndyaXRlKGVycl9tc2cpCiAgICAgICAgICAgICAgICByZXR1cm4gTm9u + ZSwgTm9uZSwgRmFsc2UsICItMSIKCiAgICAgICAgIyBpZiBpdCBpcyBweXRob24yLCBkb24ndCBj + aGVjayBmb3IgY2VwaCB2ZXJzaW9uIGZvciBhZGRpbmcgYGluZm89cmVhZGAgY2FwKHJnd192YWxp + ZGF0aW9uKQogICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPCAzOgogICAgICAgICAg + ICBqc29ub3V0cHV0ID0ganNvbi5sb2FkcyhvdXRwdXQpCiAgICAgICAgICAgIHJldHVybiAoCiAg + ICAgICAgICAgICAgICBqc29ub3V0cHV0WyJrZXlzIl1bMF1bImFjY2Vzc19rZXkiXSwKICAgICAg + ICAgICAgICAgIGpzb25vdXRwdXRbImtleXMiXVswXVsic2VjcmV0X2tleSJdLAogICAgICAgICAg + ICAgICAgRmFsc2UsCiAgICAgICAgICAgICAgICAiIiwKICAgICAgICAgICAgKQoKICAgICAgICAj + IHNlcGFyYXRlbHkgYWRkIGluZm89cmVhZCBjYXBzIGZvciByZ3ctZW5kcG9pbnQgaXAgdmFsaWRh + dGlvbgogICAgICAgIGluZm9fY2FwX3N1cHBvcnRlZCA9IFRydWUKICAgICAgICBjbWQgPSBbCiAg + ICAgICAgICAgICJyYWRvc2d3LWFkbWluIiwKICAgICAgICAgICAgImNhcHMiLAogICAgICAgICAg + ICAiYWRkIiwKICAgICAgICAgICAgIi0tdWlkIiwKICAgICAgICAgICAgc2VsZi5FWFRFUk5BTF9S + R1dfQURNSU5fT1BTX1VTRVJfTkFNRSwKICAgICAgICAgICAgIi0tY2FwcyIsCiAgICAgICAgICAg + ICJpbmZvPXJlYWQiLAogICAgICAgICAgICAiLS1yZ3ctcmVhbG0iLAogICAgICAgICAgICBzZWxm + Ll9hcmdfcGFyc2VyLnJnd19yZWFsbV9uYW1lLAogICAgICAgICAgICAiLS1yZ3ctem9uZWdyb3Vw + IiwKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfem9uZWdyb3VwX25hbWUsCiAgICAg + ICAgICAgICItLXJndy16b25lIiwKICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfem9u + ZV9uYW1lLAogICAgICAgIF0KICAgICAgICB0cnk6CiAgICAgICAgICAgIG91dHB1dCA9IHN1YnBy + b2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICBl + eGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZXhlY0VycjoKICAgICAgICAg + ICAgIyBpZiB0aGUgY2VwaCB2ZXJzaW9uIG5vdCBzdXBwb3J0ZWQgZm9yIGFkZGluZyBgaW5mbz1y + ZWFkYCBjYXAocmd3X3ZhbGlkYXRpb24pCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAg + ICJjb3VsZCBub3QgYWRkIGNhcHM6IHVuYWJsZSB0byBhZGQgY2FwczogaW5mbz1yZWFkXG4iCiAg + ICAgICAgICAgICAgICBpbiBleGVjRXJyLnN0ZGVyci5kZWNvZGUoInV0Zi04IikKICAgICAgICAg + ICAgICAgIGFuZCBleGVjRXJyLnJldHVybmNvZGUgPT0gMjQ0CiAgICAgICAgICAgICk6CiAgICAg + ICAgICAgICAgICBpbmZvX2NhcF9zdXBwb3J0ZWQgPSBGYWxzZQogICAgICAgICAgICBlbHNlOgog + ICAgICAgICAgICAgICAgZXJyX21zZyA9ICgKICAgICAgICAgICAgICAgICAgICBmImZhaWxlZCB0 + byBleGVjdXRlIGNvbW1hbmQge2NtZH0uIE91dHB1dDoge2V4ZWNFcnIub3V0cHV0fS4gIgogICAg + ICAgICAgICAgICAgICAgIGYiQ29kZToge2V4ZWNFcnIucmV0dXJuY29kZX0uIEVycm9yOiB7ZXhl + Y0Vyci5zdGRlcnJ9IgogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgc3lzLnN0ZGVy + ci53cml0ZShlcnJfbXNnKQogICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIEZhbHNl + LCAiLTEiCgogICAgICAgIGpzb25vdXRwdXQgPSBqc29uLmxvYWRzKG91dHB1dCkKICAgICAgICBy + ZXR1cm4gKAogICAgICAgICAgICBqc29ub3V0cHV0WyJrZXlzIl1bMF1bImFjY2Vzc19rZXkiXSwK + ICAgICAgICAgICAganNvbm91dHB1dFsia2V5cyJdWzBdWyJzZWNyZXRfa2V5Il0sCiAgICAgICAg + ICAgIGluZm9fY2FwX3N1cHBvcnRlZCwKICAgICAgICAgICAgIiIsCiAgICAgICAgKQoKICAgIGRl + ZiB2YWxpZGF0ZV9yYmRfcG9vbChzZWxmKToKICAgICAgICBpZiBub3Qgc2VsZi5jbHVzdGVyLnBv + b2xfZXhpc3RzKHNlbGYuX2FyZ19wYXJzZXIucmJkX2RhdGFfcG9vbF9uYW1lKToKICAgICAgICAg + ICAgcmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgIGYiVGhl + IHByb3ZpZGVkIHBvb2wsICd7c2VsZi5fYXJnX3BhcnNlci5yYmRfZGF0YV9wb29sX25hbWV9Jywg + ZG9lcyBub3QgZXhpc3QiCiAgICAgICAgICAgICkKCiAgICBkZWYgdmFsaWRhdGVfcmFkb3NfbmFt + ZXNwYWNlKHNlbGYpOgogICAgICAgIHJiZF9wb29sX25hbWUgPSBzZWxmLl9hcmdfcGFyc2VyLnJi + ZF9kYXRhX3Bvb2xfbmFtZQogICAgICAgIHJhZG9zX25hbWVzcGFjZSA9IHNlbGYuX2FyZ19wYXJz + ZXIucmFkb3NfbmFtZXNwYWNlCiAgICAgICAgaWYgcmFkb3NfbmFtZXNwYWNlID09ICIiOgogICAg + ICAgICAgICByZXR1cm4KICAgICAgICByYmRfaW5zdCA9IHJiZC5SQkQoKQogICAgICAgIGlvY3R4 + ID0gc2VsZi5jbHVzdGVyLm9wZW5faW9jdHgocmJkX3Bvb2xfbmFtZSkKICAgICAgICBpZiByYmRf + aW5zdC5uYW1lc3BhY2VfZXhpc3RzKGlvY3R4LCByYWRvc19uYW1lc3BhY2UpIGlzIEZhbHNlOgog + ICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9uKAogICAgICAgICAgICAg + ICAgZiJUaGUgcHJvdmlkZWQgcmFkb3MgTmFtZXNwYWNlLCAne3JhZG9zX25hbWVzcGFjZX0nLCAi + CiAgICAgICAgICAgICAgICBmImlzIG5vdCBmb3VuZCBpbiB0aGUgcG9vbCAne3JiZF9wb29sX25h + bWV9JyIKICAgICAgICAgICAgKQoKICAgIGRlZiBnZXRfb3JfY3JlYXRlX3N1YnZvbHVtZV9ncm91 + cChzZWxmLCBzdWJ2b2x1bWVfZ3JvdXAsIGNlcGhmc19maWxlc3lzdGVtX25hbWUpOgogICAgICAg + IGNtZCA9IFsKICAgICAgICAgICAgImNlcGgiLAogICAgICAgICAgICAiZnMiLAogICAgICAgICAg + ICAic3Vidm9sdW1lZ3JvdXAiLAogICAgICAgICAgICAiZ2V0cGF0aCIsCiAgICAgICAgICAgIGNl + cGhmc19maWxlc3lzdGVtX25hbWUsCiAgICAgICAgICAgIHN1YnZvbHVtZV9ncm91cCwKICAgICAg + ICBdCiAgICAgICAgdHJ5OgogICAgICAgICAgICBfID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQo + Y21kLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNh + bGxlZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgY21kID0gWwogICAgICAgICAgICAgICAgImNl + cGgiLAogICAgICAgICAgICAgICAgImZzIiwKICAgICAgICAgICAgICAgICJzdWJ2b2x1bWVncm91 + cCIsCiAgICAgICAgICAgICAgICAiY3JlYXRlIiwKICAgICAgICAgICAgICAgIGNlcGhmc19maWxl + c3lzdGVtX25hbWUsCiAgICAgICAgICAgICAgICBzdWJ2b2x1bWVfZ3JvdXAsCiAgICAgICAgICAg + IF0KICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgXyA9IHN1YnByb2Nlc3MuY2hlY2tf + b3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKICAgICAgICAgICAgZXhjZXB0IHN1 + YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgogICAgICAgICAgICAgICAgcmFpc2UgRXhlY3V0 + aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICBmInN1YnZvbHVtZSBncm91 + cCB7c3Vidm9sdW1lX2dyb3VwfSBpcyBub3QgYWJsZSB0byBnZXQgY3JlYXRlZCIKICAgICAgICAg + ICAgICAgICkKCiAgICBkZWYgcGluX3N1YnZvbHVtZSgKICAgICAgICBzZWxmLCBzdWJ2b2x1bWVf + Z3JvdXAsIGNlcGhmc19maWxlc3lzdGVtX25hbWUsIHBpbl90eXBlLCBwaW5fc2V0dGluZwogICAg + KToKICAgICAgICBjbWQgPSBbCiAgICAgICAgICAgICJjZXBoIiwKICAgICAgICAgICAgImZzIiwK + ICAgICAgICAgICAgInN1YnZvbHVtZWdyb3VwIiwKICAgICAgICAgICAgInBpbiIsCiAgICAgICAg + ICAgIGNlcGhmc19maWxlc3lzdGVtX25hbWUsCiAgICAgICAgICAgIHN1YnZvbHVtZV9ncm91cCwK + ICAgICAgICAgICAgcGluX3R5cGUsCiAgICAgICAgICAgIHBpbl9zZXR0aW5nLAogICAgICAgIF0K + ICAgICAgICB0cnk6CiAgICAgICAgICAgIF8gPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQs + IHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCiAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVk + UHJvY2Vzc0Vycm9yOgogICAgICAgICAgICByYWlzZSBFeGVjdXRpb25GYWlsdXJlRXhjZXB0aW9u + KAogICAgICAgICAgICAgICAgZiJzdWJ2b2x1bWUgZ3JvdXAge3N1YnZvbHVtZV9ncm91cH0gaXMg + bm90IGFibGUgdG8gZ2V0IHBpbm5lZCIKICAgICAgICAgICAgKQoKICAgIGRlZiBnZXRfcmd3X2Zz + aWQoc2VsZiwgYmFzZV91cmwsIHZlcmlmeSk6CiAgICAgICAgYWNjZXNzX2tleSA9IHNlbGYub3V0 + X21hcFsiUkdXX0FETUlOX09QU19VU0VSX0FDQ0VTU19LRVkiXQogICAgICAgIHNlY3JldF9rZXkg + PSBzZWxmLm91dF9tYXBbIlJHV19BRE1JTl9PUFNfVVNFUl9TRUNSRVRfS0VZIl0KICAgICAgICBy + Z3dfZW5kcG9pbnQgPSBzZWxmLl9hcmdfcGFyc2VyLnJnd19lbmRwb2ludAogICAgICAgIGJhc2Vf + dXJsID0gYmFzZV91cmwgKyAiOi8vIiArIHJnd19lbmRwb2ludCArICIvYWRtaW4vaW5mbz8iCiAg + ICAgICAgcGFyYW1zID0geyJmb3JtYXQiOiAianNvbiJ9CiAgICAgICAgcmVxdWVzdF91cmwgPSBi + YXNlX3VybCArIHVybGVuY29kZShwYXJhbXMpCgogICAgICAgIHRyeToKICAgICAgICAgICAgciA9 + IHJlcXVlc3RzLmdldCgKICAgICAgICAgICAgICAgIHJlcXVlc3RfdXJsLAogICAgICAgICAgICAg + ICAgYXV0aD1TM0F1dGgoYWNjZXNzX2tleSwgc2VjcmV0X2tleSwgcmd3X2VuZHBvaW50KSwKICAg + ICAgICAgICAgICAgIHZlcmlmeT12ZXJpZnksCiAgICAgICAgICAgICkKICAgICAgICBleGNlcHQg + cmVxdWVzdHMuZXhjZXB0aW9ucy5UaW1lb3V0OgogICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl + KAogICAgICAgICAgICAgICAgZiJpbnZhbGlkIGVuZHBvaW50Oiwgbm90IGFibGUgdG8gY2FsbCBh + ZG1pbi1vcHMgYXBpe3Jnd19lbmRwb2ludH0iCiAgICAgICAgICAgICkKICAgICAgICAgICAgcmV0 + dXJuICIiLCAiLTEiCiAgICAgICAgcjEgPSByLmpzb24oKQogICAgICAgIGlmIHIxIGlzIE5vbmUg + b3IgcjEuZ2V0KCJpbmZvIikgaXMgTm9uZToKICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgK + ICAgICAgICAgICAgICAgIGYiVGhlIHByb3ZpZGVkIHJndyBFbmRwb2ludCwgJ3tzZWxmLl9hcmdf + cGFyc2VyLnJnd19lbmRwb2ludH0nLCBpcyBpbnZhbGlkLiIKICAgICAgICAgICAgKQogICAgICAg + ICAgICByZXR1cm4gKAogICAgICAgICAgICAgICAgIiIsCiAgICAgICAgICAgICAgICAiLTEiLAog + ICAgICAgICAgICApCgogICAgICAgIHJldHVybiByMVsiaW5mbyJdWyJzdG9yYWdlX2JhY2tlbmRz + Il1bMF1bImNsdXN0ZXJfaWQiXSwgIiIKCiAgICBkZWYgdmFsaWRhdGVfcmd3X2VuZHBvaW50KHNl + bGYsIGluZm9fY2FwX3N1cHBvcnRlZCk6CiAgICAgICAgIyBpZiB0aGUgJ2NsdXN0ZXInIGluc3Rh + bmNlIGlzIGEgZHVtbXkgb25lLAogICAgICAgICMgZG9uJ3QgdHJ5IHRvIHJlYWNoIG91dCB0byB0 + aGUgZW5kcG9pbnQKICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuY2x1c3RlciwgRHVtbXlSYWRv + cyk6CiAgICAgICAgICAgIHJldHVybgoKICAgICAgICByZ3dfZW5kcG9pbnQgPSBzZWxmLl9hcmdf + cGFyc2VyLnJnd19lbmRwb2ludAoKICAgICAgICAjIHZhbGlkYXRlIHJndyBlbmRwb2ludCBvbmx5 + IGlmIGlwIGFkZHJlc3MgaXMgcGFzc2VkCiAgICAgICAgaXBfdHlwZSA9IHNlbGYuX2ludmFsaWRf + ZW5kcG9pbnQocmd3X2VuZHBvaW50KQoKICAgICAgICAjIGNoZWNrIGlmIHRoZSByZ3cgZW5kcG9p + bnQgaXMgcmVhY2hhYmxlCiAgICAgICAgY2VydCA9IE5vbmUKICAgICAgICBpZiBub3Qgc2VsZi5f + YXJnX3BhcnNlci5yZ3dfc2tpcF90bHMgYW5kIHNlbGYudmFsaWRhdGVfcmd3X2VuZHBvaW50X3Rs + c19jZXJ0KCk6CiAgICAgICAgICAgIGNlcnQgPSBzZWxmLl9hcmdfcGFyc2VyLnJnd190bHNfY2Vy + dF9wYXRoCiAgICAgICAgYmFzZV91cmwsIHZlcmlmeSwgZXJyID0gc2VsZi5lbmRwb2ludF9kaWFs + KHJnd19lbmRwb2ludCwgaXBfdHlwZSwgY2VydD1jZXJ0KQogICAgICAgIGlmIGVyciAhPSAiIjoK + ICAgICAgICAgICAgcmV0dXJuICItMSIKCiAgICAgICAgIyBjaGVjayBpZiB0aGUgcmd3IGVuZHBv + aW50IGJlbG9uZ3MgdG8gdGhlIHNhbWUgY2x1c3RlcgogICAgICAgICMgb25seSBjaGVjayBpZiBg + aW5mb2AgY2FwIGlzIHN1cHBvcnRlZAogICAgICAgIGlmIGluZm9fY2FwX3N1cHBvcnRlZDoKICAg + ICAgICAgICAgZnNpZCA9IHNlbGYuZ2V0X2ZzaWQoKQogICAgICAgICAgICByZ3dfZnNpZCwgZXJy + ID0gc2VsZi5nZXRfcmd3X2ZzaWQoYmFzZV91cmwsIHZlcmlmeSkKICAgICAgICAgICAgaWYgZXJy + ID09ICItMSI6CiAgICAgICAgICAgICAgICByZXR1cm4gIi0xIgogICAgICAgICAgICBpZiBmc2lk + ICE9IHJnd19mc2lkOgogICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKICAgICAgICAg + ICAgICAgICAgICBmIlRoZSBwcm92aWRlZCByZ3cgRW5kcG9pbnQsICd7c2VsZi5fYXJnX3BhcnNl + ci5yZ3dfZW5kcG9pbnR9JywgaXMgaW52YWxpZC4gV2UgYXJlIHZhbGlkYXRpbmcgYnkgY2FsbGlu + ZyB0aGUgYWRtaW5vcHMgYXBpIHRocm91Z2ggcmd3LWVuZHBvaW50IGFuZCB2YWxpZGF0aW5nIHRo + ZSBjbHVzdGVyX2lkICd7cmd3X2ZzaWR9JyBpcyBlcXVhbCB0byB0aGUgY2VwaCBjbHVzdGVyIGZz + aWQgJ3tmc2lkfSciCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICByZXR1cm4gIi0x + IgoKICAgICAgICAjIGNoZWNrIGlmIHRoZSByZ3cgZW5kcG9pbnQgcG9vbCBleGlzdAogICAgICAg + ICMgb25seSB2YWxpZGF0ZSBpZiByZ3dfcG9vbF9wcmVmaXggaXMgcGFzc2VkIGVsc2UgaXQgd2ls + bCB0YWtlIGRlZmF1bHQgdmFsdWUgYW5kIHdlIGRvbid0IGNyZWF0ZSB0aGVzZSBkZWZhdWx0IHBv + b2xzCiAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcG9vbF9wcmVmaXggIT0gImRlZmF1 + bHQiOgogICAgICAgICAgICByZ3dfcG9vbHNfdG9fdmFsaWRhdGUgPSBbCiAgICAgICAgICAgICAg + ICBmIntzZWxmLl9hcmdfcGFyc2VyLnJnd19wb29sX3ByZWZpeH0ucmd3Lm1ldGEiLAogICAgICAg + ICAgICAgICAgIi5yZ3cucm9vdCIsCiAgICAgICAgICAgICAgICBmIntzZWxmLl9hcmdfcGFyc2Vy + LnJnd19wb29sX3ByZWZpeH0ucmd3LmNvbnRyb2wiLAogICAgICAgICAgICAgICAgZiJ7c2VsZi5f + YXJnX3BhcnNlci5yZ3dfcG9vbF9wcmVmaXh9LnJndy5sb2ciLAogICAgICAgICAgICBdCiAgICAg + ICAgICAgIGZvciBfcmd3X3Bvb2xfdG9fdmFsaWRhdGUgaW4gcmd3X3Bvb2xzX3RvX3ZhbGlkYXRl + OgogICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuY2x1c3Rlci5wb29sX2V4aXN0cyhfcmd3X3Bv + b2xfdG9fdmFsaWRhdGUpOgogICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCiAg + ICAgICAgICAgICAgICAgICAgICAgIGYiVGhlIHByb3ZpZGVkIHBvb2wsICd7X3Jnd19wb29sX3Rv + X3ZhbGlkYXRlfScsIGRvZXMgbm90IGV4aXN0IgogICAgICAgICAgICAgICAgICAgICkKICAgICAg + ICAgICAgICAgICAgICByZXR1cm4gIi0xIgoKICAgICAgICByZXR1cm4gIiIKCiAgICBkZWYgdmFs + aWRhdGVfcmd3X211bHRpc2l0ZShzZWxmLCByZ3dfbXVsdGlzaXRlX2NvbmZpZ19uYW1lLCByZ3df + bXVsdGlzaXRlX2NvbmZpZyk6CiAgICAgICAgaWYgcmd3X211bHRpc2l0ZV9jb25maWcgIT0gIiI6 + CiAgICAgICAgICAgIGNtZCA9IFsKICAgICAgICAgICAgICAgICJyYWRvc2d3LWFkbWluIiwKICAg + ICAgICAgICAgICAgIHJnd19tdWx0aXNpdGVfY29uZmlnLAogICAgICAgICAgICAgICAgImdldCIs + CiAgICAgICAgICAgICAgICAiLS1yZ3ctIiArIHJnd19tdWx0aXNpdGVfY29uZmlnLAogICAgICAg + ICAgICAgICAgcmd3X211bHRpc2l0ZV9jb25maWdfbmFtZSwKICAgICAgICAgICAgXQogICAgICAg + ICAgICB0cnk6CiAgICAgICAgICAgICAgICBfID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21k + LCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5D + YWxsZWRQcm9jZXNzRXJyb3IgYXMgZXhlY0VycjoKICAgICAgICAgICAgICAgIGVycl9tc2cgPSAo + CiAgICAgICAgICAgICAgICAgICAgZiJmYWlsZWQgdG8gZXhlY3V0ZSBjb21tYW5kIHtjbWR9LiBP + dXRwdXQ6IHtleGVjRXJyLm91dHB1dH0uICIKICAgICAgICAgICAgICAgICAgICBmIkNvZGU6IHtl + eGVjRXJyLnJldHVybmNvZGV9LiBFcnJvcjoge2V4ZWNFcnIuc3RkZXJyfSIKICAgICAgICAgICAg + ICAgICkKICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZXJyX21zZykKICAgICAgICAg + ICAgICAgIHJldHVybiAiLTEiCiAgICAgICAgcmV0dXJuICIiCgogICAgZGVmIF9nZW5fb3V0cHV0 + X21hcChzZWxmKToKICAgICAgICBpZiBzZWxmLm91dF9tYXA6CiAgICAgICAgICAgIHJldHVybgog + ICAgICAgIHNlbGYuX2FyZ19wYXJzZXIuazhzX2NsdXN0ZXJfbmFtZSA9ICgKICAgICAgICAgICAg + c2VsZi5fYXJnX3BhcnNlci5rOHNfY2x1c3Rlcl9uYW1lLmxvd2VyKCkKICAgICAgICApICAjIGFs + d2F5cyBjb252ZXJ0IGNsdXN0ZXIgbmFtZSB0byBsb3dlcmNhc2UgY2hhcmFjdGVycwogICAgICAg + IHNlbGYudmFsaWRhdGVfcmJkX3Bvb2woKQogICAgICAgIHNlbGYudmFsaWRhdGVfcmFkb3NfbmFt + ZXNwYWNlKCkKICAgICAgICBzZWxmLl9leGNsdWRlZF9rZXlzLmFkZCgiSzhTX0NMVVNURVJfTkFN + RSIpCiAgICAgICAgc2VsZi5nZXRfY2VwaGZzX2RhdGFfcG9vbF9kZXRhaWxzKCkKICAgICAgICBz + ZWxmLm91dF9tYXBbIk5BTUVTUEFDRSJdID0gc2VsZi5fYXJnX3BhcnNlci5uYW1lc3BhY2UKICAg + ICAgICBzZWxmLm91dF9tYXBbIks4U19DTFVTVEVSX05BTUUiXSA9IHNlbGYuX2FyZ19wYXJzZXIu + azhzX2NsdXN0ZXJfbmFtZQogICAgICAgIHNlbGYub3V0X21hcFsiUk9PS19FWFRFUk5BTF9GU0lE + Il0gPSBzZWxmLmdldF9mc2lkKCkKICAgICAgICBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxf + VVNFUk5BTUUiXSA9IHNlbGYucnVuX2FzX3VzZXIKICAgICAgICBzZWxmLm91dF9tYXBbIlJPT0tf + RVhURVJOQUxfQ0VQSF9NT05fREFUQSJdID0gc2VsZi5nZXRfY2VwaF9leHRlcm5hbF9tb25fZGF0 + YSgpCiAgICAgICAgc2VsZi5vdXRfbWFwWyJST09LX0VYVEVSTkFMX1VTRVJfU0VDUkVUIl0gPSBz + ZWxmLmNyZWF0ZV9jaGVja2VyS2V5KAogICAgICAgICAgICAiY2xpZW50LmhlYWx0aGNoZWNrZXIi + CiAgICAgICAgKQogICAgICAgIHNlbGYub3V0X21hcFsiUk9PS19FWFRFUk5BTF9EQVNIQk9BUkRf + TElOSyJdID0gc2VsZi5nZXRfY2VwaF9kYXNoYm9hcmRfbGluaygpCiAgICAgICAgKAogICAgICAg + ICAgICBzZWxmLm91dF9tYXBbIkNTSV9SQkRfTk9ERV9TRUNSRVQiXSwKICAgICAgICAgICAgc2Vs + Zi5vdXRfbWFwWyJDU0lfUkJEX05PREVfU0VDUkVUX05BTUUiXSwKICAgICAgICApID0gc2VsZi5j + cmVhdGVfY2VwaENTSUtleXJpbmdfdXNlcigiY2xpZW50LmNzaS1yYmQtbm9kZSIpCiAgICAgICAg + KAogICAgICAgICAgICBzZWxmLm91dF9tYXBbIkNTSV9SQkRfUFJPVklTSU9ORVJfU0VDUkVUIl0s + CiAgICAgICAgICAgIHNlbGYub3V0X21hcFsiQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVRfTkFN + RSJdLAogICAgICAgICkgPSBzZWxmLmNyZWF0ZV9jZXBoQ1NJS2V5cmluZ191c2VyKCJjbGllbnQu + Y3NpLXJiZC1wcm92aXNpb25lciIpCiAgICAgICAgc2VsZi5vdXRfbWFwWyJDRVBIRlNfUE9PTF9O + QU1FIl0gPSBzZWxmLl9hcmdfcGFyc2VyLmNlcGhmc19kYXRhX3Bvb2xfbmFtZQogICAgICAgIHNl + bGYub3V0X21hcFsKICAgICAgICAgICAgIkNFUEhGU19NRVRBREFUQV9QT09MX05BTUUiCiAgICAg + ICAgXSA9IHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX21ldGFkYXRhX3Bvb2xfbmFtZQogICAgICAg + IHNlbGYub3V0X21hcFsiQ0VQSEZTX0ZTX05BTUUiXSA9IHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZz + X2ZpbGVzeXN0ZW1fbmFtZQogICAgICAgIHNlbGYub3V0X21hcFsKICAgICAgICAgICAgIlJFU1RS + SUNURURfQVVUSF9QRVJNSVNTSU9OIgogICAgICAgIF0gPSBzZWxmLl9hcmdfcGFyc2VyLnJlc3Ry + aWN0ZWRfYXV0aF9wZXJtaXNzaW9uCiAgICAgICAgc2VsZi5vdXRfbWFwWyJSQURPU19OQU1FU1BB + Q0UiXSA9IHNlbGYuX2FyZ19wYXJzZXIucmFkb3NfbmFtZXNwYWNlCiAgICAgICAgc2VsZi5vdXRf + bWFwWyJTVUJWT0xVTUVfR1JPVVAiXSA9IHNlbGYuX2FyZ19wYXJzZXIuc3Vidm9sdW1lX2dyb3Vw + CiAgICAgICAgc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZTX05PREVfU0VDUkVUIl0gPSAiIgogICAg + ICAgIHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19QUk9WSVNJT05FUl9TRUNSRVQiXSA9ICIiCiAg + ICAgICAgIyBjcmVhdGUgQ2VwaEZTIG5vZGUgYW5kIHByb3Zpc2lvbmVyIGtleXJpbmcgb25seSB3 + aGVuIE1EUyBleGlzdHMKICAgICAgICBpZiBzZWxmLm91dF9tYXBbIkNFUEhGU19GU19OQU1FIl0g + YW5kIHNlbGYub3V0X21hcFsiQ0VQSEZTX1BPT0xfTkFNRSJdOgogICAgICAgICAgICAoCiAgICAg + ICAgICAgICAgICBzZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfTk9ERV9TRUNSRVQiXSwKICAgICAg + ICAgICAgICAgIHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19OT0RFX1NFQ1JFVF9OQU1FIl0sCiAg + ICAgICAgICAgICkgPSBzZWxmLmNyZWF0ZV9jZXBoQ1NJS2V5cmluZ191c2VyKCJjbGllbnQuY3Np + LWNlcGhmcy1ub2RlIikKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgc2VsZi5vdXRfbWFw + WyJDU0lfQ0VQSEZTX1BST1ZJU0lPTkVSX1NFQ1JFVCJdLAogICAgICAgICAgICAgICAgc2VsZi5v + dXRfbWFwWyJDU0lfQ0VQSEZTX1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FIl0sCiAgICAgICAgICAg + ICkgPSBzZWxmLmNyZWF0ZV9jZXBoQ1NJS2V5cmluZ191c2VyKCJjbGllbnQuY3NpLWNlcGhmcy1w + cm92aXNpb25lciIpCiAgICAgICAgICAgICMgY3JlYXRlIHRoZSBkZWZhdWx0ICJjc2kiIHN1YnZv + bHVtZWdyb3VwCiAgICAgICAgICAgIHNlbGYuZ2V0X29yX2NyZWF0ZV9zdWJ2b2x1bWVfZ3JvdXAo + CiAgICAgICAgICAgICAgICAiY3NpIiwgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNfZmlsZXN5c3Rl + bV9uYW1lCiAgICAgICAgICAgICkKICAgICAgICAgICAgIyBwaW4gdGhlIGRlZmF1bHQgImNzaSIg + c3Vidm9sdW1lZ3JvdXAKICAgICAgICAgICAgc2VsZi5waW5fc3Vidm9sdW1lKAogICAgICAgICAg + ICAgICAgImNzaSIsIHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2ZpbGVzeXN0ZW1fbmFtZSwgImRp + c3RyaWJ1dGVkIiwgIjEiCiAgICAgICAgICAgICkKICAgICAgICAgICAgaWYgc2VsZi5vdXRfbWFw + WyJTVUJWT0xVTUVfR1JPVVAiXToKICAgICAgICAgICAgICAgIHNlbGYuZ2V0X29yX2NyZWF0ZV9z + dWJ2b2x1bWVfZ3JvdXAoCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5zdWJ2 + b2x1bWVfZ3JvdXAsCiAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5jZXBoZnNf + ZmlsZXN5c3RlbV9uYW1lLAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgc2VsZi5w + aW5fc3Vidm9sdW1lKAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIuc3Vidm9s + dW1lX2dyb3VwLAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIuY2VwaGZzX2Zp + bGVzeXN0ZW1fbmFtZSwKICAgICAgICAgICAgICAgICAgICAiZGlzdHJpYnV0ZWQiLAogICAgICAg + ICAgICAgICAgICAgICIxIiwKICAgICAgICAgICAgICAgICkKICAgICAgICBzZWxmLm91dF9tYXBb + IlJHV19UTFNfQ0VSVCJdID0gIiIKICAgICAgICBzZWxmLm91dF9tYXBbIk1PTklUT1JJTkdfRU5E + UE9JTlQiXSA9ICIiCiAgICAgICAgc2VsZi5vdXRfbWFwWyJNT05JVE9SSU5HX0VORFBPSU5UX1BP + UlQiXSA9ICIiCiAgICAgICAgaWYgbm90IHNlbGYuX2FyZ19wYXJzZXIuc2tpcF9tb25pdG9yaW5n + X2VuZHBvaW50OgogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICBzZWxmLm91dF9tYXBbIk1P + TklUT1JJTkdfRU5EUE9JTlQiXSwKICAgICAgICAgICAgICAgIHNlbGYub3V0X21hcFsiTU9OSVRP + UklOR19FTkRQT0lOVF9QT1JUIl0sCiAgICAgICAgICAgICkgPSBzZWxmLmdldF9hY3RpdmVfYW5k + X3N0YW5kYnlfbWdycygpCiAgICAgICAgc2VsZi5vdXRfbWFwWyJSQkRfUE9PTF9OQU1FIl0gPSBz + ZWxmLl9hcmdfcGFyc2VyLnJiZF9kYXRhX3Bvb2xfbmFtZQogICAgICAgIHNlbGYub3V0X21hcFsK + ICAgICAgICAgICAgIlJCRF9NRVRBREFUQV9FQ19QT09MX05BTUUiCiAgICAgICAgXSA9IHNlbGYu + dmFsaWRhdGVfcmJkX21ldGFkYXRhX2VjX3Bvb2xfbmFtZSgpCiAgICAgICAgc2VsZi5vdXRfbWFw + WyJSR1dfUE9PTF9QUkVGSVgiXSA9IHNlbGYuX2FyZ19wYXJzZXIucmd3X3Bvb2xfcHJlZml4CiAg + ICAgICAgc2VsZi5vdXRfbWFwWyJSR1dfRU5EUE9JTlQiXSA9ICIiCiAgICAgICAgaWYgc2VsZi5f + YXJnX3BhcnNlci5yZ3dfZW5kcG9pbnQ6CiAgICAgICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIu + ZHJ5X3J1bjoKICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX3Jnd19hZG1pbl9vcHNfdXNlcigp + CiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAg + ICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcmVhbG1fbmFtZSAhPSAiIgogICAgICAgICAgICAgICAg + ICAgIGFuZCBzZWxmLl9hcmdfcGFyc2VyLnJnd196b25lZ3JvdXBfbmFtZSAhPSAiIgogICAgICAg + ICAgICAgICAgICAgIGFuZCBzZWxmLl9hcmdfcGFyc2VyLnJnd196b25lX25hbWUgIT0gIiIKICAg + ICAgICAgICAgICAgICk6CiAgICAgICAgICAgICAgICAgICAgZXJyID0gc2VsZi52YWxpZGF0ZV9y + Z3dfbXVsdGlzaXRlKAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJn + d19yZWFsbV9uYW1lLCAicmVhbG0iCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAg + ICAgICAgIGVyciA9IHNlbGYudmFsaWRhdGVfcmd3X211bHRpc2l0ZSgKICAgICAgICAgICAgICAg + ICAgICAgICAgc2VsZi5fYXJnX3BhcnNlci5yZ3dfem9uZWdyb3VwX25hbWUsICJ6b25lZ3JvdXAi + CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIGVyciA9IHNlbGYudmFs + aWRhdGVfcmd3X211bHRpc2l0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYXJnX3Bh + cnNlci5yZ3dfem9uZV9uYW1lLCAiem9uZSIKICAgICAgICAgICAgICAgICAgICApCgogICAgICAg + ICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3Jl + YWxtX25hbWUgPT0gIiIKICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZi5fYXJnX3BhcnNlci5y + Z3dfem9uZWdyb3VwX25hbWUgPT0gIiIKICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZi5fYXJn + X3BhcnNlci5yZ3dfem9uZV9uYW1lID09ICIiCiAgICAgICAgICAgICAgICApIG9yICgKICAgICAg + ICAgICAgICAgICAgICBzZWxmLl9hcmdfcGFyc2VyLnJnd19yZWFsbV9uYW1lICE9ICIiCiAgICAg + ICAgICAgICAgICAgICAgYW5kIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pvbmVncm91cF9uYW1lICE9 + ICIiCiAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYuX2FyZ19wYXJzZXIucmd3X3pvbmVfbmFt + ZSAhPSAiIgogICAgICAgICAgICAgICAgKToKICAgICAgICAgICAgICAgICAgICAoCiAgICAgICAg + ICAgICAgICAgICAgICAgIHNlbGYub3V0X21hcFsiUkdXX0FETUlOX09QU19VU0VSX0FDQ0VTU19L + RVkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5vdXRfbWFwWyJSR1dfQURNSU5fT1BT + X1VTRVJfU0VDUkVUX0tFWSJdLAogICAgICAgICAgICAgICAgICAgICAgICBpbmZvX2NhcF9zdXBw + b3J0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIGVyciwKICAgICAgICAgICAgICAgICAgICAp + ID0gc2VsZi5jcmVhdGVfcmd3X2FkbWluX29wc191c2VyKCkKICAgICAgICAgICAgICAgICAgICBl + cnIgPSBzZWxmLnZhbGlkYXRlX3Jnd19lbmRwb2ludChpbmZvX2NhcF9zdXBwb3J0ZWQpCiAgICAg + ICAgICAgICAgICAgICAgaWYgc2VsZi5fYXJnX3BhcnNlci5yZ3dfdGxzX2NlcnRfcGF0aDoKICAg + ICAgICAgICAgICAgICAgICAgICAgc2VsZi5vdXRfbWFwWwogICAgICAgICAgICAgICAgICAgICAg + ICAgICAgIlJHV19UTFNfQ0VSVCIKICAgICAgICAgICAgICAgICAgICAgICAgXSA9IHNlbGYudmFs + aWRhdGVfcmd3X2VuZHBvaW50X3Rsc19jZXJ0KCkKICAgICAgICAgICAgICAgICAgICAjIGlmIHRo + ZXJlIGlzIG5vIGVycm9yLCBzZXQgdGhlIFJHV19FTkRQT0lOVAogICAgICAgICAgICAgICAgICAg + IGlmIGVyciAhPSAiLTEiOgogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm91dF9tYXBbIlJH + V19FTkRQT0lOVCJdID0gc2VsZi5fYXJnX3BhcnNlci5yZ3dfZW5kcG9pbnQKICAgICAgICAgICAg + ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgZXJyID0gIlBsZWFzZSBwcm92aWRlIGFsbCB0 + aGUgUkdXIG11bHRpc2l0ZSBwYXJhbWV0ZXJzIG9yIG5vbmUgb2YgdGhlbSIKICAgICAgICAgICAg + ICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGVycikKCiAgICBkZWYgZ2VuX3NoZWxsX291dChzZWxm + KToKICAgICAgICBzZWxmLl9nZW5fb3V0cHV0X21hcCgpCiAgICAgICAgc2hPdXRJTyA9IFN0cmlu + Z0lPKCkKICAgICAgICBmb3IgaywgdiBpbiBzZWxmLm91dF9tYXAuaXRlbXMoKToKICAgICAgICAg + ICAgaWYgdiBhbmQgayBub3QgaW4gc2VsZi5fZXhjbHVkZWRfa2V5czoKICAgICAgICAgICAgICAg + IHNoT3V0SU8ud3JpdGUoZiJleHBvcnQge2t9PXt2fXtMSU5FU0VQfSIpCiAgICAgICAgc2hPdXQg + PSBzaE91dElPLmdldHZhbHVlKCkKICAgICAgICBzaE91dElPLmNsb3NlKCkKICAgICAgICByZXR1 + cm4gc2hPdXQKCiAgICBkZWYgZ2VuX2pzb25fb3V0KHNlbGYpOgogICAgICAgIHNlbGYuX2dlbl9v + dXRwdXRfbWFwKCkKICAgICAgICBpZiBzZWxmLl9hcmdfcGFyc2VyLmRyeV9ydW46CiAgICAgICAg + ICAgIHJldHVybiAiIgogICAgICAgIGpzb25fb3V0ID0gWwogICAgICAgICAgICB7CiAgICAgICAg + ICAgICAgICAibmFtZSI6ICJyb29rLWNlcGgtbW9uLWVuZHBvaW50cyIsCiAgICAgICAgICAgICAg + ICAia2luZCI6ICJDb25maWdNYXAiLAogICAgICAgICAgICAgICAgImRhdGEiOiB7CiAgICAgICAg + ICAgICAgICAgICAgImRhdGEiOiBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxfQ0VQSF9NT05f + REFUQSJdLAogICAgICAgICAgICAgICAgICAgICJtYXhNb25JZCI6ICIwIiwKICAgICAgICAgICAg + ICAgICAgICAibWFwcGluZyI6ICJ7fSIsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9 + LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAibmFtZSI6ICJyb29rLWNlcGgtbW9uIiwK + ICAgICAgICAgICAgICAgICJraW5kIjogIlNlY3JldCIsCiAgICAgICAgICAgICAgICAiZGF0YSI6 + IHsKICAgICAgICAgICAgICAgICAgICAiYWRtaW4tc2VjcmV0IjogImFkbWluLXNlY3JldCIsCiAg + ICAgICAgICAgICAgICAgICAgImZzaWQiOiBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxfRlNJ + RCJdLAogICAgICAgICAgICAgICAgICAgICJtb24tc2VjcmV0IjogIm1vbi1zZWNyZXQiLAogICAg + ICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAg + ICAgIm5hbWUiOiAicm9vay1jZXBoLW9wZXJhdG9yLWNyZWRzIiwKICAgICAgICAgICAgICAgICJr + aW5kIjogIlNlY3JldCIsCiAgICAgICAgICAgICAgICAiZGF0YSI6IHsKICAgICAgICAgICAgICAg + ICAgICAidXNlcklEIjogc2VsZi5vdXRfbWFwWyJST09LX0VYVEVSTkFMX1VTRVJOQU1FIl0sCiAg + ICAgICAgICAgICAgICAgICAgInVzZXJLZXkiOiBzZWxmLm91dF9tYXBbIlJPT0tfRVhURVJOQUxf + VVNFUl9TRUNSRVQiXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAg + XQoKICAgICAgICAjIGlmICdNT05JVE9SSU5HX0VORFBPSU5UJyBleGlzdHMsIHRoZW4gb25seSBh + ZGQgJ21vbml0b3JpbmctZW5kcG9pbnQnIHRvIENsdXN0ZXIKICAgICAgICBpZiAoCiAgICAgICAg + ICAgIHNlbGYub3V0X21hcFsiTU9OSVRPUklOR19FTkRQT0lOVCJdCiAgICAgICAgICAgIGFuZCBz + ZWxmLm91dF9tYXBbIk1PTklUT1JJTkdfRU5EUE9JTlRfUE9SVCJdCiAgICAgICAgKToKICAgICAg + ICAgICAganNvbl9vdXQuYXBwZW5kKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAg + ICAgICJuYW1lIjogIm1vbml0b3JpbmctZW5kcG9pbnQiLAogICAgICAgICAgICAgICAgICAgICJr + aW5kIjogIkNlcGhDbHVzdGVyIiwKICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsKICAgICAg + ICAgICAgICAgICAgICAgICAgIk1vbml0b3JpbmdFbmRwb2ludCI6IHNlbGYub3V0X21hcFsiTU9O + SVRPUklOR19FTkRQT0lOVCJdLAogICAgICAgICAgICAgICAgICAgICAgICAiTW9uaXRvcmluZ1Bv + cnQiOiBzZWxmLm91dF9tYXBbIk1PTklUT1JJTkdfRU5EUE9JTlRfUE9SVCJdLAogICAgICAgICAg + ICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICkKCiAgICAgICAgIyBp + ZiAnQ1NJX1JCRF9OT0RFX1NFQ1JFVCcgZXhpc3RzLCB0aGVuIG9ubHkgYWRkICdyb29rLWNzaS1y + YmQtcHJvdmlzaW9uZXInIFNlY3JldAogICAgICAgIGlmICgKICAgICAgICAgICAgc2VsZi5vdXRf + bWFwWyJDU0lfUkJEX05PREVfU0VDUkVUIl0KICAgICAgICAgICAgYW5kIHNlbGYub3V0X21hcFsi + Q1NJX1JCRF9OT0RFX1NFQ1JFVF9OQU1FIl0KICAgICAgICApOgogICAgICAgICAgICBqc29uX291 + dC5hcHBlbmQoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiBm + InJvb2ste3NlbGYub3V0X21hcFsnQ1NJX1JCRF9OT0RFX1NFQ1JFVF9OQU1FJ119IiwKICAgICAg + ICAgICAgICAgICAgICAia2luZCI6ICJTZWNyZXQiLAogICAgICAgICAgICAgICAgICAgICJkYXRh + IjogewogICAgICAgICAgICAgICAgICAgICAgICAidXNlcklEIjogc2VsZi5vdXRfbWFwWyJDU0lf + UkJEX05PREVfU0VDUkVUX05BTUUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgInVzZXJLZXki + OiBzZWxmLm91dF9tYXBbIkNTSV9SQkRfTk9ERV9TRUNSRVQiXSwKICAgICAgICAgICAgICAgICAg + ICB9LAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApCiAgICAgICAgIyBpZiAnQ1NJX1JC + RF9QUk9WSVNJT05FUl9TRUNSRVQnIGV4aXN0cywgdGhlbiBvbmx5IGFkZCAncm9vay1jc2ktcmJk + LXByb3Zpc2lvbmVyJyBTZWNyZXQKICAgICAgICBpZiAoCiAgICAgICAgICAgIHNlbGYub3V0X21h + cFsiQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVQiXQogICAgICAgICAgICBhbmQgc2VsZi5vdXRf + bWFwWyJDU0lfUkJEX1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FIl0KICAgICAgICApOgogICAgICAg + ICAgICBqc29uX291dC5hcHBlbmQoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg + ICAgIm5hbWUiOiBmInJvb2ste3NlbGYub3V0X21hcFsnQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNS + RVRfTkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgImtpbmQiOiAiU2VjcmV0IiwKICAgICAg + ICAgICAgICAgICAgICAiZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInVzZXJJRCI6 + IHNlbGYub3V0X21hcFsiQ1NJX1JCRF9QUk9WSVNJT05FUl9TRUNSRVRfTkFNRSJdLAogICAgICAg + ICAgICAgICAgICAgICAgICAidXNlcktleSI6IHNlbGYub3V0X21hcFsiQ1NJX1JCRF9QUk9WSVNJ + T05FUl9TRUNSRVQiXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfQog + ICAgICAgICAgICApCiAgICAgICAgIyBpZiAnQ1NJX0NFUEhGU19QUk9WSVNJT05FUl9TRUNSRVQn + IGV4aXN0cywgdGhlbiBvbmx5IGFkZCAncm9vay1jc2ktY2VwaGZzLXByb3Zpc2lvbmVyJyBTZWNy + ZXQKICAgICAgICBpZiAoCiAgICAgICAgICAgIHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19QUk9W + SVNJT05FUl9TRUNSRVQiXQogICAgICAgICAgICBhbmQgc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZT + X1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FIl0KICAgICAgICApOgogICAgICAgICAgICBqc29uX291 + dC5hcHBlbmQoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiBm + InJvb2ste3NlbGYub3V0X21hcFsnQ1NJX0NFUEhGU19QUk9WSVNJT05FUl9TRUNSRVRfTkFNRSdd + fSIsCiAgICAgICAgICAgICAgICAgICAgImtpbmQiOiAiU2VjcmV0IiwKICAgICAgICAgICAgICAg + ICAgICAiZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImFkbWluSUQiOiBzZWxmLm91 + dF9tYXBbIkNTSV9DRVBIRlNfUFJPVklTSU9ORVJfU0VDUkVUX05BTUUiXSwKICAgICAgICAgICAg + ICAgICAgICAgICAgImFkbWluS2V5Ijogc2VsZi5vdXRfbWFwWyJDU0lfQ0VQSEZTX1BST1ZJU0lP + TkVSX1NFQ1JFVCJdLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9CiAg + ICAgICAgICAgICkKICAgICAgICAjIGlmICdDU0lfQ0VQSEZTX05PREVfU0VDUkVUJyBleGlzdHMs + IHRoZW4gb25seSBhZGQgJ3Jvb2stY3NpLWNlcGhmcy1ub2RlJyBTZWNyZXQKICAgICAgICBpZiAo + CiAgICAgICAgICAgIHNlbGYub3V0X21hcFsiQ1NJX0NFUEhGU19OT0RFX1NFQ1JFVCJdCiAgICAg + ICAgICAgIGFuZCBzZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfTk9ERV9TRUNSRVRfTkFNRSJdCiAg + ICAgICAgKToKICAgICAgICAgICAganNvbl9vdXQuYXBwZW5kKAogICAgICAgICAgICAgICAgewog + ICAgICAgICAgICAgICAgICAgICJuYW1lIjogZiJyb29rLXtzZWxmLm91dF9tYXBbJ0NTSV9DRVBI + RlNfTk9ERV9TRUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgImtpbmQiOiAiU2Vj + cmV0IiwKICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAg + ICAgImFkbWluSUQiOiBzZWxmLm91dF9tYXBbIkNTSV9DRVBIRlNfTk9ERV9TRUNSRVRfTkFNRSJd + LAogICAgICAgICAgICAgICAgICAgICAgICAiYWRtaW5LZXkiOiBzZWxmLm91dF9tYXBbIkNTSV9D + RVBIRlNfTk9ERV9TRUNSRVQiXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAg + ICAgfQogICAgICAgICAgICApCiAgICAgICAgIyBpZiAnUk9PS19FWFRFUk5BTF9EQVNIQk9BUkRf + TElOSycgZXhpc3RzLCB0aGVuIG9ubHkgYWRkICdyb29rLWNlcGgtZGFzaGJvYXJkLWxpbmsnIFNl + Y3JldAogICAgICAgIGlmIHNlbGYub3V0X21hcFsiUk9PS19FWFRFUk5BTF9EQVNIQk9BUkRfTElO + SyJdOgogICAgICAgICAgICBqc29uX291dC5hcHBlbmQoCiAgICAgICAgICAgICAgICB7CiAgICAg + ICAgICAgICAgICAgICAgIm5hbWUiOiAicm9vay1jZXBoLWRhc2hib2FyZC1saW5rIiwKICAgICAg + ICAgICAgICAgICAgICAia2luZCI6ICJTZWNyZXQiLAogICAgICAgICAgICAgICAgICAgICJkYXRh + IjogewogICAgICAgICAgICAgICAgICAgICAgICAidXNlcklEIjogImNlcGgtZGFzaGJvYXJkLWxp + bmsiLAogICAgICAgICAgICAgICAgICAgICAgICAidXNlcktleSI6IHNlbGYub3V0X21hcFsiUk9P + S19FWFRFUk5BTF9EQVNIQk9BUkRfTElOSyJdLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAg + ICAgICAgICAgICB9CiAgICAgICAgICAgICkKICAgICAgICBpZiBzZWxmLm91dF9tYXBbIlJCRF9N + RVRBREFUQV9FQ19QT09MX05BTUUiXToKICAgICAgICAgICAganNvbl9vdXQuYXBwZW5kKAogICAg + ICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJuYW1lIjogImNlcGgtcmJkIiwKICAg + ICAgICAgICAgICAgICAgICAia2luZCI6ICJTdG9yYWdlQ2xhc3MiLAogICAgICAgICAgICAgICAg + ICAgICJkYXRhIjogewogICAgICAgICAgICAgICAgICAgICAgICAiZGF0YVBvb2wiOiBzZWxmLm91 + dF9tYXBbIlJCRF9QT09MX05BTUUiXSwKICAgICAgICAgICAgICAgICAgICAgICAgInBvb2wiOiBz + ZWxmLm91dF9tYXBbIlJCRF9NRVRBREFUQV9FQ19QT09MX05BTUUiXSwKICAgICAgICAgICAgICAg + ICAgICAgICAgImNzaS5zdG9yYWdlLms4cy5pby9wcm92aXNpb25lci1zZWNyZXQtbmFtZSI6IGYi + cm9vay17c2VsZi5vdXRfbWFwWydDU0lfUkJEX1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FJ119IiwK + ICAgICAgICAgICAgICAgICAgICAgICAgImNzaS5zdG9yYWdlLms4cy5pby9jb250cm9sbGVyLWV4 + cGFuZC1zZWNyZXQtbmFtZSI6IGYicm9vay17c2VsZi5vdXRfbWFwWydDU0lfUkJEX1BST1ZJU0lP + TkVSX1NFQ1JFVF9OQU1FJ119IiwKICAgICAgICAgICAgICAgICAgICAgICAgImNzaS5zdG9yYWdl + Lms4cy5pby9ub2RlLXN0YWdlLXNlY3JldC1uYW1lIjogZiJyb29rLXtzZWxmLm91dF9tYXBbJ0NT + SV9SQkRfTk9ERV9TRUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAg + ICAgICAgICAgIH0KICAgICAgICAgICAgKQogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGpzb25f + b3V0LmFwcGVuZCgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6 + ICJjZXBoLXJiZCIsCiAgICAgICAgICAgICAgICAgICAgImtpbmQiOiAiU3RvcmFnZUNsYXNzIiwK + ICAgICAgICAgICAgICAgICAgICAiZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgInBv + b2wiOiBzZWxmLm91dF9tYXBbIlJCRF9QT09MX05BTUUiXSwKICAgICAgICAgICAgICAgICAgICAg + ICAgImNzaS5zdG9yYWdlLms4cy5pby9wcm92aXNpb25lci1zZWNyZXQtbmFtZSI6IGYicm9vay17 + c2VsZi5vdXRfbWFwWydDU0lfUkJEX1BST1ZJU0lPTkVSX1NFQ1JFVF9OQU1FJ119IiwKICAgICAg + ICAgICAgICAgICAgICAgICAgImNzaS5zdG9yYWdlLms4cy5pby9jb250cm9sbGVyLWV4cGFuZC1z + ZWNyZXQtbmFtZSI6IGYicm9vay17c2VsZi5vdXRfbWFwWydDU0lfUkJEX1BST1ZJU0lPTkVSX1NF + Q1JFVF9OQU1FJ119IiwKICAgICAgICAgICAgICAgICAgICAgICAgImNzaS5zdG9yYWdlLms4cy5p + by9ub2RlLXN0YWdlLXNlY3JldC1uYW1lIjogZiJyb29rLXtzZWxmLm91dF9tYXBbJ0NTSV9SQkRf + Tk9ERV9TRUNSRVRfTkFNRSddfSIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAg + ICAgIH0KICAgICAgICAgICAgKQogICAgICAgICMgaWYgJ0NFUEhGU19GU19OQU1FJyBleGlzdHMs + IHRoZW4gb25seSBhZGQgJ2NlcGhmcycgU3RvcmFnZUNsYXNzCiAgICAgICAgaWYgc2VsZi5vdXRf + bWFwWyJDRVBIRlNfRlNfTkFNRSJdOgogICAgICAgICAgICBqc29uX291dC5hcHBlbmQoCiAgICAg + ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2VwaGZzIiwKICAgICAg + ICAgICAgICAgICAgICAia2luZCI6ICJTdG9yYWdlQ2xhc3MiLAogICAgICAgICAgICAgICAgICAg + ICJkYXRhIjogewogICAgICAgICAgICAgICAgICAgICAgICAiZnNOYW1lIjogc2VsZi5vdXRfbWFw + WyJDRVBIRlNfRlNfTkFNRSJdLAogICAgICAgICAgICAgICAgICAgICAgICAicG9vbCI6IHNlbGYu + b3V0X21hcFsiQ0VQSEZTX1BPT0xfTkFNRSJdLAogICAgICAgICAgICAgICAgICAgICAgICAiY3Np + LnN0b3JhZ2UuazhzLmlvL3Byb3Zpc2lvbmVyLXNlY3JldC1uYW1lIjogZiJyb29rLXtzZWxmLm91 + dF9tYXBbJ0NTSV9DRVBIRlNfUFJPVklTSU9ORVJfU0VDUkVUX05BTUUnXX0iLAogICAgICAgICAg + ICAgICAgICAgICAgICAiY3NpLnN0b3JhZ2UuazhzLmlvL2NvbnRyb2xsZXItZXhwYW5kLXNlY3Jl + dC1uYW1lIjogZiJyb29rLXtzZWxmLm91dF9tYXBbJ0NTSV9DRVBIRlNfUFJPVklTSU9ORVJfU0VD + UkVUX05BTUUnXX0iLAogICAgICAgICAgICAgICAgICAgICAgICAiY3NpLnN0b3JhZ2UuazhzLmlv + L25vZGUtc3RhZ2Utc2VjcmV0LW5hbWUiOiBmInJvb2ste3NlbGYub3V0X21hcFsnQ1NJX0NFUEhG + U19OT0RFX1NFQ1JFVF9OQU1FJ119IiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAg + ICAgICAgfQogICAgICAgICAgICApCiAgICAgICAgIyBpZiAnUkdXX0VORFBPSU5UJyBleGlzdHMs + IHRoZW4gb25seSBhZGQgJ2NlcGgtcmd3JyBTdG9yYWdlQ2xhc3MKICAgICAgICBpZiBzZWxmLm91 + dF9tYXBbIlJHV19FTkRQT0lOVCJdOgogICAgICAgICAgICBqc29uX291dC5hcHBlbmQoCiAgICAg + ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiY2VwaC1yZ3ciLAogICAg + ICAgICAgICAgICAgICAgICJraW5kIjogIlN0b3JhZ2VDbGFzcyIsCiAgICAgICAgICAgICAgICAg + ICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJlbmRwb2ludCI6IHNlbGYub3V0 + X21hcFsiUkdXX0VORFBPSU5UIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICJwb29sUHJlZml4 + Ijogc2VsZi5vdXRfbWFwWyJSR1dfUE9PTF9QUkVGSVgiXSwKICAgICAgICAgICAgICAgICAgICB9 + LAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApCiAgICAgICAgICAgIGpzb25fb3V0LmFw + cGVuZCgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJyZ3ct + YWRtaW4tb3BzLXVzZXIiLAogICAgICAgICAgICAgICAgICAgICJraW5kIjogIlNlY3JldCIsCiAg + ICAgICAgICAgICAgICAgICAgImRhdGEiOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICJhY2Nl + c3NLZXkiOiBzZWxmLm91dF9tYXBbIlJHV19BRE1JTl9PUFNfVVNFUl9BQ0NFU1NfS0VZIl0sCiAg + ICAgICAgICAgICAgICAgICAgICAgICJzZWNyZXRLZXkiOiBzZWxmLm91dF9tYXBbIlJHV19BRE1J + Tl9PUFNfVVNFUl9TRUNSRVRfS0VZIl0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAg + ICAgICAgIH0KICAgICAgICAgICAgKQogICAgICAgICMgaWYgJ1JHV19UTFNfQ0VSVCcgZXhpc3Rz + LCB0aGVuIG9ubHkgYWRkIHRoZSAiY2VwaC1yZ3ctdGxzLWNlcnQiIHNlY3JldAogICAgICAgIGlm + IHNlbGYub3V0X21hcFsiUkdXX1RMU19DRVJUIl06CiAgICAgICAgICAgIGpzb25fb3V0LmFwcGVu + ZCgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJjZXBoLXJn + dy10bHMtY2VydCIsCiAgICAgICAgICAgICAgICAgICAgImtpbmQiOiAiU2VjcmV0IiwKICAgICAg + ICAgICAgICAgICAgICAiZGF0YSI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgImNlcnQiOiBz + ZWxmLm91dF9tYXBbIlJHV19UTFNfQ0VSVCJdLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAg + ICAgICAgICAgICB9CiAgICAgICAgICAgICkKCiAgICAgICAgcmV0dXJuIGpzb24uZHVtcHMoanNv + bl9vdXQpICsgTElORVNFUAoKICAgIGRlZiB1cGdyYWRlX3VzZXJzX3Blcm1pc3Npb25zKHNlbGYp + OgogICAgICAgIHVzZXJzID0gWwogICAgICAgICAgICAiY2xpZW50LmNzaS1jZXBoZnMtbm9kZSIs + CiAgICAgICAgICAgICJjbGllbnQuY3NpLWNlcGhmcy1wcm92aXNpb25lciIsCiAgICAgICAgICAg + ICJjbGllbnQuY3NpLXJiZC1ub2RlIiwKICAgICAgICAgICAgImNsaWVudC5jc2ktcmJkLXByb3Zp + c2lvbmVyIiwKICAgICAgICAgICAgImNsaWVudC5oZWFsdGhjaGVja2VyIiwKICAgICAgICBdCiAg + ICAgICAgaWYgc2VsZi5ydW5fYXNfdXNlciAhPSAiIiBhbmQgc2VsZi5ydW5fYXNfdXNlciBub3Qg + aW4gdXNlcnM6CiAgICAgICAgICAgIHVzZXJzLmFwcGVuZChzZWxmLnJ1bl9hc191c2VyKQogICAg + ICAgIGZvciB1c2VyIGluIHVzZXJzOgogICAgICAgICAgICBzZWxmLnVwZ3JhZGVfdXNlcl9wZXJt + aXNzaW9ucyh1c2VyKQoKICAgIGRlZiBnZXRfcmd3X3Bvb2xfbmFtZV9kdXJpbmdfdXBncmFkZShz + ZWxmLCB1c2VyLCBjYXBzKToKICAgICAgICBpZiB1c2VyID09ICJjbGllbnQuaGVhbHRoY2hlY2tl + ciI6CiAgICAgICAgICAgICMgd2hlbiBhZG1pbiBoYXMgbm90IHByb3ZpZGVkIHJndyBwb29sIG5h + bWUgZHVyaW5nIHVwZ3JhZGUsCiAgICAgICAgICAgICMgZ2V0IHRoZSByZ3cgcG9vbCBuYW1lIGZy + b20gY2xpZW50LmhlYWx0aGNoZWNrZXIgdXNlciB3aGljaCB3YXMgdXNlZCBkdXJpbmcgY29ubmVj + dGlvbgogICAgICAgICAgICBpZiBub3Qgc2VsZi5fYXJnX3BhcnNlci5yZ3dfcG9vbF9wcmVmaXg6 + CiAgICAgICAgICAgICAgICAjIFRvIGdldCB2YWx1ZSAnZGVmYXVsdCcgd2hpY2ggaXMgcmd3IHBv + b2wgbmFtZSBmcm9tICdhbGxvdyByd3ggcG9vbD1kZWZhdWx0LnJndy5tZXRhJwogICAgICAgICAg + ICAgICAgcGF0dGVybiA9IHIicG9vbD0oLio/KVwucmd3XC5tZXRhIgogICAgICAgICAgICAgICAg + bWF0Y2ggPSByZS5zZWFyY2gocGF0dGVybiwgY2FwcykKICAgICAgICAgICAgICAgIGlmIG1hdGNo + OgogICAgICAgICAgICAgICAgICAgIHNlbGYuX2FyZ19wYXJzZXIucmd3X3Bvb2xfcHJlZml4ID0g + bWF0Y2guZ3JvdXAoMSkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAg + cmFpc2UgRXhlY3V0aW9uRmFpbHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAg + ImZhaWxlZCB0byBnZXQgcmd3IHBvb2wgbmFtZSBmb3IgdXBncmFkZSIKICAgICAgICAgICAgICAg + ICAgICApCgogICAgZGVmIHVwZ3JhZGVfdXNlcl9wZXJtaXNzaW9ucyhzZWxmLCB1c2VyKToKICAg + ICAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIHVzZXIgZXhpc3RzIG9yIG5vdAogICAgICAg + IGNtZF9qc29uID0geyJwcmVmaXgiOiAiYXV0aCBnZXQiLCAiZW50aXR5IjogZiJ7dXNlcn0iLCAi + Zm9ybWF0IjogImpzb24ifQogICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBlcnJfbXNnID0gc2Vs + Zi5fY29tbW9uX2NtZF9qc29uX2dlbihjbWRfanNvbikKICAgICAgICBpZiByZXRfdmFsICE9IDAg + b3IgbGVuKGpzb25fb3V0KSA9PSAwOgogICAgICAgICAgICBwcmludChmInVzZXIge3VzZXJ9IG5v + dCBmb3VuZCBmb3IgdXBncmFkaW5nLiIpCiAgICAgICAgICAgIHJldHVybgogICAgICAgIGV4aXN0 + aW5nX2NhcHMgPSBqc29uX291dFswXVsiY2FwcyJdCiAgICAgICAgc2VsZi5nZXRfcmd3X3Bvb2xf + bmFtZV9kdXJpbmdfdXBncmFkZSh1c2VyLCBzdHIoZXhpc3RpbmdfY2FwcykpCiAgICAgICAgbmV3 + X2NhcCwgXyA9IHNlbGYuZ2V0X2NhcHNfYW5kX2VudGl0eSh1c2VyKQogICAgICAgIGNhcF9rZXlz + ID0gWyJtb24iLCAibWdyIiwgIm9zZCIsICJtZHMiXQogICAgICAgIGNhcHMgPSBbXQogICAgICAg + IGZvciBlYWNoQ2FwIGluIGNhcF9rZXlzOgogICAgICAgICAgICBjdXJfY2FwX3ZhbHVlcyA9IGV4 + aXN0aW5nX2NhcHMuZ2V0KGVhY2hDYXAsICIiKQogICAgICAgICAgICBuZXdfY2FwX3ZhbHVlcyA9 + IG5ld19jYXAuZ2V0KGVhY2hDYXAsICIiKQogICAgICAgICAgICBjdXJfY2FwX3Blcm1fbGlzdCA9 + IFsKICAgICAgICAgICAgICAgIHguc3RyaXAoKSBmb3IgeCBpbiBjdXJfY2FwX3ZhbHVlcy5zcGxp + dCgiLCIpIGlmIHguc3RyaXAoKQogICAgICAgICAgICBdCiAgICAgICAgICAgIG5ld19jYXBfcGVy + bV9saXN0ID0gWwogICAgICAgICAgICAgICAgeC5zdHJpcCgpIGZvciB4IGluIG5ld19jYXBfdmFs + dWVzLnNwbGl0KCIsIikgaWYgeC5zdHJpcCgpCiAgICAgICAgICAgIF0KICAgICAgICAgICAgIyBh + cHBlbmQgbmV3X2NhcF9saXN0IHRvIGN1cl9jYXBfbGlzdCB0byBtYWludGFpbiB0aGUgb3JkZXIg + b2YgY2FwcwogICAgICAgICAgICBjdXJfY2FwX3Blcm1fbGlzdC5leHRlbmQobmV3X2NhcF9wZXJt + X2xpc3QpCiAgICAgICAgICAgICMgZWxpbWluYXRlIGR1cGxpY2F0ZXMgd2l0aG91dCB1c2luZyAn + c2V0JwogICAgICAgICAgICAjIHNldCByZS1vcmRlcnMgaXRlbXMgaW4gdGhlIGxpc3QgYW5kIHdl + IGhhdmUgdG8ga2VlcCB0aGUgb3JkZXIKICAgICAgICAgICAgbmV3X2NhcF9saXN0ID0gW10KICAg + ICAgICAgICAgW25ld19jYXBfbGlzdC5hcHBlbmQoeCkgZm9yIHggaW4gY3VyX2NhcF9wZXJtX2xp + c3QgaWYgeCBub3QgaW4gbmV3X2NhcF9saXN0XQogICAgICAgICAgICBleGlzdGluZ19jYXBzW2Vh + Y2hDYXBdID0gIiwgIi5qb2luKG5ld19jYXBfbGlzdCkKICAgICAgICAgICAgaWYgZXhpc3Rpbmdf + Y2Fwc1tlYWNoQ2FwXToKICAgICAgICAgICAgICAgIGNhcHMuYXBwZW5kKGVhY2hDYXApCiAgICAg + ICAgICAgICAgICBjYXBzLmFwcGVuZChleGlzdGluZ19jYXBzW2VhY2hDYXBdKQogICAgICAgIGNt + ZF9qc29uID0gewogICAgICAgICAgICAicHJlZml4IjogImF1dGggY2FwcyIsCiAgICAgICAgICAg + ICJlbnRpdHkiOiB1c2VyLAogICAgICAgICAgICAiY2FwcyI6IGNhcHMsCiAgICAgICAgICAgICJm + b3JtYXQiOiAianNvbiIsCiAgICAgICAgfQogICAgICAgIHJldF92YWwsIGpzb25fb3V0LCBlcnJf + bXNnID0gc2VsZi5fY29tbW9uX2NtZF9qc29uX2dlbihjbWRfanNvbikKICAgICAgICBpZiByZXRf + dmFsICE9IDA6CiAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGlvbkZhaWx1cmVFeGNlcHRpb24oCiAg + ICAgICAgICAgICAgICBmIidhdXRoIGNhcHMge3VzZXJ9JyBjb21tYW5kIGZhaWxlZC5cbiBFcnJv + cjoge2Vycl9tc2d9IgogICAgICAgICAgICApCiAgICAgICAgcHJpbnQoZiJVcGRhdGVkIHVzZXIg + e3VzZXJ9IHN1Y2Nlc3NmdWxseS4iKQoKICAgIGRlZiBtYWluKHNlbGYpOgogICAgICAgIGdlbmVy + YXRlZF9vdXRwdXQgPSAiIgogICAgICAgIGlmIHNlbGYuX2FyZ19wYXJzZXIudXBncmFkZToKICAg + ICAgICAgICAgc2VsZi51cGdyYWRlX3VzZXJzX3Blcm1pc3Npb25zKCkKICAgICAgICBlbGlmIHNl + bGYuX2FyZ19wYXJzZXIuZm9ybWF0ID09ICJqc29uIjoKICAgICAgICAgICAgZ2VuZXJhdGVkX291 + dHB1dCA9IHNlbGYuZ2VuX2pzb25fb3V0KCkKICAgICAgICBlbGlmIHNlbGYuX2FyZ19wYXJzZXIu + Zm9ybWF0ID09ICJiYXNoIjoKICAgICAgICAgICAgZ2VuZXJhdGVkX291dHB1dCA9IHNlbGYuZ2Vu + X3NoZWxsX291dCgpCiAgICAgICAgZWxzZToKICAgICAgICAgICAgcmFpc2UgRXhlY3V0aW9uRmFp + bHVyZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgIGYiVW5zdXBwb3J0ZWQgZm9ybWF0OiB7c2Vs + Zi5fYXJnX3BhcnNlci5mb3JtYXR9IgogICAgICAgICAgICApCiAgICAgICAgcHJpbnQoZ2VuZXJh + dGVkX291dHB1dCkKICAgICAgICBpZiBzZWxmLm91dHB1dF9maWxlIGFuZCBnZW5lcmF0ZWRfb3V0 + cHV0OgogICAgICAgICAgICBmT3V0ID0gb3BlbihzZWxmLm91dHB1dF9maWxlLCBtb2RlPSJ3Iiwg + ZW5jb2Rpbmc9IlVURi04IikKICAgICAgICAgICAgZk91dC53cml0ZShnZW5lcmF0ZWRfb3V0cHV0 + KQogICAgICAgICAgICBmT3V0LmNsb3NlKCkKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj + IyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE1BSU4gIyMjIyMjIyMj + IyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj + IyMjIwppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgcmpPYmogPSBSYWRvc0pTT04oKQog + ICAgdHJ5OgogICAgICAgIHJqT2JqLm1haW4oKQogICAgZXhjZXB0IEV4ZWN1dGlvbkZhaWx1cmVF + eGNlcHRpb24gYXMgZXJyOgogICAgICAgIHByaW50KGYiRXhlY3V0aW9uIEZhaWxlZDoge2Vycn0i + KQogICAgICAgIHJhaXNlIGVycgogICAgZXhjZXB0IEtleUVycm9yIGFzIGtFcnI6CiAgICAgICAg + cHJpbnQoZiJLZXlFcnJvcjoge2tFcnJ9IikKICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG9zRXJyOgog + ICAgICAgIHByaW50KGYiRXJyb3Igd2hpbGUgdHJ5aW5nIHRvIG91dHB1dCB0aGUgZGF0YToge29z + RXJyfSIpCiAgICBmaW5hbGx5OgogICAgICAgIHJqT2JqLnNodXRkb3duKCkK external.features.ocs.openshift.io/supported-platforms: '["BareMetal", "None", "VSphere", "OpenStack", "oVirt"]' external.features.ocs.openshift.io/validation: '{"secrets":["rook-ceph-operator-creds", @@ -3018,7 +3062,7 @@ spec: fieldRef: fieldPath: metadata.annotations['olm.targetNamespaces'] - name: ROOK_CEPH_IMAGE - value: docker.io/rook/ceph:v1.12.2 + value: docker.io/rook/ceph:v1.12.5-25.g14736d93d - name: CEPH_IMAGE value: quay.io/ceph/ceph:v17 - name: NOOBAA_CORE_IMAGE @@ -3184,7 +3228,7 @@ spec: fieldPath: metadata.namespace - name: ROOK_OBC_WATCH_OPERATOR_NAMESPACE value: "true" - image: docker.io/rook/ceph:v1.12.2 + image: docker.io/rook/ceph:v1.12.5-25.g14736d93d name: rook-ceph-operator ports: - containerPort: 9443 @@ -3565,7 +3609,7 @@ spec: provider: name: Red Hat relatedImages: - - image: docker.io/rook/ceph:v1.12.2 + - image: docker.io/rook/ceph:v1.12.5-25.g14736d93d name: rook-container - image: quay.io/ceph/ceph:v17 name: ceph-container diff --git a/deploy/ocs-operator/manifests/storagecluster.crd.yaml b/deploy/ocs-operator/manifests/storagecluster.crd.yaml index f6685f033e..ef2b0f1ed9 100644 --- a/deploy/ocs-operator/manifests/storagecluster.crd.yaml +++ b/deploy/ocs-operator/manifests/storagecluster.crd.yaml @@ -1265,6 +1265,38 @@ spec: network: description: Network represents cluster network settings properties: + addressRanges: + description: AddressRanges specify a list of CIDRs that Rook will + apply to Ceph's 'public_network' and/or 'cluster_network' configurations. + This config section may be used for the "host" or "multus" network + providers. + nullable: true + properties: + cluster: + description: Cluster defines a list of CIDRs to use for Ceph + cluster network communication. + items: + description: "An IPv4 or IPv6 network CIDR. \n This naive + kubebuilder regex provides immediate feedback for some + typos and for a common problem case where the range spec + is forgotten (e.g., /24). Rook does in-depth validation + in code." + pattern: ^[0-9a-fA-F:.]{2,}\/[0-9]{1,3}$ + type: string + type: array + public: + description: Public defines a list of CIDRs to use for Ceph + public network communication. + items: + description: "An IPv4 or IPv6 network CIDR. \n This naive + kubebuilder regex provides immediate feedback for some + typos and for a common problem case where the range spec + is forgotten (e.g., /24). Rook does in-depth validation + in code." + pattern: ^[0-9a-fA-F:.]{2,}\/[0-9]{1,3}$ + type: string + type: array + type: object connections: description: Settings for network connections such as compression and encryption across the wire. @@ -1335,15 +1367,35 @@ spec: provider: description: Provider is what provides network connectivity to the cluster e.g. "host" or "multus" + enum: + - "" + - host + - multus nullable: true type: string selectors: additionalProperties: type: string - description: Selectors string values describe what networks will - be used to connect the cluster. Meanwhile the keys describe - each network respective responsibilities or any metadata storage - provider decide. + description: "Selectors define NetworkAttachmentDefinitions to + be used for Ceph public and/or cluster networks when the \"multus\" + network provider is used. This config section is not used for + other network providers. \n Valid keys are \"public\" and \"cluster\". + Refer to Ceph networking documentation for more: https://docs.ceph.com/en/reef/rados/configuration/network-config-ref/ + \n Refer to Multus network annotation documentation for help + selecting values: https://github.com/k8snetworkplumbingwg/multus-cni/blob/master/docs/how-to-use.md#run-pod-with-network-annotation + \n Rook will make a best-effort attempt to automatically detect + CIDR address ranges for given network attachment definitions. + Rook's methods are robust but may be imprecise for sufficiently + complicated networks. Rook's auto-detection process obtains + a new IP address lease for each CephCluster reconcile. If Rook + fails to detect, incorrectly detects, only partially detects, + or if underlying networks do not support reusing old IP addresses, + it is best to use the 'addressRanges' config section to specify + CIDR ranges for the Ceph cluster. \n As a contrived example, + one can use a theoretical Kubernetes-wide network for Ceph client + traffic and a theoretical Rook-only network for Ceph replication + traffic as shown: selectors: public: \"default/cluster-fast-net\" + cluster: \"rook-ceph/ceph-backend-net\"" nullable: true type: object type: object diff --git a/hack/common.sh b/hack/common.sh index be3406adb8..69da4de556 100644 --- a/hack/common.sh +++ b/hack/common.sh @@ -48,7 +48,7 @@ NOOBAA_CSV="$OUTDIR_TEMPLATES/noobaa-csv.yaml" ROOK_CSV="$OUTDIR_TEMPLATES/rook-csv.yaml.in" OCS_CSV="$OUTDIR_TEMPLATES/ocs-operator.csv.yaml.in" -LATEST_ROOK_IMAGE="docker.io/rook/ceph:v1.12.2" +LATEST_ROOK_IMAGE="docker.io/rook/ceph:v1.12.5-25.g14736d93d" LATEST_NOOBAA_IMAGE="quay.io/noobaa/noobaa-operator:master-20230718" LATEST_NOOBAA_CORE_IMAGE="quay.io/noobaa/noobaa-core:master-20230718" LATEST_NOOBAA_DB_IMAGE="docker.io/centos/postgresql-12-centos8"