From 5456c4dc3c850d9f0df3ce56f39fd0ceb2509a69 Mon Sep 17 00:00:00 2001 From: denim2x Date: Sun, 19 May 2019 20:48:11 +0300 Subject: [PATCH] Updates Signed-off-by: denim2x --- README.md | 4 +- _bareasgi.py | 4 + _rom.py | 26 ++++++ app.js | 29 ++++-- dialogflow.py | 33 +++---- document.py | 122 ++++++++++++++++++------ engine.py | 138 +++++++++++++++++---------- phrase_metric.py | 184 ++++++++++++++++++++++++++++++++++++ requirements.txt | 7 +- semantic_similarity.py | 61 ------------ static/app.js | 4 +- static/index.html | 5 +- static/master.css | 78 +++++++++------- util/__init__.py | 103 ++++++++++++++++++++- util/list.py | 6 +- util/priority_queue.py | 206 +++++++++++++++++++++++++++++++++++++++++ util/set.py | 10 +- 17 files changed, 808 insertions(+), 212 deletions(-) create mode 100644 _rom.py create mode 100644 phrase_metric.py delete mode 100644 semantic_similarity.py create mode 100644 util/priority_queue.py diff --git a/README.md b/README.md index 39852f8..d31181a 100644 --- a/README.md +++ b/README.md @@ -43,8 +43,8 @@ dialogflow: redis: - host: - port: - pass: # optional + port: # optional (default: 6379) + auth: # optional - ... ``` - (optional) *\/account.json* with valid *GCP service account* data. diff --git a/_bareasgi.py b/_bareasgi.py index 83d3a16..4c3ffaf 100644 --- a/_bareasgi.py +++ b/_bareasgi.py @@ -4,3 +4,7 @@ def json_response(data, status=200, headers={}): headers = [] # FIXME return _bareasgi.json_response(status, headers, data) + +def text_response(text, status=200, headers={}): + headers = [] + return _bareasgi.text_response(status, headers, text) diff --git a/_rom.py b/_rom.py new file mode 100644 index 0000000..c9542d9 --- /dev/null +++ b/_rom.py @@ -0,0 +1,26 @@ +from rom import * +import rom as _rom +from rom.columns import String as _String +from rom.util import set_connection_settings as init, get_connection + + +class String(_String): + def _to_redis(self, value): + if isinstance(value, bytes): + return super()._to_redis(value) + return value + +class _Model: + def __getitem__(self, key): + value = getattr(self, key) + return value.decode() if isinstance(value, bytes) else bytes + +Model = (_Model, _rom.Model) + +def bgsave(): + db = get_connection() + try: + db.bgsave() + return True + except: + return False diff --git a/app.js b/app.js index 7540e5c..5cf6836 100644 --- a/app.js +++ b/app.js @@ -46,13 +46,11 @@ function get_knowledge() { } function send_message(text='', cb) { - request.post('/message').send(text).then(({ body }) => { - state.conversation.push(body); + request.post('/message').send(text).then(({ text }) => { + state.conversation.push({ text }); }, (e) => { _error('POST', '/message', e); - if (cb) { - cb(); - } + cb && cb(); }); } @@ -110,20 +108,33 @@ rivets.binders['input'] = { }, bind: function(el) { - $(el).on('input.rivets', this.publish); + this._empty = true; + $(el).on('input.rv-input', this.publish); + this._watch = () => { + el.innerHTML = ''; + if (el.innerHTML == '') { + clearInterval(this._watcher); + } + }; }, unbind: function(el) { - $(el).off('input.rivets'); + $(el).off('.rv-input'); + clearInterval(this._watcher) }, routine: function(el, value) { if (this.state != 'publish') { + clearInterval(this._watcher); el.innerText = value; } - state.error = false; + state.error = false; + this._empty = value == ''; + if (this._empty) { + this._watcher = setInterval(this._watch, 30); + } if (this.empty_class) { - $(el).toggleClass(this.empty_class, value == ''); + $(el).toggleClass(this.empty_class, this._empty); } }, diff --git a/dialogflow.py b/dialogflow.py index 374f292..97ec54b 100644 --- a/dialogflow.py +++ b/dialogflow.py @@ -4,6 +4,7 @@ from dialogflow_v2beta1 import SessionsClient, KnowledgeBasesClient, DocumentsClient from dialogflow_v2beta1 import types, enums from google.api_core.exceptions import InvalidArgument, GoogleAPICallError +from google.api_core.retry import Retry from util import realpath from config import project_id @@ -50,6 +51,10 @@ def __init__(self, session_id=uuid4(), language_code='en'): self._kb = kb.project_path(project_id) self.language_code = language_code self.min_confidence = 0.8 + self._retry = { + 'retry': Retry(), + 'timeout': 10 + } def __call__(self, text=None, event=None): language_code = self.language_code @@ -61,24 +66,20 @@ def __call__(self, text=None, event=None): query_input = types.QueryInput(event=event_input) else: return None - return session.detect_intent(session=self._session, query_input=query_input) + return session.detect_intent(session=self._session, query_input=query_input, **self._retry) - def get_answers(self, text, raw=False, kb=True, sort_key=None, **kw): + def get_answers(self, text, kb=True): res = self(text=text) - filter_fn = kw.get('filter') - if hasattr(res.query_result, 'knowledge_answers'): - if not kb and res.alternative_query_results: - answer = res.alternative_query_results[0] - if answer.intent_detection_confidence >= self.min_confidence: - return [answer.fulfillment_text] - return None - answers = [a for a in res.query_result.knowledge_answers.answers] - if filter_fn: - answers = list(filter(filter_fn, answers)) - if sort_key: - answers.sort(sort_key) - return answers if raw else [a.answer for a in answers] - return None + if not hasattr(res.query_result, 'knowledge_answers'): + return + + if not kb and res.alternative_query_results: + answer = res.alternative_query_results[0] + if answer.action != 'input.unknown' and answer.intent_detection_confidence >= self.min_confidence: + return [answer.fulfillment_text] + return None + + return res.query_result.knowledge_answers.answers def event(self, name, raw=False): res = self(event=name) diff --git a/document.py b/document.py index ebb142d..f834971 100644 --- a/document.py +++ b/document.py @@ -1,14 +1,13 @@ from urllib.error import HTTPError from collections import namedtuple -from util import pq, List +from util import pq, List, Text, OrderedSet _excludes = ( 'Recommended_Readings', 'See_Also', 'Residents', - 'Paraphernalia', 'Alternate_Reality_Versions' ) @@ -18,21 +17,24 @@ 'Links_and_References', 'References', 'Points_of_Interest', - 'Links' + 'Links', + 'Related' ], format=':not(#{item})', str='' ) -Fragment = namedtuple('Fragment', ('caption', 'text')) +Handle = namedtuple('Handle', ('pointer', 'until')) +Fragment = namedtuple('Fragment', ('handle', 'text')) def _text(el, to_strip=None): if el is None: return None - return el.text().strip().strip(to_strip).strip() + text = el.text() if isinstance(el, pq) else el + return text.strip().strip(to_strip).strip() class Document: - def __init__(self, url=None, name=None, quotes=False): + def __init__(self, url=None, name=None, quotes=False, prepare=False): if name is not None: url = url.format(*name.split('|')) self.name = name @@ -45,15 +47,20 @@ def __init__(self, url=None, name=None, quotes=False): except HTTPError: doc = pq([]) self.caption = doc.children('head > title').text().split('|', 1)[0].strip() - self.site = doc.find('link[rel="search').attr('title').rstrip('(en)').strip() + self.site = doc.find('link[rel="search"]').default('title', '').rstrip('(en)').strip() self._doc = doc self.__content = None - self._data = None + self.__h2 = None + self._fragments = None + self._refs = True self._quotes = quotes - sel = List(['h3, p, ul, ol']) + self._isel = 'text, a, b, i, em, strong, span' + sel = List([self._isel, 'p, ul, ol']) if self._quotes: sel.append('.quote') self._sel = str(sel) + if prepare: + iter(self) def __bool__(self): return bool(self._doc) @@ -62,20 +69,50 @@ def _content(self): if self.__content is None: content = self._doc.find('.mw-content-text') content.find('.noprint, noscript, script, style, link, iframe, embed, video, img, .editsection').remove() - content.find('*').remove_attr('style') self.__content = content return self.__content def __iter__(self): if not self: + raise StopIteration + + if self._fragments is not None: + yield from self._fragments + + self._fragments = {} + content = self._content() + + self._fragment(content.children('.portable-infobox'), name='Summary', until='#toc') + h2_list = content.children(f'h2{scrape_excludes} > {scrape_excludes}').closest('h2') + for h2 in h2_list.items(): + self._fragment(h2) + for h3 in h2.nextUntil('h2', 'h3').items(): + self._fragment(h2, h3) + + yield from tuple(self._fragments) + + def _fragment(self, *pointer, name=None, until=None): + if not name: + name = '/'.join(_text(h) for h in pointer) + + name = f"{self.name}#{_text(name)}" + fragment = Fragment(Handle(pointer[-1], until), None) + self._fragments[name] = fragment + + def __getitem__(self, name): + if name not in self._fragments: return - if self._data is not None: - yield from self._data + handle, text = self._fragments[name] + if text is not None: + return text - self._data = [] content = self._content() - content.find('.reference').remove() + + if self._refs: + content.find('.reference').remove() + self._refs = False + if self._quotes: for quote in content.find('.quote').items(): author = quote.find('.selflink').closest('b') @@ -83,22 +120,47 @@ def __iter__(self): _quote = quote.find('i') _quote.text('"' + _text(_quote, '"\'') + '"') author.append('said').prependTo(_quote.closest('dd')) - - h2_list = content.children(f'h2{scrape_excludes} > {scrape_excludes}').closest('h2') - for h2 in h2_list.items(): - self._append(h2.nextUntil('h2, h3', self._sel), h2) - for h3 in h2.nextUntil('h2', 'h3'): - self._append(h3.nextUntil('h2, h3', self._sel), h2, h3) - - def _append(self, body, *heads): - _data = self._data - if _data is None or not body: - return False - - caption = List((_text(h) for h in heads), str='/') - text = List((_text(e) for e in body.items()), False, str='\n') - _data.append(Fragment(f"{self.name}#{caption}", str(text))) - return True + + self._quotes = None + + pointer, until = handle + if not until: + until = 'h2, h3' + + if pointer.children('span').is_('#Abilities, #Equipment, #Transportation, #Weapons'): + body = pq([]) + for li in pointer.nextUntil('h2, h3', 'ul').children('li').items(): + nodes = pq([]) + for node in li.contents().items(exclude='ul, b > a'): + nodes.extend(Text(_text(node).lstrip(': ').rstrip() + ' ') if node.prev().is_('b > a') else node) + body.extend(pq('

').append(nodes)) + else: + body = pointer.nextUntil(until, self._sel) + + return self._create(name, body) + + def _create(self, name, body): + fragment = self._fragments.get(name) + if not body: + del self._fragments[name] + return + + text = List(banned=False, str='\n') + span = List(banned=False, str=' ') + for node in body.items(): + if node.is_(self._isel): + span.append(_text(node)) + else: + text.extend([str(span), _text(node)]) + span.clear() + text.append(str(span)) + text_ = str(text) + if not text_: + del self._fragments[name] + return + + self._fragments[name] = Fragment(fragment.handle, text_) + return text_ @staticmethod def parse_name(name): diff --git a/engine.py b/engine.py index fc575e1..fefcc0b 100644 --- a/engine.py +++ b/engine.py @@ -1,10 +1,10 @@ import re +from collections import defaultdict -from _bareasgi import text_reader, json_response +from _bareasgi import text_reader, text_response, json_response #from redis import StrictRedis #from redis.exceptions import ResponseError -import rom -from rom import util as _rom, session +import _rom as rom from config import dialogflow as _dialogflow, redis from document import Document @@ -14,34 +14,29 @@ from uuid import uuid1 ping = bytes(str(uuid1()), 'utf-8') -db_error = '' +#ping = str(uuid1()) for server in redis: + host, port = server['host'], int(server.get('port', '6379')) try: - _rom.set_connection_settings(host=server['host'], port=server['port'], password=server.get('pass'), decode_responses=True) - db = _rom.get_connection() + rom.init(host=host, port=port, password=server.get('auth'), decode_responses=False) + db = rom.get_connection() #db = StrictRedis(host=server['host'], port=server['port'], password=server.get('pass'), db=0, decode_responses=True) if db is None: - db_error = '' - continue + raise Exception + if ping == db.execute_command('ECHO', ping): - db_error = None + server = db.connection_pool.connection_kwargs + print('[INFO] Redis connection:', f"{server['host']}:{server['port']}") break except Exception as e: - db_error = e - pass - -if db_error: - print('[WARN] Redis connection failed:', db_error) - db = None -else: - print('[INFO] Redis connection:', db.connection_pool.connection_kwargs['host']) + print("[WARN] Redis connection failed:", e if str(e) else f'{host}:{port}') -class _Fragment(rom.Model): +class _Fragment(*rom.Model): path = rom.String(required=True, unique=True) name = rom.String(required=True, unique=True) document = rom.ManyToOne('_Document', required=True, on_delete='no action') -class _Document(rom.Model): +class _Document(*rom.Model): name = rom.String(required=True, unique=True) url = rom.String(unique=True) caption = rom.String(required=True) @@ -53,11 +48,11 @@ class _Document(rom.Model): _url = fandom.caption # TODO: Delete database entries not present in Fandom KB -docs = {} +docs = defaultdict(list) for fragment in fandom: if not _Fragment.get_by(path=fragment.name): name, heads = Document.parse_name(fragment.display_name) - docs.setdefault(name, set()).add(fragment) + docs[name].append(fragment) for name, fragments in docs.items(): _doc = _Document.get_by(name=name) @@ -66,12 +61,12 @@ class _Document(rom.Model): _doc = _Document(name=name, url=doc.url, caption=doc.caption, site=doc.site) for fragment in fragments: _fragment = _Fragment(path=fragment.name, name=fragment.display_name, document=_doc) -session.flush() +rom.session.flush() -sites = {} +sites = defaultdict(dict) async def knowledge(scope, info, matches, content): for _doc in _Document.query.all(): - sites.setdefault(_doc.site, {}).setdefault(_doc.url, _doc.caption) + sites[_doc['site']].setdefault(_doc['url'], _doc['caption']) res = [] for site, docs in sites.items(): @@ -80,42 +75,87 @@ async def knowledge(scope, info, matches, content): return json_response(sorted(res, key=lambda e: e['caption'])) + +from util import PriorityQueue +from phrase_metric import similarity, validate + +# FIXME +def _search(self, text, threshold=0.8): + keys = (key.decode() for key in db.hkeys(self)) + keys = ((similarity(text, key), key) for key in keys) + s, key = max(keys, key=lambda k: k[0], default=(0, None)) + if s > threshold: + return key + +_save = db.hset + +def find_answer(query): + ret = _search('_answers', query) + return db.hget('_answers', ret).decode() if ret else None + +def save_answer(query, answer): + _save('_answers', query, answer) + rom.bgsave() + async def message(scope, info, matches, content): text = re.sub(r'\s+', ' ', (await text_reader(content)).strip().lstrip('.').strip()) if text == '': - return json_response([dialogflow.event('WELCOME')]) + return text_response(dialogflow.event('WELCOME')) answers = dialogflow.get_answers(text, kb=False) if answers: - return json_response(answers) + return text_response(answers[0]) query = text.strip('?!').strip() - if not query: - return 400 - - urls = set() - for url in search(query)[:10]: - if not _Document.get_by(url=str(url)): - doc = Document(url) - print('[INFO] Generating document:', doc.name) - if not doc: - print('[WARN] URL request failed:', doc.url) + if not validate(query): + return text_response(dialogflow.event('fallback')) + + answer = find_answer(query) + if answer: + return text_response(answer) + + fragments = PriorityQueue(5, lambda f, r: 1 - r) + for url in search(query)[:3]: + doc = Document(url) + if not doc: + print('[WARN] URL request failed:', doc.url) + continue + + for fragment_name in doc: + if _Fragment.get_by(name=fragment_name): + print('[INFO] Found fragment:', fragment_name) + continue + + print('[INFO] Generating fragment:', fragment_name) + fragment = doc[fragment_name] + if not fragment: + print('[INFO] Skipping empty fragment:', fragment_name) continue + + fragments.add((doc, fragment_name, fragment), similarity(fragment, query)) + + for doc, name, fragment in fragments: + print('[INFO] Uploading fragment:', name) + res = fandom.create(name, fragment) + if res is None: + print('[WARN] Fragment upload failed:', name) + continue + + _doc = _Document.get_by(name=doc.name) + if not _doc: _doc = _Document(name=doc.name, url=doc.url, caption=doc.caption, site=doc.site) - for fragment in doc: - res = fandom.create(fragment) - if res is None: - print('[WARN] Fragment creation failed:', fragment.caption) - continue - _fragment = _Fragment(path=res.name, name=fragment.caption, document=_doc) - print('[INFO] Document created:', doc.name) + _fragment = _Fragment(path=res.name, name=name, document=_doc) + print('[INFO] Fragment uploaded:', name) - urls.add(str(url)) + rom.session.flush() - session.flush() + #lambda a: _Fragment.get_by(path=a.source).document['url'] in urls) - answers = dialogflow.get_answers(text, filter=lambda a: _Fragment.get_by(path=a.source).document.url in urls) - if answers: - return json_response(answers) + answers = dialogflow.get_answers(query) + if not answers: + return text_response(dialogflow.event('fallback')) + + answer = max(answers, key=lambda a: a.match_confidence * similarity(a.answer, query)) + save_answer(query, answer.answer) - return json_response([dialogflow.event('fallback')]) + return text_response(answer) diff --git a/phrase_metric.py b/phrase_metric.py new file mode 100644 index 0000000..2648151 --- /dev/null +++ b/phrase_metric.py @@ -0,0 +1,184 @@ +# -*- coding: utf-8 -*- +import re +from collections import namedtuple + +from pattern.en import parsetree +from pattern.en.wordnet import _pattern2wordnet as _pos, wn_ic, wn, WordNetSynset as Synset +from pattern.text.tree import Text, Sentence, Chunk, Word + +from util import mixin, mean, casefold + +# Rationale: {Egypt} ~ {Egyptian} > {Tennessee} ~ {Egyptian} +IC_CORPUS = wn_ic.ic('ic-shaks.dat') + +def _parse(*args, **kw): # FIXME (workaround) + from pattern.text.en import parser + if isinstance(parser.model, str): + from pattern.text import Model + parser.model = Model(path=parser.model) + + return parsetree(*args, **kw) + +def _casefold(text): + return { casefold(text), casefold(getattr(text, 'lemma', text)) } + +def _similar(a, b): + return bool(_casefold(a) & _casefold(b)) + +def _ratio(*data): + _len = [len(e) for e in data] + return mean(_len) / max(_len) + +def _mean(data, threshold=0, default=0): + return mean((e for e in data if e > threshold), default) + +def _min(data, threshold=0, default=0): + return min((e for e in data if e > threshold), default=default) + +@mixin(Synset) +class _Synset: + def similarity(self, other): + if self._pos != other._pos: + return None + if self._pos in 'asr': + return self.wup_similarity(other) + return self.lin_similarity(other, IC_CORPUS) + +@mixin(Word) +class _Word: + def synsets(self, type=None): + return wn.synsets(str(self), _pos.get(type[:2] if type else None)) + + def _similarity(self, other, default=0): + #s = sorted((other.similarity(s) or default for s in self.synsets()), default=default) + #return max((other.similarity(s) or default for s in self.synsets()), default=default) + return (other.similarity(s) or default for s in self.synsets()) + + def similarity(self, other, default=0): + if isinstance(other, Chunk): + return max((self.similarity(w) for w in other), default=default) + if isinstance(other, Synset): + return max(self._similarity(other), default=default) + #return self._similarity(other) + + if self.type == other.type and _similar(self, other): + return 1 + return max(self._similarity(other), default=default) + #return self._similarity(other) + +Factor = namedtuple('Factor', ('factor', 'value')) + +@mixin(Chunk) +class _Chunk: + factors = dict(VP=0.07, ADJP=0.02, ADVP=0.01) + + @property + def nouns(self): + if not hasattr(self, '_nouns'): + nouns = [w for w in self if w.type[:2] == 'NN'] + self._nouns = Chunk(self.sentence, nouns, self.type, self.role, self.relation) + return self._nouns + + @property + def main(self): + return self.type == 'NP' + + def _related(self, other, type, scaling): + factor = self.factors[type] + a, b = (e.nearest(type) for e in (self, other)) + if None in {a, b}: + return Factor(0, 0) + return Factor(factor, a._similarity(b, scaling)) + + def similarity(self, other, value=None, scaling=True): + if value is None: + return self._similarity(other, scaling) + + related = [self._related(other, type, scaling) for type in self.factors] + factor = 1 - sum(e.factor for e in related) + + return factor * value + sum(e.factor * e.value for e in related) + + @property + def lemma(self): + if not hasattr(self, '_lemma'): + self._lemma = ' '.join(e for e in self.lemmata if e) + return self._lemma + + def _similarity(self, other, scaling, default=0): + if self.type == other.type and _similar(self, other): + return 1 + ratio = _ratio(self, other) if scaling else 1 + return _mean((w.similarity(other) for w in self), default=0) * ratio + +@mixin(Sentence) +class _Sentence: + @property + def noun_phrases(self): + if not hasattr(self, '_noun'): + self._noun = [p for p in self.phrases if p.nouns and p.main] + return self._noun + + @property + def main_phrases(self): + if not hasattr(self, '_main'): + self._main = [p for p in self.phrases if p.main] + return self._main + +@mixin(Text) +class _Text: + def __new__(cls, self, lemmata=True): + if self is None: + return self + if not isinstance(self, Text): + if isinstance(self, list): + self = '\n'.join(e for e in self if e) + self = _parse(self, lemmata=lemmata) + return self + + @property + def noun_phrases(self): + if not hasattr(self, '_noun'): + self._noun = [p for s in self for p in s.noun_phrases] + return self._noun + + @property + def main_phrases(self): + if not hasattr(self, '_main'): + self._main = [p for s in self for p in s.main_phrases] + return self._main + +def validate(self): # FIXME (workaround) + for s in _Text(self): + if s.phrases: + return True + return False + #return bool(_Text(self).noun_phrases) + + +def similarity(a, b, scaling='inner', split=5): + """Computes a non-negative score representing the amount of common information between a and b""" + X, Y = (_Text(e) for e in (a, b)) + if casefold(X) == casefold(Y): + return 1 + A, B = (e.noun_phrases for e in (X, Y)) + data = [] + scaling = 'total' if scaling is True else scaling + inner = scaling in { 'inner', 'total' } + for a in A: + S = sorted(((a.similarity(b, scaling=inner), b) for b in B), key=lambda e: e[0], reverse=True) + m = max((a.similarity(p, s, scaling=inner) for (s, p) in S[:split]), default=0) + _len = len(S) + if _len > split: + f = max([len(S[split:]) / _len, 0.3]) + data.append(m * (1 - f) + S[split][0] * f) + else: + data.append(m) + + ratio = _ratio(A, B) if scaling in { 'outer', 'total' } else 1 + return _mean(data) * ratio + + +def distance(a, b): + return 1 - similarity(a, b) + \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 2a6f974..9531742 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,11 @@ -uvicorn -bareasgi +uvicorn==0.7.0 +bareasgi==1.0.3 bareasgi_static pyquery google-api-python-client dialogflow PyYAML -aiofiles redis rom -pywsd numpy +sortedcontainers diff --git a/semantic_similarity.py b/semantic_similarity.py deleted file mode 100644 index 04b3d74..0000000 --- a/semantic_similarity.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- coding: utf-8 -*- -from pywsd import disambiguate -#from pywsd.similarity import max_similarity as maxsim -import numpy as np -from collections import defaultdict -alpha = 0.2 -beta = 0.45 -benchmark_similarity = 0.8025 -gamma = 1.8 -""" -Semantic similarity based on the paper: - Calculating the similarity between words and sentences using a lexical database and corpus statistics -TKDE, 2018 -""" - -def _synset_similarity(s1,s2): - L1 =dict() - L2 =defaultdict(list) - - for syn1 in s1: - L1[syn1[0]] =list() - for syn2 in s2: - - subsumer = syn1[1].lowest_common_hypernyms(syn2[1], simulate_root=True)[0] - h =subsumer.max_depth() + 1 # as done on NLTK wordnet - syn1_dist_subsumer = syn1[1].shortest_path_distance(subsumer,simulate_root =True) - syn2_dist_subsumer = syn2[1].shortest_path_distance(subsumer,simulate_root =True) - l =syn1_dist_subsumer + syn2_dist_subsumer - f1 = np.exp(-alpha*l) - a = np.exp(beta*h) - b = np.exp(-beta*h) - f2 = (a-b) /(a+b) - sim = f1*f2 - L1[syn1[0]].append(sim) - L2[syn2[0]].append(sim) - return L1, L2 - -def similarity(s1,s2): - wsd = ( - [syn for syn in disambiguate(s) if syn[1]] - for s in (s1, s2) - ) - - #vector_length = max(len(s1_wsd), len(s2_wsd)) - - L = _synset_similarity(*wsd) - V1, V2 = ( - np.array([max(e[key]) for key in e.keys()]) - for e in L - ) - S = np.linalg.norm(V1)*np.linalg.norm(V2) - C1, C2 = ( - sum(V >= benchmark_similarity) - for V in (V1, V2) - ) - - Xi = (C1+C2) / gamma - - if C1+C2 == 0: - Xi = max(V1.size, V2.size) / 2 - return S/Xi diff --git a/static/app.js b/static/app.js index 32c9c6c..d1cc5b0 100644 --- a/static/app.js +++ b/static/app.js @@ -1,6 +1,6 @@ (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i{e.innerHTML=""}),this},$.fn.outerHTML=function(){return this.prop("outerHTML")};const state={message:"",knowledge:[],conversation:[],error:!1};function _error(e,t,{response:n}){n=n?[n.status,n.text]:[],console.warn(`[${e} ${t}]`,...n)}function get_knowledge(){request.get("/knowledge").then(({body:e})=>{state.knowledge=e},e=>_error("GET","/knowledge",e))}function send_message(e="",t){request.post("/respond").send(e).then(({body:e})=>{state.conversation.push({text:e[0]})},e=>{_error("POST","/respond",e),t&&t()})}function _const(e,t,n){return Object.defineProperty(e,t,{value:n,writable:!1,enumerable:!0,configurable:!0}),e}send_message(),get_knowledge(),$(".Conversation-input").on("keydown",e=>{let t=state.message;if("Enter"==e.code&&!e.shiftKey&&!e.altKey&&!e.ctrlKey){if(""==t)return;return state.message="",state.conversation.push({text:t,is_user:!0}),send_message(t,()=>{state.error=!0}),get_knowledge(),!1}}).on("paste",e=>{e.preventDefault();let t=e.clipboardData.getData("text/plain");return document.execCommand("insertHTML",!1,t),!1});const{Binding:Binding}=rivets._;rivets._.Binding=class extends Binding{parseTarget(){return this.binder.parseTarget&&Object.assign(this,this.binder.parseTarget(this.keypath)),super.parseTarget()}publish(){_const(this,"state","publish");super.publish();_const(this,"state")}},rivets.binders.input={parseTarget(e){let t;return[e,t]=e.trim().split(/\s*\?\s*/),{keypath:e,empty_class:t}},bind:function(e){$(e).on("input.rivets",this.publish)},unbind:function(e){$(e).off("input.rivets")},routine:function(e,t){"publish"!=this.state&&(e.innerText=t),state.error=!1,this.empty_class&&$(e).toggleClass(this.empty_class,""==t)},getValue:function(e){return e.innerText.trim()}},global.$state=state,rivets.bind(document.body,state); +"use strict";const type=require("type-of"),request=require("superagent"),h=require("hyperscript-string"),$=require("domtastic"),rivets=require("rivets");$.fn.innerText=function(e){return void 0===e?this[0].innerText:this.forEach(function(t){return t.innerText=""+e})},$.fn.clear=function(){return this.forEach(e=>{e.innerHTML=""}),this},$.fn.outerHTML=function(){return this.prop("outerHTML")};const state={message:"",knowledge:[],conversation:[],error:!1};function _error(e,t,{response:n}){n=n?[n.status,n.text]:[],console.warn(`[${e} ${t}]`,...n)}function get_knowledge(){request.get("/knowledge").then(({body:e})=>{state.knowledge=e},e=>_error("GET","/knowledge",e))}function send_message(e="",t){request.post("/message").send(e).then(({text:e})=>{state.conversation.push({text:e})},e=>{_error("POST","/message",e),t&&t()})}function _const(e,t,n){return Object.defineProperty(e,t,{value:n,writable:!1,enumerable:!0,configurable:!0}),e}send_message(),get_knowledge(),$(".Conversation-input").on("keydown",e=>{let t=state.message;if("Enter"==e.code&&!e.shiftKey&&!e.altKey&&!e.ctrlKey){if(""==t)return;return state.message="",state.conversation.push({text:t,is_user:!0}),send_message(t,()=>{state.error=!0}),get_knowledge(),!1}}).on("paste",e=>{e.preventDefault();let t=e.clipboardData.getData("text/plain");return document.execCommand("insertHTML",!1,t),!1});const{Binding:Binding}=rivets._;rivets._.Binding=class extends Binding{parseTarget(){return this.binder.parseTarget&&Object.assign(this,this.binder.parseTarget(this.keypath)),super.parseTarget()}publish(){_const(this,"state","publish");super.publish();_const(this,"state")}},rivets.binders.input={parseTarget(e){let t;return[e,t]=e.trim().split(/\s*\?\s*/),{keypath:e,empty_class:t}},bind:function(e){this._empty=!0,$(e).on("input.rv-input",this.publish),this._watch=(()=>{e.innerHTML="",""==e.innerHTML&&clearInterval(this._watcher)})},unbind:function(e){$(e).off(".rv-input"),clearInterval(this._watcher)},routine:function(e,t){"publish"!=this.state&&(clearInterval(this._watcher),e.innerText=t),state.error=!1,this._empty=""==t,this._empty&&(this._watcher=setInterval(this._watch,30)),this.empty_class&&$(e).toggleClass(this.empty_class,this._empty)},getValue:function(e){return e.innerText.trim()}},global.$state=state,rivets.bind(document.body,state); }).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) @@ -62,4 +62,4 @@ var toString=Object.prototype.toString;module.exports=function(e){switch(toStrin module.exports={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0}; },{}]},{},[1]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJhcHAuanMiLCJub2RlX21vZHVsZXMvYXJyaWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY29tcG9uZW50LWVtaXR0ZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZG9tdGFzdGljL2Rpc3QvZG9tdGFzdGljLmpzIiwibm9kZV9tb2R1bGVzL2h5cGVyc2NyaXB0LXN0cmluZy9zcmMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaHlwZXJzY3JpcHQtc3RyaW5nL3NyYy9yZW5kZXIuanMiLCJub2RlX21vZHVsZXMvaHlwZXJzY3JpcHQtc3RyaW5nL3NyYy91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9pcy1wbGFpbi1vYmplY3QvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaXNvYmplY3QvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcml2ZXRzL2Rpc3Qvcml2ZXRzLmpzIiwibm9kZV9tb2R1bGVzL3NpZ2h0Z2xhc3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvYWdlbnQtYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9zdXBlcmFnZW50L2xpYi9jbGllbnQuanMiLCJub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvaXMtb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL3N1cGVyYWdlbnQvbGliL3JlcXVlc3QtYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9zdXBlcmFnZW50L2xpYi9yZXNwb25zZS1iYXNlLmpzIiwibm9kZV9tb2R1bGVzL3N1cGVyYWdlbnQvbGliL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL3R5cGUtb2YvaW5kZXguanMiLCJub2RlX21vZHVsZXMvdm9pZC1lbGVtZW50cy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUNBQTtBQUNBO0FBQ0E7OztBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLG4sdCl7ZnVuY3Rpb24gbyhpLGYpe2lmKCFuW2ldKXtpZighZVtpXSl7dmFyIGM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZiYmYylyZXR1cm4gYyhpLCEwKTtpZih1KXJldHVybiB1KGksITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIraStcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIHA9bltpXT17ZXhwb3J0czp7fX07ZVtpXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ldWzFdW3JdO3JldHVybiBvKG58fHIpfSxwLHAuZXhwb3J0cyxyLGUsbix0KX1yZXR1cm4gbltpXS5leHBvcnRzfWZvcih2YXIgdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGk9MDtpPHQubGVuZ3RoO2krKylvKHRbaV0pO3JldHVybiBvfXJldHVybiByfSkoKSIsIlwidXNlIHN0cmljdFwiO2NvbnN0IHR5cGU9cmVxdWlyZShcInR5cGUtb2ZcIikscmVxdWVzdD1yZXF1aXJlKFwic3VwZXJhZ2VudFwiKSxoPXJlcXVpcmUoXCJoeXBlcnNjcmlwdC1zdHJpbmdcIiksJD1yZXF1aXJlKFwiZG9tdGFzdGljXCIpLHJpdmV0cz1yZXF1aXJlKFwicml2ZXRzXCIpOyQuZm4uaW5uZXJUZXh0PWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP3RoaXNbMF0uaW5uZXJUZXh0OnRoaXMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5pbm5lclRleHQ9XCJcIitlfSl9LCQuZm4uY2xlYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb3JFYWNoKGU9PntlLmlubmVySFRNTD1cIlwifSksdGhpc30sJC5mbi5vdXRlckhUTUw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wKFwib3V0ZXJIVE1MXCIpfTtjb25zdCBzdGF0ZT17bWVzc2FnZTpcIlwiLGtub3dsZWRnZTpbXSxjb252ZXJzYXRpb246W10sZXJyb3I6ITF9O2Z1bmN0aW9uIF9lcnJvcihlLHQse3Jlc3BvbnNlOm59KXtuPW4/W24uc3RhdHVzLG4udGV4dF06W10sY29uc29sZS53YXJuKGBbJHtlfSAke3R9XWAsLi4ubil9ZnVuY3Rpb24gZ2V0X2tub3dsZWRnZSgpe3JlcXVlc3QuZ2V0KFwiL2tub3dsZWRnZVwiKS50aGVuKCh7Ym9keTplfSk9PntzdGF0ZS5rbm93bGVkZ2U9ZX0sZT0+X2Vycm9yKFwiR0VUXCIsXCIva25vd2xlZGdlXCIsZSkpfWZ1bmN0aW9uIHNlbmRfbWVzc2FnZShlPVwiXCIsdCl7cmVxdWVzdC5wb3N0KFwiL3Jlc3BvbmRcIikuc2VuZChlKS50aGVuKCh7Ym9keTplfSk9PntzdGF0ZS5jb252ZXJzYXRpb24ucHVzaCh7dGV4dDplWzBdfSl9LGU9PntfZXJyb3IoXCJQT1NUXCIsXCIvcmVzcG9uZFwiLGUpLHQmJnQoKX0pfWZ1bmN0aW9uIF9jb25zdChlLHQsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sd3JpdGFibGU6ITEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlfXNlbmRfbWVzc2FnZSgpLGdldF9rbm93bGVkZ2UoKSwkKFwiLkNvbnZlcnNhdGlvbi1pbnB1dFwiKS5vbihcImtleWRvd25cIixlPT57bGV0IHQ9c3RhdGUubWVzc2FnZTtpZihcIkVudGVyXCI9PWUuY29kZSYmIWUuc2hpZnRLZXkmJiFlLmFsdEtleSYmIWUuY3RybEtleSl7aWYoXCJcIj09dClyZXR1cm47cmV0dXJuIHN0YXRlLm1lc3NhZ2U9XCJcIixzdGF0ZS5jb252ZXJzYXRpb24ucHVzaCh7dGV4dDp0LGlzX3VzZXI6ITB9KSxzZW5kX21lc3NhZ2UodCwoKT0+e3N0YXRlLmVycm9yPSEwfSksZ2V0X2tub3dsZWRnZSgpLCExfX0pLm9uKFwicGFzdGVcIixlPT57ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCB0PWUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKFwidGV4dC9wbGFpblwiKTtyZXR1cm4gZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJpbnNlcnRIVE1MXCIsITEsdCksITF9KTtjb25zdHtCaW5kaW5nOkJpbmRpbmd9PXJpdmV0cy5fO3JpdmV0cy5fLkJpbmRpbmc9Y2xhc3MgZXh0ZW5kcyBCaW5kaW5ne3BhcnNlVGFyZ2V0KCl7cmV0dXJuIHRoaXMuYmluZGVyLnBhcnNlVGFyZ2V0JiZPYmplY3QuYXNzaWduKHRoaXMsdGhpcy5iaW5kZXIucGFyc2VUYXJnZXQodGhpcy5rZXlwYXRoKSksc3VwZXIucGFyc2VUYXJnZXQoKX1wdWJsaXNoKCl7X2NvbnN0KHRoaXMsXCJzdGF0ZVwiLFwicHVibGlzaFwiKTtzdXBlci5wdWJsaXNoKCk7X2NvbnN0KHRoaXMsXCJzdGF0ZVwiKX19LHJpdmV0cy5iaW5kZXJzLmlucHV0PXtwYXJzZVRhcmdldChlKXtsZXQgdDtyZXR1cm5bZSx0XT1lLnRyaW0oKS5zcGxpdCgvXFxzKlxcP1xccyovKSx7a2V5cGF0aDplLGVtcHR5X2NsYXNzOnR9fSxiaW5kOmZ1bmN0aW9uKGUpeyQoZSkub24oXCJpbnB1dC5yaXZldHNcIix0aGlzLnB1Ymxpc2gpfSx1bmJpbmQ6ZnVuY3Rpb24oZSl7JChlKS5vZmYoXCJpbnB1dC5yaXZldHNcIil9LHJvdXRpbmU6ZnVuY3Rpb24oZSx0KXtcInB1Ymxpc2hcIiE9dGhpcy5zdGF0ZSYmKGUuaW5uZXJUZXh0PXQpLHN0YXRlLmVycm9yPSExLHRoaXMuZW1wdHlfY2xhc3MmJiQoZSkudG9nZ2xlQ2xhc3ModGhpcy5lbXB0eV9jbGFzcyxcIlwiPT10KX0sZ2V0VmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5uZXJUZXh0LnRyaW0oKX19LGdsb2JhbC4kc3RhdGU9c3RhdGUscml2ZXRzLmJpbmQoZG9jdW1lbnQuYm9keSxzdGF0ZSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbUZ3Y0M1cWN5SmRMQ0p1WVcxbGN5STZXeUowZVhCbElpd2ljbVZ4ZFdseVpTSXNJbkpsY1hWbGMzUWlMQ0pvSWl3aUpDSXNJbkpwZG1WMGN5SXNJbVp1SWl3aWFXNXVaWEpVWlhoMElpd2lkbUZzZFdVaUxDSjFibVJsWm1sdVpXUWlMQ0owYUdseklpd2labTl5UldGamFDSXNJbVZzWlcxbGJuUWlMQ0pqYkdWaGNpSXNJbVVpTENKcGJtNWxja2hVVFV3aUxDSnZkWFJsY2toVVRVd2lMQ0p3Y205d0lpd2ljM1JoZEdVaUxDSnRaWE56WVdkbElpd2lhMjV2ZDJ4bFpHZGxJaXdpWTI5dWRtVnljMkYwYVc5dUlpd2laWEp5YjNJaUxDSmZaWEp5YjNJaUxDSnRaWFJvYjJRaUxDSjFjbXdpTENKeVpYTndiMjV6WlNJc0luSmxjeUlzSW5OMFlYUjFjeUlzSW5SbGVIUWlMQ0pqYjI1emIyeGxJaXdpZDJGeWJpSXNJbWRsZEY5cmJtOTNiR1ZrWjJVaUxDSm5aWFFpTENKMGFHVnVJaXdpWW05a2VTSXNJbk5sYm1SZmJXVnpjMkZuWlNJc0ltTmlJaXdpY0c5emRDSXNJbk5sYm1RaUxDSndkWE5vSWl3aVgyTnZibk4wSWl3aWMyVnNaaUlzSW10bGVTSXNJazlpYW1WamRDSXNJbVJsWm1sdVpWQnliM0JsY25SNUlpd2lkM0pwZEdGaWJHVWlMQ0psYm5WdFpYSmhZbXhsSWl3aVkyOXVabWxuZFhKaFlteGxJaXdpYjI0aUxDSmpiMlJsSWl3aWMyaHBablJMWlhraUxDSmhiSFJMWlhraUxDSmpkSEpzUzJWNUlpd2lhWE5mZFhObGNpSXNJbkJ5WlhabGJuUkVaV1poZFd4MElpd2lZMnhwY0dKdllYSmtSR0YwWVNJc0ltZGxkRVJoZEdFaUxDSmtiMk4xYldWdWRDSXNJbVY0WldORGIyMXRZVzVrSWl3aVFtbHVaR2x1WnlJc0lsOGlMQ0piYjJKcVpXTjBJRTlpYW1WamRGMGlMQ0ppYVc1a1pYSWlMQ0p3WVhKelpWUmhjbWRsZENJc0ltRnpjMmxuYmlJc0ltdGxlWEJoZEdnaUxDSnpkWEJsY2lJc0luQjFZbXhwYzJnaUxDSmlhVzVrWlhKeklpd2laVzF3ZEhsZlkyeGhjM01pTENKMGNtbHRJaXdpYzNCc2FYUWlMQ0ppYVc1a0lpd2laV3dpTENKMWJtSnBibVFpTENKdlptWWlMQ0p5YjNWMGFXNWxJaXdpZEc5bloyeGxRMnhoYzNNaUxDSm5aWFJXWVd4MVpTSXNJbWRzYjJKaGJDSXNJaVJ6ZEdGMFpTSmRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNZVUZGUVN4TlFVRk5RU3hMUVVGUFF5eFJRVUZSTEZkQlEyWkRMRkZCUVZWRUxGRkJRVkVzWTBGRGJFSkZMRVZCUVVsR0xGRkJRVkVzYzBKQlExcEhMRVZCUVVsSUxGRkJRVkVzWVVGRFdra3NUMEZCVTBvc1VVRkJVU3hWUVVWMlFrY3NSVUZCUlVVc1IwRkJSME1zVlVGQldTeFRRVUZUUXl4SFFVTjRRaXhaUVVGalF5eEpRVUZXUkN4RlFVTkxSU3hMUVVGTExFZEJRVWRJTEZWQlIxWkhMRXRCUVV0RExGRkJRVkVzVTBGQlUwTXNSMEZETTBJc1QwRkJUMEVzUlVGQlVVd3NWVUZCV1N4SFFVRkxReXhMUVVsd1Ewb3NSVUZCUlVVc1IwRkJSMDhzVFVGQlVTeFhRVWxZTEU5QlNFRklMRXRCUVV0RExGRkJRVk5ITEVsQlExcEJMRVZCUVVWRExGVkJRVmtzUzBGRlZFd3NUVUZIVkU0c1JVRkJSVVVzUjBGQlIxVXNWVUZCV1N4WFFVTm1MRTlCUVU5T0xFdEJRVXRQTEV0QlFVc3NZMEZIYmtJc1RVRkJUVU1zVFVGQlVTeERRVU5hUXl4UlFVRlRMRWRCUTFSRExGVkJRVmNzUjBGRFdFTXNZVUZCWXl4SFFVTmtReXhQUVVGUExFZEJSMVFzVTBGQlUwTXNUMEZCVDBNc1JVRkJVVU1zUjBGQlQwTXNVMEZCVlVNc1NVRkRka05CTEVWQlFVMUJMRVZCUVUwc1EwRkJRMEVzUlVGQlNVTXNUMEZCVVVRc1JVRkJTVVVzVFVGQlVTeEhRVU55UTBNc1VVRkJVVU1zVTBGQlUxQXNTMEZCVlVNc1VVRkJWMFVzUjBGSGVFTXNVMEZCVTBzc1owSkJRMUE1UWl4UlFVRlJLMElzU1VGQlNTeGpRVUZqUXl4TFFVRkxMRVZCUVVkRExFdEJRVUZCTEUxQlEyaERha0lzVFVGQlRVVXNWVUZCV1dVc1IwRkRhRUp5UWl4SFFVRk5VeXhQUVVGUExFMUJRVThzWVVGQlkxUXNTVUZIZUVNc1UwRkJVM05DTEdGQlFXRlFMRVZCUVVzc1IwRkJTVkVzUjBGRE4wSnVReXhSUVVGUmIwTXNTMEZCU3l4WlFVRlpReXhMUVVGTFZpeEhRVUZOU3l4TFFVRkxMRVZCUVVkRExFdEJRVUZCTEUxQlF6RkRha0lzVFVGQlRVY3NZVUZCWVcxQ0xFdEJRVXNzUTBGQlJWZ3NTMEZCVFUwc1JVRkJTeXhOUVVOdVEzSkNMRWxCUTBaVExFOUJRVThzVDBGQlVTeFhRVUZaVkN4SFFVTjJRblZDTEVkQlEwWkJMRTFCTkVKT0xGTkJRVk5KTEU5QlFVOURMRVZCUVUxRExFVkJRVXR1UXl4SFFVbDZRaXhQUVVoQmIwTXNUMEZCVDBNc1pVRkJaVWdzUlVGQlRVTXNSVUZCU3l4RFFVTXZRbTVETEUxQlFVRkJMRVZCUVU5elF5eFZRVUZWTEVWQlFVOURMRmxCUVZrc1JVRkJUVU1zWTBGQll5eEpRVVZ1UkU0c1JVRXpRbFJPTEdWQlEwRktMR2RDUVVWQk5VSXNSVUZCUlN4MVFrRkRRelpETEVkQlFVY3NWVUZCV1c1RExFbEJRMlFzU1VGQlNVc3NSVUZCVlVRc1RVRkJUVU1zVVVGRGNFSXNSMEZCWXl4VFFVRldUQ3hGUVVGRmIwTXNUMEZCYjBKd1F5eEZRVUZGY1VNc1YwRkJZWEpETEVWQlFVVnpReXhUUVVGWGRFTXNSVUZCUlhWRExGRkJRVk1zUTBGREwwUXNSMEZCWlN4SlFVRlliRU1zUlVGRFJpeFBRVXRHTEU5QlNrRkVMRTFCUVUxRExGRkJRVlVzUjBGRGFFSkVMRTFCUVUxSExHRkJRV0Z0UWl4TFFVRkxMRU5CUVVWWUxFdEJRVTFXTEVWQlFWTnRReXhUUVVGVExFbEJRMnhFYkVJc1lVRkJZV3BDTEVWQlFWTXNTMEZCVVVRc1RVRkJUVWtzVDBGQlVTeEpRVU0xUTFVc2FVSkJRMDhzUzBGSFZtbENMRWRCUVVjc1VVRkJWVzVETEVsQlExcEJMRVZCUVVWNVF5eHBRa0ZEUml4SlFVRkpNVUlzUlVGQlQyWXNSVUZCUlRCRExHTkJRV05ETEZGQlFWRXNZMEZGYmtNc1QwRkVRVU1zVTBGQlUwTXNXVUZCV1N4alFVRmpMRVZCUVU4NVFpeEpRVU51UXl4SlFWVllMRTFCUVUwclFpeFJRVUZGUVN4VFFVRlpka1FzVDBGQlQzZEVMRVZCUXpOQ2VFUXNUMEZCVDNkRUxFVkJRVVZFTEZGQlFWVXNZMEZCWTBFc1VVRkRMMEpGTEdOQlNVVXNUMEZJU1hCRUxFdEJRVXR4UkN4UFFVRlBReXhoUVVOa2NFSXNUMEZCVDNGQ0xFOUJRVTkyUkN4TFFVRk5RU3hMUVVGTGNVUXNUMEZCVDBNc1dVRkJXWFJFTEV0QlFVdDNSQ3hWUVVVMVEwTXNUVUZCVFVnc1kwRkhaa1lzVlVGRFJYSkNMRTlCUVU4dlFpeExRVUZOTEZGQlFWTXNWMEZEV25sRUxFMUJRVTFETEZWQlEyaENNMElzVDBGQlR5OUNMRXRCUVUwc1YwRkpha0pNTEU5QlFVOW5SU3hSUVVGbExFMUJRVWtzUTBGRGVFSlFMRmxCUVZsSkxFZEJRMVlzU1VGQlNVa3NSVUZGU2l4UFFVUkRTaXhGUVVGVFNTeEhRVUZsU2l4RlFVRlJTeXhQUVVGUFF5eE5RVUZOTEZsQlEzWkRMRU5CUVVWT0xGRkJRVUZCTEVWQlFWTkpMRmxCUVVGQkxFbEJSM0JDUnl4TFFVRk5MRk5CUVZORExFZEJRMkowUlN4RlFVRkZjMFVzUjBGQlNYcENMRWRCUVVjc1pVRkJaMEoyUXl4TFFVRkxNRVFzVlVGSGFFTlBMRTlCUVZFc1UwRkJVMFFzUjBGRFpuUkZMRVZCUVVWelJTeEhRVUZKUlN4SlFVRkpMR2xDUVVkYVF5eFJRVUZUTEZOQlFWTklMRVZCUVVsc1JTeEhRVU5HTEZkQlFXUkZMRXRCUVV0UkxGRkJRMUIzUkN4RlFVRkhia1VzVlVGQldVTXNSMEZGYWtKVkxFMUJRVTFKTEU5QlFWRXNSVUZEVmxvc1MwRkJTelJFTEdGQlExQnNSU3hGUVVGRmMwVXNSMEZCU1Vrc1dVRkJXWEJGTEV0QlFVczBSQ3haUVVGelFpeEpRVUZVT1VRc1NVRkplRU4xUlN4VFFVRlhMRk5CUVZOTUxFZEJRMnhDTEU5QlFVOUJMRVZCUVVkdVJTeFZRVUZWWjBVc1UwRkplRUpUTEU5QlFVOURMRTlCUVZNdlJDeE5RVVZvUW1Jc1QwRkJUMjlGTEV0QlFVdG1MRk5CUVZOMlFpeExRVUZOYWtJaUxDSm1hV3hsSWpvaVJUcGNYSGR2Y210emNHRmpaVnhjZDJscmFXRXRhWE10WVc1emQyVnlaV1JjWEdGd2NDNXFjeUo5IiwiXCJ1c2Ugc3RyaWN0XCI7bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24ocil7cmV0dXJuIG51bGw9PXI/W106QXJyYXkuaXNBcnJheShyKT9yOltyXX07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbWx1WkdWNExtcHpJbDBzSW01aGJXVnpJanBiSW0xdlpIVnNaU0lzSW1WNGNHOXlkSE1pTENKMllXd2lMQ0pCY25KaGVTSXNJbWx6UVhKeVlYa2lYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMR0ZCUTBGQkxFOUJRVTlETEZGQlFWVXNVMEZCVlVNc1IwRkRNVUlzVDBGQlNVRXNUVUZCUVVFc1JVRkRTU3hIUVVkRVF5eE5RVUZOUXl4UlFVRlJSaXhIUVVGUFFTeEZRVUZOTEVOQlFVTkJJaXdpWm1sc1pTSTZJa1U2WEZ4M2IzSnJjM0JoWTJWY1hIZHBhMmxoTFdsekxXRnVjM2RsY21Wa1hGeHViMlJsWDIxdlpIVnNaWE5jWEdGeWNtbG1lVnhjYVc1a1pYZ3Vhbk1pZlE9PSIsIiFmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO3ZhciBlPXt9Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIG4oKXtmb3IodmFyIHI9W10sdD0wO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBmPWFyZ3VtZW50c1t0XTtpZihmKXt2YXIgbz10eXBlb2YgZjtpZihcInN0cmluZ1wiPT09b3x8XCJudW1iZXJcIj09PW8pci5wdXNoKGYpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShmKSYmZi5sZW5ndGgpe3ZhciBpPW4uYXBwbHkobnVsbCxmKTtpJiZyLnB1c2goaSl9ZWxzZSBpZihcIm9iamVjdFwiPT09bylmb3IodmFyIGEgaW4gZillLmNhbGwoZixhKSYmZlthXSYmci5wdXNoKGEpfX1yZXR1cm4gci5qb2luKFwiIFwiKX1cInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8obi5kZWZhdWx0PW4sbW9kdWxlLmV4cG9ydHM9bik6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZcIm9iamVjdFwiPT10eXBlb2YgZGVmaW5lLmFtZCYmZGVmaW5lLmFtZD9kZWZpbmUoXCJjbGFzc25hbWVzXCIsW10sZnVuY3Rpb24oKXtyZXR1cm4gbn0pOndpbmRvdy5jbGFzc05hbWVzPW59KCk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbWx1WkdWNExtcHpJbDBzSW01aGJXVnpJanBiSW1oaGMwOTNiaUlzSW1oaGMwOTNibEJ5YjNCbGNuUjVJaXdpWTJ4aGMzTk9ZVzFsY3lJc0ltTnNZWE56WlhNaUxDSnBJaXdpWVhKbmRXMWxiblJ6SWl3aWJHVnVaM1JvSWl3aVlYSm5JaXdpWVhKblZIbHdaU0lzSW5CMWMyZ2lMQ0pCY25KaGVTSXNJbWx6UVhKeVlYa2lMQ0pwYm01bGNpSXNJbUZ3Y0d4NUlpd2lhMlY1SWl3aVkyRnNiQ0lzSW1wdmFXNGlMQ0p0YjJSMWJHVWlMQ0psZUhCdmNuUnpJaXdpWkdWbVlYVnNkQ0lzSW1SbFptbHVaU0lzSW1GdFpDSXNJbmRwYm1SdmR5SmRMQ0p0WVhCd2FXNW5jeUk2SWtOQlQwTXNWMEZEUVN4aFFVVkJMRWxCUVVsQkxFVkJRVk1zUjBGQlIwTXNaVUZGYUVJc1UwRkJVME1zU1VGSFVpeEpRVVpCTEVsQlFVbERMRVZCUVZVc1IwRkZURU1zUlVGQlNTeEZRVUZIUVN4RlFVRkpReXhWUVVGVlF5eFBRVUZSUml4SlFVRkxMRU5CUXpGRExFbEJRVWxITEVWQlFVMUdMRlZCUVZWRUxFZEJRM0JDTEVkQlFVdEhMRVZCUVV3c1EwRkZRU3hKUVVGSlF5eFRRVUZwUWtRc1JVRkZja0lzUjBGQlowSXNWMEZCV2tNc1IwRkJiME1zVjBGQldrRXNSVUZETTBKTUxFVkJRVkZOTEV0QlFVdEdMRkZCUTFBc1IwRkJTVWNzVFVGQlRVTXNVVUZCVVVvc1NVRkJVVUVzUlVGQlNVUXNUMEZCVVN4RFFVTTFReXhKUVVGSlRTeEZRVUZSVml4RlFVRlhWeXhOUVVGTkxFdEJRVTFPTEVkQlF5OUNTeXhIUVVOSVZDeEZRVUZSVFN4TFFVRkxSeXhSUVVWU0xFZEJRV2RDTEZkQlFWcEtMRVZCUTFZc1NVRkJTeXhKUVVGSlRTeExRVUZQVUN4RlFVTllVQ3hGUVVGUFpTeExRVUZMVWl4RlFVRkxUeXhKUVVGUlVDeEZRVUZKVHl4SlFVTm9RMWdzUlVGQlVVMHNTMEZCUzBzc1NVRk5ha0lzVDBGQlQxZ3NSVUZCVVdFc1MwRkJTeXhMUVVkRExHOUNRVUZZUXl4UlFVRXdRa0VzVDBGQlQwTXNVMEZETTBOb1FpeEZRVUZYYVVJc1VVRkJWV3BDTEVWQlEzSkNaU3hQUVVGUFF5eFJRVUZWYUVJc1IwRkRWeXh0UWtGQldHdENMRkZCUVN0RExHbENRVUZtUVN4UFFVRlBReXhMUVVGdlFrUXNUMEZCVDBNc1NVRkZia1pFTEU5QlFVOHNZVUZCWXl4SFFVRkpMRmRCUTNoQ0xFOUJRVTlzUWl4SlFVZFNiMElzVDBGQlQzQkNMRmRCUVdGQkxFVkJNVU4wUWlJc0ltWnBiR1VpT2lKRk9seGNkMjl5YTNOd1lXTmxYRngzYVd0cFlTMXBjeTFoYm5OM1pYSmxaRnhjYm05a1pWOXRiMlIxYkdWelhGeGpiR0Z6YzI1aGJXVnpYRnhwYm1SbGVDNXFjeUo5IiwiZnVuY3Rpb24gRW1pdHRlcih0KXtpZih0KXJldHVybiBtaXhpbih0KX1mdW5jdGlvbiBtaXhpbih0KXtmb3IodmFyIGUgaW4gRW1pdHRlci5wcm90b3R5cGUpdFtlXT1FbWl0dGVyLnByb3RvdHlwZVtlXTtyZXR1cm4gdH1cInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlJiYobW9kdWxlLmV4cG9ydHM9RW1pdHRlciksRW1pdHRlci5wcm90b3R5cGUub249RW1pdHRlci5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHx7fSwodGhpcy5fY2FsbGJhY2tzW1wiJFwiK3RdPXRoaXMuX2NhbGxiYWNrc1tcIiRcIit0XXx8W10pLnB1c2goZSksdGhpc30sRW1pdHRlci5wcm90b3R5cGUub25jZT1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIGkoKXt0aGlzLm9mZih0LGkpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBpLmZuPWUsdGhpcy5vbih0LGkpLHRoaXN9LEVtaXR0ZXIucHJvdG90eXBlLm9mZj1FbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcj1FbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnM9RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lcj1mdW5jdGlvbih0LGUpe2lmKHRoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9LDA9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuX2NhbGxiYWNrcz17fSx0aGlzO3ZhciBpLHI9dGhpcy5fY2FsbGJhY2tzW1wiJFwiK3RdO2lmKCFyKXJldHVybiB0aGlzO2lmKDE9PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGRlbGV0ZSB0aGlzLl9jYWxsYmFja3NbXCIkXCIrdF0sdGhpcztmb3IodmFyIHM9MDtzPHIubGVuZ3RoO3MrKylpZigoaT1yW3NdKT09PWV8fGkuZm49PT1lKXtyLnNwbGljZShzLDEpO2JyZWFrfXJldHVybiB0aGlzfSxFbWl0dGVyLnByb3RvdHlwZS5lbWl0PWZ1bmN0aW9uKHQpe3RoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9O3ZhciBlPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLGk9dGhpcy5fY2FsbGJhY2tzW1wiJFwiK3RdO2lmKGkpZm9yKHZhciByPTAscz0oaT1pLnNsaWNlKDApKS5sZW5ndGg7cjxzOysrcilpW3JdLmFwcGx5KHRoaXMsZSk7cmV0dXJuIHRoaXN9LEVtaXR0ZXIucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8e30sdGhpcy5fY2FsbGJhY2tzW1wiJFwiK3RdfHxbXX0sRW1pdHRlci5wcm90b3R5cGUuaGFzTGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3JldHVybiEhdGhpcy5saXN0ZW5lcnModCkubGVuZ3RofTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR1Y0TG1weklsMHNJbTVoYldWeklqcGJJa1Z0YVhSMFpYSWlMQ0p2WW1vaUxDSnRhWGhwYmlJc0ltdGxlU0lzSW5CeWIzUnZkSGx3WlNJc0ltMXZaSFZzWlNJc0ltVjRjRzl5ZEhNaUxDSnZiaUlzSW1Ga1pFVjJaVzUwVEdsemRHVnVaWElpTENKbGRtVnVkQ0lzSW1adUlpd2lkR2hwY3lJc0lsOWpZV3hzWW1GamEzTWlMQ0p3ZFhOb0lpd2liMjVqWlNJc0ltOW1aaUlzSW1Gd2NHeDVJaXdpWVhKbmRXMWxiblJ6SWl3aWNtVnRiM1psVEdsemRHVnVaWElpTENKeVpXMXZkbVZCYkd4TWFYTjBaVzVsY25NaUxDSnlaVzF2ZG1WRmRtVnVkRXhwYzNSbGJtVnlJaXdpYkdWdVozUm9JaXdpWTJJaUxDSmpZV3hzWW1GamEzTWlMQ0pwSWl3aWMzQnNhV05sSWl3aVpXMXBkQ0lzSW1GeVozTWlMQ0p6YkdsalpTSXNJbU5oYkd3aUxDSnNaVzRpTENKc2FYTjBaVzVsY25NaUxDSm9ZWE5NYVhOMFpXNWxjbk1pWFN3aWJXRndjR2x1WjNNaU9pSkJRV1ZCTEZOQlFWTkJMRkZCUVZGRExFZEJRMllzUjBGQlNVRXNSVUZCU3l4UFFVRlBReXhOUVVGTlJDeEhRVmQ0UWl4VFFVRlRReXhOUVVGTlJDeEhRVU5pTEVsQlFVc3NTVUZCU1VVc1MwRkJUMGdzVVVGQlVVa3NWVUZEZEVKSUxFVkJRVWxGTEVkQlFVOUlMRkZCUVZGSkxGVkJRVlZFTEVkQlJTOUNMRTlCUVU5R0xFVkJNVUpoTEc5Q1FVRllTU3hUUVVOVVFTeFBRVUZQUXl4UlFVRlZUaXhUUVhGRGJrSkJMRkZCUVZGSkxGVkJRVlZITEVkQlEyeENVQ3hSUVVGUlNTeFZRVUZWU1N4cFFrRkJiVUlzVTBGQlUwTXNSVUZCVDBNc1IwRkpia1FzVDBGSVFVTXNTMEZCUzBNc1YwRkJZVVFzUzBGQlMwTXNXVUZCWXl4SlFVTndRMFFzUzBGQlMwTXNWMEZCVnl4SlFVRk5TQ3hIUVVGVFJTeExRVUZMUXl4WFFVRlhMRWxCUVUxSUxFbEJRVlVzU1VGRE4wUkpMRXRCUVV0SUxFZEJRMFJETEUxQllWUllMRkZCUVZGSkxGVkJRVlZWTEV0QlFVOHNVMEZCVTB3c1JVRkJUME1zUjBGRGRrTXNVMEZCVTBnc1NVRkRVRWtzUzBGQlMwa3NTVUZCU1U0c1JVRkJUMFlzUjBGRGFFSkhMRVZCUVVkTkxFMUJRVTFNTEV0QlFVMU5MRmRCUzJwQ0xFOUJSa0ZXTEVWQlFVZEhMRWRCUVV0QkxFVkJRMUpETEV0QlFVdEtMRWRCUVVkRkxFVkJRVTlHTEVkQlExSkpMRTFCWVZSWUxGRkJRVkZKTEZWQlFWVlhMRWxCUTJ4Q1ppeFJRVUZSU1N4VlFVRlZZeXhsUVVOc1FteENMRkZCUVZGSkxGVkJRVlZsTEcxQ1FVTnNRbTVDTEZGQlFWRkpMRlZCUVZWblFpeHZRa0ZCYzBJc1UwRkJVMWdzUlVGQlQwTXNSMEZKZEVRc1IwRklRVU1zUzBGQlMwTXNWMEZCWVVRc1MwRkJTME1zV1VGQll5eEhRVWRxUXl4SFFVRkxTeXhWUVVGVlNTeFBRVVZxUWl4UFFVUkJWaXhMUVVGTFF5eFhRVUZoTEVkQlExaEVMRXRCU1ZRc1NVRlZTVmNzUlVGV1FVTXNSVUZCV1Zvc1MwRkJTME1zVjBGQlZ5eEpRVUZOU0N4SFFVTjBReXhKUVVGTFl5eEZRVUZYTEU5QlFVOWFMRXRCUjNaQ0xFZEJRVWtzUjBGQlMwMHNWVUZCVlVrc1QwRkZha0lzWTBGRVQxWXNTMEZCUzBNc1YwRkJWeXhKUVVGTlNDeEhRVU4wUWtVc1MwRkxWQ3hKUVVGTExFbEJRVWxoTEVWQlFVa3NSVUZCUjBFc1JVRkJTVVFzUlVGQlZVWXNUMEZCVVVjc1NVRkZjRU1zU1VGRVFVWXNSVUZCUzBNc1JVRkJWVU1zVFVGRFNtUXNSMEZCVFZrc1JVRkJSMW9zUzBGQlQwRXNSVUZCU1N4RFFVTTNRbUVzUlVGQlZVVXNUMEZCVDBRc1JVRkJSeXhIUVVOd1FpeE5RVWRLTEU5QlFVOWlMRTFCVjFSWUxGRkJRVkZKTEZWQlFWVnpRaXhMUVVGUExGTkJRVk5xUWl4SFFVTm9RMFVzUzBGQlMwTXNWMEZCWVVRc1MwRkJTME1zV1VGQll5eEhRVU55UXl4SlFVRkpaU3hGUVVGUExFZEJRVWRETEUxQlFVMURMRXRCUVV0YUxGVkJRVmNzUjBGRGFFTk5MRVZCUVZsYUxFdEJRVXRETEZkQlFWY3NTVUZCVFVnc1IwRkZkRU1zUjBGQlNXTXNSVUZGUml4SlFVRkxMRWxCUVVsRExFVkJRVWtzUlVGQlIwMHNSMEZFYUVKUUxFVkJRVmxCTEVWQlFWVkxMRTFCUVUwc1NVRkRTVkFzVDBGQlVVY3NSVUZCU1Uwc1NVRkJUMDRzUlVGRGFrUkVMRVZCUVZWRExFZEJRVWRTTEUxQlFVMU1MRXRCUVUxblFpeEhRVWszUWl4UFFVRlBhRUlzVFVGWFZGZ3NVVUZCVVVrc1ZVRkJWVEpDTEZWQlFWa3NVMEZCVTNSQ0xFZEJSWEpETEU5QlJFRkZMRXRCUVV0RExGZEJRV0ZFTEV0QlFVdERMRmxCUVdNc1IwRkRPVUpFTEV0QlFVdERMRmRCUVZjc1NVRkJUVWdzU1VGQlZTeEpRVmQ2UTFRc1VVRkJVVWtzVlVGQlZUUkNMR0ZCUVdVc1UwRkJVM1pDTEVkQlEzaERMRkZCUVZWRkxFdEJRVXR2UWl4VlFVRlZkRUlzUjBGQlQxa2lMQ0ptYVd4bElqb2lSVHBjWEhkdmNtdHpjR0ZqWlZ4Y2QybHJhV0V0YVhNdFlXNXpkMlZ5WldSY1hHNXZaR1ZmYlc5a2RXeGxjMXhjWTI5dGNHOXVaVzUwTFdWdGFYUjBaWEpjWEdsdVpHVjRMbXB6SW4wPSIsIiFmdW5jdGlvbihlLHQpe1wib2JqZWN0XCI9PXR5cGVvZiBleHBvcnRzJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlP21vZHVsZS5leHBvcnRzPXQoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOihlPWV8fHNlbGYpLiQ9dCgpfSh0aGlzLGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIGUsdCxuPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93Ont9LGk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PWUubGVuZ3RoLG49bmV3IEFycmF5KHQpLGk9MDtpPHQ7aSsrKW5baV09ZVtpXTtyZXR1cm4gbn0scj1mdW5jdGlvbihlLHQsbil7dmFyIGk9ZS5sZW5ndGg7aWYodm9pZCAwIT09aSYmdm9pZCAwPT09ZS5ub2RlVHlwZSlmb3IodmFyIHI9MDtyPGk7cisrKXQuY2FsbChuLGVbcl0scixlKTtlbHNlIHQuY2FsbChuLGUsMCxlKTtyZXR1cm4gZX0sbz1mdW5jdGlvbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0PjE/dC0xOjApLGk9MTtpPHQ7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbih0KXtmb3IodmFyIG4gaW4gdCllW25dPXRbbl19KSxlfSx1PWZ1bmN0aW9uKGUpe3JldHVybiBlLmZpbHRlcihmdW5jdGlvbih0LG4pe3JldHVybiBlLmluZGV4T2YodCk9PT1ufSl9LHM9ITEsYz0vXlxccyo8KFxcdyt8ISlbXj5dKj4vLGY9L148KFxcdyspXFxzKlxcLz8+KD86PFxcL1xcMT58KSQvLGE9L15bLiNdP1tcXHctXSokLyxsPWZ1bmN0aW9uKGUsdCl7dmFyIG47aWYodm9pZCAwPT09dCYmKHQ9ZG9jdW1lbnQpLGUpe2lmKGUgaW5zdGFuY2VvZiB5KXJldHVybiBlO1wic3RyaW5nXCIhPXR5cGVvZiBlP249ZS5ub2RlVHlwZXx8ZT09PXdpbmRvdz9bZV06ZTpjLnRlc3QoZSk/bj12KGUpOih0PVwic3RyaW5nXCI9PXR5cGVvZiB0P2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodCk6dC5sZW5ndGg/dFswXTp0LG49cChlLHQpKX1lbHNlIG49ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChudWxsKTtyZXR1cm4gbShuKX0sZD1mdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gcih0aGlzLGZ1bmN0aW9uKG4pe3JldHVybiByKHAoZSxuKSxmdW5jdGlvbihlKXstMT09PXQuaW5kZXhPZihlKSYmdC5wdXNoKGUpfSl9KSxsKHQpfSxoPShlPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBFbGVtZW50P0VsZW1lbnQucHJvdG90eXBlOm4sdD1lLm1hdGNoZXN8fGUubWF0Y2hlc1NlbGVjdG9yfHxlLm1vek1hdGNoZXNTZWxlY3Rvcnx8ZS5tc01hdGNoZXNTZWxlY3Rvcnx8ZS5vTWF0Y2hlc1NlbGVjdG9yfHxlLndlYmtpdE1hdGNoZXNTZWxlY3RvcixmdW5jdGlvbihlLG4pe3JldHVybiB0LmNhbGwoZSxuKX0pLHA9ZnVuY3Rpb24oZSx0KXtpZihhLnRlc3QoZSkpe2lmKFwiI1wiPT09ZVswXSl7dmFyIG49KHQuZ2V0RWxlbWVudEJ5SWQ/dDpkb2N1bWVudCkuZ2V0RWxlbWVudEJ5SWQoZS5zbGljZSgxKSk7cmV0dXJuIG4/W25dOltdfXJldHVyblwiLlwiPT09ZVswXT90LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoZS5zbGljZSgxKSk6dC5nZXRFbGVtZW50c0J5VGFnTmFtZShlKX1yZXR1cm4gdC5xdWVyeVNlbGVjdG9yQWxsKGUpfSx2PWZ1bmN0aW9uKGUpe2lmKGYudGVzdChlKSlyZXR1cm5bZG9jdW1lbnQuY3JlYXRlRWxlbWVudChSZWdFeHAuJDEpXTt2YXIgdD1bXSxuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksaT1uLmNoaWxkTm9kZXM7bi5pbm5lckhUTUw9ZTtmb3IodmFyIHI9MCxvPWkubGVuZ3RoO3I8bztyKyspdC5wdXNoKGlbcl0pO3JldHVybiB0fSxtPWZ1bmN0aW9uKGUpe3JldHVybiBzfHwoeS5wcm90b3R5cGU9bC5mbix5LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj15LHM9ITApLG5ldyB5KGUpfSx5PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0wLG49ZS5sZW5ndGg7dDxuOyl0aGlzW3RdPWVbdCsrXTt0aGlzLmxlbmd0aD1ufSxiPU9iamVjdC5mcmVlemUoeyQ6bCxmaW5kOmQsbWF0Y2hlczpoLERPTXRhc3RpYzp5fSksZz1BcnJheS5wcm90b3R5cGUsRT1nLmV2ZXJ5LE49ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcih0aGlzLGUsdCl9LEM9TixPPWcuaW5kZXhPZix3PWcubWFwLFQ9Zy5wb3Asaj1nLnB1c2gsQT1nLnJlZHVjZSxMPWcucmVkdWNlUmlnaHQsRD1nLnNoaWZ0LHo9Zy5zb21lLF89Zy51bnNoaWZ0LE09T2JqZWN0LmZyZWV6ZSh7ZXZlcnk6RSxmaWx0ZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBlP2U6ZnVuY3Rpb24odCl7cmV0dXJuIGgodCxlKX07cmV0dXJuIGwoZy5maWx0ZXIuY2FsbCh0aGlzLG4sdCkpfSxmb3JFYWNoOk4sZWFjaDpDLGluZGV4T2Y6TyxtYXA6dyxwb3A6VCxwdXNoOmoscmVkdWNlOkEscmVkdWNlUmlnaHQ6TCxyZXZlcnNlOmZ1bmN0aW9uKCl7cmV0dXJuIGwoaSh0aGlzKS5yZXZlcnNlKCkpfSxzaGlmdDpELHNvbWU6eix1bnNoaWZ0Ol99KTtmdW5jdGlvbiB4KGUpe3ZhciB0PWZ1bmN0aW9uKCl7eS5jYWxsKHRoaXMsbC5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9O3JldHVybiBvKHQucHJvdG90eXBlLGUpLHR9dmFyIFM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvLShbXFxkYS16XSkvZ2ksZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfSl9LFA9T2JqZWN0LmZyZWV6ZSh7Y3NzOmZ1bmN0aW9uKGUsdCl7dmFyIG4saSxvO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlKXtpZihlPVMoZSksdm9pZCAwPT09dCl7dmFyIHU9dGhpcy5ub2RlVHlwZT90aGlzOnRoaXNbMF07cmV0dXJuIHU/ZnVuY3Rpb24oZSl7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQoZSkpJiZpc0Zpbml0ZShlKX0obz11LnN0eWxlW2VdKT9wYXJzZUZsb2F0KG8pOm86dm9pZCAwfShuPXt9KVtlXT10fWVsc2UgZm9yKGkgaW4gbj1lKW89bltpXSxkZWxldGUgbltpXSxuW1MoaSldPW87cmV0dXJuIHIodGhpcyxmdW5jdGlvbihlKXtmb3IoaSBpbiBuKW5baV18fDA9PT1uW2ldP2Uuc3R5bGVbaV09bltpXTplLnN0eWxlLnJlbW92ZVByb3BlcnR5KGkucmVwbGFjZSgvKFthLXpcXGRdKShbQS1aXSkvZyxcIiQxLSQyXCIpLnRvTG93ZXJDYXNlKCkpfSksdGhpc319KSxIPUFycmF5LnByb3RvdHlwZS5mb3JFYWNoLCQ9ZnVuY3Rpb24gZSh0KXtpZih0aGlzIGluc3RhbmNlb2YgTm9kZSlpZihcInN0cmluZ1wiPT10eXBlb2YgdCl0aGlzLmluc2VydEFkamFjZW50SFRNTChcImJlZm9yZWVuZFwiLHQpO2Vsc2UgaWYodCBpbnN0YW5jZW9mIE5vZGUpdGhpcy5hcHBlbmRDaGlsZCh0KTtlbHNle3ZhciBuPXQgaW5zdGFuY2VvZiBOb2RlTGlzdD9pKHQpOnQ7SC5jYWxsKG4sdGhpcy5hcHBlbmRDaGlsZC5iaW5kKHRoaXMpKX1lbHNlIGsodGhpcyxlLHQpO3JldHVybiB0aGlzfSxJPWZ1bmN0aW9uIGUodCl7aWYodGhpcyBpbnN0YW5jZW9mIE5vZGUpaWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpdGhpcy5pbnNlcnRBZGphY2VudEhUTUwoXCJiZWZvcmViZWdpblwiLHQpO2Vsc2UgaWYodCBpbnN0YW5jZW9mIE5vZGUpdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LHRoaXMpO2Vsc2V7dmFyIG49dCBpbnN0YW5jZW9mIE5vZGVMaXN0P2kodCk6dDtILmNhbGwobixlLmJpbmQodGhpcykpfWVsc2Ugayh0aGlzLGUsdCk7cmV0dXJuIHRoaXN9LEI9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGU/ZTplIGluc3RhbmNlb2YgTm9kZT9lLmNsb25lTm9kZSghMCk6XCJsZW5ndGhcImluIGU/W10ubWFwLmNhbGwoZSxmdW5jdGlvbihlKXtyZXR1cm4gZS5jbG9uZU5vZGUoITApfSk6ZX0saz1mdW5jdGlvbihlLHQsbil7Zm9yKHZhciBpPWUubGVuZ3RoO2ktLTspe3ZhciByPTA9PT1pP246QihuKTt0LmNhbGwoZVtpXSxyKX19LHE9T2JqZWN0LmZyZWV6ZSh7YXBwZW5kOiQscHJlcGVuZDpmdW5jdGlvbiBlKHQpe2lmKHRoaXMgaW5zdGFuY2VvZiBOb2RlKWlmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXRoaXMuaW5zZXJ0QWRqYWNlbnRIVE1MKFwiYWZ0ZXJiZWdpblwiLHQpO2Vsc2UgaWYodCBpbnN0YW5jZW9mIE5vZGUpdGhpcy5pbnNlcnRCZWZvcmUodCx0aGlzLmZpcnN0Q2hpbGQpO2Vsc2V7dmFyIG49dCBpbnN0YW5jZW9mIE5vZGVMaXN0P2kodCk6dDtILmNhbGwobi5yZXZlcnNlKCksZS5iaW5kKHRoaXMpKX1lbHNlIGsodGhpcyxlLHQpO3JldHVybiB0aGlzfSxiZWZvcmU6SSxhZnRlcjpmdW5jdGlvbiBlKHQpe2lmKHRoaXMgaW5zdGFuY2VvZiBOb2RlKWlmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXRoaXMuaW5zZXJ0QWRqYWNlbnRIVE1MKFwiYWZ0ZXJlbmRcIix0KTtlbHNlIGlmKHQgaW5zdGFuY2VvZiBOb2RlKXRoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTtlbHNle3ZhciBuPXQgaW5zdGFuY2VvZiBOb2RlTGlzdD9pKHQpOnQ7SC5jYWxsKG4ucmV2ZXJzZSgpLGUuYmluZCh0aGlzKSl9ZWxzZSBrKHRoaXMsZSx0KTtyZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gbChCKHRoaXMpKX0sX2Nsb25lOkIsX2VhY2g6a30pLEY9T2JqZWN0LmZyZWV6ZSh7YXR0cjpmdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiZ2b2lkIDA9PT10KXt2YXIgbj10aGlzLm5vZGVUeXBlP3RoaXM6dGhpc1swXTtyZXR1cm4gbj9uLmdldEF0dHJpYnV0ZShlKTp2b2lkIDB9cmV0dXJuIHIodGhpcyxmdW5jdGlvbihuKXtpZihcIm9iamVjdFwiPT10eXBlb2YgZSlmb3IodmFyIGkgaW4gZSluLnNldEF0dHJpYnV0ZShpLGVbaV0pO2Vsc2Ugbi5zZXRBdHRyaWJ1dGUoZSx0KX0pfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGUpe3JldHVybiByKHRoaXMsZnVuY3Rpb24odCl7cmV0dXJuIHQucmVtb3ZlQXR0cmlidXRlKGUpfSl9fSksUj1mdW5jdGlvbihlLHQpe3JldHVybiByKHRoaXMsZnVuY3Rpb24obil7cmV0dXJuIG4uY2xhc3NMaXN0W2VdKHQpfSl9LFU9T2JqZWN0LmZyZWV6ZSh7YWRkQ2xhc3M6ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUubGVuZ3RoJiZyKGUuc3BsaXQoXCIgXCIpLFIuYmluZCh0aGlzLFwiYWRkXCIpKSx0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5sZW5ndGgmJnIoZS5zcGxpdChcIiBcIiksUi5iaW5kKHRoaXMsXCJyZW1vdmVcIikpLHRoaXN9LHRvZ2dsZUNsYXNzOmZ1bmN0aW9uKGUsdCl7aWYoZSYmZS5sZW5ndGgpe3ZhciBuPVwiYm9vbGVhblwiPT10eXBlb2YgdD90P1wiYWRkXCI6XCJyZW1vdmVcIjpcInRvZ2dsZVwiO3IoZS5zcGxpdChcIiBcIiksUi5iaW5kKHRoaXMsbikpfXJldHVybiB0aGlzfSxoYXNDbGFzczpmdW5jdGlvbihlKXtyZXR1cm4odGhpcy5ub2RlVHlwZT9bdGhpc106dGhpcykuc29tZShmdW5jdGlvbih0KXtyZXR1cm4gdC5jbGFzc0xpc3QuY29udGFpbnMoZSl9KX19KSxLPWZ1bmN0aW9uKGUsdCl7cmV0dXJuISghZXx8IXR8fGU9PT10KSYmKGUuY29udGFpbnM/ZS5jb250YWlucyh0KTohIWUuY29tcGFyZURvY3VtZW50UG9zaXRpb24mJiEoZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSZOb2RlLkRPQ1VNRU5UX1BPU0lUSU9OX0RJU0NPTk5FQ1RFRCkpfSxXPU9iamVjdC5mcmVlemUoe2NvbnRhaW5zOkt9KSxaPVwidW5kZWZpbmVkXCIhPXR5cGVvZiBkb2N1bWVudCYmXCJkYXRhc2V0XCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsRz1aP1wiZGF0YXNldFwiOlwiX19ET01UQVNUSUNfREFUQV9fXCIsSj1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8tKyguKT8vZyxmdW5jdGlvbihlLHQpe3JldHVybiB0P3QudG9VcHBlckNhc2UoKTpcIlwifSl9LFE9T2JqZWN0LmZyZWV6ZSh7ZGF0YTpmdW5jdGlvbihlLHQpe2lmKFwic3RyaW5nXCI9PXR5cGVvZiBlJiZ2b2lkIDA9PT10KXt2YXIgbj10aGlzLm5vZGVUeXBlP3RoaXM6dGhpc1swXTtyZXR1cm4gbiYmRyBpbiBuP25bR11bSihlKV06dm9pZCAwfXJldHVybiByKHRoaXMsZnVuY3Rpb24obil7Wnx8KG5bR109bltHXXx8e30pLG5bR11bSihlKV09dH0pfSxwcm9wOmZ1bmN0aW9uKGUsdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJnZvaWQgMD09PXQpe3ZhciBuPXRoaXMubm9kZVR5cGU/dGhpczp0aGlzWzBdO3JldHVybiBuJiZuP25bZV06dm9pZCAwfXJldHVybiByKHRoaXMsZnVuY3Rpb24obil7cmV0dXJuIG5bZV09dH0pfX0pLFY9T2JqZWN0LmZyZWV6ZSh7YXBwZW5kVG86ZnVuY3Rpb24oZSl7dmFyIHQ9XCJzdHJpbmdcIj09dHlwZW9mIGU/bChlKTplO3JldHVybiAkLmNhbGwodCx0aGlzKSx0aGlzfSxlbXB0eTpmdW5jdGlvbigpe3JldHVybiByKHRoaXMsZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5uZXJIVE1MPVwiXCJ9KX0scmVtb3ZlOmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcyxmdW5jdGlvbihlKXtlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0pfSxyZXBsYWNlV2l0aDpmdW5jdGlvbigpe3JldHVybiBJLmFwcGx5KHRoaXMsYXJndW1lbnRzKS5yZW1vdmUoKX0sdGV4dDpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZT90aGlzWzBdLnRleHRDb250ZW50OnIodGhpcyxmdW5jdGlvbih0KXtyZXR1cm4gdC50ZXh0Q29udGVudD1cIlwiK2V9KX0sdmFsOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP3RoaXMubGVuZ3RoPjA/dGhpc1swXS52YWx1ZTp2b2lkIDA6cih0aGlzLGZ1bmN0aW9uKHQpe3JldHVybiB0LnZhbHVlPWV9KX19KSxYPU9iamVjdC5mcmVlemUoe2h0bWw6ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZSl7dmFyIHQ9dGhpcy5ub2RlVHlwZT90aGlzOnRoaXNbMF07cmV0dXJuIHQ/dC5pbm5lckhUTUw6dm9pZCAwfXJldHVybiByKHRoaXMsZnVuY3Rpb24odCl7cmV0dXJuIHQuaW5uZXJIVE1MPWV9KX19KSxZPWZ1bmN0aW9uKCl7dmFyIGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXTtyZXR1cm4gcih0aGlzLGZ1bmN0aW9uKGkpe2Zvcig7aSYmaSE9PXQ7KXtpZihoKGksZSkpe24ucHVzaChpKTticmVha31pPWkucGFyZW50RWxlbWVudH19KSxsKHUobikpfTtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2YgRWxlbWVudCYmRWxlbWVudC5wcm90b3R5cGUuY2xvc2VzdD9mdW5jdGlvbih0LG4pe2lmKG4pcmV0dXJuIGUuY2FsbCh0aGlzLHQsbik7dmFyIGk9W107cmV0dXJuIHIodGhpcyxmdW5jdGlvbihlKXt2YXIgbj1lLmNsb3Nlc3QodCk7biYmaS5wdXNoKG4pfSksbCh1KGkpKX06ZX0oKSxlZT1PYmplY3QuZnJlZXplKHtjbG9zZXN0Oll9KSx0ZT1mdW5jdGlvbihlLHQsbixpLG8pe3ZhciB1LHMsYyxmPXRoaXM7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKG49dCx0PW51bGwpLGUuc3BsaXQoXCIgXCIpLmZvckVhY2goZnVuY3Rpb24oYSl7dT1hLnNwbGl0KFwiLlwiKSxhPXVbMF18fG51bGwscz11WzFdfHxudWxsLGM9ZmUobikscihmLGZ1bmN0aW9uKHIpe2lmKHQmJihjPXBlLmJpbmQocix0LGMpKSxvKXt2YXIgdT1jO2M9ZnVuY3Rpb24obyl7bmUuY2FsbChyLGUsdCxuLGkpLHUuY2FsbChyLG8pfX1yLmFkZEV2ZW50TGlzdGVuZXIoYSxjLGl8fCExKSxzZShyKS5wdXNoKHtldmVudE5hbWU6YSxoYW5kbGVyOm4sZXZlbnRMaXN0ZW5lcjpjLHNlbGVjdG9yOnQsbmFtZXNwYWNlOnN9KX0pfSx0aGlzKSx0aGlzfSxuZT1mdW5jdGlvbihlLHQsbixpKXt2YXIgbyx1LHMsYz10aGlzO3JldHVybiB2b2lkIDA9PT1lJiYoZT1cIlwiKSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYobj10LHQ9bnVsbCksZS5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4gbz1lLnNwbGl0KFwiLlwiKSxlPW9bMF18fG51bGwsdT1vWzFdfHxudWxsLHIoYyxmdW5jdGlvbihvKXtzPXNlKG8pLHIocy5maWx0ZXIoZnVuY3Rpb24oaSl7cmV0dXJuIShlJiZpLmV2ZW50TmFtZSE9PWV8fHUmJmkubmFtZXNwYWNlIT09dXx8biYmaS5oYW5kbGVyIT09bnx8dCYmaS5zZWxlY3RvciE9PXQpfSksZnVuY3Rpb24oZSl7by5yZW1vdmVFdmVudExpc3RlbmVyKGUuZXZlbnROYW1lLGUuZXZlbnRMaXN0ZW5lcixpfHwhMSkscy5zcGxpY2Uocy5pbmRleE9mKGUpLDEpfSksZXx8dXx8dHx8bj8wPT09cy5sZW5ndGgmJmNlKG8pOmNlKG8pfSl9LHRoaXMpLHRoaXN9LGllPVwiX19kb210YXN0aWNfZXZlbnRfX1wiLHJlPTEsb2U9e30sdWU9W10sc2U9ZnVuY3Rpb24oZSl7ZVtpZV18fChlW2llXT0wPT09dWUubGVuZ3RoPysrcmU6dWUucG9wKCkpO3ZhciB0PWVbaWVdO3JldHVybiBvZVt0XXx8KG9lW3RdPVtdKX0sY2U9ZnVuY3Rpb24oZSl7dmFyIHQ9ZVtpZV07b2VbdF0mJihvZVt0XT1udWxsLGVbaWVdPW51bGwsdWUucHVzaCh0KSl9LGZlPWZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gZS5jYWxsKHRoaXMsaGUodCkpfX0sYWU9e3ByZXZlbnREZWZhdWx0OlwiaXNEZWZhdWx0UHJldmVudGVkXCIsc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uOlwiaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWRcIixzdG9wUHJvcGFnYXRpb246XCJpc1Byb3BhZ2F0aW9uU3RvcHBlZFwifSxsZT1mdW5jdGlvbigpe3JldHVybiEwfSxkZT1mdW5jdGlvbigpe3JldHVybiExfSxoZT1mdW5jdGlvbihlKXtpZighZS5pc0RlZmF1bHRQcmV2ZW50ZWR8fGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9ufHxlLnN0b3BQcm9wYWdhdGlvbil7Zm9yKHZhciB0IGluIGFlKSFmdW5jdGlvbih0LG4saSl7ZVt0XT1mdW5jdGlvbigpe3JldHVybiB0aGlzW25dPWxlLGkmJmkuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxlW25dPWRlfSh0LGFlW3RdLGVbdF0pO2UuX3ByZXZlbnREZWZhdWx0JiZlLnByZXZlbnREZWZhdWx0KCl9cmV0dXJuIGV9LHBlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1uLl90YXJnZXR8fG4udGFyZ2V0LHI9WS5jYWxsKFtpXSxlLHRoaXMpWzBdO3ImJnIhPT10aGlzJiYociE9PWkmJm4uaXNQcm9wYWdhdGlvblN0b3BwZWQmJm4uaXNQcm9wYWdhdGlvblN0b3BwZWQoKXx8dC5jYWxsKHIsbikpfSx2ZT10ZSxtZT1uZSx5ZT1PYmplY3QuZnJlZXplKHtvbjp0ZSxvZmY6bmUsb25lOmZ1bmN0aW9uKGUsdCxuLGkpe3JldHVybiB0ZS5jYWxsKHRoaXMsZSx0LG4saSwxKX0sZ2V0SGFuZGxlcnM6c2UsY2xlYXJIYW5kbGVyczpjZSxwcm94eUhhbmRsZXI6ZmUsZGVsZWdhdGVIYW5kbGVyOnBlLGJpbmQ6dmUsdW5iaW5kOm1lfSksYmU9L14obW91c2UoZG93bnx1cHxvdmVyfG91dHxlbnRlcnxsZWF2ZXxtb3ZlKXxjb250ZXh0bWVudXwoZGJsKT9jbGljaykkLyxnZT0vXmtleShkb3dufHByZXNzfHVwKSQvLEVlPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT12b2lkIDA9PT1uP3t9Om4sbz1pLmJ1YmJsZXMsdT12b2lkIDA9PT1vfHxvLHM9aS5jYW5jZWxhYmxlLGM9dm9pZCAwPT09c3x8cyxmPWkucHJldmVudERlZmF1bHQsYT12b2lkIDAhPT1mJiZmLGw9bmV3KE5lKGUpKShlLHtidWJibGVzOnUsY2FuY2VsYWJsZTpjLHByZXZlbnREZWZhdWx0OmEsZGV0YWlsOnR9KTtyZXR1cm4gbC5fcHJldmVudERlZmF1bHQ9YSxyKHRoaXMsZnVuY3Rpb24obil7IXV8fGplfHxDZShuKT9UZShuLGwpOk9lKG4sZSx7YnViYmxlczp1LGNhbmNlbGFibGU6YyxwcmV2ZW50RGVmYXVsdDphLGRldGFpbDp0fSl9KX0sTmU9ZnVuY3Rpb24oZSl7cmV0dXJuIEFlP2JlLnRlc3QoZSk/TW91c2VFdmVudDpnZS50ZXN0KGUpP0tleWJvYXJkRXZlbnQ6Q3VzdG9tRXZlbnQ6Q3VzdG9tRXZlbnR9LENlPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09d2luZG93fHxlPT09ZG9jdW1lbnR8fEsoZS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxlKX0sT2U9ZnVuY3Rpb24oZSx0LG4pe3ZvaWQgMD09PW4mJihuPXt9KSxuLmJ1YmJsZXM9ITE7dmFyIGk9bmV3IEN1c3RvbUV2ZW50KHQsbik7aS5fdGFyZ2V0PWU7ZG97VGUoZSxpKX13aGlsZShlPWUucGFyZW50Tm9kZSl9LHdlPVtcImJsdXJcIixcImZvY3VzXCIsXCJzZWxlY3RcIixcInN1Ym1pdFwiXSxUZT1mdW5jdGlvbihlLHQpey0xPT09d2UuaW5kZXhPZih0LnR5cGUpfHxcImZ1bmN0aW9uXCIhPXR5cGVvZiBlW3QudHlwZV18fHQuX3ByZXZlbnREZWZhdWx0fHx0LmNhbmNlbGFibGU/ZS5kaXNwYXRjaEV2ZW50KHQpOmVbdC50eXBlXSgpfTshZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbihlLHQpe3ZvaWQgMD09PXQmJih0PXtidWJibGVzOiExLGNhbmNlbGFibGU6ITEsZGV0YWlsOnZvaWQgMH0pO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiQ3VzdG9tRXZlbnRcIik7cmV0dXJuIG4uaW5pdEN1c3RvbUV2ZW50KGUsdC5idWJibGVzLHQuY2FuY2VsYWJsZSx0LmRldGFpbCksbn07ZS5wcm90b3R5cGU9bi5DdXN0b21FdmVudCYmbi5DdXN0b21FdmVudC5wcm90b3R5cGUsbi5DdXN0b21FdmVudD1lfSgpO3ZhciBqZT1mdW5jdGlvbigpe3ZhciBlPSExLHQ9bi5kb2N1bWVudDtpZih0KXt2YXIgaT10LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikscj1pLmNsb25lTm9kZSgpO2kuYXBwZW5kQ2hpbGQociksaS5hZGRFdmVudExpc3RlbmVyKFwiZVwiLGZ1bmN0aW9uKCl7ZT0hMH0pLHIuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoXCJlXCIse2J1YmJsZXM6ITB9KSl9cmV0dXJuIGV9KCksQWU9ZnVuY3Rpb24oKXt0cnl7bmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKX1jYXRjaChlKXtyZXR1cm4hMX1yZXR1cm4hMH0oKSxMZT1PYmplY3QuZnJlZXplKHt0cmlnZ2VyOkVlLHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGUsdCl7dGhpc1swXSYmRWUuY2FsbCh0aGlzWzBdLGUsdCx7YnViYmxlczohMSxwcmV2ZW50RGVmYXVsdDohMH0pfX0pLERlPU9iamVjdC5mcmVlemUoe3JlYWR5OmZ1bmN0aW9uKGUpe3JldHVybi9jb21wbGV0ZXxsb2FkZWR8aW50ZXJhY3RpdmUvLnRlc3QoZG9jdW1lbnQucmVhZHlTdGF0ZSkmJmRvY3VtZW50LmJvZHk/ZSgpOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsZSwhMSksdGhpc319KSx6ZT1uLiQsX2U9T2JqZWN0LmZyZWV6ZSh7bm9Db25mbGljdDpmdW5jdGlvbigpe3JldHVybiBuLiQ9emUsdGhpc319KSxNZT1mdW5jdGlvbihlLHQpe3JldHVybiBsKFtdLnNsaWNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LHhlPU9iamVjdC5mcmVlemUoe2NoaWxkcmVuOmZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiByKHRoaXMsZnVuY3Rpb24obil7bi5jaGlsZHJlbiYmcihuLmNoaWxkcmVuLGZ1bmN0aW9uKG4peyghZXx8ZSYmaChuLGUpKSYmdC5wdXNoKG4pfSl9KSxsKHQpfSxjb25jYXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gcihsKGUpLGZ1bmN0aW9uKGUpey0xPT09W10uaW5kZXhPZi5jYWxsKHQsZSkmJltdLnB1c2guY2FsbCh0LGUpfSksdGhpc30sY29udGVudHM6ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gcih0aGlzLGZ1bmN0aW9uKHQpe3JldHVybiBlLnB1c2guYXBwbHkoZSxpKHQuY2hpbGROb2RlcykpfSksbChlKX0sZXE6ZnVuY3Rpb24oZSl7cmV0dXJuIE1lLmNhbGwodGhpcyxlLGUrMSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIE1lLmNhbGwodGhpcywwLDEpfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXNbZV19LHBhcmVudDpmdW5jdGlvbihlKXt2YXIgdD1bXTtyZXR1cm4gcih0aGlzLGZ1bmN0aW9uKG4peyghZXx8ZSYmaChuLnBhcmVudE5vZGUsZSkpJiZ0LnB1c2gobi5wYXJlbnROb2RlKX0pLGwodCl9LHNpYmxpbmdzOmZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiByKHRoaXMsZnVuY3Rpb24obil7cmV0dXJuIHIobi5wYXJlbnROb2RlLmNoaWxkcmVuLGZ1bmN0aW9uKGkpe2khPT1uJiYoIWV8fGUmJmgoaSxlKSkmJnQucHVzaChpKX0pfSksbCh0KX0sc2xpY2U6TWV9KSxTZT1BcnJheS5pc0FycmF5LFBlPU9iamVjdC5mcmVlemUoe2lzRnVuY3Rpb246ZnVuY3Rpb24oZSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgZX0saXNBcnJheTpTZX0pLEhlPXt9LCRlPXt9O3JldHVybiB2b2lkIDAhPT1iJiYoKCRlPWwpLm1hdGNoZXM9aCxIZS5maW5kPWQpLG8oJGUsVyxfZSxQZSksbyhIZSxNLFAsRixxLFUsUSxWLFgseWUsTGUsRGUsZWUseGUpLCRlLmZuPUhlLCRlLnZlcnNpb249XCIwLjE1LjEyXCIsJGUuZXh0ZW5kPW8sJGUuQmFzZUNsYXNzPXgoJGUuZm4pLCRlfSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbVJ2YlhSaGMzUnBZeTVxY3lKZExDSnVZVzFsY3lJNld5Sm5iRzlpWVd3aUxDSm1ZV04wYjNKNUlpd2laWGh3YjNKMGN5SXNJbTF2WkhWc1pTSXNJbVJsWm1sdVpTSXNJbUZ0WkNJc0luTmxiR1lpTENJa0lpd2lkR2hwY3lJc0ltTnZiblJsZUhRaUxDSmZiV0YwWTJobGN5SXNJbmRwYmlJc0luZHBibVJ2ZHlJc0luUnZRWEp5WVhraUxDSmpiMnhzWldOMGFXOXVJaXdpYkdWdVozUm9JaXdpY21WemRXeDBJaXdpUVhKeVlYa2lMQ0pwSWl3aVpXRmphQ0lzSW1OaGJHeGlZV05ySWl3aWRHaHBjMEZ5WnlJc0luVnVaR1ZtYVc1bFpDSXNJbTV2WkdWVWVYQmxJaXdpWTJGc2JDSXNJbVY0ZEdWdVpDSXNJblJoY21kbGRDSXNJbDlzWlc0aUxDSmhjbWQxYldWdWRITWlMQ0p6YjNWeVkyVnpJaXdpWDJ0bGVTSXNJbVp2Y2tWaFkyZ2lMQ0p6Y21NaUxDSndjbTl3SWl3aWRXNXBjU0lzSW1acGJIUmxjaUlzSW1sMFpXMGlMQ0pwYm1SbGVDSXNJbWx1WkdWNFQyWWlMQ0pwYzFCeWIzUnZkSGx3WlZObGRDSXNJbkpsUm5KaFoyMWxiblFpTENKeVpWTnBibWRzWlZSaFp5SXNJbkpsVTJsdGNHeGxVMlZzWldOMGIzSWlMQ0p6Wld4bFkzUnZjaUlzSW1SdlkzVnRaVzUwSWl3aVJFOU5kR0Z6ZEdsaklpd2lkR1Z6ZENJc0ltTnlaV0YwWlVaeVlXZHRaVzUwSWl3aWNYVmxjbmxUWld4bFkzUnZjaUlzSW5GMVpYSjVVMlZzWldOMGIzSkJiR3dpTENKM2NtRndJaXdpWm1sdVpDSXNJbTV2WkdWeklpd2libTlrWlNJc0ltTm9hV3hrSWl3aWNIVnphQ0lzSW0xaGRHTm9aWE1pTENKRmJHVnRaVzUwSWl3aWNISnZkRzkwZVhCbElpd2liV0YwWTJobGMxTmxiR1ZqZEc5eUlpd2liVzk2VFdGMFkyaGxjMU5sYkdWamRHOXlJaXdpYlhOTllYUmphR1Z6VTJWc1pXTjBiM0lpTENKdlRXRjBZMmhsYzFObGJHVmpkRzl5SWl3aWQyVmlhMmwwVFdGMFkyaGxjMU5sYkdWamRHOXlJaXdpWld4bGJXVnVkQ0lzSW1kbGRFVnNaVzFsYm5SQ2VVbGtJaXdpYzJ4cFkyVWlMQ0puWlhSRmJHVnRaVzUwYzBKNVEyeGhjM05PWVcxbElpd2laMlYwUld4bGJXVnVkSE5DZVZSaFowNWhiV1VpTENKb2RHMXNJaXdpWTNKbFlYUmxSV3hsYldWdWRDSXNJbEpsWjBWNGNDSXNJaVF4SWl3aVpXeGxiV1Z1ZEhNaUxDSmpiMjUwWVdsdVpYSWlMQ0pqYUdsc1pISmxiaUlzSW1Ob2FXeGtUbTlrWlhNaUxDSnBibTVsY2toVVRVd2lMQ0pzSWl3aVptNGlMQ0pqYjI1emRISjFZM1J2Y2lJc0lrOWlhbVZqZENJc0ltWnlaV1Y2WlNJc0lrRnljbUY1VUhKdmRHOGlMQ0psZG1WeWVTSXNJbVZoWTJna01TSXNJbTFoY0NJc0luQnZjQ0lzSW5KbFpIVmpaU0lzSW5KbFpIVmpaVkpwWjJoMElpd2ljMmhwWm5RaUxDSnpiMjFsSWl3aWRXNXphR2xtZENJc0ltRnljbUY1SWl3aWNtVjJaWEp6WlNJc0lrSmhjMlZEYkdGemN5SXNJbUZ3YVNJc0ltRndjR3g1SWl3aVkyRnRaV3hwZW1VaUxDSjJZV3gxWlNJc0luSmxjR3hoWTJVaUxDSnNaWFIwWlhJaUxDSjBiMVZ3Y0dWeVEyRnpaU0lzSW1OemN5UXhJaXdpWTNOeklpd2lhMlY1SWl3aWMzUjViR1ZRY205d2N5SXNJblpoYkNJc0ltbHpUbUZPSWl3aWNHRnljMlZHYkc5aGRDSXNJbWx6Um1sdWFYUmxJaXdpYVhOT2RXMWxjbWxqSWl3aWMzUjViR1VpTENKeVpXMXZkbVZRY205d1pYSjBlU0lzSW5SdlRHOTNaWEpEWVhObElpd2labTl5UldGamFDUXhJaXdpWVhCd1pXNWtJaXdpVG05a1pTSXNJbWx1YzJWeWRFRmthbUZqWlc1MFNGUk5UQ0lzSW1Gd2NHVnVaRU5vYVd4a0lpd2lUbTlrWlV4cGMzUWlMQ0ppYVc1a0lpd2lYMlZoWTJnaUxDSmlaV1p2Y21VaUxDSndZWEpsYm5ST2IyUmxJaXdpYVc1elpYSjBRbVZtYjNKbElpd2lYMk5zYjI1bElpd2lZMnh2Ym1WT2IyUmxJaXdpWld3aUxDSmxiRzBpTENKa2IyMGlMQ0p3Y21Wd1pXNWtJaXdpWm1seWMzUkRhR2xzWkNJc0ltRm1kR1Z5SWl3aWJtVjRkRk5wWW14cGJtY2lMQ0pqYkc5dVpTSXNJbVJ2YlY5aGRIUnlJaXdpWVhSMGNpSXNJbWRsZEVGMGRISnBZblYwWlNJc0lsOWhkSFJ5SWl3aWMyVjBRWFIwY21saWRYUmxJaXdpY21WdGIzWmxRWFIwY2lJc0luSmxiVzkyWlVGMGRISnBZblYwWlNJc0lsOWxZV05vSkRFaUxDSm1iazVoYldVaUxDSmpiR0Z6YzA1aGJXVWlMQ0pqYkdGemMweHBjM1FpTENKa2IyMWZZMnhoYzNNaUxDSmhaR1JEYkdGemN5SXNJbk53YkdsMElpd2ljbVZ0YjNabFEyeGhjM01pTENKMGIyZG5iR1ZEYkdGemN5SXNJbk4wWVhSbElpd2lZV04wYVc5dUlpd2lhR0Z6UTJ4aGMzTWlMQ0pqYjI1MFlXbHVjeUlzSW1OdmJYQmhjbVZFYjJOMWJXVnVkRkJ2YzJsMGFXOXVJaXdpUkU5RFZVMUZUbFJmVUU5VFNWUkpUMDVmUkVsVFEwOU9Ua1ZEVkVWRUlpd2laRzl0WDJOdmJuUmhhVzV6SWl3aWFYTlRkWEJ3YjNKMGMwUmhkR0ZUWlhRaUxDSmtiMk4xYldWdWRFVnNaVzFsYm5RaUxDSkVRVlJCUzBWWlVGSlBVQ0lzSW1OaGJXVnNhWHBsSkRFaUxDSnpkSElpTENKdFlYUmphQ0lzSW1Ob1lYSWlMQ0prYjIxZlpHRjBZU0lzSW1SaGRHRWlMQ0prYjIxZlpYaDBjbUVpTENKaGNIQmxibVJVYnlJc0ltVnRjSFI1SWl3aWNtVnRiM1psSWl3aWNtVnRiM1psUTJocGJHUWlMQ0p5WlhCc1lXTmxWMmwwYUNJc0luUmxlSFFpTENKMFpYaDBRMjl1ZEdWdWRDSXNJbVJ2YlY5b2RHMXNJaXdpWm5KaFoyMWxiblFpTENKamJHOXpaWE4wSWl3aWNHRnlaVzUwUld4bGJXVnVkQ0lzSW00aUxDSnpaV3hsWTNSdmNsOWpiRzl6WlhOMElpd2liMjRpTENKbGRtVnVkRTVoYldWeklpd2lhR0Z1Wkd4bGNpSXNJblZ6WlVOaGNIUjFjbVVpTENKdmJtTmxJaXdpY0dGeWRITWlMQ0p1WVcxbGMzQmhZMlVpTENKbGRtVnVkRXhwYzNSbGJtVnlJaXdpWDNSb2FYTWlMQ0psZG1WdWRFNWhiV1VpTENKd2NtOTRlVWhoYm1Sc1pYSWlMQ0prWld4bFoyRjBaVWhoYm1Sc1pYSWlMQ0pzYVhOMFpXNWxjaUlzSW1WMlpXNTBJaXdpYjJabUlpd2lZV1JrUlhabGJuUk1hWE4wWlc1bGNpSXNJbWRsZEVoaGJtUnNaWEp6SWl3aWFHRnVaR3hsY25NaUxDSmZkR2hwY3pJaUxDSnlaVzF2ZG1WRmRtVnVkRXhwYzNSbGJtVnlJaXdpYzNCc2FXTmxJaXdpWTJ4bFlYSklZVzVrYkdWeWN5SXNJbVYyWlc1MFMyVjVVSEp2Y0NJc0ltbGtJaXdpZFc1MWMyVmtTMlY1Y3lJc0ltRjFaMjFsYm5SRmRtVnVkQ0lzSW1WMlpXNTBUV1YwYUc5a2N5SXNJbkJ5WlhabGJuUkVaV1poZFd4MElpd2ljM1J2Y0VsdGJXVmthV0YwWlZCeWIzQmhaMkYwYVc5dUlpd2ljM1J2Y0ZCeWIzQmhaMkYwYVc5dUlpd2ljbVYwZFhKdVZISjFaU0lzSW5KbGRIVnlia1poYkhObElpd2lhWE5FWldaaGRXeDBVSEpsZG1WdWRHVmtJaXdpYldWMGFHOWtUbUZ0WlNJc0luUmxjM1JOWlhSb2IyUk9ZVzFsSWl3aWIzSnBaMmx1WVd4TlpYUm9iMlFpTENKZmNISmxkbVZ1ZEVSbFptRjFiSFFpTENKbGRtVnVkRlJoY21kbGRDSXNJbDkwWVhKblpYUWlMQ0pqZFhKeVpXNTBWR0Z5WjJWMElpd2lhWE5RY205d1lXZGhkR2x2YmxOMGIzQndaV1FpTENKMWJtSnBibVFpTENKdmJtVWlMQ0p5WlUxdmRYTmxSWFpsYm5RaUxDSnlaVXRsZVVWMlpXNTBJaXdpZEhKcFoyZGxjaUlzSW5SNWNHVWlMQ0pmZEdWdGNDSXNJbDl5WldZaUxDSmZjbVZtSkdKMVltSnNaWE1pTENKaWRXSmliR1Z6SWl3aVgzSmxaaVJqWVc1alpXeGhZbXhsSWl3aVkyRnVZMlZzWVdKc1pTSXNJbDl5WldZa2NISmxkbVZ1ZEVSbFptRjFiSFFpTENKblpYUkZkbVZ1ZEVOdmJuTjBjblZqZEc5eUlpd2laR1YwWVdsc0lpd2lhWE5GZG1WdWRFSjFZbUpzYVc1blNXNUVaWFJoWTJobFpGUnlaV1VpTENKcGMwRjBkR0ZqYUdWa1ZHOUViMk4xYldWdWRDSXNJbVJwYzNCaGRHTm9SWFpsYm5RaUxDSjBjbWxuWjJWeVJtOXlVR0YwYUNJc0ltbHpVM1Z3Y0c5eWRITlBkR2hsY2tWMlpXNTBRMjl1YzNSeWRXTjBiM0p6SWl3aVRXOTFjMlZGZG1WdWRDSXNJa3RsZVdKdllYSmtSWFpsYm5RaUxDSkRkWE4wYjIxRmRtVnVkQ0lzSW05M2JtVnlSRzlqZFcxbGJuUWlMQ0p3WVhKaGJYTWlMQ0prYVhKbFkzUkZkbVZ1ZEUxbGRHaHZaSE1pTENKamRYTjBiMjFGZG1WdWRDSXNJbU55WldGMFpVVjJaVzUwSWl3aWFXNXBkRU4xYzNSdmJVVjJaVzUwSWl3aWFYTkNkV0ppYkdsdVp5SXNJbVJ2WXlJc0luQmhjbVZ1ZENJc0ltVWlMQ0psZG1WdWRGOTBjbWxuWjJWeUlpd2lkSEpwWjJkbGNraGhibVJzWlhJaUxDSmxkbVZ1ZEY5eVpXRmtlU0lzSW5KbFlXUjVJaXdpY21WaFpIbFRkR0YwWlNJc0ltSnZaSGtpTENKd2NtVjJhVzkxYzB4cFlpSXNJbTV2WTI5dVpteHBZM1FpTENKdWIwTnZibVpzYVdOMElpd2ljM1JoY25RaUxDSmxibVFpTENKelpXeGxZM1J2Y2w5bGVIUnlZU0lzSW1OdmJtTmhkQ0lzSW1OdmJuUmxiblJ6SWl3aVpYRWlMQ0ptYVhKemRDSXNJbWRsZENJc0luTnBZbXhwYm1keklpd2ljMmxpYkdsdVp5SXNJbWx6UVhKeVlYa2lMQ0pwYzBaMWJtTjBhVzl1SWl3aWIySnFJaXdpSkNReElpd2lkbVZ5YzJsdmJpSmRMQ0p0WVhCd2FXNW5jeUk2SWtOQlFVTXNVMEZCVlVFc1JVRkJVVU1zUjBGRFJTeHBRa0ZCV2tNc1UwRkJNRU1zYjBKQlFWaERMRTlCUVhsQ1FTeFBRVUZQUkN4UlFVRlZSQ3hKUVVNNVJDeHRRa0ZCV0Vjc1VVRkJlVUpCTEU5QlFVOURMRWxCUVUxRUxFOUJRVTlJTEVsQlEyNUVSQ3hGUVVGVFFTeEhRVUZWVFN4TlFVRmhReXhGUVVGSlRpeEpRVWgyUXl4RFFVbEZUeXhMUVVGTkxGZEJRV01zWVVGVmNFSXNTVUZuUzAxRExFVkJSVUZETEVWQmJFdEdReXhGUVVGM1FpeHZRa0ZCV0VNc1QwRkJlVUpCTEU5QlFWTXNSMEZUTDBORExFVkJRVlVzVTBGQmFVSkRMRWRCU1RkQ0xFbEJTRUVzU1VGQlNVTXNSVUZCVTBRc1JVRkJWME1zVDBGRGNFSkRMRVZCUVZNc1NVRkJTVU1zVFVGQlRVWXNSMEZGWkVjc1JVRkJTU3hGUVVGSFFTeEZRVUZKU0N4RlFVRlJSeXhKUVVNeFFrWXNSVUZCVDBVc1IwRkJTMG9zUlVGQlYwa3NSMEZIZWtJc1QwRkJUMFlzUjBGWFRFY3NSVUZCVHl4VFFVRmpUQ3hGUVVGWlRTeEZRVUZWUXl4SFFVTTNReXhKUVVGSlRpeEZRVUZUUkN4RlFVRlhReXhQUVVWNFFpeFJRVUZsVHl4SlFVRllVQ3hSUVVGblJFOHNTVUZCZUVKU0xFVkJRVmRUTEZOQlEzSkRMRWxCUVVzc1NVRkJTVXdzUlVGQlNTeEZRVUZIUVN4RlFVRkpTQ3hGUVVGUlJ5eEpRVU14UWtVc1JVRkJVMGtzUzBGQlMwZ3NSVUZCVTFBc1JVRkJWMGtzUjBGQlNVRXNSVUZCUjBvc1VVRkhNME5OTEVWQlFWTkpMRXRCUVV0SUxFVkJRVk5RTEVWQlFWa3NSVUZCUjBFc1IwRkhlRU1zVDBGQlQwRXNSMEZsVEZjc1JVRkJVeXhUUVVGblFrTXNSMEZETTBJc1NVRkJTeXhKUVVGSlF5eEZRVUZQUXl4VlFVRlZZaXhQUVVGUll5eEZRVUZWTEVsQlFVbGFMRTFCUVUxVkxFVkJRVThzUlVGQlNVRXNSVUZCVHl4RlFVRkpMRWRCUVVsSExFVkJRVThzUlVGQlIwRXNSVUZCVDBnc1JVRkJUVWNzU1VGRGNrZEVMRVZCUVZGRExFVkJRVThzUjBGQlMwWXNWVUZCVlVVc1IwRlJhRU1zVDBGTVFVUXNSVUZCVVVVc1VVRkJVU3hUUVVGVlF5eEhRVU40UWl4SlFVRkxMRWxCUVVsRExFdEJRVkZFTEVWQlEyWk9MRVZCUVU5UExFZEJRVkZFTEVWQlFVbERMRXRCUjJoQ1VDeEhRVlZNVVN4RlFVRlBMRk5CUVdOd1FpeEhRVU4yUWl4UFFVRlBRU3hGUVVGWGNVSXNUMEZCVHl4VFFVRlZReXhGUVVGTlF5eEhRVU4yUXl4UFFVRlBka0lzUlVGQlYzZENMRkZCUVZGR0xFdEJRVlZETEV0QlQzQkRSU3hIUVVGcFFpeEZRVU5xUWtNc1JVRkJZU3h4UWtGRFlrTXNSVUZCWXl3MlFrRkRaRU1zUlVGQmJVSXNaMEpCZVVOdVFtNURMRVZCZGtKWkxGTkJRVzFDYjBNc1JVRkJWV3hETEVkQlN6TkRMRWxCUVVsTExFVkJSVW9zVVVGT1owSXNTVUZCV2t3c1NVRkRSa0VzUlVGQlZXMURMRlZCUzFCRUxFVkJSVVVzUTBGQlFTeEhRVUZKUVN4aFFVRnZRa1VzUlVGRE4wSXNUMEZCVDBZc1JVRkRjMElzYVVKQlFXSkJMRVZCUTJoQ04wSXNSVUZCWVRaQ0xFVkJRVk53UWl4VlFVRlpiMElzU1VGQllTOUNMRTlCUVZNc1EwRkJReXRDTEVkQlFWbEJMRVZCUXpWRVNDeEZRVUZYVFN4TFFVRkxTQ3hIUVVONlFqZENMRVZCUVdGcFF5eEZRVUZsU2l4SlFVVTFRbXhETEVWQlFUWkNMR2xDUVVGYVFTeEZRVUYxUW0xRExGTkJRVk5KTEdOQlFXTjJReXhIUVVGWFFTeEZRVUZSVFN4UFFVRlRUaXhGUVVGUkxFZEJRVXRCTEVWQlEzaEhTeXhGUVVGaGEwTXNSVUZCWTB3c1JVRkJWV3hETEZOQlZISkRTeXhGUVVGaE9FSXNVMEZCVTBzc2FVSkJRV2xDTEUxQldYcERMRTlCUVU5RExFVkJRVXR3UXl4SlFXRldjVU1zUlVGQlR5eFRRVUZqVWl4SFFVTjJRaXhKUVVGSlV5eEZRVUZSTEVkQlVWb3NUMEZRUVdwRExFVkJRVXRZTEV0QlFVMHNVMEZCVlRaRExFZEJRMjVDTEU5QlFVOXNReXhGUVVGTE5rSXNSVUZCWTB3c1JVRkJWVlVzUjBGQlR5eFRRVUZWUXl4SlFVTnlRaXhKUVVFeFFrWXNSVUZCVFdRc1VVRkJVV2RDTEVsQlEyaENSaXhGUVVGTlJ5eExRVUZMUkN4UFFVbFdMME1zUlVGQlJUWkRMRWxCWVZCSkxFZEJRMFV2UXl4RlFVRTJRaXh2UWtGQldtZEVMRkZCUVRCQ1FTeFJRVUZSUXl4VlFVRlpMME1zUlVGRkwwUkVMRVZCUVZkRUxFVkJRVkVyUXl4VFFVRlhMME1zUlVGQlVXdEVMR2xDUVVGdFFteEVMRVZCUVZGdFJDeHZRa0ZCYzBKdVJDeEZRVUZSYjBRc2JVSkJRWEZDY0VRc1JVRkJVWEZFTEd0Q1FVRnZRbkpFTEVWQlFWRnpSQ3h6UWtGRmNrb3NVMEZCVlVNc1JVRkJVM0pDTEVkQlEzaENMRTlCUVU5cVF5eEZRVUZUWXl4TFFVRkxkME1zUlVGQlUzSkNMRXRCV1RsQ1N5eEZRVUZuUWl4VFFVRjFRa3dzUlVGQlZXeERMRWRCUjI1RUxFZEJSblZDYVVNc1JVRkJhVUpKTEV0QlFVdElMRWRCUlhaQ0xFTkJRM0JDTEVkQlFXOUNMRTFCUVdoQ1FTeEZRVUZUTEVkQlFWa3NRMEZEZGtJc1NVRkJTWEZDTEVkQlFWZDJSQ3hGUVVGUmQwUXNaVUZCYVVKNFJDeEZRVUZWYlVNc1ZVRkJWWEZDTEdWQlFXVjBRaXhGUVVGVGRVSXNUVUZCVFN4SlFVTXhSaXhQUVVGUFJpeEZRVUZWTEVOQlFVTkJMRWRCUVZjc1IwRkhMMElzVFVGQmIwSXNUVUZCYUVKeVFpeEZRVUZUTEVkQlEwcHNReXhGUVVGUk1FUXNkVUpCUVhWQ2VFSXNSVUZCVTNWQ0xFMUJRVTBzU1VGSGFFUjZSQ3hGUVVGUk1rUXNjVUpCUVhGQ2VrSXNSMEZIZEVNc1QwRkJUMnhETEVWQlFWRjNReXhwUWtGQmFVSk9MRWxCVnpsQ1NTeEZRVUZwUWl4VFFVRjNRbk5DTEVkQlF6TkRMRWRCUVVrMVFpeEZRVUZaU3l4TFFVRkxkVUlzUjBGRGJrSXNUVUZCVHl4RFFVRkRla0lzVTBGQlV6QkNMR05CUVdORExFOUJRVTlETEV0QlIzaERMRWxCUVVsRExFVkJRVmNzUjBGRFdFTXNSVUZCV1RsQ0xGTkJRVk13UWl4alFVRmpMRTlCUTI1RFN5eEZRVUZYUkN4RlFVRlZSU3hYUVVONlFrWXNSVUZCVlVjc1ZVRkJXVklzUlVGRmRFSXNTVUZCU3l4SlFVRkpia1FzUlVGQlNTeEZRVUZITkVRc1JVRkJTVWdzUlVGQlV6VkVMRTlCUVZGSExFVkJRVWswUkN4RlFVRkhOVVFzU1VGRE1VTjFSQ3hGUVVGVGJFSXNTMEZCUzI5Q0xFVkJRVk42UkN4SlFVZDZRaXhQUVVGUGRVUXNSMEZYVEhaQ0xFVkJRVThzVTBGQlkzQkRMRWRCVDNaQ0xFOUJUa3Q1UWl4SlFVTklUU3hGUVVGVllTeFZRVUZaYmtRc1JVRkJSWGRGTEVkQlEzaENiRU1zUlVGQlZXRXNWVUZCVlhOQ0xGbEJRV051UXl4RlFVTnNRMDRzUjBGQmFVSXNSMEZIV2l4SlFVRkpUU3hGUVVGVkwwSXNTVUZYYmtJclFpeEZRVUZaTEZOQlFXMUNMMElzUjBGSmFrTXNTVUZJUVN4SlFVRkpTU3hGUVVGSkxFVkJRMHBJTEVWQlFWTkVMRVZCUVZkRExFOUJSV3BDUnl4RlFVRkpTQ3hIUVVOVVVDeExRVUZMVlN4SFFVRkxTaXhGUVVGWFNTeExRVWQyUWxZc1MwRkJTMDhzVDBGQlUwRXNSMEZIV2pSQ0xFVkJRWGRDYzBNc1QwRkJUME1zVDBGQlR5eERRVU40UXpORkxFVkJRVWRCTEVWQlEwZzBReXhMUVVGTlFTeEZRVU5PU3l4UlFVRlRRU3hGUVVOVVdDeFZRVUZYUVN4SlFVMVVjME1zUlVGQllXeEZMRTFCUVUxNVF5eFZRV051UWpCQ0xFVkJRVkZFTEVWQlFWZERMRTFCYlVOdVFuSkVMRVZCUVZVc1UwRkJhVUpZTEVWQlFWVkRMRWRCUTNaRExFOUJRVTlHTEVWQlFVdFlMRXRCUVUxWkxFVkJRVlZETEVsQlJURkNaMFVzUlVGQlUzUkVMRVZCVlZSUExFVkJRVlUyUXl4RlFVRlhOME1zVVVGaGNrSm5SQ3hGUVVGTlNDeEZRVUZYUnl4SlFWTnFRa01zUlVGQlRVb3NSVUZCVjBrc1NVRlZha0pvUXl4RlFVRlBORUlzUlVGQlZ6VkNMRXRCWTJ4Q2FVTXNSVUZCVTB3c1JVRkJWMHNzVDBGamNFSkRMRVZCUVdOT0xFVkJRVmROTEZsQmNVSjZRa01zUlVGQlVWQXNSVUZCVjA4c1RVRlpia0pETEVWQlFVOVNMRVZCUVZkUkxFdEJWV3hDUXl4RlFVRlZWQ3hGUVVGWFV5eFJRVVZ5UWtNc1JVRkJjVUphTEU5QlFVOURMRTlCUVU4c1EwRkRja05GTEUxQlFVOUJMRVZCUTFCcVJDeFBRVE5KVnl4VFFVRm5RbEVzUlVGQlZYUkNMRWRCUTNKRExFbEJRVWxFTEVWQlFTdENMRzFDUVVGaWRVSXNSVUZCTUVKQkxFVkJRVmNzVTBGQlZYRkNMRWRCUTI1RkxFOUJRVTlTTEVWQlFWRlJMRVZCUVZOeVFpeEpRVVV4UWl4UFFVRlBjRU1zUlVGQlJUUkZMRVZCUVZkb1JDeFBRVUZQV0N4TFFVRkxhRUlzUzBGQlRWa3NSVUZCVlVNc1MwRjNTV2hFVlN4UlFVRlRRU3hGUVVOVVdpeExRVUZOYTBVc1JVRkRUaTlETEZGQlFWTkJMRVZCUTFSblJDeEpRVUZMUVN4RlFVTk1ReXhKUVVGTFFTeEZRVU5NYUVNc1MwRkJUVUVzUlVGRFRtbERMRTlCUVZGQkxFVkJRMUpETEZsQlFXRkJMRVZCUTJKTExGRkJPVU5aTEZkQlExb3NUMEZCVDNaR0xFVkJRVVZOTEVWQlFWRk1MRTFCUVUxelJpeFpRVGhEZGtKS0xFMUJRVTlCTEVWQlExQkRMRXRCUVUxQkxFVkJRMDVETEZGQlFWTkJMRWxCVFZnc1UwRkJVMGNzUlVGQlYwTXNSMEU0UW14Q0xFbEJRVWxFTEVWQlFWa3NWMEZEWkd4RUxFVkJRVlZ5UWl4TFFVRkxhRUlzUzBGQlRVUXNSVUZCUlRCR0xGZEJRVTBzUlVGQlVYSkZMR0ZCU1haRExFOUJSRUZJTEVWQlFVOXpSU3hGUVVGVmNrTXNWVUZCVjNORExFZEJRM0pDUkN4RlFVOVVMRWxCU1VsSExFVkJRVmNzVTBGQmEwSkRMRWRCUXk5Q0xFOUJRVTlCTEVWQlFVMURMRkZCUVZFc1pVRkJaMElzVTBGQlZUVkRMRVZCUVZNMlF5eEhRVU4wUkN4UFFVRlBRU3hGUVVGUFF5eHBRa0U0UkdSRExFVkJRWEZDZEVJc1QwRkJUME1zVDBGQlR5eERRVU55UTNOQ0xFbEJNVU5STEZOQlFXRkRMRVZCUVV0T0xFZEJRekZDTEVsQlFVbFBMRVZCUVZsNlJTeEZRVUZOTUVVc1JVRkZkRUlzUjBGQmJVSXNhVUpCUVZKR0xFVkJRV3RDTEVOQlJ6TkNMRWRCUmtGQkxFVkJRVTFRTEVWQlFWTlBMRkZCUlUwc1NVRkJWazRzUlVGQmRVSXNRMEZEYUVNc1NVRkJTVzVETEVWQlFWVjRSQ3hMUVVGTFpTeFRRVUZYWml4TFFVRlBRU3hMUVVGTExFZEJSVEZETEU5QlFVbDNSQ3hGUVhCRFRTeFRRVUZ0UW0xRExFZEJRMnBETEU5QlFWRlRMRTFCUVUxRExGZEJRVmRXTEV0QlFWZFhMRk5CUVZOWUxFZEJjVU5vUTFrc1EwRkVVRW9zUlVGQlRUTkRMRVZCUVZGblJDeE5RVUZOVUN4SlFVTkpTU3hYUVVGWFJpeEhRVUZQUVN4UFFVYzFReXhIUVVkR1JDeEZRVUZoTEVsQlEwWkVMRWRCUVU5T0xFOUJTV3hDTEVsQlFVdHNSU3hMUVVaTWVVVXNSVUZCWVVRc1JVRkhXRVVzUlVGQlRVUXNSVUZCVjNwRkxGVkJRMVo1UlN4RlFVRlhla1VzUjBGRGJFSjVSU3hGUVVGWFVpeEZRVUZUYWtVc1NVRkJVekJGTEVWQllXcERMRTlCVkVGNFJpeEZRVUZMV0N4TFFVRk5MRk5CUVZWM1JDeEhRVU51UWl4SlFVRkxMMElzUzBGQlVYbEZMRVZCUTFCQkxFVkJRVmQ2UlN4SlFVRTRRaXhKUVVGeVFubEZMRVZCUVZkNlJTeEhRVU5xUXl0Q0xFVkJRVkZuUkN4TlFVRk5MMFVzUjBGQlVYbEZMRVZCUVZkNlJTeEhRVVZxUXl0Q0xFVkJRVkZuUkN4TlFVRk5ReXhsUVVGNVFtaEdMRVZCYkVSb1EyMUZMRkZCUVZFc2IwSkJRWEZDTEZOQlFWTmpMR2xDUVhORU5VTXhSeXhSUVZWTU1rY3NSVUZCV1d4SExFMUJRVTE1UXl4VlFVRlZNMElzVVVGWk5VSnhSaXhGUVVGVExGTkJRVk5CTEVWQlFVOXdSQ3hIUVVNelFpeEhRVUZKZUVRc1owSkJRV2RDTmtjc1MwRkRiRUlzUjBGQmRVSXNhVUpCUVZweVJDeEZRVU5VZUVRc1MwRkJTemhITEcxQ1FVRnRRaXhaUVVGaGRFUXNVVUZGY2tNc1IwRkJTVUVzWVVGQmJVSnhSQ3hMUVVOeVFqZEhMRXRCUVVzclJ5eFpRVUZaZGtRc1QwRkRXaXhEUVVOTUxFbEJRVWxUTEVWQlFWZFVMR0ZCUVcxQ2QwUXNVMEZCVnpOSExFVkJRVkZ0UkN4SFFVRlhRU3hGUVVOb1JXMUVMRVZCUVZVelJpeExRVUZMYVVRc1JVRkJWV3BGTEV0QlFVc3JSeXhaUVVGWlJTeExRVUZMYWtnc1dVRkpia1JyU0N4RlFVRk5iRWdzUzBGQlRUUkhMRVZCUVZGd1JDeEhRVWQwUWl4UFFVRlBlRVFzVFVFd1EweHRTQ3hGUVVGVExGTkJRVk5CTEVWQlFVOHpSQ3hIUVVNelFpeEhRVUZKZUVRc1owSkJRV2RDTmtjc1MwRkRiRUlzUjBGQmRVSXNhVUpCUVZweVJDeEZRVU5VZUVRc1MwRkJTemhITEcxQ1FVRnRRaXhqUVVGbGRFUXNVVUZGZGtNc1IwRkJTVUVzWVVGQmJVSnhSQ3hMUVVOeVFqZEhMRXRCUVV0dlNDeFhRVUZYUXl4aFFVRmhOMFFzUlVGQlUzaEVMRlZCUTJwRExFTkJRMHdzU1VGQlNXbEZMRVZCUVZkVUxHRkJRVzFDZDBRc1UwRkJWek5ITEVWQlFWRnRSQ3hIUVVGWFFTeEZRVU5vUlcxRUxFVkJRVlV6Uml4TFFVRkxhVVFzUlVGQlZXdEVMRVZCUVU5R0xFdEJRVXRxU0N4WlFVbDZRMnRJTEVWQlFVMXNTQ3hMUVVGTmJVZ3NSVUZCVVRORUxFZEJSM1JDTEU5QlFVOTRSQ3hOUVdsRVRITklMRVZCUVZNc1UwRkJaMEk1UkN4SFFVTXpRaXhOUVVGMVFpeHBRa0ZCV2tFc1JVRkRSa0VzUlVGRFJVRXNZVUZCYlVKeFJDeExRVU55UW5KRUxFVkJRVkVyUkN4WFFVRlZMRWRCUTJoQ0xGZEJRVmt2UkN4RlFVTmtMRWRCUVVkelFpeEpRVUZKT1VRc1MwRkJTM2RETEVWQlFWTXNVMEZCVldkRkxFZEJRM0JETEU5QlFVOUJMRVZCUVVkRUxGZEJRVlVzUzBGSmFrSXZSQ3hIUVZkTU1FUXNSVUZCVVN4VFFVRmxOVWNzUlVGQldXbEZMRVZCUVVsbUxFZEJSM3BETEVsQlJrRXNTVUZCU1dNc1JVRkJTV2hGTEVWQlFWZERMRTlCUlZvclJDeExRVUZMTEVOQlExWXNTVUZCU1cxRUxFVkJRVmtzU1VGQlRtNUVMRVZCUVZWa0xFVkJRVlU0UkN4RlFVRlBPVVFzUjBGRGNrTmxMRVZCUVVkMlJDeExRVUZMVml4RlFVRlhaMFVzUjBGQlNXMUVMRXRCU1haQ1F5eEZRVUZ0UW1wRUxFOUJRVTlETEU5QlFVOHNRMEZEYmtOclF5eFBRVUZSUVN4RlFVTlNaU3hSUVM5SVdTeFRRVUZUUVN4RlFVRlJia1VzUjBGRE4wSXNSMEZCU1hoRUxHZENRVUZuUWpaSExFdEJRMnhDTEVkQlFYVkNMR2xDUVVGYWNrUXNSVUZEVkhoRUxFdEJRVXM0Unl4dFFrRkJiVUlzWVVGQlkzUkVMRkZCUlhSRExFZEJRVWxCTEdGQlFXMUNjVVFzUzBGRGNrSTNSeXhMUVVGTGNVZ3NZVUZCWVRkRUxFVkJRVk40UkN4TFFVRkxORWdzWjBKQlF6TkNMRU5CUTB3c1NVRkJTVE5FTEVWQlFWZFVMR0ZCUVcxQ2QwUXNVMEZCVnpOSExFVkJRVkZ0UkN4SFFVRlhRU3hGUVVOb1JXMUVMRVZCUVZVelJpeExRVUZMYVVRc1JVRkJVM0ZDTEZWQlFWZHhReXhGUVVGUlZpeExRVUZMYWtnc1dVRkpjRVJyU0N4RlFVRk5iRWdzUzBGQlRUSklMRVZCUVZOdVJTeEhRVWQyUWl4UFFVRlBlRVFzVFVGblNGQnRTQ3hQUVVGUlFTeEZRVU5TVlN4TlFYaEZWU3hUUVVGVFFTeEZRVUZOY2tVc1IwRkRla0lzUjBGQlNYaEVMR2RDUVVGblFqWkhMRXRCUTJ4Q0xFZEJRWFZDTEdsQ1FVRmFja1FzUlVGRFZIaEVMRXRCUVVzNFJ5eHRRa0ZCYlVJc1YwRkJXWFJFTEZGQlJYQkRMRWRCUVVsQkxHRkJRVzFDY1VRc1MwRkRja0kzUnl4TFFVRkxiMGdzVjBGQlYwTXNZVUZCWVRkRUxFVkJRVk40UkN4TFFVRkxPRWdzYVVKQlEzUkRMRU5CUTB3c1NVRkJTVGRFTEVWQlFWZFVMR0ZCUVcxQ2QwUXNVMEZCVnpOSExFVkJRVkZ0UkN4SFFVRlhRU3hGUVVOb1JXMUVMRVZCUVZVelJpeExRVUZMYVVRc1JVRkJVM0ZDTEZWQlFWZDFReXhGUVVGTldpeExRVUZMYWtnc1dVRkpiRVJyU0N4RlFVRk5iRWdzUzBGQlRUWklMRVZCUVU5eVJTeEhRVWR5UWl4UFFVRlBlRVFzVFVGNVJGQXJTQ3hOUVM5RFZTeFhRVU5XTEU5QlFVOW9TU3hGUVVGRmRVZ3NSVUZCVDNSSUxGRkJLME5vUW5OSUxFOUJRVkZCTEVWQlExSktMRTFCUVU5QkxFbEJiVVJNWXl4RlFVRjNRblpFTEU5QlFVOURMRTlCUVU4c1EwRkRlRU4xUkN4TFFXcERVeXhUUVVGamFFTXNSVUZCUzA0c1IwRkROVUlzUjBGQmJVSXNhVUpCUVZKTkxGRkJRWEZETEVsQlFWWk9MRVZCUVhWQ0xFTkJRek5FTEVsQlFVbHVReXhGUVVGVmVFUXNTMEZCUzJVc1UwRkJWMllzUzBGQlQwRXNTMEZCU3l4SFFVTXhReXhQUVVGUGQwUXNSVUZCVlVFc1JVRkJVVEJGTEdGQlFXRnFReXhSUVVGUGJrWXNSVUZITDBNc1QwRkJUMGdzUlVGQlMxZ3NTMEZCVFN4VFFVRlZkMFFzUjBGRE1VSXNSMEZCYlVJc2FVSkJRVko1UXl4RlFVTlVMRWxCUVVzc1NVRkJTV3RETEV0QlFWTnNReXhGUVVOb1FucERMRVZCUVZFMFJTeGhRVUZoUkN4RlFVRlBiRU1zUlVGQlNXdERMRk5CUjJ4RE0wVXNSVUZCVVRSRkxHRkJRV0Z1UXl4RlFVRkxUaXhOUVhOQ09VSXdReXhYUVZKbExGTkJRVzlDY0VNc1IwRkRia01zVDBGQlQzUkdMRVZCUVV0WUxFdEJRVTBzVTBGQlZYZEVMRWRCUXpGQ0xFOUJRVTlCTEVWQlFWRTRSU3huUWtGQlowSnlReXhSUVRSR0wwSnpReXhGUVVGVkxGTkJRV1ZETEVWQlFWRkRMRWRCUTI1RExFOUJRVTg1U0N4RlFVRkxXQ3hMUVVGTkxGTkJRVlYzUkN4SFFVTXhRaXhQUVVGUFFTeEZRVUZSYTBZc1ZVRkJWVVlzUjBGQlVVTXNUVUZKYWtORkxFVkJRWGxDYkVVc1QwRkJUME1zVDBGQlR5eERRVU42UTJ0RkxGTkJOVVZoTEZOQlFXdENha1FzUjBGTEwwSXNUMEZLU1VFc1IwRkJVMEVzUlVGQlRYQkdMRkZCUTJwQ1NTeEZRVUZMWjBZc1JVRkJUV3RFTEUxQlFVMHNTMEZCVFU0c1JVRkJVWFJDTEV0QlFVdHFTQ3hMUVVGTkxGRkJSM0pEUVN4TlFYZEZVRGhKTEZsQk0wUm5RaXhUUVVGeFFtNUVMRWRCUzNKRExFOUJTa2xCTEVkQlFWTkJMRVZCUVUxd1JpeFJRVU5xUWtrc1JVRkJTMmRHTEVWQlFVMXJSQ3hOUVVGTkxFdEJRVTFPTEVWQlFWRjBRaXhMUVVGTGFrZ3NTMEZCVFN4WFFVZHlRMEVzVFVGMVJGQXJTU3haUVhoRFowSXNVMEZCY1VKd1JDeEZRVUZQY1VRc1IwRkROVU1zUjBGQlNYSkVMRWRCUVZOQkxFVkJRVTF3Uml4UFFVRlJMRU5CUTNwQ0xFbEJRVWt3U1N4RlFVRXdRaXhyUWtGQlZrUXNSVUZCYzBKQkxFVkJRVkVzVFVGQlVTeFRRVUZYTEZOQlEzSkZja2tzUlVGQlMyZEdMRVZCUVUxclJDeE5RVUZOTEV0QlFVMU9MRVZCUVZGMFFpeExRVUZMYWtnc1MwRkJUV2xLTEVsQlJ6VkRMRTlCUVU5cVNpeE5RVzFEVUd0S0xGTkJka0poTEZOQlFXdENka1FzUjBGREwwSXNUMEZCVVROR0xFdEJRVXRsTEZOQlFWY3NRMEZCUTJZc1RVRkJVVUVzVFVGQlRXMUdMRXRCUVVzc1UwRkJWVE5DTEVkQlEzQkVMRTlCUVU5QkxFVkJRVkZyUml4VlFVRlZVeXhUUVVGVGVFUXNVVUZ4UTJ4RGQwUXNSVUZCVnl4VFFVRnJRbXBHTEVWQlFWZFdMRWRCUXpGRExGTkJRVXRWTEVsQlFXTldMRWRCUVZkVkxFbEJRV05XTEV0QlJXcERWU3hGUVVGVmFVWXNVMEZEV21wR0xFVkJRVlZwUml4VFFVRlRNMFlzUzBGRGFrSlZMRVZCUVZWclJpd3lRa0ZEVm14R0xFVkJRVlZyUml4M1FrRkJkMEkxUml4SFFVRlhjVVFzUzBGQlMzZERMR3REUVUwelJFTXNSVUZCTkVJM1JTeFBRVUZQUXl4UFFVRlBMRU5CUXpWRGVVVXNVMEZCVlVFc1NVRk5Va2tzUlVGQmQwTXNiMEpCUVdKdVNDeFZRVUUwUWl4WlFVRmhRU3hUUVVGVGIwZ3NaMEpCUXpkRlF5eEZRVUZqUml4RlFVRnZRaXhWUVVGWkxIRkNRVVU1UTBjc1JVRkJZU3hUUVVGclFrTXNSMEZEYWtNc1QwRkJUMEVzUlVGQlNTOUVMRkZCUVZFc1ZVRkJWeXhUUVVGVlowVXNSVUZCVDBNc1IwRkROME1zVDBGQlQwRXNSVUZCVDBFc1JVRkJTeTlFTEdOQlFXZENMRTFCY1VSdVEyZEZMRVZCUVhkQ2NrWXNUMEZCVDBNc1QwRkJUeXhEUVVONFEzRkdMRXRCZEVOVExGTkJRV001UkN4RlFVRkxUaXhIUVVNMVFpeEhRVUZ0UWl4cFFrRkJVazBzVVVGQmNVTXNTVUZCVms0c1JVRkJkVUlzUTBGRE0wUXNTVUZCU1c1RExFVkJRVlY0UkN4TFFVRkxaU3hUUVVGWFppeExRVUZQUVN4TFFVRkxMRWRCUXpGRExFOUJRVTkzUkN4SFFVRlhhVWNzUzBGQlpXcEhMRVZCUVZWQkxFVkJRVkZwUnl4SFFVRmhReXhGUVVGWGVrUXNVMEZCVVc1R0xFVkJSM0pHTEU5QlFVOUlMRVZCUVV0WUxFdEJRVTBzVTBGQlZYZEVMRWRCUTNKQ0swWXNTVUZEU0M5R0xFVkJRVkZwUnl4SFFVRmxha2NzUlVGQlVXbEhMRWxCUVdkQ0xFbEJSMnBFYWtjc1JVRkJVV2xITEVkQlFXRkRMRVZCUVZkNlJDeEpRVUZSVGl4TFFUUkNNVU5zUlN4TFFXSlRMRk5CUVdOM1JTeEZRVUZMVGl4SFFVTTFRaXhIUVVGdFFpeHBRa0ZCVWswc1VVRkJjVU1zU1VGQlZrNHNSVUZCZFVJc1EwRkRNMFFzU1VGQlNXNURMRVZCUVZWNFJDeExRVUZMWlN4VFFVRlhaaXhMUVVGUFFTeExRVUZMTEVkQlF6RkRMRTlCUVU5M1JDeEhRVUZYUVN4RlFVRlZRU3hGUVVGUmVVTXNVVUZCVDI1R0xFVkJSemRETEU5QlFVOUlMRVZCUVV0WUxFdEJRVTBzVTBGQlZYZEVMRWRCUXpGQ0xFOUJRVTlCTEVWQlFWRjVReXhIUVVGUFRpeFBRWGRIZEVKeFJTeEZRVUY1UW5aR0xFOUJRVTlETEU5QlFVOHNRMEZEZWtOMVJpeFRRVzVHWVN4VFFVRnJRbnBITEVkQlF5OUNMRWxCUVVsMlJDeEZRVUUyUWl4cFFrRkJXblZFTEVWQlFYVkNla1FzUlVGQlJYbEVMRWRCUVZkQkxFVkJSWHBFTEU5QlJFRnZSQ3hGUVVGUE5VWXNTMEZCUzJZc1JVRkJVMFFzVFVGRFpFRXNUVUZwUmxCclN5eE5RWFJGVlN4WFFVTldMRTlCUVU5MlNpeEZRVUZMV0N4TFFVRk5MRk5CUVZWM1JDeEhRVU14UWl4UFFVRlBRU3hGUVVGUllTeFZRVUZaTEUxQmNVVTNRamhHTEU5Qk1VUlhMRmRCUTFnc1QwRkJUM2hLTEVWQlFVdFlMRXRCUVUwc1UwRkJWWGRFTEVkQlEzUkNRU3hGUVVGUk5FUXNXVUZEVmpWRUxFVkJRVkUwUkN4WFFVRlhaMFFzV1VGQldUVkhMRTFCZDBSdVF6WkhMRmxCT1VOblFpeFhRVU5vUWl4UFFVRlBiRVFzUlVGQlR6RkNMRTFCUVUxNlJpeExRVUZOYjBJc1YwRkJWeXRKTEZWQk9FTnlRMGNzUzBGc1ExTXNVMEZCWXpORkxFZEJRM1pDTEZsQlFXTTNSU3hKUVVGV05rVXNSVUZEU3pOR0xFdEJRVXNzUjBGQlIzVkxMRmxCUjFZMVNpeEZRVUZMV0N4TFFVRk5MRk5CUVZWM1JDeEhRVU14UWl4UFFVRlBRU3hGUVVGUkswY3NXVUZCWXl4SFFVRkxOVVVzUzBFMlFuQkRVU3hKUVdoQ1VTeFRRVUZoVWl4SFFVTnlRaXhaUVVGak4wVXNTVUZCVmpaRkxFVkJRMHN6Uml4TFFVRkxUeXhQUVVGVExFVkJRVWxRTEV0QlFVc3NSMEZCUnpKR0xGZEJRVkUzUlN4RlFVZHdRMGdzUlVGQlMxZ3NTMEZCVFN4VFFVRlZkMFFzUjBGRE1VSXNUMEZCVDBFc1JVRkJVVzFETEUxQlFWRkJMRTlCYzBOMlFqWkZMRVZCUVhkQ0wwWXNUMEZCVDBNc1QwRkJUeXhEUVVONFEySXNTMEZhVXl4VFFVRmpORWNzUjBGRGRrSXNVVUZCYVVJelNpeEpRVUZpTWtvc1JVRkJkMElzUTBGRE1VSXNTVUZCU1dwSUxFVkJRVlY0UkN4TFFVRkxaU3hUUVVGWFppeExRVUZQUVN4TFFVRkxMRWRCUXpGRExFOUJRVTkzUkN4RlFVRlZRU3hGUVVGUllTeGxRVUZaZGtRc1JVRkhka01zVDBGQlQwZ3NSVUZCUzFnc1MwRkJUU3hUUVVGVmQwUXNSMEZETVVJc1QwRkJUMEVzUlVGQlVXRXNWVUZCV1c5SExFOUJjMEl6UWtNc1JVRkJWU3hYUVVOYUxFbEJRVWxCTEVWQlFWVXNVMEZCYVVKMlNTeEZRVUZWYkVNc1IwRkRka01zU1VGQlNUSkRMRVZCUVZFc1IwRlhXaXhQUVZaQmFrTXNSVUZCUzFnc1MwRkJUU3hUUVVGVk5rTXNSMEZEYmtJc1MwRkJUMEVzUjBGQlVVRXNTVUZCVXpWRExFZEJRVk1zUTBGREwwSXNSMEZCU1N0RExFVkJRVkZJTEVWQlFVMVdMRWRCUVZjc1EwRkRNMEpUTEVWQlFVMUhMRXRCUVV0R0xFZEJRMWdzVFVGSFJrRXNSVUZCVDBFc1JVRkJTemhJTEdsQ1FVZFVOVXNzUlVGQlJUSkNMRVZCUVV0clFpeExRVWRvUWl4TlFVRXdRaXh2UWtGQldrc3NVMEZCTkVKQkxGRkJRVkZETEZWQlFWVjNTQ3hSUVVGdlFpeFRRVUZWZGtrc1JVRkJWV3hETEVkQlEyeEhMRWRCUVV0QkxFVkJWMGdzVDBGQlQzbExMRVZCUVZFeFNpeExRVUZMYUVJc1MwRkJUVzFETEVWQlFWVnNReXhIUVZad1F5eEpRVUZKTWtNc1JVRkJVU3hIUVZGYUxFOUJVRUZxUXl4RlFVRkxXQ3hMUVVGTkxGTkJRVlUyUXl4SFFVTnVRaXhKUVVGSkswZ3NSVUZCU1M5SUxFVkJRVXMyU0N4UlFVRlJka2tzUjBGRmFrSjVTU3hIUVVOR2FFa3NSVUZCVFVjc1MwRkJTelpJTEV0QlIxSTNTeXhGUVVGRk1rSXNSVUZCUzJ0Q0xFdEJWbTlFT0Vnc1JVRm9RakZFTEVkQmFVTldSeXhIUVVGblEzQkhMRTlCUVU5RExFOUJRVThzUTBGRGFFUm5SeXhSUVVGVFFTeEpRWEZDVUVrc1IwRkJTeXhUUVVGWlF5eEZRVUZaTlVrc1JVRkJWVFpKTEVWQlFWTkRMRVZCUVZsRExFZEJRemxFTEVsQlQwbERMRVZCUVU5RExFVkJRVmRETEVWQlVHeENReXhGUVVGUmRFd3NTMEZ4UTFvc1RVRnVRM2RDTEcxQ1FVRmliVU1zU1VGRFZEWkpMRVZCUVZVM1NTeEZRVU5XUVN4RlFVRlhMRTFCU1dJMFNTeEZRVUZYYkVNc1RVRkJUU3hMUVVGTGRFZ3NVVUZCVVN4VFFVRlZaMHNzUjBGRGRFTktMRVZCUVZGSkxFVkJRVlV4UXl4TlFVRk5MRXRCUTNoQ01FTXNSVUZCV1Vvc1JVRkJUU3hKUVVGTkxFdEJRM2hDUXl4RlFVRlpSQ3hGUVVGTkxFbEJRVTBzUzBGRGVFSkZMRVZCUVdkQ1J5eEhRVUZoVWl4SFFVTTNRbkpMTEVWQlFVc3lTeXhGUVVGUExGTkJRVlU1U0N4SFFVdHdRaXhIUVVwSmNrSXNTVUZEUm10S0xFVkJRV2RDU1N4SFFVRm5RbmhGTEV0QlFVdDZSQ3hGUVVGVGNrSXNSVUZCVld0S0xFbEJSM1JFU0N4RlFVRk5MRU5CUTFJc1NVRkJTVkVzUlVGQlYwd3NSVUZGWmtFc1JVRkJaMElzVTBGQmRVSk5MRWRCUTNKRFF5eEhRVUZKTlVzc1MwRkJTM2RETEVWQlFWTjFTQ3hGUVVGWk5Va3NSVUZCVlRaSkxFVkJRVk5ETEVkQlEycEVVeXhGUVVGVE1Vc3NTMEZCUzNkRExFVkJRVk50U1N4SlFVa3pRbTVKTEVWQlFWRnhTU3hwUWtGQmFVSk9MRVZCUVZkR0xFVkJRV1ZLTEVsQlFXTXNSMEZEYWtWaExFZEJRVmwwU1N4SFFVRlRWQ3hMUVVGTExFTkJRM2hDZDBrc1ZVRkJWMEVzUlVGRFdGQXNVVUZCVTBFc1JVRkRWRXNzWTBGQlpVRXNSVUZEWm14S0xGTkJRVlZCTEVWQlExWnBTaXhWUVVGWFFTeFBRVWRrY0V3c1RVRkRTVUVzVFVGcFFrdzBUQ3hIUVVGTkxGTkJRV0ZpTEVWQlFWazFTU3hGUVVGVk5ra3NSVUZCVTBNc1IwRkRjRVFzU1VGWFNVVXNSVUZCVDBNc1JVRkJWMWNzUlVGWWJFSkRMRVZCUVZOb1RTeExRV2REWWl4WlFUbENiVUlzU1VGQlppdExMRWxCUTBaQkxFVkJRV0VzU1VGSFV5eHRRa0ZCWWpWSkxFbEJRMVEyU1N4RlFVRlZOMGtzUlVGRFZrRXNSVUZCVnl4TlFVbGlORWtzUlVGQlYyeERMRTFCUVUwc1MwRkJTM1JJTEZGQlFWRXNVMEZCVldkTExFZEJTWFJETEU5QlNFRktMRVZCUVZGSkxFVkJRVlV4UXl4TlFVRk5MRXRCUTNoQ01FTXNSVUZCV1Vvc1JVRkJUU3hKUVVGTkxFdEJRM2hDUXl4RlFVRlpSQ3hGUVVGTkxFbEJRVTBzUzBGRGFrSjRTeXhGUVVGTGNVd3NSVUZCVVN4VFFVRlZlRWtzUjBGRE5VSjFTU3hGUVVGWFJDeEhRVUZaZEVrc1IwRkRka0kzUXl4RlFVRkxiMHdzUlVGQlUzQkxMRTlCUVU4c1UwRkJWVU1zUjBGRE4wSXNVVUZCVXpKS0xFZEJRV0V6U2l4RlFVRkxNa29zV1VGQlkwRXNSMEZCWjBKSUxFZEJRV0Y0U2l4RlFVRkxkMG9zV1VGQlkwRXNSMEZCWjBKS0xFZEJRVmR3U2l4RlFVRkxiMG9zVlVGQldVRXNSMEZCWXpkSkxFZEJRVmxRTEVWQlFVdFBMRmRCUVdGQkxFdEJReTlMTEZOQlFWVlFMRWRCUTFvMFFpeEZRVUZSZVVrc2IwSkJRVzlDY2tzc1JVRkJTekpLTEZWQlFWY3pTaXhGUVVGTGVVb3NZMEZCWlVvc1NVRkJZeXhIUVVNNVJXTXNSVUZCVTBjc1QwRkJUMGdzUlVGQlUycExMRkZCUVZGR0xFZEJRVThzUzBGSGNrTXlTaXhIUVVGalNDeEhRVUZqYWtvc1IwRkJZVFpKTEVWQlJXWXNTVUZCY0VKbExFVkJRVk40VEN4UlFVTnNRalJNTEVkQlFXTXpTU3hIUVVaa01ra3NSMEZCWXpOSkxFMUJTMnBDZUVRc1RVRkRTVUVzVFVFd1FreHZUU3hIUVVGbExITkNRVU5tUXl4SFFVRkxMRVZCUTB4T0xFZEJRVmNzUjBGRFdFOHNSMEZCWVN4SFFVTmlVaXhIUVVGakxGTkJRWEZDZEVrc1IwRkRhRU5CTEVWQlFWRTBTU3hOUVVOWU5Va3NSVUZCVVRSSkxFbEJRWE5ETEVsQlFYUkNSU3hIUVVGWEwwd3NVMEZCYVVJNFRDeEhRVUZMUXl4SFFVRlhka2dzVDBGSGRFVXNTVUZCU1d0Q0xFVkJRVTE2UXl4RlFVRlJORWtzU1VGRGJFSXNUMEZCVDB3c1IwRkJVemxHTEV0QlFWTTRSaXhIUVVGVE9VWXNSMEZCVHl4TFFWTjJRMnRITEVkQlFXZENMRk5CUVhWQ00wa3NSMEZEZWtNc1NVRkJTWGxETEVWQlFVMTZReXhGUVVGUk5Fa3NTVUZGWkV3c1IwRkJVemxHTEV0QlExZzRSaXhIUVVGVE9VWXNSMEZCVHl4TFFVTm9RbnBETEVWQlFWRTBTU3hKUVVGblFpeExRVU40UWtVc1IwRkJWM1pLTEV0QlFVdHJSQ3hMUVZsb1FuVkdMRWRCUVdVc1UwRkJjMEpTTEVkQlEzWkRMRTlCUVU4c1UwRkJWVmNzUjBGRFppeFBRVUZQV0N4RlFVRlJhRXNzUzBGQlMyaENMRXRCUVUxMVRTeEhRVUZoV2l4TlFVZDJRMkVzUjBGQlpTeERRVU5xUWtNc1pVRkJaMElzY1VKQlEyaENReXg1UWtGQk1FSXNaME5CUXpGQ1F5eG5Ra0ZCYVVJc2QwSkJSMlpETEVkQlFXRXNWMEZEWml4UFFVRlBMRWRCUjB4RExFZEJRV01zVjBGRGFFSXNUMEZCVHl4SFFWZE1UaXhIUVVGbExGTkJRWE5DV2l4SFFVTjJReXhKUVVGTFFTeEZRVUZOYlVJc2IwSkJRWE5DYmtJc1JVRkJUV1VzTUVKQlFUUkNaaXhGUVVGTlowSXNaMEpCUVdsQ0xFTkJRM2hHTEVsQlFVc3NTVUZCU1Vrc1MwRkJZMUFzU1VGRGNrSXNVMEZCVjA4c1JVRkJXVU1zUlVGQlowSkRMRWRCUTNKRGRFSXNSVUZCVFc5Q0xFZEJRV01zVjBGRmJFSXNUMEZFUVM5TkxFdEJRVXRuVGl4SFFVRnJRa29zUjBGRGFFSkxMRWRCUVd0Q1FTeEZRVUZsZUVnc1RVRkJUWHBHTEV0QlFVMXZRaXhaUVVkMFJIVkxMRVZCUVUxeFFpeEhRVUZyUWtnc1IwRk9NVUlzUTBGUFIwVXNSVUZCV1ZBc1IwRkJZVThzUjBGQllYQkNMRVZCUVUxdlFpeEpRVWMzUTNCQ0xFVkJRVTExUWl4cFFrRkRVblpDTEVWQlFVMWpMR2xDUVVsV0xFOUJRVTlrTEVkQlkweEdMRWRCUVd0Q0xGTkJRWGxDZEVvc1JVRkJWVFpKTEVWQlFWTlhMRWRCUTJoRkxFbEJRVWwzUWl4RlFVRmplRUlzUlVGQlRYbENMRk5CUVZkNlFpeEZRVUZOZWtzc1QwRkRja050VFN4RlFVRm5Rak5ETEVWQlFWRXhTaXhMUVVGTExFTkJRVU50VFN4SFFVRmphRXdzUlVGQlZXNURMRTFCUVUwc1IwRkZOVVJ4VGl4SFFVRnBRa0VzU1VGQmEwSnlUaXhQUVVOcVEzRk9MRWxCUVd0Q1JpeEhRVUZwUW5oQ0xFVkJRVTB5UWl4elFrRkJkMEl6UWl4RlFVRk5Na0lzZDBKQlEzcEZkRU1zUlVGQlVXaExMRXRCUVV0eFRTeEZRVUZsTVVJc1MwRkpPVUl4UlN4SFFVRlBOa1FzUjBGRFVIbERMRWRCUVZNelFpeEhRVVZVUkN4SFFVRnhRbXhJTEU5QlFVOURMRTlCUVU4c1EwRkRja052Unl4SFFVRkpRU3hIUVVOS1l5eEpRVUZMUVN4SFFVTk1ORUlzU1VFelNGRXNVMEZCWVhwRExFVkJRVmsxU1N4RlFVRlZOa2tzUlVGQlUwTXNSMEZEY0VRc1QwRkJUMGdzUjBGQlJ6bEtMRXRCUVV0b1FpeExRVUZOSzBzc1JVRkJXVFZKTEVWQlFWVTJTU3hGUVVGVFF5eEZRVUZaTEVsQk1raG9SV0VzV1VGQllVRXNSMEZEWWtzc1kwRkJaVUVzUjBGRFpsZ3NZVUZCWTBFc1IwRkRaRU1zWjBKQlFXbENRU3hIUVVOcVFuaEZMRXRCUVUxQkxFZEJRMDV6Unl4UFFVRlJRU3hMUVUxT1JTeEhRVUZsTEhWRlFVTm1ReXhIUVVGaExIVkNRV2RDWWtNc1IwRkJWU3hUUVVGcFFrTXNSVUZCVFRkRUxFVkJRVTA0UkN4SFFVTjZReXhKUVVGSlF5eFBRVUZwUWl4SlFVRldSQ3hGUVVGdFFpeEhRVUZMUVN4RlFVTXZRa1VzUlVGQlpVUXNSVUZCUzBVc1VVRkRjRUpCTEU5QlFUSkNMRWxCUVdwQ1JDeEhRVUZwUTBFc1JVRkRNME5GTEVWQlFXdENTQ3hGUVVGTFNTeFhRVU4yUWtFc1QwRkJhVU1zU1VGQmNFSkVMRWRCUVc5RFFTeEZRVU5xUkVVc1JVRkJjMEpNTEVWQlFVdHlRaXhsUVVNelFrRXNUMEZCZVVNc1NVRkJlRUl3UWl4SFFVRjVRMEVzUlVGSE1VUjRReXhGUVVGUkxFbEJSRmQ1UXl4SFFVRnZRbElzUjBGREwwSXNRMEZCY1VKQkxFVkJRVTBzUTBGRGNrTkpMRkZCUVZOQkxFVkJRMVJGTEZkQlFWbEJMRVZCUTFwNlFpeGxRVUZuUWtFc1JVRkRhRUkwUWl4UFFVRlJkRVVzU1VGSFZpeFBRVVJCTkVJc1JVRkJUWFZDTEdkQ1FVRnJRbFFzUlVGRGFrSTVUQ3hGUVVGTFdDeExRVUZOTEZOQlFWVjNSQ3hKUVVOeVFuZExMRWRCUVZkTkxFbEJRV2xEUXl4SFFVRnhRaTlMTEVkQlEzQkZaMHdzUjBGQlkyaE1MRVZCUVZOdFNTeEhRVVYyUWpoRExFZEJRV1ZxVEN4RlFVRlRiMHNzUlVGQlRTeERRVU0xUWtrc1VVRkJVMEVzUlVGRFZFVXNWMEZCV1VFc1JVRkRXbnBDTEdWQlFXZENRU3hGUVVOb1FqUkNMRTlCUVZGMFJTeFBRVTFhY1VVc1IwRkJjMElzVTBGQk5rSlNMRWRCUTNKRUxFOUJRVTlqTEVkQlFXMURha0lzUjBGQllXNU1MRXRCUVV0elRDeEhRVUZSWlN4WFFVRmhha0lzUjBGQlYzQk1MRXRCUVV0elRDeEhRVUZSWjBJc1kwRkJaMEpETEZsQlFXTkJMR0ZCWjBOeVNVNHNSMEZCZFVJc1UwRkJPRUl2U3l4SFFVTjJSQ3hQUVVGSlFTeEpRVUZaY0VRc1VVRkJWVzlFTEVsQlFWbHdRaXhWUVVrdlFpdEhMRVZCUVZNelJpeEZRVUZSYzB3c1kwRkJZM1JHTEdkQ1FVRnBRbWhITEVsQmFVSnlSR2xNTEVkQlFXbENMRk5CUVhkQ2Frd3NSVUZCVTI5TExFVkJRVTF0UWl4UlFVTXpReXhKUVVGWVFTeEpRVU5HUVN4RlFVRlRMRWxCUjFoQkxFVkJRVTltTEZOQlFWVXNSVUZEYWtJc1NVRkJTWEpETEVWQlFWRXNTVUZCU1d0RUxGbEJRVmxxUWl4RlFVRk5iVUlzUjBGRGJFTndSQ3hGUVVGTmVVSXNVVUZCVlRWS0xFVkJSV2hDTEVkQlEwVm5UQ3hIUVVGamFFd3NSVUZCVTIxSkxGTkJRMmhDYmtrc1JVRkJWVUVzUlVGQlVUUkVMR0ZCWVhwQ05FZ3NSMEZCY1VJc1EwRkJReXhQUVVGUkxGRkJRVk1zVTBGQlZTeFZRVVZxUkZJc1IwRkJaMElzVTBGQmRVSm9UQ3hGUVVGVGJVa3NTVUZEUml4SlFVRTFRM0ZFTEVkQlFXMUNiRTRzVVVGQlVUWktMRVZCUVUxcFF5eFBRVUVyUXl4dFFrRkJlRUp3U3l4RlFVRlJiVWtzUlVGQlRXbERMRTlCUVhsQ2FrTXNSVUZCVFhWQ0xHbENRVUZ2UW5aQ0xFVkJRVTExUXl4WFFVZHFTVEZMTEVWQlFWRm5UQ3hqUVVGak4wTXNSMEZHZEVKdVNTeEZRVUZSYlVrc1JVRkJUV2xETEZWQlYyeENMRmRCUTBVc1NVRkJTV2xDTEVWQlFXTXNVMEZCY1VKc1JDeEZRVUZQYjBRc1VVRkROMElzU1VGQldFRXNTVUZEUmtFc1JVRkJVeXhEUVVOUVppeFRRVUZUTEVWQlExUkZMRmxCUVZrc1JVRkRXa2NzV1VGQlVYWk9MRWxCU1Zvc1NVRkJTVzFQTEVWQlFXTTNUU3hUUVVGVE9FMHNXVUZCV1N4bFFVVjJReXhQUVVSQlJDeEZRVUZaUlN4blFrRkJaMEo0UkN4RlFVRlBiMFFzUlVGQlQyWXNVVUZCVTJVc1JVRkJUMklzVjBGQldXRXNSVUZCVDFZc1VVRkRkRVZaTEVkQlIxUktMRVZCUVZrelRDeFZRVUZaTDBNc1JVRkJTVEJQTEdGQlFXVXhUeXhGUVVGSk1FOHNXVUZCV1ROTUxGVkJRek5FTDBNc1JVRkJTVEJQTEZsQlFXTkJMRVZCYUVKd1FpeEhRWGRDUVN4SlFVRkpVQ3hIUVVGblF5eFhRVU5zUXl4SlFVRkpZeXhIUVVGaExFVkJRMkpETEVWQlFVMXNVQ3hGUVVGSmFVTXNVMEZGWkN4SFFVRkphVTRzUlVGQlN5eERRVU5RTEVsQlFVbERMRVZCUVZORUxFVkJRVWwyVEN4alFVRmpMRTlCUXpOQ2FFSXNSVUZCVVhkTkxFVkJRVTh2U0N4WlFVTnVRaXRJTEVWQlFVOTJTU3haUVVGWmFrVXNSMEZEYmtKM1RTeEZRVUZQZWtRc2FVSkJRV2xDTEVsQlFVc3NWMEZETTBKMVJDeEhRVUZoTEVsQlJXWjBUU3hGUVVGTk1Fd3NZMEZCWXl4SlFVRkpTeXhaUVVGWkxFbEJRVXNzUTBGRGRrTmlMRk5CUVZNc1MwRkpZaXhQUVVGUGIwSXNSVUZvUWpKQ0xFZEJiVUpvUTFZc1IwRkJiVU1zVjBGRGNrTXNTVUZEUlN4SlFVRkpReXhYUVVGWExGTkJRMllzVFVGQlQxa3NSMEZEVUN4UFFVRlBMRVZCUjFRc1QwRkJUeXhGUVZBNFFpeEhRVlZ1UTBNc1IwRkJOa0l2U3l4UFFVRlBReXhQUVVGUExFTkJRemREYVVvc1VVRkJVMEVzUjBGRFZEaENMR1ZCY0VsdFFpeFRRVUYzUWpkQ0xFVkJRVTAzUkN4SFFVTTNReTlLTEV0QlFVc3NTVUZEVURKT0xFZEJRVkV6VFN4TFFVRkxhRUlzUzBGQlN5eEhRVUZKTkU0c1JVRkJUVGRFTEVWQlFVMHNRMEZEYUVOcFJTeFRRVUZUTEVWQlExUjJRaXhuUWtGQlowSXNUMEV3U214Q2FVUXNSMEZCTWtKcVRDeFBRVUZQUXl4UFFVRlBMRU5CUXpORGFVd3NUVUZZVlN4VFFVRmxNMFVzUjBGUGVrSXNUVUZPU1N3NFFrRkJPRUl4U1N4TFFVRkxSaXhUUVVGVGQwNHNZVUZCWlhoT0xGTkJRVk41VGl4TFFVTjBSVGRGTEVsQlJVRTFTU3hUUVVGVGVVb3NhVUpCUVdsQ0xHMUNRVUZ2UW1Jc1IwRkJVeXhIUVVkc1JHaE1MRkZCWlV3NFVDeEhRVUZqTTFBc1JVRkJTVW9zUlVGbGJFSm5VU3hIUVVFd1FuUk1MRTlCUVU5RExFOUJRVThzUTBGRE1VTnpUQ3hYUVU1bExGZEJSV1lzVDBGRVFUZFFMRVZCUVVsS0xFVkJRVWtyVUN4SFFVTkVPVkFzVVVGdFMwd3dSQ3hIUVVGUkxGTkJRV1YxVFN4RlFVRlBReXhIUVVWb1F5eFBRVUZQYmxFc1JVRkJSU3hIUVVGSE1rUXNUVUZCVFN0Q0xFMUJRVTE2Uml4TFFVRk5iMElzWVVGSE5VSXJUeXhIUVVFNFFqRk1MRTlCUVU5RExFOUJRVThzUTBGRE9VTlFMRk5CY0VwaExGTkJRV3RDYUVNc1IwRkRMMElzU1VGQlNWTXNSVUZCVVN4SFFWVmFMRTlCVkVGcVF5eEZRVUZMV0N4TFFVRk5MRk5CUVZWM1JDeEhRVU5tUVN4RlFVRlJWeXhWUVVOV2VFUXNSVUZCU3paRExFVkJRVkZYTEZOQlFWVXNVMEZCVlhKQ0xFdEJRekZDV0N4SFFVRlpRU3hIUVVGWllTeEZRVUZSUml4RlFVRlBXQ3hMUVVNeFExTXNSVUZCVFVjc1MwRkJTMFFzVDBGTFdpOURMRVZCUVVVMlF5eEpRVEJKVkhkT0xFOUJOMGhYTEZOQlFXZENhazhzUjBGRE0wSXNTVUZCU1cxS0xFVkJRVkYwVEN4TFFVOWFMRTlCVEVGWExFVkJRVXRhTEVWQlFVVnZReXhIUVVGWExGTkJRVlZ4UWl4SlFVTmxMRWxCUVhKRExFZEJRVWN4UWl4UlFVRlJaQ3hMUVVGTGMwc3NSVUZCVHpsSUxFbEJRM3BDTEVkQlFVZFVMRXRCUVVzdlFpeExRVUZMYzBzc1JVRkJUemxJTEV0QlIycENlRVFzVFVGelNGQnhVU3hUUVRWSFlTeFhRVU5pTEVsQlFVbDZUaXhGUVVGUkxFZEJTVm9zVDBGSVFXcERMRVZCUVV0WUxFdEJRVTBzVTBGQlZYZEVMRWRCUTI1Q0xFOUJRVTlhTEVWQlFVMUhMRXRCUVVzd1F5eE5RVUZOTjBNc1JVRkJUM1pETEVWQlFWRnRSQ3hGUVVGUldTeGxRVVV4UTNKRkxFVkJRVVUyUXl4SlFYZEhWREJPTEVkQk0wWlBMRk5CUVZsNlR5eEhRVU51UWl4UFFVRlBOa0lzUjBGQlRURkRMRXRCUVV0b1FpeExRVUZOTmtJc1JVRkJUMEVzUlVGQlVTeEpRVEpHZGtNd1R5eE5RUzlGVlN4WFFVTldMRTlCUVU4M1RTeEhRVUZOTVVNc1MwRkJTMmhDTEV0QlFVMHNSVUZCUnl4SlFTdEZNMEozVVN4SlFXNUZVU3hUUVVGaE0wOHNSMEZEY2tJc1QwRkJUemRDTEV0QlFVczJRaXhKUVcxRldubE9MRTlCZEVSWExGTkJRV2RDYms0c1IwRkRNMElzU1VGQlNWTXNSVUZCVVN4SFFVMWFMRTlCVEVGcVF5eEZRVUZMV0N4TFFVRk5MRk5CUVZWM1JDeExRVU5rY2tJc1IwRkJXVUVzUjBGQldXRXNSVUZCVVZFc1JVRkJVVFJFTEZkQlFWbHFSaXhMUVVOMlJGTXNSVUZCVFVjc1MwRkJTMU1zUlVGQlVUUkVMR05CUjJoQ2NrZ3NSVUZCUlRaRExFbEJaMFJVTms0c1UwRnVRMkVzVTBGQmEwSjBUeXhIUVVNdlFpeEpRVUZKVXl4RlFVRlJMRWRCVVZvc1QwRlFRV3BETEVWQlFVdFlMRXRCUVUwc1UwRkJWWGRFTEVkQlEyNUNMRTlCUVU4M1F5eEZRVUZMTmtNc1JVRkJVVFJFTEZkQlFWZHFSQ3hUUVVGVkxGTkJRVlYxVFN4SFFVTTNRMEVzU1VGQldXeE9MRXRCUVdGeVFpeEhRVUZaUVN4SFFVRlpZU3hGUVVGUk1FNHNSVUZCVTNaUExFdEJRM0JGVXl4RlFVRk5SeXhMUVVGTE1rNHNUMEZKVmpOUkxFVkJRVVUyUXl4SlFUSkNWR01zVFVGQlQwRXNTMEVyUWt4cFRpeEhRVUZWYkZFc1RVRkJUV3RSTEZGQlJXaENMME1zUjBGQmIwSnVTaXhQUVVGUFF5eFBRVUZQTEVOQlEzQkRhMDBzVjBGcVFtVXNVMEZCYjBKRExFZEJRMjVETEUxQlFYTkNMRzFDUVVGU1FTeEhRV2xDWkVZc1VVRkJVMEVzUzBGTlVHNU1MRWRCUVUwc1IwRkRUbk5NTEVkQlFVMHNSMEYxUWxZc1dVRnlRbmRDTEVsQlFXSXpUeXhMUVVOVU1rOHNSMEZCVFM5UkxFZEJRMFpwUkN4UlFVRlZRU3hGUVVOa2QwTXNSMEZCU1RkRExFdEJRVTlCTEVkQlIySXhRaXhGUVVGUE5sQXNSMEZCUzNoSUxFVkJRV041Unl4SFFVRlpia01zU1VGRGRFTXpUU3hGUVVGUGRVVXNSMEZCUzBnc1JVRkJUMVVzUlVGQlQybERMRVZCUVZWT0xFVkJRVXRwUWl4RlFVRlhiVUlzUlVGQlZVVXNSVUZCVjFFc1JVRkJWVzFDTEVkQlFVODJSQ3hIUVVGbFJTeEhRVUZoTjBVc1IwRkJhMEp6Uml4SlFVTjRTVmNzUjBGQlNYWk5MRWRCUVV0cFFpeEhRVVZVYzB3c1IwRkJTVU1zVVVGQlZTeFZRVVZrUkN4SFFVRkpOMUFzVDBGQlUwRXNSVUZIV0RaUUxFZEJRVWwyVEN4VlFVRlpRU3hGUVVGVmRVd3NSMEZCU1haTkxFbEJTWFJDZFUwaUxDSm1hV3hsSWpvaVJUcGNYSGR2Y210emNHRmpaVnhjZDJscmFXRXRhWE10WVc1emQyVnlaV1JjWEc1dlpHVmZiVzlrZFd4bGMxeGNaRzl0ZEdGemRHbGpYRnhrYVhOMFhGeGtiMjEwWVhOMGFXTXVhbk1pZlE9PSIsIlwidXNlIHN0cmljdFwiO2NvbnN0IGFycmlmeT1yZXF1aXJlKFwiYXJyaWZ5XCIpLGlzUGxhaW5PYmplY3Q9cmVxdWlyZShcImlzLXBsYWluLW9iamVjdFwiKSxjbGFzc05hbWVzPXJlcXVpcmUoXCJjbGFzc25hbWVzXCIpLHJlbmRlcj1yZXF1aXJlKFwiLi9yZW5kZXJcIiksdXRpbHM9cmVxdWlyZShcIi4vdXRpbHNcIiksaD0oZSxzLHIpPT57cyYmIWlzUGxhaW5PYmplY3Qocyk/KHI9cyxzPXt9KTpzfHwocz17fSkscj1hcnJpZnkocik7Y29uc3QgaT11dGlscy5nZXRTZWxlY3RvclBhcnRzKGUpO3JldHVybiBpLmlkJiYocy5pZD1pLmlkKSxpLmNsYXNzZXMubGVuZ3RoJiYocy5jbGFzcz1jbGFzc05hbWVzKHMuY2xhc3MsaS5jbGFzc2VzKSkscmVuZGVyKGkudGFnLHMscil9O21vZHVsZS5leHBvcnRzPWV4cG9ydHM9aDtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR1Y0TG1weklsMHNJbTVoYldWeklqcGJJbUZ5Y21sbWVTSXNJbkpsY1hWcGNtVWlMQ0pwYzFCc1lXbHVUMkpxWldOMElpd2lZMnhoYzNOT1lXMWxjeUlzSW5KbGJtUmxjaUlzSW5WMGFXeHpJaXdpYUNJc0luTmxiR1ZqZEc5eUlpd2lZWFIwY25NaUxDSmphR2xzWkhKbGJpSXNJbkJoY25Seklpd2laMlYwVTJWc1pXTjBiM0pRWVhKMGN5SXNJbWxrSWl3aVkyeGhjM05sY3lJc0lteGxibWQwYUNJc0ltTnNZWE56SWl3aWRHRm5JaXdpYlc5a2RXeGxJaXdpWlhod2IzSjBjeUpkTENKdFlYQndhVzVuY3lJNklrRkJRVUVzWVVGRFFTeE5RVUZOUVN4UFFVRlRReXhSUVVGUkxGVkJRMnBDUXl4alFVRm5Ra1FzVVVGQlVTeHRRa0ZEZUVKRkxGZEJRV0ZHTEZGQlFWRXNZMEZEY2tKSExFOUJRVk5JTEZGQlFWRXNXVUZEYWtKSkxFMUJRVkZLTEZGQlFWRXNWMEZGYUVKTExFVkJRVWtzUTBGQlEwTXNSVUZCVlVNc1JVRkJUME1zUzBGRGRrSkVMRWxCUVZWT0xHTkJRV05OTEVsQlF6TkNReXhGUVVGWFJDeEZRVU5ZUVN4RlFVRlJMRWxCUTBkQkxFbEJRMWhCTEVWQlFWRXNTVUZGVkVNc1JVRkJWMVFzVDBGQlQxTXNSMEZEYkVJc1RVRkJUVU1zUlVGQlVVd3NUVUZCVFUwc2FVSkJRV2xDU2l4SFFVOXlReXhQUVU1SlJ5eEZRVUZOUlN4TFFVTlVTaXhGUVVGTlNTeEhRVUZMUml4RlFVRk5SU3hKUVVWa1JpeEZRVUZOUnl4UlFVRlJReXhUUVVOcVFrNHNSVUZCVFU4c1RVRkJVVm9zVjBGQlYwc3NSVUZCVFU4c1RVRkJUMHdzUlVGQlRVY3NWVUZGZEVOVUxFOUJRVTlOTEVWQlFVMU5MRWxCUVV0U0xFVkJRVTlETEVsQlIycERVU3hQUVVGUFF5eFJRVUZWUVN4UlFVRlZXaUlzSW1acGJHVWlPaUpGT2x4Y2QyOXlhM053WVdObFhGeDNhV3RwWVMxcGN5MWhibk4zWlhKbFpGeGNibTlrWlY5dGIyUjFiR1Z6WEZ4b2VYQmxjbk5qY21sd2RDMXpkSEpwYm1kY1hITnlZMXhjYVc1a1pYZ3Vhbk1pZlE9PSIsIlwidXNlIHN0cmljdFwiO2NvbnN0IHZvaWRFbGVtZW50cz1yZXF1aXJlKFwidm9pZC1lbGVtZW50c1wiKSxhcnJpZnk9cmVxdWlyZShcImFycmlmeVwiKTtmdW5jdGlvbiByZW5kZXJBdHRyaWJ1dGVzKGUpe3JldHVybihlPU9iamVjdC5rZXlzKGUpLmZpbHRlcihyPT52b2lkIDAhPT1lW3JdJiZudWxsIT09ZVtyXSYmITEhPT1lW3JdKS5tYXAocj0+ITA9PT1lW3JdP3I6YCR7cn09XCIke2Vbcl19XCJgKS5qb2luKFwiIFwiKSk/YCAke2V9YDpcIlwifWZ1bmN0aW9uIHJlbmRlckNoaWxkcmVuKGUpe3JldHVybiAwPT09KGU9YXJyaWZ5KGUpKS5sZW5ndGg/XCJcIjoxPT09ZS5sZW5ndGg/ZVswXTpgXFxuXFx0JHtlLmpvaW4oXCJcXG5cXHRcIil9XFxuYH1tb2R1bGUuZXhwb3J0cz1leHBvcnRzPWZ1bmN0aW9uKGUscix0KXtyZXR1cm5cIiFkb2N0eXBlXCI9PT1lfHx2b2lkRWxlbWVudHNbZV0/YDwke2V9JHtyZW5kZXJBdHRyaWJ1dGVzKHIpfT5gOmA8JHtlfSR7cmVuZGVyQXR0cmlidXRlcyhyKX0+JHtyZW5kZXJDaGlsZHJlbih0KX08LyR7ZX0+YH07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbkpsYm1SbGNpNXFjeUpkTENKdVlXMWxjeUk2V3lKMmIybGtSV3hsYldWdWRITWlMQ0p5WlhGMWFYSmxJaXdpWVhKeWFXWjVJaXdpY21WdVpHVnlRWFIwY21saWRYUmxjeUlzSW1GMGRISnpJaXdpVDJKcVpXTjBJaXdpYTJWNWN5SXNJbVpwYkhSbGNpSXNJbTVoYldVaUxDSjFibVJsWm1sdVpXUWlMQ0p0WVhBaUxDSnFiMmx1SWl3aWNtVnVaR1Z5UTJocGJHUnlaVzRpTENKamFHbHNaSEpsYmlJc0lteGxibWQwYUNJc0ltMXZaSFZzWlNJc0ltVjRjRzl5ZEhNaVhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxHRkJRMEVzVFVGQlRVRXNZVUZCWlVNc1VVRkJVU3hwUWtGRGRrSkRMRTlCUVZORUxGRkJRVkVzVlVGVGRrSXNVMEZCVTBVc2FVSkJRV2xDUXl4SFFXRjZRaXhQUVZwQlFTeEZRVUZSUXl4UFFVRlBReXhMUVVGTFJpeEhRVU5zUWtjc1QwRkJUME1zVVVGRFUwTXNTVUZCYUVKTUxFVkJRVTFKTEVsQlExVXNUMEZCYUVKS0xFVkJRVTFKTEV0QlExVXNTVUZCYUVKS0xFVkJRVTFKTEVsQlJVNUZMRWxCUVVsR0xFbEJRMWtzU1VGQmFFSktMRVZCUVUxSkxFZEJRMDVCTEV0QlEwZEJMRTFCUVZOS0xFVkJRVTFKTEU5QlJXeENSeXhMUVVGTExGVkJSVXRRTEVsQlJVd3NSMEZIVWl4VFFVRlRVU3hsUVVGbFF5eEhRVVYyUWl4UFFVRjNRaXhMUVVSNFFrRXNSVUZCVjFnc1QwRkJUMWNzU1VGRFRFTXNUMEZEVEN4SFFVTjFRaXhKUVVGd1FrUXNSVUZCVTBNc1QwRkRXa1FzUlVGQlV5eFZRVVZJUVN4RlFVRlRSaXhMUVVGTExGbEJha00zUWtrc1QwRkJUME1zVVVGQlZVRXNVVUZCVlN4VFFVRm5RbElzUlVGQlRVb3NSVUZCVDFNc1IwRkRka1FzVFVGQllTeGhRVUZVVEN4SFFVRjFRbElzWVVGQllWRXNUMEZETlVKQkxFbEJRVTlNTEdsQ1FVRnBRa01zVlVGRmVrSkpMRWxCUVU5TUxHbENRVUZwUWtNc1RVRkJWVkVzWlVGQlpVTXNUMEZCWTB3aUxDSm1hV3hsSWpvaVJUcGNYSGR2Y210emNHRmpaVnhjZDJscmFXRXRhWE10WVc1emQyVnlaV1JjWEc1dlpHVmZiVzlrZFd4bGMxeGNhSGx3WlhKelkzSnBjSFF0YzNSeWFXNW5YRnh6Y21OY1hISmxibVJsY2k1cWN5SjkiLCJcInVzZSBzdHJpY3RcIjtjb25zdCBTRUxFQ1RPUl9SRUdFWD0vKF58I3xcXC4pW14jXFwuXSsvZztmdW5jdGlvbiBnZXRUYWcodCl7cmV0dXJuXCIjXCI9PT10WzBdWzBdfHxcIi5cIj09PXRbMF1bMF0/XCJkaXZcIjp0WzBdLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gZ2V0Q2xhc3Nlcyh0KXtyZXR1cm4gdC5maWx0ZXIoaXNDbGFzcykubWFwKHNsaWNlKDEpKX1mdW5jdGlvbiBnZXRJZCh0KXtyZXR1cm4gdC5maWx0ZXIoaXNJZCkubWFwKHNsaWNlKDEpKVswXX1mdW5jdGlvbiBzbGljZSh0LGUpe3JldHVybiBzPT5zLnNsaWNlKHQsZSl9ZnVuY3Rpb24gaXNJZCh0KXtyZXR1cm5cIiNcIj09PXRbMF19ZnVuY3Rpb24gaXNDbGFzcyh0KXtyZXR1cm5cIi5cIj09PXRbMF19ZXhwb3J0cy5nZXRTZWxlY3RvclBhcnRzPSh0PT57Y29uc3QgZT10Lm1hdGNoKFNFTEVDVE9SX1JFR0VYKTtpZighZSl0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VsZWN0b3IhIFNob3VsZCBoYXZlIHRoZSBmb3JtYXQgXCJuYW1lLmNsYXNzMS5jbGFzczIjaWRcIiwgYnV0IHdhczogXCIke3R9XCJgKTtyZXR1cm57dGFnOmdldFRhZyhlKSxpZDpnZXRJZChlKSxjbGFzc2VzOmdldENsYXNzZXMoZSl9fSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJblYwYVd4ekxtcHpJbDBzSW01aGJXVnpJanBiSWxORlRFVkRWRTlTWDFKRlIwVllJaXdpWjJWMFZHRm5JaXdpYldGMFkyaGxjeUlzSW5SdlRHOTNaWEpEWVhObElpd2laMlYwUTJ4aGMzTmxjeUlzSW1acGJIUmxjaUlzSW1selEyeGhjM01pTENKdFlYQWlMQ0p6YkdsalpTSXNJbWRsZEVsa0lpd2lhWE5KWkNJc0ltRWlMQ0ppSWl3aWRtRnNJaXdpYzNSeUlpd2laWGh3YjNKMGN5SXNJbWRsZEZObGJHVmpkRzl5VUdGeWRITWlMQ0p6Wld4bFkzUnZjaUlzSW0xaGRHTm9JaXdpUlhKeWIzSWlMQ0owWVdjaUxDSnBaQ0lzSW1Oc1lYTnpaWE1pWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEdGQlEwRXNUVUZCVFVFc1pVRkJhVUlzYlVKQlkzWkNMRk5CUVZORExFOUJRVTlETEVkQlEyWXNUVUZCYzBJc1RVRkJiRUpCTEVWQlFWRXNSMEZCUnl4SlFVRm5ReXhOUVVGc1FrRXNSVUZCVVN4SFFVRkhMRWRCUTJoRExFMUJSVVJCTEVWQlFWRXNSMEZCUjBNc1kwRkhia0lzVTBGQlUwTXNWMEZCVjBZc1IwRkRia0lzVDBGQlQwRXNSVUZCVVVjc1QwRkJUME1zVTBGQlUwTXNTVUZCU1VNc1RVRkJUU3hKUVVjeFF5eFRRVUZUUXl4TlFVRk5VQ3hIUVVOa0xFOUJRVTlCTEVWQlFWRkhMRTlCUVU5TExFMUJRVTFJTEVsQlFVbERMRTFCUVUwc1NVRkJTU3hIUVVjelF5eFRRVUZUUVN4TlFVRk5SeXhGUVVGSFF5eEhRVU5xUWl4UFFVRlBReXhIUVVGUFFTeEZRVUZKVEN4TlFVRk5SeXhGUVVGSFF5eEhRVWMxUWl4VFFVRlRSaXhMUVVGTFNTeEhRVU5pTEUxQlFXdENMRTFCUVZoQkxFVkJRVWtzUjBGSFdpeFRRVUZUVWl4UlFVRlJVU3hIUVVOb1FpeE5RVUZyUWl4TlFVRllRU3hGUVVGSkxFZEJjRU5hUXl4UlFVRlJReXhwUWtGQmJVSXNRMEZCUTBNc1NVRkRNMElzVFVGQlRXWXNSVUZCVldVc1JVRkJVME1zVFVGQlRXeENMR2RDUVVNdlFpeEpRVUZMUlN4RlFVTktMRTFCUVUwc1NVRkJTV2xDTEhGR1FVRnhSa1lzVFVGRmFFY3NUVUZCVHl4RFFVTk9SeXhKUVVGTGJrSXNUMEZCVDBNc1IwRkRXbTFDTEVkQlFVbGFMRTFCUVUxUUxFZEJRMVp2UWl4UlFVRlRiRUlzVjBGQlYwWWlMQ0ptYVd4bElqb2lSVHBjWEhkdmNtdHpjR0ZqWlZ4Y2QybHJhV0V0YVhNdFlXNXpkMlZ5WldSY1hHNXZaR1ZmYlc5a2RXeGxjMXhjYUhsd1pYSnpZM0pwY0hRdGMzUnlhVzVuWEZ4emNtTmNYSFYwYVd4ekxtcHpJbjA9IiwiXCJ1c2Ugc3RyaWN0XCI7dmFyIGlzT2JqZWN0PXJlcXVpcmUoXCJpc29iamVjdFwiKTtmdW5jdGlvbiBpc09iamVjdE9iamVjdCh0KXtyZXR1cm4hMD09PWlzT2JqZWN0KHQpJiZcIltvYmplY3QgT2JqZWN0XVwiPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpfW1vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBlLGM7cmV0dXJuITEhPT1pc09iamVjdE9iamVjdCh0KSYmKFwiZnVuY3Rpb25cIj09dHlwZW9mKGU9dC5jb25zdHJ1Y3RvcikmJighMSE9PWlzT2JqZWN0T2JqZWN0KGM9ZS5wcm90b3R5cGUpJiYhMSE9PWMuaGFzT3duUHJvcGVydHkoXCJpc1Byb3RvdHlwZU9mXCIpKSl9O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1sdVpHVjRMbXB6SWwwc0ltNWhiV1Z6SWpwYkltbHpUMkpxWldOMElpd2ljbVZ4ZFdseVpTSXNJbWx6VDJKcVpXTjBUMkpxWldOMElpd2lieUlzSWs5aWFtVmpkQ0lzSW5CeWIzUnZkSGx3WlNJc0luUnZVM1J5YVc1bklpd2lZMkZzYkNJc0ltMXZaSFZzWlNJc0ltVjRjRzl5ZEhNaUxDSmpkRzl5SWl3aWNISnZkQ0lzSW1OdmJuTjBjblZqZEc5eUlpd2lhR0Z6VDNkdVVISnZjR1Z5ZEhraVhTd2liV0Z3Y0dsdVozTWlPaUpCUVU5QkxHRkJSVUVzU1VGQlNVRXNVMEZCVjBNc1VVRkJVU3haUVVWMlFpeFRRVUZUUXl4bFFVRmxReXhIUVVOMFFpeFBRVUYxUWl4SlFVRm9Ra2dzVTBGQlUwY3NTVUZETWtJc2IwSkJRWFJEUXl4UFFVRlBReXhWUVVGVlF5eFRRVUZUUXl4TFFVRkxTaXhIUVVkMFEwc3NUMEZCVDBNc1VVRkJWU3hUUVVGMVFrNHNSMEZEZEVNc1NVRkJTVThzUlVGQlMwTXNSVUZGVkN4UFFVRXdRaXhKUVVGMFFsUXNaVUZCWlVNc1MwRkpReXh0UWtGRWNFSlBMRVZCUVU5UUxFVkJRVVZUTEdkQ1FVdHZRaXhKUVVGNlFsWXNaVUZFU2xNc1JVRkJUMFFzUlVGQlMwd3NZVUZKYVVNc1NVRkJla05OTEVWQlFVdEZMR1ZCUVdVaUxDSm1hV3hsSWpvaVJUcGNYSGR2Y210emNHRmpaVnhjZDJscmFXRXRhWE10WVc1emQyVnlaV1JjWEc1dlpHVmZiVzlrZFd4bGMxeGNhWE10Y0d4aGFXNHRiMkpxWldOMFhGeHBibVJsZUM1cWN5SjkiLCJcInVzZSBzdHJpY3RcIjttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihyKXtyZXR1cm4gbnVsbCE9ciYmXCJvYmplY3RcIj09dHlwZW9mIHImJiExPT09QXJyYXkuaXNBcnJheShyKX07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbWx1WkdWNExtcHpJbDBzSW01aGJXVnpJanBiSW0xdlpIVnNaU0lzSW1WNGNHOXlkSE1pTENKMllXd2lMQ0pCY25KaGVTSXNJbWx6UVhKeVlYa2lYU3dpYldGd2NHbHVaM01pT2lKQlFVOUJMR0ZCUlVGQkxFOUJRVTlETEZGQlFWVXNVMEZCYTBKRExFZEJRMnBETEU5QlFXTXNUVUZCVUVFc1IwRkJPRUlzYVVKQlFWSkJMRWxCUVRKRExFbEJRWFpDUXl4TlFVRk5ReXhSUVVGUlJpSXNJbVpwYkdVaU9pSkZPbHhjZDI5eWEzTndZV05sWEZ4M2FXdHBZUzFwY3kxaGJuTjNaWEpsWkZ4Y2JtOWtaVjl0YjJSMWJHVnpYRnhwYzI5aWFtVmpkRnhjYVc1a1pYZ3Vhbk1pZlE9PSIsIihmdW5jdGlvbigpe3ZhciB0LGUsaSxuLHMscj1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19LG89W10uc2xpY2UsbD17fS5oYXNPd25Qcm9wZXJ0eSx1PWZ1bmN0aW9uKHQsZSl7Zm9yKHZhciBpIGluIGUpbC5jYWxsKGUsaSkmJih0W2ldPWVbaV0pO2Z1bmN0aW9uIG4oKXt0aGlzLmNvbnN0cnVjdG9yPXR9cmV0dXJuIG4ucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyBuLHQuX19zdXBlcl9fPWUucHJvdG90eXBlLHR9LGg9W10uaW5kZXhPZnx8ZnVuY3Rpb24odCl7Zm9yKHZhciBlPTAsaT10aGlzLmxlbmd0aDtlPGk7ZSsrKWlmKGUgaW4gdGhpcyYmdGhpc1tlXT09PXQpcmV0dXJuIGU7cmV0dXJuLTF9O3Q9e29wdGlvbnM6W1wicHJlZml4XCIsXCJ0ZW1wbGF0ZURlbGltaXRlcnNcIixcInJvb3RJbnRlcmZhY2VcIixcInByZWxvYWREYXRhXCIsXCJoYW5kbGVyXCIsXCJleGVjdXRlRnVuY3Rpb25zXCJdLGV4dGVuc2lvbnM6W1wiYmluZGVyc1wiLFwiZm9ybWF0dGVyc1wiLFwiY29tcG9uZW50c1wiLFwiYWRhcHRlcnNcIl0scHVibGljOntiaW5kZXJzOnt9LGNvbXBvbmVudHM6e30sZm9ybWF0dGVyczp7fSxhZGFwdGVyczp7fSxwcmVmaXg6XCJydlwiLHRlbXBsYXRlRGVsaW1pdGVyczpbXCJ7XCIsXCJ9XCJdLHJvb3RJbnRlcmZhY2U6XCIuXCIscHJlbG9hZERhdGE6ITAsZXhlY3V0ZUZ1bmN0aW9uczohMSxpdGVyYXRpb25BbGlhczpmdW5jdGlvbih0KXtyZXR1cm5cIiVcIit0K1wiJVwifSxoYW5kbGVyOmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdGhpcy5jYWxsKHQsZSxpLnZpZXcubW9kZWxzKX0sY29uZmlndXJlOmZ1bmN0aW9uKGUpe3ZhciBpLG4scyxyO2ZvcihzIGluIG51bGw9PWUmJihlPXt9KSxlKWlmKHI9ZVtzXSxcImJpbmRlcnNcIj09PXN8fFwiY29tcG9uZW50c1wiPT09c3x8XCJmb3JtYXR0ZXJzXCI9PT1zfHxcImFkYXB0ZXJzXCI9PT1zKWZvcihuIGluIHIpaT1yW25dLHRbc11bbl09aTtlbHNlIHQucHVibGljW3NdPXJ9LGJpbmQ6ZnVuY3Rpb24oZSxpLG4pe3ZhciBzO3JldHVybiBudWxsPT1pJiYoaT17fSksbnVsbD09biYmKG49e30pLChzPW5ldyB0LlZpZXcoZSxpLG4pKS5iaW5kKCksc30saW5pdDpmdW5jdGlvbihlLGksbil7dmFyIHMscixvO2lmKG51bGw9PW4mJihuPXt9KSxudWxsPT1pJiYoaT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpKSwocj0oZT10LnB1YmxpYy5jb21wb25lbnRzW2VdKS50ZW1wbGF0ZS5jYWxsKHRoaXMsaSkpaW5zdGFuY2VvZiBIVE1MRWxlbWVudCl7Zm9yKDtpLmZpcnN0Q2hpbGQ7KWkucmVtb3ZlQ2hpbGQoaS5maXJzdENoaWxkKTtpLmFwcGVuZENoaWxkKHIpfWVsc2UgaS5pbm5lckhUTUw9cjtyZXR1cm4gcz1lLmluaXRpYWxpemUuY2FsbCh0aGlzLGksbiksKG89bmV3IHQuVmlldyhpLHMpKS5iaW5kKCksb319fSx3aW5kb3cualF1ZXJ5fHx3aW5kb3cuJD8ocz1cIm9uXCJpbihpPXdpbmRvdy5qUXVlcnl8fHdpbmRvdy4kKS5wcm90b3R5cGU/W1wib25cIixcIm9mZlwiXTpbXCJiaW5kXCIsXCJ1bmJpbmRcIl0sZT1zWzBdLG49c1sxXSx0LlV0aWw9e2JpbmRFdmVudDpmdW5jdGlvbih0LG4scyl7cmV0dXJuIGkodClbZV0obixzKX0sdW5iaW5kRXZlbnQ6ZnVuY3Rpb24odCxlLHMpe3JldHVybiBpKHQpW25dKGUscyl9LGdldElucHV0VmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuXCJjaGVja2JveFwiPT09KGU9aSh0KSkuYXR0cihcInR5cGVcIik/ZS5pcyhcIjpjaGVja2VkXCIpOmUudmFsKCl9fSk6dC5VdGlsPXtiaW5kRXZlbnQ6XCJhZGRFdmVudExpc3RlbmVyXCJpbiB3aW5kb3c/ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0LmFkZEV2ZW50TGlzdGVuZXIoZSxpLCExKX06ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0LmF0dGFjaEV2ZW50KFwib25cIitlLGkpfSx1bmJpbmRFdmVudDpcInJlbW92ZUV2ZW50TGlzdGVuZXJcImluIHdpbmRvdz9mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLGksITEpfTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQuZGV0YWNoRXZlbnQoXCJvblwiK2UsaSl9LGdldElucHV0VmFsdWU6ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHM7aWYoXCJjaGVja2JveFwiPT09dC50eXBlKXJldHVybiB0LmNoZWNrZWQ7aWYoXCJzZWxlY3QtbXVsdGlwbGVcIj09PXQudHlwZSl7Zm9yKHM9W10saT0wLG49dC5sZW5ndGg7aTxuO2krKykoZT10W2ldKS5zZWxlY3RlZCYmcy5wdXNoKGUudmFsdWUpO3JldHVybiBzfXJldHVybiB0LnZhbHVlfX0sdC5UeXBlUGFyc2VyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC50eXBlcz17cHJpbWl0aXZlOjAsa2V5cGF0aDoxfSx0LnBhcnNlPWZ1bmN0aW9uKHQpe3JldHVybi9eJy4qJyR8XlwiLipcIiQvLnRlc3QodCk/e3R5cGU6dGhpcy50eXBlcy5wcmltaXRpdmUsdmFsdWU6dC5zbGljZSgxLC0xKX06XCJ0cnVlXCI9PT10P3t0eXBlOnRoaXMudHlwZXMucHJpbWl0aXZlLHZhbHVlOiEwfTpcImZhbHNlXCI9PT10P3t0eXBlOnRoaXMudHlwZXMucHJpbWl0aXZlLHZhbHVlOiExfTpcIm51bGxcIj09PXQ/e3R5cGU6dGhpcy50eXBlcy5wcmltaXRpdmUsdmFsdWU6bnVsbH06XCJ1bmRlZmluZWRcIj09PXQ/e3R5cGU6dGhpcy50eXBlcy5wcmltaXRpdmUsdmFsdWU6dm9pZCAwfTpcIlwiPT09dD97dHlwZTp0aGlzLnR5cGVzLnByaW1pdGl2ZSx2YWx1ZTp2b2lkIDB9OiExPT09aXNOYU4oTnVtYmVyKHQpKT97dHlwZTp0aGlzLnR5cGVzLnByaW1pdGl2ZSx2YWx1ZTpOdW1iZXIodCl9Ont0eXBlOnRoaXMudHlwZXMua2V5cGF0aCx2YWx1ZTp0fX0sdH0oKSx0LlRleHRUZW1wbGF0ZVBhcnNlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIHQudHlwZXM9e3RleHQ6MCxiaW5kaW5nOjF9LHQucGFyc2U9ZnVuY3Rpb24odCxlKXt2YXIgaSxuLHMscixvLGwsdTtmb3IobD1bXSxyPXQubGVuZ3RoLGk9MCxuPTA7bjxyOyl7aWYoKGk9dC5pbmRleE9mKGVbMF0sbikpPDApe2wucHVzaCh7dHlwZTp0aGlzLnR5cGVzLnRleHQsdmFsdWU6dC5zbGljZShuKX0pO2JyZWFrfWlmKGk+MCYmbjxpJiZsLnB1c2goe3R5cGU6dGhpcy50eXBlcy50ZXh0LHZhbHVlOnQuc2xpY2UobixpKX0pLG49aStlWzBdLmxlbmd0aCwoaT10LmluZGV4T2YoZVsxXSxuKSk8MCl7bz10LnNsaWNlKG4tZVsxXS5sZW5ndGgpLChudWxsIT0ocz1sW2wubGVuZ3RoLTFdKT9zLnR5cGU6dm9pZCAwKT09PXRoaXMudHlwZXMudGV4dD9zLnZhbHVlKz1vOmwucHVzaCh7dHlwZTp0aGlzLnR5cGVzLnRleHQsdmFsdWU6b30pO2JyZWFrfXU9dC5zbGljZShuLGkpLnRyaW0oKSxsLnB1c2goe3R5cGU6dGhpcy50eXBlcy5iaW5kaW5nLHZhbHVlOnV9KSxuPWkrZVsxXS5sZW5ndGh9cmV0dXJuIGx9LHR9KCksdC5WaWV3PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLGksbil7dmFyIHMsbyxsLHUsaCxhLHAsZCxjLGYsYix2LG07Zm9yKHRoaXMuZWxzPWUsdGhpcy5tb2RlbHM9aSxudWxsPT1uJiYobj17fSksdGhpcy51cGRhdGU9cih0aGlzLnVwZGF0ZSx0aGlzKSx0aGlzLnB1Ymxpc2g9cih0aGlzLnB1Ymxpc2gsdGhpcyksdGhpcy5zeW5jPXIodGhpcy5zeW5jLHRoaXMpLHRoaXMudW5iaW5kPXIodGhpcy51bmJpbmQsdGhpcyksdGhpcy5iaW5kPXIodGhpcy5iaW5kLHRoaXMpLHRoaXMuc2VsZWN0PXIodGhpcy5zZWxlY3QsdGhpcyksdGhpcy50cmF2ZXJzZT1yKHRoaXMudHJhdmVyc2UsdGhpcyksdGhpcy5idWlsZD1yKHRoaXMuYnVpbGQsdGhpcyksdGhpcy5idWlsZEJpbmRpbmc9cih0aGlzLmJ1aWxkQmluZGluZyx0aGlzKSx0aGlzLmJpbmRpbmdSZWdFeHA9cih0aGlzLmJpbmRpbmdSZWdFeHAsdGhpcyksdGhpcy5vcHRpb25zPXIodGhpcy5vcHRpb25zLHRoaXMpLHRoaXMuZWxzLmpxdWVyeXx8dGhpcy5lbHMgaW5zdGFuY2VvZiBBcnJheXx8KHRoaXMuZWxzPVt0aGlzLmVsc10pLGg9MCxwPShjPXQuZXh0ZW5zaW9ucykubGVuZ3RoO2g8cDtoKyspe2lmKHRoaXNbbz1jW2hdXT17fSxuW29dKWZvcihzIGluIGY9bltvXSlsPWZbc10sdGhpc1tvXVtzXT1sO2ZvcihzIGluIGI9dC5wdWJsaWNbb10pbD1iW3NdLG51bGw9PSh1PXRoaXNbb10pW3NdJiYodVtzXT1sKX1mb3IoYT0wLGQ9KHY9dC5vcHRpb25zKS5sZW5ndGg7YTxkO2ErKyl0aGlzW289dlthXV09bnVsbCE9KG09bltvXSk/bTp0LnB1YmxpY1tvXTt0aGlzLmJ1aWxkKCl9cmV0dXJuIGUucHJvdG90eXBlLm9wdGlvbnM9ZnVuY3Rpb24oKXt2YXIgZSxpLG4scyxyO2ZvcihpPXt9LG49MCxzPShyPXQuZXh0ZW5zaW9ucy5jb25jYXQodC5vcHRpb25zKSkubGVuZ3RoO248cztuKyspaVtlPXJbbl1dPXRoaXNbZV07cmV0dXJuIGl9LGUucHJvdG90eXBlLmJpbmRpbmdSZWdFeHA9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFJlZ0V4cChcIl5cIit0aGlzLnByZWZpeCtcIi1cIil9LGUucHJvdG90eXBlLmJ1aWxkQmluZGluZz1mdW5jdGlvbihlLGksbixzKXt2YXIgcixvLGwsdSxoLGEscDtyZXR1cm4gaD17fSxwPWZ1bmN0aW9uKCl7dmFyIHQsZSxpLG47Zm9yKG49W10sdD0wLGU9KGk9cy5tYXRjaCgvKCg/OidbXiddKicpKig/Oig/OlteXFx8J10qKD86J1teJ10qJykrW15cXHwnXSopK3xbXlxcfF0rKSl8XiQvZykpLmxlbmd0aDt0PGU7dCsrKWE9aVt0XSxuLnB1c2goYS50cmltKCkpO3JldHVybiBufSgpLHU9KHI9ZnVuY3Rpb24oKXt2YXIgdCxlLGksbjtmb3Iobj1bXSx0PTAsZT0oaT1wLnNoaWZ0KCkuc3BsaXQoXCI8XCIpKS5sZW5ndGg7dDxlO3QrKylvPWlbdF0sbi5wdXNoKG8udHJpbSgpKTtyZXR1cm4gbn0oKSkuc2hpZnQoKSxoLmZvcm1hdHRlcnM9cCwobD1yLnNoaWZ0KCkpJiYoaC5kZXBlbmRlbmNpZXM9bC5zcGxpdCgvXFxzKy8pKSx0aGlzLmJpbmRpbmdzLnB1c2gobmV3IHRbZV0odGhpcyxpLG4sdSxoKSl9LGUucHJvdG90eXBlLmJ1aWxkPWZ1bmN0aW9uKCl7dmFyIGUsaSxuLHMscixvO2Zvcih0aGlzLmJpbmRpbmdzPVtdLG89dGhpcyxpPWZ1bmN0aW9uKGUpe3ZhciBuLHMscixsLHUsaCxhLHAsZCxjLGYsYix2O2lmKDM9PT1lLm5vZGVUeXBlKXtpZih1PXQuVGV4dFRlbXBsYXRlUGFyc2VyLChyPW8udGVtcGxhdGVEZWxpbWl0ZXJzKSYmKHA9dS5wYXJzZShlLmRhdGEscikpLmxlbmd0aCYmKDEhPT1wLmxlbmd0aHx8cFswXS50eXBlIT09dS50eXBlcy50ZXh0KSl7Zm9yKGQ9MCxmPXAubGVuZ3RoO2Q8ZjtkKyspYT1wW2RdLGg9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoYS52YWx1ZSksZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShoLGUpLDE9PT1hLnR5cGUmJm8uYnVpbGRCaW5kaW5nKFwiVGV4dEJpbmRpbmdcIixoLG51bGwsYS52YWx1ZSk7ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfX1lbHNlIDE9PT1lLm5vZGVUeXBlJiYobj1vLnRyYXZlcnNlKGUpKTtpZighbilmb3Iodj1mdW5jdGlvbigpe3ZhciB0LGksbixzO2ZvcihzPVtdLHQ9MCxpPShuPWUuY2hpbGROb2RlcykubGVuZ3RoO3Q8aTt0KyspbD1uW3RdLHMucHVzaChsKTtyZXR1cm4gc30oKSxjPTAsYj12Lmxlbmd0aDtjPGI7YysrKXM9dltjXSxpKHMpfSxuPTAscz0ocj10aGlzLmVscykubGVuZ3RoO248cztuKyspZT1yW25dLGkoZSk7dGhpcy5iaW5kaW5ncy5zb3J0KGZ1bmN0aW9uKHQsZSl7dmFyIGksbjtyZXR1cm4oKG51bGwhPShpPWUuYmluZGVyKT9pLnByaW9yaXR5OnZvaWQgMCl8fDApLSgobnVsbCE9KG49dC5iaW5kZXIpP24ucHJpb3JpdHk6dm9pZCAwKXx8MCl9KX0sZS5wcm90b3R5cGUudHJhdmVyc2U9ZnVuY3Rpb24oZSl7dmFyIGksbixzLHIsbyxsLHUsaCxhLHAsZCxjLGYsYix2O2ZvcihyPXRoaXMuYmluZGluZ1JlZ0V4cCgpLG89XCJTQ1JJUFRcIj09PWUubm9kZU5hbWV8fFwiU1RZTEVcIj09PWUubm9kZU5hbWUsYT0wLGQ9KGY9ZS5hdHRyaWJ1dGVzKS5sZW5ndGg7YTxkO2ErKylpZihpPWZbYV0sci50ZXN0KGkubmFtZSkpe2lmKHU9aS5uYW1lLnJlcGxhY2UocixcIlwiKSwhKHM9dGhpcy5iaW5kZXJzW3VdKSlmb3IobCBpbiBiPXRoaXMuYmluZGVycyloPWJbbF0sXCIqXCIhPT1sJiYtMSE9PWwuaW5kZXhPZihcIipcIikmJm5ldyBSZWdFeHAoXCJeXCIrbC5yZXBsYWNlKC9cXCovZyxcIi4rXCIpK1wiJFwiKS50ZXN0KHUpJiYocz1oKTtzfHwocz10aGlzLmJpbmRlcnNbXCIqXCJdKSxzLmJsb2NrJiYobz0hMCxuPVtpXSl9Zm9yKHA9MCxjPSh2PW58fGUuYXR0cmlidXRlcykubGVuZ3RoO3A8YztwKyspaT12W3BdLHIudGVzdChpLm5hbWUpJiYodT1pLm5hbWUucmVwbGFjZShyLFwiXCIpLHRoaXMuYnVpbGRCaW5kaW5nKFwiQmluZGluZ1wiLGUsdSxpLnZhbHVlKSk7cmV0dXJuIG98fCh1PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSx0aGlzLmNvbXBvbmVudHNbdV0mJiFlLl9ib3VuZCYmKHRoaXMuYmluZGluZ3MucHVzaChuZXcgdC5Db21wb25lbnRCaW5kaW5nKHRoaXMsZSx1KSksbz0hMCkpLG99LGUucHJvdG90eXBlLnNlbGVjdD1mdW5jdGlvbih0KXt2YXIgZSxpLG4scyxyO2ZvcihyPVtdLGk9MCxuPShzPXRoaXMuYmluZGluZ3MpLmxlbmd0aDtpPG47aSsrKXQoZT1zW2ldKSYmci5wdXNoKGUpO3JldHVybiByfSxlLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dmFyIHQsZSxpO2Zvcih0PTAsZT0oaT10aGlzLmJpbmRpbmdzKS5sZW5ndGg7dDxlO3QrKylpW3RdLmJpbmQoKX0sZS5wcm90b3R5cGUudW5iaW5kPWZ1bmN0aW9uKCl7dmFyIHQsZSxpO2Zvcih0PTAsZT0oaT10aGlzLmJpbmRpbmdzKS5sZW5ndGg7dDxlO3QrKylpW3RdLnVuYmluZCgpfSxlLnByb3RvdHlwZS5zeW5jPWZ1bmN0aW9uKCl7dmFyIHQsZSxpLG47Zm9yKGU9MCxpPShuPXRoaXMuYmluZGluZ3MpLmxlbmd0aDtlPGk7ZSsrKVwiZnVuY3Rpb25cIj09dHlwZW9mKHQ9bltlXSkuc3luYyYmdC5zeW5jKCl9LGUucHJvdG90eXBlLnB1Ymxpc2g9ZnVuY3Rpb24oKXt2YXIgdCxlLGk7Zm9yKHQ9MCxlPShpPXRoaXMuc2VsZWN0KGZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsIT0oZT10LmJpbmRlcik/ZS5wdWJsaXNoZXM6dm9pZCAwfSkpLmxlbmd0aDt0PGU7dCsrKWlbdF0ucHVibGlzaCgpfSxlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGUsaSxuLHMscixvO2ZvcihpIGluIG51bGw9PXQmJih0PXt9KSx0KW49dFtpXSx0aGlzLm1vZGVsc1tpXT1uO2ZvcihzPTAscj0obz10aGlzLmJpbmRpbmdzKS5sZW5ndGg7czxyO3MrKylcImZ1bmN0aW9uXCI9PXR5cGVvZihlPW9bc10pLnVwZGF0ZSYmZS51cGRhdGUodCl9LGV9KCksdC5CaW5kaW5nPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0LGUsaSxuLHMpe3RoaXMudmlldz10LHRoaXMuZWw9ZSx0aGlzLnR5cGU9aSx0aGlzLmtleXBhdGg9bix0aGlzLm9wdGlvbnM9bnVsbCE9cz9zOnt9LHRoaXMuZ2V0VmFsdWU9cih0aGlzLmdldFZhbHVlLHRoaXMpLHRoaXMudXBkYXRlPXIodGhpcy51cGRhdGUsdGhpcyksdGhpcy51bmJpbmQ9cih0aGlzLnVuYmluZCx0aGlzKSx0aGlzLmJpbmQ9cih0aGlzLmJpbmQsdGhpcyksdGhpcy5wdWJsaXNoPXIodGhpcy5wdWJsaXNoLHRoaXMpLHRoaXMuc3luYz1yKHRoaXMuc3luYyx0aGlzKSx0aGlzLnNldD1yKHRoaXMuc2V0LHRoaXMpLHRoaXMuZXZlbnRIYW5kbGVyPXIodGhpcy5ldmVudEhhbmRsZXIsdGhpcyksdGhpcy5mb3JtYXR0ZWRWYWx1ZT1yKHRoaXMuZm9ybWF0dGVkVmFsdWUsdGhpcyksdGhpcy5wYXJzZUZvcm1hdHRlckFyZ3VtZW50cz1yKHRoaXMucGFyc2VGb3JtYXR0ZXJBcmd1bWVudHMsdGhpcyksdGhpcy5wYXJzZVRhcmdldD1yKHRoaXMucGFyc2VUYXJnZXQsdGhpcyksdGhpcy5vYnNlcnZlPXIodGhpcy5vYnNlcnZlLHRoaXMpLHRoaXMuc2V0QmluZGVyPXIodGhpcy5zZXRCaW5kZXIsdGhpcyksdGhpcy5mb3JtYXR0ZXJzPXRoaXMub3B0aW9ucy5mb3JtYXR0ZXJzfHxbXSx0aGlzLmRlcGVuZGVuY2llcz1bXSx0aGlzLmZvcm1hdHRlck9ic2VydmVycz17fSx0aGlzLm1vZGVsPXZvaWQgMCx0aGlzLnNldEJpbmRlcigpfXJldHVybiBlLnByb3RvdHlwZS5zZXRCaW5kZXI9ZnVuY3Rpb24oKXt2YXIgdCxlLGk7aWYoISh0aGlzLmJpbmRlcj10aGlzLnZpZXcuYmluZGVyc1t0aGlzLnR5cGVdKSlmb3IodCBpbiBpPXRoaXMudmlldy5iaW5kZXJzKWU9aVt0XSxcIipcIiE9PXQmJi0xIT09dC5pbmRleE9mKFwiKlwiKSYmbmV3IFJlZ0V4cChcIl5cIit0LnJlcGxhY2UoL1xcKi9nLFwiLitcIikrXCIkXCIpLnRlc3QodGhpcy50eXBlKSYmKHRoaXMuYmluZGVyPWUsdGhpcy5hcmdzPW5ldyBSZWdFeHAoXCJeXCIrdC5yZXBsYWNlKC9cXCovZyxcIiguKylcIikrXCIkXCIpLmV4ZWModGhpcy50eXBlKSx0aGlzLmFyZ3Muc2hpZnQoKSk7aWYodGhpcy5iaW5kZXJ8fCh0aGlzLmJpbmRlcj10aGlzLnZpZXcuYmluZGVyc1tcIipcIl0pLHRoaXMuYmluZGVyIGluc3RhbmNlb2YgRnVuY3Rpb24pcmV0dXJuIHRoaXMuYmluZGVyPXtyb3V0aW5lOnRoaXMuYmluZGVyfX0sZS5wcm90b3R5cGUub2JzZXJ2ZT1mdW5jdGlvbihlLGksbil7cmV0dXJuIHQuc2lnaHRnbGFzcyhlLGksbix7cm9vdDp0aGlzLnZpZXcucm9vdEludGVyZmFjZSxhZGFwdGVyczp0aGlzLnZpZXcuYWRhcHRlcnN9KX0sZS5wcm90b3R5cGUucGFyc2VUYXJnZXQ9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4oZT10LlR5cGVQYXJzZXIucGFyc2UodGhpcy5rZXlwYXRoKSkudHlwZT09PXQuVHlwZVBhcnNlci50eXBlcy5wcmltaXRpdmU/dGhpcy52YWx1ZT1lLnZhbHVlOih0aGlzLm9ic2VydmVyPXRoaXMub2JzZXJ2ZSh0aGlzLnZpZXcubW9kZWxzLHRoaXMua2V5cGF0aCx0aGlzLnN5bmMpLHRoaXMubW9kZWw9dGhpcy5vYnNlcnZlci50YXJnZXQpfSxlLnByb3RvdHlwZS5wYXJzZUZvcm1hdHRlckFyZ3VtZW50cz1mdW5jdGlvbihlLGkpe3ZhciBuLHMscixvLGwsdSxoO2ZvcihlPWZ1bmN0aW9uKCl7dmFyIGksbixyO2ZvcihyPVtdLGk9MCxuPWUubGVuZ3RoO2k8bjtpKyspcz1lW2ldLHIucHVzaCh0LlR5cGVQYXJzZXIucGFyc2UocykpO3JldHVybiByfSgpLG89W10sbj11PTAsaD1lLmxlbmd0aDt1PGg7bj0rK3Upcz1lW25dLG8ucHVzaChzLnR5cGU9PT10LlR5cGVQYXJzZXIudHlwZXMucHJpbWl0aXZlP3MudmFsdWU6KChsPXRoaXMuZm9ybWF0dGVyT2JzZXJ2ZXJzKVtpXXx8KGxbaV09e30pLChyPXRoaXMuZm9ybWF0dGVyT2JzZXJ2ZXJzW2ldW25dKXx8KHI9dGhpcy5vYnNlcnZlKHRoaXMudmlldy5tb2RlbHMscy52YWx1ZSx0aGlzLnN5bmMpLHRoaXMuZm9ybWF0dGVyT2JzZXJ2ZXJzW2ldW25dPXIpLHIudmFsdWUoKSkpO3JldHVybiBvfSxlLnByb3RvdHlwZS5mb3JtYXR0ZWRWYWx1ZT1mdW5jdGlvbih0KXt2YXIgZSxpLG4scyxyLGwsdSxoLGE7Zm9yKGk9bD0wLHU9KGg9dGhpcy5mb3JtYXR0ZXJzKS5sZW5ndGg7bDx1O2k9KytsKXM9KGU9KG49aFtpXSkubWF0Y2goL1teXFxzJ10rfCcoW14nXXwnW15cXHNdKSonfFwiKFteXCJdfFwiW15cXHNdKSpcIi9nKSkuc2hpZnQoKSxuPXRoaXMudmlldy5mb3JtYXR0ZXJzW3NdLHI9dGhpcy5wYXJzZUZvcm1hdHRlckFyZ3VtZW50cyhlLGkpLChudWxsIT1uP24ucmVhZDp2b2lkIDApaW5zdGFuY2VvZiBGdW5jdGlvbj90PShhPW4ucmVhZCkuY2FsbC5hcHBseShhLFt0aGlzLm1vZGVsLHRdLmNvbmNhdChvLmNhbGwocikpKTpuIGluc3RhbmNlb2YgRnVuY3Rpb24mJih0PW4uY2FsbC5hcHBseShuLFt0aGlzLm1vZGVsLHRdLmNvbmNhdChvLmNhbGwocikpKSk7cmV0dXJuIHR9LGUucHJvdG90eXBlLmV2ZW50SGFuZGxlcj1mdW5jdGlvbih0KXt2YXIgZSxpO3JldHVybiBpPShlPXRoaXMpLnZpZXcuaGFuZGxlcixmdW5jdGlvbihuKXtyZXR1cm4gaS5jYWxsKHQsdGhpcyxuLGUpfX0sZS5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUpe3ZhciBpO3JldHVybiBlPWUgaW5zdGFuY2VvZiBGdW5jdGlvbiYmIXRoaXMuYmluZGVyLmZ1bmN0aW9uJiZ0LnB1YmxpYy5leGVjdXRlRnVuY3Rpb25zP3RoaXMuZm9ybWF0dGVkVmFsdWUoZS5jYWxsKHRoaXMubW9kZWwpKTp0aGlzLmZvcm1hdHRlZFZhbHVlKGUpLG51bGwhPShpPXRoaXMuYmluZGVyLnJvdXRpbmUpP2kuY2FsbCh0aGlzLHRoaXMuZWwsZSk6dm9pZCAwfSxlLnByb3RvdHlwZS5zeW5jPWZ1bmN0aW9uKCl7dmFyIHQsZTtyZXR1cm4gdGhpcy5zZXQoZnVuY3Rpb24oKXt2YXIgaSxuLHMscixvLGwsdTtpZih0aGlzLm9ic2VydmVyKXtpZih0aGlzLm1vZGVsIT09dGhpcy5vYnNlcnZlci50YXJnZXQpe2ZvcihpPTAscz0obz10aGlzLmRlcGVuZGVuY2llcykubGVuZ3RoO2k8cztpKyspKGU9b1tpXSkudW5vYnNlcnZlKCk7aWYodGhpcy5kZXBlbmRlbmNpZXM9W10sbnVsbCE9KHRoaXMubW9kZWw9dGhpcy5vYnNlcnZlci50YXJnZXQpJiYobnVsbCE9KGw9dGhpcy5vcHRpb25zLmRlcGVuZGVuY2llcyk/bC5sZW5ndGg6dm9pZCAwKSlmb3Iobj0wLHI9KHU9dGhpcy5vcHRpb25zLmRlcGVuZGVuY2llcykubGVuZ3RoO248cjtuKyspdD11W25dLGU9dGhpcy5vYnNlcnZlKHRoaXMubW9kZWwsdCx0aGlzLnN5bmMpLHRoaXMuZGVwZW5kZW5jaWVzLnB1c2goZSl9cmV0dXJuIHRoaXMub2JzZXJ2ZXIudmFsdWUoKX1yZXR1cm4gdGhpcy52YWx1ZX0uY2FsbCh0aGlzKSl9LGUucHJvdG90eXBlLnB1Ymxpc2g9ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixzLHIsbCx1LGgsYSxwLGQ7aWYodGhpcy5vYnNlcnZlcil7Zm9yKGw9dGhpcy5nZXRWYWx1ZSh0aGlzLmVsKSxzPXRoaXMuZm9ybWF0dGVycy5sZW5ndGgtMSxpPXU9MCxoPShhPXRoaXMuZm9ybWF0dGVycy5zbGljZSgwKS5yZXZlcnNlKCkpLmxlbmd0aDt1PGg7aT0rK3UpZT1zLWksbj0odD1hW2ldLnNwbGl0KC9cXHMrLykpLnNoaWZ0KCkscj10aGlzLnBhcnNlRm9ybWF0dGVyQXJndW1lbnRzKHQsZSksKG51bGwhPShwPXRoaXMudmlldy5mb3JtYXR0ZXJzW25dKT9wLnB1Ymxpc2g6dm9pZCAwKSYmKGw9KGQ9dGhpcy52aWV3LmZvcm1hdHRlcnNbbl0pLnB1Ymxpc2guYXBwbHkoZCxbbF0uY29uY2F0KG8uY2FsbChyKSkpKTtyZXR1cm4gdGhpcy5vYnNlcnZlci5zZXRWYWx1ZShsKX19LGUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixzLHIsbztpZih0aGlzLnBhcnNlVGFyZ2V0KCksbnVsbCE9KHM9dGhpcy5iaW5kZXIuYmluZCkmJnMuY2FsbCh0aGlzLHRoaXMuZWwpLG51bGwhPXRoaXMubW9kZWwmJihudWxsIT0ocj10aGlzLm9wdGlvbnMuZGVwZW5kZW5jaWVzKT9yLmxlbmd0aDp2b2lkIDApKWZvcihpPTAsbj0obz10aGlzLm9wdGlvbnMuZGVwZW5kZW5jaWVzKS5sZW5ndGg7aTxuO2krKyl0PW9baV0sZT10aGlzLm9ic2VydmUodGhpcy5tb2RlbCx0LHRoaXMuc3luYyksdGhpcy5kZXBlbmRlbmNpZXMucHVzaChlKTtpZih0aGlzLnZpZXcucHJlbG9hZERhdGEpcmV0dXJuIHRoaXMuc3luYygpfSxlLnByb3RvdHlwZS51bmJpbmQ9ZnVuY3Rpb24oKXt2YXIgdCxlLGksbixzLHIsbyxsLHU7Zm9yKG51bGwhPShyPXRoaXMuYmluZGVyLnVuYmluZCkmJnIuY2FsbCh0aGlzLHRoaXMuZWwpLG51bGwhPShvPXRoaXMub2JzZXJ2ZXIpJiZvLnVub2JzZXJ2ZSgpLG49MCxzPShsPXRoaXMuZGVwZW5kZW5jaWVzKS5sZW5ndGg7bjxzO24rKylsW25dLnVub2JzZXJ2ZSgpO2ZvcihpIGluIHRoaXMuZGVwZW5kZW5jaWVzPVtdLHU9dGhpcy5mb3JtYXR0ZXJPYnNlcnZlcnMpZm9yKHQgaW4gZT11W2ldKWVbdF0udW5vYnNlcnZlKCk7cmV0dXJuIHRoaXMuZm9ybWF0dGVyT2JzZXJ2ZXJzPXt9fSxlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCl7dmFyIGUsaTtyZXR1cm4gbnVsbD09dCYmKHQ9e30pLHRoaXMubW9kZWw9bnVsbCE9KGU9dGhpcy5vYnNlcnZlcik/ZS50YXJnZXQ6dm9pZCAwLG51bGwhPShpPXRoaXMuYmluZGVyLnVwZGF0ZSk/aS5jYWxsKHRoaXMsdCk6dm9pZCAwfSxlLnByb3RvdHlwZS5nZXRWYWx1ZT1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5iaW5kZXImJm51bGwhPXRoaXMuYmluZGVyLmdldFZhbHVlP3RoaXMuYmluZGVyLmdldFZhbHVlLmNhbGwodGhpcyxlKTp0LlV0aWwuZ2V0SW5wdXRWYWx1ZShlKX0sZX0oKSx0LkNvbXBvbmVudEJpbmRpbmc9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gaShlLGksbil7dmFyIHMsbyxsLHUsYSxwLGQsYztmb3IodGhpcy52aWV3PWUsdGhpcy5lbD1pLHRoaXMudHlwZT1uLHRoaXMudW5iaW5kPXIodGhpcy51bmJpbmQsdGhpcyksdGhpcy5iaW5kPXIodGhpcy5iaW5kLHRoaXMpLHRoaXMubG9jYWxzPXIodGhpcy5sb2NhbHMsdGhpcyksdGhpcy5jb21wb25lbnQ9dGhpcy52aWV3LmNvbXBvbmVudHNbdGhpcy50eXBlXSx0aGlzLnN0YXRpYz17fSx0aGlzLm9ic2VydmVycz17fSx0aGlzLnVwc3RyZWFtT2JzZXJ2ZXJzPXt9LG89ZS5iaW5kaW5nUmVnRXhwKCksYT0wLHA9KGQ9dGhpcy5lbC5hdHRyaWJ1dGVzfHxbXSkubGVuZ3RoO2E8cDthKyspcz1kW2FdLG8udGVzdChzLm5hbWUpfHwobD10aGlzLmNhbWVsQ2FzZShzLm5hbWUpLHU9dC5UeXBlUGFyc2VyLnBhcnNlKHMudmFsdWUpLGguY2FsbChudWxsIT0oYz10aGlzLmNvbXBvbmVudC5zdGF0aWMpP2M6W10sbCk+PTA/dGhpcy5zdGF0aWNbbF09cy52YWx1ZTp1LnR5cGU9PT10LlR5cGVQYXJzZXIudHlwZXMucHJpbWl0aXZlP3RoaXMuc3RhdGljW2xdPXUudmFsdWU6dGhpcy5vYnNlcnZlcnNbbF09cy52YWx1ZSl9cmV0dXJuIHUoaSxlKSxpLnByb3RvdHlwZS5zeW5jPWZ1bmN0aW9uKCl7fSxpLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt9LGkucHJvdG90eXBlLnB1Ymxpc2g9ZnVuY3Rpb24oKXt9LGkucHJvdG90eXBlLmxvY2Fscz1mdW5jdGlvbigpe3ZhciB0LGUsaSxuLHMscjtmb3IodCBpbiBpPXt9LHM9dGhpcy5zdGF0aWMpbj1zW3RdLGlbdF09bjtmb3IodCBpbiByPXRoaXMub2JzZXJ2ZXJzKWU9clt0XSxpW3RdPWUudmFsdWUoKTtyZXR1cm4gaX0saS5wcm90b3R5cGUuY2FtZWxDYXNlPWZ1bmN0aW9uKHQpe3JldHVybiB0LnJlcGxhY2UoLy0oW2Etel0pL2csZnVuY3Rpb24odCl7cmV0dXJuIHRbMV0udG9VcHBlckNhc2UoKX0pfSxpLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKCl7dmFyIGUsaSxuLHMscixvLGwsdSxoLGEscCxkLGMsZixiLHYsbSx5LGcsdztpZighdGhpcy5ib3VuZCl7Zm9yKGkgaW4gZj10aGlzLm9ic2VydmVycyluPWZbaV0sdGhpcy5vYnNlcnZlcnNbaV09dGhpcy5vYnNlcnZlKHRoaXMudmlldy5tb2RlbHMsbixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuY29tcG9uZW50Vmlldy5tb2RlbHNbZV09dC5vYnNlcnZlcnNbZV0udmFsdWUoKX19fSh0aGlzKS5jYWxsKHRoaXMsaSkpO3RoaXMuYm91bmQ9ITB9aWYobnVsbCE9dGhpcy5jb21wb25lbnRWaWV3KXRoaXMuY29tcG9uZW50Vmlldy5iaW5kKCk7ZWxzZXtmb3IodGhpcy5lbC5pbm5lckhUTUw9dGhpcy5jb21wb25lbnQudGVtcGxhdGUuY2FsbCh0aGlzKSxsPXRoaXMuY29tcG9uZW50LmluaXRpYWxpemUuY2FsbCh0aGlzLHRoaXMuZWwsdGhpcy5sb2NhbHMoKSksdGhpcy5lbC5fYm91bmQ9ITAsbz17fSxhPTAsZD0oYj10LmV4dGVuc2lvbnMpLmxlbmd0aDthPGQ7YSsrKXtpZihvW3I9YlthXV09e30sdGhpcy5jb21wb25lbnRbcl0pZm9yKGUgaW4gdj10aGlzLmNvbXBvbmVudFtyXSl1PXZbZV0sb1tyXVtlXT11O2ZvcihlIGluIG09dGhpcy52aWV3W3JdKXU9bVtlXSxudWxsPT0oaD1vW3JdKVtlXSYmKGhbZV09dSl9Zm9yKHA9MCxjPSh5PXQub3B0aW9ucykubGVuZ3RoO3A8YztwKyspb1tyPXlbcF1dPW51bGwhPShnPXRoaXMuY29tcG9uZW50W3JdKT9nOnRoaXMudmlld1tyXTtmb3IoaSBpbiB0aGlzLmNvbXBvbmVudFZpZXc9bmV3IHQuVmlldyhBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLmVsLmNoaWxkTm9kZXMpLGwsbyksdGhpcy5jb21wb25lbnRWaWV3LmJpbmQoKSx3PXRoaXMub2JzZXJ2ZXJzKXM9d1tpXSx0aGlzLnVwc3RyZWFtT2JzZXJ2ZXJzW2ldPXRoaXMub2JzZXJ2ZSh0aGlzLmNvbXBvbmVudFZpZXcubW9kZWxzLGksZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUsaSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGkuc2V0VmFsdWUodC5jb21wb25lbnRWaWV3Lm1vZGVsc1tlXSl9fX0odGhpcykuY2FsbCh0aGlzLGkscykpfX0saS5wcm90b3R5cGUudW5iaW5kPWZ1bmN0aW9uKCl7dmFyIHQsZSxpLG47Zm9yKHQgaW4gZT10aGlzLnVwc3RyZWFtT2JzZXJ2ZXJzKWVbdF0udW5vYnNlcnZlKCk7Zm9yKHQgaW4gaT10aGlzLm9ic2VydmVycylpW3RdLnVub2JzZXJ2ZSgpO3JldHVybiBudWxsIT0obj10aGlzLmNvbXBvbmVudFZpZXcpP24udW5iaW5kLmNhbGwodGhpcyk6dm9pZCAwfSxpfSh0LkJpbmRpbmcpLHQuVGV4dEJpbmRpbmc9ZnVuY3Rpb24odCl7ZnVuY3Rpb24gZSh0LGUsaSxuLHMpe3RoaXMudmlldz10LHRoaXMuZWw9ZSx0aGlzLnR5cGU9aSx0aGlzLmtleXBhdGg9bix0aGlzLm9wdGlvbnM9bnVsbCE9cz9zOnt9LHRoaXMuc3luYz1yKHRoaXMuc3luYyx0aGlzKSx0aGlzLmZvcm1hdHRlcnM9dGhpcy5vcHRpb25zLmZvcm1hdHRlcnN8fFtdLHRoaXMuZGVwZW5kZW5jaWVzPVtdLHRoaXMuZm9ybWF0dGVyT2JzZXJ2ZXJzPXt9fXJldHVybiB1KGUsdCksZS5wcm90b3R5cGUuYmluZGVyPXtyb3V0aW5lOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGF0YT1udWxsIT1lP2U6XCJcIn19LGUucHJvdG90eXBlLnN5bmM9ZnVuY3Rpb24oKXtyZXR1cm4gZS5fX3N1cGVyX18uc3luYy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGV9KHQuQmluZGluZyksdC5wdWJsaWMuYmluZGVycy50ZXh0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGwhPXQudGV4dENvbnRlbnQ/dC50ZXh0Q29udGVudD1udWxsIT1lP2U6XCJcIjp0LmlubmVyVGV4dD1udWxsIT1lP2U6XCJcIn0sdC5wdWJsaWMuYmluZGVycy5odG1sPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuaW5uZXJIVE1MPW51bGwhPWU/ZTpcIlwifSx0LnB1YmxpYy5iaW5kZXJzLnNob3c9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PWU/XCJcIjpcIm5vbmVcIn0sdC5wdWJsaWMuYmluZGVycy5oaWRlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc3R5bGUuZGlzcGxheT1lP1wibm9uZVwiOlwiXCJ9LHQucHVibGljLmJpbmRlcnMuZW5hYmxlZD1mdW5jdGlvbih0LGUpe3JldHVybiB0LmRpc2FibGVkPSFlfSx0LnB1YmxpYy5iaW5kZXJzLmRpc2FibGVkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGlzYWJsZWQ9ISFlfSx0LnB1YmxpYy5iaW5kZXJzLmNoZWNrZWQ9e3B1Ymxpc2hlczohMCxwcmlvcml0eToyZTMsYmluZDpmdW5jdGlvbihlKXtyZXR1cm4gdC5VdGlsLmJpbmRFdmVudChlLFwiY2hhbmdlXCIsdGhpcy5wdWJsaXNoKX0sdW5iaW5kOmZ1bmN0aW9uKGUpe3JldHVybiB0LlV0aWwudW5iaW5kRXZlbnQoZSxcImNoYW5nZVwiLHRoaXMucHVibGlzaCl9LHJvdXRpbmU6ZnVuY3Rpb24odCxlKXt2YXIgaTtyZXR1cm5cInJhZGlvXCI9PT10LnR5cGU/dC5jaGVja2VkPShudWxsIT0oaT10LnZhbHVlKT9pLnRvU3RyaW5nKCk6dm9pZCAwKT09PShudWxsIT1lP2UudG9TdHJpbmcoKTp2b2lkIDApOnQuY2hlY2tlZD0hIWV9fSx0LnB1YmxpYy5iaW5kZXJzLnVuY2hlY2tlZD17cHVibGlzaGVzOiEwLHByaW9yaXR5OjJlMyxiaW5kOmZ1bmN0aW9uKGUpe3JldHVybiB0LlV0aWwuYmluZEV2ZW50KGUsXCJjaGFuZ2VcIix0aGlzLnB1Ymxpc2gpfSx1bmJpbmQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuVXRpbC51bmJpbmRFdmVudChlLFwiY2hhbmdlXCIsdGhpcy5wdWJsaXNoKX0scm91dGluZTpmdW5jdGlvbih0LGUpe3ZhciBpO3JldHVyblwicmFkaW9cIj09PXQudHlwZT90LmNoZWNrZWQ9KG51bGwhPShpPXQudmFsdWUpP2kudG9TdHJpbmcoKTp2b2lkIDApIT09KG51bGwhPWU/ZS50b1N0cmluZygpOnZvaWQgMCk6dC5jaGVja2VkPSFlfX0sdC5wdWJsaWMuYmluZGVycy52YWx1ZT17cHVibGlzaGVzOiEwLHByaW9yaXR5OjNlMyxiaW5kOmZ1bmN0aW9uKGUpe2lmKFwiSU5QVVRcIiE9PWUudGFnTmFtZXx8XCJyYWRpb1wiIT09ZS50eXBlKXJldHVybiB0aGlzLmV2ZW50PVwiU0VMRUNUXCI9PT1lLnRhZ05hbWU/XCJjaGFuZ2VcIjpcImlucHV0XCIsdC5VdGlsLmJpbmRFdmVudChlLHRoaXMuZXZlbnQsdGhpcy5wdWJsaXNoKX0sdW5iaW5kOmZ1bmN0aW9uKGUpe2lmKFwiSU5QVVRcIiE9PWUudGFnTmFtZXx8XCJyYWRpb1wiIT09ZS50eXBlKXJldHVybiB0LlV0aWwudW5iaW5kRXZlbnQoZSx0aGlzLmV2ZW50LHRoaXMucHVibGlzaCl9LHJvdXRpbmU6ZnVuY3Rpb24odCxlKXt2YXIgbixzLHIsbyxsLHUsYTtpZihcIklOUFVUXCI9PT10LnRhZ05hbWUmJlwicmFkaW9cIj09PXQudHlwZSlyZXR1cm4gdC5zZXRBdHRyaWJ1dGUoXCJ2YWx1ZVwiLGUpO2lmKG51bGwhPXdpbmRvdy5qUXVlcnkpe2lmKHQ9aSh0KSwobnVsbCE9ZT9lLnRvU3RyaW5nKCk6dm9pZCAwKSE9PShudWxsIT0obz10LnZhbCgpKT9vLnRvU3RyaW5nKCk6dm9pZCAwKSlyZXR1cm4gdC52YWwobnVsbCE9ZT9lOlwiXCIpfWVsc2UgaWYoXCJzZWxlY3QtbXVsdGlwbGVcIj09PXQudHlwZSl7aWYobnVsbCE9ZSl7Zm9yKGE9W10scz0wLHI9dC5sZW5ndGg7czxyO3MrKyluPXRbc10sYS5wdXNoKG4uc2VsZWN0ZWQ9KGw9bi52YWx1ZSxoLmNhbGwoZSxsKT49MCkpO3JldHVybiBhfX1lbHNlIGlmKChudWxsIT1lP2UudG9TdHJpbmcoKTp2b2lkIDApIT09KG51bGwhPSh1PXQudmFsdWUpP3UudG9TdHJpbmcoKTp2b2lkIDApKXJldHVybiB0LnZhbHVlPW51bGwhPWU/ZTpcIlwifX0sdC5wdWJsaWMuYmluZGVycy5pZj17YmxvY2s6ITAscHJpb3JpdHk6NGUzLGJpbmQ6ZnVuY3Rpb24odCl7dmFyIGUsaTtpZihudWxsPT10aGlzLm1hcmtlcilyZXR1cm4gZT1bdGhpcy52aWV3LnByZWZpeCx0aGlzLnR5cGVdLmpvaW4oXCItXCIpLnJlcGxhY2UoXCItLVwiLFwiLVwiKSxpPXQuZ2V0QXR0cmlidXRlKGUpLHRoaXMubWFya2VyPWRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoXCIgcml2ZXRzOiBcIit0aGlzLnR5cGUrXCIgXCIraStcIiBcIiksdGhpcy5ib3VuZD0hMSx0LnJlbW92ZUF0dHJpYnV0ZShlKSx0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMubWFya2VyLHQpLHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KX0sdW5iaW5kOmZ1bmN0aW9uKCl7aWYodGhpcy5uZXN0ZWQpcmV0dXJuIHRoaXMubmVzdGVkLnVuYmluZCgpLHRoaXMuYm91bmQ9ITF9LHJvdXRpbmU6ZnVuY3Rpb24oZSxpKXt2YXIgbixzLHIsbztpZighIWk9PSF0aGlzLmJvdW5kKXtpZihpKXtmb3IobiBpbiByPXt9LG89dGhpcy52aWV3Lm1vZGVscylzPW9bbl0scltuXT1zO3JldHVybih0aGlzLm5lc3RlZHx8KHRoaXMubmVzdGVkPW5ldyB0LlZpZXcoZSxyLHRoaXMudmlldy5vcHRpb25zKCkpKSkuYmluZCgpLHRoaXMubWFya2VyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdGhpcy5tYXJrZXIubmV4dFNpYmxpbmcpLHRoaXMuYm91bmQ9ITB9cmV0dXJuIGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSx0aGlzLm5lc3RlZC51bmJpbmQoKSx0aGlzLmJvdW5kPSExfX0sdXBkYXRlOmZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsIT0oZT10aGlzLm5lc3RlZCk/ZS51cGRhdGUodCk6dm9pZCAwfX0sdC5wdWJsaWMuYmluZGVycy51bmxlc3M9e2Jsb2NrOiEwLHByaW9yaXR5OjRlMyxiaW5kOmZ1bmN0aW9uKGUpe3JldHVybiB0LnB1YmxpYy5iaW5kZXJzLmlmLmJpbmQuY2FsbCh0aGlzLGUpfSx1bmJpbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdC5wdWJsaWMuYmluZGVycy5pZi51bmJpbmQuY2FsbCh0aGlzKX0scm91dGluZTpmdW5jdGlvbihlLGkpe3JldHVybiB0LnB1YmxpYy5iaW5kZXJzLmlmLnJvdXRpbmUuY2FsbCh0aGlzLGUsIWkpfSx1cGRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHVibGljLmJpbmRlcnMuaWYudXBkYXRlLmNhbGwodGhpcyxlKX19LHQucHVibGljLmJpbmRlcnNbXCJvbi0qXCJdPXtmdW5jdGlvbjohMCxwcmlvcml0eToxZTMsdW5iaW5kOmZ1bmN0aW9uKGUpe2lmKHRoaXMuaGFuZGxlcilyZXR1cm4gdC5VdGlsLnVuYmluZEV2ZW50KGUsdGhpcy5hcmdzWzBdLHRoaXMuaGFuZGxlcil9LHJvdXRpbmU6ZnVuY3Rpb24oZSxpKXtyZXR1cm4gdGhpcy5oYW5kbGVyJiZ0LlV0aWwudW5iaW5kRXZlbnQoZSx0aGlzLmFyZ3NbMF0sdGhpcy5oYW5kbGVyKSx0LlV0aWwuYmluZEV2ZW50KGUsdGhpcy5hcmdzWzBdLHRoaXMuaGFuZGxlcj10aGlzLmV2ZW50SGFuZGxlcihpKSl9fSx0LnB1YmxpYy5iaW5kZXJzW1wiZWFjaC0qXCJdPXtibG9jazohMCxwcmlvcml0eTo0ZTMsYmluZDpmdW5jdGlvbih0KXt2YXIgZSxpLG4scztpZihudWxsPT10aGlzLm1hcmtlcillPVt0aGlzLnZpZXcucHJlZml4LHRoaXMudHlwZV0uam9pbihcIi1cIikucmVwbGFjZShcIi0tXCIsXCItXCIpLHRoaXMubWFya2VyPWRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoXCIgcml2ZXRzOiBcIit0aGlzLnR5cGUrXCIgXCIpLHRoaXMuaXRlcmF0ZWQ9W10sdC5yZW1vdmVBdHRyaWJ1dGUoZSksdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLm1hcmtlcix0KSx0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodCk7ZWxzZSBmb3IoaT0wLG49KHM9dGhpcy5pdGVyYXRlZCkubGVuZ3RoO2k8bjtpKyspc1tpXS5iaW5kKCl9LHVuYmluZDpmdW5jdGlvbih0KXt2YXIgZSxpLG47aWYobnVsbCE9dGhpcy5pdGVyYXRlZClmb3IoZT0wLGk9KG49dGhpcy5pdGVyYXRlZCkubGVuZ3RoO2U8aTtlKyspbltlXS51bmJpbmQoKX0scm91dGluZTpmdW5jdGlvbihlLGkpe3ZhciBuLHMscixvLGwsdSxoLGEscCxkLGMsZixiLHYsbSx5LGcsdyxrO2lmKHU9dGhpcy5hcmdzWzBdLGk9aXx8W10sdGhpcy5pdGVyYXRlZC5sZW5ndGg+aS5sZW5ndGgpZm9yKGM9MCx2PShnPUFycmF5KHRoaXMuaXRlcmF0ZWQubGVuZ3RoLWkubGVuZ3RoKSkubGVuZ3RoO2M8djtjKyspZ1tjXSwoZD10aGlzLml0ZXJhdGVkLnBvcCgpKS51bmJpbmQoKSx0aGlzLm1hcmtlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQuZWxzWzBdKTtmb3Iocj1mPTAsbT1pLmxlbmd0aDtmPG07cj0rK2YpaWYobD1pW3JdLChzPXtpbmRleDpyfSlbdC5wdWJsaWMuaXRlcmF0aW9uQWxpYXModSldPXIsc1t1XT1sLG51bGw9PXRoaXMuaXRlcmF0ZWRbcl0pe2ZvcihvIGluIHc9dGhpcy52aWV3Lm1vZGVscylsPXdbb10sbnVsbD09c1tvXSYmKHNbb109bCk7YT10aGlzLml0ZXJhdGVkLmxlbmd0aD90aGlzLml0ZXJhdGVkW3RoaXMuaXRlcmF0ZWQubGVuZ3RoLTFdLmVsc1swXTp0aGlzLm1hcmtlciwoaD10aGlzLnZpZXcub3B0aW9ucygpKS5wcmVsb2FkRGF0YT0hMCxwPWUuY2xvbmVOb2RlKCEwKSwoZD1uZXcgdC5WaWV3KHAscyxoKSkuYmluZCgpLHRoaXMuaXRlcmF0ZWQucHVzaChkKSx0aGlzLm1hcmtlci5wYXJlbnROb2RlLmluc2VydEJlZm9yZShwLGEubmV4dFNpYmxpbmcpfWVsc2UgdGhpcy5pdGVyYXRlZFtyXS5tb2RlbHNbdV0hPT1sJiZ0aGlzLml0ZXJhdGVkW3JdLnVwZGF0ZShzKTtpZihcIk9QVElPTlwiPT09ZS5ub2RlTmFtZSlmb3IoYj0wLHk9KGs9dGhpcy52aWV3LmJpbmRpbmdzKS5sZW5ndGg7Yjx5O2IrKykobj1rW2JdKS5lbD09PXRoaXMubWFya2VyLnBhcmVudE5vZGUmJlwidmFsdWVcIj09PW4udHlwZSYmbi5zeW5jKCl9LHVwZGF0ZTpmdW5jdGlvbih0KXt2YXIgZSxpLG4scyxyLG87Zm9yKGkgaW4gZT17fSx0KW49dFtpXSxpIT09dGhpcy5hcmdzWzBdJiYoZVtpXT1uKTtmb3Iocz0wLHI9KG89dGhpcy5pdGVyYXRlZCkubGVuZ3RoO3M8cjtzKyspb1tzXS51cGRhdGUoZSl9fSx0LnB1YmxpYy5iaW5kZXJzW1wiY2xhc3MtKlwiXT1mdW5jdGlvbih0LGUpe3ZhciBpO2lmKCFlPT0oLTEhPT0oaT1cIiBcIit0LmNsYXNzTmFtZStcIiBcIikuaW5kZXhPZihcIiBcIit0aGlzLmFyZ3NbMF0rXCIgXCIpKSlyZXR1cm4gdC5jbGFzc05hbWU9ZT90LmNsYXNzTmFtZStcIiBcIit0aGlzLmFyZ3NbMF06aS5yZXBsYWNlKFwiIFwiK3RoaXMuYXJnc1swXStcIiBcIixcIiBcIikudHJpbSgpfSx0LnB1YmxpYy5iaW5kZXJzW1wiKlwiXT1mdW5jdGlvbih0LGUpe3JldHVybiBudWxsIT1lP3Quc2V0QXR0cmlidXRlKHRoaXMudHlwZSxlKTp0LnJlbW92ZUF0dHJpYnV0ZSh0aGlzLnR5cGUpfSx0LnB1YmxpYy5mb3JtYXR0ZXJzLmNhbGw9ZnVuY3Rpb24oKXt2YXIgdCxlO3JldHVybiBlPWFyZ3VtZW50c1swXSx0PTI8PWFyZ3VtZW50cy5sZW5ndGg/by5jYWxsKGFyZ3VtZW50cywxKTpbXSxlLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KG8uY2FsbCh0KSkpfSx0LnB1YmxpYy5hZGFwdGVyc1tcIi5cIl09e2lkOlwiX3J2XCIsY291bnRlcjowLHdlYWttYXA6e30sd2Vha1JlZmVyZW5jZTpmdW5jdGlvbih0KXt2YXIgZSxpLG47cmV0dXJuIHQuaGFzT3duUHJvcGVydHkodGhpcy5pZCl8fChlPXRoaXMuY291bnRlcisrLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LHRoaXMuaWQse3ZhbHVlOmV9KSksKGk9dGhpcy53ZWFrbWFwKVtuPXRbdGhpcy5pZF1dfHwoaVtuXT17Y2FsbGJhY2tzOnt9fSl9LGNsZWFudXBXZWFrUmVmZXJlbmNlOmZ1bmN0aW9uKHQsZSl7aWYoIShPYmplY3Qua2V5cyh0LmNhbGxiYWNrcykubGVuZ3RofHx0LnBvaW50ZXJzJiZPYmplY3Qua2V5cyh0LnBvaW50ZXJzKS5sZW5ndGgpKXJldHVybiBkZWxldGUgdGhpcy53ZWFrbWFwW2VdfSxzdHViRnVuY3Rpb246ZnVuY3Rpb24odCxlKXt2YXIgaSxuLHM7cmV0dXJuIG49dFtlXSxpPXRoaXMud2Vha1JlZmVyZW5jZSh0KSxzPXRoaXMud2Vha21hcCx0W2VdPWZ1bmN0aW9uKCl7dmFyIGUscixvLGwsdSxoLGEscCxkO2ZvcihyIGluIG89bi5hcHBseSh0LGFyZ3VtZW50cyksaD1pLnBvaW50ZXJzKWZvcihlPWhbcl0sbD0wLHU9KGQ9bnVsbCE9KGE9bnVsbCE9KHA9c1tyXSk/cC5jYWxsYmFja3NbZV06dm9pZCAwKT9hOltdKS5sZW5ndGg7bDx1O2wrKykoMCxkW2xdKSgpO3JldHVybiBvfX0sb2JzZXJ2ZU11dGF0aW9uczpmdW5jdGlvbih0LGUsaSl7dmFyIG4scyxyLG8sbCx1O2lmKEFycmF5LmlzQXJyYXkodCkpe2lmKG51bGw9PShyPXRoaXMud2Vha1JlZmVyZW5jZSh0KSkucG9pbnRlcnMpZm9yKHIucG9pbnRlcnM9e30sbD0wLHU9KHM9W1wicHVzaFwiLFwicG9wXCIsXCJzaGlmdFwiLFwidW5zaGlmdFwiLFwic29ydFwiLFwicmV2ZXJzZVwiLFwic3BsaWNlXCJdKS5sZW5ndGg7bDx1O2wrKyluPXNbbF0sdGhpcy5zdHViRnVuY3Rpb24odCxuKTtpZihudWxsPT0obz1yLnBvaW50ZXJzKVtlXSYmKG9bZV09W10pLGguY2FsbChyLnBvaW50ZXJzW2VdLGkpPDApcmV0dXJuIHIucG9pbnRlcnNbZV0ucHVzaChpKX19LHVub2JzZXJ2ZU11dGF0aW9uczpmdW5jdGlvbih0LGUsaSl7dmFyIG4scyxyO2lmKEFycmF5LmlzQXJyYXkodCkmJm51bGwhPXRbdGhpcy5pZF0mJihzPXRoaXMud2Vha21hcFt0W3RoaXMuaWRdXSkmJihyPXMucG9pbnRlcnNbZV0pKXJldHVybihuPXIuaW5kZXhPZihpKSk+PTAmJnIuc3BsaWNlKG4sMSksci5sZW5ndGh8fGRlbGV0ZSBzLnBvaW50ZXJzW2VdLHRoaXMuY2xlYW51cFdlYWtSZWZlcmVuY2Uocyx0W3RoaXMuaWRdKX0sb2JzZXJ2ZTpmdW5jdGlvbih0LGUsaSl7dmFyIG4scyxyLG87cmV0dXJuIG51bGw9PShuPXRoaXMud2Vha1JlZmVyZW5jZSh0KS5jYWxsYmFja3MpW2VdJiYobltlXT1bXSwobnVsbCE9KHM9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpKT9zLmdldDp2b2lkIDApfHwobnVsbCE9cz9zLnNldDp2b2lkIDApfHwocj10W2VdLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2VudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHJ9LHNldDoobz10aGlzLGZ1bmN0aW9uKGkpe3ZhciBzLGwsdSxhLHA7aWYoaSE9PXImJihvLnVub2JzZXJ2ZU11dGF0aW9ucyhyLHRbby5pZF0sZSkscj1pLGw9by53ZWFrbWFwW3Rbby5pZF1dKSl7aWYoKG49bC5jYWxsYmFja3MpW2VdKWZvcih1PTAsYT0ocD1uW2VdLnNsaWNlKCkpLmxlbmd0aDt1PGE7dSsrKXM9cFt1XSxoLmNhbGwobltlXSxzKT49MCYmcygpO3JldHVybiBvLm9ic2VydmVNdXRhdGlvbnMoaSx0W28uaWRdLGUpfX0pfSkpKSxoLmNhbGwobltlXSxpKTwwJiZuW2VdLnB1c2goaSksdGhpcy5vYnNlcnZlTXV0YXRpb25zKHRbZV0sdFt0aGlzLmlkXSxlKX0sdW5vYnNlcnZlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixzLHI7aWYoKHI9dGhpcy53ZWFrbWFwW3RbdGhpcy5pZF1dKSYmKG49ci5jYWxsYmFja3NbZV0pKXJldHVybihzPW4uaW5kZXhPZihpKSk+PTAmJihuLnNwbGljZShzLDEpLG4ubGVuZ3RofHwoZGVsZXRlIHIuY2FsbGJhY2tzW2VdLHRoaXMudW5vYnNlcnZlTXV0YXRpb25zKHRbZV0sdFt0aGlzLmlkXSxlKSkpLHRoaXMuY2xlYW51cFdlYWtSZWZlcmVuY2Uocix0W3RoaXMuaWRdKX0sZ2V0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRbZV19LHNldDpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHRbZV09aX19LHQuZmFjdG9yeT1mdW5jdGlvbihlKXtyZXR1cm4gdC5zaWdodGdsYXNzPWUsdC5wdWJsaWMuXz10LHQucHVibGljfSxcIm9iamVjdFwiPT10eXBlb2YoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSYmbnVsbCE9PW1vZHVsZT9tb2R1bGUuZXhwb3J0czp2b2lkIDApP21vZHVsZS5leHBvcnRzPXQuZmFjdG9yeShyZXF1aXJlKFwic2lnaHRnbGFzc1wiKSk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXCJzaWdodGdsYXNzXCJdLGZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnJpdmV0cz10LmZhY3RvcnkoZSl9KTp0aGlzLnJpdmV0cz10LmZhY3Rvcnkoc2lnaHRnbGFzcyl9KS5jYWxsKHRoaXMpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW5KcGRtVjBjeTVxY3lKZExDSnVZVzFsY3lJNld5SlNhWFpsZEhNaUxDSmlhVzVrVFdWMGFHOWtJaXdpYWxGMVpYSjVJaXdpZFc1aWFXNWtUV1YwYUc5a0lpd2lYM0psWmlJc0lsOWZZbWx1WkNJc0ltWnVJaXdpYldVaUxDSmhjSEJzZVNJc0ltRnlaM1Z0Wlc1MGN5SXNJbDlmYzJ4cFkyVWlMQ0p6YkdsalpTSXNJbDlmYUdGelVISnZjQ0lzSW1oaGMwOTNibEJ5YjNCbGNuUjVJaXdpWDE5bGVIUmxibVJ6SWl3aVkyaHBiR1FpTENKd1lYSmxiblFpTENKclpYa2lMQ0pqWVd4c0lpd2lZM1J2Y2lJc0luUm9hWE1pTENKamIyNXpkSEoxWTNSdmNpSXNJbkJ5YjNSdmRIbHdaU0lzSWw5ZmMzVndaWEpmWHlJc0lsOWZhVzVrWlhoUFppSXNJbWx1WkdWNFQyWWlMQ0pwZEdWdElpd2lhU0lzSW13aUxDSnNaVzVuZEdnaUxDSnZjSFJwYjI1eklpd2laWGgwWlc1emFXOXVjeUlzSW5CMVlteHBZeUlzSW1KcGJtUmxjbk1pTENKamIyMXdiMjVsYm5Seklpd2labTl5YldGMGRHVnljeUlzSW1Ga1lYQjBaWEp6SWl3aWNISmxabWw0SWl3aWRHVnRjR3hoZEdWRVpXeHBiV2wwWlhKeklpd2ljbTl2ZEVsdWRHVnlabUZqWlNJc0luQnlaV3h2WVdSRVlYUmhJaXdpWlhobFkzVjBaVVoxYm1OMGFXOXVjeUlzSW1sMFpYSmhkR2x2YmtGc2FXRnpJaXdpYlc5a1pXeE9ZVzFsSWl3aWFHRnVaR3hsY2lJc0ltTnZiblJsZUhRaUxDSmxkaUlzSW1KcGJtUnBibWNpTENKMmFXVjNJaXdpYlc5a1pXeHpJaXdpWTI5dVptbG5kWEpsSWl3aVpHVnpZM0pwY0hSdmNpSXNJbTl3ZEdsdmJpSXNJblpoYkhWbElpd2lZbWx1WkNJc0ltVnNJaXdpVm1sbGR5SXNJbWx1YVhRaUxDSmpiMjF3YjI1bGJuUWlMQ0prWVhSaElpd2ljMk52Y0dVaUxDSjBaVzF3YkdGMFpTSXNJbVJ2WTNWdFpXNTBJaXdpWTNKbFlYUmxSV3hsYldWdWRDSXNJa2hVVFV4RmJHVnRaVzUwSWl3aVptbHljM1JEYUdsc1pDSXNJbkpsYlc5MlpVTm9hV3hrSWl3aVlYQndaVzVrUTJocGJHUWlMQ0pwYm01bGNraFVUVXdpTENKcGJtbDBhV0ZzYVhwbElpd2lkMmx1Wkc5M0lpd2lWWFJwYkNJc0ltSnBibVJGZG1WdWRDSXNJbVYyWlc1MElpd2lkVzVpYVc1a1JYWmxiblFpTENKblpYUkpibkIxZEZaaGJIVmxJaXdpSkdWc0lpd2lZWFIwY2lJc0ltbHpJaXdpZG1Gc0lpd2lZV1JrUlhabGJuUk1hWE4wWlc1bGNpSXNJbUYwZEdGamFFVjJaVzUwSWl3aWNtVnRiM1psUlhabGJuUk1hWE4wWlc1bGNpSXNJbVJsZEdGamFFVjJaVzUwSWl3aWJ5SXNJbDlwSWl3aVgyeGxiaUlzSWw5eVpYTjFiSFJ6SWl3aWRIbHdaU0lzSW1Ob1pXTnJaV1FpTENKelpXeGxZM1JsWkNJc0luQjFjMmdpTENKVWVYQmxVR0Z5YzJWeUlpd2lkSGx3WlhNaUxDSndjbWx0YVhScGRtVWlMQ0pyWlhsd1lYUm9JaXdpY0dGeWMyVWlMQ0p6ZEhKcGJtY2lMQ0owWlhOMElpd2lhWE5PWVU0aUxDSk9kVzFpWlhJaUxDSlVaWGgwVkdWdGNHeGhkR1ZRWVhKelpYSWlMQ0owWlhoMElpd2laR1ZzYVcxcGRHVnljeUlzSW1sdVpHVjRJaXdpYkdGemRFbHVaR1Y0SWl3aWJHRnpkRlJ2YTJWdUlpd2ljM1ZpYzNSeWFXNW5JaXdpZEc5clpXNXpJaXdpZEhKcGJTSXNJbVZzY3lJc0ltc2lMQ0oySWl3aVgySmhjMlVpTENKZmFpSXNJbDlzWlc0eElpd2lYM0psWmpFaUxDSmZjbVZtTWlJc0lsOXlaV1l6SWl3aVgzSmxaalFpTENKZmNtVm1OU0lzSW5Wd1pHRjBaU0lzSW5CMVlteHBjMmdpTENKemVXNWpJaXdpZFc1aWFXNWtJaXdpYzJWc1pXTjBJaXdpZEhKaGRtVnljMlVpTENKaWRXbHNaQ0lzSW1KMWFXeGtRbWx1WkdsdVp5SXNJbUpwYm1ScGJtZFNaV2RGZUhBaUxDSnFjWFZsY25raUxDSkJjbkpoZVNJc0ltTnZibU5oZENJc0lsSmxaMFY0Y0NJc0ltNXZaR1VpTENKa1pXTnNZWEpoZEdsdmJpSXNJbU4wZUNJc0ltUmxjR1Z1WkdWdVkybGxjeUlzSW5CcGNHVWlMQ0p3YVhCbGN5SXNJbTFoZEdOb0lpd2ljMmhwWm5RaUxDSnpjR3hwZENJc0ltSnBibVJwYm1keklpd2lYM1JvYVhNaUxDSmliRzlqYXlJc0ltTm9hV3hrVG05a1pTSXNJbTRpTENKd1lYSnpaWElpTENKMGIydGxiaUlzSW01dlpHVlVlWEJsSWl3aVkzSmxZWFJsVkdWNGRFNXZaR1VpTENKd1lYSmxiblJPYjJSbElpd2lhVzV6WlhKMFFtVm1iM0psSWl3aVgyc2lMQ0pqYUdsc1pFNXZaR1Z6SWl3aWMyOXlkQ0lzSW1FaUxDSmlJaXdpWW1sdVpHVnlJaXdpY0hKcGIzSnBkSGtpTENKaGRIUnlhV0oxZEdVaUxDSmhkSFJ5YVdKMWRHVnpJaXdpYVdSbGJuUnBabWxsY2lJc0ltNXZaR1ZPWVcxbElpd2libUZ0WlNJc0luSmxjR3hoWTJVaUxDSjBiMHh2ZDJWeVEyRnpaU0lzSWw5aWIzVnVaQ0lzSWtOdmJYQnZibVZ1ZEVKcGJtUnBibWNpTENKd2RXSnNhWE5vWlhNaUxDSnRiMlJsYkNJc0lrSnBibVJwYm1jaUxDSm5aWFJXWVd4MVpTSXNJbk5sZENJc0ltVjJaVzUwU0dGdVpHeGxjaUlzSW1admNtMWhkSFJsWkZaaGJIVmxJaXdpY0dGeWMyVkdiM0p0WVhSMFpYSkJjbWQxYldWdWRITWlMQ0p3WVhKelpWUmhjbWRsZENJc0ltOWljMlZ5ZG1VaUxDSnpaWFJDYVc1a1pYSWlMQ0ptYjNKdFlYUjBaWEpQWW5ObGNuWmxjbk1pTENKaGNtZHpJaXdpWlhobFl5SXNJa1oxYm1OMGFXOXVJaXdpY205MWRHbHVaU0lzSW05aWFpSXNJbU5oYkd4aVlXTnJJaXdpYzJsbmFIUm5iR0Z6Y3lJc0luSnZiM1FpTENKdlluTmxjblpsY2lJc0luUmhjbWRsZENJc0ltWnZjbTFoZEhSbGNrbHVaR1Y0SWl3aVlXa2lMQ0poY21jaUxDSndjbTlqWlhOelpXUkJjbWR6SWl3aVpta2lMQ0ptYjNKdFlYUjBaWElpTENKcFpDSXNJbkpsWVdRaUxDSmtaWEJsYm1SbGJtTjVJaXdpZFc1dlluTmxjblpsSWl3aVptbFNaWFpsY25ObFpDSXNJbXhoYzNSbWIzSnRZWFIwWlhKSmJtUmxlQ0lzSW5KbGRtVnljMlVpTENKelpYUldZV3gxWlNJc0lsOXpkWEJsY2lJc0luQnliM0JsY25SNVRtRnRaU0lzSW14dlkyRnNjeUlzSW05aWMyVnlkbVZ5Y3lJc0luVndjM1J5WldGdFQySnpaWEoyWlhKeklpd2lZMkZ0Wld4RFlYTmxJaXdpY21WemRXeDBJaXdpWjNKdmRYQmxaQ0lzSW5SdlZYQndaWEpEWVhObElpd2lYM0psWmpZaUxDSmZjbVZtTnlJc0ltSnZkVzVrSWl3aVkyOXRjRzl1Wlc1MFZtbGxkeUlzSWxSbGVIUkNhVzVrYVc1bklpd2lkR1Y0ZEVOdmJuUmxiblFpTENKcGJtNWxjbFJsZUhRaUxDSm9kRzFzSWl3aWMyaHZkeUlzSW5OMGVXeGxJaXdpWkdsemNHeGhlU0lzSW1ocFpHVWlMQ0psYm1GaWJHVmtJaXdpWkdsellXSnNaV1FpTENKMGIxTjBjbWx1WnlJc0luVnVZMmhsWTJ0bFpDSXNJblJoWjA1aGJXVWlMQ0p6WlhSQmRIUnlhV0oxZEdVaUxDSnRZWEpyWlhJaUxDSnFiMmx1SWl3aVoyVjBRWFIwY21saWRYUmxJaXdpWTNKbFlYUmxRMjl0YldWdWRDSXNJbkpsYlc5MlpVRjBkSEpwWW5WMFpTSXNJbTVsYzNSbFpDSXNJbTVsZUhSVGFXSnNhVzVuSWl3aWRXNXNaWE56SWl3aVpuVnVZM1JwYjI0aUxDSnBkR1Z5WVhSbFpDSXNJbU52Ykd4bFkzUnBiMjRpTENKd2NtVjJhVzkxY3lJc0lsOXNaVzR5SWl3aWNHOXdJaXdpWTJ4dmJtVk9iMlJsSWl3aVpXeERiR0Z6Y3lJc0ltTnNZWE56VG1GdFpTSXNJbU52ZFc1MFpYSWlMQ0ozWldGcmJXRndJaXdpZDJWaGExSmxabVZ5Wlc1alpTSXNJbDl1WVcxbElpd2lUMkpxWldOMElpd2laR1ZtYVc1bFVISnZjR1Z5ZEhraUxDSmpZV3hzWW1GamEzTWlMQ0pqYkdWaGJuVndWMlZoYTFKbFptVnlaVzVqWlNJc0luSmxaaUlzSW10bGVYTWlMQ0p3YjJsdWRHVnljeUlzSW5OMGRXSkdkVzVqZEdsdmJpSXNJbTFoY0NJc0ltOXlhV2RwYm1Gc0lpd2ljaUlzSW5KbGMzQnZibk5sSWl3aWIySnpaWEoyWlUxMWRHRjBhVzl1Y3lJc0ltWjFibU4wYVc5dWN5SXNJbWx6UVhKeVlYa2lMQ0oxYm05aWMyVnlkbVZOZFhSaGRHbHZibk1pTENKcFpIZ2lMQ0p6Y0d4cFkyVWlMQ0prWlhOaklpd2laMlYwVDNkdVVISnZjR1Z5ZEhsRVpYTmpjbWx3ZEc5eUlpd2laMlYwSWl3aVpXNTFiV1Z5WVdKc1pTSXNJbTVsZDFaaGJIVmxJaXdpWTJJaUxDSm1ZV04wYjNKNUlpd2lYeUlzSW0xdlpIVnNaU0lzSW1WNGNHOXlkSE1pTENKeVpYRjFhWEpsSWl3aVpHVm1hVzVsSWl3aVlXMWtJaXdpY21sMlpYUnpJbDBzSW0xaGNIQnBibWR6SWpvaVEwRkpRU3hYUVVORkxFbEJRVWxCTEVWQlFWRkRMRVZCUVZsRExFVkJRVkZETEVWQlFXTkRMRVZCUXpWRFF5eEZRVUZUTEZOQlFWTkRMRVZCUVVsRExFZEJRVXNzVDBGQlR5eFhRVUZaTEU5QlFVOUVMRVZCUVVkRkxFMUJRVTFFTEVWQlFVbEZMR0ZCUTJ4RlF5eEZRVUZWTEVkQlFVZERMRTFCUTJKRExFVkJRVmtzUjBGQlIwTXNaVUZEWmtNc1JVRkJXU3hUUVVGVFF5eEZRVUZQUXl4SFFVRlZMRWxCUVVzc1NVRkJTVU1zUzBGQlQwUXNSVUZCWTBvc1JVRkJWVTBzUzBGQlMwWXNSVUZCVVVNc1MwRkJUVVlzUlVGQlRVVXNSMEZCVDBRc1JVRkJUME1zU1VGQlVTeFRRVUZUUlN4SlFVRlRReXhMUVVGTFF5eFpRVUZqVGl4RlFVRTRSeXhQUVVGeVIwa3NSVUZCUzBjc1ZVRkJXVTRzUlVGQlQwMHNWVUZCVjFBc1JVRkJUVThzVlVGQldTeEpRVUZKU0N4RlFVRlJTaXhGUVVGTlVTeFZRVUZaVUN4RlFVRlBUU3hWUVVGclFsQXNSMEZEZGxKVExFVkJRVmtzUjBGQlIwTXNVMEZCVnl4VFFVRlRReXhIUVVGUkxFbEJRVXNzU1VGQlNVTXNSVUZCU1N4RlFVRkhReXhGUVVGSlVpeExRVUZMVXl4UFFVRlJSaXhGUVVGSlF5eEZRVUZIUkN4SlFVRlBMRWRCUVVsQkxFdEJRVXRRTEUxQlFWRkJMRXRCUVV0UExFdEJRVTlFTEVWQlFVMHNUMEZCVDBNc1JVRkJTeXhQUVVGUkxFZEJSVzVLTTBJc1JVRkJVeXhEUVVOUU9FSXNVVUZCVXl4RFFVRkRMRk5CUVZVc2NVSkJRWE5DTEdkQ1FVRnBRaXhqUVVGbExGVkJRVmNzYjBKQlEzSkdReXhYUVVGWkxFTkJRVU1zVlVGQlZ5eGhRVUZqTEdGQlFXTXNXVUZEY0VSRExFOUJRVlVzUTBGRFVrTXNVVUZCVXl4SFFVTlVReXhYUVVGWkxFZEJRMXBETEZkQlFWa3NSMEZEV2tNc1UwRkJWU3hIUVVOV1F5eFBRVUZSTEV0QlExSkRMRzFDUVVGdlFpeERRVUZETEVsQlFVc3NTMEZETVVKRExHTkJRV1VzU1VGRFprTXNZVUZCWVN4RlFVTmlReXhyUWtGQmEwSXNSVUZEYkVKRExHVkJRV2RDTEZOQlFWTkRMRWRCUTNaQ0xFMUJRVThzU1VGQlRVRXNSVUZCV1N4TFFVVXpRa01zVVVGQlV5eFRRVUZUUXl4RlFVRlRReXhGUVVGSlF5eEhRVU0zUWl4UFFVRlBNMElzUzBGQlMwWXNTMEZCU3pKQ0xFVkJRVk5ETEVWQlFVbERMRVZCUVZGRExFdEJRVXRETEZOQlJUZERReXhWUVVGWExGTkJRVk53UWl4SFFVTnNRaXhKUVVGSmNVSXNSVUZCV1d4RExFVkJRVXR0UXl4RlFVRlJReXhGUVVrM1FpeEpRVUZMUkN4TFFVaFZMRTFCUVZoMFFpeEpRVU5HUVN4RlFVRlZMRWxCUlVkQkxFVkJSV0lzUjBGRVFYVkNMRVZCUVZGMlFpeEZRVUZSYzBJc1IwRkRSQ3haUVVGWVFTeEhRVUZ0UXl4bFFVRllRU3hIUVVGelF5eGxRVUZZUVN4SFFVRnpReXhoUVVGWVFTeEZRVU5vUml4SlFVRkxia01zUzBGQlQyOURMRVZCUTFaR0xFVkJRV0ZGTEVWQlFVMXdReXhIUVVOdVFtcENMRVZCUVU5dlJDeEhRVUZSYmtNc1IwRkJUMnRETEU5QlIzaENia1FzUlVGQlpTeFBRVUZGYjBRc1IwRkJWVU1zUjBGSmFrTkRMRXRCUVUwc1UwRkJVME1zUlVGQlNVNHNSVUZCVVc1Q0xFZEJRM3BDTEVsQlFVbHJRaXhGUVZOS0xFOUJVbU1zVFVGQlZrTXNTVUZEUmtFc1JVRkJVeXhKUVVWSkxFMUJRVmh1UWl4SlFVTkdRU3hGUVVGVkxFdEJSVnByUWl4RlFVRlBMRWxCUVVsb1JDeEZRVUZQZDBRc1MwRkJTMFFzUlVGQlNVNHNSVUZCVVc1Q0xFbEJRemxDZDBJc1QwRkRSVTRzUjBGRlZGTXNTMEZCVFN4VFFVRlRReXhGUVVGWFNDeEZRVUZKU1N4SFFVTTFRaXhKUVVGSlF5eEZRVUZQUXl4RlFVRlZZaXhGUVZOeVFpeEhRVkpaTEUxQlFWSlhMRWxCUTBaQkxFVkJRVThzU1VGRlF5eE5RVUZPU2l4SlFVTkdRU3hGUVVGTFR5eFRRVUZUUXl4alFVRmpMRk5CUnpsQ1JpeEhRVVJCU0N4RlFVRlpNVVFzUlVGQlpTeFBRVUZGYTBNc1YwRkJWM2RDTEVsQlEyNUNSeXhUUVVGVE0wTXNTMEZCUzBVc1MwRkJUVzFETEdOQlEycENVeXhaUVVGaExFTkJRMjVETEV0QlFVOVVMRVZCUVVkVkxGbEJRMUpXTEVWQlFVZFhMRmxCUVZsWUxFVkJRVWRWTEZsQlJYQkNWaXhGUVVGSFdTeFpRVUZaVGl4UlFVVm1UaXhGUVVGSFlTeFZRVUZaVUN4RlFVdHFRaXhQUVVoQlJDeEZRVUZSUml4RlFVRlZWeXhYUVVGWGJrUXNTMEZCUzBVc1MwRkJUVzFETEVWQlFVbEpMRWxCUXpWRFdDeEZRVUZQTEVsQlFVbG9SQ3hGUVVGUGQwUXNTMEZCUzBRc1JVRkJTVXNzU1VGRGRFSk9MRTlCUTBWT0xFdEJTMVJ6UWl4UFFVRmxMRkZCUVV0QkxFOUJRVlVzUjBGRmFFTnNSU3hGUVVGUExFOUJSRkJHTEVWQlFWTnZSU3hQUVVGbExGRkJRVXRCTEU5QlFWVXNSMEZEYWtKb1JDeFZRVUZaTEVOQlFVTXNTMEZCVFN4UFFVRlRMRU5CUVVNc1QwRkJVU3hWUVVGWGNrSXNSVUZCWVVjc1JVRkJTeXhIUVVGSlJDeEZRVUZsUXl4RlFVRkxMRWRCUTJoSVNpeEZRVUZQZFVVc1MwRkJUeXhEUVVOYVF5eFZRVUZYTEZOQlFWTnFRaXhGUVVGSmEwSXNSVUZCVHpkQ0xFZEJRemRDTEU5QlFVOHhReXhGUVVGUGNVUXNSMEZCU1hSRUxFZEJRVmwzUlN4RlFVRlBOMElzU1VGRmRrTTRRaXhaUVVGaExGTkJRVk51UWl4RlFVRkphMElzUlVGQlR6ZENMRWRCUXk5Q0xFOUJRVTh4UXl4RlFVRlBjVVFzUjBGQlNYQkVMRWRCUVdOelJTeEZRVUZQTjBJc1NVRkZla01yUWl4alFVRmxMRk5CUVZOd1FpeEhRVU4wUWl4SlFVRkpjVUlzUlVGRlNpeE5RVUY1UWl4alFVUjZRa0VzUlVGQlRURkZMRVZCUVU5eFJDeEpRVU5NYzBJc1MwRkJTeXhSUVVOS1JDeEZRVUZKUlN4SFFVRkhMRmxCUlZCR0xFVkJRVWxITEZOQlMycENMMFVzUlVGQlQzVkZMRXRCUVU4c1EwRkRXa01zVlVGRFRTeHhRa0ZCYzBKR0xFOUJRMnBDTEZOQlFWTm1MRVZCUVVsclFpeEZRVUZQTjBJc1IwRkRla0lzVDBGQlQxY3NSVUZCUjNsQ0xHbENRVUZwUWxBc1JVRkJUemRDTEVkQlFWTXNTVUZIZUVNc1UwRkJVMWNzUlVGQlNXdENMRVZCUVU4M1FpeEhRVU42UWl4UFFVRlBWeXhGUVVGSE1FSXNXVUZCV1N4TFFVRlBVaXhGUVVGUE4wSXNTVUZIZUVNNFFpeFpRVU5OTEhkQ1FVRjVRa29zVDBGRGNFSXNVMEZCVTJZc1JVRkJTV3RDTEVWQlFVODNRaXhIUVVONlFpeFBRVUZQVnl4RlFVRkhNa0lzYjBKQlFXOUNWQ3hGUVVGUE4wSXNSMEZCVXl4SlFVY3pReXhUUVVGVFZ5eEZRVUZKYTBJc1JVRkJUemRDTEVkQlEzcENMRTlCUVU5WExFVkJRVWMwUWl4WlFVRlpMRXRCUVU5V0xFVkJRVTgzUWl4SlFVZDRReXRDTEdOQlFXVXNVMEZCVTNCQ0xFZEJRM1JDTEVsQlFVazJRaXhGUVVGSFF5eEZRVUZKUXl4RlFVRk5ReXhGUVVOcVFpeEhRVUZuUWl4aFFVRmFhRU1zUlVGQlIybERMRXRCUTB3c1QwRkJUMnBETEVWQlFVZHJReXhSUVVOTUxFZEJRV2RDTEc5Q1FVRmFiRU1zUlVGQlIybERMRXRCUVRSQ0xFTkJSWGhETEVsQlJFRkVMRVZCUVZjc1IwRkRUa1lzUlVGQlN5eEZRVUZIUXl4RlFVRlBMMElzUlVGQlJ6RkNMRTlCUVZGM1JDeEZRVUZMUXl4RlFVRk5SQ3hMUVVONFEwUXNSVUZCU1RkQ0xFVkJRVWM0UWl4SlFVTkVTeXhWUVVOS1NDeEZRVUZUU1N4TFFVRkxVQ3hGUVVGRkwwSXNUMEZIY0VJc1QwRkJUMnRETEVWQlJWQXNUMEZCVDJoRExFVkJRVWRHTEZGQlRXeENja1FzUlVGQlR6UkdMRmRCUVdFc1YwRkRiRUlzVTBGQlUwRXNTMEZ0UkZRc1QwRnFSRUZCTEVWQlFWZERMRTFCUVZFc1EwRkRha0pETEZWQlFWY3NSVUZEV0VNc1VVRkJVeXhIUVVkWVNDeEZRVUZYU1N4TlFVRlJMRk5CUVZORExFZEJRekZDTEUxQlFVa3NaMEpCUVdkQ1F5eExRVUZMUkN4SFFVTm9RaXhEUVVOTVZDeExRVUZOY0VVc1MwRkJTM2xGTEUxQlFVMURMRlZCUTJwQ2VrTXNUVUZCVHpSRExFVkJRVTkwUml4TlFVRk5MRWRCUVVrc1NVRkZUaXhUUVVGWWMwWXNSVUZEUml4RFFVTk1WQ3hMUVVGTmNFVXNTMEZCUzNsRkxFMUJRVTFETEZWQlEycENla01zVDBGQlR5eEhRVVZYTEZWQlFWZzBReXhGUVVOR0xFTkJRMHhVTEV0QlFVMXdSU3hMUVVGTGVVVXNUVUZCVFVNc1ZVRkRha0o2UXl4UFFVRlBMRWRCUlZjc1UwRkJXRFJETEVWQlEwWXNRMEZEVEZRc1MwRkJUWEJGTEV0QlFVdDVSU3hOUVVGTlF5eFZRVU5xUW5wRExFMUJRVThzVFVGRlZ5eGpRVUZZTkVNc1JVRkRSaXhEUVVOTVZDeExRVUZOY0VVc1MwRkJTM2xGTEUxQlFVMURMRlZCUTJwQ2VrTXNWMEZCVHl4SFFVVlhMRXRCUVZnMFF5eEZRVU5HTEVOQlEweFVMRXRCUVUxd1JTeExRVUZMZVVVc1RVRkJUVU1zVlVGRGFrSjZReXhYUVVGUExFbEJSVEJDTEVsQlFURkNPRU1zVFVGQlRVTXNUMEZCVDBnc1NVRkRaaXhEUVVOTVZDeExRVUZOY0VVc1MwRkJTM2xGTEUxQlFVMURMRlZCUTJwQ2VrTXNUVUZCVHl0RExFOUJRVTlJTEVsQlIxUXNRMEZEVEZRc1MwRkJUWEJGTEV0QlFVdDVSU3hOUVVGTlJTeFJRVU5xUWpGRExFMUJRVTgwUXl4SlFVdE9UQ3hGUVhCRVZ5eEhRWGRFY0VJMVJpeEZRVUZQY1Vjc2JVSkJRWEZDTEZkQlF6RkNMRk5CUVZOQkxFdEJjMFJVTEU5QmNFUkJRU3hGUVVGdFFsSXNUVUZCVVN4RFFVTjZRbE1zUzBGQlRTeEZRVU5PZGtRc1VVRkJVeXhIUVVkWWMwUXNSVUZCYlVKTUxFMUJRVkVzVTBGQlUyNURMRVZCUVZVd1F5eEhRVU0xUXl4SlFVRkpReXhGUVVGUFF5eEZRVUZYUXl4RlFVRlhOMFVzUlVGQlVUaEZMRVZCUVZkRExFVkJRVkYyUkN4RlFVczFSQ3hKUVVwQmRVUXNSVUZCVXl4SFFVTlVMMFVzUlVGQlUyZERMRVZCUVZOb1F5eFBRVU5zUWpKRkxFVkJRVkVzUlVGRFVrTXNSVUZCV1N4RlFVTk1RU3hGUVVGWk5VVXNSMEZCVVN4RFFVVjZRaXhKUVVSQk1rVXNSVUZCVVRORExFVkJRVk53UXl4UlFVRlJPRVVzUlVGQlZ5eEhRVUZKUlN4SlFVTTFRaXhGUVVGSExFTkJRMkpITEVWQlFVOXFRaXhMUVVGTExFTkJRMVpJTEV0QlFVMXdSU3hMUVVGTGVVVXNUVUZCVFZNc1MwRkRha0pxUkN4TlFVRlBVU3hGUVVGVGJFUXNUVUZCVFRoR0xFdEJSWGhDTEUxQlZVRXNSMEZTU1VRc1JVRkJVU3hIUVVGTFF5eEZRVUZaUkN4SFFVTXpRa2tzUlVGQlQycENMRXRCUVVzc1EwRkRWa2dzUzBGQlRYQkZMRXRCUVV0NVJTeE5RVUZOVXl4TFFVTnFRbXBFTEUxQlFVOVJMRVZCUVZOc1JDeE5RVUZOT0VZc1JVRkJWMFFzUzBGSGNrTkRMRVZCUVZsRUxFVkJRVkZFTEVWQlFWY3NSMEZCUnpGRkxGRkJRMnhETWtVc1JVRkJVVE5ETEVWQlFWTndReXhSUVVGUk9FVXNSVUZCVnl4SFFVRkpSU3hKUVVNMVFpeEZRVUZITEVOQlEySkZMRVZCUVZrNVF5eEZRVUZUYkVRc1RVRkJUVGhHTEVWQlFWbEdMRVZCUVZjc1IwRkJSekZGTEZOQlJXNURMRTlCUkd4Q05rVXNSVUZCV1VVc1JVRkJUMEVzUlVGQlR5OUZMRTlCUVZNc1NVRkRWalpGTEVWQlFWVnNRaXhWUVVGUExFdEJRVmx3UlN4TFFVRkxlVVVzVFVGQlRWTXNTMEZETDBSSkxFVkJRVlZ5UkN4UFFVRlRjMFFzUlVGRmJrSkRMRVZCUVU5cVFpeExRVUZMTEVOQlExWklMRXRCUVUxd1JTeExRVUZMZVVVc1RVRkJUVk1zUzBGRGFrSnFSQ3hOUVVGUGMwUXNTVUZIV0N4TlFVVkdkRVFzUlVGQlVWRXNSVUZCVTJ4RUxFMUJRVTA0Uml4RlFVRlhSQ3hIUVVGUFN5eFBRVU42UTBRc1JVRkJUMnBDTEV0QlFVc3NRMEZEVmtnc1MwRkJUWEJGTEV0QlFVdDVSU3hOUVVGTk9VTXNVVUZEYWtKTkxFMUJRVTlCTEVsQlJWUnZSQ3hGUVVGWlJDeEZRVUZSUkN4RlFVRlhMRWRCUVVjeFJTeFBRVWQwUXl4UFFVRlBLMFVzUjBGSFJsQXNSVUYyUkcxQ0xFZEJNa1ExUW5KSExFVkJRVTkzUkN4TFFVRlBMRmRCUTFvc1UwRkJVMEVzUlVGQlMzTkVMRVZCUVVzM1JDeEZRVUZSYmtJc1IwRkRla0lzU1VGQlNXbEdMRVZCUVVjelJDeEZRVUZSTkVRc1JVRkJSME1zUlVGQlR6VkNMRVZCUVVrMlFpeEZRVUZKTlVJc1JVRkJUVFpDTEVWQlFVOURMRVZCUVU5RExFVkJRVTlETEVWQlFVOURMRVZCUVU5RExFVkJjVUl4UlN4SlFYQkNRWEJITEV0QlFVc3dSaXhKUVVGTlFTeEZRVU5ZTVVZc1MwRkJTelpDTEU5QlFWTkJMRVZCUTBNc1RVRkJXRzVDTEVsQlEwWkJMRVZCUVZVc1NVRkZXbFlzUzBGQlMzRkhMRTlCUVZOd1NDeEZRVUZQWlN4TFFVRkxjVWNzVDBGQlVYSkhMRTFCUTJ4RFFTeExRVUZMYzBjc1VVRkJWWEpJTEVWQlFVOWxMRXRCUVV0elJ5eFJRVUZUZEVjc1RVRkRjRU5CTEV0QlFVdDFSeXhMUVVGUGRFZ3NSVUZCVDJVc1MwRkJTM1ZITEV0QlFVMTJSeXhOUVVNNVFrRXNTMEZCUzNkSExFOUJRVk4yU0N4RlFVRlBaU3hMUVVGTGQwY3NUMEZCVVhoSExFMUJRMnhEUVN4TFFVRkxhME1zUzBGQlQycEVMRVZCUVU5bExFdEJRVXRyUXl4TFFVRk5iRU1zVFVGRE9VSkJMRXRCUVV0NVJ5eFBRVUZUZUVnc1JVRkJUMlVzUzBGQlMzbEhMRTlCUVZGNlJ5eE5RVU5zUTBFc1MwRkJTekJITEZOQlFWZDZTQ3hGUVVGUFpTeExRVUZMTUVjc1UwRkJWVEZITEUxQlEzUkRRU3hMUVVGTE1rY3NUVUZCVVRGSUxFVkJRVTlsTEV0QlFVc3lSeXhOUVVGUE0wY3NUVUZEYUVOQkxFdEJRVXMwUnl4aFFVRmxNMGdzUlVGQlQyVXNTMEZCU3pSSExHRkJRV00xUnl4TlFVTTVRMEVzUzBGQlN6WkhMR05CUVdkQ05VZ3NSVUZCVDJVc1MwRkJTelpITEdOQlFXVTNSeXhOUVVOb1JFRXNTMEZCUzFVc1VVRkJWWHBDTEVWQlFVOWxMRXRCUVV0VkxGRkJRVk5XTEUxQlF6bENRU3hMUVVGTE1FWXNTVUZCU1c5Q0xGRkJRVlU1Unl4TFFVRkxNRVlzWlVGQlpYRkNMRkZCUXpOREwwY3NTMEZCU3pCR0xFbEJRVTBzUTBGQlF6RkdMRXRCUVVzd1JpeE5RVWRrZWtJc1JVRkJTeXhGUVVGSFF5eEhRVVJpT0VJc1JVRkJVWEJJTEVWQlFVOHJRaXhaUVVOWFJpeFBRVUZSZDBRc1JVRkJTME1zUlVGQlRVUXNTVUZCVFN4RFFVZHFSQ3hIUVVSQmFrVXNTMEZFUVdkRExFVkJRVk5uUlN4RlFVRk5MMElzU1VGRFFTeEhRVU5ZZGtRc1JVRkJVWE5DTEVkQlJWWXNTVUZCU3pKRUxFdEJSRXhOTEVWQlFWRjJSaXhGUVVGUmMwSXNSMEZGWkRSRUxFVkJRVWxMTEVWQlFVMU9MRWRCUTFZelJpeExRVUZMWjBNc1IwRkJVVEpFTEVkQlFVdERMRVZCU1hSQ0xFbEJRVXRFTEV0QlJFeFBMRVZCUVZGMFNDeEZRVUZsTEU5QlFVVnZSQ3hIUVVWMlFqUkVMRVZCUVVsTkxFVkJRVTFRTEVkQlEzVkNMRTlCUVRWQ1JTeEZRVUZSTjBZc1MwRkJTMmRETEVsQlFWTXlSQ3hMUVVONlFrVXNSVUZCVFVZc1IwRkJTME1zUjBGTGFrSXNTVUZCUzBVc1JVRkJTeXhGUVVGSFF5eEhRVVJpU1N4RlFVRlJka2dzUlVGQlR6aENMRk5CUTFsRUxFOUJRVkZ4Uml4RlFVRkxReXhGUVVGUFJDeEpRVVUzUXpsR0xFdEJSRUZuUXl4RlFVRlRiVVVzUlVGQlRVd3NTVUZETmtJc1QwRkJOVUpOTEVWQlFWRXhSaXhGUVVGUmMwSXNTVUZCYlVKdlJTeEZRVUZSZUVnc1JVRkJaU3hQUVVGRmIwUXNSMEZGT1VWb1F5eExRVUZMTWtjc1VVRTRUbEFzVDBFelRrRjJSU3hGUVVGTGJFTXNWVUZCVlZFc1VVRkJWU3hYUVVOMlFpeEpRVUZKYzBJc1JVRkJVWFJDTEVWQlFWTjFSQ3hGUVVGSlF5eEZRVUZOT0VJc1JVRkhMMElzU1VGR1FYUkdMRVZCUVZVc1IwRkZUSFZFTEVWQlFVc3NSVUZCUjBNc1IwRkVZamhDTEVWQlFWRndTQ3hGUVVGUEswSXNWMEZCVjNGSExFOUJRVTl3U1N4RlFVRlBPRUlzVlVGRFpFUXNUMEZCVVhkRUxFVkJRVXRETEVWQlFVMUVMRWxCUlRORGRrUXNSVUZFUVhOQ0xFVkJRVk5uUlN4RlFVRk5MMElzU1VGRFIycEZMRXRCUVV0blF5eEhRVVY2UWl4UFFVRlBkRUlzUjBGSFZEQkNMRVZCUVV0c1F5eFZRVUZWTWtjc1kwRkJaMElzVjBGRE4wSXNUMEZCVHl4SlFVRkpTU3hQUVVGUExFbEJRVTFxU0N4TFFVRkxhVUlzVDBGQlV5eE5RVWQ0UTIxQ0xFVkJRVXRzUXl4VlFVRlZNRWNzWVVGQlpTeFRRVUZUYWtZc1JVRkJVM1ZHTEVWQlFVMDVReXhGUVVGTkswTXNSMEZETVVRc1NVRkJTVEZHTEVWQlFWTXlSaXhGUVVGTFF5eEZRVUZqTVVNc1JVRkJVMnBGTEVWQlFWTTBSeXhGUVVGTlF5eEZRVEpDZUVRc1QwRXhRa0UzUnl4RlFVRlZMRWRCUTFZMlJ5eEZRVUZSTEZkQlEwNHNTVUZCU1hSRUxFVkJRVWxETEVWQlFVMDRRaXhGUVVGUE4wSXNSVUZIY2tJc1NVRkVRVUVzUlVGQlZ5eEhRVU5PUml4RlFVRkxMRVZCUVVkRExFZEJSbUk0UWl4RlFVRlJiVUlzUlVGQldVc3NUVUZCVFN4cFJVRkZRUzlITEU5QlFWRjNSQ3hGUVVGTFF5eEZRVUZOUkN4SlFVTXpRM0ZFTEVWQlFVOTBRaXhGUVVGTkwwSXNSMEZEWWtVc1JVRkJVMGtzUzBGQlN5dERMRVZCUVVzM1FpeFJRVVZ5UWl4UFFVRlBkRUlzUlVGU1JDeEhRVzlDVWxFc1IwRldRV3hFTEVWQlFWVXNWMEZEVWl4SlFVRkpkME1zUlVGQlNVTXNSVUZCVFRoQ0xFVkJRVTgzUWl4RlFVZHlRaXhKUVVSQlFTeEZRVUZYTEVkQlEwNUdMRVZCUVVzc1JVRkJSME1zUjBGR1lqaENMRVZCUVZGMVFpeEZRVUZOUlN4UlFVRlJReXhOUVVGTkxFMUJSVVpxU0N4UFFVRlJkMFFzUlVGQlMwTXNSVUZCVFVRc1NVRkRNME50UkN4RlFVRk5jRUlzUlVGQlRTOUNMRWRCUTFwRkxFVkJRVk5KTEV0QlFVczJReXhGUVVGSk0wSXNVVUZGY0VJc1QwRkJUM1JDTEVWQlVrTXNTVUZWVVhORUxGRkJRMnhDTDBjc1JVRkJVVXNzVjBGQllYZEhMRWRCUTJwQ1JpeEZRVUZsTlVZc1JVRkJVV2RITEZkQlEzcENMMGNzUlVGQlVUSkhMR0ZCUVdWQkxFVkJRV0ZMTEUxQlFVMHNVVUZGY2tNeFNDeExRVUZMTWtnc1UwRkJVM0JFTEV0QlFVc3NTVUZCU1ROR0xFVkJRVThyUXl4SFFVRlRNMElzUzBGQlRXdElMRVZCUVUwNVF5eEZRVUZOVHl4RlFVRlRha1VzUzBGSE0wVXdRaXhGUVVGTGJFTXNWVUZCVlhsSExFMUJRVkVzVjBGRGNrSXNTVUZCU1hoRkxFVkJRVWw1UXl4RlFVRlBXQ3hGUVVGSlF5eEZRVUZOT0VJc1JVRkZVRFJDTEVWQk1FTnNRaXhKUVRORFFUVklMRXRCUVVzeVNDeFRRVUZYTEVkQlEwVkRMRVZCZDBObU5VZ3NTMEY0UTBnMFJTeEZRVU5UTEZOQlFWTnpReXhIUVVOa0xFbEJRVWxYTEVWQlFVOURMRVZCUVZjelF5eEZRVUZaTkVNc1JVRkJSME1zUlVGQlVUbERMRVZCUVUwclF5eEZRVUZQZWtNc1JVRkJVWFpDTEVWQlFVazJRaXhGUVVGSk5VSXNSVUZCVFRaQ0xFVkJRVTlETEVWQlEzWkdMRWRCUVhOQ0xFbEJRV3hDYTBJc1JVRkJTMmRDTEZWQlJWQXNSMEZFUVVZc1JVRkJVM0JLTEVWQlFVOXhSeXh2UWtGRFdrVXNSVUZCWVhsRExFVkJRVTB4Unl4elFrRkRhRUp6UlN4RlFVRlRkME1zUlVGQlQzQkVMRTFCUVUxelF5eEZRVUZMTTBVc1MwRkJUVFJETEVsQlFXRXhSU3hUUVVONlFpeEpRVUZzUWl0RkxFVkJRVTh2UlN4UlFVRm5RaXRGTEVWQlFVOHNSMEZCUjNCQ0xFOUJRVk0wUkN4RlFVRlBka1FzVFVGQlRWTXNUVUZCVHl4RFFVTnNSU3hKUVVGTGFrSXNSVUZCU3l4RlFVRkhReXhGUVVGUGMwSXNSVUZCVHk5RkxFOUJRVkYzUkN4RlFVRkxReXhGUVVGTlJDeEpRVU0xUTJkRkxFVkJRVkY2UXl4RlFVRlBka0lzUjBGRFptbENMRVZCUVU5NFF5eFRRVUZUZVVZc1pVRkJaVVlzUlVGQlRXaEhMRTlCUTNKRGFVWXNSVUZCUzJ0Q0xGZEJRVmRETEdGQlFXRnVSQ3hGUVVGTlowTXNSMEZEYUVJc1NVRkJabVVzUlVGQlRUZEVMRTFCUTFKM1JDeEZRVUZOYUVJc1lVRkJZU3hqUVVGbE1VSXNSVUZCVFN4TFFVRk5LME1zUlVGQlRXaEhMRTlCUjNoRWFVWXNSVUZCUzJ0Q0xGZEJRVmQwUml4WlFVRlpiMFVzVTBGSlVDeEpRVUZzUWtFc1JVRkJTMmRDTEZkQlEyUk1MRVZCUVZGRUxFVkJRVTFzUWl4VFFVRlRVU3hKUVVWNlFpeEpRVUZMVnl4RlFWZElMRWxCVmtFM1FpeEZRVUZSTEZkQlEwNHNTVUZCU1hORExFVkJRVWwyUXl4RlFVRlBReXhGUVVGUE4wSXNSVUZIZEVJc1NVRkVRVUVzUlVGQlZ5eEhRVU5PYlVVc1JVRkJTeXhGUVVGSGRrTXNSMEZHWWtNc1JVRkJVV3RDTEVWQlFVdHhRaXhaUVVWak9VZ3NUMEZCVVRaSUxFVkJRVXQyUXl4RlFVRlBkVU1zU1VGRE4wTlFMRVZCUVVrdlFpeEZRVUZOYzBNc1IwRkRWbTVGTEVWQlFWTkpMRXRCUVV0M1JDeEhRVVZvUWl4UFFVRlBOVVFzUlVGU1JDeEhRVlZJTWtJc1JVRkJTeXhGUVVGSFF5eEZRVUZSUXl4RlFVRk5ka1lzVDBGQlVYRkdMRVZCUVV0RExFVkJRVTlFTEVsQlF6ZERaME1zUlVGQldUbENMRVZCUVUxR0xFZEJRMnhDYkVJc1JVRkJUV3RFTEVsQlRWUTNSQ3hGUVVGTExFVkJRVWRETEVkQlJHSTRRaXhGUVVGUmFFY3NTMEZCU3pCR0xFdEJRMkZxUml4UFFVRlJkMFFzUlVGQlMwTXNSVUZCVFVRc1NVRkRNME01UWl4RlFVRkxOa1FzUlVGQlRTOUNMRWRCUTFoWExFVkJRVTE2UXl4SFFVVlNia01zUzBGQlN6SklMRk5CUVZOaExFdEJRVXNzVTBGQlUwTXNSVUZCUjBNc1IwRkROMElzU1VGQlNYcERMRVZCUVU5RExFVkJRMWdzVVVGQkswSXNUMEZCY2tKRUxFVkJRVkY1UXl4RlFVRkZReXhSUVVGclFqRkRMRVZCUVUweVF5eGpRVUZYTEVsQlFWY3NTMEZCTmtJc1QwRkJja0l4UXl4RlFVRlJkVU1zUlVGQlJVVXNVVUZCYTBKNlF5eEZRVUZOTUVNc1kwRkJWeXhKUVVGWExFMUJTWFJKZUVjc1JVRkJTMnhETEZWQlFWVjNSeXhUUVVGWExGTkJRVk5STEVkQlEycERMRWxCUVVreVFpeEZRVUZYUXl4RlFVRlpTQ3hGUVVGUk9VSXNSVUZCWldkQ0xFVkJRVTlyUWl4RlFVRnZRak5GTEVWQlFVMXVReXhGUVVGUFowTXNSVUZCU1RaQ0xFVkJRVWsxUWl4RlFVRk5Oa0lzUlVGQlQwTXNSVUZCVDBNc1JVRkJUME1zUlVGSk4wZ3NTVUZJUVZjc1JVRkJaMEkzUnl4TFFVRkxOa2NzWjBKQlEzSkNaMElzUlVGQk1FSXNWMEZCYkVKWUxFVkJRVXM0UWl4VlFVRXlReXhWUVVGc1FqbENMRVZCUVVzNFFpeFRRVVYwUXk5RkxFVkJRVXNzUlVGQlIwTXNSMEZFWWpoQ0xFVkJRVkZyUWl4RlFVRkxORUlzV1VGRFlYSkpMRTlCUVZGM1JDeEZRVUZMUXl4RlFVRk5SQ3hKUVVVelF5eEhRVVJCTkVVc1JVRkJXVGRETEVWQlFVMHZRaXhIUVVOa05FTXNSVUZCWXk5Q0xFdEJRVXNyUkN4RlFVRlZTU3hOUVVGUExFTkJSWFJETEVkQlJFRTNSU3hGUVVGUGVVVXNSVUZCVlVrc1MwRkJTME1zVVVGQlVYSkRMRVZCUVdVc1RVRkRka000UWl4RlFVRlRNMGtzUzBGQlMyRXNVVUZCVVhWRUxFbEJSVEZDTEVsQlFVc3lSU3hMUVVSTU9VTXNSVUZCVVdwSExFdEJRVXRoTEZGQlJWaHZRaXhGUVVGUlowVXNSVUZCVFRoRExFZEJRMHNzVFVGQlprRXNTVUZCYlVRc1NVRkJOMEpCTEVWQlFWY3hTU3hSUVVGUkxFMUJRMnhETEVsQlFVazBSeXhQUVVGUExFbEJRVTg0UWl4RlFVRlhSeXhSUVVGUkxFMUJRVThzVFVGQlV5eExRVU51UkhCRkxFdEJRVXRXTEV0QlEyUjFSU3hGUVVGVE1VY3NSMEZMYWtJd1J5eEpRVUZYUVN4RlFVRlRNMGtzUzBGQlMyRXNVVUZCVVN4TlFVTTNRamhJTEVWQlFVOWtMRkZCUTFSQkxFZEJRVkVzUlVGRFVtbENMRVZCUVdFc1EwRkJRMFFzU1VGTGNFSXNTVUZCU3k5RExFVkJRVXNzUlVGQlIwTXNSMEZFWWtjc1JVRkJVVFJETEVkQlFXTTFRaXhGUVVGTE5FSXNXVUZEUVhKSkxFOUJRVkZ4Uml4RlFVRkxReXhGUVVGUFJDeEpRVU0zUXl0RExFVkJRVmt6UXl4RlFVRk5TaXhIUVVOa1pTeEZRVUZqTDBJc1MwRkJTeXRFTEVWQlFWVkpMRkZCUXk5Q04wVXNSVUZCVDNsRkxFVkJRVlZKTEV0QlFVdERMRkZCUVZGeVF5eEZRVUZsTEVsQlF6ZEROMGNzUzBGQlN6UkhMR0ZCUVdFc1ZVRkJWMDBzUlVGQlRUbERMRVZCUVUxNVJTeEZRVUZWTlVjc1VVRlZka1FzVDBGUVN6UkdMRWxCUTBoNlJDeEZRVUZQT0VNc1JVRkJTemhDTEZOQlFWTkhMR05CUTJwQ2Jrb3NTMEZCUzJNc1YwRkJWM05FTEV0QlFWVTRReXhGUVVGTGEwTXNVMEZEYWtOd1NpeExRVUZMTWtnc1UwRkJVM0JFTEV0QlFVc3NTVUZCU1ROR0xFVkJRVTk1U3l4cFFrRkJhVUp5U2l4TFFVRk5hMGdzUlVGQlRUbERMRWxCUXpORWVVUXNSMEZCVVN4SlFVZE1RU3hIUVVkVWVrWXNSVUZCUzJ4RExGVkJRVlYxUnl4UFFVRlRMRk5CUVZOMlNDeEhRVU12UWl4SlFVRkplVU1zUlVGQlUzTkRMRVZCUVVsRExFVkJRVTA0UWl4RlFVRlBOMElzUlVGSE9VSXNTVUZFUVVFc1JVRkJWeXhIUVVOT1JpeEZRVUZMTEVWQlFVZERMRWRCUm1JNFFpeEZRVUZSYUVjc1MwRkJTekpJTEZWQlJXRnNTQ3hQUVVGUmQwUXNSVUZCUzBNc1JVRkJUVVFzU1VGRmRrTXZSU3hGUVVSS2VVTXNSVUZCVlhGRkxFVkJRVTB2UWl4TFFVVmtSU3hGUVVGVFNTeExRVUZMTlVNc1IwRkhiRUlzVDBGQlQzZERMRWRCUjFRdlFpeEZRVUZMYkVNc1ZVRkJWV2RETEV0QlFVOHNWMEZEY0VJc1NVRkJZU3RDTEVWQlFVbERMRVZCUVUwNFFpeEZRVVYyUWl4SlFVRkxMMElzUlVGQlN5eEZRVUZIUXl4SFFVUmlPRUlzUlVGQlVXaEhMRXRCUVVzeVNDeFZRVU5oYkVnc1QwRkJVWGRFTEVWQlFVdERMRVZCUVUxRUxFbEJRMnBESzBJc1JVRkJUUzlDTEVkQlExSXZRaXhSUVVsYVJTeEZRVUZMYkVNc1ZVRkJWWE5ITEU5QlFWTXNWMEZEZEVJc1NVRkJZWFpETEVWQlFVbERMRVZCUVUwNFFpeEZRVVYyUWl4SlFVRkxMMElzUlVGQlN5eEZRVUZIUXl4SFFVUmlPRUlzUlVGQlVXaEhMRXRCUVVzeVNDeFZRVU5oYkVnc1QwRkJVWGRFTEVWQlFVdERMRVZCUVUxRUxFbEJRMnBESzBJc1JVRkJUUzlDTEVkQlExSjFReXhWUVVsYWNFVXNSVUZCUzJ4RExGVkJRVlZ4Unl4TFFVRlBMRmRCUTNCQ0xFbEJRVWsxUlN4RlFVRlRjME1zUlVGQlNVTXNSVUZCVFRoQ0xFVkJSWFpDTEVsQlFVc3ZRaXhGUVVGTExFVkJRVWRETEVkQlJHSTRRaXhGUVVGUmFFY3NTMEZCU3pKSUxGVkJRMkZzU0N4UFFVRlJkMFFzUlVGQlMwTXNSVUZCVFVRc1NVRkZaaXh0UWtGRU5VSjBReXhGUVVGVmNVVXNSVUZCVFM5Q0xFbEJRMGR6UXl4TlFVTnFRalZGTEVWQlFWRTBSU3hSUVV0a2JrVXNSVUZCUzJ4RExGVkJRVlZ2Unl4UlFVRlZMRmRCUTNaQ0xFbEJRV0Z5UXl4RlFVRkpReXhGUVVGTk9FSXNSVUZMZGtJc1NVRkJTeTlDTEVWQlFVc3NSVUZCUjBNc1IwRktZamhDTEVWQlFWRm9SeXhMUVVGTGVVY3NUMEZCVHl4VFFVRlRhVU1zUjBGRE0wSXNTVUZCU1RGRExFVkJRMG9zVDBGQk5rSXNUMEZCY2tKQkxFVkJRVkV3UXl4RlFVRkZReXhSUVVGclFqTkRMRVZCUVUxelJDeGxRVUZaTEV0QlJUbENOMGtzVDBGQlVYZEVMRVZCUVV0RExFVkJRVTFFTEVsQlEycERLMElzUlVGQlRTOUNMRWRCUTFKeFF5eFhRVWxhYkVVc1JVRkJTMnhETEZWQlFWVnRSeXhQUVVGVExGTkJRVk40UlN4SFFVTXZRaXhKUVVGSlJpeEZRVUZUT1VJc1JVRkJTekJLTEVWQlFVOTBSaXhGUVVGSlF5eEZRVUZOT0VJc1JVRkpia01zU1VGQlMyNUhMRXRCU0ZNc1RVRkJWbWRETEVsQlEwWkJMRVZCUVZNc1NVRkZRMEVzUlVGRFZqQklMRVZCUVZFeFNDeEZRVUZQYUVNc1IwRkRaa2NzUzBGQlN6WkNMRTlCUVU5b1F5eEhRVUZQTUVvc1JVRkhja0lzU1VGQlMzUkdMRVZCUVVzc1JVRkJSME1zUjBGRVlqaENMRVZCUVZGb1J5eExRVUZMTWtnc1ZVRkRZV3hJTEU5QlFWRjNSQ3hGUVVGTFF5eEZRVUZOUkN4SlFVVmlMRzFDUVVRNVFuUkRMRVZCUVZWeFJTeEZRVUZOTDBJc1NVRkRSMjlETEZGQlEycENNVVVzUlVGQlVUQkZMRTlCUVU5NFJTeEpRVXRrVHl4RlFUVlJTeXhIUVdkU1pIaEVMRVZCUVU4MFN5eFJRVUZWTEZkQlEyWXNVMEZCVTBFc1JVRkJVVFZJTEVWQlFVMVBMRVZCUVVscFF5eEZRVUZOVHl4RlFVRlRha1VzUjBGRGVFTldMRXRCUVVzMFFpeExRVUZQUVN4RlFVTmFOVUlzUzBGQlMyMURMRWRCUVV0QkxFVkJRMVp1UXl4TFFVRkxiMFVzUzBGQlQwRXNSVUZEV25CRkxFdEJRVXN5UlN4UlFVRlZRU3hGUVVObU0wVXNTMEZCUzFVc1VVRkJjVUlzVFVGQldFRXNSVUZCYTBKQkxFVkJRVlVzUjBGRE0wTldMRXRCUVV0NVNpeFRRVUZYZUVzc1JVRkJUMlVzUzBGQlMzbEtMRk5CUVZWNlNpeE5RVU4wUTBFc1MwRkJTM0ZITEU5QlFWTndTQ3hGUVVGUFpTeExRVUZMY1Vjc1QwRkJVWEpITEUxQlEyeERRU3hMUVVGTGQwY3NUMEZCVTNaSUxFVkJRVTlsTEV0QlFVdDNSeXhQUVVGUmVFY3NUVUZEYkVOQkxFdEJRVXRyUXl4TFFVRlBha1FzUlVGQlQyVXNTMEZCUzJ0RExFdEJRVTFzUXl4TlFVTTVRa0VzUzBGQlMzTkhMRkZCUVZWeVNDeEZRVUZQWlN4TFFVRkxjMGNzVVVGQlUzUkhMRTFCUTNCRFFTeExRVUZMZFVjc1MwRkJUM1JJTEVWQlFVOWxMRXRCUVV0MVJ5eExRVUZOZGtjc1RVRkRPVUpCTEV0QlFVc3dTaXhKUVVGTmVrc3NSVUZCVDJVc1MwRkJTekJLTEVsQlFVc3hTaXhOUVVNMVFrRXNTMEZCU3pKS0xHRkJRV1V4U3l4RlFVRlBaU3hMUVVGTE1rb3NZVUZCWXpOS0xFMUJRemxEUVN4TFFVRkxORW9zWlVGQmFVSXpTeXhGUVVGUFpTeExRVUZMTkVvc1pVRkJaMEkxU2l4TlFVTnNSRUVzUzBGQlN6WktMSGRDUVVFd1FqVkxMRVZCUVU5bExFdEJRVXMyU2l4M1FrRkJlVUkzU2l4TlFVTndSVUVzUzBGQlN6aEtMRmxCUVdNM1N5eEZRVUZQWlN4TFFVRkxPRW9zV1VGQllUbEtMRTFCUXpWRFFTeExRVUZMSzBvc1VVRkJWVGxMTEVWQlFVOWxMRXRCUVVzclNpeFJRVUZUTDBvc1RVRkRjRU5CTEV0QlFVdG5TeXhWUVVGWkwwc3NSVUZCVDJVc1MwRkJTMmRMTEZWQlFWZG9TeXhOUVVONFEwRXNTMEZCUzJVc1YwRkJZV1lzUzBGQlMxVXNVVUZCVVVzc1dVRkJZeXhIUVVNM1EyWXNTMEZCUzNGSUxHRkJRV1VzUjBGRGNFSnlTQ3hMUVVGTGFVc3NiVUpCUVhGQ0xFZEJRekZDYWtzc1MwRkJTM1ZLTEZkQlFWRXNSVUZEWW5aS0xFdEJRVXRuU3l4WlFUWk5VQ3hQUVRGTlFWSXNSVUZCVVhSS0xGVkJRVlU0U2l4VlFVRlpMRmRCUXpWQ0xFbEJRVWxxUWl4RlFVRnZRamxITEVWQlFVOHJSQ3hGUVVNdlFpeExRVUZOYUVjc1MwRkJTekpKTEU5QlFWTXpTU3hMUVVGTE5FSXNTMEZCUzJZc1VVRkJVV0lzUzBGQlMyOUZMRTlCUlhwRExFbEJRVXN5UlN4TFFVUk1MME1zUlVGQlVXaEhMRXRCUVVzMFFpeExRVUZMWml4UlFVVm9RbTlDTEVWQlFWRXJSQ3hGUVVGTkswTXNSMEZEU3l4TlFVRm1RU3hKUVVGdFJDeEpRVUUzUWtFc1JVRkJWekZKTEZGQlFWRXNUVUZEYkVNc1NVRkJTVFJITEU5QlFVOHNTVUZCVHpoQ0xFVkJRVmRITEZGQlFWRXNUVUZCVHl4TlFVRlRMRXRCUTI1RWNFVXNTMEZCU3psRkxFdEJRVXR2UlN4UlFVTnVRbkJGTEV0QlFVc3lTU3hQUVVGVE1VY3NSVUZEWkdwRExFdEJRVXRyU3l4TFFVRlBMRWxCUVVscVJDeFBRVUZQTEVsQlFVODRRaXhGUVVGWFJ5eFJRVUZSTEUxQlFVOHNVVUZCVnl4TFFVRkxhVUlzUzBGQlMyNUxMRXRCUVV0dlJTeE5RVU5zUm5CRkxFdEJRVXRyU3l4TFFVRkxla01zVTBGTmJFSXNSMEZFUVhwSUxFdEJRVXN5U1N4VFFVRlhNMGtzUzBGQlN6SkpMRTlCUVZNelNTeExRVUZMTkVJc1MwRkJTMllzVVVGQlVTeE5RVU0xUTJJc1MwRkJTekpKTEd0Q1FVRnJRbmxDTEZOQlEzcENMRTlCUVU5d1N5eExRVUZMTWtrc1QwRkJVeXhEUVVOdVFqQkNMRkZCUVZOeVN5eExRVUZMTWtrc1UwRkxjRUpoTEVWQlFWRjBTaXhWUVVGVk5rb3NVVUZCVlN4VFFVRlRUeXhGUVVGTE0wWXNSVUZCVXpSR0xFZEJRMnBFTEU5QlFVOHpUQ3hGUVVGUE5Fd3NWMEZCVjBZc1JVRkJTek5HTEVWQlFWTTBSaXhGUVVGVkxFTkJReTlEUlN4TFFVRk5la3NzUzBGQlN6UkNMRXRCUVV0VUxHTkJRMmhDU0N4VFFVRlZhRUlzUzBGQlN6UkNMRXRCUVV0YUxGbEJTWGhDZDBrc1JVRkJVWFJLTEZWQlFWVTBTaXhaUVVGakxGZEJRemxDTEVsQlFVazNRaXhGUVVWS0xFOUJSRUZCTEVWQlFWRnlTaXhGUVVGUE5FWXNWMEZCVjBrc1RVRkJUVFZGTEV0QlFVc3lSU3hWUVVNelFsQXNUMEZCVTNoR0xFVkJRVTgwUml4WFFVRlhReXhOUVVGTlF5eFZRVU5zUXpGRkxFdEJRVXRwUXl4TlFVRlJaMGNzUlVGQlRXaEhMRTlCUlRGQ2FrTXNTMEZCU3pCTExGTkJRVmN4U3l4TFFVRkxLMG9zVVVGQlVTOUtMRXRCUVVzMFFpeExRVUZMUXl4UFFVRlJOMElzUzBGQlN6SkZMRkZCUVZNelJTeExRVUZMZFVjc1RVRkRNMFIyUnl4TFFVRkxkVW9zVFVGQlVYWktMRXRCUVVzd1N5eFRRVUZUUXl4VFFVbDBRMjVDTEVWQlFWRjBTaXhWUVVGVk1rb3NkMEpCUVRCQ0xGTkJRVk5MTEVWQlFVMVZMRWRCUTNwRUxFbEJRVWxETEVWQlFVbERMRVZCUVV0S0xFVkJRVlZMTEVWQlFXVnNSaXhGUVVGUE5VSXNSVUZCU1VNc1JVRlhha1FzU1VGV1FXZEhMRVZCUVU4c1YwRkRUQ3hKUVVGSmFrY3NSVUZCU1VNc1JVRkJUVU1zUlVGRlpDeEpRVVJCUVN4RlFVRlhMRWRCUTA1R0xFVkJRVXNzUlVGQlIwTXNSVUZCVDJkSExFVkJRVXQ2U2l4UFFVRlJkMFFzUlVGQlMwTXNSVUZCVFVRc1NVRkRNVU0yUnl4RlFVRk5XaXhGUVVGTGFrY3NSMEZEV0VVc1JVRkJVMGtzUzBGQlN6TkdMRVZCUVU4MFJpeFhRVUZYU1N4TlFVRk5hMGNzU1VGRmVFTXNUMEZCVHpOSExFVkJVRVlzUjBGVFVEUkhMRVZCUVdkQ0xFZEJRMWhHTEVWQlFVczFSeXhGUVVGTExFVkJRVWRETEVWQlFVOW5SeXhGUVVGTGVrb3NUMEZCVVhkRUxFVkJRVXRETEVWQlFVMHlSeXhKUVVGUE5VY3NSVUZEZEVRMlJ5eEZRVUZOV2l4RlFVRkxWeXhIUVVOWVJTeEZRVUZqZUVjc1MwRkJTM1ZITEVWQlFVa3hSeXhQUVVGVGVFWXNSVUZCVHpSR0xGZEJRVmRETEUxQlFVMURMRlZCUVZsdlJ5eEZRVUZKTjBrc1VVRkJWVFJFTEVWQlFWRTNSaXhMUVVGTGFVc3NiMEpCUVc5Q1Z5eExRVUZ2UWk5RkxFVkJRVTByUlN4SFFVRnJRaXhMUVVGUFJpeEZRVUZYTVVzc1MwRkJTMmxMTEcxQ1FVRnRRbGNzUjBGQlowSkRMRTFCUVZGSUxFVkJRVmN4U3l4TFFVRkxLMG9zVVVGQlVTOUtMRXRCUVVzMFFpeExRVUZMUXl4UFFVRlJhVW9zUlVGQlNUZEpMRTFCUVU5cVF5eExRVUZMZFVjc1RVRkJUM1pITEV0QlFVdHBTeXh0UWtGQmJVSlhMRWRCUVdkQ1F5eEhRVUZOU0N4SFFVRnZRa0VzUlVGQlUzcEpMRlZCUlM5WExFOUJRVTg0U1N4SFFVZFVka0lzUlVGQlVYUktMRlZCUVZVd1NpeGxRVUZwUWl4VFFVRlRNMGdzUjBGRE1VTXNTVUZCU1dsSkxFVkJRVTFqTEVWQlFVbERMRVZCUVZkRExFVkJRVWxJTEVWQlFXVTVSeXhGUVVGSlF5eEZRVUZOT0VJc1JVRkJUME1zUlVGRk4wUXNTVUZCU3l0RkxFVkJRVXN2Unl4RlFVRkxMRVZCUVVkRExFZEJSR3hDT0VJc1JVRkJVV2hITEV0QlFVdGxMRmxCUTJ0Q1RpeFBRVUZSZDBRc1JVRkJTME1zUlVGQlRUaEhMRWxCUVU4dlJ5eEZRVWQyUkdsSUxFZEJSRUZvUWl4SFFVUkJaU3hGUVVGWmFrWXNSVUZCVFdkR0xFbEJRMFI0UkN4TlFVRk5MQ3REUVVOaVF5eFJRVU5XZDBRc1JVRkJXV3BNTEV0QlFVczBRaXhMUVVGTFlpeFhRVUZYYlVzc1IwRkRha05JTEVWQlFXZENMMHNzUzBGQlN6WktMSGRDUVVGM1Frc3NSVUZCVFdNc1NVRkRha01zVFVGQllrTXNSVUZCYjBKQkxFVkJRVlZGTEZWQlFVOHNZVUZCYlVKbUxGTkJRek5FYmtrc1IwRkJVMmRGTEVWQlFWRm5SaXhGUVVGVlJTeE5RVUZOY2t3c1MwRkJTMVlzVFVGQlRUWkhMRVZCUVU4c1EwRkJRMnBITEV0QlFVdDFTaXhOUVVGUGRFZ3NSMEZCVHl0RkxFOUJRVTh4U0N4RlFVRlJVU3hMUVVGTGFVd3NTMEZEYkVaRkxHRkJRWEZDWWl4WFFVTTVRbTVKTEVWQlFWRm5TaXhGUVVGVmJrd3NTMEZCUzFZc1RVRkJUVFpNTEVWQlFWY3NRMEZCUTJwTUxFdEJRVXQxU2l4TlFVRlBkRWdzUjBGQlR5dEZMRTlCUVU4eFNDeEZRVUZSVVN4TFFVRkxhVXdzVFVGSGNFWXNUMEZCVHpsSkxFZEJSMVIxU0N4RlFVRlJkRW9zVlVGQlZYbEtMR0ZCUVdVc1UwRkJVM3BMTEVkQlEzaERMRWxCUVVsNVF5eEZRVUZUU0N4RlFVVmlMRTlCUkVGQkxFZEJRVmRITEVWQlFWVXpRaXhOUVVGTk5FSXNTMEZCUzBvc1VVRkRla0lzVTBGQlUwVXNSMEZEWkN4UFFVRlBSaXhGUVVGUk1VSXNTMEZCUzFvc1JVRkJTV01zUzBGQlRUQkNMRVZCUVVsRExFdEJTWFJETmtnc1JVRkJVWFJLTEZWQlFWVjNTaXhKUVVGTkxGTkJRVk42U0N4SFFVTXZRaXhKUVVGSkswUXNSVUZGU2l4UFFVUkJMMFFzUlVGQlVVRXNZVUZCYVVKdFNTeFhRVUZoY0Vzc1MwRkJTekpKTEU5QlFXbENMRlZCUVVzdlNpeEZRVUZsTEU5QlFVVjVReXhwUWtGQmJVSnlRaXhMUVVGTE5Fb3NaVUZCWlROSUxFVkJRVTF1UXl4TFFVRkxSU3hMUVVGTGRVb3NVVUZCVlhaS0xFdEJRVXMwU2l4bFFVRmxNMGdzUjBGREwwZ3NUMEZCYUVNclJDeEZRVUZSYUVjc1MwRkJTekpKTEU5QlFVOHdRaXhUUVVGdFFuSkZMRVZCUVUxc1J5eExRVUZMUlN4TFFVRk5RU3hMUVVGTGJVTXNSMEZCU1VZc1VVRkJVeXhIUVVkd1JuVklMRVZCUVZGMFNpeFZRVUZWY1Vjc1MwRkJUeXhYUVVOMlFpeEpRVUZKTmtVc1JVRkJXVllzUlVGRGFFSXNUMEZCVHpGTExFdEJRVXN3U2l4SlFVRkpMRmRCUTJRc1NVRkJTWHBHTEVWQlFVazJRaXhGUVVGSk5VSXNSVUZCVFRaQ0xFVkJRVTlETEVWQlFVOURMRVZCUVU5RExFVkJRM1pETEVkQlFVbHNSeXhMUVVGTE1Fc3NVMEZCVlN4RFFVTnFRaXhIUVVGSk1Vc3NTMEZCUzNWS0xGRkJRVlYyU2l4TFFVRkxNRXNzVTBGQlUwTXNUMEZCVVN4RFFVVjJReXhKUVVGTE1VY3NSVUZCU3l4RlFVRkhReXhIUVVSaU9FSXNSVUZCVVdoSExFdEJRVXR4U0N4alFVTmhOVWNzVDBGQlVYZEVMRVZCUVV0RExFVkJRVTFFTEV0QlF6TkRlVWNzUlVGQlZ6RkZMRVZCUVUwdlFpeEpRVU5TYjBnc1dVRkhXQ3hIUVVSQmNrd3NTMEZCUzNGSUxHRkJRV1VzUjBGRGQwSXNUMEZCZEVOeVNDeExRVUZMZFVvc1RVRkJVWFpLTEV0QlFVc3dTeXhUUVVGVFF5eFZRVUUwUkN4UFFVRjBRekZGTEVWQlFWRnFSeXhMUVVGTFZTeFJRVUZSTWtjc1kwRkJkMEp3UWl4RlFVRk5lRVlzV1VGQlV5eEhRVVZxU0N4SlFVRkxjVVlzUlVGQlN5eEZRVUZIUXl4SFFVUmlSeXhGUVVGUmJFY3NTMEZCUzFVc1VVRkJVVEpITEdOQlEwMDFSeXhQUVVGUmNVWXNSVUZCUzBNc1JVRkJUMFFzU1VGRE4wTnpSaXhGUVVGaGJFWXNSVUZCVFVvc1IwRkRia0kwUlN4RlFVRlhNVXNzUzBGQlN5dEtMRkZCUVZFdlNpeExRVUZMZFVvc1RVRkJUelpDTEVWQlFWbHdUQ3hMUVVGTGRVY3NUVUZEY2tSMlJ5eExRVUZMY1Vnc1lVRkJZVGxETEV0QlFVdHRSeXhIUVVrM1FpeFBRVUZQTVVzc1MwRkJTekJMTEZOQlFWTjZTU3hSUVVWeVFpeFBRVUZQYWtNc1MwRkJTMmxETEU5QlJXSnVReXhMUVVGTFJTeFJRVWRXZDBvc1JVRkJVWFJLTEZWQlFWVnZSeXhSUVVGVkxGZEJRekZDTEVsQlFVazBSQ3hGUVVGTll5eEZRVUZKVFN4RlFVRjFRa29zUlVGQlNVc3NSVUZCYjBKU0xFVkJRV1U1U1N4RlFVRlBaME1zUlVGQlNVTXNSVUZCVFRoQ0xFVkJRVTlETEVWQlFVOURMRVZCUXpOSExFZEJRVWxzUnl4TFFVRkxNRXNzVTBGQlZTeERRVWxxUWl4SlFVaEJla2tzUlVGQlVXcERMRXRCUVV0NVNpeFRRVUZUZWtvc1MwRkJTMjFETEVsQlF6TkNiMG9zUlVGQmNVSjJUQ3hMUVVGTFpTeFhRVUZYVGl4UFFVRlRMRVZCUlhwRE5rc3NSVUZCWVhKSUxFVkJRVXNzUlVGQlIwTXNSMEZFTVVJNFFpeEZRVUZSYUVjc1MwRkJTMlVzVjBGQlYzaENMRTFCUVUwc1IwRkJSMmxOTEZkQlEwMHZTeXhQUVVGUmQwUXNSVUZCUzBNc1JVRkJUVzlJTEVsQlFXVnlTQ3hGUVVWMlJTdEhMRVZCUVV0UExFVkJRWEZDUkN4RlFVVXhRa29zUjBGRVFXaENMRVZCUmxsc1JTeEZRVUZOYzBZc1IwRkZSRFZFTEUxQlFVMHNVVUZEWWtRc1VVRkRWbk5FTEVWQlFXZENMMHNzUzBGQlN6WktMSGRDUVVGM1Frc3NSVUZCVFdNc1NVRkRWQ3hQUVVGeVF5OUZMRVZCUVZGcVJ5eExRVUZMTkVJc1MwRkJTMklzVjBGQlYyMUxMRWxCUVdWcVJpeEZRVUZOU3l4aFFVRlZMRXRCUXk5RWNrVXNSMEZCVTJsRkxFVkJRVkZzUnl4TFFVRkxORUlzUzBGQlMySXNWMEZCVjIxTExFbEJRVXMxUlN4UlFVRlJiRWdzVFVGQlRUaEhMRVZCUVU4c1EwRkJRMnBGTEVkQlFVOHJSU3hQUVVGUE1VZ3NSVUZCVVZFc1MwRkJTMmxNTEUxQlIyaEhMRTlCUVU4dlN5eExRVUZMTUVzc1UwRkJVMlVzVTBGQlUzaEtMRXRCU1d4RGRVZ3NSVUZCVVhSS0xGVkJRVlZuUXl4TFFVRlBMRmRCUTNaQ0xFbEJRVWxyU2l4RlFVRlpWaXhGUVVGVmVrY3NSVUZCU1VNc1JVRkJUVGhDTEVWQlFVOURMRVZCUVU5RExFVkJTMnhFTEVkQlNrRnNSeXhMUVVGTE9Fb3NZMEZETmtJc1QwRkJOMEk1UkN4RlFVRlJhRWNzUzBGQlN6SkpMRTlCUVU5NlJ5eFBRVU4yUWpoRUxFVkJRVTFzUnl4TFFVRkxSU3hMUVVGTlFTeExRVUZMYlVNc1NVRkZUQ3hOUVVGa2JrTXNTMEZCUzNWS0xGRkJRVEJFTEU5QlFYUkRkRVFzUlVGQlVXcEhMRXRCUVV0VkxGRkJRVkV5Unl4alFVRjNRbkJDTEVWQlFVMTRSaXhaUVVGVExFZEJSWGhHTEVsQlFVdDNSQ3hGUVVGTExFVkJRVWRETEVkQlJHSm5ReXhGUVVGUmJFY3NTMEZCUzFVc1VVRkJVVEpITEdOQlEwczFSeXhQUVVGUmQwUXNSVUZCUzBNc1JVRkJUVVFzU1VGRE0wTnRTQ3hGUVVGaGJFWXNSVUZCVFdwRExFZEJRMjVDZVVjc1JVRkJWekZMTEV0QlFVc3JTaXhSUVVGUkwwb3NTMEZCUzNWS0xFMUJRVTgyUWl4RlFVRlpjRXdzUzBGQlMzVkhMRTFCUTNKRWRrY3NTMEZCUzNGSUxHRkJRV0U1UXl4TFFVRkxiVWNzUjBGSE0wSXNSMEZCU1RGTExFdEJRVXMwUWl4TFFVRkxVaXhaUVVOYUxFOUJRVTl3UWl4TFFVRkxkVWNzVVVGSmFFSnBSQ3hGUVVGUmRFb3NWVUZCVlhOSExFOUJRVk1zVjBGRGVrSXNTVUZCU1hGRkxFVkJRVWxZTEVWQlFVMWpMRVZCUVdNdlJ5eEZRVUZKUXl4RlFVRk5PRUlzUlVGQlQwTXNSVUZCVDBNc1JVRkJUME1zUlVGUk0wUXNTVUZRYjBNc1QwRkJMMEpJTEVWQlFWRm9SeXhMUVVGTE1ra3NUMEZCVDI1RExGTkJRM1pDVWl4RlFVRk5iRWNzUzBGQlMwVXNTMEZCVFVFc1MwRkJTMjFETEVsQlJVOHNUMEZCTVVJNFJDeEZRVUZSYWtjc1MwRkJTekJMTEZkQlEyaENla1VzUlVGQlRXOUdMRmxCUjBod1NDeEZRVUZMTEVWQlFVZERMRWRCUkdKblF5eEZRVUZSYkVjc1MwRkJTM0ZJTEdOQlEyRTFSeXhQUVVGUmQwUXNSVUZCUzBNc1JVRkJUVVFzU1VGRGFFTnBReXhGUVVGTmFrTXNSMEZEVW05SUxGbEJTVmdzU1VGQlMwd3NTMEZHVEdoTUxFdEJRVXR4U0N4aFFVRmxMRWRCUTNCQ2JFSXNSVUZCVVc1SExFdEJRVXRwU3l4dFFrRkhXQ3hKUVVGTFdTeExRVVJNV0N4RlFVRlBMMFFzUlVGQlRUWkZMRWRCUlVGa0xFVkJRVXRYTEVkQlExQlJMRmxCUjJJc1QwRkJUM0pNTEV0QlFVdHBTeXh0UWtGQmNVSXNTVUZIYmtOVUxFVkJRVkYwU2l4VlFVRlZiVWNzVDBGQlV5eFRRVUZUZUVVc1IwRkRiRU1zU1VGQlNXMUZMRVZCUVU5RExFVkJTMWdzVDBGS1l5eE5RVUZXY0VVc1NVRkRSa0VzUlVGQlV5eEpRVVZZTjBJc1MwRkJTM1ZLTEUxQlFXMURMRTlCUVRGQ2RrUXNSVUZCVVdoSExFdEJRVXN3U3l4VlFVRnZRakZGTEVWQlFVMHlSU3haUVVGVExFVkJRM1pDTEU5QlFTOUNNVVVzUlVGQlVXcEhMRXRCUVVzeVNTeFBRVUZQZEVNc1VVRkJhMEpLTEVWQlFVMXVSeXhMUVVGTFJTeExRVUZOTmtJc1VVRkJWU3hIUVVjelJUSklMRVZCUVZGMFNpeFZRVUZWZFVvc1UwRkJWeXhUUVVGVGRFZ3NSMEZEY0VNc1QwRkJTVzVETEV0QlFVc3lTU3hSUVVGdFF5eE5RVUY0UWpOSkxFdEJRVXN5U1N4UFFVRlBZeXhUUVVOMlFucEtMRXRCUVVzeVNTeFBRVUZQWXl4VFFVRlRNMG9zUzBGQlMwVXNTMEZCVFcxRExFZEJSV2hEZGtRc1JVRkJUM1ZGTEV0QlFVdEpMR05CUVdOd1FpeEpRVWs1UW5GSUxFVkJjazlSTEVkQmVVOXFRalZMTEVWQlFVOTVTeXhwUWtGQmJVSXNVMEZCVlhGRExFZEJSMnhETEZOQlFWTnlReXhGUVVGcFFucElMRVZCUVUxUExFVkJRVWxwUXl4SFFVTnNReXhKUVVGSmVVVXNSVUZCVjJoRExFVkJRV1U0UlN4RlFVRmpNVVFzUlVGQlQyaEZMRVZCUVVsRExFVkJRVTA0UWl4RlFVRlBReXhGUVdGd1JTeEpRVnBCYWtjc1MwRkJTelJDTEV0QlFVOUJMRVZCUTFvMVFpeExRVUZMYlVNc1IwRkJTMEVzUlVGRFZtNURMRXRCUVV0dlJTeExRVUZQUVN4RlFVTmFjRVVzUzBGQlMzZEhMRTlCUVZOMlNDeEZRVUZQWlN4TFFVRkxkMGNzVDBGQlVYaEhMRTFCUTJ4RFFTeExRVUZMYTBNc1MwRkJUMnBFTEVWQlFVOWxMRXRCUVV0clF5eExRVUZOYkVNc1RVRkRPVUpCTEV0QlFVczBUQ3hQUVVGVE0wMHNSVUZCVDJVc1MwRkJTelJNTEU5QlFWRTFUQ3hOUVVOc1EwRXNTMEZCUzNORExGVkJRVmwwUXl4TFFVRkxORUlzUzBGQlMyUXNWMEZCVjJRc1MwRkJTMjlGTEUxQlF6TkRjRVVzUzBGQllTeFBRVUZKTEVkQlEycENRU3hMUVVGTE5rd3NWVUZCV1N4SFFVTnFRamRNTEV0QlFVczRUQ3hyUWtGQmIwSXNSMEZEZWtKcVJpeEZRVUZuUW1wR0xFVkJRVXRwUml4blFrRkZhRUkxUXl4RlFVRkxMRVZCUVVkRExFZEJSR0k0UWl4RlFVRlJhRWNzUzBGQlMyMURMRWRCUVVjeVJ5eFpRVUZqTEVsQlEwcHlTU3hQUVVGUmQwUXNSVUZCUzBNc1JVRkJUVVFzU1VGRE0wTTBSU3hGUVVGWk4wTXNSVUZCVFM5Q0xFZEJRMkkwUXl4RlFVRmpMMElzUzBGQlN5dEVMRVZCUVZWSkxGRkJRMmhETUVNc1JVRkJaVE5NTEV0QlFVc3JUQ3hWUVVGVmJFUXNSVUZCVlVrc1RVRkRlRU5vUWl4RlFVRlJja29zUlVGQlR6UkdMRmRCUVZkSkxFMUJRVTFwUlN4RlFVRlZOVWNzVDBGRGRFTTNRaXhGUVVGVlRpeExRVUV5UXl4UFFVRnlRMjFITEVWQlFWRnFSeXhMUVVGTGMwTXNWVUZCYTBJc1VVRkJZVEpFTEVWQlFWRXNSMEZCU1RCR0xFbEJRV2xDTEVWQlF6TkdNMHdzUzBGQllTeFBRVUZGTWt3c1IwRkJaMEk1UXl4RlFVRlZOVWNzVFVGRGFFTm5SeXhGUVVGTk4wUXNUMEZCVTNoR0xFVkJRVTgwUml4WFFVRlhReXhOUVVGTlF5eFZRVU5vUkRGRkxFdEJRV0VzVDBGQlJUSk1MRWRCUVdkQ01VUXNSVUZCVFdoSExFMUJSWEpEYWtNc1MwRkJTelpNTEZWQlFWVkdMRWRCUVdkQ09VTXNSVUZCVlRWSExFOUJaMGhxUkN4UFFURkpRWFpETEVWQlFWVXlTaXhGUVVGclFuRkRMRWRCWjBNMVFuSkRMRVZCUVdsQ2Jrb3NWVUZCVlhGSExFdEJRVThzWVVGRmJFTTRReXhGUVVGcFFtNUtMRlZCUVZWdFJ5eFBRVUZUTEdGQlJYQkRaMFFzUlVGQmFVSnVTaXhWUVVGVmIwY3NVVUZCVlN4aFFVVnlReXRETEVWQlFXbENia29zVlVGQlZUQk1MRTlCUVZNc1YwRkRiRU1zU1VGQlNTOU1MRVZCUVVzMlN5eEZRVUZWYzBJc1JVRkJVUzlLTEVWQlFVOHJSQ3hGUVVGUFF5eEZRVWQ2UXl4SlFVRkxjRWNzUzBGR1RHMU5MRVZCUVZNc1IwRkRWR2hITEVWQlFWRm9SeXhMUVVGaExFOUJSVzVDYVVNc1JVRkJVU3RFTEVWQlFVMXVSeXhIUVVOa2JVMHNSVUZCVDI1TkxFZEJRVTl2UXl4RlFVZG9RaXhKUVVGTGNFTXNTMEZFVEc5SExFVkJRVkZxUnl4TFFVRkxOa3dzVlVGRldHNUNMRVZCUVZkNlJTeEZRVUZOY0Vjc1IwRkRha0p0VFN4RlFVRlBiazBzUjBGQlR6WkxMRVZCUVZONlNTeFJRVVY2UWl4UFFVRlBLMG9zUjBGSFZETkRMRVZCUVdsQ2Jrb3NWVUZCVlRaTUxGVkJRVmtzVTBGQlUyeElMRWRCUXpsRExFOUJRVTlCTEVWQlFVOXhSU3hSUVVGUkxGbEJRV0VzVTBGQlV5dERMRWRCUXpGRExFOUJRVTlCTEVWQlFWRXNSMEZCUjBNc2FVSkJTWFJDTjBNc1JVRkJhVUp1U2l4VlFVRlZaME1zUzBGQlR5eFhRVU5vUXl4SlFVRkplVVFzUlVGQlJ6bEdMRVZCUVVzNFJTeEZRVUZUSzBZc1JVRkJWVEZKTEVWQlFWRjBRaXhGUVVGVE9FSXNSVUZCVDI5RUxFVkJRVWRETEVWQlFVODFRaXhGUVVGSk5rSXNSVUZCU1RWQ0xFVkJRVTAyUWl4RlFVRlBReXhGUVVGUFF5eEZRVUZQUXl4RlFVRlBReXhGUVVGUFF5eEZRVUZQSzBZc1JVRkJUME1zUlVGRGFFa3NTVUZCUzNCTkxFdEJRVXR4VFN4TlFVRlBMRU5CUldZc1NVRkJTM2hOTEV0QlJFeHRSeXhGUVVGUmFFY3NTMEZCU3paTUxGVkJSVmhzU0N4RlFVRlZjVUlzUlVGQlRXNUhMRWRCUTJoQ1J5eExRVUZMTmt3c1ZVRkJWV2hOTEVkQlFVOUhMRXRCUVVzclNpeFJRVUZSTDBvc1MwRkJTelJDTEV0QlFVdERMRTlCUVZFNFF5eEZRVUZWTEZOQlFWVnBSQ3hIUVVOMlJTeFBRVUZQTEZOQlFWTXZTQ3hIUVVOa0xFOUJRVThzVjBGRFRDeFBRVUZQSzBnc1JVRkJUVEJGTEdOQlFXTjZTeXhQUVVGUGFFTXNSMEZCVHl0SUxFVkJRVTFwUlN4VlFVRlZhRTBzUjBGQlMyOURMRlZCU0U0c1EwRk5NMFJxUXl4TlFVRlBSaXhMUVVGTFJTeExRVUZOU0N4SlFVVjJRa2NzUzBGQlMzRk5MRTlCUVZFc1JVRkZaaXhIUVVFd1FpeE5RVUYwUW5KTkxFdEJRVXR6VFN4alFVTlFkRTBzUzBGQlMzTk5MR05CUVdOd1N5eFhRVU5rTEVOQlRVd3NTVUZNUVd4RExFdEJRVXR0UXl4SFFVRkhZU3hWUVVGWmFFUXNTMEZCUzNORExGVkJRVlZITEZOQlFWTXpReXhMUVVGTFJTeE5RVU5xUkhkRExFVkJRVkY0UXl4TFFVRkxjME1zVlVGQlZWY3NWMEZCVjI1RUxFdEJRVXRGTEV0QlFVMUJMRXRCUVV0dFF5eEhRVUZKYmtNc1MwRkJTelJNTEZWQlF6TkVOVXdzUzBGQlMyMURMRWRCUVVkcFNDeFJRVUZUTEVWQlEycENNVWtzUlVGQlZTeEhRVVZNZFVRc1JVRkJTeXhGUVVGSFF5eEhRVVJpSzBJc1JVRkJVWEpJTEVWQlFVOHJRaXhaUVVOWFJpeFBRVUZSZDBRc1JVRkJTME1zUlVGQlRVUXNTVUZCVFN4RFFVZHFSQ3hIUVVSQmRrUXNSVUZFUVhOQ0xFVkJRVk5wUlN4RlFVRk5hRU1zU1VGRFJ5eEhRVU5rYWtVc1MwRkJTM05ETEZWQlFWVk9MRWRCUldwQ0xFbEJRVXN5UkN4TFFVUk1UeXhGUVVGUmJFY3NTMEZCUzNORExGVkJRVlZPTEVkQlJYSkNORVFzUlVGQlNVMHNSVUZCVFZBc1IwRkRWbXBHTEVWQlFWRnpRaXhIUVVGUk1rUXNSMEZCUzBNc1JVRkpla0lzU1VGQlMwUXNTMEZFVEZFc1JVRkJVVzVITEV0QlFVczBRaXhMUVVGTFNTeEhRVVZvUWpSRUxFVkJRVWxQTEVWQlFVMVNMRWRCUXpCQ0xFOUJRUzlDUlN4RlFVRlJia1lzUlVGQlVYTkNMRWxCUVZNeVJDeExRVU0xUWtVc1JVRkJUVVlzUjBGQlMwTXNSMEZMYWtJc1NVRkJTMFVzUlVGQlN5eEZRVUZIUXl4SFFVUmlTeXhGUVVGUmVFZ3NSVUZCVHpoQ0xGTkJRMWxFTEU5QlFWRnhSaXhGUVVGTFF5eEZRVUZQUkN4SlFVVTNRM0JHTEVWQlJFRnpRaXhGUVVGVGIwVXNSVUZCVFU0c1NVRkRkVU1zVDBGQmJrTnhSeXhGUVVGUmJrMHNTMEZCUzNORExGVkJRVlZPTEVsQlFXMUNiVXNzUlVGQlVXNU5MRXRCUVVzMFFpeExRVUZMU1N4SFFVdHFSaXhKUVVGTGJrTXNTMEZJVEVjc1MwRkJTM05OTEdOQlFXZENMRWxCUVVreFRpeEZRVUZQZDBRc1MwRkJTekpGTEUxQlFVMDNSeXhWUVVGVldDeE5RVUZOVHl4TFFVRkxSU3hMUVVGTGJVTXNSMEZCUjI5SExGbEJRV0V2Uml4RlFVRlBPVUlzUjBGRE5VWldMRXRCUVV0elRTeGpRVUZqY0Vzc1QwRkRia0pyU3l4RlFVRlJjRTBzUzBGQlN6Wk1MRlZCUlZodVFpeEZRVUZYTUVJc1JVRkJUWFpOTEVkQlEycENSeXhMUVVGTE9Fd3NhMEpCUVd0Q2FrMHNSMEZCVDBjc1MwRkJTeXRLTEZGQlFWRXZTaXhMUVVGTGMwMHNZMEZCWTNwTExFOUJRVkZvUXl4RlFVRk5MRk5CUVZVclNDeEhRVU53Uml4UFFVRlBMRk5CUVZNdlNDeEZRVUZMTmtzc1IwRkRia0lzVDBGQlR5eFhRVU5NTEU5QlFVOUJMRVZCUVZObExGTkJRVk0zUkN4RlFVRk5NRVVzWTBGQlkzcExMRTlCUVU5b1F5eE5RVWhwUWl4RFFVMTRSVWNzVFVGQlQwWXNTMEZCUzBVc1MwRkJUVWdzUlVGQlN6WkxMRTFCUzJoRGNrSXNSVUZCYVVKdVNpeFZRVUZWYzBjc1QwRkJVeXhYUVVOc1F5eEpRVUZKTTBjc1JVRkJaVzFITEVWQlFVOURMRVZCUVU5RExFVkJSV3BETEVsQlFVdHlSeXhMUVVSTWJVY3NSVUZCVVdoSExFdEJRVXM0VEN4clFrRkZRVGxHTEVWQlFVMXVSeXhIUVVOU2Qwd3NXVUZIV0N4SlFVRkxlRXdzUzBGRVRHOUhMRVZCUVZGcVJ5eExRVUZMTmt3c1ZVRkZRVFZHTEVWQlFVMXdSeXhIUVVOU2Qwd3NXVUZGV0N4UFFVRjFReXhQUVVFdlFtNUdMRVZCUVZGc1J5eExRVUZMYzAwc1pVRkJlVUp3Unl4RlFVRk5UU3hQUVVGUE1VY3NTMEZCUzBVc1YwRkJVU3hIUVVkdVJYRktMRVZCTTBscFFpeERRVFpKZGtKNlN5eEZRVUZQTkVzc1UwRkZWalZMTEVWQlFVOHlUaXhaUVVGakxGTkJRVlZpTEVkQlJ6ZENMRk5CUVZOaExFVkJRVmt6U3l4RlFVRk5UeXhGUVVGSmFVTXNSVUZCVFU4c1JVRkJVMnBGTEVkQlF6VkRWaXhMUVVGTE5FSXNTMEZCVDBFc1JVRkRXalZDTEV0QlFVdHRReXhIUVVGTFFTeEZRVU5XYmtNc1MwRkJTMjlGTEV0QlFVOUJMRVZCUTFwd1JTeExRVUZMTWtVc1VVRkJWVUVzUlVGRFpqTkZMRXRCUVV0VkxGRkJRWEZDTEUxQlFWaEJMRVZCUVd0Q1FTeEZRVUZWTEVkQlF6TkRWaXhMUVVGTGRVY3NTMEZCVDNSSUxFVkJRVTlsTEV0QlFVdDFSeXhMUVVGTmRrY3NUVUZET1VKQkxFdEJRVXRsTEZkQlFXRm1MRXRCUVV0VkxGRkJRVkZMTEZsQlFXTXNSMEZETjBObUxFdEJRVXR4U0N4aFFVRmxMRWRCUTNCQ2NrZ3NTMEZCUzJsTExHMUNRVUZ4UWl4SFFXRTFRaXhQUVhoQ1FYWkxMRVZCUVZVMlRTeEZRVUZoWWl4SFFXTjJRbUVzUlVGQldYSk5MRlZCUVZWNVNTeFBRVUZUTEVOQlF6ZENNRUlzVVVGQlV5eFRRVUZUYmtRc1JVRkJUV3BHTEVkQlEzUkNMRTlCUVU5cFJpeEZRVUZMTTBVc1MwRkJaMElzVFVGQlZFNHNSVUZCWjBKQkxFVkJRVkVzUzBGSkwwTnpTeXhGUVVGWmNrMHNWVUZCVlhGSExFdEJRVThzVjBGRE0wSXNUMEZCVDJkSExFVkJRVmx3VFN4VlFVRlZiMGNzUzBGQlMyNUlMRTFCUVUxWkxFdEJRVTFZTEZsQlIzcERhMDRzUlVGNlFsa3NRMEV5UW14Q00wNHNSVUZCVHpSTExGTkJSVlkxU3l4RlFVRmxMRTlCUVVWcFF5eFJRVUZSY1VVc1MwRkJUeXhUUVVGVEwwTXNSVUZCU1VZc1IwRkRNME1zVDBGQmMwSXNUVUZCYkVKRkxFVkJRVWR4U3l4WlFVTkZja3NzUlVGQlIzRkxMRmxCUVhWQ0xFMUJRVlIyU3l4RlFVRm5Ra0VzUlVGQlVTeEhRVVY2UTBVc1JVRkJSM05MTEZWQlFYRkNMRTFCUVZSNFN5eEZRVUZuUWtFc1JVRkJVU3hKUVVsc1JISkVMRVZCUVdVc1QwRkJSV2xETEZGQlFWRTJUQ3hMUVVGUExGTkJRVk4yU3l4RlFVRkpSaXhIUVVNelF5eFBRVUZQUlN4RlFVRkhZU3hWUVVGeFFpeE5RVUZVWml4RlFVRm5Ra0VzUlVGQlVTeEpRVWRvUkhKRUxFVkJRV1VzVDBGQlJXbERMRkZCUVZFNFRDeExRVUZQTEZOQlFWTjRTeXhGUVVGSlJpeEhRVU16UXl4UFFVRlBSU3hGUVVGSGVVc3NUVUZCVFVNc1VVRkJWVFZMTEVWQlFWRXNSMEZCU3l4UlFVZDZRM0pFTEVWQlFXVXNUMEZCUldsRExGRkJRVkZwVFN4TFFVRlBMRk5CUVZNelN5eEZRVUZKUml4SFFVTXpReXhQUVVGUFJTeEZRVUZIZVVzc1RVRkJUVU1zVVVGQlZUVkxMRVZCUVZFc1QwRkJVeXhKUVVjM1EzSkVMRVZCUVdVc1QwRkJSV2xETEZGQlFWRnJUU3hSUVVGVkxGTkJRVk0xU3l4RlFVRkpSaXhIUVVNNVF5eFBRVUZQUlN4RlFVRkhOa3NzVlVGQldTOUxMRWRCUjNoQ2NrUXNSVUZCWlN4UFFVRkZhVU1zVVVGQlVXMU5MRk5CUVZjc1UwRkJVemRMTEVWQlFVbEdMRWRCUXk5RExFOUJRVTlGTEVWQlFVYzJTeXhYUVVGaEwwc3NSMEZIZWtKeVJDeEZRVUZsTEU5QlFVVnBReXhSUVVGUmQwUXNVVUZCVlN4RFFVTnFRMmxHTEZkQlFWY3NSVUZEV0ZZc1UwRkJWU3hKUVVOV01VY3NTMEZCVFN4VFFVRlRReXhIUVVOaUxFOUJRVTkyUkN4RlFVRlBkVVVzUzBGQlMwTXNWVUZCVldwQ0xFVkJRVWtzVTBGQlZXNURMRXRCUVV0elJ5eFZRVVZzUkVVc1QwRkJVU3hUUVVGVGNrVXNSMEZEWml4UFFVRlBka1FzUlVGQlQzVkZMRXRCUVV0SExGbEJRVmx1UWl4RlFVRkpMRk5CUVZWdVF5eExRVUZMYzBjc1ZVRkZjRVFyUkN4UlFVRlRMRk5CUVZOc1NTeEZRVUZKUml4SFFVTndRaXhKUVVGSkswUXNSVUZEU2l4TlFVRm5RaXhWUVVGYU4wUXNSVUZCUjJsRExFdEJRMFZxUXl4RlFVRkhhME1zVTBGQmFVTXNUMEZCY2tJeVFpeEZRVUZSTjBRc1JVRkJSMFlzVDBGQmFVSXJSQ3hGUVVGTmFVZ3NaMEpCUVdFc1RVRkJjMElzVFVGQlZHaE1MRVZCUVdkQ1FTeEZRVUZOWjB3c1owSkJRV0VzUjBGRk9VYzVTeXhGUVVGSGEwTXNWVUZCV1hCRExFbEJTelZDY2tRc1JVRkJaU3hQUVVGRmFVTXNVVUZCVVhGTkxGVkJRVmtzUTBGRGJrTTFSQ3hYUVVGWExFVkJRMWhXTEZOQlFWVXNTVUZEVmpGSExFdEJRVTBzVTBGQlUwTXNSMEZEWWl4UFFVRlBka1FzUlVGQlQzVkZMRXRCUVV0RExGVkJRVlZxUWl4RlFVRkpMRk5CUVZWdVF5eExRVUZMYzBjc1ZVRkZiRVJGTEU5QlFWRXNVMEZCVTNKRkxFZEJRMllzVDBGQlQzWkVMRVZCUVU5MVJTeExRVUZMUnl4WlFVRlpia0lzUlVGQlNTeFRRVUZWYmtNc1MwRkJTM05ITEZWQlJYQkVLMFFzVVVGQlV5eFRRVUZUYkVrc1JVRkJTVVlzUjBGRGNFSXNTVUZCU1N0RUxFVkJRMG9zVFVGQlowSXNWVUZCV2pkRUxFVkJRVWRwUXl4TFFVTkZha01zUlVGQlIydERMRk5CUVdsRExFOUJRWEpDTWtJc1JVRkJVVGRFTEVWQlFVZEdMRTlCUVdsQ0swUXNSVUZCVFdsSUxHZENRVUZoTEUxQlFYTkNMRTFCUVZSb1RDeEZRVUZuUWtFc1JVRkJUV2RNTEdkQ1FVRmhMRWRCUlRsSE9Vc3NSVUZCUjJ0RExGTkJRVmR3UXl4SlFVc3pRbkpFTEVWQlFXVXNUMEZCUldsRExGRkJRVkZ2UWl4TlFVRlJMRU5CUXk5Q2NVZ3NWMEZCVnl4RlFVTllWaXhUUVVGVkxFbEJRMVl4Unl4TFFVRk5MRk5CUVZORExFZEJRMklzUjBGQmNVSXNWVUZCWmtFc1JVRkJSMmRNTEZOQlFXMURMRlZCUVZwb1RDeEZRVUZIYVVNc1MwRkZha01zVDBGRVFYQkZMRXRCUVV0eFJDeE5RVUYxUWl4WFFVRm1iRUlzUlVGQlIyZE1MRkZCUVhWQ0xGTkJRVmNzVVVGRE0wTjJUeXhGUVVGUGRVVXNTMEZCUzBNc1ZVRkJWV3BDTEVWQlFVbHVReXhMUVVGTGNVUXNUVUZCVDNKRUxFdEJRVXR6Unl4VlFVZDBSRVVzVDBGQlVTeFRRVUZUY2tVc1IwRkRaaXhIUVVGeFFpeFZRVUZtUVN4RlFVRkhaMHdzVTBGQmJVTXNWVUZCV21oTUxFVkJRVWRwUXl4TFFVTnFReXhQUVVGUGVFWXNSVUZCVDNWRkxFdEJRVXRITEZsQlFWbHVRaXhGUVVGSmJrTXNTMEZCUzNGRUxFMUJRVTl5UkN4TFFVRkxjMGNzVlVGSGVFUXJSQ3hSUVVGVExGTkJRVk5zU1N4RlFVRkpSaXhIUVVOd1FpeEpRVUZKSzBJc1JVRkJSME1zUlVGQlNVTXNSVUZCVFRoQ0xFVkJRVTlETEVWQlFVOURMRVZCUVU4dlFpeEZRVU4wUXl4SFFVRnRRaXhWUVVGbWFFTXNSVUZCUjJkTUxGTkJRVzFETEZWQlFWcG9UQ3hGUVVGSGFVTXNTMEZETDBJc1QwRkJUMnBETEVWQlFVZHBUQ3hoUVVGaExGRkJRVk51VEN4SFFVTXpRaXhIUVVGeFFpeE5RVUZxUW1sQ0xFOUJRVTl3UlN4UlFVVm9RaXhIUVVSQmNVUXNSVUZCUzNKRUxFVkJRVTl4UkN4SlFVTkZMRTFCUVZSR0xFVkJRV2RDUVN4RlFVRk5aMHdzWjBKQlFXRXNUVUZCYlVNc1QwRkJja0pxU0N4RlFVRlJOMFFzUlVGQlIzZENMRTlCUVdsQ2NVTXNSVUZCVFdsSUxHZENRVUZoTEVkQlEyNUhMRTlCUVU4NVN5eEZRVUZIZDBJc1NVRkJZU3hOUVVGVU1VSXNSVUZCWjBKQkxFVkJRVkVzVTBGSGVFTXNSMEZCWjBJc2IwSkJRVnBGTEVWQlFVZHBReXhOUVVOTUxFZEJRV0VzVFVGQlZHNURMRVZCUVdVc1EwRkZha0lzU1VGRVFXdERMRVZCUVZjc1IwRkRUa1lzUlVGQlN5eEZRVUZIUXl4RlFVRlBMMElzUlVGQlJ6RkNMRTlCUVZGM1JDeEZRVUZMUXl4RlFVRk5SQ3hKUVVONFEwUXNSVUZCU1RkQ0xFVkJRVWM0UWl4SFFVTlFSU3hGUVVGVFNTeExRVUZMVUN4RlFVRkZUU3hWUVVGWk1rSXNSVUZCVVdwRExFVkJRVVV2UWl4TlFVRlBOMElzUlVGQlZVNHNTMEZCUzIxRExFVkJRVTluUlN4SlFVRlZMRWxCUlM5RkxFOUJRVTg1UWl4UlFVVktMRWxCUVdNc1RVRkJWR3hETEVWQlFXZENRU3hGUVVGTlowd3NaMEpCUVdFc1RVRkJiVU1zVDBGQmNrSXZSeXhGUVVGUkwwUXNSVUZCUjBZc1QwRkJhVUpwUlN4RlFVRk5LMGNzWjBKQlFXRXNSMEZETVVjc1QwRkJUemxMTEVWQlFVZEdMRTFCUVdsQ0xFMUJRVlJCTEVWQlFXZENRU3hGUVVGUkxFdEJUV3hFY2tRc1JVRkJaU3hQUVVGRmFVTXNVVUZCV1N4SFFVRkpMRU5CUXk5Q1owZ3NUMEZCVHl4RlFVTlFaU3hUUVVGVkxFbEJRMVl4Unl4TFFVRk5MRk5CUVZORExFZEJRMklzU1VGQlNYTkNMRVZCUVUwd1JDeEZRVU5XTEVkQlFXMUNMRTFCUVdadVNDeExRVUZMY1U0c1QwRlBVQ3hQUVU1Qk5Vb3NSVUZCVHl4RFFVRkRla1FzUzBGQlN6UkNMRXRCUVV0WUxFOUJRVkZxUWl4TFFVRkxiMFVzVFVGQlRXdEtMRXRCUVVzc1MwRkJTM0JGTEZGQlFWRXNTMEZCVFN4TFFVTTNSQzlDTEVWQlFXTm9SaXhGUVVGSGIwd3NZVUZCWVRsS0xFZEJRemxDZWtRc1MwRkJTM0ZPTEU5QlFWTXpTeXhUUVVGVE9Fc3NZMEZCWXl4WlFVRmplRTRzUzBGQlMyOUZMRXRCUVU4c1NVRkJUU3RETEVWQlFXTXNTMEZEYmtadVNDeExRVUZMY1Uwc1QwRkJVU3hGUVVOaWJFc3NSVUZCUjNOTUxHZENRVUZuUW1oTExFZEJRMjVDZEVJc1JVRkJSMmxITEZkQlFWZERMR0ZCUVdGeVNTeExRVUZMY1U0c1QwRkJVV3hNTEVkQlEycERRU3hGUVVGSGFVY3NWMEZCVjNSR0xGbEJRVmxZTEVsQlIzSkRjVVVzVDBGQlVTeFhRVU5PTEVkQlFVbDRSeXhMUVVGTE1FNHNUMEZGVUN4UFFVUkJNVTRzUzBGQlN6Qk9MRTlCUVU5c1NDeFRRVU5NZUVjc1MwRkJTM0ZOTEU5QlFWRXNSMEZIZUVKb1F5eFJRVUZUTEZOQlFWTnNTU3hGUVVGSlJpeEhRVU53UWl4SlFVRkpjRU1zUlVGQlN6QktMRVZCUVU4eFNDeEZRVUZSYlVVc1JVRkRlRUlzUzBGQlRTOUVMRWxCUVZkcVF5eExRVUZMY1Uwc1RVRkJUeXhEUVVNelFpeEhRVUZKY0Vzc1JVRkJUeXhEUVVkVUxFbEJRVXR3UXl4TFFVWk1aME1zUlVGQlV5eEhRVU5VYlVVc1JVRkJVV2hITEV0QlFVczBRaXhMUVVGTFF5eFBRVVZvUWpCSUxFVkJRVkYyUkN4RlFVRk5ia2NzUjBGRFpHZERMRVZCUVU5b1F5eEhRVUZQTUVvc1JVRkphRUlzVDBGR1EzWktMRXRCUVVzd1RpeFRRVUZYTVU0c1MwRkJTekJPTEU5QlFWTXNTVUZCU1RsUExFVkJRVTkzUkN4TFFVRkxSQ3hGUVVGSlRpeEZRVUZSTjBJc1MwRkJTelJDTEV0QlFVdHNRaXhoUVVGaGQwSXNUMEZEYkVac1F5eExRVUZMY1U0c1QwRkJUMnBHTEZkQlFWZERMR0ZCUVdGc1J5eEZRVUZKYmtNc1MwRkJTM0ZPTEU5QlFVOU5MR0ZCUXpkRE0wNHNTMEZCUzNGTkxFOUJRVkVzUlVGSmNFSXNUMEZHUVd4TExFVkJRVWRwUnl4WFFVRlhkRVlzV1VGQldWZ3NSMEZETVVKdVF5eExRVUZMTUU0c1QwRkJUMnhJTEZOQlEweDRSeXhMUVVGTGNVMHNUMEZCVVN4SlFVa3hRbWhITEU5QlFWRXNVMEZCVTNoRkxFZEJRMllzU1VGQlNXMUZMRVZCUTBvc1QwRkJaME1zVDBGQmVFSkJMRVZCUVZGb1J5eExRVUZMTUU0c1VVRkJhMEl4U0N4RlFVRk5TeXhQUVVGUGVFVXNVVUZCVlN4SlFVbHNSV3BFTEVWQlFXVXNUMEZCUldsRExGRkJRVkVyVFN4UFFVRlRMRU5CUTJoREwwWXNUMEZCVHl4RlFVTlFaU3hUUVVGVkxFbEJRMVl4Unl4TFFVRk5MRk5CUVZORExFZEJRMklzVDBGQlQzWkVMRVZCUVdVc1QwRkJSV2xETEZGQlFWa3NSMEZCUlhGQ0xFdEJRVXR3UXl4TFFVRkxSU3hMUVVGTmJVTXNTVUZGZUVSeFJTeFBRVUZSTEZkQlEwNHNUMEZCVHpWSUxFVkJRV1VzVDBGQlJXbERMRkZCUVZrc1IwRkJSVEpHTEU5QlFVOHhSeXhMUVVGTFJTeFBRVVZ3UkhGTExGRkJRVk1zVTBGQlUyeEpMRVZCUVVsR0xFZEJRM0JDTEU5QlFVOXlSQ3hGUVVGbExFOUJRVVZwUXl4UlFVRlpMRWRCUVVWM1NpeFJRVUZSZGtzc1MwRkJTMFVzUzBGQlRXMURMRWRCUVV0R0xFbEJSV2hGYjBVc1QwRkJVU3hUUVVGVGVFVXNSMEZEWml4UFFVRlBha1FzUlVGQlpTeFBRVUZGYVVNc1VVRkJXU3hIUVVGRmQwWXNUMEZCVDNaSExFdEJRVXRGTEV0QlFVMDJRaXhMUVVrMVJHcEVMRVZCUVdVc1QwRkJSV2xETEZGQlFWRXNVVUZCVlN4RFFVTnFRMmRPTEZWQlFWa3NSVUZEV21wR0xGTkJRVlVzU1VGRFZuQkRMRTlCUVZFc1UwRkJVM0pGTEVkQlEyWXNSMEZCU1c1RExFdEJRVXQzUWl4UlFVTlFMRTlCUVU4MVF5eEZRVUZQZFVVc1MwRkJTMGNzV1VGQldXNUNMRVZCUVVsdVF5eExRVUZMYTBzc1MwRkJTeXhIUVVGSmJFc3NTMEZCUzNkQ0xGVkJSekZFTmtrc1VVRkJVeXhUUVVGVGJFa3NSVUZCU1VZc1IwRkpjRUlzVDBGSVNXcERMRXRCUVV0M1FpeFRRVU5RTlVNc1JVRkJUM1ZGTEV0QlFVdEhMRmxCUVZsdVFpeEZRVUZKYmtNc1MwRkJTMnRMTEV0QlFVc3NSMEZCU1d4TExFdEJRVXQzUWl4VFFVVXhRelZETEVWQlFVOTFSU3hMUVVGTFF5eFZRVUZWYWtJc1JVRkJTVzVETEV0QlFVdHJTeXhMUVVGTExFZEJRVWxzU3l4TFFVRkxkMElzVVVGQlZYaENMRXRCUVVzeVNpeGhRVUZoTVVnc1RVRkpjRVp5UkN4RlFVRmxMRTlCUVVWcFF5eFJRVUZSTEZWQlFWa3NRMEZEYmtOblNDeFBRVUZQTEVWQlExQmxMRk5CUVZVc1NVRkRWakZITEV0QlFVMHNVMEZCVTBNc1IwRkRZaXhKUVVGSmMwSXNSVUZCV1ZFc1JVRkJTVU1zUlVGQlRUaENMRVZCUXpGQ0xFZEJRVzFDTEUxQlFXWm9SeXhMUVVGTGNVNHNUMEZEVURWS0xFVkJRVThzUTBGQlEzcEVMRXRCUVVzMFFpeExRVUZMV0N4UFFVRlJha0lzUzBGQlMyOUZMRTFCUVUxclNpeExRVUZMTEV0QlFVdHdSU3hSUVVGUkxFdEJRVTBzUzBGRE4wUnNTaXhMUVVGTGNVNHNUMEZCVXpOTExGTkJRVk00U3l4alFVRmpMRmxCUVdONFRpeExRVUZMYjBVc1MwRkJUeXhMUVVNdlJIQkZMRXRCUVVzNFRpeFRRVUZYTEVkQlEyaENNMHdzUlVGQlIzTk1MR2RDUVVGblFtaExMRWRCUTI1Q2RFSXNSVUZCUjJsSExGZEJRVmRETEdGQlFXRnlTU3hMUVVGTGNVNHNUMEZCVVd4TUxFZEJRM2hEUVN4RlFVRkhhVWNzVjBGQlYzUkdMRmxCUVZsWUxGRkJSekZDTEVsQlFVczRRaXhGUVVGTExFVkJRVWRETEVkQlJHSTRRaXhGUVVGUmFFY3NTMEZCU3poT0xGVkJRMkZ5VGl4UFFVRlJkMFFzUlVGQlMwTXNSVUZCVFVRc1NVRkRjRU1yUWl4RlFVRk5MMElzUjBGRFVpOUNMRkZCU1ZoelJTeFBRVUZSTEZOQlFWTnlSU3hIUVVObUxFbEJRVlU0UWl4RlFVRkpReXhGUVVGTk9FSXNSVUZEY0VJc1IwRkJjVUlzVFVGQmFrSm9SeXhMUVVGTE9FNHNVMEZGVUN4SlFVRkxOMG9zUlVGQlN5eEZRVUZIUXl4SFFVUmlPRUlzUlVGQlVXaEhMRXRCUVVzNFRpeFZRVU5oY2s0c1QwRkJVWGRFTEVWQlFVdERMRVZCUVUxRUxFbEJRM0JESzBJc1JVRkJUUzlDTEVkQlExSjFReXhWUVVsWU5rUXNVVUZCVXl4VFFVRlRiRWtzUlVGQlNUUk1MRWRCUTNCQ0xFbEJRVWx3VFN4RlFVRlRXU3hGUVVGVE5rTXNSVUZCVDNaR0xFVkJRVXN3U2l4RlFVRlBhRWtzUlVGQlYySXNSVUZCVTNOT0xFVkJRVlYyVEN4RlFVRlZZaXhGUVVGTmNVTXNSVUZCU1RaQ0xFVkJRVWwzUXl4RlFVRkpjRVVzUlVGQlRUWkNMRVZCUVU5clNTeEZRVUZQYWtrc1JVRkJUME1zUlVGQlQwTXNSVUZIY2trc1IwRkdRVE5GTEVWQlFWbDJRaXhMUVVGTGEwc3NTMEZCU3l4SFFVTjBRalpFTEVWQlFXRkJMRWRCUVdNc1IwRkRka0l2VGl4TFFVRkxPRTRzVTBGQlUzSk9MRTlCUVZOelRpeEZRVUZYZEU0c1QwRkZjRU1zU1VGQlMzZEVMRVZCUVVzc1JVRkJSME1zUjBGRVlqaENMRVZCUVZGbExFMUJRVTB2Unl4TFFVRkxPRTRzVTBGQlUzSk9MRTlCUVZOelRpeEZRVUZYZEU0c1UwRkRkRUpCTEU5QlFWRjNSQ3hGUVVGTFF5eEZRVUZOUkN4SlFVTjJReXRDTEVWQlFVMHZRaXhKUVVOV2NrTXNSVUZCVHpWQ0xFdEJRVXM0VGl4VFFVRlRTU3hQUVVOb1FqRklMRk5CUTB4NFJ5eExRVUZMY1U0c1QwRkJUMnBHTEZkQlFWZDBSaXhaUVVGWmJFSXNSVUZCU3poRUxFbEJRVWtzU1VGSGFFUXNTVUZCUzA0c1JVRkJVVlVzUlVGQlN5eEZRVUZIUXl4RlFVRlJaMGtzUlVGQlYzUk9MRTlCUVZGeFJpeEZRVUZMUXl4RlFVRlBXQ3hKUVVGVlZTeEZRVTl3UlN4SFFVNUJlVVFzUlVGQlVYZEZMRVZCUVZjelNTeEpRVU51UWpkRExFVkJRVThzUTBGRFREWkRMRTFCUVU5QkxFbEJSVXA0Unl4RlFVRmxMRTlCUVVVd1F5eGxRVUZsUXl4SlFVRmpOa1FzUlVGRGJrUTNReXhGUVVGTGFFSXNSMEZCWVdkSkxFVkJRMVVzVFVGQmVFSjJTaXhMUVVGTE9FNHNVMEZCVXpGSkxFZEJRV2RDTEVOQlJXaERMRWxCUVV0MlJpeExRVVJNYjBjc1JVRkJVV3BITEV0QlFVczBRaXhMUVVGTFF5eFBRVVZvUWpCSUxFVkJRVkYwUkN4RlFVRk5jRWNzUjBGRFJ5eE5RVUZpTUVNc1JVRkJTekZETEV0QlExQXdReXhGUVVGTE1VTXNSMEZCVHpCS0xFZEJSMmhDZVVVc1JVRkJWMmhQTEV0QlFVczRUaXhUUVVGVGNrNHNUMEZCVTFRc1MwRkJTemhPTEZOQlFWTTVUaXhMUVVGTE9FNHNVMEZCVTNKT0xFOUJRVk1zUjBGQlIybEdMRWxCUVVrc1IwRkJTekZHTEV0QlFVdHhUaXhSUVVONFJqTk5MRVZCUVZWV0xFdEJRVXMwUWl4TFFVRkxiRUlzVjBGRFdsVXNZVUZCWXl4RlFVTjBRbkZDTEVWQlFWZE9MRVZCUVVkblRTeFhRVUZWTEVsQlEzaENkazBzUlVGQlR5eEpRVUZKYUVRc1JVRkJUM2RFTEV0QlFVdExMRVZCUVZWR0xFVkJRVTAzUWl4SlFVTnNRM2RDTEU5QlEweHNReXhMUVVGTE9FNHNVMEZCVTNaS0xFdEJRVXN6UXl4SFFVTnVRalZDTEV0QlFVdHhUaXhQUVVGUGFrWXNWMEZCVjBNc1lVRkJZVFZHTEVWQlFWVjFUQ3hGUVVGVFRDeHJRa0ZET1VNelRpeExRVUZMT0U0c1UwRkJVekZKTEVkQlFVOTJSQ3hQUVVGUFRpeExRVUZsWjBrc1IwRkRjRVIyU2l4TFFVRkxPRTRzVTBGQlV6RkpMRWRCUVU5cFFpeFBRVUZQT1VRc1IwRkhhRU1zUjBGQmIwSXNWMEZCYUVKS0xFVkJRVWMyUnl4VFFVVk1MRWxCUVV0V0xFVkJRVXNzUlVGQlJ6SkdMRWRCUkdJdlNDeEZRVUZSYkVjc1MwRkJTelJDTEV0QlFVc3JSaXhWUVVOVGJFZ3NUMEZCVVRaSUxFVkJRVXN5Uml4RlFVRlBNMFlzUzBGRE4wTXpSeXhGUVVGVmRVVXNSVUZCVFc5RExFbEJRMHB1Unl4TFFVRlBia01zUzBGQlMzRk9MRTlCUVU5cVJpeFpRVUVyUWl4VlFVRnFRbnBITEVWQlFWRjVReXhOUVVOdVJIcERMRVZCUVZFMFJTeFJRVXRvUWtZc1QwRkJVU3hUUVVGVGVFVXNSMEZEWml4SlFVRkpWU3hGUVVGTk1VTXNSVUZCU3pCS0xFVkJRV0YwUml4RlFVRkpReXhGUVVGTk9FSXNSVUZGZEVNc1NVRkJTMjVITEV0QlJFd3dReXhGUVVGUExFZEJRMHRXTEVWQlExWXdTQ3hGUVVGUk1VZ3NSVUZCVDJoRExFZEJRMWhCTEVsQlFWRkhMRXRCUVV0clN5eExRVUZMTEV0QlEzQkNNMGdzUlVGQlN6RkRMRWRCUVU4d1NpeEhRVWxvUWl4SlFVRkxkRVlzUlVGQlN5eEZRVUZIUXl4SFFVUmlPRUlzUlVGQlVXaEhMRXRCUVVzNFRpeFZRVU5oY2s0c1QwRkJVWGRFTEVWQlFVdERMRVZCUVUxRUxFbEJRM0JESzBJc1JVRkJUUzlDTEVkQlExSnZReXhQUVVGUE9VUXNTMEZMYkVJelJDeEZRVUZsTEU5QlFVVnBReXhSUVVGUkxGZEJRV0VzVTBGQlUzTkNMRVZCUVVsR0xFZEJRMnBFTEVsQlFVbHRUU3hGUVVWS0xFbEJRVXR1VFN4TFFVRXdSQ3hMUVVRdlJHMU5MRVZCUVZVc1NVRkJUV3BOTEVWQlFVZHJUU3hWUVVGWkxFdEJRMUJvVHl4UlFVRlJMRWxCUVUxTUxFdEJRVXRyU3l4TFFVRkxMRWRCUVVzc1RVRkRia1FzVDBGQlR5OUlMRVZCUVVkclRTeFZRVUZaY0Uwc1JVRkJZVVVzUlVGQlIydE5MRlZCUVZrc1NVRkJUWEpQTEV0QlFVdHJTeXhMUVVGTExFZEJRVXRyUlN4RlFVRlJiRVlzVVVGQlVTeEpRVUZOYkVvc1MwRkJTMnRMTEV0QlFVc3NSMEZCU3l4SlFVRkxMRXRCUVV0NlJTeFJRVWt4U0RkSExFVkJRV1VzVDBGQlJXbERMRkZCUVZFc1MwRkJUeXhUUVVGVGMwSXNSVUZCU1VZc1IwRkRNME1zVDBGQllTeE5RVUZVUVN4RlFVTkxSU3hGUVVGSGFVd3NZVUZCWVhCT0xFdEJRVXR2UlN4TFFVRk5ia01zUjBGRk0wSkZMRVZCUVVkelRDeG5Ra0ZCWjBKNlRpeExRVUZMYjBVc1QwRkpia040Uml4RlFVRmxMRTlCUVVWdFF5eFhRVUZwUWl4TFFVRkpMRmRCUTNCRExFbEJRVWx0U2l4RlFVRk5ha2tzUlVGRlZpeFBRVVJCUVN4RlFVRlJOVU1zVlVGQlZTeEhRVUZKTmtzc1JVRkJUeXhIUVVGTE4wc3NWVUZCVlc5Q0xFOUJRVk51UWl4RlFVRlJVU3hMUVVGTFZDeFZRVUZYTEVkQlFVc3NSMEZETTBVMFF5eEZRVUZOYmtNc1MwRkJTMVlzVFVGQlRUWkRMRVZCUVU4c1EwRkJRMnBETEUxQlFVMW5TQ3hQUVVGUE1VZ3NSVUZCVVZFc1MwRkJTMjlMTEUxQlJ6VkVkRXdzUlVGQlpTeFBRVUZGYjBNc1UwRkJVeXhMUVVGUExFTkJReTlDYTBzc1IwRkJTU3hOUVVOS2IwUXNVVUZCVXl4RlFVTlVReXhSUVVGVExFZEJRMVJETEdOQlFXVXNVMEZCVTJ4RkxFZEJRM1JDTEVsQlFVbFpMRVZCUVVseVJpeEZRVUZQTkVrc1JVRlBaaXhQUVU1TGJrVXNSVUZCU1RkTExHVkJRV1ZQTEV0QlFVdHJUQ3hOUVVNelFrRXNSVUZCUzJ4TUxFdEJRVXR6VHl4VlFVTldTU3hQUVVGUFF5eGxRVUZsY2tVc1JVRkJTM1JMTEV0QlFVdHJUQ3hIUVVGSkxFTkJRMnhEYWtvc1RVRkJUMmxLTEUxQlIwaHlSaXhGUVVGUk4wWXNTMEZCUzNWUExGTkJRVk5GTEVWQlFWRnVSU3hGUVVGSmRFc3NTMEZCUzJ0TUxFOUJRVk55Uml4RlFVRk5ORWtzUjBGQlV5eERRVU55UlVjc1ZVRkJWeXhOUVVkbVF5eHhRa0ZCYzBJc1UwRkJVME1zUlVGQlN6VkVMRWRCUTJ4RExFdEJRVXQzUkN4UFFVRlBTeXhMUVVGTFJDeEZRVUZKUml4WFFVRlhiazhzVVVGRGVFSnhUeXhGUVVGSlJTeFZRVUZaVGl4UFFVRlBTeXhMUVVGTFJDeEZRVUZKUlN4VlFVRlZkazhzVVVGRE9VTXNZMEZCWTFRc1MwRkJTM1ZQTEZGQlFWRnlSQ3hKUVVscVF5dEVMR0ZCUVdNc1UwRkJVek5GTEVWQlFVdHdUQ3hIUVVNeFFpeEpRVUZKWjFFc1JVRkJTME1zUlVGQlZWb3NSVUZKYmtJc1QwRklRVmtzUlVGQlZ6ZEZMRVZCUVVsd1RDeEhRVU5tWjFFc1JVRkJUV3hRTEV0QlFVdDNUeXhqUVVGamJFVXNSMEZEZWtKcFJTeEZRVUZWZGs4c1MwRkJTM1ZQTEZGQlExSnFSU3hGUVVGSmNFd3NSMEZCVFN4WFFVTm1MRWxCUVdONVJ5eEZRVUZIZVVvc1JVRkJSME1zUlVGQlZYQk1MRVZCUVVsRExFVkJRVTA0UWl4RlFVRlBReXhGUVVGUFF5eEZRVUZQUXl4RlFVYzNSQ3hKUVVGTGFVb3NTMEZHVEVNc1JVRkJWMFlzUlVGQlV5OVFMRTFCUVUxclRDeEZRVUZMYWt3c1YwRkRMMEl5Unl4RlFVRlJhMG9zUlVGQlNVWXNVMEZKVml4SlFVWkJja29zUlVGQlNVc3NSVUZCVFc5S0xFZEJSVXh1VEN4RlFVRkxMRVZCUVVkRExFZEJSR0pwUXl4RlFVRm5SaXhQUVVGMlJVWXNSVUZCWjBNc1QwRkJka0pETEVWQlFWRnhTU3hGUVVGUllTeEpRVUZqYkVvc1JVRkJUVEJKTEZWQlFWVnFTaXhSUVVGTExFZEJRV3RDVFN4RlFVRlJMRWxCUTNKRmVFWXNUMEZCVVhkRUxFVkJRVXRETEVWQlFVMUVMRXRCUXpORGMwY3NSVUZCVjNCRkxFVkJRVTFzUXl4TlFVbHlRaXhQUVVGUGIwd3NTVUZIV0VNc2FVSkJRV3RDTEZOQlFWTm9SaXhGUVVGTGQwVXNSVUZCUzI1TExFZEJRMjVETEVsQlFVbDZSaXhGUVVGSmNWRXNSVUZCVjB3c1JVRkJTM0pLTEVWQlFVODFRaXhGUVVGSlF5eEZRVU51UXl4SFFVRkpOa01zVFVGQlRYbEpMRkZCUVZGc1JpeEhRVUZOTEVOQlJYUkNMRWRCUVc5Q0xFOUJSSEJDTkVVc1JVRkJUV3hRTEV0QlFVdDNUeXhqUVVGamJFVXNTVUZEYWtJd1JTeFRRVWRPTEVsQlJrRkZMRVZCUVVsR0xGTkJRVmNzUjBGRlZpOUxMRVZCUVVzc1JVRkJSME1zUjBGRVluRk1MRVZCUVZrc1EwRkJReXhQUVVGUkxFMUJRVThzVVVGQlV5eFZRVUZYTEU5QlFWRXNWVUZCVnl4WFFVTnlRemxQTEU5QlFWRjNSQ3hGUVVGTFF5eEZRVUZOUkN4SlFVTXZReTlGTEVWQlFVdHhVU3hGUVVGVmRFd3NSMEZEWm1wRkxFdEJRVXRwVUN4aFFVRmhNMFVzUlVGQlMzQk1MRWRCVFROQ0xFZEJTRzFETEU5QlFUbENNa2NzUlVGQlVYRktMRVZCUVVsR0xGVkJRVlZHTEV0QlEzcENha29zUlVGQlRXbEtMRWRCUVU4c1NVRkZXREZQTEVWQlFWVk9MRXRCUVV0dlVDeEZRVUZKUml4VFFVRlRSaXhIUVVGTmJrc3NSMEZCVnl4RlFVTXZReXhQUVVGUGRVc3NSVUZCU1VZc1UwRkJVMFlzUjBGQlMzWkxMRXRCUVV0SkxFdEJTWEJET0Vzc2JVSkJRVzlDTEZOQlFWTnVSaXhGUVVGTGQwVXNSVUZCUzI1TExFZEJRM0pETEVsQlFVa3JTeXhGUVVGTFVpeEZRVUZMUml4RlFVTmtMRWRCUVVscVNTeE5RVUZOZVVrc1VVRkJVV3hHTEVsQlFYbENMRTFCUVdoQ1FTeEZRVUZKZEVzc1MwRkJTMnRNTEUxQlF6bENaMFVzUlVGQlRXeFFMRXRCUVV0MVR5eFJRVUZSYWtVc1JVRkJTWFJMTEV0QlFVdHJUQ3hSUVVNeFFqaEVMRVZCUVZkRkxFVkJRVWxHTEZOQlFWTkdMRWxCVHpGQ0xFOUJUa3RaTEVWQlFVMVdMRVZCUVZNelR5eFJRVUZSYzBVc1MwRkJZU3hIUVVOMlEzRkxMRVZCUVZOWExFOUJRVTlFTEVWQlFVc3NSMEZGYkVKV0xFVkJRVk4yVHl4bFFVTk1lVThzUlVGQlNVWXNVMEZCVTBZc1IwRkZaamxQTEV0QlFVczJUeXh4UWtGQmNVSkxMRVZCUVVzMVJTeEZRVUZKZEVzc1MwRkJTMnRNTEUxQlMzWkVia0lzVVVGQlV5eFRRVUZUVHl4RlFVRkxNMFlzUlVGQlV6UkdMRWRCUXpsQ0xFbEJRVWx4UlN4RlFVRlhaMElzUlVGQlRUTk9MRVZCV1VFeVJpeEZRVFJDY2tJc1QwRjBRekJDTEU5QlJERkNaMGdzUlVGQldUVlBMRXRCUVV0M1R5eGpRVUZqYkVVc1IwRkJTM05GTEZkQlEzUkNha3NzUzBGRFdtbExMRVZCUVZWcVN5eEhRVUZYTEVsQlJVNHNUMEZFWm1sTUxFVkJRVTlzUWl4UFFVRlBiVUlzZVVKQlFYbENka1lzUlVGQlN6TkdMRWxCUTNSQ2FVd3NSVUZCUzBVc1UwRkJUU3hMUVVGdlFpeE5RVUZTUml4RlFVRmxRU3hGUVVGTGJFY3NVMEZCVFN4TFFVTnlSWHBJTEVWQlFWRnhTU3hGUVVGSk0wWXNSMEZEV2l0S0xFOUJRVTlETEdWQlFXVnlSU3hGUVVGTE0wWXNSVUZCVXl4RFFVTnNRMjlNTEZsQlFWa3NSVUZEV2tRc1NVRkJTeXhYUVVOSUxFOUJRVTgzVGl4SFFVVlVlVWdzUzBGQlpUbENMRVZCY1VKYU5VZ3NTMEZ3UWswc1UwRkJVMmRSTEVkQlEyUXNTVUZCU1VNc1JVRkJTV1lzUlVGQlMycE1MRVZCUVVsRExFVkJRVTA0UWl4RlFVTjJRaXhIUVVGSlowc3NTVUZCWVM5T0xFbEJRMll5Uml4RlFVRk5Oa2dzYlVKQlFXMUNlRTRzUlVGQlQzRkpMRVZCUVVreFF5eEZRVUZOYzBRc1NVRkJTM1pITEVkQlF5OURNVU1zUlVGQlVTdE9MRVZCUTBwa0xFVkJRVTEwU0N4RlFVRk5Na2NzVVVGQlVXcEZMRVZCUVVreFF5eEZRVUZOYzBRc1RVRkJUU3hEUVVWMFF5eEpRVVJCTUVRc1JVRkJXVTBzUlVGQlNVNHNWMEZEUm1wTExFZEJSVm9zU1VGQlMxWXNSVUZCU3l4RlFVRkhReXhIUVVSaU9FSXNSVUZCVVRSSkxFVkJRVlZxU3l4SFFVRlRjRVlzVTBGRFJHdENMRTlCUVZGM1JDeEZRVUZMUXl4RlFVRk5SQ3hKUVVNelEyZE5MRVZCUVV0cVN5eEZRVUZOTDBJc1IwRkRVRGRFTEVWQlFWVk9MRXRCUVVzNFR5eEZRVUZWYWtzc1IwRkJWWE5NTEVsQlFVOHNSMEZETlVOQkxFbEJTVTRzVDBGQlQzSkpMRVZCUVUwd1NDeHBRa0ZCYVVKVkxFVkJRVlV4Uml4RlFVRkpNVU1zUlVGQlRYTkVMRWxCUVV0MlJ5eFZRVkZxUlhaRkxFVkJRVlZPTEV0QlFVczRUeXhGUVVGVmFrc3NSMEZCVlRSR0xFZEJRVmtzUjBGRGFrUnhSU3hGUVVGVmFrc3NSMEZCVTBvc1MwRkJTMmRITEVkQlJXNUNka3NzUzBGQlMzTlFMR2xDUVVGcFFtaEdMRVZCUVVrelJpeEhRVUZWTWtZc1JVRkJTWFJMTEV0QlFVdHJUQ3hKUVVGTGRrY3NTVUZGTTBRd1J5eFZRVUZYTEZOQlFWTm1MRVZCUVVzelJpeEZRVUZUTkVZc1IwRkRhRU1zU1VGQlNYRkZMRVZCUVZkakxFVkJRVXRTTEVWQlEzQkNMRWxCUVVsQkxFVkJRVTFzVUN4TFFVRkxkVThzVVVGQlVXcEZMRVZCUVVsMFN5eExRVUZMYTB3c1VVRkRNVUl3UkN4RlFVRlpUU3hGUVVGSlRpeFZRVUZWYWtzc1NVRlJOVUlzVDBGUVN5dExMRVZCUVUxa0xFVkJRVlYyVHl4UlFVRlJhMHNzUzBGQll5eEpRVU42UTNGRkxFVkJRVlZsTEU5QlFVOUVMRVZCUVVzc1IwRkRha0prTEVWQlFWVnVUeXhuUWtGRFRubFBMRVZCUVVsT0xGVkJRVlZxU3l4SFFVTnlRak5GTEV0QlFVdDVVQ3h0UWtGQmJVSnVSaXhGUVVGSk0wWXNSMEZCVlRKR0xFVkJRVWwwU3l4TFFVRkxhMHdzU1VGQlMzWkhMRXRCUjJwRU0wVXNTMEZCU3paUExIRkNRVUZ4UWtzc1JVRkJTelZGTEVWQlFVbDBTeXhMUVVGTGEwd3NUVUZKY2tRMFJTeEpRVUZMTEZOQlFWTjRSaXhGUVVGTE0wWXNSMEZEYWtJc1QwRkJUekpHTEVWQlFVa3pSaXhKUVVWaUswVXNTVUZCU3l4VFFVRlRXU3hGUVVGTE0wWXNSVUZCVXpGRExFZEJRekZDTEU5QlFVOXhTU3hGUVVGSk0wWXNSMEZCVnpGRExFbEJTVEZDY2tRc1JVRkJUM05TTEZGQlFWVXNVMEZCVXpGR0xFZEJSM2hDTEU5QlJrRTFUQ3hGUVVGUE5Fd3NWMEZCWVVFc1JVRkRjRUkxVEN4RlFVRmxMRTlCUVVWMVVpeEZRVUZKZGxJc1JVRkRaRUVzUlVGQlpTeFJRVWR2UlN4cFFrRkJPVVFzYjBKQlFWaDNVaXhSUVVGeFF5eFBRVUZZUVN4UFFVRnJRa0VzVDBGQlQwTXNZVUZCVlN4SFFVTTVSVVFzVDBGQlQwTXNVVUZCVlhwU0xFVkJRVTl6VWl4UlFVRlJTU3hSUVVGUkxHVkJRMklzYlVKQlFWaERMRkZCUVhsQ1FTeFBRVUZQUXl4SlFVTm9SRVFzVDBGQlR5eERRVUZETEdOQlFXVXNVMEZCVXk5R0xFZEJRemxDTEU5QlFVOTRTeXhMUVVGTGVWRXNUMEZCVXpkU0xFVkJRVTl6VWl4UlFVRlJNVVlzUzBGSGRFTjRTeXhMUVVGTGVWRXNUMEZCVXpkU0xFVkJRVTl6VWl4UlFVRlJNVVlzWTBGSE9VSXhTeXhMUVVGTFJTSXNJbVpwYkdVaU9pSkZPbHhjZDI5eWEzTndZV05sWEZ4M2FXdHBZUzFwY3kxaGJuTjNaWEpsWkZ4Y2JtOWtaVjl0YjJSMWJHVnpYRnh5YVhabGRITmNYR1JwYzNSY1hISnBkbVYwY3k1cWN5SjkiLCIoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQscyxpLGgpe3JldHVybiBuZXcgZSh0LHMsaSxoKX1mdW5jdGlvbiBlKHQsZSxpLGgpe3RoaXMub3B0aW9ucz1ofHx7fSx0aGlzLm9wdGlvbnMuYWRhcHRlcnM9dGhpcy5vcHRpb25zLmFkYXB0ZXJzfHx7fSx0aGlzLm9iaj10LHRoaXMua2V5cGF0aD1lLHRoaXMuY2FsbGJhY2s9aSx0aGlzLm9iamVjdFBhdGg9W10sdGhpcy51cGRhdGU9dGhpcy51cGRhdGUuYmluZCh0aGlzKSx0aGlzLnBhcnNlKCkscyh0aGlzLnRhcmdldD10aGlzLnJlYWxpemUoKSkmJnRoaXMuc2V0KCEwLHRoaXMua2V5LHRoaXMudGFyZ2V0LHRoaXMuY2FsbGJhY2spfWZ1bmN0aW9uIHModCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPT10fWZ1bmN0aW9uIGkodCl7dGhyb3cgbmV3IEVycm9yKFwiW3NpZ2h0Z2xhc3NdIFwiK3QpfXQuYWRhcHRlcnM9e30sZS50b2tlbml6ZT1mdW5jdGlvbih0LGUscyl7dmFyIGksaCxhPVtdLG89e2k6cyxwYXRoOlwiXCJ9O2ZvcihpPTA7aTx0Lmxlbmd0aDtpKyspaD10LmNoYXJBdChpKSx+ZS5pbmRleE9mKGgpPyhhLnB1c2gobyksbz17aTpoLHBhdGg6XCJcIn0pOm8ucGF0aCs9aDtyZXR1cm4gYS5wdXNoKG8pLGF9LGUucHJvdG90eXBlLnBhcnNlPWZ1bmN0aW9uKCl7dmFyIHMsaCxhPXRoaXMuaW50ZXJmYWNlcygpO2EubGVuZ3RofHxpKFwiTXVzdCBkZWZpbmUgYXQgbGVhc3Qgb25lIGFkYXB0ZXIgaW50ZXJmYWNlLlwiKSx+YS5pbmRleE9mKHRoaXMua2V5cGF0aFswXSk/KHM9dGhpcy5rZXlwYXRoWzBdLGg9dGhpcy5rZXlwYXRoLnN1YnN0cigxKSk6KHZvaWQgMD09PShzPXRoaXMub3B0aW9ucy5yb290fHx0LnJvb3QpJiZpKFwiTXVzdCBkZWZpbmUgYSBkZWZhdWx0IHJvb3QgYWRhcHRlci5cIiksaD10aGlzLmtleXBhdGgpLHRoaXMudG9rZW5zPWUudG9rZW5pemUoaCxhLHMpLHRoaXMua2V5PXRoaXMudG9rZW5zLnBvcCgpfSxlLnByb3RvdHlwZS5yZWFsaXplPWZ1bmN0aW9uKCl7dmFyIHQsZT10aGlzLm9iaixpPSExO3JldHVybiB0aGlzLnRva2Vucy5mb3JFYWNoKGZ1bmN0aW9uKGgsYSl7cyhlKT8odm9pZCAwIT09dGhpcy5vYmplY3RQYXRoW2FdP2UhPT0odD10aGlzLm9iamVjdFBhdGhbYV0pJiYodGhpcy5zZXQoITEsaCx0LHRoaXMudXBkYXRlKSx0aGlzLnNldCghMCxoLGUsdGhpcy51cGRhdGUpLHRoaXMub2JqZWN0UGF0aFthXT1lKToodGhpcy5zZXQoITAsaCxlLHRoaXMudXBkYXRlKSx0aGlzLm9iamVjdFBhdGhbYV09ZSksZT10aGlzLmdldChoLGUpKTooITE9PT1pJiYoaT1hKSwodD10aGlzLm9iamVjdFBhdGhbYV0pJiZ0aGlzLnNldCghMSxoLHQsdGhpcy51cGRhdGUpKX0sdGhpcyksITEhPT1pJiZ0aGlzLm9iamVjdFBhdGguc3BsaWNlKGkpLGV9LGUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe3ZhciB0LGU7KHQ9dGhpcy5yZWFsaXplKCkpIT09dGhpcy50YXJnZXQmJihzKHRoaXMudGFyZ2V0KSYmdGhpcy5zZXQoITEsdGhpcy5rZXksdGhpcy50YXJnZXQsdGhpcy5jYWxsYmFjaykscyh0KSYmdGhpcy5zZXQoITAsdGhpcy5rZXksdCx0aGlzLmNhbGxiYWNrKSxlPXRoaXMudmFsdWUoKSx0aGlzLnRhcmdldD10LCh0aGlzLnZhbHVlKClpbnN0YW5jZW9mIEZ1bmN0aW9ufHx0aGlzLnZhbHVlKCkhPT1lKSYmdGhpcy5jYWxsYmFjaygpKX0sZS5wcm90b3R5cGUudmFsdWU9ZnVuY3Rpb24oKXtpZihzKHRoaXMudGFyZ2V0KSlyZXR1cm4gdGhpcy5nZXQodGhpcy5rZXksdGhpcy50YXJnZXQpfSxlLnByb3RvdHlwZS5zZXRWYWx1ZT1mdW5jdGlvbih0KXtzKHRoaXMudGFyZ2V0KSYmdGhpcy5hZGFwdGVyKHRoaXMua2V5KS5zZXQodGhpcy50YXJnZXQsdGhpcy5rZXkucGF0aCx0KX0sZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuYWRhcHRlcih0KS5nZXQoZSx0LnBhdGgpfSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlLHMsaSl7dmFyIGg9dD9cIm9ic2VydmVcIjpcInVub2JzZXJ2ZVwiO3RoaXMuYWRhcHRlcihlKVtoXShzLGUucGF0aCxpKX0sZS5wcm90b3R5cGUuaW50ZXJmYWNlcz1mdW5jdGlvbigpe3ZhciBlPU9iamVjdC5rZXlzKHRoaXMub3B0aW9ucy5hZGFwdGVycyk7cmV0dXJuIE9iamVjdC5rZXlzKHQuYWRhcHRlcnMpLmZvckVhY2goZnVuY3Rpb24odCl7fmUuaW5kZXhPZih0KXx8ZS5wdXNoKHQpfSksZX0sZS5wcm90b3R5cGUuYWRhcHRlcj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5vcHRpb25zLmFkYXB0ZXJzW2UuaV18fHQuYWRhcHRlcnNbZS5pXX0sZS5wcm90b3R5cGUudW5vYnNlcnZlPWZ1bmN0aW9uKCl7dmFyIHQ7dGhpcy50b2tlbnMuZm9yRWFjaChmdW5jdGlvbihlLHMpeyh0PXRoaXMub2JqZWN0UGF0aFtzXSkmJnRoaXMuc2V0KCExLGUsdCx0aGlzLnVwZGF0ZSl9LHRoaXMpLHModGhpcy50YXJnZXQpJiZ0aGlzLnNldCghMSx0aGlzLmtleSx0aGlzLnRhcmdldCx0aGlzLmNhbGxiYWNrKX0sXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZSYmbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9dDpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2lnaHRnbGFzcz10fSk6dGhpcy5zaWdodGdsYXNzPXR9KS5jYWxsKHRoaXMpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1sdVpHVjRMbXB6SWwwc0ltNWhiV1Z6SWpwYkluTnBaMmgwWjJ4aGMzTWlMQ0p2WW1vaUxDSnJaWGx3WVhSb0lpd2lZMkZzYkdKaFkyc2lMQ0p2Y0hScGIyNXpJaXdpVDJKelpYSjJaWElpTENKMGFHbHpJaXdpWVdSaGNIUmxjbk1pTENKdlltcGxZM1JRWVhSb0lpd2lkWEJrWVhSbElpd2lZbWx1WkNJc0luQmhjbk5sSWl3aWFYTlBZbXBsWTNRaUxDSjBZWEpuWlhRaUxDSnlaV0ZzYVhwbElpd2ljMlYwSWl3aWEyVjVJaXdpWlhKeWIzSWlMQ0p0WlhOellXZGxJaXdpUlhKeWIzSWlMQ0owYjJ0bGJtbDZaU0lzSW1sdWRHVnlabUZqWlhNaUxDSnliMjkwSWl3aWFXNWtaWGdpTENKamFISWlMQ0owYjJ0bGJuTWlMQ0pqZFhKeVpXNTBJaXdpYVNJc0luQmhkR2dpTENKc1pXNW5kR2dpTENKamFHRnlRWFFpTENKcGJtUmxlRTltSWl3aWNIVnphQ0lzSW5CeWIzUnZkSGx3WlNJc0luTjFZbk4wY2lJc0luQnZjQ0lzSW5CeVpYWWlMQ0oxYm5KbFlXTm9aV1FpTENKbWIzSkZZV05vSWl3aWRHOXJaVzRpTENKblpYUWlMQ0p6Y0d4cFkyVWlMQ0p1WlhoMElpd2liMnhrVm1Gc2RXVWlMQ0oyWVd4MVpTSXNJa1oxYm1OMGFXOXVJaXdpYzJWMFZtRnNkV1VpTENKaFpHRndkR1Z5SWl3aVlXTjBhWFpsSWl3aVlXTjBhVzl1SWl3aVQySnFaV04wSWl3aWEyVjVjeUlzSW5WdWIySnpaWEoyWlNJc0ltMXZaSFZzWlNJc0ltVjRjRzl5ZEhNaUxDSmtaV1pwYm1VaUxDSmhiV1FpTENKallXeHNJbDBzSW0xaGNIQnBibWR6SWpvaVEwRkJRU3hYUVVWRkxGTkJRVk5CTEVWQlFWZERMRVZCUVV0RExFVkJRVk5ETEVWQlFWVkRMRWRCUXpGRExFOUJRVThzU1VGQlNVTXNSVUZCVTBvc1JVRkJTME1zUlVGQlUwTXNSVUZCVlVNc1IwRlBPVU1zVTBGQlUwTXNSVUZCVTBvc1JVRkJTME1zUlVGQlUwTXNSVUZCVlVNc1IwRkRlRU5GTEV0QlFVdEdMRkZCUVZWQkxFZEJRVmNzUjBGRE1VSkZMRXRCUVV0R0xGRkJRVkZITEZOQlFWZEVMRXRCUVV0R0xGRkJRVkZITEZWQlFWa3NSMEZEYWtSRUxFdEJRVXRNTEVsQlFVMUJMRVZCUTFoTExFdEJRVXRLTEZGQlFWVkJMRVZCUTJaSkxFdEJRVXRJTEZOQlFWZEJMRVZCUTJoQ1J5eExRVUZMUlN4WFFVRmhMRWRCUTJ4Q1JpeExRVUZMUnl4UFFVRlRTQ3hMUVVGTFJ5eFBRVUZQUXl4TFFVRkxTaXhOUVVNdlFrRXNTMEZCUzBzc1VVRkZSRU1zUlVGQlUwNHNTMEZCUzA4c1QwRkJVMUFzUzBGQlMxRXNXVUZET1VKU0xFdEJRVXRUTEV0QlFVa3NSVUZCVFZRc1MwRkJTMVVzU1VGQlMxWXNTMEZCUzA4c1QwRkJVVkFzUzBGQlMwZ3NWVUUyU3k5RExGTkJRVk5UTEVWQlFWTllMRWRCUTJoQ0xFMUJRWE5DTEdsQ1FVRlNRU3hIUVVFMFFpeFBRVUZTUVN4RlFVbHdReXhUUVVGVFowSXNSVUZCVFVNc1IwRkRZaXhOUVVGTkxFbEJRVWxETEUxQlFVMHNaMEpCUVd0Q1JDeEhRV3BOY0VOc1FpeEZRVUZYVHl4VFFVRlhMRWRCYjBKMFFrWXNSVUZCVTJVc1UwRkJWeXhUUVVGVGJFSXNSVUZCVTIxQ0xFVkJRVmxETEVkQlEyaEVMRWxCUlVsRExFVkJRVTlETEVWQlJsQkRMRVZCUVZNc1IwRkRWRU1zUlVGQlZTeERRVUZEUXl4RlFVRkhUQ3hGUVVGTlRTeExRVUZOTEVsQlJ6bENMRWxCUVV0TUxFVkJRVkVzUlVGQlIwRXNSVUZCVVhKQ0xFVkJRVkV5UWl4UFFVRlJUaXhKUVVOMFEwTXNSVUZCVFhSQ0xFVkJRVkUwUWl4UFFVRlBVQ3hKUVVWa1JpeEZRVUZYVlN4UlFVRlJVQ3hKUVVONFFrTXNSVUZCVDA4c1MwRkJTMDRzUjBGRFdrRXNSVUZCVlN4RFFVRkRReXhGUVVGSFNDeEZRVUZMU1N4TFFVRk5MRXRCUlhwQ1JpeEZRVUZSUlN4TlFVRlJTaXhGUVV0d1FpeFBRVVJCUXl4RlFVRlBUeXhMUVVGTFRpeEhRVU5NUkN4SFFVdFVjRUlzUlVGQlV6UkNMRlZCUVZWMFFpeE5RVUZSTEZkQlEzcENMRWxCUTBsWExFVkJRVTFOTEVWQlJFNVFMRVZCUVdGbUxFdEJRVXRsTEdGQlIycENRU3hGUVVGWFVTeFJRVU5rV2l4RlFVRk5MR2RFUVVkRVNTeEZRVUZYVlN4UlFVRlJla0lzUzBGQlMwb3NVVUZCVVN4TFFVTnlRMjlDTEVWQlFVOW9RaXhMUVVGTFNpeFJRVUZSTEVkQlEzQkNNRUlzUlVGQlQzUkNMRXRCUVV0S0xGRkJRVkZuUXl4UFFVRlBMRlZCUld0RExFdEJRV3BFV2l4RlFVRlBhRUlzUzBGQlMwWXNVVUZCVVd0Q0xFMUJRVkYwUWl4RlFVRlhjMElzVDBGRGFrUk1MRVZCUVUwc2RVTkJSMUpYTEVWQlFVOTBRaXhMUVVGTFNpeFRRVWRrU1N4TFFVRkxiVUlzVDBGQlUzQkNMRVZCUVZObExGTkJRVk5STEVWQlFVMVFMRVZCUVZsRExFZEJRMnhFYUVJc1MwRkJTMVVzU1VGQlRWWXNTMEZCUzIxQ0xFOUJRVTlWTEU5QlMzcENPVUlzUlVGQlV6UkNMRlZCUVZWdVFpeFJRVUZWTEZkQlF6TkNMRWxCUlVselFpeEZRVVpCVml4RlFVRlZjRUlzUzBGQlMwd3NTVUZEWm05RExFZEJRVmtzUlVGblEyaENMRTlCTjBKQkwwSXNTMEZCUzIxQ0xFOUJRVTloTEZGQlFWRXNVMEZCVTBNc1JVRkJUMmhDTEVkQlF6bENXQ3hGUVVGVFl5eFRRVU15UWl4SlFVRXpRbkJDTEV0QlFVdEZMRmRCUVZkbExFZEJRM0pDUnl4TFFVRmhWU3hGUVVGUE9VSXNTMEZCUzBVc1YwRkJWMlVzVFVGRGRFTnFRaXhMUVVGTFV5eExRVUZKTEVWQlFVOTNRaXhGUVVGUFNDeEZRVUZOT1VJc1MwRkJTMGNzVVVGRGJFTklMRXRCUVV0VExFdEJRVWtzUlVGQlRYZENMRVZCUVU5aUxFVkJRVk53UWl4TFFVRkxSeXhSUVVOd1EwZ3NTMEZCUzBVc1YwRkJWMlVzUjBGQlUwY3NTVUZITTBKd1FpeExRVUZMVXl4TFFVRkpMRVZCUVUxM1FpeEZRVUZQWWl4RlFVRlRjRUlzUzBGQlMwY3NVVUZEY0VOSUxFdEJRVXRGTEZkQlFWZGxMRWRCUVZOSExFZEJSek5DUVN4RlFVRlZjRUlzUzBGQlMydERMRWxCUVVsRUxFVkJRVTlpTEUxQlJWSXNTVUZCWkZjc1NVRkRSa0VzUlVGQldXUXNTVUZIVm1Fc1JVRkJUemxDTEV0QlFVdEZMRmRCUVZkbExFdEJRM3BDYWtJc1MwRkJTMU1zUzBGQlNTeEZRVUZQZDBJc1JVRkJUMGdzUlVGQlRUbENMRXRCUVV0SExGVkJSM0pEU0N4UFFVVmxMRWxCUVdRclFpeEhRVU5HTDBJc1MwRkJTMFVzVjBGQlYybERMRTlCUVU5S0xFZEJSMnhDV0N4SFFVbFVja0lzUlVGQlV6UkNMRlZCUVZWNFFpeFBRVUZUTEZkQlF6RkNMRWxCUVVscFF5eEZRVUZOUXl4SFFVVk1SQ3hGUVVGUGNFTXNTMEZCUzFFc1lVRkJaVklzUzBGQlMwOHNVMEZETDBKRUxFVkJRVk5PTEV0QlFVdFBMRk5CUTJoQ1VDeExRVUZMVXl4TFFVRkpMRVZCUVU5VUxFdEJRVXRWTEVsQlFVdFdMRXRCUVV0UExFOUJRVkZRTEV0QlFVdElMRlZCUnpGRFV5eEZRVUZUT0VJc1NVRkRXSEJETEV0QlFVdFRMRXRCUVVrc1JVRkJUVlFzUzBGQlMxVXNTVUZCU3pCQ0xFVkJRVTF3UXl4TFFVRkxTQ3hWUVVkMFEzZERMRVZCUVZkeVF5eExRVUZMYzBNc1VVRkRhRUowUXl4TFFVRkxUeXhQUVVGVE5rSXNSMEZIVm5CRExFdEJRVXR6UXl4clFrRkJiVUpETEZWQlFWbDJReXhMUVVGTGMwTXNWVUZCV1VRc1NVRkJWWEpETEV0QlFVdElMR0ZCVFRWRlJTeEZRVUZUTkVJc1ZVRkJWVmNzVFVGQlVTeFhRVU42UWl4SFFVRkphRU1zUlVGQlUwNHNTMEZCUzA4c1VVRkRhRUlzVDBGQlQxQXNTMEZCUzJ0RExFbEJRVWxzUXl4TFFVRkxWU3hKUVVGTFZpeExRVUZMVHl4VFFVMXVRMUlzUlVGQlV6UkNMRlZCUVZWaExGTkJRVmNzVTBGQlUwWXNSMEZEYWtOb1F5eEZRVUZUVGl4TFFVRkxUeXhUUVVOb1FsQXNTMEZCUzNsRExGRkJRVkY2UXl4TFFVRkxWU3hMUVVGTFJDeEpRVUZKVkN4TFFVRkxUeXhQUVVGUlVDeExRVUZMVlN4SlFVRkpXU3hMUVVGTlowSXNTVUZMTTBSMlF5eEZRVUZUTkVJc1ZVRkJWVThzU1VGQlRTeFRRVUZUZUVJc1JVRkJTMllzUjBGRGNrTXNUMEZCVDBzc1MwRkJTM2xETEZGQlFWRXZRaXhIUVVGTGQwSXNTVUZCU1haRExFVkJRVXRsTEVWQlFVbFpMRTlCU1hoRGRrSXNSVUZCVXpSQ0xGVkJRVlZzUWl4SlFVRk5MRk5CUVZOcFF5eEZRVUZSYUVNc1JVRkJTMllzUlVGQlMwVXNSMEZEYkVRc1NVRkJTVGhETEVWQlFWTkVMRVZCUVZNc1ZVRkJXU3haUVVOc1F6RkRMRXRCUVV0NVF5eFJRVUZSTDBJc1IwRkJTMmxETEVkQlFWRm9SQ3hGUVVGTFpTeEZRVUZKV1N4TFFVRk5la0lzU1VGSk0wTkZMRVZCUVZNMFFpeFZRVUZWV2l4WFFVRmhMRmRCUXpsQ0xFbEJRVWxCTEVWQlFXRTJRaXhQUVVGUFF5eExRVUZMTjBNc1MwRkJTMFlzVVVGQlVVY3NWVUZSTVVNc1QwRk9RVEpETEU5QlFVOURMRXRCUVV0dVJDeEZRVUZYVHl4VlFVRlZLMElzVVVGQlVTeFRRVUZUV0N4SlFVTXhRMDRzUlVGQlYxVXNVVUZCVVVvc1NVRkRka0pPTEVWQlFWZFhMRXRCUVV0TUxFdEJTV0pPTEVkQlNWUm9RaXhGUVVGVE5FSXNWVUZCVldNc1VVRkJWU3hUUVVGVEwwSXNSMEZEY0VNc1QwRkJUMVlzUzBGQlMwWXNVVUZCVVVjc1UwRkJVMU1zUlVGQlNWY3NTVUZETDBJelFpeEZRVUZYVHl4VFFVRlRVeXhGUVVGSlZ5eEpRVWsxUW5SQ0xFVkJRVk0wUWl4VlFVRlZiVUlzVlVGQldTeFhRVU0zUWl4SlFVRkpia1FzUlVGRlNrc3NTMEZCUzIxQ0xFOUJRVTloTEZGQlFWRXNVMEZCVTBNc1JVRkJUMmhDTEVsQlF6bENkRUlzUlVGQlRVc3NTMEZCUzBVc1YwRkJWMlVzUzBGRGVFSnFRaXhMUVVGTFV5eExRVUZKTEVWQlFVOTNRaXhGUVVGUGRFTXNSVUZCUzBzc1MwRkJTMGNzVTBGRmJFTklMRTFCUlVOTkxFVkJRVk5PTEV0QlFVdFBMRk5CUTJoQ1VDeExRVUZMVXl4TFFVRkpMRVZCUVU5VUxFdEJRVXRWTEVsQlFVdFdMRXRCUVV0UExFOUJRVkZRTEV0QlFVdElMRmRCWlRGQ0xHOUNRVUZZYTBRc1VVRkJNRUpCTEU5QlFVOURMRkZCUXpGRFJDeFBRVUZQUXl4UlFVRlZkRVFzUlVGRFZTeHRRa0ZCV0hWRUxGRkJRWGxDUVN4UFFVRlBReXhKUVVOb1JFUXNUMEZCVHl4SFFVRkpMRmRCUTFRc1QwRkJUMnBFTEV0QlFVdE9MRmRCUVdGQkxFbEJSek5DVFN4TFFVRkxUaXhYUVVGaFFTeEpRVVZ1UW5sRUxFdEJRVXR1UkNJc0ltWnBiR1VpT2lKRk9seGNkMjl5YTNOd1lXTmxYRngzYVd0cFlTMXBjeTFoYm5OM1pYSmxaRnhjYm05a1pWOXRiMlIxYkdWelhGeHphV2RvZEdkc1lYTnpYRnhwYm1SbGVDNXFjeUo5IiwiZnVuY3Rpb24gQWdlbnQoKXt0aGlzLl9kZWZhdWx0cz1bXX1bXCJ1c2VcIixcIm9uXCIsXCJvbmNlXCIsXCJzZXRcIixcInF1ZXJ5XCIsXCJ0eXBlXCIsXCJhY2NlcHRcIixcImF1dGhcIixcIndpdGhDcmVkZW50aWFsc1wiLFwic29ydFF1ZXJ5XCIsXCJyZXRyeVwiLFwib2tcIixcInJlZGlyZWN0c1wiLFwidGltZW91dFwiLFwiYnVmZmVyXCIsXCJzZXJpYWxpemVcIixcInBhcnNlXCIsXCJjYVwiLFwia2V5XCIsXCJwZnhcIixcImNlcnRcIl0uZm9yRWFjaCh0PT57QWdlbnQucHJvdG90eXBlW3RdPWZ1bmN0aW9uKC4uLmUpe3JldHVybiB0aGlzLl9kZWZhdWx0cy5wdXNoKHtmbjp0LGFyZ3M6ZX0pLHRoaXN9fSksQWdlbnQucHJvdG90eXBlLl9zZXREZWZhdWx0cz1mdW5jdGlvbih0KXt0aGlzLl9kZWZhdWx0cy5mb3JFYWNoKGU9Pnt0W2UuZm5dLmFwcGx5KHQsZS5hcmdzKX0pfSxtb2R1bGUuZXhwb3J0cz1BZ2VudDtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltRm5aVzUwTFdKaGMyVXVhbk1pWFN3aWJtRnRaWE1pT2xzaVFXZGxiblFpTENKMGFHbHpJaXdpWDJSbFptRjFiSFJ6SWl3aVptOXlSV0ZqYUNJc0ltWnVJaXdpY0hKdmRHOTBlWEJsSWl3aVlYSm5jeUlzSW5CMWMyZ2lMQ0pmYzJWMFJHVm1ZWFZzZEhNaUxDSnlaWEVpTENKa1pXWWlMQ0poY0hCc2VTSXNJbTF2WkhWc1pTSXNJbVY0Y0c5eWRITWlYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMRk5CUVZOQkxGRkJRMUJETEV0QlFVdERMRlZCUVZrc1IwRkhia0lzUTBGQlF5eE5RVUZQTEV0QlFVMHNUMEZCVVN4TlFVRlBMRkZCUVZNc1QwRkJVU3hUUVVGVkxFOUJRVkVzYTBKQlFXMUNMRmxCUVdFc1VVRkJVeXhMUVVGTkxGbEJRemxITEZWQlFWY3NVMEZCVlN4WlFVRmhMRkZCUVZNc1MwRkJUU3hOUVVGUExFMUJRVThzVVVGQlVVTXNVVUZCVVVNc1NVRkZPVVZLTEUxQlFVMUxMRlZCUVZWRUxFZEJRVTBzV1VGQldVVXNSMEZGYUVNc1QwRkVRVXdzUzBGQlMwTXNWVUZCVlVzc1MwRkJTeXhEUVVGRFNDeEhRVUZCUVN4RlFVRkpSU3hMUVVGQlFTeEpRVU5zUWt3c1VVRkpXRVFzVFVGQlRVc3NWVUZCVlVjc1lVRkJaU3hUUVVGVFF5eEhRVU53UTFJc1MwRkJTME1zVlVGQlZVTXNVVUZCVVU4c1NVRkRja0pFTEVWQlFVbERMRVZCUVVsT0xFbEJRVWxQTEUxQlFVMUdMRVZCUVV0RExFVkJRVWxLTEZOQlNXcERUU3hQUVVGUFF5eFJRVUZWWWlJc0ltWnBiR1VpT2lKRk9seGNkMjl5YTNOd1lXTmxYRngzYVd0cFlTMXBjeTFoYm5OM1pYSmxaRnhjYm05a1pWOXRiMlIxYkdWelhGeHpkWEJsY21GblpXNTBYRnhzYVdKY1hHRm5aVzUwTFdKaGMyVXVhbk1pZlE9PSIsImxldCByb290O1widW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/cm9vdD13aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGY/cm9vdD1zZWxmOihjb25zb2xlLndhcm4oXCJVc2luZyBicm93c2VyLW9ubHkgdmVyc2lvbiBvZiBzdXBlcmFnZW50IGluIG5vbi1icm93c2VyIGVudmlyb25tZW50XCIpLHJvb3Q9dGhpcyk7Y29uc3QgRW1pdHRlcj1yZXF1aXJlKFwiY29tcG9uZW50LWVtaXR0ZXJcIiksUmVxdWVzdEJhc2U9cmVxdWlyZShcIi4vcmVxdWVzdC1iYXNlXCIpLGlzT2JqZWN0PXJlcXVpcmUoXCIuL2lzLW9iamVjdFwiKSxSZXNwb25zZUJhc2U9cmVxdWlyZShcIi4vcmVzcG9uc2UtYmFzZVwiKSxBZ2VudD1yZXF1aXJlKFwiLi9hZ2VudC1iYXNlXCIpO2Z1bmN0aW9uIG5vb3AoKXt9Y29uc3QgcmVxdWVzdD1leHBvcnRzPW1vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUsdCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdD9uZXcgZXhwb3J0cy5SZXF1ZXN0KFwiR0VUXCIsZSkuZW5kKHQpOjE9PWFyZ3VtZW50cy5sZW5ndGg/bmV3IGV4cG9ydHMuUmVxdWVzdChcIkdFVFwiLGUpOm5ldyBleHBvcnRzLlJlcXVlc3QoZSx0KX07ZXhwb3J0cy5SZXF1ZXN0PVJlcXVlc3QscmVxdWVzdC5nZXRYSFI9KCgpPT57aWYoISghcm9vdC5YTUxIdHRwUmVxdWVzdHx8cm9vdC5sb2NhdGlvbiYmXCJmaWxlOlwiPT1yb290LmxvY2F0aW9uLnByb3RvY29sJiZyb290LkFjdGl2ZVhPYmplY3QpKXJldHVybiBuZXcgWE1MSHR0cFJlcXVlc3Q7dHJ5e3JldHVybiBuZXcgQWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpfWNhdGNoKGUpe310cnl7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFAuNi4wXCIpfWNhdGNoKGUpe310cnl7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFAuMy4wXCIpfWNhdGNoKGUpe310cnl7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIil9Y2F0Y2goZSl7fXRocm93IEVycm9yKFwiQnJvd3Nlci1vbmx5IHZlcnNpb24gb2Ygc3VwZXJhZ2VudCBjb3VsZCBub3QgZmluZCBYSFJcIil9KTtjb25zdCB0cmltPVwiXCIudHJpbT9lPT5lLnRyaW0oKTplPT5lLnJlcGxhY2UoLyheXFxzKnxcXHMqJCkvZyxcIlwiKTtmdW5jdGlvbiBzZXJpYWxpemUoZSl7aWYoIWlzT2JqZWN0KGUpKXJldHVybiBlO2NvbnN0IHQ9W107Zm9yKGNvbnN0IHMgaW4gZSlwdXNoRW5jb2RlZEtleVZhbHVlUGFpcih0LHMsZVtzXSk7cmV0dXJuIHQuam9pbihcIiZcIil9ZnVuY3Rpb24gcHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIoZSx0LHMpe2lmKG51bGwhPXMpaWYoQXJyYXkuaXNBcnJheShzKSlzLmZvckVhY2gocz0+e3B1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKGUsdCxzKX0pO2Vsc2UgaWYoaXNPYmplY3QocykpZm9yKGNvbnN0IHIgaW4gcylwdXNoRW5jb2RlZEtleVZhbHVlUGFpcihlLGAke3R9WyR7cn1dYCxzW3JdKTtlbHNlIGUucHVzaChlbmNvZGVVUklDb21wb25lbnQodCkrXCI9XCIrZW5jb2RlVVJJQ29tcG9uZW50KHMpKTtlbHNlIG51bGw9PT1zJiZlLnB1c2goZW5jb2RlVVJJQ29tcG9uZW50KHQpKX1mdW5jdGlvbiBwYXJzZVN0cmluZyhlKXtjb25zdCB0PXt9LHM9ZS5zcGxpdChcIiZcIik7bGV0IHIsbztmb3IobGV0IGU9MCxuPXMubGVuZ3RoO2U8bjsrK2UpLTE9PShvPShyPXNbZV0pLmluZGV4T2YoXCI9XCIpKT90W2RlY29kZVVSSUNvbXBvbmVudChyKV09XCJcIjp0W2RlY29kZVVSSUNvbXBvbmVudChyLnNsaWNlKDAsbykpXT1kZWNvZGVVUklDb21wb25lbnQoci5zbGljZShvKzEpKTtyZXR1cm4gdH1mdW5jdGlvbiBwYXJzZUhlYWRlcihlKXtjb25zdCB0PWUuc3BsaXQoL1xccj9cXG4vKSxzPXt9O2xldCByLG8sbixpO2ZvcihsZXQgZT0wLHU9dC5sZW5ndGg7ZTx1OysrZSktMSE9PShyPShvPXRbZV0pLmluZGV4T2YoXCI6XCIpKSYmKG49by5zbGljZSgwLHIpLnRvTG93ZXJDYXNlKCksaT10cmltKG8uc2xpY2UocisxKSksc1tuXT1pKTtyZXR1cm4gc31mdW5jdGlvbiBpc0pTT04oZSl7cmV0dXJuL1tcXC8rXWpzb24oJHxbXi1cXHddKS8udGVzdChlKX1mdW5jdGlvbiBSZXNwb25zZShlKXt0aGlzLnJlcT1lLHRoaXMueGhyPXRoaXMucmVxLnhocix0aGlzLnRleHQ9XCJIRUFEXCIhPXRoaXMucmVxLm1ldGhvZCYmKFwiXCI9PT10aGlzLnhoci5yZXNwb25zZVR5cGV8fFwidGV4dFwiPT09dGhpcy54aHIucmVzcG9uc2VUeXBlKXx8dm9pZCAwPT09dGhpcy54aHIucmVzcG9uc2VUeXBlP3RoaXMueGhyLnJlc3BvbnNlVGV4dDpudWxsLHRoaXMuc3RhdHVzVGV4dD10aGlzLnJlcS54aHIuc3RhdHVzVGV4dDtsZXQgdD10aGlzLnhoci5zdGF0dXM7MTIyMz09PXQmJih0PTIwNCksdGhpcy5fc2V0U3RhdHVzUHJvcGVydGllcyh0KSx0aGlzLmhlYWRlcj10aGlzLmhlYWRlcnM9cGFyc2VIZWFkZXIodGhpcy54aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpLHRoaXMuaGVhZGVyW1wiY29udGVudC10eXBlXCJdPXRoaXMueGhyLmdldFJlc3BvbnNlSGVhZGVyKFwiY29udGVudC10eXBlXCIpLHRoaXMuX3NldEhlYWRlclByb3BlcnRpZXModGhpcy5oZWFkZXIpLG51bGw9PT10aGlzLnRleHQmJmUuX3Jlc3BvbnNlVHlwZT90aGlzLmJvZHk9dGhpcy54aHIucmVzcG9uc2U6dGhpcy5ib2R5PVwiSEVBRFwiIT10aGlzLnJlcS5tZXRob2Q/dGhpcy5fcGFyc2VCb2R5KHRoaXMudGV4dD90aGlzLnRleHQ6dGhpcy54aHIucmVzcG9uc2UpOm51bGx9ZnVuY3Rpb24gUmVxdWVzdChlLHQpe2NvbnN0IHM9dGhpczt0aGlzLl9xdWVyeT10aGlzLl9xdWVyeXx8W10sdGhpcy5tZXRob2Q9ZSx0aGlzLnVybD10LHRoaXMuaGVhZGVyPXt9LHRoaXMuX2hlYWRlcj17fSx0aGlzLm9uKFwiZW5kXCIsKCk9PntsZXQgZSx0PW51bGwscj1udWxsO3RyeXtyPW5ldyBSZXNwb25zZShzKX1jYXRjaChlKXtyZXR1cm4odD1uZXcgRXJyb3IoXCJQYXJzZXIgaXMgdW5hYmxlIHRvIHBhcnNlIHRoZSByZXNwb25zZVwiKSkucGFyc2U9ITAsdC5vcmlnaW5hbD1lLHMueGhyPyh0LnJhd1Jlc3BvbnNlPXZvaWQgMD09PXMueGhyLnJlc3BvbnNlVHlwZT9zLnhoci5yZXNwb25zZVRleHQ6cy54aHIucmVzcG9uc2UsdC5zdGF0dXM9cy54aHIuc3RhdHVzP3MueGhyLnN0YXR1czpudWxsLHQuc3RhdHVzQ29kZT10LnN0YXR1cyk6KHQucmF3UmVzcG9uc2U9bnVsbCx0LnN0YXR1cz1udWxsKSxzLmNhbGxiYWNrKHQpfXMuZW1pdChcInJlc3BvbnNlXCIscik7dHJ5e3MuX2lzUmVzcG9uc2VPSyhyKXx8KGU9bmV3IEVycm9yKHIuc3RhdHVzVGV4dHx8XCJVbnN1Y2Nlc3NmdWwgSFRUUCByZXNwb25zZVwiKSl9Y2F0Y2godCl7ZT10fWU/KGUub3JpZ2luYWw9dCxlLnJlc3BvbnNlPXIsZS5zdGF0dXM9ci5zdGF0dXMscy5jYWxsYmFjayhlLHIpKTpzLmNhbGxiYWNrKG51bGwscil9KX1mdW5jdGlvbiBkZWwoZSx0LHMpe2NvbnN0IHI9cmVxdWVzdChcIkRFTEVURVwiLGUpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJihzPXQsdD1udWxsKSx0JiZyLnNlbmQodCkscyYmci5lbmQocykscn1yZXF1ZXN0LnNlcmlhbGl6ZU9iamVjdD1zZXJpYWxpemUscmVxdWVzdC5wYXJzZVN0cmluZz1wYXJzZVN0cmluZyxyZXF1ZXN0LnR5cGVzPXtodG1sOlwidGV4dC9odG1sXCIsanNvbjpcImFwcGxpY2F0aW9uL2pzb25cIix4bWw6XCJ0ZXh0L3htbFwiLHVybGVuY29kZWQ6XCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIixmb3JtOlwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCIsXCJmb3JtLWRhdGFcIjpcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwifSxyZXF1ZXN0LnNlcmlhbGl6ZT17XCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIjpzZXJpYWxpemUsXCJhcHBsaWNhdGlvbi9qc29uXCI6SlNPTi5zdHJpbmdpZnl9LHJlcXVlc3QucGFyc2U9e1wiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCI6cGFyc2VTdHJpbmcsXCJhcHBsaWNhdGlvbi9qc29uXCI6SlNPTi5wYXJzZX0sUmVzcG9uc2VCYXNlKFJlc3BvbnNlLnByb3RvdHlwZSksUmVzcG9uc2UucHJvdG90eXBlLl9wYXJzZUJvZHk9ZnVuY3Rpb24oZSl7bGV0IHQ9cmVxdWVzdC5wYXJzZVt0aGlzLnR5cGVdO3JldHVybiB0aGlzLnJlcS5fcGFyc2VyP3RoaXMucmVxLl9wYXJzZXIodGhpcyxlKTooIXQmJmlzSlNPTih0aGlzLnR5cGUpJiYodD1yZXF1ZXN0LnBhcnNlW1wiYXBwbGljYXRpb24vanNvblwiXSksdCYmZSYmKGUubGVuZ3RofHxlIGluc3RhbmNlb2YgT2JqZWN0KT90KGUpOm51bGwpfSxSZXNwb25zZS5wcm90b3R5cGUudG9FcnJvcj1mdW5jdGlvbigpe2NvbnN0IGU9dGhpcy5yZXEsdD1lLm1ldGhvZCxzPWUudXJsLHI9YGNhbm5vdCAke3R9ICR7c30gKCR7dGhpcy5zdGF0dXN9KWAsbz1uZXcgRXJyb3Iocik7cmV0dXJuIG8uc3RhdHVzPXRoaXMuc3RhdHVzLG8ubWV0aG9kPXQsby51cmw9cyxvfSxyZXF1ZXN0LlJlc3BvbnNlPVJlc3BvbnNlLEVtaXR0ZXIoUmVxdWVzdC5wcm90b3R5cGUpLFJlcXVlc3RCYXNlKFJlcXVlc3QucHJvdG90eXBlKSxSZXF1ZXN0LnByb3RvdHlwZS50eXBlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldChcIkNvbnRlbnQtVHlwZVwiLHJlcXVlc3QudHlwZXNbZV18fGUpLHRoaXN9LFJlcXVlc3QucHJvdG90eXBlLmFjY2VwdD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zZXQoXCJBY2NlcHRcIixyZXF1ZXN0LnR5cGVzW2VdfHxlKSx0aGlzfSxSZXF1ZXN0LnByb3RvdHlwZS5hdXRoPWZ1bmN0aW9uKGUsdCxzKXsxPT09YXJndW1lbnRzLmxlbmd0aCYmKHQ9XCJcIiksXCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPT10JiYocz10LHQ9XCJcIiksc3x8KHM9e3R5cGU6XCJmdW5jdGlvblwiPT10eXBlb2YgYnRvYT9cImJhc2ljXCI6XCJhdXRvXCJ9KTtyZXR1cm4gdGhpcy5fYXV0aChlLHQscyxlPT57aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgYnRvYSlyZXR1cm4gYnRvYShlKTt0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgdXNlIGJhc2ljIGF1dGgsIGJ0b2EgaXMgbm90IGEgZnVuY3Rpb25cIil9KX0sUmVxdWVzdC5wcm90b3R5cGUucXVlcnk9ZnVuY3Rpb24oZSl7cmV0dXJuXCJzdHJpbmdcIiE9dHlwZW9mIGUmJihlPXNlcmlhbGl6ZShlKSksZSYmdGhpcy5fcXVlcnkucHVzaChlKSx0aGlzfSxSZXF1ZXN0LnByb3RvdHlwZS5hdHRhY2g9ZnVuY3Rpb24oZSx0LHMpe2lmKHQpe2lmKHRoaXMuX2RhdGEpdGhyb3cgRXJyb3IoXCJzdXBlcmFnZW50IGNhbid0IG1peCAuc2VuZCgpIGFuZCAuYXR0YWNoKClcIik7dGhpcy5fZ2V0Rm9ybURhdGEoKS5hcHBlbmQoZSx0LHN8fHQubmFtZSl9cmV0dXJuIHRoaXN9LFJlcXVlc3QucHJvdG90eXBlLl9nZXRGb3JtRGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9mb3JtRGF0YXx8KHRoaXMuX2Zvcm1EYXRhPW5ldyByb290LkZvcm1EYXRhKSx0aGlzLl9mb3JtRGF0YX0sUmVxdWVzdC5wcm90b3R5cGUuY2FsbGJhY2s9ZnVuY3Rpb24oZSx0KXtpZih0aGlzLl9zaG91bGRSZXRyeShlLHQpKXJldHVybiB0aGlzLl9yZXRyeSgpO2NvbnN0IHM9dGhpcy5fY2FsbGJhY2s7dGhpcy5jbGVhclRpbWVvdXQoKSxlJiYodGhpcy5fbWF4UmV0cmllcyYmKGUucmV0cmllcz10aGlzLl9yZXRyaWVzLTEpLHRoaXMuZW1pdChcImVycm9yXCIsZSkpLHMoZSx0KX0sUmVxdWVzdC5wcm90b3R5cGUuY3Jvc3NEb21haW5FcnJvcj1mdW5jdGlvbigpe2NvbnN0IGU9bmV3IEVycm9yKFwiUmVxdWVzdCBoYXMgYmVlbiB0ZXJtaW5hdGVkXFxuUG9zc2libGUgY2F1c2VzOiB0aGUgbmV0d29yayBpcyBvZmZsaW5lLCBPcmlnaW4gaXMgbm90IGFsbG93ZWQgYnkgQWNjZXNzLUNvbnRyb2wtQWxsb3ctT3JpZ2luLCB0aGUgcGFnZSBpcyBiZWluZyB1bmxvYWRlZCwgZXRjLlwiKTtlLmNyb3NzRG9tYWluPSEwLGUuc3RhdHVzPXRoaXMuc3RhdHVzLGUubWV0aG9kPXRoaXMubWV0aG9kLGUudXJsPXRoaXMudXJsLHRoaXMuY2FsbGJhY2soZSl9LFJlcXVlc3QucHJvdG90eXBlLmJ1ZmZlcj1SZXF1ZXN0LnByb3RvdHlwZS5jYT1SZXF1ZXN0LnByb3RvdHlwZS5hZ2VudD1mdW5jdGlvbigpe3JldHVybiBjb25zb2xlLndhcm4oXCJUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYnJvd3NlciB2ZXJzaW9uIG9mIHN1cGVyYWdlbnRcIiksdGhpc30sUmVxdWVzdC5wcm90b3R5cGUucGlwZT1SZXF1ZXN0LnByb3RvdHlwZS53cml0ZT0oKCk9Pnt0aHJvdyBFcnJvcihcIlN0cmVhbWluZyBpcyBub3Qgc3VwcG9ydGVkIGluIGJyb3dzZXIgdmVyc2lvbiBvZiBzdXBlcmFnZW50XCIpfSksUmVxdWVzdC5wcm90b3R5cGUuX2lzSG9zdD1mdW5jdGlvbihlKXtyZXR1cm4gZSYmXCJvYmplY3RcIj09dHlwZW9mIGUmJiFBcnJheS5pc0FycmF5KGUpJiZcIltvYmplY3QgT2JqZWN0XVwiIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfSxSZXF1ZXN0LnByb3RvdHlwZS5lbmQ9ZnVuY3Rpb24oZSl7dGhpcy5fZW5kQ2FsbGVkJiZjb25zb2xlLndhcm4oXCJXYXJuaW5nOiAuZW5kKCkgd2FzIGNhbGxlZCB0d2ljZS4gVGhpcyBpcyBub3Qgc3VwcG9ydGVkIGluIHN1cGVyYWdlbnRcIiksdGhpcy5fZW5kQ2FsbGVkPSEwLHRoaXMuX2NhbGxiYWNrPWV8fG5vb3AsdGhpcy5fZmluYWxpemVRdWVyeVN0cmluZygpLHRoaXMuX2VuZCgpfSxSZXF1ZXN0LnByb3RvdHlwZS5fZW5kPWZ1bmN0aW9uKCl7aWYodGhpcy5fYWJvcnRlZClyZXR1cm4gdGhpcy5jYWxsYmFjayhFcnJvcihcIlRoZSByZXF1ZXN0IGhhcyBiZWVuIGFib3J0ZWQgZXZlbiBiZWZvcmUgLmVuZCgpIHdhcyBjYWxsZWRcIikpO2NvbnN0IGU9dGhpcyx0PXRoaXMueGhyPXJlcXVlc3QuZ2V0WEhSKCk7bGV0IHM9dGhpcy5fZm9ybURhdGF8fHRoaXMuX2RhdGE7dGhpcy5fc2V0VGltZW91dHMoKSx0Lm9ucmVhZHlzdGF0ZWNoYW5nZT0oKCk9Pntjb25zdCBzPXQucmVhZHlTdGF0ZTtpZihzPj0yJiZlLl9yZXNwb25zZVRpbWVvdXRUaW1lciYmY2xlYXJUaW1lb3V0KGUuX3Jlc3BvbnNlVGltZW91dFRpbWVyKSw0IT1zKXJldHVybjtsZXQgcjt0cnl7cj10LnN0YXR1c31jYXRjaChlKXtyPTB9aWYoIXIpe2lmKGUudGltZWRvdXR8fGUuX2Fib3J0ZWQpcmV0dXJuO3JldHVybiBlLmNyb3NzRG9tYWluRXJyb3IoKX1lLmVtaXQoXCJlbmRcIil9KTtjb25zdCByPSh0LHMpPT57cy50b3RhbD4wJiYocy5wZXJjZW50PXMubG9hZGVkL3MudG90YWwqMTAwKSxzLmRpcmVjdGlvbj10LGUuZW1pdChcInByb2dyZXNzXCIscyl9O2lmKHRoaXMuaGFzTGlzdGVuZXJzKFwicHJvZ3Jlc3NcIikpdHJ5e3Qub25wcm9ncmVzcz1yLmJpbmQobnVsbCxcImRvd25sb2FkXCIpLHQudXBsb2FkJiYodC51cGxvYWQub25wcm9ncmVzcz1yLmJpbmQobnVsbCxcInVwbG9hZFwiKSl9Y2F0Y2goZSl7fXRyeXt0aGlzLnVzZXJuYW1lJiZ0aGlzLnBhc3N3b3JkP3Qub3Blbih0aGlzLm1ldGhvZCx0aGlzLnVybCwhMCx0aGlzLnVzZXJuYW1lLHRoaXMucGFzc3dvcmQpOnQub3Blbih0aGlzLm1ldGhvZCx0aGlzLnVybCwhMCl9Y2F0Y2goZSl7cmV0dXJuIHRoaXMuY2FsbGJhY2soZSl9aWYodGhpcy5fd2l0aENyZWRlbnRpYWxzJiYodC53aXRoQ3JlZGVudGlhbHM9ITApLCF0aGlzLl9mb3JtRGF0YSYmXCJHRVRcIiE9dGhpcy5tZXRob2QmJlwiSEVBRFwiIT10aGlzLm1ldGhvZCYmXCJzdHJpbmdcIiE9dHlwZW9mIHMmJiF0aGlzLl9pc0hvc3Qocykpe2NvbnN0IGU9dGhpcy5faGVhZGVyW1wiY29udGVudC10eXBlXCJdO2xldCB0PXRoaXMuX3NlcmlhbGl6ZXJ8fHJlcXVlc3Quc2VyaWFsaXplW2U/ZS5zcGxpdChcIjtcIilbMF06XCJcIl07IXQmJmlzSlNPTihlKSYmKHQ9cmVxdWVzdC5zZXJpYWxpemVbXCJhcHBsaWNhdGlvbi9qc29uXCJdKSx0JiYocz10KHMpKX1mb3IoY29uc3QgZSBpbiB0aGlzLmhlYWRlciludWxsIT10aGlzLmhlYWRlcltlXSYmdGhpcy5oZWFkZXIuaGFzT3duUHJvcGVydHkoZSkmJnQuc2V0UmVxdWVzdEhlYWRlcihlLHRoaXMuaGVhZGVyW2VdKTt0aGlzLl9yZXNwb25zZVR5cGUmJih0LnJlc3BvbnNlVHlwZT10aGlzLl9yZXNwb25zZVR5cGUpLHRoaXMuZW1pdChcInJlcXVlc3RcIix0aGlzKSx0LnNlbmQodm9pZCAwIT09cz9zOm51bGwpfSxyZXF1ZXN0LmFnZW50PSgoKT0+bmV3IEFnZW50KSxbXCJHRVRcIixcIlBPU1RcIixcIk9QVElPTlNcIixcIlBBVENIXCIsXCJQVVRcIixcIkRFTEVURVwiXS5mb3JFYWNoKGU9PntBZ2VudC5wcm90b3R5cGVbZS50b0xvd2VyQ2FzZSgpXT1mdW5jdGlvbih0LHMpe2NvbnN0IHI9bmV3IHJlcXVlc3QuUmVxdWVzdChlLHQpO3JldHVybiB0aGlzLl9zZXREZWZhdWx0cyhyKSxzJiZyLmVuZChzKSxyfX0pLEFnZW50LnByb3RvdHlwZS5kZWw9QWdlbnQucHJvdG90eXBlLmRlbGV0ZSxyZXF1ZXN0LmdldD0oKGUsdCxzKT0+e2NvbnN0IHI9cmVxdWVzdChcIkdFVFwiLGUpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJihzPXQsdD1udWxsKSx0JiZyLnF1ZXJ5KHQpLHMmJnIuZW5kKHMpLHJ9KSxyZXF1ZXN0LmhlYWQ9KChlLHQscyk9Pntjb25zdCByPXJlcXVlc3QoXCJIRUFEXCIsZSk7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHM9dCx0PW51bGwpLHQmJnIucXVlcnkodCkscyYmci5lbmQocykscn0pLHJlcXVlc3Qub3B0aW9ucz0oKGUsdCxzKT0+e2NvbnN0IHI9cmVxdWVzdChcIk9QVElPTlNcIixlKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYocz10LHQ9bnVsbCksdCYmci5zZW5kKHQpLHMmJnIuZW5kKHMpLHJ9KSxyZXF1ZXN0LmRlbD1kZWwscmVxdWVzdC5kZWxldGU9ZGVsLHJlcXVlc3QucGF0Y2g9KChlLHQscyk9Pntjb25zdCByPXJlcXVlc3QoXCJQQVRDSFwiLGUpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJihzPXQsdD1udWxsKSx0JiZyLnNlbmQodCkscyYmci5lbmQocykscn0pLHJlcXVlc3QucG9zdD0oKGUsdCxzKT0+e2NvbnN0IHI9cmVxdWVzdChcIlBPU1RcIixlKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYocz10LHQ9bnVsbCksdCYmci5zZW5kKHQpLHMmJnIuZW5kKHMpLHJ9KSxyZXF1ZXN0LnB1dD0oKGUsdCxzKT0+e2NvbnN0IHI9cmVxdWVzdChcIlBVVFwiLGUpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJihzPXQsdD1udWxsKSx0JiZyLnNlbmQodCkscyYmci5lbmQocykscn0pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1Oc2FXVnVkQzVxY3lKZExDSnVZVzFsY3lJNld5SnliMjkwSWl3aWQybHVaRzkzSWl3aWMyVnNaaUlzSW1OdmJuTnZiR1VpTENKM1lYSnVJaXdpZEdocGN5SXNJa1Z0YVhSMFpYSWlMQ0p5WlhGMWFYSmxJaXdpVW1WeGRXVnpkRUpoYzJVaUxDSnBjMDlpYW1WamRDSXNJbEpsYzNCdmJuTmxRbUZ6WlNJc0lrRm5aVzUwSWl3aWJtOXZjQ0lzSW5KbGNYVmxjM1FpTENKbGVIQnZjblJ6SWl3aWJXOWtkV3hsSWl3aWJXVjBhRzlrSWl3aWRYSnNJaXdpVW1WeGRXVnpkQ0lzSW1WdVpDSXNJbUZ5WjNWdFpXNTBjeUlzSW14bGJtZDBhQ0lzSW1kbGRGaElVaUlzSWxoTlRFaDBkSEJTWlhGMVpYTjBJaXdpYkc5allYUnBiMjRpTENKd2NtOTBiMk52YkNJc0lrRmpkR2wyWlZoUFltcGxZM1FpTENKbElpd2lSWEp5YjNJaUxDSjBjbWx0SWl3aWN5SXNJbkpsY0d4aFkyVWlMQ0p6WlhKcFlXeHBlbVVpTENKdlltb2lMQ0p3WVdseWN5SXNJbXRsZVNJc0luQjFjMmhGYm1OdlpHVmtTMlY1Vm1Gc2RXVlFZV2x5SWl3aWFtOXBiaUlzSW5aaGJDSXNJa0Z5Y21GNUlpd2lhWE5CY25KaGVTSXNJbVp2Y2tWaFkyZ2lMQ0oySWl3aWMzVmlhMlY1SWl3aWNIVnphQ0lzSW1WdVkyOWtaVlZTU1VOdmJYQnZibVZ1ZENJc0luQmhjbk5sVTNSeWFXNW5JaXdpYzNSeUlpd2ljM0JzYVhRaUxDSndZV2x5SWl3aWNHOXpJaXdpYVNJc0lteGxiaUlzSW1sdVpHVjRUMllpTENKa1pXTnZaR1ZWVWtsRGIyMXdiMjVsYm5RaUxDSnpiR2xqWlNJc0luQmhjbk5sU0dWaFpHVnlJaXdpYkdsdVpYTWlMQ0ptYVdWc1pITWlMQ0pwYm1SbGVDSXNJbXhwYm1VaUxDSm1hV1ZzWkNJc0luUnZURzkzWlhKRFlYTmxJaXdpYVhOS1UwOU9JaXdpYldsdFpTSXNJblJsYzNRaUxDSlNaWE53YjI1elpTSXNJbkpsY1NJc0luaG9jaUlzSW5SbGVIUWlMQ0p5WlhOd2IyNXpaVlI1Y0dVaUxDSnlaWE53YjI1elpWUmxlSFFpTENKemRHRjBkWE5VWlhoMElpd2ljM1JoZEhWeklpd2lYM05sZEZOMFlYUjFjMUJ5YjNCbGNuUnBaWE1pTENKb1pXRmtaWElpTENKb1pXRmtaWEp6SWl3aVoyVjBRV3hzVW1WemNHOXVjMlZJWldGa1pYSnpJaXdpWjJWMFVtVnpjRzl1YzJWSVpXRmtaWElpTENKZmMyVjBTR1ZoWkdWeVVISnZjR1Z5ZEdsbGN5SXNJbDl5WlhOd2IyNXpaVlI1Y0dVaUxDSmliMlI1SWl3aWNtVnpjRzl1YzJVaUxDSmZjR0Z5YzJWQ2IyUjVJaXdpWDNGMVpYSjVJaXdpWDJobFlXUmxjaUlzSW05dUlpd2libVYzWDJWeWNpSXNJbVZ5Y2lJc0luSmxjeUlzSW5CaGNuTmxJaXdpYjNKcFoybHVZV3dpTENKeVlYZFNaWE53YjI1elpTSXNJbk4wWVhSMWMwTnZaR1VpTENKallXeHNZbUZqYXlJc0ltVnRhWFFpTENKZmFYTlNaWE53YjI1elpVOUxJaXdpWTNWemRHOXRYMlZ5Y2lJc0ltUmxiQ0lzSW1SaGRHRWlMQ0ptYmlJc0luTmxibVFpTENKelpYSnBZV3hwZW1WUFltcGxZM1FpTENKMGVYQmxjeUlzSW1oMGJXd2lMQ0pxYzI5dUlpd2llRzFzSWl3aWRYSnNaVzVqYjJSbFpDSXNJbVp2Y20waUxDSm1iM0p0TFdSaGRHRWlMQ0poY0hCc2FXTmhkR2x2Ymk5NExYZDNkeTFtYjNKdExYVnliR1Z1WTI5a1pXUWlMQ0poY0hCc2FXTmhkR2x2Ymk5cWMyOXVJaXdpU2xOUFRpSXNJbk4wY21sdVoybG1lU0lzSW5CeWIzUnZkSGx3WlNJc0luUjVjR1VpTENKZmNHRnljMlZ5SWl3aVQySnFaV04wSWl3aWRHOUZjbkp2Y2lJc0ltMXpaeUlzSW5ObGRDSXNJbUZqWTJWd2RDSXNJbUYxZEdnaUxDSjFjMlZ5SWl3aWNHRnpjeUlzSW05d2RHbHZibk1pTENKaWRHOWhJaXdpWDJGMWRHZ2lMQ0p6ZEhKcGJtY2lMQ0p4ZFdWeWVTSXNJbUYwZEdGamFDSXNJbVpwYkdVaUxDSmZaR0YwWVNJc0lsOW5aWFJHYjNKdFJHRjBZU0lzSW1Gd2NHVnVaQ0lzSW01aGJXVWlMQ0pmWm05eWJVUmhkR0VpTENKR2IzSnRSR0YwWVNJc0lsOXphRzkxYkdSU1pYUnllU0lzSWw5eVpYUnllU0lzSWw5allXeHNZbUZqYXlJc0ltTnNaV0Z5VkdsdFpXOTFkQ0lzSWw5dFlYaFNaWFJ5YVdWeklpd2ljbVYwY21sbGN5SXNJbDl5WlhSeWFXVnpJaXdpWTNKdmMzTkViMjFoYVc1RmNuSnZjaUlzSW1OeWIzTnpSRzl0WVdsdUlpd2lZblZtWm1WeUlpd2lZMkVpTENKaFoyVnVkQ0lzSW5CcGNHVWlMQ0ozY21sMFpTSXNJbDlwYzBodmMzUWlMQ0owYjFOMGNtbHVaeUlzSW1OaGJHd2lMQ0pmWlc1a1EyRnNiR1ZrSWl3aVgyWnBibUZzYVhwbFVYVmxjbmxUZEhKcGJtY2lMQ0pmWlc1a0lpd2lYMkZpYjNKMFpXUWlMQ0pmYzJWMFZHbHRaVzkxZEhNaUxDSnZibkpsWVdSNWMzUmhkR1ZqYUdGdVoyVWlMQ0p5WldGa2VWTjBZWFJsSWl3aVgzSmxjM0J2Ym5ObFZHbHRaVzkxZEZScGJXVnlJaXdpZEdsdFpXUnZkWFFpTENKb1lXNWtiR1ZRY205bmNtVnpjeUlzSW1ScGNtVmpkR2x2YmlJc0luUnZkR0ZzSWl3aWNHVnlZMlZ1ZENJc0lteHZZV1JsWkNJc0ltaGhjMHhwYzNSbGJtVnljeUlzSW05dWNISnZaM0psYzNNaUxDSmlhVzVrSWl3aWRYQnNiMkZrSWl3aWRYTmxjbTVoYldVaUxDSndZWE56ZDI5eVpDSXNJbTl3Wlc0aUxDSmZkMmwwYUVOeVpXUmxiblJwWVd4eklpd2lkMmwwYUVOeVpXUmxiblJwWVd4eklpd2lZMjl1ZEdWdWRGUjVjR1VpTENKZmMyVnlhV0ZzYVhwbGNpSXNJbWhoYzA5M2JsQnliM0JsY25SNUlpd2ljMlYwVW1WeGRXVnpkRWhsWVdSbGNpSXNJbDl6WlhSRVpXWmhkV3gwY3lJc0ltZGxkQ0lzSW1obFlXUWlMQ0p3WVhSamFDSXNJbkJ2YzNRaUxDSndkWFFpWFN3aWJXRndjR2x1WjNNaU9pSkJRVWxCTEVsQlFVbEJMRXRCUTJ0Q0xHOUNRVUZZUXl4UFFVTlVSQ3hMUVVGUFF5eFBRVU5yUWl4dlFrRkJWRU1zUzBGRGFFSkdMRXRCUVU5RkxFMUJSVkJETEZGQlFWRkRMRXRCUVVzc2RVVkJRMkpLTEV0QlFVOUxMRTFCUjFRc1RVRkJUVU1zVVVGQlZVTXNVVUZCVVN4eFFrRkRiRUpETEZsQlFXTkVMRkZCUVZFc2EwSkJRM1JDUlN4VFFVRlhSaXhSUVVGUkxHVkJRMjVDUnl4aFFVRmxTQ3hSUVVGUkxHMUNRVU4yUWtrc1RVRkJVVW9zVVVGQlVTeG5Ra0ZOZEVJc1UwRkJVMHNzVVVGTlZDeE5RVUZOUXl4UlFVRlZReXhSUVVGVlF5eFBRVUZQUkN4UlFVRlZMRk5CUVZORkxFVkJRVkZETEVkQlJURkVMRTFCUVVrc2JVSkJRWEZDUVN4RlFVTm9RaXhKUVVGSlNDeFJRVUZSU1N4UlFVRlJMRTFCUVU5R0xFZEJRVkZITEVsQlFVbEdMRWRCU1RWRExFZEJRVXRITEZWQlFWVkRMRTlCUTFZc1NVRkJTVkFzVVVGQlVVa3NVVUZCVVN4TlFVRlBSaXhIUVVjM1FpeEpRVUZKUml4UlFVRlJTU3hSUVVGUlJpeEZRVUZSUXl4SlFVZHlRMGdzVVVGQlVVa3NVVUZCVlVFc1VVRk5iRUpNTEZGQlFWRlRMRTlCUVZNc1RVRkRaaXhOUVVGSmRFSXNTMEZCUzNWQ0xHZENRVU5CZGtJc1MwRkJTM2RDTEZWQlFWa3NVMEZCVjNoQ0xFdEJRVXQzUWl4VFFVRlRReXhWUVVOMlEzcENMRXRCUVVzd1FpeGxRVU5tTEU5QlFVOHNTVUZCU1Vnc1pVRkZXQ3hKUVVGTkxFOUJRVThzU1VGQlNVY3NZMEZCWXl4eFFrRkJkMElzVFVGQlRVTXNTVUZETjBRc1NVRkJUU3hQUVVGUExFbEJRVWxFTEdOQlFXTXNjMEpCUVhsQ0xFMUJRVTFETEVsQlF6bEVMRWxCUVUwc1QwRkJUeXhKUVVGSlJDeGpRVUZqTEhOQ1FVRjVRaXhOUVVGTlF5eEpRVU01UkN4SlFVRk5MRTlCUVU4c1NVRkJTVVFzWTBGQll5eHJRa0ZCY1VJc1RVRkJUVU1zU1VGRk5VUXNUVUZCVFVNc1RVRkJUU3d5UkVGWFpDeE5RVUZOUXl4TFFVRlBMRWRCUVVkQkxFdEJRMXBETEVkQlFVdEJMRVZCUVVWRUxFOUJRMUJETEVkQlFVdEJMRVZCUVVWRExGRkJRVkVzWlVGQlowSXNTVUZWYmtNc1UwRkJVME1zVlVGQlZVTXNSMEZEYWtJc1NVRkJTM2hDTEZOQlFWTjNRaXhIUVVGTkxFOUJRVTlCTEVWQlF6TkNMRTFCUVUxRExFVkJRVkVzUjBGRFpDeEpRVUZMTEUxQlFVMURMRXRCUVU5R0xFVkJRMmhDUnl4M1FrRkJkMEpHTEVWQlFVOURMRVZCUVV0R0xFVkJRVWxGTEVsQlJURkRMRTlCUVU5RUxFVkJRVTFITEV0QlFVc3NTMEZaY0VJc1UwRkJVMFFzZDBKQlFYZENSaXhGUVVGUFF5eEZRVUZMUnl4SFFVTXpReXhIUVVGWExFMUJRVkJCTEVWQlEwWXNSMEZCU1VNc1RVRkJUVU1zVVVGQlVVWXNSMEZEYUVKQkxFVkJRVWxITEZGQlFWRkRMRWxCUTFaT0xIZENRVUYzUWtZc1JVRkJUME1zUlVGQlMwOHNWVUZGYWtNc1IwRkJTV3BETEZOQlFWTTJRaXhIUVVOc1FpeEpRVUZKTEUxQlFVMUxMRXRCUVZWTUxFVkJRMnhDUml4M1FrRkJkMEpHTEV0QlFWVkRMRXRCUVU5UkxFdEJRVmRNTEVWQlFVbExMRk5CUnpGRVZDeEZRVUZOVlN4TFFVRkxReXh0UWtGQmJVSldMRWRCUXpGQ0xFbEJRVTFWTEcxQ1FVRnRRbEFzVTBGRlpDeFBRVUZTUVN4SFFVTlVTaXhGUVVGTlZTeExRVUZMUXl4dFFrRkJiVUpXTEVsQmEwSnNReXhUUVVGVFZ5eFpRVUZaUXl4SFFVTnVRaXhOUVVGTlpDeEZRVUZOTEVkQlEwNURMRVZCUVZGaExFVkJRVWxETEUxQlFVMHNTMEZEZUVJc1NVRkJTVU1zUlVGRFFVTXNSVUZGU2l4SlFVRkxMRWxCUVVsRExFVkJRVWtzUlVGQlIwTXNSVUZCVFd4Q0xFVkJRVTFpTEU5QlFWRTRRaXhGUVVGSlF5eEpRVUZQUkN4SFFVZHFReXhKUVVSYVJDeEhRVVJCUkN4RlFVRlBaaXhGUVVGTmFVSXNTVUZEUmtVc1VVRkJVU3hOUVVWcVFuQkNMRVZCUVVseFFpeHRRa0ZCYlVKTUxFbEJRVk1zUjBGRmFFTm9RaXhGUVVGSmNVSXNiVUpCUVcxQ1RDeEZRVUZMVFN4TlFVRk5MRVZCUVVkTUxFdEJRMjVEU1N4dFFrRkJiVUpNTEVWQlFVdE5MRTFCUVUxTUxFVkJRVTBzU1VGSk1VTXNUMEZCVDJwQ0xFVkJPRVJVTEZOQlFWTjFRaXhaUVVGWlZDeEhRVU51UWl4TlFVRk5WU3hGUVVGUlZpeEZRVUZKUXl4TlFVRk5MRk5CUTJ4Q1ZTeEZRVUZUTEVkQlEyWXNTVUZCU1VNc1JVRkRRVU1zUlVGRFFVTXNSVUZEUVhaQ0xFVkJSVW9zU1VGQlN5eEpRVUZKWVN4RlFVRkpMRVZCUVVkRExFVkJRVTFMTEVWQlFVMXdReXhQUVVGUk9FSXNSVUZCU1VNc1NVRkJUMFFzUjBGSE9VSXNTMEZFWmxFc1IwRkVRVU1zUlVGQlQwZ3NSVUZCVFU0c1NVRkRRVVVzVVVGQlVTeFJRVWx5UWxFc1JVRkJVVVFzUlVGQlMwd3NUVUZCVFN4RlFVRkhTU3hIUVVGUFJ5eGpRVU0zUW5oQ0xFVkJRVTFVTEV0QlFVc3JRaXhGUVVGTFRDeE5RVUZOU1N4RlFVRlJMRWxCUXpsQ1JDeEZRVUZQUnl4SFFVRlRka0lzUjBGSGJFSXNUMEZCVDI5Q0xFVkJWMVFzVTBGQlUwc3NUMEZCVDBNc1IwRkhaQ3hOUVVGUExITkNRVUZ6UWtNc1MwRkJTMFFzUjBGcFJIQkRMRk5CUVZORkxGTkJRVk5ETEVkQlEyaENPVVFzUzBGQlN6aEVMRWxCUVUxQkxFVkJRMWc1UkN4TFFVRkxLMFFzU1VGQlRTOUVMRXRCUVVzNFJDeEpRVUZKUXl4SlFVVndRaTlFTEV0QlFVdG5SU3hMUVVFeVFpeFJRVUZzUW1oRkxFdEJRVXM0UkN4SlFVRkpia1FzVTBGQk9FTXNTMEZCTVVKWUxFdEJRVXNyUkN4SlFVRkpSU3hqUVVGcFJDeFRRVUV4UW1wRkxFdEJRVXNyUkN4SlFVRkpSU3h2UWtGQk9FUXNTVUZCTVVKcVJTeExRVUZMSzBRc1NVRkJTVVVzWVVGRE5VaHFSU3hMUVVGTEswUXNTVUZCU1Vjc1lVRkRWQ3hMUVVOTWJFVXNTMEZCUzIxRkxGZEJRV0Z1UlN4TFFVRkxPRVFzU1VGQlNVTXNTVUZCU1Vrc1YwRkRMMElzU1VGQlNVTXNSVUZCVTNCRkxFdEJRVXNyUkN4SlFVRkpTeXhQUVVWUUxFOUJRVmhCTEVsQlEwWkJMRVZCUVZNc1MwRkZXSEJGTEV0QlFVdHhSU3h4UWtGQmNVSkVMRWRCUXpGQ2NFVXNTMEZCUzNORkxFOUJRVk4wUlN4TFFVRkxkVVVzVVVGQlZYQkNMRmxCUVZsdVJDeExRVUZMSzBRc1NVRkJTVk1zZVVKQlNXeEVlRVVzUzBGQlMzTkZMRTlCUVU4c1owSkJRV3RDZEVVc1MwRkJTeXRFTEVsQlFVbFZMR3RDUVVGclFpeG5Ra0ZEZWtSNlJTeExRVUZMTUVVc2NVSkJRWEZDTVVVc1MwRkJTM05GTEZGQlJUTkNMRTlCUVZOMFJTeExRVUZMWjBVc1RVRkJVVVlzUlVGQlNXRXNZMEZETlVJelJTeExRVUZMTkVVc1MwRkJUelZGTEV0QlFVc3JSQ3hKUVVGSll5eFRRVVZ5UWpkRkxFdEJRVXMwUlN4TFFVRXdRaXhSUVVGdVFqVkZMRXRCUVVzNFJDeEpRVUZKYmtRc1QwRkRha0pZTEV0QlFVczRSU3hYUVVGWE9VVXNTMEZCUzJkRkxFdEJRVTlvUlN4TFFVRkxaMFVzUzBGQlQyaEZMRXRCUVVzclJDeEpRVUZKWXl4VlFVTnFSQ3hMUVdsRlVpeFRRVUZUYUVVc1VVRkJVVVlzUlVGQlVVTXNSMEZEZGtJc1RVRkJUV1lzUlVGQlQwY3NTMEZEWWtFc1MwRkJTeXRGTEU5QlFWTXZSU3hMUVVGTEswVXNVVUZCVlN4SFFVTTNRaTlGTEV0QlFVdFhMRTlCUVZOQkxFVkJRMlJZTEV0QlFVdFpMRWxCUVUxQkxFVkJRMWhhTEV0QlFVdHpSU3hQUVVGVExFZEJRMlIwUlN4TFFVRkxaMFlzVVVGQlZTeEhRVU5tYUVZc1MwRkJTMmxHTEVkQlFVY3NUVUZCVHl4TFFVTmlMRWxCTUVKSlF5eEZRVEZDUVVNc1JVRkJUU3hMUVVOT1F5eEZRVUZOTEV0QlJWWXNTVUZEUlVFc1JVRkJUU3hKUVVGSmRrSXNVMEZCVTJoRkxFZEJRMjVDTEUxQlFVMTVRaXhIUVdkQ1RpeFBRV1pCTmtRc1JVRkJUU3hKUVVGSk5VUXNUVUZCVFN3eVEwRkRXamhFTEU5QlFWRXNSVUZEV2tZc1JVRkJTVWNzVTBGQlYyaEZMRVZCUlZoNlFpeEZRVUZMYTBVc1MwRkZVRzlDTEVWQlFVbEpMR2xDUVVFNFF5eEpRVUY2UWpGR0xFVkJRVXRyUlN4SlFVRkpSU3hoUVVFNFFuQkZMRVZCUVV0clJTeEpRVUZKUnl4aFFVRmxja1VzUlVGQlMydEZMRWxCUVVsakxGTkJSV3BIVFN4RlFVRkpaaXhQUVVGVGRrVXNSVUZCUzJ0RkxFbEJRVWxMTEU5QlFWTjJSU3hGUVVGTGEwVXNTVUZCU1Vzc1QwRkJVeXhMUVVOcVJHVXNSVUZCU1Vzc1YwRkJZVXdzUlVGQlNXWXNVMEZGY2tKbExFVkJRVWxKTEZsQlFXTXNTMEZEYkVKS0xFVkJRVWxtTEU5QlFWTXNUVUZIVW5aRkxFVkJRVXMwUml4VFFVRlRUaXhIUVVkMlFuUkdMRVZCUVVzMlJpeExRVUZMTEZkQlFWbE9MRWRCUjNSQ0xFbEJRMDkyUml4RlFVRkxPRVlzWTBGQlkxQXNTMEZEZEVKR0xFVkJRVlVzU1VGQlNUTkVMRTFCUVUwMlJDeEZRVUZKYWtJc1dVRkJZeXdyUWtGRmVFTXNUVUZCVFhsQ0xFZEJRMDVXTEVWQlFWVlZMRVZCU1ZKV0xFZEJRMFpCTEVWQlFWRkpMRk5CUVZkSUxFVkJRMjVDUkN4RlFVRlJUQ3hUUVVGWFR5eEZRVU51UWtZc1JVRkJVV1FzVDBGQlUyZENMRVZCUVVsb1FpeFBRVU55UW5aRkxFVkJRVXMwUml4VFFVRlRVQ3hGUVVGVFJTeEpRVVYyUW5aR0xFVkJRVXMwUml4VFFVRlRMRXRCUVUxTUxFdEJhMkV4UWl4VFFVRlRVeXhKUVVGSmFrWXNSVUZCUzJ0R0xFVkJRVTFETEVkQlEzUkNMRTFCUVUxcVF5eEZRVUZOZEVRc1VVRkJVU3hUUVVGVlNTeEhRVWs1UWl4TlFVaEpMRzFDUVVGeFFtdEdMRWxCUVU5RExFVkJRVXRFTEVWQlFWRkJMRVZCUVU4c1RVRkRhRVJCTEVkQlFVMW9ReXhGUVVGSmEwTXNTMEZCUzBZc1IwRkRaa01zUjBGQlNXcERMRVZCUVVsb1JDeEpRVUZKYVVZc1IwRkRWR3BETEVWQkwzUkNWSFJFTEZGQlFWRjVSaXhuUWtGQmEwSjBSU3hWUVd0RE1VSnVRaXhSUVVGUmFVTXNXVUZCWTBFc1dVRlRkRUpxUXl4UlFVRlJNRVlzVFVGQlVTeERRVU5rUXl4TFFVRk5MRmxCUTA1RExFdEJRVTBzYlVKQlEwNURMRWxCUVVzc1YwRkRURU1zVjBGQldTeHZRMEZEV2tNc1MwRkJVU3h2UTBGRFVrTXNXVUZCWVN4eFEwRlpabWhITEZGQlFWRnRRaXhWUVVGWkxFTkJRMnhDT0VVc2IwTkJRWEZET1VVc1ZVRkRja01yUlN4dFFrRkJiMEpETEV0QlFVdERMRmRCV1ROQ2NFY3NVVUZCVVRaRkxFMUJRVkVzUTBGRFpHOUNMRzlEUVVGeFEyaEZMRmxCUTNKRGFVVXNiVUpCUVc5Q1F5eExRVUZMZEVJc1QwRTBTRE5DYUVZc1lVRkJZWGRFTEZOQlFWTm5SQ3hYUVdGMFFtaEVMRk5CUVZOblJDeFZRVUZWTDBJc1YwRkJZU3hUUVVGVGNFTXNSMEZEZGtNc1NVRkJTVEpETEVWQlFWRTNSU3hSUVVGUk5rVXNUVUZCVFhKR0xFdEJRVXM0Unl4TlFVTXZRaXhQUVVGSk9VY3NTMEZCU3poRUxFbEJRVWxwUkN4UlFVTktMMGNzUzBGQlN6aEVMRWxCUVVscFJDeFJRVUZSTDBjc1MwRkJUVEJETEV0QlJUTkNNa01zUjBGQlV6TkNMRTlCUVU4eFJDeExRVUZMT0Vjc1VVRkRlRUo2UWl4RlFVRlJOMFVzVVVGQlVUWkZMRTFCUVUwc2NVSkJSV3BDUVN4SFFVRlRNME1zU1VGQlVVRXNSVUZCU1RGQ0xGRkJRVlV3UWl4aFFVRmxjMFVzVVVGRGFrUXpRaXhGUVVGTk0wTXNSMEZEVGl4UFFWVk9iVUlzVTBGQlUyZEVMRlZCUVZWSkxGRkJRVlVzVjBGRE0wSXNUVUZCVFc1RUxFVkJRVTA1UkN4TFFVRkxPRVFzU1VGRFdHNUVMRVZCUVZOdFJDeEZRVUZKYmtRc1QwRkRZa01zUlVGQlRXdEVMRVZCUVVsc1JDeEpRVVZXYzBjc1dVRkJaMEoyUnl4TFFVRlZReXhOUVVGUldpeExRVUZMYjBVc1ZVRkRka05sTEVWQlFVMHNTVUZCU1RWRUxFMUJRVTB5Uml4SFFVdDBRaXhQUVVwQkwwSXNSVUZCU1dZc1QwRkJVM0JGTEV0QlFVdHZSU3hQUVVOc1FtVXNSVUZCU1hoRkxFOUJRVk5CTEVWQlEySjNSU3hGUVVGSmRrVXNTVUZCVFVFc1JVRkZTSFZGTEVkQlQxUXpSU3hSUVVGUmNVUXNVMEZCVjBFc1UwRnhSVzVDTlVRc1VVRkJVVmtzVVVGQlVXZEhMRmRCUTJoQ01VY3NXVUZCV1ZVc1VVRkJVV2RITEZkQmQwSndRbWhITEZGQlFWRm5SeXhWUVVGVlF5eExRVUZQTEZOQlFWTkJMRWRCUldoRExFOUJSRUU1Unl4TFFVRkxiVWdzU1VGQlNTeGxRVUZuUWpOSExGRkJRVkV3Uml4TlFVRk5XU3hKUVVGVFFTeEhRVU42UXpsSExFMUJkVUpVWVN4UlFVRlJaMGNzVlVGQlZVOHNUMEZCVXl4VFFVRlRUaXhIUVVWc1F5eFBRVVJCT1Vjc1MwRkJTMjFJTEVsQlFVa3NVMEZCVlROSExGRkJRVkV3Uml4TlFVRk5XU3hKUVVGVFFTeEhRVU51UXpsSExFMUJZVlJoTEZGQlFWRm5SeXhWUVVGVlVTeExRVUZQTEZOQlFWTkRMRVZCUVUxRExFVkJRVTFETEVkQlEzaERMRWxCUVUxNlJ5eFZRVUZWUXl4VFFVRlJkVWNzUlVGQlR5eEpRVU5tTEdsQ1FVRlVRU3hIUVVFNFFpeFBRVUZVUVN4SlFVTTVRa01zUlVGQlZVUXNSVUZEVmtFc1JVRkJUeXhKUVVWS1F5eEpRVU5JUVN4RlFVRlZMRU5CUTFKV0xFdEJRVTBzYlVKQlFYTkNWeXhMUVVGUExGRkJRVlVzVTBGWGFrUXNUMEZCVDNwSUxFdEJRVXN3U0N4TlFVRk5TaXhGUVVGTlF5eEZRVUZOUXl4RlFWQmtSeXhKUVVOa0xFZEJRVWtzYlVKQlFYTkNSaXhMUVVONFFpeFBRVUZQUVN4TFFVRkxSU3hIUVVWa0xFMUJRVTBzU1VGQlNYQkhMRTFCUVUwc2IwUkJiMEp3UWxZc1VVRkJVV2RITEZWQlFWVmxMRTFCUVZFc1UwRkJVek5HTEVkQlIycERMRTFCUmtrc2FVSkJRVzFDUVN4SlFVRkxRU3hGUVVGTlRpeFZRVUZWVFN4SlFVTjRRMEVzUjBGQlMycERMRXRCUVVzclJTeFBRVUZQZUVNc1MwRkJTMDRzUjBGRGJrSnFReXhOUVc5Q1ZHRXNVVUZCVVdkSExGVkJRVlZuUWl4UFFVRlRMRk5CUVZOeVJTeEZRVUZQYzBVc1JVRkJUVTRzUjBGREwwTXNSMEZCU1Uwc1JVRkJUU3hEUVVOU0xFZEJRVWs1U0N4TFFVRkxLMGdzVFVGRFVDeE5RVUZOZUVjc1RVRkJUU3c0UTBGSFpIWkNMRXRCUVV0blNTeGxRVUZsUXl4UFFVRlBla1VzUlVGQlQzTkZMRVZCUVUxT0xFZEJRVmROTEVWQlFVdEpMRTFCUlRGRUxFOUJRVTlzU1N4TlFVZFVZU3hSUVVGUlowY3NWVUZCVlcxQ0xHRkJRV1VzVjBGSkwwSXNUMEZJUzJoSkxFdEJRVXR0U1N4WlFVTlNia2tzUzBGQlMyMUpMRlZCUVZrc1NVRkJTWGhKTEV0QlFVdDVTU3hWUVVWeVFuQkpMRXRCUVV0dFNTeFhRVmxrZEVnc1VVRkJVV2RITEZWQlFWVndRaXhUUVVGWExGTkJRVk5PTEVWQlFVdERMRWRCUTNwRExFZEJRVWx3Uml4TFFVRkxjVWtzWVVGQllXeEVMRVZCUVV0RExFZEJRM3BDTEU5QlFVOXdSaXhMUVVGTGMwa3NVMEZIWkN4TlFVRk5ka01zUlVGQlN5OUdMRXRCUVV0MVNTeFZRVU5vUW5aSkxFdEJRVXQzU1N4bFFVVkVja1FzU1VGRFJXNUdMRXRCUVV0NVNTeGpRVUZoZEVRc1JVRkJTWFZFTEZGQlFWVXhTU3hMUVVGTE1ra3NVMEZCVnl4SFFVTndSRE5KTEV0QlFVc3dSaXhMUVVGTExGRkJRVk5RTEVsQlIzSkNXU3hGUVVGSFdpeEZRVUZMUXl4SlFWTldka1VzVVVGQlVXZEhMRlZCUVZVclFpeHBRa0ZCYlVJc1YwRkRia01zVFVGQlRYcEVMRVZCUVUwc1NVRkJTVFZFTEUxQlFVMHNaMHRCUTNSQ05FUXNSVUZCU1RCRUxHRkJRV01zUlVGRmJFSXhSQ3hGUVVGSlppeFBRVUZUY0VVc1MwRkJTMjlGTEU5QlEyeENaU3hGUVVGSmVFVXNUMEZCVTFnc1MwRkJTMWNzVDBGRGJFSjNSU3hGUVVGSmRrVXNTVUZCVFZvc1MwRkJTMWtzU1VGRlpsb3NTMEZCUzNsR0xGTkJRVk5PTEVsQlNXaENkRVVzVVVGQlVXZEhMRlZCUVZWcFF5eFBRVUZUYWtrc1VVRkJVV2RITEZWQlFWVnJReXhIUVVGTGJFa3NVVUZCVVdkSExGVkJRVlZ0UXl4TlFVRlJMRmRCUlRGRkxFOUJSRUZzU2l4UlFVRlJReXhMUVVGTExEQkVRVU5PUXl4TlFVbFVZU3hSUVVGUlowY3NWVUZCVlc5RExFdEJRVTl3U1N4UlFVRlJaMGNzVlVGQlZYRkRMRTFCUVZFc1RVRkRha1FzVFVGQlRUTklMRTFCUVUwc2FVVkJWMlJXTEZGQlFWRm5SeXhWUVVGVmMwTXNVVUZCVlN4VFFVRnBRblpJTEVkQlJUTkRMRTlCUVU5QkxFZEJRVThzYVVKQlFXOUNRU3hKUVVGUlRTeE5RVUZOUXl4UlFVRlJVQ3hKUVVGblJDeHZRa0ZCZUVOdlJpeFBRVUZQU0N4VlFVRlZkVU1zVTBGQlUwTXNTMEZCUzNwSUxFbEJXV3BIWml4UlFVRlJaMGNzVlVGQlZTOUdMRWxCUVUwc1UwRkJVMmxHTEVkQlF6TkNMMFlzUzBGQlMzTktMRmxCUTFCNFNpeFJRVUZSUXl4TFFVRkxMSGxGUVVWbVF5eExRVUZMYzBvc1dVRkJZU3hGUVVkc1FuUktMRXRCUVV0MVNTeFZRVUZaZUVNc1IwRkJUWGhHTEV0QlIzWkNVQ3hMUVVGTGRVb3NkVUpCUlV4MlNpeExRVUZMZDBvc1VVRkhVRE5KTEZGQlFWRm5SeXhWUVVGVk1rTXNTMEZCVHl4WFFVTjJRaXhIUVVGSmVFb3NTMEZCUzNsS0xGTkJRVlVzVDBGQlQzcEtMRXRCUVV0NVJpeFRRVUZUYkVVc1RVRkJUU3dyUkVGRk9VTXNUVUZCVFRGQ0xFVkJRVTlITEV0QlExQXJSQ3hGUVVGUEwwUXNTMEZCU3l0RUxFbEJRVTEyUkN4UlFVRlJVeXhUUVVOb1F5eEpRVUZKTmtVc1JVRkJUemxHTEV0QlFVdHRTU3hYUVVGaGJra3NTMEZCU3l0SUxFMUJSV3hETDBnc1MwRkJTekJLTEdWQlIwd3pSaXhGUVVGSk5FWXNiVUpCUVhGQ0xFMUJRM1pDTEUxQlFVMURMRVZCUVdFM1JpeEZRVUZKTmtZc1YwRkpka0lzUjBGSVNVRXNSMEZCWXl4SFFVRkxMMG9zUlVGQlMyZExMSFZDUVVNeFFuSkNMR0ZCUVdFelNTeEZRVUZMWjBzc2RVSkJSV2hDTEVkQlFVdEVMRVZCUTFBc1QwRkxSaXhKUVVGSmVFWXNSVUZEU2l4SlFVRk5RU3hGUVVGVFRDeEZRVUZKU3l4UFFVRlRMRTFCUVUwNVF5eEhRVUZMT0VNc1JVRkJVeXhGUVVWb1JDeEpRVUZMUVN4RlFVRlJMRU5CUTFnc1IwRkJTWFpGTEVWQlFVdHBTeXhWUVVGWmFrc3NSVUZCU3pSS0xGTkJRVlVzVDBGRGNFTXNUMEZCVHpWS0xFVkJRVXNyU1N4dFFrRkZaQzlKTEVWQlFVczJSaXhMUVVGTExGTkJTVm9zVFVGQlRYRkZMRVZCUVdsQ0xFTkJRVU5ETEVWQlFWY3hTU3hMUVVNM1FrRXNSVUZCUlRKSkxFMUJRVkVzU1VGRFdqTkpMRVZCUVVVMFNTeFJRVUZWTlVrc1JVRkJSVFpKTEU5QlFWTTNTU3hGUVVGRk1ra3NUVUZCVVN4TFFVVnVRek5KTEVWQlFVVXdTU3hWUVVGWlFTeEZRVU5rYmtzc1JVRkJTelpHTEV0QlFVc3NWMEZCV1hCRkxFbEJSWGhDTEVkQlFVbDBRaXhMUVVGTGIwc3NZVUZCWVN4WlFVTndRaXhKUVVORmNrY3NSVUZCU1hOSExGZEJRV0ZPTEVWQlFXVlBMRXRCUVVzc1MwRkJUU3haUVVOMlEzWkhMRVZCUVVsM1J5eFRRVU5PZUVjc1JVRkJTWGRITEU5QlFVOUdMRmRCUVdGT0xFVkJRV1ZQTEV0QlFVc3NTMEZCVFN4WFFVVndSQ3hOUVVGTmFFb3NTVUZSVml4SlFVTk5kRUlzUzBGQlMzZExMRlZCUVZsNFN5eExRVUZMZVVzc1UwRkRlRUl4Unl4RlFVRkpNa2NzUzBGQlN6RkxMRXRCUVV0WExFOUJRVkZZTEV0QlFVdFpMRXRCUVVzc1JVRkJUVm9zUzBGQlMzZExMRk5CUVZWNFN5eExRVUZMZVVzc1ZVRkZNVVF4Unl4RlFVRkpNa2NzUzBGQlN6RkxMRXRCUVV0WExFOUJRVkZZTEV0QlFVdFpMRXRCUVVzc1IwRkZiRU1zVFVGQlQzVkZMRWRCUlZBc1QwRkJUMjVHTEV0QlFVdDVSaXhUUVVGVFRpeEhRVTkyUWl4SFFVaEpia1lzUzBGQlN6SkxMRzFDUVVGclFqVkhMRVZCUVVrMlJ5eHBRa0ZCYTBJc1NVRkhOVU0xU3l4TFFVRkxiVWtzVjBGQllTeFBRVUZUYmtrc1MwRkJTMWNzVVVGQlZTeFJRVUZWV0N4TFFVRkxWeXhSUVVGVkxHbENRVUZ0UW0xR0xFbEJRVk01Uml4TFFVRkxiVW9zVVVGQlVYSkVMRWRCUVU4c1EwRkZkRWdzVFVGQlRTdEZMRVZCUVdNM1N5eExRVUZMWjBZc1VVRkJVU3huUWtGRGFrTXNTVUZCU1hKRUxFVkJRVmt6UWl4TFFVRkxPRXNzWVVGQlpYUkxMRkZCUVZGdFFpeFZRVUZWYTBvc1JVRkJZMEVzUlVGQldXeEpMRTFCUVUwc1MwRkJTeXhIUVVGTExFdEJRek5HYUVJc1IwRkJZU3RDTEU5QlFVOXRTQ3hMUVVOMlFteEtMRVZCUVZsdVFpeFJRVUZSYlVJc1ZVRkJWU3h4UWtGRk5VSkJMRWxCUVZkdFJTeEZRVUZQYmtVc1JVRkJWVzFGTEVsQlNXeERMRWxCUVVzc1RVRkJUWFJETEV0QlFWTjRSQ3hMUVVGTGMwVXNUMEZEYmtJc1RVRkJVWFJGTEV0QlFVdHpSU3hQUVVGUFpDeEpRVVZ3UW5oRUxFdEJRVXR6UlN4UFFVRlBlVWNzWlVGQlpYWklMRWxCUXpkQ1R5eEZRVUZKYVVnc2FVSkJRV2xDZUVnc1JVRkJUM2hFTEV0QlFVdHpSU3hQUVVGUFpDeEpRVWQ0UTNoRUxFdEJRVXN5UlN4blFrRkRVRm9zUlVGQlNVVXNZVUZCWldwRkxFdEJRVXN5UlN4bFFVa3hRak5GTEV0QlFVc3dSaXhMUVVGTExGVkJRVmN4Uml4TlFVbHlRaXRFTEVWQlFVbHBReXhWUVVGeFFpeEpRVUZVUml4RlFVRjFRa0VzUlVGQlR5eFBRVWRvUkhSR0xGRkJRVkYzU1N4TlFVRlJMRXRCUVUwc1NVRkJTVEZKTEU5QlJURkNMRU5CUVVNc1RVRkJUeXhQUVVGUkxGVkJRVmNzVVVGQlV5eE5RVUZQTEZWQlFWVTRRaXhSUVVGUmVrSXNTVUZETTBSTUxFMUJRVTExUnl4VlFVRlZiRWNzUlVGQlR6aERMR1ZCUVdsQ0xGTkJRVk0zUXl4RlFVRkxiVVlzUjBGRGNFUXNUVUZCVFdwRExFVkJRVTBzU1VGQlNYUkVMRkZCUVZGTExGRkJRVkZHTEVWQlFWRkRMRWRCUzNoRExFOUJTa0ZhTEV0QlFVdHBUQ3hoUVVGaGJrZ3NSMEZEWkdsRExFZEJRMFpxUXl4RlFVRkphRVFzU1VGQlNXbEdMRWRCUlVocVF5eExRVWxZZUVRc1RVRkJUWFZITEZWQlFWVm9RaXhKUVVGTmRrWXNUVUZCVFhWSExGVkJRV3RDTEU5QldUbERja2NzVVVGQlVUQkxMRWxCUVUwc1JVRkJRM1JMTEVWQlFVdHJSaXhGUVVGTlF5eExRVU40UWl4TlFVRk5ha01zUlVGQlRYUkVMRkZCUVZFc1RVRkJUMGtzUjBGSk0wSXNUVUZJU1N4dFFrRkJjVUpyUml4SlFVRlBReXhGUVVGTFJDeEZRVUZSUVN4RlFVRlBMRTFCUTJoRVFTeEhRVUZOYUVNc1JVRkJTVGhFTEUxQlFVMDVRaXhIUVVOb1FrTXNSMEZCU1dwRExFVkJRVWxvUkN4SlFVRkphVVlzUjBGRFZHcERMRWxCWVZSMFJDeFJRVUZSTWtzc1MwRkJUeXhGUVVGRGRrc3NSVUZCUzJ0R0xFVkJRVTFETEV0QlEzcENMRTFCUVUxcVF5eEZRVUZOZEVRc1VVRkJVU3hQUVVGUlNTeEhRVWsxUWl4TlFVaEpMRzFDUVVGeFFtdEdMRWxCUVU5RExFVkJRVXRFTEVWQlFWRkJMRVZCUVU4c1RVRkRhRVJCTEVkQlFVMW9ReXhGUVVGSk9FUXNUVUZCVFRsQ0xFZEJRMmhDUXl4SFFVRkpha01zUlVGQlNXaEVMRWxCUVVscFJpeEhRVU5VYWtNc1NVRmhWSFJFTEZGQlFWRm5TQ3hSUVVGVkxFVkJRVU0xUnl4RlFVRkxhMFlzUlVGQlRVTXNTMEZETlVJc1RVRkJUV3BETEVWQlFVMTBSQ3hSUVVGUkxGVkJRVmRKTEVkQlNTOUNMRTFCU0Vrc2JVSkJRWEZDYTBZc1NVRkJUME1zUlVGQlMwUXNSVUZCVVVFc1JVRkJUeXhOUVVOb1JFRXNSMEZCVFdoRExFVkJRVWxyUXl4TFFVRkxSaXhIUVVObVF5eEhRVUZKYWtNc1JVRkJTV2hFTEVsQlFVbHBSaXhIUVVOVWFrTXNTVUZ4UWxSMFJDeFJRVUZoTEVsQlFVbHhSaXhKUVVOcVFuSkdMRkZCUVdkQ0xFOUJRVWx4Uml4SlFWbHdRbkpHTEZGQlFWRTBTeXhOUVVGUkxFVkJRVU40U3l4RlFVRkxhMFlzUlVGQlRVTXNTMEZETVVJc1RVRkJUV3BETEVWQlFVMTBSQ3hSUVVGUkxGRkJRVk5KTEVkQlNUZENMRTFCU0Vrc2JVSkJRWEZDYTBZc1NVRkJUME1zUlVGQlMwUXNSVUZCVVVFc1JVRkJUeXhOUVVOb1JFRXNSMEZCVFdoRExFVkJRVWxyUXl4TFFVRkxSaXhIUVVObVF5eEhRVUZKYWtNc1JVRkJTV2hFTEVsQlFVbHBSaXhIUVVOVWFrTXNTVUZoVkhSRUxGRkJRVkUyU3l4TFFVRlBMRVZCUVVONlN5eEZRVUZMYTBZc1JVRkJUVU1zUzBGRGVrSXNUVUZCVFdwRExFVkJRVTEwUkN4UlFVRlJMRTlCUVZGSkxFZEJTVFZDTEUxQlNFa3NiVUpCUVhGQ2EwWXNTVUZCVDBNc1JVRkJTMFFzUlVGQlVVRXNSVUZCVHl4TlFVTm9SRUVzUjBGQlRXaERMRVZCUVVsclF5eExRVUZMUml4SFFVTm1ReXhIUVVGSmFrTXNSVUZCU1doRUxFbEJRVWxwUml4SFFVTlVha01zU1VGaFZIUkVMRkZCUVZFNFN5eEpRVUZOTEVWQlFVTXhTeXhGUVVGTGEwWXNSVUZCVFVNc1MwRkRlRUlzVFVGQlRXcERMRVZCUVUxMFJDeFJRVUZSTEUxQlFVOUpMRWRCU1ROQ0xFMUJTRWtzYlVKQlFYRkNhMFlzU1VGQlQwTXNSVUZCUzBRc1JVRkJVVUVzUlVGQlR5eE5RVU5vUkVFc1IwRkJUV2hETEVWQlFVbHJReXhMUVVGTFJpeEhRVU5tUXl4SFFVRkpha01zUlVGQlNXaEVMRWxCUVVscFJpeEhRVU5VYWtNaUxDSm1hV3hsSWpvaVJUcGNYSGR2Y210emNHRmpaVnhjZDJscmFXRXRhWE10WVc1emQyVnlaV1JjWEc1dlpHVmZiVzlrZFd4bGMxeGNjM1Z3WlhKaFoyVnVkRnhjYkdsaVhGeGpiR2xsYm5RdWFuTWlmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gaXNPYmplY3QodCl7cmV0dXJuIG51bGwhPT10JiZcIm9iamVjdFwiPT10eXBlb2YgdH1tb2R1bGUuZXhwb3J0cz1pc09iamVjdDtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHpMVzlpYW1WamRDNXFjeUpkTENKdVlXMWxjeUk2V3lKcGMwOWlhbVZqZENJc0ltOWlhaUlzSW0xdlpIVnNaU0lzSW1WNGNHOXlkSE1pWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEdGQlZVRXNVMEZCVTBFc1UwRkJVME1zUjBGRGFFSXNUMEZCVHl4UFFVRlRRU3hIUVVGUExHbENRVUZ2UWtFc1JVRkhOME5ETEU5QlFVOURMRkZCUVZWSUlpd2labWxzWlNJNklrVTZYRngzYjNKcmMzQmhZMlZjWEhkcGEybGhMV2x6TFdGdWMzZGxjbVZrWEZ4dWIyUmxYMjF2WkhWc1pYTmNYSE4xY0dWeVlXZGxiblJjWEd4cFlseGNhWE10YjJKcVpXTjBMbXB6SW4wPSIsIlwidXNlIHN0cmljdFwiO2NvbnN0IGlzT2JqZWN0PXJlcXVpcmUoXCIuL2lzLW9iamVjdFwiKTtmdW5jdGlvbiBSZXF1ZXN0QmFzZSh0KXtpZih0KXJldHVybiBtaXhpbih0KX1mdW5jdGlvbiBtaXhpbih0KXtmb3IoY29uc3QgZSBpbiBSZXF1ZXN0QmFzZS5wcm90b3R5cGUpdFtlXT1SZXF1ZXN0QmFzZS5wcm90b3R5cGVbZV07cmV0dXJuIHR9bW9kdWxlLmV4cG9ydHM9UmVxdWVzdEJhc2UsUmVxdWVzdEJhc2UucHJvdG90eXBlLmNsZWFyVGltZW91dD1mdW5jdGlvbigpe3JldHVybiBjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpLGNsZWFyVGltZW91dCh0aGlzLl9yZXNwb25zZVRpbWVvdXRUaW1lciksZGVsZXRlIHRoaXMuX3RpbWVyLGRlbGV0ZSB0aGlzLl9yZXNwb25zZVRpbWVvdXRUaW1lcix0aGlzfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3BhcnNlcj10LHRoaXN9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZXNwb25zZVR5cGU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3Jlc3BvbnNlVHlwZT10LHRoaXN9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZXJpYWxpemU9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3NlcmlhbGl6ZXI9dCx0aGlzfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUudGltZW91dD1mdW5jdGlvbih0KXtpZighdHx8XCJvYmplY3RcIiE9dHlwZW9mIHQpcmV0dXJuIHRoaXMuX3RpbWVvdXQ9dCx0aGlzLl9yZXNwb25zZVRpbWVvdXQ9MCx0aGlzO2Zvcihjb25zdCBlIGluIHQpc3dpdGNoKGUpe2Nhc2VcImRlYWRsaW5lXCI6dGhpcy5fdGltZW91dD10LmRlYWRsaW5lO2JyZWFrO2Nhc2VcInJlc3BvbnNlXCI6dGhpcy5fcmVzcG9uc2VUaW1lb3V0PXQucmVzcG9uc2U7YnJlYWs7ZGVmYXVsdDpjb25zb2xlLndhcm4oXCJVbmtub3duIHRpbWVvdXQgb3B0aW9uXCIsZSl9cmV0dXJuIHRoaXN9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZXRyeT1mdW5jdGlvbih0LGUpe3JldHVybiAwIT09YXJndW1lbnRzLmxlbmd0aCYmITAhPT10fHwodD0xKSx0PD0wJiYodD0wKSx0aGlzLl9tYXhSZXRyaWVzPXQsdGhpcy5fcmV0cmllcz0wLHRoaXMuX3JldHJ5Q2FsbGJhY2s9ZSx0aGlzfTtjb25zdCBFUlJPUl9DT0RFUz1bXCJFQ09OTlJFU0VUXCIsXCJFVElNRURPVVRcIixcIkVBRERSSU5GT1wiLFwiRVNPQ0tFVFRJTUVET1VUXCJdO1JlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2hvdWxkUmV0cnk9ZnVuY3Rpb24odCxlKXtpZighdGhpcy5fbWF4UmV0cmllc3x8dGhpcy5fcmV0cmllcysrPj10aGlzLl9tYXhSZXRyaWVzKXJldHVybiExO2lmKHRoaXMuX3JldHJ5Q2FsbGJhY2spdHJ5e2NvbnN0IHM9dGhpcy5fcmV0cnlDYWxsYmFjayh0LGUpO2lmKCEwPT09cylyZXR1cm4hMDtpZighMT09PXMpcmV0dXJuITF9Y2F0Y2godCl7Y29uc29sZS5lcnJvcih0KX1pZihlJiZlLnN0YXR1cyYmZS5zdGF0dXM+PTUwMCYmNTAxIT1lLnN0YXR1cylyZXR1cm4hMDtpZih0KXtpZih0LmNvZGUmJn5FUlJPUl9DT0RFUy5pbmRleE9mKHQuY29kZSkpcmV0dXJuITA7aWYodC50aW1lb3V0JiZcIkVDT05OQUJPUlRFRFwiPT10LmNvZGUpcmV0dXJuITA7aWYodC5jcm9zc0RvbWFpbilyZXR1cm4hMH1yZXR1cm4hMX0sUmVxdWVzdEJhc2UucHJvdG90eXBlLl9yZXRyeT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNsZWFyVGltZW91dCgpLHRoaXMucmVxJiYodGhpcy5yZXE9bnVsbCx0aGlzLnJlcT10aGlzLnJlcXVlc3QoKSksdGhpcy5fYWJvcnRlZD0hMSx0aGlzLnRpbWVkb3V0PSExLHRoaXMuX2VuZCgpfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUudGhlbj1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZSl7Y29uc3QgdD10aGlzO3RoaXMuX2VuZENhbGxlZCYmY29uc29sZS53YXJuKFwiV2FybmluZzogc3VwZXJhZ2VudCByZXF1ZXN0IHdhcyBzZW50IHR3aWNlLCBiZWNhdXNlIGJvdGggLmVuZCgpIGFuZCAudGhlbigpIHdlcmUgY2FsbGVkLiBOZXZlciBjYWxsIC5lbmQoKSBpZiB5b3UgdXNlIHByb21pc2VzXCIpLHRoaXMuX2Z1bGxmaWxsZWRQcm9taXNlPW5ldyBQcm9taXNlKChlLHMpPT57dC5vbihcImVycm9yXCIscyksdC5vbihcImFib3J0XCIsKCk9Pntjb25zdCB0PW5ldyBFcnJvcihcIkFib3J0ZWRcIik7dC5jb2RlPVwiQUJPUlRFRFwiLHQuc3RhdHVzPXRoaXMuc3RhdHVzLHQubWV0aG9kPXRoaXMubWV0aG9kLHQudXJsPXRoaXMudXJsLHModCl9KSx0LmVuZCgodCxpKT0+e3Q/cyh0KTplKGkpfSl9KX1yZXR1cm4gdGhpcy5fZnVsbGZpbGxlZFByb21pc2UudGhlbih0LGUpfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMudGhlbih2b2lkIDAsdCl9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS51c2U9ZnVuY3Rpb24odCl7cmV0dXJuIHQodGhpcyksdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLm9rPWZ1bmN0aW9uKHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgRXJyb3IoXCJDYWxsYmFjayByZXF1aXJlZFwiKTtyZXR1cm4gdGhpcy5fb2tDYWxsYmFjaz10LHRoaXN9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5faXNSZXNwb25zZU9LPWZ1bmN0aW9uKHQpe3JldHVybiEhdCYmKHRoaXMuX29rQ2FsbGJhY2s/dGhpcy5fb2tDYWxsYmFjayh0KTp0LnN0YXR1cz49MjAwJiZ0LnN0YXR1czwzMDApfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9oZWFkZXJbdC50b0xvd2VyQ2FzZSgpXX0sUmVxdWVzdEJhc2UucHJvdG90eXBlLmdldEhlYWRlcj1SZXF1ZXN0QmFzZS5wcm90b3R5cGUuZ2V0LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24odCxlKXtpZihpc09iamVjdCh0KSl7Zm9yKGNvbnN0IGUgaW4gdCl0aGlzLnNldChlLHRbZV0pO3JldHVybiB0aGlzfXJldHVybiB0aGlzLl9oZWFkZXJbdC50b0xvd2VyQ2FzZSgpXT1lLHRoaXMuaGVhZGVyW3RdPWUsdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLnVuc2V0PWZ1bmN0aW9uKHQpe3JldHVybiBkZWxldGUgdGhpcy5faGVhZGVyW3QudG9Mb3dlckNhc2UoKV0sZGVsZXRlIHRoaXMuaGVhZGVyW3RdLHRoaXN9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5maWVsZD1mdW5jdGlvbih0LGUpe2lmKG51bGw9PXQpdGhyb3cgbmV3IEVycm9yKFwiLmZpZWxkKG5hbWUsIHZhbCkgbmFtZSBjYW4gbm90IGJlIGVtcHR5XCIpO2lmKHRoaXMuX2RhdGEpdGhyb3cgbmV3IEVycm9yKFwiLmZpZWxkKCkgY2FuJ3QgYmUgdXNlZCBpZiAuc2VuZCgpIGlzIHVzZWQuIFBsZWFzZSB1c2Ugb25seSAuc2VuZCgpIG9yIG9ubHkgLmZpZWxkKCkgJiAuYXR0YWNoKClcIik7aWYoaXNPYmplY3QodCkpe2Zvcihjb25zdCBlIGluIHQpdGhpcy5maWVsZChlLHRbZV0pO3JldHVybiB0aGlzfWlmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcihjb25zdCBzIGluIGUpdGhpcy5maWVsZCh0LGVbc10pO3JldHVybiB0aGlzfWlmKG51bGw9PWUpdGhyb3cgbmV3IEVycm9yKFwiLmZpZWxkKG5hbWUsIHZhbCkgdmFsIGNhbiBub3QgYmUgZW1wdHlcIik7cmV0dXJuXCJib29sZWFuXCI9PXR5cGVvZiBlJiYoZT1cIlwiK2UpLHRoaXMuX2dldEZvcm1EYXRhKCkuYXBwZW5kKHQsZSksdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLmFib3J0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Fib3J0ZWQ/dGhpczoodGhpcy5fYWJvcnRlZD0hMCx0aGlzLnhociYmdGhpcy54aHIuYWJvcnQoKSx0aGlzLnJlcSYmdGhpcy5yZXEuYWJvcnQoKSx0aGlzLmNsZWFyVGltZW91dCgpLHRoaXMuZW1pdChcImFib3J0XCIpLHRoaXMpfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2F1dGg9ZnVuY3Rpb24odCxlLHMsaSl7c3dpdGNoKHMudHlwZSl7Y2FzZVwiYmFzaWNcIjp0aGlzLnNldChcIkF1dGhvcml6YXRpb25cIixgQmFzaWMgJHtpKGAke3R9OiR7ZX1gKX1gKTticmVhaztjYXNlXCJhdXRvXCI6dGhpcy51c2VybmFtZT10LHRoaXMucGFzc3dvcmQ9ZTticmVhaztjYXNlXCJiZWFyZXJcIjp0aGlzLnNldChcIkF1dGhvcml6YXRpb25cIixgQmVhcmVyICR7dH1gKX1yZXR1cm4gdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLndpdGhDcmVkZW50aWFscz1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dCYmKHQ9ITApLHRoaXMuX3dpdGhDcmVkZW50aWFscz10LHRoaXN9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5yZWRpcmVjdHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX21heFJlZGlyZWN0cz10LHRoaXN9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5tYXhSZXNwb25zZVNpemU9ZnVuY3Rpb24odCl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIHQpdGhyb3cgVHlwZUVycm9yKFwiSW52YWxpZCBhcmd1bWVudFwiKTtyZXR1cm4gdGhpcy5fbWF4UmVzcG9uc2VTaXplPXQsdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybnttZXRob2Q6dGhpcy5tZXRob2QsdXJsOnRoaXMudXJsLGRhdGE6dGhpcy5fZGF0YSxoZWFkZXJzOnRoaXMuX2hlYWRlcn19LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5zZW5kPWZ1bmN0aW9uKHQpe2NvbnN0IGU9aXNPYmplY3QodCk7bGV0IHM9dGhpcy5faGVhZGVyW1wiY29udGVudC10eXBlXCJdO2lmKHRoaXMuX2Zvcm1EYXRhKXRocm93IG5ldyBFcnJvcihcIi5zZW5kKCkgY2FuJ3QgYmUgdXNlZCBpZiAuYXR0YWNoKCkgb3IgLmZpZWxkKCkgaXMgdXNlZC4gUGxlYXNlIHVzZSBvbmx5IC5zZW5kKCkgb3Igb25seSAuZmllbGQoKSAmIC5hdHRhY2goKVwiKTtpZihlJiYhdGhpcy5fZGF0YSlBcnJheS5pc0FycmF5KHQpP3RoaXMuX2RhdGE9W106dGhpcy5faXNIb3N0KHQpfHwodGhpcy5fZGF0YT17fSk7ZWxzZSBpZih0JiZ0aGlzLl9kYXRhJiZ0aGlzLl9pc0hvc3QodGhpcy5fZGF0YSkpdGhyb3cgRXJyb3IoXCJDYW4ndCBtZXJnZSB0aGVzZSBzZW5kIGNhbGxzXCIpO2lmKGUmJmlzT2JqZWN0KHRoaXMuX2RhdGEpKWZvcihjb25zdCBlIGluIHQpdGhpcy5fZGF0YVtlXT10W2VdO2Vsc2VcInN0cmluZ1wiPT10eXBlb2YgdD8oc3x8dGhpcy50eXBlKFwiZm9ybVwiKSxzPXRoaXMuX2hlYWRlcltcImNvbnRlbnQtdHlwZVwiXSx0aGlzLl9kYXRhPVwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCI9PXM/dGhpcy5fZGF0YT9gJHt0aGlzLl9kYXRhfSYke3R9YDp0Oih0aGlzLl9kYXRhfHxcIlwiKSt0KTp0aGlzLl9kYXRhPXQ7cmV0dXJuIWV8fHRoaXMuX2lzSG9zdCh0KT90aGlzOihzfHx0aGlzLnR5cGUoXCJqc29uXCIpLHRoaXMpfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUuc29ydFF1ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9zb3J0PXZvaWQgMD09PXR8fHQsdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLl9maW5hbGl6ZVF1ZXJ5U3RyaW5nPWZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzLl9xdWVyeS5qb2luKFwiJlwiKTtpZih0JiYodGhpcy51cmwrPSh0aGlzLnVybC5pbmRleE9mKFwiP1wiKT49MD9cIiZcIjpcIj9cIikrdCksdGhpcy5fcXVlcnkubGVuZ3RoPTAsdGhpcy5fc29ydCl7Y29uc3QgdD10aGlzLnVybC5pbmRleE9mKFwiP1wiKTtpZih0Pj0wKXtjb25zdCBlPXRoaXMudXJsLnN1YnN0cmluZyh0KzEpLnNwbGl0KFwiJlwiKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzLl9zb3J0P2Uuc29ydCh0aGlzLl9zb3J0KTplLnNvcnQoKSx0aGlzLnVybD10aGlzLnVybC5zdWJzdHJpbmcoMCx0KStcIj9cIitlLmpvaW4oXCImXCIpfX19LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5fYXBwZW5kUXVlcnlTdHJpbmc9KCgpPT57Y29uc29sZS50cmFjZShcIlVuc3VwcG9ydGVkXCIpfSksUmVxdWVzdEJhc2UucHJvdG90eXBlLl90aW1lb3V0RXJyb3I9ZnVuY3Rpb24odCxlLHMpe2lmKHRoaXMuX2Fib3J0ZWQpcmV0dXJuO2NvbnN0IGk9bmV3IEVycm9yKGAke3QrZX1tcyBleGNlZWRlZGApO2kudGltZW91dD1lLGkuY29kZT1cIkVDT05OQUJPUlRFRFwiLGkuZXJybm89cyx0aGlzLnRpbWVkb3V0PSEwLHRoaXMuYWJvcnQoKSx0aGlzLmNhbGxiYWNrKGkpfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUuX3NldFRpbWVvdXRzPWZ1bmN0aW9uKCl7Y29uc3QgdD10aGlzO3RoaXMuX3RpbWVvdXQmJiF0aGlzLl90aW1lciYmKHRoaXMuX3RpbWVyPXNldFRpbWVvdXQoKCk9Pnt0Ll90aW1lb3V0RXJyb3IoXCJUaW1lb3V0IG9mIFwiLHQuX3RpbWVvdXQsXCJFVElNRVwiKX0sdGhpcy5fdGltZW91dCkpLHRoaXMuX3Jlc3BvbnNlVGltZW91dCYmIXRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyJiYodGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXI9c2V0VGltZW91dCgoKT0+e3QuX3RpbWVvdXRFcnJvcihcIlJlc3BvbnNlIHRpbWVvdXQgb2YgXCIsdC5fcmVzcG9uc2VUaW1lb3V0LFwiRVRJTUVET1VUXCIpfSx0aGlzLl9yZXNwb25zZVRpbWVvdXQpKX07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbkpsY1hWbGMzUXRZbUZ6WlM1cWN5SmRMQ0p1WVcxbGN5STZXeUpwYzA5aWFtVmpkQ0lzSW5KbGNYVnBjbVVpTENKU1pYRjFaWE4wUW1GelpTSXNJbTlpYWlJc0ltMXBlR2x1SWl3aWEyVjVJaXdpY0hKdmRHOTBlWEJsSWl3aWJXOWtkV3hsSWl3aVpYaHdiM0owY3lJc0ltTnNaV0Z5VkdsdFpXOTFkQ0lzSW5Sb2FYTWlMQ0pmZEdsdFpYSWlMQ0pmY21WemNHOXVjMlZVYVcxbGIzVjBWR2x0WlhJaUxDSndZWEp6WlNJc0ltWnVJaXdpWDNCaGNuTmxjaUlzSW5KbGMzQnZibk5sVkhsd1pTSXNJblpoYkNJc0lsOXlaWE53YjI1elpWUjVjR1VpTENKelpYSnBZV3hwZW1VaUxDSmZjMlZ5YVdGc2FYcGxjaUlzSW5ScGJXVnZkWFFpTENKdmNIUnBiMjV6SWl3aVgzUnBiV1Z2ZFhRaUxDSmZjbVZ6Y0c5dWMyVlVhVzFsYjNWMElpd2liM0IwYVc5dUlpd2laR1ZoWkd4cGJtVWlMQ0p5WlhOd2IyNXpaU0lzSW1OdmJuTnZiR1VpTENKM1lYSnVJaXdpY21WMGNua2lMQ0pqYjNWdWRDSXNJbUZ5WjNWdFpXNTBjeUlzSW14bGJtZDBhQ0lzSWw5dFlYaFNaWFJ5YVdWeklpd2lYM0psZEhKcFpYTWlMQ0pmY21WMGNubERZV3hzWW1GamF5SXNJa1ZTVWs5U1gwTlBSRVZUSWl3aVgzTm9iM1ZzWkZKbGRISjVJaXdpWlhKeUlpd2ljbVZ6SWl3aWIzWmxjbkpwWkdVaUxDSmxJaXdpWlhKeWIzSWlMQ0p6ZEdGMGRYTWlMQ0pqYjJSbElpd2lhVzVrWlhoUFppSXNJbU55YjNOelJHOXRZV2x1SWl3aVgzSmxkSEo1SWl3aWNtVnhJaXdpY21WeGRXVnpkQ0lzSWw5aFltOXlkR1ZrSWl3aWRHbHRaV1J2ZFhRaUxDSmZaVzVrSWl3aWRHaGxiaUlzSW5KbGMyOXNkbVVpTENKeVpXcGxZM1FpTENKZlpuVnNiR1pwYkd4bFpGQnliMjFwYzJVaUxDSnpaV3htSWl3aVgyVnVaRU5oYkd4bFpDSXNJbEJ5YjIxcGMyVWlMQ0pwYm01bGNsSmxjMjlzZG1VaUxDSnBibTVsY2xKbGFtVmpkQ0lzSW05dUlpd2lSWEp5YjNJaUxDSnRaWFJvYjJRaUxDSjFjbXdpTENKbGJtUWlMQ0pqWWlJc0luVnVaR1ZtYVc1bFpDSXNJblZ6WlNJc0ltOXJJaXdpWDI5clEyRnNiR0poWTJzaUxDSmZhWE5TWlhOd2IyNXpaVTlMSWl3aVoyVjBJaXdpWm1sbGJHUWlMQ0pmYUdWaFpHVnlJaXdpZEc5TWIzZGxja05oYzJVaUxDSm5aWFJJWldGa1pYSWlMQ0p6WlhRaUxDSm9aV0ZrWlhJaUxDSjFibk5sZENJc0ltNWhiV1VpTENKZlpHRjBZU0lzSWtGeWNtRjVJaXdpYVhOQmNuSmhlU0lzSW1raUxDSmZaMlYwUm05eWJVUmhkR0VpTENKaGNIQmxibVFpTENKaFltOXlkQ0lzSW5ob2NpSXNJbVZ0YVhRaUxDSmZZWFYwYUNJc0luVnpaWElpTENKd1lYTnpJaXdpWW1GelpUWTBSVzVqYjJSbGNpSXNJblI1Y0dVaUxDSjFjMlZ5Ym1GdFpTSXNJbkJoYzNOM2IzSmtJaXdpZDJsMGFFTnlaV1JsYm5ScFlXeHpJaXdpWDNkcGRHaERjbVZrWlc1MGFXRnNjeUlzSW5KbFpHbHlaV04wY3lJc0ltNGlMQ0pmYldGNFVtVmthWEpsWTNSeklpd2liV0Y0VW1WemNHOXVjMlZUYVhwbElpd2lWSGx3WlVWeWNtOXlJaXdpWDIxaGVGSmxjM0J2Ym5ObFUybDZaU0lzSW5SdlNsTlBUaUlzSW1SaGRHRWlMQ0pvWldGa1pYSnpJaXdpYzJWdVpDSXNJbWx6VDJKcUlpd2lYMlp2Y20xRVlYUmhJaXdpWDJselNHOXpkQ0lzSW5OdmNuUlJkV1Z5ZVNJc0luTnZjblFpTENKZmMyOXlkQ0lzSWw5bWFXNWhiR2w2WlZGMVpYSjVVM1J5YVc1bklpd2ljWFZsY25raUxDSmZjWFZsY25raUxDSnFiMmx1SWl3aWFXNWtaWGdpTENKeGRXVnllVUZ5Y2lJc0luTjFZbk4wY21sdVp5SXNJbk53YkdsMElpd2lYMkZ3Y0dWdVpGRjFaWEo1VTNSeWFXNW5JaXdpZEhKaFkyVWlMQ0pmZEdsdFpXOTFkRVZ5Y205eUlpd2ljbVZoYzI5dUlpd2laWEp5Ym04aUxDSmpZV3hzWW1GamF5SXNJbDl6WlhSVWFXMWxiM1YwY3lJc0luTmxkRlJwYldWdmRYUWlYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMR0ZCUzBFc1RVRkJUVUVzVTBGQlYwTXNVVUZCVVN4bFFXTjZRaXhUUVVGVFF5eFpRVUZaUXl4SFFVTnVRaXhIUVVGSlFTeEZRVUZMTEU5QlFVOURMRTFCUVUxRUxFZEJWM2hDTEZOQlFWTkRMRTFCUVUxRUxFZEJRMklzU1VGQlN5eE5RVUZOUlN4TFFVRlBTQ3haUVVGWlNTeFZRVU0xUWtnc1JVRkJTVVVzUjBGQlQwZ3NXVUZCV1Vrc1ZVRkJWVVFzUjBGRmJrTXNUMEZCVDBZc1JVRjRRbFJKTEU5QlFVOURMRkZCUVZWT0xGbEJhME5xUWtFc1dVRkJXVWtzVlVGQlZVY3NZVUZCWlN4WFFVdHVReXhQUVVwQlFTeGhRVUZoUXl4TFFVRkxReXhSUVVOc1FrWXNZVUZCWVVNc1MwRkJTMFVzT0VKQlExaEdMRXRCUVV0RExHTkJRMHhFTEV0QlFVdEZMSE5DUVVOTVJpeE5RVmxVVWl4WlFVRlpTU3hWUVVGVlR5eE5RVUZSTEZOQlFXVkRMRWRCUlRORExFOUJSRUZLTEV0QlFVdExMRkZCUVZWRUxFVkJRMUpLTEUxQmNVSlVVaXhaUVVGWlNTeFZRVUZWVlN4aFFVRmxMRk5CUVZORExFZEJSVFZETEU5QlJFRlFMRXRCUVV0UkxHTkJRV2RDUkN4RlFVTmtVQ3hOUVZsVVVpeFpRVUZaU1N4VlFVRlZZU3hWUVVGWkxGTkJRVzFDVEN4SFFVVnVSQ3hQUVVSQlNpeExRVUZMVlN4WlFVRmpUaXhGUVVOYVNpeE5RV2RDVkZJc1dVRkJXVWtzVlVGQlZXVXNVVUZCVlN4VFFVRnBRa01zUjBGREwwTXNTVUZCUzBFc1IwRkJWeXhwUWtGQmIwSkJMRVZCUjJ4RExFOUJSa0ZhTEV0QlFVdGhMRk5CUVZkRUxFVkJRMmhDV2l4TFFVRkxZeXhwUWtGQmJVSXNSVUZEYWtKa0xFdEJSMVFzU1VGQlNTeE5RVUZOWlN4TFFVRlZTQ3hGUVVOc1FpeFBRVUZQUnl4SFFVTk1MRWxCUVVzc1YwRkRTR1lzUzBGQlMyRXNVMEZCVjBRc1JVRkJVVWtzVTBGRGVFSXNUVUZEUml4SlFVRkxMRmRCUTBob1FpeExRVUZMWXl4cFFrRkJiVUpHTEVWQlFWRkxMRk5CUTJoRExFMUJRMFlzVVVGRFJVTXNVVUZCVVVNc1MwRkJTeXg1UWtGQk1FSktMRWRCUnpkRExFOUJRVTltTEUxQlkxUlNMRmxCUVZsSkxGVkJRVlYzUWl4TlFVRlJMRk5CUVdWRExFVkJRVTlxUWl4SFFVOXNSQ3hQUVV4NVFpeEpRVUZ5UW10Q0xGVkJRVlZETEZOQlFUQkNMRWxCUVZaR0xFbEJRV2RDUVN4RlFVRlJMRWRCUTJ4RVFTeEhRVUZUTEVsQlFVZEJMRVZCUVZFc1IwRkRlRUp5UWl4TFFVRkxkMElzV1VGQlkwZ3NSVUZEYmtKeVFpeExRVUZMZVVJc1UwRkJWeXhGUVVOb1FucENMRXRCUVVzd1FpeGxRVUZwUW5SQ0xFVkJRMlpLTEUxQlIxUXNUVUZCVFRKQ0xGbEJRV01zUTBGRGJFSXNZVUZEUVN4WlFVTkJMRmxCUTBFc2JVSkJWMFp1UXl4WlFVRlpTU3hWUVVGVlowTXNZVUZCWlN4VFFVRlRReXhGUVVGTFF5eEhRVU5xUkN4SlFVRkxPVUlzUzBGQlMzZENMR0ZCUVdWNFFpeExRVUZMZVVJc1dVRkJZM3BDTEV0QlFVdDNRaXhaUVVNdlF5eFBRVUZQTEVWQlJWUXNSMEZCU1hoQ0xFdEJRVXN3UWl4bFFVTlFMRWxCUTBVc1RVRkJUVXNzUlVGQlZ5OUNMRXRCUVVzd1FpeGxRVUZsUnl4RlFVRkxReXhIUVVNeFF5eEpRVUZwUWl4SlFVRmlReXhGUVVGdFFpeFBRVUZQTEVWQlF6bENMRWxCUVdsQ0xFbEJRV0pCTEVWQlFXOUNMRTlCUVU4c1JVRkZMMElzVFVGQlRVTXNSMEZEVG1Rc1VVRkJVV1VzVFVGQlRVUXNSMEZIYkVJc1IwRkJTVVlzUjBGQlQwRXNSVUZCU1Vrc1VVRkJWVW9zUlVGQlNVa3NVVUZCVlN4TFFVRnhRaXhMUVVGa1NpeEZRVUZKU1N4UFFVRmxMRTlCUVU4c1JVRkRlRVVzUjBGQlNVd3NSVUZCU3l4RFFVTlFMRWRCUVVsQkxFVkJRVWxOTEU5QlFWTlNMRmxCUVZsVExGRkJRVkZRTEVWQlFVbE5MRTFCUVU4c1QwRkJUeXhGUVVWMlJDeEhRVUZKVGl4RlFVRkpiRUlzVTBGQmRVSXNaMEpCUVZwclFpeEZRVUZKVFN4TFFVRjNRaXhQUVVGUExFVkJRM1JFTEVkQlFVbE9MRVZCUVVsUkxGbEJRV0VzVDBGQlR5eEZRVVU1UWl4UFFVRlBMRWRCVlZRM1F5eFpRVUZaU1N4VlFVRlZNRU1zVDBGQlV5eFhRV0UzUWl4UFFWaEJkRU1zUzBGQlMwUXNaVUZIUkVNc1MwRkJTM1ZETEUxQlExQjJReXhMUVVGTGRVTXNTVUZCVFN4TFFVTllka01zUzBGQlMzVkRMRWxCUVUxMlF5eExRVUZMZDBNc1YwRkhiRUo0UXl4TFFVRkxlVU1zVlVGQlZ5eEZRVU5vUW5wRExFdEJRVXN3UXl4VlFVRlhMRVZCUlZReFF5eExRVUZMTWtNc1VVRlhaRzVFTEZsQlFWbEpMRlZCUVZWblJDeExRVUZQTEZOQlFXTkRMRVZCUVZORExFZEJRMnhFTEVsQlFVczVReXhMUVVGTEswTXNiVUpCUVc5Q0xFTkJRelZDTEUxQlFVMURMRVZCUVU5b1JDeExRVU5VUVN4TFFVRkxhVVFzV1VGRFVDOUNMRkZCUVZGRExFdEJRVXNzYTBsQlJXWnVRaXhMUVVGTEswTXNiVUpCUVhGQ0xFbEJRVWxITEZGQlFWRXNRMEZCUTBNc1JVRkJZME1zUzBGRGJrUktMRVZCUVV0TExFZEJRVWNzVVVGQlUwUXNSMEZEYWtKS0xFVkJRVXRMTEVkQlFVY3NVVUZCVXl4TFFVTm1MRTFCUVUxNFFpeEZRVUZOTEVsQlFVbDVRaXhOUVVGTkxGZEJRM1JDZWtJc1JVRkJTVTBzUzBGQlR5eFZRVU5ZVGl4RlFVRkpTeXhQUVVGVGJFTXNTMEZCUzJ0RExFOUJRMnhDVEN4RlFVRkpNRUlzVDBGQlUzWkVMRXRCUVV0MVJDeFBRVU5zUWpGQ0xFVkJRVWt5UWl4SlFVRk5lRVFzUzBGQlMzZEVMRWxCUTJaS0xFVkJRVmwyUWl4TFFVVmtiVUlzUlVGQlMxTXNTVUZCU1N4RFFVRkROVUlzUlVGQlMwTXNTMEZEVkVRc1JVRkJTM1ZDTEVWQlFWbDJRaXhIUVVOb1FuTkNMRVZCUVdGeVFpeFBRVWw0UWl4UFFVRlBPVUlzUzBGQlN5dERMRzFDUVVGdFFrZ3NTMEZCUzBNc1JVRkJVME1zU1VGSEwwTjBSQ3haUVVGWlNTeFZRVUZwUWl4TlFVRkpMRk5CUVZNNFJDeEhRVU40UXl4UFFVRlBNVVFzUzBGQlN6UkRMRlZCUVV0bExFVkJRVmRFTEVsQlR6bENiRVVzV1VGQldVa3NWVUZCVldkRkxFbEJRVTBzVTBGQllYaEVMRWRCUlhaRExFOUJSRUZCTEVWQlFVZEtMRTFCUTBsQkxFMUJSMVJTTEZsQlFWbEpMRlZCUVZWcFJTeEhRVUZMTEZOQlFWTklMRWRCUTJ4RExFZEJRVWtzYlVKQlFYTkNRU3hGUVVGSkxFMUJRVTFLTEUxQlFVMHNjVUpCUlRGRExFOUJSRUYwUkN4TFFVRkxPRVFzV1VGQlkwb3NSVUZEV2pGRUxFMUJSMVJTTEZsQlFWbEpMRlZCUVZWdFJTeGpRVUZuUWl4VFFVRlRha01zUjBGRE4wTXNVVUZCUzBFc1NVRkpSRGxDTEV0QlFVczRSQ3haUVVOQk9VUXNTMEZCU3poRUxGbEJRVmxvUXl4SFFVZHVRa0VzUlVGQlNVa3NVVUZCVlN4TFFVRlBTaXhGUVVGSlNTeFBRVUZUTEUxQldUTkRNVU1zV1VGQldVa3NWVUZCVlc5RkxFbEJRVTBzVTBGQlUwTXNSMEZEYmtNc1QwRkJUMnBGTEV0QlFVdHJSU3hSUVVGUlJDeEZRVUZOUlN4blFrRmxOVUl6UlN4WlFVRlpTU3hWUVVGVmQwVXNWVUZCV1RWRkxGbEJRVmxKTEZWQlFWVnZSU3hKUVhWQ2VFUjRSU3haUVVGWlNTeFZRVUZWZVVVc1NVRkJUU3hUUVVGVFNpeEZRVUZQTVVRc1IwRkRNVU1zUjBGQlNXcENMRk5CUVZNeVJTeEhRVUZSTEVOQlEyNUNMRWxCUVVzc1RVRkJUWFJGTEV0QlFVOXpSU3hGUVVOb1FtcEZMRXRCUVV0eFJTeEpRVUZKTVVVc1JVRkJTM05GTEVWQlFVMTBSU3hKUVVWMFFpeFBRVUZQU3l4TFFVbFVMRTlCUmtGQkxFdEJRVXRyUlN4UlFVRlJSQ3hGUVVGTlJTeGxRVUZwUWpWRUxFVkJRM0JEVUN4TFFVRkxjMFVzVDBGQlQwd3NSMEZCVXpGRUxFVkJRMlJRTEUxQlpWUlNMRmxCUVZsSkxGVkJRVlV5UlN4TlFVRlJMRk5CUVZOT0xFZEJSM0pETEdOQlJrOXFSU3hMUVVGTGEwVXNVVUZCVVVRc1JVRkJUVVVzYzBKQlEyNUNia1VzUzBGQlMzTkZMRTlCUVU5TUxFZEJRMXBxUlN4TlFYTkNWRklzV1VGQldVa3NWVUZCVlhGRkxFMUJRVkVzVTBGQlUwOHNSVUZCVFdwRkxFZEJSVE5ETEVkQlFVa3NUVUZCVTJsRkxFVkJRMWdzVFVGQlRTeEpRVUZKYkVJc1RVRkJUU3d5UTBGSGJFSXNSMEZCU1hSRUxFdEJRVXQ1UlN4TlFVTlFMRTFCUVUwc1NVRkJTVzVDTEUxQlFVMHNiVWRCUjJ4Q0xFZEJRVWxvUlN4VFFVRlRhMFlzUjBGQlR5eERRVU5zUWl4SlFVRkxMRTFCUVUwM1JTeExRVUZQTmtVc1JVRkRhRUo0UlN4TFFVRkxhVVVzVFVGQlRYUkZMRVZCUVVzMlJTeEZRVUZMTjBVc1NVRkZka0lzVDBGQlQwc3NTMEZIVkN4SFFVRkpNRVVzVFVGQlRVTXNVVUZCVVhCRkxFZEJRVTBzUTBGRGRFSXNTVUZCU3l4TlFVRk5jVVVzUzBGQlMzSkZMRVZCUTJSUUxFdEJRVXRwUlN4TlFVRk5UeXhGUVVGTmFrVXNSVUZCU1hGRkxFbEJSWFpDTEU5QlFVODFSU3hMUVVsVUxFZEJRVWtzVFVGQlUwOHNSVUZEV0N4TlFVRk5MRWxCUVVrclF5eE5RVUZOTERCRFFVMXNRaXhOUVVwSkxHdENRVUZ4UWk5RExFbEJRM1pDUVN4RlFVRk5MRWRCUVV0QkxFZEJSV0pRTEV0QlFVczJSU3hsUVVGbFF5eFBRVUZQVGl4RlFVRk5ha1VzUjBGRE1VSlFMRTFCVTFSU0xGbEJRVmxKTEZWQlFWVnRSaXhOUVVGUkxGZEJRelZDTEU5QlFVa3ZSU3hMUVVGTGVVTXNVMEZEUVhwRExFMUJSVlJCTEV0QlFVdDVReXhWUVVGWExFVkJRMmhDZWtNc1MwRkJTMmRHTEV0QlFVOW9SaXhMUVVGTFowWXNTVUZCU1VRc1VVRkRja0l2UlN4TFFVRkxkVU1zUzBGQlQzWkRMRXRCUVV0MVF5eEpRVUZKZDBNc1VVRkRja0l2UlN4TFFVRkxSQ3hsUVVOTVF5eExRVUZMYVVZc1MwRkJTeXhUUVVOSWFrWXNUMEZIVkZJc1dVRkJXVWtzVlVGQlZYTkdMRTFCUVZFc1UwRkJVME1zUlVGQlRVTXNSVUZCVFhoRkxFVkJRVk41UlN4SFFVTXhSQ3hQUVVGUmVrVXNSVUZCVVRCRkxFMUJRMlFzU1VGQlN5eFJRVU5JZEVZc1MwRkJTM0ZGTEVsQlFVa3NlVUpCUVRCQ1owSXNTMEZCYVVKR0xFdEJRVkZETEZGQlF6VkVMRTFCUlVZc1NVRkJTeXhQUVVOSWNFWXNTMEZCUzNWR0xGTkJRVmRLTEVWQlEyaENia1lzUzBGQlMzZEdMRk5CUVZkS0xFVkJRMmhDTEUxQlJVWXNTVUZCU3l4VFFVTkljRVlzUzBGQlMzRkZMRWxCUVVrc01FSkJRVEpDWXl4TFFVZDRReXhQUVVGUGJrWXNUVUZqVkZJc1dVRkJXVWtzVlVGQlZUWkdMR2RDUVVGclFpeFRRVUZUY0VNc1IwRkpMME1zVDBGR1ZVMHNUVUZCVGs0c1NVRkJhVUpCTEVkQlFVc3NSMEZETVVKeVJDeExRVUZMTUVZc2FVSkJRVzFDY2tNc1JVRkRha0p5UkN4TlFWZFVVaXhaUVVGWlNTeFZRVUZWSzBZc1ZVRkJXU3hUUVVGVFF5eEhRVVY2UXl4UFFVUkJOVVlzUzBGQlN6WkdMR05CUVdkQ1JDeEZRVU5rTlVZc1RVRlZWRklzV1VGQldVa3NWVUZCVld0SExHZENRVUZyUWl4VFFVRlRSaXhIUVVNdlF5eEhRVUZKTEdsQ1FVRnZRa0VzUlVGRGRFSXNUVUZCVFVjc1ZVRkJWU3h2UWtGSGJFSXNUMEZFUVM5R0xFdEJRVXRuUnl4cFFrRkJiVUpLTEVWQlEycENOVVlzVFVGWlZGSXNXVUZCV1Vrc1ZVRkJWWEZITEU5QlFWTXNWMEZETjBJc1RVRkJUeXhEUVVOTU1VTXNUMEZCVVhaRUxFdEJRVXQxUkN4UFFVTmlReXhKUVVGTGVFUXNTMEZCUzNkRUxFbEJRMVl3UXl4TFFVRk5iRWNzUzBGQlMzbEZMRTFCUTFnd1FpeFJRVUZUYmtjc1MwRkJTMnRGTEZWQk5FTnNRakZGTEZsQlFWbEpMRlZCUVZWM1J5eExRVUZQTEZOQlFWTkdMRWRCUTNCRExFMUJRVTFITEVWQlFWRXZSeXhUUVVGVE5FY3NSMEZEZGtJc1NVRkJTVm9zUlVGQlQzUkdMRXRCUVV0clJTeFJRVUZSTEdkQ1FVVjRRaXhIUVVGSmJFVXNTMEZCUzNOSExGVkJRMUFzVFVGQlRTeEpRVUZKYUVRc1RVRkJUU3huU0VGSGJFSXNSMEZCU1N0RExFbEJRVlZ5Unl4TFFVRkxlVVVzVFVGRFlrTXNUVUZCVFVNc1VVRkJVWFZDTEVkQlEyaENiRWNzUzBGQlMzbEZMRTFCUVZFc1IwRkRTSHBGTEV0QlFVdDFSeXhSUVVGUlRDeExRVU4yUW14SExFdEJRVXQ1UlN4TlFVRlJMRk5CUlZZc1IwRkJTWGxDTEVkQlFWRnNSeXhMUVVGTGVVVXNUMEZCVTNwRkxFdEJRVXQxUnl4UlFVRlJka2NzUzBGQlMzbEZMRTlCUTJwRUxFMUJRVTF1UWl4TlFVRk5MR2REUVVsa0xFZEJRVWtyUXl4SFFVRlRMMGNzVTBGQlUxVXNTMEZCUzNsRkxFOUJRM3BDTEVsQlFVc3NUVUZCVFRsRkxFdEJRVTkxUnl4RlFVTm9RbXhITEV0QlFVdDVSU3hOUVVGTk9VVXNSMEZCVDNWSExFVkJRVXQyUnl4UFFVVm9RaXhwUWtGQmJVSjFSeXhIUVVWMlFsb3NSMEZCVFhSR0xFdEJRVXR6Uml4TFFVRkxMRkZCUTNKQ1FTeEZRVUZQZEVZc1MwRkJTMnRGTEZGQlFWRXNaMEpCUld4Q2JFVXNTMEZCUzNsRkxFMUJSRWdzY1VOQlFYVkRZU3hGUVVNMVFuUkdMRXRCUVV0NVJTeFRRVU5ZZWtVc1MwRkJTM2xGTEZOQlFWTjVRaXhKUVVOcVFrRXNSMEZGVld4SExFdEJRVXQ1UlN4UFFVRlRMRWxCUVUxNVFpeEhRVWR3UTJ4SExFdEJRVXQ1UlN4TlFVRlJlVUlzUlVGSFppeFBRVUZMUnl4SFFVRlRja2NzUzBGQlMzVkhMRkZCUVZGTUxFZEJRMnhDYkVjc1RVRkpTbk5HTEVkQlFVMTBSaXhMUVVGTGMwWXNTMEZCU3l4UlFVTmtkRVlzVDBFclFsUlNMRmxCUVZsSkxGVkJRVlUwUnl4VlFVRlpMRk5CUVZORExFZEJSM3BETEU5QlJFRjZSeXhMUVVGTE1FY3NWMEZCZDBJc1NVRkJWRVFzUjBGQk9FSkJMRVZCUXpORGVrY3NUVUZSVkZJc1dVRkJXVWtzVlVGQlZTdEhMSEZDUVVGMVFpeFhRVU16UXl4TlFVRk5ReXhGUVVGUk5VY3NTMEZCU3paSExFOUJRVTlETEV0QlFVc3NTMEZOTDBJc1IwRk1TVVlzU1VGRFJqVkhMRXRCUVV0M1JDeE5RVUZSZUVRc1MwRkJTM2RFTEVsQlFVbHdRaXhSUVVGUkxFMUJRVkVzUlVGQlNTeEpRVUZOTEV0QlFVOTNSU3hIUVVWNlJEVkhMRXRCUVVzMlJ5eFBRVUZQZEVZc1QwRkJVeXhGUVVWcVFuWkNMRXRCUVVzd1J5eE5RVUZQTEVOQlEyUXNUVUZCVFVzc1JVRkJVUzlITEV0QlFVdDNSQ3hKUVVGSmNFSXNVVUZCVVN4TFFVTXZRaXhIUVVGSk1rVXNSMEZCVXl4RlFVRkhMRU5CUTJRc1RVRkJUVU1zUlVGQlYyaElMRXRCUVV0M1JDeEpRVUZKZVVRc1ZVRkJWVVlzUlVGQlVTeEhRVUZIUnl4TlFVRk5MRXRCUTJwRUxHMUNRVUZ6UW14SUxFdEJRVXN3Unl4TlFVTTNRazBzUlVGQlUxQXNTMEZCUzNwSExFdEJRVXN3Unl4UFFVVnVRazBzUlVGQlUxQXNUMEZGV0hwSExFdEJRVXQzUkN4SlFVRk5lRVFzUzBGQlMzZEVMRWxCUVVsNVJDeFZRVUZWTEVWQlFVZEdMRWRCUVZNc1NVRkJUVU1zUlVGQlUwWXNTMEZCU3l4UlFVMXdSWFJJTEZsQlFWbEpMRlZCUVZWMVNDeHRRa0ZCY1VJc1RVRkJUMnBITEZGQlFWRnJSeXhOUVVGTkxHbENRVkZvUlRWSUxGbEJRVmxKTEZWQlFWVjVTQ3hqUVVGblFpeFRRVUZUUXl4RlFVRlJNMGNzUlVGQlV6UkhMRWRCUXpsRUxFZEJRVWwyU0N4TFFVRkxlVU1zVTBGRFVDeFBRVVZHTEUxQlFVMWFMRVZCUVUwc1NVRkJTWGxDTEZOQlFWTm5SU3hGUVVGVE0wY3NaMEpCUTJ4RGEwSXNSVUZCU1d4Q0xGRkJRVlZCTEVWQlEyUnJRaXhGUVVGSlRTeExRVUZQTEdWQlExaE9MRVZCUVVrd1JpeE5RVUZSUVN4RlFVTmFka2dzUzBGQlN6QkRMRlZCUVZjc1JVRkRhRUl4UXl4TFFVRkxLMFVzVVVGRFRDOUZMRXRCUVV0M1NDeFRRVUZUTTBZc1NVRkhhRUp5UXl4WlFVRlpTU3hWUVVGVk5rZ3NZVUZCWlN4WFFVTnVReXhOUVVGTmVrVXNSVUZCVDJoRUxFdEJSMVJCTEV0QlFVdGhMRmRCUVdGaUxFdEJRVXRETEZOQlEzcENSQ3hMUVVGTFF5eFBRVUZUZVVnc1YwRkJWeXhMUVVOMlFqRkZMRVZCUVV0eFJTeGpRVUZqTEdOQlFXVnlSU3hGUVVGTGJrTXNVMEZCVlN4VlFVTm9SR0lzUzBGQlMyRXNWMEZIVG1Jc1MwRkJTMk1zYlVKQlFYRkNaQ3hMUVVGTFJTeDNRa0ZEYWtOR0xFdEJRVXRGTEhOQ1FVRjNRbmRJTEZkQlFWY3NTMEZEZEVNeFJTeEZRVUZMY1VVc1kwRkJZeXgxUWtGQmQwSnlSU3hGUVVGTGJFTXNhVUpCUVd0Q0xHTkJRMnBGWkN4TFFVRkxZeUlzSW1acGJHVWlPaUpGT2x4Y2QyOXlhM053WVdObFhGeDNhV3RwWVMxcGN5MWhibk4zWlhKbFpGeGNibTlrWlY5dGIyUjFiR1Z6WEZ4emRYQmxjbUZuWlc1MFhGeHNhV0pjWEhKbGNYVmxjM1F0WW1GelpTNXFjeUo5IiwiXCJ1c2Ugc3RyaWN0XCI7Y29uc3QgdXRpbHM9cmVxdWlyZShcIi4vdXRpbHNcIik7ZnVuY3Rpb24gUmVzcG9uc2VCYXNlKHQpe2lmKHQpcmV0dXJuIG1peGluKHQpfWZ1bmN0aW9uIG1peGluKHQpe2Zvcihjb25zdCBzIGluIFJlc3BvbnNlQmFzZS5wcm90b3R5cGUpdFtzXT1SZXNwb25zZUJhc2UucHJvdG90eXBlW3NdO3JldHVybiB0fW1vZHVsZS5leHBvcnRzPVJlc3BvbnNlQmFzZSxSZXNwb25zZUJhc2UucHJvdG90eXBlLmdldD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5oZWFkZXJbdC50b0xvd2VyQ2FzZSgpXX0sUmVzcG9uc2VCYXNlLnByb3RvdHlwZS5fc2V0SGVhZGVyUHJvcGVydGllcz1mdW5jdGlvbih0KXtjb25zdCBzPXRbXCJjb250ZW50LXR5cGVcIl18fFwiXCI7dGhpcy50eXBlPXV0aWxzLnR5cGUocyk7Y29uc3QgZT11dGlscy5wYXJhbXMocyk7Zm9yKGNvbnN0IHQgaW4gZSl0aGlzW3RdPWVbdF07dGhpcy5saW5rcz17fTt0cnl7dC5saW5rJiYodGhpcy5saW5rcz11dGlscy5wYXJzZUxpbmtzKHQubGluaykpfWNhdGNoKHQpe319LFJlc3BvbnNlQmFzZS5wcm90b3R5cGUuX3NldFN0YXR1c1Byb3BlcnRpZXM9ZnVuY3Rpb24odCl7Y29uc3Qgcz10LzEwMHwwO3RoaXMuc3RhdHVzPXRoaXMuc3RhdHVzQ29kZT10LHRoaXMuc3RhdHVzVHlwZT1zLHRoaXMuaW5mbz0xPT1zLHRoaXMub2s9Mj09cyx0aGlzLnJlZGlyZWN0PTM9PXMsdGhpcy5jbGllbnRFcnJvcj00PT1zLHRoaXMuc2VydmVyRXJyb3I9NT09cyx0aGlzLmVycm9yPSg0PT1zfHw1PT1zKSYmdGhpcy50b0Vycm9yKCksdGhpcy5jcmVhdGVkPTIwMT09dCx0aGlzLmFjY2VwdGVkPTIwMj09dCx0aGlzLm5vQ29udGVudD0yMDQ9PXQsdGhpcy5iYWRSZXF1ZXN0PTQwMD09dCx0aGlzLnVuYXV0aG9yaXplZD00MDE9PXQsdGhpcy5ub3RBY2NlcHRhYmxlPTQwNj09dCx0aGlzLmZvcmJpZGRlbj00MDM9PXQsdGhpcy5ub3RGb3VuZD00MDQ9PXQsdGhpcy51bnByb2Nlc3NhYmxlRW50aXR5PTQyMj09dH07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbkpsYzNCdmJuTmxMV0poYzJVdWFuTWlYU3dpYm1GdFpYTWlPbHNpZFhScGJITWlMQ0p5WlhGMWFYSmxJaXdpVW1WemNHOXVjMlZDWVhObElpd2liMkpxSWl3aWJXbDRhVzRpTENKclpYa2lMQ0p3Y205MGIzUjVjR1VpTENKdGIyUjFiR1VpTENKbGVIQnZjblJ6SWl3aVoyVjBJaXdpWm1sbGJHUWlMQ0owYUdseklpd2lhR1ZoWkdWeUlpd2lkRzlNYjNkbGNrTmhjMlVpTENKZmMyVjBTR1ZoWkdWeVVISnZjR1Z5ZEdsbGN5SXNJbU4wSWl3aWRIbHdaU0lzSW5CaGNtRnRjeUlzSW14cGJtdHpJaXdpYkdsdWF5SXNJbkJoY25ObFRHbHVhM01pTENKbGNuSWlMQ0pmYzJWMFUzUmhkSFZ6VUhKdmNHVnlkR2xsY3lJc0luTjBZWFIxY3lJc0luTjBZWFIxYzBOdlpHVWlMQ0p6ZEdGMGRYTlVlWEJsSWl3aWFXNW1ieUlzSW05cklpd2ljbVZrYVhKbFkzUWlMQ0pqYkdsbGJuUkZjbkp2Y2lJc0luTmxjblpsY2tWeWNtOXlJaXdpWlhKeWIzSWlMQ0owYjBWeWNtOXlJaXdpWTNKbFlYUmxaQ0lzSW1GalkyVndkR1ZrSWl3aWJtOURiMjUwWlc1MElpd2lZbUZrVW1WeGRXVnpkQ0lzSW5WdVlYVjBhRzl5YVhwbFpDSXNJbTV2ZEVGalkyVndkR0ZpYkdVaUxDSm1iM0ppYVdSa1pXNGlMQ0p1YjNSR2IzVnVaQ0lzSW5WdWNISnZZMlZ6YzJGaWJHVkZiblJwZEhraVhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxHRkJUVUVzVFVGQlRVRXNUVUZCVVVNc1VVRkJVU3hYUVdOMFFpeFRRVUZUUXl4aFFVRmhReXhIUVVOd1FpeEhRVUZKUVN4RlFVRkxMRTlCUVU5RExFMUJRVTFFTEVkQlYzaENMRk5CUVZORExFMUJRVTFFTEVkQlEySXNTVUZCU3l4TlFVRk5SU3hMUVVGUFNDeGhRVUZoU1N4VlFVTTNRa2dzUlVGQlNVVXNSMEZCVDBnc1lVRkJZVWtzVlVGQlZVUXNSMEZGY0VNc1QwRkJUMFlzUlVGNFFsUkpMRTlCUVU5RExGRkJRVlZPTEdGQmJVTnFRa0VzWVVGQllVa3NWVUZCVlVjc1NVRkJUU3hUUVVGVFF5eEhRVU53UXl4UFFVRlBReXhMUVVGTFF5eFBRVUZQUml4RlFVRk5SeXhuUWtGbE0wSllMR0ZCUVdGSkxGVkJRVlZSTEhGQ1FVRjFRaXhUUVVGVFJpeEhRVXR1UkN4TlFVRk5SeXhGUVVGTFNDeEZRVUZQTEdsQ1FVRnRRaXhIUVVOeVEwUXNTMEZCUzBzc1MwRkJUMmhDTEUxQlFVMW5RaXhMUVVGTFJDeEhRVWQyUWl4TlFVRk5SU3hGUVVGVGFrSXNUVUZCVFdsQ0xFOUJRVTlHTEVkQlF6VkNMRWxCUVVzc1RVRkJUVllzUzBGQlQxa3NSVUZCVVU0c1MwRkJTMDRzUjBGQlQxa3NSVUZCVDFvc1IwRkZOME5OTEV0QlFVdFBMRTFCUVZFc1IwRkhZaXhKUVVOUlRpeEZRVUZQVHl4UFFVTlFVaXhMUVVGTFR5eE5RVUZSYkVJc1RVRkJUVzlDTEZkQlFWZFNMRVZCUVU5UExFOUJSVE5ETEUxQlFVOUZMRTFCTUVKaWJrSXNZVUZCWVVrc1ZVRkJWV2RDTEhGQ1FVRjFRaXhUUVVGVFF5eEhRVU51UkN4TlFVRk5VQ3hGUVVGUFR5eEZRVUZUTEVsQlFVMHNSVUZITlVKYUxFdEJRVXRaTEU5QlFWTmFMRXRCUVV0aExGZEJRV0ZFTEVWQlEyaERXaXhMUVVGTFl5eFhRVUZoVkN4RlFVZHNRa3dzUzBGQlMyVXNTMEZCVHl4SFFVRkxWaXhGUVVOcVFrd3NTMEZCUzJkQ0xFZEJRVXNzUjBGQlMxZ3NSVUZEWmt3c1MwRkJTMmxDTEZOQlFWY3NSMEZCUzFvc1JVRkRja0pNTEV0QlFVdHJRaXhaUVVGakxFZEJRVXRpTEVWQlEzaENUQ3hMUVVGTGJVSXNXVUZCWXl4SFFVRkxaQ3hGUVVONFFrd3NTMEZCUzI5Q0xFOUJRVk1zUjBGQlMyWXNSMEZCVVN4SFFVRkxRU3hKUVVNeFFrd3NTMEZCUzNGQ0xGVkJTVmh5UWl4TFFVRkxjMElzVVVGQlZTeExRVUZQVml4RlFVTjBRbG9zUzBGQlMzVkNMRk5CUVZjc1MwRkJUMWdzUlVGRGRrSmFMRXRCUVV0M1FpeFZRVUZaTEV0QlFVOWFMRVZCUTNoQ1dpeExRVUZMZVVJc1YwRkJZU3hMUVVGUFlpeEZRVU42UWxvc1MwRkJTekJDTEdGQlFXVXNTMEZCVDJRc1JVRkRNMEphTEV0QlFVc3lRaXhqUVVGblFpeExRVUZQWml4RlFVTTFRbG9zUzBGQlN6UkNMRlZCUVZrc1MwRkJUMmhDTEVWQlEzaENXaXhMUVVGTE5rSXNVMEZCVnl4TFFVRlBha0lzUlVGRGRrSmFMRXRCUVVzNFFpeHZRa0ZCYzBJc1MwRkJUMnhDSWl3aVptbHNaU0k2SWtVNlhGeDNiM0pyYzNCaFkyVmNYSGRwYTJsaExXbHpMV0Z1YzNkbGNtVmtYRnh1YjJSbFgyMXZaSFZzWlhOY1hITjFjR1Z5WVdkbGJuUmNYR3hwWWx4Y2NtVnpjRzl1YzJVdFltRnpaUzVxY3lKOSIsIlwidXNlIHN0cmljdFwiO2V4cG9ydHMudHlwZT0oZT0+ZS5zcGxpdCgvICo7ICovKS5zaGlmdCgpKSxleHBvcnRzLnBhcmFtcz0oZT0+ZS5zcGxpdCgvICo7ICovKS5yZWR1Y2UoKGUsdCk9Pntjb25zdCBzPXQuc3BsaXQoLyAqPSAqLyksaT1zLnNoaWZ0KCkscj1zLnNoaWZ0KCk7cmV0dXJuIGkmJnImJihlW2ldPXIpLGV9LHt9KSksZXhwb3J0cy5wYXJzZUxpbmtzPShlPT5lLnNwbGl0KC8gKiwgKi8pLnJlZHVjZSgoZSx0KT0+e2NvbnN0IHM9dC5zcGxpdCgvICo7ICovKSxpPXNbMF0uc2xpY2UoMSwtMSk7cmV0dXJuIGVbc1sxXS5zcGxpdCgvICo9ICovKVsxXS5zbGljZSgxLC0xKV09aSxlfSx7fSkpLGV4cG9ydHMuY2xlYW5IZWFkZXI9KChlLHQpPT4oZGVsZXRlIGVbXCJjb250ZW50LXR5cGVcIl0sZGVsZXRlIGVbXCJjb250ZW50LWxlbmd0aFwiXSxkZWxldGUgZVtcInRyYW5zZmVyLWVuY29kaW5nXCJdLGRlbGV0ZSBlLmhvc3QsdCYmKGRlbGV0ZSBlLmF1dGhvcml6YXRpb24sZGVsZXRlIGUuY29va2llKSxlKSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJblYwYVd4ekxtcHpJbDBzSW01aGJXVnpJanBiSW1WNGNHOXlkSE1pTENKMGVYQmxJaXdpYzNSeUlpd2ljM0JzYVhRaUxDSnphR2xtZENJc0luQmhjbUZ0Y3lJc0luSmxaSFZqWlNJc0ltOWlhaUlzSW5CaGNuUnpJaXdpYTJWNUlpd2lkbUZzSWl3aWNHRnljMlZNYVc1cmN5SXNJblZ5YkNJc0luTnNhV05sSWl3aVkyeGxZVzVJWldGa1pYSWlMQ0pvWldGa1pYSWlMQ0pqYUdGdVoyVnpUM0pwWjJsdUlsMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeGhRVlZCUVN4UlFVRlJReXhMUVVGUFF5eERRVUZCUVN4SFFVRlBRU3hGUVVGSlF5eE5RVUZOTEZOQlFWTkRMRk5CVlhwRFNpeFJRVUZSU3l4UFFVRlRTQ3hEUVVGQlFTeEhRVUZQUVN4RlFVRkpReXhOUVVGTkxGTkJRVk5ITEU5QlFVOHNRMEZCUTBNc1JVRkJTMHdzUzBGRGRFUXNUVUZCVFUwc1JVRkJVVTRzUlVGQlNVTXNUVUZCVFN4VFFVTnNRazBzUlVGQlRVUXNSVUZCVFVvc1VVRkRXazBzUlVGQlRVWXNSVUZCVFVvc1VVRkhiRUlzVDBGRVNVc3NSMEZCVDBNc1NVRkJTMGdzUlVGQlNVVXNSMEZCVDBNc1IwRkRjRUpJTEVkQlEwNHNTMEZWU0ZBc1VVRkJVVmNzVjBGQllWUXNRMEZCUVVFc1IwRkJUMEVzUlVGQlNVTXNUVUZCVFN4VFFVRlRSeXhQUVVGUExFTkJRVU5ETEVWQlFVdE1MRXRCUXpGRUxFMUJRVTFOTEVWQlFWRk9MRVZCUVVsRExFMUJRVTBzVTBGRGJFSlRMRVZCUVUxS0xFVkJRVTBzUjBGQlIwc3NUVUZCVFN4SFFVRkpMRWRCUnk5Q0xFOUJSRUZPTEVWQlJGbERMRVZCUVUwc1IwRkJSMHdzVFVGQlRTeFRRVUZUTEVkQlFVZFZMRTFCUVUwc1IwRkJTU3hKUVVOMFEwUXNSVUZEU2t3c1IwRkRUaXhMUVZWSVVDeFJRVUZSWXl4WlFVRmpMRVZCUVVORExFVkJRVkZETEZsQlEzUkNSQ3hGUVVGUExIVkNRVU5RUVN4RlFVRlBMSGxDUVVOUVFTeEZRVUZQTERSQ1FVTlFRU3hGUVVGaExFdEJSV2hDUXl4WFFVTkxSQ3hGUVVGelFpeHhRa0ZEZEVKQkxFVkJRV1VzVVVGRmFrSkJJaXdpWm1sc1pTSTZJa1U2WEZ4M2IzSnJjM0JoWTJWY1hIZHBhMmxoTFdsekxXRnVjM2RsY21Wa1hGeHViMlJsWDIxdlpIVnNaWE5jWEhOMWNHVnlZV2RsYm5SY1hHeHBZbHhjZFhScGJITXVhbk1pZlE9PSIsInZhciB0b1N0cmluZz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3N3aXRjaCh0b1N0cmluZy5jYWxsKGUpKXtjYXNlXCJbb2JqZWN0IEZ1bmN0aW9uXVwiOnJldHVyblwiZnVuY3Rpb25cIjtjYXNlXCJbb2JqZWN0IERhdGVdXCI6cmV0dXJuXCJkYXRlXCI7Y2FzZVwiW29iamVjdCBSZWdFeHBdXCI6cmV0dXJuXCJyZWdleHBcIjtjYXNlXCJbb2JqZWN0IEFyZ3VtZW50c11cIjpyZXR1cm5cImFyZ3VtZW50c1wiO2Nhc2VcIltvYmplY3QgQXJyYXldXCI6cmV0dXJuXCJhcnJheVwiO2Nhc2VcIltvYmplY3QgU3RyaW5nXVwiOnJldHVyblwic3RyaW5nXCJ9aWYoXCJvYmplY3RcIj09dHlwZW9mIGUmJmUmJlwibnVtYmVyXCI9PXR5cGVvZiBlLmxlbmd0aCl0cnl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZS5jYWxsZWUpcmV0dXJuXCJhcmd1bWVudHNcIn1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgVHlwZUVycm9yKXJldHVyblwiYXJndW1lbnRzXCJ9cmV0dXJuIG51bGw9PT1lP1wibnVsbFwiOnZvaWQgMD09PWU/XCJ1bmRlZmluZWRcIjplJiYxPT09ZS5ub2RlVHlwZT9cImVsZW1lbnRcIjplPT09T2JqZWN0KGUpP1wib2JqZWN0XCI6dHlwZW9mIGV9O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1sdVpHVjRMbXB6SWwwc0ltNWhiV1Z6SWpwYkluUnZVM1J5YVc1bklpd2lUMkpxWldOMElpd2ljSEp2ZEc5MGVYQmxJaXdpYlc5a2RXeGxJaXdpWlhod2IzSjBjeUlzSW5aaGJDSXNJbU5oYkd3aUxDSnNaVzVuZEdnaUxDSmpZV3hzWldVaUxDSmxlQ0lzSWxSNWNHVkZjbkp2Y2lJc0luVnVaR1ZtYVc1bFpDSXNJbTV2WkdWVWVYQmxJbDBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hKUVVGSlFTeFRRVUZYUXl4UFFVRlBReXhWUVVGVlJpeFRRVVZvUTBjc1QwRkJUME1zVVVGQlZTeFRRVUZUUXl4SFFVTjRRaXhQUVVGUlRDeFRRVUZUVFN4TFFVRkxSQ3hKUVVOd1FpeEpRVUZMTEc5Q1FVRnhRaXhOUVVGUExGZEJRMnBETEVsQlFVc3NaMEpCUVdsQ0xFMUJRVThzVDBGRE4wSXNTVUZCU3l4clFrRkJiVUlzVFVGQlR5eFRRVU12UWl4SlFVRkxMSEZDUVVGelFpeE5RVUZQTEZsQlEyeERMRWxCUVVzc2FVSkJRV3RDTEUxQlFVOHNVVUZET1VJc1NVRkJTeXhyUWtGQmJVSXNUVUZCVHl4VFFVZHFReXhIUVVGclFpeHBRa0ZCVUVFc1IwRkJiVUpCTEVkQlFUUkNMR2xDUVVGa1FTeEZRVUZKUlN4UFFVTTVReXhKUVVORkxFZEJRWGxDTEcxQ1FVRmtSaXhGUVVGSlJ5eFBRVUZ6UWl4TlFVRlBMRmxCUXpWRExFMUJRVTlETEVkQlExQXNSMEZCU1VFc1lVRkJZME1zVlVGRGFFSXNUVUZCVHl4WlFVdGlMRTlCUVZrc1QwRkJVa3dzUlVGQmNVSXNXVUZEWWswc1NVRkJVazRzUlVGQk1FSXNXVUZETVVKQkxFZEJRWGRDTEVsQlFXcENRU3hGUVVGSlR5eFRRVUYxUWl4VlFVTnNRMUFzU1VGQlVVb3NUMEZCVDBrc1IwRkJZU3huUWtGRmJFSkJJaXdpWm1sc1pTSTZJa1U2WEZ4M2IzSnJjM0JoWTJWY1hIZHBhMmxoTFdsekxXRnVjM2RsY21Wa1hGeHViMlJsWDIxdlpIVnNaWE5jWEhSNWNHVXRiMlpjWEdsdVpHVjRMbXB6SW4wPSIsIm1vZHVsZS5leHBvcnRzPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29sOiEwLGVtYmVkOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZW51aXRlbTohMCxtZXRhOiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1sdVpHVjRMbXB6SWwwc0ltNWhiV1Z6SWpwYkltMXZaSFZzWlNJc0ltVjRjRzl5ZEhNaUxDSmhjbVZoSWl3aVltRnpaU0lzSW1KeUlpd2lZMjlzSWl3aVpXMWlaV1FpTENKb2NpSXNJbWx0WnlJc0ltbHVjSFYwSWl3aWEyVjVaMlZ1SWl3aWJHbHVheUlzSW0xbGJuVnBkR1Z0SWl3aWJXVjBZU0lzSW5CaGNtRnRJaXdpYzI5MWNtTmxJaXdpZEhKaFkyc2lMQ0ozWW5JaVhTd2liV0Z3Y0dsdVozTWlPaUpCUVV0QlFTeFBRVUZQUXl4UlFVRlZMRU5CUTJaRExFMUJRVkVzUlVGRFVrTXNUVUZCVVN4RlFVTlNReXhKUVVGTkxFVkJRMDVETEV0QlFVOHNSVUZEVUVNc1QwRkJVeXhGUVVOVVF5eEpRVUZOTEVWQlEwNURMRXRCUVU4c1JVRkRVRU1zVDBGQlV5eEZRVU5VUXl4UlFVRlZMRVZCUTFaRExFMUJRVkVzUlVGRFVrTXNWVUZCV1N4RlFVTmFReXhOUVVGUkxFVkJRMUpETEU5QlFWTXNSVUZEVkVNc1VVRkJWU3hGUVVOV1F5eFBRVUZUTEVWQlExUkRMRXRCUVU4aUxDSm1hV3hsSWpvaVJUcGNYSGR2Y210emNHRmpaVnhjZDJscmFXRXRhWE10WVc1emQyVnlaV1JjWEc1dlpHVmZiVzlrZFd4bGMxeGNkbTlwWkMxbGJHVnRaVzUwYzF4Y2FXNWtaWGd1YW5NaWZRPT0iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJhcHAuanMiLCJub2RlX21vZHVsZXMvYXJyaWZ5L2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY29tcG9uZW50LWVtaXR0ZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvZG9tdGFzdGljL2Rpc3QvZG9tdGFzdGljLmpzIiwibm9kZV9tb2R1bGVzL2h5cGVyc2NyaXB0LXN0cmluZy9zcmMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaHlwZXJzY3JpcHQtc3RyaW5nL3NyYy9yZW5kZXIuanMiLCJub2RlX21vZHVsZXMvaHlwZXJzY3JpcHQtc3RyaW5nL3NyYy91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9pcy1wbGFpbi1vYmplY3QvaW5kZXguanMiLCJub2RlX21vZHVsZXMvaXNvYmplY3QvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcml2ZXRzL2Rpc3Qvcml2ZXRzLmpzIiwibm9kZV9tb2R1bGVzL3NpZ2h0Z2xhc3MvaW5kZXguanMiLCJub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvYWdlbnQtYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9zdXBlcmFnZW50L2xpYi9jbGllbnQuanMiLCJub2RlX21vZHVsZXMvc3VwZXJhZ2VudC9saWIvaXMtb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL3N1cGVyYWdlbnQvbGliL3JlcXVlc3QtYmFzZS5qcyIsIm5vZGVfbW9kdWxlcy9zdXBlcmFnZW50L2xpYi9yZXNwb25zZS1iYXNlLmpzIiwibm9kZV9tb2R1bGVzL3N1cGVyYWdlbnQvbGliL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL3R5cGUtb2YvaW5kZXguanMiLCJub2RlX21vZHVsZXMvdm9pZC1lbGVtZW50cy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7QUNBQTtBQUNBO0FBQ0E7OztBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQTtBQ0ZBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLG4sdCl7ZnVuY3Rpb24gbyhpLGYpe2lmKCFuW2ldKXtpZighZVtpXSl7dmFyIGM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZiYmYylyZXR1cm4gYyhpLCEwKTtpZih1KXJldHVybiB1KGksITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIraStcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIHA9bltpXT17ZXhwb3J0czp7fX07ZVtpXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ldWzFdW3JdO3JldHVybiBvKG58fHIpfSxwLHAuZXhwb3J0cyxyLGUsbix0KX1yZXR1cm4gbltpXS5leHBvcnRzfWZvcih2YXIgdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGk9MDtpPHQubGVuZ3RoO2krKylvKHRbaV0pO3JldHVybiBvfXJldHVybiByfSkoKSIsIlwidXNlIHN0cmljdFwiO2NvbnN0IHR5cGU9cmVxdWlyZShcInR5cGUtb2ZcIikscmVxdWVzdD1yZXF1aXJlKFwic3VwZXJhZ2VudFwiKSxoPXJlcXVpcmUoXCJoeXBlcnNjcmlwdC1zdHJpbmdcIiksJD1yZXF1aXJlKFwiZG9tdGFzdGljXCIpLHJpdmV0cz1yZXF1aXJlKFwicml2ZXRzXCIpOyQuZm4uaW5uZXJUZXh0PWZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP3RoaXNbMF0uaW5uZXJUZXh0OnRoaXMuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdC5pbm5lclRleHQ9XCJcIitlfSl9LCQuZm4uY2xlYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mb3JFYWNoKGU9PntlLmlubmVySFRNTD1cIlwifSksdGhpc30sJC5mbi5vdXRlckhUTUw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9wKFwib3V0ZXJIVE1MXCIpfTtjb25zdCBzdGF0ZT17bWVzc2FnZTpcIlwiLGtub3dsZWRnZTpbXSxjb252ZXJzYXRpb246W10sZXJyb3I6ITF9O2Z1bmN0aW9uIF9lcnJvcihlLHQse3Jlc3BvbnNlOm59KXtuPW4/W24uc3RhdHVzLG4udGV4dF06W10sY29uc29sZS53YXJuKGBbJHtlfSAke3R9XWAsLi4ubil9ZnVuY3Rpb24gZ2V0X2tub3dsZWRnZSgpe3JlcXVlc3QuZ2V0KFwiL2tub3dsZWRnZVwiKS50aGVuKCh7Ym9keTplfSk9PntzdGF0ZS5rbm93bGVkZ2U9ZX0sZT0+X2Vycm9yKFwiR0VUXCIsXCIva25vd2xlZGdlXCIsZSkpfWZ1bmN0aW9uIHNlbmRfbWVzc2FnZShlPVwiXCIsdCl7cmVxdWVzdC5wb3N0KFwiL21lc3NhZ2VcIikuc2VuZChlKS50aGVuKCh7dGV4dDplfSk9PntzdGF0ZS5jb252ZXJzYXRpb24ucHVzaCh7dGV4dDplfSl9LGU9PntfZXJyb3IoXCJQT1NUXCIsXCIvbWVzc2FnZVwiLGUpLHQmJnQoKX0pfWZ1bmN0aW9uIF9jb25zdChlLHQsbil7cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sd3JpdGFibGU6ITEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KSxlfXNlbmRfbWVzc2FnZSgpLGdldF9rbm93bGVkZ2UoKSwkKFwiLkNvbnZlcnNhdGlvbi1pbnB1dFwiKS5vbihcImtleWRvd25cIixlPT57bGV0IHQ9c3RhdGUubWVzc2FnZTtpZihcIkVudGVyXCI9PWUuY29kZSYmIWUuc2hpZnRLZXkmJiFlLmFsdEtleSYmIWUuY3RybEtleSl7aWYoXCJcIj09dClyZXR1cm47cmV0dXJuIHN0YXRlLm1lc3NhZ2U9XCJcIixzdGF0ZS5jb252ZXJzYXRpb24ucHVzaCh7dGV4dDp0LGlzX3VzZXI6ITB9KSxzZW5kX21lc3NhZ2UodCwoKT0+e3N0YXRlLmVycm9yPSEwfSksZ2V0X2tub3dsZWRnZSgpLCExfX0pLm9uKFwicGFzdGVcIixlPT57ZS5wcmV2ZW50RGVmYXVsdCgpO2xldCB0PWUuY2xpcGJvYXJkRGF0YS5nZXREYXRhKFwidGV4dC9wbGFpblwiKTtyZXR1cm4gZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJpbnNlcnRIVE1MXCIsITEsdCksITF9KTtjb25zdHtCaW5kaW5nOkJpbmRpbmd9PXJpdmV0cy5fO3JpdmV0cy5fLkJpbmRpbmc9Y2xhc3MgZXh0ZW5kcyBCaW5kaW5ne3BhcnNlVGFyZ2V0KCl7cmV0dXJuIHRoaXMuYmluZGVyLnBhcnNlVGFyZ2V0JiZPYmplY3QuYXNzaWduKHRoaXMsdGhpcy5iaW5kZXIucGFyc2VUYXJnZXQodGhpcy5rZXlwYXRoKSksc3VwZXIucGFyc2VUYXJnZXQoKX1wdWJsaXNoKCl7X2NvbnN0KHRoaXMsXCJzdGF0ZVwiLFwicHVibGlzaFwiKTtzdXBlci5wdWJsaXNoKCk7X2NvbnN0KHRoaXMsXCJzdGF0ZVwiKX19LHJpdmV0cy5iaW5kZXJzLmlucHV0PXtwYXJzZVRhcmdldChlKXtsZXQgdDtyZXR1cm5bZSx0XT1lLnRyaW0oKS5zcGxpdCgvXFxzKlxcP1xccyovKSx7a2V5cGF0aDplLGVtcHR5X2NsYXNzOnR9fSxiaW5kOmZ1bmN0aW9uKGUpe3RoaXMuX2VtcHR5PSEwLCQoZSkub24oXCJpbnB1dC5ydi1pbnB1dFwiLHRoaXMucHVibGlzaCksdGhpcy5fd2F0Y2g9KCgpPT57ZS5pbm5lckhUTUw9XCJcIixcIlwiPT1lLmlubmVySFRNTCYmY2xlYXJJbnRlcnZhbCh0aGlzLl93YXRjaGVyKX0pfSx1bmJpbmQ6ZnVuY3Rpb24oZSl7JChlKS5vZmYoXCIucnYtaW5wdXRcIiksY2xlYXJJbnRlcnZhbCh0aGlzLl93YXRjaGVyKX0scm91dGluZTpmdW5jdGlvbihlLHQpe1wicHVibGlzaFwiIT10aGlzLnN0YXRlJiYoY2xlYXJJbnRlcnZhbCh0aGlzLl93YXRjaGVyKSxlLmlubmVyVGV4dD10KSxzdGF0ZS5lcnJvcj0hMSx0aGlzLl9lbXB0eT1cIlwiPT10LHRoaXMuX2VtcHR5JiYodGhpcy5fd2F0Y2hlcj1zZXRJbnRlcnZhbCh0aGlzLl93YXRjaCwzMCkpLHRoaXMuZW1wdHlfY2xhc3MmJiQoZSkudG9nZ2xlQ2xhc3ModGhpcy5lbXB0eV9jbGFzcyx0aGlzLl9lbXB0eSl9LGdldFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmlubmVyVGV4dC50cmltKCl9fSxnbG9iYWwuJHN0YXRlPXN0YXRlLHJpdmV0cy5iaW5kKGRvY3VtZW50LmJvZHksc3RhdGUpO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1Gd2NDNXFjeUpkTENKdVlXMWxjeUk2V3lKMGVYQmxJaXdpY21WeGRXbHlaU0lzSW5KbGNYVmxjM1FpTENKb0lpd2lKQ0lzSW5KcGRtVjBjeUlzSW1adUlpd2lhVzV1WlhKVVpYaDBJaXdpZG1Gc2RXVWlMQ0oxYm1SbFptbHVaV1FpTENKMGFHbHpJaXdpWm05eVJXRmphQ0lzSW1Wc1pXMWxiblFpTENKamJHVmhjaUlzSW1VaUxDSnBibTVsY2toVVRVd2lMQ0p2ZFhSbGNraFVUVXdpTENKd2NtOXdJaXdpYzNSaGRHVWlMQ0p0WlhOellXZGxJaXdpYTI1dmQyeGxaR2RsSWl3aVkyOXVkbVZ5YzJGMGFXOXVJaXdpWlhKeWIzSWlMQ0pmWlhKeWIzSWlMQ0p0WlhSb2IyUWlMQ0oxY213aUxDSnlaWE53YjI1elpTSXNJbkpsY3lJc0luTjBZWFIxY3lJc0luUmxlSFFpTENKamIyNXpiMnhsSWl3aWQyRnliaUlzSW1kbGRGOXJibTkzYkdWa1oyVWlMQ0puWlhRaUxDSjBhR1Z1SWl3aVltOWtlU0lzSW5ObGJtUmZiV1Z6YzJGblpTSXNJbU5pSWl3aWNHOXpkQ0lzSW5ObGJtUWlMQ0p3ZFhOb0lpd2lYMk52Ym5OMElpd2ljMlZzWmlJc0ltdGxlU0lzSWs5aWFtVmpkQ0lzSW1SbFptbHVaVkJ5YjNCbGNuUjVJaXdpZDNKcGRHRmliR1VpTENKbGJuVnRaWEpoWW14bElpd2lZMjl1Wm1sbmRYSmhZbXhsSWl3aWIyNGlMQ0pqYjJSbElpd2ljMmhwWm5STFpYa2lMQ0poYkhSTFpYa2lMQ0pqZEhKc1MyVjVJaXdpYVhOZmRYTmxjaUlzSW5CeVpYWmxiblJFWldaaGRXeDBJaXdpWTJ4cGNHSnZZWEprUkdGMFlTSXNJbWRsZEVSaGRHRWlMQ0prYjJOMWJXVnVkQ0lzSW1WNFpXTkRiMjF0WVc1a0lpd2lRbWx1WkdsdVp5SXNJbDhpTENKYmIySnFaV04wSUU5aWFtVmpkRjBpTENKaWFXNWtaWElpTENKd1lYSnpaVlJoY21kbGRDSXNJbUZ6YzJsbmJpSXNJbXRsZVhCaGRHZ2lMQ0p6ZFhCbGNpSXNJbkIxWW14cGMyZ2lMQ0ppYVc1a1pYSnpJaXdpWlcxd2RIbGZZMnhoYzNNaUxDSjBjbWx0SWl3aWMzQnNhWFFpTENKaWFXNWtJaXdpWld3aUxDSmZaVzF3ZEhraUxDSmZkMkYwWTJnaUxDSmpiR1ZoY2tsdWRHVnlkbUZzSWl3aVgzZGhkR05vWlhJaUxDSjFibUpwYm1RaUxDSnZabVlpTENKeWIzVjBhVzVsSWl3aWMyVjBTVzUwWlhKMllXd2lMQ0owYjJkbmJHVkRiR0Z6Y3lJc0ltZGxkRlpoYkhWbElpd2laMnh2WW1Gc0lpd2lKSE4wWVhSbElsMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeGhRVVZCTEUxQlFVMUJMRXRCUVU5RExGRkJRVkVzVjBGRFprTXNVVUZCVlVRc1VVRkJVU3hqUVVOc1FrVXNSVUZCU1VZc1VVRkJVU3h6UWtGRFdrY3NSVUZCU1Vnc1VVRkJVU3hoUVVOYVNTeFBRVUZUU2l4UlFVRlJMRlZCUlhaQ1J5eEZRVUZGUlN4SFFVRkhReXhWUVVGWkxGTkJRVk5ETEVkQlEzaENMRmxCUVdORExFbEJRVlpFTEVWQlEwdEZMRXRCUVVzc1IwRkJSMGdzVlVGSFZrY3NTMEZCUzBNc1VVRkJVU3hUUVVGVFF5eEhRVU16UWl4UFFVRlBRU3hGUVVGUlRDeFZRVUZaTEVkQlFVdERMRXRCU1hCRFNpeEZRVUZGUlN4SFFVRkhUeXhOUVVGUkxGZEJTVmdzVDBGSVFVZ3NTMEZCUzBNc1VVRkJVMGNzU1VGRFdrRXNSVUZCUlVNc1ZVRkJXU3hMUVVWVVRDeE5RVWRVVGl4RlFVRkZSU3hIUVVGSFZTeFZRVUZaTEZkQlEyWXNUMEZCVDA0c1MwRkJTMDhzUzBGQlN5eGpRVWR1UWl4TlFVRk5ReXhOUVVGUkxFTkJRMXBETEZGQlFWTXNSMEZEVkVNc1ZVRkJWeXhIUVVOWVF5eGhRVUZqTEVkQlEyUkRMRTlCUVU4c1IwRkhWQ3hUUVVGVFF5eFBRVUZQUXl4RlFVRlJReXhIUVVGUFF5eFRRVUZWUXl4SlFVTjJRMEVzUlVGQlRVRXNSVUZCVFN4RFFVRkRRU3hGUVVGSlF5eFBRVUZSUkN4RlFVRkpSU3hOUVVGUkxFZEJRM0pEUXl4UlFVRlJReXhUUVVGVFVDeExRVUZWUXl4UlFVRlhSU3hIUVVkNFF5eFRRVUZUU3l4blFrRkRVRGxDTEZGQlFWRXJRaXhKUVVGSkxHTkJRV05ETEV0QlFVc3NSVUZCUjBNc1MwRkJRVUVzVFVGRGFFTnFRaXhOUVVGTlJTeFZRVUZaWlN4SFFVTm9RbkpDTEVkQlFVMVRMRTlCUVU4c1RVRkJUeXhoUVVGalZDeEpRVWQ0UXl4VFFVRlRjMElzWVVGQllWQXNSVUZCU3l4SFFVRkpVU3hIUVVNM1FtNURMRkZCUVZGdlF5eExRVUZMTEZsQlFWbERMRXRCUVV0V0xFZEJRVTFMTEV0QlFVc3NSVUZCUjB3c1MwRkJRVUVzVFVGRE1VTllMRTFCUVUxSExHRkJRV0Z0UWl4TFFVRkxMRU5CUVVWWUxFdEJRVUZCTEV0QlEzaENaaXhKUVVOR1V5eFBRVUZQTEU5QlFWRXNWMEZCV1ZRc1IwRkRNMEoxUWl4SFFVRk5RU3hOUVRKQ1ZpeFRRVUZUU1N4UFFVRlBReXhGUVVGTlF5eEZRVUZMYmtNc1IwRkpla0lzVDBGSVFXOURMRTlCUVU5RExHVkJRV1ZJTEVWQlFVMURMRVZCUVVzc1EwRkRMMEp1UXl4TlFVRkJRU3hGUVVGUGMwTXNWVUZCVlN4RlFVRlBReXhaUVVGWkxFVkJRVTFETEdOQlFXTXNTVUZGYmtST0xFVkJNMEpVVGl4bFFVTkJTaXhuUWtGRlFUVkNMRVZCUVVVc2RVSkJRME0yUXl4SFFVRkhMRlZCUVZsdVF5eEpRVU5rTEVsQlFVbExMRVZCUVZWRUxFMUJRVTFETEZGQlEzQkNMRWRCUVdNc1UwRkJWa3dzUlVGQlJXOURMRTlCUVc5Q2NFTXNSVUZCUlhGRExGZEJRV0Z5UXl4RlFVRkZjME1zVTBGQlYzUkRMRVZCUVVWMVF5eFJRVUZUTEVOQlF5OUVMRWRCUVdVc1NVRkJXR3hETEVWQlEwWXNUMEZMUml4UFFVcEJSQ3hOUVVGTlF5eFJRVUZWTEVkQlEyaENSQ3hOUVVGTlJ5eGhRVUZoYlVJc1MwRkJTeXhEUVVGRldDeExRVUZOVml4RlFVRlRiVU1zVTBGQlV5eEpRVU5zUkd4Q0xHRkJRV0ZxUWl4RlFVRlRMRXRCUVZGRUxFMUJRVTFKTEU5QlFWRXNTVUZETlVOVkxHbENRVU5QTEV0QlIxWnBRaXhIUVVGSExGRkJRVlZ1UXl4SlFVTmFRU3hGUVVGRmVVTXNhVUpCUTBZc1NVRkJTVEZDTEVWQlFVOW1MRVZCUVVVd1F5eGpRVUZqUXl4UlFVRlJMR05CUlc1RExFOUJSRUZETEZOQlFWTkRMRmxCUVZrc1kwRkJZeXhGUVVGUE9VSXNTVUZEYmtNc1NVRlZXQ3hOUVVGTkswSXNVVUZCUlVFc1UwRkJXWFpFTEU5QlFVOTNSQ3hGUVVNelFuaEVMRTlCUVU5M1JDeEZRVUZGUkN4UlFVRlZMR05CUVdOQkxGRkJReTlDUlN4alFVbEZMRTlCU0Vsd1JDeExRVUZMY1VRc1QwRkJUME1zWVVGRFpIQkNMRTlCUVU5eFFpeFBRVUZQZGtRc1MwRkJUVUVzUzBGQlMzRkVMRTlCUVU5RExGbEJRVmwwUkN4TFFVRkxkMFFzVlVGRk5VTkRMRTFCUVUxSUxHTkJSMlpHTEZWQlEwVnlRaXhQUVVGUEwwSXNTMEZCVFN4UlFVRlRMRmRCUTFwNVJDeE5RVUZOUXl4VlFVTm9Rak5DTEU5QlFVOHZRaXhMUVVGTkxGZEJTV3BDVEN4UFFVRlBaMFVzVVVGQlpTeE5RVUZKTEVOQlEzaENVQ3haUVVGWlNTeEhRVU5XTEVsQlFVbEpMRVZCUlVvc1QwRkVRMG9zUlVGQlUwa3NSMEZCWlVvc1JVRkJVVXNzVDBGQlQwTXNUVUZCVFN4WlFVTjJReXhEUVVGRlRpeFJRVUZCUVN4RlFVRlRTU3haUVVGQlFTeEpRVWR3UWtjc1MwRkJUU3hUUVVGVFF5eEhRVU5pYUVVc1MwRkJTMmxGTEZGQlFWTXNSVUZEWkhaRkxFVkJRVVZ6UlN4SFFVRkpla0lzUjBGQlJ5eHBRa0ZCYTBKMlF5eExRVUZMTUVRc1UwRkRhRU14UkN4TFFVRkxhMFVzVDBGQlV5eE5RVU5hUml4RlFVRkhNMFFzVlVGQldTeEhRVU5MTEVsQlFXaENNa1FzUlVGQlJ6TkVMRmRCUTB3NFJDeGpRVUZqYmtVc1MwRkJTMjlGTEdGQlMzcENReXhQUVVGUkxGTkJRVk5NTEVkQlEyWjBSU3hGUVVGRmMwVXNSMEZCU1Uwc1NVRkJTU3hoUVVOV1NDeGpRVUZqYmtVc1MwRkJTMjlGTEZkQlIzSkNSeXhSUVVGVExGTkJRVk5RTEVWQlFVbHNSU3hIUVVOR0xGZEJRV1JGTEV0QlFVdFJMRkZCUTFBeVJDeGpRVUZqYmtVc1MwRkJTMjlGTEZWQlEyNUNTaXhGUVVGSGJrVXNWVUZCV1VNc1IwRkZha0pWTEUxQlFVMUpMRTlCUVZFc1JVRkRaRm9zUzBGQlMybEZMRTlCUVd0Q0xFbEJRVlJ1UlN4RlFVTldSU3hMUVVGTGFVVXNVMEZEVUdwRkxFdEJRVXR2UlN4VFFVRlhTU3haUVVGWmVFVXNTMEZCUzJ0RkxFOUJRVkVzUzBGRmRrTnNSU3hMUVVGTE5FUXNZVUZEVUd4RkxFVkJRVVZ6UlN4SFFVRkpVeXhaUVVGWmVrVXNTMEZCU3pSRUxGbEJRV0UxUkN4TFFVRkxhVVVzVTBGSk4wTlRMRk5CUVZjc1UwRkJVMVlzUjBGRGJFSXNUMEZCVDBFc1JVRkJSMjVGTEZWQlFWVm5SU3hUUVVsNFFtTXNUMEZCVDBNc1QwRkJVM0JGTEUxQlJXaENZaXhQUVVGUGIwVXNTMEZCUzJZc1UwRkJVM1pDTEV0QlFVMXFRaUlzSW1acGJHVWlPaUpGT2x4Y1YyOXlhM053WVdObFhGeDNhV3RwWVMxcGN5MWhibk4zWlhKbFpGeGNZWEJ3TG1wekluMD0iLCJcInVzZSBzdHJpY3RcIjttb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihyKXtyZXR1cm4gbnVsbD09cj9bXTpBcnJheS5pc0FycmF5KHIpP3I6W3JdfTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR1Y0TG1weklsMHNJbTVoYldWeklqcGJJbTF2WkhWc1pTSXNJbVY0Y0c5eWRITWlMQ0oyWVd3aUxDSkJjbkpoZVNJc0ltbHpRWEp5WVhraVhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxHRkJRMEZCTEU5QlFVOURMRkZCUVZVc1UwRkJWVU1zUjBGRE1VSXNUMEZCU1VFc1RVRkJRVUVzUlVGRFNTeEhRVWRFUXl4TlFVRk5ReXhSUVVGUlJpeEhRVUZQUVN4RlFVRk5MRU5CUVVOQklpd2labWxzWlNJNklrVTZYRnhYYjNKcmMzQmhZMlZjWEhkcGEybGhMV2x6TFdGdWMzZGxjbVZrWEZ4dWIyUmxYMjF2WkhWc1pYTmNYR0Z5Y21sbWVWeGNhVzVrWlhndWFuTWlmUT09IiwiIWZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIGU9e30uaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gbigpe2Zvcih2YXIgcj1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIGY9YXJndW1lbnRzW3RdO2lmKGYpe3ZhciBvPXR5cGVvZiBmO2lmKFwic3RyaW5nXCI9PT1vfHxcIm51bWJlclwiPT09bylyLnB1c2goZik7ZWxzZSBpZihBcnJheS5pc0FycmF5KGYpJiZmLmxlbmd0aCl7dmFyIGk9bi5hcHBseShudWxsLGYpO2kmJnIucHVzaChpKX1lbHNlIGlmKFwib2JqZWN0XCI9PT1vKWZvcih2YXIgYSBpbiBmKWUuY2FsbChmLGEpJiZmW2FdJiZyLnB1c2goYSl9fXJldHVybiByLmpvaW4oXCIgXCIpfVwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzPyhuLmRlZmF1bHQ9bixtb2R1bGUuZXhwb3J0cz1uKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJlwib2JqZWN0XCI9PXR5cGVvZiBkZWZpbmUuYW1kJiZkZWZpbmUuYW1kP2RlZmluZShcImNsYXNzbmFtZXNcIixbXSxmdW5jdGlvbigpe3JldHVybiBufSk6d2luZG93LmNsYXNzTmFtZXM9bn0oKTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR1Y0TG1weklsMHNJbTVoYldWeklqcGJJbWhoYzA5M2JpSXNJbWhoYzA5M2JsQnliM0JsY25SNUlpd2lZMnhoYzNOT1lXMWxjeUlzSW1Oc1lYTnpaWE1pTENKcElpd2lZWEpuZFcxbGJuUnpJaXdpYkdWdVozUm9JaXdpWVhKbklpd2lZWEpuVkhsd1pTSXNJbkIxYzJnaUxDSkJjbkpoZVNJc0ltbHpRWEp5WVhraUxDSnBibTVsY2lJc0ltRndjR3g1SWl3aWEyVjVJaXdpWTJGc2JDSXNJbXB2YVc0aUxDSnRiMlIxYkdVaUxDSmxlSEJ2Y25Seklpd2laR1ZtWVhWc2RDSXNJbVJsWm1sdVpTSXNJbUZ0WkNJc0luZHBibVJ2ZHlKZExDSnRZWEJ3YVc1bmN5STZJa05CVDBNc1YwRkRRU3hoUVVWQkxFbEJRVWxCTEVWQlFWTXNSMEZCUjBNc1pVRkZhRUlzVTBGQlUwTXNTVUZIVWl4SlFVWkJMRWxCUVVsRExFVkJRVlVzUjBGRlRFTXNSVUZCU1N4RlFVRkhRU3hGUVVGSlF5eFZRVUZWUXl4UFFVRlJSaXhKUVVGTExFTkJRekZETEVsQlFVbEhMRVZCUVUxR0xGVkJRVlZFTEVkQlEzQkNMRWRCUVV0SExFVkJRVXdzUTBGRlFTeEpRVUZKUXl4VFFVRnBRa1FzUlVGRmNrSXNSMEZCWjBJc1YwRkJXa01zUjBGQmIwTXNWMEZCV2tFc1JVRkRNMEpNTEVWQlFWRk5MRXRCUVV0R0xGRkJRMUFzUjBGQlNVY3NUVUZCVFVNc1VVRkJVVW9zU1VGQlVVRXNSVUZCU1VRc1QwRkJVU3hEUVVNMVF5eEpRVUZKVFN4RlFVRlJWaXhGUVVGWFZ5eE5RVUZOTEV0QlFVMU9MRWRCUXk5Q1N5eEhRVU5JVkN4RlFVRlJUU3hMUVVGTFJ5eFJRVVZTTEVkQlFXZENMRmRCUVZwS0xFVkJRMVlzU1VGQlN5eEpRVUZKVFN4TFFVRlBVQ3hGUVVOWVVDeEZRVUZQWlN4TFFVRkxVaXhGUVVGTFR5eEpRVUZSVUN4RlFVRkpUeXhKUVVOb1ExZ3NSVUZCVVUwc1MwRkJTMHNzU1VGTmFrSXNUMEZCVDFnc1JVRkJVV0VzUzBGQlN5eExRVWRETEc5Q1FVRllReXhSUVVFd1FrRXNUMEZCVDBNc1UwRkRNME5vUWl4RlFVRlhhVUlzVVVGQlZXcENMRVZCUTNKQ1pTeFBRVUZQUXl4UlFVRlZhRUlzUjBGRFZ5eHRRa0ZCV0d0Q0xGRkJRU3RETEdsQ1FVRm1RU3hQUVVGUFF5eExRVUZ2UWtRc1QwRkJUME1zU1VGRmJrWkVMRTlCUVU4c1lVRkJZeXhIUVVGSkxGZEJRM2hDTEU5QlFVOXNRaXhKUVVkU2IwSXNUMEZCVDNCQ0xGZEJRV0ZCTEVWQk1VTjBRaUlzSW1acGJHVWlPaUpGT2x4Y1YyOXlhM053WVdObFhGeDNhV3RwWVMxcGN5MWhibk4zWlhKbFpGeGNibTlrWlY5dGIyUjFiR1Z6WEZ4amJHRnpjMjVoYldWelhGeHBibVJsZUM1cWN5SjkiLCJmdW5jdGlvbiBFbWl0dGVyKHQpe2lmKHQpcmV0dXJuIG1peGluKHQpfWZ1bmN0aW9uIG1peGluKHQpe2Zvcih2YXIgZSBpbiBFbWl0dGVyLnByb3RvdHlwZSl0W2VdPUVtaXR0ZXIucHJvdG90eXBlW2VdO3JldHVybiB0fVwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUmJihtb2R1bGUuZXhwb3J0cz1FbWl0dGVyKSxFbWl0dGVyLnByb3RvdHlwZS5vbj1FbWl0dGVyLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcz10aGlzLl9jYWxsYmFja3N8fHt9LCh0aGlzLl9jYWxsYmFja3NbXCIkXCIrdF09dGhpcy5fY2FsbGJhY2tzW1wiJFwiK3RdfHxbXSkucHVzaChlKSx0aGlzfSxFbWl0dGVyLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gaSgpe3RoaXMub2ZmKHQsaSksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGkuZm49ZSx0aGlzLm9uKHQsaSksdGhpc30sRW1pdHRlci5wcm90b3R5cGUub2ZmPUVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPUVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycz1FbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSl7aWYodGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8e30sMD09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5fY2FsbGJhY2tzPXt9LHRoaXM7dmFyIGkscj10aGlzLl9jYWxsYmFja3NbXCIkXCIrdF07aWYoIXIpcmV0dXJuIHRoaXM7aWYoMT09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZGVsZXRlIHRoaXMuX2NhbGxiYWNrc1tcIiRcIit0XSx0aGlzO2Zvcih2YXIgcz0wO3M8ci5sZW5ndGg7cysrKWlmKChpPXJbc10pPT09ZXx8aS5mbj09PWUpe3Iuc3BsaWNlKHMsMSk7YnJlYWt9cmV0dXJuIHRoaXN9LEVtaXR0ZXIucHJvdG90eXBlLmVtaXQ9ZnVuY3Rpb24odCl7dGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8e307dmFyIGU9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMSksaT10aGlzLl9jYWxsYmFja3NbXCIkXCIrdF07aWYoaSlmb3IodmFyIHI9MCxzPShpPWkuc2xpY2UoMCkpLmxlbmd0aDtyPHM7KytyKWlbcl0uYXBwbHkodGhpcyxlKTtyZXR1cm4gdGhpc30sRW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHx7fSx0aGlzLl9jYWxsYmFja3NbXCIkXCIrdF18fFtdfSxFbWl0dGVyLnByb3RvdHlwZS5oYXNMaXN0ZW5lcnM9ZnVuY3Rpb24odCl7cmV0dXJuISF0aGlzLmxpc3RlbmVycyh0KS5sZW5ndGh9O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1sdVpHVjRMbXB6SWwwc0ltNWhiV1Z6SWpwYklrVnRhWFIwWlhJaUxDSnZZbW9pTENKdGFYaHBiaUlzSW10bGVTSXNJbkJ5YjNSdmRIbHdaU0lzSW0xdlpIVnNaU0lzSW1WNGNHOXlkSE1pTENKdmJpSXNJbUZrWkVWMlpXNTBUR2x6ZEdWdVpYSWlMQ0psZG1WdWRDSXNJbVp1SWl3aWRHaHBjeUlzSWw5allXeHNZbUZqYTNNaUxDSndkWE5vSWl3aWIyNWpaU0lzSW05bVppSXNJbUZ3Y0d4NUlpd2lZWEpuZFcxbGJuUnpJaXdpY21WdGIzWmxUR2x6ZEdWdVpYSWlMQ0p5WlcxdmRtVkJiR3hNYVhOMFpXNWxjbk1pTENKeVpXMXZkbVZGZG1WdWRFeHBjM1JsYm1WeUlpd2liR1Z1WjNSb0lpd2lZMklpTENKallXeHNZbUZqYTNNaUxDSnBJaXdpYzNCc2FXTmxJaXdpWlcxcGRDSXNJbUZ5WjNNaUxDSnpiR2xqWlNJc0ltTmhiR3dpTENKc1pXNGlMQ0pzYVhOMFpXNWxjbk1pTENKb1lYTk1hWE4wWlc1bGNuTWlYU3dpYldGd2NHbHVaM01pT2lKQlFXVkJMRk5CUVZOQkxGRkJRVkZETEVkQlEyWXNSMEZCU1VFc1JVRkJTeXhQUVVGUFF5eE5RVUZOUkN4SFFWZDRRaXhUUVVGVFF5eE5RVUZOUkN4SFFVTmlMRWxCUVVzc1NVRkJTVVVzUzBGQlQwZ3NVVUZCVVVrc1ZVRkRkRUpJTEVWQlFVbEZMRWRCUVU5SUxGRkJRVkZKTEZWQlFWVkVMRWRCUlM5Q0xFOUJRVTlHTEVWQk1VSmhMRzlDUVVGWVNTeFRRVU5VUVN4UFFVRlBReXhSUVVGVlRpeFRRWEZEYmtKQkxGRkJRVkZKTEZWQlFWVkhMRWRCUTJ4Q1VDeFJRVUZSU1N4VlFVRlZTU3hwUWtGQmJVSXNVMEZCVTBNc1JVRkJUME1zUjBGSmJrUXNUMEZJUVVNc1MwRkJTME1zVjBGQllVUXNTMEZCUzBNc1dVRkJZeXhKUVVOd1EwUXNTMEZCUzBNc1YwRkJWeXhKUVVGTlNDeEhRVUZUUlN4TFFVRkxReXhYUVVGWExFbEJRVTFJTEVsQlFWVXNTVUZETjBSSkxFdEJRVXRJTEVkQlEwUkRMRTFCWVZSWUxGRkJRVkZKTEZWQlFWVlZMRXRCUVU4c1UwRkJVMHdzUlVGQlQwTXNSMEZEZGtNc1UwRkJVMGdzU1VGRFVFa3NTMEZCUzBrc1NVRkJTVTRzUlVGQlQwWXNSMEZEYUVKSExFVkJRVWROTEUxQlFVMU1MRXRCUVUxTkxGZEJTMnBDTEU5QlJrRldMRVZCUVVkSExFZEJRVXRCTEVWQlExSkRMRXRCUVV0S0xFZEJRVWRGTEVWQlFVOUdMRWRCUTFKSkxFMUJZVlJZTEZGQlFWRkpMRlZCUVZWWExFbEJRMnhDWml4UlFVRlJTU3hWUVVGVll5eGxRVU5zUW14Q0xGRkJRVkZKTEZWQlFWVmxMRzFDUVVOc1FtNUNMRkZCUVZGSkxGVkJRVlZuUWl4dlFrRkJjMElzVTBGQlUxZ3NSVUZCVDBNc1IwRkpkRVFzUjBGSVFVTXNTMEZCUzBNc1YwRkJZVVFzUzBGQlMwTXNXVUZCWXl4SFFVZHFReXhIUVVGTFN5eFZRVUZWU1N4UFFVVnFRaXhQUVVSQlZpeExRVUZMUXl4WFFVRmhMRWRCUTFoRUxFdEJTVlFzU1VGVlNWY3NSVUZXUVVNc1JVRkJXVm9zUzBGQlMwTXNWMEZCVnl4SlFVRk5TQ3hIUVVOMFF5eEpRVUZMWXl4RlFVRlhMRTlCUVU5YUxFdEJSM1pDTEVkQlFVa3NSMEZCUzAwc1ZVRkJWVWtzVDBGRmFrSXNZMEZFVDFZc1MwRkJTME1zVjBGQlZ5eEpRVUZOU0N4SFFVTjBRa1VzUzBGTFZDeEpRVUZMTEVsQlFVbGhMRVZCUVVrc1JVRkJSMEVzUlVGQlNVUXNSVUZCVlVZc1QwRkJVVWNzU1VGRmNFTXNTVUZFUVVZc1JVRkJTME1zUlVGQlZVTXNUVUZEU21Rc1IwRkJUVmtzUlVGQlIxb3NTMEZCVDBFc1JVRkJTU3hEUVVNM1FtRXNSVUZCVlVVc1QwRkJUMFFzUlVGQlJ5eEhRVU53UWl4TlFVZEtMRTlCUVU5aUxFMUJWMVJZTEZGQlFWRkpMRlZCUVZWelFpeExRVUZQTEZOQlFWTnFRaXhIUVVOb1EwVXNTMEZCUzBNc1YwRkJZVVFzUzBGQlMwTXNXVUZCWXl4SFFVTnlReXhKUVVGSlpTeEZRVUZQTEVkQlFVZERMRTFCUVUxRExFdEJRVXRhTEZWQlFWY3NSMEZEYUVOTkxFVkJRVmxhTEV0QlFVdERMRmRCUVZjc1NVRkJUVWdzUjBGRmRFTXNSMEZCU1dNc1JVRkZSaXhKUVVGTExFbEJRVWxETEVWQlFVa3NSVUZCUjAwc1IwRkVhRUpRTEVWQlFWbEJMRVZCUVZWTExFMUJRVTBzU1VGRFNWQXNUMEZCVVVjc1JVRkJTVTBzU1VGQlQwNHNSVUZEYWtSRUxFVkJRVlZETEVkQlFVZFNMRTFCUVUxTUxFdEJRVTFuUWl4SFFVazNRaXhQUVVGUGFFSXNUVUZYVkZnc1VVRkJVVWtzVlVGQlZUSkNMRlZCUVZrc1UwRkJVM1JDTEVkQlJYSkRMRTlCUkVGRkxFdEJRVXRETEZkQlFXRkVMRXRCUVV0RExGbEJRV01zUjBGRE9VSkVMRXRCUVV0RExGZEJRVmNzU1VGQlRVZ3NTVUZCVlN4SlFWZDZRMVFzVVVGQlVVa3NWVUZCVlRSQ0xHRkJRV1VzVTBGQlUzWkNMRWRCUTNoRExGRkJRVlZGTEV0QlFVdHZRaXhWUVVGVmRFSXNSMEZCVDFraUxDSm1hV3hsSWpvaVJUcGNYRmR2Y210emNHRmpaVnhjZDJscmFXRXRhWE10WVc1emQyVnlaV1JjWEc1dlpHVmZiVzlrZFd4bGMxeGNZMjl0Y0c5dVpXNTBMV1Z0YVhSMFpYSmNYR2x1WkdWNExtcHpJbjA9IiwiIWZ1bmN0aW9uKGUsdCl7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHMmJlwidW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9dCgpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUodCk6KGU9ZXx8c2VsZikuJD10KCl9KHRoaXMsZnVuY3Rpb24oKXtcInVzZSBzdHJpY3RcIjt2YXIgZSx0LG49XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6e30saT1mdW5jdGlvbihlKXtmb3IodmFyIHQ9ZS5sZW5ndGgsbj1uZXcgQXJyYXkodCksaT0wO2k8dDtpKyspbltpXT1lW2ldO3JldHVybiBufSxyPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1lLmxlbmd0aDtpZih2b2lkIDAhPT1pJiZ2b2lkIDA9PT1lLm5vZGVUeXBlKWZvcih2YXIgcj0wO3I8aTtyKyspdC5jYWxsKG4sZVtyXSxyLGUpO2Vsc2UgdC5jYWxsKG4sZSwwLGUpO3JldHVybiBlfSxvPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQ+MT90LTE6MCksaT0xO2k8dDtpKyspbltpLTFdPWFyZ3VtZW50c1tpXTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Zvcih2YXIgbiBpbiB0KWVbbl09dFtuXX0pLGV9LHU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZmlsdGVyKGZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuaW5kZXhPZih0KT09PW59KX0scz0hMSxjPS9eXFxzKjwoXFx3K3whKVtePl0qPi8sZj0vXjwoXFx3KylcXHMqXFwvPz4oPzo8XFwvXFwxPnwpJC8sYT0vXlsuI10/W1xcdy1dKiQvLGw9ZnVuY3Rpb24oZSx0KXt2YXIgbjtpZih2b2lkIDA9PT10JiYodD1kb2N1bWVudCksZSl7aWYoZSBpbnN0YW5jZW9mIHkpcmV0dXJuIGU7XCJzdHJpbmdcIiE9dHlwZW9mIGU/bj1lLm5vZGVUeXBlfHxlPT09d2luZG93P1tlXTplOmMudGVzdChlKT9uPXYoZSk6KHQ9XCJzdHJpbmdcIj09dHlwZW9mIHQ/ZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0KTp0Lmxlbmd0aD90WzBdOnQsbj1wKGUsdCkpfWVsc2Ugbj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKG51bGwpO3JldHVybiBtKG4pfSxkPWZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiByKHRoaXMsZnVuY3Rpb24obil7cmV0dXJuIHIocChlLG4pLGZ1bmN0aW9uKGUpey0xPT09dC5pbmRleE9mKGUpJiZ0LnB1c2goZSl9KX0pLGwodCl9LGg9KGU9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIEVsZW1lbnQ/RWxlbWVudC5wcm90b3R5cGU6bix0PWUubWF0Y2hlc3x8ZS5tYXRjaGVzU2VsZWN0b3J8fGUubW96TWF0Y2hlc1NlbGVjdG9yfHxlLm1zTWF0Y2hlc1NlbGVjdG9yfHxlLm9NYXRjaGVzU2VsZWN0b3J8fGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yLGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuY2FsbChlLG4pfSkscD1mdW5jdGlvbihlLHQpe2lmKGEudGVzdChlKSl7aWYoXCIjXCI9PT1lWzBdKXt2YXIgbj0odC5nZXRFbGVtZW50QnlJZD90OmRvY3VtZW50KS5nZXRFbGVtZW50QnlJZChlLnNsaWNlKDEpKTtyZXR1cm4gbj9bbl06W119cmV0dXJuXCIuXCI9PT1lWzBdP3QuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShlLnNsaWNlKDEpKTp0LmdldEVsZW1lbnRzQnlUYWdOYW1lKGUpfXJldHVybiB0LnF1ZXJ5U2VsZWN0b3JBbGwoZSl9LHY9ZnVuY3Rpb24oZSl7aWYoZi50ZXN0KGUpKXJldHVybltkb2N1bWVudC5jcmVhdGVFbGVtZW50KFJlZ0V4cC4kMSldO3ZhciB0PVtdLG49ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxpPW4uY2hpbGROb2RlcztuLmlubmVySFRNTD1lO2Zvcih2YXIgcj0wLG89aS5sZW5ndGg7cjxvO3IrKyl0LnB1c2goaVtyXSk7cmV0dXJuIHR9LG09ZnVuY3Rpb24oZSl7cmV0dXJuIHN8fCh5LnByb3RvdHlwZT1sLmZuLHkucHJvdG90eXBlLmNvbnN0cnVjdG9yPXkscz0hMCksbmV3IHkoZSl9LHk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aDt0PG47KXRoaXNbdF09ZVt0KytdO3RoaXMubGVuZ3RoPW59LGI9T2JqZWN0LmZyZWV6ZSh7JDpsLGZpbmQ6ZCxtYXRjaGVzOmgsRE9NdGFzdGljOnl9KSxnPUFycmF5LnByb3RvdHlwZSxFPWcuZXZlcnksTj1mdW5jdGlvbihlLHQpe3JldHVybiByKHRoaXMsZSx0KX0sQz1OLE89Zy5pbmRleE9mLHc9Zy5tYXAsVD1nLnBvcCxqPWcucHVzaCxBPWcucmVkdWNlLEw9Zy5yZWR1Y2VSaWdodCxEPWcuc2hpZnQsej1nLnNvbWUsXz1nLnVuc2hpZnQsTT1PYmplY3QuZnJlZXplKHtldmVyeTpFLGZpbHRlcjpmdW5jdGlvbihlLHQpe3ZhciBuPVwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZTpmdW5jdGlvbih0KXtyZXR1cm4gaCh0LGUpfTtyZXR1cm4gbChnLmZpbHRlci5jYWxsKHRoaXMsbix0KSl9LGZvckVhY2g6TixlYWNoOkMsaW5kZXhPZjpPLG1hcDp3LHBvcDpULHB1c2g6aixyZWR1Y2U6QSxyZWR1Y2VSaWdodDpMLHJldmVyc2U6ZnVuY3Rpb24oKXtyZXR1cm4gbChpKHRoaXMpLnJldmVyc2UoKSl9LHNoaWZ0OkQsc29tZTp6LHVuc2hpZnQ6X30pO2Z1bmN0aW9uIHgoZSl7dmFyIHQ9ZnVuY3Rpb24oKXt5LmNhbGwodGhpcyxsLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpKX07cmV0dXJuIG8odC5wcm90b3R5cGUsZSksdH12YXIgUz1mdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKC8tKFtcXGRhLXpdKS9naSxmdW5jdGlvbihlLHQpe3JldHVybiB0LnRvVXBwZXJDYXNlKCl9KX0sUD1PYmplY3QuZnJlZXplKHtjc3M6ZnVuY3Rpb24oZSx0KXt2YXIgbixpLG87aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUpe2lmKGU9UyhlKSx2b2lkIDA9PT10KXt2YXIgdT10aGlzLm5vZGVUeXBlP3RoaXM6dGhpc1swXTtyZXR1cm4gdT9mdW5jdGlvbihlKXtyZXR1cm4haXNOYU4ocGFyc2VGbG9hdChlKSkmJmlzRmluaXRlKGUpfShvPXUuc3R5bGVbZV0pP3BhcnNlRmxvYXQobyk6bzp2b2lkIDB9KG49e30pW2VdPXR9ZWxzZSBmb3IoaSBpbiBuPWUpbz1uW2ldLGRlbGV0ZSBuW2ldLG5bUyhpKV09bztyZXR1cm4gcih0aGlzLGZ1bmN0aW9uKGUpe2ZvcihpIGluIG4pbltpXXx8MD09PW5baV0/ZS5zdHlsZVtpXT1uW2ldOmUuc3R5bGUucmVtb3ZlUHJvcGVydHkoaS5yZXBsYWNlKC8oW2EtelxcZF0pKFtBLVpdKS9nLFwiJDEtJDJcIikudG9Mb3dlckNhc2UoKSl9KSx0aGlzfX0pLEg9QXJyYXkucHJvdG90eXBlLmZvckVhY2gsJD1mdW5jdGlvbiBlKHQpe2lmKHRoaXMgaW5zdGFuY2VvZiBOb2RlKWlmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXRoaXMuaW5zZXJ0QWRqYWNlbnRIVE1MKFwiYmVmb3JlZW5kXCIsdCk7ZWxzZSBpZih0IGluc3RhbmNlb2YgTm9kZSl0aGlzLmFwcGVuZENoaWxkKHQpO2Vsc2V7dmFyIG49dCBpbnN0YW5jZW9mIE5vZGVMaXN0P2kodCk6dDtILmNhbGwobix0aGlzLmFwcGVuZENoaWxkLmJpbmQodGhpcykpfWVsc2Ugayh0aGlzLGUsdCk7cmV0dXJuIHRoaXN9LEk9ZnVuY3Rpb24gZSh0KXtpZih0aGlzIGluc3RhbmNlb2YgTm9kZSlpZihcInN0cmluZ1wiPT10eXBlb2YgdCl0aGlzLmluc2VydEFkamFjZW50SFRNTChcImJlZm9yZWJlZ2luXCIsdCk7ZWxzZSBpZih0IGluc3RhbmNlb2YgTm9kZSl0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQsdGhpcyk7ZWxzZXt2YXIgbj10IGluc3RhbmNlb2YgTm9kZUxpc3Q/aSh0KTp0O0guY2FsbChuLGUuYmluZCh0aGlzKSl9ZWxzZSBrKHRoaXMsZSx0KTtyZXR1cm4gdGhpc30sQj1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgZT9lOmUgaW5zdGFuY2VvZiBOb2RlP2UuY2xvbmVOb2RlKCEwKTpcImxlbmd0aFwiaW4gZT9bXS5tYXAuY2FsbChlLGZ1bmN0aW9uKGUpe3JldHVybiBlLmNsb25lTm9kZSghMCl9KTplfSxrPWZ1bmN0aW9uKGUsdCxuKXtmb3IodmFyIGk9ZS5sZW5ndGg7aS0tOyl7dmFyIHI9MD09PWk/bjpCKG4pO3QuY2FsbChlW2ldLHIpfX0scT1PYmplY3QuZnJlZXplKHthcHBlbmQ6JCxwcmVwZW5kOmZ1bmN0aW9uIGUodCl7aWYodGhpcyBpbnN0YW5jZW9mIE5vZGUpaWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpdGhpcy5pbnNlcnRBZGphY2VudEhUTUwoXCJhZnRlcmJlZ2luXCIsdCk7ZWxzZSBpZih0IGluc3RhbmNlb2YgTm9kZSl0aGlzLmluc2VydEJlZm9yZSh0LHRoaXMuZmlyc3RDaGlsZCk7ZWxzZXt2YXIgbj10IGluc3RhbmNlb2YgTm9kZUxpc3Q/aSh0KTp0O0guY2FsbChuLnJldmVyc2UoKSxlLmJpbmQodGhpcykpfWVsc2Ugayh0aGlzLGUsdCk7cmV0dXJuIHRoaXN9LGJlZm9yZTpJLGFmdGVyOmZ1bmN0aW9uIGUodCl7aWYodGhpcyBpbnN0YW5jZW9mIE5vZGUpaWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpdGhpcy5pbnNlcnRBZGphY2VudEhUTUwoXCJhZnRlcmVuZFwiLHQpO2Vsc2UgaWYodCBpbnN0YW5jZW9mIE5vZGUpdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpO2Vsc2V7dmFyIG49dCBpbnN0YW5jZW9mIE5vZGVMaXN0P2kodCk6dDtILmNhbGwobi5yZXZlcnNlKCksZS5iaW5kKHRoaXMpKX1lbHNlIGsodGhpcyxlLHQpO3JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiBsKEIodGhpcykpfSxfY2xvbmU6QixfZWFjaDprfSksRj1PYmplY3QuZnJlZXplKHthdHRyOmZ1bmN0aW9uKGUsdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJnZvaWQgMD09PXQpe3ZhciBuPXRoaXMubm9kZVR5cGU/dGhpczp0aGlzWzBdO3JldHVybiBuP24uZ2V0QXR0cmlidXRlKGUpOnZvaWQgMH1yZXR1cm4gcih0aGlzLGZ1bmN0aW9uKG4pe2lmKFwib2JqZWN0XCI9PXR5cGVvZiBlKWZvcih2YXIgaSBpbiBlKW4uc2V0QXR0cmlidXRlKGksZVtpXSk7ZWxzZSBuLnNldEF0dHJpYnV0ZShlLHQpfSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oZSl7cmV0dXJuIHIodGhpcyxmdW5jdGlvbih0KXtyZXR1cm4gdC5yZW1vdmVBdHRyaWJ1dGUoZSl9KX19KSxSPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIodGhpcyxmdW5jdGlvbihuKXtyZXR1cm4gbi5jbGFzc0xpc3RbZV0odCl9KX0sVT1PYmplY3QuZnJlZXplKHthZGRDbGFzczpmdW5jdGlvbihlKXtyZXR1cm4gZSYmZS5sZW5ndGgmJnIoZS5zcGxpdChcIiBcIiksUi5iaW5kKHRoaXMsXCJhZGRcIikpLHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGUpe3JldHVybiBlJiZlLmxlbmd0aCYmcihlLnNwbGl0KFwiIFwiKSxSLmJpbmQodGhpcyxcInJlbW92ZVwiKSksdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oZSx0KXtpZihlJiZlLmxlbmd0aCl7dmFyIG49XCJib29sZWFuXCI9PXR5cGVvZiB0P3Q/XCJhZGRcIjpcInJlbW92ZVwiOlwidG9nZ2xlXCI7cihlLnNwbGl0KFwiIFwiKSxSLmJpbmQodGhpcyxuKSl9cmV0dXJuIHRoaXN9LGhhc0NsYXNzOmZ1bmN0aW9uKGUpe3JldHVybih0aGlzLm5vZGVUeXBlP1t0aGlzXTp0aGlzKS5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiB0LmNsYXNzTGlzdC5jb250YWlucyhlKX0pfX0pLEs9ZnVuY3Rpb24oZSx0KXtyZXR1cm4hKCFlfHwhdHx8ZT09PXQpJiYoZS5jb250YWlucz9lLmNvbnRhaW5zKHQpOiEhZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmIShlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpJk5vZGUuRE9DVU1FTlRfUE9TSVRJT05fRElTQ09OTkVDVEVEKSl9LFc9T2JqZWN0LmZyZWV6ZSh7Y29udGFpbnM6S30pLFo9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50JiZcImRhdGFzZXRcImluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxHPVo/XCJkYXRhc2V0XCI6XCJfX0RPTVRBU1RJQ19EQVRBX19cIixKPWZ1bmN0aW9uKGUpe3JldHVybiBlLnJlcGxhY2UoLy0rKC4pPy9nLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/dC50b1VwcGVyQ2FzZSgpOlwiXCJ9KX0sUT1PYmplY3QuZnJlZXplKHtkYXRhOmZ1bmN0aW9uKGUsdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGUmJnZvaWQgMD09PXQpe3ZhciBuPXRoaXMubm9kZVR5cGU/dGhpczp0aGlzWzBdO3JldHVybiBuJiZHIGluIG4/bltHXVtKKGUpXTp2b2lkIDB9cmV0dXJuIHIodGhpcyxmdW5jdGlvbihuKXtafHwobltHXT1uW0ddfHx7fSksbltHXVtKKGUpXT10fSl9LHByb3A6ZnVuY3Rpb24oZSx0KXtpZihcInN0cmluZ1wiPT10eXBlb2YgZSYmdm9pZCAwPT09dCl7dmFyIG49dGhpcy5ub2RlVHlwZT90aGlzOnRoaXNbMF07cmV0dXJuIG4mJm4/bltlXTp2b2lkIDB9cmV0dXJuIHIodGhpcyxmdW5jdGlvbihuKXtyZXR1cm4gbltlXT10fSl9fSksVj1PYmplY3QuZnJlZXplKHthcHBlbmRUbzpmdW5jdGlvbihlKXt2YXIgdD1cInN0cmluZ1wiPT10eXBlb2YgZT9sKGUpOmU7cmV0dXJuICQuY2FsbCh0LHRoaXMpLHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7cmV0dXJuIHIodGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gZS5pbm5lckhUTUw9XCJcIn0pfSxyZW1vdmU6ZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLGZ1bmN0aW9uKGUpe2UucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfSl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKCl7cmV0dXJuIEkuYXBwbHkodGhpcyxhcmd1bWVudHMpLnJlbW92ZSgpfSx0ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDA9PT1lP3RoaXNbMF0udGV4dENvbnRlbnQ6cih0aGlzLGZ1bmN0aW9uKHQpe3JldHVybiB0LnRleHRDb250ZW50PVwiXCIrZX0pfSx2YWw6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMD09PWU/dGhpcy5sZW5ndGg+MD90aGlzWzBdLnZhbHVlOnZvaWQgMDpyKHRoaXMsZnVuY3Rpb24odCl7cmV0dXJuIHQudmFsdWU9ZX0pfX0pLFg9T2JqZWN0LmZyZWV6ZSh7aHRtbDpmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lKXt2YXIgdD10aGlzLm5vZGVUeXBlP3RoaXM6dGhpc1swXTtyZXR1cm4gdD90LmlubmVySFRNTDp2b2lkIDB9cmV0dXJuIHIodGhpcyxmdW5jdGlvbih0KXtyZXR1cm4gdC5pbm5lckhUTUw9ZX0pfX0pLFk9ZnVuY3Rpb24oKXt2YXIgZT1mdW5jdGlvbihlLHQpe3ZhciBuPVtdO3JldHVybiByKHRoaXMsZnVuY3Rpb24oaSl7Zm9yKDtpJiZpIT09dDspe2lmKGgoaSxlKSl7bi5wdXNoKGkpO2JyZWFrfWk9aS5wYXJlbnRFbGVtZW50fX0pLGwodShuKSl9O3JldHVyblwidW5kZWZpbmVkXCIhPXR5cGVvZiBFbGVtZW50JiZFbGVtZW50LnByb3RvdHlwZS5jbG9zZXN0P2Z1bmN0aW9uKHQsbil7aWYobilyZXR1cm4gZS5jYWxsKHRoaXMsdCxuKTt2YXIgaT1bXTtyZXR1cm4gcih0aGlzLGZ1bmN0aW9uKGUpe3ZhciBuPWUuY2xvc2VzdCh0KTtuJiZpLnB1c2gobil9KSxsKHUoaSkpfTplfSgpLGVlPU9iamVjdC5mcmVlemUoe2Nsb3Nlc3Q6WX0pLHRlPWZ1bmN0aW9uKGUsdCxuLGksbyl7dmFyIHUscyxjLGY9dGhpcztyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYobj10LHQ9bnVsbCksZS5zcGxpdChcIiBcIikuZm9yRWFjaChmdW5jdGlvbihhKXt1PWEuc3BsaXQoXCIuXCIpLGE9dVswXXx8bnVsbCxzPXVbMV18fG51bGwsYz1mZShuKSxyKGYsZnVuY3Rpb24ocil7aWYodCYmKGM9cGUuYmluZChyLHQsYykpLG8pe3ZhciB1PWM7Yz1mdW5jdGlvbihvKXtuZS5jYWxsKHIsZSx0LG4saSksdS5jYWxsKHIsbyl9fXIuYWRkRXZlbnRMaXN0ZW5lcihhLGMsaXx8ITEpLHNlKHIpLnB1c2goe2V2ZW50TmFtZTphLGhhbmRsZXI6bixldmVudExpc3RlbmVyOmMsc2VsZWN0b3I6dCxuYW1lc3BhY2U6c30pfSl9LHRoaXMpLHRoaXN9LG5lPWZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBvLHUscyxjPXRoaXM7cmV0dXJuIHZvaWQgMD09PWUmJihlPVwiXCIpLFwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJihuPXQsdD1udWxsKSxlLnNwbGl0KFwiIFwiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JldHVybiBvPWUuc3BsaXQoXCIuXCIpLGU9b1swXXx8bnVsbCx1PW9bMV18fG51bGwscihjLGZ1bmN0aW9uKG8pe3M9c2UobykscihzLmZpbHRlcihmdW5jdGlvbihpKXtyZXR1cm4hKGUmJmkuZXZlbnROYW1lIT09ZXx8dSYmaS5uYW1lc3BhY2UhPT11fHxuJiZpLmhhbmRsZXIhPT1ufHx0JiZpLnNlbGVjdG9yIT09dCl9KSxmdW5jdGlvbihlKXtvLnJlbW92ZUV2ZW50TGlzdGVuZXIoZS5ldmVudE5hbWUsZS5ldmVudExpc3RlbmVyLGl8fCExKSxzLnNwbGljZShzLmluZGV4T2YoZSksMSl9KSxlfHx1fHx0fHxuPzA9PT1zLmxlbmd0aCYmY2Uobyk6Y2Uobyl9KX0sdGhpcyksdGhpc30saWU9XCJfX2RvbXRhc3RpY19ldmVudF9fXCIscmU9MSxvZT17fSx1ZT1bXSxzZT1mdW5jdGlvbihlKXtlW2llXXx8KGVbaWVdPTA9PT11ZS5sZW5ndGg/KytyZTp1ZS5wb3AoKSk7dmFyIHQ9ZVtpZV07cmV0dXJuIG9lW3RdfHwob2VbdF09W10pfSxjZT1mdW5jdGlvbihlKXt2YXIgdD1lW2llXTtvZVt0XSYmKG9lW3RdPW51bGwsZVtpZV09bnVsbCx1ZS5wdXNoKHQpKX0sZmU9ZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlLmNhbGwodGhpcyxoZSh0KSl9fSxhZT17cHJldmVudERlZmF1bHQ6XCJpc0RlZmF1bHRQcmV2ZW50ZWRcIixzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246XCJpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZFwiLHN0b3BQcm9wYWdhdGlvbjpcImlzUHJvcGFnYXRpb25TdG9wcGVkXCJ9LGxlPWZ1bmN0aW9uKCl7cmV0dXJuITB9LGRlPWZ1bmN0aW9uKCl7cmV0dXJuITF9LGhlPWZ1bmN0aW9uKGUpe2lmKCFlLmlzRGVmYXVsdFByZXZlbnRlZHx8ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb258fGUuc3RvcFByb3BhZ2F0aW9uKXtmb3IodmFyIHQgaW4gYWUpIWZ1bmN0aW9uKHQsbixpKXtlW3RdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbbl09bGUsaSYmaS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGVbbl09ZGV9KHQsYWVbdF0sZVt0XSk7ZS5fcHJldmVudERlZmF1bHQmJmUucHJldmVudERlZmF1bHQoKX1yZXR1cm4gZX0scGU9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW4uX3RhcmdldHx8bi50YXJnZXQscj1ZLmNhbGwoW2ldLGUsdGhpcylbMF07ciYmciE9PXRoaXMmJihyIT09aSYmbi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCYmbi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpfHx0LmNhbGwocixuKSl9LHZlPXRlLG1lPW5lLHllPU9iamVjdC5mcmVlemUoe29uOnRlLG9mZjpuZSxvbmU6ZnVuY3Rpb24oZSx0LG4saSl7cmV0dXJuIHRlLmNhbGwodGhpcyxlLHQsbixpLDEpfSxnZXRIYW5kbGVyczpzZSxjbGVhckhhbmRsZXJzOmNlLHByb3h5SGFuZGxlcjpmZSxkZWxlZ2F0ZUhhbmRsZXI6cGUsYmluZDp2ZSx1bmJpbmQ6bWV9KSxiZT0vXihtb3VzZShkb3dufHVwfG92ZXJ8b3V0fGVudGVyfGxlYXZlfG1vdmUpfGNvbnRleHRtZW51fChkYmwpP2NsaWNrKSQvLGdlPS9ea2V5KGRvd258cHJlc3N8dXApJC8sRWU9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPXZvaWQgMD09PW4/e306bixvPWkuYnViYmxlcyx1PXZvaWQgMD09PW98fG8scz1pLmNhbmNlbGFibGUsYz12b2lkIDA9PT1zfHxzLGY9aS5wcmV2ZW50RGVmYXVsdCxhPXZvaWQgMCE9PWYmJmYsbD1uZXcoTmUoZSkpKGUse2J1YmJsZXM6dSxjYW5jZWxhYmxlOmMscHJldmVudERlZmF1bHQ6YSxkZXRhaWw6dH0pO3JldHVybiBsLl9wcmV2ZW50RGVmYXVsdD1hLHIodGhpcyxmdW5jdGlvbihuKXshdXx8amV8fENlKG4pP1RlKG4sbCk6T2UobixlLHtidWJibGVzOnUsY2FuY2VsYWJsZTpjLHByZXZlbnREZWZhdWx0OmEsZGV0YWlsOnR9KX0pfSxOZT1mdW5jdGlvbihlKXtyZXR1cm4gQWU/YmUudGVzdChlKT9Nb3VzZUV2ZW50OmdlLnRlc3QoZSk/S2V5Ym9hcmRFdmVudDpDdXN0b21FdmVudDpDdXN0b21FdmVudH0sQ2U9ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT13aW5kb3d8fGU9PT1kb2N1bWVudHx8SyhlLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGUpfSxPZT1mdW5jdGlvbihlLHQsbil7dm9pZCAwPT09biYmKG49e30pLG4uYnViYmxlcz0hMTt2YXIgaT1uZXcgQ3VzdG9tRXZlbnQodCxuKTtpLl90YXJnZXQ9ZTtkb3tUZShlLGkpfXdoaWxlKGU9ZS5wYXJlbnROb2RlKX0sd2U9W1wiYmx1clwiLFwiZm9jdXNcIixcInNlbGVjdFwiLFwic3VibWl0XCJdLFRlPWZ1bmN0aW9uKGUsdCl7LTE9PT13ZS5pbmRleE9mKHQudHlwZSl8fFwiZnVuY3Rpb25cIiE9dHlwZW9mIGVbdC50eXBlXXx8dC5fcHJldmVudERlZmF1bHR8fHQuY2FuY2VsYWJsZT9lLmRpc3BhdGNoRXZlbnQodCk6ZVt0LnR5cGVdKCl9OyFmdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKGUsdCl7dm9pZCAwPT09dCYmKHQ9e2J1YmJsZXM6ITEsY2FuY2VsYWJsZTohMSxkZXRhaWw6dm9pZCAwfSk7dmFyIG49ZG9jdW1lbnQuY3JlYXRlRXZlbnQoXCJDdXN0b21FdmVudFwiKTtyZXR1cm4gbi5pbml0Q3VzdG9tRXZlbnQoZSx0LmJ1YmJsZXMsdC5jYW5jZWxhYmxlLHQuZGV0YWlsKSxufTtlLnByb3RvdHlwZT1uLkN1c3RvbUV2ZW50JiZuLkN1c3RvbUV2ZW50LnByb3RvdHlwZSxuLkN1c3RvbUV2ZW50PWV9KCk7dmFyIGplPWZ1bmN0aW9uKCl7dmFyIGU9ITEsdD1uLmRvY3VtZW50O2lmKHQpe3ZhciBpPXQuY3JlYXRlRWxlbWVudChcImRpdlwiKSxyPWkuY2xvbmVOb2RlKCk7aS5hcHBlbmRDaGlsZChyKSxpLmFkZEV2ZW50TGlzdGVuZXIoXCJlXCIsZnVuY3Rpb24oKXtlPSEwfSksci5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudChcImVcIix7YnViYmxlczohMH0pKX1yZXR1cm4gZX0oKSxBZT1mdW5jdGlvbigpe3RyeXtuZXcgTW91c2VFdmVudChcImNsaWNrXCIpfWNhdGNoKGUpe3JldHVybiExfXJldHVybiEwfSgpLExlPU9iamVjdC5mcmVlemUoe3RyaWdnZXI6RWUsdHJpZ2dlckhhbmRsZXI6ZnVuY3Rpb24oZSx0KXt0aGlzWzBdJiZFZS5jYWxsKHRoaXNbMF0sZSx0LHtidWJibGVzOiExLHByZXZlbnREZWZhdWx0OiEwfSl9fSksRGU9T2JqZWN0LmZyZWV6ZSh7cmVhZHk6ZnVuY3Rpb24oZSl7cmV0dXJuL2NvbXBsZXRlfGxvYWRlZHxpbnRlcmFjdGl2ZS8udGVzdChkb2N1bWVudC5yZWFkeVN0YXRlKSYmZG9jdW1lbnQuYm9keT9lKCk6ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixlLCExKSx0aGlzfX0pLHplPW4uJCxfZT1PYmplY3QuZnJlZXplKHtub0NvbmZsaWN0OmZ1bmN0aW9uKCl7cmV0dXJuIG4uJD16ZSx0aGlzfX0pLE1lPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGwoW10uc2xpY2UuYXBwbHkodGhpcyxhcmd1bWVudHMpKX0seGU9T2JqZWN0LmZyZWV6ZSh7Y2hpbGRyZW46ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIHIodGhpcyxmdW5jdGlvbihuKXtuLmNoaWxkcmVuJiZyKG4uY2hpbGRyZW4sZnVuY3Rpb24obil7KCFlfHxlJiZoKG4sZSkpJiZ0LnB1c2gobil9KX0pLGwodCl9LGNvbmNhdDpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiByKGwoZSksZnVuY3Rpb24oZSl7LTE9PT1bXS5pbmRleE9mLmNhbGwodCxlKSYmW10ucHVzaC5jYWxsKHQsZSl9KSx0aGlzfSxjb250ZW50czpmdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiByKHRoaXMsZnVuY3Rpb24odCl7cmV0dXJuIGUucHVzaC5hcHBseShlLGkodC5jaGlsZE5vZGVzKSl9KSxsKGUpfSxlcTpmdW5jdGlvbihlKXtyZXR1cm4gTWUuY2FsbCh0aGlzLGUsZSsxKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gTWUuY2FsbCh0aGlzLDAsMSl9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gdGhpc1tlXX0scGFyZW50OmZ1bmN0aW9uKGUpe3ZhciB0PVtdO3JldHVybiByKHRoaXMsZnVuY3Rpb24obil7KCFlfHxlJiZoKG4ucGFyZW50Tm9kZSxlKSkmJnQucHVzaChuLnBhcmVudE5vZGUpfSksbCh0KX0sc2libGluZ3M6ZnVuY3Rpb24oZSl7dmFyIHQ9W107cmV0dXJuIHIodGhpcyxmdW5jdGlvbihuKXtyZXR1cm4gcihuLnBhcmVudE5vZGUuY2hpbGRyZW4sZnVuY3Rpb24oaSl7aSE9PW4mJighZXx8ZSYmaChpLGUpKSYmdC5wdXNoKGkpfSl9KSxsKHQpfSxzbGljZTpNZX0pLFNlPUFycmF5LmlzQXJyYXksUGU9T2JqZWN0LmZyZWV6ZSh7aXNGdW5jdGlvbjpmdW5jdGlvbihlKXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBlfSxpc0FycmF5OlNlfSksSGU9e30sJGU9e307cmV0dXJuIHZvaWQgMCE9PWImJigoJGU9bCkubWF0Y2hlcz1oLEhlLmZpbmQ9ZCksbygkZSxXLF9lLFBlKSxvKEhlLE0sUCxGLHEsVSxRLFYsWCx5ZSxMZSxEZSxlZSx4ZSksJGUuZm49SGUsJGUudmVyc2lvbj1cIjAuMTUuMTJcIiwkZS5leHRlbmQ9bywkZS5CYXNlQ2xhc3M9eCgkZS5mbiksJGV9KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltUnZiWFJoYzNScFl5NXFjeUpkTENKdVlXMWxjeUk2V3lKbmJHOWlZV3dpTENKbVlXTjBiM0o1SWl3aVpYaHdiM0owY3lJc0ltMXZaSFZzWlNJc0ltUmxabWx1WlNJc0ltRnRaQ0lzSW5ObGJHWWlMQ0lrSWl3aWRHaHBjeUlzSW1OdmJuUmxlSFFpTENKZmJXRjBZMmhsY3lJc0luZHBiaUlzSW5kcGJtUnZkeUlzSW5SdlFYSnlZWGtpTENKamIyeHNaV04wYVc5dUlpd2liR1Z1WjNSb0lpd2ljbVZ6ZFd4MElpd2lRWEp5WVhraUxDSnBJaXdpWldGamFDSXNJbU5oYkd4aVlXTnJJaXdpZEdocGMwRnlaeUlzSW5WdVpHVm1hVzVsWkNJc0ltNXZaR1ZVZVhCbElpd2lZMkZzYkNJc0ltVjRkR1Z1WkNJc0luUmhjbWRsZENJc0lsOXNaVzRpTENKaGNtZDFiV1Z1ZEhNaUxDSnpiM1Z5WTJWeklpd2lYMnRsZVNJc0ltWnZja1ZoWTJnaUxDSnpjbU1pTENKd2NtOXdJaXdpZFc1cGNTSXNJbVpwYkhSbGNpSXNJbWwwWlcwaUxDSnBibVJsZUNJc0ltbHVaR1Y0VDJZaUxDSnBjMUJ5YjNSdmRIbHdaVk5sZENJc0luSmxSbkpoWjIxbGJuUWlMQ0p5WlZOcGJtZHNaVlJoWnlJc0luSmxVMmx0Y0d4bFUyVnNaV04wYjNJaUxDSnpaV3hsWTNSdmNpSXNJbVJ2WTNWdFpXNTBJaXdpUkU5TmRHRnpkR2xqSWl3aWRHVnpkQ0lzSW1OeVpXRjBaVVp5WVdkdFpXNTBJaXdpY1hWbGNubFRaV3hsWTNSdmNpSXNJbkYxWlhKNVUyVnNaV04wYjNKQmJHd2lMQ0ozY21Gd0lpd2labWx1WkNJc0ltNXZaR1Z6SWl3aWJtOWtaU0lzSW1Ob2FXeGtJaXdpY0hWemFDSXNJbTFoZEdOb1pYTWlMQ0pGYkdWdFpXNTBJaXdpY0hKdmRHOTBlWEJsSWl3aWJXRjBZMmhsYzFObGJHVmpkRzl5SWl3aWJXOTZUV0YwWTJobGMxTmxiR1ZqZEc5eUlpd2liWE5OWVhSamFHVnpVMlZzWldOMGIzSWlMQ0p2VFdGMFkyaGxjMU5sYkdWamRHOXlJaXdpZDJWaWEybDBUV0YwWTJobGMxTmxiR1ZqZEc5eUlpd2laV3hsYldWdWRDSXNJbWRsZEVWc1pXMWxiblJDZVVsa0lpd2ljMnhwWTJVaUxDSm5aWFJGYkdWdFpXNTBjMEo1UTJ4aGMzTk9ZVzFsSWl3aVoyVjBSV3hsYldWdWRITkNlVlJoWjA1aGJXVWlMQ0pvZEcxc0lpd2lZM0psWVhSbFJXeGxiV1Z1ZENJc0lsSmxaMFY0Y0NJc0lpUXhJaXdpWld4bGJXVnVkSE1pTENKamIyNTBZV2x1WlhJaUxDSmphR2xzWkhKbGJpSXNJbU5vYVd4a1RtOWtaWE1pTENKcGJtNWxja2hVVFV3aUxDSnNJaXdpWm00aUxDSmpiMjV6ZEhKMVkzUnZjaUlzSWs5aWFtVmpkQ0lzSW1aeVpXVjZaU0lzSWtGeWNtRjVVSEp2ZEc4aUxDSmxkbVZ5ZVNJc0ltVmhZMmdrTVNJc0ltMWhjQ0lzSW5CdmNDSXNJbkpsWkhWalpTSXNJbkpsWkhWalpWSnBaMmgwSWl3aWMyaHBablFpTENKemIyMWxJaXdpZFc1emFHbG1kQ0lzSW1GeWNtRjVJaXdpY21WMlpYSnpaU0lzSWtKaGMyVkRiR0Z6Y3lJc0ltRndhU0lzSW1Gd2NHeDVJaXdpWTJGdFpXeHBlbVVpTENKMllXeDFaU0lzSW5KbGNHeGhZMlVpTENKc1pYUjBaWElpTENKMGIxVndjR1Z5UTJGelpTSXNJbU56Y3lReElpd2lZM056SWl3aWEyVjVJaXdpYzNSNWJHVlFjbTl3Y3lJc0luWmhiQ0lzSW1selRtRk9JaXdpY0dGeWMyVkdiRzloZENJc0ltbHpSbWx1YVhSbElpd2lhWE5PZFcxbGNtbGpJaXdpYzNSNWJHVWlMQ0p5WlcxdmRtVlFjbTl3WlhKMGVTSXNJblJ2VEc5M1pYSkRZWE5sSWl3aVptOXlSV0ZqYUNReElpd2lZWEJ3Wlc1a0lpd2lUbTlrWlNJc0ltbHVjMlZ5ZEVGa2FtRmpaVzUwU0ZSTlRDSXNJbUZ3Y0dWdVpFTm9hV3hrSWl3aVRtOWtaVXhwYzNRaUxDSmlhVzVrSWl3aVgyVmhZMmdpTENKaVpXWnZjbVVpTENKd1lYSmxiblJPYjJSbElpd2lhVzV6WlhKMFFtVm1iM0psSWl3aVgyTnNiMjVsSWl3aVkyeHZibVZPYjJSbElpd2laV3dpTENKbGJHMGlMQ0prYjIwaUxDSndjbVZ3Wlc1a0lpd2labWx5YzNSRGFHbHNaQ0lzSW1GbWRHVnlJaXdpYm1WNGRGTnBZbXhwYm1jaUxDSmpiRzl1WlNJc0ltUnZiVjloZEhSeUlpd2lZWFIwY2lJc0ltZGxkRUYwZEhKcFluVjBaU0lzSWw5aGRIUnlJaXdpYzJWMFFYUjBjbWxpZFhSbElpd2ljbVZ0YjNabFFYUjBjaUlzSW5KbGJXOTJaVUYwZEhKcFluVjBaU0lzSWw5bFlXTm9KREVpTENKbWJrNWhiV1VpTENKamJHRnpjMDVoYldVaUxDSmpiR0Z6YzB4cGMzUWlMQ0prYjIxZlkyeGhjM01pTENKaFpHUkRiR0Z6Y3lJc0luTndiR2wwSWl3aWNtVnRiM1psUTJ4aGMzTWlMQ0owYjJkbmJHVkRiR0Z6Y3lJc0luTjBZWFJsSWl3aVlXTjBhVzl1SWl3aWFHRnpRMnhoYzNNaUxDSmpiMjUwWVdsdWN5SXNJbU52YlhCaGNtVkViMk4xYldWdWRGQnZjMmwwYVc5dUlpd2lSRTlEVlUxRlRsUmZVRTlUU1ZSSlQwNWZSRWxUUTA5T1RrVkRWRVZFSWl3aVpHOXRYMk52Ym5SaGFXNXpJaXdpYVhOVGRYQndiM0owYzBSaGRHRlRaWFFpTENKa2IyTjFiV1Z1ZEVWc1pXMWxiblFpTENKRVFWUkJTMFZaVUZKUFVDSXNJbU5oYldWc2FYcGxKREVpTENKemRISWlMQ0p0WVhSamFDSXNJbU5vWVhJaUxDSmtiMjFmWkdGMFlTSXNJbVJoZEdFaUxDSmtiMjFmWlhoMGNtRWlMQ0poY0hCbGJtUlVieUlzSW1WdGNIUjVJaXdpY21WdGIzWmxJaXdpY21WdGIzWmxRMmhwYkdRaUxDSnlaWEJzWVdObFYybDBhQ0lzSW5SbGVIUWlMQ0owWlhoMFEyOXVkR1Z1ZENJc0ltUnZiVjlvZEcxc0lpd2labkpoWjIxbGJuUWlMQ0pqYkc5elpYTjBJaXdpY0dGeVpXNTBSV3hsYldWdWRDSXNJbTRpTENKelpXeGxZM1J2Y2w5amJHOXpaWE4wSWl3aWIyNGlMQ0psZG1WdWRFNWhiV1Z6SWl3aWFHRnVaR3hsY2lJc0luVnpaVU5oY0hSMWNtVWlMQ0p2Ym1ObElpd2ljR0Z5ZEhNaUxDSnVZVzFsYzNCaFkyVWlMQ0psZG1WdWRFeHBjM1JsYm1WeUlpd2lYM1JvYVhNaUxDSmxkbVZ1ZEU1aGJXVWlMQ0p3Y205NGVVaGhibVJzWlhJaUxDSmtaV3hsWjJGMFpVaGhibVJzWlhJaUxDSnNhWE4wWlc1bGNpSXNJbVYyWlc1MElpd2liMlptSWl3aVlXUmtSWFpsYm5STWFYTjBaVzVsY2lJc0ltZGxkRWhoYm1Sc1pYSnpJaXdpYUdGdVpHeGxjbk1pTENKZmRHaHBjeklpTENKeVpXMXZkbVZGZG1WdWRFeHBjM1JsYm1WeUlpd2ljM0JzYVdObElpd2lZMnhsWVhKSVlXNWtiR1Z5Y3lJc0ltVjJaVzUwUzJWNVVISnZjQ0lzSW1sa0lpd2lkVzUxYzJWa1MyVjVjeUlzSW1GMVoyMWxiblJGZG1WdWRDSXNJbVYyWlc1MFRXVjBhRzlrY3lJc0luQnlaWFpsYm5SRVpXWmhkV3gwSWl3aWMzUnZjRWx0YldWa2FXRjBaVkJ5YjNCaFoyRjBhVzl1SWl3aWMzUnZjRkJ5YjNCaFoyRjBhVzl1SWl3aWNtVjBkWEp1VkhKMVpTSXNJbkpsZEhWeWJrWmhiSE5sSWl3aWFYTkVaV1poZFd4MFVISmxkbVZ1ZEdWa0lpd2liV1YwYUc5a1RtRnRaU0lzSW5SbGMzUk5aWFJvYjJST1lXMWxJaXdpYjNKcFoybHVZV3hOWlhSb2IyUWlMQ0pmY0hKbGRtVnVkRVJsWm1GMWJIUWlMQ0psZG1WdWRGUmhjbWRsZENJc0lsOTBZWEpuWlhRaUxDSmpkWEp5Wlc1MFZHRnlaMlYwSWl3aWFYTlFjbTl3WVdkaGRHbHZibE4wYjNCd1pXUWlMQ0oxYm1KcGJtUWlMQ0p2Ym1VaUxDSnlaVTF2ZFhObFJYWmxiblFpTENKeVpVdGxlVVYyWlc1MElpd2lkSEpwWjJkbGNpSXNJblI1Y0dVaUxDSmZkR1Z0Y0NJc0lsOXlaV1lpTENKZmNtVm1KR0oxWW1Kc1pYTWlMQ0ppZFdKaWJHVnpJaXdpWDNKbFppUmpZVzVqWld4aFlteGxJaXdpWTJGdVkyVnNZV0pzWlNJc0lsOXlaV1lrY0hKbGRtVnVkRVJsWm1GMWJIUWlMQ0puWlhSRmRtVnVkRU52Ym5OMGNuVmpkRzl5SWl3aVpHVjBZV2xzSWl3aWFYTkZkbVZ1ZEVKMVltSnNhVzVuU1c1RVpYUmhZMmhsWkZSeVpXVWlMQ0pwYzBGMGRHRmphR1ZrVkc5RWIyTjFiV1Z1ZENJc0ltUnBjM0JoZEdOb1JYWmxiblFpTENKMGNtbG5aMlZ5Um05eVVHRjBhQ0lzSW1selUzVndjRzl5ZEhOUGRHaGxja1YyWlc1MFEyOXVjM1J5ZFdOMGIzSnpJaXdpVFc5MWMyVkZkbVZ1ZENJc0lrdGxlV0p2WVhKa1JYWmxiblFpTENKRGRYTjBiMjFGZG1WdWRDSXNJbTkzYm1WeVJHOWpkVzFsYm5RaUxDSndZWEpoYlhNaUxDSmthWEpsWTNSRmRtVnVkRTFsZEdodlpITWlMQ0pqZFhOMGIyMUZkbVZ1ZENJc0ltTnlaV0YwWlVWMlpXNTBJaXdpYVc1cGRFTjFjM1J2YlVWMlpXNTBJaXdpYVhOQ2RXSmliR2x1WnlJc0ltUnZZeUlzSW5CaGNtVnVkQ0lzSW1VaUxDSmxkbVZ1ZEY5MGNtbG5aMlZ5SWl3aWRISnBaMmRsY2toaGJtUnNaWElpTENKbGRtVnVkRjl5WldGa2VTSXNJbkpsWVdSNUlpd2ljbVZoWkhsVGRHRjBaU0lzSW1KdlpIa2lMQ0p3Y21WMmFXOTFjMHhwWWlJc0ltNXZZMjl1Wm14cFkzUWlMQ0p1YjBOdmJtWnNhV04wSWl3aWMzUmhjblFpTENKbGJtUWlMQ0p6Wld4bFkzUnZjbDlsZUhSeVlTSXNJbU52Ym1OaGRDSXNJbU52Ym5SbGJuUnpJaXdpWlhFaUxDSm1hWEp6ZENJc0ltZGxkQ0lzSW5OcFlteHBibWR6SWl3aWMybGliR2x1WnlJc0ltbHpRWEp5WVhraUxDSnBjMFoxYm1OMGFXOXVJaXdpYjJKcUlpd2lKQ1F4SWl3aWRtVnljMmx2YmlKZExDSnRZWEJ3YVc1bmN5STZJa05CUVVNc1UwRkJWVUVzUlVGQlVVTXNSMEZEUlN4cFFrRkJXa01zVTBGQk1FTXNiMEpCUVZoRExFOUJRWGxDUVN4UFFVRlBSQ3hSUVVGVlJDeEpRVU01UkN4dFFrRkJXRWNzVVVGQmVVSkJMRTlCUVU5RExFbEJRVTFFTEU5QlFVOUlMRWxCUTI1RVJDeEZRVUZUUVN4SFFVRlZUU3hOUVVGaFF5eEZRVUZKVGl4SlFVaDJReXhEUVVsRlR5eExRVUZOTEZkQlFXTXNZVUZWY0VJc1NVRm5TMDFETEVWQlJVRkRMRVZCYkV0R1F5eEZRVUYzUWl4dlFrRkJXRU1zVDBGQmVVSkJMRTlCUVZNc1IwRlRMME5ETEVWQlFWVXNVMEZCYVVKRExFZEJTVGRDTEVsQlNFRXNTVUZCU1VNc1JVRkJVMFFzUlVGQlYwTXNUMEZEY0VKRExFVkJRVk1zU1VGQlNVTXNUVUZCVFVZc1IwRkZaRWNzUlVGQlNTeEZRVUZIUVN4RlFVRkpTQ3hGUVVGUlJ5eEpRVU14UWtZc1JVRkJUMFVzUjBGQlMwb3NSVUZCVjBrc1IwRkhla0lzVDBGQlQwWXNSMEZYVEVjc1JVRkJUeXhUUVVGalRDeEZRVUZaVFN4RlFVRlZReXhIUVVNM1F5eEpRVUZKVGl4RlFVRlRSQ3hGUVVGWFF5eFBRVVY0UWl4UlFVRmxUeXhKUVVGWVVDeFJRVUZuUkU4c1NVRkJlRUpTTEVWQlFWZFRMRk5CUTNKRExFbEJRVXNzU1VGQlNVd3NSVUZCU1N4RlFVRkhRU3hGUVVGSlNDeEZRVUZSUnl4SlFVTXhRa1VzUlVGQlUwa3NTMEZCUzBnc1JVRkJVMUFzUlVGQlYwa3NSMEZCU1VFc1JVRkJSMG9zVVVGSE0wTk5MRVZCUVZOSkxFdEJRVXRJTEVWQlFWTlFMRVZCUVZrc1JVRkJSMEVzUjBGSGVFTXNUMEZCVDBFc1IwRmxURmNzUlVGQlV5eFRRVUZuUWtNc1IwRkRNMElzU1VGQlN5eEpRVUZKUXl4RlFVRlBReXhWUVVGVllpeFBRVUZSWXl4RlFVRlZMRWxCUVVsYUxFMUJRVTFWTEVWQlFVOHNSVUZCU1VFc1JVRkJUeXhGUVVGSkxFZEJRVWxITEVWQlFVOHNSVUZCUjBFc1JVRkJUMGdzUlVGQlRVY3NTVUZEY2tkRUxFVkJRVkZETEVWQlFVOHNSMEZCUzBZc1ZVRkJWVVVzUjBGUmFFTXNUMEZNUVVRc1JVRkJVVVVzVVVGQlVTeFRRVUZWUXl4SFFVTjRRaXhKUVVGTExFbEJRVWxETEV0QlFWRkVMRVZCUTJaT0xFVkJRVTlQTEVkQlFWRkVMRVZCUVVsRExFdEJSMmhDVUN4SFFWVk1VU3hGUVVGUExGTkJRV053UWl4SFFVTjJRaXhQUVVGUFFTeEZRVUZYY1VJc1QwRkJUeXhUUVVGVlF5eEZRVUZOUXl4SFFVTjJReXhQUVVGUGRrSXNSVUZCVjNkQ0xGRkJRVkZHTEV0QlFWVkRMRXRCVDNCRFJTeEhRVUZwUWl4RlFVTnFRa01zUlVGQllTeHhRa0ZEWWtNc1JVRkJZeXcyUWtGRFpFTXNSVUZCYlVJc1owSkJlVU51UW01RExFVkJka0paTEZOQlFXMUNiME1zUlVGQlZXeERMRWRCU3pORExFbEJRVWxMTEVWQlJVb3NVVUZPWjBJc1NVRkJXa3dzU1VGRFJrRXNSVUZCVlcxRExGVkJTMUJFTEVWQlJVVXNRMEZCUVN4SFFVRkpRU3hoUVVGdlFrVXNSVUZETjBJc1QwRkJUMFlzUlVGRGMwSXNhVUpCUVdKQkxFVkJRMmhDTjBJc1JVRkJZVFpDTEVWQlFWTndRaXhWUVVGWmIwSXNTVUZCWVM5Q0xFOUJRVk1zUTBGQlF5dENMRWRCUVZsQkxFVkJRelZFU0N4RlFVRlhUU3hMUVVGTFNDeEhRVU42UWpkQ0xFVkJRV0ZwUXl4RlFVRmxTaXhKUVVVMVFteERMRVZCUVRaQ0xHbENRVUZhUVN4RlFVRjFRbTFETEZOQlFWTkpMR05CUVdOMlF5eEhRVUZYUVN4RlFVRlJUU3hQUVVGVFRpeEZRVUZSTEVkQlFVdEJMRVZCUTNoSFN5eEZRVUZoYTBNc1JVRkJZMHdzUlVGQlZXeERMRk5CVkhKRFN5eEZRVUZoT0VJc1UwRkJVMHNzYVVKQlFXbENMRTFCV1hwRExFOUJRVTlETEVWQlFVdHdReXhKUVdGV2NVTXNSVUZCVHl4VFFVRmpVaXhIUVVOMlFpeEpRVUZKVXl4RlFVRlJMRWRCVVZvc1QwRlFRV3BETEVWQlFVdFlMRXRCUVUwc1UwRkJWVFpETEVkQlEyNUNMRTlCUVU5c1F5eEZRVUZMTmtJc1JVRkJZMHdzUlVGQlZWVXNSMEZCVHl4VFFVRlZReXhKUVVOeVFpeEpRVUV4UWtZc1JVRkJUV1FzVVVGQlVXZENMRWxCUTJoQ1JpeEZRVUZOUnl4TFFVRkxSQ3hQUVVsV0wwTXNSVUZCUlRaRExFbEJZVkJKTEVkQlEwVXZReXhGUVVFMlFpeHZRa0ZCV21kRUxGRkJRVEJDUVN4UlFVRlJReXhWUVVGWkwwTXNSVUZGTDBSRUxFVkJRVmRFTEVWQlFWRXJReXhUUVVGWEwwTXNSVUZCVVd0RUxHbENRVUZ0UW14RUxFVkJRVkZ0UkN4dlFrRkJjMEp1UkN4RlFVRlJiMFFzYlVKQlFYRkNjRVFzUlVGQlVYRkVMR3RDUVVGdlFuSkVMRVZCUVZGelJDeHpRa0ZGY2tvc1UwRkJWVU1zUlVGQlUzSkNMRWRCUTNoQ0xFOUJRVTlxUXl4RlFVRlRZeXhMUVVGTGQwTXNSVUZCVTNKQ0xFdEJXVGxDU3l4RlFVRm5RaXhUUVVGMVFrd3NSVUZCVld4RExFZEJSMjVFTEVkQlJuVkNhVU1zUlVGQmFVSkpMRXRCUVV0SUxFZEJSWFpDTEVOQlEzQkNMRWRCUVc5Q0xFMUJRV2hDUVN4RlFVRlRMRWRCUVZrc1EwRkRka0lzU1VGQlNYRkNMRWRCUVZkMlJDeEZRVUZSZDBRc1pVRkJhVUo0UkN4RlFVRlZiVU1zVlVGQlZYRkNMR1ZCUVdWMFFpeEZRVUZUZFVJc1RVRkJUU3hKUVVNeFJpeFBRVUZQUml4RlFVRlZMRU5CUVVOQkxFZEJRVmNzUjBGSEwwSXNUVUZCYjBJc1RVRkJhRUp5UWl4RlFVRlRMRWRCUTBwc1F5eEZRVUZSTUVRc2RVSkJRWFZDZUVJc1JVRkJVM1ZDTEUxQlFVMHNTVUZIYUVSNlJDeEZRVUZSTWtRc2NVSkJRWEZDZWtJc1IwRkhkRU1zVDBGQlQyeERMRVZCUVZGM1F5eHBRa0ZCYVVKT0xFbEJWemxDU1N4RlFVRnBRaXhUUVVGM1FuTkNMRWRCUXpORExFZEJRVWsxUWl4RlFVRlpTeXhMUVVGTGRVSXNSMEZEYmtJc1RVRkJUeXhEUVVGRGVrSXNVMEZCVXpCQ0xHTkJRV05ETEU5QlFVOURMRXRCUjNoRExFbEJRVWxETEVWQlFWY3NSMEZEV0VNc1JVRkJXVGxDTEZOQlFWTXdRaXhqUVVGakxFOUJRMjVEU3l4RlFVRlhSQ3hGUVVGVlJTeFhRVU42UWtZc1JVRkJWVWNzVlVGQldWSXNSVUZGZEVJc1NVRkJTeXhKUVVGSmJrUXNSVUZCU1N4RlFVRkhORVFzUlVGQlNVZ3NSVUZCVXpWRUxFOUJRVkZITEVWQlFVazBSQ3hGUVVGSE5VUXNTVUZETVVOMVJDeEZRVUZUYkVJc1MwRkJTMjlDTEVWQlFWTjZSQ3hKUVVkNlFpeFBRVUZQZFVRc1IwRlhUSFpDTEVWQlFVOHNVMEZCWTNCRExFZEJUM1pDTEU5QlRrdDVRaXhKUVVOSVRTeEZRVUZWWVN4VlFVRlpia1FzUlVGQlJYZEZMRWRCUTNoQ2JFTXNSVUZCVldFc1ZVRkJWWE5DTEZsQlFXTnVReXhGUVVOc1EwNHNSMEZCYVVJc1IwRkhXaXhKUVVGSlRTeEZRVUZWTDBJc1NVRlhia0lyUWl4RlFVRlpMRk5CUVcxQ0wwSXNSMEZKYWtNc1NVRklRU3hKUVVGSlNTeEZRVUZKTEVWQlEwcElMRVZCUVZORUxFVkJRVmRETEU5QlJXcENSeXhGUVVGSlNDeEhRVU5VVUN4TFFVRkxWU3hIUVVGTFNpeEZRVUZYU1N4TFFVZDJRbFlzUzBGQlMwOHNUMEZCVTBFc1IwRkhXalJDTEVWQlFYZENjME1zVDBGQlQwTXNUMEZCVHl4RFFVTjRRek5GTEVWQlFVZEJMRVZCUTBnMFF5eExRVUZOUVN4RlFVTk9TeXhSUVVGVFFTeEZRVU5VV0N4VlFVRlhRU3hKUVUxVWMwTXNSVUZCWVd4RkxFMUJRVTE1UXl4VlFXTnVRakJDTEVWQlFWRkVMRVZCUVZkRExFMUJiVU51UW5KRUxFVkJRVlVzVTBGQmFVSllMRVZCUVZWRExFZEJRM1pETEU5QlFVOUdMRVZCUVV0WUxFdEJRVTFaTEVWQlFWVkRMRWxCUlRGQ1owVXNSVUZCVTNSRUxFVkJWVlJQTEVWQlFWVTJReXhGUVVGWE4wTXNVVUZoY2tKblJDeEZRVUZOU0N4RlFVRlhSeXhKUVZOcVFrTXNSVUZCVFVvc1JVRkJWMGtzU1VGVmFrSm9ReXhGUVVGUE5FSXNSVUZCVnpWQ0xFdEJZMnhDYVVNc1JVRkJVMHdzUlVGQlYwc3NUMEZqY0VKRExFVkJRV05PTEVWQlFWZE5MRmxCY1VKNlFrTXNSVUZCVVZBc1JVRkJWMDhzVFVGWmJrSkRMRVZCUVU5U0xFVkJRVmRSTEV0QlZXeENReXhGUVVGVlZDeEZRVUZYVXl4UlFVVnlRa01zUlVGQmNVSmFMRTlCUVU5RExFOUJRVThzUTBGRGNrTkZMRTFCUVU5QkxFVkJRMUJxUkN4UFFUTkpWeXhUUVVGblFsRXNSVUZCVlhSQ0xFZEJRM0pETEVsQlFVbEVMRVZCUVN0Q0xHMUNRVUZpZFVJc1JVRkJNRUpCTEVWQlFWY3NVMEZCVlhGQ0xFZEJRMjVGTEU5QlFVOVNMRVZCUVZGUkxFVkJRVk55UWl4SlFVVXhRaXhQUVVGUGNFTXNSVUZCUlRSRkxFVkJRVmRvUkN4UFFVRlBXQ3hMUVVGTGFFSXNTMEZCVFZrc1JVRkJWVU1zUzBGM1NXaEVWU3hSUVVGVFFTeEZRVU5VV2l4TFFVRk5hMFVzUlVGRFRpOURMRkZCUVZOQkxFVkJRMVJuUkN4SlFVRkxRU3hGUVVOTVF5eEpRVUZMUVN4RlFVTk1hRU1zUzBGQlRVRXNSVUZEVG1sRExFOUJRVkZCTEVWQlExSkRMRmxCUVdGQkxFVkJRMkpMTEZGQk9VTlpMRmRCUTFvc1QwRkJUM1pHTEVWQlFVVk5MRVZCUVZGTUxFMUJRVTF6Uml4WlFUaERka0pLTEUxQlFVOUJMRVZCUTFCRExFdEJRVTFCTEVWQlEwNURMRkZCUVZOQkxFbEJUVmdzVTBGQlUwY3NSVUZCVjBNc1IwRTRRbXhDTEVsQlFVbEVMRVZCUVZrc1YwRkRaR3hFTEVWQlFWVnlRaXhMUVVGTGFFSXNTMEZCVFVRc1JVRkJSVEJHTEZkQlFVMHNSVUZCVVhKRkxHRkJTWFpETEU5QlJFRklMRVZCUVU5elJTeEZRVUZWY2tNc1ZVRkJWM05ETEVkQlEzSkNSQ3hGUVU5VUxFbEJTVWxITEVWQlFWY3NVMEZCYTBKRExFZEJReTlDTEU5QlFVOUJMRVZCUVUxRExGRkJRVkVzWlVGQlowSXNVMEZCVlRWRExFVkJRVk0yUXl4SFFVTjBSQ3hQUVVGUFFTeEZRVUZQUXl4cFFrRTRSR1JETEVWQlFYRkNkRUlzVDBGQlQwTXNUMEZCVHl4RFFVTnlRM05DTEVsQk1VTlJMRk5CUVdGRExFVkJRVXRPTEVkQlF6RkNMRWxCUVVsUExFVkJRVmw2UlN4RlFVRk5NRVVzUlVGRmRFSXNSMEZCYlVJc2FVSkJRVkpHTEVWQlFXdENMRU5CUnpOQ0xFZEJSa0ZCTEVWQlFVMVFMRVZCUVZOUExGRkJSVTBzU1VGQlZrNHNSVUZCZFVJc1EwRkRhRU1zU1VGQlNXNURMRVZCUVZWNFJDeExRVUZMWlN4VFFVRlhaaXhMUVVGUFFTeExRVUZMTEVkQlJURkRMRTlCUVVsM1JDeEZRWEJEVFN4VFFVRnRRbTFETEVkQlEycERMRTlCUVZGVExFMUJRVTFETEZkQlFWZFdMRXRCUVZkWExGTkJRVk5ZTEVkQmNVTm9RMWtzUTBGRVVFb3NSVUZCVFRORExFVkJRVkZuUkN4TlFVRk5VQ3hKUVVOSlNTeFhRVUZYUml4SFFVRlBRU3hQUVVjMVF5eEhRVWRHUkN4RlFVRmhMRWxCUTBaRUxFZEJRVTlPTEU5QlNXeENMRWxCUVV0c1JTeExRVVpNZVVVc1JVRkJZVVFzUlVGSFdFVXNSVUZCVFVRc1JVRkJWM3BGTEZWQlExWjVSU3hGUVVGWGVrVXNSMEZEYkVKNVJTeEZRVUZYVWl4RlFVRlRha1VzU1VGQlV6QkZMRVZCWVdwRExFOUJWRUY0Uml4RlFVRkxXQ3hMUVVGTkxGTkJRVlYzUkN4SFFVTnVRaXhKUVVGTEwwSXNTMEZCVVhsRkxFVkJRMUJCTEVWQlFWZDZSU3hKUVVFNFFpeEpRVUZ5UW5sRkxFVkJRVmQ2UlN4SFFVTnFReXRDTEVWQlFWRm5SQ3hOUVVGTkwwVXNSMEZCVVhsRkxFVkJRVmQ2UlN4SFFVVnFReXRDTEVWQlFWRm5SQ3hOUVVGTlF5eGxRVUY1UW1oR0xFVkJiRVJvUTIxRkxGRkJRVkVzYjBKQlFYRkNMRk5CUVZOakxHbENRWE5FTlVNeFJ5eFJRVlZNTWtjc1JVRkJXV3hITEUxQlFVMTVReXhWUVVGVk0wSXNVVUZaTlVKeFJpeEZRVUZUTEZOQlFWTkJMRVZCUVU5d1JDeEhRVU16UWl4SFFVRkplRVFzWjBKQlFXZENOa2NzUzBGRGJFSXNSMEZCZFVJc2FVSkJRVnB5UkN4RlFVTlVlRVFzUzBGQlN6aEhMRzFDUVVGdFFpeFpRVUZoZEVRc1VVRkZja01zUjBGQlNVRXNZVUZCYlVKeFJDeExRVU55UWpkSExFdEJRVXNyUnl4WlFVRlpka1FzVDBGRFdpeERRVU5NTEVsQlFVbFRMRVZCUVZkVUxHRkJRVzFDZDBRc1UwRkJWek5ITEVWQlFWRnRSQ3hIUVVGWFFTeEZRVU5vUlcxRUxFVkJRVlV6Uml4TFFVRkxhVVFzUlVGQlZXcEZMRXRCUVVzclJ5eFpRVUZaUlN4TFFVRkxha2dzV1VGSmJrUnJTQ3hGUVVGTmJFZ3NTMEZCVFRSSExFVkJRVkZ3UkN4SFFVZDBRaXhQUVVGUGVFUXNUVUV3UTB4dFNDeEZRVUZUTEZOQlFWTkJMRVZCUVU4elJDeEhRVU16UWl4SFFVRkplRVFzWjBKQlFXZENOa2NzUzBGRGJFSXNSMEZCZFVJc2FVSkJRVnB5UkN4RlFVTlVlRVFzUzBGQlN6aEhMRzFDUVVGdFFpeGpRVUZsZEVRc1VVRkZka01zUjBGQlNVRXNZVUZCYlVKeFJDeExRVU55UWpkSExFdEJRVXR2U0N4WFFVRlhReXhoUVVGaE4wUXNSVUZCVTNoRUxGVkJRMnBETEVOQlEwd3NTVUZCU1dsRkxFVkJRVmRVTEdGQlFXMUNkMFFzVTBGQlZ6TkhMRVZCUVZGdFJDeEhRVUZYUVN4RlFVTm9SVzFFTEVWQlFWVXpSaXhMUVVGTGFVUXNSVUZCVld0RUxFVkJRVTlHTEV0QlFVdHFTQ3haUVVsNlEydElMRVZCUVUxc1NDeExRVUZOYlVnc1JVRkJVVE5FTEVkQlIzUkNMRTlCUVU5NFJDeE5RV2xFVEhOSUxFVkJRVk1zVTBGQlowSTVSQ3hIUVVNelFpeE5RVUYxUWl4cFFrRkJXa0VzUlVGRFJrRXNSVUZEUlVFc1lVRkJiVUp4UkN4TFFVTnlRbkpFTEVWQlFWRXJSQ3hYUVVGVkxFZEJRMmhDTEZkQlFWa3ZSQ3hGUVVOa0xFZEJRVWR6UWl4SlFVRkpPVVFzUzBGQlMzZERMRVZCUVZNc1UwRkJWV2RGTEVkQlEzQkRMRTlCUVU5QkxFVkJRVWRFTEZkQlFWVXNTMEZKYWtJdlJDeEhRVmRNTUVRc1JVRkJVU3hUUVVGbE5VY3NSVUZCV1dsRkxFVkJRVWxtTEVkQlIzcERMRWxCUmtFc1NVRkJTV01zUlVGQlNXaEZMRVZCUVZkRExFOUJSVm9yUkN4TFFVRkxMRU5CUTFZc1NVRkJTVzFFTEVWQlFWa3NTVUZCVG01RUxFVkJRVlZrTEVWQlFWVTRSQ3hGUVVGUE9VUXNSMEZEY2tObExFVkJRVWQyUkN4TFFVRkxWaXhGUVVGWFowVXNSMEZCU1cxRUxFdEJTWFpDUXl4RlFVRnRRbXBFTEU5QlFVOURMRTlCUVU4c1EwRkRia05yUXl4UFFVRlJRU3hGUVVOU1pTeFJRUzlJV1N4VFFVRlRRU3hGUVVGUmJrVXNSMEZETjBJc1IwRkJTWGhFTEdkQ1FVRm5RalpITEV0QlEyeENMRWRCUVhWQ0xHbENRVUZhY2tRc1JVRkRWSGhFTEV0QlFVczRSeXh0UWtGQmJVSXNZVUZCWTNSRUxGRkJSWFJETEVkQlFVbEJMR0ZCUVcxQ2NVUXNTMEZEY2tJM1J5eExRVUZMY1Vnc1lVRkJZVGRFTEVWQlFWTjRSQ3hMUVVGTE5FZ3NaMEpCUXpOQ0xFTkJRMHdzU1VGQlNUTkVMRVZCUVZkVUxHRkJRVzFDZDBRc1UwRkJWek5ITEVWQlFWRnRSQ3hIUVVGWFFTeEZRVU5vUlcxRUxFVkJRVlV6Uml4TFFVRkxhVVFzUlVGQlUzRkNMRlZCUVZkeFF5eEZRVUZSVml4TFFVRkxha2dzV1VGSmNFUnJTQ3hGUVVGTmJFZ3NTMEZCVFRKSUxFVkJRVk51UlN4SFFVZDJRaXhQUVVGUGVFUXNUVUZuU0ZCdFNDeFBRVUZSUVN4RlFVTlNWU3hOUVhoRlZTeFRRVUZUUVN4RlFVRk5ja1VzUjBGRGVrSXNSMEZCU1hoRUxHZENRVUZuUWpaSExFdEJRMnhDTEVkQlFYVkNMR2xDUVVGYWNrUXNSVUZEVkhoRUxFdEJRVXM0Unl4dFFrRkJiVUlzVjBGQldYUkVMRkZCUlhCRExFZEJRVWxCTEdGQlFXMUNjVVFzUzBGRGNrSTNSeXhMUVVGTGIwZ3NWMEZCVjBNc1lVRkJZVGRFTEVWQlFWTjRSQ3hMUVVGTE9FZ3NhVUpCUTNSRExFTkJRMHdzU1VGQlNUZEVMRVZCUVZkVUxHRkJRVzFDZDBRc1UwRkJWek5ITEVWQlFWRnRSQ3hIUVVGWFFTeEZRVU5vUlcxRUxFVkJRVlV6Uml4TFFVRkxhVVFzUlVGQlUzRkNMRlZCUVZkMVF5eEZRVUZOV2l4TFFVRkxha2dzV1VGSmJFUnJTQ3hGUVVGTmJFZ3NTMEZCVFRaSUxFVkJRVTl5UlN4SFFVZHlRaXhQUVVGUGVFUXNUVUY1UkZBclNDeE5RUzlEVlN4WFFVTldMRTlCUVU5b1NTeEZRVUZGZFVnc1JVRkJUM1JJTEZGQkswTm9Rbk5JTEU5QlFWRkJMRVZCUTFKS0xFMUJRVTlCTEVsQmJVUk1ZeXhGUVVGM1FuWkVMRTlCUVU5RExFOUJRVThzUTBGRGVFTjFSQ3hMUVdwRFV5eFRRVUZqYUVNc1JVRkJTMDRzUjBGRE5VSXNSMEZCYlVJc2FVSkJRVkpOTEZGQlFYRkRMRWxCUVZaT0xFVkJRWFZDTEVOQlF6TkVMRWxCUVVsdVF5eEZRVUZWZUVRc1MwRkJTMlVzVTBGQlYyWXNTMEZCVDBFc1MwRkJTeXhIUVVNeFF5eFBRVUZQZDBRc1JVRkJWVUVzUlVGQlVUQkZMR0ZCUVdGcVF5eFJRVUZQYmtZc1JVRkhMME1zVDBGQlQwZ3NSVUZCUzFnc1MwRkJUU3hUUVVGVmQwUXNSMEZETVVJc1IwRkJiVUlzYVVKQlFWSjVReXhGUVVOVUxFbEJRVXNzU1VGQlNXdERMRXRCUVZOc1F5eEZRVU5vUW5wRExFVkJRVkUwUlN4aFFVRmhSQ3hGUVVGUGJFTXNSVUZCU1d0RExGTkJSMnhETTBVc1JVRkJVVFJGTEdGQlFXRnVReXhGUVVGTFRpeE5RWE5DT1VJd1F5eFhRVkpsTEZOQlFXOUNjRU1zUjBGRGJrTXNUMEZCVDNSR0xFVkJRVXRZTEV0QlFVMHNVMEZCVlhkRUxFZEJRekZDTEU5QlFVOUJMRVZCUVZFNFJTeG5Ra0ZCWjBKeVF5eFJRVFJHTDBKelF5eEZRVUZWTEZOQlFXVkRMRVZCUVZGRExFZEJRMjVETEU5QlFVODVTQ3hGUVVGTFdDeExRVUZOTEZOQlFWVjNSQ3hIUVVNeFFpeFBRVUZQUVN4RlFVRlJhMFlzVlVGQlZVWXNSMEZCVVVNc1RVRkpha05GTEVWQlFYbENiRVVzVDBGQlQwTXNUMEZCVHl4RFFVTjZRMnRGTEZOQk5VVmhMRk5CUVd0Q2FrUXNSMEZMTDBJc1QwRktTVUVzUjBGQlUwRXNSVUZCVFhCR0xGRkJRMnBDU1N4RlFVRkxaMFlzUlVGQlRXdEVMRTFCUVUwc1MwRkJUVTRzUlVGQlVYUkNMRXRCUVV0cVNDeExRVUZOTEZGQlIzSkRRU3hOUVhkRlVEaEpMRmxCTTBSblFpeFRRVUZ4UW01RUxFZEJTM0pETEU5QlNrbEJMRWRCUVZOQkxFVkJRVTF3Uml4UlFVTnFRa2tzUlVGQlMyZEdMRVZCUVUxclJDeE5RVUZOTEV0QlFVMU9MRVZCUVZGMFFpeExRVUZMYWtnc1MwRkJUU3hYUVVkeVEwRXNUVUYxUkZBclNTeFpRWGhEWjBJc1UwRkJjVUp3UkN4RlFVRlBjVVFzUjBGRE5VTXNSMEZCU1hKRUxFZEJRVk5CTEVWQlFVMXdSaXhQUVVGUkxFTkJRM3BDTEVsQlFVa3dTU3hGUVVFd1FpeHJRa0ZCVmtRc1JVRkJjMEpCTEVWQlFWRXNUVUZCVVN4VFFVRlhMRk5CUTNKRmNra3NSVUZCUzJkR0xFVkJRVTFyUkN4TlFVRk5MRXRCUVUxT0xFVkJRVkYwUWl4TFFVRkxha2dzUzBGQlRXbEtMRWxCUnpWRExFOUJRVTlxU2l4TlFXMURVR3RLTEZOQmRrSmhMRk5CUVd0Q2RrUXNSMEZETDBJc1QwRkJVVE5HTEV0QlFVdGxMRk5CUVZjc1EwRkJRMllzVFVGQlVVRXNUVUZCVFcxR0xFdEJRVXNzVTBGQlZUTkNMRWRCUTNCRUxFOUJRVTlCTEVWQlFWRnJSaXhWUVVGVlV5eFRRVUZUZUVRc1VVRnhRMnhEZDBRc1JVRkJWeXhUUVVGclFtcEdMRVZCUVZkV0xFZEJRekZETEZOQlFVdFZMRWxCUVdOV0xFZEJRVmRWTEVsQlFXTldMRXRCUldwRFZTeEZRVUZWYVVZc1UwRkRXbXBHTEVWQlFWVnBSaXhUUVVGVE0wWXNTMEZEYWtKVkxFVkJRVlZyUml3eVFrRkRWbXhHTEVWQlFWVnJSaXgzUWtGQmQwSTFSaXhIUVVGWGNVUXNTMEZCUzNkRExHdERRVTB6UkVNc1JVRkJORUkzUlN4UFFVRlBReXhQUVVGUExFTkJRelZEZVVVc1UwRkJWVUVzU1VGTlVra3NSVUZCZDBNc2IwSkJRV0p1U0N4VlFVRTBRaXhaUVVGaFFTeFRRVUZUYjBnc1owSkJRemRGUXl4RlFVRmpSaXhGUVVGdlFpeFZRVUZaTEhGQ1FVVTVRMGNzUlVGQllTeFRRVUZyUWtNc1IwRkRha01zVDBGQlQwRXNSVUZCU1M5RUxGRkJRVkVzVlVGQlZ5eFRRVUZWWjBVc1JVRkJUME1zUjBGRE4wTXNUMEZCVDBFc1JVRkJUMEVzUlVGQlN5OUVMR05CUVdkQ0xFMUJjVVJ1UTJkRkxFVkJRWGRDY2tZc1QwRkJUME1zVDBGQlR5eERRVU40UTNGR0xFdEJkRU5UTEZOQlFXTTVSQ3hGUVVGTFRpeEhRVU0xUWl4SFFVRnRRaXhwUWtGQlVrMHNVVUZCY1VNc1NVRkJWazRzUlVGQmRVSXNRMEZETTBRc1NVRkJTVzVETEVWQlFWVjRSQ3hMUVVGTFpTeFRRVUZYWml4TFFVRlBRU3hMUVVGTExFZEJRekZETEU5QlFVOTNSQ3hIUVVGWGFVY3NTMEZCWldwSExFVkJRVlZCTEVWQlFWRnBSeXhIUVVGaFF5eEZRVUZYZWtRc1UwRkJVVzVHTEVWQlIzSkdMRTlCUVU5SUxFVkJRVXRZTEV0QlFVMHNVMEZCVlhkRUxFZEJRM0pDSzBZc1NVRkRTQzlHTEVWQlFWRnBSeXhIUVVGbGFrY3NSVUZCVVdsSExFbEJRV2RDTEVsQlIycEVha2NzUlVGQlVXbEhMRWRCUVdGRExFVkJRVmQ2UkN4SlFVRlJUaXhMUVRSQ01VTnNSU3hMUVdKVExGTkJRV04zUlN4RlFVRkxUaXhIUVVNMVFpeEhRVUZ0UWl4cFFrRkJVazBzVVVGQmNVTXNTVUZCVms0c1JVRkJkVUlzUTBGRE0wUXNTVUZCU1c1RExFVkJRVlY0UkN4TFFVRkxaU3hUUVVGWFppeExRVUZQUVN4TFFVRkxMRWRCUXpGRExFOUJRVTkzUkN4SFFVRlhRU3hGUVVGVlFTeEZRVUZSZVVNc1VVRkJUMjVHTEVWQlJ6ZERMRTlCUVU5SUxFVkJRVXRZTEV0QlFVMHNVMEZCVlhkRUxFZEJRekZDTEU5QlFVOUJMRVZCUVZGNVF5eEhRVUZQVGl4UFFYZEhkRUp4UlN4RlFVRjVRblpHTEU5QlFVOURMRTlCUVU4c1EwRkRla04xUml4VFFXNUdZU3hUUVVGclFucEhMRWRCUXk5Q0xFbEJRVWwyUkN4RlFVRTJRaXhwUWtGQlduVkVMRVZCUVhWQ2VrUXNSVUZCUlhsRUxFZEJRVmRCTEVWQlJYcEVMRTlCUkVGdlJDeEZRVUZQTlVZc1MwRkJTMllzUlVGQlUwUXNUVUZEWkVFc1RVRnBSbEJyU3l4TlFYUkZWU3hYUVVOV0xFOUJRVTkyU2l4RlFVRkxXQ3hMUVVGTkxGTkJRVlYzUkN4SFFVTXhRaXhQUVVGUFFTeEZRVUZSWVN4VlFVRlpMRTFCY1VVM1FqaEdMRTlCTVVSWExGZEJRMWdzVDBGQlQzaEtMRVZCUVV0WUxFdEJRVTBzVTBGQlZYZEVMRWRCUTNSQ1FTeEZRVUZSTkVRc1dVRkRWalZFTEVWQlFWRTBSQ3hYUVVGWFowUXNXVUZCV1RWSExFMUJkMFJ1UXpaSExGbEJPVU5uUWl4WFFVTm9RaXhQUVVGUGJFUXNSVUZCVHpGQ0xFMUJRVTE2Uml4TFFVRk5iMElzVjBGQlZ5dEpMRlZCT0VOeVEwY3NTMEZzUTFNc1UwRkJZek5GTEVkQlEzWkNMRmxCUVdNM1JTeEpRVUZXTmtVc1JVRkRTek5HTEV0QlFVc3NSMEZCUjNWTExGbEJSMVkxU2l4RlFVRkxXQ3hMUVVGTkxGTkJRVlYzUkN4SFFVTXhRaXhQUVVGUFFTeEZRVUZSSzBjc1dVRkJZeXhIUVVGTE5VVXNTMEUyUW5CRFVTeEpRV2hDVVN4VFFVRmhVaXhIUVVOeVFpeFpRVUZqTjBVc1NVRkJWalpGTEVWQlEwc3pSaXhMUVVGTFR5eFBRVUZUTEVWQlFVbFFMRXRCUVVzc1IwRkJSekpHTEZkQlFWRTNSU3hGUVVkd1EwZ3NSVUZCUzFnc1MwRkJUU3hUUVVGVmQwUXNSMEZETVVJc1QwRkJUMEVzUlVGQlVXMURMRTFCUVZGQkxFOUJjME4yUWpaRkxFVkJRWGRDTDBZc1QwRkJUME1zVDBGQlR5eERRVU40UTJJc1MwRmFVeXhUUVVGak5FY3NSMEZEZGtJc1VVRkJhVUl6U2l4SlFVRmlNa29zUlVGQmQwSXNRMEZETVVJc1NVRkJTV3BJTEVWQlFWVjRSQ3hMUVVGTFpTeFRRVUZYWml4TFFVRlBRU3hMUVVGTExFZEJRekZETEU5QlFVOTNSQ3hGUVVGVlFTeEZRVUZSWVN4bFFVRlpka1FzUlVGSGRrTXNUMEZCVDBnc1JVRkJTMWdzUzBGQlRTeFRRVUZWZDBRc1IwRkRNVUlzVDBGQlQwRXNSVUZCVVdFc1ZVRkJXVzlITEU5QmMwSXpRa01zUlVGQlZTeFhRVU5hTEVsQlFVbEJMRVZCUVZVc1UwRkJhVUoyU1N4RlFVRlZiRU1zUjBGRGRrTXNTVUZCU1RKRExFVkJRVkVzUjBGWFdpeFBRVlpCYWtNc1JVRkJTMWdzUzBGQlRTeFRRVUZWTmtNc1IwRkRia0lzUzBGQlQwRXNSMEZCVVVFc1NVRkJVelZETEVkQlFWTXNRMEZETDBJc1IwRkJTU3RETEVWQlFWRklMRVZCUVUxV0xFZEJRVmNzUTBGRE0wSlRMRVZCUVUxSExFdEJRVXRHTEVkQlExZ3NUVUZIUmtFc1JVRkJUMEVzUlVGQlN6aElMR2xDUVVkVU5Vc3NSVUZCUlRKQ0xFVkJRVXRyUWl4TFFVZG9RaXhOUVVFd1FpeHZRa0ZCV2tzc1UwRkJORUpCTEZGQlFWRkRMRlZCUVZWM1NDeFJRVUZ2UWl4VFFVRlZka2tzUlVGQlZXeERMRWRCUTJ4SExFZEJRVXRCTEVWQlYwZ3NUMEZCVDNsTExFVkJRVkV4U2l4TFFVRkxhRUlzUzBGQlRXMURMRVZCUVZWc1F5eEhRVlp3UXl4SlFVRkpNa01zUlVGQlVTeEhRVkZhTEU5QlVFRnFReXhGUVVGTFdDeExRVUZOTEZOQlFWVTJReXhIUVVOdVFpeEpRVUZKSzBnc1JVRkJTUzlJTEVWQlFVczJTQ3hSUVVGUmRra3NSMEZGYWtKNVNTeEhRVU5HYUVrc1JVRkJUVWNzUzBGQlN6WklMRXRCUjFJM1N5eEZRVUZGTWtJc1JVRkJTMnRDTEV0QlZtOUVPRWdzUlVGb1FqRkVMRWRCYVVOV1J5eEhRVUZuUTNCSExFOUJRVTlETEU5QlFVOHNRMEZEYUVSblJ5eFJRVUZUUVN4SlFYRkNVRWtzUjBGQlN5eFRRVUZaUXl4RlFVRlpOVWtzUlVGQlZUWkpMRVZCUVZORExFVkJRVmxETEVkQlF6bEVMRWxCVDBsRExFVkJRVTlETEVWQlFWZERMRVZCVUd4Q1F5eEZRVUZSZEV3c1MwRnhRMW9zVFVGdVEzZENMRzFDUVVGaWJVTXNTVUZEVkRaSkxFVkJRVlUzU1N4RlFVTldRU3hGUVVGWExFMUJTV0kwU1N4RlFVRlhiRU1zVFVGQlRTeExRVUZMZEVnc1VVRkJVU3hUUVVGVlowc3NSMEZEZEVOS0xFVkJRVkZKTEVWQlFWVXhReXhOUVVGTkxFdEJRM2hDTUVNc1JVRkJXVW9zUlVGQlRTeEpRVUZOTEV0QlEzaENReXhGUVVGWlJDeEZRVUZOTEVsQlFVMHNTMEZEZUVKRkxFVkJRV2RDUnl4SFFVRmhVaXhIUVVNM1FuSkxMRVZCUVVzeVN5eEZRVUZQTEZOQlFWVTVTQ3hIUVV0d1FpeEhRVXBKY2tJc1NVRkRSbXRLTEVWQlFXZENTU3hIUVVGblFuaEZMRXRCUVV0NlJDeEZRVUZUY2tJc1JVRkJWV3RLTEVsQlIzUkVTQ3hGUVVGTkxFTkJRMUlzU1VGQlNWRXNSVUZCVjB3c1JVRkZaa0VzUlVGQlowSXNVMEZCZFVKTkxFZEJRM0pEUXl4SFFVRkpOVXNzUzBGQlMzZERMRVZCUVZOMVNDeEZRVUZaTlVrc1JVRkJWVFpKTEVWQlFWTkRMRWRCUTJwRVV5eEZRVUZUTVVzc1MwRkJTM2RETEVWQlFWTnRTU3hKUVVrelFtNUpMRVZCUVZGeFNTeHBRa0ZCYVVKT0xFVkJRVmRHTEVWQlFXVktMRWxCUVdNc1IwRkRha1ZoTEVkQlFWbDBTU3hIUVVGVFZDeExRVUZMTEVOQlEzaENkMGtzVlVGQlYwRXNSVUZEV0ZBc1VVRkJVMEVzUlVGRFZFc3NZMEZCWlVFc1JVRkRabXhLTEZOQlFWVkJMRVZCUTFacFNpeFZRVUZYUVN4UFFVZGtjRXdzVFVGRFNVRXNUVUZwUWt3MFRDeEhRVUZOTEZOQlFXRmlMRVZCUVZrMVNTeEZRVUZWTmtrc1JVRkJVME1zUjBGRGNFUXNTVUZYU1VVc1JVRkJUME1zUlVGQlYxY3NSVUZZYkVKRExFVkJRVk5vVFN4TFFXZERZaXhaUVRsQ2JVSXNTVUZCWml0TExFbEJRMFpCTEVWQlFXRXNTVUZIVXl4dFFrRkJZalZKTEVsQlExUTJTU3hGUVVGVk4wa3NSVUZEVmtFc1JVRkJWeXhOUVVsaU5Fa3NSVUZCVjJ4RExFMUJRVTBzUzBGQlMzUklMRkZCUVZFc1UwRkJWV2RMTEVkQlNYUkRMRTlCU0VGS0xFVkJRVkZKTEVWQlFWVXhReXhOUVVGTkxFdEJRM2hDTUVNc1JVRkJXVW9zUlVGQlRTeEpRVUZOTEV0QlEzaENReXhGUVVGWlJDeEZRVUZOTEVsQlFVMHNTMEZEYWtKNFN5eEZRVUZMY1V3c1JVRkJVU3hUUVVGVmVFa3NSMEZETlVKMVNTeEZRVUZYUkN4SFFVRlpkRWtzUjBGRGRrSTNReXhGUVVGTGIwd3NSVUZCVTNCTExFOUJRVThzVTBGQlZVTXNSMEZETjBJc1VVRkJVekpLTEVkQlFXRXpTaXhGUVVGTE1rb3NXVUZCWTBFc1IwRkJaMEpJTEVkQlFXRjRTaXhGUVVGTGQwb3NXVUZCWTBFc1IwRkJaMEpLTEVkQlFWZHdTaXhGUVVGTGIwb3NWVUZCV1VFc1IwRkJZemRKTEVkQlFWbFFMRVZCUVV0UExGZEJRV0ZCTEV0QlF5OUxMRk5CUVZWUUxFZEJRMW8wUWl4RlFVRlJlVWtzYjBKQlFXOUNja3NzUlVGQlN6SktMRlZCUVZjelNpeEZRVUZMZVVvc1kwRkJaVW9zU1VGQll5eEhRVU01UldNc1JVRkJVMGNzVDBGQlQwZ3NSVUZCVTJwTExGRkJRVkZHTEVkQlFVOHNTMEZIY2tNeVNpeEhRVUZqU0N4SFFVRmpha29zUjBGQllUWkpMRVZCUldZc1NVRkJjRUpsTEVWQlFWTjRUQ3hSUVVOc1FqUk1MRWRCUVdNelNTeEhRVVprTWtrc1IwRkJZek5KTEUxQlMycENlRVFzVFVGRFNVRXNUVUV3UWt4dlRTeEhRVUZsTEhOQ1FVTm1ReXhIUVVGTExFVkJRMHhPTEVkQlFWY3NSMEZEV0U4c1IwRkJZU3hIUVVOaVVpeEhRVUZqTEZOQlFYRkNkRWtzUjBGRGFFTkJMRVZCUVZFMFNTeE5RVU5ZTlVrc1JVRkJVVFJKTEVsQlFYTkRMRWxCUVhSQ1JTeEhRVUZYTDB3c1UwRkJhVUk0VEN4SFFVRkxReXhIUVVGWGRrZ3NUMEZIZEVVc1NVRkJTV3RDTEVWQlFVMTZReXhGUVVGUk5Fa3NTVUZEYkVJc1QwRkJUMHdzUjBGQlV6bEdMRXRCUVZNNFJpeEhRVUZUT1VZc1IwRkJUeXhMUVZOMlEydEhMRWRCUVdkQ0xGTkJRWFZDTTBrc1IwRkRla01zU1VGQlNYbERMRVZCUVUxNlF5eEZRVUZSTkVrc1NVRkZaRXdzUjBGQlV6bEdMRXRCUTFnNFJpeEhRVUZUT1VZc1IwRkJUeXhMUVVOb1FucERMRVZCUVZFMFNTeEpRVUZuUWl4TFFVTjRRa1VzUjBGQlYzWktMRXRCUVV0clJDeExRVmxvUW5WR0xFZEJRV1VzVTBGQmMwSlNMRWRCUTNaRExFOUJRVThzVTBGQlZWY3NSMEZEWml4UFFVRlBXQ3hGUVVGUmFFc3NTMEZCUzJoQ0xFdEJRVTExVFN4SFFVRmhXaXhOUVVkMlEyRXNSMEZCWlN4RFFVTnFRa01zWlVGQlowSXNjVUpCUTJoQ1F5eDVRa0ZCTUVJc1owTkJRekZDUXl4blFrRkJhVUlzZDBKQlIyWkRMRWRCUVdFc1YwRkRaaXhQUVVGUExFZEJSMHhETEVkQlFXTXNWMEZEYUVJc1QwRkJUeXhIUVZkTVRpeEhRVUZsTEZOQlFYTkNXaXhIUVVOMlF5eEpRVUZMUVN4RlFVRk5iVUlzYjBKQlFYTkNia0lzUlVGQlRXVXNNRUpCUVRSQ1ppeEZRVUZOWjBJc1owSkJRV2xDTEVOQlEzaEdMRWxCUVVzc1NVRkJTVWtzUzBGQlkxQXNTVUZEY2tJc1UwRkJWMDhzUlVGQldVTXNSVUZCWjBKRExFZEJRM0pEZEVJc1JVRkJUVzlDTEVkQlFXTXNWMEZGYkVJc1QwRkVRUzlOTEV0QlFVdG5UaXhIUVVGclFrb3NSMEZEYUVKTExFZEJRV3RDUVN4RlFVRmxlRWdzVFVGQlRYcEdMRXRCUVUxdlFpeFpRVWQwUkhWTExFVkJRVTF4UWl4SFFVRnJRa2dzUjBGT01VSXNRMEZQUjBVc1JVRkJXVkFzUjBGQllVOHNSMEZCWVhCQ0xFVkJRVTF2UWl4SlFVYzNRM0JDTEVWQlFVMTFRaXhwUWtGRFVuWkNMRVZCUVUxakxHbENRVWxXTEU5QlFVOWtMRWRCWTB4R0xFZEJRV3RDTEZOQlFYbENkRW9zUlVGQlZUWkpMRVZCUVZOWExFZEJRMmhGTEVsQlFVbDNRaXhGUVVGamVFSXNSVUZCVFhsQ0xGTkJRVmQ2UWl4RlFVRk5la3NzVDBGRGNrTnRUU3hGUVVGblFqTkRMRVZCUVZFeFNpeExRVUZMTEVOQlFVTnRUU3hIUVVGamFFd3NSVUZCVlc1RExFMUJRVTBzUjBGRk5VUnhUaXhIUVVGcFFrRXNTVUZCYTBKeVRpeFBRVU5xUTNGT0xFbEJRV3RDUml4SFFVRnBRbmhDTEVWQlFVMHlRaXh6UWtGQmQwSXpRaXhGUVVGTk1rSXNkMEpCUTNwRmRFTXNSVUZCVVdoTExFdEJRVXR4VFN4RlFVRmxNVUlzUzBGSk9VSXhSU3hIUVVGUE5rUXNSMEZEVUhsRExFZEJRVk16UWl4SFFVVlVSQ3hIUVVGeFFteElMRTlCUVU5RExFOUJRVThzUTBGRGNrTnZSeXhIUVVGSlFTeEhRVU5LWXl4SlFVRkxRU3hIUVVOTU5FSXNTVUV6U0ZFc1UwRkJZWHBETEVWQlFWazFTU3hGUVVGVk5ra3NSVUZCVTBNc1IwRkRjRVFzVDBGQlQwZ3NSMEZCUnpsS0xFdEJRVXRvUWl4TFFVRk5LMHNzUlVGQldUVkpMRVZCUVZVMlNTeEZRVUZUUXl4RlFVRlpMRWxCTWtob1JXRXNXVUZCWVVFc1IwRkRZa3NzWTBGQlpVRXNSMEZEWmxnc1lVRkJZMEVzUjBGRFpFTXNaMEpCUVdsQ1FTeEhRVU5xUW5oRkxFdEJRVTFCTEVkQlEwNXpSeXhQUVVGUlFTeExRVTFPUlN4SFFVRmxMSFZGUVVObVF5eEhRVUZoTEhWQ1FXZENZa01zUjBGQlZTeFRRVUZwUWtNc1JVRkJUVGRFTEVWQlFVMDRSQ3hIUVVONlF5eEpRVUZKUXl4UFFVRnBRaXhKUVVGV1JDeEZRVUZ0UWl4SFFVRkxRU3hGUVVNdlFrVXNSVUZCWlVRc1JVRkJTMFVzVVVGRGNFSkJMRTlCUVRKQ0xFbEJRV3BDUkN4SFFVRnBRMEVzUlVGRE0wTkZMRVZCUVd0Q1NDeEZRVUZMU1N4WFFVTjJRa0VzVDBGQmFVTXNTVUZCY0VKRUxFZEJRVzlEUVN4RlFVTnFSRVVzUlVGQmMwSk1MRVZCUVV0eVFpeGxRVU16UWtFc1QwRkJlVU1zU1VGQmVFSXdRaXhIUVVGNVEwRXNSVUZITVVSNFF5eEZRVUZSTEVsQlJGZDVReXhIUVVGdlFsSXNSMEZETDBJc1EwRkJjVUpCTEVWQlFVMHNRMEZEY2tOSkxGRkJRVk5CTEVWQlExUkZMRmRCUVZsQkxFVkJRMXA2UWl4bFFVRm5Ra0VzUlVGRGFFSTBRaXhQUVVGUmRFVXNTVUZIVml4UFFVUkJORUlzUlVGQlRYVkNMR2RDUVVGclFsUXNSVUZEYWtJNVRDeEZRVUZMV0N4TFFVRk5MRk5CUVZWM1JDeEpRVU55UW5kTExFZEJRVmROTEVsQlFXbERReXhIUVVGeFFpOUxMRWRCUTNCRlowd3NSMEZCWTJoTUxFVkJRVk50U1N4SFFVVjJRamhETEVkQlFXVnFUQ3hGUVVGVGIwc3NSVUZCVFN4RFFVTTFRa2tzVVVGQlUwRXNSVUZEVkVVc1YwRkJXVUVzUlVGRFducENMR1ZCUVdkQ1FTeEZRVU5vUWpSQ0xFOUJRVkYwUlN4UFFVMWFjVVVzUjBGQmMwSXNVMEZCTmtKU0xFZEJRM0pFTEU5QlFVOWpMRWRCUVcxRGFrSXNSMEZCWVc1TUxFdEJRVXR6VEN4SFFVRlJaU3hYUVVGaGFrSXNSMEZCVjNCTUxFdEJRVXR6VEN4SFFVRlJaMElzWTBGQlowSkRMRmxCUVdOQkxHRkJaME55U1U0c1IwRkJkVUlzVTBGQk9FSXZTeXhIUVVOMlJDeFBRVUZKUVN4SlFVRlpjRVFzVVVGQlZXOUVMRWxCUVZsd1FpeFZRVWt2UWl0SExFVkJRVk16Uml4RlFVRlJjMHdzWTBGQlkzUkdMR2RDUVVGcFFtaEhMRWxCYVVKeVJHbE1MRWRCUVdsQ0xGTkJRWGRDYWt3c1JVRkJVMjlMTEVWQlFVMXRRaXhSUVVNelF5eEpRVUZZUVN4SlFVTkdRU3hGUVVGVExFbEJSMWhCTEVWQlFVOW1MRk5CUVZVc1JVRkRha0lzU1VGQlNYSkRMRVZCUVZFc1NVRkJTV3RFTEZsQlFWbHFRaXhGUVVGTmJVSXNSMEZEYkVOd1JDeEZRVUZOZVVJc1VVRkJWVFZLTEVWQlJXaENMRWRCUTBWblRDeEhRVUZqYUV3c1JVRkJVMjFKTEZOQlEyaENia2tzUlVGQlZVRXNSVUZCVVRSRUxHRkJZWHBDTkVnc1IwRkJjVUlzUTBGQlF5eFBRVUZSTEZGQlFWTXNVMEZCVlN4VlFVVnFSRklzUjBGQlowSXNVMEZCZFVKb1RDeEZRVUZUYlVrc1NVRkRSaXhKUVVFMVEzRkVMRWRCUVcxQ2JFNHNVVUZCVVRaS0xFVkJRVTFwUXl4UFFVRXJReXh0UWtGQmVFSndTeXhGUVVGUmJVa3NSVUZCVFdsRExFOUJRWGxDYWtNc1JVRkJUWFZDTEdsQ1FVRnZRblpDTEVWQlFVMTFReXhYUVVkcVNURkxMRVZCUVZGblRDeGpRVUZqTjBNc1IwRkdkRUp1U1N4RlFVRlJiVWtzUlVGQlRXbERMRlZCVjJ4Q0xGZEJRMFVzU1VGQlNXbENMRVZCUVdNc1UwRkJjVUpzUkN4RlFVRlBiMFFzVVVGRE4wSXNTVUZCV0VFc1NVRkRSa0VzUlVGQlV5eERRVU5RWml4VFFVRlRMRVZCUTFSRkxGbEJRVmtzUlVGRFdrY3NXVUZCVVhaT0xFbEJTVm9zU1VGQlNXMVBMRVZCUVdNM1RTeFRRVUZUT0Uwc1dVRkJXU3hsUVVWMlF5eFBRVVJCUkN4RlFVRlpSU3huUWtGQlowSjRSQ3hGUVVGUGIwUXNSVUZCVDJZc1VVRkJVMlVzUlVGQlQySXNWMEZCV1dFc1JVRkJUMVlzVVVGRGRFVlpMRWRCUjFSS0xFVkJRVmt6VEN4VlFVRlpMME1zUlVGQlNUQlBMR0ZCUVdVeFR5eEZRVUZKTUU4c1dVRkJXVE5NTEZWQlF6TkVMME1zUlVGQlNUQlBMRmxCUVdOQkxFVkJhRUp3UWl4SFFYZENRU3hKUVVGSlVDeEhRVUZuUXl4WFFVTnNReXhKUVVGSll5eEhRVUZoTEVWQlEySkRMRVZCUVUxc1VDeEZRVUZKYVVNc1UwRkZaQ3hIUVVGSmFVNHNSVUZCU3l4RFFVTlFMRWxCUVVsRExFVkJRVk5FTEVWQlFVbDJUQ3hqUVVGakxFOUJRek5DYUVJc1JVRkJVWGROTEVWQlFVOHZTQ3haUVVOdVFpdElMRVZCUVU5MlNTeFpRVUZaYWtVc1IwRkRia0ozVFN4RlFVRlBla1FzYVVKQlFXbENMRWxCUVVzc1YwRkRNMEoxUkN4SFFVRmhMRWxCUldaMFRTeEZRVUZOTUV3c1kwRkJZeXhKUVVGSlN5eFpRVUZaTEVsQlFVc3NRMEZEZGtOaUxGTkJRVk1zUzBGSllpeFBRVUZQYjBJc1JVRm9RakpDTEVkQmJVSm9RMVlzUjBGQmJVTXNWMEZEY2tNc1NVRkRSU3hKUVVGSlF5eFhRVUZYTEZOQlEyWXNUVUZCVDFrc1IwRkRVQ3hQUVVGUExFVkJSMVFzVDBGQlR5eEZRVkE0UWl4SFFWVnVRME1zUjBGQk5rSXZTeXhQUVVGUFF5eFBRVUZQTEVOQlF6ZERhVW9zVVVGQlUwRXNSMEZEVkRoQ0xHVkJjRWx0UWl4VFFVRjNRamRDTEVWQlFVMDNSQ3hIUVVNM1F5OUtMRXRCUVVzc1NVRkRVREpPTEVkQlFWRXpUU3hMUVVGTGFFSXNTMEZCU3l4SFFVRkpORTRzUlVGQlRUZEVMRVZCUVUwc1EwRkRhRU5wUlN4VFFVRlRMRVZCUTFSMlFpeG5Ra0ZCWjBJc1QwRXdTbXhDYVVRc1IwRkJNa0pxVEN4UFFVRlBReXhQUVVGUExFTkJRek5EYVV3c1RVRllWU3hUUVVGbE0wVXNSMEZQZWtJc1RVRk9TU3c0UWtGQk9FSXhTU3hMUVVGTFJpeFRRVUZUZDA0c1lVRkJaWGhPTEZOQlFWTjVUaXhMUVVOMFJUZEZMRWxCUlVFMVNTeFRRVUZUZVVvc2FVSkJRV2xDTEcxQ1FVRnZRbUlzUjBGQlV5eEhRVWRzUkdoTUxGRkJaVXc0VUN4SFFVRmpNMUFzUlVGQlNVb3NSVUZsYkVKblVTeEhRVUV3UW5STUxFOUJRVTlETEU5QlFVOHNRMEZETVVOelRDeFhRVTVsTEZkQlJXWXNUMEZFUVRkUUxFVkJRVWxLTEVWQlFVa3JVQ3hIUVVORU9WQXNVVUZ0UzB3d1JDeEhRVUZSTEZOQlFXVjFUU3hGUVVGUFF5eEhRVVZvUXl4UFFVRlBibEVzUlVGQlJTeEhRVUZITWtRc1RVRkJUU3RDTEUxQlFVMTZSaXhMUVVGTmIwSXNZVUZITlVJclR5eEhRVUU0UWpGTUxFOUJRVTlETEU5QlFVOHNRMEZET1VOUUxGTkJjRXBoTEZOQlFXdENhRU1zUjBGREwwSXNTVUZCU1ZNc1JVRkJVU3hIUVZWYUxFOUJWRUZxUXl4RlFVRkxXQ3hMUVVGTkxGTkJRVlYzUkN4SFFVTm1RU3hGUVVGUlZ5eFZRVU5XZUVRc1JVRkJTelpETEVWQlFWRlhMRk5CUVZVc1UwRkJWWEpDTEV0QlF6RkNXQ3hIUVVGWlFTeEhRVUZaWVN4RlFVRlJSaXhGUVVGUFdDeExRVU14UTFNc1JVRkJUVWNzUzBGQlMwUXNUMEZMV2k5RExFVkJRVVUyUXl4SlFUQkpWSGRPTEU5Qk4waFhMRk5CUVdkQ2FrOHNSMEZETTBJc1NVRkJTVzFLTEVWQlFWRjBUQ3hMUVU5YUxFOUJURUZYTEVWQlFVdGFMRVZCUVVWdlF5eEhRVUZYTEZOQlFWVnhRaXhKUVVObExFbEJRWEpETEVkQlFVY3hRaXhSUVVGUlpDeExRVUZMYzBzc1JVRkJUemxJTEVsQlEzcENMRWRCUVVkVUxFdEJRVXN2UWl4TFFVRkxjMHNzUlVGQlR6bElMRXRCUjJwQ2VFUXNUVUZ6U0ZCeFVTeFRRVFZIWVN4WFFVTmlMRWxCUVVsNlRpeEZRVUZSTEVkQlNWb3NUMEZJUVdwRExFVkJRVXRZTEV0QlFVMHNVMEZCVlhkRUxFZEJRMjVDTEU5QlFVOWFMRVZCUVUxSExFdEJRVXN3UXl4TlFVRk5OME1zUlVGQlQzWkRMRVZCUVZGdFJDeEZRVUZSV1N4bFFVVXhRM0pGTEVWQlFVVTJReXhKUVhkSFZEQk9MRWRCTTBaUExGTkJRVmw2VHl4SFFVTnVRaXhQUVVGUE5rSXNSMEZCVFRGRExFdEJRVXRvUWl4TFFVRk5Oa0lzUlVGQlQwRXNSVUZCVVN4SlFUSkdka013VHl4TlFTOUZWU3hYUVVOV0xFOUJRVTgzVFN4SFFVRk5NVU1zUzBGQlMyaENMRXRCUVUwc1JVRkJSeXhKUVN0Rk0wSjNVU3hKUVc1RlVTeFRRVUZoTTA4c1IwRkRja0lzVDBGQlR6ZENMRXRCUVVzMlFpeEpRVzFGV25sT0xFOUJkRVJYTEZOQlFXZENiazRzUjBGRE0wSXNTVUZCU1ZNc1JVRkJVU3hIUVUxYUxFOUJURUZxUXl4RlFVRkxXQ3hMUVVGTkxGTkJRVlYzUkN4TFFVTmtja0lzUjBGQldVRXNSMEZCV1dFc1JVRkJVVkVzUlVGQlVUUkVMRmRCUVZscVJpeExRVU4yUkZNc1JVRkJUVWNzUzBGQlMxTXNSVUZCVVRSRUxHTkJSMmhDY2tnc1JVRkJSVFpETEVsQlowUlVOazRzVTBGdVEyRXNVMEZCYTBKMFR5eEhRVU12UWl4SlFVRkpVeXhGUVVGUkxFZEJVVm9zVDBGUVFXcERMRVZCUVV0WUxFdEJRVTBzVTBGQlZYZEVMRWRCUTI1Q0xFOUJRVTgzUXl4RlFVRkxOa01zUlVGQlVUUkVMRmRCUVZkcVJDeFRRVUZWTEZOQlFWVjFUU3hIUVVNM1EwRXNTVUZCV1d4T0xFdEJRV0Z5UWl4SFFVRlpRU3hIUVVGWllTeEZRVUZSTUU0c1JVRkJVM1pQTEV0QlEzQkZVeXhGUVVGTlJ5eExRVUZMTWs0c1QwRkpWak5STEVWQlFVVTJReXhKUVRKQ1ZHTXNUVUZCVDBFc1MwRXJRa3hwVGl4SFFVRlZiRkVzVFVGQlRXdFJMRkZCUldoQ0wwTXNSMEZCYjBKdVNpeFBRVUZQUXl4UFFVRlBMRU5CUTNCRGEwMHNWMEZxUW1Vc1UwRkJiMEpETEVkQlEyNURMRTFCUVhOQ0xHMUNRVUZTUVN4SFFXbENaRVlzVVVGQlUwRXNTMEZOVUc1TUxFZEJRVTBzUjBGRFRuTk1MRWRCUVUwc1IwRjFRbFlzV1VGeVFuZENMRWxCUVdJelR5eExRVU5VTWs4c1IwRkJUUzlSTEVkQlEwWnBSQ3hSUVVGVlFTeEZRVU5rZDBNc1IwRkJTVGRETEV0QlFVOUJMRWRCUjJJeFFpeEZRVUZQTmxBc1IwRkJTM2hJTEVWQlFXTjVSeXhIUVVGWmJrTXNTVUZEZEVNelRTeEZRVUZQZFVVc1IwRkJTMGdzUlVGQlQxVXNSVUZCVDJsRExFVkJRVlZPTEVWQlFVdHBRaXhGUVVGWGJVSXNSVUZCVlVVc1JVRkJWMUVzUlVGQlZXMUNMRWRCUVU4MlJDeEhRVUZsUlN4SFFVRmhOMFVzUjBGQmEwSnpSaXhKUVVONFNWY3NSMEZCU1haTkxFZEJRVXRwUWl4SFFVVlVjMHdzUjBGQlNVTXNVVUZCVlN4VlFVVmtSQ3hIUVVGSk4xQXNUMEZCVTBFc1JVRkhXRFpRTEVkQlFVbDJUQ3hWUVVGWlFTeEZRVUZWZFV3c1IwRkJTWFpOTEVsQlNYUkNkVTBpTENKbWFXeGxJam9pUlRwY1hGZHZjbXR6Y0dGalpWeGNkMmxyYVdFdGFYTXRZVzV6ZDJWeVpXUmNYRzV2WkdWZmJXOWtkV3hsYzF4Y1pHOXRkR0Z6ZEdsalhGeGthWE4wWEZ4a2IyMTBZWE4wYVdNdWFuTWlmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7Y29uc3QgYXJyaWZ5PXJlcXVpcmUoXCJhcnJpZnlcIiksaXNQbGFpbk9iamVjdD1yZXF1aXJlKFwiaXMtcGxhaW4tb2JqZWN0XCIpLGNsYXNzTmFtZXM9cmVxdWlyZShcImNsYXNzbmFtZXNcIikscmVuZGVyPXJlcXVpcmUoXCIuL3JlbmRlclwiKSx1dGlscz1yZXF1aXJlKFwiLi91dGlsc1wiKSxoPShlLHMscik9PntzJiYhaXNQbGFpbk9iamVjdChzKT8ocj1zLHM9e30pOnN8fChzPXt9KSxyPWFycmlmeShyKTtjb25zdCBpPXV0aWxzLmdldFNlbGVjdG9yUGFydHMoZSk7cmV0dXJuIGkuaWQmJihzLmlkPWkuaWQpLGkuY2xhc3Nlcy5sZW5ndGgmJihzLmNsYXNzPWNsYXNzTmFtZXMocy5jbGFzcyxpLmNsYXNzZXMpKSxyZW5kZXIoaS50YWcscyxyKX07bW9kdWxlLmV4cG9ydHM9ZXhwb3J0cz1oO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1sdVpHVjRMbXB6SWwwc0ltNWhiV1Z6SWpwYkltRnljbWxtZVNJc0luSmxjWFZwY21VaUxDSnBjMUJzWVdsdVQySnFaV04wSWl3aVkyeGhjM05PWVcxbGN5SXNJbkpsYm1SbGNpSXNJblYwYVd4eklpd2lhQ0lzSW5ObGJHVmpkRzl5SWl3aVlYUjBjbk1pTENKamFHbHNaSEpsYmlJc0luQmhjblJ6SWl3aVoyVjBVMlZzWldOMGIzSlFZWEowY3lJc0ltbGtJaXdpWTJ4aGMzTmxjeUlzSW14bGJtZDBhQ0lzSW1Oc1lYTnpJaXdpZEdGbklpd2liVzlrZFd4bElpd2laWGh3YjNKMGN5SmRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNZVUZEUVN4TlFVRk5RU3hQUVVGVFF5eFJRVUZSTEZWQlEycENReXhqUVVGblFrUXNVVUZCVVN4dFFrRkRlRUpGTEZkQlFXRkdMRkZCUVZFc1kwRkRja0pITEU5QlFWTklMRkZCUVZFc1dVRkRha0pKTEUxQlFWRktMRkZCUVZFc1YwRkZhRUpMTEVWQlFVa3NRMEZCUTBNc1JVRkJWVU1zUlVGQlQwTXNTMEZEZGtKRUxFbEJRVlZPTEdOQlFXTk5MRWxCUXpOQ1F5eEZRVUZYUkN4RlFVTllRU3hGUVVGUkxFbEJRMGRCTEVsQlExaEJMRVZCUVZFc1NVRkZWRU1zUlVGQlYxUXNUMEZCVDFNc1IwRkRiRUlzVFVGQlRVTXNSVUZCVVV3c1RVRkJUVTBzYVVKQlFXbENTaXhIUVU5eVF5eFBRVTVKUnl4RlFVRk5SU3hMUVVOVVNpeEZRVUZOU1N4SFFVRkxSaXhGUVVGTlJTeEpRVVZrUml4RlFVRk5SeXhSUVVGUlF5eFRRVU5xUWs0c1JVRkJUVThzVFVGQlVWb3NWMEZCVjBzc1JVRkJUVThzVFVGQlQwd3NSVUZCVFVjc1ZVRkZkRU5VTEU5QlFVOU5MRVZCUVUxTkxFbEJRVXRTTEVWQlFVOURMRWxCUjJwRFVTeFBRVUZQUXl4UlFVRlZRU3hSUVVGVldpSXNJbVpwYkdVaU9pSkZPbHhjVjI5eWEzTndZV05sWEZ4M2FXdHBZUzFwY3kxaGJuTjNaWEpsWkZ4Y2JtOWtaVjl0YjJSMWJHVnpYRnhvZVhCbGNuTmpjbWx3ZEMxemRISnBibWRjWEhOeVkxeGNhVzVrWlhndWFuTWlmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7Y29uc3Qgdm9pZEVsZW1lbnRzPXJlcXVpcmUoXCJ2b2lkLWVsZW1lbnRzXCIpLGFycmlmeT1yZXF1aXJlKFwiYXJyaWZ5XCIpO2Z1bmN0aW9uIHJlbmRlckF0dHJpYnV0ZXMoZSl7cmV0dXJuKGU9T2JqZWN0LmtleXMoZSkuZmlsdGVyKHI9PnZvaWQgMCE9PWVbcl0mJm51bGwhPT1lW3JdJiYhMSE9PWVbcl0pLm1hcChyPT4hMD09PWVbcl0/cjpgJHtyfT1cIiR7ZVtyXX1cImApLmpvaW4oXCIgXCIpKT9gICR7ZX1gOlwiXCJ9ZnVuY3Rpb24gcmVuZGVyQ2hpbGRyZW4oZSl7cmV0dXJuIDA9PT0oZT1hcnJpZnkoZSkpLmxlbmd0aD9cIlwiOjE9PT1lLmxlbmd0aD9lWzBdOmBcXG5cXHQke2Uuam9pbihcIlxcblxcdFwiKX1cXG5gfW1vZHVsZS5leHBvcnRzPWV4cG9ydHM9ZnVuY3Rpb24oZSxyLHQpe3JldHVyblwiIWRvY3R5cGVcIj09PWV8fHZvaWRFbGVtZW50c1tlXT9gPCR7ZX0ke3JlbmRlckF0dHJpYnV0ZXMocil9PmA6YDwke2V9JHtyZW5kZXJBdHRyaWJ1dGVzKHIpfT4ke3JlbmRlckNoaWxkcmVuKHQpfTwvJHtlfT5gfTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkluSmxibVJsY2k1cWN5SmRMQ0p1WVcxbGN5STZXeUoyYjJsa1JXeGxiV1Z1ZEhNaUxDSnlaWEYxYVhKbElpd2lZWEp5YVdaNUlpd2ljbVZ1WkdWeVFYUjBjbWxpZFhSbGN5SXNJbUYwZEhKeklpd2lUMkpxWldOMElpd2lhMlY1Y3lJc0ltWnBiSFJsY2lJc0ltNWhiV1VpTENKMWJtUmxabWx1WldRaUxDSnRZWEFpTENKcWIybHVJaXdpY21WdVpHVnlRMmhwYkdSeVpXNGlMQ0pqYUdsc1pISmxiaUlzSW14bGJtZDBhQ0lzSW0xdlpIVnNaU0lzSW1WNGNHOXlkSE1pWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEdGQlEwRXNUVUZCVFVFc1lVRkJaVU1zVVVGQlVTeHBRa0ZEZGtKRExFOUJRVk5FTEZGQlFWRXNWVUZUZGtJc1UwRkJVMFVzYVVKQlFXbENReXhIUVdGNlFpeFBRVnBCUVN4RlFVRlJReXhQUVVGUFF5eExRVUZMUml4SFFVTnNRa2NzVDBGQlQwTXNVVUZEVTBNc1NVRkJhRUpNTEVWQlFVMUpMRWxCUTFVc1QwRkJhRUpLTEVWQlFVMUpMRXRCUTFVc1NVRkJhRUpLTEVWQlFVMUpMRWxCUlU1RkxFbEJRVWxHTEVsQlExa3NTVUZCYUVKS0xFVkJRVTFKTEVkQlEwNUJMRXRCUTBkQkxFMUJRVk5LTEVWQlFVMUpMRTlCUld4Q1J5eExRVUZMTEZWQlJVdFFMRWxCUlV3c1IwRkhVaXhUUVVGVFVTeGxRVUZsUXl4SFFVVjJRaXhQUVVGM1FpeExRVVI0UWtFc1JVRkJWMWdzVDBGQlQxY3NTVUZEVEVNc1QwRkRUQ3hIUVVOMVFpeEpRVUZ3UWtRc1JVRkJVME1zVDBGRFdrUXNSVUZCVXl4VlFVVklRU3hGUVVGVFJpeExRVUZMTEZsQmFrTTNRa2tzVDBGQlQwTXNVVUZCVlVFc1VVRkJWU3hUUVVGblFsSXNSVUZCVFVvc1JVRkJUMU1zUjBGRGRrUXNUVUZCWVN4aFFVRlVUQ3hIUVVGMVFsSXNZVUZCWVZFc1QwRkROVUpCTEVsQlFVOU1MR2xDUVVGcFFrTXNWVUZGZWtKSkxFbEJRVTlNTEdsQ1FVRnBRa01zVFVGQlZWRXNaVUZCWlVNc1QwRkJZMHdpTENKbWFXeGxJam9pUlRwY1hGZHZjbXR6Y0dGalpWeGNkMmxyYVdFdGFYTXRZVzV6ZDJWeVpXUmNYRzV2WkdWZmJXOWtkV3hsYzF4Y2FIbHdaWEp6WTNKcGNIUXRjM1J5YVc1blhGeHpjbU5jWEhKbGJtUmxjaTVxY3lKOSIsIlwidXNlIHN0cmljdFwiO2NvbnN0IFNFTEVDVE9SX1JFR0VYPS8oXnwjfFxcLilbXiNcXC5dKy9nO2Z1bmN0aW9uIGdldFRhZyh0KXtyZXR1cm5cIiNcIj09PXRbMF1bMF18fFwiLlwiPT09dFswXVswXT9cImRpdlwiOnRbMF0udG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBnZXRDbGFzc2VzKHQpe3JldHVybiB0LmZpbHRlcihpc0NsYXNzKS5tYXAoc2xpY2UoMSkpfWZ1bmN0aW9uIGdldElkKHQpe3JldHVybiB0LmZpbHRlcihpc0lkKS5tYXAoc2xpY2UoMSkpWzBdfWZ1bmN0aW9uIHNsaWNlKHQsZSl7cmV0dXJuIHM9PnMuc2xpY2UodCxlKX1mdW5jdGlvbiBpc0lkKHQpe3JldHVyblwiI1wiPT09dFswXX1mdW5jdGlvbiBpc0NsYXNzKHQpe3JldHVyblwiLlwiPT09dFswXX1leHBvcnRzLmdldFNlbGVjdG9yUGFydHM9KHQ9Pntjb25zdCBlPXQubWF0Y2goU0VMRUNUT1JfUkVHRVgpO2lmKCFlKXRocm93IG5ldyBFcnJvcihgSW52YWxpZCBzZWxlY3RvciEgU2hvdWxkIGhhdmUgdGhlIGZvcm1hdCBcIm5hbWUuY2xhc3MxLmNsYXNzMiNpZFwiLCBidXQgd2FzOiBcIiR7dH1cImApO3JldHVybnt0YWc6Z2V0VGFnKGUpLGlkOmdldElkKGUpLGNsYXNzZXM6Z2V0Q2xhc3NlcyhlKX19KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkluVjBhV3h6TG1weklsMHNJbTVoYldWeklqcGJJbE5GVEVWRFZFOVNYMUpGUjBWWUlpd2laMlYwVkdGbklpd2liV0YwWTJobGN5SXNJblJ2VEc5M1pYSkRZWE5sSWl3aVoyVjBRMnhoYzNObGN5SXNJbVpwYkhSbGNpSXNJbWx6UTJ4aGMzTWlMQ0p0WVhBaUxDSnpiR2xqWlNJc0ltZGxkRWxrSWl3aWFYTkpaQ0lzSW1FaUxDSmlJaXdpZG1Gc0lpd2ljM1J5SWl3aVpYaHdiM0owY3lJc0ltZGxkRk5sYkdWamRHOXlVR0Z5ZEhNaUxDSnpaV3hsWTNSdmNpSXNJbTFoZEdOb0lpd2lSWEp5YjNJaUxDSjBZV2NpTENKcFpDSXNJbU5zWVhOelpYTWlYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMR0ZCUTBFc1RVRkJUVUVzWlVGQmFVSXNiVUpCWTNaQ0xGTkJRVk5ETEU5QlFVOURMRWRCUTJZc1RVRkJjMElzVFVGQmJFSkJMRVZCUVZFc1IwRkJSeXhKUVVGblF5eE5RVUZzUWtFc1JVRkJVU3hIUVVGSExFZEJRMmhETEUxQlJVUkJMRVZCUVZFc1IwRkJSME1zWTBGSGJrSXNVMEZCVTBNc1YwRkJWMFlzUjBGRGJrSXNUMEZCVDBFc1JVRkJVVWNzVDBGQlQwTXNVMEZCVTBNc1NVRkJTVU1zVFVGQlRTeEpRVWN4UXl4VFFVRlRReXhOUVVGTlVDeEhRVU5rTEU5QlFVOUJMRVZCUVZGSExFOUJRVTlMTEUxQlFVMUlMRWxCUVVsRExFMUJRVTBzU1VGQlNTeEhRVWN6UXl4VFFVRlRRU3hOUVVGTlJ5eEZRVUZIUXl4SFFVTnFRaXhQUVVGUFF5eEhRVUZQUVN4RlFVRkpUQ3hOUVVGTlJ5eEZRVUZIUXl4SFFVYzFRaXhUUVVGVFJpeExRVUZMU1N4SFFVTmlMRTFCUVd0Q0xFMUJRVmhCTEVWQlFVa3NSMEZIV2l4VFFVRlRVaXhSUVVGUlVTeEhRVU5vUWl4TlFVRnJRaXhOUVVGWVFTeEZRVUZKTEVkQmNFTmFReXhSUVVGUlF5eHBRa0ZCYlVJc1EwRkJRME1zU1VGRE0wSXNUVUZCVFdZc1JVRkJWV1VzUlVGQlUwTXNUVUZCVFd4Q0xHZENRVU12UWl4SlFVRkxSU3hGUVVOS0xFMUJRVTBzU1VGQlNXbENMSEZHUVVGeFJrWXNUVUZGYUVjc1RVRkJUeXhEUVVOT1J5eEpRVUZMYmtJc1QwRkJUME1zUjBGRFdtMUNMRWRCUVVsYUxFMUJRVTFRTEVkQlExWnZRaXhSUVVGVGJFSXNWMEZCVjBZaUxDSm1hV3hsSWpvaVJUcGNYRmR2Y210emNHRmpaVnhjZDJscmFXRXRhWE10WVc1emQyVnlaV1JjWEc1dlpHVmZiVzlrZFd4bGMxeGNhSGx3WlhKelkzSnBjSFF0YzNSeWFXNW5YRnh6Y21OY1hIVjBhV3h6TG1wekluMD0iLCJcInVzZSBzdHJpY3RcIjt2YXIgaXNPYmplY3Q9cmVxdWlyZShcImlzb2JqZWN0XCIpO2Z1bmN0aW9uIGlzT2JqZWN0T2JqZWN0KHQpe3JldHVybiEwPT09aXNPYmplY3QodCkmJlwiW29iamVjdCBPYmplY3RdXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodCl9bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIGUsYztyZXR1cm4hMSE9PWlzT2JqZWN0T2JqZWN0KHQpJiYoXCJmdW5jdGlvblwiPT10eXBlb2YoZT10LmNvbnN0cnVjdG9yKSYmKCExIT09aXNPYmplY3RPYmplY3QoYz1lLnByb3RvdHlwZSkmJiExIT09Yy5oYXNPd25Qcm9wZXJ0eShcImlzUHJvdG90eXBlT2ZcIikpKX07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbWx1WkdWNExtcHpJbDBzSW01aGJXVnpJanBiSW1selQySnFaV04wSWl3aWNtVnhkV2x5WlNJc0ltbHpUMkpxWldOMFQySnFaV04wSWl3aWJ5SXNJazlpYW1WamRDSXNJbkJ5YjNSdmRIbHdaU0lzSW5SdlUzUnlhVzVuSWl3aVkyRnNiQ0lzSW0xdlpIVnNaU0lzSW1WNGNHOXlkSE1pTENKamRHOXlJaXdpY0hKdmRDSXNJbU52Ym5OMGNuVmpkRzl5SWl3aWFHRnpUM2R1VUhKdmNHVnlkSGtpWFN3aWJXRndjR2x1WjNNaU9pSkJRVTlCTEdGQlJVRXNTVUZCU1VFc1UwRkJWME1zVVVGQlVTeFpRVVYyUWl4VFFVRlRReXhsUVVGbFF5eEhRVU4wUWl4UFFVRjFRaXhKUVVGb1FrZ3NVMEZCVTBjc1NVRkRNa0lzYjBKQlFYUkRReXhQUVVGUFF5eFZRVUZWUXl4VFFVRlRReXhMUVVGTFNpeEhRVWQwUTBzc1QwRkJUME1zVVVGQlZTeFRRVUYxUWs0c1IwRkRkRU1zU1VGQlNVOHNSVUZCUzBNc1JVRkZWQ3hQUVVFd1FpeEpRVUYwUWxRc1pVRkJaVU1zUzBGSlF5eHRRa0ZFY0VKUExFVkJRVTlRTEVWQlFVVlRMR2RDUVV0dlFpeEpRVUY2UWxZc1pVRkVTbE1zUlVGQlQwUXNSVUZCUzB3c1lVRkphVU1zU1VGQmVrTk5MRVZCUVV0RkxHVkJRV1VpTENKbWFXeGxJam9pUlRwY1hGZHZjbXR6Y0dGalpWeGNkMmxyYVdFdGFYTXRZVzV6ZDJWeVpXUmNYRzV2WkdWZmJXOWtkV3hsYzF4Y2FYTXRjR3hoYVc0dGIySnFaV04wWEZ4cGJtUmxlQzVxY3lKOSIsIlwidXNlIHN0cmljdFwiO21vZHVsZS5leHBvcnRzPWZ1bmN0aW9uKHIpe3JldHVybiBudWxsIT1yJiZcIm9iamVjdFwiPT10eXBlb2YgciYmITE9PT1BcnJheS5pc0FycmF5KHIpfTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkltbHVaR1Y0TG1weklsMHNJbTVoYldWeklqcGJJbTF2WkhWc1pTSXNJbVY0Y0c5eWRITWlMQ0oyWVd3aUxDSkJjbkpoZVNJc0ltbHpRWEp5WVhraVhTd2liV0Z3Y0dsdVozTWlPaUpCUVU5QkxHRkJSVUZCTEU5QlFVOURMRkZCUVZVc1UwRkJhMEpETEVkQlEycERMRTlCUVdNc1RVRkJVRUVzUjBGQk9FSXNhVUpCUVZKQkxFbEJRVEpETEVsQlFYWkNReXhOUVVGTlF5eFJRVUZSUmlJc0ltWnBiR1VpT2lKRk9seGNWMjl5YTNOd1lXTmxYRngzYVd0cFlTMXBjeTFoYm5OM1pYSmxaRnhjYm05a1pWOXRiMlIxYkdWelhGeHBjMjlpYW1WamRGeGNhVzVrWlhndWFuTWlmUT09IiwiKGZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scyxyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX0sbz1bXS5zbGljZSxsPXt9Lmhhc093blByb3BlcnR5LHU9ZnVuY3Rpb24odCxlKXtmb3IodmFyIGkgaW4gZSlsLmNhbGwoZSxpKSYmKHRbaV09ZVtpXSk7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1yZXR1cm4gbi5wcm90b3R5cGU9ZS5wcm90b3R5cGUsdC5wcm90b3R5cGU9bmV3IG4sdC5fX3N1cGVyX189ZS5wcm90b3R5cGUsdH0saD1bXS5pbmRleE9mfHxmdW5jdGlvbih0KXtmb3IodmFyIGU9MCxpPXRoaXMubGVuZ3RoO2U8aTtlKyspaWYoZSBpbiB0aGlzJiZ0aGlzW2VdPT09dClyZXR1cm4gZTtyZXR1cm4tMX07dD17b3B0aW9uczpbXCJwcmVmaXhcIixcInRlbXBsYXRlRGVsaW1pdGVyc1wiLFwicm9vdEludGVyZmFjZVwiLFwicHJlbG9hZERhdGFcIixcImhhbmRsZXJcIixcImV4ZWN1dGVGdW5jdGlvbnNcIl0sZXh0ZW5zaW9uczpbXCJiaW5kZXJzXCIsXCJmb3JtYXR0ZXJzXCIsXCJjb21wb25lbnRzXCIsXCJhZGFwdGVyc1wiXSxwdWJsaWM6e2JpbmRlcnM6e30sY29tcG9uZW50czp7fSxmb3JtYXR0ZXJzOnt9LGFkYXB0ZXJzOnt9LHByZWZpeDpcInJ2XCIsdGVtcGxhdGVEZWxpbWl0ZXJzOltcIntcIixcIn1cIl0scm9vdEludGVyZmFjZTpcIi5cIixwcmVsb2FkRGF0YTohMCxleGVjdXRlRnVuY3Rpb25zOiExLGl0ZXJhdGlvbkFsaWFzOmZ1bmN0aW9uKHQpe3JldHVyblwiJVwiK3QrXCIlXCJ9LGhhbmRsZXI6ZnVuY3Rpb24odCxlLGkpe3JldHVybiB0aGlzLmNhbGwodCxlLGkudmlldy5tb2RlbHMpfSxjb25maWd1cmU6ZnVuY3Rpb24oZSl7dmFyIGksbixzLHI7Zm9yKHMgaW4gbnVsbD09ZSYmKGU9e30pLGUpaWYocj1lW3NdLFwiYmluZGVyc1wiPT09c3x8XCJjb21wb25lbnRzXCI9PT1zfHxcImZvcm1hdHRlcnNcIj09PXN8fFwiYWRhcHRlcnNcIj09PXMpZm9yKG4gaW4gcilpPXJbbl0sdFtzXVtuXT1pO2Vsc2UgdC5wdWJsaWNbc109cn0sYmluZDpmdW5jdGlvbihlLGksbil7dmFyIHM7cmV0dXJuIG51bGw9PWkmJihpPXt9KSxudWxsPT1uJiYobj17fSksKHM9bmV3IHQuVmlldyhlLGksbikpLmJpbmQoKSxzfSxpbml0OmZ1bmN0aW9uKGUsaSxuKXt2YXIgcyxyLG87aWYobnVsbD09biYmKG49e30pLG51bGw9PWkmJihpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikpLChyPShlPXQucHVibGljLmNvbXBvbmVudHNbZV0pLnRlbXBsYXRlLmNhbGwodGhpcyxpKSlpbnN0YW5jZW9mIEhUTUxFbGVtZW50KXtmb3IoO2kuZmlyc3RDaGlsZDspaS5yZW1vdmVDaGlsZChpLmZpcnN0Q2hpbGQpO2kuYXBwZW5kQ2hpbGQocil9ZWxzZSBpLmlubmVySFRNTD1yO3JldHVybiBzPWUuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsaSxuKSwobz1uZXcgdC5WaWV3KGkscykpLmJpbmQoKSxvfX19LHdpbmRvdy5qUXVlcnl8fHdpbmRvdy4kPyhzPVwib25cImluKGk9d2luZG93LmpRdWVyeXx8d2luZG93LiQpLnByb3RvdHlwZT9bXCJvblwiLFwib2ZmXCJdOltcImJpbmRcIixcInVuYmluZFwiXSxlPXNbMF0sbj1zWzFdLHQuVXRpbD17YmluZEV2ZW50OmZ1bmN0aW9uKHQsbixzKXtyZXR1cm4gaSh0KVtlXShuLHMpfSx1bmJpbmRFdmVudDpmdW5jdGlvbih0LGUscyl7cmV0dXJuIGkodClbbl0oZSxzKX0sZ2V0SW5wdXRWYWx1ZTpmdW5jdGlvbih0KXt2YXIgZTtyZXR1cm5cImNoZWNrYm94XCI9PT0oZT1pKHQpKS5hdHRyKFwidHlwZVwiKT9lLmlzKFwiOmNoZWNrZWRcIik6ZS52YWwoKX19KTp0LlV0aWw9e2JpbmRFdmVudDpcImFkZEV2ZW50TGlzdGVuZXJcImluIHdpbmRvdz9mdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQuYWRkRXZlbnRMaXN0ZW5lcihlLGksITEpfTpmdW5jdGlvbih0LGUsaSl7cmV0dXJuIHQuYXR0YWNoRXZlbnQoXCJvblwiK2UsaSl9LHVuYmluZEV2ZW50OlwicmVtb3ZlRXZlbnRMaXN0ZW5lclwiaW4gd2luZG93P2Z1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdC5yZW1vdmVFdmVudExpc3RlbmVyKGUsaSwhMSl9OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdC5kZXRhY2hFdmVudChcIm9uXCIrZSxpKX0sZ2V0SW5wdXRWYWx1ZTpmdW5jdGlvbih0KXt2YXIgZSxpLG4scztpZihcImNoZWNrYm94XCI9PT10LnR5cGUpcmV0dXJuIHQuY2hlY2tlZDtpZihcInNlbGVjdC1tdWx0aXBsZVwiPT09dC50eXBlKXtmb3Iocz1bXSxpPTAsbj10Lmxlbmd0aDtpPG47aSsrKShlPXRbaV0pLnNlbGVjdGVkJiZzLnB1c2goZS52YWx1ZSk7cmV0dXJuIHN9cmV0dXJuIHQudmFsdWV9fSx0LlR5cGVQYXJzZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiB0LnR5cGVzPXtwcmltaXRpdmU6MCxrZXlwYXRoOjF9LHQucGFyc2U9ZnVuY3Rpb24odCl7cmV0dXJuL14nLionJHxeXCIuKlwiJC8udGVzdCh0KT97dHlwZTp0aGlzLnR5cGVzLnByaW1pdGl2ZSx2YWx1ZTp0LnNsaWNlKDEsLTEpfTpcInRydWVcIj09PXQ/e3R5cGU6dGhpcy50eXBlcy5wcmltaXRpdmUsdmFsdWU6ITB9OlwiZmFsc2VcIj09PXQ/e3R5cGU6dGhpcy50eXBlcy5wcmltaXRpdmUsdmFsdWU6ITF9OlwibnVsbFwiPT09dD97dHlwZTp0aGlzLnR5cGVzLnByaW1pdGl2ZSx2YWx1ZTpudWxsfTpcInVuZGVmaW5lZFwiPT09dD97dHlwZTp0aGlzLnR5cGVzLnByaW1pdGl2ZSx2YWx1ZTp2b2lkIDB9OlwiXCI9PT10P3t0eXBlOnRoaXMudHlwZXMucHJpbWl0aXZlLHZhbHVlOnZvaWQgMH06ITE9PT1pc05hTihOdW1iZXIodCkpP3t0eXBlOnRoaXMudHlwZXMucHJpbWl0aXZlLHZhbHVlOk51bWJlcih0KX06e3R5cGU6dGhpcy50eXBlcy5rZXlwYXRoLHZhbHVlOnR9fSx0fSgpLHQuVGV4dFRlbXBsYXRlUGFyc2VyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC50eXBlcz17dGV4dDowLGJpbmRpbmc6MX0sdC5wYXJzZT1mdW5jdGlvbih0LGUpe3ZhciBpLG4scyxyLG8sbCx1O2ZvcihsPVtdLHI9dC5sZW5ndGgsaT0wLG49MDtuPHI7KXtpZigoaT10LmluZGV4T2YoZVswXSxuKSk8MCl7bC5wdXNoKHt0eXBlOnRoaXMudHlwZXMudGV4dCx2YWx1ZTp0LnNsaWNlKG4pfSk7YnJlYWt9aWYoaT4wJiZuPGkmJmwucHVzaCh7dHlwZTp0aGlzLnR5cGVzLnRleHQsdmFsdWU6dC5zbGljZShuLGkpfSksbj1pK2VbMF0ubGVuZ3RoLChpPXQuaW5kZXhPZihlWzFdLG4pKTwwKXtvPXQuc2xpY2Uobi1lWzFdLmxlbmd0aCksKG51bGwhPShzPWxbbC5sZW5ndGgtMV0pP3MudHlwZTp2b2lkIDApPT09dGhpcy50eXBlcy50ZXh0P3MudmFsdWUrPW86bC5wdXNoKHt0eXBlOnRoaXMudHlwZXMudGV4dCx2YWx1ZTpvfSk7YnJlYWt9dT10LnNsaWNlKG4saSkudHJpbSgpLGwucHVzaCh7dHlwZTp0aGlzLnR5cGVzLmJpbmRpbmcsdmFsdWU6dX0pLG49aStlWzFdLmxlbmd0aH1yZXR1cm4gbH0sdH0oKSx0LlZpZXc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsaSxuKXt2YXIgcyxvLGwsdSxoLGEscCxkLGMsZixiLHYsbTtmb3IodGhpcy5lbHM9ZSx0aGlzLm1vZGVscz1pLG51bGw9PW4mJihuPXt9KSx0aGlzLnVwZGF0ZT1yKHRoaXMudXBkYXRlLHRoaXMpLHRoaXMucHVibGlzaD1yKHRoaXMucHVibGlzaCx0aGlzKSx0aGlzLnN5bmM9cih0aGlzLnN5bmMsdGhpcyksdGhpcy51bmJpbmQ9cih0aGlzLnVuYmluZCx0aGlzKSx0aGlzLmJpbmQ9cih0aGlzLmJpbmQsdGhpcyksdGhpcy5zZWxlY3Q9cih0aGlzLnNlbGVjdCx0aGlzKSx0aGlzLnRyYXZlcnNlPXIodGhpcy50cmF2ZXJzZSx0aGlzKSx0aGlzLmJ1aWxkPXIodGhpcy5idWlsZCx0aGlzKSx0aGlzLmJ1aWxkQmluZGluZz1yKHRoaXMuYnVpbGRCaW5kaW5nLHRoaXMpLHRoaXMuYmluZGluZ1JlZ0V4cD1yKHRoaXMuYmluZGluZ1JlZ0V4cCx0aGlzKSx0aGlzLm9wdGlvbnM9cih0aGlzLm9wdGlvbnMsdGhpcyksdGhpcy5lbHMuanF1ZXJ5fHx0aGlzLmVscyBpbnN0YW5jZW9mIEFycmF5fHwodGhpcy5lbHM9W3RoaXMuZWxzXSksaD0wLHA9KGM9dC5leHRlbnNpb25zKS5sZW5ndGg7aDxwO2grKyl7aWYodGhpc1tvPWNbaF1dPXt9LG5bb10pZm9yKHMgaW4gZj1uW29dKWw9ZltzXSx0aGlzW29dW3NdPWw7Zm9yKHMgaW4gYj10LnB1YmxpY1tvXSlsPWJbc10sbnVsbD09KHU9dGhpc1tvXSlbc10mJih1W3NdPWwpfWZvcihhPTAsZD0odj10Lm9wdGlvbnMpLmxlbmd0aDthPGQ7YSsrKXRoaXNbbz12W2FdXT1udWxsIT0obT1uW29dKT9tOnQucHVibGljW29dO3RoaXMuYnVpbGQoKX1yZXR1cm4gZS5wcm90b3R5cGUub3B0aW9ucz1mdW5jdGlvbigpe3ZhciBlLGksbixzLHI7Zm9yKGk9e30sbj0wLHM9KHI9dC5leHRlbnNpb25zLmNvbmNhdCh0Lm9wdGlvbnMpKS5sZW5ndGg7bjxzO24rKylpW2U9cltuXV09dGhpc1tlXTtyZXR1cm4gaX0sZS5wcm90b3R5cGUuYmluZGluZ1JlZ0V4cD1mdW5jdGlvbigpe3JldHVybiBuZXcgUmVnRXhwKFwiXlwiK3RoaXMucHJlZml4K1wiLVwiKX0sZS5wcm90b3R5cGUuYnVpbGRCaW5kaW5nPWZ1bmN0aW9uKGUsaSxuLHMpe3ZhciByLG8sbCx1LGgsYSxwO3JldHVybiBoPXt9LHA9ZnVuY3Rpb24oKXt2YXIgdCxlLGksbjtmb3Iobj1bXSx0PTAsZT0oaT1zLm1hdGNoKC8oKD86J1teJ10qJykqKD86KD86W15cXHwnXSooPzonW14nXSonKStbXlxcfCddKikrfFteXFx8XSspKXxeJC9nKSkubGVuZ3RoO3Q8ZTt0KyspYT1pW3RdLG4ucHVzaChhLnRyaW0oKSk7cmV0dXJuIG59KCksdT0ocj1mdW5jdGlvbigpe3ZhciB0LGUsaSxuO2ZvcihuPVtdLHQ9MCxlPShpPXAuc2hpZnQoKS5zcGxpdChcIjxcIikpLmxlbmd0aDt0PGU7dCsrKW89aVt0XSxuLnB1c2goby50cmltKCkpO3JldHVybiBufSgpKS5zaGlmdCgpLGguZm9ybWF0dGVycz1wLChsPXIuc2hpZnQoKSkmJihoLmRlcGVuZGVuY2llcz1sLnNwbGl0KC9cXHMrLykpLHRoaXMuYmluZGluZ3MucHVzaChuZXcgdFtlXSh0aGlzLGksbix1LGgpKX0sZS5wcm90b3R5cGUuYnVpbGQ9ZnVuY3Rpb24oKXt2YXIgZSxpLG4scyxyLG87Zm9yKHRoaXMuYmluZGluZ3M9W10sbz10aGlzLGk9ZnVuY3Rpb24oZSl7dmFyIG4scyxyLGwsdSxoLGEscCxkLGMsZixiLHY7aWYoMz09PWUubm9kZVR5cGUpe2lmKHU9dC5UZXh0VGVtcGxhdGVQYXJzZXIsKHI9by50ZW1wbGF0ZURlbGltaXRlcnMpJiYocD11LnBhcnNlKGUuZGF0YSxyKSkubGVuZ3RoJiYoMSE9PXAubGVuZ3RofHxwWzBdLnR5cGUhPT11LnR5cGVzLnRleHQpKXtmb3IoZD0wLGY9cC5sZW5ndGg7ZDxmO2QrKylhPXBbZF0saD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShhLnZhbHVlKSxlLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGgsZSksMT09PWEudHlwZSYmby5idWlsZEJpbmRpbmcoXCJUZXh0QmluZGluZ1wiLGgsbnVsbCxhLnZhbHVlKTtlLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZSl9fWVsc2UgMT09PWUubm9kZVR5cGUmJihuPW8udHJhdmVyc2UoZSkpO2lmKCFuKWZvcih2PWZ1bmN0aW9uKCl7dmFyIHQsaSxuLHM7Zm9yKHM9W10sdD0wLGk9KG49ZS5jaGlsZE5vZGVzKS5sZW5ndGg7dDxpO3QrKylsPW5bdF0scy5wdXNoKGwpO3JldHVybiBzfSgpLGM9MCxiPXYubGVuZ3RoO2M8YjtjKyspcz12W2NdLGkocyl9LG49MCxzPShyPXRoaXMuZWxzKS5sZW5ndGg7bjxzO24rKyllPXJbbl0saShlKTt0aGlzLmJpbmRpbmdzLnNvcnQoZnVuY3Rpb24odCxlKXt2YXIgaSxuO3JldHVybigobnVsbCE9KGk9ZS5iaW5kZXIpP2kucHJpb3JpdHk6dm9pZCAwKXx8MCktKChudWxsIT0obj10LmJpbmRlcik/bi5wcmlvcml0eTp2b2lkIDApfHwwKX0pfSxlLnByb3RvdHlwZS50cmF2ZXJzZT1mdW5jdGlvbihlKXt2YXIgaSxuLHMscixvLGwsdSxoLGEscCxkLGMsZixiLHY7Zm9yKHI9dGhpcy5iaW5kaW5nUmVnRXhwKCksbz1cIlNDUklQVFwiPT09ZS5ub2RlTmFtZXx8XCJTVFlMRVwiPT09ZS5ub2RlTmFtZSxhPTAsZD0oZj1lLmF0dHJpYnV0ZXMpLmxlbmd0aDthPGQ7YSsrKWlmKGk9ZlthXSxyLnRlc3QoaS5uYW1lKSl7aWYodT1pLm5hbWUucmVwbGFjZShyLFwiXCIpLCEocz10aGlzLmJpbmRlcnNbdV0pKWZvcihsIGluIGI9dGhpcy5iaW5kZXJzKWg9YltsXSxcIipcIiE9PWwmJi0xIT09bC5pbmRleE9mKFwiKlwiKSYmbmV3IFJlZ0V4cChcIl5cIitsLnJlcGxhY2UoL1xcKi9nLFwiLitcIikrXCIkXCIpLnRlc3QodSkmJihzPWgpO3N8fChzPXRoaXMuYmluZGVyc1tcIipcIl0pLHMuYmxvY2smJihvPSEwLG49W2ldKX1mb3IocD0wLGM9KHY9bnx8ZS5hdHRyaWJ1dGVzKS5sZW5ndGg7cDxjO3ArKylpPXZbcF0sci50ZXN0KGkubmFtZSkmJih1PWkubmFtZS5yZXBsYWNlKHIsXCJcIiksdGhpcy5idWlsZEJpbmRpbmcoXCJCaW5kaW5nXCIsZSx1LGkudmFsdWUpKTtyZXR1cm4gb3x8KHU9ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHRoaXMuY29tcG9uZW50c1t1XSYmIWUuX2JvdW5kJiYodGhpcy5iaW5kaW5ncy5wdXNoKG5ldyB0LkNvbXBvbmVudEJpbmRpbmcodGhpcyxlLHUpKSxvPSEwKSksb30sZS5wcm90b3R5cGUuc2VsZWN0PWZ1bmN0aW9uKHQpe3ZhciBlLGksbixzLHI7Zm9yKHI9W10saT0wLG49KHM9dGhpcy5iaW5kaW5ncykubGVuZ3RoO2k8bjtpKyspdChlPXNbaV0pJiZyLnB1c2goZSk7cmV0dXJuIHJ9LGUucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgdCxlLGk7Zm9yKHQ9MCxlPShpPXRoaXMuYmluZGluZ3MpLmxlbmd0aDt0PGU7dCsrKWlbdF0uYmluZCgpfSxlLnByb3RvdHlwZS51bmJpbmQ9ZnVuY3Rpb24oKXt2YXIgdCxlLGk7Zm9yKHQ9MCxlPShpPXRoaXMuYmluZGluZ3MpLmxlbmd0aDt0PGU7dCsrKWlbdF0udW5iaW5kKCl9LGUucHJvdG90eXBlLnN5bmM9ZnVuY3Rpb24oKXt2YXIgdCxlLGksbjtmb3IoZT0wLGk9KG49dGhpcy5iaW5kaW5ncykubGVuZ3RoO2U8aTtlKyspXCJmdW5jdGlvblwiPT10eXBlb2YodD1uW2VdKS5zeW5jJiZ0LnN5bmMoKX0sZS5wcm90b3R5cGUucHVibGlzaD1mdW5jdGlvbigpe3ZhciB0LGUsaTtmb3IodD0wLGU9KGk9dGhpcy5zZWxlY3QoZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG51bGwhPShlPXQuYmluZGVyKT9lLnB1Ymxpc2hlczp2b2lkIDB9KSkubGVuZ3RoO3Q8ZTt0KyspaVt0XS5wdWJsaXNoKCl9LGUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZSxpLG4scyxyLG87Zm9yKGkgaW4gbnVsbD09dCYmKHQ9e30pLHQpbj10W2ldLHRoaXMubW9kZWxzW2ldPW47Zm9yKHM9MCxyPShvPXRoaXMuYmluZGluZ3MpLmxlbmd0aDtzPHI7cysrKVwiZnVuY3Rpb25cIj09dHlwZW9mKGU9b1tzXSkudXBkYXRlJiZlLnVwZGF0ZSh0KX0sZX0oKSx0LkJpbmRpbmc9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQsZSxpLG4scyl7dGhpcy52aWV3PXQsdGhpcy5lbD1lLHRoaXMudHlwZT1pLHRoaXMua2V5cGF0aD1uLHRoaXMub3B0aW9ucz1udWxsIT1zP3M6e30sdGhpcy5nZXRWYWx1ZT1yKHRoaXMuZ2V0VmFsdWUsdGhpcyksdGhpcy51cGRhdGU9cih0aGlzLnVwZGF0ZSx0aGlzKSx0aGlzLnVuYmluZD1yKHRoaXMudW5iaW5kLHRoaXMpLHRoaXMuYmluZD1yKHRoaXMuYmluZCx0aGlzKSx0aGlzLnB1Ymxpc2g9cih0aGlzLnB1Ymxpc2gsdGhpcyksdGhpcy5zeW5jPXIodGhpcy5zeW5jLHRoaXMpLHRoaXMuc2V0PXIodGhpcy5zZXQsdGhpcyksdGhpcy5ldmVudEhhbmRsZXI9cih0aGlzLmV2ZW50SGFuZGxlcix0aGlzKSx0aGlzLmZvcm1hdHRlZFZhbHVlPXIodGhpcy5mb3JtYXR0ZWRWYWx1ZSx0aGlzKSx0aGlzLnBhcnNlRm9ybWF0dGVyQXJndW1lbnRzPXIodGhpcy5wYXJzZUZvcm1hdHRlckFyZ3VtZW50cyx0aGlzKSx0aGlzLnBhcnNlVGFyZ2V0PXIodGhpcy5wYXJzZVRhcmdldCx0aGlzKSx0aGlzLm9ic2VydmU9cih0aGlzLm9ic2VydmUsdGhpcyksdGhpcy5zZXRCaW5kZXI9cih0aGlzLnNldEJpbmRlcix0aGlzKSx0aGlzLmZvcm1hdHRlcnM9dGhpcy5vcHRpb25zLmZvcm1hdHRlcnN8fFtdLHRoaXMuZGVwZW5kZW5jaWVzPVtdLHRoaXMuZm9ybWF0dGVyT2JzZXJ2ZXJzPXt9LHRoaXMubW9kZWw9dm9pZCAwLHRoaXMuc2V0QmluZGVyKCl9cmV0dXJuIGUucHJvdG90eXBlLnNldEJpbmRlcj1mdW5jdGlvbigpe3ZhciB0LGUsaTtpZighKHRoaXMuYmluZGVyPXRoaXMudmlldy5iaW5kZXJzW3RoaXMudHlwZV0pKWZvcih0IGluIGk9dGhpcy52aWV3LmJpbmRlcnMpZT1pW3RdLFwiKlwiIT09dCYmLTEhPT10LmluZGV4T2YoXCIqXCIpJiZuZXcgUmVnRXhwKFwiXlwiK3QucmVwbGFjZSgvXFwqL2csXCIuK1wiKStcIiRcIikudGVzdCh0aGlzLnR5cGUpJiYodGhpcy5iaW5kZXI9ZSx0aGlzLmFyZ3M9bmV3IFJlZ0V4cChcIl5cIit0LnJlcGxhY2UoL1xcKi9nLFwiKC4rKVwiKStcIiRcIikuZXhlYyh0aGlzLnR5cGUpLHRoaXMuYXJncy5zaGlmdCgpKTtpZih0aGlzLmJpbmRlcnx8KHRoaXMuYmluZGVyPXRoaXMudmlldy5iaW5kZXJzW1wiKlwiXSksdGhpcy5iaW5kZXIgaW5zdGFuY2VvZiBGdW5jdGlvbilyZXR1cm4gdGhpcy5iaW5kZXI9e3JvdXRpbmU6dGhpcy5iaW5kZXJ9fSxlLnByb3RvdHlwZS5vYnNlcnZlPWZ1bmN0aW9uKGUsaSxuKXtyZXR1cm4gdC5zaWdodGdsYXNzKGUsaSxuLHtyb290OnRoaXMudmlldy5yb290SW50ZXJmYWNlLGFkYXB0ZXJzOnRoaXMudmlldy5hZGFwdGVyc30pfSxlLnByb3RvdHlwZS5wYXJzZVRhcmdldD1mdW5jdGlvbigpe3ZhciBlO3JldHVybihlPXQuVHlwZVBhcnNlci5wYXJzZSh0aGlzLmtleXBhdGgpKS50eXBlPT09dC5UeXBlUGFyc2VyLnR5cGVzLnByaW1pdGl2ZT90aGlzLnZhbHVlPWUudmFsdWU6KHRoaXMub2JzZXJ2ZXI9dGhpcy5vYnNlcnZlKHRoaXMudmlldy5tb2RlbHMsdGhpcy5rZXlwYXRoLHRoaXMuc3luYyksdGhpcy5tb2RlbD10aGlzLm9ic2VydmVyLnRhcmdldCl9LGUucHJvdG90eXBlLnBhcnNlRm9ybWF0dGVyQXJndW1lbnRzPWZ1bmN0aW9uKGUsaSl7dmFyIG4scyxyLG8sbCx1LGg7Zm9yKGU9ZnVuY3Rpb24oKXt2YXIgaSxuLHI7Zm9yKHI9W10saT0wLG49ZS5sZW5ndGg7aTxuO2krKylzPWVbaV0sci5wdXNoKHQuVHlwZVBhcnNlci5wYXJzZShzKSk7cmV0dXJuIHJ9KCksbz1bXSxuPXU9MCxoPWUubGVuZ3RoO3U8aDtuPSsrdSlzPWVbbl0sby5wdXNoKHMudHlwZT09PXQuVHlwZVBhcnNlci50eXBlcy5wcmltaXRpdmU/cy52YWx1ZTooKGw9dGhpcy5mb3JtYXR0ZXJPYnNlcnZlcnMpW2ldfHwobFtpXT17fSksKHI9dGhpcy5mb3JtYXR0ZXJPYnNlcnZlcnNbaV1bbl0pfHwocj10aGlzLm9ic2VydmUodGhpcy52aWV3Lm1vZGVscyxzLnZhbHVlLHRoaXMuc3luYyksdGhpcy5mb3JtYXR0ZXJPYnNlcnZlcnNbaV1bbl09ciksci52YWx1ZSgpKSk7cmV0dXJuIG99LGUucHJvdG90eXBlLmZvcm1hdHRlZFZhbHVlPWZ1bmN0aW9uKHQpe3ZhciBlLGksbixzLHIsbCx1LGgsYTtmb3IoaT1sPTAsdT0oaD10aGlzLmZvcm1hdHRlcnMpLmxlbmd0aDtsPHU7aT0rK2wpcz0oZT0obj1oW2ldKS5tYXRjaCgvW15cXHMnXSt8JyhbXiddfCdbXlxcc10pKid8XCIoW15cIl18XCJbXlxcc10pKlwiL2cpKS5zaGlmdCgpLG49dGhpcy52aWV3LmZvcm1hdHRlcnNbc10scj10aGlzLnBhcnNlRm9ybWF0dGVyQXJndW1lbnRzKGUsaSksKG51bGwhPW4/bi5yZWFkOnZvaWQgMClpbnN0YW5jZW9mIEZ1bmN0aW9uP3Q9KGE9bi5yZWFkKS5jYWxsLmFwcGx5KGEsW3RoaXMubW9kZWwsdF0uY29uY2F0KG8uY2FsbChyKSkpOm4gaW5zdGFuY2VvZiBGdW5jdGlvbiYmKHQ9bi5jYWxsLmFwcGx5KG4sW3RoaXMubW9kZWwsdF0uY29uY2F0KG8uY2FsbChyKSkpKTtyZXR1cm4gdH0sZS5wcm90b3R5cGUuZXZlbnRIYW5kbGVyPWZ1bmN0aW9uKHQpe3ZhciBlLGk7cmV0dXJuIGk9KGU9dGhpcykudmlldy5oYW5kbGVyLGZ1bmN0aW9uKG4pe3JldHVybiBpLmNhbGwodCx0aGlzLG4sZSl9fSxlLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSl7dmFyIGk7cmV0dXJuIGU9ZSBpbnN0YW5jZW9mIEZ1bmN0aW9uJiYhdGhpcy5iaW5kZXIuZnVuY3Rpb24mJnQucHVibGljLmV4ZWN1dGVGdW5jdGlvbnM/dGhpcy5mb3JtYXR0ZWRWYWx1ZShlLmNhbGwodGhpcy5tb2RlbCkpOnRoaXMuZm9ybWF0dGVkVmFsdWUoZSksbnVsbCE9KGk9dGhpcy5iaW5kZXIucm91dGluZSk/aS5jYWxsKHRoaXMsdGhpcy5lbCxlKTp2b2lkIDB9LGUucHJvdG90eXBlLnN5bmM9ZnVuY3Rpb24oKXt2YXIgdCxlO3JldHVybiB0aGlzLnNldChmdW5jdGlvbigpe3ZhciBpLG4scyxyLG8sbCx1O2lmKHRoaXMub2JzZXJ2ZXIpe2lmKHRoaXMubW9kZWwhPT10aGlzLm9ic2VydmVyLnRhcmdldCl7Zm9yKGk9MCxzPShvPXRoaXMuZGVwZW5kZW5jaWVzKS5sZW5ndGg7aTxzO2krKykoZT1vW2ldKS51bm9ic2VydmUoKTtpZih0aGlzLmRlcGVuZGVuY2llcz1bXSxudWxsIT0odGhpcy5tb2RlbD10aGlzLm9ic2VydmVyLnRhcmdldCkmJihudWxsIT0obD10aGlzLm9wdGlvbnMuZGVwZW5kZW5jaWVzKT9sLmxlbmd0aDp2b2lkIDApKWZvcihuPTAscj0odT10aGlzLm9wdGlvbnMuZGVwZW5kZW5jaWVzKS5sZW5ndGg7bjxyO24rKyl0PXVbbl0sZT10aGlzLm9ic2VydmUodGhpcy5tb2RlbCx0LHRoaXMuc3luYyksdGhpcy5kZXBlbmRlbmNpZXMucHVzaChlKX1yZXR1cm4gdGhpcy5vYnNlcnZlci52YWx1ZSgpfXJldHVybiB0aGlzLnZhbHVlfS5jYWxsKHRoaXMpKX0sZS5wcm90b3R5cGUucHVibGlzaD1mdW5jdGlvbigpe3ZhciB0LGUsaSxuLHMscixsLHUsaCxhLHAsZDtpZih0aGlzLm9ic2VydmVyKXtmb3IobD10aGlzLmdldFZhbHVlKHRoaXMuZWwpLHM9dGhpcy5mb3JtYXR0ZXJzLmxlbmd0aC0xLGk9dT0wLGg9KGE9dGhpcy5mb3JtYXR0ZXJzLnNsaWNlKDApLnJldmVyc2UoKSkubGVuZ3RoO3U8aDtpPSsrdSllPXMtaSxuPSh0PWFbaV0uc3BsaXQoL1xccysvKSkuc2hpZnQoKSxyPXRoaXMucGFyc2VGb3JtYXR0ZXJBcmd1bWVudHModCxlKSwobnVsbCE9KHA9dGhpcy52aWV3LmZvcm1hdHRlcnNbbl0pP3AucHVibGlzaDp2b2lkIDApJiYobD0oZD10aGlzLnZpZXcuZm9ybWF0dGVyc1tuXSkucHVibGlzaC5hcHBseShkLFtsXS5jb25jYXQoby5jYWxsKHIpKSkpO3JldHVybiB0aGlzLm9ic2VydmVyLnNldFZhbHVlKGwpfX0sZS5wcm90b3R5cGUuYmluZD1mdW5jdGlvbigpe3ZhciB0LGUsaSxuLHMscixvO2lmKHRoaXMucGFyc2VUYXJnZXQoKSxudWxsIT0ocz10aGlzLmJpbmRlci5iaW5kKSYmcy5jYWxsKHRoaXMsdGhpcy5lbCksbnVsbCE9dGhpcy5tb2RlbCYmKG51bGwhPShyPXRoaXMub3B0aW9ucy5kZXBlbmRlbmNpZXMpP3IubGVuZ3RoOnZvaWQgMCkpZm9yKGk9MCxuPShvPXRoaXMub3B0aW9ucy5kZXBlbmRlbmNpZXMpLmxlbmd0aDtpPG47aSsrKXQ9b1tpXSxlPXRoaXMub2JzZXJ2ZSh0aGlzLm1vZGVsLHQsdGhpcy5zeW5jKSx0aGlzLmRlcGVuZGVuY2llcy5wdXNoKGUpO2lmKHRoaXMudmlldy5wcmVsb2FkRGF0YSlyZXR1cm4gdGhpcy5zeW5jKCl9LGUucHJvdG90eXBlLnVuYmluZD1mdW5jdGlvbigpe3ZhciB0LGUsaSxuLHMscixvLGwsdTtmb3IobnVsbCE9KHI9dGhpcy5iaW5kZXIudW5iaW5kKSYmci5jYWxsKHRoaXMsdGhpcy5lbCksbnVsbCE9KG89dGhpcy5vYnNlcnZlcikmJm8udW5vYnNlcnZlKCksbj0wLHM9KGw9dGhpcy5kZXBlbmRlbmNpZXMpLmxlbmd0aDtuPHM7bisrKWxbbl0udW5vYnNlcnZlKCk7Zm9yKGkgaW4gdGhpcy5kZXBlbmRlbmNpZXM9W10sdT10aGlzLmZvcm1hdHRlck9ic2VydmVycylmb3IodCBpbiBlPXVbaV0pZVt0XS51bm9ic2VydmUoKTtyZXR1cm4gdGhpcy5mb3JtYXR0ZXJPYnNlcnZlcnM9e319LGUucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbih0KXt2YXIgZSxpO3JldHVybiBudWxsPT10JiYodD17fSksdGhpcy5tb2RlbD1udWxsIT0oZT10aGlzLm9ic2VydmVyKT9lLnRhcmdldDp2b2lkIDAsbnVsbCE9KGk9dGhpcy5iaW5kZXIudXBkYXRlKT9pLmNhbGwodGhpcyx0KTp2b2lkIDB9LGUucHJvdG90eXBlLmdldFZhbHVlPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmJpbmRlciYmbnVsbCE9dGhpcy5iaW5kZXIuZ2V0VmFsdWU/dGhpcy5iaW5kZXIuZ2V0VmFsdWUuY2FsbCh0aGlzLGUpOnQuVXRpbC5nZXRJbnB1dFZhbHVlKGUpfSxlfSgpLHQuQ29tcG9uZW50QmluZGluZz1mdW5jdGlvbihlKXtmdW5jdGlvbiBpKGUsaSxuKXt2YXIgcyxvLGwsdSxhLHAsZCxjO2Zvcih0aGlzLnZpZXc9ZSx0aGlzLmVsPWksdGhpcy50eXBlPW4sdGhpcy51bmJpbmQ9cih0aGlzLnVuYmluZCx0aGlzKSx0aGlzLmJpbmQ9cih0aGlzLmJpbmQsdGhpcyksdGhpcy5sb2NhbHM9cih0aGlzLmxvY2Fscyx0aGlzKSx0aGlzLmNvbXBvbmVudD10aGlzLnZpZXcuY29tcG9uZW50c1t0aGlzLnR5cGVdLHRoaXMuc3RhdGljPXt9LHRoaXMub2JzZXJ2ZXJzPXt9LHRoaXMudXBzdHJlYW1PYnNlcnZlcnM9e30sbz1lLmJpbmRpbmdSZWdFeHAoKSxhPTAscD0oZD10aGlzLmVsLmF0dHJpYnV0ZXN8fFtdKS5sZW5ndGg7YTxwO2ErKylzPWRbYV0sby50ZXN0KHMubmFtZSl8fChsPXRoaXMuY2FtZWxDYXNlKHMubmFtZSksdT10LlR5cGVQYXJzZXIucGFyc2Uocy52YWx1ZSksaC5jYWxsKG51bGwhPShjPXRoaXMuY29tcG9uZW50LnN0YXRpYyk/YzpbXSxsKT49MD90aGlzLnN0YXRpY1tsXT1zLnZhbHVlOnUudHlwZT09PXQuVHlwZVBhcnNlci50eXBlcy5wcmltaXRpdmU/dGhpcy5zdGF0aWNbbF09dS52YWx1ZTp0aGlzLm9ic2VydmVyc1tsXT1zLnZhbHVlKX1yZXR1cm4gdShpLGUpLGkucHJvdG90eXBlLnN5bmM9ZnVuY3Rpb24oKXt9LGkucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe30saS5wcm90b3R5cGUucHVibGlzaD1mdW5jdGlvbigpe30saS5wcm90b3R5cGUubG9jYWxzPWZ1bmN0aW9uKCl7dmFyIHQsZSxpLG4scyxyO2Zvcih0IGluIGk9e30scz10aGlzLnN0YXRpYyluPXNbdF0saVt0XT1uO2Zvcih0IGluIHI9dGhpcy5vYnNlcnZlcnMpZT1yW3RdLGlbdF09ZS52YWx1ZSgpO3JldHVybiBpfSxpLnByb3RvdHlwZS5jYW1lbENhc2U9ZnVuY3Rpb24odCl7cmV0dXJuIHQucmVwbGFjZSgvLShbYS16XSkvZyxmdW5jdGlvbih0KXtyZXR1cm4gdFsxXS50b1VwcGVyQ2FzZSgpfSl9LGkucHJvdG90eXBlLmJpbmQ9ZnVuY3Rpb24oKXt2YXIgZSxpLG4scyxyLG8sbCx1LGgsYSxwLGQsYyxmLGIsdixtLHksZyx3O2lmKCF0aGlzLmJvdW5kKXtmb3IoaSBpbiBmPXRoaXMub2JzZXJ2ZXJzKW49ZltpXSx0aGlzLm9ic2VydmVyc1tpXT10aGlzLm9ic2VydmUodGhpcy52aWV3Lm1vZGVscyxuLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5jb21wb25lbnRWaWV3Lm1vZGVsc1tlXT10Lm9ic2VydmVyc1tlXS52YWx1ZSgpfX19KHRoaXMpLmNhbGwodGhpcyxpKSk7dGhpcy5ib3VuZD0hMH1pZihudWxsIT10aGlzLmNvbXBvbmVudFZpZXcpdGhpcy5jb21wb25lbnRWaWV3LmJpbmQoKTtlbHNle2Zvcih0aGlzLmVsLmlubmVySFRNTD10aGlzLmNvbXBvbmVudC50ZW1wbGF0ZS5jYWxsKHRoaXMpLGw9dGhpcy5jb21wb25lbnQuaW5pdGlhbGl6ZS5jYWxsKHRoaXMsdGhpcy5lbCx0aGlzLmxvY2FscygpKSx0aGlzLmVsLl9ib3VuZD0hMCxvPXt9LGE9MCxkPShiPXQuZXh0ZW5zaW9ucykubGVuZ3RoO2E8ZDthKyspe2lmKG9bcj1iW2FdXT17fSx0aGlzLmNvbXBvbmVudFtyXSlmb3IoZSBpbiB2PXRoaXMuY29tcG9uZW50W3JdKXU9dltlXSxvW3JdW2VdPXU7Zm9yKGUgaW4gbT10aGlzLnZpZXdbcl0pdT1tW2VdLG51bGw9PShoPW9bcl0pW2VdJiYoaFtlXT11KX1mb3IocD0wLGM9KHk9dC5vcHRpb25zKS5sZW5ndGg7cDxjO3ArKylvW3I9eVtwXV09bnVsbCE9KGc9dGhpcy5jb21wb25lbnRbcl0pP2c6dGhpcy52aWV3W3JdO2ZvcihpIGluIHRoaXMuY29tcG9uZW50Vmlldz1uZXcgdC5WaWV3KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuZWwuY2hpbGROb2RlcyksbCxvKSx0aGlzLmNvbXBvbmVudFZpZXcuYmluZCgpLHc9dGhpcy5vYnNlcnZlcnMpcz13W2ldLHRoaXMudXBzdHJlYW1PYnNlcnZlcnNbaV09dGhpcy5vYnNlcnZlKHRoaXMuY29tcG9uZW50Vmlldy5tb2RlbHMsaSxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxpKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gaS5zZXRWYWx1ZSh0LmNvbXBvbmVudFZpZXcubW9kZWxzW2VdKX19fSh0aGlzKS5jYWxsKHRoaXMsaSxzKSl9fSxpLnByb3RvdHlwZS51bmJpbmQ9ZnVuY3Rpb24oKXt2YXIgdCxlLGksbjtmb3IodCBpbiBlPXRoaXMudXBzdHJlYW1PYnNlcnZlcnMpZVt0XS51bm9ic2VydmUoKTtmb3IodCBpbiBpPXRoaXMub2JzZXJ2ZXJzKWlbdF0udW5vYnNlcnZlKCk7cmV0dXJuIG51bGwhPShuPXRoaXMuY29tcG9uZW50Vmlldyk/bi51bmJpbmQuY2FsbCh0aGlzKTp2b2lkIDB9LGl9KHQuQmluZGluZyksdC5UZXh0QmluZGluZz1mdW5jdGlvbih0KXtmdW5jdGlvbiBlKHQsZSxpLG4scyl7dGhpcy52aWV3PXQsdGhpcy5lbD1lLHRoaXMudHlwZT1pLHRoaXMua2V5cGF0aD1uLHRoaXMub3B0aW9ucz1udWxsIT1zP3M6e30sdGhpcy5zeW5jPXIodGhpcy5zeW5jLHRoaXMpLHRoaXMuZm9ybWF0dGVycz10aGlzLm9wdGlvbnMuZm9ybWF0dGVyc3x8W10sdGhpcy5kZXBlbmRlbmNpZXM9W10sdGhpcy5mb3JtYXR0ZXJPYnNlcnZlcnM9e319cmV0dXJuIHUoZSx0KSxlLnByb3RvdHlwZS5iaW5kZXI9e3JvdXRpbmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kYXRhPW51bGwhPWU/ZTpcIlwifX0sZS5wcm90b3R5cGUuc3luYz1mdW5jdGlvbigpe3JldHVybiBlLl9fc3VwZXJfXy5zeW5jLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZX0odC5CaW5kaW5nKSx0LnB1YmxpYy5iaW5kZXJzLnRleHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gbnVsbCE9dC50ZXh0Q29udGVudD90LnRleHRDb250ZW50PW51bGwhPWU/ZTpcIlwiOnQuaW5uZXJUZXh0PW51bGwhPWU/ZTpcIlwifSx0LnB1YmxpYy5iaW5kZXJzLmh0bWw9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5pbm5lckhUTUw9bnVsbCE9ZT9lOlwiXCJ9LHQucHVibGljLmJpbmRlcnMuc2hvdz1mdW5jdGlvbih0LGUpe3JldHVybiB0LnN0eWxlLmRpc3BsYXk9ZT9cIlwiOlwibm9uZVwifSx0LnB1YmxpYy5iaW5kZXJzLmhpZGU9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5zdHlsZS5kaXNwbGF5PWU/XCJub25lXCI6XCJcIn0sdC5wdWJsaWMuYmluZGVycy5lbmFibGVkPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuZGlzYWJsZWQ9IWV9LHQucHVibGljLmJpbmRlcnMuZGlzYWJsZWQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5kaXNhYmxlZD0hIWV9LHQucHVibGljLmJpbmRlcnMuY2hlY2tlZD17cHVibGlzaGVzOiEwLHByaW9yaXR5OjJlMyxiaW5kOmZ1bmN0aW9uKGUpe3JldHVybiB0LlV0aWwuYmluZEV2ZW50KGUsXCJjaGFuZ2VcIix0aGlzLnB1Ymxpc2gpfSx1bmJpbmQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuVXRpbC51bmJpbmRFdmVudChlLFwiY2hhbmdlXCIsdGhpcy5wdWJsaXNoKX0scm91dGluZTpmdW5jdGlvbih0LGUpe3ZhciBpO3JldHVyblwicmFkaW9cIj09PXQudHlwZT90LmNoZWNrZWQ9KG51bGwhPShpPXQudmFsdWUpP2kudG9TdHJpbmcoKTp2b2lkIDApPT09KG51bGwhPWU/ZS50b1N0cmluZygpOnZvaWQgMCk6dC5jaGVja2VkPSEhZX19LHQucHVibGljLmJpbmRlcnMudW5jaGVja2VkPXtwdWJsaXNoZXM6ITAscHJpb3JpdHk6MmUzLGJpbmQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuVXRpbC5iaW5kRXZlbnQoZSxcImNoYW5nZVwiLHRoaXMucHVibGlzaCl9LHVuYmluZDpmdW5jdGlvbihlKXtyZXR1cm4gdC5VdGlsLnVuYmluZEV2ZW50KGUsXCJjaGFuZ2VcIix0aGlzLnB1Ymxpc2gpfSxyb3V0aW5lOmZ1bmN0aW9uKHQsZSl7dmFyIGk7cmV0dXJuXCJyYWRpb1wiPT09dC50eXBlP3QuY2hlY2tlZD0obnVsbCE9KGk9dC52YWx1ZSk/aS50b1N0cmluZygpOnZvaWQgMCkhPT0obnVsbCE9ZT9lLnRvU3RyaW5nKCk6dm9pZCAwKTp0LmNoZWNrZWQ9IWV9fSx0LnB1YmxpYy5iaW5kZXJzLnZhbHVlPXtwdWJsaXNoZXM6ITAscHJpb3JpdHk6M2UzLGJpbmQ6ZnVuY3Rpb24oZSl7aWYoXCJJTlBVVFwiIT09ZS50YWdOYW1lfHxcInJhZGlvXCIhPT1lLnR5cGUpcmV0dXJuIHRoaXMuZXZlbnQ9XCJTRUxFQ1RcIj09PWUudGFnTmFtZT9cImNoYW5nZVwiOlwiaW5wdXRcIix0LlV0aWwuYmluZEV2ZW50KGUsdGhpcy5ldmVudCx0aGlzLnB1Ymxpc2gpfSx1bmJpbmQ6ZnVuY3Rpb24oZSl7aWYoXCJJTlBVVFwiIT09ZS50YWdOYW1lfHxcInJhZGlvXCIhPT1lLnR5cGUpcmV0dXJuIHQuVXRpbC51bmJpbmRFdmVudChlLHRoaXMuZXZlbnQsdGhpcy5wdWJsaXNoKX0scm91dGluZTpmdW5jdGlvbih0LGUpe3ZhciBuLHMscixvLGwsdSxhO2lmKFwiSU5QVVRcIj09PXQudGFnTmFtZSYmXCJyYWRpb1wiPT09dC50eXBlKXJldHVybiB0LnNldEF0dHJpYnV0ZShcInZhbHVlXCIsZSk7aWYobnVsbCE9d2luZG93LmpRdWVyeSl7aWYodD1pKHQpLChudWxsIT1lP2UudG9TdHJpbmcoKTp2b2lkIDApIT09KG51bGwhPShvPXQudmFsKCkpP28udG9TdHJpbmcoKTp2b2lkIDApKXJldHVybiB0LnZhbChudWxsIT1lP2U6XCJcIil9ZWxzZSBpZihcInNlbGVjdC1tdWx0aXBsZVwiPT09dC50eXBlKXtpZihudWxsIT1lKXtmb3IoYT1bXSxzPTAscj10Lmxlbmd0aDtzPHI7cysrKW49dFtzXSxhLnB1c2gobi5zZWxlY3RlZD0obD1uLnZhbHVlLGguY2FsbChlLGwpPj0wKSk7cmV0dXJuIGF9fWVsc2UgaWYoKG51bGwhPWU/ZS50b1N0cmluZygpOnZvaWQgMCkhPT0obnVsbCE9KHU9dC52YWx1ZSk/dS50b1N0cmluZygpOnZvaWQgMCkpcmV0dXJuIHQudmFsdWU9bnVsbCE9ZT9lOlwiXCJ9fSx0LnB1YmxpYy5iaW5kZXJzLmlmPXtibG9jazohMCxwcmlvcml0eTo0ZTMsYmluZDpmdW5jdGlvbih0KXt2YXIgZSxpO2lmKG51bGw9PXRoaXMubWFya2VyKXJldHVybiBlPVt0aGlzLnZpZXcucHJlZml4LHRoaXMudHlwZV0uam9pbihcIi1cIikucmVwbGFjZShcIi0tXCIsXCItXCIpLGk9dC5nZXRBdHRyaWJ1dGUoZSksdGhpcy5tYXJrZXI9ZG9jdW1lbnQuY3JlYXRlQ29tbWVudChcIiByaXZldHM6IFwiK3RoaXMudHlwZStcIiBcIitpK1wiIFwiKSx0aGlzLmJvdW5kPSExLHQucmVtb3ZlQXR0cmlidXRlKGUpLHQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy5tYXJrZXIsdCksdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHQpfSx1bmJpbmQ6ZnVuY3Rpb24oKXtpZih0aGlzLm5lc3RlZClyZXR1cm4gdGhpcy5uZXN0ZWQudW5iaW5kKCksdGhpcy5ib3VuZD0hMX0scm91dGluZTpmdW5jdGlvbihlLGkpe3ZhciBuLHMscixvO2lmKCEhaT09IXRoaXMuYm91bmQpe2lmKGkpe2ZvcihuIGluIHI9e30sbz10aGlzLnZpZXcubW9kZWxzKXM9b1tuXSxyW25dPXM7cmV0dXJuKHRoaXMubmVzdGVkfHwodGhpcy5uZXN0ZWQ9bmV3IHQuVmlldyhlLHIsdGhpcy52aWV3Lm9wdGlvbnMoKSkpKS5iaW5kKCksdGhpcy5tYXJrZXIucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZSx0aGlzLm1hcmtlci5uZXh0U2libGluZyksdGhpcy5ib3VuZD0hMH1yZXR1cm4gZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpLHRoaXMubmVzdGVkLnVuYmluZCgpLHRoaXMuYm91bmQ9ITF9fSx1cGRhdGU6ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIG51bGwhPShlPXRoaXMubmVzdGVkKT9lLnVwZGF0ZSh0KTp2b2lkIDB9fSx0LnB1YmxpYy5iaW5kZXJzLnVubGVzcz17YmxvY2s6ITAscHJpb3JpdHk6NGUzLGJpbmQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHQucHVibGljLmJpbmRlcnMuaWYuYmluZC5jYWxsKHRoaXMsZSl9LHVuYmluZDpmdW5jdGlvbigpe3JldHVybiB0LnB1YmxpYy5iaW5kZXJzLmlmLnVuYmluZC5jYWxsKHRoaXMpfSxyb3V0aW5lOmZ1bmN0aW9uKGUsaSl7cmV0dXJuIHQucHVibGljLmJpbmRlcnMuaWYucm91dGluZS5jYWxsKHRoaXMsZSwhaSl9LHVwZGF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5wdWJsaWMuYmluZGVycy5pZi51cGRhdGUuY2FsbCh0aGlzLGUpfX0sdC5wdWJsaWMuYmluZGVyc1tcIm9uLSpcIl09e2Z1bmN0aW9uOiEwLHByaW9yaXR5OjFlMyx1bmJpbmQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5oYW5kbGVyKXJldHVybiB0LlV0aWwudW5iaW5kRXZlbnQoZSx0aGlzLmFyZ3NbMF0sdGhpcy5oYW5kbGVyKX0scm91dGluZTpmdW5jdGlvbihlLGkpe3JldHVybiB0aGlzLmhhbmRsZXImJnQuVXRpbC51bmJpbmRFdmVudChlLHRoaXMuYXJnc1swXSx0aGlzLmhhbmRsZXIpLHQuVXRpbC5iaW5kRXZlbnQoZSx0aGlzLmFyZ3NbMF0sdGhpcy5oYW5kbGVyPXRoaXMuZXZlbnRIYW5kbGVyKGkpKX19LHQucHVibGljLmJpbmRlcnNbXCJlYWNoLSpcIl09e2Jsb2NrOiEwLHByaW9yaXR5OjRlMyxiaW5kOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixzO2lmKG51bGw9PXRoaXMubWFya2VyKWU9W3RoaXMudmlldy5wcmVmaXgsdGhpcy50eXBlXS5qb2luKFwiLVwiKS5yZXBsYWNlKFwiLS1cIixcIi1cIiksdGhpcy5tYXJrZXI9ZG9jdW1lbnQuY3JlYXRlQ29tbWVudChcIiByaXZldHM6IFwiK3RoaXMudHlwZStcIiBcIiksdGhpcy5pdGVyYXRlZD1bXSx0LnJlbW92ZUF0dHJpYnV0ZShlKSx0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMubWFya2VyLHQpLHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KTtlbHNlIGZvcihpPTAsbj0ocz10aGlzLml0ZXJhdGVkKS5sZW5ndGg7aTxuO2krKylzW2ldLmJpbmQoKX0sdW5iaW5kOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtpZihudWxsIT10aGlzLml0ZXJhdGVkKWZvcihlPTAsaT0obj10aGlzLml0ZXJhdGVkKS5sZW5ndGg7ZTxpO2UrKyluW2VdLnVuYmluZCgpfSxyb3V0aW5lOmZ1bmN0aW9uKGUsaSl7dmFyIG4scyxyLG8sbCx1LGgsYSxwLGQsYyxmLGIsdixtLHksZyx3LGs7aWYodT10aGlzLmFyZ3NbMF0saT1pfHxbXSx0aGlzLml0ZXJhdGVkLmxlbmd0aD5pLmxlbmd0aClmb3IoYz0wLHY9KGc9QXJyYXkodGhpcy5pdGVyYXRlZC5sZW5ndGgtaS5sZW5ndGgpKS5sZW5ndGg7Yzx2O2MrKylnW2NdLChkPXRoaXMuaXRlcmF0ZWQucG9wKCkpLnVuYmluZCgpLHRoaXMubWFya2VyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZC5lbHNbMF0pO2ZvcihyPWY9MCxtPWkubGVuZ3RoO2Y8bTtyPSsrZilpZihsPWlbcl0sKHM9e2luZGV4OnJ9KVt0LnB1YmxpYy5pdGVyYXRpb25BbGlhcyh1KV09cixzW3VdPWwsbnVsbD09dGhpcy5pdGVyYXRlZFtyXSl7Zm9yKG8gaW4gdz10aGlzLnZpZXcubW9kZWxzKWw9d1tvXSxudWxsPT1zW29dJiYoc1tvXT1sKTthPXRoaXMuaXRlcmF0ZWQubGVuZ3RoP3RoaXMuaXRlcmF0ZWRbdGhpcy5pdGVyYXRlZC5sZW5ndGgtMV0uZWxzWzBdOnRoaXMubWFya2VyLChoPXRoaXMudmlldy5vcHRpb25zKCkpLnByZWxvYWREYXRhPSEwLHA9ZS5jbG9uZU5vZGUoITApLChkPW5ldyB0LlZpZXcocCxzLGgpKS5iaW5kKCksdGhpcy5pdGVyYXRlZC5wdXNoKGQpLHRoaXMubWFya2VyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHAsYS5uZXh0U2libGluZyl9ZWxzZSB0aGlzLml0ZXJhdGVkW3JdLm1vZGVsc1t1XSE9PWwmJnRoaXMuaXRlcmF0ZWRbcl0udXBkYXRlKHMpO2lmKFwiT1BUSU9OXCI9PT1lLm5vZGVOYW1lKWZvcihiPTAseT0oaz10aGlzLnZpZXcuYmluZGluZ3MpLmxlbmd0aDtiPHk7YisrKShuPWtbYl0pLmVsPT09dGhpcy5tYXJrZXIucGFyZW50Tm9kZSYmXCJ2YWx1ZVwiPT09bi50eXBlJiZuLnN5bmMoKX0sdXBkYXRlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbixzLHIsbztmb3IoaSBpbiBlPXt9LHQpbj10W2ldLGkhPT10aGlzLmFyZ3NbMF0mJihlW2ldPW4pO2ZvcihzPTAscj0obz10aGlzLml0ZXJhdGVkKS5sZW5ndGg7czxyO3MrKylvW3NdLnVwZGF0ZShlKX19LHQucHVibGljLmJpbmRlcnNbXCJjbGFzcy0qXCJdPWZ1bmN0aW9uKHQsZSl7dmFyIGk7aWYoIWU9PSgtMSE9PShpPVwiIFwiK3QuY2xhc3NOYW1lK1wiIFwiKS5pbmRleE9mKFwiIFwiK3RoaXMuYXJnc1swXStcIiBcIikpKXJldHVybiB0LmNsYXNzTmFtZT1lP3QuY2xhc3NOYW1lK1wiIFwiK3RoaXMuYXJnc1swXTppLnJlcGxhY2UoXCIgXCIrdGhpcy5hcmdzWzBdK1wiIFwiLFwiIFwiKS50cmltKCl9LHQucHVibGljLmJpbmRlcnNbXCIqXCJdPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG51bGwhPWU/dC5zZXRBdHRyaWJ1dGUodGhpcy50eXBlLGUpOnQucmVtb3ZlQXR0cmlidXRlKHRoaXMudHlwZSl9LHQucHVibGljLmZvcm1hdHRlcnMuY2FsbD1mdW5jdGlvbigpe3ZhciB0LGU7cmV0dXJuIGU9YXJndW1lbnRzWzBdLHQ9Mjw9YXJndW1lbnRzLmxlbmd0aD9vLmNhbGwoYXJndW1lbnRzLDEpOltdLGUuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQoby5jYWxsKHQpKSl9LHQucHVibGljLmFkYXB0ZXJzW1wiLlwiXT17aWQ6XCJfcnZcIixjb3VudGVyOjAsd2Vha21hcDp7fSx3ZWFrUmVmZXJlbmNlOmZ1bmN0aW9uKHQpe3ZhciBlLGksbjtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eSh0aGlzLmlkKXx8KGU9dGhpcy5jb3VudGVyKyssT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsdGhpcy5pZCx7dmFsdWU6ZX0pKSwoaT10aGlzLndlYWttYXApW249dFt0aGlzLmlkXV18fChpW25dPXtjYWxsYmFja3M6e319KX0sY2xlYW51cFdlYWtSZWZlcmVuY2U6ZnVuY3Rpb24odCxlKXtpZighKE9iamVjdC5rZXlzKHQuY2FsbGJhY2tzKS5sZW5ndGh8fHQucG9pbnRlcnMmJk9iamVjdC5rZXlzKHQucG9pbnRlcnMpLmxlbmd0aCkpcmV0dXJuIGRlbGV0ZSB0aGlzLndlYWttYXBbZV19LHN0dWJGdW5jdGlvbjpmdW5jdGlvbih0LGUpe3ZhciBpLG4scztyZXR1cm4gbj10W2VdLGk9dGhpcy53ZWFrUmVmZXJlbmNlKHQpLHM9dGhpcy53ZWFrbWFwLHRbZV09ZnVuY3Rpb24oKXt2YXIgZSxyLG8sbCx1LGgsYSxwLGQ7Zm9yKHIgaW4gbz1uLmFwcGx5KHQsYXJndW1lbnRzKSxoPWkucG9pbnRlcnMpZm9yKGU9aFtyXSxsPTAsdT0oZD1udWxsIT0oYT1udWxsIT0ocD1zW3JdKT9wLmNhbGxiYWNrc1tlXTp2b2lkIDApP2E6W10pLmxlbmd0aDtsPHU7bCsrKSgwLGRbbF0pKCk7cmV0dXJuIG99fSxvYnNlcnZlTXV0YXRpb25zOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixzLHIsbyxsLHU7aWYoQXJyYXkuaXNBcnJheSh0KSl7aWYobnVsbD09KHI9dGhpcy53ZWFrUmVmZXJlbmNlKHQpKS5wb2ludGVycylmb3Ioci5wb2ludGVycz17fSxsPTAsdT0ocz1bXCJwdXNoXCIsXCJwb3BcIixcInNoaWZ0XCIsXCJ1bnNoaWZ0XCIsXCJzb3J0XCIsXCJyZXZlcnNlXCIsXCJzcGxpY2VcIl0pLmxlbmd0aDtsPHU7bCsrKW49c1tsXSx0aGlzLnN0dWJGdW5jdGlvbih0LG4pO2lmKG51bGw9PShvPXIucG9pbnRlcnMpW2VdJiYob1tlXT1bXSksaC5jYWxsKHIucG9pbnRlcnNbZV0saSk8MClyZXR1cm4gci5wb2ludGVyc1tlXS5wdXNoKGkpfX0sdW5vYnNlcnZlTXV0YXRpb25zOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixzLHI7aWYoQXJyYXkuaXNBcnJheSh0KSYmbnVsbCE9dFt0aGlzLmlkXSYmKHM9dGhpcy53ZWFrbWFwW3RbdGhpcy5pZF1dKSYmKHI9cy5wb2ludGVyc1tlXSkpcmV0dXJuKG49ci5pbmRleE9mKGkpKT49MCYmci5zcGxpY2UobiwxKSxyLmxlbmd0aHx8ZGVsZXRlIHMucG9pbnRlcnNbZV0sdGhpcy5jbGVhbnVwV2Vha1JlZmVyZW5jZShzLHRbdGhpcy5pZF0pfSxvYnNlcnZlOmZ1bmN0aW9uKHQsZSxpKXt2YXIgbixzLHIsbztyZXR1cm4gbnVsbD09KG49dGhpcy53ZWFrUmVmZXJlbmNlKHQpLmNhbGxiYWNrcylbZV0mJihuW2VdPVtdLChudWxsIT0ocz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQsZSkpP3MuZ2V0OnZvaWQgMCl8fChudWxsIT1zP3Muc2V0OnZvaWQgMCl8fChyPXRbZV0sT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gcn0sc2V0OihvPXRoaXMsZnVuY3Rpb24oaSl7dmFyIHMsbCx1LGEscDtpZihpIT09ciYmKG8udW5vYnNlcnZlTXV0YXRpb25zKHIsdFtvLmlkXSxlKSxyPWksbD1vLndlYWttYXBbdFtvLmlkXV0pKXtpZigobj1sLmNhbGxiYWNrcylbZV0pZm9yKHU9MCxhPShwPW5bZV0uc2xpY2UoKSkubGVuZ3RoO3U8YTt1Kyspcz1wW3VdLGguY2FsbChuW2VdLHMpPj0wJiZzKCk7cmV0dXJuIG8ub2JzZXJ2ZU11dGF0aW9ucyhpLHRbby5pZF0sZSl9fSl9KSkpLGguY2FsbChuW2VdLGkpPDAmJm5bZV0ucHVzaChpKSx0aGlzLm9ic2VydmVNdXRhdGlvbnModFtlXSx0W3RoaXMuaWRdLGUpfSx1bm9ic2VydmU6ZnVuY3Rpb24odCxlLGkpe3ZhciBuLHMscjtpZigocj10aGlzLndlYWttYXBbdFt0aGlzLmlkXV0pJiYobj1yLmNhbGxiYWNrc1tlXSkpcmV0dXJuKHM9bi5pbmRleE9mKGkpKT49MCYmKG4uc3BsaWNlKHMsMSksbi5sZW5ndGh8fChkZWxldGUgci5jYWxsYmFja3NbZV0sdGhpcy51bm9ic2VydmVNdXRhdGlvbnModFtlXSx0W3RoaXMuaWRdLGUpKSksdGhpcy5jbGVhbnVwV2Vha1JlZmVyZW5jZShyLHRbdGhpcy5pZF0pfSxnZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXX0sc2V0OmZ1bmN0aW9uKHQsZSxpKXtyZXR1cm4gdFtlXT1pfX0sdC5mYWN0b3J5PWZ1bmN0aW9uKGUpe3JldHVybiB0LnNpZ2h0Z2xhc3M9ZSx0LnB1YmxpYy5fPXQsdC5wdWJsaWN9LFwib2JqZWN0XCI9PXR5cGVvZihcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlJiZudWxsIT09bW9kdWxlP21vZHVsZS5leHBvcnRzOnZvaWQgMCk/bW9kdWxlLmV4cG9ydHM9dC5mYWN0b3J5KHJlcXVpcmUoXCJzaWdodGdsYXNzXCIpKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtcInNpZ2h0Z2xhc3NcIl0sZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMucml2ZXRzPXQuZmFjdG9yeShlKX0pOnRoaXMucml2ZXRzPXQuZmFjdG9yeShzaWdodGdsYXNzKX0pLmNhbGwodGhpcyk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbkpwZG1WMGN5NXFjeUpkTENKdVlXMWxjeUk2V3lKU2FYWmxkSE1pTENKaWFXNWtUV1YwYUc5a0lpd2lhbEYxWlhKNUlpd2lkVzVpYVc1a1RXVjBhRzlrSWl3aVgzSmxaaUlzSWw5ZlltbHVaQ0lzSW1adUlpd2liV1VpTENKaGNIQnNlU0lzSW1GeVozVnRaVzUwY3lJc0lsOWZjMnhwWTJVaUxDSnpiR2xqWlNJc0lsOWZhR0Z6VUhKdmNDSXNJbWhoYzA5M2JsQnliM0JsY25SNUlpd2lYMTlsZUhSbGJtUnpJaXdpWTJocGJHUWlMQ0p3WVhKbGJuUWlMQ0pyWlhraUxDSmpZV3hzSWl3aVkzUnZjaUlzSW5Sb2FYTWlMQ0pqYjI1emRISjFZM1J2Y2lJc0luQnliM1J2ZEhsd1pTSXNJbDlmYzNWd1pYSmZYeUlzSWw5ZmFXNWtaWGhQWmlJc0ltbHVaR1Y0VDJZaUxDSnBkR1Z0SWl3aWFTSXNJbXdpTENKc1pXNW5kR2dpTENKdmNIUnBiMjV6SWl3aVpYaDBaVzV6YVc5dWN5SXNJbkIxWW14cFl5SXNJbUpwYm1SbGNuTWlMQ0pqYjIxd2IyNWxiblJ6SWl3aVptOXliV0YwZEdWeWN5SXNJbUZrWVhCMFpYSnpJaXdpY0hKbFptbDRJaXdpZEdWdGNHeGhkR1ZFWld4cGJXbDBaWEp6SWl3aWNtOXZkRWx1ZEdWeVptRmpaU0lzSW5CeVpXeHZZV1JFWVhSaElpd2laWGhsWTNWMFpVWjFibU4wYVc5dWN5SXNJbWwwWlhKaGRHbHZia0ZzYVdGeklpd2liVzlrWld4T1lXMWxJaXdpYUdGdVpHeGxjaUlzSW1OdmJuUmxlSFFpTENKbGRpSXNJbUpwYm1ScGJtY2lMQ0oyYVdWM0lpd2liVzlrWld4eklpd2lZMjl1Wm1sbmRYSmxJaXdpWkdWelkzSnBjSFJ2Y2lJc0ltOXdkR2x2YmlJc0luWmhiSFZsSWl3aVltbHVaQ0lzSW1Wc0lpd2lWbWxsZHlJc0ltbHVhWFFpTENKamIyMXdiMjVsYm5RaUxDSmtZWFJoSWl3aWMyTnZjR1VpTENKMFpXMXdiR0YwWlNJc0ltUnZZM1Z0Wlc1MElpd2lZM0psWVhSbFJXeGxiV1Z1ZENJc0lraFVUVXhGYkdWdFpXNTBJaXdpWm1seWMzUkRhR2xzWkNJc0luSmxiVzkyWlVOb2FXeGtJaXdpWVhCd1pXNWtRMmhwYkdRaUxDSnBibTVsY2toVVRVd2lMQ0pwYm1sMGFXRnNhWHBsSWl3aWQybHVaRzkzSWl3aVZYUnBiQ0lzSW1KcGJtUkZkbVZ1ZENJc0ltVjJaVzUwSWl3aWRXNWlhVzVrUlhabGJuUWlMQ0puWlhSSmJuQjFkRlpoYkhWbElpd2lKR1ZzSWl3aVlYUjBjaUlzSW1seklpd2lkbUZzSWl3aVlXUmtSWFpsYm5STWFYTjBaVzVsY2lJc0ltRjBkR0ZqYUVWMlpXNTBJaXdpY21WdGIzWmxSWFpsYm5STWFYTjBaVzVsY2lJc0ltUmxkR0ZqYUVWMlpXNTBJaXdpYnlJc0lsOXBJaXdpWDJ4bGJpSXNJbDl5WlhOMWJIUnpJaXdpZEhsd1pTSXNJbU5vWldOclpXUWlMQ0p6Wld4bFkzUmxaQ0lzSW5CMWMyZ2lMQ0pVZVhCbFVHRnljMlZ5SWl3aWRIbHdaWE1pTENKd2NtbHRhWFJwZG1VaUxDSnJaWGx3WVhSb0lpd2ljR0Z5YzJVaUxDSnpkSEpwYm1jaUxDSjBaWE4wSWl3aWFYTk9ZVTRpTENKT2RXMWlaWElpTENKVVpYaDBWR1Z0Y0d4aGRHVlFZWEp6WlhJaUxDSjBaWGgwSWl3aVpHVnNhVzFwZEdWeWN5SXNJbWx1WkdWNElpd2liR0Z6ZEVsdVpHVjRJaXdpYkdGemRGUnZhMlZ1SWl3aWMzVmljM1J5YVc1bklpd2lkRzlyWlc1eklpd2lkSEpwYlNJc0ltVnNjeUlzSW1zaUxDSjJJaXdpWDJKaGMyVWlMQ0pmYWlJc0lsOXNaVzR4SWl3aVgzSmxaakVpTENKZmNtVm1NaUlzSWw5eVpXWXpJaXdpWDNKbFpqUWlMQ0pmY21WbU5TSXNJblZ3WkdGMFpTSXNJbkIxWW14cGMyZ2lMQ0p6ZVc1aklpd2lkVzVpYVc1a0lpd2ljMlZzWldOMElpd2lkSEpoZG1WeWMyVWlMQ0ppZFdsc1pDSXNJbUoxYVd4a1FtbHVaR2x1WnlJc0ltSnBibVJwYm1kU1pXZEZlSEFpTENKcWNYVmxjbmtpTENKQmNuSmhlU0lzSW1OdmJtTmhkQ0lzSWxKbFowVjRjQ0lzSW01dlpHVWlMQ0prWldOc1lYSmhkR2x2YmlJc0ltTjBlQ0lzSW1SbGNHVnVaR1Z1WTJsbGN5SXNJbkJwY0dVaUxDSndhWEJsY3lJc0ltMWhkR05vSWl3aWMyaHBablFpTENKemNHeHBkQ0lzSW1KcGJtUnBibWR6SWl3aVgzUm9hWE1pTENKaWJHOWpheUlzSW1Ob2FXeGtUbTlrWlNJc0ltNGlMQ0p3WVhKelpYSWlMQ0owYjJ0bGJpSXNJbTV2WkdWVWVYQmxJaXdpWTNKbFlYUmxWR1Y0ZEU1dlpHVWlMQ0p3WVhKbGJuUk9iMlJsSWl3aWFXNXpaWEowUW1WbWIzSmxJaXdpWDJzaUxDSmphR2xzWkU1dlpHVnpJaXdpYzI5eWRDSXNJbUVpTENKaUlpd2lZbWx1WkdWeUlpd2ljSEpwYjNKcGRIa2lMQ0poZEhSeWFXSjFkR1VpTENKaGRIUnlhV0oxZEdWeklpd2lhV1JsYm5ScFptbGxjaUlzSW01dlpHVk9ZVzFsSWl3aWJtRnRaU0lzSW5KbGNHeGhZMlVpTENKMGIweHZkMlZ5UTJGelpTSXNJbDlpYjNWdVpDSXNJa052YlhCdmJtVnVkRUpwYm1ScGJtY2lMQ0p3ZFdKc2FYTm9aWE1pTENKdGIyUmxiQ0lzSWtKcGJtUnBibWNpTENKblpYUldZV3gxWlNJc0luTmxkQ0lzSW1WMlpXNTBTR0Z1Wkd4bGNpSXNJbVp2Y20xaGRIUmxaRlpoYkhWbElpd2ljR0Z5YzJWR2IzSnRZWFIwWlhKQmNtZDFiV1Z1ZEhNaUxDSndZWEp6WlZSaGNtZGxkQ0lzSW05aWMyVnlkbVVpTENKelpYUkNhVzVrWlhJaUxDSm1iM0p0WVhSMFpYSlBZbk5sY25abGNuTWlMQ0poY21keklpd2laWGhsWXlJc0lrWjFibU4wYVc5dUlpd2ljbTkxZEdsdVpTSXNJbTlpYWlJc0ltTmhiR3hpWVdOcklpd2ljMmxuYUhSbmJHRnpjeUlzSW5KdmIzUWlMQ0p2WW5ObGNuWmxjaUlzSW5SaGNtZGxkQ0lzSW1admNtMWhkSFJsY2tsdVpHVjRJaXdpWVdraUxDSmhjbWNpTENKd2NtOWpaWE56WldSQmNtZHpJaXdpWm1raUxDSm1iM0p0WVhSMFpYSWlMQ0pwWkNJc0luSmxZV1FpTENKa1pYQmxibVJsYm1ONUlpd2lkVzV2WW5ObGNuWmxJaXdpWm1sU1pYWmxjbk5sWkNJc0lteGhjM1JtYjNKdFlYUjBaWEpKYm1SbGVDSXNJbkpsZG1WeWMyVWlMQ0p6WlhSV1lXeDFaU0lzSWw5emRYQmxjaUlzSW5CeWIzQmxjblI1VG1GdFpTSXNJbXh2WTJGc2N5SXNJbTlpYzJWeWRtVnljeUlzSW5Wd2MzUnlaV0Z0VDJKelpYSjJaWEp6SWl3aVkyRnRaV3hEWVhObElpd2ljbVZ6ZFd4MElpd2laM0p2ZFhCbFpDSXNJblJ2VlhCd1pYSkRZWE5sSWl3aVgzSmxaallpTENKZmNtVm1OeUlzSW1KdmRXNWtJaXdpWTI5dGNHOXVaVzUwVm1sbGR5SXNJbFJsZUhSQ2FXNWthVzVuSWl3aWRHVjRkRU52Ym5SbGJuUWlMQ0pwYm01bGNsUmxlSFFpTENKb2RHMXNJaXdpYzJodmR5SXNJbk4wZVd4bElpd2laR2x6Y0d4aGVTSXNJbWhwWkdVaUxDSmxibUZpYkdWa0lpd2laR2x6WVdKc1pXUWlMQ0owYjFOMGNtbHVaeUlzSW5WdVkyaGxZMnRsWkNJc0luUmhaMDVoYldVaUxDSnpaWFJCZEhSeWFXSjFkR1VpTENKdFlYSnJaWElpTENKcWIybHVJaXdpWjJWMFFYUjBjbWxpZFhSbElpd2lZM0psWVhSbFEyOXRiV1Z1ZENJc0luSmxiVzkyWlVGMGRISnBZblYwWlNJc0ltNWxjM1JsWkNJc0ltNWxlSFJUYVdKc2FXNW5JaXdpZFc1c1pYTnpJaXdpWm5WdVkzUnBiMjRpTENKcGRHVnlZWFJsWkNJc0ltTnZiR3hsWTNScGIyNGlMQ0p3Y21WMmFXOTFjeUlzSWw5c1pXNHlJaXdpY0c5d0lpd2lZMnh2Ym1WT2IyUmxJaXdpWld4RGJHRnpjeUlzSW1Oc1lYTnpUbUZ0WlNJc0ltTnZkVzUwWlhJaUxDSjNaV0ZyYldGd0lpd2lkMlZoYTFKbFptVnlaVzVqWlNJc0lsOXVZVzFsSWl3aVQySnFaV04wSWl3aVpHVm1hVzVsVUhKdmNHVnlkSGtpTENKallXeHNZbUZqYTNNaUxDSmpiR1ZoYm5Wd1YyVmhhMUpsWm1WeVpXNWpaU0lzSW5KbFppSXNJbXRsZVhNaUxDSndiMmx1ZEdWeWN5SXNJbk4wZFdKR2RXNWpkR2x2YmlJc0ltMWhjQ0lzSW05eWFXZHBibUZzSWl3aWNpSXNJbkpsYzNCdmJuTmxJaXdpYjJKelpYSjJaVTExZEdGMGFXOXVjeUlzSW1aMWJtTjBhVzl1Y3lJc0ltbHpRWEp5WVhraUxDSjFibTlpYzJWeWRtVk5kWFJoZEdsdmJuTWlMQ0pwWkhnaUxDSnpjR3hwWTJVaUxDSmtaWE5qSWl3aVoyVjBUM2R1VUhKdmNHVnlkSGxFWlhOamNtbHdkRzl5SWl3aVoyVjBJaXdpWlc1MWJXVnlZV0pzWlNJc0ltNWxkMVpoYkhWbElpd2lZMklpTENKbVlXTjBiM0o1SWl3aVh5SXNJbTF2WkhWc1pTSXNJbVY0Y0c5eWRITWlMQ0p5WlhGMWFYSmxJaXdpWkdWbWFXNWxJaXdpWVcxa0lpd2ljbWwyWlhSeklsMHNJbTFoY0hCcGJtZHpJam9pUTBGSlFTeFhRVU5GTEVsQlFVbEJMRVZCUVZGRExFVkJRVmxETEVWQlFWRkRMRVZCUVdORExFVkJRelZEUXl4RlFVRlRMRk5CUVZORExFVkJRVWxETEVkQlFVc3NUMEZCVHl4WFFVRlpMRTlCUVU5RUxFVkJRVWRGTEUxQlFVMUVMRVZCUVVsRkxHRkJRMnhGUXl4RlFVRlZMRWRCUVVkRExFMUJRMkpETEVWQlFWa3NSMEZCUjBNc1pVRkRaa01zUlVGQldTeFRRVUZUUXl4RlFVRlBReXhIUVVGVkxFbEJRVXNzU1VGQlNVTXNTMEZCVDBRc1JVRkJZMG9zUlVGQlZVMHNTMEZCUzBZc1JVRkJVVU1zUzBGQlRVWXNSVUZCVFVVc1IwRkJUMFFzUlVGQlQwTXNTVUZCVVN4VFFVRlRSU3hKUVVGVFF5eExRVUZMUXl4WlFVRmpUaXhGUVVFNFJ5eFBRVUZ5UjBrc1JVRkJTMGNzVlVGQldVNHNSVUZCVDAwc1ZVRkJWMUFzUlVGQlRVOHNWVUZCV1N4SlFVRkpTQ3hGUVVGUlNpeEZRVUZOVVN4VlFVRlpVQ3hGUVVGUFRTeFZRVUZyUWxBc1IwRkRkbEpUTEVWQlFWa3NSMEZCUjBNc1UwRkJWeXhUUVVGVFF5eEhRVUZSTEVsQlFVc3NTVUZCU1VNc1JVRkJTU3hGUVVGSFF5eEZRVUZKVWl4TFFVRkxVeXhQUVVGUlJpeEZRVUZKUXl4RlFVRkhSQ3hKUVVGUExFZEJRVWxCTEV0QlFVdFFMRTFCUVZGQkxFdEJRVXRQTEV0QlFVOUVMRVZCUVUwc1QwRkJUME1zUlVGQlN5eFBRVUZSTEVkQlJXNUtNMElzUlVGQlV5eERRVU5RT0VJc1VVRkJVeXhEUVVGRExGTkJRVlVzY1VKQlFYTkNMR2RDUVVGcFFpeGpRVUZsTEZWQlFWY3NiMEpCUTNKR1F5eFhRVUZaTEVOQlFVTXNWVUZCVnl4aFFVRmpMR0ZCUVdNc1dVRkRjRVJETEU5QlFWVXNRMEZEVWtNc1VVRkJVeXhIUVVOVVF5eFhRVUZaTEVkQlExcERMRmRCUVZrc1IwRkRXa01zVTBGQlZTeEhRVU5XUXl4UFFVRlJMRXRCUTFKRExHMUNRVUZ2UWl4RFFVRkRMRWxCUVVzc1MwRkRNVUpETEdOQlFXVXNTVUZEWmtNc1lVRkJZU3hGUVVOaVF5eHJRa0ZCYTBJc1JVRkRiRUpETEdWQlFXZENMRk5CUVZORExFZEJRM1pDTEUxQlFVOHNTVUZCVFVFc1JVRkJXU3hMUVVVelFrTXNVVUZCVXl4VFFVRlRReXhGUVVGVFF5eEZRVUZKUXl4SFFVTTNRaXhQUVVGUE0wSXNTMEZCUzBZc1MwRkJTekpDTEVWQlFWTkRMRVZCUVVsRExFVkJRVkZETEV0QlFVdERMRk5CUlRkRFF5eFZRVUZYTEZOQlFWTndRaXhIUVVOc1FpeEpRVUZKY1VJc1JVRkJXV3hETEVWQlFVdHRReXhGUVVGUlF5eEZRVWszUWl4SlFVRkxSQ3hMUVVoVkxFMUJRVmgwUWl4SlFVTkdRU3hGUVVGVkxFbEJSVWRCTEVWQlJXSXNSMEZFUVhWQ0xFVkJRVkYyUWl4RlFVRlJjMElzUjBGRFJDeFpRVUZZUVN4SFFVRnRReXhsUVVGWVFTeEhRVUZ6UXl4bFFVRllRU3hIUVVGelF5eGhRVUZZUVN4RlFVTm9SaXhKUVVGTGJrTXNTMEZCVDI5RExFVkJRMVpHTEVWQlFXRkZMRVZCUVUxd1F5eEhRVU51UW1wQ0xFVkJRVTl2UkN4SFFVRlJia01zUjBGQlQydERMRTlCUjNoQ2JrUXNSVUZCWlN4UFFVRkZiMFFzUjBGQlZVTXNSMEZKYWtORExFdEJRVTBzVTBGQlUwTXNSVUZCU1U0c1JVRkJVVzVDTEVkQlEzcENMRWxCUVVsclFpeEZRVk5LTEU5QlVtTXNUVUZCVmtNc1NVRkRSa0VzUlVGQlV5eEpRVVZKTEUxQlFWaHVRaXhKUVVOR1FTeEZRVUZWTEV0QlJWcHJRaXhGUVVGUExFbEJRVWxvUkN4RlFVRlBkMFFzUzBGQlMwUXNSVUZCU1U0c1JVRkJVVzVDTEVsQlF6bENkMElzVDBGRFJVNHNSMEZGVkZNc1MwRkJUU3hUUVVGVFF5eEZRVUZYU0N4RlFVRkpTU3hIUVVNMVFpeEpRVUZKUXl4RlFVRlBReXhGUVVGVllpeEZRVk55UWl4SFFWSlpMRTFCUVZKWExFbEJRMFpCTEVWQlFVOHNTVUZGUXl4TlFVRk9TaXhKUVVOR1FTeEZRVUZMVHl4VFFVRlRReXhqUVVGakxGTkJSemxDUml4SFFVUkJTQ3hGUVVGWk1VUXNSVUZCWlN4UFFVRkZhME1zVjBGQlYzZENMRWxCUTI1Q1J5eFRRVUZUTTBNc1MwRkJTMFVzUzBGQlRXMURMR05CUTJwQ1V5eFpRVUZoTEVOQlEyNURMRXRCUVU5VUxFVkJRVWRWTEZsQlExSldMRVZCUVVkWExGbEJRVmxZTEVWQlFVZFZMRmxCUlhCQ1ZpeEZRVUZIV1N4WlFVRlpUaXhSUVVWbVRpeEZRVUZIWVN4VlFVRlpVQ3hGUVV0cVFpeFBRVWhCUkN4RlFVRlJSaXhGUVVGVlZ5eFhRVUZYYmtRc1MwRkJTMFVzUzBGQlRXMURMRVZCUVVsSkxFbEJRelZEV0N4RlFVRlBMRWxCUVVsb1JDeEZRVUZQZDBRc1MwRkJTMFFzUlVGQlNVc3NTVUZEZEVKT0xFOUJRMFZPTEV0QlMxUnpRaXhQUVVGbExGRkJRVXRCTEU5QlFWVXNSMEZGYUVOc1JTeEZRVUZQTEU5QlJGQkdMRVZCUVZOdlJTeFBRVUZsTEZGQlFVdEJMRTlCUVZVc1IwRkRha0pvUkN4VlFVRlpMRU5CUVVNc1MwRkJUU3hQUVVGVExFTkJRVU1zVDBGQlVTeFZRVUZYY2tJc1JVRkJZVWNzUlVGQlN5eEhRVUZKUkN4RlFVRmxReXhGUVVGTExFZEJRMmhJU2l4RlFVRlBkVVVzUzBGQlR5eERRVU5hUXl4VlFVRlhMRk5CUVZOcVFpeEZRVUZKYTBJc1JVRkJUemRDTEVkQlF6ZENMRTlCUVU4eFF5eEZRVUZQY1VRc1IwRkJTWFJFTEVkQlFWbDNSU3hGUVVGUE4wSXNTVUZGZGtNNFFpeFpRVUZoTEZOQlFWTnVRaXhGUVVGSmEwSXNSVUZCVHpkQ0xFZEJReTlDTEU5QlFVOHhReXhGUVVGUGNVUXNSMEZCU1hCRUxFZEJRV056UlN4RlFVRlBOMElzU1VGRmVrTXJRaXhqUVVGbExGTkJRVk53UWl4SFFVTjBRaXhKUVVGSmNVSXNSVUZGU2l4TlFVRjVRaXhqUVVSNlFrRXNSVUZCVFRGRkxFVkJRVTl4UkN4SlFVTk1jMElzUzBGQlN5eFJRVU5LUkN4RlFVRkpSU3hIUVVGSExGbEJSVkJHTEVWQlFVbEhMRk5CUzJwQ0wwVXNSVUZCVDNWRkxFdEJRVThzUTBGRFdrTXNWVUZEVFN4eFFrRkJjMEpHTEU5QlEycENMRk5CUVZObUxFVkJRVWxyUWl4RlFVRlBOMElzUjBGRGVrSXNUMEZCVDFjc1JVRkJSM2xDTEdsQ1FVRnBRbEFzUlVGQlR6ZENMRWRCUVZNc1NVRkhlRU1zVTBGQlUxY3NSVUZCU1d0Q0xFVkJRVTgzUWl4SFFVTjZRaXhQUVVGUFZ5eEZRVUZITUVJc1dVRkJXU3hMUVVGUFVpeEZRVUZQTjBJc1NVRkhlRU00UWl4WlFVTk5MSGRDUVVGNVFrb3NUMEZEY0VJc1UwRkJVMllzUlVGQlNXdENMRVZCUVU4M1FpeEhRVU42UWl4UFFVRlBWeXhGUVVGSE1rSXNiMEpCUVc5Q1ZDeEZRVUZQTjBJc1IwRkJVeXhKUVVjelF5eFRRVUZUVnl4RlFVRkphMElzUlVGQlR6ZENMRWRCUTNwQ0xFOUJRVTlYTEVWQlFVYzBRaXhaUVVGWkxFdEJRVTlXTEVWQlFVODNRaXhKUVVkNFF5dENMR05CUVdVc1UwRkJVM0JDTEVkQlEzUkNMRWxCUVVrMlFpeEZRVUZIUXl4RlFVRkpReXhGUVVGTlF5eEZRVU5xUWl4SFFVRm5RaXhoUVVGYWFFTXNSVUZCUjJsRExFdEJRMHdzVDBGQlQycERMRVZCUVVkclF5eFJRVU5NTEVkQlFXZENMRzlDUVVGYWJFTXNSVUZCUjJsRExFdEJRVFJDTEVOQlJYaERMRWxCUkVGRUxFVkJRVmNzUjBGRFRrWXNSVUZCU3l4RlFVRkhReXhGUVVGUEwwSXNSVUZCUnpGQ0xFOUJRVkYzUkN4RlFVRkxReXhGUVVGTlJDeExRVU40UTBRc1JVRkJTVGRDTEVWQlFVYzRRaXhKUVVORVN5eFZRVU5LU0N4RlFVRlRTU3hMUVVGTFVDeEZRVUZGTDBJc1QwRkhjRUlzVDBGQlQydERMRVZCUlZBc1QwRkJUMmhETEVWQlFVZEdMRkZCVFd4Q2NrUXNSVUZCVHpSR0xGZEJRV0VzVjBGRGJFSXNVMEZCVTBFc1MwRnRSRlFzVDBGcVJFRkJMRVZCUVZkRExFMUJRVkVzUTBGRGFrSkRMRlZCUVZjc1JVRkRXRU1zVVVGQlV5eEhRVWRZU0N4RlFVRlhTU3hOUVVGUkxGTkJRVk5ETEVkQlF6RkNMRTFCUVVrc1owSkJRV2RDUXl4TFFVRkxSQ3hIUVVOb1FpeERRVU5NVkN4TFFVRk5jRVVzUzBGQlMzbEZMRTFCUVUxRExGVkJRMnBDZWtNc1RVRkJUelJETEVWQlFVOTBSaXhOUVVGTkxFZEJRVWtzU1VGRlRpeFRRVUZZYzBZc1JVRkRSaXhEUVVOTVZDeExRVUZOY0VVc1MwRkJTM2xGTEUxQlFVMURMRlZCUTJwQ2VrTXNUMEZCVHl4SFFVVlhMRlZCUVZnMFF5eEZRVU5HTEVOQlEweFVMRXRCUVUxd1JTeExRVUZMZVVVc1RVRkJUVU1zVlVGRGFrSjZReXhQUVVGUExFZEJSVmNzVTBGQldEUkRMRVZCUTBZc1EwRkRURlFzUzBGQlRYQkZMRXRCUVV0NVJTeE5RVUZOUXl4VlFVTnFRbnBETEUxQlFVOHNUVUZGVnl4alFVRllORU1zUlVGRFJpeERRVU5NVkN4TFFVRk5jRVVzUzBGQlMzbEZMRTFCUVUxRExGVkJRMnBDZWtNc1YwRkJUeXhIUVVWWExFdEJRVmcwUXl4RlFVTkdMRU5CUTB4VUxFdEJRVTF3UlN4TFFVRkxlVVVzVFVGQlRVTXNWVUZEYWtKNlF5eFhRVUZQTEVsQlJUQkNMRWxCUVRGQ09FTXNUVUZCVFVNc1QwRkJUMGdzU1VGRFppeERRVU5NVkN4TFFVRk5jRVVzUzBGQlMzbEZMRTFCUVUxRExGVkJRMnBDZWtNc1RVRkJUeXRETEU5QlFVOUlMRWxCUjFRc1EwRkRURlFzUzBGQlRYQkZMRXRCUVV0NVJTeE5RVUZOUlN4UlFVTnFRakZETEUxQlFVODBReXhKUVV0T1RDeEZRWEJFVnl4SFFYZEVjRUkxUml4RlFVRlBjVWNzYlVKQlFYRkNMRmRCUXpGQ0xGTkJRVk5CTEV0QmMwUlVMRTlCY0VSQlFTeEZRVUZ0UWxJc1RVRkJVU3hEUVVONlFsTXNTMEZCVFN4RlFVTk9ka1FzVVVGQlV5eEhRVWRZYzBRc1JVRkJiVUpNTEUxQlFWRXNVMEZCVTI1RExFVkJRVlV3UXl4SFFVTTFReXhKUVVGSlF5eEZRVUZQUXl4RlFVRlhReXhGUVVGWE4wVXNSVUZCVVRoRkxFVkJRVmRETEVWQlFWRjJSQ3hGUVVzMVJDeEpRVXBCZFVRc1JVRkJVeXhIUVVOVUwwVXNSVUZCVTJkRExFVkJRVk5vUXl4UFFVTnNRakpGTEVWQlFWRXNSVUZEVWtNc1JVRkJXU3hGUVVOTVFTeEZRVUZaTlVVc1IwRkJVU3hEUVVWNlFpeEpRVVJCTWtVc1JVRkJVVE5ETEVWQlFWTndReXhSUVVGUk9FVXNSVUZCVnl4SFFVRkpSU3hKUVVNMVFpeEZRVUZITEVOQlEySkhMRVZCUVU5cVFpeExRVUZMTEVOQlExWklMRXRCUVUxd1JTeExRVUZMZVVVc1RVRkJUVk1zUzBGRGFrSnFSQ3hOUVVGUFVTeEZRVUZUYkVRc1RVRkJUVGhHTEV0QlJYaENMRTFCVlVFc1IwRlNTVVFzUlVGQlVTeEhRVUZMUXl4RlFVRlpSQ3hIUVVNelFra3NSVUZCVDJwQ0xFdEJRVXNzUTBGRFZrZ3NTMEZCVFhCRkxFdEJRVXQ1UlN4TlFVRk5VeXhMUVVOcVFtcEVMRTFCUVU5UkxFVkJRVk5zUkN4TlFVRk5PRVlzUlVGQlYwUXNTMEZIY2tORExFVkJRVmxFTEVWQlFWRkVMRVZCUVZjc1IwRkJSekZGTEZGQlEyeERNa1VzUlVGQlVUTkRMRVZCUVZOd1F5eFJRVUZST0VVc1JVRkJWeXhIUVVGSlJTeEpRVU0xUWl4RlFVRkhMRU5CUTJKRkxFVkJRVms1UXl4RlFVRlRiRVFzVFVGQlRUaEdMRVZCUVZsR0xFVkJRVmNzUjBGQlJ6RkZMRk5CUlc1RExFOUJSR3hDTmtVc1JVRkJXVVVzUlVGQlQwRXNSVUZCVHk5RkxFOUJRVk1zU1VGRFZqWkZMRVZCUVZWc1FpeFZRVUZQTEV0QlFWbHdSU3hMUVVGTGVVVXNUVUZCVFZNc1MwRkRMMFJKTEVWQlFWVnlSQ3hQUVVGVGMwUXNSVUZGYmtKRExFVkJRVTlxUWl4TFFVRkxMRU5CUTFaSUxFdEJRVTF3UlN4TFFVRkxlVVVzVFVGQlRWTXNTMEZEYWtKcVJDeE5RVUZQYzBRc1NVRkhXQ3hOUVVWR2RFUXNSVUZCVVZFc1JVRkJVMnhFTEUxQlFVMDRSaXhGUVVGWFJDeEhRVUZQU3l4UFFVTjZRMFFzUlVGQlQycENMRXRCUVVzc1EwRkRWa2dzUzBGQlRYQkZMRXRCUVV0NVJTeE5RVUZOT1VNc1VVRkRha0pOTEUxQlFVOUJMRWxCUlZSdlJDeEZRVUZaUkN4RlFVRlJSQ3hGUVVGWExFZEJRVWN4UlN4UFFVZDBReXhQUVVGUEswVXNSMEZIUmxBc1JVRjJSRzFDTEVkQk1rUTFRbkpITEVWQlFVOTNSQ3hMUVVGUExGZEJRMW9zVTBGQlUwRXNSVUZCUzNORUxFVkJRVXMzUkN4RlFVRlJia0lzUjBGRGVrSXNTVUZCU1dsR0xFVkJRVWN6UkN4RlFVRlJORVFzUlVGQlIwTXNSVUZCVHpWQ0xFVkJRVWsyUWl4RlFVRkpOVUlzUlVGQlRUWkNMRVZCUVU5RExFVkJRVTlETEVWQlFVOURMRVZCUVU5RExFVkJRVTlETEVWQmNVSXhSU3hKUVhCQ1FYQkhMRXRCUVVzd1JpeEpRVUZOUVN4RlFVTllNVVlzUzBGQlN6WkNMRTlCUVZOQkxFVkJRME1zVFVGQldHNUNMRWxCUTBaQkxFVkJRVlVzU1VGRldsWXNTMEZCUzNGSExFOUJRVk53U0N4RlFVRlBaU3hMUVVGTGNVY3NUMEZCVVhKSExFMUJRMnhEUVN4TFFVRkxjMGNzVVVGQlZYSklMRVZCUVU5bExFdEJRVXR6Unl4UlFVRlRkRWNzVFVGRGNFTkJMRXRCUVV0MVJ5eExRVUZQZEVnc1JVRkJUMlVzUzBGQlMzVkhMRXRCUVUxMlJ5eE5RVU01UWtFc1MwRkJTM2RITEU5QlFWTjJTQ3hGUVVGUFpTeExRVUZMZDBjc1QwRkJVWGhITEUxQlEyeERRU3hMUVVGTGEwTXNTMEZCVDJwRUxFVkJRVTlsTEV0QlFVdHJReXhMUVVGTmJFTXNUVUZET1VKQkxFdEJRVXQ1Unl4UFFVRlRlRWdzUlVGQlQyVXNTMEZCUzNsSExFOUJRVkY2Unl4TlFVTnNRMEVzUzBGQlN6QkhMRk5CUVZkNlNDeEZRVUZQWlN4TFFVRkxNRWNzVTBGQlZURkhMRTFCUTNSRFFTeExRVUZMTWtjc1RVRkJVVEZJTEVWQlFVOWxMRXRCUVVzeVJ5eE5RVUZQTTBjc1RVRkRhRU5CTEV0QlFVczBSeXhoUVVGbE0wZ3NSVUZCVDJVc1MwRkJTelJITEdGQlFXTTFSeXhOUVVNNVEwRXNTMEZCU3paSExHTkJRV2RDTlVnc1JVRkJUMlVzUzBGQlN6WkhMR05CUVdVM1J5eE5RVU5vUkVFc1MwRkJTMVVzVVVGQlZYcENMRVZCUVU5bExFdEJRVXRWTEZGQlFWTldMRTFCUXpsQ1FTeExRVUZMTUVZc1NVRkJTVzlDTEZGQlFWVTVSeXhMUVVGTE1FWXNaVUZCWlhGQ0xGRkJRek5ETDBjc1MwRkJTekJHTEVsQlFVMHNRMEZCUXpGR0xFdEJRVXN3Uml4TlFVZGtla0lzUlVGQlN5eEZRVUZIUXl4SFFVUmlPRUlzUlVGQlVYQklMRVZCUVU4clFpeFpRVU5YUml4UFFVRlJkMFFzUlVGQlMwTXNSVUZCVFVRc1NVRkJUU3hEUVVkcVJDeEhRVVJCYWtVc1MwRkVRV2RETEVWQlFWTm5SU3hGUVVGTkwwSXNTVUZEUVN4SFFVTllka1FzUlVGQlVYTkNMRWRCUlZZc1NVRkJTekpFTEV0QlJFeE5MRVZCUVZGMlJpeEZRVUZSYzBJc1IwRkZaRFJFTEVWQlFVbExMRVZCUVUxT0xFZEJRMVl6Uml4TFFVRkxaME1zUjBGQlVUSkVMRWRCUVV0RExFVkJTWFJDTEVsQlFVdEVMRXRCUkV4UExFVkJRVkYwU0N4RlFVRmxMRTlCUVVWdlJDeEhRVVYyUWpSRUxFVkJRVWxOTEVWQlFVMVFMRWRCUTNWQ0xFOUJRVFZDUlN4RlFVRlJOMFlzUzBGQlMyZERMRWxCUVZNeVJDeExRVU42UWtVc1JVRkJUVVlzUjBGQlMwTXNSMEZMYWtJc1NVRkJTMFVzUlVGQlN5eEZRVUZIUXl4SFFVUmlTU3hGUVVGUmRrZ3NSVUZCVHpoQ0xGTkJRMWxFTEU5QlFWRnhSaXhGUVVGTFF5eEZRVUZQUkN4SlFVVTNRemxHTEV0QlJFRm5ReXhGUVVGVGJVVXNSVUZCVFV3c1NVRkROa0lzVDBGQk5VSk5MRVZCUVZFeFJpeEZRVUZSYzBJc1NVRkJiVUp2UlN4RlFVRlJlRWdzUlVGQlpTeFBRVUZGYjBRc1IwRkZPVVZvUXl4TFFVRkxNa2NzVVVFNFRsQXNUMEV6VGtGMlJTeEZRVUZMYkVNc1ZVRkJWVkVzVVVGQlZTeFhRVU4yUWl4SlFVRkpjMElzUlVGQlVYUkNMRVZCUVZOMVJDeEZRVUZKUXl4RlFVRk5PRUlzUlVGSEwwSXNTVUZHUVhSR0xFVkJRVlVzUjBGRlRIVkVMRVZCUVVzc1JVRkJSME1zUjBGRVlqaENMRVZCUVZGd1NDeEZRVUZQSzBJc1YwRkJWM0ZITEU5QlFVOXdTU3hGUVVGUE9FSXNWVUZEWkVRc1QwRkJVWGRFTEVWQlFVdERMRVZCUVUxRUxFbEJSVE5EZGtRc1JVRkVRWE5DTEVWQlFWTm5SU3hGUVVGTkwwSXNTVUZEUjJwRkxFdEJRVXRuUXl4SFFVVjZRaXhQUVVGUGRFSXNSMEZIVkRCQ0xFVkJRVXRzUXl4VlFVRlZNa2NzWTBGQlowSXNWMEZETjBJc1QwRkJUeXhKUVVGSlNTeFBRVUZQTEVsQlFVMXFTQ3hMUVVGTGFVSXNUMEZCVXl4TlFVZDRRMjFDTEVWQlFVdHNReXhWUVVGVk1FY3NZVUZCWlN4VFFVRlRha1lzUlVGQlUzVkdMRVZCUVUwNVF5eEZRVUZOSzBNc1IwRkRNVVFzU1VGQlNURkdMRVZCUVZNeVJpeEZRVUZMUXl4RlFVRmpNVU1zUlVGQlUycEZMRVZCUVZNMFJ5eEZRVUZOUXl4RlFUSkNlRVFzVDBFeFFrRTNSeXhGUVVGVkxFZEJRMVkyUnl4RlFVRlJMRmRCUTA0c1NVRkJTWFJFTEVWQlFVbERMRVZCUVUwNFFpeEZRVUZQTjBJc1JVRkhja0lzU1VGRVFVRXNSVUZCVnl4SFFVTk9SaXhGUVVGTExFVkJRVWRETEVkQlJtSTRRaXhGUVVGUmJVSXNSVUZCV1Vzc1RVRkJUU3hwUlVGRlFTOUhMRTlCUVZGM1JDeEZRVUZMUXl4RlFVRk5SQ3hKUVVNelEzRkVMRVZCUVU5MFFpeEZRVUZOTDBJc1IwRkRZa1VzUlVGQlUwa3NTMEZCU3l0RExFVkJRVXMzUWl4UlFVVnlRaXhQUVVGUGRFSXNSVUZTUkN4SFFXOUNVbEVzUjBGV1FXeEVMRVZCUVZVc1YwRkRVaXhKUVVGSmQwTXNSVUZCU1VNc1JVRkJUVGhDTEVWQlFVODNRaXhGUVVkeVFpeEpRVVJCUVN4RlFVRlhMRWRCUTA1R0xFVkJRVXNzUlVGQlIwTXNSMEZHWWpoQ0xFVkJRVkYxUWl4RlFVRk5SU3hSUVVGUlF5eE5RVUZOTEUxQlJVWnFTQ3hQUVVGUmQwUXNSVUZCUzBNc1JVRkJUVVFzU1VGRE0wTnRSQ3hGUVVGTmNFSXNSVUZCVFM5Q0xFZEJRMXBGTEVWQlFWTkpMRXRCUVVzMlF5eEZRVUZKTTBJc1VVRkZjRUlzVDBGQlQzUkNMRVZCVWtNc1NVRlZVWE5FTEZGQlEyeENMMGNzUlVGQlVVc3NWMEZCWVhkSExFZEJRMnBDUml4RlFVRmxOVVlzUlVGQlVXZEhMRmRCUTNwQ0wwY3NSVUZCVVRKSExHRkJRV1ZCTEVWQlFXRkxMRTFCUVUwc1VVRkZja014U0N4TFFVRkxNa2dzVTBGQlUzQkVMRXRCUVVzc1NVRkJTVE5HTEVWQlFVOHJReXhIUVVGVE0wSXNTMEZCVFd0SUxFVkJRVTA1UXl4RlFVRk5UeXhGUVVGVGFrVXNTMEZITTBVd1FpeEZRVUZMYkVNc1ZVRkJWWGxITEUxQlFWRXNWMEZEY2tJc1NVRkJTWGhGTEVWQlFVbDVReXhGUVVGUFdDeEZRVUZKUXl4RlFVRk5PRUlzUlVGRlVEUkNMRVZCTUVOc1FpeEpRVE5EUVRWSUxFdEJRVXN5U0N4VFFVRlhMRWRCUTBWRExFVkJkME5tTlVnc1MwRjRRMGcwUlN4RlFVTlRMRk5CUVZOelF5eEhRVU5rTEVsQlFVbFhMRVZCUVU5RExFVkJRVmN6UXl4RlFVRlpORU1zUlVGQlIwTXNSVUZCVVRsRExFVkJRVTByUXl4RlFVRlBla01zUlVGQlVYWkNMRVZCUVVrMlFpeEZRVUZKTlVJc1JVRkJUVFpDTEVWQlFVOURMRVZCUTNaR0xFZEJRWE5DTEVsQlFXeENhMElzUlVGQlMyZENMRlZCUlZBc1IwRkVRVVlzUlVGQlUzQktMRVZCUVU5eFJ5eHZRa0ZEV2tVc1JVRkJZWGxETEVWQlFVMHhSeXh6UWtGRGFFSnpSU3hGUVVGVGQwTXNSVUZCVDNCRUxFMUJRVTF6UXl4RlFVRkxNMFVzUzBGQlRUUkRMRWxCUVdFeFJTeFRRVU42UWl4SlFVRnNRaXRGTEVWQlFVOHZSU3hSUVVGblFpdEZMRVZCUVU4c1IwRkJSM0JDTEU5QlFWTTBSQ3hGUVVGUGRrUXNUVUZCVFZNc1RVRkJUeXhEUVVOc1JTeEpRVUZMYWtJc1JVRkJTeXhGUVVGSFF5eEZRVUZQYzBJc1JVRkJUeTlGTEU5QlFWRjNSQ3hGUVVGTFF5eEZRVUZOUkN4SlFVTTFRMmRGTEVWQlFWRjZReXhGUVVGUGRrSXNSMEZEWm1sQ0xFVkJRVTk0UXl4VFFVRlRlVVlzWlVGQlpVWXNSVUZCVFdoSExFOUJRM0pEYVVZc1JVRkJTMnRDTEZkQlFWZERMR0ZCUVdGdVJDeEZRVUZOWjBNc1IwRkRhRUlzU1VGQlptVXNSVUZCVFRkRUxFMUJRMUozUkN4RlFVRk5hRUlzWVVGQllTeGpRVUZsTVVJc1JVRkJUU3hMUVVGTkswTXNSVUZCVFdoSExFOUJSM2hFYVVZc1JVRkJTMnRDTEZkQlFWZDBSaXhaUVVGWmIwVXNVMEZKVUN4SlFVRnNRa0VzUlVGQlMyZENMRmRCUTJSTUxFVkJRVkZFTEVWQlFVMXNRaXhUUVVGVFVTeEpRVVY2UWl4SlFVRkxWeXhGUVZkSUxFbEJWa0UzUWl4RlFVRlJMRmRCUTA0c1NVRkJTWE5ETEVWQlFVbDJReXhGUVVGUFF5eEZRVUZQTjBJc1JVRkhkRUlzU1VGRVFVRXNSVUZCVnl4SFFVTk9iVVVzUlVGQlN5eEZRVUZIZGtNc1IwRkdZa01zUlVGQlVXdENMRVZCUVV0eFFpeFpRVVZqT1Vnc1QwRkJVVFpJTEVWQlFVdDJReXhGUVVGUGRVTXNTVUZETjBOUUxFVkJRVWt2UWl4RlFVRk5jME1zUjBGRFZtNUZMRVZCUVZOSkxFdEJRVXQzUkN4SFFVVm9RaXhQUVVGUE5VUXNSVUZTUkN4SFFWVklNa0lzUlVGQlN5eEZRVUZIUXl4RlFVRlJReXhGUVVGTmRrWXNUMEZCVVhGR0xFVkJRVXRETEVWQlFVOUVMRWxCUXpkRFowTXNSVUZCV1RsQ0xFVkJRVTFHTEVkQlEyeENiRUlzUlVGQlRXdEVMRWxCVFZRM1JDeEZRVUZMTEVWQlFVZERMRWRCUkdJNFFpeEZRVUZSYUVjc1MwRkJTekJHTEV0QlEyRnFSaXhQUVVGUmQwUXNSVUZCUzBNc1JVRkJUVVFzU1VGRE0wTTVRaXhGUVVGTE5rUXNSVUZCVFM5Q0xFZEJRMWhYTEVWQlFVMTZReXhIUVVWU2JrTXNTMEZCU3pKSUxGTkJRVk5oTEV0QlFVc3NVMEZCVTBNc1JVRkJSME1zUjBGRE4wSXNTVUZCU1hwRExFVkJRVTlETEVWQlExZ3NVVUZCSzBJc1QwRkJja0pFTEVWQlFWRjVReXhGUVVGRlF5eFJRVUZyUWpGRExFVkJRVTB5UXl4alFVRlhMRWxCUVZjc1MwRkJOa0lzVDBGQmNrSXhReXhGUVVGUmRVTXNSVUZCUlVVc1VVRkJhMEo2UXl4RlFVRk5NRU1zWTBGQlZ5eEpRVUZYTEUxQlNYUkplRWNzUlVGQlMyeERMRlZCUVZWM1J5eFRRVUZYTEZOQlFWTlJMRWRCUTJwRExFbEJRVWt5UWl4RlFVRlhReXhGUVVGWlNDeEZRVUZST1VJc1JVRkJaV2RDTEVWQlFVOXJRaXhGUVVGdlFqTkZMRVZCUVUxdVF5eEZRVUZQWjBNc1JVRkJTVFpDTEVWQlFVazFRaXhGUVVGTk5rSXNSVUZCVDBNc1JVRkJUME1zUlVGQlQwTXNSVUZKTjBnc1NVRklRVmNzUlVGQlowSTNSeXhMUVVGTE5rY3NaMEpCUTNKQ1owSXNSVUZCTUVJc1YwRkJiRUpZTEVWQlFVczRRaXhWUVVFeVF5eFZRVUZzUWpsQ0xFVkJRVXM0UWl4VFFVVjBReTlGTEVWQlFVc3NSVUZCUjBNc1IwRkVZamhDTEVWQlFWRnJRaXhGUVVGTE5FSXNXVUZEWVhKSkxFOUJRVkYzUkN4RlFVRkxReXhGUVVGTlJDeEpRVVV6UXl4SFFVUkJORVVzUlVGQldUZERMRVZCUVUwdlFpeEhRVU5rTkVNc1JVRkJZeTlDTEV0QlFVc3JSQ3hGUVVGVlNTeE5RVUZQTEVOQlJYUkRMRWRCUkVFM1JTeEZRVUZQZVVVc1JVRkJWVWtzUzBGQlMwTXNVVUZCVVhKRExFVkJRV1VzVFVGRGRrTTRRaXhGUVVGVE0wa3NTMEZCUzJFc1VVRkJVWFZFTEVsQlJURkNMRWxCUVVzeVJTeExRVVJNT1VNc1JVRkJVV3BITEV0QlFVdGhMRkZCUlZodlFpeEZRVUZSWjBVc1JVRkJUVGhETEVkQlEwc3NUVUZCWmtFc1NVRkJiVVFzU1VGQk4wSkJMRVZCUVZjeFNTeFJRVUZSTEUxQlEyeERMRWxCUVVrMFJ5eFBRVUZQTEVsQlFVODRRaXhGUVVGWFJ5eFJRVUZSTEUxQlFVOHNUVUZCVXl4TFFVTnVSSEJGTEV0QlFVdFdMRXRCUTJSMVJTeEZRVUZUTVVjc1IwRkxha0l3Unl4SlFVRlhRU3hGUVVGVE0wa3NTMEZCUzJFc1VVRkJVU3hOUVVNM1FqaElMRVZCUVU5a0xGRkJRMVJCTEVkQlFWRXNSVUZEVW1sQ0xFVkJRV0VzUTBGQlEwUXNTVUZMY0VJc1NVRkJTeTlETEVWQlFVc3NSVUZCUjBNc1IwRkVZa2NzUlVGQlVUUkRMRWRCUVdNMVFpeEZRVUZMTkVJc1dVRkRRWEpKTEU5QlFWRnhSaXhGUVVGTFF5eEZRVUZQUkN4SlFVTTNReXRETEVWQlFWa3pReXhGUVVGTlNpeEhRVU5rWlN4RlFVRmpMMElzUzBGQlN5dEVMRVZCUVZWSkxGRkJReTlDTjBVc1JVRkJUM2xGTEVWQlFWVkpMRXRCUVV0RExGRkJRVkZ5UXl4RlFVRmxMRWxCUXpkRE4wY3NTMEZCU3pSSExHRkJRV0VzVlVGQlYwMHNSVUZCVFRsRExFVkJRVTE1UlN4RlFVRlZOVWNzVVVGVmRrUXNUMEZRU3pSR0xFbEJRMGg2UkN4RlFVRlBPRU1zUlVGQlN6aENMRk5CUVZOSExHTkJRMnBDYmtvc1MwRkJTMk1zVjBGQlYzTkVMRXRCUVZVNFF5eEZRVUZMYTBNc1UwRkRha053U2l4TFFVRkxNa2dzVTBGQlUzQkVMRXRCUVVzc1NVRkJTVE5HTEVWQlFVOTVTeXhwUWtGQmFVSnlTaXhMUVVGTmEwZ3NSVUZCVFRsRExFbEJRek5FZVVRc1IwRkJVU3hKUVVkTVFTeEhRVWRVZWtZc1JVRkJTMnhETEZWQlFWVjFSeXhQUVVGVExGTkJRVk4yU0N4SFFVTXZRaXhKUVVGSmVVTXNSVUZCVTNORExFVkJRVWxETEVWQlFVMDRRaXhGUVVGUE4wSXNSVUZIT1VJc1NVRkVRVUVzUlVGQlZ5eEhRVU5PUml4RlFVRkxMRVZCUVVkRExFZEJSbUk0UWl4RlFVRlJhRWNzUzBGQlN6SklMRlZCUldGc1NDeFBRVUZSZDBRc1JVRkJTME1zUlVGQlRVUXNTVUZGZGtNdlJTeEZRVVJLZVVNc1JVRkJWWEZGTEVWQlFVMHZRaXhMUVVWa1JTeEZRVUZUU1N4TFFVRkxOVU1zUjBGSGJFSXNUMEZCVDNkRExFZEJSMVF2UWl4RlFVRkxiRU1zVlVGQlZXZERMRXRCUVU4c1YwRkRjRUlzU1VGQllTdENMRVZCUVVsRExFVkJRVTA0UWl4RlFVVjJRaXhKUVVGTEwwSXNSVUZCU3l4RlFVRkhReXhIUVVSaU9FSXNSVUZCVVdoSExFdEJRVXN5U0N4VlFVTmhiRWdzVDBGQlVYZEVMRVZCUVV0RExFVkJRVTFFTEVsQlEycERLMElzUlVGQlRTOUNMRWRCUTFJdlFpeFJRVWxhUlN4RlFVRkxiRU1zVlVGQlZYTkhMRTlCUVZNc1YwRkRkRUlzU1VGQllYWkRMRVZCUVVsRExFVkJRVTA0UWl4RlFVVjJRaXhKUVVGTEwwSXNSVUZCU3l4RlFVRkhReXhIUVVSaU9FSXNSVUZCVVdoSExFdEJRVXN5U0N4VlFVTmhiRWdzVDBGQlVYZEVMRVZCUVV0RExFVkJRVTFFTEVsQlEycERLMElzUlVGQlRTOUNMRWRCUTFKMVF5eFZRVWxhY0VVc1JVRkJTMnhETEZWQlFWVnhSeXhMUVVGUExGZEJRM0JDTEVsQlFVazFSU3hGUVVGVGMwTXNSVUZCU1VNc1JVRkJUVGhDTEVWQlJYWkNMRWxCUVVzdlFpeEZRVUZMTEVWQlFVZERMRWRCUkdJNFFpeEZRVUZSYUVjc1MwRkJTekpJTEZWQlEyRnNTQ3hQUVVGUmQwUXNSVUZCUzBNc1JVRkJUVVFzU1VGRlppeHRRa0ZFTlVKMFF5eEZRVUZWY1VVc1JVRkJUUzlDTEVsQlEwZHpReXhOUVVOcVFqVkZMRVZCUVZFMFJTeFJRVXRrYmtVc1JVRkJTMnhETEZWQlFWVnZSeXhSUVVGVkxGZEJRM1pDTEVsQlFXRnlReXhGUVVGSlF5eEZRVUZOT0VJc1JVRkxka0lzU1VGQlN5OUNMRVZCUVVzc1JVRkJSME1zUjBGS1lqaENMRVZCUVZGb1J5eExRVUZMZVVjc1QwRkJUeXhUUVVGVGFVTXNSMEZETTBJc1NVRkJTVEZETEVWQlEwb3NUMEZCTmtJc1QwRkJja0pCTEVWQlFWRXdReXhGUVVGRlF5eFJRVUZyUWpORExFVkJRVTF6UkN4bFFVRlpMRXRCUlRsQ04wa3NUMEZCVVhkRUxFVkJRVXRETEVWQlFVMUVMRWxCUTJwREswSXNSVUZCVFM5Q0xFZEJRMUp4UXl4WFFVbGFiRVVzUlVGQlMyeERMRlZCUVZWdFJ5eFBRVUZUTEZOQlFWTjRSU3hIUVVNdlFpeEpRVUZKUml4RlFVRlRPVUlzUlVGQlN6QktMRVZCUVU5MFJpeEZRVUZKUXl4RlFVRk5PRUlzUlVGSmJrTXNTVUZCUzI1SExFdEJTRk1zVFVGQlZtZERMRWxCUTBaQkxFVkJRVk1zU1VGRlEwRXNSVUZEVmpCSUxFVkJRVkV4U0N4RlFVRlBhRU1zUjBGRFprY3NTMEZCU3paQ0xFOUJRVTlvUXl4SFFVRlBNRW9zUlVGSGNrSXNTVUZCUzNSR0xFVkJRVXNzUlVGQlIwTXNSMEZFWWpoQ0xFVkJRVkZvUnl4TFFVRkxNa2dzVlVGRFlXeElMRTlCUVZGM1JDeEZRVUZMUXl4RlFVRk5SQ3hKUVVWaUxHMUNRVVE1UW5SRExFVkJRVlZ4UlN4RlFVRk5MMElzU1VGRFIyOURMRkZCUTJwQ01VVXNSVUZCVVRCRkxFOUJRVTk0UlN4SlFVdGtUeXhGUVRWUlN5eEhRV2RTWkhoRUxFVkJRVTgwU3l4UlFVRlZMRmRCUTJZc1UwRkJVMEVzUlVGQlVUVklMRVZCUVUxUExFVkJRVWxwUXl4RlFVRk5UeXhGUVVGVGFrVXNSMEZEZUVOV0xFdEJRVXMwUWl4TFFVRlBRU3hGUVVOYU5VSXNTMEZCUzIxRExFZEJRVXRCTEVWQlExWnVReXhMUVVGTGIwVXNTMEZCVDBFc1JVRkRXbkJGTEV0QlFVc3lSU3hSUVVGVlFTeEZRVU5tTTBVc1MwRkJTMVVzVVVGQmNVSXNUVUZCV0VFc1JVRkJhMEpCTEVWQlFWVXNSMEZETTBOV0xFdEJRVXQ1U2l4VFFVRlhlRXNzUlVGQlQyVXNTMEZCUzNsS0xGTkJRVlY2U2l4TlFVTjBRMEVzUzBGQlMzRkhMRTlCUVZOd1NDeEZRVUZQWlN4TFFVRkxjVWNzVDBGQlVYSkhMRTFCUTJ4RFFTeExRVUZMZDBjc1QwRkJVM1pJTEVWQlFVOWxMRXRCUVV0M1J5eFBRVUZSZUVjc1RVRkRiRU5CTEV0QlFVdHJReXhMUVVGUGFrUXNSVUZCVDJVc1MwRkJTMnRETEV0QlFVMXNReXhOUVVNNVFrRXNTMEZCUzNOSExGRkJRVlZ5U0N4RlFVRlBaU3hMUVVGTGMwY3NVVUZCVTNSSExFMUJRM0JEUVN4TFFVRkxkVWNzUzBGQlQzUklMRVZCUVU5bExFdEJRVXQxUnl4TFFVRk5ka2NzVFVGRE9VSkJMRXRCUVVzd1NpeEpRVUZOZWtzc1JVRkJUMlVzUzBGQlN6QktMRWxCUVVzeFNpeE5RVU0xUWtFc1MwRkJTekpLTEdGQlFXVXhTeXhGUVVGUFpTeExRVUZMTWtvc1lVRkJZek5LTEUxQlF6bERRU3hMUVVGTE5Fb3NaVUZCYVVJelN5eEZRVUZQWlN4TFFVRkxORW9zWlVGQlowSTFTaXhOUVVOc1JFRXNTMEZCU3paS0xIZENRVUV3UWpWTExFVkJRVTlsTEV0QlFVczJTaXgzUWtGQmVVSTNTaXhOUVVOd1JVRXNTMEZCU3poS0xGbEJRV00zU3l4RlFVRlBaU3hMUVVGTE9Fb3NXVUZCWVRsS0xFMUJRelZEUVN4TFFVRkxLMG9zVVVGQlZUbExMRVZCUVU5bExFdEJRVXNyU2l4UlFVRlRMMG9zVFVGRGNFTkJMRXRCUVV0blN5eFZRVUZaTDBzc1JVRkJUMlVzUzBGQlMyZExMRlZCUVZkb1N5eE5RVU40UTBFc1MwRkJTMlVzVjBGQllXWXNTMEZCUzFVc1VVRkJVVXNzV1VGQll5eEhRVU0zUTJZc1MwRkJTM0ZJTEdGQlFXVXNSMEZEY0VKeVNDeExRVUZMYVVzc2JVSkJRWEZDTEVkQlF6RkNha3NzUzBGQlMzVktMRmRCUVZFc1JVRkRZblpLTEV0QlFVdG5TeXhaUVRaTlVDeFBRVEZOUVZJc1JVRkJVWFJLTEZWQlFWVTRTaXhWUVVGWkxGZEJRelZDTEVsQlFVbHFRaXhGUVVGdlFqbEhMRVZCUVU4clJDeEZRVU12UWl4TFFVRk5hRWNzUzBGQlN6SkpMRTlCUVZNelNTeExRVUZMTkVJc1MwRkJTMllzVVVGQlVXSXNTMEZCUzI5RkxFOUJSWHBETEVsQlFVc3lSU3hMUVVSTUwwTXNSVUZCVVdoSExFdEJRVXMwUWl4TFFVRkxaaXhSUVVWb1FtOUNMRVZCUVZFclJDeEZRVUZOSzBNc1IwRkRTeXhOUVVGbVFTeEpRVUZ0UkN4SlFVRTNRa0VzUlVGQlZ6RkpMRkZCUVZFc1RVRkRiRU1zU1VGQlNUUkhMRTlCUVU4c1NVRkJUemhDTEVWQlFWZEhMRkZCUVZFc1RVRkJUeXhOUVVGVExFdEJRMjVFY0VVc1MwRkJTemxGTEV0QlFVdHZSU3hSUVVOdVFuQkZMRXRCUVVzeVNTeFBRVUZUTVVjc1JVRkRaR3BETEV0QlFVdHJTeXhMUVVGUExFbEJRVWxxUkN4UFFVRlBMRWxCUVU4NFFpeEZRVUZYUnl4UlFVRlJMRTFCUVU4c1VVRkJWeXhMUVVGTGFVSXNTMEZCUzI1TExFdEJRVXR2UlN4TlFVTnNSbkJGTEV0QlFVdHJTeXhMUVVGTGVrTXNVMEZOYkVJc1IwRkVRWHBJTEV0QlFVc3lTU3hUUVVGWE0wa3NTMEZCU3pKSkxFOUJRVk16U1N4TFFVRkxORUlzUzBGQlMyWXNVVUZCVVN4TlFVTTFRMklzUzBGQlN6SkpMR3RDUVVGclFubENMRk5CUTNwQ0xFOUJRVTl3U3l4TFFVRkxNa2tzVDBGQlV5eERRVU51UWpCQ0xGRkJRVk55U3l4TFFVRkxNa2tzVTBGTGNFSmhMRVZCUVZGMFNpeFZRVUZWTmtvc1VVRkJWU3hUUVVGVFR5eEZRVUZMTTBZc1JVRkJVelJHTEVkQlEycEVMRTlCUVU4elRDeEZRVUZQTkV3c1YwRkJWMFlzUlVGQlN6TkdMRVZCUVZNMFJpeEZRVUZWTEVOQlF5OURSU3hMUVVGTmVrc3NTMEZCU3pSQ0xFdEJRVXRVTEdOQlEyaENTQ3hUUVVGVmFFSXNTMEZCU3pSQ0xFdEJRVXRhTEZsQlNYaENkMGtzUlVGQlVYUktMRlZCUVZVMFNpeFpRVUZqTEZkQlF6bENMRWxCUVVrM1FpeEZRVVZLTEU5QlJFRkJMRVZCUVZGeVNpeEZRVUZQTkVZc1YwRkJWMGtzVFVGQlRUVkZMRXRCUVVzeVJTeFZRVU16UWxBc1QwRkJVM2hHTEVWQlFVODBSaXhYUVVGWFF5eE5RVUZOUXl4VlFVTnNRekZGTEV0QlFVdHBReXhOUVVGUlowY3NSVUZCVFdoSExFOUJSVEZDYWtNc1MwRkJTekJMTEZOQlFWY3hTeXhMUVVGTEswb3NVVUZCVVM5S0xFdEJRVXMwUWl4TFFVRkxReXhQUVVGUk4wSXNTMEZCU3pKRkxGRkJRVk16UlN4TFFVRkxkVWNzVFVGRE0wUjJSeXhMUVVGTGRVb3NUVUZCVVhaS0xFdEJRVXN3U3l4VFFVRlRReXhUUVVsMFEyNUNMRVZCUVZGMFNpeFZRVUZWTWtvc2QwSkJRVEJDTEZOQlFWTkxMRVZCUVUxVkxFZEJRM3BFTEVsQlFVbERMRVZCUVVsRExFVkJRVXRLTEVWQlFWVkxMRVZCUVdWc1JpeEZRVUZQTlVJc1JVRkJTVU1zUlVGWGFrUXNTVUZXUVdkSExFVkJRVThzVjBGRFRDeEpRVUZKYWtjc1JVRkJTVU1zUlVGQlRVTXNSVUZGWkN4SlFVUkJRU3hGUVVGWExFZEJRMDVHTEVWQlFVc3NSVUZCUjBNc1JVRkJUMmRITEVWQlFVdDZTaXhQUVVGUmQwUXNSVUZCUzBNc1JVRkJUVVFzU1VGRE1VTTJSeXhGUVVGTldpeEZRVUZMYWtjc1IwRkRXRVVzUlVGQlUwa3NTMEZCU3pOR0xFVkJRVTgwUml4WFFVRlhTU3hOUVVGTmEwY3NTVUZGZUVNc1QwRkJUek5ITEVWQlVFWXNSMEZUVURSSExFVkJRV2RDTEVkQlExaEdMRVZCUVVzMVJ5eEZRVUZMTEVWQlFVZERMRVZCUVU5blJ5eEZRVUZMZWtvc1QwRkJVWGRFTEVWQlFVdERMRVZCUVUweVJ5eEpRVUZQTlVjc1JVRkRkRVEyUnl4RlFVRk5XaXhGUVVGTFZ5eEhRVU5ZUlN4RlFVRmplRWNzUzBGQlMzVkhMRVZCUVVreFJ5eFBRVUZUZUVZc1JVRkJUelJHTEZkQlFWZERMRTFCUVUxRExGVkJRVmx2Unl4RlFVRkpOMGtzVVVGQlZUUkVMRVZCUVZFM1JpeExRVUZMYVVzc2IwSkJRVzlDVnl4TFFVRnZRaTlGTEVWQlFVMHJSU3hIUVVGclFpeExRVUZQUml4RlFVRlhNVXNzUzBGQlMybExMRzFDUVVGdFFsY3NSMEZCWjBKRExFMUJRVkZJTEVWQlFWY3hTeXhMUVVGTEswb3NVVUZCVVM5S0xFdEJRVXMwUWl4TFFVRkxReXhQUVVGUmFVb3NSVUZCU1RkSkxFMUJRVTlxUXl4TFFVRkxkVWNzVFVGQlQzWkhMRXRCUVV0cFN5eHRRa0ZCYlVKWExFZEJRV2RDUXl4SFFVRk5TQ3hIUVVGdlFrRXNSVUZCVTNwSkxGVkJSUzlYTEU5QlFVODRTU3hIUVVkVWRrSXNSVUZCVVhSS0xGVkJRVlV3U2l4bFFVRnBRaXhUUVVGVE0wZ3NSMEZETVVNc1NVRkJTV2xKTEVWQlFVMWpMRVZCUVVsRExFVkJRVmRETEVWQlFVbElMRVZCUVdVNVJ5eEZRVUZKUXl4RlFVRk5PRUlzUlVGQlQwTXNSVUZGTjBRc1NVRkJTeXRGTEVWQlFVc3ZSeXhGUVVGTExFVkJRVWRETEVkQlJHeENPRUlzUlVGQlVXaEhMRXRCUVV0bExGbEJRMnRDVGl4UFFVRlJkMFFzUlVGQlMwTXNSVUZCVFRoSExFbEJRVTh2Unl4RlFVZDJSR2xJTEVkQlJFRm9RaXhIUVVSQlpTeEZRVUZaYWtZc1JVRkJUV2RHTEVsQlEwUjRSQ3hOUVVGTkxDdERRVU5pUXl4UlFVTldkMFFzUlVGQldXcE1MRXRCUVVzMFFpeExRVUZMWWl4WFFVRlhiVXNzUjBGRGFrTklMRVZCUVdkQ0wwc3NTMEZCU3paS0xIZENRVUYzUWtzc1JVRkJUV01zU1VGRGFrTXNUVUZCWWtNc1JVRkJiMEpCTEVWQlFWVkZMRlZCUVU4c1lVRkJiVUptTEZOQlF6TkVia2tzUjBGQlUyZEZMRVZCUVZGblJpeEZRVUZWUlN4TlFVRk5ja3dzUzBGQlMxWXNUVUZCVFRaSExFVkJRVThzUTBGQlEycEhMRXRCUVV0MVNpeE5RVUZQZEVnc1IwRkJUeXRGTEU5QlFVOHhTQ3hGUVVGUlVTeExRVUZMYVV3c1MwRkRiRVpGTEdGQlFYRkNZaXhYUVVNNVFtNUpMRVZCUVZGblNpeEZRVUZWYmt3c1MwRkJTMVlzVFVGQlRUWk1MRVZCUVZjc1EwRkJRMnBNTEV0QlFVdDFTaXhOUVVGUGRFZ3NSMEZCVHl0RkxFOUJRVTh4U0N4RlFVRlJVU3hMUVVGTGFVd3NUVUZIY0VZc1QwRkJUemxKTEVkQlIxUjFTQ3hGUVVGUmRFb3NWVUZCVlhsS0xHRkJRV1VzVTBGQlUzcExMRWRCUTNoRExFbEJRVWw1UXl4RlFVRlRTQ3hGUVVWaUxFOUJSRUZCTEVkQlFWZEhMRVZCUVZVelFpeE5RVUZOTkVJc1MwRkJTMG9zVVVGRGVrSXNVMEZCVTBVc1IwRkRaQ3hQUVVGUFJpeEZRVUZSTVVJc1MwRkJTMW9zUlVGQlNXTXNTMEZCVFRCQ0xFVkJRVWxETEV0QlNYUkROa2dzUlVGQlVYUktMRlZCUVZWM1NpeEpRVUZOTEZOQlFWTjZTQ3hIUVVNdlFpeEpRVUZKSzBRc1JVRkZTaXhQUVVSQkwwUXNSVUZCVVVFc1lVRkJhVUp0U1N4WFFVRmhjRXNzUzBGQlN6SkpMRTlCUVdsQ0xGVkJRVXN2U2l4RlFVRmxMRTlCUVVWNVF5eHBRa0ZCYlVKeVFpeExRVUZMTkVvc1pVRkJaVE5JTEVWQlFVMXVReXhMUVVGTFJTeExRVUZMZFVvc1VVRkJWWFpLTEV0QlFVczBTaXhsUVVGbE0wZ3NSMEZETDBnc1QwRkJhRU1yUkN4RlFVRlJhRWNzUzBGQlN6SkpMRTlCUVU4d1FpeFRRVUZ0UW5KRkxFVkJRVTFzUnl4TFFVRkxSU3hMUVVGTlFTeExRVUZMYlVNc1IwRkJTVVlzVVVGQlV5eEhRVWR3Um5WSUxFVkJRVkYwU2l4VlFVRlZjVWNzUzBGQlR5eFhRVU4yUWl4SlFVRkpOa1VzUlVGQldWWXNSVUZEYUVJc1QwRkJUekZMTEV0QlFVc3dTaXhKUVVGSkxGZEJRMlFzU1VGQlNYcEdMRVZCUVVrMlFpeEZRVUZKTlVJc1JVRkJUVFpDTEVWQlFVOURMRVZCUVU5RExFVkJRVTlETEVWQlEzWkRMRWRCUVVsc1J5eExRVUZMTUVzc1UwRkJWU3hEUVVOcVFpeEhRVUZKTVVzc1MwRkJTM1ZLTEZGQlFWVjJTaXhMUVVGTE1Fc3NVMEZCVTBNc1QwRkJVU3hEUVVWMlF5eEpRVUZMTVVjc1JVRkJTeXhGUVVGSFF5eEhRVVJpT0VJc1JVRkJVV2hITEV0QlFVdHhTQ3hqUVVOaE5VY3NUMEZCVVhkRUxFVkJRVXRETEVWQlFVMUVMRXRCUXpORGVVY3NSVUZCVnpGRkxFVkJRVTB2UWl4SlFVTlNiMGdzV1VGSFdDeEhRVVJCY2t3c1MwRkJTM0ZJTEdGQlFXVXNSMEZEZDBJc1QwRkJkRU55U0N4TFFVRkxkVW9zVFVGQlVYWktMRXRCUVVzd1N5eFRRVUZUUXl4VlFVRTBSQ3hQUVVGMFF6RkZMRVZCUVZGcVJ5eExRVUZMVlN4UlFVRlJNa2NzWTBGQmQwSndRaXhGUVVGTmVFWXNXVUZCVXl4SFFVVnFTQ3hKUVVGTGNVWXNSVUZCU3l4RlFVRkhReXhIUVVSaVJ5eEZRVUZSYkVjc1MwRkJTMVVzVVVGQlVUSkhMR05CUTAwMVJ5eFBRVUZSY1VZc1JVRkJTME1zUlVGQlQwUXNTVUZETjBOelJpeEZRVUZoYkVZc1JVRkJUVW9zUjBGRGJrSTBSU3hGUVVGWE1Vc3NTMEZCU3l0S0xGRkJRVkV2U2l4TFFVRkxkVW9zVFVGQlR6WkNMRVZCUVZsd1RDeExRVUZMZFVjc1RVRkRja1IyUnl4TFFVRkxjVWdzWVVGQllUbERMRXRCUVV0dFJ5eEhRVWszUWl4UFFVRlBNVXNzUzBGQlN6QkxMRk5CUVZONlNTeFJRVVZ5UWl4UFFVRlBha01zUzBGQlMybERMRTlCUldKdVF5eExRVUZMUlN4UlFVZFdkMG9zUlVGQlVYUktMRlZCUVZWdlJ5eFJRVUZWTEZkQlF6RkNMRWxCUVVrMFJDeEZRVUZOWXl4RlFVRkpUU3hGUVVGMVFrb3NSVUZCU1Vzc1JVRkJiMEpTTEVWQlFXVTVTU3hGUVVGUFowTXNSVUZCU1VNc1JVRkJUVGhDTEVWQlFVOURMRVZCUVU5RExFVkJRek5ITEVkQlFVbHNSeXhMUVVGTE1Fc3NVMEZCVlN4RFFVbHFRaXhKUVVoQmVra3NSVUZCVVdwRExFdEJRVXQ1U2l4VFFVRlRla29zUzBGQlMyMURMRWxCUXpOQ2Iwb3NSVUZCY1VKMlRDeExRVUZMWlN4WFFVRlhUaXhQUVVGVExFVkJSWHBETmtzc1JVRkJZWEpJTEVWQlFVc3NSVUZCUjBNc1IwRkVNVUk0UWl4RlFVRlJhRWNzUzBGQlMyVXNWMEZCVjNoQ0xFMUJRVTBzUjBGQlIybE5MRmRCUTAwdlN5eFBRVUZSZDBRc1JVRkJTME1zUlVGQlRXOUlMRWxCUVdWeVNDeEZRVVYyUlN0SExFVkJRVXRQTEVWQlFYRkNSQ3hGUVVVeFFrb3NSMEZFUVdoQ0xFVkJSbGxzUlN4RlFVRk5jMFlzUjBGRlJEVkVMRTFCUVUwc1VVRkRZa1FzVVVGRFZuTkVMRVZCUVdkQ0wwc3NTMEZCU3paS0xIZENRVUYzUWtzc1JVRkJUV01zU1VGRFZDeFBRVUZ5UXk5RkxFVkJRVkZxUnl4TFFVRkxORUlzUzBGQlMySXNWMEZCVjIxTExFbEJRV1ZxUml4RlFVRk5TeXhoUVVGVkxFdEJReTlFY2tVc1IwRkJVMmxGTEVWQlFWRnNSeXhMUVVGTE5FSXNTMEZCUzJJc1YwRkJWMjFMTEVsQlFVczFSU3hSUVVGUmJFZ3NUVUZCVFRoSExFVkJRVThzUTBGQlEycEZMRWRCUVU4clJTeFBRVUZQTVVnc1JVRkJVVkVzUzBGQlMybE1MRTFCUjJoSExFOUJRVTh2U3l4TFFVRkxNRXNzVTBGQlUyVXNVMEZCVTNoS0xFdEJTV3hEZFVnc1JVRkJVWFJLTEZWQlFWVm5ReXhMUVVGUExGZEJRM1pDTEVsQlFVbHJTaXhGUVVGWlZpeEZRVUZWZWtjc1JVRkJTVU1zUlVGQlRUaENMRVZCUVU5RExFVkJRVTlETEVWQlMyeEVMRWRCU2tGc1J5eExRVUZMT0Vvc1kwRkROa0lzVDBGQk4wSTVSQ3hGUVVGUmFFY3NTMEZCU3pKSkxFOUJRVTk2Unl4UFFVTjJRamhFTEVWQlFVMXNSeXhMUVVGTFJTeExRVUZOUVN4TFFVRkxiVU1zU1VGRlRDeE5RVUZrYmtNc1MwRkJTM1ZLTEZGQlFUQkVMRTlCUVhSRGRFUXNSVUZCVVdwSExFdEJRVXRWTEZGQlFWRXlSeXhqUVVGM1FuQkNMRVZCUVUxNFJpeFpRVUZUTEVkQlJYaEdMRWxCUVV0M1JDeEZRVUZMTEVWQlFVZERMRWRCUkdKblF5eEZRVUZSYkVjc1MwRkJTMVVzVVVGQlVUSkhMR05CUTBzMVJ5eFBRVUZSZDBRc1JVRkJTME1zUlVGQlRVUXNTVUZETTBOdFNDeEZRVUZoYkVZc1JVRkJUV3BETEVkQlEyNUNlVWNzUlVGQlZ6RkxMRXRCUVVzclNpeFJRVUZSTDBvc1MwRkJTM1ZLTEUxQlFVODJRaXhGUVVGWmNFd3NTMEZCUzNWSExFMUJRM0pFZGtjc1MwRkJTM0ZJTEdGQlFXRTVReXhMUVVGTGJVY3NSMEZITTBJc1IwRkJTVEZMTEV0QlFVczBRaXhMUVVGTFVpeFpRVU5hTEU5QlFVOXdRaXhMUVVGTGRVY3NVVUZKYUVKcFJDeEZRVUZSZEVvc1ZVRkJWWE5ITEU5QlFWTXNWMEZEZWtJc1NVRkJTWEZGTEVWQlFVbFlMRVZCUVUxakxFVkJRV012Unl4RlFVRkpReXhGUVVGTk9FSXNSVUZCVDBNc1JVRkJUME1zUlVGQlQwTXNSVUZSTTBRc1NVRlFiME1zVDBGQkwwSklMRVZCUVZGb1J5eExRVUZMTWtrc1QwRkJUMjVETEZOQlEzWkNVaXhGUVVGTmJFY3NTMEZCUzBVc1MwRkJUVUVzUzBGQlMyMURMRWxCUlU4c1QwRkJNVUk0UkN4RlFVRlJha2NzUzBGQlN6QkxMRmRCUTJoQ2VrVXNSVUZCVFc5R0xGbEJSMGh3U0N4RlFVRkxMRVZCUVVkRExFZEJSR0puUXl4RlFVRlJiRWNzUzBGQlMzRklMR05CUTJFMVJ5eFBRVUZSZDBRc1JVRkJTME1zUlVGQlRVUXNTVUZEYUVOcFF5eEZRVUZOYWtNc1IwRkRVbTlJTEZsQlNWZ3NTVUZCUzB3c1MwRkdUR2hNTEV0QlFVdHhTQ3hoUVVGbExFZEJRM0JDYkVJc1JVRkJVVzVITEV0QlFVdHBTeXh0UWtGSFdDeEpRVUZMV1N4TFFVUk1XQ3hGUVVGUEwwUXNSVUZCVFRaRkxFZEJSVUZrTEVWQlFVdFhMRWRCUTFCUkxGbEJSMklzVDBGQlQzSk1MRXRCUVV0cFN5eHRRa0ZCY1VJc1NVRkhia05VTEVWQlFWRjBTaXhWUVVGVmJVY3NUMEZCVXl4VFFVRlRlRVVzUjBGRGJFTXNTVUZCU1cxRkxFVkJRVTlETEVWQlMxZ3NUMEZLWXl4TlFVRldjRVVzU1VGRFJrRXNSVUZCVXl4SlFVVllOMElzUzBGQlMzVktMRTFCUVcxRExFOUJRVEZDZGtRc1JVRkJVV2hITEV0QlFVc3dTeXhWUVVGdlFqRkZMRVZCUVUweVJTeFpRVUZUTEVWQlEzWkNMRTlCUVM5Q01VVXNSVUZCVVdwSExFdEJRVXN5U1N4UFFVRlBkRU1zVVVGQmEwSktMRVZCUVUxdVJ5eExRVUZMUlN4TFFVRk5Oa0lzVVVGQlZTeEhRVWN6UlRKSUxFVkJRVkYwU2l4VlFVRlZkVW9zVTBGQlZ5eFRRVUZUZEVnc1IwRkRjRU1zVDBGQlNXNURMRXRCUVVzeVNTeFJRVUZ0UXl4TlFVRjRRak5KTEV0QlFVc3lTU3hQUVVGUFl5eFRRVU4yUW5wS0xFdEJRVXN5U1N4UFFVRlBZeXhUUVVGVE0wb3NTMEZCUzBVc1MwRkJUVzFETEVkQlJXaERka1FzUlVGQlQzVkZMRXRCUVV0SkxHTkJRV053UWl4SlFVazVRbkZJTEVWQmNrOVJMRWRCZVU5cVFqVkxMRVZCUVU5NVN5eHBRa0ZCYlVJc1UwRkJWWEZETEVkQlIyeERMRk5CUVZOeVF5eEZRVUZwUW5wSUxFVkJRVTFQTEVWQlFVbHBReXhIUVVOc1F5eEpRVUZKZVVVc1JVRkJWMmhETEVWQlFXVTRSU3hGUVVGak1VUXNSVUZCVDJoRkxFVkJRVWxETEVWQlFVMDRRaXhGUVVGUFF5eEZRV0Z3UlN4SlFWcEJha2NzUzBGQlN6UkNMRXRCUVU5QkxFVkJRMW8xUWl4TFFVRkxiVU1zUjBGQlMwRXNSVUZEVm01RExFdEJRVXR2UlN4TFFVRlBRU3hGUVVOYWNFVXNTMEZCUzNkSExFOUJRVk4yU0N4RlFVRlBaU3hMUVVGTGQwY3NUMEZCVVhoSExFMUJRMnhEUVN4TFFVRkxhME1zUzBGQlQycEVMRVZCUVU5bExFdEJRVXRyUXl4TFFVRk5iRU1zVFVGRE9VSkJMRXRCUVVzMFRDeFBRVUZUTTAwc1JVRkJUMlVzUzBGQlN6Uk1MRTlCUVZFMVRDeE5RVU5zUTBFc1MwRkJTM05ETEZWQlFWbDBReXhMUVVGTE5FSXNTMEZCUzJRc1YwRkJWMlFzUzBGQlMyOUZMRTFCUXpORGNFVXNTMEZCWVN4UFFVRkpMRWRCUTJwQ1FTeExRVUZMTmt3c1ZVRkJXU3hIUVVOcVFqZE1MRXRCUVVzNFRDeHJRa0ZCYjBJc1IwRkRla0pxUml4RlFVRm5RbXBHTEVWQlFVdHBSaXhuUWtGRmFFSTFReXhGUVVGTExFVkJRVWRETEVkQlJHSTRRaXhGUVVGUmFFY3NTMEZCUzIxRExFZEJRVWN5Unl4WlFVRmpMRWxCUTBweVNTeFBRVUZSZDBRc1JVRkJTME1zUlVGQlRVUXNTVUZETTBNMFJTeEZRVUZaTjBNc1JVRkJUUzlDTEVkQlEySTBReXhGUVVGakwwSXNTMEZCU3l0RUxFVkJRVlZKTEZGQlEyaERNRU1zUlVGQlpUTk1MRXRCUVVzclRDeFZRVUZWYkVRc1JVRkJWVWtzVFVGRGVFTm9RaXhGUVVGUmNrb3NSVUZCVHpSR0xGZEJRVmRKTEUxQlFVMXBSU3hGUVVGVk5VY3NUMEZEZEVNM1FpeEZRVUZWVGl4TFFVRXlReXhQUVVGeVEyMUhMRVZCUVZGcVJ5eExRVUZMYzBNc1ZVRkJhMElzVVVGQllUSkVMRVZCUVZFc1IwRkJTVEJHTEVsQlFXbENMRVZCUXpOR00wd3NTMEZCWVN4UFFVRkZNa3dzUjBGQlowSTVReXhGUVVGVk5VY3NUVUZEYUVOblJ5eEZRVUZOTjBRc1QwRkJVM2hHTEVWQlFVODBSaXhYUVVGWFF5eE5RVUZOUXl4VlFVTm9SREZGTEV0QlFXRXNUMEZCUlRKTUxFZEJRV2RDTVVRc1JVRkJUV2hITEUxQlJYSkRha01zUzBGQlN6Wk1MRlZCUVZWR0xFZEJRV2RDT1VNc1JVRkJWVFZITEU5QlowaHFSQ3hQUVRGSlFYWkRMRVZCUVZVeVNpeEZRVUZyUW5GRExFZEJaME0xUW5KRExFVkJRV2xDYmtvc1ZVRkJWWEZITEV0QlFVOHNZVUZGYkVNNFF5eEZRVUZwUW01S0xGVkJRVlZ0Unl4UFFVRlRMR0ZCUlhCRFowUXNSVUZCYVVKdVNpeFZRVUZWYjBjc1VVRkJWU3hoUVVWeVF5dERMRVZCUVdsQ2Jrb3NWVUZCVlRCTUxFOUJRVk1zVjBGRGJFTXNTVUZCU1M5TUxFVkJRVXMyU3l4RlFVRlZjMElzUlVGQlVTOUtMRVZCUVU4clJDeEZRVUZQUXl4RlFVZDZReXhKUVVGTGNFY3NTMEZHVEcxTkxFVkJRVk1zUjBGRFZHaEhMRVZCUVZGb1J5eExRVUZoTEU5QlJXNUNhVU1zUlVGQlVTdEVMRVZCUVUxdVJ5eEhRVU5rYlUwc1JVRkJUMjVOTEVkQlFVOXZReXhGUVVkb1FpeEpRVUZMY0VNc1MwRkVURzlITEVWQlFWRnFSeXhMUVVGTE5rd3NWVUZGV0c1Q0xFVkJRVmQ2UlN4RlFVRk5jRWNzUjBGRGFrSnRUU3hGUVVGUGJrMHNSMEZCVHpaTExFVkJRVk42U1N4UlFVVjZRaXhQUVVGUEswb3NSMEZIVkRORExFVkJRV2xDYmtvc1ZVRkJWVFpNTEZWQlFWa3NVMEZCVTJ4SUxFZEJRemxETEU5QlFVOUJMRVZCUVU5eFJTeFJRVUZSTEZsQlFXRXNVMEZCVXl0RExFZEJRekZETEU5QlFVOUJMRVZCUVZFc1IwRkJSME1zYVVKQlNYUkNOME1zUlVGQmFVSnVTaXhWUVVGVlowTXNTMEZCVHl4WFFVTm9ReXhKUVVGSmVVUXNSVUZCUnpsR0xFVkJRVXM0UlN4RlFVRlRLMFlzUlVGQlZURkpMRVZCUVZGMFFpeEZRVUZUT0VJc1JVRkJUMjlFTEVWQlFVZERMRVZCUVU4MVFpeEZRVUZKTmtJc1JVRkJTVFZDTEVWQlFVMDJRaXhGUVVGUFF5eEZRVUZQUXl4RlFVRlBReXhGUVVGUFF5eEZRVUZQUXl4RlFVRlBLMFlzUlVGQlQwTXNSVUZEYUVrc1NVRkJTM0JOTEV0QlFVdHhUU3hOUVVGUExFTkJSV1lzU1VGQlMzaE5MRXRCUkV4dFJ5eEZRVUZSYUVjc1MwRkJTelpNTEZWQlJWaHNTQ3hGUVVGVmNVSXNSVUZCVFc1SExFZEJRMmhDUnl4TFFVRkxOa3dzVlVGQlZXaE5MRWRCUVU5SExFdEJRVXNyU2l4UlFVRlJMMG9zUzBGQlN6UkNMRXRCUVV0RExFOUJRVkU0UXl4RlFVRlZMRk5CUVZWcFJDeEhRVU4yUlN4UFFVRlBMRk5CUVZNdlNDeEhRVU5rTEU5QlFVOHNWMEZEVEN4UFFVRlBLMGdzUlVGQlRUQkZMR05CUVdONlN5eFBRVUZQYUVNc1IwRkJUeXRJTEVWQlFVMXBSU3hWUVVGVmFFMHNSMEZCUzI5RExGVkJTRTRzUTBGTk0wUnFReXhOUVVGUFJpeExRVUZMUlN4TFFVRk5TQ3hKUVVWMlFrY3NTMEZCUzNGTkxFOUJRVkVzUlVGRlppeEhRVUV3UWl4TlFVRjBRbkpOTEV0QlFVdHpUU3hqUVVOUWRFMHNTMEZCUzNOTkxHTkJRV053U3l4WFFVTmtMRU5CVFV3c1NVRk1RV3hETEV0QlFVdHRReXhIUVVGSFlTeFZRVUZaYUVRc1MwRkJTM05ETEZWQlFWVkhMRk5CUVZNelF5eExRVUZMUlN4TlFVTnFSSGRETEVWQlFWRjRReXhMUVVGTGMwTXNWVUZCVlZjc1YwRkJWMjVFTEV0QlFVdEZMRXRCUVUxQkxFdEJRVXR0UXl4SFFVRkpia01zUzBGQlN6Uk1MRlZCUXpORU5Vd3NTMEZCUzIxRExFZEJRVWRwU0N4UlFVRlRMRVZCUTJwQ01Va3NSVUZCVlN4SFFVVk1kVVFzUlVGQlN5eEZRVUZIUXl4SFFVUmlLMElzUlVGQlVYSklMRVZCUVU4clFpeFpRVU5YUml4UFFVRlJkMFFzUlVGQlMwTXNSVUZCVFVRc1NVRkJUU3hEUVVkcVJDeEhRVVJCZGtRc1JVRkVRWE5DTEVWQlFWTnBSU3hGUVVGTmFFTXNTVUZEUnl4SFFVTmtha1VzUzBGQlMzTkRMRlZCUVZWT0xFZEJSV3BDTEVsQlFVc3lSQ3hMUVVSTVR5eEZRVUZSYkVjc1MwRkJTM05ETEZWQlFWVk9MRWRCUlhKQ05FUXNSVUZCU1Uwc1JVRkJUVkFzUjBGRFZtcEdMRVZCUVZGelFpeEhRVUZSTWtRc1IwRkJTME1zUlVGSmVrSXNTVUZCUzBRc1MwRkVURkVzUlVGQlVXNUhMRXRCUVVzMFFpeExRVUZMU1N4SFFVVm9RalJFTEVWQlFVbFBMRVZCUVUxU0xFZEJRekJDTEU5QlFTOUNSU3hGUVVGUmJrWXNSVUZCVVhOQ0xFbEJRVk15UkN4TFFVTTFRa1VzUlVGQlRVWXNSMEZCUzBNc1IwRkxha0lzU1VGQlMwVXNSVUZCU3l4RlFVRkhReXhIUVVSaVN5eEZRVUZSZUVnc1JVRkJUemhDTEZOQlExbEVMRTlCUVZGeFJpeEZRVUZMUXl4RlFVRlBSQ3hKUVVVM1EzQkdMRVZCUkVGelFpeEZRVUZUYjBVc1JVRkJUVTRzU1VGRGRVTXNUMEZCYmtOeFJ5eEZRVUZSYmswc1MwRkJTM05ETEZWQlFWVk9MRWxCUVcxQ2JVc3NSVUZCVVc1TkxFdEJRVXMwUWl4TFFVRkxTU3hIUVV0cVJpeEpRVUZMYmtNc1MwRklURWNzUzBGQlMzTk5MR05CUVdkQ0xFbEJRVWt4VGl4RlFVRlBkMFFzUzBGQlN6SkZMRTFCUVUwM1J5eFZRVUZWV0N4TlFVRk5UeXhMUVVGTFJTeExRVUZMYlVNc1IwRkJSMjlITEZsQlFXRXZSaXhGUVVGUE9VSXNSMEZETlVaV0xFdEJRVXR6VFN4alFVRmpjRXNzVDBGRGJrSnJTeXhGUVVGUmNFMHNTMEZCU3paTUxGVkJSVmh1UWl4RlFVRlhNRUlzUlVGQlRYWk5MRWRCUTJwQ1J5eExRVUZMT0V3c2EwSkJRV3RDYWswc1IwRkJUMGNzUzBGQlN5dEtMRkZCUVZFdlNpeExRVUZMYzAwc1kwRkJZM3BMTEU5QlFWRm9ReXhGUVVGTkxGTkJRVlVyU0N4SFFVTndSaXhQUVVGUExGTkJRVk12U0N4RlFVRkxOa3NzUjBGRGJrSXNUMEZCVHl4WFFVTk1MRTlCUVU5QkxFVkJRVk5sTEZOQlFWTTNSQ3hGUVVGTk1FVXNZMEZCWTNwTExFOUJRVTlvUXl4TlFVaHBRaXhEUVUxNFJVY3NUVUZCVDBZc1MwRkJTMFVzUzBGQlRVZ3NSVUZCU3paTExFMUJTMmhEY2tJc1JVRkJhVUp1U2l4VlFVRlZjMGNzVDBGQlV5eFhRVU5zUXl4SlFVRkpNMGNzUlVGQlpXMUhMRVZCUVU5RExFVkJRVTlETEVWQlJXcERMRWxCUVV0eVJ5eExRVVJNYlVjc1JVRkJVV2hITEV0QlFVczRUQ3hyUWtGRlFUbEdMRVZCUVUxdVJ5eEhRVU5TZDB3c1dVRkhXQ3hKUVVGTGVFd3NTMEZFVEc5SExFVkJRVkZxUnl4TFFVRkxOa3dzVlVGRlFUVkdMRVZCUVUxd1J5eEhRVU5TZDB3c1dVRkZXQ3hQUVVGMVF5eFBRVUV2UW01R0xFVkJRVkZzUnl4TFFVRkxjMDBzWlVGQmVVSndSeXhGUVVGTlRTeFBRVUZQTVVjc1MwRkJTMFVzVjBGQlVTeEhRVWR1UlhGS0xFVkJNMGxwUWl4RFFUWkpka0o2U3l4RlFVRlBORXNzVTBGRlZqVkxMRVZCUVU4eVRpeFpRVUZqTEZOQlFWVmlMRWRCUnpkQ0xGTkJRVk5oTEVWQlFWa3pTeXhGUVVGTlR5eEZRVUZKYVVNc1JVRkJUVThzUlVGQlUycEZMRWRCUXpWRFZpeExRVUZMTkVJc1MwRkJUMEVzUlVGRFdqVkNMRXRCUVV0dFF5eEhRVUZMUVN4RlFVTldia01zUzBGQlMyOUZMRXRCUVU5QkxFVkJRMXB3UlN4TFFVRkxNa1VzVVVGQlZVRXNSVUZEWmpORkxFdEJRVXRWTEZGQlFYRkNMRTFCUVZoQkxFVkJRV3RDUVN4RlFVRlZMRWRCUXpORFZpeExRVUZMZFVjc1MwRkJUM1JJTEVWQlFVOWxMRXRCUVV0MVJ5eExRVUZOZGtjc1RVRkRPVUpCTEV0QlFVdGxMRmRCUVdGbUxFdEJRVXRWTEZGQlFWRkxMRmxCUVdNc1IwRkROME5tTEV0QlFVdHhTQ3hoUVVGbExFZEJRM0JDY2tnc1MwRkJTMmxMTEcxQ1FVRnhRaXhIUVdFMVFpeFBRWGhDUVhaTExFVkJRVlUyVFN4RlFVRmhZaXhIUVdOMlFtRXNSVUZCV1hKTkxGVkJRVlY1U1N4UFFVRlRMRU5CUXpkQ01FSXNVVUZCVXl4VFFVRlRia1FzUlVGQlRXcEdMRWRCUTNSQ0xFOUJRVTlwUml4RlFVRkxNMFVzUzBGQlowSXNUVUZCVkU0c1JVRkJaMEpCTEVWQlFWRXNTMEZKTDBOelN5eEZRVUZaY2swc1ZVRkJWWEZITEV0QlFVOHNWMEZETTBJc1QwRkJUMmRITEVWQlFWbHdUU3hWUVVGVmIwY3NTMEZCUzI1SUxFMUJRVTFaTEV0QlFVMVlMRmxCUjNwRGEwNHNSVUY2UWxrc1EwRXlRbXhDTTA0c1JVRkJUelJMTEZOQlJWWTFTeXhGUVVGbExFOUJRVVZwUXl4UlFVRlJjVVVzUzBGQlR5eFRRVUZUTDBNc1JVRkJTVVlzUjBGRE0wTXNUMEZCYzBJc1RVRkJiRUpGTEVWQlFVZHhTeXhaUVVORmNrc3NSVUZCUjNGTExGbEJRWFZDTEUxQlFWUjJTeXhGUVVGblFrRXNSVUZCVVN4SFFVVjZRMFVzUlVGQlIzTkxMRlZCUVhGQ0xFMUJRVlI0U3l4RlFVRm5Ra0VzUlVGQlVTeEpRVWxzUkhKRUxFVkJRV1VzVDBGQlJXbERMRkZCUVZFMlRDeExRVUZQTEZOQlFWTjJTeXhGUVVGSlJpeEhRVU16UXl4UFFVRlBSU3hGUVVGSFlTeFZRVUZ4UWl4TlFVRlVaaXhGUVVGblFrRXNSVUZCVVN4SlFVZG9SSEpFTEVWQlFXVXNUMEZCUldsRExGRkJRVkU0VEN4TFFVRlBMRk5CUVZONFN5eEZRVUZKUml4SFFVTXpReXhQUVVGUFJTeEZRVUZIZVVzc1RVRkJUVU1zVVVGQlZUVkxMRVZCUVZFc1IwRkJTeXhSUVVkNlEzSkVMRVZCUVdVc1QwRkJSV2xETEZGQlFWRnBUU3hMUVVGUExGTkJRVk16U3l4RlFVRkpSaXhIUVVNelF5eFBRVUZQUlN4RlFVRkhlVXNzVFVGQlRVTXNVVUZCVlRWTExFVkJRVkVzVDBGQlV5eEpRVWMzUTNKRUxFVkJRV1VzVDBGQlJXbERMRkZCUVZGclRTeFJRVUZWTEZOQlFWTTFTeXhGUVVGSlJpeEhRVU01UXl4UFFVRlBSU3hGUVVGSE5rc3NWVUZCV1M5TExFZEJSM2hDY2tRc1JVRkJaU3hQUVVGRmFVTXNVVUZCVVcxTkxGTkJRVmNzVTBGQlV6ZExMRVZCUVVsR0xFZEJReTlETEU5QlFVOUZMRVZCUVVjMlN5eFhRVUZoTDBzc1IwRkhla0p5UkN4RlFVRmxMRTlCUVVWcFF5eFJRVUZSZDBRc1VVRkJWU3hEUVVOcVEybEdMRmRCUVZjc1JVRkRXRllzVTBGQlZTeEpRVU5XTVVjc1MwRkJUU3hUUVVGVFF5eEhRVU5pTEU5QlFVOTJSQ3hGUVVGUGRVVXNTMEZCUzBNc1ZVRkJWV3BDTEVWQlFVa3NVMEZCVlc1RExFdEJRVXR6Unl4VlFVVnNSRVVzVDBGQlVTeFRRVUZUY2tVc1IwRkRaaXhQUVVGUGRrUXNSVUZCVDNWRkxFdEJRVXRITEZsQlFWbHVRaXhGUVVGSkxGTkJRVlZ1UXl4TFFVRkxjMGNzVlVGRmNFUXJSQ3hSUVVGVExGTkJRVk5zU1N4RlFVRkpSaXhIUVVOd1FpeEpRVUZKSzBRc1JVRkRTaXhOUVVGblFpeFZRVUZhTjBRc1JVRkJSMmxETEV0QlEwVnFReXhGUVVGSGEwTXNVMEZCYVVNc1QwRkJja0l5UWl4RlFVRlJOMFFzUlVGQlIwWXNUMEZCYVVJclJDeEZRVUZOYVVnc1owSkJRV0VzVFVGQmMwSXNUVUZCVkdoTUxFVkJRV2RDUVN4RlFVRk5aMHdzWjBKQlFXRXNSMEZGT1VjNVN5eEZRVUZIYTBNc1ZVRkJXWEJETEVsQlN6VkNja1FzUlVGQlpTeFBRVUZGYVVNc1VVRkJVWEZOTEZWQlFWa3NRMEZEYmtNMVJDeFhRVUZYTEVWQlExaFdMRk5CUVZVc1NVRkRWakZITEV0QlFVMHNVMEZCVTBNc1IwRkRZaXhQUVVGUGRrUXNSVUZCVDNWRkxFdEJRVXRETEZWQlFWVnFRaXhGUVVGSkxGTkJRVlZ1UXl4TFFVRkxjMGNzVlVGRmJFUkZMRTlCUVZFc1UwRkJVM0pGTEVkQlEyWXNUMEZCVDNaRUxFVkJRVTkxUlN4TFFVRkxSeXhaUVVGWmJrSXNSVUZCU1N4VFFVRlZia01zUzBGQlMzTkhMRlZCUlhCRUswUXNVVUZCVXl4VFFVRlRiRWtzUlVGQlNVWXNSMEZEY0VJc1NVRkJTU3RFTEVWQlEwb3NUVUZCWjBJc1ZVRkJXamRFTEVWQlFVZHBReXhMUVVORmFrTXNSVUZCUjJ0RExGTkJRV2xETEU5QlFYSkNNa0lzUlVGQlVUZEVMRVZCUVVkR0xFOUJRV2xDSzBRc1JVRkJUV2xJTEdkQ1FVRmhMRTFCUVhOQ0xFMUJRVlJvVEN4RlFVRm5Ra0VzUlVGQlRXZE1MR2RDUVVGaExFZEJSVGxIT1Vzc1JVRkJSMnRETEZOQlFWZHdReXhKUVVzelFuSkVMRVZCUVdVc1QwRkJSV2xETEZGQlFWRnZRaXhOUVVGUkxFTkJReTlDY1Vnc1YwRkJWeXhGUVVOWVZpeFRRVUZWTEVsQlExWXhSeXhMUVVGTkxGTkJRVk5ETEVkQlEySXNSMEZCY1VJc1ZVRkJaa0VzUlVGQlIyZE1MRk5CUVcxRExGVkJRVnBvVEN4RlFVRkhhVU1zUzBGRmFrTXNUMEZFUVhCRkxFdEJRVXR4UkN4TlFVRjFRaXhYUVVGbWJFSXNSVUZCUjJkTUxGRkJRWFZDTEZOQlFWY3NVVUZETTBOMlR5eEZRVUZQZFVVc1MwRkJTME1zVlVGQlZXcENMRVZCUVVsdVF5eExRVUZMY1VRc1RVRkJUM0pFTEV0QlFVdHpSeXhWUVVkMFJFVXNUMEZCVVN4VFFVRlRja1VzUjBGRFppeEhRVUZ4UWl4VlFVRm1RU3hGUVVGSFowd3NVMEZCYlVNc1ZVRkJXbWhNTEVWQlFVZHBReXhMUVVOcVF5eFBRVUZQZUVZc1JVRkJUM1ZGTEV0QlFVdEhMRmxCUVZsdVFpeEZRVUZKYmtNc1MwRkJTM0ZFTEUxQlFVOXlSQ3hMUVVGTGMwY3NWVUZIZUVRclJDeFJRVUZUTEZOQlFWTnNTU3hGUVVGSlJpeEhRVU53UWl4SlFVRkpLMElzUlVGQlIwTXNSVUZCU1VNc1JVRkJUVGhDTEVWQlFVOURMRVZCUVU5RExFVkJRVTh2UWl4RlFVTjBReXhIUVVGdFFpeFZRVUZtYUVNc1JVRkJSMmRNTEZOQlFXMURMRlZCUVZwb1RDeEZRVUZIYVVNc1MwRkRMMElzVDBGQlQycERMRVZCUVVkcFRDeGhRVUZoTEZGQlFWTnVUQ3hIUVVNelFpeEhRVUZ4UWl4TlFVRnFRbWxDTEU5QlFVOXdSU3hSUVVWb1FpeEhRVVJCY1VRc1JVRkJTM0pFTEVWQlFVOXhSQ3hKUVVORkxFMUJRVlJHTEVWQlFXZENRU3hGUVVGTlowd3NaMEpCUVdFc1RVRkJiVU1zVDBGQmNrSnFTQ3hGUVVGUk4wUXNSVUZCUjNkQ0xFOUJRV2xDY1VNc1JVRkJUV2xJTEdkQ1FVRmhMRWRCUTI1SExFOUJRVTg1U3l4RlFVRkhkMElzU1VGQllTeE5RVUZVTVVJc1JVRkJaMEpCTEVWQlFWRXNVMEZIZUVNc1IwRkJaMElzYjBKQlFWcEZMRVZCUVVkcFF5eE5RVU5NTEVkQlFXRXNUVUZCVkc1RExFVkJRV1VzUTBGRmFrSXNTVUZFUVd0RExFVkJRVmNzUjBGRFRrWXNSVUZCU3l4RlFVRkhReXhGUVVGUEwwSXNSVUZCUnpGQ0xFOUJRVkYzUkN4RlFVRkxReXhGUVVGTlJDeEpRVU40UTBRc1JVRkJTVGRDTEVWQlFVYzRRaXhIUVVOUVJTeEZRVUZUU1N4TFFVRkxVQ3hGUVVGRlRTeFZRVUZaTWtJc1JVRkJVV3BETEVWQlFVVXZRaXhOUVVGUE4wSXNSVUZCVlU0c1MwRkJTMjFETEVWQlFVOW5SU3hKUVVGVkxFbEJSUzlGTEU5QlFVODVRaXhSUVVWS0xFbEJRV01zVFVGQlZHeERMRVZCUVdkQ1FTeEZRVUZOWjB3c1owSkJRV0VzVFVGQmJVTXNUMEZCY2tJdlJ5eEZRVUZSTDBRc1JVRkJSMFlzVDBGQmFVSnBSU3hGUVVGTkswY3NaMEpCUVdFc1IwRkRNVWNzVDBGQlR6bExMRVZCUVVkR0xFMUJRV2xDTEUxQlFWUkJMRVZCUVdkQ1FTeEZRVUZSTEV0QlRXeEVja1FzUlVGQlpTeFBRVUZGYVVNc1VVRkJXU3hIUVVGSkxFTkJReTlDWjBnc1QwRkJUeXhGUVVOUVpTeFRRVUZWTEVsQlExWXhSeXhMUVVGTkxGTkJRVk5ETEVkQlEySXNTVUZCU1hOQ0xFVkJRVTB3UkN4RlFVTldMRWRCUVcxQ0xFMUJRV1p1U0N4TFFVRkxjVTRzVDBGUFVDeFBRVTVCTlVvc1JVRkJUeXhEUVVGRGVrUXNTMEZCU3pSQ0xFdEJRVXRZTEU5QlFWRnFRaXhMUVVGTGIwVXNUVUZCVFd0S0xFdEJRVXNzUzBGQlMzQkZMRkZCUVZFc1MwRkJUU3hMUVVNM1JDOUNMRVZCUVdOb1JpeEZRVUZIYjB3c1lVRkJZVGxLTEVkQlF6bENla1FzUzBGQlMzRk9MRTlCUVZNelN5eFRRVUZUT0Vzc1kwRkJZeXhaUVVGamVFNHNTMEZCUzI5RkxFdEJRVThzU1VGQlRTdERMRVZCUVdNc1MwRkRia1p1U0N4TFFVRkxjVTBzVDBGQlVTeEZRVU5pYkVzc1JVRkJSM05NTEdkQ1FVRm5RbWhMTEVkQlEyNUNkRUlzUlVGQlIybEhMRmRCUVZkRExHRkJRV0Z5U1N4TFFVRkxjVTRzVDBGQlVXeE1MRWRCUTJwRFFTeEZRVUZIYVVjc1YwRkJWM1JHTEZsQlFWbFlMRWxCUjNKRGNVVXNUMEZCVVN4WFFVTk9MRWRCUVVsNFJ5eExRVUZMTUU0c1QwRkZVQ3hQUVVSQk1VNHNTMEZCU3pCT0xFOUJRVTlzU0N4VFFVTk1lRWNzUzBGQlMzRk5MRTlCUVZFc1IwRkhlRUpvUXl4UlFVRlRMRk5CUVZOc1NTeEZRVUZKUml4SFFVTndRaXhKUVVGSmNFTXNSVUZCU3pCS0xFVkJRVTh4U0N4RlFVRlJiVVVzUlVGRGVFSXNTMEZCVFM5RUxFbEJRVmRxUXl4TFFVRkxjVTBzVFVGQlR5eERRVU16UWl4SFFVRkpjRXNzUlVGQlR5eERRVWRVTEVsQlFVdHdReXhMUVVaTVowTXNSVUZCVXl4SFFVTlViVVVzUlVGQlVXaEhMRXRCUVVzMFFpeExRVUZMUXl4UFFVVm9RakJJTEVWQlFWRjJSQ3hGUVVGTmJrY3NSMEZEWkdkRExFVkJRVTlvUXl4SFFVRlBNRW9zUlVGSmFFSXNUMEZHUTNaS0xFdEJRVXN3VGl4VFFVRlhNVTRzUzBGQlN6Qk9MRTlCUVZNc1NVRkJTVGxQTEVWQlFVOTNSQ3hMUVVGTFJDeEZRVUZKVGl4RlFVRlJOMElzUzBGQlN6UkNMRXRCUVV0c1FpeGhRVUZoZDBJc1QwRkRiRVpzUXl4TFFVRkxjVTRzVDBGQlQycEdMRmRCUVZkRExHRkJRV0ZzUnl4RlFVRkpia01zUzBGQlMzRk9MRTlCUVU5TkxHRkJRemRETTA0c1MwRkJTM0ZOTEU5QlFWRXNSVUZKY0VJc1QwRkdRV3hMTEVWQlFVZHBSeXhYUVVGWGRFWXNXVUZCV1Znc1IwRkRNVUp1UXl4TFFVRkxNRTRzVDBGQlQyeElMRk5CUTB4NFJ5eExRVUZMY1Uwc1QwRkJVU3hKUVVreFFtaEhMRTlCUVZFc1UwRkJVM2hGTEVkQlEyWXNTVUZCU1cxRkxFVkJRMG9zVDBGQlowTXNUMEZCZUVKQkxFVkJRVkZvUnl4TFFVRkxNRTRzVVVGQmEwSXhTQ3hGUVVGTlN5eFBRVUZQZUVVc1VVRkJWU3hKUVVsc1JXcEVMRVZCUVdVc1QwRkJSV2xETEZGQlFWRXJUU3hQUVVGVExFTkJRMmhETDBZc1QwRkJUeXhGUVVOUVpTeFRRVUZWTEVsQlExWXhSeXhMUVVGTkxGTkJRVk5ETEVkQlEySXNUMEZCVDNaRUxFVkJRV1VzVDBGQlJXbERMRkZCUVZrc1IwRkJSWEZDTEV0QlFVdHdReXhMUVVGTFJTeExRVUZOYlVNc1NVRkZlRVJ4UlN4UFFVRlJMRmRCUTA0c1QwRkJUelZJTEVWQlFXVXNUMEZCUldsRExGRkJRVmtzUjBGQlJUSkdMRTlCUVU4eFJ5eExRVUZMUlN4UFFVVndSSEZMTEZGQlFWTXNVMEZCVTJ4SkxFVkJRVWxHTEVkQlEzQkNMRTlCUVU5eVJDeEZRVUZsTEU5QlFVVnBReXhSUVVGWkxFZEJRVVYzU2l4UlFVRlJka3NzUzBGQlMwVXNTMEZCVFcxRExFZEJRVXRHTEVsQlJXaEZiMFVzVDBGQlVTeFRRVUZUZUVVc1IwRkRaaXhQUVVGUGFrUXNSVUZCWlN4UFFVRkZhVU1zVVVGQldTeEhRVUZGZDBZc1QwRkJUM1pITEV0QlFVdEZMRXRCUVUwMlFpeExRVWsxUkdwRUxFVkJRV1VzVDBGQlJXbERMRkZCUVZFc1VVRkJWU3hEUVVOcVEyZE9MRlZCUVZrc1JVRkRXbXBHTEZOQlFWVXNTVUZEVm5CRExFOUJRVkVzVTBGQlUzSkZMRWRCUTJZc1IwRkJTVzVETEV0QlFVdDNRaXhSUVVOUUxFOUJRVTgxUXl4RlFVRlBkVVVzUzBGQlMwY3NXVUZCV1c1Q0xFVkJRVWx1UXl4TFFVRkxhMHNzUzBGQlN5eEhRVUZKYkVzc1MwRkJTM2RDTEZWQlJ6RkVOa2tzVVVGQlV5eFRRVUZUYkVrc1JVRkJTVVlzUjBGSmNFSXNUMEZJU1dwRExFdEJRVXQzUWl4VFFVTlFOVU1zUlVGQlQzVkZMRXRCUVV0SExGbEJRVmx1UWl4RlFVRkpia01zUzBGQlMydExMRXRCUVVzc1IwRkJTV3hMTEV0QlFVdDNRaXhUUVVVeFF6VkRMRVZCUVU5MVJTeExRVUZMUXl4VlFVRlZha0lzUlVGQlNXNURMRXRCUVV0clN5eExRVUZMTEVkQlFVbHNTeXhMUVVGTGQwSXNVVUZCVlhoQ0xFdEJRVXN5U2l4aFFVRmhNVWdzVFVGSmNFWnlSQ3hGUVVGbExFOUJRVVZwUXl4UlFVRlJMRlZCUVZrc1EwRkRia05uU0N4UFFVRlBMRVZCUTFCbExGTkJRVlVzU1VGRFZqRkhMRXRCUVUwc1UwRkJVME1zUjBGRFlpeEpRVUZKYzBJc1JVRkJXVkVzUlVGQlNVTXNSVUZCVFRoQ0xFVkJRekZDTEVkQlFXMUNMRTFCUVdab1J5eExRVUZMY1U0c1QwRkRVRFZLTEVWQlFVOHNRMEZCUTNwRUxFdEJRVXMwUWl4TFFVRkxXQ3hQUVVGUmFrSXNTMEZCUzI5RkxFMUJRVTFyU2l4TFFVRkxMRXRCUVV0d1JTeFJRVUZSTEV0QlFVMHNTMEZETjBSc1NpeExRVUZMY1U0c1QwRkJVek5MTEZOQlFWTTRTeXhqUVVGakxGbEJRV040VGl4TFFVRkxiMFVzUzBGQlR5eExRVU12UkhCRkxFdEJRVXM0VGl4VFFVRlhMRWRCUTJoQ00wd3NSVUZCUjNOTUxHZENRVUZuUW1oTExFZEJRMjVDZEVJc1JVRkJSMmxITEZkQlFWZERMR0ZCUVdGeVNTeExRVUZMY1U0c1QwRkJVV3hNTEVkQlEzaERRU3hGUVVGSGFVY3NWMEZCVjNSR0xGbEJRVmxZTEZGQlJ6RkNMRWxCUVVzNFFpeEZRVUZMTEVWQlFVZERMRWRCUkdJNFFpeEZRVUZSYUVjc1MwRkJTemhPTEZWQlEyRnlUaXhQUVVGUmQwUXNSVUZCUzBNc1JVRkJUVVFzU1VGRGNFTXJRaXhGUVVGTkwwSXNSMEZEVWk5Q0xGRkJTVmh6UlN4UFFVRlJMRk5CUVZOeVJTeEhRVU5tTEVsQlFWVTRRaXhGUVVGSlF5eEZRVUZOT0VJc1JVRkRjRUlzUjBGQmNVSXNUVUZCYWtKb1J5eExRVUZMT0U0c1UwRkZVQ3hKUVVGTE4wb3NSVUZCU3l4RlFVRkhReXhIUVVSaU9FSXNSVUZCVVdoSExFdEJRVXM0VGl4VlFVTmhjazRzVDBGQlVYZEVMRVZCUVV0RExFVkJRVTFFTEVsQlEzQkRLMElzUlVGQlRTOUNMRWRCUTFKMVF5eFZRVWxZTmtRc1VVRkJVeXhUUVVGVGJFa3NSVUZCU1RSTUxFZEJRM0JDTEVsQlFVbHdUU3hGUVVGVFdTeEZRVUZUTmtNc1JVRkJUM1pHTEVWQlFVc3dTaXhGUVVGUGFFa3NSVUZCVjJJc1JVRkJVM05PTEVWQlFWVjJUQ3hGUVVGVllpeEZRVUZOY1VNc1JVRkJTVFpDTEVWQlFVbDNReXhGUVVGSmNFVXNSVUZCVFRaQ0xFVkJRVTlyU1N4RlFVRlBha2tzUlVGQlQwTXNSVUZCVDBNc1JVRkhja2tzUjBGR1FUTkZMRVZCUVZsMlFpeExRVUZMYTBzc1MwRkJTeXhIUVVOMFFqWkVMRVZCUVdGQkxFZEJRV01zUjBGRGRrSXZUaXhMUVVGTE9FNHNVMEZCVTNKT0xFOUJRVk56VGl4RlFVRlhkRTRzVDBGRmNFTXNTVUZCUzNkRUxFVkJRVXNzUlVGQlIwTXNSMEZFWWpoQ0xFVkJRVkZsTEUxQlFVMHZSeXhMUVVGTE9FNHNVMEZCVTNKT0xFOUJRVk56VGl4RlFVRlhkRTRzVTBGRGRFSkJMRTlCUVZGM1JDeEZRVUZMUXl4RlFVRk5SQ3hKUVVOMlF5dENMRVZCUVUwdlFpeEpRVU5XY2tNc1JVRkJUelZDTEV0QlFVczRUaXhUUVVGVFNTeFBRVU5vUWpGSUxGTkJRMHg0Unl4TFFVRkxjVTRzVDBGQlQycEdMRmRCUVZkMFJpeFpRVUZaYkVJc1JVRkJTemhFTEVsQlFVa3NTVUZIYUVRc1NVRkJTMDRzUlVGQlVWVXNSVUZCU3l4RlFVRkhReXhGUVVGUlowa3NSVUZCVjNST0xFOUJRVkZ4Uml4RlFVRkxReXhGUVVGUFdDeEpRVUZWVlN4RlFVOXdSU3hIUVU1QmVVUXNSVUZCVVhkRkxFVkJRVmN6U1N4SlFVTnVRamRETEVWQlFVOHNRMEZEVERaRExFMUJRVTlCTEVsQlJVcDRSeXhGUVVGbExFOUJRVVV3UXl4bFFVRmxReXhKUVVGak5rUXNSVUZEYmtRM1F5eEZRVUZMYUVJc1IwRkJZV2RKTEVWQlExVXNUVUZCZUVKMlNpeExRVUZMT0U0c1UwRkJVekZKTEVkQlFXZENMRU5CUldoRExFbEJRVXQyUml4TFFVUk1iMGNzUlVGQlVXcEhMRXRCUVVzMFFpeExRVUZMUXl4UFFVVm9RakJJTEVWQlFWRjBSQ3hGUVVGTmNFY3NSMEZEUnl4TlFVRmlNRU1zUlVGQlN6RkRMRXRCUTFBd1F5eEZRVUZMTVVNc1IwRkJUekJLTEVkQlIyaENlVVVzUlVGQlYyaFBMRXRCUVVzNFRpeFRRVUZUY2s0c1QwRkJVMVFzUzBGQlN6aE9MRk5CUVZNNVRpeExRVUZMT0U0c1UwRkJVM0pPTEU5QlFWTXNSMEZCUjJsR0xFbEJRVWtzUjBGQlN6RkdMRXRCUVV0eFRpeFJRVU40UmpOTkxFVkJRVlZXTEV0QlFVczBRaXhMUVVGTGJFSXNWMEZEV2xVc1lVRkJZeXhGUVVOMFFuRkNMRVZCUVZkT0xFVkJRVWRuVFN4WFFVRlZMRWxCUTNoQ2RrMHNSVUZCVHl4SlFVRkphRVFzUlVGQlQzZEVMRXRCUVV0TExFVkJRVlZHTEVWQlFVMDNRaXhKUVVOc1EzZENMRTlCUTB4c1F5eExRVUZMT0U0c1UwRkJVM1pLTEV0QlFVc3pReXhIUVVOdVFqVkNMRXRCUVV0eFRpeFBRVUZQYWtZc1YwRkJWME1zWVVGQllUVkdMRVZCUVZWMVRDeEZRVUZUVEN4clFrRkRPVU16VGl4TFFVRkxPRTRzVTBGQlV6RkpMRWRCUVU5MlJDeFBRVUZQVGl4TFFVRmxaMGtzUjBGRGNFUjJTaXhMUVVGTE9FNHNVMEZCVXpGSkxFZEJRVTlwUWl4UFFVRlBPVVFzUjBGSGFFTXNSMEZCYjBJc1YwRkJhRUpLTEVWQlFVYzJSeXhUUVVWTUxFbEJRVXRXTEVWQlFVc3NSVUZCUnpKR0xFZEJSR0l2U0N4RlFVRlJiRWNzUzBGQlN6UkNMRXRCUVVzclJpeFZRVU5UYkVnc1QwRkJVVFpJTEVWQlFVc3lSaXhGUVVGUE0wWXNTMEZETjBNelJ5eEZRVUZWZFVVc1JVRkJUVzlETEVsQlEwcHVSeXhMUVVGUGJrTXNTMEZCUzNGT0xFOUJRVTlxUml4WlFVRXJRaXhWUVVGcVFucEhMRVZCUVZGNVF5eE5RVU51UkhwRExFVkJRVkUwUlN4UlFVdG9Ra1lzVDBGQlVTeFRRVUZUZUVVc1IwRkRaaXhKUVVGSlZTeEZRVUZOTVVNc1JVRkJTekJLTEVWQlFXRjBSaXhGUVVGSlF5eEZRVUZOT0VJc1JVRkZkRU1zU1VGQlMyNUhMRXRCUkV3d1F5eEZRVUZQTEVkQlEwdFdMRVZCUTFZd1NDeEZRVUZSTVVnc1JVRkJUMmhETEVkQlExaEJMRWxCUVZGSExFdEJRVXRyU3l4TFFVRkxMRXRCUTNCQ00wZ3NSVUZCU3pGRExFZEJRVTh3U2l4SFFVbG9RaXhKUVVGTGRFWXNSVUZCU3l4RlFVRkhReXhIUVVSaU9FSXNSVUZCVVdoSExFdEJRVXM0VGl4VlFVTmhjazRzVDBGQlVYZEVMRVZCUVV0RExFVkJRVTFFTEVsQlEzQkRLMElzUlVGQlRTOUNMRWRCUTFKdlF5eFBRVUZQT1VRc1MwRkxiRUl6UkN4RlFVRmxMRTlCUVVWcFF5eFJRVUZSTEZkQlFXRXNVMEZCVTNOQ0xFVkJRVWxHTEVkQlEycEVMRWxCUVVsdFRTeEZRVVZLTEVsQlFVdHVUU3hMUVVFd1JDeExRVVF2UkcxTkxFVkJRVlVzU1VGQlRXcE5MRVZCUVVkclRTeFZRVUZaTEV0QlExQm9UeXhSUVVGUkxFbEJRVTFNTEV0QlFVdHJTeXhMUVVGTExFZEJRVXNzVFVGRGJrUXNUMEZCVHk5SUxFVkJRVWRyVFN4VlFVRlpjRTBzUlVGQllVVXNSVUZCUjJ0TkxGVkJRVmtzU1VGQlRYSlBMRXRCUVV0clN5eExRVUZMTEVkQlFVdHJSU3hGUVVGUmJFWXNVVUZCVVN4SlFVRk5iRW9zUzBGQlMydExMRXRCUVVzc1IwRkJTeXhKUVVGTExFdEJRVXQ2UlN4UlFVa3hTRGRITEVWQlFXVXNUMEZCUldsRExGRkJRVkVzUzBGQlR5eFRRVUZUYzBJc1JVRkJTVVlzUjBGRE0wTXNUMEZCWVN4TlFVRlVRU3hGUVVOTFJTeEZRVUZIYVV3c1lVRkJZWEJPTEV0QlFVdHZSU3hMUVVGTmJrTXNSMEZGTTBKRkxFVkJRVWR6VEN4blFrRkJaMEo2VGl4TFFVRkxiMFVzVDBGSmJrTjRSaXhGUVVGbExFOUJRVVZ0UXl4WFFVRnBRaXhMUVVGSkxGZEJRM0JETEVsQlFVbHRTaXhGUVVGTmFra3NSVUZGVml4UFFVUkJRU3hGUVVGUk5VTXNWVUZCVlN4SFFVRkpOa3NzUlVGQlR5eEhRVUZMTjBzc1ZVRkJWVzlDTEU5QlFWTnVRaXhGUVVGUlVTeExRVUZMVkN4VlFVRlhMRWRCUVVzc1IwRkRNMFUwUXl4RlFVRk5ia01zUzBGQlMxWXNUVUZCVFRaRExFVkJRVThzUTBGQlEycERMRTFCUVUxblNDeFBRVUZQTVVnc1JVRkJVVkVzUzBGQlMyOUxMRTFCUnpWRWRFd3NSVUZCWlN4UFFVRkZiME1zVTBGQlV5eExRVUZQTEVOQlF5OUNhMHNzUjBGQlNTeE5RVU5LYjBRc1VVRkJVeXhGUVVOVVF5eFJRVUZUTEVkQlExUkRMR05CUVdVc1UwRkJVMnhGTEVkQlEzUkNMRWxCUVVsWkxFVkJRVWx5Uml4RlFVRlBORWtzUlVGUFppeFBRVTVMYmtVc1JVRkJTVGRMTEdWQlFXVlBMRXRCUVV0clRDeE5RVU16UWtFc1JVRkJTMnhNTEV0QlFVdHpUeXhWUVVOV1NTeFBRVUZQUXl4bFFVRmxja1VzUlVGQlMzUkxMRXRCUVV0clRDeEhRVUZKTEVOQlEyeERha29zVFVGQlQybEtMRTFCUjBoeVJpeEZRVUZSTjBZc1MwRkJTM1ZQTEZOQlFWTkZMRVZCUVZGdVJTeEZRVUZKZEVzc1MwRkJTMnRNTEU5QlFWTnlSaXhGUVVGTk5Fa3NSMEZCVXl4RFFVTnlSVWNzVlVGQlZ5eE5RVWRtUXl4eFFrRkJjMElzVTBGQlUwTXNSVUZCU3pWRUxFZEJRMnhETEV0QlFVdDNSQ3hQUVVGUFN5eExRVUZMUkN4RlFVRkpSaXhYUVVGWGJrOHNVVUZEZUVKeFR5eEZRVUZKUlN4VlFVRlpUaXhQUVVGUFN5eExRVUZMUkN4RlFVRkpSU3hWUVVGVmRrOHNVVUZET1VNc1kwRkJZMVFzUzBGQlMzVlBMRkZCUVZGeVJDeEpRVWxxUXl0RUxHRkJRV01zVTBGQlV6TkZMRVZCUVV0d1RDeEhRVU14UWl4SlFVRkpaMUVzUlVGQlMwTXNSVUZCVlZvc1JVRkpia0lzVDBGSVFWa3NSVUZCVnpkRkxFVkJRVWx3VEN4SFFVTm1aMUVzUlVGQlRXeFFMRXRCUVV0M1R5eGpRVUZqYkVVc1IwRkRla0pwUlN4RlFVRlZkazhzUzBGQlMzVlBMRkZCUTFKcVJTeEZRVUZKY0V3c1IwRkJUU3hYUVVObUxFbEJRV041Unl4RlFVRkhlVW9zUlVGQlIwTXNSVUZCVlhCTUxFVkJRVWxETEVWQlFVMDRRaXhGUVVGUFF5eEZRVUZQUXl4RlFVRlBReXhGUVVjM1JDeEpRVUZMYVVvc1MwRkdURU1zUlVGQlYwWXNSVUZCVXk5UUxFMUJRVTFyVEN4RlFVRkxha3dzVjBGREwwSXlSeXhGUVVGUmEwb3NSVUZCU1VZc1UwRkpWaXhKUVVaQmNrb3NSVUZCU1Vzc1JVRkJUVzlLTEVkQlJVeHVUQ3hGUVVGTExFVkJRVWRETEVkQlJHSnBReXhGUVVGblJpeFBRVUYyUlVZc1JVRkJaME1zVDBGQmRrSkRMRVZCUVZGeFNTeEZRVUZSWVN4SlFVRmpiRW9zUlVGQlRUQkpMRlZCUVZWcVNpeFJRVUZMTEVkQlFXdENUU3hGUVVGUkxFbEJRM0pGZUVZc1QwRkJVWGRFTEVWQlFVdERMRVZCUVUxRUxFdEJRek5EYzBjc1JVRkJWM0JGTEVWQlFVMXNReXhOUVVseVFpeFBRVUZQYjB3c1NVRkhXRU1zYVVKQlFXdENMRk5CUVZOb1JpeEZRVUZMZDBVc1JVRkJTMjVMTEVkQlEyNURMRWxCUVVsNlJpeEZRVUZKY1ZFc1JVRkJWMHdzUlVGQlMzSktMRVZCUVU4MVFpeEZRVUZKUXl4RlFVTnVReXhIUVVGSk5rTXNUVUZCVFhsSkxGRkJRVkZzUml4SFFVRk5MRU5CUlhSQ0xFZEJRVzlDTEU5QlJIQkNORVVzUlVGQlRXeFFMRXRCUVV0M1R5eGpRVUZqYkVVc1NVRkRha0l3UlN4VFFVZE9MRWxCUmtGRkxFVkJRVWxHTEZOQlFWY3NSMEZGVmk5TExFVkJRVXNzUlVGQlIwTXNSMEZFWW5GTUxFVkJRVmtzUTBGQlF5eFBRVUZSTEUxQlFVOHNVVUZCVXl4VlFVRlhMRTlCUVZFc1ZVRkJWeXhYUVVOeVF6bFBMRTlCUVZGM1JDeEZRVUZMUXl4RlFVRk5SQ3hKUVVNdlF5OUZMRVZCUVV0eFVTeEZRVUZWZEV3c1IwRkRabXBGTEV0QlFVdHBVQ3hoUVVGaE0wVXNSVUZCUzNCTUxFZEJUVE5DTEVkQlNHMURMRTlCUVRsQ01rY3NSVUZCVVhGS0xFVkJRVWxHTEZWQlFWVkdMRXRCUTNwQ2Frb3NSVUZCVFdsS0xFZEJRVThzU1VGRldERlBMRVZCUVZWT0xFdEJRVXR2VUN4RlFVRkpSaXhUUVVGVFJpeEhRVUZOYmtzc1IwRkJWeXhGUVVNdlF5eFBRVUZQZFVzc1JVRkJTVVlzVTBGQlUwWXNSMEZCUzNaTExFdEJRVXRKTEV0QlNYQkRPRXNzYlVKQlFXOUNMRk5CUVZOdVJpeEZRVUZMZDBVc1JVRkJTMjVMTEVkQlEzSkRMRWxCUVVrclN5eEZRVUZMVWl4RlFVRkxSaXhGUVVOa0xFZEJRVWxxU1N4TlFVRk5lVWtzVVVGQlVXeEdMRWxCUVhsQ0xFMUJRV2hDUVN4RlFVRkpkRXNzUzBGQlMydE1MRTFCUXpsQ1owVXNSVUZCVFd4UUxFdEJRVXQxVHl4UlFVRlJha1VzUlVGQlNYUkxMRXRCUVV0clRDeFJRVU14UWpoRUxFVkJRVmRGTEVWQlFVbEdMRk5CUVZOR0xFbEJUekZDTEU5QlRrdFpMRVZCUVUxV0xFVkJRVk16VHl4UlFVRlJjMFVzUzBGQllTeEhRVU4yUTNGTExFVkJRVk5YTEU5QlFVOUVMRVZCUVVzc1IwRkZiRUpXTEVWQlFWTjJUeXhsUVVOTWVVOHNSVUZCU1VZc1UwRkJVMFlzUjBGRlpqbFBMRXRCUVVzMlR5eHhRa0ZCY1VKTExFVkJRVXMxUlN4RlFVRkpkRXNzUzBGQlMydE1MRTFCUzNaRWJrSXNVVUZCVXl4VFFVRlRUeXhGUVVGTE0wWXNSVUZCVXpSR0xFZEJRemxDTEVsQlFVbHhSU3hGUVVGWFowSXNSVUZCVFROT0xFVkJXVUV5Uml4RlFUUkNja0lzVDBGMFF6QkNMRTlCUkRGQ1owZ3NSVUZCV1RWUExFdEJRVXQzVHl4alFVRmpiRVVzUjBGQlMzTkZMRmRCUTNSQ2Frc3NTMEZEV21sTExFVkJRVlZxU3l4SFFVRlhMRWxCUlU0c1QwRkVabWxNTEVWQlFVOXNRaXhQUVVGUGJVSXNlVUpCUVhsQ2RrWXNSVUZCU3pOR0xFbEJRM1JDYVV3c1JVRkJTMFVzVTBGQlRTeExRVUZ2UWl4TlFVRlNSaXhGUVVGbFFTeEZRVUZMYkVjc1UwRkJUU3hMUVVOeVJYcElMRVZCUVZGeFNTeEZRVUZKTTBZc1IwRkRXaXRLTEU5QlFVOURMR1ZCUVdWeVJTeEZRVUZMTTBZc1JVRkJVeXhEUVVOc1EyOU1MRmxCUVZrc1JVRkRXa1FzU1VGQlN5eFhRVU5JTEU5QlFVODNUaXhIUVVWVWVVZ3NTMEZCWlRsQ0xFVkJjVUphTlVnc1MwRndRazBzVTBGQlUyZFJMRWRCUTJRc1NVRkJTVU1zUlVGQlNXWXNSVUZCUzJwTUxFVkJRVWxETEVWQlFVMDRRaXhGUVVOMlFpeEhRVUZKWjBzc1NVRkJZUzlPTEVsQlEyWXlSaXhGUVVGTk5rZ3NiVUpCUVcxQ2VFNHNSVUZCVDNGSkxFVkJRVWt4UXl4RlFVRk5jMFFzU1VGQlMzWkhMRWRCUXk5RE1VTXNSVUZCVVN0T0xFVkJRMHBrTEVWQlFVMTBTQ3hGUVVGTk1rY3NVVUZCVVdwRkxFVkJRVWt4UXl4RlFVRk5jMFFzVFVGQlRTeERRVVYwUXl4SlFVUkJNRVFzUlVGQldVMHNSVUZCU1U0c1YwRkRSbXBMTEVkQlJWb3NTVUZCUzFZc1JVRkJTeXhGUVVGSFF5eEhRVVJpT0VJc1JVRkJVVFJKTEVWQlFWVnFTeXhIUVVGVGNFWXNVMEZEUkd0Q0xFOUJRVkYzUkN4RlFVRkxReXhGUVVGTlJDeEpRVU16UTJkTkxFVkJRVXRxU3l4RlFVRk5MMElzUjBGRFVEZEVMRVZCUVZWT0xFdEJRVXM0VHl4RlFVRlZha3NzUjBGQlZYTk1MRWxCUVU4c1IwRkROVU5CTEVsQlNVNHNUMEZCVDNKSkxFVkJRVTB3U0N4cFFrRkJhVUpWTEVWQlFWVXhSaXhGUVVGSk1VTXNSVUZCVFhORUxFbEJRVXQyUnl4VlFWRnFSWFpGTEVWQlFWVk9MRXRCUVVzNFR5eEZRVUZWYWtzc1IwRkJWVFJHTEVkQlFWa3NSMEZEYWtSeFJTeEZRVUZWYWtzc1IwRkJVMG9zUzBGQlMyZEhMRWRCUlc1Q2Rrc3NTMEZCUzNOUUxHbENRVUZwUW1oR0xFVkJRVWt6Uml4SFFVRlZNa1lzUlVGQlNYUkxMRXRCUVV0clRDeEpRVUZMZGtjc1NVRkZNMFF3Unl4VlFVRlhMRk5CUVZObUxFVkJRVXN6Uml4RlFVRlRORVlzUjBGRGFFTXNTVUZCU1hGRkxFVkJRVmRqTEVWQlFVdFNMRVZCUTNCQ0xFbEJRVWxCTEVWQlFVMXNVQ3hMUVVGTGRVOHNVVUZCVVdwRkxFVkJRVWwwU3l4TFFVRkxhMHdzVVVGRE1VSXdSQ3hGUVVGWlRTeEZRVUZKVGl4VlFVRlZha3NzU1VGUk5VSXNUMEZRU3l0TExFVkJRVTFrTEVWQlFWVjJUeXhSUVVGUmEwc3NTMEZCWXl4SlFVTjZRM0ZGTEVWQlFWVmxMRTlCUVU5RUxFVkJRVXNzUjBGRGFrSmtMRVZCUVZWdVR5eG5Ra0ZEVG5sUExFVkJRVWxPTEZWQlFWVnFTeXhIUVVOeVFqTkZMRXRCUVV0NVVDeHRRa0ZCYlVKdVJpeEZRVUZKTTBZc1IwRkJWVEpHTEVWQlFVbDBTeXhMUVVGTGEwd3NTVUZCUzNaSExFdEJSMnBFTTBVc1MwRkJTelpQTEhGQ1FVRnhRa3NzUlVGQlN6VkZMRVZCUVVsMFN5eExRVUZMYTB3c1RVRkpja1EwUlN4SlFVRkxMRk5CUVZONFJpeEZRVUZMTTBZc1IwRkRha0lzVDBGQlR6SkdMRVZCUVVrelJpeEpRVVZpSzBVc1NVRkJTeXhUUVVGVFdTeEZRVUZMTTBZc1JVRkJVekZETEVkQlF6RkNMRTlCUVU5eFNTeEZRVUZKTTBZc1IwRkJWekZETEVsQlNURkNja1FzUlVGQlQzTlNMRkZCUVZVc1UwRkJVekZHTEVkQlIzaENMRTlCUmtFMVRDeEZRVUZQTkV3c1YwRkJZVUVzUlVGRGNFSTFUQ3hGUVVGbExFOUJRVVYxVWl4RlFVRkpkbElzUlVGRFpFRXNSVUZCWlN4UlFVZHZSU3hwUWtGQk9VUXNiMEpCUVZoM1VpeFJRVUZ4UXl4UFFVRllRU3hQUVVGclFrRXNUMEZCVDBNc1lVRkJWU3hIUVVNNVJVUXNUMEZCVDBNc1VVRkJWWHBTTEVWQlFVOXpVaXhSUVVGUlNTeFJRVUZSTEdWQlEySXNiVUpCUVZoRExGRkJRWGxDUVN4UFFVRlBReXhKUVVOb1JFUXNUMEZCVHl4RFFVRkRMR05CUVdVc1UwRkJVeTlHTEVkQlF6bENMRTlCUVU5NFN5eExRVUZMZVZFc1QwRkJVemRTTEVWQlFVOXpVaXhSUVVGUk1VWXNTMEZIZEVONFN5eExRVUZMZVZFc1QwRkJVemRTTEVWQlFVOXpVaXhSUVVGUk1VWXNZMEZIT1VJeFN5eExRVUZMUlNJc0ltWnBiR1VpT2lKRk9seGNWMjl5YTNOd1lXTmxYRngzYVd0cFlTMXBjeTFoYm5OM1pYSmxaRnhjYm05a1pWOXRiMlIxYkdWelhGeHlhWFpsZEhOY1hHUnBjM1JjWEhKcGRtVjBjeTVxY3lKOSIsIihmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxzLGksaCl7cmV0dXJuIG5ldyBlKHQscyxpLGgpfWZ1bmN0aW9uIGUodCxlLGksaCl7dGhpcy5vcHRpb25zPWh8fHt9LHRoaXMub3B0aW9ucy5hZGFwdGVycz10aGlzLm9wdGlvbnMuYWRhcHRlcnN8fHt9LHRoaXMub2JqPXQsdGhpcy5rZXlwYXRoPWUsdGhpcy5jYWxsYmFjaz1pLHRoaXMub2JqZWN0UGF0aD1bXSx0aGlzLnVwZGF0ZT10aGlzLnVwZGF0ZS5iaW5kKHRoaXMpLHRoaXMucGFyc2UoKSxzKHRoaXMudGFyZ2V0PXRoaXMucmVhbGl6ZSgpKSYmdGhpcy5zZXQoITAsdGhpcy5rZXksdGhpcy50YXJnZXQsdGhpcy5jYWxsYmFjayl9ZnVuY3Rpb24gcyh0KXtyZXR1cm5cIm9iamVjdFwiPT10eXBlb2YgdCYmbnVsbCE9PXR9ZnVuY3Rpb24gaSh0KXt0aHJvdyBuZXcgRXJyb3IoXCJbc2lnaHRnbGFzc10gXCIrdCl9dC5hZGFwdGVycz17fSxlLnRva2VuaXplPWZ1bmN0aW9uKHQsZSxzKXt2YXIgaSxoLGE9W10sbz17aTpzLHBhdGg6XCJcIn07Zm9yKGk9MDtpPHQubGVuZ3RoO2krKyloPXQuY2hhckF0KGkpLH5lLmluZGV4T2YoaCk/KGEucHVzaChvKSxvPXtpOmgscGF0aDpcIlwifSk6by5wYXRoKz1oO3JldHVybiBhLnB1c2gobyksYX0sZS5wcm90b3R5cGUucGFyc2U9ZnVuY3Rpb24oKXt2YXIgcyxoLGE9dGhpcy5pbnRlcmZhY2VzKCk7YS5sZW5ndGh8fGkoXCJNdXN0IGRlZmluZSBhdCBsZWFzdCBvbmUgYWRhcHRlciBpbnRlcmZhY2UuXCIpLH5hLmluZGV4T2YodGhpcy5rZXlwYXRoWzBdKT8ocz10aGlzLmtleXBhdGhbMF0saD10aGlzLmtleXBhdGguc3Vic3RyKDEpKToodm9pZCAwPT09KHM9dGhpcy5vcHRpb25zLnJvb3R8fHQucm9vdCkmJmkoXCJNdXN0IGRlZmluZSBhIGRlZmF1bHQgcm9vdCBhZGFwdGVyLlwiKSxoPXRoaXMua2V5cGF0aCksdGhpcy50b2tlbnM9ZS50b2tlbml6ZShoLGEscyksdGhpcy5rZXk9dGhpcy50b2tlbnMucG9wKCl9LGUucHJvdG90eXBlLnJlYWxpemU9ZnVuY3Rpb24oKXt2YXIgdCxlPXRoaXMub2JqLGk9ITE7cmV0dXJuIHRoaXMudG9rZW5zLmZvckVhY2goZnVuY3Rpb24oaCxhKXtzKGUpPyh2b2lkIDAhPT10aGlzLm9iamVjdFBhdGhbYV0/ZSE9PSh0PXRoaXMub2JqZWN0UGF0aFthXSkmJih0aGlzLnNldCghMSxoLHQsdGhpcy51cGRhdGUpLHRoaXMuc2V0KCEwLGgsZSx0aGlzLnVwZGF0ZSksdGhpcy5vYmplY3RQYXRoW2FdPWUpOih0aGlzLnNldCghMCxoLGUsdGhpcy51cGRhdGUpLHRoaXMub2JqZWN0UGF0aFthXT1lKSxlPXRoaXMuZ2V0KGgsZSkpOighMT09PWkmJihpPWEpLCh0PXRoaXMub2JqZWN0UGF0aFthXSkmJnRoaXMuc2V0KCExLGgsdCx0aGlzLnVwZGF0ZSkpfSx0aGlzKSwhMSE9PWkmJnRoaXMub2JqZWN0UGF0aC5zcGxpY2UoaSksZX0sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dmFyIHQsZTsodD10aGlzLnJlYWxpemUoKSkhPT10aGlzLnRhcmdldCYmKHModGhpcy50YXJnZXQpJiZ0aGlzLnNldCghMSx0aGlzLmtleSx0aGlzLnRhcmdldCx0aGlzLmNhbGxiYWNrKSxzKHQpJiZ0aGlzLnNldCghMCx0aGlzLmtleSx0LHRoaXMuY2FsbGJhY2spLGU9dGhpcy52YWx1ZSgpLHRoaXMudGFyZ2V0PXQsKHRoaXMudmFsdWUoKWluc3RhbmNlb2YgRnVuY3Rpb258fHRoaXMudmFsdWUoKSE9PWUpJiZ0aGlzLmNhbGxiYWNrKCkpfSxlLnByb3RvdHlwZS52YWx1ZT1mdW5jdGlvbigpe2lmKHModGhpcy50YXJnZXQpKXJldHVybiB0aGlzLmdldCh0aGlzLmtleSx0aGlzLnRhcmdldCl9LGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQpe3ModGhpcy50YXJnZXQpJiZ0aGlzLmFkYXB0ZXIodGhpcy5rZXkpLnNldCh0aGlzLnRhcmdldCx0aGlzLmtleS5wYXRoLHQpfSxlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5hZGFwdGVyKHQpLmdldChlLHQucGF0aCl9LGUucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUscyxpKXt2YXIgaD10P1wib2JzZXJ2ZVwiOlwidW5vYnNlcnZlXCI7dGhpcy5hZGFwdGVyKGUpW2hdKHMsZS5wYXRoLGkpfSxlLnByb3RvdHlwZS5pbnRlcmZhY2VzPWZ1bmN0aW9uKCl7dmFyIGU9T2JqZWN0LmtleXModGhpcy5vcHRpb25zLmFkYXB0ZXJzKTtyZXR1cm4gT2JqZWN0LmtleXModC5hZGFwdGVycykuZm9yRWFjaChmdW5jdGlvbih0KXt+ZS5pbmRleE9mKHQpfHxlLnB1c2godCl9KSxlfSxlLnByb3RvdHlwZS5hZGFwdGVyPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm9wdGlvbnMuYWRhcHRlcnNbZS5pXXx8dC5hZGFwdGVyc1tlLmldfSxlLnByb3RvdHlwZS51bm9ic2VydmU9ZnVuY3Rpb24oKXt2YXIgdDt0aGlzLnRva2Vucy5mb3JFYWNoKGZ1bmN0aW9uKGUscyl7KHQ9dGhpcy5vYmplY3RQYXRoW3NdKSYmdGhpcy5zZXQoITEsZSx0LHRoaXMudXBkYXRlKX0sdGhpcykscyh0aGlzLnRhcmdldCkmJnRoaXMuc2V0KCExLHRoaXMua2V5LHRoaXMudGFyZ2V0LHRoaXMuY2FsbGJhY2spfSxcInVuZGVmaW5lZFwiIT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz10OlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW10sZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaWdodGdsYXNzPXR9KTp0aGlzLnNpZ2h0Z2xhc3M9dH0pLmNhbGwodGhpcyk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbWx1WkdWNExtcHpJbDBzSW01aGJXVnpJanBiSW5OcFoyaDBaMnhoYzNNaUxDSnZZbW9pTENKclpYbHdZWFJvSWl3aVkyRnNiR0poWTJzaUxDSnZjSFJwYjI1eklpd2lUMkp6WlhKMlpYSWlMQ0owYUdseklpd2lZV1JoY0hSbGNuTWlMQ0p2WW1wbFkzUlFZWFJvSWl3aWRYQmtZWFJsSWl3aVltbHVaQ0lzSW5CaGNuTmxJaXdpYVhOUFltcGxZM1FpTENKMFlYSm5aWFFpTENKeVpXRnNhWHBsSWl3aWMyVjBJaXdpYTJWNUlpd2laWEp5YjNJaUxDSnRaWE56WVdkbElpd2lSWEp5YjNJaUxDSjBiMnRsYm1sNlpTSXNJbWx1ZEdWeVptRmpaWE1pTENKeWIyOTBJaXdpYVc1a1pYZ2lMQ0pqYUhJaUxDSjBiMnRsYm5NaUxDSmpkWEp5Wlc1MElpd2lhU0lzSW5CaGRHZ2lMQ0pzWlc1bmRHZ2lMQ0pqYUdGeVFYUWlMQ0pwYm1SbGVFOW1JaXdpY0hWemFDSXNJbkJ5YjNSdmRIbHdaU0lzSW5OMVluTjBjaUlzSW5CdmNDSXNJbkJ5WlhZaUxDSjFibkpsWVdOb1pXUWlMQ0ptYjNKRllXTm9JaXdpZEc5clpXNGlMQ0puWlhRaUxDSnpjR3hwWTJVaUxDSnVaWGgwSWl3aWIyeGtWbUZzZFdVaUxDSjJZV3gxWlNJc0lrWjFibU4wYVc5dUlpd2ljMlYwVm1Gc2RXVWlMQ0poWkdGd2RHVnlJaXdpWVdOMGFYWmxJaXdpWVdOMGFXOXVJaXdpVDJKcVpXTjBJaXdpYTJWNWN5SXNJblZ1YjJKelpYSjJaU0lzSW0xdlpIVnNaU0lzSW1WNGNHOXlkSE1pTENKa1pXWnBibVVpTENKaGJXUWlMQ0pqWVd4c0lsMHNJbTFoY0hCcGJtZHpJam9pUTBGQlFTeFhRVVZGTEZOQlFWTkJMRVZCUVZkRExFVkJRVXRETEVWQlFWTkRMRVZCUVZWRExFZEJRekZETEU5QlFVOHNTVUZCU1VNc1JVRkJVMG9zUlVGQlMwTXNSVUZCVTBNc1JVRkJWVU1zUjBGUE9VTXNVMEZCVTBNc1JVRkJVMG9zUlVGQlMwTXNSVUZCVTBNc1JVRkJWVU1zUjBGRGVFTkZMRXRCUVV0R0xGRkJRVlZCTEVkQlFWY3NSMEZETVVKRkxFdEJRVXRHTEZGQlFWRkhMRk5CUVZkRUxFdEJRVXRHTEZGQlFWRkhMRlZCUVZrc1IwRkRha1JFTEV0QlFVdE1MRWxCUVUxQkxFVkJRMWhMTEV0QlFVdEtMRkZCUVZWQkxFVkJRMlpKTEV0QlFVdElMRk5CUVZkQkxFVkJRMmhDUnl4TFFVRkxSU3hYUVVGaExFZEJRMnhDUml4TFFVRkxSeXhQUVVGVFNDeExRVUZMUnl4UFFVRlBReXhMUVVGTFNpeE5RVU12UWtFc1MwRkJTMHNzVVVGRlJFTXNSVUZCVTA0c1MwRkJTMDhzVDBGQlUxQXNTMEZCUzFFc1dVRkRPVUpTTEV0QlFVdFRMRXRCUVVrc1JVRkJUVlFzUzBGQlMxVXNTVUZCUzFZc1MwRkJTMDhzVDBGQlVWQXNTMEZCUzBnc1ZVRTJTeTlETEZOQlFWTlRMRVZCUVZOWUxFZEJRMmhDTEUxQlFYTkNMR2xDUVVGU1FTeEhRVUUwUWl4UFFVRlNRU3hGUVVsd1F5eFRRVUZUWjBJc1JVRkJUVU1zUjBGRFlpeE5RVUZOTEVsQlFVbERMRTFCUVUwc1owSkJRV3RDUkN4SFFXcE5jRU5zUWl4RlFVRlhUeXhUUVVGWExFZEJiMEowUWtZc1JVRkJVMlVzVTBGQlZ5eFRRVUZUYkVJc1JVRkJVMjFDTEVWQlFWbERMRWRCUTJoRUxFbEJSVWxETEVWQlFVOURMRVZCUmxCRExFVkJRVk1zUjBGRFZFTXNSVUZCVlN4RFFVRkRReXhGUVVGSFRDeEZRVUZOVFN4TFFVRk5MRWxCUnpsQ0xFbEJRVXRNTEVWQlFWRXNSVUZCUjBFc1JVRkJVWEpDTEVWQlFWRXlRaXhQUVVGUlRpeEpRVU4wUTBNc1JVRkJUWFJDTEVWQlFWRTBRaXhQUVVGUFVDeEpRVVZrUml4RlFVRlhWU3hSUVVGUlVDeEpRVU40UWtNc1JVRkJUMDhzUzBGQlMwNHNSMEZEV2tFc1JVRkJWU3hEUVVGRFF5eEZRVUZIU0N4RlFVRkxTU3hMUVVGTkxFdEJSWHBDUml4RlFVRlJSU3hOUVVGUlNpeEZRVXR3UWl4UFFVUkJReXhGUVVGUFR5eExRVUZMVGl4SFFVTk1SQ3hIUVV0VWNFSXNSVUZCVXpSQ0xGVkJRVlYwUWl4TlFVRlJMRmRCUTNwQ0xFbEJRMGxYTEVWQlFVMU5MRVZCUkU1UUxFVkJRV0ZtTEV0QlFVdGxMR0ZCUjJwQ1FTeEZRVUZYVVN4UlFVTmtXaXhGUVVGTkxHZEVRVWRFU1N4RlFVRlhWU3hSUVVGUmVrSXNTMEZCUzBvc1VVRkJVU3hMUVVOeVEyOUNMRVZCUVU5b1FpeExRVUZMU2l4UlFVRlJMRWRCUTNCQ01FSXNSVUZCVDNSQ0xFdEJRVXRLTEZGQlFWRm5ReXhQUVVGUExGVkJSV3RETEV0QlFXcEVXaXhGUVVGUGFFSXNTMEZCUzBZc1VVRkJVV3RDTEUxQlFWRjBRaXhGUVVGWGMwSXNUMEZEYWtSTUxFVkJRVTBzZFVOQlIxSlhMRVZCUVU5MFFpeExRVUZMU2l4VFFVZGtTU3hMUVVGTGJVSXNUMEZCVTNCQ0xFVkJRVk5sTEZOQlFWTlJMRVZCUVUxUUxFVkJRVmxETEVkQlEyeEVhRUlzUzBGQlMxVXNTVUZCVFZZc1MwRkJTMjFDTEU5QlFVOVZMRTlCUzNwQ09VSXNSVUZCVXpSQ0xGVkJRVlZ1UWl4UlFVRlZMRmRCUXpOQ0xFbEJSVWx6UWl4RlFVWkJWaXhGUVVGVmNFSXNTMEZCUzB3c1NVRkRabTlETEVkQlFWa3NSVUZuUTJoQ0xFOUJOMEpCTDBJc1MwRkJTMjFDTEU5QlFVOWhMRkZCUVZFc1UwRkJVME1zUlVGQlQyaENMRWRCUXpsQ1dDeEZRVUZUWXl4VFFVTXlRaXhKUVVFelFuQkNMRXRCUVV0RkxGZEJRVmRsTEVkQlEzSkNSeXhMUVVGaFZTeEZRVUZQT1VJc1MwRkJTMFVzVjBGQlYyVXNUVUZEZEVOcVFpeExRVUZMVXl4TFFVRkpMRVZCUVU5M1FpeEZRVUZQU0N4RlFVRk5PVUlzUzBGQlMwY3NVVUZEYkVOSUxFdEJRVXRUTEV0QlFVa3NSVUZCVFhkQ0xFVkJRVTlpTEVWQlFWTndRaXhMUVVGTFJ5eFJRVU53UTBnc1MwRkJTMFVzVjBGQlYyVXNSMEZCVTBjc1NVRkhNMEp3UWl4TFFVRkxVeXhMUVVGSkxFVkJRVTEzUWl4RlFVRlBZaXhGUVVGVGNFSXNTMEZCUzBjc1VVRkRjRU5JTEV0QlFVdEZMRmRCUVZkbExFZEJRVk5ITEVkQlJ6TkNRU3hGUVVGVmNFSXNTMEZCUzJ0RExFbEJRVWxFTEVWQlFVOWlMRTFCUlZJc1NVRkJaRmNzU1VGRFJrRXNSVUZCV1dRc1NVRkhWbUVzUlVGQlR6bENMRXRCUVV0RkxGZEJRVmRsTEV0QlEzcENha0lzUzBGQlMxTXNTMEZCU1N4RlFVRlBkMElzUlVGQlQwZ3NSVUZCVFRsQ0xFdEJRVXRITEZWQlIzSkRTQ3hQUVVWbExFbEJRV1FyUWl4SFFVTkdMMElzUzBGQlMwVXNWMEZCVjJsRExFOUJRVTlLTEVkQlIyeENXQ3hIUVVsVWNrSXNSVUZCVXpSQ0xGVkJRVlY0UWl4UFFVRlRMRmRCUXpGQ0xFbEJRVWxwUXl4RlFVRk5ReXhIUVVWTVJDeEZRVUZQY0VNc1MwRkJTMUVzWVVGQlpWSXNTMEZCUzA4c1UwRkRMMEpFTEVWQlFWTk9MRXRCUVV0UExGTkJRMmhDVUN4TFFVRkxVeXhMUVVGSkxFVkJRVTlVTEV0QlFVdFZMRWxCUVV0V0xFdEJRVXRQTEU5QlFWRlFMRXRCUVV0SUxGVkJSekZEVXl4RlFVRlRPRUlzU1VGRFdIQkRMRXRCUVV0VExFdEJRVWtzUlVGQlRWUXNTMEZCUzFVc1NVRkJTekJDTEVWQlFVMXdReXhMUVVGTFNDeFZRVWQwUTNkRExFVkJRVmR5UXl4TFFVRkxjME1zVVVGRGFFSjBReXhMUVVGTFR5eFBRVUZUTmtJc1IwRkhWbkJETEV0QlFVdHpReXhyUWtGQmJVSkRMRlZCUVZsMlF5eExRVUZMYzBNc1ZVRkJXVVFzU1VGQlZYSkRMRXRCUVV0SUxHRkJUVFZGUlN4RlFVRlRORUlzVlVGQlZWY3NUVUZCVVN4WFFVTjZRaXhIUVVGSmFFTXNSVUZCVTA0c1MwRkJTMDhzVVVGRGFFSXNUMEZCVDFBc1MwRkJTMnRETEVsQlFVbHNReXhMUVVGTFZTeEpRVUZMVml4TFFVRkxUeXhUUVUxdVExSXNSVUZCVXpSQ0xGVkJRVlZoTEZOQlFWY3NVMEZCVTBZc1IwRkRha05vUXl4RlFVRlRUaXhMUVVGTFR5eFRRVU5vUWxBc1MwRkJTM2xETEZGQlFWRjZReXhMUVVGTFZTeExRVUZMUkN4SlFVRkpWQ3hMUVVGTFR5eFBRVUZSVUN4TFFVRkxWU3hKUVVGSldTeExRVUZOWjBJc1NVRkxNMFIyUXl4RlFVRlRORUlzVlVGQlZVOHNTVUZCVFN4VFFVRlRlRUlzUlVGQlMyWXNSMEZEY2tNc1QwRkJUMHNzUzBGQlMzbERMRkZCUVZFdlFpeEhRVUZMZDBJc1NVRkJTWFpETEVWQlFVdGxMRVZCUVVsWkxFOUJTWGhEZGtJc1JVRkJVelJDTEZWQlFWVnNRaXhKUVVGTkxGTkJRVk5wUXl4RlFVRlJhRU1zUlVGQlMyWXNSVUZCUzBVc1IwRkRiRVFzU1VGQlNUaERMRVZCUVZORUxFVkJRVk1zVlVGQldTeFpRVU5zUXpGRExFdEJRVXQ1UXl4UlFVRlJMMElzUjBGQlMybERMRWRCUVZGb1JDeEZRVUZMWlN4RlFVRkpXU3hMUVVGTmVrSXNTVUZKTTBORkxFVkJRVk0wUWl4VlFVRlZXaXhYUVVGaExGZEJRemxDTEVsQlFVbEJMRVZCUVdFMlFpeFBRVUZQUXl4TFFVRkxOME1zUzBGQlMwWXNVVUZCVVVjc1ZVRlJNVU1zVDBGT1FUSkRMRTlCUVU5RExFdEJRVXR1UkN4RlFVRlhUeXhWUVVGVkswSXNVVUZCVVN4VFFVRlRXQ3hKUVVNeFEwNHNSVUZCVjFVc1VVRkJVVW9zU1VGRGRrSk9MRVZCUVZkWExFdEJRVXRNTEV0QlNXSk9MRWRCU1ZSb1FpeEZRVUZUTkVJc1ZVRkJWV01zVVVGQlZTeFRRVUZUTDBJc1IwRkRjRU1zVDBGQlQxWXNTMEZCUzBZc1VVRkJVVWNzVTBGQlUxTXNSVUZCU1Zjc1NVRkRMMEl6UWl4RlFVRlhUeXhUUVVGVFV5eEZRVUZKVnl4SlFVazFRblJDTEVWQlFWTTBRaXhWUVVGVmJVSXNWVUZCV1N4WFFVTTNRaXhKUVVGSmJrUXNSVUZGU2tzc1MwRkJTMjFDTEU5QlFVOWhMRkZCUVZFc1UwRkJVME1zUlVGQlQyaENMRWxCUXpsQ2RFSXNSVUZCVFVzc1MwRkJTMFVzVjBGQlYyVXNTMEZEZUVKcVFpeExRVUZMVXl4TFFVRkpMRVZCUVU5M1FpeEZRVUZQZEVNc1JVRkJTMHNzUzBGQlMwY3NVMEZGYkVOSUxFMUJSVU5OTEVWQlFWTk9MRXRCUVV0UExGTkJRMmhDVUN4TFFVRkxVeXhMUVVGSkxFVkJRVTlVTEV0QlFVdFZMRWxCUVV0V0xFdEJRVXRQTEU5QlFWRlFMRXRCUVV0SUxGZEJaVEZDTEc5Q1FVRllhMFFzVVVGQk1FSkJMRTlCUVU5RExGRkJRekZEUkN4UFFVRlBReXhSUVVGVmRFUXNSVUZEVlN4dFFrRkJXSFZFTEZGQlFYbENRU3hQUVVGUFF5eEpRVU5vUkVRc1QwRkJUeXhIUVVGSkxGZEJRMVFzVDBGQlQycEVMRXRCUVV0T0xGZEJRV0ZCTEVsQlJ6TkNUU3hMUVVGTFRpeFhRVUZoUVN4SlFVVnVRbmxFTEV0QlFVdHVSQ0lzSW1acGJHVWlPaUpGT2x4Y1YyOXlhM053WVdObFhGeDNhV3RwWVMxcGN5MWhibk4zWlhKbFpGeGNibTlrWlY5dGIyUjFiR1Z6WEZ4emFXZG9kR2RzWVhOelhGeHBibVJsZUM1cWN5SjkiLCJmdW5jdGlvbiBBZ2VudCgpe3RoaXMuX2RlZmF1bHRzPVtdfVtcInVzZVwiLFwib25cIixcIm9uY2VcIixcInNldFwiLFwicXVlcnlcIixcInR5cGVcIixcImFjY2VwdFwiLFwiYXV0aFwiLFwid2l0aENyZWRlbnRpYWxzXCIsXCJzb3J0UXVlcnlcIixcInJldHJ5XCIsXCJva1wiLFwicmVkaXJlY3RzXCIsXCJ0aW1lb3V0XCIsXCJidWZmZXJcIixcInNlcmlhbGl6ZVwiLFwicGFyc2VcIixcImNhXCIsXCJrZXlcIixcInBmeFwiLFwiY2VydFwiXS5mb3JFYWNoKHQ9PntBZ2VudC5wcm90b3R5cGVbdF09ZnVuY3Rpb24oLi4uZSl7cmV0dXJuIHRoaXMuX2RlZmF1bHRzLnB1c2goe2ZuOnQsYXJnczplfSksdGhpc319KSxBZ2VudC5wcm90b3R5cGUuX3NldERlZmF1bHRzPWZ1bmN0aW9uKHQpe3RoaXMuX2RlZmF1bHRzLmZvckVhY2goZT0+e3RbZS5mbl0uYXBwbHkodCxlLmFyZ3MpfSl9LG1vZHVsZS5leHBvcnRzPUFnZW50O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1GblpXNTBMV0poYzJVdWFuTWlYU3dpYm1GdFpYTWlPbHNpUVdkbGJuUWlMQ0owYUdseklpd2lYMlJsWm1GMWJIUnpJaXdpWm05eVJXRmphQ0lzSW1adUlpd2ljSEp2ZEc5MGVYQmxJaXdpWVhKbmN5SXNJbkIxYzJnaUxDSmZjMlYwUkdWbVlYVnNkSE1pTENKeVpYRWlMQ0prWldZaUxDSmhjSEJzZVNJc0ltMXZaSFZzWlNJc0ltVjRjRzl5ZEhNaVhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxGTkJRVk5CTEZGQlExQkRMRXRCUVV0RExGVkJRVmtzUjBGSGJrSXNRMEZCUXl4TlFVRlBMRXRCUVUwc1QwRkJVU3hOUVVGUExGRkJRVk1zVDBGQlVTeFRRVUZWTEU5QlFWRXNhMEpCUVcxQ0xGbEJRV0VzVVVGQlV5eExRVUZOTEZsQlF6bEhMRlZCUVZjc1UwRkJWU3haUVVGaExGRkJRVk1zUzBGQlRTeE5RVUZQTEUxQlFVOHNVVUZCVVVNc1VVRkJVVU1zU1VGRk9VVktMRTFCUVUxTExGVkJRVlZFTEVkQlFVMHNXVUZCV1VVc1IwRkZhRU1zVDBGRVFVd3NTMEZCUzBNc1ZVRkJWVXNzUzBGQlN5eERRVUZEU0N4SFFVRkJRU3hGUVVGSlJTeExRVUZCUVN4SlFVTnNRa3dzVVVGSldFUXNUVUZCVFVzc1ZVRkJWVWNzWVVGQlpTeFRRVUZUUXl4SFFVTndRMUlzUzBGQlMwTXNWVUZCVlVNc1VVRkJVVThzU1VGRGNrSkVMRVZCUVVsRExFVkJRVWxPTEVsQlFVbFBMRTFCUVUxR0xFVkJRVXRETEVWQlFVbEtMRk5CU1dwRFRTeFBRVUZQUXl4UlFVRlZZaUlzSW1acGJHVWlPaUpGT2x4Y1YyOXlhM053WVdObFhGeDNhV3RwWVMxcGN5MWhibk4zWlhKbFpGeGNibTlrWlY5dGIyUjFiR1Z6WEZ4emRYQmxjbUZuWlc1MFhGeHNhV0pjWEdGblpXNTBMV0poYzJVdWFuTWlmUT09IiwibGV0IHJvb3Q7XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHdpbmRvdz9yb290PXdpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZj9yb290PXNlbGY6KGNvbnNvbGUud2FybihcIlVzaW5nIGJyb3dzZXItb25seSB2ZXJzaW9uIG9mIHN1cGVyYWdlbnQgaW4gbm9uLWJyb3dzZXIgZW52aXJvbm1lbnRcIikscm9vdD10aGlzKTtjb25zdCBFbWl0dGVyPXJlcXVpcmUoXCJjb21wb25lbnQtZW1pdHRlclwiKSxSZXF1ZXN0QmFzZT1yZXF1aXJlKFwiLi9yZXF1ZXN0LWJhc2VcIiksaXNPYmplY3Q9cmVxdWlyZShcIi4vaXMtb2JqZWN0XCIpLFJlc3BvbnNlQmFzZT1yZXF1aXJlKFwiLi9yZXNwb25zZS1iYXNlXCIpLEFnZW50PXJlcXVpcmUoXCIuL2FnZW50LWJhc2VcIik7ZnVuY3Rpb24gbm9vcCgpe31jb25zdCByZXF1ZXN0PWV4cG9ydHM9bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0KXtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P25ldyBleHBvcnRzLlJlcXVlc3QoXCJHRVRcIixlKS5lbmQodCk6MT09YXJndW1lbnRzLmxlbmd0aD9uZXcgZXhwb3J0cy5SZXF1ZXN0KFwiR0VUXCIsZSk6bmV3IGV4cG9ydHMuUmVxdWVzdChlLHQpfTtleHBvcnRzLlJlcXVlc3Q9UmVxdWVzdCxyZXF1ZXN0LmdldFhIUj0oKCk9PntpZighKCFyb290LlhNTEh0dHBSZXF1ZXN0fHxyb290LmxvY2F0aW9uJiZcImZpbGU6XCI9PXJvb3QubG9jYXRpb24ucHJvdG9jb2wmJnJvb3QuQWN0aXZlWE9iamVjdCkpcmV0dXJuIG5ldyBYTUxIdHRwUmVxdWVzdDt0cnl7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIil9Y2F0Y2goZSl7fXRyeXtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUC42LjBcIil9Y2F0Y2goZSl7fXRyeXtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUC4zLjBcIil9Y2F0Y2goZSl7fXRyeXtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUFwiKX1jYXRjaChlKXt9dGhyb3cgRXJyb3IoXCJCcm93c2VyLW9ubHkgdmVyc2lvbiBvZiBzdXBlcmFnZW50IGNvdWxkIG5vdCBmaW5kIFhIUlwiKX0pO2NvbnN0IHRyaW09XCJcIi50cmltP2U9PmUudHJpbSgpOmU9PmUucmVwbGFjZSgvKF5cXHMqfFxccyokKS9nLFwiXCIpO2Z1bmN0aW9uIHNlcmlhbGl6ZShlKXtpZighaXNPYmplY3QoZSkpcmV0dXJuIGU7Y29uc3QgdD1bXTtmb3IoY29uc3QgcyBpbiBlKXB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKHQscyxlW3NdKTtyZXR1cm4gdC5qb2luKFwiJlwiKX1mdW5jdGlvbiBwdXNoRW5jb2RlZEtleVZhbHVlUGFpcihlLHQscyl7aWYobnVsbCE9cylpZihBcnJheS5pc0FycmF5KHMpKXMuZm9yRWFjaChzPT57cHVzaEVuY29kZWRLZXlWYWx1ZVBhaXIoZSx0LHMpfSk7ZWxzZSBpZihpc09iamVjdChzKSlmb3IoY29uc3QgciBpbiBzKXB1c2hFbmNvZGVkS2V5VmFsdWVQYWlyKGUsYCR7dH1bJHtyfV1gLHNbcl0pO2Vsc2UgZS5wdXNoKGVuY29kZVVSSUNvbXBvbmVudCh0KStcIj1cIitlbmNvZGVVUklDb21wb25lbnQocykpO2Vsc2UgbnVsbD09PXMmJmUucHVzaChlbmNvZGVVUklDb21wb25lbnQodCkpfWZ1bmN0aW9uIHBhcnNlU3RyaW5nKGUpe2NvbnN0IHQ9e30scz1lLnNwbGl0KFwiJlwiKTtsZXQgcixvO2ZvcihsZXQgZT0wLG49cy5sZW5ndGg7ZTxuOysrZSktMT09KG89KHI9c1tlXSkuaW5kZXhPZihcIj1cIikpP3RbZGVjb2RlVVJJQ29tcG9uZW50KHIpXT1cIlwiOnRbZGVjb2RlVVJJQ29tcG9uZW50KHIuc2xpY2UoMCxvKSldPWRlY29kZVVSSUNvbXBvbmVudChyLnNsaWNlKG8rMSkpO3JldHVybiB0fWZ1bmN0aW9uIHBhcnNlSGVhZGVyKGUpe2NvbnN0IHQ9ZS5zcGxpdCgvXFxyP1xcbi8pLHM9e307bGV0IHIsbyxuLGk7Zm9yKGxldCBlPTAsdT10Lmxlbmd0aDtlPHU7KytlKS0xIT09KHI9KG89dFtlXSkuaW5kZXhPZihcIjpcIikpJiYobj1vLnNsaWNlKDAscikudG9Mb3dlckNhc2UoKSxpPXRyaW0oby5zbGljZShyKzEpKSxzW25dPWkpO3JldHVybiBzfWZ1bmN0aW9uIGlzSlNPTihlKXtyZXR1cm4vW1xcLytdanNvbigkfFteLVxcd10pLy50ZXN0KGUpfWZ1bmN0aW9uIFJlc3BvbnNlKGUpe3RoaXMucmVxPWUsdGhpcy54aHI9dGhpcy5yZXEueGhyLHRoaXMudGV4dD1cIkhFQURcIiE9dGhpcy5yZXEubWV0aG9kJiYoXCJcIj09PXRoaXMueGhyLnJlc3BvbnNlVHlwZXx8XCJ0ZXh0XCI9PT10aGlzLnhoci5yZXNwb25zZVR5cGUpfHx2b2lkIDA9PT10aGlzLnhoci5yZXNwb25zZVR5cGU/dGhpcy54aHIucmVzcG9uc2VUZXh0Om51bGwsdGhpcy5zdGF0dXNUZXh0PXRoaXMucmVxLnhoci5zdGF0dXNUZXh0O2xldCB0PXRoaXMueGhyLnN0YXR1czsxMjIzPT09dCYmKHQ9MjA0KSx0aGlzLl9zZXRTdGF0dXNQcm9wZXJ0aWVzKHQpLHRoaXMuaGVhZGVyPXRoaXMuaGVhZGVycz1wYXJzZUhlYWRlcih0aGlzLnhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSksdGhpcy5oZWFkZXJbXCJjb250ZW50LXR5cGVcIl09dGhpcy54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJjb250ZW50LXR5cGVcIiksdGhpcy5fc2V0SGVhZGVyUHJvcGVydGllcyh0aGlzLmhlYWRlciksbnVsbD09PXRoaXMudGV4dCYmZS5fcmVzcG9uc2VUeXBlP3RoaXMuYm9keT10aGlzLnhoci5yZXNwb25zZTp0aGlzLmJvZHk9XCJIRUFEXCIhPXRoaXMucmVxLm1ldGhvZD90aGlzLl9wYXJzZUJvZHkodGhpcy50ZXh0P3RoaXMudGV4dDp0aGlzLnhoci5yZXNwb25zZSk6bnVsbH1mdW5jdGlvbiBSZXF1ZXN0KGUsdCl7Y29uc3Qgcz10aGlzO3RoaXMuX3F1ZXJ5PXRoaXMuX3F1ZXJ5fHxbXSx0aGlzLm1ldGhvZD1lLHRoaXMudXJsPXQsdGhpcy5oZWFkZXI9e30sdGhpcy5faGVhZGVyPXt9LHRoaXMub24oXCJlbmRcIiwoKT0+e2xldCBlLHQ9bnVsbCxyPW51bGw7dHJ5e3I9bmV3IFJlc3BvbnNlKHMpfWNhdGNoKGUpe3JldHVybih0PW5ldyBFcnJvcihcIlBhcnNlciBpcyB1bmFibGUgdG8gcGFyc2UgdGhlIHJlc3BvbnNlXCIpKS5wYXJzZT0hMCx0Lm9yaWdpbmFsPWUscy54aHI/KHQucmF3UmVzcG9uc2U9dm9pZCAwPT09cy54aHIucmVzcG9uc2VUeXBlP3MueGhyLnJlc3BvbnNlVGV4dDpzLnhoci5yZXNwb25zZSx0LnN0YXR1cz1zLnhoci5zdGF0dXM/cy54aHIuc3RhdHVzOm51bGwsdC5zdGF0dXNDb2RlPXQuc3RhdHVzKToodC5yYXdSZXNwb25zZT1udWxsLHQuc3RhdHVzPW51bGwpLHMuY2FsbGJhY2sodCl9cy5lbWl0KFwicmVzcG9uc2VcIixyKTt0cnl7cy5faXNSZXNwb25zZU9LKHIpfHwoZT1uZXcgRXJyb3Ioci5zdGF0dXNUZXh0fHxcIlVuc3VjY2Vzc2Z1bCBIVFRQIHJlc3BvbnNlXCIpKX1jYXRjaCh0KXtlPXR9ZT8oZS5vcmlnaW5hbD10LGUucmVzcG9uc2U9cixlLnN0YXR1cz1yLnN0YXR1cyxzLmNhbGxiYWNrKGUscikpOnMuY2FsbGJhY2sobnVsbCxyKX0pfWZ1bmN0aW9uIGRlbChlLHQscyl7Y29uc3Qgcj1yZXF1ZXN0KFwiREVMRVRFXCIsZSk7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHM9dCx0PW51bGwpLHQmJnIuc2VuZCh0KSxzJiZyLmVuZChzKSxyfXJlcXVlc3Quc2VyaWFsaXplT2JqZWN0PXNlcmlhbGl6ZSxyZXF1ZXN0LnBhcnNlU3RyaW5nPXBhcnNlU3RyaW5nLHJlcXVlc3QudHlwZXM9e2h0bWw6XCJ0ZXh0L2h0bWxcIixqc29uOlwiYXBwbGljYXRpb24vanNvblwiLHhtbDpcInRleHQveG1sXCIsdXJsZW5jb2RlZDpcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiLGZvcm06XCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIixcImZvcm0tZGF0YVwiOlwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXCJ9LHJlcXVlc3Quc2VyaWFsaXplPXtcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiOnNlcmlhbGl6ZSxcImFwcGxpY2F0aW9uL2pzb25cIjpKU09OLnN0cmluZ2lmeX0scmVxdWVzdC5wYXJzZT17XCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIjpwYXJzZVN0cmluZyxcImFwcGxpY2F0aW9uL2pzb25cIjpKU09OLnBhcnNlfSxSZXNwb25zZUJhc2UoUmVzcG9uc2UucHJvdG90eXBlKSxSZXNwb25zZS5wcm90b3R5cGUuX3BhcnNlQm9keT1mdW5jdGlvbihlKXtsZXQgdD1yZXF1ZXN0LnBhcnNlW3RoaXMudHlwZV07cmV0dXJuIHRoaXMucmVxLl9wYXJzZXI/dGhpcy5yZXEuX3BhcnNlcih0aGlzLGUpOighdCYmaXNKU09OKHRoaXMudHlwZSkmJih0PXJlcXVlc3QucGFyc2VbXCJhcHBsaWNhdGlvbi9qc29uXCJdKSx0JiZlJiYoZS5sZW5ndGh8fGUgaW5zdGFuY2VvZiBPYmplY3QpP3QoZSk6bnVsbCl9LFJlc3BvbnNlLnByb3RvdHlwZS50b0Vycm9yPWZ1bmN0aW9uKCl7Y29uc3QgZT10aGlzLnJlcSx0PWUubWV0aG9kLHM9ZS51cmwscj1gY2Fubm90ICR7dH0gJHtzfSAoJHt0aGlzLnN0YXR1c30pYCxvPW5ldyBFcnJvcihyKTtyZXR1cm4gby5zdGF0dXM9dGhpcy5zdGF0dXMsby5tZXRob2Q9dCxvLnVybD1zLG99LHJlcXVlc3QuUmVzcG9uc2U9UmVzcG9uc2UsRW1pdHRlcihSZXF1ZXN0LnByb3RvdHlwZSksUmVxdWVzdEJhc2UoUmVxdWVzdC5wcm90b3R5cGUpLFJlcXVlc3QucHJvdG90eXBlLnR5cGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc2V0KFwiQ29udGVudC1UeXBlXCIscmVxdWVzdC50eXBlc1tlXXx8ZSksdGhpc30sUmVxdWVzdC5wcm90b3R5cGUuYWNjZXB0PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnNldChcIkFjY2VwdFwiLHJlcXVlc3QudHlwZXNbZV18fGUpLHRoaXN9LFJlcXVlc3QucHJvdG90eXBlLmF1dGg9ZnVuY3Rpb24oZSx0LHMpezE9PT1hcmd1bWVudHMubGVuZ3RoJiYodD1cIlwiKSxcIm9iamVjdFwiPT10eXBlb2YgdCYmbnVsbCE9PXQmJihzPXQsdD1cIlwiKSxzfHwocz17dHlwZTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBidG9hP1wiYmFzaWNcIjpcImF1dG9cIn0pO3JldHVybiB0aGlzLl9hdXRoKGUsdCxzLGU9PntpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBidG9hKXJldHVybiBidG9hKGUpO3Rocm93IG5ldyBFcnJvcihcIkNhbm5vdCB1c2UgYmFzaWMgYXV0aCwgYnRvYSBpcyBub3QgYSBmdW5jdGlvblwiKX0pfSxSZXF1ZXN0LnByb3RvdHlwZS5xdWVyeT1mdW5jdGlvbihlKXtyZXR1cm5cInN0cmluZ1wiIT10eXBlb2YgZSYmKGU9c2VyaWFsaXplKGUpKSxlJiZ0aGlzLl9xdWVyeS5wdXNoKGUpLHRoaXN9LFJlcXVlc3QucHJvdG90eXBlLmF0dGFjaD1mdW5jdGlvbihlLHQscyl7aWYodCl7aWYodGhpcy5fZGF0YSl0aHJvdyBFcnJvcihcInN1cGVyYWdlbnQgY2FuJ3QgbWl4IC5zZW5kKCkgYW5kIC5hdHRhY2goKVwiKTt0aGlzLl9nZXRGb3JtRGF0YSgpLmFwcGVuZChlLHQsc3x8dC5uYW1lKX1yZXR1cm4gdGhpc30sUmVxdWVzdC5wcm90b3R5cGUuX2dldEZvcm1EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Zvcm1EYXRhfHwodGhpcy5fZm9ybURhdGE9bmV3IHJvb3QuRm9ybURhdGEpLHRoaXMuX2Zvcm1EYXRhfSxSZXF1ZXN0LnByb3RvdHlwZS5jYWxsYmFjaz1mdW5jdGlvbihlLHQpe2lmKHRoaXMuX3Nob3VsZFJldHJ5KGUsdCkpcmV0dXJuIHRoaXMuX3JldHJ5KCk7Y29uc3Qgcz10aGlzLl9jYWxsYmFjazt0aGlzLmNsZWFyVGltZW91dCgpLGUmJih0aGlzLl9tYXhSZXRyaWVzJiYoZS5yZXRyaWVzPXRoaXMuX3JldHJpZXMtMSksdGhpcy5lbWl0KFwiZXJyb3JcIixlKSkscyhlLHQpfSxSZXF1ZXN0LnByb3RvdHlwZS5jcm9zc0RvbWFpbkVycm9yPWZ1bmN0aW9uKCl7Y29uc3QgZT1uZXcgRXJyb3IoXCJSZXF1ZXN0IGhhcyBiZWVuIHRlcm1pbmF0ZWRcXG5Qb3NzaWJsZSBjYXVzZXM6IHRoZSBuZXR3b3JrIGlzIG9mZmxpbmUsIE9yaWdpbiBpcyBub3QgYWxsb3dlZCBieSBBY2Nlc3MtQ29udHJvbC1BbGxvdy1PcmlnaW4sIHRoZSBwYWdlIGlzIGJlaW5nIHVubG9hZGVkLCBldGMuXCIpO2UuY3Jvc3NEb21haW49ITAsZS5zdGF0dXM9dGhpcy5zdGF0dXMsZS5tZXRob2Q9dGhpcy5tZXRob2QsZS51cmw9dGhpcy51cmwsdGhpcy5jYWxsYmFjayhlKX0sUmVxdWVzdC5wcm90b3R5cGUuYnVmZmVyPVJlcXVlc3QucHJvdG90eXBlLmNhPVJlcXVlc3QucHJvdG90eXBlLmFnZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGNvbnNvbGUud2FybihcIlRoaXMgaXMgbm90IHN1cHBvcnRlZCBpbiBicm93c2VyIHZlcnNpb24gb2Ygc3VwZXJhZ2VudFwiKSx0aGlzfSxSZXF1ZXN0LnByb3RvdHlwZS5waXBlPVJlcXVlc3QucHJvdG90eXBlLndyaXRlPSgoKT0+e3Rocm93IEVycm9yKFwiU3RyZWFtaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gYnJvd3NlciB2ZXJzaW9uIG9mIHN1cGVyYWdlbnRcIil9KSxSZXF1ZXN0LnByb3RvdHlwZS5faXNIb3N0PWZ1bmN0aW9uKGUpe3JldHVybiBlJiZcIm9iamVjdFwiPT10eXBlb2YgZSYmIUFycmF5LmlzQXJyYXkoZSkmJlwiW29iamVjdCBPYmplY3RdXCIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl9LFJlcXVlc3QucHJvdG90eXBlLmVuZD1mdW5jdGlvbihlKXt0aGlzLl9lbmRDYWxsZWQmJmNvbnNvbGUud2FybihcIldhcm5pbmc6IC5lbmQoKSB3YXMgY2FsbGVkIHR3aWNlLiBUaGlzIGlzIG5vdCBzdXBwb3J0ZWQgaW4gc3VwZXJhZ2VudFwiKSx0aGlzLl9lbmRDYWxsZWQ9ITAsdGhpcy5fY2FsbGJhY2s9ZXx8bm9vcCx0aGlzLl9maW5hbGl6ZVF1ZXJ5U3RyaW5nKCksdGhpcy5fZW5kKCl9LFJlcXVlc3QucHJvdG90eXBlLl9lbmQ9ZnVuY3Rpb24oKXtpZih0aGlzLl9hYm9ydGVkKXJldHVybiB0aGlzLmNhbGxiYWNrKEVycm9yKFwiVGhlIHJlcXVlc3QgaGFzIGJlZW4gYWJvcnRlZCBldmVuIGJlZm9yZSAuZW5kKCkgd2FzIGNhbGxlZFwiKSk7Y29uc3QgZT10aGlzLHQ9dGhpcy54aHI9cmVxdWVzdC5nZXRYSFIoKTtsZXQgcz10aGlzLl9mb3JtRGF0YXx8dGhpcy5fZGF0YTt0aGlzLl9zZXRUaW1lb3V0cygpLHQub25yZWFkeXN0YXRlY2hhbmdlPSgoKT0+e2NvbnN0IHM9dC5yZWFkeVN0YXRlO2lmKHM+PTImJmUuX3Jlc3BvbnNlVGltZW91dFRpbWVyJiZjbGVhclRpbWVvdXQoZS5fcmVzcG9uc2VUaW1lb3V0VGltZXIpLDQhPXMpcmV0dXJuO2xldCByO3RyeXtyPXQuc3RhdHVzfWNhdGNoKGUpe3I9MH1pZighcil7aWYoZS50aW1lZG91dHx8ZS5fYWJvcnRlZClyZXR1cm47cmV0dXJuIGUuY3Jvc3NEb21haW5FcnJvcigpfWUuZW1pdChcImVuZFwiKX0pO2NvbnN0IHI9KHQscyk9PntzLnRvdGFsPjAmJihzLnBlcmNlbnQ9cy5sb2FkZWQvcy50b3RhbCoxMDApLHMuZGlyZWN0aW9uPXQsZS5lbWl0KFwicHJvZ3Jlc3NcIixzKX07aWYodGhpcy5oYXNMaXN0ZW5lcnMoXCJwcm9ncmVzc1wiKSl0cnl7dC5vbnByb2dyZXNzPXIuYmluZChudWxsLFwiZG93bmxvYWRcIiksdC51cGxvYWQmJih0LnVwbG9hZC5vbnByb2dyZXNzPXIuYmluZChudWxsLFwidXBsb2FkXCIpKX1jYXRjaChlKXt9dHJ5e3RoaXMudXNlcm5hbWUmJnRoaXMucGFzc3dvcmQ/dC5vcGVuKHRoaXMubWV0aG9kLHRoaXMudXJsLCEwLHRoaXMudXNlcm5hbWUsdGhpcy5wYXNzd29yZCk6dC5vcGVuKHRoaXMubWV0aG9kLHRoaXMudXJsLCEwKX1jYXRjaChlKXtyZXR1cm4gdGhpcy5jYWxsYmFjayhlKX1pZih0aGlzLl93aXRoQ3JlZGVudGlhbHMmJih0LndpdGhDcmVkZW50aWFscz0hMCksIXRoaXMuX2Zvcm1EYXRhJiZcIkdFVFwiIT10aGlzLm1ldGhvZCYmXCJIRUFEXCIhPXRoaXMubWV0aG9kJiZcInN0cmluZ1wiIT10eXBlb2YgcyYmIXRoaXMuX2lzSG9zdChzKSl7Y29uc3QgZT10aGlzLl9oZWFkZXJbXCJjb250ZW50LXR5cGVcIl07bGV0IHQ9dGhpcy5fc2VyaWFsaXplcnx8cmVxdWVzdC5zZXJpYWxpemVbZT9lLnNwbGl0KFwiO1wiKVswXTpcIlwiXTshdCYmaXNKU09OKGUpJiYodD1yZXF1ZXN0LnNlcmlhbGl6ZVtcImFwcGxpY2F0aW9uL2pzb25cIl0pLHQmJihzPXQocykpfWZvcihjb25zdCBlIGluIHRoaXMuaGVhZGVyKW51bGwhPXRoaXMuaGVhZGVyW2VdJiZ0aGlzLmhlYWRlci5oYXNPd25Qcm9wZXJ0eShlKSYmdC5zZXRSZXF1ZXN0SGVhZGVyKGUsdGhpcy5oZWFkZXJbZV0pO3RoaXMuX3Jlc3BvbnNlVHlwZSYmKHQucmVzcG9uc2VUeXBlPXRoaXMuX3Jlc3BvbnNlVHlwZSksdGhpcy5lbWl0KFwicmVxdWVzdFwiLHRoaXMpLHQuc2VuZCh2b2lkIDAhPT1zP3M6bnVsbCl9LHJlcXVlc3QuYWdlbnQ9KCgpPT5uZXcgQWdlbnQpLFtcIkdFVFwiLFwiUE9TVFwiLFwiT1BUSU9OU1wiLFwiUEFUQ0hcIixcIlBVVFwiLFwiREVMRVRFXCJdLmZvckVhY2goZT0+e0FnZW50LnByb3RvdHlwZVtlLnRvTG93ZXJDYXNlKCldPWZ1bmN0aW9uKHQscyl7Y29uc3Qgcj1uZXcgcmVxdWVzdC5SZXF1ZXN0KGUsdCk7cmV0dXJuIHRoaXMuX3NldERlZmF1bHRzKHIpLHMmJnIuZW5kKHMpLHJ9fSksQWdlbnQucHJvdG90eXBlLmRlbD1BZ2VudC5wcm90b3R5cGUuZGVsZXRlLHJlcXVlc3QuZ2V0PSgoZSx0LHMpPT57Y29uc3Qgcj1yZXF1ZXN0KFwiR0VUXCIsZSk7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHM9dCx0PW51bGwpLHQmJnIucXVlcnkodCkscyYmci5lbmQocykscn0pLHJlcXVlc3QuaGVhZD0oKGUsdCxzKT0+e2NvbnN0IHI9cmVxdWVzdChcIkhFQURcIixlKTtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiYocz10LHQ9bnVsbCksdCYmci5xdWVyeSh0KSxzJiZyLmVuZChzKSxyfSkscmVxdWVzdC5vcHRpb25zPSgoZSx0LHMpPT57Y29uc3Qgcj1yZXF1ZXN0KFwiT1BUSU9OU1wiLGUpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJihzPXQsdD1udWxsKSx0JiZyLnNlbmQodCkscyYmci5lbmQocykscn0pLHJlcXVlc3QuZGVsPWRlbCxyZXF1ZXN0LmRlbGV0ZT1kZWwscmVxdWVzdC5wYXRjaD0oKGUsdCxzKT0+e2NvbnN0IHI9cmVxdWVzdChcIlBBVENIXCIsZSk7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHM9dCx0PW51bGwpLHQmJnIuc2VuZCh0KSxzJiZyLmVuZChzKSxyfSkscmVxdWVzdC5wb3N0PSgoZSx0LHMpPT57Y29uc3Qgcj1yZXF1ZXN0KFwiUE9TVFwiLGUpO3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHQmJihzPXQsdD1udWxsKSx0JiZyLnNlbmQodCkscyYmci5lbmQocykscn0pLHJlcXVlc3QucHV0PSgoZSx0LHMpPT57Y29uc3Qgcj1yZXF1ZXN0KFwiUFVUXCIsZSk7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdCYmKHM9dCx0PW51bGwpLHQmJnIuc2VuZCh0KSxzJiZyLmVuZChzKSxyfSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbU5zYVdWdWRDNXFjeUpkTENKdVlXMWxjeUk2V3lKeWIyOTBJaXdpZDJsdVpHOTNJaXdpYzJWc1ppSXNJbU52Ym5OdmJHVWlMQ0ozWVhKdUlpd2lkR2hwY3lJc0lrVnRhWFIwWlhJaUxDSnlaWEYxYVhKbElpd2lVbVZ4ZFdWemRFSmhjMlVpTENKcGMwOWlhbVZqZENJc0lsSmxjM0J2Ym5ObFFtRnpaU0lzSWtGblpXNTBJaXdpYm05dmNDSXNJbkpsY1hWbGMzUWlMQ0psZUhCdmNuUnpJaXdpYlc5a2RXeGxJaXdpYldWMGFHOWtJaXdpZFhKc0lpd2lVbVZ4ZFdWemRDSXNJbVZ1WkNJc0ltRnlaM1Z0Wlc1MGN5SXNJbXhsYm1kMGFDSXNJbWRsZEZoSVVpSXNJbGhOVEVoMGRIQlNaWEYxWlhOMElpd2liRzlqWVhScGIyNGlMQ0p3Y205MGIyTnZiQ0lzSWtGamRHbDJaVmhQWW1wbFkzUWlMQ0psSWl3aVJYSnliM0lpTENKMGNtbHRJaXdpY3lJc0luSmxjR3hoWTJVaUxDSnpaWEpwWVd4cGVtVWlMQ0p2WW1vaUxDSndZV2x5Y3lJc0ltdGxlU0lzSW5CMWMyaEZibU52WkdWa1MyVjVWbUZzZFdWUVlXbHlJaXdpYW05cGJpSXNJblpoYkNJc0lrRnljbUY1SWl3aWFYTkJjbkpoZVNJc0ltWnZja1ZoWTJnaUxDSjJJaXdpYzNWaWEyVjVJaXdpY0hWemFDSXNJbVZ1WTI5a1pWVlNTVU52YlhCdmJtVnVkQ0lzSW5CaGNuTmxVM1J5YVc1bklpd2ljM1J5SWl3aWMzQnNhWFFpTENKd1lXbHlJaXdpY0c5eklpd2lhU0lzSW14bGJpSXNJbWx1WkdWNFQyWWlMQ0prWldOdlpHVlZVa2xEYjIxd2IyNWxiblFpTENKemJHbGpaU0lzSW5CaGNuTmxTR1ZoWkdWeUlpd2liR2x1WlhNaUxDSm1hV1ZzWkhNaUxDSnBibVJsZUNJc0lteHBibVVpTENKbWFXVnNaQ0lzSW5SdlRHOTNaWEpEWVhObElpd2lhWE5LVTA5T0lpd2liV2x0WlNJc0luUmxjM1FpTENKU1pYTndiMjV6WlNJc0luSmxjU0lzSW5ob2NpSXNJblJsZUhRaUxDSnlaWE53YjI1elpWUjVjR1VpTENKeVpYTndiMjV6WlZSbGVIUWlMQ0p6ZEdGMGRYTlVaWGgwSWl3aWMzUmhkSFZ6SWl3aVgzTmxkRk4wWVhSMWMxQnliM0JsY25ScFpYTWlMQ0pvWldGa1pYSWlMQ0pvWldGa1pYSnpJaXdpWjJWMFFXeHNVbVZ6Y0c5dWMyVklaV0ZrWlhKeklpd2laMlYwVW1WemNHOXVjMlZJWldGa1pYSWlMQ0pmYzJWMFNHVmhaR1Z5VUhKdmNHVnlkR2xsY3lJc0lsOXlaWE53YjI1elpWUjVjR1VpTENKaWIyUjVJaXdpY21WemNHOXVjMlVpTENKZmNHRnljMlZDYjJSNUlpd2lYM0YxWlhKNUlpd2lYMmhsWVdSbGNpSXNJbTl1SWl3aWJtVjNYMlZ5Y2lJc0ltVnljaUlzSW5KbGN5SXNJbkJoY25ObElpd2liM0pwWjJsdVlXd2lMQ0p5WVhkU1pYTndiMjV6WlNJc0luTjBZWFIxYzBOdlpHVWlMQ0pqWVd4c1ltRmpheUlzSW1WdGFYUWlMQ0pmYVhOU1pYTndiMjV6WlU5TElpd2lZM1Z6ZEc5dFgyVnljaUlzSW1SbGJDSXNJbVJoZEdFaUxDSm1iaUlzSW5ObGJtUWlMQ0p6WlhKcFlXeHBlbVZQWW1wbFkzUWlMQ0owZVhCbGN5SXNJbWgwYld3aUxDSnFjMjl1SWl3aWVHMXNJaXdpZFhKc1pXNWpiMlJsWkNJc0ltWnZjbTBpTENKbWIzSnRMV1JoZEdFaUxDSmhjSEJzYVdOaGRHbHZiaTk0TFhkM2R5MW1iM0p0TFhWeWJHVnVZMjlrWldRaUxDSmhjSEJzYVdOaGRHbHZiaTlxYzI5dUlpd2lTbE5QVGlJc0luTjBjbWx1WjJsbWVTSXNJbkJ5YjNSdmRIbHdaU0lzSW5SNWNHVWlMQ0pmY0dGeWMyVnlJaXdpVDJKcVpXTjBJaXdpZEc5RmNuSnZjaUlzSW0xelp5SXNJbk5sZENJc0ltRmpZMlZ3ZENJc0ltRjFkR2dpTENKMWMyVnlJaXdpY0dGemN5SXNJbTl3ZEdsdmJuTWlMQ0ppZEc5aElpd2lYMkYxZEdnaUxDSnpkSEpwYm1jaUxDSnhkV1Z5ZVNJc0ltRjBkR0ZqYUNJc0ltWnBiR1VpTENKZlpHRjBZU0lzSWw5blpYUkdiM0p0UkdGMFlTSXNJbUZ3Y0dWdVpDSXNJbTVoYldVaUxDSmZabTl5YlVSaGRHRWlMQ0pHYjNKdFJHRjBZU0lzSWw5emFHOTFiR1JTWlhSeWVTSXNJbDl5WlhSeWVTSXNJbDlqWVd4c1ltRmpheUlzSW1Oc1pXRnlWR2x0Wlc5MWRDSXNJbDl0WVhoU1pYUnlhV1Z6SWl3aWNtVjBjbWxsY3lJc0lsOXlaWFJ5YVdWeklpd2lZM0p2YzNORWIyMWhhVzVGY25KdmNpSXNJbU55YjNOelJHOXRZV2x1SWl3aVluVm1abVZ5SWl3aVkyRWlMQ0poWjJWdWRDSXNJbkJwY0dVaUxDSjNjbWwwWlNJc0lsOXBjMGh2YzNRaUxDSjBiMU4wY21sdVp5SXNJbU5oYkd3aUxDSmZaVzVrUTJGc2JHVmtJaXdpWDJacGJtRnNhWHBsVVhWbGNubFRkSEpwYm1jaUxDSmZaVzVrSWl3aVgyRmliM0owWldRaUxDSmZjMlYwVkdsdFpXOTFkSE1pTENKdmJuSmxZV1I1YzNSaGRHVmphR0Z1WjJVaUxDSnlaV0ZrZVZOMFlYUmxJaXdpWDNKbGMzQnZibk5sVkdsdFpXOTFkRlJwYldWeUlpd2lkR2x0WldSdmRYUWlMQ0pvWVc1a2JHVlFjbTluY21WemN5SXNJbVJwY21WamRHbHZiaUlzSW5SdmRHRnNJaXdpY0dWeVkyVnVkQ0lzSW14dllXUmxaQ0lzSW1oaGMweHBjM1JsYm1WeWN5SXNJbTl1Y0hKdlozSmxjM01pTENKaWFXNWtJaXdpZFhCc2IyRmtJaXdpZFhObGNtNWhiV1VpTENKd1lYTnpkMjl5WkNJc0ltOXdaVzRpTENKZmQybDBhRU55WldSbGJuUnBZV3h6SWl3aWQybDBhRU55WldSbGJuUnBZV3h6SWl3aVkyOXVkR1Z1ZEZSNWNHVWlMQ0pmYzJWeWFXRnNhWHBsY2lJc0ltaGhjMDkzYmxCeWIzQmxjblI1SWl3aWMyVjBVbVZ4ZFdWemRFaGxZV1JsY2lJc0lsOXpaWFJFWldaaGRXeDBjeUlzSW1kbGRDSXNJbWhsWVdRaUxDSndZWFJqYUNJc0luQnZjM1FpTENKd2RYUWlYU3dpYldGd2NHbHVaM01pT2lKQlFVbEJMRWxCUVVsQkxFdEJRMnRDTEc5Q1FVRllReXhQUVVOVVJDeExRVUZQUXl4UFFVTnJRaXh2UWtGQlZFTXNTMEZEYUVKR0xFdEJRVTlGTEUxQlJWQkRMRkZCUVZGRExFdEJRVXNzZFVWQlEySktMRXRCUVU5TExFMUJSMVFzVFVGQlRVTXNVVUZCVlVNc1VVRkJVU3h4UWtGRGJFSkRMRmxCUVdORUxGRkJRVkVzYTBKQlEzUkNSU3hUUVVGWFJpeFJRVUZSTEdWQlEyNUNSeXhoUVVGbFNDeFJRVUZSTEcxQ1FVTjJRa2tzVFVGQlVVb3NVVUZCVVN4blFrRk5kRUlzVTBGQlUwc3NVVUZOVkN4TlFVRk5ReXhSUVVGVlF5eFJRVUZWUXl4UFFVRlBSQ3hSUVVGVkxGTkJRVk5GTEVWQlFWRkRMRWRCUlRGRUxFMUJRVWtzYlVKQlFYRkNRU3hGUVVOb1FpeEpRVUZKU0N4UlFVRlJTU3hSUVVGUkxFMUJRVTlHTEVkQlFWRkhMRWxCUVVsR0xFZEJTVFZETEVkQlFVdEhMRlZCUVZWRExFOUJRMVlzU1VGQlNWQXNVVUZCVVVrc1VVRkJVU3hOUVVGUFJpeEhRVWMzUWl4SlFVRkpSaXhSUVVGUlNTeFJRVUZSUml4RlFVRlJReXhKUVVkeVEwZ3NVVUZCVVVrc1VVRkJWVUVzVVVGTmJFSk1MRkZCUVZGVExFOUJRVk1zVFVGRFppeE5RVUZKZEVJc1MwRkJTM1ZDTEdkQ1FVTkJka0lzUzBGQlMzZENMRlZCUVZrc1UwRkJWM2hDTEV0QlFVdDNRaXhUUVVGVFF5eFZRVU4yUTNwQ0xFdEJRVXN3UWl4bFFVTm1MRTlCUVU4c1NVRkJTVWdzWlVGRldDeEpRVUZOTEU5QlFVOHNTVUZCU1Vjc1kwRkJZeXh4UWtGQmQwSXNUVUZCVFVNc1NVRkROMFFzU1VGQlRTeFBRVUZQTEVsQlFVbEVMR05CUVdNc2MwSkJRWGxDTEUxQlFVMURMRWxCUXpsRUxFbEJRVTBzVDBGQlR5eEpRVUZKUkN4alFVRmpMSE5DUVVGNVFpeE5RVUZOUXl4SlFVTTVSQ3hKUVVGTkxFOUJRVThzU1VGQlNVUXNZMEZCWXl4clFrRkJjVUlzVFVGQlRVTXNTVUZGTlVRc1RVRkJUVU1zVFVGQlRTd3lSRUZYWkN4TlFVRk5ReXhMUVVGUExFZEJRVWRCTEV0QlExcERMRWRCUVV0QkxFVkJRVVZFTEU5QlExQkRMRWRCUVV0QkxFVkJRVVZETEZGQlFWRXNaVUZCWjBJc1NVRlZia01zVTBGQlUwTXNWVUZCVlVNc1IwRkRha0lzU1VGQlMzaENMRk5CUVZOM1FpeEhRVUZOTEU5QlFVOUJMRVZCUXpOQ0xFMUJRVTFETEVWQlFWRXNSMEZEWkN4SlFVRkxMRTFCUVUxRExFdEJRVTlHTEVWQlEyaENSeXgzUWtGQmQwSkdMRVZCUVU5RExFVkJRVXRHTEVWQlFVbEZMRWxCUlRGRExFOUJRVTlFTEVWQlFVMUhMRXRCUVVzc1MwRlpjRUlzVTBGQlUwUXNkMEpCUVhkQ1JpeEZRVUZQUXl4RlFVRkxSeXhIUVVNelF5eEhRVUZYTEUxQlFWQkJMRVZCUTBZc1IwRkJTVU1zVFVGQlRVTXNVVUZCVVVZc1IwRkRhRUpCTEVWQlFVbEhMRkZCUVZGRExFbEJRMVpPTEhkQ1FVRjNRa1lzUlVGQlQwTXNSVUZCUzA4c1ZVRkZha01zUjBGQlNXcERMRk5CUVZNMlFpeEhRVU5zUWl4SlFVRkpMRTFCUVUxTExFdEJRVlZNTEVWQlEyeENSaXgzUWtGQmQwSkdMRXRCUVZWRExFdEJRVTlSTEV0QlFWZE1MRVZCUVVsTExGTkJSekZFVkN4RlFVRk5WU3hMUVVGTFF5eHRRa0ZCYlVKV0xFZEJRekZDTEVsQlFVMVZMRzFDUVVGdFFsQXNVMEZGWkN4UFFVRlNRU3hIUVVOVVNpeEZRVUZOVlN4TFFVRkxReXh0UWtGQmJVSldMRWxCYTBKc1F5eFRRVUZUVnl4WlFVRlpReXhIUVVOdVFpeE5RVUZOWkN4RlFVRk5MRWRCUTA1RExFVkJRVkZoTEVWQlFVbERMRTFCUVUwc1MwRkRlRUlzU1VGQlNVTXNSVUZEUVVNc1JVRkZTaXhKUVVGTExFbEJRVWxETEVWQlFVa3NSVUZCUjBNc1JVRkJUV3hDTEVWQlFVMWlMRTlCUVZFNFFpeEZRVUZKUXl4SlFVRlBSQ3hIUVVkcVF5eEpRVVJhUkN4SFFVUkJSQ3hGUVVGUFppeEZRVUZOYVVJc1NVRkRSa1VzVVVGQlVTeE5RVVZxUW5CQ0xFVkJRVWx4UWl4dFFrRkJiVUpNTEVsQlFWTXNSMEZGYUVOb1FpeEZRVUZKY1VJc2JVSkJRVzFDVEN4RlFVRkxUU3hOUVVGTkxFVkJRVWRNTEV0QlEyNURTU3h0UWtGQmJVSk1MRVZCUVV0TkxFMUJRVTFNTEVWQlFVMHNTVUZKTVVNc1QwRkJUMnBDTEVWQk9FUlVMRk5CUVZOMVFpeFpRVUZaVkN4SFFVTnVRaXhOUVVGTlZTeEZRVUZSVml4RlFVRkpReXhOUVVGTkxGTkJRMnhDVlN4RlFVRlRMRWRCUTJZc1NVRkJTVU1zUlVGRFFVTXNSVUZEUVVNc1JVRkRRWFpDTEVWQlJVb3NTVUZCU3l4SlFVRkpZU3hGUVVGSkxFVkJRVWRETEVWQlFVMUxMRVZCUVUxd1F5eFBRVUZST0VJc1JVRkJTVU1zU1VGQlQwUXNSMEZIT1VJc1MwRkVabEVzUjBGRVFVTXNSVUZCVDBnc1JVRkJUVTRzU1VGRFFVVXNVVUZCVVN4UlFVbHlRbEVzUlVGQlVVUXNSVUZCUzB3c1RVRkJUU3hGUVVGSFNTeEhRVUZQUnl4alFVTTNRbmhDTEVWQlFVMVVMRXRCUVVzclFpeEZRVUZMVEN4TlFVRk5TU3hGUVVGUkxFbEJRemxDUkN4RlFVRlBSeXhIUVVGVGRrSXNSMEZIYkVJc1QwRkJUMjlDTEVWQlYxUXNVMEZCVTBzc1QwRkJUME1zUjBGSFpDeE5RVUZQTEhOQ1FVRnpRa01zUzBGQlMwUXNSMEZwUkhCRExGTkJRVk5GTEZOQlFWTkRMRWRCUTJoQ09VUXNTMEZCU3poRUxFbEJRVTFCTEVWQlExZzVSQ3hMUVVGTEswUXNTVUZCVFM5RUxFdEJRVXM0UkN4SlFVRkpReXhKUVVWd1FpOUVMRXRCUVV0blJTeExRVUV5UWl4UlFVRnNRbWhGTEV0QlFVczRSQ3hKUVVGSmJrUXNVMEZCT0VNc1MwRkJNVUpZTEV0QlFVc3JSQ3hKUVVGSlJTeGpRVUZwUkN4VFFVRXhRbXBGTEV0QlFVc3JSQ3hKUVVGSlJTeHZRa0ZCT0VRc1NVRkJNVUpxUlN4TFFVRkxLMFFzU1VGQlNVVXNZVUZETlVocVJTeExRVUZMSzBRc1NVRkJTVWNzWVVGRFZDeExRVU5NYkVVc1MwRkJTMjFGTEZkQlFXRnVSU3hMUVVGTE9FUXNTVUZCU1VNc1NVRkJTVWtzVjBGREwwSXNTVUZCU1VNc1JVRkJVM0JGTEV0QlFVc3JSQ3hKUVVGSlN5eFBRVVZRTEU5QlFWaEJMRWxCUTBaQkxFVkJRVk1zUzBGRldIQkZMRXRCUVV0eFJTeHhRa0ZCY1VKRUxFZEJRekZDY0VVc1MwRkJTM05GTEU5QlFWTjBSU3hMUVVGTGRVVXNVVUZCVlhCQ0xGbEJRVmx1UkN4TFFVRkxLMFFzU1VGQlNWTXNlVUpCU1d4RWVFVXNTMEZCUzNORkxFOUJRVThzWjBKQlFXdENkRVVzUzBGQlN5dEVMRWxCUVVsVkxHdENRVUZyUWl4blFrRkRla1I2UlN4TFFVRkxNRVVzY1VKQlFYRkNNVVVzUzBGQlMzTkZMRkZCUlROQ0xFOUJRVk4wUlN4TFFVRkxaMFVzVFVGQlVVWXNSVUZCU1dFc1kwRkROVUl6UlN4TFFVRkxORVVzUzBGQlR6VkZMRXRCUVVzclJDeEpRVUZKWXl4VFFVVnlRamRGTEV0QlFVczBSU3hMUVVFd1FpeFJRVUZ1UWpWRkxFdEJRVXM0UkN4SlFVRkpia1FzVDBGRGFrSllMRXRCUVVzNFJTeFhRVUZYT1VVc1MwRkJTMmRGTEV0QlFVOW9SU3hMUVVGTFowVXNTMEZCVDJoRkxFdEJRVXNyUkN4SlFVRkpZeXhWUVVOcVJDeExRV2xGVWl4VFFVRlRhRVVzVVVGQlVVWXNSVUZCVVVNc1IwRkRka0lzVFVGQlRXWXNSVUZCVDBjc1MwRkRZa0VzUzBGQlN5dEZMRTlCUVZNdlJTeExRVUZMSzBVc1VVRkJWU3hIUVVNM1FpOUZMRXRCUVV0WExFOUJRVk5CTEVWQlEyUllMRXRCUVV0WkxFbEJRVTFCTEVWQlExaGFMRXRCUVV0elJTeFBRVUZUTEVkQlEyUjBSU3hMUVVGTFowWXNVVUZCVlN4SFFVTm1hRVlzUzBGQlMybEdMRWRCUVVjc1RVRkJUeXhMUVVOaUxFbEJNRUpKUXl4RlFURkNRVU1zUlVGQlRTeExRVU5PUXl4RlFVRk5MRXRCUlZZc1NVRkRSVUVzUlVGQlRTeEpRVUZKZGtJc1UwRkJVMmhGTEVkQlEyNUNMRTFCUVUxNVFpeEhRV2RDVGl4UFFXWkJOa1FzUlVGQlRTeEpRVUZKTlVRc1RVRkJUU3d5UTBGRFdqaEVMRTlCUVZFc1JVRkRXa1lzUlVGQlNVY3NVMEZCVjJoRkxFVkJSVmg2UWl4RlFVRkxhMFVzUzBGRlVHOUNMRVZCUVVsSkxHbENRVUU0UXl4SlFVRjZRakZHTEVWQlFVdHJSU3hKUVVGSlJTeGhRVUU0UW5CRkxFVkJRVXRyUlN4SlFVRkpSeXhoUVVGbGNrVXNSVUZCUzJ0RkxFbEJRVWxqTEZOQlJXcEhUU3hGUVVGSlppeFBRVUZUZGtVc1JVRkJTMnRGTEVsQlFVbExMRTlCUVZOMlJTeEZRVUZMYTBVc1NVRkJTVXNzVDBGQlV5eExRVU5xUkdVc1JVRkJTVXNzVjBGQllVd3NSVUZCU1dZc1UwRkZja0psTEVWQlFVbEpMRmxCUVdNc1MwRkRiRUpLTEVWQlFVbG1MRTlCUVZNc1RVRkhVblpGTEVWQlFVczBSaXhUUVVGVFRpeEhRVWQyUW5SR0xFVkJRVXMyUml4TFFVRkxMRmRCUVZsT0xFZEJSM1JDTEVsQlEwOTJSaXhGUVVGTE9FWXNZMEZCWTFBc1MwRkRkRUpHTEVWQlFWVXNTVUZCU1RORUxFMUJRVTAyUkN4RlFVRkpha0lzV1VGQll5d3JRa0ZGZUVNc1RVRkJUWGxDTEVkQlEwNVdMRVZCUVZWVkxFVkJTVkpXTEVkQlEwWkJMRVZCUVZGSkxGTkJRVmRJTEVWQlEyNUNSQ3hGUVVGUlRDeFRRVUZYVHl4RlFVTnVRa1lzUlVGQlVXUXNUMEZCVTJkQ0xFVkJRVWxvUWl4UFFVTnlRblpGTEVWQlFVczBSaXhUUVVGVFVDeEZRVUZUUlN4SlFVVjJRblpHTEVWQlFVczBSaXhUUVVGVExFdEJRVTFNTEV0QmEyRXhRaXhUUVVGVFV5eEpRVUZKYWtZc1JVRkJTMnRHTEVWQlFVMURMRWRCUTNSQ0xFMUJRVTFxUXl4RlFVRk5kRVFzVVVGQlVTeFRRVUZWU1N4SFFVazVRaXhOUVVoSkxHMUNRVUZ4UW10R0xFbEJRVTlETEVWQlFVdEVMRVZCUVZGQkxFVkJRVThzVFVGRGFFUkJMRWRCUVUxb1F5eEZRVUZKYTBNc1MwRkJTMFlzUjBGRFprTXNSMEZCU1dwRExFVkJRVWxvUkN4SlFVRkphVVlzUjBGRFZHcERMRVZCTDNSQ1ZIUkVMRkZCUVZGNVJpeG5Ra0ZCYTBKMFJTeFZRV3RETVVKdVFpeFJRVUZSYVVNc1dVRkJZMEVzV1VGVGRFSnFReXhSUVVGUk1FWXNUVUZCVVN4RFFVTmtReXhMUVVGTkxGbEJRMDVETEV0QlFVMHNiVUpCUTA1RExFbEJRVXNzVjBGRFRFTXNWMEZCV1N4dlEwRkRXa01zUzBGQlVTeHZRMEZEVWtNc1dVRkJZU3h4UTBGWlptaEhMRkZCUVZGdFFpeFZRVUZaTEVOQlEyeENPRVVzYjBOQlFYRkRPVVVzVlVGRGNrTXJSU3h0UWtGQmIwSkRMRXRCUVV0RExGZEJXVE5DY0Vjc1VVRkJVVFpGTEUxQlFWRXNRMEZEWkc5Q0xHOURRVUZ4UTJoRkxGbEJRM0pEYVVVc2JVSkJRVzlDUXl4TFFVRkxkRUlzVDBFMFNETkNhRVlzWVVGQllYZEVMRk5CUVZOblJDeFhRV0YwUW1oRUxGTkJRVk5uUkN4VlFVRlZMMElzVjBGQllTeFRRVUZUY0VNc1IwRkRka01zU1VGQlNUSkRMRVZCUVZFM1JTeFJRVUZSTmtVc1RVRkJUWEpHTEV0QlFVczRSeXhOUVVNdlFpeFBRVUZKT1Vjc1MwRkJTemhFTEVsQlFVbHBSQ3hSUVVOS0wwY3NTMEZCU3poRUxFbEJRVWxwUkN4UlFVRlJMMGNzUzBGQlRUQkRMRXRCUlROQ01rTXNSMEZCVXpOQ0xFOUJRVTh4UkN4TFFVRkxPRWNzVVVGRGVFSjZRaXhGUVVGUk4wVXNVVUZCVVRaRkxFMUJRVTBzY1VKQlJXcENRU3hIUVVGVE0wTXNTVUZCVVVFc1JVRkJTVEZDTEZGQlFWVXdRaXhoUVVGbGMwVXNVVUZEYWtRelFpeEZRVUZOTTBNc1IwRkRUaXhQUVZWT2JVSXNVMEZCVTJkRUxGVkJRVlZKTEZGQlFWVXNWMEZETTBJc1RVRkJUVzVFTEVWQlFVMDVSQ3hMUVVGTE9FUXNTVUZEV0c1RUxFVkJRVk50UkN4RlFVRkpia1FzVDBGRFlrTXNSVUZCVFd0RUxFVkJRVWxzUkN4SlFVVldjMGNzV1VGQlowSjJSeXhMUVVGVlF5eE5RVUZSV2l4TFFVRkxiMFVzVlVGRGRrTmxMRVZCUVUwc1NVRkJTVFZFTEUxQlFVMHlSaXhIUVV0MFFpeFBRVXBCTDBJc1JVRkJTV1lzVDBGQlUzQkZMRXRCUVV0dlJTeFBRVU5zUW1Vc1JVRkJTWGhGTEU5QlFWTkJMRVZCUTJKM1JTeEZRVUZKZGtVc1NVRkJUVUVzUlVGRlNIVkZMRWRCVDFRelJTeFJRVUZSY1VRc1UwRkJWMEVzVTBGeFJXNUNOVVFzVVVGQlVWa3NVVUZCVVdkSExGZEJRMmhDTVVjc1dVRkJXVlVzVVVGQlVXZEhMRmRCZDBKd1FtaEhMRkZCUVZGblJ5eFZRVUZWUXl4TFFVRlBMRk5CUVZOQkxFZEJSV2hETEU5QlJFRTVSeXhMUVVGTGJVZ3NTVUZCU1N4bFFVRm5Rak5ITEZGQlFWRXdSaXhOUVVGTldTeEpRVUZUUVN4SFFVTjZRemxITEUxQmRVSlVZU3hSUVVGUlowY3NWVUZCVlU4c1QwRkJVeXhUUVVGVFRpeEhRVVZzUXl4UFFVUkJPVWNzUzBGQlMyMUlMRWxCUVVrc1UwRkJWVE5ITEZGQlFWRXdSaXhOUVVGTldTeEpRVUZUUVN4SFFVTnVRemxITEUxQllWUmhMRkZCUVZGblJ5eFZRVUZWVVN4TFFVRlBMRk5CUVZORExFVkJRVTFETEVWQlFVMURMRWRCUTNoRExFbEJRVTE2Unl4VlFVRlZReXhUUVVGUmRVY3NSVUZCVHl4SlFVTm1MR2xDUVVGVVFTeEhRVUU0UWl4UFFVRlVRU3hKUVVNNVFrTXNSVUZCVlVRc1JVRkRWa0VzUlVGQlR5eEpRVVZLUXl4SlFVTklRU3hGUVVGVkxFTkJRMUpXTEV0QlFVMHNiVUpCUVhOQ1Z5eExRVUZQTEZGQlFWVXNVMEZYYWtRc1QwRkJUM3BJTEV0QlFVc3dTQ3hOUVVGTlNpeEZRVUZOUXl4RlFVRk5ReXhGUVZCa1J5eEpRVU5rTEVkQlFVa3NiVUpCUVhOQ1JpeExRVU40UWl4UFFVRlBRU3hMUVVGTFJTeEhRVVZrTEUxQlFVMHNTVUZCU1hCSExFMUJRVTBzYjBSQmIwSndRbFlzVVVGQlVXZEhMRlZCUVZWbExFMUJRVkVzVTBGQlV6TkdMRWRCUjJwRExFMUJSa2tzYVVKQlFXMUNRU3hKUVVGTFFTeEZRVUZOVGl4VlFVRlZUU3hKUVVONFEwRXNSMEZCUzJwRExFdEJRVXNyUlN4UFFVRlBlRU1zUzBGQlMwNHNSMEZEYmtKcVF5eE5RVzlDVkdFc1VVRkJVV2RITEZWQlFWVm5RaXhQUVVGVExGTkJRVk55UlN4RlFVRlBjMFVzUlVGQlRVNHNSMEZETDBNc1IwRkJTVTBzUlVGQlRTeERRVU5TTEVkQlFVazVTQ3hMUVVGTEswZ3NUVUZEVUN4TlFVRk5lRWNzVFVGQlRTdzRRMEZIWkhaQ0xFdEJRVXRuU1N4bFFVRmxReXhQUVVGUGVrVXNSVUZCVDNORkxFVkJRVTFPTEVkQlFWZE5MRVZCUVV0SkxFMUJSVEZFTEU5QlFVOXNTU3hOUVVkVVlTeFJRVUZSWjBjc1ZVRkJWVzFDTEdGQlFXVXNWMEZKTDBJc1QwRklTMmhKTEV0QlFVdHRTU3haUVVOU2Jra3NTMEZCUzIxSkxGVkJRVmtzU1VGQlNYaEpMRXRCUVV0NVNTeFZRVVZ5UW5CSkxFdEJRVXR0U1N4WFFWbGtkRWdzVVVGQlVXZEhMRlZCUVZWd1FpeFRRVUZYTEZOQlFWTk9MRVZCUVV0RExFZEJRM3BETEVkQlFVbHdSaXhMUVVGTGNVa3NZVUZCWVd4RUxFVkJRVXRETEVkQlEzcENMRTlCUVU5d1JpeExRVUZMYzBrc1UwRkhaQ3hOUVVGTmRrTXNSVUZCU3k5R0xFdEJRVXQxU1N4VlFVTm9RblpKTEV0QlFVdDNTU3hsUVVWRWNrUXNTVUZEUlc1R0xFdEJRVXQ1U1N4alFVRmhkRVFzUlVGQlNYVkVMRkZCUVZVeFNTeExRVUZMTWtrc1UwRkJWeXhIUVVOd1JETkpMRXRCUVVzd1JpeExRVUZMTEZGQlFWTlFMRWxCUjNKQ1dTeEZRVUZIV2l4RlFVRkxReXhKUVZOV2RrVXNVVUZCVVdkSExGVkJRVlVyUWl4cFFrRkJiVUlzVjBGRGJrTXNUVUZCVFhwRUxFVkJRVTBzU1VGQlNUVkVMRTFCUVUwc1owdEJRM1JDTkVRc1JVRkJTVEJFTEdGQlFXTXNSVUZGYkVJeFJDeEZRVUZKWml4UFFVRlRjRVVzUzBGQlMyOUZMRTlCUTJ4Q1pTeEZRVUZKZUVVc1QwRkJVMWdzUzBGQlMxY3NUMEZEYkVKM1JTeEZRVUZKZGtVc1NVRkJUVm9zUzBGQlMxa3NTVUZGWmxvc1MwRkJTM2xHTEZOQlFWTk9MRWxCU1doQ2RFVXNVVUZCVVdkSExGVkJRVlZwUXl4UFFVRlRha2tzVVVGQlVXZEhMRlZCUVZWclF5eEhRVUZMYkVrc1VVRkJVV2RITEZWQlFWVnRReXhOUVVGUkxGZEJSVEZGTEU5QlJFRnNTaXhSUVVGUlF5eExRVUZMTERCRVFVTk9ReXhOUVVsVVlTeFJRVUZSWjBjc1ZVRkJWVzlETEV0QlFVOXdTU3hSUVVGUlowY3NWVUZCVlhGRExFMUJRVkVzVFVGRGFrUXNUVUZCVFROSUxFMUJRVTBzYVVWQlYyUldMRkZCUVZGblJ5eFZRVUZWYzBNc1VVRkJWU3hUUVVGcFFuWklMRWRCUlRORExFOUJRVTlCTEVkQlFVOHNhVUpCUVc5Q1FTeEpRVUZSVFN4TlFVRk5ReXhSUVVGUlVDeEpRVUZuUkN4dlFrRkJlRU52Uml4UFFVRlBTQ3hWUVVGVmRVTXNVMEZCVTBNc1MwRkJTM3BJTEVsQldXcEhaaXhSUVVGUlowY3NWVUZCVlM5R0xFbEJRVTBzVTBGQlUybEdMRWRCUXpOQ0wwWXNTMEZCUzNOS0xGbEJRMUI0U2l4UlFVRlJReXhMUVVGTExIbEZRVVZtUXl4TFFVRkxjMG9zV1VGQllTeEZRVWRzUW5SS0xFdEJRVXQxU1N4VlFVRlplRU1zUjBGQlRYaEdMRXRCUjNaQ1VDeExRVUZMZFVvc2RVSkJSVXgyU2l4TFFVRkxkMG9zVVVGSFVETkpMRkZCUVZGblJ5eFZRVUZWTWtNc1MwRkJUeXhYUVVOMlFpeEhRVUZKZUVvc1MwRkJTM2xLTEZOQlFWVXNUMEZCVDNwS0xFdEJRVXQ1Uml4VFFVRlRiRVVzVFVGQlRTd3JSRUZGT1VNc1RVRkJUVEZDTEVWQlFVOUhMRXRCUTFBclJDeEZRVUZQTDBRc1MwRkJTeXRFTEVsQlFVMTJSQ3hSUVVGUlV5eFRRVU5vUXl4SlFVRkpOa1VzUlVGQlR6bEdMRXRCUVV0dFNTeFhRVUZoYmtrc1MwRkJTeXRJTEUxQlJXeERMMGdzUzBGQlN6QktMR1ZCUjB3elJpeEZRVUZKTkVZc2JVSkJRWEZDTEUxQlEzWkNMRTFCUVUxRExFVkJRV0UzUml4RlFVRkpOa1lzVjBGSmRrSXNSMEZJU1VFc1IwRkJZeXhIUVVGTEwwb3NSVUZCUzJkTExIVkNRVU14UW5KQ0xHRkJRV0V6U1N4RlFVRkxaMHNzZFVKQlJXaENMRWRCUVV0RUxFVkJRMUFzVDBGTFJpeEpRVUZKZUVZc1JVRkRTaXhKUVVGTlFTeEZRVUZUVEN4RlFVRkpTeXhQUVVGVExFMUJRVTA1UXl4SFFVRkxPRU1zUlVGQlV5eEZRVVZvUkN4SlFVRkxRU3hGUVVGUkxFTkJRMWdzUjBGQlNYWkZMRVZCUVV0cFN5eFZRVUZaYWtzc1JVRkJTelJLTEZOQlFWVXNUMEZEY0VNc1QwRkJUelZLTEVWQlFVc3JTU3h0UWtGRlpDOUpMRVZCUVVzMlJpeExRVUZMTEZOQlNWb3NUVUZCVFhGRkxFVkJRV2xDTEVOQlFVTkRMRVZCUVZjeFNTeExRVU0zUWtFc1JVRkJSVEpKTEUxQlFWRXNTVUZEV2pOSkxFVkJRVVUwU1N4UlFVRlZOVWtzUlVGQlJUWkpMRTlCUVZNM1NTeEZRVUZGTWtrc1RVRkJVU3hMUVVWdVF6TkpMRVZCUVVVd1NTeFZRVUZaUVN4RlFVTmtia3NzUlVGQlN6WkdMRXRCUVVzc1YwRkJXWEJGTEVsQlJYaENMRWRCUVVsMFFpeExRVUZMYjBzc1lVRkJZU3haUVVOd1FpeEpRVU5GY2tjc1JVRkJTWE5ITEZkQlFXRk9MRVZCUVdWUExFdEJRVXNzUzBGQlRTeFpRVU4yUTNaSExFVkJRVWwzUnl4VFFVTk9lRWNzUlVGQlNYZEhMRTlCUVU5R0xGZEJRV0ZPTEVWQlFXVlBMRXRCUVVzc1MwRkJUU3hYUVVWd1JDeE5RVUZOYUVvc1NVRlJWaXhKUVVOTmRFSXNTMEZCUzNkTExGVkJRVmw0U3l4TFFVRkxlVXNzVTBGRGVFSXhSeXhGUVVGSk1rY3NTMEZCU3pGTExFdEJRVXRYTEU5QlFWRllMRXRCUVV0WkxFdEJRVXNzUlVGQlRWb3NTMEZCUzNkTExGTkJRVlY0U3l4TFFVRkxlVXNzVlVGRk1VUXhSeXhGUVVGSk1rY3NTMEZCU3pGTExFdEJRVXRYTEU5QlFWRllMRXRCUVV0WkxFdEJRVXNzUjBGRmJFTXNUVUZCVDNWRkxFZEJSVkFzVDBGQlQyNUdMRXRCUVV0NVJpeFRRVUZUVGl4SFFVOTJRaXhIUVVoSmJrWXNTMEZCU3pKTExHMUNRVUZyUWpWSExFVkJRVWsyUnl4cFFrRkJhMElzU1VGSE5VTTFTeXhMUVVGTGJVa3NWMEZCWVN4UFFVRlRia2tzUzBGQlMxY3NVVUZCVlN4UlFVRlZXQ3hMUVVGTFZ5eFJRVUZWTEdsQ1FVRnRRbTFHTEVsQlFWTTVSaXhMUVVGTGJVb3NVVUZCVVhKRUxFZEJRVThzUTBGRmRFZ3NUVUZCVFN0RkxFVkJRV00zU3l4TFFVRkxaMFlzVVVGQlVTeG5Ra0ZEYWtNc1NVRkJTWEpFTEVWQlFWa3pRaXhMUVVGTE9Fc3NZVUZCWlhSTExGRkJRVkZ0UWl4VlFVRlZhMG9zUlVGQlkwRXNSVUZCV1d4SkxFMUJRVTBzUzBGQlN5eEhRVUZMTEV0QlF6TkdhRUlzUjBGQllTdENMRTlCUVU5dFNDeExRVU4yUW14S0xFVkJRVmx1UWl4UlFVRlJiVUlzVlVGQlZTeHhRa0ZGTlVKQkxFbEJRVmR0UlN4RlFVRlBia1VzUlVGQlZXMUZMRWxCU1d4RExFbEJRVXNzVFVGQlRYUkRMRXRCUVZONFJDeExRVUZMYzBVc1QwRkRia0lzVFVGQlVYUkZMRXRCUVV0elJTeFBRVUZQWkN4SlFVVndRbmhFTEV0QlFVdHpSU3hQUVVGUGVVY3NaVUZCWlhaSUxFbEJRemRDVHl4RlFVRkphVWdzYVVKQlFXbENlRWdzUlVGQlQzaEVMRXRCUVV0elJTeFBRVUZQWkN4SlFVZDRRM2hFTEV0QlFVc3lSU3huUWtGRFVGb3NSVUZCU1VVc1lVRkJaV3BGTEV0QlFVc3lSU3hsUVVreFFqTkZMRXRCUVVzd1JpeExRVUZMTEZWQlFWY3hSaXhOUVVseVFpdEVMRVZCUVVscFF5eFZRVUZ4UWl4SlFVRlVSaXhGUVVGMVFrRXNSVUZCVHl4UFFVZG9SSFJHTEZGQlFWRjNTU3hOUVVGUkxFdEJRVTBzU1VGQlNURkpMRTlCUlRGQ0xFTkJRVU1zVFVGQlR5eFBRVUZSTEZWQlFWY3NVVUZCVXl4TlFVRlBMRlZCUVZVNFFpeFJRVUZSZWtJc1NVRkRNMFJNTEUxQlFVMTFSeXhWUVVGVmJFY3NSVUZCVHpoRExHVkJRV2xDTEZOQlFWTTNReXhGUVVGTGJVWXNSMEZEY0VRc1RVRkJUV3BETEVWQlFVMHNTVUZCU1hSRUxGRkJRVkZMTEZGQlFWRkdMRVZCUVZGRExFZEJTM2hETEU5QlNrRmFMRXRCUVV0cFRDeGhRVUZoYmtnc1IwRkRaR2xETEVkQlEwWnFReXhGUVVGSmFFUXNTVUZCU1dsR0xFZEJSVWhxUXl4TFFVbFllRVFzVFVGQlRYVkhMRlZCUVZWb1FpeEpRVUZOZGtZc1RVRkJUWFZITEZWQlFXdENMRTlCV1RsRGNrY3NVVUZCVVRCTExFbEJRVTBzUlVGQlEzUkxMRVZCUVV0clJpeEZRVUZOUXl4TFFVTjRRaXhOUVVGTmFrTXNSVUZCVFhSRUxGRkJRVkVzVFVGQlQwa3NSMEZKTTBJc1RVRklTU3h0UWtGQmNVSnJSaXhKUVVGUFF5eEZRVUZMUkN4RlFVRlJRU3hGUVVGUExFMUJRMmhFUVN4SFFVRk5hRU1zUlVGQlNUaEVMRTFCUVUwNVFpeEhRVU5vUWtNc1IwRkJTV3BETEVWQlFVbG9SQ3hKUVVGSmFVWXNSMEZEVkdwRExFbEJZVlIwUkN4UlFVRlJNa3NzUzBGQlR5eEZRVUZEZGtzc1JVRkJTMnRHTEVWQlFVMURMRXRCUTNwQ0xFMUJRVTFxUXl4RlFVRk5kRVFzVVVGQlVTeFBRVUZSU1N4SFFVazFRaXhOUVVoSkxHMUNRVUZ4UW10R0xFbEJRVTlETEVWQlFVdEVMRVZCUVZGQkxFVkJRVThzVFVGRGFFUkJMRWRCUVUxb1F5eEZRVUZKT0VRc1RVRkJUVGxDTEVkQlEyaENReXhIUVVGSmFrTXNSVUZCU1doRUxFbEJRVWxwUml4SFFVTlVha01zU1VGaFZIUkVMRkZCUVZGblNDeFJRVUZWTEVWQlFVTTFSeXhGUVVGTGEwWXNSVUZCVFVNc1MwRkROVUlzVFVGQlRXcERMRVZCUVUxMFJDeFJRVUZSTEZWQlFWZEpMRWRCU1M5Q0xFMUJTRWtzYlVKQlFYRkNhMFlzU1VGQlQwTXNSVUZCUzBRc1JVRkJVVUVzUlVGQlR5eE5RVU5vUkVFc1IwRkJUV2hETEVWQlFVbHJReXhMUVVGTFJpeEhRVU5tUXl4SFFVRkpha01zUlVGQlNXaEVMRWxCUVVscFJpeEhRVU5VYWtNc1NVRnhRbFIwUkN4UlFVRmhMRWxCUVVseFJpeEpRVU5xUW5KR0xGRkJRV2RDTEU5QlFVbHhSaXhKUVZsd1FuSkdMRkZCUVZFMFN5eE5RVUZSTEVWQlFVTjRTeXhGUVVGTGEwWXNSVUZCVFVNc1MwRkRNVUlzVFVGQlRXcERMRVZCUVUxMFJDeFJRVUZSTEZGQlFWTkpMRWRCU1RkQ0xFMUJTRWtzYlVKQlFYRkNhMFlzU1VGQlQwTXNSVUZCUzBRc1JVRkJVVUVzUlVGQlR5eE5RVU5vUkVFc1IwRkJUV2hETEVWQlFVbHJReXhMUVVGTFJpeEhRVU5tUXl4SFFVRkpha01zUlVGQlNXaEVMRWxCUVVscFJpeEhRVU5VYWtNc1NVRmhWSFJFTEZGQlFWRTJTeXhMUVVGUExFVkJRVU42U3l4RlFVRkxhMFlzUlVGQlRVTXNTMEZEZWtJc1RVRkJUV3BETEVWQlFVMTBSQ3hSUVVGUkxFOUJRVkZKTEVkQlNUVkNMRTFCU0Vrc2JVSkJRWEZDYTBZc1NVRkJUME1zUlVGQlMwUXNSVUZCVVVFc1JVRkJUeXhOUVVOb1JFRXNSMEZCVFdoRExFVkJRVWxyUXl4TFFVRkxSaXhIUVVObVF5eEhRVUZKYWtNc1JVRkJTV2hFTEVsQlFVbHBSaXhIUVVOVWFrTXNTVUZoVkhSRUxGRkJRVkU0U3l4SlFVRk5MRVZCUVVNeFN5eEZRVUZMYTBZc1JVRkJUVU1zUzBGRGVFSXNUVUZCVFdwRExFVkJRVTEwUkN4UlFVRlJMRTFCUVU5SkxFZEJTVE5DTEUxQlNFa3NiVUpCUVhGQ2EwWXNTVUZCVDBNc1JVRkJTMFFzUlVGQlVVRXNSVUZCVHl4TlFVTm9SRUVzUjBGQlRXaERMRVZCUVVsclF5eExRVUZMUml4SFFVTm1ReXhIUVVGSmFrTXNSVUZCU1doRUxFbEJRVWxwUml4SFFVTlVha01pTENKbWFXeGxJam9pUlRwY1hGZHZjbXR6Y0dGalpWeGNkMmxyYVdFdGFYTXRZVzV6ZDJWeVpXUmNYRzV2WkdWZmJXOWtkV3hsYzF4Y2MzVndaWEpoWjJWdWRGeGNiR2xpWEZ4amJHbGxiblF1YW5NaWZRPT0iLCJcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiBpc09iamVjdCh0KXtyZXR1cm4gbnVsbCE9PXQmJlwib2JqZWN0XCI9PXR5cGVvZiB0fW1vZHVsZS5leHBvcnRzPWlzT2JqZWN0O1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0p6YjNWeVkyVnpJanBiSW1sekxXOWlhbVZqZEM1cWN5SmRMQ0p1WVcxbGN5STZXeUpwYzA5aWFtVmpkQ0lzSW05aWFpSXNJbTF2WkhWc1pTSXNJbVY0Y0c5eWRITWlYU3dpYldGd2NHbHVaM01pT2lKQlFVRkJMR0ZCVlVFc1UwRkJVMEVzVTBGQlUwTXNSMEZEYUVJc1QwRkJUeXhQUVVGVFFTeEhRVUZQTEdsQ1FVRnZRa0VzUlVGSE4wTkRMRTlCUVU5RExGRkJRVlZJSWl3aVptbHNaU0k2SWtVNlhGeFhiM0pyYzNCaFkyVmNYSGRwYTJsaExXbHpMV0Z1YzNkbGNtVmtYRnh1YjJSbFgyMXZaSFZzWlhOY1hITjFjR1Z5WVdkbGJuUmNYR3hwWWx4Y2FYTXRiMkpxWldOMExtcHpJbjA9IiwiXCJ1c2Ugc3RyaWN0XCI7Y29uc3QgaXNPYmplY3Q9cmVxdWlyZShcIi4vaXMtb2JqZWN0XCIpO2Z1bmN0aW9uIFJlcXVlc3RCYXNlKHQpe2lmKHQpcmV0dXJuIG1peGluKHQpfWZ1bmN0aW9uIG1peGluKHQpe2Zvcihjb25zdCBlIGluIFJlcXVlc3RCYXNlLnByb3RvdHlwZSl0W2VdPVJlcXVlc3RCYXNlLnByb3RvdHlwZVtlXTtyZXR1cm4gdH1tb2R1bGUuZXhwb3J0cz1SZXF1ZXN0QmFzZSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUuY2xlYXJUaW1lb3V0PWZ1bmN0aW9uKCl7cmV0dXJuIGNsZWFyVGltZW91dCh0aGlzLl90aW1lciksY2xlYXJUaW1lb3V0KHRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyKSxkZWxldGUgdGhpcy5fdGltZXIsZGVsZXRlIHRoaXMuX3Jlc3BvbnNlVGltZW91dFRpbWVyLHRoaXN9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyc2VyPXQsdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLnJlc3BvbnNlVHlwZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcmVzcG9uc2VUeXBlPXQsdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLnNlcmlhbGl6ZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fc2VyaWFsaXplcj10LHRoaXN9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS50aW1lb3V0PWZ1bmN0aW9uKHQpe2lmKCF0fHxcIm9iamVjdFwiIT10eXBlb2YgdClyZXR1cm4gdGhpcy5fdGltZW91dD10LHRoaXMuX3Jlc3BvbnNlVGltZW91dD0wLHRoaXM7Zm9yKGNvbnN0IGUgaW4gdClzd2l0Y2goZSl7Y2FzZVwiZGVhZGxpbmVcIjp0aGlzLl90aW1lb3V0PXQuZGVhZGxpbmU7YnJlYWs7Y2FzZVwicmVzcG9uc2VcIjp0aGlzLl9yZXNwb25zZVRpbWVvdXQ9dC5yZXNwb25zZTticmVhaztkZWZhdWx0OmNvbnNvbGUud2FybihcIlVua25vd24gdGltZW91dCBvcHRpb25cIixlKX1yZXR1cm4gdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLnJldHJ5PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIDAhPT1hcmd1bWVudHMubGVuZ3RoJiYhMCE9PXR8fCh0PTEpLHQ8PTAmJih0PTApLHRoaXMuX21heFJldHJpZXM9dCx0aGlzLl9yZXRyaWVzPTAsdGhpcy5fcmV0cnlDYWxsYmFjaz1lLHRoaXN9O2NvbnN0IEVSUk9SX0NPREVTPVtcIkVDT05OUkVTRVRcIixcIkVUSU1FRE9VVFwiLFwiRUFERFJJTkZPXCIsXCJFU09DS0VUVElNRURPVVRcIl07UmVxdWVzdEJhc2UucHJvdG90eXBlLl9zaG91bGRSZXRyeT1mdW5jdGlvbih0LGUpe2lmKCF0aGlzLl9tYXhSZXRyaWVzfHx0aGlzLl9yZXRyaWVzKys+PXRoaXMuX21heFJldHJpZXMpcmV0dXJuITE7aWYodGhpcy5fcmV0cnlDYWxsYmFjayl0cnl7Y29uc3Qgcz10aGlzLl9yZXRyeUNhbGxiYWNrKHQsZSk7aWYoITA9PT1zKXJldHVybiEwO2lmKCExPT09cylyZXR1cm4hMX1jYXRjaCh0KXtjb25zb2xlLmVycm9yKHQpfWlmKGUmJmUuc3RhdHVzJiZlLnN0YXR1cz49NTAwJiY1MDEhPWUuc3RhdHVzKXJldHVybiEwO2lmKHQpe2lmKHQuY29kZSYmfkVSUk9SX0NPREVTLmluZGV4T2YodC5jb2RlKSlyZXR1cm4hMDtpZih0LnRpbWVvdXQmJlwiRUNPTk5BQk9SVEVEXCI9PXQuY29kZSlyZXR1cm4hMDtpZih0LmNyb3NzRG9tYWluKXJldHVybiEwfXJldHVybiExfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUuX3JldHJ5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xlYXJUaW1lb3V0KCksdGhpcy5yZXEmJih0aGlzLnJlcT1udWxsLHRoaXMucmVxPXRoaXMucmVxdWVzdCgpKSx0aGlzLl9hYm9ydGVkPSExLHRoaXMudGltZWRvdXQ9ITEsdGhpcy5fZW5kKCl9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuX2Z1bGxmaWxsZWRQcm9taXNlKXtjb25zdCB0PXRoaXM7dGhpcy5fZW5kQ2FsbGVkJiZjb25zb2xlLndhcm4oXCJXYXJuaW5nOiBzdXBlcmFnZW50IHJlcXVlc3Qgd2FzIHNlbnQgdHdpY2UsIGJlY2F1c2UgYm90aCAuZW5kKCkgYW5kIC50aGVuKCkgd2VyZSBjYWxsZWQuIE5ldmVyIGNhbGwgLmVuZCgpIGlmIHlvdSB1c2UgcHJvbWlzZXNcIiksdGhpcy5fZnVsbGZpbGxlZFByb21pc2U9bmV3IFByb21pc2UoKGUscyk9Pnt0Lm9uKFwiZXJyb3JcIixzKSx0Lm9uKFwiYWJvcnRcIiwoKT0+e2NvbnN0IHQ9bmV3IEVycm9yKFwiQWJvcnRlZFwiKTt0LmNvZGU9XCJBQk9SVEVEXCIsdC5zdGF0dXM9dGhpcy5zdGF0dXMsdC5tZXRob2Q9dGhpcy5tZXRob2QsdC51cmw9dGhpcy51cmwscyh0KX0pLHQuZW5kKCh0LGkpPT57dD9zKHQpOmUoaSl9KX0pfXJldHVybiB0aGlzLl9mdWxsZmlsbGVkUHJvbWlzZS50aGVuKHQsZSl9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5jYXRjaD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCx0KX0sUmVxdWVzdEJhc2UucHJvdG90eXBlLnVzZT1mdW5jdGlvbih0KXtyZXR1cm4gdCh0aGlzKSx0aGlzfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUub2s9ZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBFcnJvcihcIkNhbGxiYWNrIHJlcXVpcmVkXCIpO3JldHVybiB0aGlzLl9va0NhbGxiYWNrPXQsdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLl9pc1Jlc3BvbnNlT0s9ZnVuY3Rpb24odCl7cmV0dXJuISF0JiYodGhpcy5fb2tDYWxsYmFjaz90aGlzLl9va0NhbGxiYWNrKHQpOnQuc3RhdHVzPj0yMDAmJnQuc3RhdHVzPDMwMCl9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2hlYWRlclt0LnRvTG93ZXJDYXNlKCldfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUuZ2V0SGVhZGVyPVJlcXVlc3RCYXNlLnByb3RvdHlwZS5nZXQsUmVxdWVzdEJhc2UucHJvdG90eXBlLnNldD1mdW5jdGlvbih0LGUpe2lmKGlzT2JqZWN0KHQpKXtmb3IoY29uc3QgZSBpbiB0KXRoaXMuc2V0KGUsdFtlXSk7cmV0dXJuIHRoaXN9cmV0dXJuIHRoaXMuX2hlYWRlclt0LnRvTG93ZXJDYXNlKCldPWUsdGhpcy5oZWFkZXJbdF09ZSx0aGlzfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUudW5zZXQ9ZnVuY3Rpb24odCl7cmV0dXJuIGRlbGV0ZSB0aGlzLl9oZWFkZXJbdC50b0xvd2VyQ2FzZSgpXSxkZWxldGUgdGhpcy5oZWFkZXJbdF0sdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLmZpZWxkPWZ1bmN0aW9uKHQsZSl7aWYobnVsbD09dCl0aHJvdyBuZXcgRXJyb3IoXCIuZmllbGQobmFtZSwgdmFsKSBuYW1lIGNhbiBub3QgYmUgZW1wdHlcIik7aWYodGhpcy5fZGF0YSl0aHJvdyBuZXcgRXJyb3IoXCIuZmllbGQoKSBjYW4ndCBiZSB1c2VkIGlmIC5zZW5kKCkgaXMgdXNlZC4gUGxlYXNlIHVzZSBvbmx5IC5zZW5kKCkgb3Igb25seSAuZmllbGQoKSAmIC5hdHRhY2goKVwiKTtpZihpc09iamVjdCh0KSl7Zm9yKGNvbnN0IGUgaW4gdCl0aGlzLmZpZWxkKGUsdFtlXSk7cmV0dXJuIHRoaXN9aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKGNvbnN0IHMgaW4gZSl0aGlzLmZpZWxkKHQsZVtzXSk7cmV0dXJuIHRoaXN9aWYobnVsbD09ZSl0aHJvdyBuZXcgRXJyb3IoXCIuZmllbGQobmFtZSwgdmFsKSB2YWwgY2FuIG5vdCBiZSBlbXB0eVwiKTtyZXR1cm5cImJvb2xlYW5cIj09dHlwZW9mIGUmJihlPVwiXCIrZSksdGhpcy5fZ2V0Rm9ybURhdGEoKS5hcHBlbmQodCxlKSx0aGlzfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUuYWJvcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYWJvcnRlZD90aGlzOih0aGlzLl9hYm9ydGVkPSEwLHRoaXMueGhyJiZ0aGlzLnhoci5hYm9ydCgpLHRoaXMucmVxJiZ0aGlzLnJlcS5hYm9ydCgpLHRoaXMuY2xlYXJUaW1lb3V0KCksdGhpcy5lbWl0KFwiYWJvcnRcIiksdGhpcyl9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5fYXV0aD1mdW5jdGlvbih0LGUscyxpKXtzd2l0Y2gocy50eXBlKXtjYXNlXCJiYXNpY1wiOnRoaXMuc2V0KFwiQXV0aG9yaXphdGlvblwiLGBCYXNpYyAke2koYCR7dH06JHtlfWApfWApO2JyZWFrO2Nhc2VcImF1dG9cIjp0aGlzLnVzZXJuYW1lPXQsdGhpcy5wYXNzd29yZD1lO2JyZWFrO2Nhc2VcImJlYXJlclwiOnRoaXMuc2V0KFwiQXV0aG9yaXphdGlvblwiLGBCZWFyZXIgJHt0fWApfXJldHVybiB0aGlzfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUud2l0aENyZWRlbnRpYWxzPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsPT10JiYodD0hMCksdGhpcy5fd2l0aENyZWRlbnRpYWxzPXQsdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLnJlZGlyZWN0cz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fbWF4UmVkaXJlY3RzPXQsdGhpc30sUmVxdWVzdEJhc2UucHJvdG90eXBlLm1heFJlc3BvbnNlU2l6ZT1mdW5jdGlvbih0KXtpZihcIm51bWJlclwiIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IoXCJJbnZhbGlkIGFyZ3VtZW50XCIpO3JldHVybiB0aGlzLl9tYXhSZXNwb25zZVNpemU9dCx0aGlzfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJue21ldGhvZDp0aGlzLm1ldGhvZCx1cmw6dGhpcy51cmwsZGF0YTp0aGlzLl9kYXRhLGhlYWRlcnM6dGhpcy5faGVhZGVyfX0sUmVxdWVzdEJhc2UucHJvdG90eXBlLnNlbmQ9ZnVuY3Rpb24odCl7Y29uc3QgZT1pc09iamVjdCh0KTtsZXQgcz10aGlzLl9oZWFkZXJbXCJjb250ZW50LXR5cGVcIl07aWYodGhpcy5fZm9ybURhdGEpdGhyb3cgbmV3IEVycm9yKFwiLnNlbmQoKSBjYW4ndCBiZSB1c2VkIGlmIC5hdHRhY2goKSBvciAuZmllbGQoKSBpcyB1c2VkLiBQbGVhc2UgdXNlIG9ubHkgLnNlbmQoKSBvciBvbmx5IC5maWVsZCgpICYgLmF0dGFjaCgpXCIpO2lmKGUmJiF0aGlzLl9kYXRhKUFycmF5LmlzQXJyYXkodCk/dGhpcy5fZGF0YT1bXTp0aGlzLl9pc0hvc3QodCl8fCh0aGlzLl9kYXRhPXt9KTtlbHNlIGlmKHQmJnRoaXMuX2RhdGEmJnRoaXMuX2lzSG9zdCh0aGlzLl9kYXRhKSl0aHJvdyBFcnJvcihcIkNhbid0IG1lcmdlIHRoZXNlIHNlbmQgY2FsbHNcIik7aWYoZSYmaXNPYmplY3QodGhpcy5fZGF0YSkpZm9yKGNvbnN0IGUgaW4gdCl0aGlzLl9kYXRhW2VdPXRbZV07ZWxzZVwic3RyaW5nXCI9PXR5cGVvZiB0PyhzfHx0aGlzLnR5cGUoXCJmb3JtXCIpLHM9dGhpcy5faGVhZGVyW1wiY29udGVudC10eXBlXCJdLHRoaXMuX2RhdGE9XCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIj09cz90aGlzLl9kYXRhP2Ake3RoaXMuX2RhdGF9JiR7dH1gOnQ6KHRoaXMuX2RhdGF8fFwiXCIpK3QpOnRoaXMuX2RhdGE9dDtyZXR1cm4hZXx8dGhpcy5faXNIb3N0KHQpP3RoaXM6KHN8fHRoaXMudHlwZShcImpzb25cIiksdGhpcyl9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5zb3J0UXVlcnk9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX3NvcnQ9dm9pZCAwPT09dHx8dCx0aGlzfSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUuX2ZpbmFsaXplUXVlcnlTdHJpbmc9ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXMuX3F1ZXJ5LmpvaW4oXCImXCIpO2lmKHQmJih0aGlzLnVybCs9KHRoaXMudXJsLmluZGV4T2YoXCI/XCIpPj0wP1wiJlwiOlwiP1wiKSt0KSx0aGlzLl9xdWVyeS5sZW5ndGg9MCx0aGlzLl9zb3J0KXtjb25zdCB0PXRoaXMudXJsLmluZGV4T2YoXCI/XCIpO2lmKHQ+PTApe2NvbnN0IGU9dGhpcy51cmwuc3Vic3RyaW5nKHQrMSkuc3BsaXQoXCImXCIpO1wiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMuX3NvcnQ/ZS5zb3J0KHRoaXMuX3NvcnQpOmUuc29ydCgpLHRoaXMudXJsPXRoaXMudXJsLnN1YnN0cmluZygwLHQpK1wiP1wiK2Uuam9pbihcIiZcIil9fX0sUmVxdWVzdEJhc2UucHJvdG90eXBlLl9hcHBlbmRRdWVyeVN0cmluZz0oKCk9Pntjb25zb2xlLnRyYWNlKFwiVW5zdXBwb3J0ZWRcIil9KSxSZXF1ZXN0QmFzZS5wcm90b3R5cGUuX3RpbWVvdXRFcnJvcj1mdW5jdGlvbih0LGUscyl7aWYodGhpcy5fYWJvcnRlZClyZXR1cm47Y29uc3QgaT1uZXcgRXJyb3IoYCR7dCtlfW1zIGV4Y2VlZGVkYCk7aS50aW1lb3V0PWUsaS5jb2RlPVwiRUNPTk5BQk9SVEVEXCIsaS5lcnJubz1zLHRoaXMudGltZWRvdXQ9ITAsdGhpcy5hYm9ydCgpLHRoaXMuY2FsbGJhY2soaSl9LFJlcXVlc3RCYXNlLnByb3RvdHlwZS5fc2V0VGltZW91dHM9ZnVuY3Rpb24oKXtjb25zdCB0PXRoaXM7dGhpcy5fdGltZW91dCYmIXRoaXMuX3RpbWVyJiYodGhpcy5fdGltZXI9c2V0VGltZW91dCgoKT0+e3QuX3RpbWVvdXRFcnJvcihcIlRpbWVvdXQgb2YgXCIsdC5fdGltZW91dCxcIkVUSU1FXCIpfSx0aGlzLl90aW1lb3V0KSksdGhpcy5fcmVzcG9uc2VUaW1lb3V0JiYhdGhpcy5fcmVzcG9uc2VUaW1lb3V0VGltZXImJih0aGlzLl9yZXNwb25zZVRpbWVvdXRUaW1lcj1zZXRUaW1lb3V0KCgpPT57dC5fdGltZW91dEVycm9yKFwiUmVzcG9uc2UgdGltZW91dCBvZiBcIix0Ll9yZXNwb25zZVRpbWVvdXQsXCJFVElNRURPVVRcIil9LHRoaXMuX3Jlc3BvbnNlVGltZW91dCkpfTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkluSmxjWFZsYzNRdFltRnpaUzVxY3lKZExDSnVZVzFsY3lJNld5SnBjMDlpYW1WamRDSXNJbkpsY1hWcGNtVWlMQ0pTWlhGMVpYTjBRbUZ6WlNJc0ltOWlhaUlzSW0xcGVHbHVJaXdpYTJWNUlpd2ljSEp2ZEc5MGVYQmxJaXdpYlc5a2RXeGxJaXdpWlhod2IzSjBjeUlzSW1Oc1pXRnlWR2x0Wlc5MWRDSXNJblJvYVhNaUxDSmZkR2x0WlhJaUxDSmZjbVZ6Y0c5dWMyVlVhVzFsYjNWMFZHbHRaWElpTENKd1lYSnpaU0lzSW1adUlpd2lYM0JoY25ObGNpSXNJbkpsYzNCdmJuTmxWSGx3WlNJc0luWmhiQ0lzSWw5eVpYTndiMjV6WlZSNWNHVWlMQ0p6WlhKcFlXeHBlbVVpTENKZmMyVnlhV0ZzYVhwbGNpSXNJblJwYldWdmRYUWlMQ0p2Y0hScGIyNXpJaXdpWDNScGJXVnZkWFFpTENKZmNtVnpjRzl1YzJWVWFXMWxiM1YwSWl3aWIzQjBhVzl1SWl3aVpHVmhaR3hwYm1VaUxDSnlaWE53YjI1elpTSXNJbU52Ym5OdmJHVWlMQ0ozWVhKdUlpd2ljbVYwY25raUxDSmpiM1Z1ZENJc0ltRnlaM1Z0Wlc1MGN5SXNJbXhsYm1kMGFDSXNJbDl0WVhoU1pYUnlhV1Z6SWl3aVgzSmxkSEpwWlhNaUxDSmZjbVYwY25sRFlXeHNZbUZqYXlJc0lrVlNVazlTWDBOUFJFVlRJaXdpWDNOb2IzVnNaRkpsZEhKNUlpd2laWEp5SWl3aWNtVnpJaXdpYjNabGNuSnBaR1VpTENKbElpd2laWEp5YjNJaUxDSnpkR0YwZFhNaUxDSmpiMlJsSWl3aWFXNWtaWGhQWmlJc0ltTnliM056Ukc5dFlXbHVJaXdpWDNKbGRISjVJaXdpY21WeElpd2ljbVZ4ZFdWemRDSXNJbDloWW05eWRHVmtJaXdpZEdsdFpXUnZkWFFpTENKZlpXNWtJaXdpZEdobGJpSXNJbkpsYzI5c2RtVWlMQ0p5WldwbFkzUWlMQ0pmWm5Wc2JHWnBiR3hsWkZCeWIyMXBjMlVpTENKelpXeG1JaXdpWDJWdVpFTmhiR3hsWkNJc0lsQnliMjFwYzJVaUxDSnBibTVsY2xKbGMyOXNkbVVpTENKcGJtNWxjbEpsYW1WamRDSXNJbTl1SWl3aVJYSnliM0lpTENKdFpYUm9iMlFpTENKMWNtd2lMQ0psYm1RaUxDSmpZaUlzSW5WdVpHVm1hVzVsWkNJc0luVnpaU0lzSW05cklpd2lYMjlyUTJGc2JHSmhZMnNpTENKZmFYTlNaWE53YjI1elpVOUxJaXdpWjJWMElpd2labWxsYkdRaUxDSmZhR1ZoWkdWeUlpd2lkRzlNYjNkbGNrTmhjMlVpTENKblpYUklaV0ZrWlhJaUxDSnpaWFFpTENKb1pXRmtaWElpTENKMWJuTmxkQ0lzSW01aGJXVWlMQ0pmWkdGMFlTSXNJa0Z5Y21GNUlpd2lhWE5CY25KaGVTSXNJbWtpTENKZloyVjBSbTl5YlVSaGRHRWlMQ0poY0hCbGJtUWlMQ0poWW05eWRDSXNJbmhvY2lJc0ltVnRhWFFpTENKZllYVjBhQ0lzSW5WelpYSWlMQ0p3WVhOeklpd2lZbUZ6WlRZMFJXNWpiMlJsY2lJc0luUjVjR1VpTENKMWMyVnlibUZ0WlNJc0luQmhjM04zYjNKa0lpd2lkMmwwYUVOeVpXUmxiblJwWVd4eklpd2lYM2RwZEdoRGNtVmtaVzUwYVdGc2N5SXNJbkpsWkdseVpXTjBjeUlzSW00aUxDSmZiV0Y0VW1Wa2FYSmxZM1J6SWl3aWJXRjRVbVZ6Y0c5dWMyVlRhWHBsSWl3aVZIbHdaVVZ5Y205eUlpd2lYMjFoZUZKbGMzQnZibk5sVTJsNlpTSXNJblJ2U2xOUFRpSXNJbVJoZEdFaUxDSm9aV0ZrWlhKeklpd2ljMlZ1WkNJc0ltbHpUMkpxSWl3aVgyWnZjbTFFWVhSaElpd2lYMmx6U0c5emRDSXNJbk52Y25SUmRXVnllU0lzSW5OdmNuUWlMQ0pmYzI5eWRDSXNJbDltYVc1aGJHbDZaVkYxWlhKNVUzUnlhVzVuSWl3aWNYVmxjbmtpTENKZmNYVmxjbmtpTENKcWIybHVJaXdpYVc1a1pYZ2lMQ0p4ZFdWeWVVRnljaUlzSW5OMVluTjBjbWx1WnlJc0luTndiR2wwSWl3aVgyRndjR1Z1WkZGMVpYSjVVM1J5YVc1bklpd2lkSEpoWTJVaUxDSmZkR2x0Wlc5MWRFVnljbTl5SWl3aWNtVmhjMjl1SWl3aVpYSnlibThpTENKallXeHNZbUZqYXlJc0lsOXpaWFJVYVcxbGIzVjBjeUlzSW5ObGRGUnBiV1Z2ZFhRaVhTd2liV0Z3Y0dsdVozTWlPaUpCUVVGQkxHRkJTMEVzVFVGQlRVRXNVMEZCVjBNc1VVRkJVU3hsUVdONlFpeFRRVUZUUXl4WlFVRlpReXhIUVVOdVFpeEhRVUZKUVN4RlFVRkxMRTlCUVU5RExFMUJRVTFFTEVkQlYzaENMRk5CUVZORExFMUJRVTFFTEVkQlEySXNTVUZCU3l4TlFVRk5SU3hMUVVGUFNDeFpRVUZaU1N4VlFVTTFRa2dzUlVGQlNVVXNSMEZCVDBnc1dVRkJXVWtzVlVGQlZVUXNSMEZGYmtNc1QwRkJUMFlzUlVGNFFsUkpMRTlCUVU5RExGRkJRVlZPTEZsQmEwTnFRa0VzV1VGQldVa3NWVUZCVlVjc1lVRkJaU3hYUVV0dVF5eFBRVXBCUVN4aFFVRmhReXhMUVVGTFF5eFJRVU5zUWtZc1lVRkJZVU1zUzBGQlMwVXNPRUpCUTFoR0xFdEJRVXRETEdOQlEweEVMRXRCUVV0RkxITkNRVU5NUml4TlFWbFVVaXhaUVVGWlNTeFZRVUZWVHl4TlFVRlJMRk5CUVdWRExFZEJSVE5ETEU5QlJFRktMRXRCUVV0TExGRkJRVlZFTEVWQlExSktMRTFCY1VKVVVpeFpRVUZaU1N4VlFVRlZWU3hoUVVGbExGTkJRVk5ETEVkQlJUVkRMRTlCUkVGUUxFdEJRVXRSTEdOQlFXZENSQ3hGUVVOa1VDeE5RVmxVVWl4WlFVRlpTU3hWUVVGVllTeFZRVUZaTEZOQlFXMUNUQ3hIUVVWdVJDeFBRVVJCU2l4TFFVRkxWU3haUVVGalRpeEZRVU5hU2l4TlFXZENWRklzV1VGQldVa3NWVUZCVldVc1VVRkJWU3hUUVVGcFFrTXNSMEZETDBNc1NVRkJTMEVzUjBGQlZ5eHBRa0ZCYjBKQkxFVkJSMnhETEU5QlJrRmFMRXRCUVV0aExGTkJRVmRFTEVWQlEyaENXaXhMUVVGTFl5eHBRa0ZCYlVJc1JVRkRha0prTEV0QlIxUXNTVUZCU1N4TlFVRk5aU3hMUVVGVlNDeEZRVU5zUWl4UFFVRlBSeXhIUVVOTUxFbEJRVXNzVjBGRFNHWXNTMEZCUzJFc1UwRkJWMFFzUlVGQlVVa3NVMEZEZUVJc1RVRkRSaXhKUVVGTExGZEJRMGhvUWl4TFFVRkxZeXhwUWtGQmJVSkdMRVZCUVZGTExGTkJRMmhETEUxQlEwWXNVVUZEUlVNc1VVRkJVVU1zUzBGQlN5eDVRa0ZCTUVKS0xFZEJSemRETEU5QlFVOW1MRTFCWTFSU0xGbEJRVmxKTEZWQlFWVjNRaXhOUVVGUkxGTkJRV1ZETEVWQlFVOXFRaXhIUVU5c1JDeFBRVXg1UWl4SlFVRnlRbXRDTEZWQlFWVkRMRk5CUVRCQ0xFbEJRVlpHTEVsQlFXZENRU3hGUVVGUkxFZEJRMnhFUVN4SFFVRlRMRWxCUVVkQkxFVkJRVkVzUjBGRGVFSnlRaXhMUVVGTGQwSXNXVUZCWTBnc1JVRkRia0p5UWl4TFFVRkxlVUlzVTBGQlZ5eEZRVU5vUW5wQ0xFdEJRVXN3UWl4bFFVRnBRblJDTEVWQlEyWktMRTFCUjFRc1RVRkJUVEpDTEZsQlFXTXNRMEZEYkVJc1lVRkRRU3haUVVOQkxGbEJRMEVzYlVKQlYwWnVReXhaUVVGWlNTeFZRVUZWWjBNc1lVRkJaU3hUUVVGVFF5eEZRVUZMUXl4SFFVTnFSQ3hKUVVGTE9VSXNTMEZCUzNkQ0xHRkJRV1Y0UWl4TFFVRkxlVUlzV1VGQlkzcENMRXRCUVV0M1FpeFpRVU12UXl4UFFVRlBMRVZCUlZRc1IwRkJTWGhDTEV0QlFVc3dRaXhsUVVOUUxFbEJRMFVzVFVGQlRVc3NSVUZCVnk5Q0xFdEJRVXN3UWl4bFFVRmxSeXhGUVVGTFF5eEhRVU14UXl4SlFVRnBRaXhKUVVGaVF5eEZRVUZ0UWl4UFFVRlBMRVZCUXpsQ0xFbEJRV2xDTEVsQlFXSkJMRVZCUVc5Q0xFOUJRVThzUlVGRkwwSXNUVUZCVFVNc1IwRkRUbVFzVVVGQlVXVXNUVUZCVFVRc1IwRkhiRUlzUjBGQlNVWXNSMEZCVDBFc1JVRkJTVWtzVVVGQlZVb3NSVUZCU1Vrc1VVRkJWU3hMUVVGeFFpeExRVUZrU2l4RlFVRkpTU3hQUVVGbExFOUJRVThzUlVGRGVFVXNSMEZCU1V3c1JVRkJTeXhEUVVOUUxFZEJRVWxCTEVWQlFVbE5MRTlCUVZOU0xGbEJRVmxUTEZGQlFWRlFMRVZCUVVsTkxFMUJRVThzVDBGQlR5eEZRVVYyUkN4SFFVRkpUaXhGUVVGSmJFSXNVMEZCZFVJc1owSkJRVnByUWl4RlFVRkpUU3hMUVVGM1FpeFBRVUZQTEVWQlEzUkVMRWRCUVVsT0xFVkJRVWxSTEZsQlFXRXNUMEZCVHl4RlFVVTVRaXhQUVVGUExFZEJWVlEzUXl4WlFVRlpTU3hWUVVGVk1FTXNUMEZCVXl4WFFXRTNRaXhQUVZoQmRFTXNTMEZCUzBRc1pVRkhSRU1zUzBGQlMzVkRMRTFCUTFCMlF5eExRVUZMZFVNc1NVRkJUU3hMUVVOWWRrTXNTMEZCUzNWRExFbEJRVTEyUXl4TFFVRkxkME1zVjBGSGJFSjRReXhMUVVGTGVVTXNWVUZCVnl4RlFVTm9RbnBETEV0QlFVc3dReXhWUVVGWExFVkJSVlF4UXl4TFFVRkxNa01zVVVGWFpHNUVMRmxCUVZsSkxGVkJRVlZuUkN4TFFVRlBMRk5CUVdORExFVkJRVk5ETEVkQlEyeEVMRWxCUVVzNVF5eExRVUZMSzBNc2JVSkJRVzlDTEVOQlF6VkNMRTFCUVUxRExFVkJRVTlvUkN4TFFVTlVRU3hMUVVGTGFVUXNXVUZEVUM5Q0xGRkJRVkZETEV0QlFVc3NhMGxCUldadVFpeExRVUZMSzBNc2JVSkJRWEZDTEVsQlFVbEhMRkZCUVZFc1EwRkJRME1zUlVGQlkwTXNTMEZEYmtSS0xFVkJRVXRMTEVkQlFVY3NVVUZCVTBRc1IwRkRha0pLTEVWQlFVdExMRWRCUVVjc1VVRkJVeXhMUVVObUxFMUJRVTE0UWl4RlFVRk5MRWxCUVVsNVFpeE5RVUZOTEZkQlEzUkNla0lzUlVGQlNVMHNTMEZCVHl4VlFVTllUaXhGUVVGSlN5eFBRVUZUYkVNc1MwRkJTMnRETEU5QlEyeENUQ3hGUVVGSk1FSXNUMEZCVTNaRUxFdEJRVXQxUkN4UFFVTnNRakZDTEVWQlFVa3lRaXhKUVVGTmVFUXNTMEZCUzNkRUxFbEJRMlpLTEVWQlFWbDJRaXhMUVVWa2JVSXNSVUZCUzFNc1NVRkJTU3hEUVVGRE5VSXNSVUZCUzBNc1MwRkRWRVFzUlVGQlMzVkNMRVZCUVZsMlFpeEhRVU5vUW5OQ0xFVkJRV0Z5UWl4UFFVbDRRaXhQUVVGUE9VSXNTMEZCU3l0RExHMUNRVUZ0UWtnc1MwRkJTME1zUlVGQlUwTXNTVUZITDBOMFJDeFpRVUZaU1N4VlFVRnBRaXhOUVVGSkxGTkJRVk00UkN4SFFVTjRReXhQUVVGUE1VUXNTMEZCU3pSRExGVkJRVXRsTEVWQlFWZEVMRWxCVHpsQ2JFVXNXVUZCV1Vrc1ZVRkJWV2RGTEVsQlFVMHNVMEZCWVhoRUxFZEJSWFpETEU5QlJFRkJMRVZCUVVkS0xFMUJRMGxCTEUxQlIxUlNMRmxCUVZsSkxGVkJRVlZwUlN4SFFVRkxMRk5CUVZOSUxFZEJRMnhETEVkQlFVa3NiVUpCUVhOQ1FTeEZRVUZKTEUxQlFVMUtMRTFCUVUwc2NVSkJSVEZETEU5QlJFRjBSQ3hMUVVGTE9FUXNXVUZCWTBvc1JVRkRXakZFTEUxQlIxUlNMRmxCUVZsSkxGVkJRVlZ0UlN4alFVRm5RaXhUUVVGVGFrTXNSMEZETjBNc1VVRkJTMEVzU1VGSlJEbENMRXRCUVVzNFJDeFpRVU5CT1VRc1MwRkJTemhFTEZsQlFWbG9ReXhIUVVkdVFrRXNSVUZCU1Vrc1VVRkJWU3hMUVVGUFNpeEZRVUZKU1N4UFFVRlRMRTFCV1RORE1VTXNXVUZCV1Vrc1ZVRkJWVzlGTEVsQlFVMHNVMEZCVTBNc1IwRkRia01zVDBGQlQycEZMRXRCUVV0clJTeFJRVUZSUkN4RlFVRk5SU3huUWtGbE5VSXpSU3haUVVGWlNTeFZRVUZWZDBVc1ZVRkJXVFZGTEZsQlFWbEpMRlZCUVZWdlJTeEpRWFZDZUVSNFJTeFpRVUZaU1N4VlFVRlZlVVVzU1VGQlRTeFRRVUZUU2l4RlFVRlBNVVFzUjBGRE1VTXNSMEZCU1dwQ0xGTkJRVk15UlN4SFFVRlJMRU5CUTI1Q0xFbEJRVXNzVFVGQlRYUkZMRXRCUVU5elJTeEZRVU5vUW1wRkxFdEJRVXR4UlN4SlFVRkpNVVVzUlVGQlMzTkZMRVZCUVUxMFJTeEpRVVYwUWl4UFFVRlBTeXhMUVVsVUxFOUJSa0ZCTEV0QlFVdHJSU3hSUVVGUlJDeEZRVUZOUlN4bFFVRnBRalZFTEVWQlEzQkRVQ3hMUVVGTGMwVXNUMEZCVDB3c1IwRkJVekZFTEVWQlEyUlFMRTFCWlZSU0xGbEJRVmxKTEZWQlFWVXlSU3hOUVVGUkxGTkJRVk5PTEVkQlIzSkRMR05CUms5cVJTeExRVUZMYTBVc1VVRkJVVVFzUlVGQlRVVXNjMEpCUTI1Q2JrVXNTMEZCUzNORkxFOUJRVTlNTEVkQlExcHFSU3hOUVhOQ1ZGSXNXVUZCV1Vrc1ZVRkJWWEZGTEUxQlFWRXNVMEZCVTA4c1JVRkJUV3BGTEVkQlJUTkRMRWRCUVVrc1RVRkJVMmxGTEVWQlExZ3NUVUZCVFN4SlFVRkpiRUlzVFVGQlRTd3lRMEZIYkVJc1IwRkJTWFJFTEV0QlFVdDVSU3hOUVVOUUxFMUJRVTBzU1VGQlNXNUNMRTFCUVUwc2JVZEJSMnhDTEVkQlFVbG9SU3hUUVVGVGEwWXNSMEZCVHl4RFFVTnNRaXhKUVVGTExFMUJRVTAzUlN4TFFVRlBOa1VzUlVGRGFFSjRSU3hMUVVGTGFVVXNUVUZCVFhSRkxFVkJRVXMyUlN4RlFVRkxOMFVzU1VGRmRrSXNUMEZCVDBzc1MwRkhWQ3hIUVVGSk1FVXNUVUZCVFVNc1VVRkJVWEJGTEVkQlFVMHNRMEZEZEVJc1NVRkJTeXhOUVVGTmNVVXNTMEZCUzNKRkxFVkJRMlJRTEV0QlFVdHBSU3hOUVVGTlR5eEZRVUZOYWtVc1JVRkJTWEZGTEVsQlJYWkNMRTlCUVU4MVJTeExRVWxVTEVkQlFVa3NUVUZCVTA4c1JVRkRXQ3hOUVVGTkxFbEJRVWtyUXl4TlFVRk5MREJEUVUxc1FpeE5RVXBKTEd0Q1FVRnhRaTlETEVsQlEzWkNRU3hGUVVGTkxFZEJRVXRCTEVkQlJXSlFMRXRCUVVzMlJTeGxRVUZsUXl4UFFVRlBUaXhGUVVGTmFrVXNSMEZETVVKUUxFMUJVMVJTTEZsQlFWbEpMRlZCUVZWdFJpeE5RVUZSTEZkQlF6VkNMRTlCUVVrdlJTeExRVUZMZVVNc1UwRkRRWHBETEUxQlJWUkJMRXRCUVV0NVF5eFZRVUZYTEVWQlEyaENla01zUzBGQlMyZEdMRXRCUVU5b1JpeExRVUZMWjBZc1NVRkJTVVFzVVVGRGNrSXZSU3hMUVVGTGRVTXNTMEZCVDNaRExFdEJRVXQxUXl4SlFVRkpkME1zVVVGRGNrSXZSU3hMUVVGTFJDeGxRVU5NUXl4TFFVRkxhVVlzUzBGQlN5eFRRVU5JYWtZc1QwRkhWRklzV1VGQldVa3NWVUZCVlhOR0xFMUJRVkVzVTBGQlUwTXNSVUZCVFVNc1JVRkJUWGhGTEVWQlFWTjVSU3hIUVVNeFJDeFBRVUZSZWtVc1JVRkJVVEJGTEUxQlEyUXNTVUZCU3l4UlFVTklkRVlzUzBGQlMzRkZMRWxCUVVrc2VVSkJRVEJDWjBJc1MwRkJhVUpHTEV0QlFWRkRMRkZCUXpWRUxFMUJSVVlzU1VGQlN5eFBRVU5JY0VZc1MwRkJTM1ZHTEZOQlFWZEtMRVZCUTJoQ2JrWXNTMEZCUzNkR0xGTkJRVmRLTEVWQlEyaENMRTFCUlVZc1NVRkJTeXhUUVVOSWNFWXNTMEZCUzNGRkxFbEJRVWtzTUVKQlFUSkNZeXhMUVVkNFF5eFBRVUZQYmtZc1RVRmpWRklzV1VGQldVa3NWVUZCVlRaR0xHZENRVUZyUWl4VFFVRlRjRU1zUjBGSkwwTXNUMEZHVlUwc1RVRkJUazRzU1VGQmFVSkJMRWRCUVVzc1IwRkRNVUp5UkN4TFFVRkxNRVlzYVVKQlFXMUNja01zUlVGRGFrSnlSQ3hOUVZkVVVpeFpRVUZaU1N4VlFVRlZLMFlzVlVGQldTeFRRVUZUUXl4SFFVVjZReXhQUVVSQk5VWXNTMEZCU3paR0xHTkJRV2RDUkN4RlFVTmtOVVlzVFVGVlZGSXNXVUZCV1Vrc1ZVRkJWV3RITEdkQ1FVRnJRaXhUUVVGVFJpeEhRVU12UXl4SFFVRkpMR2xDUVVGdlFrRXNSVUZEZEVJc1RVRkJUVWNzVlVGQlZTeHZRa0ZIYkVJc1QwRkVRUzlHTEV0QlFVdG5SeXhwUWtGQmJVSktMRVZCUTJwQ05VWXNUVUZaVkZJc1dVRkJXVWtzVlVGQlZYRkhMRTlCUVZNc1YwRkROMElzVFVGQlR5eERRVU5NTVVNc1QwRkJVWFpFTEV0QlFVdDFSQ3hQUVVOaVF5eEpRVUZMZUVRc1MwRkJTM2RFTEVsQlExWXdReXhMUVVGTmJFY3NTMEZCUzNsRkxFMUJRMWd3UWl4UlFVRlRia2NzUzBGQlMydEZMRlZCTkVOc1FqRkZMRmxCUVZsSkxGVkJRVlYzUnl4TFFVRlBMRk5CUVZOR0xFZEJRM0JETEUxQlFVMUhMRVZCUVZFdlJ5eFRRVUZUTkVjc1IwRkRka0lzU1VGQlNWb3NSVUZCVDNSR0xFdEJRVXRyUlN4UlFVRlJMR2RDUVVWNFFpeEhRVUZKYkVVc1MwRkJTM05ITEZWQlExQXNUVUZCVFN4SlFVRkphRVFzVFVGQlRTeG5TRUZIYkVJc1IwRkJTU3RETEVsQlFWVnlSeXhMUVVGTGVVVXNUVUZEWWtNc1RVRkJUVU1zVVVGQlVYVkNMRWRCUTJoQ2JFY3NTMEZCUzNsRkxFMUJRVkVzUjBGRFNIcEZMRXRCUVV0MVJ5eFJRVUZSVEN4TFFVTjJRbXhITEV0QlFVdDVSU3hOUVVGUkxGTkJSVllzUjBGQlNYbENMRWRCUVZGc1J5eExRVUZMZVVVc1QwRkJVM3BGTEV0QlFVdDFSeXhSUVVGUmRrY3NTMEZCUzNsRkxFOUJRMnBFTEUxQlFVMXVRaXhOUVVGTkxHZERRVWxrTEVkQlFVa3JReXhIUVVGVEwwY3NVMEZCVTFVc1MwRkJTM2xGTEU5QlEzcENMRWxCUVVzc1RVRkJUVGxGTEV0QlFVOTFSeXhGUVVOb1FteEhMRXRCUVV0NVJTeE5RVUZOT1VVc1IwRkJUM1ZITEVWQlFVdDJSeXhQUVVWb1FpeHBRa0ZCYlVKMVJ5eEhRVVYyUWxvc1IwRkJUWFJHTEV0QlFVdHpSaXhMUVVGTExGRkJRM0pDUVN4RlFVRlBkRVlzUzBGQlMydEZMRkZCUVZFc1owSkJSV3hDYkVVc1MwRkJTM2xGTEUxQlJFZ3NjVU5CUVhWRFlTeEZRVU0xUW5SR0xFdEJRVXQ1UlN4VFFVTllla1VzUzBGQlMzbEZMRk5CUVZONVFpeEpRVU5xUWtFc1IwRkZWV3hITEV0QlFVdDVSU3hQUVVGVExFbEJRVTE1UWl4SFFVZHdRMnhITEV0QlFVdDVSU3hOUVVGUmVVSXNSVUZIWml4UFFVRkxSeXhIUVVGVGNrY3NTMEZCUzNWSExGRkJRVkZNTEVkQlEyeENiRWNzVFVGSlNuTkdMRWRCUVUxMFJpeExRVUZMYzBZc1MwRkJTeXhSUVVOa2RFWXNUMEVyUWxSU0xGbEJRVmxKTEZWQlFWVTBSeXhWUVVGWkxGTkJRVk5ETEVkQlIzcERMRTlCUkVGNlJ5eExRVUZMTUVjc1YwRkJkMElzU1VGQlZFUXNSMEZCT0VKQkxFVkJRek5EZWtjc1RVRlJWRklzV1VGQldVa3NWVUZCVlN0SExIRkNRVUYxUWl4WFFVTXpReXhOUVVGTlF5eEZRVUZSTlVjc1MwRkJTelpITEU5QlFVOURMRXRCUVVzc1MwRk5MMElzUjBGTVNVWXNTVUZEUmpWSExFdEJRVXQzUkN4TlFVRlJlRVFzUzBGQlMzZEVMRWxCUVVsd1FpeFJRVUZSTEUxQlFWRXNSVUZCU1N4SlFVRk5MRXRCUVU5M1JTeEhRVVY2UkRWSExFdEJRVXMyUnl4UFFVRlBkRVlzVDBGQlV5eEZRVVZxUW5aQ0xFdEJRVXN3Unl4TlFVRlBMRU5CUTJRc1RVRkJUVXNzUlVGQlVTOUhMRXRCUVV0M1JDeEpRVUZKY0VJc1VVRkJVU3hMUVVNdlFpeEhRVUZKTWtVc1IwRkJVeXhGUVVGSExFTkJRMlFzVFVGQlRVTXNSVUZCVjJoSUxFdEJRVXQzUkN4SlFVRkplVVFzVlVGQlZVWXNSVUZCVVN4SFFVRkhSeXhOUVVGTkxFdEJRMnBFTEcxQ1FVRnpRbXhJTEV0QlFVc3dSeXhOUVVNM1FrMHNSVUZCVTFBc1MwRkJTM3BITEV0QlFVc3dSeXhQUVVWdVFrMHNSVUZCVTFBc1QwRkZXSHBITEV0QlFVdDNSQ3hKUVVGTmVFUXNTMEZCUzNkRUxFbEJRVWw1UkN4VlFVRlZMRVZCUVVkR0xFZEJRVk1zU1VGQlRVTXNSVUZCVTBZc1MwRkJTeXhSUVUxd1JYUklMRmxCUVZsSkxGVkJRVlYxU0N4dFFrRkJjVUlzVFVGQlQycEhMRkZCUVZGclJ5eE5RVUZOTEdsQ1FWRm9SVFZJTEZsQlFWbEpMRlZCUVZWNVNDeGpRVUZuUWl4VFFVRlRReXhGUVVGUk0wY3NSVUZCVXpSSExFZEJRemxFTEVkQlFVbDJTQ3hMUVVGTGVVTXNVMEZEVUN4UFFVVkdMRTFCUVUxYUxFVkJRVTBzU1VGQlNYbENMRk5CUVZOblJTeEZRVUZUTTBjc1owSkJRMnhEYTBJc1JVRkJTV3hDTEZGQlFWVkJMRVZCUTJSclFpeEZRVUZKVFN4TFFVRlBMR1ZCUTFoT0xFVkJRVWt3Uml4TlFVRlJRU3hGUVVOYWRrZ3NTMEZCU3pCRExGVkJRVmNzUlVGRGFFSXhReXhMUVVGTEswVXNVVUZEVEM5RkxFdEJRVXQzU0N4VFFVRlRNMFlzU1VGSGFFSnlReXhaUVVGWlNTeFZRVUZWTmtnc1lVRkJaU3hYUVVOdVF5eE5RVUZOZWtVc1JVRkJUMmhFTEV0QlIxUkJMRXRCUVV0aExGZEJRV0ZpTEV0QlFVdERMRk5CUTNwQ1JDeExRVUZMUXl4UFFVRlRlVWdzVjBGQlZ5eExRVU4yUWpGRkxFVkJRVXR4UlN4alFVRmpMR05CUVdWeVJTeEZRVUZMYmtNc1UwRkJWU3hWUVVOb1JHSXNTMEZCUzJFc1YwRkhUbUlzUzBGQlMyTXNiVUpCUVhGQ1pDeExRVUZMUlN4M1FrRkRha05HTEV0QlFVdEZMSE5DUVVGM1FuZElMRmRCUVZjc1MwRkRkRU14UlN4RlFVRkxjVVVzWTBGQll5eDFRa0ZCZDBKeVJTeEZRVUZMYkVNc2FVSkJRV3RDTEdOQlEycEZaQ3hMUVVGTFl5SXNJbVpwYkdVaU9pSkZPbHhjVjI5eWEzTndZV05sWEZ4M2FXdHBZUzFwY3kxaGJuTjNaWEpsWkZ4Y2JtOWtaVjl0YjJSMWJHVnpYRnh6ZFhCbGNtRm5aVzUwWEZ4c2FXSmNYSEpsY1hWbGMzUXRZbUZ6WlM1cWN5SjkiLCJcInVzZSBzdHJpY3RcIjtjb25zdCB1dGlscz1yZXF1aXJlKFwiLi91dGlsc1wiKTtmdW5jdGlvbiBSZXNwb25zZUJhc2UodCl7aWYodClyZXR1cm4gbWl4aW4odCl9ZnVuY3Rpb24gbWl4aW4odCl7Zm9yKGNvbnN0IHMgaW4gUmVzcG9uc2VCYXNlLnByb3RvdHlwZSl0W3NdPVJlc3BvbnNlQmFzZS5wcm90b3R5cGVbc107cmV0dXJuIHR9bW9kdWxlLmV4cG9ydHM9UmVzcG9uc2VCYXNlLFJlc3BvbnNlQmFzZS5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhlYWRlclt0LnRvTG93ZXJDYXNlKCldfSxSZXNwb25zZUJhc2UucHJvdG90eXBlLl9zZXRIZWFkZXJQcm9wZXJ0aWVzPWZ1bmN0aW9uKHQpe2NvbnN0IHM9dFtcImNvbnRlbnQtdHlwZVwiXXx8XCJcIjt0aGlzLnR5cGU9dXRpbHMudHlwZShzKTtjb25zdCBlPXV0aWxzLnBhcmFtcyhzKTtmb3IoY29uc3QgdCBpbiBlKXRoaXNbdF09ZVt0XTt0aGlzLmxpbmtzPXt9O3RyeXt0LmxpbmsmJih0aGlzLmxpbmtzPXV0aWxzLnBhcnNlTGlua3ModC5saW5rKSl9Y2F0Y2godCl7fX0sUmVzcG9uc2VCYXNlLnByb3RvdHlwZS5fc2V0U3RhdHVzUHJvcGVydGllcz1mdW5jdGlvbih0KXtjb25zdCBzPXQvMTAwfDA7dGhpcy5zdGF0dXM9dGhpcy5zdGF0dXNDb2RlPXQsdGhpcy5zdGF0dXNUeXBlPXMsdGhpcy5pbmZvPTE9PXMsdGhpcy5vaz0yPT1zLHRoaXMucmVkaXJlY3Q9Mz09cyx0aGlzLmNsaWVudEVycm9yPTQ9PXMsdGhpcy5zZXJ2ZXJFcnJvcj01PT1zLHRoaXMuZXJyb3I9KDQ9PXN8fDU9PXMpJiZ0aGlzLnRvRXJyb3IoKSx0aGlzLmNyZWF0ZWQ9MjAxPT10LHRoaXMuYWNjZXB0ZWQ9MjAyPT10LHRoaXMubm9Db250ZW50PTIwND09dCx0aGlzLmJhZFJlcXVlc3Q9NDAwPT10LHRoaXMudW5hdXRob3JpemVkPTQwMT09dCx0aGlzLm5vdEFjY2VwdGFibGU9NDA2PT10LHRoaXMuZm9yYmlkZGVuPTQwMz09dCx0aGlzLm5vdEZvdW5kPTQwND09dCx0aGlzLnVucHJvY2Vzc2FibGVFbnRpdHk9NDIyPT10fTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkluSmxjM0J2Ym5ObExXSmhjMlV1YW5NaVhTd2libUZ0WlhNaU9sc2lkWFJwYkhNaUxDSnlaWEYxYVhKbElpd2lVbVZ6Y0c5dWMyVkNZWE5sSWl3aWIySnFJaXdpYldsNGFXNGlMQ0pyWlhraUxDSndjbTkwYjNSNWNHVWlMQ0p0YjJSMWJHVWlMQ0psZUhCdmNuUnpJaXdpWjJWMElpd2labWxsYkdRaUxDSjBhR2x6SWl3aWFHVmhaR1Z5SWl3aWRHOU1iM2RsY2tOaGMyVWlMQ0pmYzJWMFNHVmhaR1Z5VUhKdmNHVnlkR2xsY3lJc0ltTjBJaXdpZEhsd1pTSXNJbkJoY21GdGN5SXNJbXhwYm10eklpd2liR2x1YXlJc0luQmhjbk5sVEdsdWEzTWlMQ0psY25JaUxDSmZjMlYwVTNSaGRIVnpVSEp2Y0dWeWRHbGxjeUlzSW5OMFlYUjFjeUlzSW5OMFlYUjFjME52WkdVaUxDSnpkR0YwZFhOVWVYQmxJaXdpYVc1bWJ5SXNJbTlySWl3aWNtVmthWEpsWTNRaUxDSmpiR2xsYm5SRmNuSnZjaUlzSW5ObGNuWmxja1Z5Y205eUlpd2laWEp5YjNJaUxDSjBiMFZ5Y205eUlpd2lZM0psWVhSbFpDSXNJbUZqWTJWd2RHVmtJaXdpYm05RGIyNTBaVzUwSWl3aVltRmtVbVZ4ZFdWemRDSXNJblZ1WVhWMGFHOXlhWHBsWkNJc0ltNXZkRUZqWTJWd2RHRmliR1VpTENKbWIzSmlhV1JrWlc0aUxDSnViM1JHYjNWdVpDSXNJblZ1Y0hKdlkyVnpjMkZpYkdWRmJuUnBkSGtpWFN3aWJXRndjR2x1WjNNaU9pSkJRVUZCTEdGQlRVRXNUVUZCVFVFc1RVRkJVVU1zVVVGQlVTeFhRV04wUWl4VFFVRlRReXhoUVVGaFF5eEhRVU53UWl4SFFVRkpRU3hGUVVGTExFOUJRVTlETEUxQlFVMUVMRWRCVjNoQ0xGTkJRVk5ETEUxQlFVMUVMRWRCUTJJc1NVRkJTeXhOUVVGTlJTeExRVUZQU0N4aFFVRmhTU3hWUVVNM1FrZ3NSVUZCU1VVc1IwRkJUMGdzWVVGQllVa3NWVUZCVlVRc1IwRkZjRU1zVDBGQlQwWXNSVUY0UWxSSkxFOUJRVTlETEZGQlFWVk9MR0ZCYlVOcVFrRXNZVUZCWVVrc1ZVRkJWVWNzU1VGQlRTeFRRVUZUUXl4SFFVTndReXhQUVVGUFF5eExRVUZMUXl4UFFVRlBSaXhGUVVGTlJ5eG5Ra0ZsTTBKWUxHRkJRV0ZKTEZWQlFWVlJMSEZDUVVGMVFpeFRRVUZUUml4SFFVdHVSQ3hOUVVGTlJ5eEZRVUZMU0N4RlFVRlBMR2xDUVVGdFFpeEhRVU55UTBRc1MwRkJTMHNzUzBGQlQyaENMRTFCUVUxblFpeExRVUZMUkN4SFFVZDJRaXhOUVVGTlJTeEZRVUZUYWtJc1RVRkJUV2xDTEU5QlFVOUdMRWRCUXpWQ0xFbEJRVXNzVFVGQlRWWXNTMEZCVDFrc1JVRkJVVTRzUzBGQlMwNHNSMEZCVDFrc1JVRkJUMW9zUjBGRk4wTk5MRXRCUVV0UExFMUJRVkVzUjBGSFlpeEpRVU5SVGl4RlFVRlBUeXhQUVVOUVVpeExRVUZMVHl4TlFVRlJiRUlzVFVGQlRXOUNMRmRCUVZkU0xFVkJRVTlQTEU5QlJUTkRMRTFCUVU5RkxFMUJNRUppYmtJc1lVRkJZVWtzVlVGQlZXZENMSEZDUVVGMVFpeFRRVUZUUXl4SFFVTnVSQ3hOUVVGTlVDeEZRVUZQVHl4RlFVRlRMRWxCUVUwc1JVRkhOVUphTEV0QlFVdFpMRTlCUVZOYUxFdEJRVXRoTEZkQlFXRkVMRVZCUTJoRFdpeExRVUZMWXl4WFFVRmhWQ3hGUVVkc1Frd3NTMEZCUzJVc1MwRkJUeXhIUVVGTFZpeEZRVU5xUWt3c1MwRkJTMmRDTEVkQlFVc3NSMEZCUzFnc1JVRkRaa3dzUzBGQlMybENMRk5CUVZjc1IwRkJTMW9zUlVGRGNrSk1MRXRCUVV0clFpeFpRVUZqTEVkQlFVdGlMRVZCUTNoQ1RDeExRVUZMYlVJc1dVRkJZeXhIUVVGTFpDeEZRVU40UWt3c1MwRkJTMjlDTEU5QlFWTXNSMEZCUzJZc1IwRkJVU3hIUVVGTFFTeEpRVU14UWt3c1MwRkJTM0ZDTEZWQlNWaHlRaXhMUVVGTGMwSXNVVUZCVlN4TFFVRlBWaXhGUVVOMFFsb3NTMEZCUzNWQ0xGTkJRVmNzUzBGQlQxZ3NSVUZEZGtKYUxFdEJRVXQzUWl4VlFVRlpMRXRCUVU5YUxFVkJRM2hDV2l4TFFVRkxlVUlzVjBGQllTeExRVUZQWWl4RlFVTjZRbG9zUzBGQlN6QkNMR0ZCUVdVc1MwRkJUMlFzUlVGRE0wSmFMRXRCUVVzeVFpeGpRVUZuUWl4TFFVRlBaaXhGUVVNMVFsb3NTMEZCU3pSQ0xGVkJRVmtzUzBGQlQyaENMRVZCUTNoQ1dpeExRVUZMTmtJc1UwRkJWeXhMUVVGUGFrSXNSVUZEZGtKYUxFdEJRVXM0UWl4dlFrRkJjMElzUzBGQlQyeENJaXdpWm1sc1pTSTZJa1U2WEZ4WGIzSnJjM0JoWTJWY1hIZHBhMmxoTFdsekxXRnVjM2RsY21Wa1hGeHViMlJsWDIxdlpIVnNaWE5jWEhOMWNHVnlZV2RsYm5SY1hHeHBZbHhjY21WemNHOXVjMlV0WW1GelpTNXFjeUo5IiwiXCJ1c2Ugc3RyaWN0XCI7ZXhwb3J0cy50eXBlPShlPT5lLnNwbGl0KC8gKjsgKi8pLnNoaWZ0KCkpLGV4cG9ydHMucGFyYW1zPShlPT5lLnNwbGl0KC8gKjsgKi8pLnJlZHVjZSgoZSx0KT0+e2NvbnN0IHM9dC5zcGxpdCgvICo9ICovKSxpPXMuc2hpZnQoKSxyPXMuc2hpZnQoKTtyZXR1cm4gaSYmciYmKGVbaV09ciksZX0se30pKSxleHBvcnRzLnBhcnNlTGlua3M9KGU9PmUuc3BsaXQoLyAqLCAqLykucmVkdWNlKChlLHQpPT57Y29uc3Qgcz10LnNwbGl0KC8gKjsgKi8pLGk9c1swXS5zbGljZSgxLC0xKTtyZXR1cm4gZVtzWzFdLnNwbGl0KC8gKj0gKi8pWzFdLnNsaWNlKDEsLTEpXT1pLGV9LHt9KSksZXhwb3J0cy5jbGVhbkhlYWRlcj0oKGUsdCk9PihkZWxldGUgZVtcImNvbnRlbnQtdHlwZVwiXSxkZWxldGUgZVtcImNvbnRlbnQtbGVuZ3RoXCJdLGRlbGV0ZSBlW1widHJhbnNmZXItZW5jb2RpbmdcIl0sZGVsZXRlIGUuaG9zdCx0JiYoZGVsZXRlIGUuYXV0aG9yaXphdGlvbixkZWxldGUgZS5jb29raWUpLGUpKTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKemIzVnlZMlZ6SWpwYkluVjBhV3h6TG1weklsMHNJbTVoYldWeklqcGJJbVY0Y0c5eWRITWlMQ0owZVhCbElpd2ljM1J5SWl3aWMzQnNhWFFpTENKemFHbG1kQ0lzSW5CaGNtRnRjeUlzSW5KbFpIVmpaU0lzSW05aWFpSXNJbkJoY25Seklpd2lhMlY1SWl3aWRtRnNJaXdpY0dGeWMyVk1hVzVyY3lJc0luVnliQ0lzSW5Oc2FXTmxJaXdpWTJ4bFlXNUlaV0ZrWlhJaUxDSm9aV0ZrWlhJaUxDSmphR0Z1WjJWelQzSnBaMmx1SWwwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4aFFWVkJRU3hSUVVGUlF5eExRVUZQUXl4RFFVRkJRU3hIUVVGUFFTeEZRVUZKUXl4TlFVRk5MRk5CUVZORExGTkJWWHBEU2l4UlFVRlJTeXhQUVVGVFNDeERRVUZCUVN4SFFVRlBRU3hGUVVGSlF5eE5RVUZOTEZOQlFWTkhMRTlCUVU4c1EwRkJRME1zUlVGQlMwd3NTMEZEZEVRc1RVRkJUVTBzUlVGQlVVNHNSVUZCU1VNc1RVRkJUU3hUUVVOc1FrMHNSVUZCVFVRc1JVRkJUVW9zVVVGRFdrMHNSVUZCVFVZc1JVRkJUVW9zVVVGSGJFSXNUMEZFU1Vzc1IwRkJUME1zU1VGQlMwZ3NSVUZCU1VVc1IwRkJUME1zUjBGRGNFSklMRWRCUTA0c1MwRlZTRkFzVVVGQlVWY3NWMEZCWVZRc1EwRkJRVUVzUjBGQlQwRXNSVUZCU1VNc1RVRkJUU3hUUVVGVFJ5eFBRVUZQTEVOQlFVTkRMRVZCUVV0TUxFdEJRekZFTEUxQlFVMU5MRVZCUVZGT0xFVkJRVWxETEUxQlFVMHNVMEZEYkVKVExFVkJRVTFLTEVWQlFVMHNSMEZCUjBzc1RVRkJUU3hIUVVGSkxFZEJSeTlDTEU5QlJFRk9MRVZCUkZsRExFVkJRVTBzUjBGQlIwd3NUVUZCVFN4VFFVRlRMRWRCUVVkVkxFMUJRVTBzUjBGQlNTeEpRVU4wUTBRc1JVRkRTa3dzUjBGRFRpeExRVlZJVUN4UlFVRlJZeXhaUVVGakxFVkJRVU5ETEVWQlFWRkRMRmxCUTNSQ1JDeEZRVUZQTEhWQ1FVTlFRU3hGUVVGUExIbENRVU5RUVN4RlFVRlBMRFJDUVVOUVFTeEZRVUZoTEV0QlJXaENReXhYUVVOTFJDeEZRVUZ6UWl4eFFrRkRkRUpCTEVWQlFXVXNVVUZGYWtKQklpd2labWxzWlNJNklrVTZYRnhYYjNKcmMzQmhZMlZjWEhkcGEybGhMV2x6TFdGdWMzZGxjbVZrWEZ4dWIyUmxYMjF2WkhWc1pYTmNYSE4xY0dWeVlXZGxiblJjWEd4cFlseGNkWFJwYkhNdWFuTWlmUT09IiwidmFyIHRvU3RyaW5nPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7bW9kdWxlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7c3dpdGNoKHRvU3RyaW5nLmNhbGwoZSkpe2Nhc2VcIltvYmplY3QgRnVuY3Rpb25dXCI6cmV0dXJuXCJmdW5jdGlvblwiO2Nhc2VcIltvYmplY3QgRGF0ZV1cIjpyZXR1cm5cImRhdGVcIjtjYXNlXCJbb2JqZWN0IFJlZ0V4cF1cIjpyZXR1cm5cInJlZ2V4cFwiO2Nhc2VcIltvYmplY3QgQXJndW1lbnRzXVwiOnJldHVyblwiYXJndW1lbnRzXCI7Y2FzZVwiW29iamVjdCBBcnJheV1cIjpyZXR1cm5cImFycmF5XCI7Y2FzZVwiW29iamVjdCBTdHJpbmddXCI6cmV0dXJuXCJzdHJpbmdcIn1pZihcIm9iamVjdFwiPT10eXBlb2YgZSYmZSYmXCJudW1iZXJcIj09dHlwZW9mIGUubGVuZ3RoKXRyeXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLmNhbGxlZSlyZXR1cm5cImFyZ3VtZW50c1wifWNhdGNoKGUpe2lmKGUgaW5zdGFuY2VvZiBUeXBlRXJyb3IpcmV0dXJuXCJhcmd1bWVudHNcIn1yZXR1cm4gbnVsbD09PWU/XCJudWxsXCI6dm9pZCAwPT09ZT9cInVuZGVmaW5lZFwiOmUmJjE9PT1lLm5vZGVUeXBlP1wiZWxlbWVudFwiOmU9PT1PYmplY3QoZSk/XCJvYmplY3RcIjp0eXBlb2YgZX07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbWx1WkdWNExtcHpJbDBzSW01aGJXVnpJanBiSW5SdlUzUnlhVzVuSWl3aVQySnFaV04wSWl3aWNISnZkRzkwZVhCbElpd2liVzlrZFd4bElpd2laWGh3YjNKMGN5SXNJblpoYkNJc0ltTmhiR3dpTENKc1pXNW5kR2dpTENKallXeHNaV1VpTENKbGVDSXNJbFI1Y0dWRmNuSnZjaUlzSW5WdVpHVm1hVzVsWkNJc0ltNXZaR1ZVZVhCbElsMHNJbTFoY0hCcGJtZHpJam9pUVVGQlFTeEpRVUZKUVN4VFFVRlhReXhQUVVGUFF5eFZRVUZWUml4VFFVVm9RMGNzVDBGQlQwTXNVVUZCVlN4VFFVRlRReXhIUVVONFFpeFBRVUZSVEN4VFFVRlRUU3hMUVVGTFJDeEpRVU53UWl4SlFVRkxMRzlDUVVGeFFpeE5RVUZQTEZkQlEycERMRWxCUVVzc1owSkJRV2xDTEUxQlFVOHNUMEZETjBJc1NVRkJTeXhyUWtGQmJVSXNUVUZCVHl4VFFVTXZRaXhKUVVGTExIRkNRVUZ6UWl4TlFVRlBMRmxCUTJ4RExFbEJRVXNzYVVKQlFXdENMRTFCUVU4c1VVRkRPVUlzU1VGQlN5eHJRa0ZCYlVJc1RVRkJUeXhUUVVkcVF5eEhRVUZyUWl4cFFrRkJVRUVzUjBGQmJVSkJMRWRCUVRSQ0xHbENRVUZrUVN4RlFVRkpSU3hQUVVNNVF5eEpRVU5GTEVkQlFYbENMRzFDUVVGa1JpeEZRVUZKUnl4UFFVRnpRaXhOUVVGUExGbEJRelZETEUxQlFVOURMRWRCUTFBc1IwRkJTVUVzWVVGQlkwTXNWVUZEYUVJc1RVRkJUeXhaUVV0aUxFOUJRVmtzVDBGQlVrd3NSVUZCY1VJc1dVRkRZazBzU1VGQlVrNHNSVUZCTUVJc1dVRkRNVUpCTEVkQlFYZENMRWxCUVdwQ1FTeEZRVUZKVHl4VFFVRjFRaXhWUVVOc1ExQXNTVUZCVVVvc1QwRkJUMGtzUjBGQllTeG5Ra0ZGYkVKQklpd2labWxzWlNJNklrVTZYRnhYYjNKcmMzQmhZMlZjWEhkcGEybGhMV2x6TFdGdWMzZGxjbVZrWEZ4dWIyUmxYMjF2WkhWc1pYTmNYSFI1Y0dVdGIyWmNYR2x1WkdWNExtcHpJbjA9IiwibW9kdWxlLmV4cG9ydHM9e2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1lbnVpdGVtOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH07XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJbWx1WkdWNExtcHpJbDBzSW01aGJXVnpJanBiSW0xdlpIVnNaU0lzSW1WNGNHOXlkSE1pTENKaGNtVmhJaXdpWW1GelpTSXNJbUp5SWl3aVkyOXNJaXdpWlcxaVpXUWlMQ0pvY2lJc0ltbHRaeUlzSW1sdWNIVjBJaXdpYTJWNVoyVnVJaXdpYkdsdWF5SXNJbTFsYm5WcGRHVnRJaXdpYldWMFlTSXNJbkJoY21GdElpd2ljMjkxY21ObElpd2lkSEpoWTJzaUxDSjNZbklpWFN3aWJXRndjR2x1WjNNaU9pSkJRVXRCUVN4UFFVRlBReXhSUVVGVkxFTkJRMlpETEUxQlFWRXNSVUZEVWtNc1RVRkJVU3hGUVVOU1F5eEpRVUZOTEVWQlEwNURMRXRCUVU4c1JVRkRVRU1zVDBGQlV5eEZRVU5VUXl4SlFVRk5MRVZCUTA1RExFdEJRVThzUlVGRFVFTXNUMEZCVXl4RlFVTlVReXhSUVVGVkxFVkJRMVpETEUxQlFWRXNSVUZEVWtNc1ZVRkJXU3hGUVVOYVF5eE5RVUZSTEVWQlExSkRMRTlCUVZNc1JVRkRWRU1zVVVGQlZTeEZRVU5XUXl4UFFVRlRMRVZCUTFSRExFdEJRVThpTENKbWFXeGxJam9pUlRwY1hGZHZjbXR6Y0dGalpWeGNkMmxyYVdFdGFYTXRZVzV6ZDJWeVpXUmNYRzV2WkdWZmJXOWtkV3hsYzF4Y2RtOXBaQzFsYkdWdFpXNTBjMXhjYVc1a1pYZ3Vhbk1pZlE9PSJdfQ== diff --git a/static/index.html b/static/index.html index a144670..57205e4 100644 --- a/static/index.html +++ b/static/index.html @@ -40,7 +40,10 @@

{ base.caption }

{ item.text }
-
+
+
+ Your message here... +
diff --git a/static/master.css b/static/master.css index cec6fee..520bb4e 100644 --- a/static/master.css +++ b/static/master.css @@ -1,5 +1,10 @@ @import url('https://fonts.googleapis.com/css?family=Nunito'); +:root { + --top: 0; + --left: 0; +} + html { padding: 0; overflow: hidden; @@ -58,18 +63,19 @@ button { } .u-textbox { - background: transparent; - position: relative; - - transition: 0.4s background-color; + word-wrap: break-word; } -.u-textbox:before { - content: attr(placeholder); +/*.u-textbox:before {*/ +/* content: attr(placeholder);*/ +.u-placeholder { color: hsl(0deg, 0%, 67%); font-style: italic; opacity: 0; position: absolute; + top: var(--top); + left: var(--left); + pointer-events: none; transition: 0.2s opacity; } @@ -78,11 +84,12 @@ button { display: none; } -.u-textbox.empty:before { +/*.u-textbox.empty:before {*/ +.u-textbox.empty + .u-placeholder { opacity: 1; } -.u-textbox.error { +.error { background: hsl(0deg, 68%, 87%); } @@ -177,10 +184,10 @@ button { display: block; } -.Knowledge-documentCaption { - color: inherit; - text-decoration: none; - font-size: 14px; +.Knowledge-documentCaption { + color: inherit; + text-decoration: none; + font-size: 14px; } .Knowledge-documentCaption:hover { @@ -214,32 +221,41 @@ button { box-sizing: border-box; } -.Converstion-historyItem { - border-radius: 13px; - background: hsl(0deg, 0%, 80%); - padding: 10px; - max-width: 80%; - width: max-content; - align-self: flex-end; - margin-bottom: 10px; - font: inherit; - box-sizing: border-box; - white-space: pre-line; +.Converstion-historyItem { + border-radius: 13px; + background: hsl(0deg, 0%, 80%); + padding: 10px; + max-width: 80%; + width: max-content; + align-self: flex-end; + margin-bottom: 10px; + font: inherit; + box-sizing: border-box; + white-space: pre-line; } .Converstion-historyItem.user { align-self: initial; } -.Conversation-input { - background: none; - border: none; - padding: 10px; +.Conversation-textbox { + --top: 10px; + --left: 10px; + padding: var(--top) var(--left); box-sizing: border-box; - min-height: 150px; position: sticky; bottom: 0; - background: hsla(0deg, 0%, 90%, 90%); width: 100%; - outline: none; -} \ No newline at end of file + background: hsla(0deg, 0%, 90%, 90%); + transition: 0.4s background-color; +} + +.Conversation-input { + border: none; + padding: 0; + bottom: 0; + background: none; + width: 100%; + min-height: 150px; + outline: none; +} diff --git a/util/__init__.py b/util/__init__.py index f6609d4..778323e 100644 --- a/util/__init__.py +++ b/util/__init__.py @@ -1,7 +1,8 @@ import os from platform import python_version_tuple as get_pyversion +from statistics import mean as _mean, StatisticsError -from pyquery import PyQuery as pq +from pyquery import PyQuery as pq, text as _text pyversion = tuple(int(e) for e in get_pyversion()) if pyversion >= (3, 6, 0): @@ -22,6 +23,8 @@ def new(cls, *args, **kw): from .set import Set, OrderedSet from .list import Tuple, List from .url import URL +from .priority_queue import PriorityQueue +from itertools import islice def attach(target): def deco(func): @@ -29,15 +32,109 @@ def deco(func): return func return deco +def mixin(target): + exclude = { '__module__', '__dict__', '__weakref__', '__doc__', '__new__' } + def deco(cls): + for name, attr in cls.__dict__.items(): + if name in exclude: + continue + setattr(target, name, attr) + return cls + return deco + +def mean(data, default=None): + try: + return _mean(data) + except StatisticsError: + return default + +def casefold(self): + return str(self).casefold() + +class Text: + _tag = 'text' + _html = f'<{_tag}>' + def __new__(cls, text, prev=None): + return pq(cls._html).append(text or '').before(prev) + +_text.INLINE_TAGS.update([Text._tag]) + +def _Text(node, prev=None): + return Text(node, prev)[0] if isinstance(node, str) else node + +_before = pq.before +@attach(pq.fn) +def before(other): + if other is None: + return this + return _before(this, other) + +#@attach(pq.fn) +def _iter(this): + if not this: + raise StopIteration + prev = _Text(this[0]) + yield pq(prev) + for node in islice(this, 1, None): + if isinstance(node, str): + elem = Text(node) + yield elem.set(_prev=pq(prev)) + prev = elem[0] + else: + yield pq(node) + prev = node + +@attach(pq.fn) +def test(include=None, exclude=None): + if not this.is_(include): + return False + + if exclude and this.is_(exclude): + return False + + return True + +@attach(pq.fn) +def set(**kw): + for name, val in kw.items(): + setattr(this, name, val) + return this + +_prev = pq.prev +@attach(pq.fn) +def prev(sel=None): + if hasattr(this, '_prev'): + return this._prev.filter(sel) + return _prev(this, sel) + +@attach(pq.fn) +def default(name, default=None): + value = this.attr(name) + return default if value is None else value + +_items = pq.items +@attach(pq.fn) +def items(include=None, exclude=None): + for node in _iter(this): + if node.test(include, exclude): + yield node + +@attach(pq.fn) +def tail(sel=None): + return pq([Text(e.tail)[0] for e in this]).filter(sel) + @attach(pq.fn) -def nextUntil(sel, filter=None): +def nextUntil(sel=None, filter=None): res = OrderedSet() + if sel is None: + sel = ':not(*)' for node in this.items(): while True: + res.update(node.tail(filter)) node = node.next() if node.is_(sel) or not node: break if node.is_(filter): - res.add(node[0]) + res.update(node) return pq(res[:]) diff --git a/util/list.py b/util/list.py index 41fbb59..7ccdabe 100644 --- a/util/list.py +++ b/util/list.py @@ -36,7 +36,8 @@ def index(self, item, default=None): return default class Tuple(_List, tuple): - pass + def __repr__(self): + return tuple.__repr__(self) class List(_List, list): def __init__(self, src=None, banned=None, **kw): @@ -46,6 +47,9 @@ def __init__(self, src=None, banned=None, **kw): self._str = kw.get('str', ', ') self.extend(src) + def __repr__(self): + return list.__repr__(self) + def _format(self, item): return self.__format.format(item=str(item)) diff --git a/util/priority_queue.py b/util/priority_queue.py new file mode 100644 index 0000000..a10e5bd --- /dev/null +++ b/util/priority_queue.py @@ -0,0 +1,206 @@ +#!/usr/bin/env python +# +# Based on the work of Pravin Paratey (April 15, 2011) +# Joachim Hagege (June 18, 2014) +# +# Code released under BSD license +# +from __future__ import print_function +from math import inf +from collections import namedtuple +from sortedcontainers import SortedList + + +Element = namedtuple('Element', ('value', 'rank')) + +class PriorityQueue: + def __init__(self, capacity=None, key=None): + self._data = SortedList(key=self._rank) + self._capacity = inf if capacity is None else capacity + self._key = key + + def _rank(self, item): + if self._key: + return self._key(*item) + return item.rank + + def add(self, value, rank): + self._data.add(Element(value, rank)) + self._shrink() + + def clear(self): + return self._data.clear() + + def __repr__(self): + return f"PriorityQueue([{', '.join(f'{v}: {r}' for (v, r) in self._data)}])" + + def _shrink(self): + while len(self._data) > self._capacity: + self._data.pop() + + def update(self, src): + raise NotImplementedError + + def __contains__(self, value): + raise NotImplementedError + + def __iter__(self): + for value, rank in self._data: + yield value + + def __getitem__(self, index): + return self._data[index] + + def size(self): + return len(self._data) + +class _PriorityQueue: + """ This class illustrates a PriorityQueue and its associated functions """ + + def __init__(self, size=inf, key=None, default=0): + self.heap = [] + self.k = size + self.__key = key + self._default = default + + def _key(self, obj): + value, key = obj + _key = self.__key + if key is None: + return _key(value) if _key else self._default + return key + + def __getitem__(self, index): + return self.heap[index] + + def __iter__(self): + for value, key in self.heap: + yield value + + def __repr__(self): + return repr(self.heap) + + def parent(self, index): + """ + Parent will be at math.floor(index/2). Since integer division + simulates the floor function, we don't explicity use it + """ + return int(index / 2) + + def left_child(self, index): + return 2 * index + 1 + + def right_child(self, index): + return 2 * index + 2 + + def max_heapify(self, index): + """ + Responsible for maintaining the heap property of the heap. + This function assumes that the subtree located at left and right + child satisfies the max-heap property. But the tree at index + (current node) does not. O(log n) + """ + left_index = self.left_child(index) + right_index = self.right_child(index) + + largest = index + #if left_index < len(self.heap) and self.heap[left_index][DISTANCE_INDEX] > self.heap[index][DISTANCE_INDEX]: + if left_index < len(self.heap) and self._item(left_index) > self._item(index): + largest = left_index + #if right_index < len(self.heap) and self.heap[right_index][DISTANCE_INDEX] > self.heap[largest][DISTANCE_INDEX]: + if right_index < len(self.heap) and self._item(right_index) > self._item(largest): + largest = right_index + + if largest != index: + self.heap[index], self.heap[largest] = self.heap[largest], self.heap[index] + self.max_heapify(largest) + + def build_max_heap(self): + """ + Responsible for building the heap bottom up. It starts with the lowest non-leaf nodes + and calls heapify on them. This function is useful for initialising a heap with an + unordered array. O(n) + We shall note that all the elements after floor(size/2) are leaves. + """ + for i in xrange(len(self.heap)/2, -1, -1): + self.max_heapify(i) + + def heap_sort(self): + """ The heap-sort algorithm with a time complexity O(n*log(n)) + We run n times the max_heapify (O(log n)) + """ + self.build_max_heap() + output = [] + for i in xrange(len(self.heap)-1, 0, -1): + self.heap[0], self.heap[i] = self.heap[i], self.heap[0] + output.append(self.heap.pop()) + self.max_heapify(0) + output.append(self.heap.pop()) + self.heap = output + + def _item(self, index): + return self._key(self.heap[index]) + + def propagate_up(self, index): + """ Compares index with parent and swaps node if larger O(log(n)) """ + #while index != 0 and self.heap[self.parent(index)][DISTANCE_INDEX] < self.heap[index][DISTANCE_INDEX]: + while index != 0 and self._item(self.parent(index)) < self._item(index): + self.heap[index], self.heap[self.parent(index)] = self.heap[self.parent(index)], self.heap[index] + index = self.parent(index) + + # Here is the whole logic of the Bounded Priority queue. + # Add an element only if size < k and if size == k, only if the element value is less than + def add(self, value, key=None): + obj = Element(value, key) + # If number of elements == k and new element < max_elem: + # extract_max and add the new element. + # Else: + # Add the new element. + size = self.size() + + # Size == k, The priority queue is at capacity. + if size == self.k: + max_elem = self.max() + + # The new element has a lower distance than the biggest one. + # Then we insert, otherwise, don't insert. + #if obj[DISTANCE_INDEX] < max_elem: + if self._key(obj) < max_elem: + self.extract_max() + self.heap_append(obj) + + # if size == 0 or 0 < Size < k + else: + self.heap_append(obj) + + def heap_append(self, obj): + """ Adds an element in the heap O(ln(n)) """ + self.heap.append(obj) + self.propagate_up(len(self.heap) - 1) # Index value is 1 less than length + + def max(self): + # The highest distance will always be at the index 0 (heap invariant) + return self.heap[0][1] + + def size(self): + return len(self.heap) + + def extract_max(self): + """ + Part of the Priority Queue, extracts the element on the top of the heap and + then re-heapifies. O(log n) + """ + max = self.heap[0] + data = self.heap.pop() + if len(self.heap) > 0: + self.heap[0] = data + self.max_heapify(0) + return max + + def increment(self, key, value): + """ Increments key by the input value. O(log n) """ + for i in xrange(len(self.heap)): + if self.heap[i][0] == key: + self.heap[i] = (value + self.heap[i][1], key) + self.propagate_up(i) + break diff --git a/util/set.py b/util/set.py index d35ce36..54f2746 100644 --- a/util/set.py +++ b/util/set.py @@ -33,13 +33,17 @@ def __contains__(self, item): def update(self, src): if isinstance(src, bool): - self._bool = src - return True + if self._bool is None: + self._bool = src + return True + return False if _check(src): super().update(src) return True return False +Set.__or__ = Set.union + class OrderedSet: def __init__(self, src=None): super().__init__() @@ -91,7 +95,7 @@ def __bool__(self): return bool(self._data) def __repr__(self): - return f"{{{', '.join(self)}}}" + return f"{{{', '.join(repr(e) for e in self)}}}" def __len__(self): return len(self._data)