UNPKG

angular2

Version:

Angular 2 - a web framework for modern web apps

389 lines 78.2 kB
'use strict';var lang_1 = require('angular2/src/facade/lang'); var exceptions_1 = require('angular2/src/facade/exceptions'); var collection_1 = require('angular2/src/facade/collection'); var ast_1 = require('./parser/ast'); var change_detection_util_1 = require('./change_detection_util'); var dynamic_change_detector_1 = require('./dynamic_change_detector'); var directive_record_1 = require('./directive_record'); var event_binding_1 = require('./event_binding'); var coalesce_1 = require('./coalesce'); var proto_record_1 = require('./proto_record'); var DynamicProtoChangeDetector = (function () { function DynamicProtoChangeDetector(_definition) { this._definition = _definition; this._propertyBindingRecords = createPropertyRecords(_definition); this._eventBindingRecords = createEventRecords(_definition); this._propertyBindingTargets = this._definition.bindingRecords.map(function (b) { return b.target; }); this._directiveIndices = this._definition.directiveRecords.map(function (d) { return d.directiveIndex; }); } DynamicProtoChangeDetector.prototype.instantiate = function () { return new dynamic_change_detector_1.DynamicChangeDetector(this._definition.id, this._propertyBindingRecords.length, this._propertyBindingTargets, this._directiveIndices, this._definition.strategy, this._propertyBindingRecords, this._eventBindingRecords, this._definition.directiveRecords, this._definition.genConfig); }; return DynamicProtoChangeDetector; })(); exports.DynamicProtoChangeDetector = DynamicProtoChangeDetector; function createPropertyRecords(definition) { var recordBuilder = new ProtoRecordBuilder(); collection_1.ListWrapper.forEachWithIndex(definition.bindingRecords, function (b, index) { return recordBuilder.add(b, definition.variableNames, index); }); return coalesce_1.coalesce(recordBuilder.records); } exports.createPropertyRecords = createPropertyRecords; function createEventRecords(definition) { // TODO: vsavkin: remove $event when the compiler handles render-side variables properly var varNames = collection_1.ListWrapper.concat(['$event'], definition.variableNames); return definition.eventRecords.map(function (er) { var records = _ConvertAstIntoProtoRecords.create(er, varNames); var dirIndex = er.implicitReceiver instanceof directive_record_1.DirectiveIndex ? er.implicitReceiver : null; return new event_binding_1.EventBinding(er.target.name, er.target.elementIndex, dirIndex, records); }); } exports.createEventRecords = createEventRecords; var ProtoRecordBuilder = (function () { function ProtoRecordBuilder() { this.records = []; } ProtoRecordBuilder.prototype.add = function (b, variableNames, bindingIndex) { var oldLast = collection_1.ListWrapper.last(this.records); if (lang_1.isPresent(oldLast) && oldLast.bindingRecord.directiveRecord == b.directiveRecord) { oldLast.lastInDirective = false; } var numberOfRecordsBefore = this.records.length; this._appendRecords(b, variableNames, bindingIndex); var newLast = collection_1.ListWrapper.last(this.records); if (lang_1.isPresent(newLast) && newLast !== oldLast) { newLast.lastInBinding = true; newLast.lastInDirective = true; this._setArgumentToPureFunction(numberOfRecordsBefore); } }; /** @internal */ ProtoRecordBuilder.prototype._setArgumentToPureFunction = function (startIndex) { var _this = this; for (var i = startIndex; i < this.records.length; ++i) { var rec = this.records[i]; if (rec.isPureFunction()) { rec.args.forEach(function (recordIndex) { return _this.records[recordIndex - 1].argumentToPureFunction = true; }); } if (rec.mode === proto_record_1.RecordType.Pipe) { rec.args.forEach(function (recordIndex) { return _this.records[recordIndex - 1].argumentToPureFunction = true; }); this.records[rec.contextIndex - 1].argumentToPureFunction = true; } } }; /** @internal */ ProtoRecordBuilder.prototype._appendRecords = function (b, variableNames, bindingIndex) { if (b.isDirectiveLifecycle()) { this.records.push(new proto_record_1.ProtoRecord(proto_record_1.RecordType.DirectiveLifecycle, b.lifecycleEvent, null, [], [], -1, null, this.records.length + 1, b, false, false, false, false, null)); } else { _ConvertAstIntoProtoRecords.append(this.records, b, variableNames, bindingIndex); } }; return ProtoRecordBuilder; })(); exports.ProtoRecordBuilder = ProtoRecordBuilder; var _ConvertAstIntoProtoRecords = (function () { function _ConvertAstIntoProtoRecords(_records, _bindingRecord, _variableNames, _bindingIndex) { this._records = _records; this._bindingRecord = _bindingRecord; this._variableNames = _variableNames; this._bindingIndex = _bindingIndex; } _ConvertAstIntoProtoRecords.append = function (records, b, variableNames, bindingIndex) { var c = new _ConvertAstIntoProtoRecords(records, b, variableNames, bindingIndex); b.ast.visit(c); }; _ConvertAstIntoProtoRecords.create = function (b, variableNames) { var rec = []; _ConvertAstIntoProtoRecords.append(rec, b, variableNames, null); rec[rec.length - 1].lastInBinding = true; return rec; }; _ConvertAstIntoProtoRecords.prototype.visitImplicitReceiver = function (ast) { return this._bindingRecord.implicitReceiver; }; _ConvertAstIntoProtoRecords.prototype.visitInterpolation = function (ast) { var args = this._visitAll(ast.expressions); return this._addRecord(proto_record_1.RecordType.Interpolate, "interpolate", _interpolationFn(ast.strings), args, ast.strings, 0); }; _ConvertAstIntoProtoRecords.prototype.visitLiteralPrimitive = function (ast) { return this._addRecord(proto_record_1.RecordType.Const, "literal", ast.value, [], null, 0); }; _ConvertAstIntoProtoRecords.prototype.visitPropertyRead = function (ast) { var receiver = ast.receiver.visit(this); if (lang_1.isPresent(this._variableNames) && collection_1.ListWrapper.contains(this._variableNames, ast.name) && ast.receiver instanceof ast_1.ImplicitReceiver) { return this._addRecord(proto_record_1.RecordType.Local, ast.name, ast.name, [], null, receiver); } else { return this._addRecord(proto_record_1.RecordType.PropertyRead, ast.name, ast.getter, [], null, receiver); } }; _ConvertAstIntoProtoRecords.prototype.visitPropertyWrite = function (ast) { if (lang_1.isPresent(this._variableNames) && collection_1.ListWrapper.contains(this._variableNames, ast.name) && ast.receiver instanceof ast_1.ImplicitReceiver) { throw new exceptions_1.BaseException("Cannot reassign a variable binding " + ast.name); } else { var receiver = ast.receiver.visit(this); var value = ast.value.visit(this); return this._addRecord(proto_record_1.RecordType.PropertyWrite, ast.name, ast.setter, [value], null, receiver); } }; _ConvertAstIntoProtoRecords.prototype.visitKeyedWrite = function (ast) { var obj = ast.obj.visit(this); var key = ast.key.visit(this); var value = ast.value.visit(this); return this._addRecord(proto_record_1.RecordType.KeyedWrite, null, null, [key, value], null, obj); }; _ConvertAstIntoProtoRecords.prototype.visitSafePropertyRead = function (ast) { var receiver = ast.receiver.visit(this); return this._addRecord(proto_record_1.RecordType.SafeProperty, ast.name, ast.getter, [], null, receiver); }; _ConvertAstIntoProtoRecords.prototype.visitMethodCall = function (ast) { var receiver = ast.receiver.visit(this); var args = this._visitAll(ast.args); if (lang_1.isPresent(this._variableNames) && collection_1.ListWrapper.contains(this._variableNames, ast.name)) { var target = this._addRecord(proto_record_1.RecordType.Local, ast.name, ast.name, [], null, receiver); return this._addRecord(proto_record_1.RecordType.InvokeClosure, "closure", null, args, null, target); } else { return this._addRecord(proto_record_1.RecordType.InvokeMethod, ast.name, ast.fn, args, null, receiver); } }; _ConvertAstIntoProtoRecords.prototype.visitSafeMethodCall = function (ast) { var receiver = ast.receiver.visit(this); var args = this._visitAll(ast.args); return this._addRecord(proto_record_1.RecordType.SafeMethodInvoke, ast.name, ast.fn, args, null, receiver); }; _ConvertAstIntoProtoRecords.prototype.visitFunctionCall = function (ast) { var target = ast.target.visit(this); var args = this._visitAll(ast.args); return this._addRecord(proto_record_1.RecordType.InvokeClosure, "closure", null, args, null, target); }; _ConvertAstIntoProtoRecords.prototype.visitLiteralArray = function (ast) { var primitiveName = "arrayFn" + ast.expressions.length; return this._addRecord(proto_record_1.RecordType.CollectionLiteral, primitiveName, _arrayFn(ast.expressions.length), this._visitAll(ast.expressions), null, 0); }; _ConvertAstIntoProtoRecords.prototype.visitLiteralMap = function (ast) { return this._addRecord(proto_record_1.RecordType.CollectionLiteral, _mapPrimitiveName(ast.keys), change_detection_util_1.ChangeDetectionUtil.mapFn(ast.keys), this._visitAll(ast.values), null, 0); }; _ConvertAstIntoProtoRecords.prototype.visitBinary = function (ast) { var left = ast.left.visit(this); switch (ast.operation) { case '&&': var branchEnd = [null]; this._addRecord(proto_record_1.RecordType.SkipRecordsIfNot, "SkipRecordsIfNot", null, [], branchEnd, left); var right = ast.right.visit(this); branchEnd[0] = right; return this._addRecord(proto_record_1.RecordType.PrimitiveOp, "cond", change_detection_util_1.ChangeDetectionUtil.cond, [left, right, left], null, 0); case '||': var branchEnd = [null]; this._addRecord(proto_record_1.RecordType.SkipRecordsIf, "SkipRecordsIf", null, [], branchEnd, left); var right = ast.right.visit(this); branchEnd[0] = right; return this._addRecord(proto_record_1.RecordType.PrimitiveOp, "cond", change_detection_util_1.ChangeDetectionUtil.cond, [left, left, right], null, 0); default: var right = ast.right.visit(this); return this._addRecord(proto_record_1.RecordType.PrimitiveOp, _operationToPrimitiveName(ast.operation), _operationToFunction(ast.operation), [left, right], null, 0); } }; _ConvertAstIntoProtoRecords.prototype.visitPrefixNot = function (ast) { var exp = ast.expression.visit(this); return this._addRecord(proto_record_1.RecordType.PrimitiveOp, "operation_negate", change_detection_util_1.ChangeDetectionUtil.operation_negate, [exp], null, 0); }; _ConvertAstIntoProtoRecords.prototype.visitConditional = function (ast) { var condition = ast.condition.visit(this); var startOfFalseBranch = [null]; var endOfFalseBranch = [null]; this._addRecord(proto_record_1.RecordType.SkipRecordsIfNot, "SkipRecordsIfNot", null, [], startOfFalseBranch, condition); var whenTrue = ast.trueExp.visit(this); var skip = this._addRecord(proto_record_1.RecordType.SkipRecords, "SkipRecords", null, [], endOfFalseBranch, 0); var whenFalse = ast.falseExp.visit(this); startOfFalseBranch[0] = skip; endOfFalseBranch[0] = whenFalse; return this._addRecord(proto_record_1.RecordType.PrimitiveOp, "cond", change_detection_util_1.ChangeDetectionUtil.cond, [condition, whenTrue, whenFalse], null, 0); }; _ConvertAstIntoProtoRecords.prototype.visitPipe = function (ast) { var value = ast.exp.visit(this); var args = this._visitAll(ast.args); return this._addRecord(proto_record_1.RecordType.Pipe, ast.name, ast.name, args, null, value); }; _ConvertAstIntoProtoRecords.prototype.visitKeyedRead = function (ast) { var obj = ast.obj.visit(this); var key = ast.key.visit(this); return this._addRecord(proto_record_1.RecordType.KeyedRead, "keyedAccess", change_detection_util_1.ChangeDetectionUtil.keyedAccess, [key], null, obj); }; _ConvertAstIntoProtoRecords.prototype.visitChain = function (ast) { var _this = this; var args = ast.expressions.map(function (e) { return e.visit(_this); }); return this._addRecord(proto_record_1.RecordType.Chain, "chain", null, args, null, 0); }; _ConvertAstIntoProtoRecords.prototype.visitQuote = function (ast) { throw new exceptions_1.BaseException(("Caught uninterpreted expression at " + ast.location + ": " + ast.uninterpretedExpression + ". ") + ("Expression prefix " + ast.prefix + " did not match a template transformer to interpret the expression.")); }; _ConvertAstIntoProtoRecords.prototype._visitAll = function (asts) { var res = collection_1.ListWrapper.createFixedSize(asts.length); for (var i = 0; i < asts.length; ++i) { res[i] = asts[i].visit(this); } return res; }; /** * Adds a `ProtoRecord` and returns its selfIndex. */ _ConvertAstIntoProtoRecords.prototype._addRecord = function (type, name, funcOrValue, args, fixedArgs, context) { var selfIndex = this._records.length + 1; if (context instanceof directive_record_1.DirectiveIndex) { this._records.push(new proto_record_1.ProtoRecord(type, name, funcOrValue, args, fixedArgs, -1, context, selfIndex, this._bindingRecord, false, false, false, false, this._bindingIndex)); } else { this._records.push(new proto_record_1.ProtoRecord(type, name, funcOrValue, args, fixedArgs, context, null, selfIndex, this._bindingRecord, false, false, false, false, this._bindingIndex)); } return selfIndex; }; return _ConvertAstIntoProtoRecords; })(); function _arrayFn(length) { switch (length) { case 0: return change_detection_util_1.ChangeDetectionUtil.arrayFn0; case 1: return change_detection_util_1.ChangeDetectionUtil.arrayFn1; case 2: return change_detection_util_1.ChangeDetectionUtil.arrayFn2; case 3: return change_detection_util_1.ChangeDetectionUtil.arrayFn3; case 4: return change_detection_util_1.ChangeDetectionUtil.arrayFn4; case 5: return change_detection_util_1.ChangeDetectionUtil.arrayFn5; case 6: return change_detection_util_1.ChangeDetectionUtil.arrayFn6; case 7: return change_detection_util_1.ChangeDetectionUtil.arrayFn7; case 8: return change_detection_util_1.ChangeDetectionUtil.arrayFn8; case 9: return change_detection_util_1.ChangeDetectionUtil.arrayFn9; default: throw new exceptions_1.BaseException("Does not support literal maps with more than 9 elements"); } } function _mapPrimitiveName(keys) { var stringifiedKeys = keys.map(function (k) { return lang_1.isString(k) ? "\"" + k + "\"" : "" + k; }).join(', '); return "mapFn([" + stringifiedKeys + "])"; } function _operationToPrimitiveName(operation) { switch (operation) { case '+': return "operation_add"; case '-': return "operation_subtract"; case '*': return "operation_multiply"; case '/': return "operation_divide"; case '%': return "operation_remainder"; case '==': return "operation_equals"; case '!=': return "operation_not_equals"; case '===': return "operation_identical"; case '!==': return "operation_not_identical"; case '<': return "operation_less_then"; case '>': return "operation_greater_then"; case '<=': return "operation_less_or_equals_then"; case '>=': return "operation_greater_or_equals_then"; default: throw new exceptions_1.BaseException("Unsupported operation " + operation); } } function _operationToFunction(operation) { switch (operation) { case '+': return change_detection_util_1.ChangeDetectionUtil.operation_add; case '-': return change_detection_util_1.ChangeDetectionUtil.operation_subtract; case '*': return change_detection_util_1.ChangeDetectionUtil.operation_multiply; case '/': return change_detection_util_1.ChangeDetectionUtil.operation_divide; case '%': return change_detection_util_1.ChangeDetectionUtil.operation_remainder; case '==': return change_detection_util_1.ChangeDetectionUtil.operation_equals; case '!=': return change_detection_util_1.ChangeDetectionUtil.operation_not_equals; case '===': return change_detection_util_1.ChangeDetectionUtil.operation_identical; case '!==': return change_detection_util_1.ChangeDetectionUtil.operation_not_identical; case '<': return change_detection_util_1.ChangeDetectionUtil.operation_less_then; case '>': return change_detection_util_1.ChangeDetectionUtil.operation_greater_then; case '<=': return change_detection_util_1.ChangeDetectionUtil.operation_less_or_equals_then; case '>=': return change_detection_util_1.ChangeDetectionUtil.operation_greater_or_equals_then; default: throw new exceptions_1.BaseException("Unsupported operation " + operation); } } function s(v) { return lang_1.isPresent(v) ? "" + v : ''; } function _interpolationFn(strings) { var length = strings.length; var c0 = length > 0 ? strings[0] : null; var c1 = length > 1 ? strings[1] : null; var c2 = length > 2 ? strings[2] : null; var c3 = length > 3 ? strings[3] : null; var c4 = length > 4 ? strings[4] : null; var c5 = length > 5 ? strings[5] : null; var c6 = length > 6 ? strings[6] : null; var c7 = length > 7 ? strings[7] : null; var c8 = length > 8 ? strings[8] : null; var c9 = length > 9 ? strings[9] : null; switch (length - 1) { case 1: return function (a1) { return c0 + s(a1) + c1; }; case 2: return function (a1, a2) { return c0 + s(a1) + c1 + s(a2) + c2; }; case 3: return function (a1, a2, a3) { return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3; }; case 4: return function (a1, a2, a3, a4) { return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4; }; case 5: return function (a1, a2, a3, a4, a5) { return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4 + s(a5) + c5; }; case 6: return function (a1, a2, a3, a4, a5, a6) { return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4 + s(a5) + c5 + s(a6) + c6; }; case 7: return function (a1, a2, a3, a4, a5, a6, a7) { return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4 + s(a5) + c5 + s(a6) + c6 + s(a7) + c7; }; case 8: return function (a1, a2, a3, a4, a5, a6, a7, a8) { return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4 + s(a5) + c5 + s(a6) + c6 + s(a7) + c7 + s(a8) + c8; }; case 9: return function (a1, a2, a3, a4, a5, a6, a7, a8, a9) { return c0 + s(a1) + c1 + s(a2) + c2 + s(a3) + c3 + s(a4) + c4 + s(a5) + c5 + s(a6) + c6 + s(a7) + c7 + s(a8) + c8 + s(a9) + c9; }; default: throw new exceptions_1.BaseException("Does not support more than 9 expressions"); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9fY2hhbmdlX2RldGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYW5ndWxhcjIvc3JjL2NvcmUvY2hhbmdlX2RldGVjdGlvbi9wcm90b19jaGFuZ2VfZGV0ZWN0b3IudHMiXSwibmFtZXMiOlsiRHluYW1pY1Byb3RvQ2hhbmdlRGV0ZWN0b3IiLCJEeW5hbWljUHJvdG9DaGFuZ2VEZXRlY3Rvci5jb25zdHJ1Y3RvciIsIkR5bmFtaWNQcm90b0NoYW5nZURldGVjdG9yLmluc3RhbnRpYXRlIiwiY3JlYXRlUHJvcGVydHlSZWNvcmRzIiwiY3JlYXRlRXZlbnRSZWNvcmRzIiwiUHJvdG9SZWNvcmRCdWlsZGVyIiwiUHJvdG9SZWNvcmRCdWlsZGVyLmNvbnN0cnVjdG9yIiwiUHJvdG9SZWNvcmRCdWlsZGVyLmFkZCIsIlByb3RvUmVjb3JkQnVpbGRlci5fc2V0QXJndW1lbnRUb1B1cmVGdW5jdGlvbiIsIlByb3RvUmVjb3JkQnVpbGRlci5fYXBwZW5kUmVjb3JkcyIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3JkcyIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy5jb25zdHJ1Y3RvciIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy5hcHBlbmQiLCJfQ29udmVydEFzdEludG9Qcm90b1JlY29yZHMuY3JlYXRlIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0SW1wbGljaXRSZWNlaXZlciIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdEludGVycG9sYXRpb24iLCJfQ29udmVydEFzdEludG9Qcm90b1JlY29yZHMudmlzaXRMaXRlcmFsUHJpbWl0aXZlIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0UHJvcGVydHlSZWFkIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0UHJvcGVydHlXcml0ZSIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdEtleWVkV3JpdGUiLCJfQ29udmVydEFzdEludG9Qcm90b1JlY29yZHMudmlzaXRTYWZlUHJvcGVydHlSZWFkIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0TWV0aG9kQ2FsbCIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdFNhZmVNZXRob2RDYWxsIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0RnVuY3Rpb25DYWxsIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0TGl0ZXJhbEFycmF5IiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0TGl0ZXJhbE1hcCIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdEJpbmFyeSIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdFByZWZpeE5vdCIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdENvbmRpdGlvbmFsIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0UGlwZSIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdEtleWVkUmVhZCIsIl9Db252ZXJ0QXN0SW50b1Byb3RvUmVjb3Jkcy52aXNpdENoYWluIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLnZpc2l0UXVvdGUiLCJfQ29udmVydEFzdEludG9Qcm90b1JlY29yZHMuX3Zpc2l0QWxsIiwiX0NvbnZlcnRBc3RJbnRvUHJvdG9SZWNvcmRzLl9hZGRSZWNvcmQiLCJfYXJyYXlGbiIsIl9tYXBQcmltaXRpdmVOYW1lIiwiX29wZXJhdGlvblRvUHJpbWl0aXZlTmFtZSIsIl9vcGVyYXRpb25Ub0Z1bmN0aW9uIiwicyIsIl9pbnRlcnBvbGF0aW9uRm4iXSwibWFwcGluZ3MiOiJBQUFBLHFCQUFpRCwwQkFBMEIsQ0FBQyxDQUFBO0FBQzVFLDJCQUE0QixnQ0FBZ0MsQ0FBQyxDQUFBO0FBQzdELDJCQUF3RCxnQ0FBZ0MsQ0FBQyxDQUFBO0FBRXpGLG9CQXVCTyxjQUFjLENBQUMsQ0FBQTtBQUd0QixzQ0FBa0MseUJBQXlCLENBQUMsQ0FBQTtBQUM1RCx3Q0FBb0MsMkJBQTJCLENBQUMsQ0FBQTtBQUVoRSxpQ0FBOEMsb0JBQW9CLENBQUMsQ0FBQTtBQUNuRSw4QkFBMkIsaUJBQWlCLENBQUMsQ0FBQTtBQUU3Qyx5QkFBdUIsWUFBWSxDQUFDLENBQUE7QUFDcEMsNkJBQXNDLGdCQUFnQixDQUFDLENBQUE7QUFFdkQ7SUFVRUEsb0NBQW9CQSxXQUFxQ0E7UUFBckNDLGdCQUFXQSxHQUFYQSxXQUFXQSxDQUEwQkE7UUFDdkRBLElBQUlBLENBQUNBLHVCQUF1QkEsR0FBR0EscUJBQXFCQSxDQUFDQSxXQUFXQSxDQUFDQSxDQUFDQTtRQUNsRUEsSUFBSUEsQ0FBQ0Esb0JBQW9CQSxHQUFHQSxrQkFBa0JBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBO1FBQzVEQSxJQUFJQSxDQUFDQSx1QkFBdUJBLEdBQUdBLElBQUlBLENBQUNBLFdBQVdBLENBQUNBLGNBQWNBLENBQUNBLEdBQUdBLENBQUNBLFVBQUFBLENBQUNBLElBQUlBLE9BQUFBLENBQUNBLENBQUNBLE1BQU1BLEVBQVJBLENBQVFBLENBQUNBLENBQUNBO1FBQ2xGQSxJQUFJQSxDQUFDQSxpQkFBaUJBLEdBQUdBLElBQUlBLENBQUNBLFdBQVdBLENBQUNBLGdCQUFnQkEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsVUFBQUEsQ0FBQ0EsSUFBSUEsT0FBQUEsQ0FBQ0EsQ0FBQ0EsY0FBY0EsRUFBaEJBLENBQWdCQSxDQUFDQSxDQUFDQTtJQUN4RkEsQ0FBQ0E7SUFFREQsZ0RBQVdBLEdBQVhBO1FBQ0VFLE1BQU1BLENBQUNBLElBQUlBLCtDQUFxQkEsQ0FDNUJBLElBQUlBLENBQUNBLFdBQVdBLENBQUNBLEVBQUVBLEVBQUVBLElBQUlBLENBQUNBLHVCQUF1QkEsQ0FBQ0EsTUFBTUEsRUFBRUEsSUFBSUEsQ0FBQ0EsdUJBQXVCQSxFQUN0RkEsSUFBSUEsQ0FBQ0EsaUJBQWlCQSxFQUFFQSxJQUFJQSxDQUFDQSxXQUFXQSxDQUFDQSxRQUFRQSxFQUFFQSxJQUFJQSxDQUFDQSx1QkFBdUJBLEVBQy9FQSxJQUFJQSxDQUFDQSxvQkFBb0JBLEVBQUVBLElBQUlBLENBQUNBLFdBQVdBLENBQUNBLGdCQUFnQkEsRUFBRUEsSUFBSUEsQ0FBQ0EsV0FBV0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsQ0FBQ0E7SUFDaEdBLENBQUNBO0lBQ0hGLGlDQUFDQTtBQUFEQSxDQUFDQSxBQXZCRCxJQXVCQztBQXZCWSxrQ0FBMEIsNkJBdUJ0QyxDQUFBO0FBRUQsK0JBQXNDLFVBQW9DO0lBQ3hFRyxJQUFJQSxhQUFhQSxHQUFHQSxJQUFJQSxrQkFBa0JBLEVBQUVBLENBQUNBO0lBQzdDQSx3QkFBV0EsQ0FBQ0EsZ0JBQWdCQSxDQUFDQSxVQUFVQSxDQUFDQSxjQUFjQSxFQUN6QkEsVUFBQ0EsQ0FBQ0EsRUFBRUEsS0FBS0EsSUFBS0EsT0FBQUEsYUFBYUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsVUFBVUEsQ0FBQ0EsYUFBYUEsRUFBRUEsS0FBS0EsQ0FBQ0EsRUFBckRBLENBQXFEQSxDQUFDQSxDQUFDQTtJQUNsR0EsTUFBTUEsQ0FBQ0EsbUJBQVFBLENBQUNBLGFBQWFBLENBQUNBLE9BQU9BLENBQUNBLENBQUNBO0FBQ3pDQSxDQUFDQTtBQUxlLDZCQUFxQix3QkFLcEMsQ0FBQTtBQUVELDRCQUFtQyxVQUFvQztJQUNyRUMsd0ZBQXdGQTtJQUN4RkEsSUFBSUEsUUFBUUEsR0FBR0Esd0JBQVdBLENBQUNBLE1BQU1BLENBQUNBLENBQUNBLFFBQVFBLENBQUNBLEVBQUVBLFVBQVVBLENBQUNBLGFBQWFBLENBQUNBLENBQUNBO0lBQ3hFQSxNQUFNQSxDQUFDQSxVQUFVQSxDQUFDQSxZQUFZQSxDQUFDQSxHQUFHQSxDQUFDQSxVQUFBQSxFQUFFQTtRQUNuQ0EsSUFBSUEsT0FBT0EsR0FBR0EsMkJBQTJCQSxDQUFDQSxNQUFNQSxDQUFDQSxFQUFFQSxFQUFFQSxRQUFRQSxDQUFDQSxDQUFDQTtRQUMvREEsSUFBSUEsUUFBUUEsR0FBR0EsRUFBRUEsQ0FBQ0EsZ0JBQWdCQSxZQUFZQSxpQ0FBY0EsR0FBR0EsRUFBRUEsQ0FBQ0EsZ0JBQWdCQSxHQUFHQSxJQUFJQSxDQUFDQTtRQUMxRkEsTUFBTUEsQ0FBQ0EsSUFBSUEsNEJBQVlBLENBQUNBLEVBQUVBLENBQUNBLE1BQU1BLENBQUNBLElBQUlBLEVBQUVBLEVBQUVBLENBQUNBLE1BQU1BLENBQUNBLFlBQVlBLEVBQUVBLFFBQVFBLEVBQUVBLE9BQU9BLENBQUNBLENBQUNBO0lBQ3JGQSxDQUFDQSxDQUFDQSxDQUFDQTtBQUNMQSxDQUFDQTtBQVJlLDBCQUFrQixxQkFRakMsQ0FBQTtBQUVEO0lBQUFDO1FBQ0VDLFlBQU9BLEdBQWtCQSxFQUFFQSxDQUFDQTtJQTJDOUJBLENBQUNBO0lBekNDRCxnQ0FBR0EsR0FBSEEsVUFBSUEsQ0FBZ0JBLEVBQUVBLGFBQXVCQSxFQUFFQSxZQUFvQkE7UUFDakVFLElBQUlBLE9BQU9BLEdBQUdBLHdCQUFXQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQTtRQUM3Q0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLE9BQU9BLENBQUNBLElBQUlBLE9BQU9BLENBQUNBLGFBQWFBLENBQUNBLGVBQWVBLElBQUlBLENBQUNBLENBQUNBLGVBQWVBLENBQUNBLENBQUNBLENBQUNBO1lBQ3JGQSxPQUFPQSxDQUFDQSxlQUFlQSxHQUFHQSxLQUFLQSxDQUFDQTtRQUNsQ0EsQ0FBQ0E7UUFDREEsSUFBSUEscUJBQXFCQSxHQUFHQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxNQUFNQSxDQUFDQTtRQUNoREEsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsYUFBYUEsRUFBRUEsWUFBWUEsQ0FBQ0EsQ0FBQ0E7UUFDcERBLElBQUlBLE9BQU9BLEdBQUdBLHdCQUFXQSxDQUFDQSxJQUFJQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQTtRQUM3Q0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLE9BQU9BLENBQUNBLElBQUlBLE9BQU9BLEtBQUtBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBO1lBQzlDQSxPQUFPQSxDQUFDQSxhQUFhQSxHQUFHQSxJQUFJQSxDQUFDQTtZQUM3QkEsT0FBT0EsQ0FBQ0EsZUFBZUEsR0FBR0EsSUFBSUEsQ0FBQ0E7WUFDL0JBLElBQUlBLENBQUNBLDBCQUEwQkEsQ0FBQ0EscUJBQXFCQSxDQUFDQSxDQUFDQTtRQUN6REEsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUFFREYsZ0JBQWdCQTtJQUNoQkEsdURBQTBCQSxHQUExQkEsVUFBMkJBLFVBQWtCQTtRQUE3Q0csaUJBYUNBO1FBWkNBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLENBQUNBLEdBQUdBLFVBQVVBLEVBQUVBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLE1BQU1BLEVBQUVBLEVBQUVBLENBQUNBLEVBQUVBLENBQUNBO1lBQ3REQSxJQUFJQSxHQUFHQSxHQUFHQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUMxQkEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsY0FBY0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7Z0JBQ3pCQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxVQUFBQSxXQUFXQSxJQUFJQSxPQUFBQSxLQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxXQUFXQSxHQUFHQSxDQUFDQSxDQUFDQSxDQUFDQSxzQkFBc0JBO29CQUMvREEsSUFBSUEsRUFET0EsQ0FDUEEsQ0FBQ0EsQ0FBQ0E7WUFDN0JBLENBQUNBO1lBQ0RBLEVBQUVBLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLEtBQUtBLHlCQUFVQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQTtnQkFDakNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLFVBQUFBLFdBQVdBLElBQUlBLE9BQUFBLEtBQUlBLENBQUNBLE9BQU9BLENBQUNBLFdBQVdBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLHNCQUFzQkE7b0JBQy9EQSxJQUFJQSxFQURPQSxDQUNQQSxDQUFDQSxDQUFDQTtnQkFDM0JBLElBQUlBLENBQUNBLE9BQU9BLENBQUNBLEdBQUdBLENBQUNBLFlBQVlBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLHNCQUFzQkEsR0FBR0EsSUFBSUEsQ0FBQ0E7WUFDbkVBLENBQUNBO1FBQ0hBLENBQUNBO0lBQ0hBLENBQUNBO0lBRURILGdCQUFnQkE7SUFDaEJBLDJDQUFjQSxHQUFkQSxVQUFlQSxDQUFnQkEsRUFBRUEsYUFBdUJBLEVBQUVBLFlBQW9CQTtRQUM1RUksRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0Esb0JBQW9CQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUM3QkEsSUFBSUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsMEJBQVdBLENBQUNBLHlCQUFVQSxDQUFDQSxrQkFBa0JBLEVBQUVBLENBQUNBLENBQUNBLGNBQWNBLEVBQUVBLElBQUlBLEVBQUVBLEVBQUVBLEVBQ3pEQSxFQUFFQSxFQUFFQSxDQUFDQSxDQUFDQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxDQUFDQSxPQUFPQSxDQUFDQSxNQUFNQSxHQUFHQSxDQUFDQSxFQUFFQSxDQUFDQSxFQUFFQSxLQUFLQSxFQUFFQSxLQUFLQSxFQUN0REEsS0FBS0EsRUFBRUEsS0FBS0EsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDekRBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ05BLDJCQUEyQkEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0EsRUFBRUEsYUFBYUEsRUFBRUEsWUFBWUEsQ0FBQ0EsQ0FBQ0E7UUFDbkZBLENBQUNBO0lBQ0hBLENBQUNBO0lBQ0hKLHlCQUFDQTtBQUFEQSxDQUFDQSxBQTVDRCxJQTRDQztBQTVDWSwwQkFBa0IscUJBNEM5QixDQUFBO0FBRUQ7SUFDRUsscUNBQW9CQSxRQUF1QkEsRUFBVUEsY0FBNkJBLEVBQzlEQSxjQUF3QkEsRUFBVUEsYUFBcUJBO1FBRHZEQyxhQUFRQSxHQUFSQSxRQUFRQSxDQUFlQTtRQUFVQSxtQkFBY0EsR0FBZEEsY0FBY0EsQ0FBZUE7UUFDOURBLG1CQUFjQSxHQUFkQSxjQUFjQSxDQUFVQTtRQUFVQSxrQkFBYUEsR0FBYkEsYUFBYUEsQ0FBUUE7SUFBR0EsQ0FBQ0E7SUFFeEVELGtDQUFNQSxHQUFiQSxVQUFjQSxPQUFzQkEsRUFBRUEsQ0FBZ0JBLEVBQUVBLGFBQXVCQSxFQUNqRUEsWUFBb0JBO1FBQ2hDRSxJQUFJQSxDQUFDQSxHQUFHQSxJQUFJQSwyQkFBMkJBLENBQUNBLE9BQU9BLEVBQUVBLENBQUNBLEVBQUVBLGFBQWFBLEVBQUVBLFlBQVlBLENBQUNBLENBQUNBO1FBQ2pGQSxDQUFDQSxDQUFDQSxHQUFHQSxDQUFDQSxLQUFLQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUNqQkEsQ0FBQ0E7SUFFTUYsa0NBQU1BLEdBQWJBLFVBQWNBLENBQWdCQSxFQUFFQSxhQUFvQkE7UUFDbERHLElBQUlBLEdBQUdBLEdBQUdBLEVBQUVBLENBQUNBO1FBQ2JBLDJCQUEyQkEsQ0FBQ0EsTUFBTUEsQ0FBQ0EsR0FBR0EsRUFBRUEsQ0FBQ0EsRUFBRUEsYUFBYUEsRUFBRUEsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDaEVBLEdBQUdBLENBQUNBLEdBQUdBLENBQUNBLE1BQU1BLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLGFBQWFBLEdBQUdBLElBQUlBLENBQUNBO1FBQ3pDQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQTtJQUNiQSxDQUFDQTtJQUVESCwyREFBcUJBLEdBQXJCQSxVQUFzQkEsR0FBcUJBLElBQVNJLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLGNBQWNBLENBQUNBLGdCQUFnQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFFbEdKLHdEQUFrQkEsR0FBbEJBLFVBQW1CQSxHQUFrQkE7UUFDbkNLLElBQUlBLElBQUlBLEdBQUdBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLEdBQUdBLENBQUNBLFdBQVdBLENBQUNBLENBQUNBO1FBQzNDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSx5QkFBVUEsQ0FBQ0EsV0FBV0EsRUFBRUEsYUFBYUEsRUFBRUEsZ0JBQWdCQSxDQUFDQSxHQUFHQSxDQUFDQSxPQUFPQSxDQUFDQSxFQUNwRUEsSUFBSUEsRUFBRUEsR0FBR0EsQ0FBQ0EsT0FBT0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7SUFDL0NBLENBQUNBO0lBRURMLDJEQUFxQkEsR0FBckJBLFVBQXNCQSxHQUFxQkE7UUFDekNNLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFVBQVVBLENBQUNBLHlCQUFVQSxDQUFDQSxLQUFLQSxFQUFFQSxTQUFTQSxFQUFFQSxHQUFHQSxDQUFDQSxLQUFLQSxFQUFFQSxFQUFFQSxFQUFFQSxJQUFJQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUM5RUEsQ0FBQ0E7SUFFRE4sdURBQWlCQSxHQUFqQkEsVUFBa0JBLEdBQWlCQTtRQUNqQ08sSUFBSUEsUUFBUUEsR0FBR0EsR0FBR0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDeENBLEVBQUVBLENBQUNBLENBQUNBLGdCQUFTQSxDQUFDQSxJQUFJQSxDQUFDQSxjQUFjQSxDQUFDQSxJQUFJQSx3QkFBV0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsY0FBY0EsRUFBRUEsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0E7WUFDckZBLEdBQUdBLENBQUNBLFFBQVFBLFlBQVlBLHNCQUFnQkEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7WUFDN0NBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFVBQVVBLENBQUNBLHlCQUFVQSxDQUFDQSxLQUFLQSxFQUFFQSxHQUFHQSxDQUFDQSxJQUFJQSxFQUFFQSxHQUFHQSxDQUFDQSxJQUFJQSxFQUFFQSxFQUFFQSxFQUFFQSxJQUFJQSxFQUFFQSxRQUFRQSxDQUFDQSxDQUFDQTtRQUNuRkEsQ0FBQ0E7UUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFDTkEsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EseUJBQVVBLENBQUNBLFlBQVlBLEVBQUVBLEdBQUdBLENBQUNBLElBQUlBLEVBQUVBLEdBQUdBLENBQUNBLE1BQU1BLEVBQUVBLEVBQUVBLEVBQUVBLElBQUlBLEVBQUVBLFFBQVFBLENBQUNBLENBQUNBO1FBQzVGQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUVEUCx3REFBa0JBLEdBQWxCQSxVQUFtQkEsR0FBa0JBO1FBQ25DUSxFQUFFQSxDQUFDQSxDQUFDQSxnQkFBU0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsY0FBY0EsQ0FBQ0EsSUFBSUEsd0JBQVdBLENBQUNBLFFBQVFBLENBQUNBLElBQUlBLENBQUNBLGNBQWNBLEVBQUVBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBO1lBQ3JGQSxHQUFHQSxDQUFDQSxRQUFRQSxZQUFZQSxzQkFBZ0JBLENBQUNBLENBQUNBLENBQUNBO1lBQzdDQSxNQUFNQSxJQUFJQSwwQkFBYUEsQ0FBQ0Esd0NBQXNDQSxHQUFHQSxDQUFDQSxJQUFNQSxDQUFDQSxDQUFDQTtRQUM1RUEsQ0FBQ0E7UUFBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFDTkEsSUFBSUEsUUFBUUEsR0FBR0EsR0FBR0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7WUFDeENBLElBQUlBLEtBQUtBLEdBQUdBLEdBQUdBLENBQUNBLEtBQUtBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ2xDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSx5QkFBVUEsQ0FBQ0EsYUFBYUEsRUFBRUEsR0FBR0EsQ0FBQ0EsSUFBSUEsRUFBRUEsR0FBR0EsQ0FBQ0EsTUFBTUEsRUFBRUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsRUFBRUEsSUFBSUEsRUFDN0RBLFFBQVFBLENBQUNBLENBQUNBO1FBQ25DQSxDQUFDQTtJQUNIQSxDQUFDQTtJQUVEUixxREFBZUEsR0FBZkEsVUFBZ0JBLEdBQWVBO1FBQzdCUyxJQUFJQSxHQUFHQSxHQUFHQSxHQUFHQSxDQUFDQSxHQUFHQSxDQUFDQSxLQUFLQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUM5QkEsSUFBSUEsR0FBR0EsR0FBR0EsR0FBR0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDOUJBLElBQUlBLEtBQUtBLEdBQUdBLEdBQUdBLENBQUNBLEtBQUtBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ2xDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSx5QkFBVUEsQ0FBQ0EsVUFBVUEsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsS0FBS0EsQ0FBQ0EsRUFBRUEsSUFBSUEsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0E7SUFDckZBLENBQUNBO0lBRURULDJEQUFxQkEsR0FBckJBLFVBQXNCQSxHQUFxQkE7UUFDekNVLElBQUlBLFFBQVFBLEdBQUdBLEdBQUdBLENBQUNBLFFBQVFBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ3hDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSx5QkFBVUEsQ0FBQ0EsWUFBWUEsRUFBRUEsR0FBR0EsQ0FBQ0EsSUFBSUEsRUFBRUEsR0FBR0EsQ0FBQ0EsTUFBTUEsRUFBRUEsRUFBRUEsRUFBRUEsSUFBSUEsRUFBRUEsUUFBUUEsQ0FBQ0EsQ0FBQ0E7SUFDNUZBLENBQUNBO0lBRURWLHFEQUFlQSxHQUFmQSxVQUFnQkEsR0FBZUE7UUFDN0JXLElBQUlBLFFBQVFBLEdBQUdBLEdBQUdBLENBQUNBLFFBQVFBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ3hDQSxJQUFJQSxJQUFJQSxHQUFHQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNwQ0EsRUFBRUEsQ0FBQ0EsQ0FBQ0EsZ0JBQVNBLENBQUNBLElBQUlBLENBQUNBLGNBQWNBLENBQUNBLElBQUlBLHdCQUFXQSxDQUFDQSxRQUFRQSxDQUFDQSxJQUFJQSxDQUFDQSxjQUFjQSxFQUFFQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUMxRkEsSUFBSUEsTUFBTUEsR0FBR0EsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EseUJBQVVBLENBQUNBLEtBQUtBLEVBQUVBLEdBQUdBLENBQUNBLElBQUlBLEVBQUVBLEdBQUdBLENBQUNBLElBQUlBLEVBQUVBLEVBQUVBLEVBQUVBLElBQUlBLEVBQUVBLFFBQVFBLENBQUNBLENBQUNBO1lBQ3ZGQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSx5QkFBVUEsQ0FBQ0EsYUFBYUEsRUFBRUEsU0FBU0EsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsTUFBTUEsQ0FBQ0EsQ0FBQ0E7UUFDeEZBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ05BLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFVBQVVBLENBQUNBLHlCQUFVQSxDQUFDQSxZQUFZQSxFQUFFQSxHQUFHQSxDQUFDQSxJQUFJQSxFQUFFQSxHQUFHQSxDQUFDQSxFQUFFQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxRQUFRQSxDQUFDQSxDQUFDQTtRQUMxRkEsQ0FBQ0E7SUFDSEEsQ0FBQ0E7SUFFRFgseURBQW1CQSxHQUFuQkEsVUFBb0JBLEdBQW1CQTtRQUNyQ1ksSUFBSUEsUUFBUUEsR0FBR0EsR0FBR0EsQ0FBQ0EsUUFBUUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDeENBLElBQUlBLElBQUlBLEdBQUdBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ3BDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSx5QkFBVUEsQ0FBQ0EsZ0JBQWdCQSxFQUFFQSxHQUFHQSxDQUFDQSxJQUFJQSxFQUFFQSxHQUFHQSxDQUFDQSxFQUFFQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxRQUFRQSxDQUFDQSxDQUFDQTtJQUM5RkEsQ0FBQ0E7SUFFRFosdURBQWlCQSxHQUFqQkEsVUFBa0JBLEdBQWlCQTtRQUNqQ2EsSUFBSUEsTUFBTUEsR0FBR0EsR0FBR0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDcENBLElBQUlBLElBQUlBLEdBQUdBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ3BDQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSx5QkFBVUEsQ0FBQ0EsYUFBYUEsRUFBRUEsU0FBU0EsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsSUFBSUEsRUFBRUEsTUFBTUEsQ0FBQ0EsQ0FBQ0E7SUFDeEZBLENBQUNBO0lBRURiLHVEQUFpQkEsR0FBakJBLFVBQWtCQSxHQUFpQkE7UUFDakNjLElBQUlBLGFBQWFBLEdBQUdBLFlBQVVBLEdBQUdBLENBQUNBLFdBQVdBLENBQUNBLE1BQVFBLENBQUNBO1FBQ3ZEQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSx5QkFBVUEsQ0FBQ0EsaUJBQWlCQSxFQUFFQSxhQUFhQSxFQUMzQ0EsUUFBUUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsRUFBRUEsSUFBSUEsQ0FBQ0EsU0FBU0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsRUFBRUEsSUFBSUEsRUFDdkVBLENBQUNBLENBQUNBLENBQUNBO0lBQzVCQSxDQUFDQTtJQUVEZCxxREFBZUEsR0FBZkEsVUFBZ0JBLEdBQWVBO1FBQzdCZSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSx5QkFBVUEsQ0FBQ0EsaUJBQWlCQSxFQUFFQSxpQkFBaUJBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLEVBQ3pEQSwyQ0FBbUJBLENBQUNBLEtBQUtBLENBQUNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLEVBQUVBLElBQUlBLENBQUNBLFNBQVNBLENBQUNBLEdBQUdBLENBQUNBLE1BQU1BLENBQUNBLEVBQUVBLElBQUlBLEVBQ3JFQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUM1QkEsQ0FBQ0E7SUFFRGYsaURBQVdBLEdBQVhBLFVBQVlBLEdBQVdBO1FBQ3JCZ0IsSUFBSUEsSUFBSUEsR0FBR0EsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDaENBLE1BQU1BLENBQUNBLENBQUNBLEdBQUdBLENBQUNBLFNBQVNBLENBQUNBLENBQUNBLENBQUNBO1lBQ3RCQSxLQUFLQSxJQUFJQTtnQkFDUEEsSUFBSUEsU0FBU0EsR0FBR0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7Z0JBQ3ZCQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSx5QkFBVUEsQ0FBQ0EsZ0JBQWdCQSxFQUFFQSxrQkFBa0JBLEVBQUVBLElBQUlBLEVBQUVBLEVBQUVBLEVBQUVBLFNBQVNBLEVBQUVBLElBQUlBLENBQUNBLENBQUNBO2dCQUM1RkEsSUFBSUEsS0FBS0EsR0FBR0EsR0FBR0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7Z0JBQ2xDQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxLQUFLQSxDQUFDQTtnQkFDckJBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFVBQVVBLENBQUNBLHlCQUFVQSxDQUFDQSxXQUFXQSxFQUFFQSxNQUFNQSxFQUFFQSwyQ0FBbUJBLENBQUNBLElBQUlBLEVBQ3hEQSxDQUFDQSxJQUFJQSxFQUFFQSxLQUFLQSxFQUFFQSxJQUFJQSxDQUFDQSxFQUFFQSxJQUFJQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUV2REEsS0FBS0EsSUFBSUE7Z0JBQ1BBLElBQUlBLFNBQVNBLEdBQUdBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO2dCQUN2QkEsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EseUJBQVVBLENBQUNBLGFBQWFBLEVBQUVBLGVBQWVBLEVBQUVBLElBQUlBLEVBQUVBLEVBQUVBLEVBQUVBLFNBQVNBLEVBQUVBLElBQUlBLENBQUNBLENBQUNBO2dCQUN0RkEsSUFBSUEsS0FBS0EsR0FBR0EsR0FBR0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7Z0JBQ2xDQSxTQUFTQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxLQUFLQSxDQUFDQTtnQkFDckJBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFVBQVVBLENBQUNBLHlCQUFVQSxDQUFDQSxXQUFXQSxFQUFFQSxNQUFNQSxFQUFFQSwyQ0FBbUJBLENBQUNBLElBQUlBLEVBQ3hEQSxDQUFDQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxLQUFLQSxDQUFDQSxFQUFFQSxJQUFJQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUV2REE7Z0JBQ0VBLElBQUlBLEtBQUtBLEdBQUdBLEdBQUdBLENBQUNBLEtBQUtBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO2dCQUNsQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EseUJBQVVBLENBQUNBLFdBQVdBLEVBQUVBLHlCQUF5QkEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsRUFDaEVBLG9CQUFvQkEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsU0FBU0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsSUFBSUEsRUFBRUEsS0FBS0EsQ0FBQ0EsRUFBRUEsSUFBSUEsRUFBRUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDeEZBLENBQUNBO0lBQ0hBLENBQUNBO0lBRURoQixvREFBY0EsR0FBZEEsVUFBZUEsR0FBY0E7UUFDM0JpQixJQUFJQSxHQUFHQSxHQUFHQSxHQUFHQSxDQUFDQSxVQUFVQSxDQUFDQSxLQUFLQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNyQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EseUJBQVVBLENBQUNBLFdBQVdBLEVBQUVBLGtCQUFrQkEsRUFDMUNBLDJDQUFtQkEsQ0FBQ0EsZ0JBQWdCQSxFQUFFQSxDQUFDQSxHQUFHQSxDQUFDQSxFQUFFQSxJQUFJQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUMvRUEsQ0FBQ0E7SUFFRGpCLHNEQUFnQkEsR0FBaEJBLFVBQWlCQSxHQUFnQkE7UUFDL0JrQixJQUFJQSxTQUFTQSxHQUFHQSxHQUFHQSxDQUFDQSxTQUFTQSxDQUFDQSxLQUFLQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUMxQ0EsSUFBSUEsa0JBQWtCQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNoQ0EsSUFBSUEsZ0JBQWdCQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUM5QkEsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EseUJBQVVBLENBQUNBLGdCQUFnQkEsRUFBRUEsa0JBQWtCQSxFQUFFQSxJQUFJQSxFQUFFQSxFQUFFQSxFQUFFQSxrQkFBa0JBLEVBQzdFQSxTQUFTQSxDQUFDQSxDQUFDQTtRQUMzQkEsSUFBSUEsUUFBUUEsR0FBR0EsR0FBR0EsQ0FBQ0EsT0FBT0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDdkNBLElBQUlBLElBQUlBLEdBQ0pBLElBQUlBLENBQUNBLFVBQVVBLENBQUNBLHlCQUFVQSxDQUFDQSxXQUFXQSxFQUFFQSxhQUFhQSxFQUFFQSxJQUFJQSxFQUFFQSxFQUFFQSxFQUFFQSxnQkFBZ0JBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO1FBQzFGQSxJQUFJQSxTQUFTQSxHQUFHQSxHQUFHQSxDQUFDQSxRQUFRQSxDQUFDQSxLQUFLQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUN6Q0Esa0JBQWtCQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtRQUM3QkEsZ0JBQWdCQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxTQUFTQSxDQUFDQTtRQUVoQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EseUJBQVVBLENBQUNBLFdBQVdBLEVBQUVBLE1BQU1BLEVBQUVBLDJDQUFtQkEsQ0FBQ0EsSUFBSUEsRUFDeERBLENBQUNBLFNBQVNBLEVBQUVBLFFBQVFBLEVBQUVBLFNBQVNBLENBQUNBLEVBQUVBLElBQUlBLEVBQUVBLENBQUNBLENBQUNBLENBQUNBO0lBQ3BFQSxDQUFDQTtJQUVEbEIsK0NBQVNBLEdBQVRBLFVBQVVBLEdBQWdCQTtRQUN4Qm1CLElBQUlBLEtBQUtBLEdBQUdBLEdBQUdBLENBQUNBLEdBQUdBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQ2hDQSxJQUFJQSxJQUFJQSxHQUFHQSxJQUFJQSxDQUFDQSxTQUFTQSxDQUFDQSxHQUFHQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtRQUNwQ0EsTUFBTUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsVUFBVUEsQ0FBQ0EseUJBQVVBLENBQUNBLElBQUlBLEVBQUVBLEdBQUdBLENBQUNBLElBQUlBLEVBQUVBLEdBQUdBLENBQUNBLElBQUlBLEVBQUVBLElBQUlBLEVBQUVBLElBQUlBLEVBQUVBLEtBQUtBLENBQUNBLENBQUNBO0lBQ2pGQSxDQUFDQTtJQUVEbkIsb0RBQWNBLEdBQWRBLFVBQWVBLEdBQWNBO1FBQzNCb0IsSUFBSUEsR0FBR0EsR0FBR0EsR0FBR0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7UUFDOUJBLElBQUlBLEdBQUdBLEdBQUdBLEdBQUdBLENBQUNBLEdBQUdBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQzlCQSxNQUFNQSxDQUFDQSxJQUFJQSxDQUFDQSxVQUFVQSxDQUFDQSx5QkFBVUEsQ0FBQ0EsU0FBU0EsRUFBRUEsYUFBYUEsRUFBRUEsMkNBQW1CQSxDQUFDQSxXQUFXQSxFQUNwRUEsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsSUFBSUEsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0E7SUFDM0NBLENBQUNBO0lBRURwQixnREFBVUEsR0FBVkEsVUFBV0EsR0FBVUE7UUFBckJxQixpQkFHQ0E7UUFGQ0EsSUFBSUEsSUFBSUEsR0FBR0EsR0FBR0EsQ0FBQ0EsV0FBV0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsVUFBQUEsQ0FBQ0EsSUFBSUEsT0FBQUEsQ0FBQ0EsQ0FBQ0EsS0FBS0EsQ0FBQ0EsS0FBSUEsQ0FBQ0EsRUFBYkEsQ0FBYUEsQ0FBQ0EsQ0FBQ0E7UUFDbkRBLE1BQU1BLENBQUNBLElBQUlBLENBQUNBLFVBQVVBLENBQUNBLHlCQUFVQSxDQUFDQSxLQUFLQSxFQUFFQSxPQUFPQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxDQUFDQSxDQUFDQSxDQUFDQTtJQUN6RUEsQ0FBQ0E7SUFFRHJCLGdEQUFVQSxHQUFWQSxVQUFXQSxHQUFVQTtRQUNuQnNCLE1BQU1BLElBQUlBLDBCQUFhQSxDQUNuQkEseUNBQXNDQSxHQUFHQSxDQUFDQSxRQUFRQSxVQUFLQSxHQUFHQSxDQUFDQSx1QkFBdUJBLFFBQUlBO1lBQ3RGQSx3QkFBcUJBLEdBQUdBLENBQUNBLE1BQU1BLHdFQUFvRUEsQ0FBQ0EsQ0FBQ0E7SUFDM0dBLENBQUNBO0lBRU90QiwrQ0FBU0EsR0FBakJBLFVBQWtCQSxJQUFXQTtRQUMzQnVCLElBQUlBLEdBQUdBLEdBQUdBLHdCQUFXQSxDQUFDQSxlQUFlQSxDQUFDQSxJQUFJQSxDQUFDQSxNQUFNQSxDQUFDQSxDQUFDQTtRQUNuREEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0EsTUFBTUEsRUFBRUEsRUFBRUEsQ0FBQ0EsRUFBRUEsQ0FBQ0E7WUFDckNBLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBLENBQUNBLENBQUNBLENBQUNBLEtBQUtBLENBQUNBLElBQUlBLENBQUNBLENBQUNBO1FBQy9CQSxDQUFDQTtRQUNEQSxNQUFNQSxDQUFDQSxHQUFHQSxDQUFDQTtJQUNiQSxDQUFDQTtJQUVEdkI7O09BRUdBO0lBQ0tBLGdEQUFVQSxHQUFsQkEsVUFBbUJBLElBQUlBLEVBQUVBLElBQUlBLEVBQUVBLFdBQVdBLEVBQUVBLElBQUlBLEVBQUVBLFNBQVNBLEVBQUVBLE9BQU9BO1FBQ2xFd0IsSUFBSUEsU0FBU0EsR0FBR0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsTUFBTUEsR0FBR0EsQ0FBQ0EsQ0FBQ0E7UUFDekNBLEVBQUVBLENBQUNBLENBQUNBLE9BQU9BLFlBQVlBLGlDQUFjQSxDQUFDQSxDQUFDQSxDQUFDQTtZQUN0Q0EsSUFBSUEsQ0FBQ0EsUUFBUUEsQ0FBQ0EsSUFBSUEsQ0FBQ0EsSUFBSUEsMEJBQVdBLENBQUNBLElBQUlBLEVBQUVBLElBQUlBLEVBQUVBLFdBQVdBLEVBQUVBLElBQUlBLEVBQUVBLFNBQVNBLEVBQUVBLENBQUNBLENBQUNBLEVBQUVBLE9BQU9BLEVBQ3JEQSxTQUFTQSxFQUFFQSxJQUFJQSxDQUFDQSxjQUFjQSxFQUFFQSxLQUFLQSxFQUFFQSxLQUFLQSxFQUFFQSxLQUFLQSxFQUFFQSxLQUFLQSxFQUMxREEsSUFBSUEsQ0FBQ0EsYUFBYUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDMURBLENBQUNBO1FBQUNBLElBQUlBLENBQUNBLENBQUNBO1lBQ05BLElBQUlBLENBQUNBLFFBQVFBLENBQUNBLElBQUlBLENBQUNBLElBQUlBLDBCQUFXQSxDQUFDQSxJQUFJQSxFQUFFQSxJQUFJQSxFQUFFQSxXQUFXQSxFQUFFQSxJQUFJQSxFQUFFQSxTQUFTQSxFQUFFQSxPQUFPQSxFQUFFQSxJQUFJQSxFQUN2REEsU0FBU0EsRUFBRUEsSUFBSUEsQ0FBQ0EsY0FBY0EsRUFBRUEsS0FBS0EsRUFBRUEsS0FBS0EsRUFBRUEsS0FBS0EsRUFBRUEsS0FBS0EsRUFDMURBLElBQUlBLENBQUNBLGFBQWFBLENBQUNBLENBQUNBLENBQUNBO1FBQzFEQSxDQUFDQTtRQUNEQSxNQUFNQSxDQUFDQSxTQUFTQSxDQUFDQTtJQUNuQkEsQ0FBQ0E7SUFDSHhCLGtDQUFDQTtBQUFEQSxDQUFDQSxBQXBNRCxJQW9NQztBQUdELGtCQUFrQixNQUFjO0lBQzlCeUIsTUFBTUEsQ0FBQ0EsQ0FBQ0EsTUFBTUEsQ0FBQ0EsQ0FBQ0EsQ0FBQ0E7UUFDZkEsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsMkNBQW1CQSxDQUFDQSxRQUFRQSxDQUFDQTtRQUN0Q0EsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsMkNBQW1CQSxDQUFDQSxRQUFRQSxDQUFDQTtRQUN0Q0EsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsMkNBQW1CQSxDQUFDQSxRQUFRQSxDQUFDQTtRQUN0Q0EsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsMkNBQW1CQSxDQUFDQSxRQUFRQSxDQUFDQTtRQUN0Q0EsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsMkNBQW1CQSxDQUFDQSxRQUFRQSxDQUFDQTtRQUN0Q0EsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsMkNBQW1CQSxDQUFDQSxRQUFRQSxDQUFDQTtRQUN0Q0EsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsMkNBQW1CQSxDQUFDQSxRQUFRQSxDQUFDQTtRQUN0Q0EsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsMkNBQW1CQSxDQUFDQSxRQUFRQSxDQUFDQTtRQUN0Q0EsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsMkNBQW1CQSxDQUFDQSxRQUFRQSxDQUFDQTtRQUN0Q0EsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsMkNBQW1CQSxDQUFDQSxRQUFRQSxDQUFDQTtRQUN0Q0E7WUFDRUEsTUFB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LEVBQUVBLEdBQUdBLE1BQU1BLEdBQUdBLENBQUNBLEdBQUdBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBO0lBQ3hDQSxJQUFJQSxFQUFFQSxHQUFHQSxNQUFNQSxHQUFHQSxDQUFDQSxHQUFHQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtJQUN4Q0EsSUFBSUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0E7SUFDeENBLElBQUlBLEVBQUVBLEdBQUdBLE1BQU1BLEdBQUdBLENBQUNBLEdBQUdBLE9BQU9BLENBQUNBLENBQUNBLENBQUNBLEdBQUdBLElBQUlBLENBQUNBO0lBQ3hDQSxJQUFJQSxFQUFFQSxHQUFHQSxNQUFNQSxHQUFHQSxDQUFDQSxHQUFHQSxPQUFPQSxDQUFDQSxDQUFDQSxDQUFDQSxHQUFHQSxJQUFJQSxDQUFDQTtJQUN4Q0EsSUFBSUEsRUFBRUEsR0FBR0EsTUFBTUEsR0FBR0EsQ0FBQ0EsR0FBR0EsT0FBT0EsQ0FBQ0EsQ0FBQ0EsQ0FBQ0EsR0FBR0EsSUFBSUEsQ0FBQ0E7SUFDeENBLE1BQU1BLENBQUNBLENBQUNBLE1BQU1BLEdBQUdBLENBQUNBLENBQUNBLENBQUNBLENBQUNBO1FBQ25CQSxLQUFLQSxDQUFDQTtZQUNKQSxNQUFNQSxDQUFDQSxVQUFDQSxFQUFFQSxJQUFLQSxPQUFBQSxFQUFFQSxHQUFHQSxDQUFDQSxDQUFDQSxFQUFFQSxDQUFDQSxHQUFHQSxFQUFFQSxFQUFmQSxDQUFlQSxDQUFDQTtRQUNqQ0EsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsVUFBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsSUFBS0EsT0FBQUEsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsRUFBNUJBLENBQTRCQSxDQUFDQTtRQUNsREEsS0FBS0EsQ0FBQ0E7WUFDSkEsTUFBTUEsQ0FBQ0EsVUFBQ0EsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsRUFBRUEsSUFBS0EsT0FBQUEsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FBQ0EsQ0FBQ0EsRUFBRUEsQ0FBQ0EsR0FBR0EsRUFBRUEsR0FBR0EsQ0FB