Data labeling
This notebook shows how to conduct data labeling and content analysis using EDSL, an open-source library for simulating surveys, experiments and other research with AI agents and large language models.
Using a dataset of mock customer service tickets as an example, we demonstrate how to:
Import data into EDSL
Create questions about the data
Design an AI agent to answer the questions
Select a language model to generate responses
Analyze results as a formatted dataset
This workflow can be visualized as follows:
Technical setup
Before running the code below please ensure that you have completed setup:
Create a Coop account and activate remote inference OR store your own API Keys for language models that you want to use.
Our Starter Tutorial also provides examples of EDSL basic components.
Selecting data for review
First we identify some data for review. Data can be created using the EDSL tools or imported from other sources. For purposes of this demo we import a set of hypothetical customer tickets for a transportation app:
[1]:
tickets = [
"I just realized I left my phone in the car on my last ride. Can you help me get it back?",
"I'm unhappy with my recent experience. The driver was very rude and unprofessional.",
"I was charged more than the estimated fare for my trip yesterday. Can you explain why?",
"The car seat provided was not properly installed, and I felt my child was at risk. Please ensure driver training.",
"My driver took a longer route than necessary, resulting in a higher fare. I request a fare adjustment.",
"I had a great experience with my driver today! Very friendly and efficient service.",
"I'm concerned about the vehicle's cleanliness. It was not up to the standard I expect.",
"The app keeps crashing every time I try to book a ride. Please fix this issue.",
"My driver was exceptional - safe driving, polite, and the car was spotless. Kudos!",
"I felt unsafe during my ride due to the driver's erratic behavior. This needs to be addressed immediately.",
"The driver refused to follow my preferred route, which is shorter. I'm not satisfied with the service.",
"Impressed with the quick response to my ride request and the driver's professionalism.",
"I was charged for a ride I never took. Please refund me as soon as possible.",
"The promo code I tried to use didn't work. Can you assist with this?",
"There was a suspicious smell in the car, and I'm worried about hygiene standards.",
"My driver was very considerate, especially helping me with my luggage. Appreciate the great service!",
"The app's GPS seems inaccurate. It directed the driver to the wrong pick-up location.",
"I want to compliment my driver's excellent navigation and time management during rush hour.",
"The vehicle didn't match the description in the app. It was confusing and concerning.",
"I faced an issue with payment processing after my last ride. Can you look into this?",
]
Constructing questions about the data
Next we create some questions about the data. EDSL provides a variety of question types that we can choose from based on the form of the response that we want to get back from the model (multiple choice, free text, checkbox, linear scale, etc.). Learn more about question types.
Note that we use a {{ placeholder }}
in each question text in order to parameterize the questions with the individual ticket contents in the next step:
[2]:
from edsl import (
QuestionMultipleChoice,
QuestionCheckBox,
QuestionFreeText,
QuestionList,
QuestionYesNo,
QuestionLinearScale,
)
[3]:
question_issues = QuestionCheckBox(
question_name="issues",
question_text="Check all of the issues mentioned in this ticket: {{ ticket }}",
question_options=[
"safety",
"cleanliness",
"driver performance",
"GPS/route",
"lost item",
"other",
],
)
[4]:
question_primary_issue = QuestionFreeText(
question_name="primary_issue",
question_text="What is the primary issue in this ticket? Ticket: {{ ticket }}",
)
[5]:
question_accident = QuestionMultipleChoice(
question_name="accident",
question_text="If the primary issue in this ticket is safety, was there an accident where someone was hurt? Ticket: {{ ticket }}",
question_options=["Yes", "No", "Not applicable"],
)
[6]:
question_sentiment = QuestionMultipleChoice(
question_name="sentiment",
question_text="What is the sentiment of this ticket? Ticket: {{ ticket }}",
question_options=[
"Very positive",
"Somewhat positive",
"Neutral",
"Somewhat negative",
"Very negative",
],
)
[7]:
question_refund = QuestionYesNo(
question_name="refund",
question_text="Does the customer ask for a refund in this ticket? Ticket: {{ ticket }}",
)
[8]:
question_priority = QuestionLinearScale(
question_name="priority",
question_text="On a scale from 0 to 5, what is the priority level of this ticket? Ticket: {{ ticket }}",
question_options=[0, 1, 2, 3, 4, 5],
option_labels={0: "Lowest", 5: "Highest"},
)
Building a survey
We combine the questions into a survey in order to administer them together:
[9]:
from edsl import Survey
survey = Survey(
questions=[
question_issues,
question_primary_issue,
question_accident,
question_sentiment,
question_refund,
question_priority,
]
)
Survey questions are administered asynchronously by default. Learn more about adding conditional logic and memory to your survey.
We can review our questions in a readable format, or export them as a survey to use with human respondents or at other survey platforms:
[10]:
survey
[10]:
Survey # questions: 6; question_name list: ['issues', 'primary_issue', 'accident', 'sentiment', 'refund', 'priority'];
question_options | question_type | use_code | question_text | question_name | option_labels |
---|---|---|---|---|---|
['safety', 'cleanliness', 'driver performance', 'GPS/route', 'lost item', 'other'] | checkbox | True | Check all of the issues mentioned in this ticket: {{ ticket }} | issues | |
free_text | What is the primary issue in this ticket? Ticket: {{ ticket }} | primary_issue | |||
['Yes', 'No', 'Not applicable'] | multiple_choice | If the primary issue in this ticket is safety, was there an accident where someone was hurt? Ticket: {{ ticket }} | accident | ||
['Very positive', 'Somewhat positive', 'Neutral', 'Somewhat negative', 'Very negative'] | multiple_choice | What is the sentiment of this ticket? Ticket: {{ ticket }} | sentiment | ||
['No', 'Yes'] | yes_no | Does the customer ask for a refund in this ticket? Ticket: {{ ticket }} | refund | ||
[0, 1, 2, 3, 4, 5] | linear_scale | On a scale from 0 to 5, what is the priority level of this ticket? Ticket: {{ ticket }} | priority | {0: 'Lowest', 5: 'Highest'} |
Designing AI agents
A key feature of EDSL is the ability to create personas for AI agents that the language models are prompted to use in generating responses to the questions. This is done by passing a dictionary of traits to Agent objects:
[11]:
from edsl import Agent
agent = Agent(
traits={
"persona": "You are an expert customer service agent.",
"years_experience": 15,
}
)
agent
[11]:
key | value |
---|---|
traits:persona | You are an expert customer service agent. |
traits:years_experience | 15 |
Selecting language models
EDSL allows us to select the language models to use in generating results. To see all available models:
[12]:
from edsl import Model
Model.available()
[12]:
Model Name | Service Name | Code |
---|---|---|
Austism/chronos-hermes-13b-v2 | deep_infra | 0 |
BAAI/bge-base-en-v1.5 | together | 1 |
BAAI/bge-large-en-v1.5 | together | 2 |
Gryphe/MythoMax-L2-13b | deep_infra | 3 |
Gryphe/MythoMax-L2-13b | together | 4 |
Gryphe/MythoMax-L2-13b-Lite | together | 5 |
Meta-Llama/Llama-Guard-7b | together | 6 |
NousResearch/Nous-Hermes-2-Mixtral-8x7B-DPO | together | 7 |
NousResearch/Nous-Hermes-2-Yi-34B | together | 8 |
Qwen/Qwen1.5-110B-Chat | together | 9 |
Qwen/Qwen1.5-72B-Chat | together | 10 |
Qwen/Qwen2-72B-Instruct | deep_infra | 11 |
Qwen/Qwen2-72B-Instruct | together | 12 |
Qwen/Qwen2-7B-Instruct | deep_infra | 13 |
Qwen/Qwen2.5-72B-Instruct | deep_infra | 14 |
Salesforce/Llama-Rank-V1 | together | 15 |
Sao10K/L3-70B-Euryale-v2.1 | deep_infra | 16 |
Sao10K/L3.1-70B-Euryale-v2.2 | deep_infra | 17 |
WhereIsAI/UAE-Large-V1 | together | 18 |
amazon.titan-text-express-v1 | bedrock | 19 |
amazon.titan-text-lite-v1 | bedrock | 20 |
anthropic.claude-3-5-sonnet-20240620-v1:0 | bedrock | 21 |
anthropic.claude-3-haiku-20240307-v1:0 | bedrock | 22 |
anthropic.claude-3-opus-20240229-v1:0 | bedrock | 23 |
anthropic.claude-3-sonnet-20240229-v1:0 | bedrock | 24 |
anthropic.claude-instant-v1 | bedrock | 25 |
anthropic.claude-v2 | bedrock | 26 |
anthropic.claude-v2:1 | bedrock | 27 |
azure:gpt-4o | azure | 28 |
azure:gpt-4o-mini | azure | 29 |
chatgpt-4o-latest | openai | 30 |
claude-3-5-sonnet-20240620 | anthropic | 31 |
claude-3-haiku-20240307 | anthropic | 32 |
claude-3-opus-20240229 | anthropic | 33 |
claude-3-sonnet-20240229 | anthropic | 34 |
codellama/CodeLlama-34b-Instruct-hf | together | 35 |
codestral-2405 | mistral | 36 |
cohere.command-light-text-v14 | bedrock | 37 |
cohere.command-r-plus-v1:0 | bedrock | 38 |
cohere.command-r-v1:0 | bedrock | 39 |
cohere.command-text-v14 | bedrock | 40 |
curie:ft-emeritus-2022-11-30-12-58-24 | openai | 41 |
curie:ft-emeritus-2022-12-01-01-04-36 | openai | 42 |
curie:ft-emeritus-2022-12-01-01-51-20 | openai | 43 |
curie:ft-emeritus-2022-12-01-14-16-46 | openai | 44 |
curie:ft-emeritus-2022-12-01-14-28-00 | openai | 45 |
curie:ft-emeritus-2022-12-01-14-49-45 | openai | 46 |
curie:ft-emeritus-2022-12-01-15-29-32 | openai | 47 |
curie:ft-emeritus-2022-12-01-15-42-25 | openai | 48 |
curie:ft-emeritus-2022-12-01-15-52-24 | openai | 49 |
curie:ft-emeritus-2022-12-01-16-40-12 | openai | 50 |
cursor/Llama-3-8b-hf | together | 51 |
databricks/dbrx-instruct | together | 52 |
davinci:ft-emeritus-2022-11-30-14-57-33 | openai | 53 |
deepseek-ai/deepseek-llm-67b-chat | together | 54 |
gemini-1.0-pro | 55 | |
gemini-1.5-flash | 56 | |
gemini-1.5-pro | 57 | |
gemini-pro | 58 | |
gemma-7b-it | groq | 59 |
gemma2-9b-it | groq | 60 |
google/gemma-2-27b-it | deep_infra | 61 |
google/gemma-2-27b-it | together | 62 |
google/gemma-2-9b-it | deep_infra | 63 |
google/gemma-2-9b-it | together | 64 |
google/gemma-2b-it | together | 65 |
gpt-3.5-turbo | openai | 66 |
gpt-3.5-turbo-0125 | openai | 67 |
gpt-3.5-turbo-1106 | openai | 68 |
gpt-3.5-turbo-16k | openai | 69 |
gpt-4 | openai | 70 |
gpt-4-0125-preview | openai | 71 |
gpt-4-0613 | openai | 72 |
gpt-4-1106-preview | openai | 73 |
gpt-4-turbo | openai | 74 |
gpt-4-turbo-2024-04-09 | openai | 75 |
gpt-4-turbo-preview | openai | 76 |
gpt-4o | openai | 77 |
gpt-4o-2024-05-13 | openai | 78 |
gpt-4o-2024-08-06 | openai | 79 |
gpt-4o-2024-11-20 | openai | 80 |
gpt-4o-audio-preview | openai | 81 |
gpt-4o-audio-preview-2024-10-01 | openai | 82 |
gpt-4o-mini | openai | 83 |
gpt-4o-mini-2024-07-18 | openai | 84 |
gpt-4o-realtime-preview | openai | 85 |
gpt-4o-realtime-preview-2024-10-01 | openai | 86 |
lizpreciatior/lzlv_70b_fp16_hf | deep_infra | 87 |
llama-3.1-70b-versatile | groq | 88 |
llama-3.1-8b-instant | groq | 89 |
llama-3.1-sonar-huge-128k-online | perplexity | 90 |
llama-3.1-sonar-large-128k-online | perplexity | 91 |
llama-3.1-sonar-small-128k-online | perplexity | 92 |
llama-guard-3-8b | groq | 93 |
llama3-70b-8192 | groq | 94 |
llama3-8b-8192 | groq | 95 |
llama3-groq-70b-8192-tool-use-preview | groq | 96 |
llama3-groq-8b-8192-tool-use-preview | groq | 97 |
meta-llama/Llama-2-13b-chat-hf | together | 98 |
meta-llama/Llama-2-70b-hf | together | 99 |
meta-llama/Llama-2-7b-chat-hf | together | 100 |
meta-llama/Llama-3-70b-chat-hf | together | 101 |
meta-llama/Llama-3-8b-chat-hf | together | 102 |
meta-llama/LlamaGuard-2-8b | together | 103 |
meta-llama/Meta-Llama-3-70B-Instruct | deep_infra | 104 |
meta-llama/Meta-Llama-3-70B-Instruct-Lite | together | 105 |
meta-llama/Meta-Llama-3-70B-Instruct-Turbo | together | 106 |
meta-llama/Meta-Llama-3-8B-Instruct | deep_infra | 107 |
meta-llama/Meta-Llama-3-8B-Instruct-Lite | together | 108 |
meta-llama/Meta-Llama-3-8B-Instruct-Turbo | together | 109 |
meta-llama/Meta-Llama-3.1-405B-Instruct | deep_infra | 110 |
meta-llama/Meta-Llama-3.1-405B-Instruct-Turbo | together | 111 |
meta-llama/Meta-Llama-3.1-70B-Instruct | deep_infra | 112 |
meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo | together | 113 |
meta-llama/Meta-Llama-3.1-8B-Instruct | deep_infra | 114 |
meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo | together | 115 |
meta-llama/Meta-Llama-Guard-3-8B | together | 116 |
meta.llama3-1-405b-instruct-v1:0 | bedrock | 117 |
meta.llama3-1-70b-instruct-v1:0 | bedrock | 118 |
meta.llama3-1-8b-instruct-v1:0 | bedrock | 119 |
meta.llama3-70b-instruct-v1:0 | bedrock | 120 |
meta.llama3-8b-instruct-v1:0 | bedrock | 121 |
microsoft/Phi-3-medium-4k-instruct | deep_infra | 122 |
microsoft/WizardLM-2-7B | deep_infra | 123 |
microsoft/WizardLM-2-8x22B | deep_infra | 124 |
microsoft/WizardLM-2-8x22B | together | 125 |
mistral-embed | mistral | 126 |
mistral-large-2407 | mistral | 127 |
mistral-medium-latest | mistral | 128 |
mistral-small-2409 | mistral | 129 |
mistral-small-latest | mistral | 130 |
mistral.mistral-7b-instruct-v0:2 | bedrock | 131 |
mistral.mistral-large-2402-v1:0 | bedrock | 132 |
mistral.mixtral-8x7b-instruct-v0:1 | bedrock | 133 |
mistralai/Mistral-7B-Instruct-v0.1 | together | 134 |
mistralai/Mistral-7B-Instruct-v0.2 | together | 135 |
mistralai/Mistral-7B-Instruct-v0.3 | deep_infra | 136 |
mistralai/Mistral-7B-Instruct-v0.3 | together | 137 |
mistralai/Mistral-7B-v0.1 | together | 138 |
mistralai/Mistral-Nemo-Instruct-2407 | deep_infra | 139 |
mistralai/Mixtral-8x22B-Instruct-v0.1 | together | 140 |
mistralai/Mixtral-8x7B-Instruct-v0.1 | deep_infra | 141 |
mistralai/Mixtral-8x7B-Instruct-v0.1 | together | 142 |
mistralai/Mixtral-8x7B-v0.1 | together | 143 |
mixtral-8x7b-32768 | groq | 144 |
o1-mini | openai | 145 |
o1-mini-2024-09-12 | openai | 146 |
o1-preview | openai | 147 |
o1-preview-2024-09-12 | openai | 148 |
omni-moderation-2024-09-26 | openai | 149 |
omni-moderation-latest | openai | 150 |
open-mistral-7b | mistral | 151 |
open-mistral-nemo-2407 | mistral | 152 |
open-mixtral-8x22b | mistral | 153 |
open-mixtral-8x7b | mistral | 154 |
openbmb/MiniCPM-Llama3-V-2_5 | deep_infra | 155 |
openchat/openchat_3.5 | deep_infra | 156 |
pixtral-12b-2409 | mistral | 157 |
test | test | 158 |
togethercomputer/StripedHyena-Nous-7B | together | 159 |
togethercomputer/m2-bert-80M-2k-retrieval | together | 160 |
togethercomputer/m2-bert-80M-32k-retrieval | together | 161 |
togethercomputer/m2-bert-80M-8k-retrieval | together | 162 |
upstage/SOLAR-10.7B-Instruct-v1.0 | together | 163 |
Here we select GPT 4o (if no model is specified, the default model is used – run Model()
to verify the current default model):
[13]:
model = Model("gpt-4o")
model
[13]:
key | value |
---|---|
model | gpt-4o |
parameters:temperature | 0.5 |
parameters:max_tokens | 1000 |
parameters:top_p | 1 |
parameters:frequency_penalty | 0 |
parameters:presence_penalty | 0 |
parameters:logprobs | False |
parameters:top_logprobs | 3 |
Adding data to the questions
We add the contents of each ticket into each question as an independent “scenario” for review. This allows us to create versions of the questions for each job post and deliver them to the model all at once:
[14]:
from edsl import ScenarioList
scenarios = ScenarioList.from_list("ticket", tickets)
scenarios
[14]:
ScenarioList scenarios: 20; keys: ['ticket'];
ticket |
---|
I just realized I left my phone in the car on my last ride. Can you help me get it back? |
I'm unhappy with my recent experience. The driver was very rude and unprofessional. |
I was charged more than the estimated fare for my trip yesterday. Can you explain why? |
The car seat provided was not properly installed, and I felt my child was at risk. Please ensure driver training. |
My driver took a longer route than necessary, resulting in a higher fare. I request a fare adjustment. |
I had a great experience with my driver today! Very friendly and efficient service. |
I'm concerned about the vehicle's cleanliness. It was not up to the standard I expect. |
The app keeps crashing every time I try to book a ride. Please fix this issue. |
My driver was exceptional - safe driving, polite, and the car was spotless. Kudos! |
I felt unsafe during my ride due to the driver's erratic behavior. This needs to be addressed immediately. |
The driver refused to follow my preferred route, which is shorter. I'm not satisfied with the service. |
Impressed with the quick response to my ride request and the driver's professionalism. |
I was charged for a ride I never took. Please refund me as soon as possible. |
The promo code I tried to use didn't work. Can you assist with this? |
There was a suspicious smell in the car, and I'm worried about hygiene standards. |
My driver was very considerate, especially helping me with my luggage. Appreciate the great service! |
The app's GPS seems inaccurate. It directed the driver to the wrong pick-up location. |
I want to compliment my driver's excellent navigation and time management during rush hour. |
The vehicle didn't match the description in the app. It was confusing and concerning. |
I faced an issue with payment processing after my last ride. Can you look into this? |
Running the survey
We run the survey by adding the scenarios, agent and model with the by()
method and then calling the run()
method:
[15]:
results = survey.by(scenarios).by(agent).by(model).run()
This generates a formatted dataset of Results
that includes information about all the components, including the prompts and responses. We can see a list of all the components:
[16]:
results.columns
[16]:
0 |
---|
agent.agent_instruction |
agent.agent_name |
agent.persona |
agent.years_experience |
answer.accident |
answer.issues |
answer.primary_issue |
answer.priority |
answer.refund |
answer.sentiment |
comment.accident_comment |
comment.issues_comment |
comment.primary_issue_comment |
comment.priority_comment |
comment.refund_comment |
comment.sentiment_comment |
generated_tokens.accident_generated_tokens |
generated_tokens.issues_generated_tokens |
generated_tokens.primary_issue_generated_tokens |
generated_tokens.priority_generated_tokens |
generated_tokens.refund_generated_tokens |
generated_tokens.sentiment_generated_tokens |
iteration.iteration |
model.frequency_penalty |
model.logprobs |
model.max_tokens |
model.model |
model.presence_penalty |
model.temperature |
model.top_logprobs |
model.top_p |
prompt.accident_system_prompt |
prompt.accident_user_prompt |
prompt.issues_system_prompt |
prompt.issues_user_prompt |
prompt.primary_issue_system_prompt |
prompt.primary_issue_user_prompt |
prompt.priority_system_prompt |
prompt.priority_user_prompt |
prompt.refund_system_prompt |
prompt.refund_user_prompt |
prompt.sentiment_system_prompt |
prompt.sentiment_user_prompt |
question_options.accident_question_options |
question_options.issues_question_options |
question_options.primary_issue_question_options |
question_options.priority_question_options |
question_options.refund_question_options |
question_options.sentiment_question_options |
question_text.accident_question_text |
question_text.issues_question_text |
question_text.primary_issue_question_text |
question_text.priority_question_text |
question_text.refund_question_text |
question_text.sentiment_question_text |
question_type.accident_question_type |
question_type.issues_question_type |
question_type.primary_issue_question_type |
question_type.priority_question_type |
question_type.refund_question_type |
question_type.sentiment_question_type |
raw_model_response.accident_cost |
raw_model_response.accident_one_usd_buys |
raw_model_response.accident_raw_model_response |
raw_model_response.issues_cost |
raw_model_response.issues_one_usd_buys |
raw_model_response.issues_raw_model_response |
raw_model_response.primary_issue_cost |
raw_model_response.primary_issue_one_usd_buys |
raw_model_response.primary_issue_raw_model_response |
raw_model_response.priority_cost |
raw_model_response.priority_one_usd_buys |
raw_model_response.priority_raw_model_response |
raw_model_response.refund_cost |
raw_model_response.refund_one_usd_buys |
raw_model_response.refund_raw_model_response |
raw_model_response.sentiment_cost |
raw_model_response.sentiment_one_usd_buys |
raw_model_response.sentiment_raw_model_response |
scenario.ticket |
Analyzing results
EDSL comes with built-in methods for analyzing results. Here we filter, sort, select and print components in a table:
[17]:
(
results
.filter("priority in [4, 5]")
.sort_by("issues", "sentiment")
.select("ticket", "issues", "primary_issue", "accident", "sentiment", "refund", "priority")
)
[17]:
scenario.ticket | answer.issues | answer.primary_issue | answer.accident | answer.sentiment | answer.refund | answer.priority |
---|---|---|---|---|---|---|
The app's GPS seems inaccurate. It directed the driver to the wrong pick-up location. | ['GPS/route'] | The primary issue in this ticket is the inaccuracy of the app's GPS, which resulted in directing the driver to the wrong pick-up location. This can lead to delays and inconvenience for both the driver and the customer, so it's important to address the GPS functionality to ensure it provides accurate directions. | No | Somewhat negative | No | 4 |
The app keeps crashing every time I try to book a ride. Please fix this issue. | ['other'] | The primary issue in this ticket is that the app crashes whenever the user attempts to book a ride. The user is requesting a fix for this problem. | Not applicable | Somewhat negative | No | 5 |
The car seat provided was not properly installed, and I felt my child was at risk. Please ensure driver training. | ['safety', 'driver performance'] | The primary issue in this ticket is the improper installation of the car seat provided by the driver, which made the customer feel that their child's safety was at risk. The customer is requesting that drivers receive additional training to ensure proper car seat installation in the future. | No | Very negative | No | 5 |
I felt unsafe during my ride due to the driver's erratic behavior. This needs to be addressed immediately. | ['safety', 'driver performance'] | The primary issue in this ticket is the customer's feeling of being unsafe due to the driver's erratic behavior. This is a serious concern that requires immediate attention to ensure the safety of passengers and to address any potential misconduct by the driver. | Not applicable | Very negative | No | 5 |
We can apply some lables to our table:
[18]:
(
results.select(
"ticket",
"issues",
"primary_issue",
"accident",
"sentiment",
"refund",
"priority",
).print(
pretty_labels={
"scenario.ticket": "Ticket",
"answer.issues": "Issues",
"answer.primary_issue": "Primary issue",
"answer.accident": "Accident",
"answer.sentiment": "Sentiment",
"answer.refund": "Refund request",
"answer.priority": "Priority",
}
)
)
[18]:
Ticket | Issues | Primary issue | Accident | Sentiment | Refund request | Priority |
---|---|---|---|---|---|---|
I just realized I left my phone in the car on my last ride. Can you help me get it back? | ['lost item'] | The primary issue in this ticket is that the customer left their phone in a car during their last ride and needs assistance in retrieving it. | Not applicable | Somewhat negative | No | 3 |
I'm unhappy with my recent experience. The driver was very rude and unprofessional. | ['driver performance'] | The primary issue in this ticket is the customer's dissatisfaction with the behavior of the driver, who was described as rude and unprofessional. Addressing this concern involves acknowledging the customer's experience, apologizing for the inconvenience, and taking appropriate steps to ensure such behavior is not repeated in the future. | No | Very negative | No | 3 |
I was charged more than the estimated fare for my trip yesterday. Can you explain why? | ['other'] | The primary issue in this ticket is that the customer was charged more than the estimated fare for their trip and is seeking an explanation for the discrepancy. | Not applicable | Somewhat negative | No | 3 |
The car seat provided was not properly installed, and I felt my child was at risk. Please ensure driver training. | ['safety', 'driver performance'] | The primary issue in this ticket is the improper installation of the car seat provided by the driver, which made the customer feel that their child's safety was at risk. The customer is requesting that drivers receive additional training to ensure proper car seat installation in the future. | No | Very negative | No | 5 |
My driver took a longer route than necessary, resulting in a higher fare. I request a fare adjustment. | ['driver performance', 'GPS/route'] | The primary issue in this ticket is that the customer believes the driver took a longer route than necessary, which led to a higher fare. The customer is requesting an adjustment to the fare to reflect what they believe should have been the correct amount. | No | Somewhat negative | No | 2 |
I had a great experience with my driver today! Very friendly and efficient service. | ['driver performance'] | It seems there is no issue in this ticket. Instead, it appears to be positive feedback about a great experience with the driver. It's always wonderful to receive compliments about friendly and efficient service! | Not applicable | Very positive | No | 0 |
I'm concerned about the vehicle's cleanliness. It was not up to the standard I expect. | ['cleanliness'] | The primary issue in this ticket is the customer's concern about the cleanliness of the vehicle. They feel that the vehicle was not cleaned to the standard they expect. Addressing this issue would involve ensuring the vehicle is thoroughly cleaned and possibly offering an apology or compensation to the customer for their inconvenience. | No | Somewhat negative | No | 2 |
The app keeps crashing every time I try to book a ride. Please fix this issue. | ['other'] | The primary issue in this ticket is that the app crashes whenever the user attempts to book a ride. The user is requesting a fix for this problem. | Not applicable | Somewhat negative | No | 5 |
My driver was exceptional - safe driving, polite, and the car was spotless. Kudos! | ['safety', 'cleanliness', 'driver performance'] | The primary issue in this ticket is not a complaint or problem, but rather positive feedback. The customer is expressing satisfaction with their driver, highlighting the driver's safe driving, politeness, and the cleanliness of the car. This is a commendation rather than an issue. | Not applicable | Very positive | No | 0 |
I felt unsafe during my ride due to the driver's erratic behavior. This needs to be addressed immediately. | ['safety', 'driver performance'] | The primary issue in this ticket is the customer's feeling of being unsafe due to the driver's erratic behavior. This is a serious concern that requires immediate attention to ensure the safety of passengers and to address any potential misconduct by the driver. | Not applicable | Very negative | No | 5 |
The driver refused to follow my preferred route, which is shorter. I'm not satisfied with the service. | ['driver performance', 'GPS/route'] | The primary issue in this ticket is that the driver did not follow the customer's preferred route, which the customer believes is shorter, leading to dissatisfaction with the service. As an expert customer service agent, I would address the customer's concern by acknowledging their frustration, explaining any possible reasons for the driver's decision (such as traffic conditions or company policy), and offering a resolution or compensation if appropriate. | No | Very negative | No | 2 |
Impressed with the quick response to my ride request and the driver's professionalism. | ['driver performance', 'other'] | Based on the content of the ticket, it appears that there is no issue being reported. Instead, the ticket contains positive feedback regarding the quick response to a ride request and the professionalism of the driver. This is a commendation rather than a complaint or issue that needs resolution. | Not applicable | Very positive | No | 0 |
I was charged for a ride I never took. Please refund me as soon as possible. | ['other'] | The primary issue in this ticket is an incorrect charge for a ride that the customer claims they did not take. The customer is requesting a refund for this charge. | Not applicable | Somewhat negative | Yes | 3 |
The promo code I tried to use didn't work. Can you assist with this? | ['other'] | The primary issue in this ticket is that the customer is experiencing difficulty with a promo code that did not work as expected. The customer is seeking assistance to resolve this issue. | Not applicable | Somewhat negative | No | 2 |
There was a suspicious smell in the car, and I'm worried about hygiene standards. | ['cleanliness', 'other'] | The primary issue in this ticket is the customer's concern about a suspicious smell in the car, which is raising worries about the hygiene standards of the vehicle. Addressing this issue would likely involve investigating the source of the smell and ensuring that the vehicle meets cleanliness and hygiene standards. | No | Somewhat negative | No | 3 |
My driver was very considerate, especially helping me with my luggage. Appreciate the great service! | ['driver performance'] | The primary issue in this ticket is actually not an issue at all. It appears to be a positive feedback or compliment regarding the driver's considerate behavior and assistance with luggage. It's always great to receive such positive comments about the service provided! | No | Very positive | No | 0 |
The app's GPS seems inaccurate. It directed the driver to the wrong pick-up location. | ['GPS/route'] | The primary issue in this ticket is the inaccuracy of the app's GPS, which resulted in directing the driver to the wrong pick-up location. This can lead to delays and inconvenience for both the driver and the customer, so it's important to address the GPS functionality to ensure it provides accurate directions. | No | Somewhat negative | No | 4 |
I want to compliment my driver's excellent navigation and time management during rush hour. | ['driver performance', 'GPS/route'] | The primary issue in this ticket is not a problem or complaint, but rather a compliment. The customer is expressing appreciation for their driver's excellent navigation and time management skills during rush hour. | Not applicable | Very positive | No | 1 |
The vehicle didn't match the description in the app. It was confusing and concerning. | ['other'] | The primary issue in this ticket is that the vehicle provided did not match the description given in the app. This discrepancy caused confusion and concern for the customer. It's important to address this by verifying the accuracy of vehicle descriptions in the app to ensure they align with what is actually provided, thereby enhancing customer trust and satisfaction. | No | Somewhat negative | No | 3 |
I faced an issue with payment processing after my last ride. Can you look into this? | ['other'] | The primary issue in this ticket is a problem with payment processing after the customer's last ride. The customer is requesting assistance to investigate and resolve the payment issue. | Not applicable | Neutral | No | 3 |
EDSL also comes with methods for accessing results as a dataframe or SQL table:
[19]:
df = (
results
.select(
"issues",
"primary_issue",
"accident",
"sentiment",
"refund",
"priority"
)
.to_pandas(remove_prefix=True)
)
df
[19]:
issues | primary_issue | accident | sentiment | refund | priority | |
---|---|---|---|---|---|---|
0 | ['lost item'] | The primary issue in this ticket is that the c... | Not applicable | Somewhat negative | No | 3 |
1 | ['driver performance'] | The primary issue in this ticket is the custom... | No | Very negative | No | 3 |
2 | ['other'] | The primary issue in this ticket is that the c... | Not applicable | Somewhat negative | No | 3 |
3 | ['safety', 'driver performance'] | The primary issue in this ticket is the improp... | No | Very negative | No | 5 |
4 | ['driver performance', 'GPS/route'] | The primary issue in this ticket is that the c... | No | Somewhat negative | No | 2 |
5 | ['driver performance'] | It seems there is no issue in this ticket. Ins... | Not applicable | Very positive | No | 0 |
6 | ['cleanliness'] | The primary issue in this ticket is the custom... | No | Somewhat negative | No | 2 |
7 | ['other'] | The primary issue in this ticket is that the a... | Not applicable | Somewhat negative | No | 5 |
8 | ['safety', 'cleanliness', 'driver performance'] | The primary issue in this ticket is not a comp... | Not applicable | Very positive | No | 0 |
9 | ['safety', 'driver performance'] | The primary issue in this ticket is the custom... | Not applicable | Very negative | No | 5 |
10 | ['driver performance', 'GPS/route'] | The primary issue in this ticket is that the d... | No | Very negative | No | 2 |
11 | ['driver performance', 'other'] | Based on the content of the ticket, it appears... | Not applicable | Very positive | No | 0 |
12 | ['other'] | The primary issue in this ticket is an incorre... | Not applicable | Somewhat negative | Yes | 3 |
13 | ['other'] | The primary issue in this ticket is that the c... | Not applicable | Somewhat negative | No | 2 |
14 | ['cleanliness', 'other'] | The primary issue in this ticket is the custom... | No | Somewhat negative | No | 3 |
15 | ['driver performance'] | The primary issue in this ticket is actually n... | No | Very positive | No | 0 |
16 | ['GPS/route'] | The primary issue in this ticket is the inaccu... | No | Somewhat negative | No | 4 |
17 | ['driver performance', 'GPS/route'] | The primary issue in this ticket is not a prob... | Not applicable | Very positive | No | 1 |
18 | ['other'] | The primary issue in this ticket is that the v... | No | Somewhat negative | No | 3 |
19 | ['other'] | The primary issue in this ticket is a problem ... | Not applicable | Neutral | No | 3 |
We can also access results as a SQL table:
[20]:
results.sql("""
select ticket, issues, primary_issue, accident, sentiment, refund, priority
from self
""")
[20]:
ticket | issues | primary_issue | accident | sentiment | refund | priority |
---|---|---|---|---|---|---|
I just realized I left my phone in the car on my last ride. Can you help me get it back? | ['lost item'] | The primary issue in this ticket is that the customer left their phone in a car during their last ride and needs assistance in retrieving it. | Not applicable | Somewhat negative | No | 3 |
I'm unhappy with my recent experience. The driver was very rude and unprofessional. | ['driver performance'] | The primary issue in this ticket is the customer's dissatisfaction with the behavior of the driver, who was described as rude and unprofessional. Addressing this concern involves acknowledging the customer's experience, apologizing for the inconvenience, and taking appropriate steps to ensure such behavior is not repeated in the future. | No | Very negative | No | 3 |
I was charged more than the estimated fare for my trip yesterday. Can you explain why? | ['other'] | The primary issue in this ticket is that the customer was charged more than the estimated fare for their trip and is seeking an explanation for the discrepancy. | Not applicable | Somewhat negative | No | 3 |
The car seat provided was not properly installed, and I felt my child was at risk. Please ensure driver training. | ['safety', 'driver performance'] | The primary issue in this ticket is the improper installation of the car seat provided by the driver, which made the customer feel that their child's safety was at risk. The customer is requesting that drivers receive additional training to ensure proper car seat installation in the future. | No | Very negative | No | 5 |
My driver took a longer route than necessary, resulting in a higher fare. I request a fare adjustment. | ['driver performance', 'GPS/route'] | The primary issue in this ticket is that the customer believes the driver took a longer route than necessary, which led to a higher fare. The customer is requesting an adjustment to the fare to reflect what they believe should have been the correct amount. | No | Somewhat negative | No | 2 |
I had a great experience with my driver today! Very friendly and efficient service. | ['driver performance'] | It seems there is no issue in this ticket. Instead, it appears to be positive feedback about a great experience with the driver. It's always wonderful to receive compliments about friendly and efficient service! | Not applicable | Very positive | No | 0 |
I'm concerned about the vehicle's cleanliness. It was not up to the standard I expect. | ['cleanliness'] | The primary issue in this ticket is the customer's concern about the cleanliness of the vehicle. They feel that the vehicle was not cleaned to the standard they expect. Addressing this issue would involve ensuring the vehicle is thoroughly cleaned and possibly offering an apology or compensation to the customer for their inconvenience. | No | Somewhat negative | No | 2 |
The app keeps crashing every time I try to book a ride. Please fix this issue. | ['other'] | The primary issue in this ticket is that the app crashes whenever the user attempts to book a ride. The user is requesting a fix for this problem. | Not applicable | Somewhat negative | No | 5 |
My driver was exceptional - safe driving, polite, and the car was spotless. Kudos! | ['safety', 'cleanliness', 'driver performance'] | The primary issue in this ticket is not a complaint or problem, but rather positive feedback. The customer is expressing satisfaction with their driver, highlighting the driver's safe driving, politeness, and the cleanliness of the car. This is a commendation rather than an issue. | Not applicable | Very positive | No | 0 |
I felt unsafe during my ride due to the driver's erratic behavior. This needs to be addressed immediately. | ['safety', 'driver performance'] | The primary issue in this ticket is the customer's feeling of being unsafe due to the driver's erratic behavior. This is a serious concern that requires immediate attention to ensure the safety of passengers and to address any potential misconduct by the driver. | Not applicable | Very negative | No | 5 |
The driver refused to follow my preferred route, which is shorter. I'm not satisfied with the service. | ['driver performance', 'GPS/route'] | The primary issue in this ticket is that the driver did not follow the customer's preferred route, which the customer believes is shorter, leading to dissatisfaction with the service. As an expert customer service agent, I would address the customer's concern by acknowledging their frustration, explaining any possible reasons for the driver's decision (such as traffic conditions or company policy), and offering a resolution or compensation if appropriate. | No | Very negative | No | 2 |
Impressed with the quick response to my ride request and the driver's professionalism. | ['driver performance', 'other'] | Based on the content of the ticket, it appears that there is no issue being reported. Instead, the ticket contains positive feedback regarding the quick response to a ride request and the professionalism of the driver. This is a commendation rather than a complaint or issue that needs resolution. | Not applicable | Very positive | No | 0 |
I was charged for a ride I never took. Please refund me as soon as possible. | ['other'] | The primary issue in this ticket is an incorrect charge for a ride that the customer claims they did not take. The customer is requesting a refund for this charge. | Not applicable | Somewhat negative | Yes | 3 |
The promo code I tried to use didn't work. Can you assist with this? | ['other'] | The primary issue in this ticket is that the customer is experiencing difficulty with a promo code that did not work as expected. The customer is seeking assistance to resolve this issue. | Not applicable | Somewhat negative | No | 2 |
There was a suspicious smell in the car, and I'm worried about hygiene standards. | ['cleanliness', 'other'] | The primary issue in this ticket is the customer's concern about a suspicious smell in the car, which is raising worries about the hygiene standards of the vehicle. Addressing this issue would likely involve investigating the source of the smell and ensuring that the vehicle meets cleanliness and hygiene standards. | No | Somewhat negative | No | 3 |
My driver was very considerate, especially helping me with my luggage. Appreciate the great service! | ['driver performance'] | The primary issue in this ticket is actually not an issue at all. It appears to be a positive feedback or compliment regarding the driver's considerate behavior and assistance with luggage. It's always great to receive such positive comments about the service provided! | No | Very positive | No | 0 |
The app's GPS seems inaccurate. It directed the driver to the wrong pick-up location. | ['GPS/route'] | The primary issue in this ticket is the inaccuracy of the app's GPS, which resulted in directing the driver to the wrong pick-up location. This can lead to delays and inconvenience for both the driver and the customer, so it's important to address the GPS functionality to ensure it provides accurate directions. | No | Somewhat negative | No | 4 |
I want to compliment my driver's excellent navigation and time management during rush hour. | ['driver performance', 'GPS/route'] | The primary issue in this ticket is not a problem or complaint, but rather a compliment. The customer is expressing appreciation for their driver's excellent navigation and time management skills during rush hour. | Not applicable | Very positive | No | 1 |
The vehicle didn't match the description in the app. It was confusing and concerning. | ['other'] | The primary issue in this ticket is that the vehicle provided did not match the description given in the app. This discrepancy caused confusion and concern for the customer. It's important to address this by verifying the accuracy of vehicle descriptions in the app to ensure they align with what is actually provided, thereby enhancing customer trust and satisfaction. | No | Somewhat negative | No | 3 |
I faced an issue with payment processing after my last ride. Can you look into this? | ['other'] | The primary issue in this ticket is a problem with payment processing after the customer's last ride. The customer is requesting assistance to investigate and resolve the payment issue. | Not applicable | Neutral | No | 3 |
To export results to a CSV file:
[21]:
results.to_csv("data_labeling_example.csv")
[21]:
key | value |
---|---|
path | data_labeling_example.csv |
base64_string | YW5zd2VyLmFjY2lkZW50LGFuc3dlci5wcmltYXJ5X2lzc3VlLGFuc3dlci5wcmlvcml0eSxhbnN3ZXIucmVmdW5kLGFuc3dlci5pc3N1ZXMsYW5zd2VyLnNlbnRpbWVudCxzY2VuYXJpby50aWNrZXQsYWdlbnQuYWdlbnRfbmFtZSxhZ2VudC5hZ2VudF9pbnN0cnVjdGlvbixhZ2VudC55ZWFyc19leHBlcmllbmNlLGFnZW50LnBlcnNvbmEsbW9kZWwuZnJlcXVlbmN5X3BlbmFsdHksbW9kZWwucHJlc2VuY2VfcGVuYWx0eSxtb2RlbC50b3BfcCxtb2RlbC50b3BfbG9ncHJvYnMsbW9kZWwubW9kZWwsbW9kZWwubG9ncHJvYnMsbW9kZWwudGVtcGVyYXR1cmUsbW9kZWwubWF4X3Rva2Vucyxwcm9tcHQuaXNzdWVzX3N5c3RlbV9wcm9tcHQscHJvbXB0LnByaW9yaXR5X3N5c3RlbV9wcm9tcHQscHJvbXB0LnJlZnVuZF91c2VyX3Byb21wdCxwcm9tcHQuc2VudGltZW50X3VzZXJfcHJvbXB0LHByb21wdC5hY2NpZGVudF91c2VyX3Byb21wdCxwcm9tcHQuc2VudGltZW50X3N5c3RlbV9wcm9tcHQscHJvbXB0LnByaW1hcnlfaXNzdWVfdXNlcl9wcm9tcHQscHJvbXB0LnByaW1hcnlfaXNzdWVfc3lzdGVtX3Byb21wdCxwcm9tcHQucHJpb3JpdHlfdXNlcl9wcm9tcHQscHJvbXB0LmFjY2lkZW50X3N5c3RlbV9wcm9tcHQscHJvbXB0LnJlZnVuZF9zeXN0ZW1fcHJvbXB0LHByb21wdC5pc3N1ZXNfdXNlcl9wcm9tcHQscmF3X21vZGVsX3Jlc3BvbnNlLmlzc3Vlc19jb3N0LHJhd19tb2RlbF9yZXNwb25zZS5zZW50aW1lbnRfY29zdCxyYXdfbW9kZWxfcmVzcG9uc2UucHJpb3JpdHlfb25lX3VzZF9idXlzLHJhd19tb2RlbF9yZXNwb25zZS5wcmltYXJ5X2lzc3VlX3Jhd19tb2RlbF9yZXNwb25zZSxyYXdfbW9kZWxfcmVzcG9uc2UuYWNjaWRlbnRfb25lX3VzZF9idXlzLHJhd19tb2RlbF9yZXNwb25zZS5hY2NpZGVudF9yYXdfbW9kZWxfcmVzcG9uc2UscmF3X21vZGVsX3Jlc3BvbnNlLnByaW1hcnlfaXNzdWVfY29zdCxyYXdfbW9kZWxfcmVzcG9uc2UucHJpb3JpdHlfcmF3X21vZGVsX3Jlc3BvbnNlLHJhd19tb2RlbF9yZXNwb25zZS5wcmltYXJ5X2lzc3VlX29uZV91c2RfYnV5cyxyYXdfbW9kZWxfcmVzcG9uc2Uuc2VudGltZW50X29uZV91c2RfYnV5cyxyYXdfbW9kZWxfcmVzcG9uc2UucmVmdW5kX3Jhd19tb2RlbF9yZXNwb25zZSxyYXdfbW9kZWxfcmVzcG9uc2UuaXNzdWVzX29uZV91c2RfYnV5cyxyYXdfbW9kZWxfcmVzcG9uc2UucmVmdW5kX29uZV91c2RfYnV5cyxyYXdfbW9kZWxfcmVzcG9uc2UuYWNjaWRlbnRfY29zdCxyYXdfbW9kZWxfcmVzcG9uc2UuaXNzdWVzX3Jhd19tb2RlbF9yZXNwb25zZSxyYXdfbW9kZWxfcmVzcG9uc2Uuc2VudGltZW50X3Jhd19tb2RlbF9yZXNwb25zZSxyYXdfbW9kZWxfcmVzcG9uc2UucHJpb3JpdHlfY29zdCxyYXdfbW9kZWxfcmVzcG9uc2UucmVmdW5kX2Nvc3QsaXRlcmF0aW9uLml0ZXJhdGlvbixxdWVzdGlvbl90ZXh0LmFjY2lkZW50X3F1ZXN0aW9uX3RleHQscXVlc3Rpb25fdGV4dC5wcmlvcml0eV9xdWVzdGlvbl90ZXh0LHF1ZXN0aW9uX3RleHQuc2VudGltZW50X3F1ZXN0aW9uX3RleHQscXVlc3Rpb25fdGV4dC5wcmltYXJ5X2lzc3VlX3F1ZXN0aW9uX3RleHQscXVlc3Rpb25fdGV4dC5yZWZ1bmRfcXVlc3Rpb25fdGV4dCxxdWVzdGlvbl90ZXh0Lmlzc3Vlc19xdWVzdGlvbl90ZXh0LHF1ZXN0aW9uX29wdGlvbnMuaXNzdWVzX3F1ZXN0aW9uX29wdGlvbnMscXVlc3Rpb25fb3B0aW9ucy5zZW50aW1lbnRfcXVlc3Rpb25fb3B0aW9ucyxxdWVzdGlvbl9vcHRpb25zLmFjY2lkZW50X3F1ZXN0aW9uX29wdGlvbnMscXVlc3Rpb25fb3B0aW9ucy5yZWZ1bmRfcXVlc3Rpb25fb3B0aW9ucyxxdWVzdGlvbl9vcHRpb25zLnByaW9yaXR5X3F1ZXN0aW9uX29wdGlvbnMscXVlc3Rpb25fb3B0aW9ucy5wcmltYXJ5X2lzc3VlX3F1ZXN0aW9uX29wdGlvbnMscXVlc3Rpb25fdHlwZS5yZWZ1bmRfcXVlc3Rpb25fdHlwZSxxdWVzdGlvbl90eXBlLnNlbnRpbWVudF9xdWVzdGlvbl90eXBlLHF1ZXN0aW9uX3R5cGUuaXNzdWVzX3F1ZXN0aW9uX3R5cGUscXVlc3Rpb25fdHlwZS5wcmlvcml0eV9xdWVzdGlvbl90eXBlLHF1ZXN0aW9uX3R5cGUuYWNjaWRlbnRfcXVlc3Rpb25fdHlwZSxxdWVzdGlvbl90eXBlLnByaW1hcnlfaXNzdWVfcXVlc3Rpb25fdHlwZSxjb21tZW50LnByaW9yaXR5X2NvbW1lbnQsY29tbWVudC5wcmltYXJ5X2lzc3VlX2NvbW1lbnQsY29tbWVudC5zZW50aW1lbnRfY29tbWVudCxjb21tZW50LmFjY2lkZW50X2NvbW1lbnQsY29tbWVudC5yZWZ1bmRfY29tbWVudCxjb21tZW50Lmlzc3Vlc19jb21tZW50LGdlbmVyYXRlZF90b2tlbnMuaXNzdWVzX2dlbmVyYXRlZF90b2tlbnMsZ2VuZXJhdGVkX3Rva2Vucy5yZWZ1bmRfZ2VuZXJhdGVkX3Rva2VucyxnZW5lcmF0ZWRfdG9rZW5zLnByaW1hcnlfaXNzdWVfZ2VuZXJhdGVkX3Rva2VucyxnZW5lcmF0ZWRfdG9rZW5zLmFjY2lkZW50X2dlbmVyYXRlZF90b2tlbnMsZ2VuZXJhdGVkX3Rva2Vucy5wcmlvcml0eV9nZW5lcmF0ZWRfdG9rZW5zLGdlbmVyYXRlZF90b2tlbnMuc2VudGltZW50X2dlbmVyYXRlZF90b2tlbnMNCk5vdCBhcHBsaWNhYmxlLFRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoYXQgdGhlIGN1c3RvbWVyIGxlZnQgdGhlaXIgcGhvbmUgaW4gYSBjYXIgZHVyaW5nIHRoZWlyIGxhc3QgcmlkZSBhbmQgbmVlZHMgYXNzaXN0YW5jZSBpbiByZXRyaWV2aW5nIGl0LiwzLE5vLFsnbG9zdCBpdGVtJ10sU29tZXdoYXQgbmVnYXRpdmUsSSBqdXN0IHJlYWxpemVkIEkgbGVmdCBteSBwaG9uZSBpbiB0aGUgY2FyIG9uIG15IGxhc3QgcmlkZS4gQ2FuIHlvdSBoZWxwIG1lIGdldCBpdCBiYWNrPyxBZ2VudF8wLFlvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiwxNSxZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LiwwLDAsMSwzLGdwdC00byxGYWxzZSwwLjUsMTAwMCwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCIKRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBJIGp1c3QgcmVhbGl6ZWQgSSBsZWZ0IG15IHBob25lIGluIHRoZSBjYXIgb24gbXkgbGFzdCByaWRlLiBDYW4geW91IGhlbHAgbWUgZ2V0IGl0IGJhY2s/CgogICAgCk5vCiAgICAKWWVzCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgpQbGVhc2UgcmVzcG9uZCB3aXRoIGp1c3QgeW91ciBhbnN3ZXIuIAoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHlvdXIgcmVzcG9uc2UuIiwiCldoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBJIGp1c3QgcmVhbGl6ZWQgSSBsZWZ0IG15IHBob25lIGluIHRoZSBjYXIgb24gbXkgbGFzdCByaWRlLiBDYW4geW91IGhlbHAgbWUgZ2V0IGl0IGJhY2s/CgogICAgClZlcnkgcG9zaXRpdmUKICAgIApTb21ld2hhdCBwb3NpdGl2ZQogICAgCk5ldXRyYWwKICAgIApTb21ld2hhdCBuZWdhdGl2ZQogICAgClZlcnkgbmVnYXRpdmUKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiCklmIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHNhZmV0eSwgd2FzIHRoZXJlIGFuIGFjY2lkZW50IHdoZXJlIHNvbWVvbmUgd2FzIGh1cnQ/IFRpY2tldDogSSBqdXN0IHJlYWxpemVkIEkgbGVmdCBteSBwaG9uZSBpbiB0aGUgY2FyIG9uIG15IGxhc3QgcmlkZS4gQ2FuIHlvdSBoZWxwIG1lIGdldCBpdCBiYWNrPwoKICAgIApZZXMKICAgIApObwogICAgCk5vdCBhcHBsaWNhYmxlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogSSBqdXN0IHJlYWxpemVkIEkgbGVmdCBteSBwaG9uZSBpbiB0aGUgY2FyIG9uIG15IGxhc3QgcmlkZS4gQ2FuIHlvdSBoZWxwIG1lIGdldCBpdCBiYWNrPywiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IEkganVzdCByZWFsaXplZCBJIGxlZnQgbXkgcGhvbmUgaW4gdGhlIGNhciBvbiBteSBsYXN0IHJpZGUuIENhbiB5b3UgaGVscCBtZSBnZXQgaXQgYmFjaz8KCjAgOiBMb3dlc3QKCjEgOiAKCjIgOiAKCjMgOiAKCjQgOiAKCjUgOiBIaWdoZXN0CgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIHRoZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLiBFLmcuLCAiIjEiIiBvciAiIjUiIiBieSBpdHNlbGYuCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJDaGVjayBhbGwgb2YgdGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhpcyB0aWNrZXQ6IEkganVzdCByZWFsaXplZCBJIGxlZnQgbXkgcGhvbmUgaW4gdGhlIGNhciBvbiBteSBsYXN0IHJpZGUuIENhbiB5b3UgaGVscCBtZSBnZXQgaXQgYmFjaz8KCiAgICAKMDogc2FmZXR5CiAgICAKMTogY2xlYW5saW5lc3MKICAgIAoyOiBkcml2ZXIgcGVyZm9ybWFuY2UKICAgIAozOiBHUFMvcm91dGUKICAgIAo0OiBsb3N0IGl0ZW0KICAgIAo1OiBvdGhlcgogICAgCgoKCgoKClBsZWFzZSByZXNwb25kIG9ubHkgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBjb2RlIG9mIHRoZSBvcHRpb25zIHRoYXQgYXBwbHksIHdpdGggc3F1YXJlIGJyYWNrZXRzLiBFLmcuLCBbMCwgMSwgM10KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIGNob2ljZSBvbiB0aGUgbmV4dCBsaW5lLiIsMC4wMDA2NiwwLjAwMDY1MjUsMTI2OS44NDEyNjk4NDEyNjk5LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDeFFIeUFFZjhvcWlYbjNRNXVWek9iVEhFJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyB0aGF0IHRoZSBjdXN0b21lciBsZWZ0IHRoZWlyIHBob25lIGluIGEgY2FyIGR1cmluZyB0aGVpciBsYXN0IHJpZGUgYW5kIG5lZWRzIGFzc2lzdGFuY2UgaW4gcmV0cmlldmluZyBpdC4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyNywgJ3Byb21wdF90b2tlbnMnOiA4NCwgJ3RvdGFsX3Rva2Vucyc6IDExMSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTczMS42MDE3MzE2MDE3MzE3LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDMDdWcmJHckZ1aHF0NDlyZzN3U0xwU3dOJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdOb3QgYXBwbGljYWJsZSAgXG5UaGUgaXNzdWUgZGVzY3JpYmVkIGluIHRoZSB0aWNrZXQgaXMgYWJvdXQgYSBsb3N0IHBob25lLCBub3QgYW4gYWNjaWRlbnQgb3Igc2FmZXR5IGNvbmNlcm4uJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwXzlmYWJhOWYwMzgnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjIsICdwcm9tcHRfdG9rZW5zJzogMTQzLCAndG90YWxfdG9rZW5zJzogMTY1LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwwLjAwMDQ4LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDRjFNUER1dXE3OXE5T2VPRzNGMFVkWWpVJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICczICBcblRoaXMgc2l0dWF0aW9uIGlzIHVyZ2VudCBiZWNhdXNlIHRoZSBjdXN0b21lciBuZWVkcyB0aGVpciBwaG9uZSBiYWNrLCBidXQgaXQgaXMgbm90IGFuIGVtZXJnZW5jeSBvciBsaWZlLXRocmVhdGVuaW5nIHNpdHVhdGlvbi4gSXQgcmVxdWlyZXMgcHJvbXB0IGF0dGVudGlvbiB0byBmYWNpbGl0YXRlIHRoZSByZWNvdmVyeSBvZiB0aGUgcGhvbmUuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMzcsICdwcm9tcHRfdG9rZW5zJzogMTY3LCAndG90YWxfdG9rZW5zJzogMjA0LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwyMDgzLjMzMzMzMzMzMzMzMzUsMTUzMi41NjcwNDk4MDg0MjkxLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDOGxiN05pRnJFQjBvM25FNzlhVnJjaUVaJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdOb1xuXG5UaGUgdGlja2V0IGlzIHJlcXVlc3RpbmcgYXNzaXN0YW5jZSBpbiByZXRyaWV2aW5nIGEgbG9zdCBpdGVtLCBub3QgYXNraW5nIGZvciBhIHJlZnVuZC4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAxOSwgJ3Byb21wdF90b2tlbnMnOiAxMjEsICd0b3RhbF90b2tlbnMnOiAxNDAsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE1MTUuMTUxNTE1MTUxNTE1MiwyMDMwLjQ1Njg1Mjc5MTg3ODIsMC4wMDA1Nzc1LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDa1hKTHE1MVppTU5hajUwRXlLNmpYWGt5JywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdbNF0gIFxuVGhlIGlzc3VlIG1lbnRpb25lZCBpbiB0aGUgdGlja2V0IGlzIHJlbGF0ZWQgdG8gYSBsb3N0IGl0ZW0sIHNwZWNpZmljYWxseSBhIHBob25lIGxlZnQgaW4gdGhlIGNhci4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfZjc4NWViNWY0NycsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyNSwgJ3Byb21wdF90b2tlbnMnOiAxNjQsICd0b3RhbF90b2tlbnMnOiAxODksICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDSUtRYTBvNVFZTmRQSGlWVERPTHFVeFpHJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdTb21ld2hhdCBuZWdhdGl2ZSAgXG5UaGUgc2VudGltZW50IGlzIHNvbWV3aGF0IG5lZ2F0aXZlIGJlY2F1c2UgdGhlIGN1c3RvbWVyIGlzIGV4cGVyaWVuY2luZyBhIHByb2JsZW0gb3IgaW5jb252ZW5pZW5jZSBieSBsb3NpbmcgdGhlaXIgcGhvbmUgYW5kIGlzIHNlZWtpbmcgYXNzaXN0YW5jZSB0byByZXNvbHZlIGl0LicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDMwLCAncHJvbXB0X3Rva2Vucyc6IDE0MSwgJ3RvdGFsX3Rva2Vucyc6IDE3MSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA3ODc1LDAuMDAwNDkyNSwwLCJJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSIsV2hhdCBpcyB0aGUgc2VudGltZW50IG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxXaGF0IGlzIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxDaGVjayBhbGwgb2YgdGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhpcyB0aWNrZXQ6IHt7IHRpY2tldCB9fSwiWydzYWZldHknLCAnY2xlYW5saW5lc3MnLCAnZHJpdmVyIHBlcmZvcm1hbmNlJywgJ0dQUy9yb3V0ZScsICdsb3N0IGl0ZW0nLCAnb3RoZXInXSIsIlsnVmVyeSBwb3NpdGl2ZScsICdTb21ld2hhdCBwb3NpdGl2ZScsICdOZXV0cmFsJywgJ1NvbWV3aGF0IG5lZ2F0aXZlJywgJ1ZlcnkgbmVnYXRpdmUnXSIsIlsnWWVzJywgJ05vJywgJ05vdCBhcHBsaWNhYmxlJ10iLCJbJ05vJywgJ1llcyddIiwiWzAsIDEsIDIsIDMsIDQsIDVdIiwseWVzX25vLG11bHRpcGxlX2Nob2ljZSxjaGVja2JveCxsaW5lYXJfc2NhbGUsbXVsdGlwbGVfY2hvaWNlLGZyZWVfdGV4dCwiVGhpcyBzaXR1YXRpb24gaXMgdXJnZW50IGJlY2F1c2UgdGhlIGN1c3RvbWVyIG5lZWRzIHRoZWlyIHBob25lIGJhY2ssIGJ1dCBpdCBpcyBub3QgYW4gZW1lcmdlbmN5IG9yIGxpZmUtdGhyZWF0ZW5pbmcgc2l0dWF0aW9uLiBJdCByZXF1aXJlcyBwcm9tcHQgYXR0ZW50aW9uIHRvIGZhY2lsaXRhdGUgdGhlIHJlY292ZXJ5IG9mIHRoZSBwaG9uZS4iLCxUaGUgc2VudGltZW50IGlzIHNvbWV3aGF0IG5lZ2F0aXZlIGJlY2F1c2UgdGhlIGN1c3RvbWVyIGlzIGV4cGVyaWVuY2luZyBhIHByb2JsZW0gb3IgaW5jb252ZW5pZW5jZSBieSBsb3NpbmcgdGhlaXIgcGhvbmUgYW5kIGlzIHNlZWtpbmcgYXNzaXN0YW5jZSB0byByZXNvbHZlIGl0LiwiVGhlIGlzc3VlIGRlc2NyaWJlZCBpbiB0aGUgdGlja2V0IGlzIGFib3V0IGEgbG9zdCBwaG9uZSwgbm90IGFuIGFjY2lkZW50IG9yIHNhZmV0eSBjb25jZXJuLiIsIlRoZSB0aWNrZXQgaXMgcmVxdWVzdGluZyBhc3Npc3RhbmNlIGluIHJldHJpZXZpbmcgYSBsb3N0IGl0ZW0sIG5vdCBhc2tpbmcgZm9yIGEgcmVmdW5kLiIsIlRoZSBpc3N1ZSBtZW50aW9uZWQgaW4gdGhlIHRpY2tldCBpcyByZWxhdGVkIHRvIGEgbG9zdCBpdGVtLCBzcGVjaWZpY2FsbHkgYSBwaG9uZSBsZWZ0IGluIHRoZSBjYXIuIiwiWzRdICAKVGhlIGlzc3VlIG1lbnRpb25lZCBpbiB0aGUgdGlja2V0IGlzIHJlbGF0ZWQgdG8gYSBsb3N0IGl0ZW0sIHNwZWNpZmljYWxseSBhIHBob25lIGxlZnQgaW4gdGhlIGNhci4iLCJObwoKVGhlIHRpY2tldCBpcyByZXF1ZXN0aW5nIGFzc2lzdGFuY2UgaW4gcmV0cmlldmluZyBhIGxvc3QgaXRlbSwgbm90IGFza2luZyBmb3IgYSByZWZ1bmQuIixUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyB0aGF0IHRoZSBjdXN0b21lciBsZWZ0IHRoZWlyIHBob25lIGluIGEgY2FyIGR1cmluZyB0aGVpciBsYXN0IHJpZGUgYW5kIG5lZWRzIGFzc2lzdGFuY2UgaW4gcmV0cmlldmluZyBpdC4sIk5vdCBhcHBsaWNhYmxlICAKVGhlIGlzc3VlIGRlc2NyaWJlZCBpbiB0aGUgdGlja2V0IGlzIGFib3V0IGEgbG9zdCBwaG9uZSwgbm90IGFuIGFjY2lkZW50IG9yIHNhZmV0eSBjb25jZXJuLiIsIjMgIApUaGlzIHNpdHVhdGlvbiBpcyB1cmdlbnQgYmVjYXVzZSB0aGUgY3VzdG9tZXIgbmVlZHMgdGhlaXIgcGhvbmUgYmFjaywgYnV0IGl0IGlzIG5vdCBhbiBlbWVyZ2VuY3kgb3IgbGlmZS10aHJlYXRlbmluZyBzaXR1YXRpb24uIEl0IHJlcXVpcmVzIHByb21wdCBhdHRlbnRpb24gdG8gZmFjaWxpdGF0ZSB0aGUgcmVjb3Zlcnkgb2YgdGhlIHBob25lLiIsIlNvbWV3aGF0IG5lZ2F0aXZlICAKVGhlIHNlbnRpbWVudCBpcyBzb21ld2hhdCBuZWdhdGl2ZSBiZWNhdXNlIHRoZSBjdXN0b21lciBpcyBleHBlcmllbmNpbmcgYSBwcm9ibGVtIG9yIGluY29udmVuaWVuY2UgYnkgbG9zaW5nIHRoZWlyIHBob25lIGFuZCBpcyBzZWVraW5nIGFzc2lzdGFuY2UgdG8gcmVzb2x2ZSBpdC4iDQpObywiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhlIGN1c3RvbWVyJ3MgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIGJlaGF2aW9yIG9mIHRoZSBkcml2ZXIsIHdobyB3YXMgZGVzY3JpYmVkIGFzIHJ1ZGUgYW5kIHVucHJvZmVzc2lvbmFsLiBBZGRyZXNzaW5nIHRoaXMgY29uY2VybiBpbnZvbHZlcyBhY2tub3dsZWRnaW5nIHRoZSBjdXN0b21lcidzIGV4cGVyaWVuY2UsIGFwb2xvZ2l6aW5nIGZvciB0aGUgaW5jb252ZW5pZW5jZSwgYW5kIHRha2luZyBhcHByb3ByaWF0ZSBzdGVwcyB0byBlbnN1cmUgc3VjaCBiZWhhdmlvciBpcyBub3QgcmVwZWF0ZWQgaW4gdGhlIGZ1dHVyZS4iLDMsTm8sWydkcml2ZXIgcGVyZm9ybWFuY2UnXSxWZXJ5IG5lZ2F0aXZlLEknbSB1bmhhcHB5IHdpdGggbXkgcmVjZW50IGV4cGVyaWVuY2UuIFRoZSBkcml2ZXIgd2FzIHZlcnkgcnVkZSBhbmQgdW5wcm9mZXNzaW9uYWwuLEFnZW50XzEsWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuLDE1LFlvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuLDAsMCwxLDMsZ3B0LTRvLEZhbHNlLDAuNSwxMDAwLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIgpEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IEknbSB1bmhhcHB5IHdpdGggbXkgcmVjZW50IGV4cGVyaWVuY2UuIFRoZSBkcml2ZXIgd2FzIHZlcnkgcnVkZSBhbmQgdW5wcm9mZXNzaW9uYWwuCgogICAgCk5vCiAgICAKWWVzCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgpQbGVhc2UgcmVzcG9uZCB3aXRoIGp1c3QgeW91ciBhbnN3ZXIuIAoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHlvdXIgcmVzcG9uc2UuIiwiCldoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBJJ20gdW5oYXBweSB3aXRoIG15IHJlY2VudCBleHBlcmllbmNlLiBUaGUgZHJpdmVyIHdhcyB2ZXJ5IHJ1ZGUgYW5kIHVucHJvZmVzc2lvbmFsLgoKICAgIApWZXJ5IHBvc2l0aXZlCiAgICAKU29tZXdoYXQgcG9zaXRpdmUKICAgIApOZXV0cmFsCiAgICAKU29tZXdoYXQgbmVnYXRpdmUKICAgIApWZXJ5IG5lZ2F0aXZlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIgpJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IEknbSB1bmhhcHB5IHdpdGggbXkgcmVjZW50IGV4cGVyaWVuY2UuIFRoZSBkcml2ZXIgd2FzIHZlcnkgcnVkZSBhbmQgdW5wcm9mZXNzaW9uYWwuCgogICAgClllcwogICAgCk5vCiAgICAKTm90IGFwcGxpY2FibGUKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsV2hhdCBpcyB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBJJ20gdW5oYXBweSB3aXRoIG15IHJlY2VudCBleHBlcmllbmNlLiBUaGUgZHJpdmVyIHdhcyB2ZXJ5IHJ1ZGUgYW5kIHVucHJvZmVzc2lvbmFsLiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IEknbSB1bmhhcHB5IHdpdGggbXkgcmVjZW50IGV4cGVyaWVuY2UuIFRoZSBkcml2ZXIgd2FzIHZlcnkgcnVkZSBhbmQgdW5wcm9mZXNzaW9uYWwuCgowIDogTG93ZXN0CgoxIDogCgoyIDogCgozIDogCgo0IDogCgo1IDogSGlnaGVzdAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCB0aGUgY29kZSBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4gRS5nLiwgIiIxIiIgb3IgIiI1IiIgYnkgaXRzZWxmLgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiBJJ20gdW5oYXBweSB3aXRoIG15IHJlY2VudCBleHBlcmllbmNlLiBUaGUgZHJpdmVyIHdhcyB2ZXJ5IHJ1ZGUgYW5kIHVucHJvZmVzc2lvbmFsLgoKICAgIAowOiBzYWZldHkKICAgIAoxOiBjbGVhbmxpbmVzcwogICAgCjI6IGRyaXZlciBwZXJmb3JtYW5jZQogICAgCjM6IEdQUy9yb3V0ZQogICAgCjQ6IGxvc3QgaXRlbQogICAgCjU6IG90aGVyCiAgICAKCgoKCgoKUGxlYXNlIHJlc3BvbmQgb25seSB3aXRoIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIGNvZGUgb2YgdGhlIG9wdGlvbnMgdGhhdCBhcHBseSwgd2l0aCBzcXVhcmUgYnJhY2tldHMuIEUuZy4sIFswLCAxLCAzXQoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHlvdXIgY2hvaWNlIG9uIHRoZSBuZXh0IGxpbmUuIiwwLjAwMDY4MjUsMC4wMDA1ODUsMTQwOC40NTA3MDQyMjUzNTIyLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDeHZxU2ozRUh0YlVwVFEyOVlVNnZJUmFiJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICIiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhlIGN1c3RvbWVyJ3MgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIGJlaGF2aW9yIG9mIHRoZSBkcml2ZXIsIHdobyB3YXMgZGVzY3JpYmVkIGFzIHJ1ZGUgYW5kIHVucHJvZmVzc2lvbmFsLiBBZGRyZXNzaW5nIHRoaXMgY29uY2VybiBpbnZvbHZlcyBhY2tub3dsZWRnaW5nIHRoZSBjdXN0b21lcidzIGV4cGVyaWVuY2UsIGFwb2xvZ2l6aW5nIGZvciB0aGUgaW5jb252ZW5pZW5jZSwgYW5kIHRha2luZyBhcHByb3ByaWF0ZSBzdGVwcyB0byBlbnN1cmUgc3VjaCBiZWhhdmlvciBpcyBub3QgcmVwZWF0ZWQgaW4gdGhlIGZ1dHVyZS4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogNTcsICdwcm9tcHRfdG9rZW5zJzogNzcsICd0b3RhbF90b2tlbnMnOiAxMzQsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE2NjYuNjY2NjY2NjY2NjY2NSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ21pTG9OckxFNzU4YWxBalZIYjh2alU5SycsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnTm8gIFxuVGhlIHRpY2tldCBtZW50aW9ucyBydWRlbmVzcyBhbmQgdW5wcm9mZXNzaW9uYWwgYmVoYXZpb3IgYnV0IGRvZXMgbm90IGluZGljYXRlIHRoYXQgYW4gYWNjaWRlbnQgb2NjdXJyZWQgb3IgdGhhdCBzb21lb25lIHdhcyBodXJ0LicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDI2LCAncHJvbXB0X3Rva2Vucyc6IDEzNiwgJ3RvdGFsX3Rva2Vucyc6IDE2MiwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA3NjI0OTk5OTk5OTk5OTk5LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xET3hvakcyVWFSQjNMNHdad296R3dwYjd2JywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICczICBcbkN1c3RvbWVyIGRpc3NhdGlzZmFjdGlvbiBkdWUgdG8gcnVkZW5lc3MgYW5kIHVucHJvZmVzc2lvbmFsaXNtIGlzIGltcG9ydGFudCB0byBhZGRyZXNzIHByb21wdGx5LCBidXQgaXQgbWF5IG5vdCBiZSBhcyB1cmdlbnQgYXMgc2FmZXR5LXJlbGF0ZWQgaXNzdWVzLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MSwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDMxLCAncHJvbXB0X3Rva2Vucyc6IDE2MCwgJ3RvdGFsX3Rva2Vucyc6IDE5MSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTMxMS40NzU0MDk4MzYwNjU2LDE3MDkuNDAxNzA5NDAxNzA5MiwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ01YYnZWQ3RsalByTGhPS0hlZnNNUTZieScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnTm9cblxuVGhlIHRpY2tldCBkb2VzIG5vdCBleHBsaWNpdGx5IG1lbnRpb24gYSByZXF1ZXN0IGZvciBhIHJlZnVuZC4gVGhlIGN1c3RvbWVyIGlzIGV4cHJlc3NpbmcgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIGV4cGVyaWVuY2UsIGJ1dCB0aGVyZSBpcyBubyBkaXJlY3QgcmVxdWVzdCBmb3IgYSByZWZ1bmQuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwXzlmYWJhOWYwMzgnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMzMsICdwcm9tcHRfdG9rZW5zJzogMTE0LCAndG90YWxfdG9rZW5zJzogMTQ3LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxNDY1LjIwMTQ2NTIwMTQ2NTIsMTYyNi4wMTYyNjAxNjI2MDE2LDAuMDAwNjAwMDAwMDAwMDAwMDAwMSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ012N2JWWFlEYmhrdlpxS3hzTk13VXk2TScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnWzJdICBcblRoZSBpc3N1ZSBtZW50aW9uZWQgaW4gdGhlIHRpY2tldCBpcyByZWxhdGVkIHRvICIiZHJpdmVyIHBlcmZvcm1hbmNlIiIgYXMgdGhlIGN1c3RvbWVyIGRlc2NyaWJlcyB0aGUgZHJpdmVyIGFzIHJ1ZGUgYW5kIHVucHJvZmVzc2lvbmFsLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDI5LCAncHJvbXB0X3Rva2Vucyc6IDE1NywgJ3RvdGFsX3Rva2Vucyc6IDE4NiwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTEN6THhlbG1NRlZtM3dZaEtpN1BjYjU5UkYnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ1ZlcnkgbmVnYXRpdmVcblxuVGhlIHRpY2tldCBleHByZXNzZXMgZGlzc2F0aXNmYWN0aW9uIGFuZCBkZXNjcmliZXMgdGhlIGRyaXZlciBhcyAiInZlcnkgcnVkZSBhbmQgdW5wcm9mZXNzaW9uYWwsIiIgaW5kaWNhdGluZyBhIHN0cm9uZyBuZWdhdGl2ZSBzZW50aW1lbnQuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjUsICdwcm9tcHRfdG9rZW5zJzogMTM0LCAndG90YWxfdG9rZW5zJzogMTU5LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwwLjAwMDcxLDAuMDAwNjE1LDAsIklmIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHNhZmV0eSwgd2FzIHRoZXJlIGFuIGFjY2lkZW50IHdoZXJlIHNvbWVvbmUgd2FzIGh1cnQ/IFRpY2tldDoge3sgdGlja2V0IH19IiwiT24gYSBzY2FsZSBmcm9tIDAgdG8gNSwgd2hhdCBpcyB0aGUgcHJpb3JpdHkgbGV2ZWwgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19IixXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LERvZXMgdGhlIGN1c3RvbWVyIGFzayBmb3IgYSByZWZ1bmQgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LENoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDoge3sgdGlja2V0IH19LCJbJ3NhZmV0eScsICdjbGVhbmxpbmVzcycsICdkcml2ZXIgcGVyZm9ybWFuY2UnLCAnR1BTL3JvdXRlJywgJ2xvc3QgaXRlbScsICdvdGhlciddIiwiWydWZXJ5IHBvc2l0aXZlJywgJ1NvbWV3aGF0IHBvc2l0aXZlJywgJ05ldXRyYWwnLCAnU29tZXdoYXQgbmVnYXRpdmUnLCAnVmVyeSBuZWdhdGl2ZSddIiwiWydZZXMnLCAnTm8nLCAnTm90IGFwcGxpY2FibGUnXSIsIlsnTm8nLCAnWWVzJ10iLCJbMCwgMSwgMiwgMywgNCwgNV0iLCx5ZXNfbm8sbXVsdGlwbGVfY2hvaWNlLGNoZWNrYm94LGxpbmVhcl9zY2FsZSxtdWx0aXBsZV9jaG9pY2UsZnJlZV90ZXh0LCJDdXN0b21lciBkaXNzYXRpc2ZhY3Rpb24gZHVlIHRvIHJ1ZGVuZXNzIGFuZCB1bnByb2Zlc3Npb25hbGlzbSBpcyBpbXBvcnRhbnQgdG8gYWRkcmVzcyBwcm9tcHRseSwgYnV0IGl0IG1heSBub3QgYmUgYXMgdXJnZW50IGFzIHNhZmV0eS1yZWxhdGVkIGlzc3Vlcy4iLCwiVGhlIHRpY2tldCBleHByZXNzZXMgZGlzc2F0aXNmYWN0aW9uIGFuZCBkZXNjcmliZXMgdGhlIGRyaXZlciBhcyAiInZlcnkgcnVkZSBhbmQgdW5wcm9mZXNzaW9uYWwsIiIgaW5kaWNhdGluZyBhIHN0cm9uZyBuZWdhdGl2ZSBzZW50aW1lbnQuIixUaGUgdGlja2V0IG1lbnRpb25zIHJ1ZGVuZXNzIGFuZCB1bnByb2Zlc3Npb25hbCBiZWhhdmlvciBidXQgZG9lcyBub3QgaW5kaWNhdGUgdGhhdCBhbiBhY2NpZGVudCBvY2N1cnJlZCBvciB0aGF0IHNvbWVvbmUgd2FzIGh1cnQuLCJUaGUgdGlja2V0IGRvZXMgbm90IGV4cGxpY2l0bHkgbWVudGlvbiBhIHJlcXVlc3QgZm9yIGEgcmVmdW5kLiBUaGUgY3VzdG9tZXIgaXMgZXhwcmVzc2luZyBkaXNzYXRpc2ZhY3Rpb24gd2l0aCB0aGUgZXhwZXJpZW5jZSwgYnV0IHRoZXJlIGlzIG5vIGRpcmVjdCByZXF1ZXN0IGZvciBhIHJlZnVuZC4iLCJUaGUgaXNzdWUgbWVudGlvbmVkIGluIHRoZSB0aWNrZXQgaXMgcmVsYXRlZCB0byAiImRyaXZlciBwZXJmb3JtYW5jZSIiIGFzIHRoZSBjdXN0b21lciBkZXNjcmliZXMgdGhlIGRyaXZlciBhcyBydWRlIGFuZCB1bnByb2Zlc3Npb25hbC4iLCJbMl0gIApUaGUgaXNzdWUgbWVudGlvbmVkIGluIHRoZSB0aWNrZXQgaXMgcmVsYXRlZCB0byAiImRyaXZlciBwZXJmb3JtYW5jZSIiIGFzIHRoZSBjdXN0b21lciBkZXNjcmliZXMgdGhlIGRyaXZlciBhcyBydWRlIGFuZCB1bnByb2Zlc3Npb25hbC4iLCJObwoKVGhlIHRpY2tldCBkb2VzIG5vdCBleHBsaWNpdGx5IG1lbnRpb24gYSByZXF1ZXN0IGZvciBhIHJlZnVuZC4gVGhlIGN1c3RvbWVyIGlzIGV4cHJlc3NpbmcgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIGV4cGVyaWVuY2UsIGJ1dCB0aGVyZSBpcyBubyBkaXJlY3QgcmVxdWVzdCBmb3IgYSByZWZ1bmQuIiwiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhlIGN1c3RvbWVyJ3MgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIGJlaGF2aW9yIG9mIHRoZSBkcml2ZXIsIHdobyB3YXMgZGVzY3JpYmVkIGFzIHJ1ZGUgYW5kIHVucHJvZmVzc2lvbmFsLiBBZGRyZXNzaW5nIHRoaXMgY29uY2VybiBpbnZvbHZlcyBhY2tub3dsZWRnaW5nIHRoZSBjdXN0b21lcidzIGV4cGVyaWVuY2UsIGFwb2xvZ2l6aW5nIGZvciB0aGUgaW5jb252ZW5pZW5jZSwgYW5kIHRha2luZyBhcHByb3ByaWF0ZSBzdGVwcyB0byBlbnN1cmUgc3VjaCBiZWhhdmlvciBpcyBub3QgcmVwZWF0ZWQgaW4gdGhlIGZ1dHVyZS4iLCJObyAgClRoZSB0aWNrZXQgbWVudGlvbnMgcnVkZW5lc3MgYW5kIHVucHJvZmVzc2lvbmFsIGJlaGF2aW9yIGJ1dCBkb2VzIG5vdCBpbmRpY2F0ZSB0aGF0IGFuIGFjY2lkZW50IG9jY3VycmVkIG9yIHRoYXQgc29tZW9uZSB3YXMgaHVydC4iLCIzICAKQ3VzdG9tZXIgZGlzc2F0aXNmYWN0aW9uIGR1ZSB0byBydWRlbmVzcyBhbmQgdW5wcm9mZXNzaW9uYWxpc20gaXMgaW1wb3J0YW50IHRvIGFkZHJlc3MgcHJvbXB0bHksIGJ1dCBpdCBtYXkgbm90IGJlIGFzIHVyZ2VudCBhcyBzYWZldHktcmVsYXRlZCBpc3N1ZXMuIiwiVmVyeSBuZWdhdGl2ZQoKVGhlIHRpY2tldCBleHByZXNzZXMgZGlzc2F0aXNmYWN0aW9uIGFuZCBkZXNjcmliZXMgdGhlIGRyaXZlciBhcyAiInZlcnkgcnVkZSBhbmQgdW5wcm9mZXNzaW9uYWwsIiIgaW5kaWNhdGluZyBhIHN0cm9uZyBuZWdhdGl2ZSBzZW50aW1lbnQuIg0KTm90IGFwcGxpY2FibGUsVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhhdCB0aGUgY3VzdG9tZXIgd2FzIGNoYXJnZWQgbW9yZSB0aGFuIHRoZSBlc3RpbWF0ZWQgZmFyZSBmb3IgdGhlaXIgdHJpcCBhbmQgaXMgc2Vla2luZyBhbiBleHBsYW5hdGlvbiBmb3IgdGhlIGRpc2NyZXBhbmN5LiwzLE5vLFsnb3RoZXInXSxTb21ld2hhdCBuZWdhdGl2ZSxJIHdhcyBjaGFyZ2VkIG1vcmUgdGhhbiB0aGUgZXN0aW1hdGVkIGZhcmUgZm9yIG15IHRyaXAgeWVzdGVyZGF5LiBDYW4geW91IGV4cGxhaW4gd2h5PyxBZ2VudF8yLFlvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiwxNSxZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LiwwLDAsMSwzLGdwdC00byxGYWxzZSwwLjUsMTAwMCwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCIKRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBJIHdhcyBjaGFyZ2VkIG1vcmUgdGhhbiB0aGUgZXN0aW1hdGVkIGZhcmUgZm9yIG15IHRyaXAgeWVzdGVyZGF5LiBDYW4geW91IGV4cGxhaW4gd2h5PwoKICAgIApObwogICAgClllcwogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KUGxlYXNlIHJlc3BvbmQgd2l0aCBqdXN0IHlvdXIgYW5zd2VyLiAKCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIHJlc3BvbnNlLiIsIgpXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDogSSB3YXMgY2hhcmdlZCBtb3JlIHRoYW4gdGhlIGVzdGltYXRlZCBmYXJlIGZvciBteSB0cmlwIHllc3RlcmRheS4gQ2FuIHlvdSBleHBsYWluIHdoeT8KCiAgICAKVmVyeSBwb3NpdGl2ZQogICAgClNvbWV3aGF0IHBvc2l0aXZlCiAgICAKTmV1dHJhbAogICAgClNvbWV3aGF0IG5lZ2F0aXZlCiAgICAKVmVyeSBuZWdhdGl2ZQogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLgoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCIKSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiBJIHdhcyBjaGFyZ2VkIG1vcmUgdGhhbiB0aGUgZXN0aW1hdGVkIGZhcmUgZm9yIG15IHRyaXAgeWVzdGVyZGF5LiBDYW4geW91IGV4cGxhaW4gd2h5PwoKICAgIApZZXMKICAgIApObwogICAgCk5vdCBhcHBsaWNhYmxlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogSSB3YXMgY2hhcmdlZCBtb3JlIHRoYW4gdGhlIGVzdGltYXRlZCBmYXJlIGZvciBteSB0cmlwIHllc3RlcmRheS4gQ2FuIHlvdSBleHBsYWluIHdoeT8sIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBJIHdhcyBjaGFyZ2VkIG1vcmUgdGhhbiB0aGUgZXN0aW1hdGVkIGZhcmUgZm9yIG15IHRyaXAgeWVzdGVyZGF5LiBDYW4geW91IGV4cGxhaW4gd2h5PwoKMCA6IExvd2VzdAoKMSA6IAoKMiA6IAoKMyA6IAoKNCA6IAoKNSA6IEhpZ2hlc3QKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggdGhlIGNvZGUgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuIEUuZy4sICIiMSIiIG9yICIiNSIiIGJ5IGl0c2VsZi4KCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIkNoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDogSSB3YXMgY2hhcmdlZCBtb3JlIHRoYW4gdGhlIGVzdGltYXRlZCBmYXJlIGZvciBteSB0cmlwIHllc3RlcmRheS4gQ2FuIHlvdSBleHBsYWluIHdoeT8KCiAgICAKMDogc2FmZXR5CiAgICAKMTogY2xlYW5saW5lc3MKICAgIAoyOiBkcml2ZXIgcGVyZm9ybWFuY2UKICAgIAozOiBHUFMvcm91dGUKICAgIAo0OiBsb3N0IGl0ZW0KICAgIAo1OiBvdGhlcgogICAgCgoKCgoKClBsZWFzZSByZXNwb25kIG9ubHkgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBjb2RlIG9mIHRoZSBvcHRpb25zIHRoYXQgYXBwbHksIHdpdGggc3F1YXJlIGJyYWNrZXRzLiBFLmcuLCBbMCwgMSwgM10KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIGNob2ljZSBvbiB0aGUgbmV4dCBsaW5lLiIsMC4wMDA2OTc1LDAuMDAwNTgsMTM2MC41NDQyMTc2ODcwNzUsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENzNlNRY1BaREtIR09udzFsNE9aYzFSZEcnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ1RoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoYXQgdGhlIGN1c3RvbWVyIHdhcyBjaGFyZ2VkIG1vcmUgdGhhbiB0aGUgZXN0aW1hdGVkIGZhcmUgZm9yIHRoZWlyIHRyaXAgYW5kIGlzIHNlZWtpbmcgYW4gZXhwbGFuYXRpb24gZm9yIHRoZSBkaXNjcmVwYW5jeS4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyOSwgJ3Byb21wdF90b2tlbnMnOiA3OSwgJ3RvdGFsX3Rva2Vucyc6IDEwOCwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTkwNC43NjE5MDQ3NjE5MDQ4LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDenR4QzNtaEhBUzlVaks1UjdqbGZhRUlUJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdOb3QgYXBwbGljYWJsZVxuXG5UaGUgdGlja2V0IGlzIGFib3V0IGEgZmFyZSBkaXNjcmVwYW5jeSwgbm90IGEgc2FmZXR5IGlzc3VlIG9yIGFjY2lkZW50LicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDE4LCAncHJvbXB0X3Rva2Vucyc6IDEzOCwgJ3RvdGFsX3Rva2Vucyc6IDE1NiwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA0ODc1LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDanN0SFZ1eTRPU1VGWldDTkp4RmRXNGhuJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICczICBcblRoaXMgdGlja2V0IGludm9sdmVzIGEgYmlsbGluZyBpc3N1ZSwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlc29sdmUgcHJvbXB0bHkgdG8gbWFpbnRhaW4gY3VzdG9tZXIgdHJ1c3QgYW5kIHNhdGlzZmFjdGlvbiwgYnV0IGl0IGlzIG5vdCBhbiBlbWVyZ2VuY3kgb3IgY3JpdGljYWwgdGVjaG5pY2FsIGZhaWx1cmUuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMzMsICdwcm9tcHRfdG9rZW5zJzogMTYyLCAndG90YWxfdG9rZW5zJzogMTk1LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwyMDUxLjI4MjA1MTI4MjA1MTMsMTcyNC4xMzc5MzEwMzQ0ODI4LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDa3U4b3JXMnh5U1E5MlI2RGY2cTZid3dJJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdOb1xuXG5UaGUgY3VzdG9tZXIgaXMgYXNraW5nIGZvciBhbiBleHBsYW5hdGlvbiByZWdhcmRpbmcgdGhlIGNoYXJnZSBkaXNjcmVwYW5jeSwgbm90IGRpcmVjdGx5IHJlcXVlc3RpbmcgYSByZWZ1bmQuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjAsICdwcm9tcHRfdG9rZW5zJzogMTE2LCAndG90YWxfdG9rZW5zJzogMTM2LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxNDMzLjY5MTc1NjI3MjQwMTYsMjA0MC44MTYzMjY1MzA2MTIzLDAuMDAwNTI1LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDMjN2TVZVNkdmNjJZaHBEN2ZiaEZIMDRKJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdbNV0gIFxuVGhlIGlzc3VlIG1lbnRpb25lZCBpbiB0aGUgdGlja2V0IGlzIHJlbGF0ZWQgdG8gYmVpbmcgY2hhcmdlZCBtb3JlIHRoYW4gdGhlIGVzdGltYXRlZCBmYXJlLCB3aGljaCBmYWxscyB1bmRlciB0aGUgIiJvdGhlciIiIGNhdGVnb3J5LicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDMwLCAncHJvbXB0X3Rva2Vucyc6IDE1OSwgJ3RvdGFsX3Rva2Vucyc6IDE4OSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENDaEJQUzQ5OXFKT01GNDRsUTMybzJFYmknLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ1NvbWV3aGF0IG5lZ2F0aXZlICBcblRoZSBjdXN0b21lciBpcyBleHByZXNzaW5nIGRpc3NhdGlzZmFjdGlvbiBkdWUgdG8gYmVpbmcgY2hhcmdlZCBtb3JlIHRoYW4gZXhwZWN0ZWQsIHdoaWNoIGluZGljYXRlcyBhIHNvbWV3aGF0IG5lZ2F0aXZlIHNlbnRpbWVudC4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyNCwgJ3Byb21wdF90b2tlbnMnOiAxMzYsICd0b3RhbF90b2tlbnMnOiAxNjAsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwNzM1LDAuMDAwNDksMCwiSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLFdoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sV2hhdCBpcyB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiB7eyB0aWNrZXQgfX0sIlsnc2FmZXR5JywgJ2NsZWFubGluZXNzJywgJ2RyaXZlciBwZXJmb3JtYW5jZScsICdHUFMvcm91dGUnLCAnbG9zdCBpdGVtJywgJ290aGVyJ10iLCJbJ1ZlcnkgcG9zaXRpdmUnLCAnU29tZXdoYXQgcG9zaXRpdmUnLCAnTmV1dHJhbCcsICdTb21ld2hhdCBuZWdhdGl2ZScsICdWZXJ5IG5lZ2F0aXZlJ10iLCJbJ1llcycsICdObycsICdOb3QgYXBwbGljYWJsZSddIiwiWydObycsICdZZXMnXSIsIlswLCAxLCAyLCAzLCA0LCA1XSIsLHllc19ubyxtdWx0aXBsZV9jaG9pY2UsY2hlY2tib3gsbGluZWFyX3NjYWxlLG11bHRpcGxlX2Nob2ljZSxmcmVlX3RleHQsIlRoaXMgdGlja2V0IGludm9sdmVzIGEgYmlsbGluZyBpc3N1ZSwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlc29sdmUgcHJvbXB0bHkgdG8gbWFpbnRhaW4gY3VzdG9tZXIgdHJ1c3QgYW5kIHNhdGlzZmFjdGlvbiwgYnV0IGl0IGlzIG5vdCBhbiBlbWVyZ2VuY3kgb3IgY3JpdGljYWwgdGVjaG5pY2FsIGZhaWx1cmUuIiwsIlRoZSBjdXN0b21lciBpcyBleHByZXNzaW5nIGRpc3NhdGlzZmFjdGlvbiBkdWUgdG8gYmVpbmcgY2hhcmdlZCBtb3JlIHRoYW4gZXhwZWN0ZWQsIHdoaWNoIGluZGljYXRlcyBhIHNvbWV3aGF0IG5lZ2F0aXZlIHNlbnRpbWVudC4iLCJUaGUgdGlja2V0IGlzIGFib3V0IGEgZmFyZSBkaXNjcmVwYW5jeSwgbm90IGEgc2FmZXR5IGlzc3VlIG9yIGFjY2lkZW50LiIsIlRoZSBjdXN0b21lciBpcyBhc2tpbmcgZm9yIGFuIGV4cGxhbmF0aW9uIHJlZ2FyZGluZyB0aGUgY2hhcmdlIGRpc2NyZXBhbmN5LCBub3QgZGlyZWN0bHkgcmVxdWVzdGluZyBhIHJlZnVuZC4iLCJUaGUgaXNzdWUgbWVudGlvbmVkIGluIHRoZSB0aWNrZXQgaXMgcmVsYXRlZCB0byBiZWluZyBjaGFyZ2VkIG1vcmUgdGhhbiB0aGUgZXN0aW1hdGVkIGZhcmUsIHdoaWNoIGZhbGxzIHVuZGVyIHRoZSAiIm90aGVyIiIgY2F0ZWdvcnkuIiwiWzVdICAKVGhlIGlzc3VlIG1lbnRpb25lZCBpbiB0aGUgdGlja2V0IGlzIHJlbGF0ZWQgdG8gYmVpbmcgY2hhcmdlZCBtb3JlIHRoYW4gdGhlIGVzdGltYXRlZCBmYXJlLCB3aGljaCBmYWxscyB1bmRlciB0aGUgIiJvdGhlciIiIGNhdGVnb3J5LiIsIk5vCgpUaGUgY3VzdG9tZXIgaXMgYXNraW5nIGZvciBhbiBleHBsYW5hdGlvbiByZWdhcmRpbmcgdGhlIGNoYXJnZSBkaXNjcmVwYW5jeSwgbm90IGRpcmVjdGx5IHJlcXVlc3RpbmcgYSByZWZ1bmQuIixUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyB0aGF0IHRoZSBjdXN0b21lciB3YXMgY2hhcmdlZCBtb3JlIHRoYW4gdGhlIGVzdGltYXRlZCBmYXJlIGZvciB0aGVpciB0cmlwIGFuZCBpcyBzZWVraW5nIGFuIGV4cGxhbmF0aW9uIGZvciB0aGUgZGlzY3JlcGFuY3kuLCJOb3QgYXBwbGljYWJsZQoKVGhlIHRpY2tldCBpcyBhYm91dCBhIGZhcmUgZGlzY3JlcGFuY3ksIG5vdCBhIHNhZmV0eSBpc3N1ZSBvciBhY2NpZGVudC4iLCIzICAKVGhpcyB0aWNrZXQgaW52b2x2ZXMgYSBiaWxsaW5nIGlzc3VlLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gcmVzb2x2ZSBwcm9tcHRseSB0byBtYWludGFpbiBjdXN0b21lciB0cnVzdCBhbmQgc2F0aXNmYWN0aW9uLCBidXQgaXQgaXMgbm90IGFuIGVtZXJnZW5jeSBvciBjcml0aWNhbCB0ZWNobmljYWwgZmFpbHVyZS4iLCJTb21ld2hhdCBuZWdhdGl2ZSAgClRoZSBjdXN0b21lciBpcyBleHByZXNzaW5nIGRpc3NhdGlzZmFjdGlvbiBkdWUgdG8gYmVpbmcgY2hhcmdlZCBtb3JlIHRoYW4gZXhwZWN0ZWQsIHdoaWNoIGluZGljYXRlcyBhIHNvbWV3aGF0IG5lZ2F0aXZlIHNlbnRpbWVudC4iDQpObywiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhlIGltcHJvcGVyIGluc3RhbGxhdGlvbiBvZiB0aGUgY2FyIHNlYXQgcHJvdmlkZWQgYnkgdGhlIGRyaXZlciwgd2hpY2ggbWFkZSB0aGUgY3VzdG9tZXIgZmVlbCB0aGF0IHRoZWlyIGNoaWxkJ3Mgc2FmZXR5IHdhcyBhdCByaXNrLiBUaGUgY3VzdG9tZXIgaXMgcmVxdWVzdGluZyB0aGF0IGRyaXZlcnMgcmVjZWl2ZSBhZGRpdGlvbmFsIHRyYWluaW5nIHRvIGVuc3VyZSBwcm9wZXIgY2FyIHNlYXQgaW5zdGFsbGF0aW9uIGluIHRoZSBmdXR1cmUuIiw1LE5vLCJbJ3NhZmV0eScsICdkcml2ZXIgcGVyZm9ybWFuY2UnXSIsVmVyeSBuZWdhdGl2ZSwiVGhlIGNhciBzZWF0IHByb3ZpZGVkIHdhcyBub3QgcHJvcGVybHkgaW5zdGFsbGVkLCBhbmQgSSBmZWx0IG15IGNoaWxkIHdhcyBhdCByaXNrLiBQbGVhc2UgZW5zdXJlIGRyaXZlciB0cmFpbmluZy4iLEFnZW50XzMsWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuLDE1LFlvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuLDAsMCwxLDMsZ3B0LTRvLEZhbHNlLDAuNSwxMDAwLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIgpEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IFRoZSBjYXIgc2VhdCBwcm92aWRlZCB3YXMgbm90IHByb3Blcmx5IGluc3RhbGxlZCwgYW5kIEkgZmVsdCBteSBjaGlsZCB3YXMgYXQgcmlzay4gUGxlYXNlIGVuc3VyZSBkcml2ZXIgdHJhaW5pbmcuCgogICAgCk5vCiAgICAKWWVzCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgpQbGVhc2UgcmVzcG9uZCB3aXRoIGp1c3QgeW91ciBhbnN3ZXIuIAoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHlvdXIgcmVzcG9uc2UuIiwiCldoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBUaGUgY2FyIHNlYXQgcHJvdmlkZWQgd2FzIG5vdCBwcm9wZXJseSBpbnN0YWxsZWQsIGFuZCBJIGZlbHQgbXkgY2hpbGQgd2FzIGF0IHJpc2suIFBsZWFzZSBlbnN1cmUgZHJpdmVyIHRyYWluaW5nLgoKICAgIApWZXJ5IHBvc2l0aXZlCiAgICAKU29tZXdoYXQgcG9zaXRpdmUKICAgIApOZXV0cmFsCiAgICAKU29tZXdoYXQgbmVnYXRpdmUKICAgIApWZXJ5IG5lZ2F0aXZlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIgpJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IFRoZSBjYXIgc2VhdCBwcm92aWRlZCB3YXMgbm90IHByb3Blcmx5IGluc3RhbGxlZCwgYW5kIEkgZmVsdCBteSBjaGlsZCB3YXMgYXQgcmlzay4gUGxlYXNlIGVuc3VyZSBkcml2ZXIgdHJhaW5pbmcuCgogICAgClllcwogICAgCk5vCiAgICAKTm90IGFwcGxpY2FibGUKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIldoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogVGhlIGNhciBzZWF0IHByb3ZpZGVkIHdhcyBub3QgcHJvcGVybHkgaW5zdGFsbGVkLCBhbmQgSSBmZWx0IG15IGNoaWxkIHdhcyBhdCByaXNrLiBQbGVhc2UgZW5zdXJlIGRyaXZlciB0cmFpbmluZy4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiT24gYSBzY2FsZSBmcm9tIDAgdG8gNSwgd2hhdCBpcyB0aGUgcHJpb3JpdHkgbGV2ZWwgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDogVGhlIGNhciBzZWF0IHByb3ZpZGVkIHdhcyBub3QgcHJvcGVybHkgaW5zdGFsbGVkLCBhbmQgSSBmZWx0IG15IGNoaWxkIHdhcyBhdCByaXNrLiBQbGVhc2UgZW5zdXJlIGRyaXZlciB0cmFpbmluZy4KCjAgOiBMb3dlc3QKCjEgOiAKCjIgOiAKCjMgOiAKCjQgOiAKCjUgOiBIaWdoZXN0CgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIHRoZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLiBFLmcuLCAiIjEiIiBvciAiIjUiIiBieSBpdHNlbGYuCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJDaGVjayBhbGwgb2YgdGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhpcyB0aWNrZXQ6IFRoZSBjYXIgc2VhdCBwcm92aWRlZCB3YXMgbm90IHByb3Blcmx5IGluc3RhbGxlZCwgYW5kIEkgZmVsdCBteSBjaGlsZCB3YXMgYXQgcmlzay4gUGxlYXNlIGVuc3VyZSBkcml2ZXIgdHJhaW5pbmcuCgogICAgCjA6IHNhZmV0eQogICAgCjE6IGNsZWFubGluZXNzCiAgICAKMjogZHJpdmVyIHBlcmZvcm1hbmNlCiAgICAKMzogR1BTL3JvdXRlCiAgICAKNDogbG9zdCBpdGVtCiAgICAKNTogb3RoZXIKICAgIAoKCgoKCgpQbGVhc2UgcmVzcG9uZCBvbmx5IHdpdGggYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgY29kZSBvZiB0aGUgb3B0aW9ucyB0aGF0IGFwcGx5LCB3aXRoIHNxdWFyZSBicmFja2V0cy4gRS5nLiwgWzAsIDEsIDNdCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgeW91ciBjaG9pY2Ugb24gdGhlIG5leHQgbGluZS4iLDAuMDAwODQsMC4wMDA1OTI1LDEyNTMuOTE4NDk1Mjk3ODA1NSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ3B4WWgzOUdadHlaZGVnRzlGYlhjc0xrdScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoZSBpbXByb3BlciBpbnN0YWxsYXRpb24gb2YgdGhlIGNhciBzZWF0IHByb3ZpZGVkIGJ5IHRoZSBkcml2ZXIsIHdoaWNoIG1hZGUgdGhlIGN1c3RvbWVyIGZlZWwgdGhhdCB0aGVpciBjaGlsZCdzIHNhZmV0eSB3YXMgYXQgcmlzay4gVGhlIGN1c3RvbWVyIGlzIHJlcXVlc3RpbmcgdGhhdCBkcml2ZXJzIHJlY2VpdmUgYWRkaXRpb25hbCB0cmFpbmluZyB0byBlbnN1cmUgcHJvcGVyIGNhciBzZWF0IGluc3RhbGxhdGlvbiBpbiB0aGUgZnV0dXJlLiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiA1MSwgJ3Byb21wdF90b2tlbnMnOiA4NCwgJ3RvdGFsX3Rva2Vucyc6IDEzNSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTY0Ni4wOTA1MzQ5Nzk0MjM5LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDaHVtWjdvenIyYjRwbER5RkJXZGpqRXBKJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdObyAgXG5UaGVyZSBpcyBubyBtZW50aW9uIG9mIGFuIGFjdHVhbCBhY2NpZGVudCBvciBpbmp1cnkgb2NjdXJyaW5nLCBvbmx5IGEgY29uY2VybiBhYm91dCBwb3RlbnRpYWwgcmlzayBkdWUgdG8gaW1wcm9wZXIgaW5zdGFsbGF0aW9uLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDI1LCAncHJvbXB0X3Rva2Vucyc6IDE0MywgJ3RvdGFsX3Rva2Vucyc6IDE2OCwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA3MiwieydpZCc6ICdjaGF0Y21wbC1BZU9MQzQzVnp6a2F6bU5Gb0ZBd2l5bDN0VUNKWCcsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnNSAgXG5UaGUgc2FmZXR5IG9mIGEgY2hpbGQgaXMgb2YgdXRtb3N0IGltcG9ydGFuY2UsIGFuZCBpbXByb3BlciBpbnN0YWxsYXRpb24gb2YgYSBjYXIgc2VhdCBwb3NlcyBhIHNpZ25pZmljYW50IHJpc2suIFRoaXMgaXNzdWUgcmVxdWlyZXMgaW1tZWRpYXRlIGF0dGVudGlvbiB0byBlbnN1cmUgZHJpdmVyIHRyYWluaW5nIGFuZCBwcmV2ZW50IHBvdGVudGlhbCBoYXJtLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDM4LCAncHJvbXB0X3Rva2Vucyc6IDE2NywgJ3RvdGFsX3Rva2Vucyc6IDIwNSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTM4OC44ODg4ODg4ODg4ODksMTY4Ny43NjM3MTMwODAxNjg2LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDY2dFOU5WZGZJMTNPVnIwQ3dRbHViUmdWJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdOb1xuXG5UaGUgY3VzdG9tZXIgaXMgZXhwcmVzc2luZyBhIGNvbmNlcm4gYWJvdXQgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgY2FyIHNlYXQgYW5kIHJlcXVlc3RpbmcgZHJpdmVyIHRyYWluaW5nLCBidXQgdGhleSBhcmUgbm90IGV4cGxpY2l0bHkgYXNraW5nIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldC4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOTAzNTQ2MjhmMicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAzMywgJ3Byb21wdF90b2tlbnMnOiAxMjEsICd0b3RhbF90b2tlbnMnOiAxNTQsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDExOTAuNDc2MTkwNDc2MTkwNCwxNTgxLjAyNzY2Nzk4NDE4OTcsMC4wMDA2MDc1LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDRDdYREgzb1NteEFGdmt0Q3paYUNQaThsJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdbMCwgMl1cblxuVGhlIGlzc3VlcyBtZW50aW9uZWQgYXJlIHJlbGF0ZWQgdG8gc2FmZXR5ICgwKSBiZWNhdXNlIHRoZSBjYXIgc2VhdCB3YXMgbm90IHByb3Blcmx5IGluc3RhbGxlZCwgYW5kIGRyaXZlciBwZXJmb3JtYW5jZSAoMikgYmVjYXVzZSB0aGUgZHJpdmVyIG1pZ2h0IG5lZWQgZnVydGhlciB0cmFpbmluZyB0byBlbnN1cmUgcHJvcGVyIGluc3RhbGxhdGlvbi4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiA0MywgJ3Byb21wdF90b2tlbnMnOiAxNjQsICd0b3RhbF90b2tlbnMnOiAyMDcsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDbVhDMUZqQlRWWmZrMEhTdXc3WGo5MXY0JywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdWZXJ5IG5lZ2F0aXZlICBcblRoZSB0aWNrZXQgZXhwcmVzc2VzIGEgc2VyaW91cyBjb25jZXJuIGFib3V0IHNhZmV0eSBhbmQgaW1wbGllcyBkaXNzYXRpc2ZhY3Rpb24gd2l0aCB0aGUgc2VydmljZSwgaW5kaWNhdGluZyBhIHZlcnkgbmVnYXRpdmUgc2VudGltZW50LicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDI0LCAncHJvbXB0X3Rva2Vucyc6IDE0MSwgJ3RvdGFsX3Rva2Vucyc6IDE2NSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA3OTc1LDAuMDAwNjMyNSwwLCJJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSIsV2hhdCBpcyB0aGUgc2VudGltZW50IG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxXaGF0IGlzIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxDaGVjayBhbGwgb2YgdGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhpcyB0aWNrZXQ6IHt7IHRpY2tldCB9fSwiWydzYWZldHknLCAnY2xlYW5saW5lc3MnLCAnZHJpdmVyIHBlcmZvcm1hbmNlJywgJ0dQUy9yb3V0ZScsICdsb3N0IGl0ZW0nLCAnb3RoZXInXSIsIlsnVmVyeSBwb3NpdGl2ZScsICdTb21ld2hhdCBwb3NpdGl2ZScsICdOZXV0cmFsJywgJ1NvbWV3aGF0IG5lZ2F0aXZlJywgJ1ZlcnkgbmVnYXRpdmUnXSIsIlsnWWVzJywgJ05vJywgJ05vdCBhcHBsaWNhYmxlJ10iLCJbJ05vJywgJ1llcyddIiwiWzAsIDEsIDIsIDMsIDQsIDVdIiwseWVzX25vLG11bHRpcGxlX2Nob2ljZSxjaGVja2JveCxsaW5lYXJfc2NhbGUsbXVsdGlwbGVfY2hvaWNlLGZyZWVfdGV4dCwiVGhlIHNhZmV0eSBvZiBhIGNoaWxkIGlzIG9mIHV0bW9zdCBpbXBvcnRhbmNlLCBhbmQgaW1wcm9wZXIgaW5zdGFsbGF0aW9uIG9mIGEgY2FyIHNlYXQgcG9zZXMgYSBzaWduaWZpY2FudCByaXNrLiBUaGlzIGlzc3VlIHJlcXVpcmVzIGltbWVkaWF0ZSBhdHRlbnRpb24gdG8gZW5zdXJlIGRyaXZlciB0cmFpbmluZyBhbmQgcHJldmVudCBwb3RlbnRpYWwgaGFybS4iLCwiVGhlIHRpY2tldCBleHByZXNzZXMgYSBzZXJpb3VzIGNvbmNlcm4gYWJvdXQgc2FmZXR5IGFuZCBpbXBsaWVzIGRpc3NhdGlzZmFjdGlvbiB3aXRoIHRoZSBzZXJ2aWNlLCBpbmRpY2F0aW5nIGEgdmVyeSBuZWdhdGl2ZSBzZW50aW1lbnQuIiwiVGhlcmUgaXMgbm8gbWVudGlvbiBvZiBhbiBhY3R1YWwgYWNjaWRlbnQgb3IgaW5qdXJ5IG9jY3VycmluZywgb25seSBhIGNvbmNlcm4gYWJvdXQgcG90ZW50aWFsIHJpc2sgZHVlIHRvIGltcHJvcGVyIGluc3RhbGxhdGlvbi4iLCJUaGUgY3VzdG9tZXIgaXMgZXhwcmVzc2luZyBhIGNvbmNlcm4gYWJvdXQgdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgY2FyIHNlYXQgYW5kIHJlcXVlc3RpbmcgZHJpdmVyIHRyYWluaW5nLCBidXQgdGhleSBhcmUgbm90IGV4cGxpY2l0bHkgYXNraW5nIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldC4iLCJUaGUgaXNzdWVzIG1lbnRpb25lZCBhcmUgcmVsYXRlZCB0byBzYWZldHkgKDApIGJlY2F1c2UgdGhlIGNhciBzZWF0IHdhcyBub3QgcHJvcGVybHkgaW5zdGFsbGVkLCBhbmQgZHJpdmVyIHBlcmZvcm1hbmNlICgyKSBiZWNhdXNlIHRoZSBkcml2ZXIgbWlnaHQgbmVlZCBmdXJ0aGVyIHRyYWluaW5nIHRvIGVuc3VyZSBwcm9wZXIgaW5zdGFsbGF0aW9uLiIsIlswLCAyXQoKVGhlIGlzc3VlcyBtZW50aW9uZWQgYXJlIHJlbGF0ZWQgdG8gc2FmZXR5ICgwKSBiZWNhdXNlIHRoZSBjYXIgc2VhdCB3YXMgbm90IHByb3Blcmx5IGluc3RhbGxlZCwgYW5kIGRyaXZlciBwZXJmb3JtYW5jZSAoMikgYmVjYXVzZSB0aGUgZHJpdmVyIG1pZ2h0IG5lZWQgZnVydGhlciB0cmFpbmluZyB0byBlbnN1cmUgcHJvcGVyIGluc3RhbGxhdGlvbi4iLCJObwoKVGhlIGN1c3RvbWVyIGlzIGV4cHJlc3NpbmcgYSBjb25jZXJuIGFib3V0IHRoZSBpbnN0YWxsYXRpb24gb2YgdGhlIGNhciBzZWF0IGFuZCByZXF1ZXN0aW5nIGRyaXZlciB0cmFpbmluZywgYnV0IHRoZXkgYXJlIG5vdCBleHBsaWNpdGx5IGFza2luZyBmb3IgYSByZWZ1bmQgaW4gdGhpcyB0aWNrZXQuIiwiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhlIGltcHJvcGVyIGluc3RhbGxhdGlvbiBvZiB0aGUgY2FyIHNlYXQgcHJvdmlkZWQgYnkgdGhlIGRyaXZlciwgd2hpY2ggbWFkZSB0aGUgY3VzdG9tZXIgZmVlbCB0aGF0IHRoZWlyIGNoaWxkJ3Mgc2FmZXR5IHdhcyBhdCByaXNrLiBUaGUgY3VzdG9tZXIgaXMgcmVxdWVzdGluZyB0aGF0IGRyaXZlcnMgcmVjZWl2ZSBhZGRpdGlvbmFsIHRyYWluaW5nIHRvIGVuc3VyZSBwcm9wZXIgY2FyIHNlYXQgaW5zdGFsbGF0aW9uIGluIHRoZSBmdXR1cmUuIiwiTm8gIApUaGVyZSBpcyBubyBtZW50aW9uIG9mIGFuIGFjdHVhbCBhY2NpZGVudCBvciBpbmp1cnkgb2NjdXJyaW5nLCBvbmx5IGEgY29uY2VybiBhYm91dCBwb3RlbnRpYWwgcmlzayBkdWUgdG8gaW1wcm9wZXIgaW5zdGFsbGF0aW9uLiIsIjUgIApUaGUgc2FmZXR5IG9mIGEgY2hpbGQgaXMgb2YgdXRtb3N0IGltcG9ydGFuY2UsIGFuZCBpbXByb3BlciBpbnN0YWxsYXRpb24gb2YgYSBjYXIgc2VhdCBwb3NlcyBhIHNpZ25pZmljYW50IHJpc2suIFRoaXMgaXNzdWUgcmVxdWlyZXMgaW1tZWRpYXRlIGF0dGVudGlvbiB0byBlbnN1cmUgZHJpdmVyIHRyYWluaW5nIGFuZCBwcmV2ZW50IHBvdGVudGlhbCBoYXJtLiIsIlZlcnkgbmVnYXRpdmUgIApUaGUgdGlja2V0IGV4cHJlc3NlcyBhIHNlcmlvdXMgY29uY2VybiBhYm91dCBzYWZldHkgYW5kIGltcGxpZXMgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIHNlcnZpY2UsIGluZGljYXRpbmcgYSB2ZXJ5IG5lZ2F0aXZlIHNlbnRpbWVudC4iDQpObywiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhhdCB0aGUgY3VzdG9tZXIgYmVsaWV2ZXMgdGhlIGRyaXZlciB0b29rIGEgbG9uZ2VyIHJvdXRlIHRoYW4gbmVjZXNzYXJ5LCB3aGljaCBsZWQgdG8gYSBoaWdoZXIgZmFyZS4gVGhlIGN1c3RvbWVyIGlzIHJlcXVlc3RpbmcgYW4gYWRqdXN0bWVudCB0byB0aGUgZmFyZSB0byByZWZsZWN0IHdoYXQgdGhleSBiZWxpZXZlIHNob3VsZCBoYXZlIGJlZW4gdGhlIGNvcnJlY3QgYW1vdW50LiIsMixObywiWydkcml2ZXIgcGVyZm9ybWFuY2UnLCAnR1BTL3JvdXRlJ10iLFNvbWV3aGF0IG5lZ2F0aXZlLCJNeSBkcml2ZXIgdG9vayBhIGxvbmdlciByb3V0ZSB0aGFuIG5lY2Vzc2FyeSwgcmVzdWx0aW5nIGluIGEgaGlnaGVyIGZhcmUuIEkgcmVxdWVzdCBhIGZhcmUgYWRqdXN0bWVudC4iLEFnZW50XzQsWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuLDE1LFlvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuLDAsMCwxLDMsZ3B0LTRvLEZhbHNlLDAuNSwxMDAwLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIgpEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IE15IGRyaXZlciB0b29rIGEgbG9uZ2VyIHJvdXRlIHRoYW4gbmVjZXNzYXJ5LCByZXN1bHRpbmcgaW4gYSBoaWdoZXIgZmFyZS4gSSByZXF1ZXN0IGEgZmFyZSBhZGp1c3RtZW50LgoKICAgIApObwogICAgClllcwogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KUGxlYXNlIHJlc3BvbmQgd2l0aCBqdXN0IHlvdXIgYW5zd2VyLiAKCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIHJlc3BvbnNlLiIsIgpXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDogTXkgZHJpdmVyIHRvb2sgYSBsb25nZXIgcm91dGUgdGhhbiBuZWNlc3NhcnksIHJlc3VsdGluZyBpbiBhIGhpZ2hlciBmYXJlLiBJIHJlcXVlc3QgYSBmYXJlIGFkanVzdG1lbnQuCgogICAgClZlcnkgcG9zaXRpdmUKICAgIApTb21ld2hhdCBwb3NpdGl2ZQogICAgCk5ldXRyYWwKICAgIApTb21ld2hhdCBuZWdhdGl2ZQogICAgClZlcnkgbmVnYXRpdmUKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiCklmIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHNhZmV0eSwgd2FzIHRoZXJlIGFuIGFjY2lkZW50IHdoZXJlIHNvbWVvbmUgd2FzIGh1cnQ/IFRpY2tldDogTXkgZHJpdmVyIHRvb2sgYSBsb25nZXIgcm91dGUgdGhhbiBuZWNlc3NhcnksIHJlc3VsdGluZyBpbiBhIGhpZ2hlciBmYXJlLiBJIHJlcXVlc3QgYSBmYXJlIGFkanVzdG1lbnQuCgogICAgClllcwogICAgCk5vCiAgICAKTm90IGFwcGxpY2FibGUKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIldoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogTXkgZHJpdmVyIHRvb2sgYSBsb25nZXIgcm91dGUgdGhhbiBuZWNlc3NhcnksIHJlc3VsdGluZyBpbiBhIGhpZ2hlciBmYXJlLiBJIHJlcXVlc3QgYSBmYXJlIGFkanVzdG1lbnQuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IE15IGRyaXZlciB0b29rIGEgbG9uZ2VyIHJvdXRlIHRoYW4gbmVjZXNzYXJ5LCByZXN1bHRpbmcgaW4gYSBoaWdoZXIgZmFyZS4gSSByZXF1ZXN0IGEgZmFyZSBhZGp1c3RtZW50LgoKMCA6IExvd2VzdAoKMSA6IAoKMiA6IAoKMyA6IAoKNCA6IAoKNSA6IEhpZ2hlc3QKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggdGhlIGNvZGUgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuIEUuZy4sICIiMSIiIG9yICIiNSIiIGJ5IGl0c2VsZi4KCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIkNoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDogTXkgZHJpdmVyIHRvb2sgYSBsb25nZXIgcm91dGUgdGhhbiBuZWNlc3NhcnksIHJlc3VsdGluZyBpbiBhIGhpZ2hlciBmYXJlLiBJIHJlcXVlc3QgYSBmYXJlIGFkanVzdG1lbnQuCgogICAgCjA6IHNhZmV0eQogICAgCjE6IGNsZWFubGluZXNzCiAgICAKMjogZHJpdmVyIHBlcmZvcm1hbmNlCiAgICAKMzogR1BTL3JvdXRlCiAgICAKNDogbG9zdCBpdGVtCiAgICAKNTogb3RoZXIKICAgIAoKCgoKCgpQbGVhc2UgcmVzcG9uZCBvbmx5IHdpdGggYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgY29kZSBvZiB0aGUgb3B0aW9ucyB0aGF0IGFwcGx5LCB3aXRoIHNxdWFyZSBicmFja2V0cy4gRS5nLiwgWzAsIDEsIDNdCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgeW91ciBjaG9pY2Ugb24gdGhlIG5leHQgbGluZS4iLDAuMDAwOTU1LDAuMDAwNjk3NSwxMjc3Ljk1NTI3MTU2NTQ5NTIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENrYU9OVkZhNzdERDdLVFY3dTM1eWhOY0UnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ1RoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoYXQgdGhlIGN1c3RvbWVyIGJlbGlldmVzIHRoZSBkcml2ZXIgdG9vayBhIGxvbmdlciByb3V0ZSB0aGFuIG5lY2Vzc2FyeSwgd2hpY2ggbGVkIHRvIGEgaGlnaGVyIGZhcmUuIFRoZSBjdXN0b21lciBpcyByZXF1ZXN0aW5nIGFuIGFkanVzdG1lbnQgdG8gdGhlIGZhcmUgdG8gcmVmbGVjdCB3aGF0IHRoZXkgYmVsaWV2ZSBzaG91bGQgaGF2ZSBiZWVuIHRoZSBjb3JyZWN0IGFtb3VudC4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTM0YjI3MjdkNicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiA0OCwgJ3Byb21wdF90b2tlbnMnOiA4MiwgJ3RvdGFsX3Rva2Vucyc6IDEzMCwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTc3Ny43Nzc3Nzc3Nzc3Nzc2LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDS2NHMXFKaUlwWkF1QlI5czI0WnNTTFRLJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdObyAgXG5UaGUgdGlja2V0IGRvZXMgbm90IG1lbnRpb24gYW55IGFjY2lkZW50IG9yIGluanVyeSwgc28gdGhlIGlzc3VlIGlzIG5vdCByZWxhdGVkIHRvIHNhZmV0eS4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyMSwgJ3Byb21wdF90b2tlbnMnOiAxNDEsICd0b3RhbF90b2tlbnMnOiAxNjIsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwNjg1MDAwMDAwMDAwMDAwMSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ0FtdkpoV0htTEZxaWV1Z0JJeWxFcHpvTCcsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnMiAgXG5UaGlzIGlzc3VlIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGludm9sdmVzIGEgZmluYW5jaWFsIGRpc2NyZXBhbmN5IGZvciB0aGUgY3VzdG9tZXIsIGJ1dCBpdCBkb2VzIG5vdCBwb3NlIGFuIGltbWVkaWF0ZSBzYWZldHkgb3Igc2VydmljZSBjb250aW51aXR5IGNvbmNlcm4sIHNvIGl0IGlzIG5vdCB0aGUgaGlnaGVzdCBwcmlvcml0eS4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAzNywgJ3Byb21wdF90b2tlbnMnOiAxNjUsICd0b3RhbF90b2tlbnMnOiAyMDIsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE0NTkuODU0MDE0NTk4NTQsMTQzMy42OTE3NTYyNzI0MDE2LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDTzc4TjdkbGdXU2NkQmc3MnBrd0w3RDY3JywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdOb1xuXG5UaGUgY3VzdG9tZXIgaXMgcmVxdWVzdGluZyBhIGZhcmUgYWRqdXN0bWVudCwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gYXNraW5nIGZvciBhIHJlZnVuZC4gQSBmYXJlIGFkanVzdG1lbnQgdHlwaWNhbGx5IG1lYW5zIHRoZXkgd2FudCB0aGUgZmFyZSBjb3JyZWN0ZWQgdG8gd2hhdCBpdCBzaG91bGQgaGF2ZSBiZWVuLCByYXRoZXIgdGhhbiBhIGZ1bGwgcmVmdW5kIG9mIHRoZSBmYXJlIHBhaWQuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogNDYsICdwcm9tcHRfdG9rZW5zJzogMTE5LCAndG90YWxfdG9rZW5zJzogMTY1LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxMDQ3LjEyMDQxODg0ODE2NzQsMTMyMC4xMzIwMTMyMDEzMiwwLjAwMDU2MjUwMDAwMDAwMDAwMDEsInsnaWQnOiAnY2hhdGNtcGwtQWVPTEN2MmNYZmR3YnM5Z2xrSXVDQ3RTREt3N1AnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ1syLCAzXVxuXG5UaGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGUgdGlja2V0IHJlbGF0ZSB0byBkcml2ZXIgcGVyZm9ybWFuY2UsIGFzIHRha2luZyBhIGxvbmdlciByb3V0ZSB0aGFuIG5lY2Vzc2FyeSBpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBob3cgdGhlIGRyaXZlciBjb25kdWN0ZWQgdGhlIHRyaXAuIEFkZGl0aW9uYWxseSwgaXQgaW52b2x2ZXMgR1BTL3JvdXRlIGlzc3VlcywgYXMgdGhlIGNvbXBsYWludCBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgdGhlIHJvdXRlIHRha2VuLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDU1LCAncHJvbXB0X3Rva2Vucyc6IDE2MiwgJ3RvdGFsX3Rva2Vucyc6IDIxNywgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENzaXljbHF6bnZpcWdhQ1lrQnozM1Q0VFMnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ1NvbWV3aGF0IG5lZ2F0aXZlICBcblRoZSBjdXN0b21lciBpcyBleHByZXNzaW5nIGRpc3NhdGlzZmFjdGlvbiB3aXRoIHRoZSBzZXJ2aWNlIGR1ZSB0byB0aGUgbG9uZ2VyIHJvdXRlIHRha2VuIGJ5IHRoZSBkcml2ZXIsIHJlc3VsdGluZyBpbiBhIGhpZ2hlciBmYXJlLCBhbmQgaXMgcmVxdWVzdGluZyBhIGZhcmUgYWRqdXN0bWVudC4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAzNSwgJ3Byb21wdF90b2tlbnMnOiAxMzksICd0b3RhbF90b2tlbnMnOiAxNzQsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwNzgyNSwwLjAwMDc1NzUsMCwiSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLFdoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sV2hhdCBpcyB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiB7eyB0aWNrZXQgfX0sIlsnc2FmZXR5JywgJ2NsZWFubGluZXNzJywgJ2RyaXZlciBwZXJmb3JtYW5jZScsICdHUFMvcm91dGUnLCAnbG9zdCBpdGVtJywgJ290aGVyJ10iLCJbJ1ZlcnkgcG9zaXRpdmUnLCAnU29tZXdoYXQgcG9zaXRpdmUnLCAnTmV1dHJhbCcsICdTb21ld2hhdCBuZWdhdGl2ZScsICdWZXJ5IG5lZ2F0aXZlJ10iLCJbJ1llcycsICdObycsICdOb3QgYXBwbGljYWJsZSddIiwiWydObycsICdZZXMnXSIsIlswLCAxLCAyLCAzLCA0LCA1XSIsLHllc19ubyxtdWx0aXBsZV9jaG9pY2UsY2hlY2tib3gsbGluZWFyX3NjYWxlLG11bHRpcGxlX2Nob2ljZSxmcmVlX3RleHQsIlRoaXMgaXNzdWUgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgaW52b2x2ZXMgYSBmaW5hbmNpYWwgZGlzY3JlcGFuY3kgZm9yIHRoZSBjdXN0b21lciwgYnV0IGl0IGRvZXMgbm90IHBvc2UgYW4gaW1tZWRpYXRlIHNhZmV0eSBvciBzZXJ2aWNlIGNvbnRpbnVpdHkgY29uY2Vybiwgc28gaXQgaXMgbm90IHRoZSBoaWdoZXN0IHByaW9yaXR5LiIsLCJUaGUgY3VzdG9tZXIgaXMgZXhwcmVzc2luZyBkaXNzYXRpc2ZhY3Rpb24gd2l0aCB0aGUgc2VydmljZSBkdWUgdG8gdGhlIGxvbmdlciByb3V0ZSB0YWtlbiBieSB0aGUgZHJpdmVyLCByZXN1bHRpbmcgaW4gYSBoaWdoZXIgZmFyZSwgYW5kIGlzIHJlcXVlc3RpbmcgYSBmYXJlIGFkanVzdG1lbnQuIiwiVGhlIHRpY2tldCBkb2VzIG5vdCBtZW50aW9uIGFueSBhY2NpZGVudCBvciBpbmp1cnksIHNvIHRoZSBpc3N1ZSBpcyBub3QgcmVsYXRlZCB0byBzYWZldHkuIiwiVGhlIGN1c3RvbWVyIGlzIHJlcXVlc3RpbmcgYSBmYXJlIGFkanVzdG1lbnQsIHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIGFza2luZyBmb3IgYSByZWZ1bmQuIEEgZmFyZSBhZGp1c3RtZW50IHR5cGljYWxseSBtZWFucyB0aGV5IHdhbnQgdGhlIGZhcmUgY29ycmVjdGVkIHRvIHdoYXQgaXQgc2hvdWxkIGhhdmUgYmVlbiwgcmF0aGVyIHRoYW4gYSBmdWxsIHJlZnVuZCBvZiB0aGUgZmFyZSBwYWlkLiIsIlRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoZSB0aWNrZXQgcmVsYXRlIHRvIGRyaXZlciBwZXJmb3JtYW5jZSwgYXMgdGFraW5nIGEgbG9uZ2VyIHJvdXRlIHRoYW4gbmVjZXNzYXJ5IGluZGljYXRlcyBhIHBvdGVudGlhbCBpc3N1ZSB3aXRoIGhvdyB0aGUgZHJpdmVyIGNvbmR1Y3RlZCB0aGUgdHJpcC4gQWRkaXRpb25hbGx5LCBpdCBpbnZvbHZlcyBHUFMvcm91dGUgaXNzdWVzLCBhcyB0aGUgY29tcGxhaW50IGlzIHNwZWNpZmljYWxseSBhYm91dCB0aGUgcm91dGUgdGFrZW4uIiwiWzIsIDNdCgpUaGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGUgdGlja2V0IHJlbGF0ZSB0byBkcml2ZXIgcGVyZm9ybWFuY2UsIGFzIHRha2luZyBhIGxvbmdlciByb3V0ZSB0aGFuIG5lY2Vzc2FyeSBpbmRpY2F0ZXMgYSBwb3RlbnRpYWwgaXNzdWUgd2l0aCBob3cgdGhlIGRyaXZlciBjb25kdWN0ZWQgdGhlIHRyaXAuIEFkZGl0aW9uYWxseSwgaXQgaW52b2x2ZXMgR1BTL3JvdXRlIGlzc3VlcywgYXMgdGhlIGNvbXBsYWludCBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgdGhlIHJvdXRlIHRha2VuLiIsIk5vCgpUaGUgY3VzdG9tZXIgaXMgcmVxdWVzdGluZyBhIGZhcmUgYWRqdXN0bWVudCwgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gYXNraW5nIGZvciBhIHJlZnVuZC4gQSBmYXJlIGFkanVzdG1lbnQgdHlwaWNhbGx5IG1lYW5zIHRoZXkgd2FudCB0aGUgZmFyZSBjb3JyZWN0ZWQgdG8gd2hhdCBpdCBzaG91bGQgaGF2ZSBiZWVuLCByYXRoZXIgdGhhbiBhIGZ1bGwgcmVmdW5kIG9mIHRoZSBmYXJlIHBhaWQuIiwiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhhdCB0aGUgY3VzdG9tZXIgYmVsaWV2ZXMgdGhlIGRyaXZlciB0b29rIGEgbG9uZ2VyIHJvdXRlIHRoYW4gbmVjZXNzYXJ5LCB3aGljaCBsZWQgdG8gYSBoaWdoZXIgZmFyZS4gVGhlIGN1c3RvbWVyIGlzIHJlcXVlc3RpbmcgYW4gYWRqdXN0bWVudCB0byB0aGUgZmFyZSB0byByZWZsZWN0IHdoYXQgdGhleSBiZWxpZXZlIHNob3VsZCBoYXZlIGJlZW4gdGhlIGNvcnJlY3QgYW1vdW50LiIsIk5vICAKVGhlIHRpY2tldCBkb2VzIG5vdCBtZW50aW9uIGFueSBhY2NpZGVudCBvciBpbmp1cnksIHNvIHRoZSBpc3N1ZSBpcyBub3QgcmVsYXRlZCB0byBzYWZldHkuIiwiMiAgClRoaXMgaXNzdWUgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgaW52b2x2ZXMgYSBmaW5hbmNpYWwgZGlzY3JlcGFuY3kgZm9yIHRoZSBjdXN0b21lciwgYnV0IGl0IGRvZXMgbm90IHBvc2UgYW4gaW1tZWRpYXRlIHNhZmV0eSBvciBzZXJ2aWNlIGNvbnRpbnVpdHkgY29uY2Vybiwgc28gaXQgaXMgbm90IHRoZSBoaWdoZXN0IHByaW9yaXR5LiIsIlNvbWV3aGF0IG5lZ2F0aXZlICAKVGhlIGN1c3RvbWVyIGlzIGV4cHJlc3NpbmcgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIHNlcnZpY2UgZHVlIHRvIHRoZSBsb25nZXIgcm91dGUgdGFrZW4gYnkgdGhlIGRyaXZlciwgcmVzdWx0aW5nIGluIGEgaGlnaGVyIGZhcmUsIGFuZCBpcyByZXF1ZXN0aW5nIGEgZmFyZSBhZGp1c3RtZW50LiINCk5vdCBhcHBsaWNhYmxlLCJJdCBzZWVtcyB0aGVyZSBpcyBubyBpc3N1ZSBpbiB0aGlzIHRpY2tldC4gSW5zdGVhZCwgaXQgYXBwZWFycyB0byBiZSBwb3NpdGl2ZSBmZWVkYmFjayBhYm91dCBhIGdyZWF0IGV4cGVyaWVuY2Ugd2l0aCB0aGUgZHJpdmVyLiBJdCdzIGFsd2F5cyB3b25kZXJmdWwgdG8gcmVjZWl2ZSBjb21wbGltZW50cyBhYm91dCBmcmllbmRseSBhbmQgZWZmaWNpZW50IHNlcnZpY2UhIiwwLE5vLFsnZHJpdmVyIHBlcmZvcm1hbmNlJ10sVmVyeSBwb3NpdGl2ZSxJIGhhZCBhIGdyZWF0IGV4cGVyaWVuY2Ugd2l0aCBteSBkcml2ZXIgdG9kYXkhIFZlcnkgZnJpZW5kbHkgYW5kIGVmZmljaWVudCBzZXJ2aWNlLixBZ2VudF81LFlvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiwxNSxZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LiwwLDAsMSwzLGdwdC00byxGYWxzZSwwLjUsMTAwMCwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCIKRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBJIGhhZCBhIGdyZWF0IGV4cGVyaWVuY2Ugd2l0aCBteSBkcml2ZXIgdG9kYXkhIFZlcnkgZnJpZW5kbHkgYW5kIGVmZmljaWVudCBzZXJ2aWNlLgoKICAgIApObwogICAgClllcwogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KUGxlYXNlIHJlc3BvbmQgd2l0aCBqdXN0IHlvdXIgYW5zd2VyLiAKCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIHJlc3BvbnNlLiIsIgpXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDogSSBoYWQgYSBncmVhdCBleHBlcmllbmNlIHdpdGggbXkgZHJpdmVyIHRvZGF5ISBWZXJ5IGZyaWVuZGx5IGFuZCBlZmZpY2llbnQgc2VydmljZS4KCiAgICAKVmVyeSBwb3NpdGl2ZQogICAgClNvbWV3aGF0IHBvc2l0aXZlCiAgICAKTmV1dHJhbAogICAgClNvbWV3aGF0IG5lZ2F0aXZlCiAgICAKVmVyeSBuZWdhdGl2ZQogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLgoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCIKSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiBJIGhhZCBhIGdyZWF0IGV4cGVyaWVuY2Ugd2l0aCBteSBkcml2ZXIgdG9kYXkhIFZlcnkgZnJpZW5kbHkgYW5kIGVmZmljaWVudCBzZXJ2aWNlLgoKICAgIApZZXMKICAgIApObwogICAgCk5vdCBhcHBsaWNhYmxlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogSSBoYWQgYSBncmVhdCBleHBlcmllbmNlIHdpdGggbXkgZHJpdmVyIHRvZGF5ISBWZXJ5IGZyaWVuZGx5IGFuZCBlZmZpY2llbnQgc2VydmljZS4sIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBJIGhhZCBhIGdyZWF0IGV4cGVyaWVuY2Ugd2l0aCBteSBkcml2ZXIgdG9kYXkhIFZlcnkgZnJpZW5kbHkgYW5kIGVmZmljaWVudCBzZXJ2aWNlLgoKMCA6IExvd2VzdAoKMSA6IAoKMiA6IAoKMyA6IAoKNCA6IAoKNSA6IEhpZ2hlc3QKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggdGhlIGNvZGUgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuIEUuZy4sICIiMSIiIG9yICIiNSIiIGJ5IGl0c2VsZi4KCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIkNoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDogSSBoYWQgYSBncmVhdCBleHBlcmllbmNlIHdpdGggbXkgZHJpdmVyIHRvZGF5ISBWZXJ5IGZyaWVuZGx5IGFuZCBlZmZpY2llbnQgc2VydmljZS4KCiAgICAKMDogc2FmZXR5CiAgICAKMTogY2xlYW5saW5lc3MKICAgIAoyOiBkcml2ZXIgcGVyZm9ybWFuY2UKICAgIAozOiBHUFMvcm91dGUKICAgIAo0OiBsb3N0IGl0ZW0KICAgIAo1OiBvdGhlcgogICAgCgoKCgoKClBsZWFzZSByZXNwb25kIG9ubHkgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBjb2RlIG9mIHRoZSBvcHRpb25zIHRoYXQgYXBwbHksIHdpdGggc3F1YXJlIGJyYWNrZXRzLiBFLmcuLCBbMCwgMSwgM10KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIGNob2ljZSBvbiB0aGUgbmV4dCBsaW5lLiIsMC4wMDA2MDI1LDAuMDAwNTQ1LDE0NzAuNTg4MjM1Mjk0MTE3NiwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ3FaSEVGekV2eHVLb1g4a0FiYWR4YUFhZicsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIkl0IHNlZW1zIHRoZXJlIGlzIG5vIGlzc3VlIGluIHRoaXMgdGlja2V0LiBJbnN0ZWFkLCBpdCBhcHBlYXJzIHRvIGJlIHBvc2l0aXZlIGZlZWRiYWNrIGFib3V0IGEgZ3JlYXQgZXhwZXJpZW5jZSB3aXRoIHRoZSBkcml2ZXIuIEl0J3MgYWx3YXlzIHdvbmRlcmZ1bCB0byByZWNlaXZlIGNvbXBsaW1lbnRzIGFib3V0IGZyaWVuZGx5IGFuZCBlZmZpY2llbnQgc2VydmljZSEiIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMzgsICdwcm9tcHRfdG9rZW5zJzogNzcsICd0b3RhbF90b2tlbnMnOiAxMTUsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE3NTQuMzg1OTY0OTEyMjgwOCwieydpZCc6ICdjaGF0Y21wbC1BZU9MQzlyQmRnY0FUaldFdHlPTlZUREdJREpWOScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnTm90IGFwcGxpY2FibGVcblxuVGhlIHRpY2tldCBpcyBmb2N1c2VkIG9uIGEgcG9zaXRpdmUgZXhwZXJpZW5jZSB3aXRoIHRoZSBkcml2ZXIsIGluZGljYXRpbmcgbm8gc2FmZXR5IGlzc3VlIG9yIGFjY2lkZW50IG9jY3VycmVkLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDIzLCAncHJvbXB0X3Rva2Vucyc6IDEzNiwgJ3RvdGFsX3Rva2Vucyc6IDE1OSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA1NzI1LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDTnN1Nzd6ZEljZ0RweTNPQWtSRjZ4RVhVJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICcwICBcblRoaXMgdGlja2V0IGlzIGEgcG9zaXRpdmUgZmVlZGJhY2sgYW5kIGRvZXMgbm90IHJlcXVpcmUgaW1tZWRpYXRlIGFjdGlvbiBvciByZXNvbHV0aW9uLCBzbyBpdCBpcyB0aGUgbG93ZXN0IHByaW9yaXR5IGluIHRlcm1zIG9mIHVyZ2VuY3kuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwXzlmYWJhOWYwMzgnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjgsICdwcm9tcHRfdG9rZW5zJzogMTYwLCAndG90YWxfdG9rZW5zJzogMTg4LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxNzQ2LjcyNDg5MDgyOTY5NDUsMTgzNC44NjIzODUzMjExMDA5LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDbVpVaG5FSDRKN0ZmZ21pTk16ZUpOblRZJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdOb1xuXG5UaGUgdGlja2V0IGV4cHJlc3NlcyBzYXRpc2ZhY3Rpb24gd2l0aCB0aGUgc2VydmljZSBhbmQgZG9lcyBub3QgbWVudGlvbiBhbnkgaXNzdWVzIG9yIHJlcXVlc3RzIGZvciBhIHJlZnVuZC4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyMSwgJ3Byb21wdF90b2tlbnMnOiAxMTQsICd0b3RhbF90b2tlbnMnOiAxMzUsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE2NTkuNzUxMDM3MzQ0Mzk4NCwyMDIwLjIwMjAyMDIwMjAyMDMsMC4wMDA1NywieydpZCc6ICdjaGF0Y21wbC1BZU9MQzlGUUxnbzI1dHlVUGU0MUxvQnZleVoweScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlsyXVxuXG5UaGUgdGlja2V0IG1lbnRpb25zIHRoZSBkcml2ZXIncyBwZXJmb3JtYW5jZSBhcyBiZWluZyBmcmllbmRseSBhbmQgZWZmaWNpZW50LCB3aGljaCByZWxhdGVzIHRvIGRyaXZlciBwZXJmb3JtYW5jZS4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwXzlmYWJhOWYwMzgnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjEsICdwcm9tcHRfdG9rZW5zJzogMTU3LCAndG90YWxfdG9rZW5zJzogMTc4LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ0tDWVJWaWdSNHB2WXdtZkhFQ1MxekI5TScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlZlcnkgcG9zaXRpdmUgIFxuVGhlIHRpY2tldCBleHByZXNzZXMgc2F0aXNmYWN0aW9uIGFuZCBoaWdobGlnaHRzIHRoZSBkcml2ZXIncyBmcmllbmRsaW5lc3MgYW5kIGVmZmljaWVuY3ksIGluZGljYXRpbmcgYSB2ZXJ5IHBvc2l0aXZlIHNlbnRpbWVudC4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwXzlmYWJhOWYwMzgnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjEsICdwcm9tcHRfdG9rZW5zJzogMTM0LCAndG90YWxfdG9rZW5zJzogMTU1LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwwLjAwMDY4LDAuMDAwNDk1LDAsIklmIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHNhZmV0eSwgd2FzIHRoZXJlIGFuIGFjY2lkZW50IHdoZXJlIHNvbWVvbmUgd2FzIGh1cnQ/IFRpY2tldDoge3sgdGlja2V0IH19IiwiT24gYSBzY2FsZSBmcm9tIDAgdG8gNSwgd2hhdCBpcyB0aGUgcHJpb3JpdHkgbGV2ZWwgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19IixXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LERvZXMgdGhlIGN1c3RvbWVyIGFzayBmb3IgYSByZWZ1bmQgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LENoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDoge3sgdGlja2V0IH19LCJbJ3NhZmV0eScsICdjbGVhbmxpbmVzcycsICdkcml2ZXIgcGVyZm9ybWFuY2UnLCAnR1BTL3JvdXRlJywgJ2xvc3QgaXRlbScsICdvdGhlciddIiwiWydWZXJ5IHBvc2l0aXZlJywgJ1NvbWV3aGF0IHBvc2l0aXZlJywgJ05ldXRyYWwnLCAnU29tZXdoYXQgbmVnYXRpdmUnLCAnVmVyeSBuZWdhdGl2ZSddIiwiWydZZXMnLCAnTm8nLCAnTm90IGFwcGxpY2FibGUnXSIsIlsnTm8nLCAnWWVzJ10iLCJbMCwgMSwgMiwgMywgNCwgNV0iLCx5ZXNfbm8sbXVsdGlwbGVfY2hvaWNlLGNoZWNrYm94LGxpbmVhcl9zY2FsZSxtdWx0aXBsZV9jaG9pY2UsZnJlZV90ZXh0LCJUaGlzIHRpY2tldCBpcyBhIHBvc2l0aXZlIGZlZWRiYWNrIGFuZCBkb2VzIG5vdCByZXF1aXJlIGltbWVkaWF0ZSBhY3Rpb24gb3IgcmVzb2x1dGlvbiwgc28gaXQgaXMgdGhlIGxvd2VzdCBwcmlvcml0eSBpbiB0ZXJtcyBvZiB1cmdlbmN5LiIsLCJUaGUgdGlja2V0IGV4cHJlc3NlcyBzYXRpc2ZhY3Rpb24gYW5kIGhpZ2hsaWdodHMgdGhlIGRyaXZlcidzIGZyaWVuZGxpbmVzcyBhbmQgZWZmaWNpZW5jeSwgaW5kaWNhdGluZyBhIHZlcnkgcG9zaXRpdmUgc2VudGltZW50LiIsIlRoZSB0aWNrZXQgaXMgZm9jdXNlZCBvbiBhIHBvc2l0aXZlIGV4cGVyaWVuY2Ugd2l0aCB0aGUgZHJpdmVyLCBpbmRpY2F0aW5nIG5vIHNhZmV0eSBpc3N1ZSBvciBhY2NpZGVudCBvY2N1cnJlZC4iLFRoZSB0aWNrZXQgZXhwcmVzc2VzIHNhdGlzZmFjdGlvbiB3aXRoIHRoZSBzZXJ2aWNlIGFuZCBkb2VzIG5vdCBtZW50aW9uIGFueSBpc3N1ZXMgb3IgcmVxdWVzdHMgZm9yIGEgcmVmdW5kLiwiVGhlIHRpY2tldCBtZW50aW9ucyB0aGUgZHJpdmVyJ3MgcGVyZm9ybWFuY2UgYXMgYmVpbmcgZnJpZW5kbHkgYW5kIGVmZmljaWVudCwgd2hpY2ggcmVsYXRlcyB0byBkcml2ZXIgcGVyZm9ybWFuY2UuIiwiWzJdCgpUaGUgdGlja2V0IG1lbnRpb25zIHRoZSBkcml2ZXIncyBwZXJmb3JtYW5jZSBhcyBiZWluZyBmcmllbmRseSBhbmQgZWZmaWNpZW50LCB3aGljaCByZWxhdGVzIHRvIGRyaXZlciBwZXJmb3JtYW5jZS4iLCJObwoKVGhlIHRpY2tldCBleHByZXNzZXMgc2F0aXNmYWN0aW9uIHdpdGggdGhlIHNlcnZpY2UgYW5kIGRvZXMgbm90IG1lbnRpb24gYW55IGlzc3VlcyBvciByZXF1ZXN0cyBmb3IgYSByZWZ1bmQuIiwiSXQgc2VlbXMgdGhlcmUgaXMgbm8gaXNzdWUgaW4gdGhpcyB0aWNrZXQuIEluc3RlYWQsIGl0IGFwcGVhcnMgdG8gYmUgcG9zaXRpdmUgZmVlZGJhY2sgYWJvdXQgYSBncmVhdCBleHBlcmllbmNlIHdpdGggdGhlIGRyaXZlci4gSXQncyBhbHdheXMgd29uZGVyZnVsIHRvIHJlY2VpdmUgY29tcGxpbWVudHMgYWJvdXQgZnJpZW5kbHkgYW5kIGVmZmljaWVudCBzZXJ2aWNlISIsIk5vdCBhcHBsaWNhYmxlCgpUaGUgdGlja2V0IGlzIGZvY3VzZWQgb24gYSBwb3NpdGl2ZSBleHBlcmllbmNlIHdpdGggdGhlIGRyaXZlciwgaW5kaWNhdGluZyBubyBzYWZldHkgaXNzdWUgb3IgYWNjaWRlbnQgb2NjdXJyZWQuIiwiMCAgClRoaXMgdGlja2V0IGlzIGEgcG9zaXRpdmUgZmVlZGJhY2sgYW5kIGRvZXMgbm90IHJlcXVpcmUgaW1tZWRpYXRlIGFjdGlvbiBvciByZXNvbHV0aW9uLCBzbyBpdCBpcyB0aGUgbG93ZXN0IHByaW9yaXR5IGluIHRlcm1zIG9mIHVyZ2VuY3kuIiwiVmVyeSBwb3NpdGl2ZSAgClRoZSB0aWNrZXQgZXhwcmVzc2VzIHNhdGlzZmFjdGlvbiBhbmQgaGlnaGxpZ2h0cyB0aGUgZHJpdmVyJ3MgZnJpZW5kbGluZXNzIGFuZCBlZmZpY2llbmN5LCBpbmRpY2F0aW5nIGEgdmVyeSBwb3NpdGl2ZSBzZW50aW1lbnQuIg0KTm8sVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhlIGN1c3RvbWVyJ3MgY29uY2VybiBhYm91dCB0aGUgY2xlYW5saW5lc3Mgb2YgdGhlIHZlaGljbGUuIFRoZXkgZmVlbCB0aGF0IHRoZSB2ZWhpY2xlIHdhcyBub3QgY2xlYW5lZCB0byB0aGUgc3RhbmRhcmQgdGhleSBleHBlY3QuIEFkZHJlc3NpbmcgdGhpcyBpc3N1ZSB3b3VsZCBpbnZvbHZlIGVuc3VyaW5nIHRoZSB2ZWhpY2xlIGlzIHRob3JvdWdobHkgY2xlYW5lZCBhbmQgcG9zc2libHkgb2ZmZXJpbmcgYW4gYXBvbG9neSBvciBjb21wZW5zYXRpb24gdG8gdGhlIGN1c3RvbWVyIGZvciB0aGVpciBpbmNvbnZlbmllbmNlLiwyLE5vLFsnY2xlYW5saW5lc3MnXSxTb21ld2hhdCBuZWdhdGl2ZSxJJ20gY29uY2VybmVkIGFib3V0IHRoZSB2ZWhpY2xlJ3MgY2xlYW5saW5lc3MuIEl0IHdhcyBub3QgdXAgdG8gdGhlIHN0YW5kYXJkIEkgZXhwZWN0LixBZ2VudF82LFlvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiwxNSxZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LiwwLDAsMSwzLGdwdC00byxGYWxzZSwwLjUsMTAwMCwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCIKRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBJJ20gY29uY2VybmVkIGFib3V0IHRoZSB2ZWhpY2xlJ3MgY2xlYW5saW5lc3MuIEl0IHdhcyBub3QgdXAgdG8gdGhlIHN0YW5kYXJkIEkgZXhwZWN0LgoKICAgIApObwogICAgClllcwogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KUGxlYXNlIHJlc3BvbmQgd2l0aCBqdXN0IHlvdXIgYW5zd2VyLiAKCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIHJlc3BvbnNlLiIsIgpXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDogSSdtIGNvbmNlcm5lZCBhYm91dCB0aGUgdmVoaWNsZSdzIGNsZWFubGluZXNzLiBJdCB3YXMgbm90IHVwIHRvIHRoZSBzdGFuZGFyZCBJIGV4cGVjdC4KCiAgICAKVmVyeSBwb3NpdGl2ZQogICAgClNvbWV3aGF0IHBvc2l0aXZlCiAgICAKTmV1dHJhbAogICAgClNvbWV3aGF0IG5lZ2F0aXZlCiAgICAKVmVyeSBuZWdhdGl2ZQogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLgoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCIKSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiBJJ20gY29uY2VybmVkIGFib3V0IHRoZSB2ZWhpY2xlJ3MgY2xlYW5saW5lc3MuIEl0IHdhcyBub3QgdXAgdG8gdGhlIHN0YW5kYXJkIEkgZXhwZWN0LgoKICAgIApZZXMKICAgIApObwogICAgCk5vdCBhcHBsaWNhYmxlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogSSdtIGNvbmNlcm5lZCBhYm91dCB0aGUgdmVoaWNsZSdzIGNsZWFubGluZXNzLiBJdCB3YXMgbm90IHVwIHRvIHRoZSBzdGFuZGFyZCBJIGV4cGVjdC4sIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBJJ20gY29uY2VybmVkIGFib3V0IHRoZSB2ZWhpY2xlJ3MgY2xlYW5saW5lc3MuIEl0IHdhcyBub3QgdXAgdG8gdGhlIHN0YW5kYXJkIEkgZXhwZWN0LgoKMCA6IExvd2VzdAoKMSA6IAoKMiA6IAoKMyA6IAoKNCA6IAoKNSA6IEhpZ2hlc3QKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggdGhlIGNvZGUgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuIEUuZy4sICIiMSIiIG9yICIiNSIiIGJ5IGl0c2VsZi4KCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIkNoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDogSSdtIGNvbmNlcm5lZCBhYm91dCB0aGUgdmVoaWNsZSdzIGNsZWFubGluZXNzLiBJdCB3YXMgbm90IHVwIHRvIHRoZSBzdGFuZGFyZCBJIGV4cGVjdC4KCiAgICAKMDogc2FmZXR5CiAgICAKMTogY2xlYW5saW5lc3MKICAgIAoyOiBkcml2ZXIgcGVyZm9ybWFuY2UKICAgIAozOiBHUFMvcm91dGUKICAgIAo0OiBsb3N0IGl0ZW0KICAgIAo1OiBvdGhlcgogICAgCgoKCgoKClBsZWFzZSByZXNwb25kIG9ubHkgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBjb2RlIG9mIHRoZSBvcHRpb25zIHRoYXQgYXBwbHksIHdpdGggc3F1YXJlIGJyYWNrZXRzLiBFLmcuLCBbMCwgMSwgM10KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIGNob2ljZSBvbiB0aGUgbmV4dCBsaW5lLiIsMC4wMDA2MDc1LDAuMDAwNjUsMTQ1OS44NTQwMTQ1OTg1NDAzLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDNUlyb2k3NldxakdycUpNeHZ1Mm5EY3FZJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICIiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhlIGN1c3RvbWVyJ3MgY29uY2VybiBhYm91dCB0aGUgY2xlYW5saW5lc3Mgb2YgdGhlIHZlaGljbGUuIFRoZXkgZmVlbCB0aGF0IHRoZSB2ZWhpY2xlIHdhcyBub3QgY2xlYW5lZCB0byB0aGUgc3RhbmRhcmQgdGhleSBleHBlY3QuIEFkZHJlc3NpbmcgdGhpcyBpc3N1ZSB3b3VsZCBpbnZvbHZlIGVuc3VyaW5nIHRoZSB2ZWhpY2xlIGlzIHRob3JvdWdobHkgY2xlYW5lZCBhbmQgcG9zc2libHkgb2ZmZXJpbmcgYW4gYXBvbG9neSBvciBjb21wZW5zYXRpb24gdG8gdGhlIGN1c3RvbWVyIGZvciB0aGVpciBpbmNvbnZlbmllbmNlLiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiA1NywgJ3Byb21wdF90b2tlbnMnOiA3OSwgJ3RvdGFsX3Rva2Vucyc6IDEzNiwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTk0MS43NDc1NzI4MTU1MzM5LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xEWmx2MmMyYmdFYnR1SDJTcThrNXg5aW1EJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdObyAgXG5UaGUgdGlja2V0IG1lbnRpb25zIGNvbmNlcm5zIGFib3V0IGNsZWFubGluZXNzLCBub3Qgc2FmZXR5IG9yIGFueSBhY2NpZGVudHMgaW52b2x2aW5nIGluanVyeS4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTEsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAxNywgJ3Byb21wdF90b2tlbnMnOiAxMzgsICd0b3RhbF90b2tlbnMnOiAxNTUsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwNzY3NSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ0lrdHF4RlZYR25ENFR6OUsycG1CZGVwSicsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIjIgIFxuV2hpbGUgY2xlYW5saW5lc3MgaXMgaW1wb3J0YW50IGZvciBjdXN0b21lciBzYXRpc2ZhY3Rpb24sIGl0IHR5cGljYWxseSBkb2Vzbid0IHBvc2UgYW4gaW1tZWRpYXRlIG9wZXJhdGlvbmFsIG9yIHNhZmV0eSBpc3N1ZSwgdGh1cyBhc3NpZ25pbmcgYSBtb2RlcmF0ZSBwcmlvcml0eSBsZXZlbC4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjgsICdwcm9tcHRfdG9rZW5zJzogMTYyLCAndG90YWxfdG9rZW5zJzogMTkwLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxMzAyLjkzMTU5NjA5MTIwNTQsMTUzOC40NjE1Mzg0NjE1Mzg2LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xEY0NhV0Y3bkJUTk04QWVhdGNqWDJ2Y3NUJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICIiTm9cblxuVGhlIGN1c3RvbWVyIGV4cHJlc3NlcyBhIGNvbmNlcm4gYWJvdXQgdGhlIHZlaGljbGUncyBjbGVhbmxpbmVzcyBidXQgZG9lcyBub3QgZXhwbGljaXRseSBhc2sgZm9yIGEgcmVmdW5kIGluIHRoZSB0aWNrZXQuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MSwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDI0LCAncHJvbXB0X3Rva2Vucyc6IDExNiwgJ3RvdGFsX3Rva2Vucyc6IDE0MCwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTY0Ni4wOTA1MzQ5Nzk0MjM5LDE4ODYuNzkyNDUyODMwMTg4NywwLjAwMDUxNSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQzlUTlFWbjZweFFsbXdSbmJnRTNmbFZTaycsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnWzFdXG5cblRoZSBpc3N1ZSBtZW50aW9uZWQgaW4gdGhlIHRpY2tldCBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgY2xlYW5saW5lc3MsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIG9wdGlvbiAxLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDIxLCAncHJvbXB0X3Rva2Vucyc6IDE1OSwgJ3RvdGFsX3Rva2Vucyc6IDE4MCwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENJV1lNME83TE5QUkROY0swUlNZOFR5bkknLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ1NvbWV3aGF0IG5lZ2F0aXZlICBcblRoZSBjdXN0b21lciBleHByZXNzZXMgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIGNsZWFubGluZXNzIG9mIHRoZSB2ZWhpY2xlLCBpbmRpY2F0aW5nIGEgY29uY2VybiBhbmQgZXhwZWN0YXRpb24gbm90IGJlaW5nIG1ldCwgd2hpY2ggc3VnZ2VzdHMgYSBzb21ld2hhdCBuZWdhdGl2ZSBzZW50aW1lbnQuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwXzlmYWJhOWYwMzgnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMzEsICdwcm9tcHRfdG9rZW5zJzogMTM2LCAndG90YWxfdG9rZW5zJzogMTY3LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwwLjAwMDY4NSwwLjAwMDUzLDAsIklmIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHNhZmV0eSwgd2FzIHRoZXJlIGFuIGFjY2lkZW50IHdoZXJlIHNvbWVvbmUgd2FzIGh1cnQ/IFRpY2tldDoge3sgdGlja2V0IH19IiwiT24gYSBzY2FsZSBmcm9tIDAgdG8gNSwgd2hhdCBpcyB0aGUgcHJpb3JpdHkgbGV2ZWwgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19IixXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LERvZXMgdGhlIGN1c3RvbWVyIGFzayBmb3IgYSByZWZ1bmQgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LENoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDoge3sgdGlja2V0IH19LCJbJ3NhZmV0eScsICdjbGVhbmxpbmVzcycsICdkcml2ZXIgcGVyZm9ybWFuY2UnLCAnR1BTL3JvdXRlJywgJ2xvc3QgaXRlbScsICdvdGhlciddIiwiWydWZXJ5IHBvc2l0aXZlJywgJ1NvbWV3aGF0IHBvc2l0aXZlJywgJ05ldXRyYWwnLCAnU29tZXdoYXQgbmVnYXRpdmUnLCAnVmVyeSBuZWdhdGl2ZSddIiwiWydZZXMnLCAnTm8nLCAnTm90IGFwcGxpY2FibGUnXSIsIlsnTm8nLCAnWWVzJ10iLCJbMCwgMSwgMiwgMywgNCwgNV0iLCx5ZXNfbm8sbXVsdGlwbGVfY2hvaWNlLGNoZWNrYm94LGxpbmVhcl9zY2FsZSxtdWx0aXBsZV9jaG9pY2UsZnJlZV90ZXh0LCJXaGlsZSBjbGVhbmxpbmVzcyBpcyBpbXBvcnRhbnQgZm9yIGN1c3RvbWVyIHNhdGlzZmFjdGlvbiwgaXQgdHlwaWNhbGx5IGRvZXNuJ3QgcG9zZSBhbiBpbW1lZGlhdGUgb3BlcmF0aW9uYWwgb3Igc2FmZXR5IGlzc3VlLCB0aHVzIGFzc2lnbmluZyBhIG1vZGVyYXRlIHByaW9yaXR5IGxldmVsLiIsLCJUaGUgY3VzdG9tZXIgZXhwcmVzc2VzIGRpc3NhdGlzZmFjdGlvbiB3aXRoIHRoZSBjbGVhbmxpbmVzcyBvZiB0aGUgdmVoaWNsZSwgaW5kaWNhdGluZyBhIGNvbmNlcm4gYW5kIGV4cGVjdGF0aW9uIG5vdCBiZWluZyBtZXQsIHdoaWNoIHN1Z2dlc3RzIGEgc29tZXdoYXQgbmVnYXRpdmUgc2VudGltZW50LiIsIlRoZSB0aWNrZXQgbWVudGlvbnMgY29uY2VybnMgYWJvdXQgY2xlYW5saW5lc3MsIG5vdCBzYWZldHkgb3IgYW55IGFjY2lkZW50cyBpbnZvbHZpbmcgaW5qdXJ5LiIsVGhlIGN1c3RvbWVyIGV4cHJlc3NlcyBhIGNvbmNlcm4gYWJvdXQgdGhlIHZlaGljbGUncyBjbGVhbmxpbmVzcyBidXQgZG9lcyBub3QgZXhwbGljaXRseSBhc2sgZm9yIGEgcmVmdW5kIGluIHRoZSB0aWNrZXQuLCJUaGUgaXNzdWUgbWVudGlvbmVkIGluIHRoZSB0aWNrZXQgaXMgc3BlY2lmaWNhbGx5IGFib3V0IGNsZWFubGluZXNzLCB3aGljaCBjb3JyZXNwb25kcyB0byBvcHRpb24gMS4iLCJbMV0KClRoZSBpc3N1ZSBtZW50aW9uZWQgaW4gdGhlIHRpY2tldCBpcyBzcGVjaWZpY2FsbHkgYWJvdXQgY2xlYW5saW5lc3MsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIG9wdGlvbiAxLiIsIk5vCgpUaGUgY3VzdG9tZXIgZXhwcmVzc2VzIGEgY29uY2VybiBhYm91dCB0aGUgdmVoaWNsZSdzIGNsZWFubGluZXNzIGJ1dCBkb2VzIG5vdCBleHBsaWNpdGx5IGFzayBmb3IgYSByZWZ1bmQgaW4gdGhlIHRpY2tldC4iLFRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoZSBjdXN0b21lcidzIGNvbmNlcm4gYWJvdXQgdGhlIGNsZWFubGluZXNzIG9mIHRoZSB2ZWhpY2xlLiBUaGV5IGZlZWwgdGhhdCB0aGUgdmVoaWNsZSB3YXMgbm90IGNsZWFuZWQgdG8gdGhlIHN0YW5kYXJkIHRoZXkgZXhwZWN0LiBBZGRyZXNzaW5nIHRoaXMgaXNzdWUgd291bGQgaW52b2x2ZSBlbnN1cmluZyB0aGUgdmVoaWNsZSBpcyB0aG9yb3VnaGx5IGNsZWFuZWQgYW5kIHBvc3NpYmx5IG9mZmVyaW5nIGFuIGFwb2xvZ3kgb3IgY29tcGVuc2F0aW9uIHRvIHRoZSBjdXN0b21lciBmb3IgdGhlaXIgaW5jb252ZW5pZW5jZS4sIk5vICAKVGhlIHRpY2tldCBtZW50aW9ucyBjb25jZXJucyBhYm91dCBjbGVhbmxpbmVzcywgbm90IHNhZmV0eSBvciBhbnkgYWNjaWRlbnRzIGludm9sdmluZyBpbmp1cnkuIiwiMiAgCldoaWxlIGNsZWFubGluZXNzIGlzIGltcG9ydGFudCBmb3IgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLCBpdCB0eXBpY2FsbHkgZG9lc24ndCBwb3NlIGFuIGltbWVkaWF0ZSBvcGVyYXRpb25hbCBvciBzYWZldHkgaXNzdWUsIHRodXMgYXNzaWduaW5nIGEgbW9kZXJhdGUgcHJpb3JpdHkgbGV2ZWwuIiwiU29tZXdoYXQgbmVnYXRpdmUgIApUaGUgY3VzdG9tZXIgZXhwcmVzc2VzIGRpc3NhdGlzZmFjdGlvbiB3aXRoIHRoZSBjbGVhbmxpbmVzcyBvZiB0aGUgdmVoaWNsZSwgaW5kaWNhdGluZyBhIGNvbmNlcm4gYW5kIGV4cGVjdGF0aW9uIG5vdCBiZWluZyBtZXQsIHdoaWNoIHN1Z2dlc3RzIGEgc29tZXdoYXQgbmVnYXRpdmUgc2VudGltZW50LiINCk5vdCBhcHBsaWNhYmxlLFRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoYXQgdGhlIGFwcCBjcmFzaGVzIHdoZW5ldmVyIHRoZSB1c2VyIGF0dGVtcHRzIHRvIGJvb2sgYSByaWRlLiBUaGUgdXNlciBpcyByZXF1ZXN0aW5nIGEgZml4IGZvciB0aGlzIHByb2JsZW0uLDUsTm8sWydvdGhlciddLFNvbWV3aGF0IG5lZ2F0aXZlLFRoZSBhcHAga2VlcHMgY3Jhc2hpbmcgZXZlcnkgdGltZSBJIHRyeSB0byBib29rIGEgcmlkZS4gUGxlYXNlIGZpeCB0aGlzIGlzc3VlLixBZ2VudF83LFlvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiwxNSxZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LiwwLDAsMSwzLGdwdC00byxGYWxzZSwwLjUsMTAwMCwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCIKRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBUaGUgYXBwIGtlZXBzIGNyYXNoaW5nIGV2ZXJ5IHRpbWUgSSB0cnkgdG8gYm9vayBhIHJpZGUuIFBsZWFzZSBmaXggdGhpcyBpc3N1ZS4KCiAgICAKTm8KICAgIApZZXMKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuClBsZWFzZSByZXNwb25kIHdpdGgganVzdCB5b3VyIGFuc3dlci4gCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgeW91ciByZXNwb25zZS4iLCIKV2hhdCBpcyB0aGUgc2VudGltZW50IG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IFRoZSBhcHAga2VlcHMgY3Jhc2hpbmcgZXZlcnkgdGltZSBJIHRyeSB0byBib29rIGEgcmlkZS4gUGxlYXNlIGZpeCB0aGlzIGlzc3VlLgoKICAgIApWZXJ5IHBvc2l0aXZlCiAgICAKU29tZXdoYXQgcG9zaXRpdmUKICAgIApOZXV0cmFsCiAgICAKU29tZXdoYXQgbmVnYXRpdmUKICAgIApWZXJ5IG5lZ2F0aXZlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIgpJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IFRoZSBhcHAga2VlcHMgY3Jhc2hpbmcgZXZlcnkgdGltZSBJIHRyeSB0byBib29rIGEgcmlkZS4gUGxlYXNlIGZpeCB0aGlzIGlzc3VlLgoKICAgIApZZXMKICAgIApObwogICAgCk5vdCBhcHBsaWNhYmxlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogVGhlIGFwcCBrZWVwcyBjcmFzaGluZyBldmVyeSB0aW1lIEkgdHJ5IHRvIGJvb2sgYSByaWRlLiBQbGVhc2UgZml4IHRoaXMgaXNzdWUuLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiT24gYSBzY2FsZSBmcm9tIDAgdG8gNSwgd2hhdCBpcyB0aGUgcHJpb3JpdHkgbGV2ZWwgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDogVGhlIGFwcCBrZWVwcyBjcmFzaGluZyBldmVyeSB0aW1lIEkgdHJ5IHRvIGJvb2sgYSByaWRlLiBQbGVhc2UgZml4IHRoaXMgaXNzdWUuCgowIDogTG93ZXN0CgoxIDogCgoyIDogCgozIDogCgo0IDogCgo1IDogSGlnaGVzdAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCB0aGUgY29kZSBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4gRS5nLiwgIiIxIiIgb3IgIiI1IiIgYnkgaXRzZWxmLgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiBUaGUgYXBwIGtlZXBzIGNyYXNoaW5nIGV2ZXJ5IHRpbWUgSSB0cnkgdG8gYm9vayBhIHJpZGUuIFBsZWFzZSBmaXggdGhpcyBpc3N1ZS4KCiAgICAKMDogc2FmZXR5CiAgICAKMTogY2xlYW5saW5lc3MKICAgIAoyOiBkcml2ZXIgcGVyZm9ybWFuY2UKICAgIAozOiBHUFMvcm91dGUKICAgIAo0OiBsb3N0IGl0ZW0KICAgIAo1OiBvdGhlcgogICAgCgoKCgoKClBsZWFzZSByZXNwb25kIG9ubHkgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBjb2RlIG9mIHRoZSBvcHRpb25zIHRoYXQgYXBwbHksIHdpdGggc3F1YXJlIGJyYWNrZXRzLiBFLmcuLCBbMCwgMSwgM10KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIGNob2ljZSBvbiB0aGUgbmV4dCBsaW5lLiIsMC4wMDA4Njc1LDAuMDAwNzMsMTM2MC41NDQyMTc2ODcwNzUsInsnaWQnOiAnY2hhdGNtcGwtQWVPTERnRUV3Q09YbTdUUlVBa3VsT0RKcEhKS3onLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ1RoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoYXQgdGhlIGFwcCBjcmFzaGVzIHdoZW5ldmVyIHRoZSB1c2VyIGF0dGVtcHRzIHRvIGJvb2sgYSByaWRlLiBUaGUgdXNlciBpcyByZXF1ZXN0aW5nIGEgZml4IGZvciB0aGlzIHByb2JsZW0uJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUxLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2EzNGIyNzI3ZDYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMzAsICdwcm9tcHRfdG9rZW5zJzogNzksICd0b3RhbF90b2tlbnMnOiAxMDksICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE4NjkuMTU4ODc4NTA0NjcyOSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ0xUR0NaYnFKVHYyajJZZDdXSW40cXlQdCcsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnTm90IGFwcGxpY2FibGVcblxuVGhlIHRpY2tldCBkb2VzIG5vdCBtZW50aW9uIGFueSBhY2NpZGVudCBvciBpbmp1cnksIG9ubHkgYW4gYXBwIGZ1bmN0aW9uYWxpdHkgaXNzdWUuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwXzlmYWJhOWYwMzgnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMTksICdwcm9tcHRfdG9rZW5zJzogMTM4LCAndG90YWxfdG9rZW5zJzogMTU3LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwwLjAwMDQ5NzUsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENOZVBKN0NYQVdJV3JVSklVZnQzdjRFSDUnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJzUgIFxuVGhpcyBpc3N1ZSBkaXJlY3RseSBhZmZlY3RzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGFwcCwgcHJldmVudGluZyB1c2VycyBmcm9tIGJvb2tpbmcgcmlkZXMsIHdoaWNoIGlzIGxpa2VseSB0byByZXN1bHQgaW4gc2lnbmlmaWNhbnQgdXNlciBkaXNzYXRpc2ZhY3Rpb24gYW5kIHBvdGVudGlhbCByZXZlbnVlIGxvc3MuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2Y3ODVlYjVmNDcnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMzMsICdwcm9tcHRfdG9rZW5zJzogMTYyLCAndG90YWxfdG9rZW5zJzogMTk1LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwyMDEwLjA1MDI1MTI1NjI4MTQsMTM2OS44NjMwMTM2OTg2MzAzLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDak5LMWZOOXpFdXNpV3Z1Y3JmRVg0dkVFJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdOb1xuXG5UaGUgY3VzdG9tZXIgaXMgcmVxdWVzdGluZyBhIGZpeCBmb3IgdGhlIGFwcCBpc3N1ZSwgbm90IGEgcmVmdW5kLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDE3LCAncHJvbXB0X3Rva2Vucyc6IDExNiwgJ3RvdGFsX3Rva2Vucyc6IDEzMywgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTE1Mi43Mzc3NTIxNjEzODMyLDIxNzMuOTEzMDQzNDc4MjYxLDAuMDAwNTM1LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDZXZnNTZJOG5QaXZRcXdNVW55c2F0eXpEJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdbNV0gIFxuVGhlIGlzc3VlIG1lbnRpb25lZCBpbiB0aGUgdGlja2V0IGlzIHJlbGF0ZWQgdG8gdGhlIGFwcCBjcmFzaGluZywgd2hpY2ggZml0cyB1bmRlciAiIm90aGVyIiIgYXMgaXQgZG9lc25cJ3QgcmVsYXRlIHRvIHRoZSBzcGVjaWZpYyBjYXRlZ29yaWVzIGxpa2Ugc2FmZXR5LCBjbGVhbmxpbmVzcywgZHJpdmVyIHBlcmZvcm1hbmNlLCBHUFMvcm91dGUsIG9yIGxvc3QgaXRlbS4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiA0NywgJ3Byb21wdF90b2tlbnMnOiAxNTksICd0b3RhbF90b2tlbnMnOiAyMDYsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDOGhWTXFpRUNPeVljRFF3NTZPTzhXaUZnJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdTb21ld2hhdCBuZWdhdGl2ZVxuXG5UaGUgc2VudGltZW50IGlzIHNvbWV3aGF0IG5lZ2F0aXZlIGJlY2F1c2UgdGhlIGN1c3RvbWVyIGlzIGV4cGVyaWVuY2luZyBmcnVzdHJhdGlvbiB3aXRoIHRoZSBhcHAgY3Jhc2hpbmcsIGJ1dCB0aGV5IGFyZSBzdGlsbCBwb2xpdGVseSBhc2tpbmcgZm9yIHRoZSBpc3N1ZSB0byBiZSBmaXhlZCByYXRoZXIgdGhhbiBleHByZXNzaW5nIGFuZ2VyIG9yIGRpc3NhdGlzZmFjdGlvbi4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAzOSwgJ3Byb21wdF90b2tlbnMnOiAxMzYsICd0b3RhbF90b2tlbnMnOiAxNzUsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwNzM1LDAuMDAwNDYsMCwiSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLFdoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sV2hhdCBpcyB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiB7eyB0aWNrZXQgfX0sIlsnc2FmZXR5JywgJ2NsZWFubGluZXNzJywgJ2RyaXZlciBwZXJmb3JtYW5jZScsICdHUFMvcm91dGUnLCAnbG9zdCBpdGVtJywgJ290aGVyJ10iLCJbJ1ZlcnkgcG9zaXRpdmUnLCAnU29tZXdoYXQgcG9zaXRpdmUnLCAnTmV1dHJhbCcsICdTb21ld2hhdCBuZWdhdGl2ZScsICdWZXJ5IG5lZ2F0aXZlJ10iLCJbJ1llcycsICdObycsICdOb3QgYXBwbGljYWJsZSddIiwiWydObycsICdZZXMnXSIsIlswLCAxLCAyLCAzLCA0LCA1XSIsLHllc19ubyxtdWx0aXBsZV9jaG9pY2UsY2hlY2tib3gsbGluZWFyX3NjYWxlLG11bHRpcGxlX2Nob2ljZSxmcmVlX3RleHQsIlRoaXMgaXNzdWUgZGlyZWN0bHkgYWZmZWN0cyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBhcHAsIHByZXZlbnRpbmcgdXNlcnMgZnJvbSBib29raW5nIHJpZGVzLCB3aGljaCBpcyBsaWtlbHkgdG8gcmVzdWx0IGluIHNpZ25pZmljYW50IHVzZXIgZGlzc2F0aXNmYWN0aW9uIGFuZCBwb3RlbnRpYWwgcmV2ZW51ZSBsb3NzLiIsLCJUaGUgc2VudGltZW50IGlzIHNvbWV3aGF0IG5lZ2F0aXZlIGJlY2F1c2UgdGhlIGN1c3RvbWVyIGlzIGV4cGVyaWVuY2luZyBmcnVzdHJhdGlvbiB3aXRoIHRoZSBhcHAgY3Jhc2hpbmcsIGJ1dCB0aGV5IGFyZSBzdGlsbCBwb2xpdGVseSBhc2tpbmcgZm9yIHRoZSBpc3N1ZSB0byBiZSBmaXhlZCByYXRoZXIgdGhhbiBleHByZXNzaW5nIGFuZ2VyIG9yIGRpc3NhdGlzZmFjdGlvbi4iLCJUaGUgdGlja2V0IGRvZXMgbm90IG1lbnRpb24gYW55IGFjY2lkZW50IG9yIGluanVyeSwgb25seSBhbiBhcHAgZnVuY3Rpb25hbGl0eSBpc3N1ZS4iLCJUaGUgY3VzdG9tZXIgaXMgcmVxdWVzdGluZyBhIGZpeCBmb3IgdGhlIGFwcCBpc3N1ZSwgbm90IGEgcmVmdW5kLiIsIlRoZSBpc3N1ZSBtZW50aW9uZWQgaW4gdGhlIHRpY2tldCBpcyByZWxhdGVkIHRvIHRoZSBhcHAgY3Jhc2hpbmcsIHdoaWNoIGZpdHMgdW5kZXIgIiJvdGhlciIiIGFzIGl0IGRvZXNuJ3QgcmVsYXRlIHRvIHRoZSBzcGVjaWZpYyBjYXRlZ29yaWVzIGxpa2Ugc2FmZXR5LCBjbGVhbmxpbmVzcywgZHJpdmVyIHBlcmZvcm1hbmNlLCBHUFMvcm91dGUsIG9yIGxvc3QgaXRlbS4iLCJbNV0gIApUaGUgaXNzdWUgbWVudGlvbmVkIGluIHRoZSB0aWNrZXQgaXMgcmVsYXRlZCB0byB0aGUgYXBwIGNyYXNoaW5nLCB3aGljaCBmaXRzIHVuZGVyICIib3RoZXIiIiBhcyBpdCBkb2Vzbid0IHJlbGF0ZSB0byB0aGUgc3BlY2lmaWMgY2F0ZWdvcmllcyBsaWtlIHNhZmV0eSwgY2xlYW5saW5lc3MsIGRyaXZlciBwZXJmb3JtYW5jZSwgR1BTL3JvdXRlLCBvciBsb3N0IGl0ZW0uIiwiTm8KClRoZSBjdXN0b21lciBpcyByZXF1ZXN0aW5nIGEgZml4IGZvciB0aGUgYXBwIGlzc3VlLCBub3QgYSByZWZ1bmQuIixUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyB0aGF0IHRoZSBhcHAgY3Jhc2hlcyB3aGVuZXZlciB0aGUgdXNlciBhdHRlbXB0cyB0byBib29rIGEgcmlkZS4gVGhlIHVzZXIgaXMgcmVxdWVzdGluZyBhIGZpeCBmb3IgdGhpcyBwcm9ibGVtLiwiTm90IGFwcGxpY2FibGUKClRoZSB0aWNrZXQgZG9lcyBub3QgbWVudGlvbiBhbnkgYWNjaWRlbnQgb3IgaW5qdXJ5LCBvbmx5IGFuIGFwcCBmdW5jdGlvbmFsaXR5IGlzc3VlLiIsIjUgIApUaGlzIGlzc3VlIGRpcmVjdGx5IGFmZmVjdHMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgYXBwLCBwcmV2ZW50aW5nIHVzZXJzIGZyb20gYm9va2luZyByaWRlcywgd2hpY2ggaXMgbGlrZWx5IHRvIHJlc3VsdCBpbiBzaWduaWZpY2FudCB1c2VyIGRpc3NhdGlzZmFjdGlvbiBhbmQgcG90ZW50aWFsIHJldmVudWUgbG9zcy4iLCJTb21ld2hhdCBuZWdhdGl2ZQoKVGhlIHNlbnRpbWVudCBpcyBzb21ld2hhdCBuZWdhdGl2ZSBiZWNhdXNlIHRoZSBjdXN0b21lciBpcyBleHBlcmllbmNpbmcgZnJ1c3RyYXRpb24gd2l0aCB0aGUgYXBwIGNyYXNoaW5nLCBidXQgdGhleSBhcmUgc3RpbGwgcG9saXRlbHkgYXNraW5nIGZvciB0aGUgaXNzdWUgdG8gYmUgZml4ZWQgcmF0aGVyIHRoYW4gZXhwcmVzc2luZyBhbmdlciBvciBkaXNzYXRpc2ZhY3Rpb24uIg0KTm90IGFwcGxpY2FibGUsIlRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIG5vdCBhIGNvbXBsYWludCBvciBwcm9ibGVtLCBidXQgcmF0aGVyIHBvc2l0aXZlIGZlZWRiYWNrLiBUaGUgY3VzdG9tZXIgaXMgZXhwcmVzc2luZyBzYXRpc2ZhY3Rpb24gd2l0aCB0aGVpciBkcml2ZXIsIGhpZ2hsaWdodGluZyB0aGUgZHJpdmVyJ3Mgc2FmZSBkcml2aW5nLCBwb2xpdGVuZXNzLCBhbmQgdGhlIGNsZWFubGluZXNzIG9mIHRoZSBjYXIuIFRoaXMgaXMgYSBjb21tZW5kYXRpb24gcmF0aGVyIHRoYW4gYW4gaXNzdWUuIiwwLE5vLCJbJ3NhZmV0eScsICdjbGVhbmxpbmVzcycsICdkcml2ZXIgcGVyZm9ybWFuY2UnXSIsVmVyeSBwb3NpdGl2ZSwiTXkgZHJpdmVyIHdhcyBleGNlcHRpb25hbCAtIHNhZmUgZHJpdmluZywgcG9saXRlLCBhbmQgdGhlIGNhciB3YXMgc3BvdGxlc3MuIEt1ZG9zISIsQWdlbnRfOCxZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4sMTUsWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4sMCwwLDEsMyxncHQtNG8sRmFsc2UsMC41LDEwMDAsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiCkRvZXMgdGhlIGN1c3RvbWVyIGFzayBmb3IgYSByZWZ1bmQgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogTXkgZHJpdmVyIHdhcyBleGNlcHRpb25hbCAtIHNhZmUgZHJpdmluZywgcG9saXRlLCBhbmQgdGhlIGNhciB3YXMgc3BvdGxlc3MuIEt1ZG9zIQoKICAgIApObwogICAgClllcwogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KUGxlYXNlIHJlc3BvbmQgd2l0aCBqdXN0IHlvdXIgYW5zd2VyLiAKCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIHJlc3BvbnNlLiIsIgpXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDogTXkgZHJpdmVyIHdhcyBleGNlcHRpb25hbCAtIHNhZmUgZHJpdmluZywgcG9saXRlLCBhbmQgdGhlIGNhciB3YXMgc3BvdGxlc3MuIEt1ZG9zIQoKICAgIApWZXJ5IHBvc2l0aXZlCiAgICAKU29tZXdoYXQgcG9zaXRpdmUKICAgIApOZXV0cmFsCiAgICAKU29tZXdoYXQgbmVnYXRpdmUKICAgIApWZXJ5IG5lZ2F0aXZlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIgpJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IE15IGRyaXZlciB3YXMgZXhjZXB0aW9uYWwgLSBzYWZlIGRyaXZpbmcsIHBvbGl0ZSwgYW5kIHRoZSBjYXIgd2FzIHNwb3RsZXNzLiBLdWRvcyEKCiAgICAKWWVzCiAgICAKTm8KICAgIApOb3QgYXBwbGljYWJsZQogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLgoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiV2hhdCBpcyB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBNeSBkcml2ZXIgd2FzIGV4Y2VwdGlvbmFsIC0gc2FmZSBkcml2aW5nLCBwb2xpdGUsIGFuZCB0aGUgY2FyIHdhcyBzcG90bGVzcy4gS3Vkb3MhIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IE15IGRyaXZlciB3YXMgZXhjZXB0aW9uYWwgLSBzYWZlIGRyaXZpbmcsIHBvbGl0ZSwgYW5kIHRoZSBjYXIgd2FzIHNwb3RsZXNzLiBLdWRvcyEKCjAgOiBMb3dlc3QKCjEgOiAKCjIgOiAKCjMgOiAKCjQgOiAKCjUgOiBIaWdoZXN0CgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIHRoZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLiBFLmcuLCAiIjEiIiBvciAiIjUiIiBieSBpdHNlbGYuCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJDaGVjayBhbGwgb2YgdGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhpcyB0aWNrZXQ6IE15IGRyaXZlciB3YXMgZXhjZXB0aW9uYWwgLSBzYWZlIGRyaXZpbmcsIHBvbGl0ZSwgYW5kIHRoZSBjYXIgd2FzIHNwb3RsZXNzLiBLdWRvcyEKCiAgICAKMDogc2FmZXR5CiAgICAKMTogY2xlYW5saW5lc3MKICAgIAoyOiBkcml2ZXIgcGVyZm9ybWFuY2UKICAgIAozOiBHUFMvcm91dGUKICAgIAo0OiBsb3N0IGl0ZW0KICAgIAo1OiBvdGhlcgogICAgCgoKCgoKClBsZWFzZSByZXNwb25kIG9ubHkgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBjb2RlIG9mIHRoZSBvcHRpb25zIHRoYXQgYXBwbHksIHdpdGggc3F1YXJlIGJyYWNrZXRzLiBFLmcuLCBbMCwgMSwgM10KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIGNob2ljZSBvbiB0aGUgbmV4dCBsaW5lLiIsMC4wMDA3Mzc1MDAwMDAwMDAwMDAxLDAuMDAwNjMsMTYyNi4wMTYyNjAxNjI2MDE2LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDZ09vNnZrV3Q2UVpYZUJWNDdVWVJLWUhoJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICIiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgbm90IGEgY29tcGxhaW50IG9yIHByb2JsZW0sIGJ1dCByYXRoZXIgcG9zaXRpdmUgZmVlZGJhY2suIFRoZSBjdXN0b21lciBpcyBleHByZXNzaW5nIHNhdGlzZmFjdGlvbiB3aXRoIHRoZWlyIGRyaXZlciwgaGlnaGxpZ2h0aW5nIHRoZSBkcml2ZXIncyBzYWZlIGRyaXZpbmcsIHBvbGl0ZW5lc3MsIGFuZCB0aGUgY2xlYW5saW5lc3Mgb2YgdGhlIGNhci4gVGhpcyBpcyBhIGNvbW1lbmRhdGlvbiByYXRoZXIgdGhhbiBhbiBpc3N1ZS4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogNTMsICdwcm9tcHRfdG9rZW5zJzogNzksICd0b3RhbF90b2tlbnMnOiAxMzIsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE3MzkuMTMwNDM0NzgyNjA4NywieydpZCc6ICdjaGF0Y21wbC1BZU9MRGlGRW1yaFpLOGdHUEoyTEwwU0tqYjVCeicsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIk5vdCBhcHBsaWNhYmxlXG5cblRoZSB0aWNrZXQgaXMgYSBjb21wbGltZW50IGhpZ2hsaWdodGluZyB0aGUgZHJpdmVyJ3MgZXhjZXB0aW9uYWwgc2VydmljZSwgd2l0aCBubyBtZW50aW9uIG9mIGFuIGFjY2lkZW50IG9yIGluanVyeS4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUxLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjMsICdwcm9tcHRfdG9rZW5zJzogMTM4LCAndG90YWxfdG9rZW5zJzogMTYxLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwwLjAwMDcyNzUsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENycGFhd1hTM2p2R1FnN2lRM21HaHFNYUonLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogIiIwICBcblRoaXMgdGlja2V0IGlzIGEgcG9zaXRpdmUgZmVlZGJhY2sgYW5kIGRvZXNuJ3QgcmVxdWlyZSBpbW1lZGlhdGUgYWN0aW9uLCBzbyBpdCBpcyB0aGUgbG93ZXN0IHByaW9yaXR5LiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyMSwgJ3Byb21wdF90b2tlbnMnOiAxNjIsICd0b3RhbF90b2tlbnMnOiAxODMsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDEzNzQuNTcwNDQ2NzM1Mzk1MywxNTg3LjMwMTU4NzMwMTU4NzIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTERzMVpFQTJacmY1VUdkWDJwMlhEemJGYXMnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogIiJOb1xuXG5UaGUgdGlja2V0IGlzIGEgY29tcGxpbWVudCBhYm91dCB0aGUgZHJpdmVyJ3Mgc2VydmljZSwgbm90IGEgcmVxdWVzdCBmb3IgYSByZWZ1bmQuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MSwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDE5LCAncHJvbXB0X3Rva2Vucyc6IDExNiwgJ3RvdGFsX3Rva2Vucyc6IDEzNSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTM1NS45MzIyMDMzODk4MzA0LDIwODMuMzMzMzMzMzMzMzMzNSwwLjAwMDU3NSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ3d3bzdybDV6TUZDUW9IU3BDVE51c1pMNicsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlswLCAxLCAyXVxuXG5UaGUgdGlja2V0IG1lbnRpb25zIHNhZmUgZHJpdmluZyAoc2FmZXR5KSwgYSBzcG90bGVzcyBjYXIgKGNsZWFubGluZXNzKSwgYW5kIHRoZSBkcml2ZXIncyBwb2xpdGUgYmVoYXZpb3IgKGRyaXZlciBwZXJmb3JtYW5jZSkuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDM0LCAncHJvbXB0X3Rva2Vucyc6IDE1OSwgJ3RvdGFsX3Rva2Vucyc6IDE5MywgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTEM2R2d5MjFjN0RwRzFFRnNNZ0p6TldxQ08nLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ1ZlcnkgcG9zaXRpdmUgIFxuVGhlIHRpY2tldCBleHByZXNzZXMgaGlnaCBwcmFpc2UgZm9yIHRoZSBkcml2ZXIsIGhpZ2hsaWdodGluZyBzYWZlIGRyaXZpbmcsIHBvbGl0ZW5lc3MsIGFuZCBjbGVhbmxpbmVzcywgd2hpY2ggaW5kaWNhdGVzIGEgdmVyeSBwb3NpdGl2ZSBzZW50aW1lbnQuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwXzlmYWJhOWYwMzgnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjksICdwcm9tcHRfdG9rZW5zJzogMTM2LCAndG90YWxfdG9rZW5zJzogMTY1LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwwLjAwMDYxNSwwLjAwMDQ4LDAsIklmIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHNhZmV0eSwgd2FzIHRoZXJlIGFuIGFjY2lkZW50IHdoZXJlIHNvbWVvbmUgd2FzIGh1cnQ/IFRpY2tldDoge3sgdGlja2V0IH19IiwiT24gYSBzY2FsZSBmcm9tIDAgdG8gNSwgd2hhdCBpcyB0aGUgcHJpb3JpdHkgbGV2ZWwgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19IixXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LERvZXMgdGhlIGN1c3RvbWVyIGFzayBmb3IgYSByZWZ1bmQgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LENoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDoge3sgdGlja2V0IH19LCJbJ3NhZmV0eScsICdjbGVhbmxpbmVzcycsICdkcml2ZXIgcGVyZm9ybWFuY2UnLCAnR1BTL3JvdXRlJywgJ2xvc3QgaXRlbScsICdvdGhlciddIiwiWydWZXJ5IHBvc2l0aXZlJywgJ1NvbWV3aGF0IHBvc2l0aXZlJywgJ05ldXRyYWwnLCAnU29tZXdoYXQgbmVnYXRpdmUnLCAnVmVyeSBuZWdhdGl2ZSddIiwiWydZZXMnLCAnTm8nLCAnTm90IGFwcGxpY2FibGUnXSIsIlsnTm8nLCAnWWVzJ10iLCJbMCwgMSwgMiwgMywgNCwgNV0iLCx5ZXNfbm8sbXVsdGlwbGVfY2hvaWNlLGNoZWNrYm94LGxpbmVhcl9zY2FsZSxtdWx0aXBsZV9jaG9pY2UsZnJlZV90ZXh0LCJUaGlzIHRpY2tldCBpcyBhIHBvc2l0aXZlIGZlZWRiYWNrIGFuZCBkb2Vzbid0IHJlcXVpcmUgaW1tZWRpYXRlIGFjdGlvbiwgc28gaXQgaXMgdGhlIGxvd2VzdCBwcmlvcml0eS4iLCwiVGhlIHRpY2tldCBleHByZXNzZXMgaGlnaCBwcmFpc2UgZm9yIHRoZSBkcml2ZXIsIGhpZ2hsaWdodGluZyBzYWZlIGRyaXZpbmcsIHBvbGl0ZW5lc3MsIGFuZCBjbGVhbmxpbmVzcywgd2hpY2ggaW5kaWNhdGVzIGEgdmVyeSBwb3NpdGl2ZSBzZW50aW1lbnQuIiwiVGhlIHRpY2tldCBpcyBhIGNvbXBsaW1lbnQgaGlnaGxpZ2h0aW5nIHRoZSBkcml2ZXIncyBleGNlcHRpb25hbCBzZXJ2aWNlLCB3aXRoIG5vIG1lbnRpb24gb2YgYW4gYWNjaWRlbnQgb3IgaW5qdXJ5LiIsIlRoZSB0aWNrZXQgaXMgYSBjb21wbGltZW50IGFib3V0IHRoZSBkcml2ZXIncyBzZXJ2aWNlLCBub3QgYSByZXF1ZXN0IGZvciBhIHJlZnVuZC4iLCJUaGUgdGlja2V0IG1lbnRpb25zIHNhZmUgZHJpdmluZyAoc2FmZXR5KSwgYSBzcG90bGVzcyBjYXIgKGNsZWFubGluZXNzKSwgYW5kIHRoZSBkcml2ZXIncyBwb2xpdGUgYmVoYXZpb3IgKGRyaXZlciBwZXJmb3JtYW5jZSkuIiwiWzAsIDEsIDJdCgpUaGUgdGlja2V0IG1lbnRpb25zIHNhZmUgZHJpdmluZyAoc2FmZXR5KSwgYSBzcG90bGVzcyBjYXIgKGNsZWFubGluZXNzKSwgYW5kIHRoZSBkcml2ZXIncyBwb2xpdGUgYmVoYXZpb3IgKGRyaXZlciBwZXJmb3JtYW5jZSkuIiwiTm8KClRoZSB0aWNrZXQgaXMgYSBjb21wbGltZW50IGFib3V0IHRoZSBkcml2ZXIncyBzZXJ2aWNlLCBub3QgYSByZXF1ZXN0IGZvciBhIHJlZnVuZC4iLCJUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBub3QgYSBjb21wbGFpbnQgb3IgcHJvYmxlbSwgYnV0IHJhdGhlciBwb3NpdGl2ZSBmZWVkYmFjay4gVGhlIGN1c3RvbWVyIGlzIGV4cHJlc3Npbmcgc2F0aXNmYWN0aW9uIHdpdGggdGhlaXIgZHJpdmVyLCBoaWdobGlnaHRpbmcgdGhlIGRyaXZlcidzIHNhZmUgZHJpdmluZywgcG9saXRlbmVzcywgYW5kIHRoZSBjbGVhbmxpbmVzcyBvZiB0aGUgY2FyLiBUaGlzIGlzIGEgY29tbWVuZGF0aW9uIHJhdGhlciB0aGFuIGFuIGlzc3VlLiIsIk5vdCBhcHBsaWNhYmxlCgpUaGUgdGlja2V0IGlzIGEgY29tcGxpbWVudCBoaWdobGlnaHRpbmcgdGhlIGRyaXZlcidzIGV4Y2VwdGlvbmFsIHNlcnZpY2UsIHdpdGggbm8gbWVudGlvbiBvZiBhbiBhY2NpZGVudCBvciBpbmp1cnkuIiwiMCAgClRoaXMgdGlja2V0IGlzIGEgcG9zaXRpdmUgZmVlZGJhY2sgYW5kIGRvZXNuJ3QgcmVxdWlyZSBpbW1lZGlhdGUgYWN0aW9uLCBzbyBpdCBpcyB0aGUgbG93ZXN0IHByaW9yaXR5LiIsIlZlcnkgcG9zaXRpdmUgIApUaGUgdGlja2V0IGV4cHJlc3NlcyBoaWdoIHByYWlzZSBmb3IgdGhlIGRyaXZlciwgaGlnaGxpZ2h0aW5nIHNhZmUgZHJpdmluZywgcG9saXRlbmVzcywgYW5kIGNsZWFubGluZXNzLCB3aGljaCBpbmRpY2F0ZXMgYSB2ZXJ5IHBvc2l0aXZlIHNlbnRpbWVudC4iDQpOb3QgYXBwbGljYWJsZSxUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyB0aGUgY3VzdG9tZXIncyBmZWVsaW5nIG9mIGJlaW5nIHVuc2FmZSBkdWUgdG8gdGhlIGRyaXZlcidzIGVycmF0aWMgYmVoYXZpb3IuIFRoaXMgaXMgYSBzZXJpb3VzIGNvbmNlcm4gdGhhdCByZXF1aXJlcyBpbW1lZGlhdGUgYXR0ZW50aW9uIHRvIGVuc3VyZSB0aGUgc2FmZXR5IG9mIHBhc3NlbmdlcnMgYW5kIHRvIGFkZHJlc3MgYW55IHBvdGVudGlhbCBtaXNjb25kdWN0IGJ5IHRoZSBkcml2ZXIuLDUsTm8sIlsnc2FmZXR5JywgJ2RyaXZlciBwZXJmb3JtYW5jZSddIixWZXJ5IG5lZ2F0aXZlLEkgZmVsdCB1bnNhZmUgZHVyaW5nIG15IHJpZGUgZHVlIHRvIHRoZSBkcml2ZXIncyBlcnJhdGljIGJlaGF2aW9yLiBUaGlzIG5lZWRzIHRvIGJlIGFkZHJlc3NlZCBpbW1lZGlhdGVseS4sQWdlbnRfOSxZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4sMTUsWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4sMCwwLDEsMyxncHQtNG8sRmFsc2UsMC41LDEwMDAsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiCkRvZXMgdGhlIGN1c3RvbWVyIGFzayBmb3IgYSByZWZ1bmQgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogSSBmZWx0IHVuc2FmZSBkdXJpbmcgbXkgcmlkZSBkdWUgdG8gdGhlIGRyaXZlcidzIGVycmF0aWMgYmVoYXZpb3IuIFRoaXMgbmVlZHMgdG8gYmUgYWRkcmVzc2VkIGltbWVkaWF0ZWx5LgoKICAgIApObwogICAgClllcwogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KUGxlYXNlIHJlc3BvbmQgd2l0aCBqdXN0IHlvdXIgYW5zd2VyLiAKCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIHJlc3BvbnNlLiIsIgpXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDogSSBmZWx0IHVuc2FmZSBkdXJpbmcgbXkgcmlkZSBkdWUgdG8gdGhlIGRyaXZlcidzIGVycmF0aWMgYmVoYXZpb3IuIFRoaXMgbmVlZHMgdG8gYmUgYWRkcmVzc2VkIGltbWVkaWF0ZWx5LgoKICAgIApWZXJ5IHBvc2l0aXZlCiAgICAKU29tZXdoYXQgcG9zaXRpdmUKICAgIApOZXV0cmFsCiAgICAKU29tZXdoYXQgbmVnYXRpdmUKICAgIApWZXJ5IG5lZ2F0aXZlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIgpJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IEkgZmVsdCB1bnNhZmUgZHVyaW5nIG15IHJpZGUgZHVlIHRvIHRoZSBkcml2ZXIncyBlcnJhdGljIGJlaGF2aW9yLiBUaGlzIG5lZWRzIHRvIGJlIGFkZHJlc3NlZCBpbW1lZGlhdGVseS4KCiAgICAKWWVzCiAgICAKTm8KICAgIApOb3QgYXBwbGljYWJsZQogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLgoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IixXaGF0IGlzIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IEkgZmVsdCB1bnNhZmUgZHVyaW5nIG15IHJpZGUgZHVlIHRvIHRoZSBkcml2ZXIncyBlcnJhdGljIGJlaGF2aW9yLiBUaGlzIG5lZWRzIHRvIGJlIGFkZHJlc3NlZCBpbW1lZGlhdGVseS4sIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBJIGZlbHQgdW5zYWZlIGR1cmluZyBteSByaWRlIGR1ZSB0byB0aGUgZHJpdmVyJ3MgZXJyYXRpYyBiZWhhdmlvci4gVGhpcyBuZWVkcyB0byBiZSBhZGRyZXNzZWQgaW1tZWRpYXRlbHkuCgowIDogTG93ZXN0CgoxIDogCgoyIDogCgozIDogCgo0IDogCgo1IDogSGlnaGVzdAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCB0aGUgY29kZSBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4gRS5nLiwgIiIxIiIgb3IgIiI1IiIgYnkgaXRzZWxmLgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiBJIGZlbHQgdW5zYWZlIGR1cmluZyBteSByaWRlIGR1ZSB0byB0aGUgZHJpdmVyJ3MgZXJyYXRpYyBiZWhhdmlvci4gVGhpcyBuZWVkcyB0byBiZSBhZGRyZXNzZWQgaW1tZWRpYXRlbHkuCgogICAgCjA6IHNhZmV0eQogICAgCjE6IGNsZWFubGluZXNzCiAgICAKMjogZHJpdmVyIHBlcmZvcm1hbmNlCiAgICAKMzogR1BTL3JvdXRlCiAgICAKNDogbG9zdCBpdGVtCiAgICAKNTogb3RoZXIKICAgIAoKCgoKCgpQbGVhc2UgcmVzcG9uZCBvbmx5IHdpdGggYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgY29kZSBvZiB0aGUgb3B0aW9ucyB0aGF0IGFwcGx5LCB3aXRoIHNxdWFyZSBicmFja2V0cy4gRS5nLiwgWzAsIDEsIDNdCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgeW91ciBjaG9pY2Ugb24gdGhlIG5leHQgbGluZS4iLDAuMDAwNjg1LDAuMDAwNjE3NSwxMjQ2LjEwNTkxOTAwMzExNSwieydpZCc6ICdjaGF0Y21wbC1BZU9MRHRlR0JJTTM1cFh2ZEVCZlZpQXVQUFAxeicsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoZSBjdXN0b21lcidzIGZlZWxpbmcgb2YgYmVpbmcgdW5zYWZlIGR1ZSB0byB0aGUgZHJpdmVyJ3MgZXJyYXRpYyBiZWhhdmlvci4gVGhpcyBpcyBhIHNlcmlvdXMgY29uY2VybiB0aGF0IHJlcXVpcmVzIGltbWVkaWF0ZSBhdHRlbnRpb24gdG8gZW5zdXJlIHRoZSBzYWZldHkgb2YgcGFzc2VuZ2VycyBhbmQgdG8gYWRkcmVzcyBhbnkgcG90ZW50aWFsIG1pc2NvbmR1Y3QgYnkgdGhlIGRyaXZlci4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUxLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwXzlmYWJhOWYwMzgnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogNDYsICdwcm9tcHRfdG9rZW5zJzogODIsICd0b3RhbF90b2tlbnMnOiAxMjgsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE2MDYuNDI1NzAyODExMjQ1LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xEc1NWZkF6c3FCYTNKQUlTVUdqNmRwYVZyJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICIiTm90IGFwcGxpY2FibGVcblxuVGhlIHRpY2tldCBtZW50aW9ucyBmZWVsaW5nIHVuc2FmZSBkdWUgdG8gdGhlIGRyaXZlcidzIGJlaGF2aW9yIGJ1dCBkb2VzIG5vdCBzcGVjaWZ5IHRoYXQgYW4gYWNjaWRlbnQgb2NjdXJyZWQgb3IgdGhhdCBzb21lb25lIHdhcyBodXJ0LiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTEsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyNywgJ3Byb21wdF90b2tlbnMnOiAxNDEsICd0b3RhbF90b2tlbnMnOiAxNjgsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwNjY1LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDQjRmSVQ3cGpvck82clFhcjNGand4QjFZJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICIiNSAgXG5UaGlzIHRpY2tldCBzaG91bGQgYmUgcHJpb3JpdGl6ZWQgYXQgdGhlIGhpZ2hlc3QgbGV2ZWwgYmVjYXVzZSBpdCBpbnZvbHZlcyBhIHNhZmV0eSBjb25jZXJuLCB3aGljaCByZXF1aXJlcyBpbW1lZGlhdGUgYXR0ZW50aW9uIHRvIGVuc3VyZSB0aGUgc2FmZXR5IG9mIHBhc3NlbmdlcnMgYW5kIGFkZHJlc3MgYW55IHBvdGVudGlhbCByaXNrcyBhc3NvY2lhdGVkIHdpdGggdGhlIGRyaXZlcidzIGJlaGF2aW9yLiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAzOSwgJ3Byb21wdF90b2tlbnMnOiAxNjUsICd0b3RhbF90b2tlbnMnOiAyMDQsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE1MDMuNzU5Mzk4NDk2MjQwNywxNjE5LjQzMzE5ODM4MDU2NjksInsnaWQnOiAnY2hhdGNtcGwtQWVPTENqbjY5Y2RnbnZRcklLck90WlVmVVpUV0QnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogIiJOb1xuXG5UaGUgY3VzdG9tZXIgZXhwcmVzc2VzIGNvbmNlcm4gYWJvdXQgdGhlIGRyaXZlcidzIGJlaGF2aW9yIGFuZCByZXF1ZXN0cyB0aGF0IHRoZSBpc3N1ZSBiZSBhZGRyZXNzZWQsIGJ1dCB0aGV5IGRvIG5vdCBleHBsaWNpdGx5IGFzayBmb3IgYSByZWZ1bmQgaW4gdGhlaXIgbWVzc2FnZS4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwXzlmYWJhOWYwMzgnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMzEsICdwcm9tcHRfdG9rZW5zJzogMTE5LCAndG90YWxfdG9rZW5zJzogMTUwLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxNDU5Ljg1NDAxNDU5ODU0MDMsMTY0Ni4wOTA1MzQ5Nzk0MjM5LDAuMDAwNjIyNSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ2tlUnczdkNyM3htbzhIUnFZT3lSbzJrZScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlswLCAyXVxuXG5TYWZldHkgYW5kIGRyaXZlciBwZXJmb3JtYW5jZSBhcmUgdGhlIGlzc3VlcyBtZW50aW9uZWQsIGFzIHRoZSBjdXN0b21lciBmZWx0IHVuc2FmZSBkdWUgdG8gdGhlIGRyaXZlcidzIGVycmF0aWMgYmVoYXZpb3IuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDI4LCAncHJvbXB0X3Rva2Vucyc6IDE2MiwgJ3RvdGFsX3Rva2Vucyc6IDE5MCwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENvazAzeWJtZThtYjJNR25QRlZnSGJtY3onLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogIiJWZXJ5IG5lZ2F0aXZlICBcblRoZSBjdXN0b21lciBleHByZXNzZXMgZmVlbGluZyB1bnNhZmUgYW5kIGRlc2NyaWJlcyB0aGUgZHJpdmVyJ3MgYmVoYXZpb3IgYXMgZXJyYXRpYywgd2hpY2ggaW5kaWNhdGVzIGEgc2lnbmlmaWNhbnQgbGV2ZWwgb2YgY29uY2VybiBhbmQgZGlzc2F0aXNmYWN0aW9uLiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyNywgJ3Byb21wdF90b2tlbnMnOiAxMzksICd0b3RhbF90b2tlbnMnOiAxNjYsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwODAyNSwwLjAwMDYwNzUsMCwiSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLFdoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sV2hhdCBpcyB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiB7eyB0aWNrZXQgfX0sIlsnc2FmZXR5JywgJ2NsZWFubGluZXNzJywgJ2RyaXZlciBwZXJmb3JtYW5jZScsICdHUFMvcm91dGUnLCAnbG9zdCBpdGVtJywgJ290aGVyJ10iLCJbJ1ZlcnkgcG9zaXRpdmUnLCAnU29tZXdoYXQgcG9zaXRpdmUnLCAnTmV1dHJhbCcsICdTb21ld2hhdCBuZWdhdGl2ZScsICdWZXJ5IG5lZ2F0aXZlJ10iLCJbJ1llcycsICdObycsICdOb3QgYXBwbGljYWJsZSddIiwiWydObycsICdZZXMnXSIsIlswLCAxLCAyLCAzLCA0LCA1XSIsLHllc19ubyxtdWx0aXBsZV9jaG9pY2UsY2hlY2tib3gsbGluZWFyX3NjYWxlLG11bHRpcGxlX2Nob2ljZSxmcmVlX3RleHQsIlRoaXMgdGlja2V0IHNob3VsZCBiZSBwcmlvcml0aXplZCBhdCB0aGUgaGlnaGVzdCBsZXZlbCBiZWNhdXNlIGl0IGludm9sdmVzIGEgc2FmZXR5IGNvbmNlcm4sIHdoaWNoIHJlcXVpcmVzIGltbWVkaWF0ZSBhdHRlbnRpb24gdG8gZW5zdXJlIHRoZSBzYWZldHkgb2YgcGFzc2VuZ2VycyBhbmQgYWRkcmVzcyBhbnkgcG90ZW50aWFsIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZHJpdmVyJ3MgYmVoYXZpb3IuIiwsIlRoZSBjdXN0b21lciBleHByZXNzZXMgZmVlbGluZyB1bnNhZmUgYW5kIGRlc2NyaWJlcyB0aGUgZHJpdmVyJ3MgYmVoYXZpb3IgYXMgZXJyYXRpYywgd2hpY2ggaW5kaWNhdGVzIGEgc2lnbmlmaWNhbnQgbGV2ZWwgb2YgY29uY2VybiBhbmQgZGlzc2F0aXNmYWN0aW9uLiIsVGhlIHRpY2tldCBtZW50aW9ucyBmZWVsaW5nIHVuc2FmZSBkdWUgdG8gdGhlIGRyaXZlcidzIGJlaGF2aW9yIGJ1dCBkb2VzIG5vdCBzcGVjaWZ5IHRoYXQgYW4gYWNjaWRlbnQgb2NjdXJyZWQgb3IgdGhhdCBzb21lb25lIHdhcyBodXJ0LiwiVGhlIGN1c3RvbWVyIGV4cHJlc3NlcyBjb25jZXJuIGFib3V0IHRoZSBkcml2ZXIncyBiZWhhdmlvciBhbmQgcmVxdWVzdHMgdGhhdCB0aGUgaXNzdWUgYmUgYWRkcmVzc2VkLCBidXQgdGhleSBkbyBub3QgZXhwbGljaXRseSBhc2sgZm9yIGEgcmVmdW5kIGluIHRoZWlyIG1lc3NhZ2UuIiwiU2FmZXR5IGFuZCBkcml2ZXIgcGVyZm9ybWFuY2UgYXJlIHRoZSBpc3N1ZXMgbWVudGlvbmVkLCBhcyB0aGUgY3VzdG9tZXIgZmVsdCB1bnNhZmUgZHVlIHRvIHRoZSBkcml2ZXIncyBlcnJhdGljIGJlaGF2aW9yLiIsIlswLCAyXQoKU2FmZXR5IGFuZCBkcml2ZXIgcGVyZm9ybWFuY2UgYXJlIHRoZSBpc3N1ZXMgbWVudGlvbmVkLCBhcyB0aGUgY3VzdG9tZXIgZmVsdCB1bnNhZmUgZHVlIHRvIHRoZSBkcml2ZXIncyBlcnJhdGljIGJlaGF2aW9yLiIsIk5vCgpUaGUgY3VzdG9tZXIgZXhwcmVzc2VzIGNvbmNlcm4gYWJvdXQgdGhlIGRyaXZlcidzIGJlaGF2aW9yIGFuZCByZXF1ZXN0cyB0aGF0IHRoZSBpc3N1ZSBiZSBhZGRyZXNzZWQsIGJ1dCB0aGV5IGRvIG5vdCBleHBsaWNpdGx5IGFzayBmb3IgYSByZWZ1bmQgaW4gdGhlaXIgbWVzc2FnZS4iLFRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoZSBjdXN0b21lcidzIGZlZWxpbmcgb2YgYmVpbmcgdW5zYWZlIGR1ZSB0byB0aGUgZHJpdmVyJ3MgZXJyYXRpYyBiZWhhdmlvci4gVGhpcyBpcyBhIHNlcmlvdXMgY29uY2VybiB0aGF0IHJlcXVpcmVzIGltbWVkaWF0ZSBhdHRlbnRpb24gdG8gZW5zdXJlIHRoZSBzYWZldHkgb2YgcGFzc2VuZ2VycyBhbmQgdG8gYWRkcmVzcyBhbnkgcG90ZW50aWFsIG1pc2NvbmR1Y3QgYnkgdGhlIGRyaXZlci4sIk5vdCBhcHBsaWNhYmxlCgpUaGUgdGlja2V0IG1lbnRpb25zIGZlZWxpbmcgdW5zYWZlIGR1ZSB0byB0aGUgZHJpdmVyJ3MgYmVoYXZpb3IgYnV0IGRvZXMgbm90IHNwZWNpZnkgdGhhdCBhbiBhY2NpZGVudCBvY2N1cnJlZCBvciB0aGF0IHNvbWVvbmUgd2FzIGh1cnQuIiwiNSAgClRoaXMgdGlja2V0IHNob3VsZCBiZSBwcmlvcml0aXplZCBhdCB0aGUgaGlnaGVzdCBsZXZlbCBiZWNhdXNlIGl0IGludm9sdmVzIGEgc2FmZXR5IGNvbmNlcm4sIHdoaWNoIHJlcXVpcmVzIGltbWVkaWF0ZSBhdHRlbnRpb24gdG8gZW5zdXJlIHRoZSBzYWZldHkgb2YgcGFzc2VuZ2VycyBhbmQgYWRkcmVzcyBhbnkgcG90ZW50aWFsIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZHJpdmVyJ3MgYmVoYXZpb3IuIiwiVmVyeSBuZWdhdGl2ZSAgClRoZSBjdXN0b21lciBleHByZXNzZXMgZmVlbGluZyB1bnNhZmUgYW5kIGRlc2NyaWJlcyB0aGUgZHJpdmVyJ3MgYmVoYXZpb3IgYXMgZXJyYXRpYywgd2hpY2ggaW5kaWNhdGVzIGEgc2lnbmlmaWNhbnQgbGV2ZWwgb2YgY29uY2VybiBhbmQgZGlzc2F0aXNmYWN0aW9uLiINCk5vLCJUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyB0aGF0IHRoZSBkcml2ZXIgZGlkIG5vdCBmb2xsb3cgdGhlIGN1c3RvbWVyJ3MgcHJlZmVycmVkIHJvdXRlLCB3aGljaCB0aGUgY3VzdG9tZXIgYmVsaWV2ZXMgaXMgc2hvcnRlciwgbGVhZGluZyB0byBkaXNzYXRpc2ZhY3Rpb24gd2l0aCB0aGUgc2VydmljZS4gQXMgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQsIEkgd291bGQgYWRkcmVzcyB0aGUgY3VzdG9tZXIncyBjb25jZXJuIGJ5IGFja25vd2xlZGdpbmcgdGhlaXIgZnJ1c3RyYXRpb24sIGV4cGxhaW5pbmcgYW55IHBvc3NpYmxlIHJlYXNvbnMgZm9yIHRoZSBkcml2ZXIncyBkZWNpc2lvbiAoc3VjaCBhcyB0cmFmZmljIGNvbmRpdGlvbnMgb3IgY29tcGFueSBwb2xpY3kpLCBhbmQgb2ZmZXJpbmcgYSByZXNvbHV0aW9uIG9yIGNvbXBlbnNhdGlvbiBpZiBhcHByb3ByaWF0ZS4iLDIsTm8sIlsnZHJpdmVyIHBlcmZvcm1hbmNlJywgJ0dQUy9yb3V0ZSddIixWZXJ5IG5lZ2F0aXZlLCJUaGUgZHJpdmVyIHJlZnVzZWQgdG8gZm9sbG93IG15IHByZWZlcnJlZCByb3V0ZSwgd2hpY2ggaXMgc2hvcnRlci4gSSdtIG5vdCBzYXRpc2ZpZWQgd2l0aCB0aGUgc2VydmljZS4iLEFnZW50XzEwLFlvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiwxNSxZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LiwwLDAsMSwzLGdwdC00byxGYWxzZSwwLjUsMTAwMCwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCIKRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBUaGUgZHJpdmVyIHJlZnVzZWQgdG8gZm9sbG93IG15IHByZWZlcnJlZCByb3V0ZSwgd2hpY2ggaXMgc2hvcnRlci4gSSdtIG5vdCBzYXRpc2ZpZWQgd2l0aCB0aGUgc2VydmljZS4KCiAgICAKTm8KICAgIApZZXMKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuClBsZWFzZSByZXNwb25kIHdpdGgganVzdCB5b3VyIGFuc3dlci4gCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgeW91ciByZXNwb25zZS4iLCIKV2hhdCBpcyB0aGUgc2VudGltZW50IG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IFRoZSBkcml2ZXIgcmVmdXNlZCB0byBmb2xsb3cgbXkgcHJlZmVycmVkIHJvdXRlLCB3aGljaCBpcyBzaG9ydGVyLiBJJ20gbm90IHNhdGlzZmllZCB3aXRoIHRoZSBzZXJ2aWNlLgoKICAgIApWZXJ5IHBvc2l0aXZlCiAgICAKU29tZXdoYXQgcG9zaXRpdmUKICAgIApOZXV0cmFsCiAgICAKU29tZXdoYXQgbmVnYXRpdmUKICAgIApWZXJ5IG5lZ2F0aXZlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIgpJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IFRoZSBkcml2ZXIgcmVmdXNlZCB0byBmb2xsb3cgbXkgcHJlZmVycmVkIHJvdXRlLCB3aGljaCBpcyBzaG9ydGVyLiBJJ20gbm90IHNhdGlzZmllZCB3aXRoIHRoZSBzZXJ2aWNlLgoKICAgIApZZXMKICAgIApObwogICAgCk5vdCBhcHBsaWNhYmxlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJXaGF0IGlzIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IFRoZSBkcml2ZXIgcmVmdXNlZCB0byBmb2xsb3cgbXkgcHJlZmVycmVkIHJvdXRlLCB3aGljaCBpcyBzaG9ydGVyLiBJJ20gbm90IHNhdGlzZmllZCB3aXRoIHRoZSBzZXJ2aWNlLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBUaGUgZHJpdmVyIHJlZnVzZWQgdG8gZm9sbG93IG15IHByZWZlcnJlZCByb3V0ZSwgd2hpY2ggaXMgc2hvcnRlci4gSSdtIG5vdCBzYXRpc2ZpZWQgd2l0aCB0aGUgc2VydmljZS4KCjAgOiBMb3dlc3QKCjEgOiAKCjIgOiAKCjMgOiAKCjQgOiAKCjUgOiBIaWdoZXN0CgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIHRoZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLiBFLmcuLCAiIjEiIiBvciAiIjUiIiBieSBpdHNlbGYuCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJDaGVjayBhbGwgb2YgdGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhpcyB0aWNrZXQ6IFRoZSBkcml2ZXIgcmVmdXNlZCB0byBmb2xsb3cgbXkgcHJlZmVycmVkIHJvdXRlLCB3aGljaCBpcyBzaG9ydGVyLiBJJ20gbm90IHNhdGlzZmllZCB3aXRoIHRoZSBzZXJ2aWNlLgoKICAgIAowOiBzYWZldHkKICAgIAoxOiBjbGVhbmxpbmVzcwogICAgCjI6IGRyaXZlciBwZXJmb3JtYW5jZQogICAgCjM6IEdQUy9yb3V0ZQogICAgCjQ6IGxvc3QgaXRlbQogICAgCjU6IG90aGVyCiAgICAKCgoKCgoKUGxlYXNlIHJlc3BvbmQgb25seSB3aXRoIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIGNvZGUgb2YgdGhlIG9wdGlvbnMgdGhhdCBhcHBseSwgd2l0aCBzcXVhcmUgYnJhY2tldHMuIEUuZy4sIFswLCAxLCAzXQoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHlvdXIgY2hvaWNlIG9uIHRoZSBuZXh0IGxpbmUuIiwwLjAwMDgwMjUsMC4wMDA2MTUsMTI5OC43MDEyOTg3MDEyOTg2LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDQmVrZVRmN0hHWUdaQjZ4Z0ZWWnJyeVdUJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICIiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhhdCB0aGUgZHJpdmVyIGRpZCBub3QgZm9sbG93IHRoZSBjdXN0b21lcidzIHByZWZlcnJlZCByb3V0ZSwgd2hpY2ggdGhlIGN1c3RvbWVyIGJlbGlldmVzIGlzIHNob3J0ZXIsIGxlYWRpbmcgdG8gZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIHNlcnZpY2UuIEFzIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LCBJIHdvdWxkIGFkZHJlc3MgdGhlIGN1c3RvbWVyJ3MgY29uY2VybiBieSBhY2tub3dsZWRnaW5nIHRoZWlyIGZydXN0cmF0aW9uLCBleHBsYWluaW5nIGFueSBwb3NzaWJsZSByZWFzb25zIGZvciB0aGUgZHJpdmVyJ3MgZGVjaXNpb24gKHN1Y2ggYXMgdHJhZmZpYyBjb25kaXRpb25zIG9yIGNvbXBhbnkgcG9saWN5KSwgYW5kIG9mZmVyaW5nIGEgcmVzb2x1dGlvbiBvciBjb21wZW5zYXRpb24gaWYgYXBwcm9wcmlhdGUuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDc2LCAncHJvbXB0X3Rva2Vucyc6IDgxLCAndG90YWxfdG9rZW5zJzogMTU3LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxODE4LjE4MTgxODE4MTgxOCwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ1pQZmQwc2JuSjJvNW96Tmg1S292aVNpaicsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIk5vICBcblRoZSB0aWNrZXQgZG9lcyBub3QgbWVudGlvbiBhbnkgYWNjaWRlbnQgb3IgaW5qdXJ5LCBvbmx5IGRpc3NhdGlzZmFjdGlvbiB3aXRoIHRoZSBkcml2ZXIncyByb3V0ZSBjaG9pY2UuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDIwLCAncHJvbXB0X3Rva2Vucyc6IDE0MCwgJ3RvdGFsX3Rva2Vucyc6IDE2MCwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA5NjI1LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDQ2NxbnBPdDVrVUxkeG1SdHNESURtYlRQJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICcyICBcblRoaXMgaXNzdWUgaXMgaW1wb3J0YW50IGFzIGl0IHBlcnRhaW5zIHRvIGN1c3RvbWVyIHNhdGlzZmFjdGlvbiBhbmQgc2VydmljZSBxdWFsaXR5LCBidXQgaXQgaXMgbm90IGFuIHVyZ2VudCBzYWZldHkgb3Igb3BlcmF0aW9uYWwgaXNzdWUuIEFkZHJlc3NpbmcgaXQgd2lsbCBoZWxwIGltcHJvdmUgY3VzdG9tZXIgZXhwZXJpZW5jZS4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAzNiwgJ3Byb21wdF90b2tlbnMnOiAxNjQsICd0b3RhbF90b2tlbnMnOiAyMDAsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDEwMzguOTYxMDM4OTYxMDM4OSwxNjI2LjAxNjI2MDE2MjYwMTYsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENjd3ZhOTNLQXg2bXJiUjF0NGVQb3h1Z1MnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ05vXG5cblRoZSB0aWNrZXQgZG9lcyBub3QgZXhwbGljaXRseSBtZW50aW9uIGEgcmVxdWVzdCBmb3IgYSByZWZ1bmQuIFRoZSBjdXN0b21lciBpcyBleHByZXNzaW5nIGRpc3NhdGlzZmFjdGlvbiB3aXRoIHRoZSBzZXJ2aWNlLCBidXQgdGhleSBoYXZlIG5vdCBkaXJlY3RseSBhc2tlZCBmb3IgYSByZWZ1bmQuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMzMsICdwcm9tcHRfdG9rZW5zJzogMTE4LCAndG90YWxfdG9rZW5zJzogMTUxLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxMjQ2LjEwNTkxOTAwMzExNSwxNjAwLjAsMC4wMDA1NSwieydpZCc6ICdjaGF0Y21wbC1BZU9MRFdKTXpKTFZFZ1l5TDFoaDE2bnhCWjNnZCcsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnWzIsIDNdXG5cblRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoZSB0aWNrZXQgcmVsYXRlIHRvIGRyaXZlciBwZXJmb3JtYW5jZSAodGhlIGRyaXZlciByZWZ1c2VkIHRvIGZvbGxvdyB0aGUgcHJlZmVycmVkIHJvdXRlKSBhbmQgR1BTL3JvdXRlICh0aGUgbWVudGlvbiBvZiBhIHByZWZlcnJlZCByb3V0ZSBiZWluZyBzaG9ydGVyKS4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTEsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiA0MCwgJ3Byb21wdF90b2tlbnMnOiAxNjEsICd0b3RhbF90b2tlbnMnOiAyMDEsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDSkdHV2QyVDRFeEMyaHFhV1hrVDR1T1dPJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdWZXJ5IG5lZ2F0aXZlICBcblRoZSBjdXN0b21lciBleHByZXNzZXMgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIHNlcnZpY2UgYW5kIG1lbnRpb25zIHRoYXQgdGhlIGRyaXZlciByZWZ1c2VkIHRvIGFjY29tbW9kYXRlIHRoZWlyIHJlcXVlc3QsIGluZGljYXRpbmcgYSBzdHJvbmcgbmVnYXRpdmUgc2VudGltZW50LicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDI3LCAncHJvbXB0X3Rva2Vucyc6IDEzOCwgJ3RvdGFsX3Rva2Vucyc6IDE2NSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA3NzAwMDAwMDAwMDAwMDAxLDAuMDAwNjI1LDAsIklmIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHNhZmV0eSwgd2FzIHRoZXJlIGFuIGFjY2lkZW50IHdoZXJlIHNvbWVvbmUgd2FzIGh1cnQ/IFRpY2tldDoge3sgdGlja2V0IH19IiwiT24gYSBzY2FsZSBmcm9tIDAgdG8gNSwgd2hhdCBpcyB0aGUgcHJpb3JpdHkgbGV2ZWwgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19IixXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LERvZXMgdGhlIGN1c3RvbWVyIGFzayBmb3IgYSByZWZ1bmQgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LENoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDoge3sgdGlja2V0IH19LCJbJ3NhZmV0eScsICdjbGVhbmxpbmVzcycsICdkcml2ZXIgcGVyZm9ybWFuY2UnLCAnR1BTL3JvdXRlJywgJ2xvc3QgaXRlbScsICdvdGhlciddIiwiWydWZXJ5IHBvc2l0aXZlJywgJ1NvbWV3aGF0IHBvc2l0aXZlJywgJ05ldXRyYWwnLCAnU29tZXdoYXQgbmVnYXRpdmUnLCAnVmVyeSBuZWdhdGl2ZSddIiwiWydZZXMnLCAnTm8nLCAnTm90IGFwcGxpY2FibGUnXSIsIlsnTm8nLCAnWWVzJ10iLCJbMCwgMSwgMiwgMywgNCwgNV0iLCx5ZXNfbm8sbXVsdGlwbGVfY2hvaWNlLGNoZWNrYm94LGxpbmVhcl9zY2FsZSxtdWx0aXBsZV9jaG9pY2UsZnJlZV90ZXh0LCJUaGlzIGlzc3VlIGlzIGltcG9ydGFudCBhcyBpdCBwZXJ0YWlucyB0byBjdXN0b21lciBzYXRpc2ZhY3Rpb24gYW5kIHNlcnZpY2UgcXVhbGl0eSwgYnV0IGl0IGlzIG5vdCBhbiB1cmdlbnQgc2FmZXR5IG9yIG9wZXJhdGlvbmFsIGlzc3VlLiBBZGRyZXNzaW5nIGl0IHdpbGwgaGVscCBpbXByb3ZlIGN1c3RvbWVyIGV4cGVyaWVuY2UuIiwsIlRoZSBjdXN0b21lciBleHByZXNzZXMgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIHNlcnZpY2UgYW5kIG1lbnRpb25zIHRoYXQgdGhlIGRyaXZlciByZWZ1c2VkIHRvIGFjY29tbW9kYXRlIHRoZWlyIHJlcXVlc3QsIGluZGljYXRpbmcgYSBzdHJvbmcgbmVnYXRpdmUgc2VudGltZW50LiIsIlRoZSB0aWNrZXQgZG9lcyBub3QgbWVudGlvbiBhbnkgYWNjaWRlbnQgb3IgaW5qdXJ5LCBvbmx5IGRpc3NhdGlzZmFjdGlvbiB3aXRoIHRoZSBkcml2ZXIncyByb3V0ZSBjaG9pY2UuIiwiVGhlIHRpY2tldCBkb2VzIG5vdCBleHBsaWNpdGx5IG1lbnRpb24gYSByZXF1ZXN0IGZvciBhIHJlZnVuZC4gVGhlIGN1c3RvbWVyIGlzIGV4cHJlc3NpbmcgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIHNlcnZpY2UsIGJ1dCB0aGV5IGhhdmUgbm90IGRpcmVjdGx5IGFza2VkIGZvciBhIHJlZnVuZC4iLFRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoZSB0aWNrZXQgcmVsYXRlIHRvIGRyaXZlciBwZXJmb3JtYW5jZSAodGhlIGRyaXZlciByZWZ1c2VkIHRvIGZvbGxvdyB0aGUgcHJlZmVycmVkIHJvdXRlKSBhbmQgR1BTL3JvdXRlICh0aGUgbWVudGlvbiBvZiBhIHByZWZlcnJlZCByb3V0ZSBiZWluZyBzaG9ydGVyKS4sIlsyLCAzXQoKVGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhlIHRpY2tldCByZWxhdGUgdG8gZHJpdmVyIHBlcmZvcm1hbmNlICh0aGUgZHJpdmVyIHJlZnVzZWQgdG8gZm9sbG93IHRoZSBwcmVmZXJyZWQgcm91dGUpIGFuZCBHUFMvcm91dGUgKHRoZSBtZW50aW9uIG9mIGEgcHJlZmVycmVkIHJvdXRlIGJlaW5nIHNob3J0ZXIpLiIsIk5vCgpUaGUgdGlja2V0IGRvZXMgbm90IGV4cGxpY2l0bHkgbWVudGlvbiBhIHJlcXVlc3QgZm9yIGEgcmVmdW5kLiBUaGUgY3VzdG9tZXIgaXMgZXhwcmVzc2luZyBkaXNzYXRpc2ZhY3Rpb24gd2l0aCB0aGUgc2VydmljZSwgYnV0IHRoZXkgaGF2ZSBub3QgZGlyZWN0bHkgYXNrZWQgZm9yIGEgcmVmdW5kLiIsIlRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoYXQgdGhlIGRyaXZlciBkaWQgbm90IGZvbGxvdyB0aGUgY3VzdG9tZXIncyBwcmVmZXJyZWQgcm91dGUsIHdoaWNoIHRoZSBjdXN0b21lciBiZWxpZXZlcyBpcyBzaG9ydGVyLCBsZWFkaW5nIHRvIGRpc3NhdGlzZmFjdGlvbiB3aXRoIHRoZSBzZXJ2aWNlLiBBcyBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudCwgSSB3b3VsZCBhZGRyZXNzIHRoZSBjdXN0b21lcidzIGNvbmNlcm4gYnkgYWNrbm93bGVkZ2luZyB0aGVpciBmcnVzdHJhdGlvbiwgZXhwbGFpbmluZyBhbnkgcG9zc2libGUgcmVhc29ucyBmb3IgdGhlIGRyaXZlcidzIGRlY2lzaW9uIChzdWNoIGFzIHRyYWZmaWMgY29uZGl0aW9ucyBvciBjb21wYW55IHBvbGljeSksIGFuZCBvZmZlcmluZyBhIHJlc29sdXRpb24gb3IgY29tcGVuc2F0aW9uIGlmIGFwcHJvcHJpYXRlLiIsIk5vICAKVGhlIHRpY2tldCBkb2VzIG5vdCBtZW50aW9uIGFueSBhY2NpZGVudCBvciBpbmp1cnksIG9ubHkgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIGRyaXZlcidzIHJvdXRlIGNob2ljZS4iLCIyICAKVGhpcyBpc3N1ZSBpcyBpbXBvcnRhbnQgYXMgaXQgcGVydGFpbnMgdG8gY3VzdG9tZXIgc2F0aXNmYWN0aW9uIGFuZCBzZXJ2aWNlIHF1YWxpdHksIGJ1dCBpdCBpcyBub3QgYW4gdXJnZW50IHNhZmV0eSBvciBvcGVyYXRpb25hbCBpc3N1ZS4gQWRkcmVzc2luZyBpdCB3aWxsIGhlbHAgaW1wcm92ZSBjdXN0b21lciBleHBlcmllbmNlLiIsIlZlcnkgbmVnYXRpdmUgIApUaGUgY3VzdG9tZXIgZXhwcmVzc2VzIGRpc3NhdGlzZmFjdGlvbiB3aXRoIHRoZSBzZXJ2aWNlIGFuZCBtZW50aW9ucyB0aGF0IHRoZSBkcml2ZXIgcmVmdXNlZCB0byBhY2NvbW1vZGF0ZSB0aGVpciByZXF1ZXN0LCBpbmRpY2F0aW5nIGEgc3Ryb25nIG5lZ2F0aXZlIHNlbnRpbWVudC4iDQpOb3QgYXBwbGljYWJsZSwiQmFzZWQgb24gdGhlIGNvbnRlbnQgb2YgdGhlIHRpY2tldCwgaXQgYXBwZWFycyB0aGF0IHRoZXJlIGlzIG5vIGlzc3VlIGJlaW5nIHJlcG9ydGVkLiBJbnN0ZWFkLCB0aGUgdGlja2V0IGNvbnRhaW5zIHBvc2l0aXZlIGZlZWRiYWNrIHJlZ2FyZGluZyB0aGUgcXVpY2sgcmVzcG9uc2UgdG8gYSByaWRlIHJlcXVlc3QgYW5kIHRoZSBwcm9mZXNzaW9uYWxpc20gb2YgdGhlIGRyaXZlci4gVGhpcyBpcyBhIGNvbW1lbmRhdGlvbiByYXRoZXIgdGhhbiBhIGNvbXBsYWludCBvciBpc3N1ZSB0aGF0IG5lZWRzIHJlc29sdXRpb24uIiwwLE5vLCJbJ2RyaXZlciBwZXJmb3JtYW5jZScsICdvdGhlciddIixWZXJ5IHBvc2l0aXZlLEltcHJlc3NlZCB3aXRoIHRoZSBxdWljayByZXNwb25zZSB0byBteSByaWRlIHJlcXVlc3QgYW5kIHRoZSBkcml2ZXIncyBwcm9mZXNzaW9uYWxpc20uLEFnZW50XzExLFlvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiwxNSxZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LiwwLDAsMSwzLGdwdC00byxGYWxzZSwwLjUsMTAwMCwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCIKRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBJbXByZXNzZWQgd2l0aCB0aGUgcXVpY2sgcmVzcG9uc2UgdG8gbXkgcmlkZSByZXF1ZXN0IGFuZCB0aGUgZHJpdmVyJ3MgcHJvZmVzc2lvbmFsaXNtLgoKICAgIApObwogICAgClllcwogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KUGxlYXNlIHJlc3BvbmQgd2l0aCBqdXN0IHlvdXIgYW5zd2VyLiAKCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIHJlc3BvbnNlLiIsIgpXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDogSW1wcmVzc2VkIHdpdGggdGhlIHF1aWNrIHJlc3BvbnNlIHRvIG15IHJpZGUgcmVxdWVzdCBhbmQgdGhlIGRyaXZlcidzIHByb2Zlc3Npb25hbGlzbS4KCiAgICAKVmVyeSBwb3NpdGl2ZQogICAgClNvbWV3aGF0IHBvc2l0aXZlCiAgICAKTmV1dHJhbAogICAgClNvbWV3aGF0IG5lZ2F0aXZlCiAgICAKVmVyeSBuZWdhdGl2ZQogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLgoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCIKSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiBJbXByZXNzZWQgd2l0aCB0aGUgcXVpY2sgcmVzcG9uc2UgdG8gbXkgcmlkZSByZXF1ZXN0IGFuZCB0aGUgZHJpdmVyJ3MgcHJvZmVzc2lvbmFsaXNtLgoKICAgIApZZXMKICAgIApObwogICAgCk5vdCBhcHBsaWNhYmxlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogSW1wcmVzc2VkIHdpdGggdGhlIHF1aWNrIHJlc3BvbnNlIHRvIG15IHJpZGUgcmVxdWVzdCBhbmQgdGhlIGRyaXZlcidzIHByb2Zlc3Npb25hbGlzbS4sIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBJbXByZXNzZWQgd2l0aCB0aGUgcXVpY2sgcmVzcG9uc2UgdG8gbXkgcmlkZSByZXF1ZXN0IGFuZCB0aGUgZHJpdmVyJ3MgcHJvZmVzc2lvbmFsaXNtLgoKMCA6IExvd2VzdAoKMSA6IAoKMiA6IAoKMyA6IAoKNCA6IAoKNSA6IEhpZ2hlc3QKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggdGhlIGNvZGUgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuIEUuZy4sICIiMSIiIG9yICIiNSIiIGJ5IGl0c2VsZi4KCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIkNoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDogSW1wcmVzc2VkIHdpdGggdGhlIHF1aWNrIHJlc3BvbnNlIHRvIG15IHJpZGUgcmVxdWVzdCBhbmQgdGhlIGRyaXZlcidzIHByb2Zlc3Npb25hbGlzbS4KCiAgICAKMDogc2FmZXR5CiAgICAKMTogY2xlYW5saW5lc3MKICAgIAoyOiBkcml2ZXIgcGVyZm9ybWFuY2UKICAgIAozOiBHUFMvcm91dGUKICAgIAo0OiBsb3N0IGl0ZW0KICAgIAo1OiBvdGhlcgogICAgCgoKCgoKClBsZWFzZSByZXNwb25kIG9ubHkgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBjb2RlIG9mIHRoZSBvcHRpb25zIHRoYXQgYXBwbHksIHdpdGggc3F1YXJlIGJyYWNrZXRzLiBFLmcuLCBbMCwgMSwgM10KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIGNob2ljZSBvbiB0aGUgbmV4dCBsaW5lLiIsMC4wMDA4MSwwLjAwMDU4MjUsMTU2OC42Mjc0NTA5ODAzOTIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENMc2NYRkR2dG03SXlXMTJCQjI4Njd0SmUnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ0Jhc2VkIG9uIHRoZSBjb250ZW50IG9mIHRoZSB0aWNrZXQsIGl0IGFwcGVhcnMgdGhhdCB0aGVyZSBpcyBubyBpc3N1ZSBiZWluZyByZXBvcnRlZC4gSW5zdGVhZCwgdGhlIHRpY2tldCBjb250YWlucyBwb3NpdGl2ZSBmZWVkYmFjayByZWdhcmRpbmcgdGhlIHF1aWNrIHJlc3BvbnNlIHRvIGEgcmlkZSByZXF1ZXN0IGFuZCB0aGUgcHJvZmVzc2lvbmFsaXNtIG9mIHRoZSBkcml2ZXIuIFRoaXMgaXMgYSBjb21tZW5kYXRpb24gcmF0aGVyIHRoYW4gYSBjb21wbGFpbnQgb3IgaXNzdWUgdGhhdCBuZWVkcyByZXNvbHV0aW9uLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDU1LCAncHJvbXB0X3Rva2Vucyc6IDc2LCAndG90YWxfdG9rZW5zJzogMTMxLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxNjE5LjQzMzE5ODM4MDU2NjksInsnaWQnOiAnY2hhdGNtcGwtQWVPTENMVVc5bzZJR0kwSldUbkp4b0hXUE9RUzEnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogIiJOb3QgYXBwbGljYWJsZVxuXG5UaGUgdGlja2V0IGRvZXMgbm90IGluZGljYXRlIGFueSBzYWZldHkgaXNzdWUgb3IgYWNjaWRlbnQ7IGl0IHByYWlzZXMgdGhlIGRyaXZlcidzIHByb2Zlc3Npb25hbGlzbSBhbmQgdGhlIHF1aWNrIHJlc3BvbnNlIHRvIHRoZSByaWRlIHJlcXVlc3QuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDI4LCAncHJvbXB0X3Rva2Vucyc6IDEzNSwgJ3RvdGFsX3Rva2Vucyc6IDE2MywgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA3NCwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ3NlRDBzYW9rY0tYWDMzTWdJaER4YWwxQicsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnMCAgXG5UaGlzIHRpY2tldCByZWZsZWN0cyBwb3NpdGl2ZSBmZWVkYmFjayBhbmQgZG9lcyBub3QgaW5kaWNhdGUgYW4gaXNzdWUgcmVxdWlyaW5nIHJlc29sdXRpb24sIHNvIGl0IGhhcyB0aGUgbG93ZXN0IHByaW9yaXR5IGxldmVsLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDI0LCAncHJvbXB0X3Rva2Vucyc6IDE1OSwgJ3RvdGFsX3Rva2Vucyc6IDE4MywgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTM1MS4zNTEzNTEzNTEzNTE1LDE3MTYuNzM4MTk3NDI0ODkyNiwieydpZCc6ICdjaGF0Y21wbC1BZU9MQzcyR0FNRUtsRW1XQmF6MlhvTEk3R2FUeicsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIk5vXG5cblRoZSB0aWNrZXQgZXhwcmVzc2VzIHNhdGlzZmFjdGlvbiB3aXRoIHRoZSBzZXJ2aWNlLCBzcGVjaWZpY2FsbHkgbWVudGlvbmluZyB0aGUgcXVpY2sgcmVzcG9uc2UgYW5kIHRoZSBkcml2ZXIncyBwcm9mZXNzaW9uYWxpc20uIFRoZXJlIGlzIG5vIGluZGljYXRpb24gdGhhdCB0aGUgY3VzdG9tZXIgaXMgc2Vla2luZyBhIHJlZnVuZC4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwXzlmYWJhOWYwMzgnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMzIsICdwcm9tcHRfdG9rZW5zJzogMTEzLCAndG90YWxfdG9rZW5zJzogMTQ1LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxMjM0LjU2NzkwMTIzNDU2OCwxNjU5Ljc1MTAzNzM0NDM5ODQsMC4wMDA2MTc1LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xEaW12ZzRFRXh1SGtEMkpueUg1VDBldUF1JywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdbMiwgNV0gIFxuVGhlIHRpY2tldCBtZW50aW9ucyB0aGUgZHJpdmVyXCdzIHByb2Zlc3Npb25hbGlzbSwgd2hpY2ggcmVsYXRlcyB0byBkcml2ZXIgcGVyZm9ybWFuY2UuICIiT3RoZXIiIiBpcyBzZWxlY3RlZCBmb3IgdGhlIHF1aWNrIHJlc3BvbnNlIHRvIHRoZSByaWRlIHJlcXVlc3QsIGFzIGl0IGRvZXNuXCd0IGZpdCB0aGUgb3RoZXIgY2F0ZWdvcmllcy4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTEsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiA0MiwgJ3Byb21wdF90b2tlbnMnOiAxNTYsICd0b3RhbF90b2tlbnMnOiAxOTgsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDUlN1VUlLV3FOb29uNGM3aUhkRjE0TmRjJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdWZXJ5IHBvc2l0aXZlXG5cblRoZSB0aWNrZXQgZXhwcmVzc2VzIHNhdGlzZmFjdGlvbiB3aXRoIGJvdGggdGhlIHF1aWNrIHJlc3BvbnNlIGFuZCB0aGUgcHJvZmVzc2lvbmFsaXNtIG9mIHRoZSBkcml2ZXIsIGluZGljYXRpbmcgYSB2ZXJ5IHBvc2l0aXZlIHNlbnRpbWVudC4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyNSwgJ3Byb21wdF90b2tlbnMnOiAxMzMsICd0b3RhbF90b2tlbnMnOiAxNTgsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwNjM3NSwwLjAwMDYwMjUsMCwiSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLFdoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sV2hhdCBpcyB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiB7eyB0aWNrZXQgfX0sIlsnc2FmZXR5JywgJ2NsZWFubGluZXNzJywgJ2RyaXZlciBwZXJmb3JtYW5jZScsICdHUFMvcm91dGUnLCAnbG9zdCBpdGVtJywgJ290aGVyJ10iLCJbJ1ZlcnkgcG9zaXRpdmUnLCAnU29tZXdoYXQgcG9zaXRpdmUnLCAnTmV1dHJhbCcsICdTb21ld2hhdCBuZWdhdGl2ZScsICdWZXJ5IG5lZ2F0aXZlJ10iLCJbJ1llcycsICdObycsICdOb3QgYXBwbGljYWJsZSddIiwiWydObycsICdZZXMnXSIsIlswLCAxLCAyLCAzLCA0LCA1XSIsLHllc19ubyxtdWx0aXBsZV9jaG9pY2UsY2hlY2tib3gsbGluZWFyX3NjYWxlLG11bHRpcGxlX2Nob2ljZSxmcmVlX3RleHQsIlRoaXMgdGlja2V0IHJlZmxlY3RzIHBvc2l0aXZlIGZlZWRiYWNrIGFuZCBkb2VzIG5vdCBpbmRpY2F0ZSBhbiBpc3N1ZSByZXF1aXJpbmcgcmVzb2x1dGlvbiwgc28gaXQgaGFzIHRoZSBsb3dlc3QgcHJpb3JpdHkgbGV2ZWwuIiwsIlRoZSB0aWNrZXQgZXhwcmVzc2VzIHNhdGlzZmFjdGlvbiB3aXRoIGJvdGggdGhlIHF1aWNrIHJlc3BvbnNlIGFuZCB0aGUgcHJvZmVzc2lvbmFsaXNtIG9mIHRoZSBkcml2ZXIsIGluZGljYXRpbmcgYSB2ZXJ5IHBvc2l0aXZlIHNlbnRpbWVudC4iLFRoZSB0aWNrZXQgZG9lcyBub3QgaW5kaWNhdGUgYW55IHNhZmV0eSBpc3N1ZSBvciBhY2NpZGVudDsgaXQgcHJhaXNlcyB0aGUgZHJpdmVyJ3MgcHJvZmVzc2lvbmFsaXNtIGFuZCB0aGUgcXVpY2sgcmVzcG9uc2UgdG8gdGhlIHJpZGUgcmVxdWVzdC4sIlRoZSB0aWNrZXQgZXhwcmVzc2VzIHNhdGlzZmFjdGlvbiB3aXRoIHRoZSBzZXJ2aWNlLCBzcGVjaWZpY2FsbHkgbWVudGlvbmluZyB0aGUgcXVpY2sgcmVzcG9uc2UgYW5kIHRoZSBkcml2ZXIncyBwcm9mZXNzaW9uYWxpc20uIFRoZXJlIGlzIG5vIGluZGljYXRpb24gdGhhdCB0aGUgY3VzdG9tZXIgaXMgc2Vla2luZyBhIHJlZnVuZC4iLCJUaGUgdGlja2V0IG1lbnRpb25zIHRoZSBkcml2ZXIncyBwcm9mZXNzaW9uYWxpc20sIHdoaWNoIHJlbGF0ZXMgdG8gZHJpdmVyIHBlcmZvcm1hbmNlLiAiIk90aGVyIiIgaXMgc2VsZWN0ZWQgZm9yIHRoZSBxdWljayByZXNwb25zZSB0byB0aGUgcmlkZSByZXF1ZXN0LCBhcyBpdCBkb2Vzbid0IGZpdCB0aGUgb3RoZXIgY2F0ZWdvcmllcy4iLCJbMiwgNV0gIApUaGUgdGlja2V0IG1lbnRpb25zIHRoZSBkcml2ZXIncyBwcm9mZXNzaW9uYWxpc20sIHdoaWNoIHJlbGF0ZXMgdG8gZHJpdmVyIHBlcmZvcm1hbmNlLiAiIk90aGVyIiIgaXMgc2VsZWN0ZWQgZm9yIHRoZSBxdWljayByZXNwb25zZSB0byB0aGUgcmlkZSByZXF1ZXN0LCBhcyBpdCBkb2Vzbid0IGZpdCB0aGUgb3RoZXIgY2F0ZWdvcmllcy4iLCJObwoKVGhlIHRpY2tldCBleHByZXNzZXMgc2F0aXNmYWN0aW9uIHdpdGggdGhlIHNlcnZpY2UsIHNwZWNpZmljYWxseSBtZW50aW9uaW5nIHRoZSBxdWljayByZXNwb25zZSBhbmQgdGhlIGRyaXZlcidzIHByb2Zlc3Npb25hbGlzbS4gVGhlcmUgaXMgbm8gaW5kaWNhdGlvbiB0aGF0IHRoZSBjdXN0b21lciBpcyBzZWVraW5nIGEgcmVmdW5kLiIsIkJhc2VkIG9uIHRoZSBjb250ZW50IG9mIHRoZSB0aWNrZXQsIGl0IGFwcGVhcnMgdGhhdCB0aGVyZSBpcyBubyBpc3N1ZSBiZWluZyByZXBvcnRlZC4gSW5zdGVhZCwgdGhlIHRpY2tldCBjb250YWlucyBwb3NpdGl2ZSBmZWVkYmFjayByZWdhcmRpbmcgdGhlIHF1aWNrIHJlc3BvbnNlIHRvIGEgcmlkZSByZXF1ZXN0IGFuZCB0aGUgcHJvZmVzc2lvbmFsaXNtIG9mIHRoZSBkcml2ZXIuIFRoaXMgaXMgYSBjb21tZW5kYXRpb24gcmF0aGVyIHRoYW4gYSBjb21wbGFpbnQgb3IgaXNzdWUgdGhhdCBuZWVkcyByZXNvbHV0aW9uLiIsIk5vdCBhcHBsaWNhYmxlCgpUaGUgdGlja2V0IGRvZXMgbm90IGluZGljYXRlIGFueSBzYWZldHkgaXNzdWUgb3IgYWNjaWRlbnQ7IGl0IHByYWlzZXMgdGhlIGRyaXZlcidzIHByb2Zlc3Npb25hbGlzbSBhbmQgdGhlIHF1aWNrIHJlc3BvbnNlIHRvIHRoZSByaWRlIHJlcXVlc3QuIiwiMCAgClRoaXMgdGlja2V0IHJlZmxlY3RzIHBvc2l0aXZlIGZlZWRiYWNrIGFuZCBkb2VzIG5vdCBpbmRpY2F0ZSBhbiBpc3N1ZSByZXF1aXJpbmcgcmVzb2x1dGlvbiwgc28gaXQgaGFzIHRoZSBsb3dlc3QgcHJpb3JpdHkgbGV2ZWwuIiwiVmVyeSBwb3NpdGl2ZQoKVGhlIHRpY2tldCBleHByZXNzZXMgc2F0aXNmYWN0aW9uIHdpdGggYm90aCB0aGUgcXVpY2sgcmVzcG9uc2UgYW5kIHRoZSBwcm9mZXNzaW9uYWxpc20gb2YgdGhlIGRyaXZlciwgaW5kaWNhdGluZyBhIHZlcnkgcG9zaXRpdmUgc2VudGltZW50LiINCk5vdCBhcHBsaWNhYmxlLFRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIGFuIGluY29ycmVjdCBjaGFyZ2UgZm9yIGEgcmlkZSB0aGF0IHRoZSBjdXN0b21lciBjbGFpbXMgdGhleSBkaWQgbm90IHRha2UuIFRoZSBjdXN0b21lciBpcyByZXF1ZXN0aW5nIGEgcmVmdW5kIGZvciB0aGlzIGNoYXJnZS4sMyxZZXMsWydvdGhlciddLFNvbWV3aGF0IG5lZ2F0aXZlLEkgd2FzIGNoYXJnZWQgZm9yIGEgcmlkZSBJIG5ldmVyIHRvb2suIFBsZWFzZSByZWZ1bmQgbWUgYXMgc29vbiBhcyBwb3NzaWJsZS4sQWdlbnRfMTIsWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuLDE1LFlvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuLDAsMCwxLDMsZ3B0LTRvLEZhbHNlLDAuNSwxMDAwLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIgpEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IEkgd2FzIGNoYXJnZWQgZm9yIGEgcmlkZSBJIG5ldmVyIHRvb2suIFBsZWFzZSByZWZ1bmQgbWUgYXMgc29vbiBhcyBwb3NzaWJsZS4KCiAgICAKTm8KICAgIApZZXMKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuClBsZWFzZSByZXNwb25kIHdpdGgganVzdCB5b3VyIGFuc3dlci4gCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgeW91ciByZXNwb25zZS4iLCIKV2hhdCBpcyB0aGUgc2VudGltZW50IG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IEkgd2FzIGNoYXJnZWQgZm9yIGEgcmlkZSBJIG5ldmVyIHRvb2suIFBsZWFzZSByZWZ1bmQgbWUgYXMgc29vbiBhcyBwb3NzaWJsZS4KCiAgICAKVmVyeSBwb3NpdGl2ZQogICAgClNvbWV3aGF0IHBvc2l0aXZlCiAgICAKTmV1dHJhbAogICAgClNvbWV3aGF0IG5lZ2F0aXZlCiAgICAKVmVyeSBuZWdhdGl2ZQogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLgoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCIKSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiBJIHdhcyBjaGFyZ2VkIGZvciBhIHJpZGUgSSBuZXZlciB0b29rLiBQbGVhc2UgcmVmdW5kIG1lIGFzIHNvb24gYXMgcG9zc2libGUuCgogICAgClllcwogICAgCk5vCiAgICAKTm90IGFwcGxpY2FibGUKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsV2hhdCBpcyB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBJIHdhcyBjaGFyZ2VkIGZvciBhIHJpZGUgSSBuZXZlciB0b29rLiBQbGVhc2UgcmVmdW5kIG1lIGFzIHNvb24gYXMgcG9zc2libGUuLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiT24gYSBzY2FsZSBmcm9tIDAgdG8gNSwgd2hhdCBpcyB0aGUgcHJpb3JpdHkgbGV2ZWwgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDogSSB3YXMgY2hhcmdlZCBmb3IgYSByaWRlIEkgbmV2ZXIgdG9vay4gUGxlYXNlIHJlZnVuZCBtZSBhcyBzb29uIGFzIHBvc3NpYmxlLgoKMCA6IExvd2VzdAoKMSA6IAoKMiA6IAoKMyA6IAoKNCA6IAoKNSA6IEhpZ2hlc3QKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggdGhlIGNvZGUgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuIEUuZy4sICIiMSIiIG9yICIiNSIiIGJ5IGl0c2VsZi4KCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIkNoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDogSSB3YXMgY2hhcmdlZCBmb3IgYSByaWRlIEkgbmV2ZXIgdG9vay4gUGxlYXNlIHJlZnVuZCBtZSBhcyBzb29uIGFzIHBvc3NpYmxlLgoKICAgIAowOiBzYWZldHkKICAgIAoxOiBjbGVhbmxpbmVzcwogICAgCjI6IGRyaXZlciBwZXJmb3JtYW5jZQogICAgCjM6IEdQUy9yb3V0ZQogICAgCjQ6IGxvc3QgaXRlbQogICAgCjU6IG90aGVyCiAgICAKCgoKCgoKUGxlYXNlIHJlc3BvbmQgb25seSB3aXRoIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIGNvZGUgb2YgdGhlIG9wdGlvbnMgdGhhdCBhcHBseSwgd2l0aCBzcXVhcmUgYnJhY2tldHMuIEUuZy4sIFswLCAxLCAzXQoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHlvdXIgY2hvaWNlIG9uIHRoZSBuZXh0IGxpbmUuIiwwLjAwMDc0NzUsMC4wMDA1NjAwMDAwMDAwMDAwMDAxLDEyNDIuMjM2MDI0ODQ0NzIwNSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQzdKRGJQYUZqcVNiMG5kNVVhTFFoV1p4dScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgYW4gaW5jb3JyZWN0IGNoYXJnZSBmb3IgYSByaWRlIHRoYXQgdGhlIGN1c3RvbWVyIGNsYWltcyB0aGV5IGRpZCBub3QgdGFrZS4gVGhlIGN1c3RvbWVyIGlzIHJlcXVlc3RpbmcgYSByZWZ1bmQgZm9yIHRoaXMgY2hhcmdlLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDMyLCAncHJvbXB0X3Rva2Vucyc6IDc5LCAndG90YWxfdG9rZW5zJzogMTExLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxOTgwLjE5ODAxOTgwMTk4LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDdHlDa1JSRnVOZzlQcGVEV09VMzhXTjFyJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdOb3QgYXBwbGljYWJsZVxuXG5UaGUgdGlja2V0IGlzIGFib3V0IGEgYmlsbGluZyBpc3N1ZSwgbm90IGEgc2FmZXR5IGNvbmNlcm4uJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMTYsICdwcm9tcHRfdG9rZW5zJzogMTM4LCAndG90YWxfdG9rZW5zJzogMTU0LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwwLjAwMDUxNzUwMDAwMDAwMDAwMDEsInsnaWQnOiAnY2hhdGNtcGwtQWVPTEMxMmpaa01zeG40UTlSbGg3cnFZT0tLbDgnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJzMgIFxuVGhpcyBzaXR1YXRpb24gaW52b2x2ZXMgYSBmaW5hbmNpYWwgZGlzY3JlcGFuY3ksIHdoaWNoIGlzIGltcG9ydGFudCB0byByZXNvbHZlIHByb21wdGx5IHRvIG1haW50YWluIGN1c3RvbWVyIHRydXN0IGFuZCBzYXRpc2ZhY3Rpb24sIGJ1dCBpdCBkb2VzIG5vdCBpbnZvbHZlIGltbWVkaWF0ZSBzYWZldHkgb3Igc2VjdXJpdHkgY29uY2VybnMsIHdoaWNoIHdvdWxkIHdhcnJhbnQgYSBoaWdoZXIgcHJpb3JpdHkuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2EzNGIyNzI3ZDYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogNDAsICdwcm9tcHRfdG9rZW5zJzogMTYyLCAndG90YWxfdG9rZW5zJzogMjAyLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxOTMyLjM2NzE0OTc1ODQ1NCwxNzg1LjcxNDI4NTcxNDI4NTYsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENhdXJFMkFNSWxVQlpRdTNwRG81eWdlQ0gnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ1llc1xuXG5UaGUgY3VzdG9tZXIgZXhwbGljaXRseSByZXF1ZXN0cyBhIHJlZnVuZCBieSBzdGF0aW5nLCAiIlBsZWFzZSByZWZ1bmQgbWUgYXMgc29vbiBhcyBwb3NzaWJsZS4iIicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDIwLCAncHJvbXB0X3Rva2Vucyc6IDExNiwgJ3RvdGFsX3Rva2Vucyc6IDEzNiwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTMzNy43OTI2NDIxNDA0NjgyLDIwNDAuODE2MzI2NTMwNjEyMywwLjAwMDUwNSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ0dxSjJUdnFnbXZ1THRmVVpsZHBDalh3ZycsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnWzVdICBcblRoZSBpc3N1ZSBtZW50aW9uZWQgaW4gdGhlIHRpY2tldCBpcyByZWxhdGVkIHRvIGEgY2hhcmdlIGZvciBhIHJpZGUgdGhhdCB3YXMgbm90IHRha2VuLCB3aGljaCBkb2VzblwndCBmaXQgaW50byB0aGUgcHJlZGVmaW5lZCBjYXRlZ29yaWVzIGV4Y2VwdCBmb3IgIiJvdGhlci4iIicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDM1LCAncHJvbXB0X3Rva2Vucyc6IDE1OSwgJ3RvdGFsX3Rva2Vucyc6IDE5NCwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENuekVIZ3ViZHNpYjRYb1hqVEVzWnNRSnAnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ1NvbWV3aGF0IG5lZ2F0aXZlXG5cblRoZSB0aWNrZXQgZXhwcmVzc2VzIGRpc3NhdGlzZmFjdGlvbiBhbmQgdXJnZW5jeSBkdWUgdG8gYW4gaW5jb3JyZWN0IGNoYXJnZSwgaW5kaWNhdGluZyBhIHNvbWV3aGF0IG5lZ2F0aXZlIHNlbnRpbWVudC4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyMiwgJ3Byb21wdF90b2tlbnMnOiAxMzYsICd0b3RhbF90b2tlbnMnOiAxNTgsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwODA0OTk5OTk5OTk5OTk5OSwwLjAwMDQ5LDAsIklmIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHNhZmV0eSwgd2FzIHRoZXJlIGFuIGFjY2lkZW50IHdoZXJlIHNvbWVvbmUgd2FzIGh1cnQ/IFRpY2tldDoge3sgdGlja2V0IH19IiwiT24gYSBzY2FsZSBmcm9tIDAgdG8gNSwgd2hhdCBpcyB0aGUgcHJpb3JpdHkgbGV2ZWwgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19IixXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LERvZXMgdGhlIGN1c3RvbWVyIGFzayBmb3IgYSByZWZ1bmQgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LENoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDoge3sgdGlja2V0IH19LCJbJ3NhZmV0eScsICdjbGVhbmxpbmVzcycsICdkcml2ZXIgcGVyZm9ybWFuY2UnLCAnR1BTL3JvdXRlJywgJ2xvc3QgaXRlbScsICdvdGhlciddIiwiWydWZXJ5IHBvc2l0aXZlJywgJ1NvbWV3aGF0IHBvc2l0aXZlJywgJ05ldXRyYWwnLCAnU29tZXdoYXQgbmVnYXRpdmUnLCAnVmVyeSBuZWdhdGl2ZSddIiwiWydZZXMnLCAnTm8nLCAnTm90IGFwcGxpY2FibGUnXSIsIlsnTm8nLCAnWWVzJ10iLCJbMCwgMSwgMiwgMywgNCwgNV0iLCx5ZXNfbm8sbXVsdGlwbGVfY2hvaWNlLGNoZWNrYm94LGxpbmVhcl9zY2FsZSxtdWx0aXBsZV9jaG9pY2UsZnJlZV90ZXh0LCJUaGlzIHNpdHVhdGlvbiBpbnZvbHZlcyBhIGZpbmFuY2lhbCBkaXNjcmVwYW5jeSwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlc29sdmUgcHJvbXB0bHkgdG8gbWFpbnRhaW4gY3VzdG9tZXIgdHJ1c3QgYW5kIHNhdGlzZmFjdGlvbiwgYnV0IGl0IGRvZXMgbm90IGludm9sdmUgaW1tZWRpYXRlIHNhZmV0eSBvciBzZWN1cml0eSBjb25jZXJucywgd2hpY2ggd291bGQgd2FycmFudCBhIGhpZ2hlciBwcmlvcml0eS4iLCwiVGhlIHRpY2tldCBleHByZXNzZXMgZGlzc2F0aXNmYWN0aW9uIGFuZCB1cmdlbmN5IGR1ZSB0byBhbiBpbmNvcnJlY3QgY2hhcmdlLCBpbmRpY2F0aW5nIGEgc29tZXdoYXQgbmVnYXRpdmUgc2VudGltZW50LiIsIlRoZSB0aWNrZXQgaXMgYWJvdXQgYSBiaWxsaW5nIGlzc3VlLCBub3QgYSBzYWZldHkgY29uY2Vybi4iLCJUaGUgY3VzdG9tZXIgZXhwbGljaXRseSByZXF1ZXN0cyBhIHJlZnVuZCBieSBzdGF0aW5nLCAiIlBsZWFzZSByZWZ1bmQgbWUgYXMgc29vbiBhcyBwb3NzaWJsZS4iIiIsIlRoZSBpc3N1ZSBtZW50aW9uZWQgaW4gdGhlIHRpY2tldCBpcyByZWxhdGVkIHRvIGEgY2hhcmdlIGZvciBhIHJpZGUgdGhhdCB3YXMgbm90IHRha2VuLCB3aGljaCBkb2Vzbid0IGZpdCBpbnRvIHRoZSBwcmVkZWZpbmVkIGNhdGVnb3JpZXMgZXhjZXB0IGZvciAiIm90aGVyLiIiIiwiWzVdICAKVGhlIGlzc3VlIG1lbnRpb25lZCBpbiB0aGUgdGlja2V0IGlzIHJlbGF0ZWQgdG8gYSBjaGFyZ2UgZm9yIGEgcmlkZSB0aGF0IHdhcyBub3QgdGFrZW4sIHdoaWNoIGRvZXNuJ3QgZml0IGludG8gdGhlIHByZWRlZmluZWQgY2F0ZWdvcmllcyBleGNlcHQgZm9yICIib3RoZXIuIiIiLCJZZXMKClRoZSBjdXN0b21lciBleHBsaWNpdGx5IHJlcXVlc3RzIGEgcmVmdW5kIGJ5IHN0YXRpbmcsICIiUGxlYXNlIHJlZnVuZCBtZSBhcyBzb29uIGFzIHBvc3NpYmxlLiIiIixUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBhbiBpbmNvcnJlY3QgY2hhcmdlIGZvciBhIHJpZGUgdGhhdCB0aGUgY3VzdG9tZXIgY2xhaW1zIHRoZXkgZGlkIG5vdCB0YWtlLiBUaGUgY3VzdG9tZXIgaXMgcmVxdWVzdGluZyBhIHJlZnVuZCBmb3IgdGhpcyBjaGFyZ2UuLCJOb3QgYXBwbGljYWJsZQoKVGhlIHRpY2tldCBpcyBhYm91dCBhIGJpbGxpbmcgaXNzdWUsIG5vdCBhIHNhZmV0eSBjb25jZXJuLiIsIjMgIApUaGlzIHNpdHVhdGlvbiBpbnZvbHZlcyBhIGZpbmFuY2lhbCBkaXNjcmVwYW5jeSwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIHJlc29sdmUgcHJvbXB0bHkgdG8gbWFpbnRhaW4gY3VzdG9tZXIgdHJ1c3QgYW5kIHNhdGlzZmFjdGlvbiwgYnV0IGl0IGRvZXMgbm90IGludm9sdmUgaW1tZWRpYXRlIHNhZmV0eSBvciBzZWN1cml0eSBjb25jZXJucywgd2hpY2ggd291bGQgd2FycmFudCBhIGhpZ2hlciBwcmlvcml0eS4iLCJTb21ld2hhdCBuZWdhdGl2ZQoKVGhlIHRpY2tldCBleHByZXNzZXMgZGlzc2F0aXNmYWN0aW9uIGFuZCB1cmdlbmN5IGR1ZSB0byBhbiBpbmNvcnJlY3QgY2hhcmdlLCBpbmRpY2F0aW5nIGEgc29tZXdoYXQgbmVnYXRpdmUgc2VudGltZW50LiINCk5vdCBhcHBsaWNhYmxlLFRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoYXQgdGhlIGN1c3RvbWVyIGlzIGV4cGVyaWVuY2luZyBkaWZmaWN1bHR5IHdpdGggYSBwcm9tbyBjb2RlIHRoYXQgZGlkIG5vdCB3b3JrIGFzIGV4cGVjdGVkLiBUaGUgY3VzdG9tZXIgaXMgc2Vla2luZyBhc3Npc3RhbmNlIHRvIHJlc29sdmUgdGhpcyBpc3N1ZS4sMixObyxbJ290aGVyJ10sU29tZXdoYXQgbmVnYXRpdmUsVGhlIHByb21vIGNvZGUgSSB0cmllZCB0byB1c2UgZGlkbid0IHdvcmsuIENhbiB5b3UgYXNzaXN0IHdpdGggdGhpcz8sQWdlbnRfMTMsWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuLDE1LFlvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuLDAsMCwxLDMsZ3B0LTRvLEZhbHNlLDAuNSwxMDAwLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIgpEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IFRoZSBwcm9tbyBjb2RlIEkgdHJpZWQgdG8gdXNlIGRpZG4ndCB3b3JrLiBDYW4geW91IGFzc2lzdCB3aXRoIHRoaXM/CgogICAgCk5vCiAgICAKWWVzCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgpQbGVhc2UgcmVzcG9uZCB3aXRoIGp1c3QgeW91ciBhbnN3ZXIuIAoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHlvdXIgcmVzcG9uc2UuIiwiCldoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBUaGUgcHJvbW8gY29kZSBJIHRyaWVkIHRvIHVzZSBkaWRuJ3Qgd29yay4gQ2FuIHlvdSBhc3Npc3Qgd2l0aCB0aGlzPwoKICAgIApWZXJ5IHBvc2l0aXZlCiAgICAKU29tZXdoYXQgcG9zaXRpdmUKICAgIApOZXV0cmFsCiAgICAKU29tZXdoYXQgbmVnYXRpdmUKICAgIApWZXJ5IG5lZ2F0aXZlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIgpJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IFRoZSBwcm9tbyBjb2RlIEkgdHJpZWQgdG8gdXNlIGRpZG4ndCB3b3JrLiBDYW4geW91IGFzc2lzdCB3aXRoIHRoaXM/CgogICAgClllcwogICAgCk5vCiAgICAKTm90IGFwcGxpY2FibGUKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsV2hhdCBpcyB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBUaGUgcHJvbW8gY29kZSBJIHRyaWVkIHRvIHVzZSBkaWRuJ3Qgd29yay4gQ2FuIHlvdSBhc3Npc3Qgd2l0aCB0aGlzPywiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IFRoZSBwcm9tbyBjb2RlIEkgdHJpZWQgdG8gdXNlIGRpZG4ndCB3b3JrLiBDYW4geW91IGFzc2lzdCB3aXRoIHRoaXM/CgowIDogTG93ZXN0CgoxIDogCgoyIDogCgozIDogCgo0IDogCgo1IDogSGlnaGVzdAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCB0aGUgY29kZSBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4gRS5nLiwgIiIxIiIgb3IgIiI1IiIgYnkgaXRzZWxmLgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiBUaGUgcHJvbW8gY29kZSBJIHRyaWVkIHRvIHVzZSBkaWRuJ3Qgd29yay4gQ2FuIHlvdSBhc3Npc3Qgd2l0aCB0aGlzPwoKICAgIAowOiBzYWZldHkKICAgIAoxOiBjbGVhbmxpbmVzcwogICAgCjI6IGRyaXZlciBwZXJmb3JtYW5jZQogICAgCjM6IEdQUy9yb3V0ZQogICAgCjQ6IGxvc3QgaXRlbQogICAgCjU6IG90aGVyCiAgICAKCgoKCgoKUGxlYXNlIHJlc3BvbmQgb25seSB3aXRoIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIGNvZGUgb2YgdGhlIG9wdGlvbnMgdGhhdCBhcHBseSwgd2l0aCBzcXVhcmUgYnJhY2tldHMuIEUuZy4sIFswLCAxLCAzXQoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHlvdXIgY2hvaWNlIG9uIHRoZSBuZXh0IGxpbmUuIiwwLjAwMDY3MjQ5OTk5OTk5OTk5OTksMC4wMDA2ODUwMDAwMDAwMDAwMDAxLDEyODIuMDUxMjgyMDUxMjgyLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xEaGZWQzUxU0VWWThQT0JhR3Brdmd3UkozJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyB0aGF0IHRoZSBjdXN0b21lciBpcyBleHBlcmllbmNpbmcgZGlmZmljdWx0eSB3aXRoIGEgcHJvbW8gY29kZSB0aGF0IGRpZCBub3Qgd29yayBhcyBleHBlY3RlZC4gVGhlIGN1c3RvbWVyIGlzIHNlZWtpbmcgYXNzaXN0YW5jZSB0byByZXNvbHZlIHRoaXMgaXNzdWUuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUxLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMzQsICdwcm9tcHRfdG9rZW5zJzogNzcsICd0b3RhbF90b2tlbnMnOiAxMTEsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE3ODUuNzE0Mjg1NzE0Mjg1NiwieydpZCc6ICdjaGF0Y21wbC1BZU9MRGVhV3NtbnpvdFdoVzFFQUd5YkxNWGdwTicsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIk5vdCBhcHBsaWNhYmxlICBcblRoZSB0aWNrZXQgaXMgcmVsYXRlZCB0byBhIHByb21vIGNvZGUgaXNzdWUsIHdoaWNoIGRvZXNuJ3QgcGVydGFpbiB0byBzYWZldHkgb3IgYWNjaWRlbnRzLiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTEsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyMiwgJ3Byb21wdF90b2tlbnMnOiAxMzYsICd0b3RhbF90b2tlbnMnOiAxNTgsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwNTMyNSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ09ZQnVZMXBTMkVyYmg2RWppTHhYcUpIZycsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIjIgIFxuVGhpcyBpc3N1ZSBhZmZlY3RzIHRoZSBjdXN0b21lcidzIGFiaWxpdHkgdG8gY29tcGxldGUgYSBwdXJjaGFzZSwgYnV0IGl0IGlzIG5vdCBhIHN5c3RlbS13aWRlIG91dGFnZSBvciBhIGNyaXRpY2FsIGZhaWx1cmUuIEl0IGlzIGltcG9ydGFudCB0byByZXNvbHZlIGl0IHByb21wdGx5IHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDM4LCAncHJvbXB0X3Rva2Vucyc6IDE2MCwgJ3RvdGFsX3Rva2Vucyc6IDE5OCwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTg3Ny45MzQyNzIzMDA0Njk1LDE0NTkuODU0MDE0NTk4NTQsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENDaG5DNUptcTBxam0zV2M0V09mWUwzWlYnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ05vXG5cblRoZSB0aWNrZXQgZG9lcyBub3QgbWVudGlvbiBhIHJlcXVlc3QgZm9yIGEgcmVmdW5kOyBpdCBzaW1wbHkgYXNrcyBmb3IgYXNzaXN0YW5jZSB3aXRoIGEgcHJvbW8gY29kZSBpc3N1ZS4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyNCwgJ3Byb21wdF90b2tlbnMnOiAxMTQsICd0b3RhbF90b2tlbnMnOiAxMzgsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE0ODYuOTg4ODQ3NTgzNjQzMywxOTA0Ljc2MTkwNDc2MTkwNDgsMC4wMDA1NjAwMDAwMDAwMDAwMDAxLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDUElFTTJTc2dBWDJ4UnA0YWwzbzRmNVE0JywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdbNV0gIFxuVGhlIGlzc3VlIG1lbnRpb25lZCBpbiB0aGUgdGlja2V0IGlzIHJlbGF0ZWQgdG8gYSBwcm9tbyBjb2RlIG5vdCB3b3JraW5nLCB3aGljaCBmYWxscyB1bmRlciB0aGUgIiJvdGhlciIiIGNhdGVnb3J5LicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDI4LCAncHJvbXB0X3Rva2Vucyc6IDE1NywgJ3RvdGFsX3Rva2Vucyc6IDE4NSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENISWJaaW5McElRTVNGS2VxUFk1cVpKZ20nLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ1NvbWV3aGF0IG5lZ2F0aXZlXG5cblRoZSBzZW50aW1lbnQgaXMgIiJzb21ld2hhdCBuZWdhdGl2ZSIiIGJlY2F1c2UgdGhlIGN1c3RvbWVyIGlzIGV4cHJlc3NpbmcgZGlzc2F0aXNmYWN0aW9uIGR1ZSB0byB0aGUgcHJvbW8gY29kZSBub3Qgd29ya2luZywgYnV0IHRoZXkgYXJlIHN0aWxsIHBvbGl0ZWx5IGFza2luZyBmb3IgYXNzaXN0YW5jZS4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAzNSwgJ3Byb21wdF90b2tlbnMnOiAxMzQsICd0b3RhbF90b2tlbnMnOiAxNjksICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwNzgwMDAwMDAwMDAwMDAwMSwwLjAwMDUyNSwwLCJJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSIsV2hhdCBpcyB0aGUgc2VudGltZW50IG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxXaGF0IGlzIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxDaGVjayBhbGwgb2YgdGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhpcyB0aWNrZXQ6IHt7IHRpY2tldCB9fSwiWydzYWZldHknLCAnY2xlYW5saW5lc3MnLCAnZHJpdmVyIHBlcmZvcm1hbmNlJywgJ0dQUy9yb3V0ZScsICdsb3N0IGl0ZW0nLCAnb3RoZXInXSIsIlsnVmVyeSBwb3NpdGl2ZScsICdTb21ld2hhdCBwb3NpdGl2ZScsICdOZXV0cmFsJywgJ1NvbWV3aGF0IG5lZ2F0aXZlJywgJ1ZlcnkgbmVnYXRpdmUnXSIsIlsnWWVzJywgJ05vJywgJ05vdCBhcHBsaWNhYmxlJ10iLCJbJ05vJywgJ1llcyddIiwiWzAsIDEsIDIsIDMsIDQsIDVdIiwseWVzX25vLG11bHRpcGxlX2Nob2ljZSxjaGVja2JveCxsaW5lYXJfc2NhbGUsbXVsdGlwbGVfY2hvaWNlLGZyZWVfdGV4dCwiVGhpcyBpc3N1ZSBhZmZlY3RzIHRoZSBjdXN0b21lcidzIGFiaWxpdHkgdG8gY29tcGxldGUgYSBwdXJjaGFzZSwgYnV0IGl0IGlzIG5vdCBhIHN5c3RlbS13aWRlIG91dGFnZSBvciBhIGNyaXRpY2FsIGZhaWx1cmUuIEl0IGlzIGltcG9ydGFudCB0byByZXNvbHZlIGl0IHByb21wdGx5IHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24uIiwsIlRoZSBzZW50aW1lbnQgaXMgIiJzb21ld2hhdCBuZWdhdGl2ZSIiIGJlY2F1c2UgdGhlIGN1c3RvbWVyIGlzIGV4cHJlc3NpbmcgZGlzc2F0aXNmYWN0aW9uIGR1ZSB0byB0aGUgcHJvbW8gY29kZSBub3Qgd29ya2luZywgYnV0IHRoZXkgYXJlIHN0aWxsIHBvbGl0ZWx5IGFza2luZyBmb3IgYXNzaXN0YW5jZS4iLCJUaGUgdGlja2V0IGlzIHJlbGF0ZWQgdG8gYSBwcm9tbyBjb2RlIGlzc3VlLCB3aGljaCBkb2Vzbid0IHBlcnRhaW4gdG8gc2FmZXR5IG9yIGFjY2lkZW50cy4iLFRoZSB0aWNrZXQgZG9lcyBub3QgbWVudGlvbiBhIHJlcXVlc3QgZm9yIGEgcmVmdW5kOyBpdCBzaW1wbHkgYXNrcyBmb3IgYXNzaXN0YW5jZSB3aXRoIGEgcHJvbW8gY29kZSBpc3N1ZS4sIlRoZSBpc3N1ZSBtZW50aW9uZWQgaW4gdGhlIHRpY2tldCBpcyByZWxhdGVkIHRvIGEgcHJvbW8gY29kZSBub3Qgd29ya2luZywgd2hpY2ggZmFsbHMgdW5kZXIgdGhlICIib3RoZXIiIiBjYXRlZ29yeS4iLCJbNV0gIApUaGUgaXNzdWUgbWVudGlvbmVkIGluIHRoZSB0aWNrZXQgaXMgcmVsYXRlZCB0byBhIHByb21vIGNvZGUgbm90IHdvcmtpbmcsIHdoaWNoIGZhbGxzIHVuZGVyIHRoZSAiIm90aGVyIiIgY2F0ZWdvcnkuIiwiTm8KClRoZSB0aWNrZXQgZG9lcyBub3QgbWVudGlvbiBhIHJlcXVlc3QgZm9yIGEgcmVmdW5kOyBpdCBzaW1wbHkgYXNrcyBmb3IgYXNzaXN0YW5jZSB3aXRoIGEgcHJvbW8gY29kZSBpc3N1ZS4iLFRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoYXQgdGhlIGN1c3RvbWVyIGlzIGV4cGVyaWVuY2luZyBkaWZmaWN1bHR5IHdpdGggYSBwcm9tbyBjb2RlIHRoYXQgZGlkIG5vdCB3b3JrIGFzIGV4cGVjdGVkLiBUaGUgY3VzdG9tZXIgaXMgc2Vla2luZyBhc3Npc3RhbmNlIHRvIHJlc29sdmUgdGhpcyBpc3N1ZS4sIk5vdCBhcHBsaWNhYmxlICAKVGhlIHRpY2tldCBpcyByZWxhdGVkIHRvIGEgcHJvbW8gY29kZSBpc3N1ZSwgd2hpY2ggZG9lc24ndCBwZXJ0YWluIHRvIHNhZmV0eSBvciBhY2NpZGVudHMuIiwiMiAgClRoaXMgaXNzdWUgYWZmZWN0cyB0aGUgY3VzdG9tZXIncyBhYmlsaXR5IHRvIGNvbXBsZXRlIGEgcHVyY2hhc2UsIGJ1dCBpdCBpcyBub3QgYSBzeXN0ZW0td2lkZSBvdXRhZ2Ugb3IgYSBjcml0aWNhbCBmYWlsdXJlLiBJdCBpcyBpbXBvcnRhbnQgdG8gcmVzb2x2ZSBpdCBwcm9tcHRseSB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uLiIsIlNvbWV3aGF0IG5lZ2F0aXZlCgpUaGUgc2VudGltZW50IGlzICIic29tZXdoYXQgbmVnYXRpdmUiIiBiZWNhdXNlIHRoZSBjdXN0b21lciBpcyBleHByZXNzaW5nIGRpc3NhdGlzZmFjdGlvbiBkdWUgdG8gdGhlIHByb21vIGNvZGUgbm90IHdvcmtpbmcsIGJ1dCB0aGV5IGFyZSBzdGlsbCBwb2xpdGVseSBhc2tpbmcgZm9yIGFzc2lzdGFuY2UuIg0KTm8sIlRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoZSBjdXN0b21lcidzIGNvbmNlcm4gYWJvdXQgYSBzdXNwaWNpb3VzIHNtZWxsIGluIHRoZSBjYXIsIHdoaWNoIGlzIHJhaXNpbmcgd29ycmllcyBhYm91dCB0aGUgaHlnaWVuZSBzdGFuZGFyZHMgb2YgdGhlIHZlaGljbGUuIEFkZHJlc3NpbmcgdGhpcyBpc3N1ZSB3b3VsZCBsaWtlbHkgaW52b2x2ZSBpbnZlc3RpZ2F0aW5nIHRoZSBzb3VyY2Ugb2YgdGhlIHNtZWxsIGFuZCBlbnN1cmluZyB0aGF0IHRoZSB2ZWhpY2xlIG1lZXRzIGNsZWFubGluZXNzIGFuZCBoeWdpZW5lIHN0YW5kYXJkcy4iLDMsTm8sIlsnY2xlYW5saW5lc3MnLCAnb3RoZXInXSIsU29tZXdoYXQgbmVnYXRpdmUsIlRoZXJlIHdhcyBhIHN1c3BpY2lvdXMgc21lbGwgaW4gdGhlIGNhciwgYW5kIEknbSB3b3JyaWVkIGFib3V0IGh5Z2llbmUgc3RhbmRhcmRzLiIsQWdlbnRfMTQsWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuLDE1LFlvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuLDAsMCwxLDMsZ3B0LTRvLEZhbHNlLDAuNSwxMDAwLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIgpEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IFRoZXJlIHdhcyBhIHN1c3BpY2lvdXMgc21lbGwgaW4gdGhlIGNhciwgYW5kIEknbSB3b3JyaWVkIGFib3V0IGh5Z2llbmUgc3RhbmRhcmRzLgoKICAgIApObwogICAgClllcwogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KUGxlYXNlIHJlc3BvbmQgd2l0aCBqdXN0IHlvdXIgYW5zd2VyLiAKCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIHJlc3BvbnNlLiIsIgpXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDogVGhlcmUgd2FzIGEgc3VzcGljaW91cyBzbWVsbCBpbiB0aGUgY2FyLCBhbmQgSSdtIHdvcnJpZWQgYWJvdXQgaHlnaWVuZSBzdGFuZGFyZHMuCgogICAgClZlcnkgcG9zaXRpdmUKICAgIApTb21ld2hhdCBwb3NpdGl2ZQogICAgCk5ldXRyYWwKICAgIApTb21ld2hhdCBuZWdhdGl2ZQogICAgClZlcnkgbmVnYXRpdmUKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiCklmIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHNhZmV0eSwgd2FzIHRoZXJlIGFuIGFjY2lkZW50IHdoZXJlIHNvbWVvbmUgd2FzIGh1cnQ/IFRpY2tldDogVGhlcmUgd2FzIGEgc3VzcGljaW91cyBzbWVsbCBpbiB0aGUgY2FyLCBhbmQgSSdtIHdvcnJpZWQgYWJvdXQgaHlnaWVuZSBzdGFuZGFyZHMuCgogICAgClllcwogICAgCk5vCiAgICAKTm90IGFwcGxpY2FibGUKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIldoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogVGhlcmUgd2FzIGEgc3VzcGljaW91cyBzbWVsbCBpbiB0aGUgY2FyLCBhbmQgSSdtIHdvcnJpZWQgYWJvdXQgaHlnaWVuZSBzdGFuZGFyZHMuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IFRoZXJlIHdhcyBhIHN1c3BpY2lvdXMgc21lbGwgaW4gdGhlIGNhciwgYW5kIEknbSB3b3JyaWVkIGFib3V0IGh5Z2llbmUgc3RhbmRhcmRzLgoKMCA6IExvd2VzdAoKMSA6IAoKMiA6IAoKMyA6IAoKNCA6IAoKNSA6IEhpZ2hlc3QKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggdGhlIGNvZGUgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuIEUuZy4sICIiMSIiIG9yICIiNSIiIGJ5IGl0c2VsZi4KCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIkNoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDogVGhlcmUgd2FzIGEgc3VzcGljaW91cyBzbWVsbCBpbiB0aGUgY2FyLCBhbmQgSSdtIHdvcnJpZWQgYWJvdXQgaHlnaWVuZSBzdGFuZGFyZHMuCgogICAgCjA6IHNhZmV0eQogICAgCjE6IGNsZWFubGluZXNzCiAgICAKMjogZHJpdmVyIHBlcmZvcm1hbmNlCiAgICAKMzogR1BTL3JvdXRlCiAgICAKNDogbG9zdCBpdGVtCiAgICAKNTogb3RoZXIKICAgIAoKCgoKCgpQbGVhc2UgcmVzcG9uZCBvbmx5IHdpdGggYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgY29kZSBvZiB0aGUgb3B0aW9ucyB0aGF0IGFwcGx5LCB3aXRoIHNxdWFyZSBicmFja2V0cy4gRS5nLiwgWzAsIDEsIDNdCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgeW91ciBjaG9pY2Ugb24gdGhlIG5leHQgbGluZS4iLDAuMDAwODIyNSwwLjAwMDU2NSwxMzY5Ljg2MzAxMzY5ODYzMDMsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENiZlhnOEM0aGxwUjdKQjdoYXk2aWlZbkgnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogIiJUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyB0aGUgY3VzdG9tZXIncyBjb25jZXJuIGFib3V0IGEgc3VzcGljaW91cyBzbWVsbCBpbiB0aGUgY2FyLCB3aGljaCBpcyByYWlzaW5nIHdvcnJpZXMgYWJvdXQgdGhlIGh5Z2llbmUgc3RhbmRhcmRzIG9mIHRoZSB2ZWhpY2xlLiBBZGRyZXNzaW5nIHRoaXMgaXNzdWUgd291bGQgbGlrZWx5IGludm9sdmUgaW52ZXN0aWdhdGluZyB0aGUgc291cmNlIG9mIHRoZSBzbWVsbCBhbmQgZW5zdXJpbmcgdGhhdCB0aGUgdmVoaWNsZSBtZWV0cyBjbGVhbmxpbmVzcyBhbmQgaHlnaWVuZSBzdGFuZGFyZHMuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDU0LCAncHJvbXB0X3Rva2Vucyc6IDc3LCAndG90YWxfdG9rZW5zJzogMTMxLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxNjM5LjM0NDI2MjI5NTA4MTgsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENQOUVCRWhLVThoRnVDZ1ZIVkZzMVFmWm4nLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ05vICBcblRoZSB0aWNrZXQgZGVzY3JpYmVzIGEgY29uY2VybiBhYm91dCBhIHN1c3BpY2lvdXMgc21lbGwsIHdoaWNoIHJlbGF0ZXMgdG8gaHlnaWVuZSBzdGFuZGFyZHMgcmF0aGVyIHRoYW4gYSBzYWZldHkgaW5jaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydC4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyNywgJ3Byb21wdF90b2tlbnMnOiAxMzYsICd0b3RhbF90b2tlbnMnOiAxNjMsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwNzMyNSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ05UaVhXcmZhS3pod09zOU1yS3RsU0pPTycsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnMyAgXG5UaGlzIGlzc3VlIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGNvbmNlcm5zIGh5Z2llbmUgYW5kIGN1c3RvbWVyIGNvbWZvcnQsIGJ1dCBpdCBpcyBub3QgYW4gaW1tZWRpYXRlIHNhZmV0eSB0aHJlYXQuIEl0IHNob3VsZCBiZSBhZGRyZXNzZWQgcHJvbXB0bHkgdG8gbWFpbnRhaW4gc2VydmljZSBxdWFsaXR5LicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9mNzg1ZWI1ZjQ3JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDMzLCAncHJvbXB0X3Rva2Vucyc6IDE2MCwgJ3RvdGFsX3Rva2Vucyc6IDE5MywgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTM2NS4xODc3MTMzMTA1ODAyLDE3NjkuOTExNTA0NDI0Nzc5LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xET0J4RWFRcFFsM3E2SDZGT3JVTVI0dXQyJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdOb1xuXG5UaGUgY3VzdG9tZXIgZXhwcmVzc2VzIGNvbmNlcm4gYWJvdXQgdGhlIGh5Z2llbmUgc3RhbmRhcmRzIGR1ZSB0byBhIHN1c3BpY2lvdXMgc21lbGwgYnV0IGRvZXMgbm90IGV4cGxpY2l0bHkgYXNrIGZvciBhIHJlZnVuZC4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTEsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfZjc4NWViNWY0NycsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyNCwgJ3Byb21wdF90b2tlbnMnOiAxMTQsICd0b3RhbF90b2tlbnMnOiAxMzgsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDEyMTUuODA1NDcxMTI0NjIsMTkwNC43NjE5MDQ3NjE5MDQ4LDAuMDAwNjEwMDAwMDAwMDAwMDAwMSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ24wdzNWZ2pEaW9meDZCdGY5TU5xZkxzYScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlsxLCA1XSAgXG5UaGUgaXNzdWUgb2YgYSBzdXNwaWNpb3VzIHNtZWxsIGluIHRoZSBjYXIgcmVsYXRlcyB0byBjbGVhbmxpbmVzcywgYW5kIHRoZSBjb25jZXJuIGFib3V0IGh5Z2llbmUgc3RhbmRhcmRzIGNvdWxkIGJlIGNhdGVnb3JpemVkIGFzICdvdGhlcicgc2luY2UgaXQgbWlnaHQgZW5jb21wYXNzIGJyb2FkZXIgaXNzdWVzIG5vdCBleHBsaWNpdGx5IGxpc3RlZC4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogNDMsICdwcm9tcHRfdG9rZW5zJzogMTU3LCAndG90YWxfdG9rZW5zJzogMjAwLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ1JHU0FzaWp5SUFYMVB6RUM3MGI5U0lxYScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnU29tZXdoYXQgbmVnYXRpdmUgIFxuVGhlIHRpY2tldCBleHByZXNzZXMgY29uY2VybiBhbmQgZGlzc2F0aXNmYWN0aW9uIGFib3V0IGEgc3VzcGljaW91cyBzbWVsbCwgaW5kaWNhdGluZyBhIG5lZ2F0aXZlIGV4cGVyaWVuY2UgcmVnYXJkaW5nIGh5Z2llbmUgc3RhbmRhcmRzLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDIzLCAncHJvbXB0X3Rva2Vucyc6IDEzNCwgJ3RvdGFsX3Rva2Vucyc6IDE1NywgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA3MywwLjAwMDUyNSwwLCJJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSIsV2hhdCBpcyB0aGUgc2VudGltZW50IG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxXaGF0IGlzIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxDaGVjayBhbGwgb2YgdGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhpcyB0aWNrZXQ6IHt7IHRpY2tldCB9fSwiWydzYWZldHknLCAnY2xlYW5saW5lc3MnLCAnZHJpdmVyIHBlcmZvcm1hbmNlJywgJ0dQUy9yb3V0ZScsICdsb3N0IGl0ZW0nLCAnb3RoZXInXSIsIlsnVmVyeSBwb3NpdGl2ZScsICdTb21ld2hhdCBwb3NpdGl2ZScsICdOZXV0cmFsJywgJ1NvbWV3aGF0IG5lZ2F0aXZlJywgJ1ZlcnkgbmVnYXRpdmUnXSIsIlsnWWVzJywgJ05vJywgJ05vdCBhcHBsaWNhYmxlJ10iLCJbJ05vJywgJ1llcyddIiwiWzAsIDEsIDIsIDMsIDQsIDVdIiwseWVzX25vLG11bHRpcGxlX2Nob2ljZSxjaGVja2JveCxsaW5lYXJfc2NhbGUsbXVsdGlwbGVfY2hvaWNlLGZyZWVfdGV4dCwiVGhpcyBpc3N1ZSBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBjb25jZXJucyBoeWdpZW5lIGFuZCBjdXN0b21lciBjb21mb3J0LCBidXQgaXQgaXMgbm90IGFuIGltbWVkaWF0ZSBzYWZldHkgdGhyZWF0LiBJdCBzaG91bGQgYmUgYWRkcmVzc2VkIHByb21wdGx5IHRvIG1haW50YWluIHNlcnZpY2UgcXVhbGl0eS4iLCwiVGhlIHRpY2tldCBleHByZXNzZXMgY29uY2VybiBhbmQgZGlzc2F0aXNmYWN0aW9uIGFib3V0IGEgc3VzcGljaW91cyBzbWVsbCwgaW5kaWNhdGluZyBhIG5lZ2F0aXZlIGV4cGVyaWVuY2UgcmVnYXJkaW5nIGh5Z2llbmUgc3RhbmRhcmRzLiIsIlRoZSB0aWNrZXQgZGVzY3JpYmVzIGEgY29uY2VybiBhYm91dCBhIHN1c3BpY2lvdXMgc21lbGwsIHdoaWNoIHJlbGF0ZXMgdG8gaHlnaWVuZSBzdGFuZGFyZHMgcmF0aGVyIHRoYW4gYSBzYWZldHkgaW5jaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydC4iLFRoZSBjdXN0b21lciBleHByZXNzZXMgY29uY2VybiBhYm91dCB0aGUgaHlnaWVuZSBzdGFuZGFyZHMgZHVlIHRvIGEgc3VzcGljaW91cyBzbWVsbCBidXQgZG9lcyBub3QgZXhwbGljaXRseSBhc2sgZm9yIGEgcmVmdW5kLiwiVGhlIGlzc3VlIG9mIGEgc3VzcGljaW91cyBzbWVsbCBpbiB0aGUgY2FyIHJlbGF0ZXMgdG8gY2xlYW5saW5lc3MsIGFuZCB0aGUgY29uY2VybiBhYm91dCBoeWdpZW5lIHN0YW5kYXJkcyBjb3VsZCBiZSBjYXRlZ29yaXplZCBhcyAnb3RoZXInIHNpbmNlIGl0IG1pZ2h0IGVuY29tcGFzcyBicm9hZGVyIGlzc3VlcyBub3QgZXhwbGljaXRseSBsaXN0ZWQuIiwiWzEsIDVdICAKVGhlIGlzc3VlIG9mIGEgc3VzcGljaW91cyBzbWVsbCBpbiB0aGUgY2FyIHJlbGF0ZXMgdG8gY2xlYW5saW5lc3MsIGFuZCB0aGUgY29uY2VybiBhYm91dCBoeWdpZW5lIHN0YW5kYXJkcyBjb3VsZCBiZSBjYXRlZ29yaXplZCBhcyAnb3RoZXInIHNpbmNlIGl0IG1pZ2h0IGVuY29tcGFzcyBicm9hZGVyIGlzc3VlcyBub3QgZXhwbGljaXRseSBsaXN0ZWQuIiwiTm8KClRoZSBjdXN0b21lciBleHByZXNzZXMgY29uY2VybiBhYm91dCB0aGUgaHlnaWVuZSBzdGFuZGFyZHMgZHVlIHRvIGEgc3VzcGljaW91cyBzbWVsbCBidXQgZG9lcyBub3QgZXhwbGljaXRseSBhc2sgZm9yIGEgcmVmdW5kLiIsIlRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoZSBjdXN0b21lcidzIGNvbmNlcm4gYWJvdXQgYSBzdXNwaWNpb3VzIHNtZWxsIGluIHRoZSBjYXIsIHdoaWNoIGlzIHJhaXNpbmcgd29ycmllcyBhYm91dCB0aGUgaHlnaWVuZSBzdGFuZGFyZHMgb2YgdGhlIHZlaGljbGUuIEFkZHJlc3NpbmcgdGhpcyBpc3N1ZSB3b3VsZCBsaWtlbHkgaW52b2x2ZSBpbnZlc3RpZ2F0aW5nIHRoZSBzb3VyY2Ugb2YgdGhlIHNtZWxsIGFuZCBlbnN1cmluZyB0aGF0IHRoZSB2ZWhpY2xlIG1lZXRzIGNsZWFubGluZXNzIGFuZCBoeWdpZW5lIHN0YW5kYXJkcy4iLCJObyAgClRoZSB0aWNrZXQgZGVzY3JpYmVzIGEgY29uY2VybiBhYm91dCBhIHN1c3BpY2lvdXMgc21lbGwsIHdoaWNoIHJlbGF0ZXMgdG8gaHlnaWVuZSBzdGFuZGFyZHMgcmF0aGVyIHRoYW4gYSBzYWZldHkgaW5jaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydC4iLCIzICAKVGhpcyBpc3N1ZSBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBjb25jZXJucyBoeWdpZW5lIGFuZCBjdXN0b21lciBjb21mb3J0LCBidXQgaXQgaXMgbm90IGFuIGltbWVkaWF0ZSBzYWZldHkgdGhyZWF0LiBJdCBzaG91bGQgYmUgYWRkcmVzc2VkIHByb21wdGx5IHRvIG1haW50YWluIHNlcnZpY2UgcXVhbGl0eS4iLCJTb21ld2hhdCBuZWdhdGl2ZSAgClRoZSB0aWNrZXQgZXhwcmVzc2VzIGNvbmNlcm4gYW5kIGRpc3NhdGlzZmFjdGlvbiBhYm91dCBhIHN1c3BpY2lvdXMgc21lbGwsIGluZGljYXRpbmcgYSBuZWdhdGl2ZSBleHBlcmllbmNlIHJlZ2FyZGluZyBoeWdpZW5lIHN0YW5kYXJkcy4iDQpObyxUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBhY3R1YWxseSBub3QgYW4gaXNzdWUgYXQgYWxsLiBJdCBhcHBlYXJzIHRvIGJlIGEgcG9zaXRpdmUgZmVlZGJhY2sgb3IgY29tcGxpbWVudCByZWdhcmRpbmcgdGhlIGRyaXZlcidzIGNvbnNpZGVyYXRlIGJlaGF2aW9yIGFuZCBhc3Npc3RhbmNlIHdpdGggbHVnZ2FnZS4gSXQncyBhbHdheXMgZ3JlYXQgdG8gcmVjZWl2ZSBzdWNoIHBvc2l0aXZlIGNvbW1lbnRzIGFib3V0IHRoZSBzZXJ2aWNlIHByb3ZpZGVkISwwLE5vLFsnZHJpdmVyIHBlcmZvcm1hbmNlJ10sVmVyeSBwb3NpdGl2ZSwiTXkgZHJpdmVyIHdhcyB2ZXJ5IGNvbnNpZGVyYXRlLCBlc3BlY2lhbGx5IGhlbHBpbmcgbWUgd2l0aCBteSBsdWdnYWdlLiBBcHByZWNpYXRlIHRoZSBncmVhdCBzZXJ2aWNlISIsQWdlbnRfMTUsWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuLDE1LFlvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuLDAsMCwxLDMsZ3B0LTRvLEZhbHNlLDAuNSwxMDAwLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIgpEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IE15IGRyaXZlciB3YXMgdmVyeSBjb25zaWRlcmF0ZSwgZXNwZWNpYWxseSBoZWxwaW5nIG1lIHdpdGggbXkgbHVnZ2FnZS4gQXBwcmVjaWF0ZSB0aGUgZ3JlYXQgc2VydmljZSEKCiAgICAKTm8KICAgIApZZXMKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuClBsZWFzZSByZXNwb25kIHdpdGgganVzdCB5b3VyIGFuc3dlci4gCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgeW91ciByZXNwb25zZS4iLCIKV2hhdCBpcyB0aGUgc2VudGltZW50IG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IE15IGRyaXZlciB3YXMgdmVyeSBjb25zaWRlcmF0ZSwgZXNwZWNpYWxseSBoZWxwaW5nIG1lIHdpdGggbXkgbHVnZ2FnZS4gQXBwcmVjaWF0ZSB0aGUgZ3JlYXQgc2VydmljZSEKCiAgICAKVmVyeSBwb3NpdGl2ZQogICAgClNvbWV3aGF0IHBvc2l0aXZlCiAgICAKTmV1dHJhbAogICAgClNvbWV3aGF0IG5lZ2F0aXZlCiAgICAKVmVyeSBuZWdhdGl2ZQogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLgoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCIKSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiBNeSBkcml2ZXIgd2FzIHZlcnkgY29uc2lkZXJhdGUsIGVzcGVjaWFsbHkgaGVscGluZyBtZSB3aXRoIG15IGx1Z2dhZ2UuIEFwcHJlY2lhdGUgdGhlIGdyZWF0IHNlcnZpY2UhCgogICAgClllcwogICAgCk5vCiAgICAKTm90IGFwcGxpY2FibGUKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIldoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogTXkgZHJpdmVyIHdhcyB2ZXJ5IGNvbnNpZGVyYXRlLCBlc3BlY2lhbGx5IGhlbHBpbmcgbWUgd2l0aCBteSBsdWdnYWdlLiBBcHByZWNpYXRlIHRoZSBncmVhdCBzZXJ2aWNlISIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBNeSBkcml2ZXIgd2FzIHZlcnkgY29uc2lkZXJhdGUsIGVzcGVjaWFsbHkgaGVscGluZyBtZSB3aXRoIG15IGx1Z2dhZ2UuIEFwcHJlY2lhdGUgdGhlIGdyZWF0IHNlcnZpY2UhCgowIDogTG93ZXN0CgoxIDogCgoyIDogCgozIDogCgo0IDogCgo1IDogSGlnaGVzdAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCB0aGUgY29kZSBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4gRS5nLiwgIiIxIiIgb3IgIiI1IiIgYnkgaXRzZWxmLgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiBNeSBkcml2ZXIgd2FzIHZlcnkgY29uc2lkZXJhdGUsIGVzcGVjaWFsbHkgaGVscGluZyBtZSB3aXRoIG15IGx1Z2dhZ2UuIEFwcHJlY2lhdGUgdGhlIGdyZWF0IHNlcnZpY2UhCgogICAgCjA6IHNhZmV0eQogICAgCjE6IGNsZWFubGluZXNzCiAgICAKMjogZHJpdmVyIHBlcmZvcm1hbmNlCiAgICAKMzogR1BTL3JvdXRlCiAgICAKNDogbG9zdCBpdGVtCiAgICAKNTogb3RoZXIKICAgIAoKCgoKCgpQbGVhc2UgcmVzcG9uZCBvbmx5IHdpdGggYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgY29kZSBvZiB0aGUgb3B0aW9ucyB0aGF0IGFwcGx5LCB3aXRoIHNxdWFyZSBicmFja2V0cy4gRS5nLiwgWzAsIDEsIDNdCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgeW91ciBjaG9pY2Ugb24gdGhlIG5leHQgbGluZS4iLDAuMDAwNjE3NSwwLjAwMDU0LDE3MzkuMTMwNDM0NzgyNjA4NywieydpZCc6ICdjaGF0Y21wbC1BZU9MQ2dsd3RpRUJXdGZhN3UzaGx5eHhtZVM4cScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIGFjdHVhbGx5IG5vdCBhbiBpc3N1ZSBhdCBhbGwuIEl0IGFwcGVhcnMgdG8gYmUgYSBwb3NpdGl2ZSBmZWVkYmFjayBvciBjb21wbGltZW50IHJlZ2FyZGluZyB0aGUgZHJpdmVyJ3MgY29uc2lkZXJhdGUgYmVoYXZpb3IgYW5kIGFzc2lzdGFuY2Ugd2l0aCBsdWdnYWdlLiBJdCdzIGFsd2F5cyBncmVhdCB0byByZWNlaXZlIHN1Y2ggcG9zaXRpdmUgY29tbWVudHMgYWJvdXQgdGhlIHNlcnZpY2UgcHJvdmlkZWQhIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDQ2LCAncHJvbXB0X3Rva2Vucyc6IDc5LCAndG90YWxfdG9rZW5zJzogMTI1LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxODY5LjE1ODg3ODUwNDY3MjksInsnaWQnOiAnY2hhdGNtcGwtQWVPTENKemxyeFExdm1ndjJLU2ZWMkFwajM4M0UnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogIiJObyAgXG5UaGUgdGlja2V0IGRvZXMgbm90IG1lbnRpb24gYW55IGFjY2lkZW50IG9yIGluanVyeTsgaXQgcHJhaXNlcyB0aGUgZHJpdmVyJ3MgaGVscGZ1bG5lc3MuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDE5LCAncHJvbXB0X3Rva2Vucyc6IDEzOCwgJ3RvdGFsX3Rva2Vucyc6IDE1NywgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA2NTc1LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDdjhZc0lMenRncUxCYWpmdk5vUlFhM1djJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICcwICBcblRoaXMgdGlja2V0IGlzIGEgcG9zaXRpdmUgZmVlZGJhY2sgYW5kIGRvZXMgbm90IHJlcXVpcmUgdXJnZW50IGF0dGVudGlvbiBvciByZXNvbHV0aW9uLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDE3LCAncHJvbXB0X3Rva2Vucyc6IDE2MiwgJ3RvdGFsX3Rva2Vucyc6IDE3OSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTUyMC45MTI1NDc1Mjg1MTcsMTg1MS44NTE4NTE4NTE4NTE3LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDcTFLaDl2QmVxT095TWVZSm1ZSG53RXh3JywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICIiTm9cblxuVGhlIGN1c3RvbWVyIGlzIGV4cHJlc3NpbmcgYXBwcmVjaWF0aW9uIGZvciB0aGUgZHJpdmVyJ3Mgc2VydmljZSBhbmQgZG9lcyBub3QgbWVudGlvbiBhbnkgZGlzc2F0aXNmYWN0aW9uIG9yIHJlcXVlc3QgZm9yIGEgcmVmdW5kLiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyMywgJ3Byb21wdF90b2tlbnMnOiAxMTYsICd0b3RhbF90b2tlbnMnOiAxMzksICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE2MTkuNDMzMTk4MzgwNTY2OSwxOTIzLjA3NjkyMzA3NjkyMjksMC4wMDA1MzUsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENrSHlHbUZWMEExcnBUUUdkWUtRRnV2YlonLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogIiJbMl0gIFxuVGhlIHRpY2tldCBtZW50aW9ucyB0aGUgZHJpdmVyJ3MgY29uc2lkZXJhdGUgYmVoYXZpb3IgYW5kIGFzc2lzdGFuY2Ugd2l0aCBsdWdnYWdlLCB3aGljaCByZWxhdGVzIHRvIGRyaXZlciBwZXJmb3JtYW5jZS4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjIsICdwcm9tcHRfdG9rZW5zJzogMTU5LCAndG90YWxfdG9rZW5zJzogMTgxLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ3o2Q20wR08yRk5NY3BGMDNvd0MzV1BrVCcsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlZlcnkgcG9zaXRpdmUgIFxuVGhlIHRpY2tldCBleHByZXNzZXMgYXBwcmVjaWF0aW9uIGFuZCBoaWdobGlnaHRzIHRoZSBkcml2ZXIncyBjb25zaWRlcmF0ZSBiZWhhdmlvciwgaW5kaWNhdGluZyBhIHZlcnkgcG9zaXRpdmUgc2VudGltZW50LiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyMCwgJ3Byb21wdF90b2tlbnMnOiAxMzYsICd0b3RhbF90b2tlbnMnOiAxNTYsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwNTc1LDAuMDAwNTIwMDAwMDAwMDAwMDAwMSwwLCJJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSIsV2hhdCBpcyB0aGUgc2VudGltZW50IG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxXaGF0IGlzIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxDaGVjayBhbGwgb2YgdGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhpcyB0aWNrZXQ6IHt7IHRpY2tldCB9fSwiWydzYWZldHknLCAnY2xlYW5saW5lc3MnLCAnZHJpdmVyIHBlcmZvcm1hbmNlJywgJ0dQUy9yb3V0ZScsICdsb3N0IGl0ZW0nLCAnb3RoZXInXSIsIlsnVmVyeSBwb3NpdGl2ZScsICdTb21ld2hhdCBwb3NpdGl2ZScsICdOZXV0cmFsJywgJ1NvbWV3aGF0IG5lZ2F0aXZlJywgJ1ZlcnkgbmVnYXRpdmUnXSIsIlsnWWVzJywgJ05vJywgJ05vdCBhcHBsaWNhYmxlJ10iLCJbJ05vJywgJ1llcyddIiwiWzAsIDEsIDIsIDMsIDQsIDVdIiwseWVzX25vLG11bHRpcGxlX2Nob2ljZSxjaGVja2JveCxsaW5lYXJfc2NhbGUsbXVsdGlwbGVfY2hvaWNlLGZyZWVfdGV4dCxUaGlzIHRpY2tldCBpcyBhIHBvc2l0aXZlIGZlZWRiYWNrIGFuZCBkb2VzIG5vdCByZXF1aXJlIHVyZ2VudCBhdHRlbnRpb24gb3IgcmVzb2x1dGlvbi4sLCJUaGUgdGlja2V0IGV4cHJlc3NlcyBhcHByZWNpYXRpb24gYW5kIGhpZ2hsaWdodHMgdGhlIGRyaXZlcidzIGNvbnNpZGVyYXRlIGJlaGF2aW9yLCBpbmRpY2F0aW5nIGEgdmVyeSBwb3NpdGl2ZSBzZW50aW1lbnQuIixUaGUgdGlja2V0IGRvZXMgbm90IG1lbnRpb24gYW55IGFjY2lkZW50IG9yIGluanVyeTsgaXQgcHJhaXNlcyB0aGUgZHJpdmVyJ3MgaGVscGZ1bG5lc3MuLFRoZSBjdXN0b21lciBpcyBleHByZXNzaW5nIGFwcHJlY2lhdGlvbiBmb3IgdGhlIGRyaXZlcidzIHNlcnZpY2UgYW5kIGRvZXMgbm90IG1lbnRpb24gYW55IGRpc3NhdGlzZmFjdGlvbiBvciByZXF1ZXN0IGZvciBhIHJlZnVuZC4sIlRoZSB0aWNrZXQgbWVudGlvbnMgdGhlIGRyaXZlcidzIGNvbnNpZGVyYXRlIGJlaGF2aW9yIGFuZCBhc3Npc3RhbmNlIHdpdGggbHVnZ2FnZSwgd2hpY2ggcmVsYXRlcyB0byBkcml2ZXIgcGVyZm9ybWFuY2UuIiwiWzJdICAKVGhlIHRpY2tldCBtZW50aW9ucyB0aGUgZHJpdmVyJ3MgY29uc2lkZXJhdGUgYmVoYXZpb3IgYW5kIGFzc2lzdGFuY2Ugd2l0aCBsdWdnYWdlLCB3aGljaCByZWxhdGVzIHRvIGRyaXZlciBwZXJmb3JtYW5jZS4iLCJObwoKVGhlIGN1c3RvbWVyIGlzIGV4cHJlc3NpbmcgYXBwcmVjaWF0aW9uIGZvciB0aGUgZHJpdmVyJ3Mgc2VydmljZSBhbmQgZG9lcyBub3QgbWVudGlvbiBhbnkgZGlzc2F0aXNmYWN0aW9uIG9yIHJlcXVlc3QgZm9yIGEgcmVmdW5kLiIsVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgYWN0dWFsbHkgbm90IGFuIGlzc3VlIGF0IGFsbC4gSXQgYXBwZWFycyB0byBiZSBhIHBvc2l0aXZlIGZlZWRiYWNrIG9yIGNvbXBsaW1lbnQgcmVnYXJkaW5nIHRoZSBkcml2ZXIncyBjb25zaWRlcmF0ZSBiZWhhdmlvciBhbmQgYXNzaXN0YW5jZSB3aXRoIGx1Z2dhZ2UuIEl0J3MgYWx3YXlzIGdyZWF0IHRvIHJlY2VpdmUgc3VjaCBwb3NpdGl2ZSBjb21tZW50cyBhYm91dCB0aGUgc2VydmljZSBwcm92aWRlZCEsIk5vICAKVGhlIHRpY2tldCBkb2VzIG5vdCBtZW50aW9uIGFueSBhY2NpZGVudCBvciBpbmp1cnk7IGl0IHByYWlzZXMgdGhlIGRyaXZlcidzIGhlbHBmdWxuZXNzLiIsIjAgIApUaGlzIHRpY2tldCBpcyBhIHBvc2l0aXZlIGZlZWRiYWNrIGFuZCBkb2VzIG5vdCByZXF1aXJlIHVyZ2VudCBhdHRlbnRpb24gb3IgcmVzb2x1dGlvbi4iLCJWZXJ5IHBvc2l0aXZlICAKVGhlIHRpY2tldCBleHByZXNzZXMgYXBwcmVjaWF0aW9uIGFuZCBoaWdobGlnaHRzIHRoZSBkcml2ZXIncyBjb25zaWRlcmF0ZSBiZWhhdmlvciwgaW5kaWNhdGluZyBhIHZlcnkgcG9zaXRpdmUgc2VudGltZW50LiINCk5vLCJUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyB0aGUgaW5hY2N1cmFjeSBvZiB0aGUgYXBwJ3MgR1BTLCB3aGljaCByZXN1bHRlZCBpbiBkaXJlY3RpbmcgdGhlIGRyaXZlciB0byB0aGUgd3JvbmcgcGljay11cCBsb2NhdGlvbi4gVGhpcyBjYW4gbGVhZCB0byBkZWxheXMgYW5kIGluY29udmVuaWVuY2UgZm9yIGJvdGggdGhlIGRyaXZlciBhbmQgdGhlIGN1c3RvbWVyLCBzbyBpdCdzIGltcG9ydGFudCB0byBhZGRyZXNzIHRoZSBHUFMgZnVuY3Rpb25hbGl0eSB0byBlbnN1cmUgaXQgcHJvdmlkZXMgYWNjdXJhdGUgZGlyZWN0aW9ucy4iLDQsTm8sWydHUFMvcm91dGUnXSxTb21ld2hhdCBuZWdhdGl2ZSxUaGUgYXBwJ3MgR1BTIHNlZW1zIGluYWNjdXJhdGUuIEl0IGRpcmVjdGVkIHRoZSBkcml2ZXIgdG8gdGhlIHdyb25nIHBpY2stdXAgbG9jYXRpb24uLEFnZW50XzE2LFlvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiwxNSxZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LiwwLDAsMSwzLGdwdC00byxGYWxzZSwwLjUsMTAwMCwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCIKRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBUaGUgYXBwJ3MgR1BTIHNlZW1zIGluYWNjdXJhdGUuIEl0IGRpcmVjdGVkIHRoZSBkcml2ZXIgdG8gdGhlIHdyb25nIHBpY2stdXAgbG9jYXRpb24uCgogICAgCk5vCiAgICAKWWVzCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgpQbGVhc2UgcmVzcG9uZCB3aXRoIGp1c3QgeW91ciBhbnN3ZXIuIAoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHlvdXIgcmVzcG9uc2UuIiwiCldoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBUaGUgYXBwJ3MgR1BTIHNlZW1zIGluYWNjdXJhdGUuIEl0IGRpcmVjdGVkIHRoZSBkcml2ZXIgdG8gdGhlIHdyb25nIHBpY2stdXAgbG9jYXRpb24uCgogICAgClZlcnkgcG9zaXRpdmUKICAgIApTb21ld2hhdCBwb3NpdGl2ZQogICAgCk5ldXRyYWwKICAgIApTb21ld2hhdCBuZWdhdGl2ZQogICAgClZlcnkgbmVnYXRpdmUKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiCklmIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHNhZmV0eSwgd2FzIHRoZXJlIGFuIGFjY2lkZW50IHdoZXJlIHNvbWVvbmUgd2FzIGh1cnQ/IFRpY2tldDogVGhlIGFwcCdzIEdQUyBzZWVtcyBpbmFjY3VyYXRlLiBJdCBkaXJlY3RlZCB0aGUgZHJpdmVyIHRvIHRoZSB3cm9uZyBwaWNrLXVwIGxvY2F0aW9uLgoKICAgIApZZXMKICAgIApObwogICAgCk5vdCBhcHBsaWNhYmxlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogVGhlIGFwcCdzIEdQUyBzZWVtcyBpbmFjY3VyYXRlLiBJdCBkaXJlY3RlZCB0aGUgZHJpdmVyIHRvIHRoZSB3cm9uZyBwaWNrLXVwIGxvY2F0aW9uLiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IFRoZSBhcHAncyBHUFMgc2VlbXMgaW5hY2N1cmF0ZS4gSXQgZGlyZWN0ZWQgdGhlIGRyaXZlciB0byB0aGUgd3JvbmcgcGljay11cCBsb2NhdGlvbi4KCjAgOiBMb3dlc3QKCjEgOiAKCjIgOiAKCjMgOiAKCjQgOiAKCjUgOiBIaWdoZXN0CgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIHRoZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLiBFLmcuLCAiIjEiIiBvciAiIjUiIiBieSBpdHNlbGYuCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJDaGVjayBhbGwgb2YgdGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhpcyB0aWNrZXQ6IFRoZSBhcHAncyBHUFMgc2VlbXMgaW5hY2N1cmF0ZS4gSXQgZGlyZWN0ZWQgdGhlIGRyaXZlciB0byB0aGUgd3JvbmcgcGljay11cCBsb2NhdGlvbi4KCiAgICAKMDogc2FmZXR5CiAgICAKMTogY2xlYW5saW5lc3MKICAgIAoyOiBkcml2ZXIgcGVyZm9ybWFuY2UKICAgIAozOiBHUFMvcm91dGUKICAgIAo0OiBsb3N0IGl0ZW0KICAgIAo1OiBvdGhlcgogICAgCgoKCgoKClBsZWFzZSByZXNwb25kIG9ubHkgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBjb2RlIG9mIHRoZSBvcHRpb25zIHRoYXQgYXBwbHksIHdpdGggc3F1YXJlIGJyYWNrZXRzLiBFLmcuLCBbMCwgMSwgM10KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIGNob2ljZSBvbiB0aGUgbmV4dCBsaW5lLiIsMC4wMDA3Mzc1MDAwMDAwMDAwMDAxLDAuMDAwNjMsMTQ4MS40ODE0ODE0ODE0ODEzLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDc29tdWs2UVk3a3RHRVJ3Ykd6ampaZjVJJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICIiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhlIGluYWNjdXJhY3kgb2YgdGhlIGFwcCdzIEdQUywgd2hpY2ggcmVzdWx0ZWQgaW4gZGlyZWN0aW5nIHRoZSBkcml2ZXIgdG8gdGhlIHdyb25nIHBpY2stdXAgbG9jYXRpb24uIFRoaXMgY2FuIGxlYWQgdG8gZGVsYXlzIGFuZCBpbmNvbnZlbmllbmNlIGZvciBib3RoIHRoZSBkcml2ZXIgYW5kIHRoZSBjdXN0b21lciwgc28gaXQncyBpbXBvcnRhbnQgdG8gYWRkcmVzcyB0aGUgR1BTIGZ1bmN0aW9uYWxpdHkgdG8gZW5zdXJlIGl0IHByb3ZpZGVzIGFjY3VyYXRlIGRpcmVjdGlvbnMuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDU5LCAncHJvbXB0X3Rva2Vucyc6IDc5LCAndG90YWxfdG9rZW5zJzogMTM4LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxNjgwLjY3MjI2ODkwNzU2MywieydpZCc6ICdjaGF0Y21wbC1BZU9MQ3Q0M1dycUZZWm1nYlNkY3ZYTFdvQ1F1cicsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIk5vICBcblRoZSBpc3N1ZSBtZW50aW9uZWQgaXMgYWJvdXQgR1BTIGluYWNjdXJhY3ksIGFuZCB0aGVyZSdzIG5vIGluZGljYXRpb24gb2YgYW4gYWNjaWRlbnQgb3IgaW5qdXJ5IGluIHRoZSB0aWNrZXQgZGVzY3JpcHRpb24uIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDI1LCAncHJvbXB0X3Rva2Vucyc6IDEzOCwgJ3RvdGFsX3Rva2Vucyc6IDE2MywgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA3ODc1LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDWjREeG16dHl5Qnhwem9Fc21oazFnN0pTJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICc0ICBcblRoaXMgaXNzdWUgaW1wYWN0cyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBhcHAsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gY3VzdG9tZXIgZGlzc2F0aXNmYWN0aW9uIGFuZCBvcGVyYXRpb25hbCBpbmVmZmljaWVuY2llcywgdGh1cyByZXF1aXJpbmcgcHJvbXB0IGF0dGVudGlvbi4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyNywgJ3Byb21wdF90b2tlbnMnOiAxNjIsICd0b3RhbF90b2tlbnMnOiAxODksICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDEyNjkuODQxMjY5ODQxMjY5OSwxNTg3LjMwMTU4NzMwMTU4NzIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENKM0VVWVJ0ZU1LTEdFR1lCMzJBNGhHWW4nLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogIiJOb1xuXG5UaGUgdGlja2V0IG1lbnRpb25zIGFuIGlzc3VlIHdpdGggdGhlIGFwcCdzIEdQUyBidXQgZG9lcyBub3QgZXhwbGljaXRseSBzdGF0ZSB0aGF0IHRoZSBjdXN0b21lciBpcyBhc2tpbmcgZm9yIGEgcmVmdW5kLiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyNiwgJ3Byb21wdF90b2tlbnMnOiAxMTYsICd0b3RhbF90b2tlbnMnOiAxNDIsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDEzNTUuOTMyMjAzMzg5ODMwNCwxODE4LjE4MTgxODE4MTgxODUsMC4wMDA1OTUsInsnaWQnOiAnY2hhdGNtcGwtQWVPTERieVh5SHhBRDltUGRjeFBNeW16SzV4aFYnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogIiJbM11cblxuVGhlIGlzc3VlIG1lbnRpb25lZCBpbiB0aGUgdGlja2V0IGlzIHJlbGF0ZWQgdG8gdGhlIEdQUy9yb3V0ZSwgYXMgaXQgZGVzY3JpYmVzIHRoZSBhcHAncyBHUFMgZGlyZWN0aW5nIHRoZSBkcml2ZXIgdG8gdGhlIHdyb25nIHBpY2stdXAgbG9jYXRpb24uIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MSwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDM0LCAncHJvbXB0X3Rva2Vucyc6IDE1OSwgJ3RvdGFsX3Rva2Vucyc6IDE5MywgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTERXNlB3SThkaEhiTTV0NUpSU1hmTE9ab0MnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogIiJTb21ld2hhdCBuZWdhdGl2ZSAgXG5UaGUgc2VudGltZW50IGlzIHNvbWV3aGF0IG5lZ2F0aXZlIGJlY2F1c2UgdGhlIGN1c3RvbWVyIGlzIGV4cGVyaWVuY2luZyBhIHByb2JsZW0gd2l0aCB0aGUgYXBwJ3MgR1BTLCB3aGljaCBpcyBsZWFkaW5nIHRvIGFuIGluY29udmVuaWVuY2UuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MSwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDI5LCAncHJvbXB0X3Rva2Vucyc6IDEzNiwgJ3RvdGFsX3Rva2Vucyc6IDE2NSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA2NzUsMC4wMDA1NDk5OTk5OTk5OTk5OTk5LDAsIklmIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHNhZmV0eSwgd2FzIHRoZXJlIGFuIGFjY2lkZW50IHdoZXJlIHNvbWVvbmUgd2FzIGh1cnQ/IFRpY2tldDoge3sgdGlja2V0IH19IiwiT24gYSBzY2FsZSBmcm9tIDAgdG8gNSwgd2hhdCBpcyB0aGUgcHJpb3JpdHkgbGV2ZWwgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19IixXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LERvZXMgdGhlIGN1c3RvbWVyIGFzayBmb3IgYSByZWZ1bmQgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDoge3sgdGlja2V0IH19LENoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDoge3sgdGlja2V0IH19LCJbJ3NhZmV0eScsICdjbGVhbmxpbmVzcycsICdkcml2ZXIgcGVyZm9ybWFuY2UnLCAnR1BTL3JvdXRlJywgJ2xvc3QgaXRlbScsICdvdGhlciddIiwiWydWZXJ5IHBvc2l0aXZlJywgJ1NvbWV3aGF0IHBvc2l0aXZlJywgJ05ldXRyYWwnLCAnU29tZXdoYXQgbmVnYXRpdmUnLCAnVmVyeSBuZWdhdGl2ZSddIiwiWydZZXMnLCAnTm8nLCAnTm90IGFwcGxpY2FibGUnXSIsIlsnTm8nLCAnWWVzJ10iLCJbMCwgMSwgMiwgMywgNCwgNV0iLCx5ZXNfbm8sbXVsdGlwbGVfY2hvaWNlLGNoZWNrYm94LGxpbmVhcl9zY2FsZSxtdWx0aXBsZV9jaG9pY2UsZnJlZV90ZXh0LCJUaGlzIGlzc3VlIGltcGFjdHMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgYXBwLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGN1c3RvbWVyIGRpc3NhdGlzZmFjdGlvbiBhbmQgb3BlcmF0aW9uYWwgaW5lZmZpY2llbmNpZXMsIHRodXMgcmVxdWlyaW5nIHByb21wdCBhdHRlbnRpb24uIiwsIlRoZSBzZW50aW1lbnQgaXMgc29tZXdoYXQgbmVnYXRpdmUgYmVjYXVzZSB0aGUgY3VzdG9tZXIgaXMgZXhwZXJpZW5jaW5nIGEgcHJvYmxlbSB3aXRoIHRoZSBhcHAncyBHUFMsIHdoaWNoIGlzIGxlYWRpbmcgdG8gYW4gaW5jb252ZW5pZW5jZS4iLCJUaGUgaXNzdWUgbWVudGlvbmVkIGlzIGFib3V0IEdQUyBpbmFjY3VyYWN5LCBhbmQgdGhlcmUncyBubyBpbmRpY2F0aW9uIG9mIGFuIGFjY2lkZW50IG9yIGluanVyeSBpbiB0aGUgdGlja2V0IGRlc2NyaXB0aW9uLiIsVGhlIHRpY2tldCBtZW50aW9ucyBhbiBpc3N1ZSB3aXRoIHRoZSBhcHAncyBHUFMgYnV0IGRvZXMgbm90IGV4cGxpY2l0bHkgc3RhdGUgdGhhdCB0aGUgY3VzdG9tZXIgaXMgYXNraW5nIGZvciBhIHJlZnVuZC4sIlRoZSBpc3N1ZSBtZW50aW9uZWQgaW4gdGhlIHRpY2tldCBpcyByZWxhdGVkIHRvIHRoZSBHUFMvcm91dGUsIGFzIGl0IGRlc2NyaWJlcyB0aGUgYXBwJ3MgR1BTIGRpcmVjdGluZyB0aGUgZHJpdmVyIHRvIHRoZSB3cm9uZyBwaWNrLXVwIGxvY2F0aW9uLiIsIlszXQoKVGhlIGlzc3VlIG1lbnRpb25lZCBpbiB0aGUgdGlja2V0IGlzIHJlbGF0ZWQgdG8gdGhlIEdQUy9yb3V0ZSwgYXMgaXQgZGVzY3JpYmVzIHRoZSBhcHAncyBHUFMgZGlyZWN0aW5nIHRoZSBkcml2ZXIgdG8gdGhlIHdyb25nIHBpY2stdXAgbG9jYXRpb24uIiwiTm8KClRoZSB0aWNrZXQgbWVudGlvbnMgYW4gaXNzdWUgd2l0aCB0aGUgYXBwJ3MgR1BTIGJ1dCBkb2VzIG5vdCBleHBsaWNpdGx5IHN0YXRlIHRoYXQgdGhlIGN1c3RvbWVyIGlzIGFza2luZyBmb3IgYSByZWZ1bmQuIiwiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhlIGluYWNjdXJhY3kgb2YgdGhlIGFwcCdzIEdQUywgd2hpY2ggcmVzdWx0ZWQgaW4gZGlyZWN0aW5nIHRoZSBkcml2ZXIgdG8gdGhlIHdyb25nIHBpY2stdXAgbG9jYXRpb24uIFRoaXMgY2FuIGxlYWQgdG8gZGVsYXlzIGFuZCBpbmNvbnZlbmllbmNlIGZvciBib3RoIHRoZSBkcml2ZXIgYW5kIHRoZSBjdXN0b21lciwgc28gaXQncyBpbXBvcnRhbnQgdG8gYWRkcmVzcyB0aGUgR1BTIGZ1bmN0aW9uYWxpdHkgdG8gZW5zdXJlIGl0IHByb3ZpZGVzIGFjY3VyYXRlIGRpcmVjdGlvbnMuIiwiTm8gIApUaGUgaXNzdWUgbWVudGlvbmVkIGlzIGFib3V0IEdQUyBpbmFjY3VyYWN5LCBhbmQgdGhlcmUncyBubyBpbmRpY2F0aW9uIG9mIGFuIGFjY2lkZW50IG9yIGluanVyeSBpbiB0aGUgdGlja2V0IGRlc2NyaXB0aW9uLiIsIjQgIApUaGlzIGlzc3VlIGltcGFjdHMgdGhlIGNvcmUgZnVuY3Rpb25hbGl0eSBvZiB0aGUgYXBwLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGN1c3RvbWVyIGRpc3NhdGlzZmFjdGlvbiBhbmQgb3BlcmF0aW9uYWwgaW5lZmZpY2llbmNpZXMsIHRodXMgcmVxdWlyaW5nIHByb21wdCBhdHRlbnRpb24uIiwiU29tZXdoYXQgbmVnYXRpdmUgIApUaGUgc2VudGltZW50IGlzIHNvbWV3aGF0IG5lZ2F0aXZlIGJlY2F1c2UgdGhlIGN1c3RvbWVyIGlzIGV4cGVyaWVuY2luZyBhIHByb2JsZW0gd2l0aCB0aGUgYXBwJ3MgR1BTLCB3aGljaCBpcyBsZWFkaW5nIHRvIGFuIGluY29udmVuaWVuY2UuIg0KTm90IGFwcGxpY2FibGUsIlRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIG5vdCBhIHByb2JsZW0gb3IgY29tcGxhaW50LCBidXQgcmF0aGVyIGEgY29tcGxpbWVudC4gVGhlIGN1c3RvbWVyIGlzIGV4cHJlc3NpbmcgYXBwcmVjaWF0aW9uIGZvciB0aGVpciBkcml2ZXIncyBleGNlbGxlbnQgbmF2aWdhdGlvbiBhbmQgdGltZSBtYW5hZ2VtZW50IHNraWxscyBkdXJpbmcgcnVzaCBob3VyLiIsMSxObywiWydkcml2ZXIgcGVyZm9ybWFuY2UnLCAnR1BTL3JvdXRlJ10iLFZlcnkgcG9zaXRpdmUsSSB3YW50IHRvIGNvbXBsaW1lbnQgbXkgZHJpdmVyJ3MgZXhjZWxsZW50IG5hdmlnYXRpb24gYW5kIHRpbWUgbWFuYWdlbWVudCBkdXJpbmcgcnVzaCBob3VyLixBZ2VudF8xNyxZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4sMTUsWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4sMCwwLDEsMyxncHQtNG8sRmFsc2UsMC41LDEwMDAsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiCkRvZXMgdGhlIGN1c3RvbWVyIGFzayBmb3IgYSByZWZ1bmQgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogSSB3YW50IHRvIGNvbXBsaW1lbnQgbXkgZHJpdmVyJ3MgZXhjZWxsZW50IG5hdmlnYXRpb24gYW5kIHRpbWUgbWFuYWdlbWVudCBkdXJpbmcgcnVzaCBob3VyLgoKICAgIApObwogICAgClllcwogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KUGxlYXNlIHJlc3BvbmQgd2l0aCBqdXN0IHlvdXIgYW5zd2VyLiAKCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIHJlc3BvbnNlLiIsIgpXaGF0IGlzIHRoZSBzZW50aW1lbnQgb2YgdGhpcyB0aWNrZXQ/IFRpY2tldDogSSB3YW50IHRvIGNvbXBsaW1lbnQgbXkgZHJpdmVyJ3MgZXhjZWxsZW50IG5hdmlnYXRpb24gYW5kIHRpbWUgbWFuYWdlbWVudCBkdXJpbmcgcnVzaCBob3VyLgoKICAgIApWZXJ5IHBvc2l0aXZlCiAgICAKU29tZXdoYXQgcG9zaXRpdmUKICAgIApOZXV0cmFsCiAgICAKU29tZXdoYXQgbmVnYXRpdmUKICAgIApWZXJ5IG5lZ2F0aXZlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIgpJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IEkgd2FudCB0byBjb21wbGltZW50IG15IGRyaXZlcidzIGV4Y2VsbGVudCBuYXZpZ2F0aW9uIGFuZCB0aW1lIG1hbmFnZW1lbnQgZHVyaW5nIHJ1c2ggaG91ci4KCiAgICAKWWVzCiAgICAKTm8KICAgIApOb3QgYXBwbGljYWJsZQogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLgoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IixXaGF0IGlzIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IEkgd2FudCB0byBjb21wbGltZW50IG15IGRyaXZlcidzIGV4Y2VsbGVudCBuYXZpZ2F0aW9uIGFuZCB0aW1lIG1hbmFnZW1lbnQgZHVyaW5nIHJ1c2ggaG91ci4sIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBJIHdhbnQgdG8gY29tcGxpbWVudCBteSBkcml2ZXIncyBleGNlbGxlbnQgbmF2aWdhdGlvbiBhbmQgdGltZSBtYW5hZ2VtZW50IGR1cmluZyBydXNoIGhvdXIuCgowIDogTG93ZXN0CgoxIDogCgoyIDogCgozIDogCgo0IDogCgo1IDogSGlnaGVzdAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCB0aGUgY29kZSBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4gRS5nLiwgIiIxIiIgb3IgIiI1IiIgYnkgaXRzZWxmLgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiBJIHdhbnQgdG8gY29tcGxpbWVudCBteSBkcml2ZXIncyBleGNlbGxlbnQgbmF2aWdhdGlvbiBhbmQgdGltZSBtYW5hZ2VtZW50IGR1cmluZyBydXNoIGhvdXIuCgogICAgCjA6IHNhZmV0eQogICAgCjE6IGNsZWFubGluZXNzCiAgICAKMjogZHJpdmVyIHBlcmZvcm1hbmNlCiAgICAKMzogR1BTL3JvdXRlCiAgICAKNDogbG9zdCBpdGVtCiAgICAKNTogb3RoZXIKICAgIAoKCgoKCgpQbGVhc2UgcmVzcG9uZCBvbmx5IHdpdGggYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgY29kZSBvZiB0aGUgb3B0aW9ucyB0aGF0IGFwcGx5LCB3aXRoIHNxdWFyZSBicmFja2V0cy4gRS5nLiwgWzAsIDEsIDNdCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgeW91ciBjaG9pY2Ugb24gdGhlIG5leHQgbGluZS4iLDAuMDAwNzUsMC4wMDA1NTI1LDEzOTMuNzI4MjIyOTk2NTE1NiwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ1Q4U0RoekJaYzNXSnp6TGdzNVlQYUZCUCcsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIG5vdCBhIHByb2JsZW0gb3IgY29tcGxhaW50LCBidXQgcmF0aGVyIGEgY29tcGxpbWVudC4gVGhlIGN1c3RvbWVyIGlzIGV4cHJlc3NpbmcgYXBwcmVjaWF0aW9uIGZvciB0aGVpciBkcml2ZXIncyBleGNlbGxlbnQgbmF2aWdhdGlvbiBhbmQgdGltZSBtYW5hZ2VtZW50IHNraWxscyBkdXJpbmcgcnVzaCBob3VyLiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAzNiwgJ3Byb21wdF90b2tlbnMnOiA3NiwgJ3RvdGFsX3Rva2Vucyc6IDExMiwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTc5My43MjE5NzMwOTQxNzAyLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDc0ZmWklPekV2MWxSS3RwSmlyTkhSMzB5JywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICIiTm90IGFwcGxpY2FibGVcblxuVGhlIHRpY2tldCBpcyBhIGNvbXBsaW1lbnQgYWJvdXQgdGhlIGRyaXZlcidzIHNraWxscyBhbmQgZG9lcyBub3QgbWVudGlvbiBhbnkgc2FmZXR5IGlzc3VlcyBvciBhY2NpZGVudHMuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF85ZmFiYTlmMDM4JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDIyLCAncHJvbXB0X3Rva2Vucyc6IDEzNSwgJ3RvdGFsX3Rva2Vucyc6IDE1NywgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA1NSwieydpZCc6ICdjaGF0Y21wbC1BZU9MRFlDSVNtajUyTFZkMHpKWGRBRGtwVDBmWScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIjEgIFxuVGhpcyB0aWNrZXQgaXMgYSBwb3NpdGl2ZSBmZWVkYmFjayBvciBjb21wbGltZW50LCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIGFja25vd2xlZGdpbmcgZ29vZCBzZXJ2aWNlIGJ1dCBkb2Vzbid0IHJlcXVpcmUgaW1tZWRpYXRlIGFjdGlvbiBvciByZXNvbHV0aW9uIGxpa2UgYSBjb21wbGFpbnQgb3IgaXNzdWUgd291bGQuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MSwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9mNzg1ZWI1ZjQ3JywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDMyLCAncHJvbXB0X3Rva2Vucyc6IDE1OSwgJ3RvdGFsX3Rva2Vucyc6IDE5MSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTgxOC4xODE4MTgxODE4MTgsMTgwOS45NTQ3NTExMzEyMjE3LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDTG16NDliSXdaa3BRM3laNHJHZE95R2lHJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICIiTm9cblxuVGhlIGN1c3RvbWVyIGlzIGNvbXBsaW1lbnRpbmcgdGhlIGRyaXZlcidzIHBlcmZvcm1hbmNlLCBpbmRpY2F0aW5nIHNhdGlzZmFjdGlvbiB3aXRoIHRoZSBzZXJ2aWNlIHJhdGhlciB0aGFuIGRpc3NhdGlzZmFjdGlvbiB0aGF0IHdvdWxkIGxlYWQgdG8gYSByZWZ1bmQgcmVxdWVzdC4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjcsICdwcm9tcHRfdG9rZW5zJzogMTEzLCAndG90YWxfdG9rZW5zJzogMTQwLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxMzMzLjMzMzMzMzMzMzMzMzMsMTgwOS45NTQ3NTExMzEyMjE3LDAuMDAwNTU3NSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQzFrRThTMmJrYXlFVmNFZG1IZDRJSjl6NScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlsyLCAzXVxuXG5UaGUgY29tcGxpbWVudCBzcGVjaWZpY2FsbHkgbWVudGlvbnMgdGhlIGRyaXZlcidzIGV4Y2VsbGVudCBuYXZpZ2F0aW9uLCB3aGljaCByZWxhdGVzIHRvIEdQUy9yb3V0ZSAoMyksIGFuZCB0aW1lIG1hbmFnZW1lbnQsIHdoaWNoIHJlbGF0ZXMgdG8gZHJpdmVyIHBlcmZvcm1hbmNlICgyKS4iIiwgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMzYsICdwcm9tcHRfdG9rZW5zJzogMTU2LCAndG90YWxfdG9rZW5zJzogMTkyLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ0V0R3BGM1VPV3F1VVhwakkxdTAzdkJZcicsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlZlcnkgcG9zaXRpdmVcblxuVGhlIHRpY2tldCBleHByZXNzZXMgYSBjb21wbGltZW50IGFuZCBhcHByZWNpYXRpb24gZm9yIHRoZSBkcml2ZXIncyBleGNlbGxlbnQgc2tpbGxzLCBpbmRpY2F0aW5nIGEgdmVyeSBwb3NpdGl2ZSBzZW50aW1lbnQuIiIsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDIyLCAncHJvbXB0X3Rva2Vucyc6IDEzMywgJ3RvdGFsX3Rva2Vucyc6IDE1NSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA3MTc1LDAuMDAwNTUyNSwwLCJJZiB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBzYWZldHksIHdhcyB0aGVyZSBhbiBhY2NpZGVudCB3aGVyZSBzb21lb25lIHdhcyBodXJ0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSIsV2hhdCBpcyB0aGUgc2VudGltZW50IG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxXaGF0IGlzIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxEb2VzIHRoZSBjdXN0b21lciBhc2sgZm9yIGEgcmVmdW5kIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IHt7IHRpY2tldCB9fSxDaGVjayBhbGwgb2YgdGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhpcyB0aWNrZXQ6IHt7IHRpY2tldCB9fSwiWydzYWZldHknLCAnY2xlYW5saW5lc3MnLCAnZHJpdmVyIHBlcmZvcm1hbmNlJywgJ0dQUy9yb3V0ZScsICdsb3N0IGl0ZW0nLCAnb3RoZXInXSIsIlsnVmVyeSBwb3NpdGl2ZScsICdTb21ld2hhdCBwb3NpdGl2ZScsICdOZXV0cmFsJywgJ1NvbWV3aGF0IG5lZ2F0aXZlJywgJ1ZlcnkgbmVnYXRpdmUnXSIsIlsnWWVzJywgJ05vJywgJ05vdCBhcHBsaWNhYmxlJ10iLCJbJ05vJywgJ1llcyddIiwiWzAsIDEsIDIsIDMsIDQsIDVdIiwseWVzX25vLG11bHRpcGxlX2Nob2ljZSxjaGVja2JveCxsaW5lYXJfc2NhbGUsbXVsdGlwbGVfY2hvaWNlLGZyZWVfdGV4dCwiVGhpcyB0aWNrZXQgaXMgYSBwb3NpdGl2ZSBmZWVkYmFjayBvciBjb21wbGltZW50LCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIGFja25vd2xlZGdpbmcgZ29vZCBzZXJ2aWNlIGJ1dCBkb2Vzbid0IHJlcXVpcmUgaW1tZWRpYXRlIGFjdGlvbiBvciByZXNvbHV0aW9uIGxpa2UgYSBjb21wbGFpbnQgb3IgaXNzdWUgd291bGQuIiwsIlRoZSB0aWNrZXQgZXhwcmVzc2VzIGEgY29tcGxpbWVudCBhbmQgYXBwcmVjaWF0aW9uIGZvciB0aGUgZHJpdmVyJ3MgZXhjZWxsZW50IHNraWxscywgaW5kaWNhdGluZyBhIHZlcnkgcG9zaXRpdmUgc2VudGltZW50LiIsVGhlIHRpY2tldCBpcyBhIGNvbXBsaW1lbnQgYWJvdXQgdGhlIGRyaXZlcidzIHNraWxscyBhbmQgZG9lcyBub3QgbWVudGlvbiBhbnkgc2FmZXR5IGlzc3VlcyBvciBhY2NpZGVudHMuLCJUaGUgY3VzdG9tZXIgaXMgY29tcGxpbWVudGluZyB0aGUgZHJpdmVyJ3MgcGVyZm9ybWFuY2UsIGluZGljYXRpbmcgc2F0aXNmYWN0aW9uIHdpdGggdGhlIHNlcnZpY2UgcmF0aGVyIHRoYW4gZGlzc2F0aXNmYWN0aW9uIHRoYXQgd291bGQgbGVhZCB0byBhIHJlZnVuZCByZXF1ZXN0LiIsIlRoZSBjb21wbGltZW50IHNwZWNpZmljYWxseSBtZW50aW9ucyB0aGUgZHJpdmVyJ3MgZXhjZWxsZW50IG5hdmlnYXRpb24sIHdoaWNoIHJlbGF0ZXMgdG8gR1BTL3JvdXRlICgzKSwgYW5kIHRpbWUgbWFuYWdlbWVudCwgd2hpY2ggcmVsYXRlcyB0byBkcml2ZXIgcGVyZm9ybWFuY2UgKDIpLiIsIlsyLCAzXQoKVGhlIGNvbXBsaW1lbnQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIHRoZSBkcml2ZXIncyBleGNlbGxlbnQgbmF2aWdhdGlvbiwgd2hpY2ggcmVsYXRlcyB0byBHUFMvcm91dGUgKDMpLCBhbmQgdGltZSBtYW5hZ2VtZW50LCB3aGljaCByZWxhdGVzIHRvIGRyaXZlciBwZXJmb3JtYW5jZSAoMikuIiwiTm8KClRoZSBjdXN0b21lciBpcyBjb21wbGltZW50aW5nIHRoZSBkcml2ZXIncyBwZXJmb3JtYW5jZSwgaW5kaWNhdGluZyBzYXRpc2ZhY3Rpb24gd2l0aCB0aGUgc2VydmljZSByYXRoZXIgdGhhbiBkaXNzYXRpc2ZhY3Rpb24gdGhhdCB3b3VsZCBsZWFkIHRvIGEgcmVmdW5kIHJlcXVlc3QuIiwiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgbm90IGEgcHJvYmxlbSBvciBjb21wbGFpbnQsIGJ1dCByYXRoZXIgYSBjb21wbGltZW50LiBUaGUgY3VzdG9tZXIgaXMgZXhwcmVzc2luZyBhcHByZWNpYXRpb24gZm9yIHRoZWlyIGRyaXZlcidzIGV4Y2VsbGVudCBuYXZpZ2F0aW9uIGFuZCB0aW1lIG1hbmFnZW1lbnQgc2tpbGxzIGR1cmluZyBydXNoIGhvdXIuIiwiTm90IGFwcGxpY2FibGUKClRoZSB0aWNrZXQgaXMgYSBjb21wbGltZW50IGFib3V0IHRoZSBkcml2ZXIncyBza2lsbHMgYW5kIGRvZXMgbm90IG1lbnRpb24gYW55IHNhZmV0eSBpc3N1ZXMgb3IgYWNjaWRlbnRzLiIsIjEgIApUaGlzIHRpY2tldCBpcyBhIHBvc2l0aXZlIGZlZWRiYWNrIG9yIGNvbXBsaW1lbnQsIHdoaWNoIGlzIGltcG9ydGFudCBmb3IgYWNrbm93bGVkZ2luZyBnb29kIHNlcnZpY2UgYnV0IGRvZXNuJ3QgcmVxdWlyZSBpbW1lZGlhdGUgYWN0aW9uIG9yIHJlc29sdXRpb24gbGlrZSBhIGNvbXBsYWludCBvciBpc3N1ZSB3b3VsZC4iLCJWZXJ5IHBvc2l0aXZlCgpUaGUgdGlja2V0IGV4cHJlc3NlcyBhIGNvbXBsaW1lbnQgYW5kIGFwcHJlY2lhdGlvbiBmb3IgdGhlIGRyaXZlcidzIGV4Y2VsbGVudCBza2lsbHMsIGluZGljYXRpbmcgYSB2ZXJ5IHBvc2l0aXZlIHNlbnRpbWVudC4iDQpObywiVGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgdGhhdCB0aGUgdmVoaWNsZSBwcm92aWRlZCBkaWQgbm90IG1hdGNoIHRoZSBkZXNjcmlwdGlvbiBnaXZlbiBpbiB0aGUgYXBwLiBUaGlzIGRpc2NyZXBhbmN5IGNhdXNlZCBjb25mdXNpb24gYW5kIGNvbmNlcm4gZm9yIHRoZSBjdXN0b21lci4gSXQncyBpbXBvcnRhbnQgdG8gYWRkcmVzcyB0aGlzIGJ5IHZlcmlmeWluZyB0aGUgYWNjdXJhY3kgb2YgdmVoaWNsZSBkZXNjcmlwdGlvbnMgaW4gdGhlIGFwcCB0byBlbnN1cmUgdGhleSBhbGlnbiB3aXRoIHdoYXQgaXMgYWN0dWFsbHkgcHJvdmlkZWQsIHRoZXJlYnkgZW5oYW5jaW5nIGN1c3RvbWVyIHRydXN0IGFuZCBzYXRpc2ZhY3Rpb24uIiwzLE5vLFsnb3RoZXInXSxTb21ld2hhdCBuZWdhdGl2ZSxUaGUgdmVoaWNsZSBkaWRuJ3QgbWF0Y2ggdGhlIGRlc2NyaXB0aW9uIGluIHRoZSBhcHAuIEl0IHdhcyBjb25mdXNpbmcgYW5kIGNvbmNlcm5pbmcuLEFnZW50XzE4LFlvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiwxNSxZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LiwwLDAsMSwzLGdwdC00byxGYWxzZSwwLjUsMTAwMCwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCIKRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiBUaGUgdmVoaWNsZSBkaWRuJ3QgbWF0Y2ggdGhlIGRlc2NyaXB0aW9uIGluIHRoZSBhcHAuIEl0IHdhcyBjb25mdXNpbmcgYW5kIGNvbmNlcm5pbmcuCgogICAgCk5vCiAgICAKWWVzCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgpQbGVhc2UgcmVzcG9uZCB3aXRoIGp1c3QgeW91ciBhbnN3ZXIuIAoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHlvdXIgcmVzcG9uc2UuIiwiCldoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBUaGUgdmVoaWNsZSBkaWRuJ3QgbWF0Y2ggdGhlIGRlc2NyaXB0aW9uIGluIHRoZSBhcHAuIEl0IHdhcyBjb25mdXNpbmcgYW5kIGNvbmNlcm5pbmcuCgogICAgClZlcnkgcG9zaXRpdmUKICAgIApTb21ld2hhdCBwb3NpdGl2ZQogICAgCk5ldXRyYWwKICAgIApTb21ld2hhdCBuZWdhdGl2ZQogICAgClZlcnkgbmVnYXRpdmUKICAgIAoKT25seSAxIG9wdGlvbiBtYXkgYmUgc2VsZWN0ZWQuCgpSZXNwb25kIG9ubHkgd2l0aCBhIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgb3B0aW9ucy4KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiCklmIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHNhZmV0eSwgd2FzIHRoZXJlIGFuIGFjY2lkZW50IHdoZXJlIHNvbWVvbmUgd2FzIGh1cnQ/IFRpY2tldDogVGhlIHZlaGljbGUgZGlkbid0IG1hdGNoIHRoZSBkZXNjcmlwdGlvbiBpbiB0aGUgYXBwLiBJdCB3YXMgY29uZnVzaW5nIGFuZCBjb25jZXJuaW5nLgoKICAgIApZZXMKICAgIApObwogICAgCk5vdCBhcHBsaWNhYmxlCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggYSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHlvdSBjaG9zZSB0aGF0IG9wdGlvbiBvbiB0aGUgbmV4dCBsaW5lLiIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLFdoYXQgaXMgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogVGhlIHZlaGljbGUgZGlkbid0IG1hdGNoIHRoZSBkZXNjcmlwdGlvbiBpbiB0aGUgYXBwLiBJdCB3YXMgY29uZnVzaW5nIGFuZCBjb25jZXJuaW5nLiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IFRoZSB2ZWhpY2xlIGRpZG4ndCBtYXRjaCB0aGUgZGVzY3JpcHRpb24gaW4gdGhlIGFwcC4gSXQgd2FzIGNvbmZ1c2luZyBhbmQgY29uY2VybmluZy4KCjAgOiBMb3dlc3QKCjEgOiAKCjIgOiAKCjMgOiAKCjQgOiAKCjUgOiBIaWdoZXN0CgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIHRoZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLiBFLmcuLCAiIjEiIiBvciAiIjUiIiBieSBpdHNlbGYuCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB3aHkgeW91IGNob3NlIHRoYXQgb3B0aW9uIG9uIHRoZSBuZXh0IGxpbmUuIiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJDaGVjayBhbGwgb2YgdGhlIGlzc3VlcyBtZW50aW9uZWQgaW4gdGhpcyB0aWNrZXQ6IFRoZSB2ZWhpY2xlIGRpZG4ndCBtYXRjaCB0aGUgZGVzY3JpcHRpb24gaW4gdGhlIGFwcC4gSXQgd2FzIGNvbmZ1c2luZyBhbmQgY29uY2VybmluZy4KCiAgICAKMDogc2FmZXR5CiAgICAKMTogY2xlYW5saW5lc3MKICAgIAoyOiBkcml2ZXIgcGVyZm9ybWFuY2UKICAgIAozOiBHUFMvcm91dGUKICAgIAo0OiBsb3N0IGl0ZW0KICAgIAo1OiBvdGhlcgogICAgCgoKCgoKClBsZWFzZSByZXNwb25kIG9ubHkgd2l0aCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBjb2RlIG9mIHRoZSBvcHRpb25zIHRoYXQgYXBwbHksIHdpdGggc3F1YXJlIGJyYWNrZXRzLiBFLmcuLCBbMCwgMSwgM10KCgpBZnRlciB0aGUgYW5zd2VyLCB5b3UgY2FuIHB1dCBhIGNvbW1lbnQgZXhwbGFpbmluZyB5b3VyIGNob2ljZSBvbiB0aGUgbmV4dCBsaW5lLiIsMC4wMDA2NjI1LDAuMDAwNTQ1LDEyMTkuNTEyMTk1MTIxOTUxMiwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ2cxM0ZZMkhWc3BYN3hPNFJKUDJtdzNHaScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIlRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoYXQgdGhlIHZlaGljbGUgcHJvdmlkZWQgZGlkIG5vdCBtYXRjaCB0aGUgZGVzY3JpcHRpb24gZ2l2ZW4gaW4gdGhlIGFwcC4gVGhpcyBkaXNjcmVwYW5jeSBjYXVzZWQgY29uZnVzaW9uIGFuZCBjb25jZXJuIGZvciB0aGUgY3VzdG9tZXIuIEl0J3MgaW1wb3J0YW50IHRvIGFkZHJlc3MgdGhpcyBieSB2ZXJpZnlpbmcgdGhlIGFjY3VyYWN5IG9mIHZlaGljbGUgZGVzY3JpcHRpb25zIGluIHRoZSBhcHAgdG8gZW5zdXJlIHRoZXkgYWxpZ24gd2l0aCB3aGF0IGlzIGFjdHVhbGx5IHByb3ZpZGVkLCB0aGVyZWJ5IGVuaGFuY2luZyBjdXN0b21lciB0cnVzdCBhbmQgc2F0aXNmYWN0aW9uLiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiA2MywgJ3Byb21wdF90b2tlbnMnOiA3NywgJ3RvdGFsX3Rva2Vucyc6IDE0MCwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTc4NS43MTQyODU3MTQyODU2LCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDbU9sbk4xdTJzM3VkdzV0OVdsMUVOdWN0JywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICIiTm8gIFxuVGhlIHRpY2tldCBtZW50aW9ucyBhIGRpc2NyZXBhbmN5IGluIHZlaGljbGUgZGVzY3JpcHRpb24sIHdoaWNoIGlzIGNvbmNlcm5pbmcgYnV0IGRvZXNuJ3QgaW5kaWNhdGUgYW4gYWNjaWRlbnQgb3IgaW5qdXJ5LiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyMiwgJ3Byb21wdF90b2tlbnMnOiAxMzYsICd0b3RhbF90b2tlbnMnOiAxNTgsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwODIyNSwieydpZCc6ICdjaGF0Y21wbC1BZU9MRGptYWhFZkNCRmMxU0VUY0tucmp3ejUzeicsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnMyAgXG5UaGlzIHRpY2tldCBpbnZvbHZlcyBhIGRpc2NyZXBhbmN5IHRoYXQgY291bGQgcG90ZW50aWFsbHkgYWZmZWN0IGN1c3RvbWVyIHRydXN0IGFuZCBzYWZldHksIHNvIGl0IHJlcXVpcmVzIHByb21wdCBhdHRlbnRpb24uIEhvd2V2ZXIsIGl0IGRvZXMgbm90IGluZGljYXRlIGFuIGltbWVkaWF0ZSBkYW5nZXIgb3IgZW1lcmdlbmN5LCBzbyBpdCBpcyBub3QgdGhlIGhpZ2hlc3QgcHJpb3JpdHkuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUxLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogNDIsICdwcm9tcHRfdG9rZW5zJzogMTYwLCAndG90YWxfdG9rZW5zJzogMjAyLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxMjE1LjgwNTQ3MTEyNDYyLDE4MzQuODYyMzg1MzIxMTAwOSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ2xrZzVlR2xXdmJLcUQ3NEdBY3lvNXBzTScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnTm9cblxuVGhlIGN1c3RvbWVyIGV4cHJlc3NlZCBjb25mdXNpb24gYW5kIGNvbmNlcm4gYWJvdXQgdGhlIHZlaGljbGUgbm90IG1hdGNoaW5nIHRoZSBkZXNjcmlwdGlvbiwgYnV0IHRoZXJlIGlzIG5vIGV4cGxpY2l0IHJlcXVlc3QgZm9yIGEgcmVmdW5kIGluIHRoZSB0aWNrZXQuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjksICdwcm9tcHRfdG9rZW5zJzogMTE0LCAndG90YWxfdG9rZW5zJzogMTQzLCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxNTA5LjQzMzk2MjI2NDE1MSwxNzM5LjEzMDQzNDc4MjYwODcsMC4wMDA1NjAwMDAwMDAwMDAwMDAxLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xDaWdwVGxoRDdDYnF1YjJxeXFtRnpESjNoJywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdbNV0gIFxuVGhlIGlzc3VlIG1lbnRpb25lZCBpcyB0aGF0IHRoZSB2ZWhpY2xlIGRpZG5cJ3QgbWF0Y2ggdGhlIGRlc2NyaXB0aW9uIGluIHRoZSBhcHAsIHdoaWNoIGZhbGxzIHVuZGVyICIib3RoZXIiIiBjb25jZXJucy4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyNywgJ3Byb21wdF90b2tlbnMnOiAxNTcsICd0b3RhbF90b2tlbnMnOiAxODQsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLCJ7J2lkJzogJ2NoYXRjbXBsLUFlT0xESjFoSW5pSTBsSWF5RVJWMVJrd2oxYjQ3JywgJ2Nob2ljZXMnOiBbeydmaW5pc2hfcmVhc29uJzogJ3N0b3AnLCAnaW5kZXgnOiAwLCAnbG9ncHJvYnMnOiBOb25lLCAnbWVzc2FnZSc6IHsnY29udGVudCc6ICdTb21ld2hhdCBuZWdhdGl2ZSAgXG5UaGUgdGlja2V0IGV4cHJlc3NlcyBjb25mdXNpb24gYW5kIGNvbmNlcm4sIGluZGljYXRpbmcgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIHZlaGljbGUgbm90IG1hdGNoaW5nIHRoZSBkZXNjcmlwdGlvbi4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTEsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfOWZhYmE5ZjAzOCcsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyMSwgJ3Byb21wdF90b2tlbnMnOiAxMzQsICd0b3RhbF90b2tlbnMnOiAxNTUsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwODIsMC4wMDA1NzUsMCwiSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLFdoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sV2hhdCBpcyB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiB7eyB0aWNrZXQgfX0sIlsnc2FmZXR5JywgJ2NsZWFubGluZXNzJywgJ2RyaXZlciBwZXJmb3JtYW5jZScsICdHUFMvcm91dGUnLCAnbG9zdCBpdGVtJywgJ290aGVyJ10iLCJbJ1ZlcnkgcG9zaXRpdmUnLCAnU29tZXdoYXQgcG9zaXRpdmUnLCAnTmV1dHJhbCcsICdTb21ld2hhdCBuZWdhdGl2ZScsICdWZXJ5IG5lZ2F0aXZlJ10iLCJbJ1llcycsICdObycsICdOb3QgYXBwbGljYWJsZSddIiwiWydObycsICdZZXMnXSIsIlswLCAxLCAyLCAzLCA0LCA1XSIsLHllc19ubyxtdWx0aXBsZV9jaG9pY2UsY2hlY2tib3gsbGluZWFyX3NjYWxlLG11bHRpcGxlX2Nob2ljZSxmcmVlX3RleHQsIlRoaXMgdGlja2V0IGludm9sdmVzIGEgZGlzY3JlcGFuY3kgdGhhdCBjb3VsZCBwb3RlbnRpYWxseSBhZmZlY3QgY3VzdG9tZXIgdHJ1c3QgYW5kIHNhZmV0eSwgc28gaXQgcmVxdWlyZXMgcHJvbXB0IGF0dGVudGlvbi4gSG93ZXZlciwgaXQgZG9lcyBub3QgaW5kaWNhdGUgYW4gaW1tZWRpYXRlIGRhbmdlciBvciBlbWVyZ2VuY3ksIHNvIGl0IGlzIG5vdCB0aGUgaGlnaGVzdCBwcmlvcml0eS4iLCwiVGhlIHRpY2tldCBleHByZXNzZXMgY29uZnVzaW9uIGFuZCBjb25jZXJuLCBpbmRpY2F0aW5nIGRpc3NhdGlzZmFjdGlvbiB3aXRoIHRoZSB2ZWhpY2xlIG5vdCBtYXRjaGluZyB0aGUgZGVzY3JpcHRpb24uIiwiVGhlIHRpY2tldCBtZW50aW9ucyBhIGRpc2NyZXBhbmN5IGluIHZlaGljbGUgZGVzY3JpcHRpb24sIHdoaWNoIGlzIGNvbmNlcm5pbmcgYnV0IGRvZXNuJ3QgaW5kaWNhdGUgYW4gYWNjaWRlbnQgb3IgaW5qdXJ5LiIsIlRoZSBjdXN0b21lciBleHByZXNzZWQgY29uZnVzaW9uIGFuZCBjb25jZXJuIGFib3V0IHRoZSB2ZWhpY2xlIG5vdCBtYXRjaGluZyB0aGUgZGVzY3JpcHRpb24sIGJ1dCB0aGVyZSBpcyBubyBleHBsaWNpdCByZXF1ZXN0IGZvciBhIHJlZnVuZCBpbiB0aGUgdGlja2V0LiIsIlRoZSBpc3N1ZSBtZW50aW9uZWQgaXMgdGhhdCB0aGUgdmVoaWNsZSBkaWRuJ3QgbWF0Y2ggdGhlIGRlc2NyaXB0aW9uIGluIHRoZSBhcHAsIHdoaWNoIGZhbGxzIHVuZGVyICIib3RoZXIiIiBjb25jZXJucy4iLCJbNV0gIApUaGUgaXNzdWUgbWVudGlvbmVkIGlzIHRoYXQgdGhlIHZlaGljbGUgZGlkbid0IG1hdGNoIHRoZSBkZXNjcmlwdGlvbiBpbiB0aGUgYXBwLCB3aGljaCBmYWxscyB1bmRlciAiIm90aGVyIiIgY29uY2VybnMuIiwiTm8KClRoZSBjdXN0b21lciBleHByZXNzZWQgY29uZnVzaW9uIGFuZCBjb25jZXJuIGFib3V0IHRoZSB2ZWhpY2xlIG5vdCBtYXRjaGluZyB0aGUgZGVzY3JpcHRpb24sIGJ1dCB0aGVyZSBpcyBubyBleHBsaWNpdCByZXF1ZXN0IGZvciBhIHJlZnVuZCBpbiB0aGUgdGlja2V0LiIsIlRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIHRoYXQgdGhlIHZlaGljbGUgcHJvdmlkZWQgZGlkIG5vdCBtYXRjaCB0aGUgZGVzY3JpcHRpb24gZ2l2ZW4gaW4gdGhlIGFwcC4gVGhpcyBkaXNjcmVwYW5jeSBjYXVzZWQgY29uZnVzaW9uIGFuZCBjb25jZXJuIGZvciB0aGUgY3VzdG9tZXIuIEl0J3MgaW1wb3J0YW50IHRvIGFkZHJlc3MgdGhpcyBieSB2ZXJpZnlpbmcgdGhlIGFjY3VyYWN5IG9mIHZlaGljbGUgZGVzY3JpcHRpb25zIGluIHRoZSBhcHAgdG8gZW5zdXJlIHRoZXkgYWxpZ24gd2l0aCB3aGF0IGlzIGFjdHVhbGx5IHByb3ZpZGVkLCB0aGVyZWJ5IGVuaGFuY2luZyBjdXN0b21lciB0cnVzdCBhbmQgc2F0aXNmYWN0aW9uLiIsIk5vICAKVGhlIHRpY2tldCBtZW50aW9ucyBhIGRpc2NyZXBhbmN5IGluIHZlaGljbGUgZGVzY3JpcHRpb24sIHdoaWNoIGlzIGNvbmNlcm5pbmcgYnV0IGRvZXNuJ3QgaW5kaWNhdGUgYW4gYWNjaWRlbnQgb3IgaW5qdXJ5LiIsIjMgIApUaGlzIHRpY2tldCBpbnZvbHZlcyBhIGRpc2NyZXBhbmN5IHRoYXQgY291bGQgcG90ZW50aWFsbHkgYWZmZWN0IGN1c3RvbWVyIHRydXN0IGFuZCBzYWZldHksIHNvIGl0IHJlcXVpcmVzIHByb21wdCBhdHRlbnRpb24uIEhvd2V2ZXIsIGl0IGRvZXMgbm90IGluZGljYXRlIGFuIGltbWVkaWF0ZSBkYW5nZXIgb3IgZW1lcmdlbmN5LCBzbyBpdCBpcyBub3QgdGhlIGhpZ2hlc3QgcHJpb3JpdHkuIiwiU29tZXdoYXQgbmVnYXRpdmUgIApUaGUgdGlja2V0IGV4cHJlc3NlcyBjb25mdXNpb24gYW5kIGNvbmNlcm4sIGluZGljYXRpbmcgZGlzc2F0aXNmYWN0aW9uIHdpdGggdGhlIHZlaGljbGUgbm90IG1hdGNoaW5nIHRoZSBkZXNjcmlwdGlvbi4iDQpOb3QgYXBwbGljYWJsZSxUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBhIHByb2JsZW0gd2l0aCBwYXltZW50IHByb2Nlc3NpbmcgYWZ0ZXIgdGhlIGN1c3RvbWVyJ3MgbGFzdCByaWRlLiBUaGUgY3VzdG9tZXIgaXMgcmVxdWVzdGluZyBhc3Npc3RhbmNlIHRvIGludmVzdGlnYXRlIGFuZCByZXNvbHZlIHRoZSBwYXltZW50IGlzc3VlLiwzLE5vLFsnb3RoZXInXSxOZXV0cmFsLEkgZmFjZWQgYW4gaXNzdWUgd2l0aCBwYXltZW50IHByb2Nlc3NpbmcgYWZ0ZXIgbXkgbGFzdCByaWRlLiBDYW4geW91IGxvb2sgaW50byB0aGlzPyxBZ2VudF8xOSxZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4sMTUsWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4sMCwwLDEsMyxncHQtNG8sRmFsc2UsMC41LDEwMDAsIllvdSBhcmUgYW5zd2VyaW5nIHF1ZXN0aW9ucyBhcyBpZiB5b3Ugd2VyZSBhIGh1bWFuLiBEbyBub3QgYnJlYWsgY2hhcmFjdGVyLiBZb3VyIHRyYWl0czogeydwZXJzb25hJzogJ1lvdSBhcmUgYW4gZXhwZXJ0IGN1c3RvbWVyIHNlcnZpY2UgYWdlbnQuJywgJ3llYXJzX2V4cGVyaWVuY2UnOiAxNX0iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiCkRvZXMgdGhlIGN1c3RvbWVyIGFzayBmb3IgYSByZWZ1bmQgaW4gdGhpcyB0aWNrZXQ/IFRpY2tldDogSSBmYWNlZCBhbiBpc3N1ZSB3aXRoIHBheW1lbnQgcHJvY2Vzc2luZyBhZnRlciBteSBsYXN0IHJpZGUuIENhbiB5b3UgbG9vayBpbnRvIHRoaXM/CgogICAgCk5vCiAgICAKWWVzCiAgICAKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgpQbGVhc2UgcmVzcG9uZCB3aXRoIGp1c3QgeW91ciBhbnN3ZXIuIAoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHlvdXIgcmVzcG9uc2UuIiwiCldoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiBJIGZhY2VkIGFuIGlzc3VlIHdpdGggcGF5bWVudCBwcm9jZXNzaW5nIGFmdGVyIG15IGxhc3QgcmlkZS4gQ2FuIHlvdSBsb29rIGludG8gdGhpcz8KCiAgICAKVmVyeSBwb3NpdGl2ZQogICAgClNvbWV3aGF0IHBvc2l0aXZlCiAgICAKTmV1dHJhbAogICAgClNvbWV3aGF0IG5lZ2F0aXZlCiAgICAKVmVyeSBuZWdhdGl2ZQogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLgoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCIKSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiBJIGZhY2VkIGFuIGlzc3VlIHdpdGggcGF5bWVudCBwcm9jZXNzaW5nIGFmdGVyIG15IGxhc3QgcmlkZS4gQ2FuIHlvdSBsb29rIGludG8gdGhpcz8KCiAgICAKWWVzCiAgICAKTm8KICAgIApOb3QgYXBwbGljYWJsZQogICAgCgpPbmx5IDEgb3B0aW9uIG1heSBiZSBzZWxlY3RlZC4KClJlc3BvbmQgb25seSB3aXRoIGEgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZSBvcHRpb25zLgoKCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IixXaGF0IGlzIHRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0PyBUaWNrZXQ6IEkgZmFjZWQgYW4gaXNzdWUgd2l0aCBwYXltZW50IHByb2Nlc3NpbmcgYWZ0ZXIgbXkgbGFzdCByaWRlLiBDYW4geW91IGxvb2sgaW50byB0aGlzPywiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIk9uIGEgc2NhbGUgZnJvbSAwIHRvIDUsIHdoYXQgaXMgdGhlIHByaW9yaXR5IGxldmVsIG9mIHRoaXMgdGlja2V0PyBUaWNrZXQ6IEkgZmFjZWQgYW4gaXNzdWUgd2l0aCBwYXltZW50IHByb2Nlc3NpbmcgYWZ0ZXIgbXkgbGFzdCByaWRlLiBDYW4geW91IGxvb2sgaW50byB0aGlzPwoKMCA6IExvd2VzdAoKMSA6IAoKMiA6IAoKMyA6IAoKNCA6IAoKNSA6IEhpZ2hlc3QKCk9ubHkgMSBvcHRpb24gbWF5IGJlIHNlbGVjdGVkLgoKUmVzcG9uZCBvbmx5IHdpdGggdGhlIGNvZGUgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlIG9wdGlvbnMuIEUuZy4sICIiMSIiIG9yICIiNSIiIGJ5IGl0c2VsZi4KCkFmdGVyIHRoZSBhbnN3ZXIsIHlvdSBjYW4gcHV0IGEgY29tbWVudCBleHBsYWluaW5nIHdoeSB5b3UgY2hvc2UgdGhhdCBvcHRpb24gb24gdGhlIG5leHQgbGluZS4iLCJZb3UgYXJlIGFuc3dlcmluZyBxdWVzdGlvbnMgYXMgaWYgeW91IHdlcmUgYSBodW1hbi4gRG8gbm90IGJyZWFrIGNoYXJhY3Rlci4gWW91ciB0cmFpdHM6IHsncGVyc29uYSc6ICdZb3UgYXJlIGFuIGV4cGVydCBjdXN0b21lciBzZXJ2aWNlIGFnZW50LicsICd5ZWFyc19leHBlcmllbmNlJzogMTV9IiwiWW91IGFyZSBhbnN3ZXJpbmcgcXVlc3Rpb25zIGFzIGlmIHlvdSB3ZXJlIGEgaHVtYW4uIERvIG5vdCBicmVhayBjaGFyYWN0ZXIuIFlvdXIgdHJhaXRzOiB7J3BlcnNvbmEnOiAnWW91IGFyZSBhbiBleHBlcnQgY3VzdG9tZXIgc2VydmljZSBhZ2VudC4nLCAneWVhcnNfZXhwZXJpZW5jZSc6IDE1fSIsIkNoZWNrIGFsbCBvZiB0aGUgaXNzdWVzIG1lbnRpb25lZCBpbiB0aGlzIHRpY2tldDogSSBmYWNlZCBhbiBpc3N1ZSB3aXRoIHBheW1lbnQgcHJvY2Vzc2luZyBhZnRlciBteSBsYXN0IHJpZGUuIENhbiB5b3UgbG9vayBpbnRvIHRoaXM/CgogICAgCjA6IHNhZmV0eQogICAgCjE6IGNsZWFubGluZXNzCiAgICAKMjogZHJpdmVyIHBlcmZvcm1hbmNlCiAgICAKMzogR1BTL3JvdXRlCiAgICAKNDogbG9zdCBpdGVtCiAgICAKNTogb3RoZXIKICAgIAoKCgoKCgpQbGVhc2UgcmVzcG9uZCBvbmx5IHdpdGggYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0aGUgY29kZSBvZiB0aGUgb3B0aW9ucyB0aGF0IGFwcGx5LCB3aXRoIHNxdWFyZSBicmFja2V0cy4gRS5nLiwgWzAsIDEsIDNdCgoKQWZ0ZXIgdGhlIGFuc3dlciwgeW91IGNhbiBwdXQgYSBjb21tZW50IGV4cGxhaW5pbmcgeW91ciBjaG9pY2Ugb24gdGhlIG5leHQgbGluZS4iLDAuMDAwNjc3NDk5OTk5OTk5OTk5OSwwLjAwMDUzMDAwMDAwMDAwMDAwMDEsMTQxOC40Mzk3MTYzMTIwNTcsInsnaWQnOiAnY2hhdGNtcGwtQWVPTER2V3E5ZDVOWUdQVzVDQzVEd2hRd3Y1YWwnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogIiJUaGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldCBpcyBhIHByb2JsZW0gd2l0aCBwYXltZW50IHByb2Nlc3NpbmcgYWZ0ZXIgdGhlIGN1c3RvbWVyJ3MgbGFzdCByaWRlLiBUaGUgY3VzdG9tZXIgaXMgcmVxdWVzdGluZyBhc3Npc3RhbmNlIHRvIGludmVzdGlnYXRlIGFuZCByZXNvbHZlIHRoZSBwYXltZW50IGlzc3VlLiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTEsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAzMSwgJ3Byb21wdF90b2tlbnMnOiA3OSwgJ3RvdGFsX3Rva2Vucyc6IDExMCwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMTgwMS44MDE4MDE4MDE4MDIsInsnaWQnOiAnY2hhdGNtcGwtQWVPTEN2Z0VNbldBZW5URlAxMlRiMDY3NWtHclInLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ05vdCBhcHBsaWNhYmxlXG5cblRoZSB0aWNrZXQgbWVudGlvbnMgYW4gaXNzdWUgd2l0aCBwYXltZW50IHByb2Nlc3NpbmcsIHdoaWNoIGlzIHVucmVsYXRlZCB0byBzYWZldHkgb3IgYW55IGFjY2lkZW50cy4nLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTAsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAyMSwgJ3Byb21wdF90b2tlbnMnOiAxMzgsICd0b3RhbF90b2tlbnMnOiAxNTksICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDAuMDAwNTA3NSwieydpZCc6ICdjaGF0Y21wbC1BZU9MRFJ4NmFTNlZjTFdkcXZxUjlSajQ5MEFzTScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAiIjMgIFxuUGF5bWVudCBwcm9jZXNzaW5nIGlzc3VlcyBjYW4gaW1wYWN0IGJvdGggdGhlIGN1c3RvbWVyIGFuZCB0aGUgY29tcGFueSdzIG9wZXJhdGlvbnMsIHNvIHRoZXkgc2hvdWxkIGJlIGFkZHJlc3NlZCBwcm9tcHRseSB0byBlbnN1cmUgY3VzdG9tZXIgc2F0aXNmYWN0aW9uIGFuZCBwcm9wZXIgZmluYW5jaWFsIGhhbmRsaW5nLiIiLCAncmVmdXNhbCc6IE5vbmUsICdyb2xlJzogJ2Fzc2lzdGFudCcsICdhdWRpbyc6IE5vbmUsICdmdW5jdGlvbl9jYWxsJzogTm9uZSwgJ3Rvb2xfY2FsbHMnOiBOb25lfX1dLCAnY3JlYXRlZCc6IDE3MzQxOTAwNTEsICdtb2RlbCc6ICdncHQtNG8tMjAyNC0wOC0wNicsICdvYmplY3QnOiAnY2hhdC5jb21wbGV0aW9uJywgJ3NlcnZpY2VfdGllcic6IE5vbmUsICdzeXN0ZW1fZmluZ2VycHJpbnQnOiAnZnBfYTc5ZDhkYWMxZicsICd1c2FnZSc6IHsnY29tcGxldGlvbl90b2tlbnMnOiAzMCwgJ3Byb21wdF90b2tlbnMnOiAxNjIsICd0b3RhbF90b2tlbnMnOiAxOTIsICdjb21wbGV0aW9uX3Rva2Vuc19kZXRhaWxzJzogeydhY2NlcHRlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDAsICdhdWRpb190b2tlbnMnOiAwLCAncmVhc29uaW5nX3Rva2Vucyc6IDAsICdyZWplY3RlZF9wcmVkaWN0aW9uX3Rva2Vucyc6IDB9LCAncHJvbXB0X3Rva2Vuc19kZXRhaWxzJzogeydhdWRpb190b2tlbnMnOiAwLCAnY2FjaGVkX3Rva2Vucyc6IDB9fX0iLDE5NzAuNDQzMzQ5NzUzNjk0NSwxODg2Ljc5MjQ1MjgzMDE4ODMsInsnaWQnOiAnY2hhdGNtcGwtQWVPTENCZVVMQ01YbVpocDYweFNrQXg0U3VKQTQnLCAnY2hvaWNlcyc6IFt7J2ZpbmlzaF9yZWFzb24nOiAnc3RvcCcsICdpbmRleCc6IDAsICdsb2dwcm9icyc6IE5vbmUsICdtZXNzYWdlJzogeydjb250ZW50JzogJ05vXG5cblRoZSBjdXN0b21lciBpcyBhc2tpbmcgZm9yIGFzc2lzdGFuY2Ugd2l0aCBhIHBheW1lbnQgcHJvY2Vzc2luZyBpc3N1ZSwgbm90IGRpcmVjdGx5IHJlcXVlc3RpbmcgYSByZWZ1bmQuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjAsICdwcm9tcHRfdG9rZW5zJzogMTE2LCAndG90YWxfdG9rZW5zJzogMTM2LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwxNDc2LjAxNDc2MDE0NzYwMTcsMjA0MC44MTYzMjY1MzA2MTIzLDAuMDAwNTU0OTk5OTk5OTk5OTk5OSwieydpZCc6ICdjaGF0Y21wbC1BZU9MQ0tNaTZkSk9ydzNYbjNpalV1eHIxbElHVScsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnWzVdICBcblRoZSBpc3N1ZSBtZW50aW9uZWQgaXMgcmVsYXRlZCB0byBwYXltZW50IHByb2Nlc3NpbmcsIHdoaWNoIGZhbGxzIHVuZGVyICIib3RoZXIiIiBhcyBpdCBkb2VzblwndCBtYXRjaCB0aGUgc3BlY2lmaWMgY2F0ZWdvcmllcyBsaXN0ZWQuJywgJ3JlZnVzYWwnOiBOb25lLCAncm9sZSc6ICdhc3Npc3RhbnQnLCAnYXVkaW8nOiBOb25lLCAnZnVuY3Rpb25fY2FsbCc6IE5vbmUsICd0b29sX2NhbGxzJzogTm9uZX19XSwgJ2NyZWF0ZWQnOiAxNzM0MTkwMDUwLCAnbW9kZWwnOiAnZ3B0LTRvLTIwMjQtMDgtMDYnLCAnb2JqZWN0JzogJ2NoYXQuY29tcGxldGlvbicsICdzZXJ2aWNlX3RpZXInOiBOb25lLCAnc3lzdGVtX2ZpbmdlcnByaW50JzogJ2ZwX2E3OWQ4ZGFjMWYnLCAndXNhZ2UnOiB7J2NvbXBsZXRpb25fdG9rZW5zJzogMjgsICdwcm9tcHRfdG9rZW5zJzogMTU5LCAndG90YWxfdG9rZW5zJzogMTg3LCAnY29tcGxldGlvbl90b2tlbnNfZGV0YWlscyc6IHsnYWNjZXB0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwLCAnYXVkaW9fdG9rZW5zJzogMCwgJ3JlYXNvbmluZ190b2tlbnMnOiAwLCAncmVqZWN0ZWRfcHJlZGljdGlvbl90b2tlbnMnOiAwfSwgJ3Byb21wdF90b2tlbnNfZGV0YWlscyc6IHsnYXVkaW9fdG9rZW5zJzogMCwgJ2NhY2hlZF90b2tlbnMnOiAwfX19IiwieydpZCc6ICdjaGF0Y21wbC1BZU9MQzdvaXMxZlREb21Zd25vTkZWS3A3blpnUCcsICdjaG9pY2VzJzogW3snZmluaXNoX3JlYXNvbic6ICdzdG9wJywgJ2luZGV4JzogMCwgJ2xvZ3Byb2JzJzogTm9uZSwgJ21lc3NhZ2UnOiB7J2NvbnRlbnQnOiAnTmV1dHJhbCAgXG5UaGUgdGlja2V0IHNpbXBseSBzdGF0ZXMgYW4gaXNzdWUgd2l0aCBwYXltZW50IHByb2Nlc3Npbmcgd2l0aG91dCBleHByZXNzaW5nIGFueSBzdHJvbmcgZW1vdGlvbnMgb3IgZGlzc2F0aXNmYWN0aW9uLicsICdyZWZ1c2FsJzogTm9uZSwgJ3JvbGUnOiAnYXNzaXN0YW50JywgJ2F1ZGlvJzogTm9uZSwgJ2Z1bmN0aW9uX2NhbGwnOiBOb25lLCAndG9vbF9jYWxscyc6IE5vbmV9fV0sICdjcmVhdGVkJzogMTczNDE5MDA1MCwgJ21vZGVsJzogJ2dwdC00by0yMDI0LTA4LTA2JywgJ29iamVjdCc6ICdjaGF0LmNvbXBsZXRpb24nLCAnc2VydmljZV90aWVyJzogTm9uZSwgJ3N5c3RlbV9maW5nZXJwcmludCc6ICdmcF9hNzlkOGRhYzFmJywgJ3VzYWdlJzogeydjb21wbGV0aW9uX3Rva2Vucyc6IDE5LCAncHJvbXB0X3Rva2Vucyc6IDEzNiwgJ3RvdGFsX3Rva2Vucyc6IDE1NSwgJ2NvbXBsZXRpb25fdG9rZW5zX2RldGFpbHMnOiB7J2FjY2VwdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMCwgJ2F1ZGlvX3Rva2Vucyc6IDAsICdyZWFzb25pbmdfdG9rZW5zJzogMCwgJ3JlamVjdGVkX3ByZWRpY3Rpb25fdG9rZW5zJzogMH0sICdwcm9tcHRfdG9rZW5zX2RldGFpbHMnOiB7J2F1ZGlvX3Rva2Vucyc6IDAsICdjYWNoZWRfdG9rZW5zJzogMH19fSIsMC4wMDA3MDQ5OTk5OTk5OTk5OTk5LDAuMDAwNDksMCwiSWYgdGhlIHByaW1hcnkgaXNzdWUgaW4gdGhpcyB0aWNrZXQgaXMgc2FmZXR5LCB3YXMgdGhlcmUgYW4gYWNjaWRlbnQgd2hlcmUgc29tZW9uZSB3YXMgaHVydD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLCJPbiBhIHNjYWxlIGZyb20gMCB0byA1LCB3aGF0IGlzIHRoZSBwcmlvcml0eSBsZXZlbCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0iLFdoYXQgaXMgdGhlIHNlbnRpbWVudCBvZiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sV2hhdCBpcyB0aGUgcHJpbWFyeSBpc3N1ZSBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sRG9lcyB0aGUgY3VzdG9tZXIgYXNrIGZvciBhIHJlZnVuZCBpbiB0aGlzIHRpY2tldD8gVGlja2V0OiB7eyB0aWNrZXQgfX0sQ2hlY2sgYWxsIG9mIHRoZSBpc3N1ZXMgbWVudGlvbmVkIGluIHRoaXMgdGlja2V0OiB7eyB0aWNrZXQgfX0sIlsnc2FmZXR5JywgJ2NsZWFubGluZXNzJywgJ2RyaXZlciBwZXJmb3JtYW5jZScsICdHUFMvcm91dGUnLCAnbG9zdCBpdGVtJywgJ290aGVyJ10iLCJbJ1ZlcnkgcG9zaXRpdmUnLCAnU29tZXdoYXQgcG9zaXRpdmUnLCAnTmV1dHJhbCcsICdTb21ld2hhdCBuZWdhdGl2ZScsICdWZXJ5IG5lZ2F0aXZlJ10iLCJbJ1llcycsICdObycsICdOb3QgYXBwbGljYWJsZSddIiwiWydObycsICdZZXMnXSIsIlswLCAxLCAyLCAzLCA0LCA1XSIsLHllc19ubyxtdWx0aXBsZV9jaG9pY2UsY2hlY2tib3gsbGluZWFyX3NjYWxlLG11bHRpcGxlX2Nob2ljZSxmcmVlX3RleHQsIlBheW1lbnQgcHJvY2Vzc2luZyBpc3N1ZXMgY2FuIGltcGFjdCBib3RoIHRoZSBjdXN0b21lciBhbmQgdGhlIGNvbXBhbnkncyBvcGVyYXRpb25zLCBzbyB0aGV5IHNob3VsZCBiZSBhZGRyZXNzZWQgcHJvbXB0bHkgdG8gZW5zdXJlIGN1c3RvbWVyIHNhdGlzZmFjdGlvbiBhbmQgcHJvcGVyIGZpbmFuY2lhbCBoYW5kbGluZy4iLCxUaGUgdGlja2V0IHNpbXBseSBzdGF0ZXMgYW4gaXNzdWUgd2l0aCBwYXltZW50IHByb2Nlc3Npbmcgd2l0aG91dCBleHByZXNzaW5nIGFueSBzdHJvbmcgZW1vdGlvbnMgb3IgZGlzc2F0aXNmYWN0aW9uLiwiVGhlIHRpY2tldCBtZW50aW9ucyBhbiBpc3N1ZSB3aXRoIHBheW1lbnQgcHJvY2Vzc2luZywgd2hpY2ggaXMgdW5yZWxhdGVkIHRvIHNhZmV0eSBvciBhbnkgYWNjaWRlbnRzLiIsIlRoZSBjdXN0b21lciBpcyBhc2tpbmcgZm9yIGFzc2lzdGFuY2Ugd2l0aCBhIHBheW1lbnQgcHJvY2Vzc2luZyBpc3N1ZSwgbm90IGRpcmVjdGx5IHJlcXVlc3RpbmcgYSByZWZ1bmQuIiwiVGhlIGlzc3VlIG1lbnRpb25lZCBpcyByZWxhdGVkIHRvIHBheW1lbnQgcHJvY2Vzc2luZywgd2hpY2ggZmFsbHMgdW5kZXIgIiJvdGhlciIiIGFzIGl0IGRvZXNuJ3QgbWF0Y2ggdGhlIHNwZWNpZmljIGNhdGVnb3JpZXMgbGlzdGVkLiIsIls1XSAgClRoZSBpc3N1ZSBtZW50aW9uZWQgaXMgcmVsYXRlZCB0byBwYXltZW50IHByb2Nlc3NpbmcsIHdoaWNoIGZhbGxzIHVuZGVyICIib3RoZXIiIiBhcyBpdCBkb2Vzbid0IG1hdGNoIHRoZSBzcGVjaWZpYyBjYXRlZ29yaWVzIGxpc3RlZC4iLCJObwoKVGhlIGN1c3RvbWVyIGlzIGFza2luZyBmb3IgYXNzaXN0YW5jZSB3aXRoIGEgcGF5bWVudCBwcm9jZXNzaW5nIGlzc3VlLCBub3QgZGlyZWN0bHkgcmVxdWVzdGluZyBhIHJlZnVuZC4iLFRoZSBwcmltYXJ5IGlzc3VlIGluIHRoaXMgdGlja2V0IGlzIGEgcHJvYmxlbSB3aXRoIHBheW1lbnQgcHJvY2Vzc2luZyBhZnRlciB0aGUgY3VzdG9tZXIncyBsYXN0IHJpZGUuIFRoZSBjdXN0b21lciBpcyByZXF1ZXN0aW5nIGFzc2lzdGFuY2UgdG8gaW52ZXN0aWdhdGUgYW5kIHJlc29sdmUgdGhlIHBheW1lbnQgaXNzdWUuLCJOb3QgYXBwbGljYWJsZQoKVGhlIHRpY2tldCBtZW50aW9ucyBhbiBpc3N1ZSB3aXRoIHBheW1lbnQgcHJvY2Vzc2luZywgd2hpY2ggaXMgdW5yZWxhdGVkIHRvIHNhZmV0eSBvciBhbnkgYWNjaWRlbnRzLiIsIjMgIApQYXltZW50IHByb2Nlc3NpbmcgaXNzdWVzIGNhbiBpbXBhY3QgYm90aCB0aGUgY3VzdG9tZXIgYW5kIHRoZSBjb21wYW55J3Mgb3BlcmF0aW9ucywgc28gdGhleSBzaG91bGQgYmUgYWRkcmVzc2VkIHByb21wdGx5IHRvIGVuc3VyZSBjdXN0b21lciBzYXRpc2ZhY3Rpb24gYW5kIHByb3BlciBmaW5hbmNpYWwgaGFuZGxpbmcuIiwiTmV1dHJhbCAgClRoZSB0aWNrZXQgc2ltcGx5IHN0YXRlcyBhbiBpc3N1ZSB3aXRoIHBheW1lbnQgcHJvY2Vzc2luZyB3aXRob3V0IGV4cHJlc3NpbmcgYW55IHN0cm9uZyBlbW90aW9ucyBvciBkaXNzYXRpc2ZhY3Rpb24uIg0K |
binary | False |
suffix | csv |
mime_type | text/csv |
Posting content to the Coop
We can post any objects to the Coop, including this notebook. Objects can be updated or modified at your Coop account, and shared with others or stored privately (default visibility is unlisted):
[22]:
results.push(description = "Customer service tickets data labeling example", visibility="public")
[22]:
{'description': 'Customer service tickets data labeling example',
'object_type': 'results',
'url': 'https://www.expectedparrot.com/content/73ee9431-fe87-4b30-b2ec-c3c1b5ef9011',
'uuid': '73ee9431-fe87-4b30-b2ec-c3c1b5ef9011',
'version': '0.1.39.dev1',
'visibility': 'public'}
[23]:
survey.push(description = "Customer service tickets data labeling example survey", visibility="public")
[23]:
{'description': 'Customer service tickets data labeling example survey',
'object_type': 'survey',
'url': 'https://www.expectedparrot.com/content/77e635a5-5ddb-404c-94d9-3a34364b3377',
'uuid': '77e635a5-5ddb-404c-94d9-3a34364b3377',
'version': '0.1.39.dev1',
'visibility': 'public'}
[24]:
from edsl import Notebook
n = Notebook(path="data_labeling_example.ipynb")
info = n.push(description="Data labeling example", visibility="public")
info
[24]:
{'description': 'Data labeling example',
'object_type': 'notebook',
'url': 'https://www.expectedparrot.com/content/4614e823-26c8-408f-a83a-9fb997bba05a',
'uuid': '4614e823-26c8-408f-a83a-9fb997bba05a',
'version': '0.1.39.dev1',
'visibility': 'public'}
To update an object at the Coop:
[25]:
n = Notebook(path="data_labeling_example.ipynb") # resave
n.patch(uuid = info["uuid"], value = n)
[25]:
{'status': 'success'}